diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/mt6991.dts b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/mt6991.dts index b5343cf7..ad03cafc 100755 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/mt6991.dts +++ b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/mt6991.dts @@ -21838,10 +21838,6 @@ &mt6373_vbuck4_ufs { regulator-min-microvolt = <0>; }; -&mt6373_vrfio18_aif { - regulator-always-on; -}; - /delete-node/ &mt6363_vbuck1_sshub; /delete-node/ &mt6363_vbuck2_sshub; /delete-node/ &mt6363_vbuck4_sshub; diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac262-p-7-a0014-dsi-cmd-panel-cmd.dtsi b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac262-p-7-a0014-dsi-cmd-panel-cmd.dtsi index b24f390b..aa4f7257 100755 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac262-p-7-a0014-dsi-cmd-panel-cmd.dtsi +++ b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac262-p-7-a0014-dsi-cmd-panel-cmd.dtsi @@ -130,6 +130,32 @@ timing@sa_fhd_120 { 39 00 00 40 00 00 02 38 00 39 00 00 00 00 00 03 51 00 00 ]; + oplus,dsi-lhbm-pressed-icon-on-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 06 01 00 87 00 00 05 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + 39 00 00 40 00 00 06 F0 55 AA 52 08 00 + 39 00 00 40 00 00 02 6F 30 + 39 00 00 40 00 00 02 DF 00 + 39 00 00 40 00 00 02 6F 36 + 39 00 00 40 00 00 02 DF 01 + ]; + oplus,dsi-lhbm-pressed-icon-on-pwm-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 16 01 00 87 00 00 25 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + 39 00 00 40 00 00 06 F0 55 AA 52 08 00 + 39 00 00 40 00 00 02 6F 30 + 39 00 00 40 00 00 02 DF 00 + 39 00 00 40 00 00 02 6F 36 + 39 00 00 40 00 00 02 DF 01 + ]; oplus,dsi-adfr-min-fps-120hz-command = [ ]; oplus,dsi-adfr-min-fps-60hz-command = [ @@ -156,6 +182,8 @@ timing@sa_fhd_120 { oplus,dsi-on-command-state = "dsi_lp_mode"; oplus,dsi-aod-off-command-state = "dsi_ls_mode"; oplus,dsi-panel-aod-off-insert-black-command-state = "dsi_ls_mode"; + oplus,dsi-lhbm-pressed-icon-on-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-pwm-command-state = "dsi_hs_mode"; oplus,dsi-adfr-min-fps-120hz-command-state = "dsi_hs_mode"; oplus,dsi-adfr-min-fps-60hz-command-state = "dsi_hs_mode"; oplus,dsi-adfr-min-fps-30hz-command-state = "dsi_hs_mode"; @@ -325,6 +353,22 @@ timing@sa_fhd_90 { 39 00 00 40 00 00 02 38 00 39 00 00 00 00 00 03 51 00 00 ]; + oplus,dsi-lhbm-pressed-icon-on-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 06 01 00 87 00 00 05 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + ]; + oplus,dsi-lhbm-pressed-icon-on-pwm-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 16 01 00 87 00 00 25 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + ]; oplus,dsi-adfr-min-fps-90hz-command = [ ]; oplus,dsi-adfr-min-fps-45hz-command = [ @@ -351,6 +395,8 @@ timing@sa_fhd_90 { oplus,dsi-on-command-state = "dsi_lp_mode"; oplus,dsi-aod-off-command-state = "dsi_ls_mode"; oplus,dsi-panel-aod-off-insert-black-command-state = "dsi_ls_mode"; + oplus,dsi-lhbm-pressed-icon-on-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-pwm-command-state = "dsi_hs_mode"; oplus,dsi-adfr-min-fps-90hz-command-state = "dsi_hs_mode"; oplus,dsi-adfr-min-fps-45hz-command-state = "dsi_hs_mode"; oplus,dsi-adfr-min-fps-30hz-command-state = "dsi_hs_mode"; @@ -520,6 +566,32 @@ timing@sa_fhd_60 { 39 00 00 40 00 00 02 38 00 39 00 00 00 00 00 03 51 00 00 ]; + oplus,dsi-lhbm-pressed-icon-on-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 06 01 00 87 00 00 05 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + 39 00 00 40 00 00 06 F0 55 AA 52 08 00 + 39 00 00 40 00 00 02 6F 30 + 39 00 00 40 00 00 02 DF 02 + 39 00 00 40 00 00 02 6F 36 + 39 00 00 40 00 00 02 DF 03 + ]; + oplus,dsi-lhbm-pressed-icon-on-pwm-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 16 01 00 87 00 00 25 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + 39 00 00 40 00 00 06 F0 55 AA 52 08 00 + 39 00 00 40 00 00 02 6F 30 + 39 00 00 40 00 00 02 DF 02 + 39 00 00 40 00 00 02 6F 36 + 39 00 00 40 00 00 02 DF 03 + ]; oplus,dsi-adfr-min-fps-60hz-command = [ ]; oplus,dsi-adfr-min-fps-30hz-command = [ @@ -544,6 +616,8 @@ timing@sa_fhd_60 { oplus,dsi-on-command-state = "dsi_lp_mode"; oplus,dsi-aod-off-command-state = "dsi_ls_mode"; oplus,dsi-panel-aod-off-insert-black-command-state = "dsi_ls_mode"; + oplus,dsi-lhbm-pressed-icon-on-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-pwm-command-state = "dsi_hs_mode"; oplus,dsi-adfr-min-fps-60hz-command-state = "dsi_hs_mode"; oplus,dsi-adfr-min-fps-30hz-command-state = "dsi_hs_mode"; oplus,dsi-adfr-min-fps-20hz-command-state = "dsi_hs_mode"; diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac262-p-7-a0014-dsi-cmd-panel-common.dtsi b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac262-p-7-a0014-dsi-cmd-panel-common.dtsi index eb6c48d8..1d4f9e37 100755 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac262-p-7-a0014-dsi-cmd-panel-common.dtsi +++ b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac262-p-7-a0014-dsi-cmd-panel-common.dtsi @@ -57,22 +57,6 @@ 39 00 00 40 00 00 02 6F 4A 39 00 00 00 00 00 05 B8 00 00 00 00 ]; - oplus,dsi-lhbm-pressed-icon-on-command = [ - 39 00 00 40 00 00 06 F0 55 AA 52 08 08 - 39 00 00 40 00 00 02 6F 4A - 39 00 00 40 00 00 0D A9 02 00 DF 31 31 06 01 00 87 00 00 05 - 39 00 00 40 00 00 06 F0 55 AA 52 08 04 - 39 00 00 40 00 00 02 CB 37 - 39 00 00 00 00 00 02 8B 10 - ]; - oplus,dsi-lhbm-pressed-icon-on-pwm-command = [ - 39 00 00 40 00 00 06 F0 55 AA 52 08 08 - 39 00 00 40 00 00 02 6F 4A - 39 00 00 40 00 00 0D A9 02 00 DF 31 31 16 01 00 87 00 00 25 - 39 00 00 40 00 00 06 F0 55 AA 52 08 04 - 39 00 00 40 00 00 02 CB 37 - 39 00 00 00 00 00 02 8B 10 - ]; oplus,dsi-lhbm-pressed-icon-off-command = [ 39 00 00 40 00 00 02 87 20 39 00 00 40 00 00 06 F0 55 AA 52 08 04 @@ -121,8 +105,6 @@ oplus,dsi-ultra-low-power-aod-on-command-state = "dsi_ls_mode"; oplus,dsi-aod-high-mode-command-state = "dsi_ls_mode"; oplus,dsi-aod-low-mode-command-state = "dsi_ls_mode"; - oplus,dsi-lhbm-pressed-icon-on-command-state = "dsi_hs_mode"; - oplus,dsi-lhbm-pressed-icon-on-pwm-command-state = "dsi_hs_mode"; oplus,dsi-lhbm-pressed-icon-off-command-state = "dsi_hs_mode"; oplus,dsi-lhbm-pressed-icon-gamma-command-state = "dsi_hs_mode"; oplus,dsi-lhbm-pressed-icon-grayscale-command-state = "dsi_hs_mode"; diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac302-p-3-a0026-dsi-vdo-panel-cmd.dtsi b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac302-p-3-a0026-dsi-vdo-panel-cmd.dtsi deleted file mode 100755 index f740538d..00000000 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac302-p-3-a0026-dsi-vdo-panel-cmd.dtsi +++ /dev/null @@ -1,704 +0,0 @@ -&ac302_p_3_a0026_dsi_vdo_panel { - oplus,dsi-display-panel@0 { - reg = <0>; - oplus,dsi-vendor-name = "A0026"; - oplus,dsi-manufacture = "P_3"; - oplus,dsi-display-timings { - timing@sa_fhd_120 { - cell-index = <0>; - oplus,dsi-panel-framerate = <120>; - oplus,dsi-panel-pllclk = <553>; - oplus,cmd-null-pkt-en = <0>; - oplus,cmd-null-pkt-len = <0>; - oplus,vdo-per-frame-lp-enable = <1>; - /* OPLUS_FEATURE_DISPLAY_ONSCREENFINGERPRINT */ - //oplus,ofp_need_keep_apart_backlight; - #include "ac302-p-3-a0026-dsi-vdo-panel-common.dtsi" - oplus,dsi-timing-switch-command = [ // 120Hz DC(1pulse) to Normal(3+18pulse) - //15 00 00 00 00 00 02 2F 01 - ]; - oplus,dsi-pwm-switch-1to3pul-command = [ // 120Hz DC(1pulse) to Normal(3pulse) - - ]; - oplus,dsi-pwm-switch-1to18pul-command = [ // 120Hz DC(1pulse) to Normal(18pulse) - - ]; - oplus,dsi-pwm-switch-18to3pul-command = [ - - ]; - oplus,dsi-pwm-switch-18to3pul-wake-command = [ - - ]; - oplus,dsi-pwm-switch-3to18pul-command = [ - - ]; - - oplus,dsi-timing-switch-1pulse-command = [ // 120Hz Normal(3+18pulse) to DC(1pulse) - - ]; - oplus,dsi-pwm-switch-3to1pul-command = [ // 120Hz Normal(3+18pulse) to DC(1pulse) - - ]; - oplus,dsi-pwm-switch-18to1pul-command = [ // 120Hz Normal(3+18pulse) to DC(1pulse) - - ]; - - oplus,dsi-on-command = [ - //DVDD Strong to 1v - //For other setting refer OP manual Ch 4.9 - 39 00 00 40 00 00 06 F0 55 AA 52 08 01 - 39 00 00 40 00 00 02 6F 03 - 39 00 00 40 00 00 02 C5 00 - 39 00 00 40 00 00 02 6F 04 - 39 00 00 00 00 00 04 C5 25 25 25 - - //VGXP by pad cap - 39 00 00 40 00 00 05 FF AA 55 A5 80 - 39 00 00 40 00 00 02 6F 1F - 39 00 00 40 00 00 02 F4 0B - 39 00 00 40 00 00 02 6F 20 - 39 00 00 40 00 00 02 F4 3F - 39 00 00 40 00 00 02 6F 08 - 39 00 00 40 00 00 02 FC 03 - 39 00 00 40 00 00 05 FF AA 55 A5 80 - 39 00 00 40 00 00 02 6F 24 - 39 00 00 00 00 00 02 F8 FF - - //706A改善ESD - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 6F 0F - 39 00 00 40 00 00 02 D8 42 - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 6F D4 - 39 00 00 40 00 00 02 BA 20 - 39 00 00 40 00 00 06 F0 55 AA 52 08 03 - 39 00 00 40 00 00 02 C6 87 - - // For Idle enter BIST - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 C0 00 - 39 00 00 40 00 00 06 F0 55 AA 52 08 01 - 39 00 00 40 00 00 02 6F 0B - 39 00 00 40 00 00 02 D2 00 - 39 00 00 40 00 00 05 FF AA 55 A5 84 - 39 00 00 40 00 00 02 6F 10 - 39 00 00 40 00 00 02 F8 02 - 39 00 00 40 00 00 05 FF AA 55 A5 84 - 39 00 00 40 00 00 02 F2 15 - - //FOD OFF - 39 00 00 40 00 00 06 F0 55 AA 52 08 09 - 39 00 00 40 00 00 02 6F 00 - 39 00 00 40 00 00 02 B0 01 - 39 00 00 40 00 00 02 6F 25 - 39 00 00 40 00 00 02 B0 00 - 39 00 00 00 00 00 02 87 00 - 39 00 00 40 00 00 02 6F 01 - 39 00 00 40 00 00 02 8B 00 - - //Resolution Setting - 39 00 00 40 00 00 05 2A 00 00 04 FF - 39 00 00 40 00 00 05 2B 00 00 0A EF - - //VESA1.2 10 bit 3.75 DSC Setting - // For other refer OP manual Ch 4.4 - 39 00 00 40 00 00 02 90 03 - 39 00 00 40 00 00 02 6F 01 - 39 00 00 40 00 00 02 90 43 - 39 00 00 40 00 00 13 91 AB A8 00 28 D2 00 02 5C 04 06 00 08 02 AB 02 20 10 E0 - - //Dimming OFF - 39 00 00 40 00 00 02 53 20 - - //Video Mode Ext_VFP VBPF Setting - 39 00 00 40 00 00 11 3B 00 1C 00 58 00 1C 00 54 00 1C 04 0C 00 1C 0B B4 - 39 00 00 40 00 00 02 6F 10 - 39 00 00 40 00 00 05 3B 00 1C 00 54 - - //DPC Temperature Setting - 39 00 00 40 00 00 03 81 01 19 - - //FPR1 EN - 39 00 00 40 00 00 02 88 01 - - //120Hz Sleep Out - //For other refer OP manual Ch 5.4.3 - 39 00 00 40 00 00 02 2F 01 - - //TE ON - 39 00 00 40 00 00 02 35 00 - - //Setting Loading Effect x1.0 - 39 00 00 40 00 00 03 5F 00 00 - - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 6F 03 - 39 00 00 40 00 00 02 B5 D5 - /*lhbm brightness*/ - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 15 00 00 40 00 00 02 6F 25 - 39 00 00 40 00 00 07 DF 38 FC 38 FC 38 FC - - // Sleep out - 05 00 00 00 78 00 01 11 - // Display out - 05 00 00 00 00 00 01 29 - ]; - - oplus,dsi-timing-switch-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-1to3pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-1to18pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-18to3pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-18to3pul-wake-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-3to18pul-command-state = "dsi_hs_mode"; - oplus,dsi-timing-switch-1pulse-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-3to1pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-18to1pul-command-state = "dsi_hs_mode"; - oplus,dsi-on-command-state = "dsi_lp_mode"; - - oplus,dsc-params-entries = <&dsc_params>; - // oplus,phy-timcon { - // hs-trail = <14>; - // clk-trail = <15>; - // }; - oplus,dyn-fps { - switch_en = <1>; - vact_timing_fps = <120>; - dyn_fps_data_rate; - oplus_dyn_fps_dfps_cmd_table0 = [00 02 2F 01]; - }; - oplus,display-mode { - display-mode@0 { - hdisplay = <1280>; - vdisplay = <2800>; - fhd-hfp = <60>; - fhd-hsa = <4>; - fhd-hbp = <35>; - fhd-vfp = <84>; - fhd-vsa = <2>; - fhd-vbp = <26>; - hskew = ; - }; - display-mode@1 { - hdisplay = <1080>; - vdisplay = <2363>; - fhd-hfp = <60>; - fhd-hsa = <4>; - fhd-hbp = <35>; - fhd-vfp = <84>; - fhd-vsa = <2>; - fhd-vbp = <26>; - hskew = ; - }; - }; - }; - timing@sa_fhd_90 { - cell-index = <1>; - oplus,dsi-panel-framerate = <90>; - oplus,dsi-panel-pllclk = <553>; - oplus,cmd-null-pkt-en = <0>; - oplus,cmd-null-pkt-len = <0>; - oplus,vdo-per-frame-lp-enable = <1>; - /* OPLUS_FEATURE_DISPLAY_ONSCREENFINGERPRINT */ - //oplus,ofp_need_keep_apart_backlight; - #include "ac302-p-3-a0026-dsi-vdo-panel-common.dtsi" - oplus,dsi-timing-switch-command = [ // 90Hz DC(1pulse) to Normal(3+18pulse) - //15 00 00 00 00 00 02 2F 02 - ]; - oplus,dsi-pwm-switch-1to3pul-command = [ // 90Hz DC(1pulse) to Normal(3pulse) - - ]; - oplus,dsi-pwm-switch-1to18pul-command = [ // 90Hz DC(1pulse) to Normal(18pulse) - - ]; - oplus,dsi-pwm-switch-18to3pul-command = [ - - ]; - oplus,dsi-pwm-switch-18to3pul-wake-command = [ - - ]; - oplus,dsi-pwm-switch-3to18pul-command = [ - - ]; - - oplus,dsi-timing-switch-1pulse-command = [ // 90Hz Normal(3+18pulse) to DC(1pulse) - - ]; - oplus,dsi-pwm-switch-3to1pul-command = [ // 90Hz Normal(3+18pulse) to DC(1pulse) - - ]; - oplus,dsi-pwm-switch-18to1pul-command = [ // 90Hz Normal(3+18pulse) to DC(1pulse) - - ]; - - oplus,dsi-on-command = [ - //DVDD Strong to 1v - //For other setting refer OP manual Ch 4.9 - 39 00 00 40 00 00 06 F0 55 AA 52 08 01 - 39 00 00 40 00 00 02 6F 03 - 39 00 00 40 00 00 02 C5 00 - 39 00 00 40 00 00 02 6F 04 - 39 00 00 00 00 00 04 C5 25 25 25 - - //VGXP by pad cap - 39 00 00 40 00 00 05 FF AA 55 A5 80 - 39 00 00 40 00 00 02 6F 1F - 39 00 00 40 00 00 02 F4 0B - 39 00 00 40 00 00 02 6F 20 - 39 00 00 40 00 00 02 F4 3F - 39 00 00 40 00 00 02 6F 08 - 39 00 00 40 00 00 02 FC 03 - 39 00 00 40 00 00 05 FF AA 55 A5 80 - 39 00 00 40 00 00 02 6F 24 - 39 00 00 00 00 00 02 F8 FF - - //706A改善ESD - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 6F 0F - 39 00 00 40 00 00 02 D8 42 - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 6F D4 - 39 00 00 40 00 00 02 BA 20 - 39 00 00 40 00 00 06 F0 55 AA 52 08 03 - 39 00 00 40 00 00 02 C6 87 - - // For Idle enter BIST - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 C0 00 - 39 00 00 40 00 00 06 F0 55 AA 52 08 01 - 39 00 00 40 00 00 02 6F 0B - 39 00 00 40 00 00 02 D2 00 - 39 00 00 40 00 00 05 FF AA 55 A5 84 - 39 00 00 40 00 00 02 6F 10 - 39 00 00 40 00 00 02 F8 02 - 39 00 00 40 00 00 05 FF AA 55 A5 84 - 39 00 00 40 00 00 02 F2 15 - - //FOD OFF - 39 00 00 40 00 00 06 F0 55 AA 52 08 09 - 39 00 00 40 00 00 02 6F 00 - 39 00 00 40 00 00 02 B0 01 - 39 00 00 40 00 00 02 6F 25 - 39 00 00 40 00 00 02 B0 00 - 39 00 00 00 00 00 02 87 00 - 39 00 00 40 00 00 02 6F 01 - 39 00 00 40 00 00 02 8B 00 - - //Resolution Setting - 39 00 00 40 00 00 05 2A 00 00 04 FF - 39 00 00 40 00 00 05 2B 00 00 0A EF - - //VESA1.2 10 bit 3.75 DSC Setting - // For other refer OP manual Ch 4.4 - 39 00 00 40 00 00 02 90 03 - 39 00 00 40 00 00 02 6F 01 - 39 00 00 40 00 00 02 90 43 - 39 00 00 40 00 00 13 91 AB A8 00 28 D2 00 02 5C 04 06 00 08 02 AB 02 20 10 E0 - - //Dimming OFF - 39 00 00 40 00 00 02 53 20 - - //Video Mode Ext_VFP VBPF Setting - 39 00 00 40 00 00 11 3B 00 1C 00 58 00 1C 00 54 00 1C 04 0C 00 1C 0B B4 - 39 00 00 40 00 00 02 6F 10 - 39 00 00 40 00 00 05 3B 00 1C 00 54 - - //DPC Temperature Setting - 39 00 00 40 00 00 03 81 01 19 - - //FPR1 EN - 39 00 00 40 00 00 02 88 01 - - //90Hz Sleep Out - //For other refer OP manual Ch 5.4.3 - 39 00 00 40 00 00 02 2F 02 - - //TE ON - 39 00 00 40 00 00 02 35 00 - - //Setting Loading Effect x1.0 - 39 00 00 40 00 00 03 5F 00 00 - - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 6F 03 - 39 00 00 40 00 00 02 B5 D5 - /*lhbm brightness*/ - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 15 00 00 40 00 00 02 6F 25 - 39 00 00 40 00 00 07 DF 38 FC 38 FC 38 FC - - // Sleep out - 05 00 00 00 78 00 01 11 - // Display out - 05 00 00 00 00 00 01 29 - ]; - - oplus,dsi-timing-switch-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-1to3pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-1to18pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-18to3pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-18to3pul-wake-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-3to18pul-command-state = "dsi_hs_mode"; - oplus,dsi-timing-switch-1pulse-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-3to1pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-18to1pul-command-state = "dsi_hs_mode"; - oplus,dsi-on-command-state = "dsi_lp_mode"; - - oplus,dsc-params-entries = <&dsc_params>; - // oplus,phy-timcon { - // hs-trail = <14>; - // clk-trail = <15>; - // }; - oplus,dyn-fps { - switch_en = <1>; - vact_timing_fps = <90>; - dyn_fps_data_rate; - oplus_dyn_fps_dfps_cmd_table0 = [00 02 2F 02]; - }; - oplus,display-mode { - display-mode@0 { - hdisplay = <1280>; - vdisplay = <2800>; - fhd-hfp = <60>; - fhd-hsa = <4>; - fhd-hbp = <35>; - fhd-vfp = <1036>; - fhd-vsa = <2>; - fhd-vbp = <26>; - hskew = ; - }; - display-mode@1 { - hdisplay = <1080>; - vdisplay = <2363>; - fhd-hfp = <60>; - fhd-hsa = <4>; - fhd-hbp = <35>; - fhd-vfp = <1036>; - fhd-vsa = <2>; - fhd-vbp = <26>; - hskew = ; - }; - }; - }; - timing@sa_fhd_60 { - cell-index = <2>; - oplus,dsi-panel-framerate = <60>; - oplus,dsi-panel-pllclk = <553>; - oplus,cmd-null-pkt-en = <0>; - oplus,cmd-null-pkt-len = <0>; - oplus,vdo-per-frame-lp-enable = <1>; - /* OPLUS_FEATURE_DISPLAY_ONSCREENFINGERPRINT */ - //oplus,ofp_need_keep_apart_backlight; - #include "ac302-p-3-a0026-dsi-vdo-panel-common.dtsi" - oplus,dsi-timing-switch-command = [ // 60Hz DC(1pulse) to Normal(3+18pulse) - //15 00 00 00 00 00 02 2F 03 - ]; - oplus,dsi-pwm-switch-1to3pul-command = [ // 60Hz DC(1pulse) to Normal(3pulse) - - ]; - oplus,dsi-pwm-switch-1to18pul-command = [ // 60Hz DC(1pulse) to Normal(18pulse) - - ]; - oplus,dsi-pwm-switch-18to3pul-command = [ - - ]; - oplus,dsi-pwm-switch-18to3pul-wake-command = [ - - ]; - oplus,dsi-pwm-switch-3to18pul-command = [ - - ]; - - oplus,dsi-timing-switch-1pulse-command = [ // 60Hz Normal(3+18pulse) to DC(1pulse) - - ]; - oplus,dsi-pwm-switch-3to1pul-command = [ // 60Hz Normal(3+18pulse) to DC(1pulse) - - ]; - oplus,dsi-pwm-switch-18to1pul-command = [ // 60Hz Normal(3+18pulse) to DC(1pulse) - - ]; - - oplus,dsi-on-command = [ - //DVDD Strong to 1v - //For other setting refer OP manual Ch 4.9 - 39 00 00 40 00 00 06 F0 55 AA 52 08 01 - 39 00 00 40 00 00 02 6F 03 - 39 00 00 40 00 00 02 C5 00 - 39 00 00 40 00 00 02 6F 04 - 39 00 00 00 00 00 04 C5 25 25 25 - - //VGXP by pad cap - 39 00 00 40 00 00 05 FF AA 55 A5 80 - 39 00 00 40 00 00 02 6F 1F - 39 00 00 40 00 00 02 F4 0B - 39 00 00 40 00 00 02 6F 20 - 39 00 00 40 00 00 02 F4 3F - 39 00 00 40 00 00 02 6F 08 - 39 00 00 40 00 00 02 FC 03 - 39 00 00 40 00 00 05 FF AA 55 A5 80 - 39 00 00 40 00 00 02 6F 24 - 39 00 00 00 00 00 02 F8 FF - - //706A改善ESD - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 6F 0F - 39 00 00 40 00 00 02 D8 42 - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 6F D4 - 39 00 00 40 00 00 02 BA 20 - 39 00 00 40 00 00 06 F0 55 AA 52 08 03 - 39 00 00 40 00 00 02 C6 87 - - // For Idle enter BIST - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 C0 00 - 39 00 00 40 00 00 06 F0 55 AA 52 08 01 - 39 00 00 40 00 00 02 6F 0B - 39 00 00 40 00 00 02 D2 00 - 39 00 00 40 00 00 05 FF AA 55 A5 84 - 39 00 00 40 00 00 02 6F 10 - 39 00 00 40 00 00 02 F8 02 - 39 00 00 40 00 00 05 FF AA 55 A5 84 - 39 00 00 40 00 00 02 F2 15 - - //FOD OFF - 39 00 00 40 00 00 06 F0 55 AA 52 08 09 - 39 00 00 40 00 00 02 6F 00 - 39 00 00 40 00 00 02 B0 01 - 39 00 00 40 00 00 02 6F 25 - 39 00 00 40 00 00 02 B0 00 - 39 00 00 00 00 00 02 87 00 - 39 00 00 40 00 00 02 6F 01 - 39 00 00 40 00 00 02 8B 00 - - //Resolution Setting - 39 00 00 40 00 00 05 2A 00 00 04 FF - 39 00 00 40 00 00 05 2B 00 00 0A EF - - //VESA1.2 10 bit 3.75 DSC Setting - // For other refer OP manual Ch 4.4 - 39 00 00 40 00 00 02 90 03 - 39 00 00 40 00 00 02 6F 01 - 39 00 00 40 00 00 02 90 43 - 39 00 00 40 00 00 13 91 AB A8 00 28 D2 00 02 5C 04 06 00 08 02 AB 02 20 10 E0 - - //Dimming OFF - 39 00 00 40 00 00 02 53 20 - - //Video Mode Ext_VFP VBPF Setting - 39 00 00 40 00 00 11 3B 00 1C 00 58 00 1C 00 54 00 1C 04 0C 00 1C 0B B4 - 39 00 00 40 00 00 02 6F 10 - 39 00 00 40 00 00 05 3B 00 1C 00 54 - - //DPC Temperature Setting - 39 00 00 40 00 00 03 81 01 19 - - //FPR1 EN - 39 00 00 40 00 00 02 88 01 - - //120Hz Sleep Out - //For other refer OP manual Ch 5.4.3 - 39 00 00 40 00 00 02 2F 03 - - //TE ON - 39 00 00 40 00 00 02 35 00 - - //Setting Loading Effect x1.0 - 39 00 00 40 00 00 03 5F 00 00 - - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 39 00 00 40 00 00 02 6F 03 - 39 00 00 40 00 00 02 B5 D5 - /*lhbm brightness*/ - 39 00 00 40 00 00 06 F0 55 AA 52 08 00 - 15 00 00 40 00 00 02 6F 25 - 39 00 00 40 00 00 07 DF 38 FC 38 FC 38 FC - - // Sleep out - 05 00 00 00 78 00 01 11 - // Display out - 05 00 00 00 00 00 01 29 - ]; - - oplus,dsi-timing-switch-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-1to3pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-1to18pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-18to3pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-18to3pul-wake-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-3to18pul-command-state = "dsi_hs_mode"; - oplus,dsi-timing-switch-1pulse-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-3to1pul-command-state = "dsi_hs_mode"; - oplus,dsi-pwm-switch-18to1pul-command-state = "dsi_hs_mode"; - oplus,dsi-on-command-state = "dsi_lp_mode"; - - oplus,dsc-params-entries = <&dsc_params>; - // oplus,phy-timcon { - // hs-trail = <14>; - // clk-trail = <15>; - // }; - oplus,dyn-fps { - switch_en = <1>; - vact_timing_fps = <60>; - dyn_fps_data_rate; - oplus_dyn_fps_dfps_cmd_table0 = [00 02 2F 03]; - }; - oplus,display-mode { - display-mode@0 { - hdisplay = <1280>; - vdisplay = <2800>; - fhd-hfp = <60>; - fhd-hsa = <4>; - fhd-hbp = <35>; - fhd-vfp = <2996>; - fhd-vsa = <2>; - fhd-vbp = <26>; - hskew = ; - }; - display-mode@1 { - hdisplay = <1080>; - vdisplay = <2363>; - fhd-hfp = <60>; - fhd-hsa = <4>; - fhd-hbp = <35>; - fhd-vfp = <2996>; - fhd-vsa = <2>; - fhd-vbp = <26>; - hskew = ; - }; - }; - }; - }; - oplus,vdo-aod-params { - oplus,vdo-aod-mode@0{ - porch_change_flag = <0x03>; - dst-hfp = <1637>; - dst-vfp = <84>; - oplus-vdo-aod-cmd-table0 = [01 39]; - oplus-vdo-aod-cmd-table1 = [02 6F 04]; - oplus-vdo-aod-cmd-table2 = [03 51 0F FE]; - }; - oplus,vdo-aod-mode@1{ //120hz - porch_change_flag = <0x03>; - dst-hfp = <60>; - dst-vfp = <84>; - oplus-vdo-aod-cmd-table0 = [01 38]; - }; - oplus,vdo-aod-mode@2{ //90hz - porch_change_flag = <0x03>; - dst-hfp = <60>; - dst-vfp = <1036>; - oplus-vdo-aod-cmd-table0 = [01 38]; - }; - oplus,vdo-aod-mode@3{ //60hz - porch_change_flag = <0x03>; - dst-hfp = <60>; - dst-vfp = <2996>; - oplus-vdo-aod-cmd-table0 = [01 38]; - }; - }; - }; -}; - -&ac302_p_3_a0026_dsi_vdo_panel { - oplus,dsi-display-panel@0 { - res-switch = <2>; - /* Hardware config */ - oplus,panel-supply-entries = <&dsi_panel_pwr_supply>; - oplus,panel-power-on-sequence = "1", "vddio", "5", "vddr", "5", "vci", "2"; - oplus,panel-power-off-sequence = "6", "vci", "6", "vddr", "6", "vddio", "1"; - reset-gpios = <&pio 41 0>; - oplus,panel-reset-sequence = <2 10>, <1 1>, <0 1>, <1 26>; - /* Panel config */ - oplus,dsi-serial-number-enabled = <1>; - oplus,dsi-serial-number-switch-page; - oplus,dsi-serial-number-index = <0>; - oplus,dsi-serial-number-switch-page-command = <0xF0 0x55 0xAA 0x52 0x08 0x01>; - oplus,dsi-serial-number-default-switch-page-command = <0xF0 0x55 0xAA 0x52 0x08 0x00>; - oplus,dsi-serial-number-reg = <0xD7>; - oplus,dsi-serial-number-read-count = <7>; - oplus,backlight-check-disable; - // oplus,dsi-serial-number-year-offset = <0>; - /*color*/ - oplus,color-vivid-status; - //oplus,color-srgb-status; - // oplus,color-softiris-status; - // oplus,color-dual-panel-status; - //oplus,color-dual-brightness-status; - //oplus,color-oplus-calibrate-status; - // oplus,color-samsung-status; - //oplus,color-loading-status; - //oplus,color-2nit-status; - // oplus,color-nature-profession-status; - /* ESD */ - oplus,cust-esd-check = <1>; - oplus,esd-check-enable = <1>; - oplus,esd_check_cmd = [ - 0A - AB - 0D - ]; - oplus,esd_check_count = [ - 01 - 02 - 01 - ]; - oplus,esd_check_value = [ - 9C - 00 00 - 00 - ]; - oplus,esd_check_mask = [ - FF - 07 0F - ]; - /* MIPI error check config */ - /* - ** BIT(0): enable/disable check - ** BIT(1): enable/disable page switch - */ - // oplus,mipi-err-check-config = <0x01>; // 0b0000'0111 - // oplus,mipi-err-check-reg = [ - // AB - // ]; - // oplus,mipi-err-check-value = [ - // 00 00 - // ]; - // oplus,mipi-err-check-count = [ - // 02 - // ]; - /* 32-bit binary flag - ** Bit value identified how to match the return value of each register. - ** The value 0(default) means equal, and the value 1 means not equal. - */ - oplus,mipi-err-check-match-modes = <0x00000000>; - /* ext_params */ - oplus,panel-type = <0>; - oplus,keep_ulps = <1>; - oplus,lane-swap-en = <0>; - oplus,lane-swap = < - MIPITX_PHY_LANE_0 MIPITX_PHY_LANE_1 MIPITX_PHY_LANE_3 MIPITX_PHY_LANE_2 MIPITX_PHY_LANE_CK MIPITX_PHY_LANE_RX - MIPITX_PHY_LANE_0 MIPITX_PHY_LANE_1 MIPITX_PHY_LANE_3 MIPITX_PHY_LANE_2 MIPITX_PHY_LANE_CK MIPITX_PHY_LANE_RX - >; - oplus,lcm-color-mode = ; - oplus,output-mode = ; - oplus,panel-bpp = <10>; - oplus,physical-width-um = <71000>; - oplus,physical-height-um = <156000>; - - oplus,vdo-per-frame-lp-enable = <1>; - oplus,change_fps_by_vfp_send_cmd = <1>; - - /* OFP config */ - oplus,ofp-fp-type = <0xA10>; - oplus,ofp-fp-local-hbm-calibration; - oplus,ofp-video-mode-30hz-aod-accelerate; - /*pwm config*/ - oplus,pwm-turbo-support = <1>; - oplus,pwm-switch-backlight-threshold = <1162>; - oplus,pwm-aid-switch-enable; - oplus,pwm-onepulse-support = <0>; - oplus,pwm-onepulse-enabled = <0>; - oplus,pwm-turbo-wait-te = <1>; - }; -}; diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac302-p-3-a0026-dsi-vdo-panel-common.dtsi b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac302-p-3-a0026-dsi-vdo-panel-common.dtsi deleted file mode 100755 index e0d0085d..00000000 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/ac302-p-3-a0026-dsi-vdo-panel-common.dtsi +++ /dev/null @@ -1,86 +0,0 @@ - oplus,dsi-on-post-command = [ - ]; - oplus,dsi-off-command = [ - 39 00 00 00 0A 00 01 28 - 39 00 00 00 78 00 01 10 - ]; - oplus,dsi-set-backlight-command = [ - 39 00 00 00 00 00 03 51 00 00 - ]; - oplus,dsi-aod-on-command = [ - //39 00 00 00 00 00 02 39 00 - 39 00 00 00 00 00 03 51 03 B6 - ]; - oplus,dsi-aod-off-command = [ - //39 00 00 00 00 00 02 38 00 - ]; - oplus,dsi-ultra-low-power-aod-on-command = [ - //39 00 00 40 00 00 04 FF 5A A5 2D - //39 00 00 40 00 00 03 8A 1D 00 - //39 00 00 00 00 00 04 FF 5A A5 00 - ]; - oplus,dsi-ultra-low-power-aod-off-command = [ - //39 00 00 40 00 00 04 FF 5A A5 2D - //39 00 00 40 00 00 03 8A 00 00 - //39 00 00 00 00 00 04 FF 5A A5 00 - ]; - oplus,dsi-aod-high-mode-command = [ - 39 00 00 40 00 00 02 6F 04 - 39 00 00 00 00 00 03 51 0F FE - ]; - oplus,dsi-aod-low-mode-command = [ - 39 00 00 40 00 00 02 6F 04 - 39 00 00 00 00 00 03 51 0D BB - ]; - oplus,dsi-lhbm-pressed-icon-gamma-command = [ - ]; - oplus,dsi-lhbm-pressed-icon-grayscale-command = [ - ]; - oplus,dsi-lhbm-pressed-icon-on-command = [ - 39 00 00 40 00 00 07 A9 01 00 2F 00 00 01 - 39 00 00 40 00 00 35 A9 02 08 B1 00 00 03 02 08 C1 00 07 8E 90 EE 90 90 EE 90 90 02 08 C1 08 0A EE D0 D0 02 01 B9 1D 1D 08 02 09 B0 00 00 11 01 00 8B 00 01 10 01 01 00 87 00 00 25 - 39 00 00 00 00 00 2E A9 01 00 A2 00 27 03 02 08 C1 00 07 8E FF EE FF FF EE FF FF 02 08 C1 08 0A EE FF FF 00 00 00 00 00 02 01 B9 1D 1D 08 00 00 00 00 00 00 00 - ]; - oplus,dsi-lhbm-pressed-icon-off-command = [ - 39 00 00 40 00 00 35 A9 02 08 B1 00 00 02 02 08 C1 00 07 8F 50 FF 50 50 FF 50 50 02 08 C1 08 0A FF 50 50 02 01 B9 1D 1D 08 02 09 B0 00 00 01 01 00 8B 00 01 00 00 01 00 87 00 00 00 - 39 00 00 00 00 00 2E A9 01 00 A2 00 27 03 02 08 C1 00 07 8E FF EE FF FF EE FF FF 02 08 C1 08 0A EE FF FF 00 00 00 00 00 02 01 B9 1D 1D 08 00 00 00 00 00 00 00 - ]; - oplus,dsi-switch-hbm-apl-on-command = [ - ]; - oplus,dsi-switch-hbm-apl-off-command = [ - ]; - - oplus,dsi-hbm-on-command = [ - ]; - - oplus,dsi-hbm-off-command = [ - ]; - oplus,dsi-set-seed-natural-command = [ - 15 00 00 00 00 00 02 5F 03 - ]; - oplus,dsi-set-seed-vivid-command = [ - 15 00 00 00 00 00 02 5F 05 - ]; - oplus,dsi-set-seed-expert-command = [ - 15 00 00 00 00 00 02 5F 00 - ]; - oplus,dsi-on-post-command-state = "dsi_lp_mode"; - oplus,dsi-off-command-state = "dsi_lp_mode"; - oplus,dsi-set-backlight-command-state = "dsi_ls_mode"; - oplus,dsi-aod-on-command-state = "dsi_ls_mode"; - oplus,dsi-aod-off-command-state = "dsi_ls_mode"; - oplus,dsi-ultra-low-power-aod-off-command-state = "dsi_ls_mode"; - oplus,dsi-ultra-low-power-aod-on-command-state = "dsi_ls_mode"; - oplus,dsi-aod-high-mode-command-state = "dsi_ls_mode"; - oplus,dsi-aod-low-mode-command-state = "dsi_ls_mode"; - oplus,dsi-lhbm-pressed-icon-on-command-state = "dsi_ls_mode"; - oplus,dsi-lhbm-pressed-icon-off-command-state = "dsi_ls_mode"; - oplus,dsi-lhbm-pressed-icon-gamma-command-state = "dsi_hs_mode"; - oplus,dsi-lhbm-pressed-icon-grayscale-command-state = "dsi_hs_mode"; - oplus,dsi-switch-hbm-apl-on-command-state = "dsi_hs_mode"; - oplus,dsi-switch-hbm-apl-off-command-state = "dsi_hs_mode"; - oplus,dsi-hbm-on-command-state = "dsi_hs_mode"; - oplus,dsi-hbm-off-command-state = "dsi_hs_mode"; - oplus,dsi-set-seed-natural-command-state = "dsi_ls_mode"; - oplus,dsi-set-seed-vivid-command-state = "dsi_ls_mode"; - oplus,dsi-set-seed-expert-command-state = "dsi_ls_mode"; diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/mt6991-emira-24813-display-overlay.dtsi b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/mt6991-emira-24813-display-overlay.dtsi index 7bd89144..5243962f 100755 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/mt6991-emira-24813-display-overlay.dtsi +++ b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/mt6991-emira-24813-display-overlay.dtsi @@ -29,6 +29,7 @@ &dsi0 { status = "okay"; #address-cells = <1>; #size-cells = <0>; + cpu-num = <3>; /* choose second panel which support spr */ //switch-spr = <1>; /* choose MTK SPR IP */ diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/panel-aa599-p-7-a0014-dsi-cmd-common.dtsi b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/panel-aa599-p-7-a0014-dsi-cmd-common.dtsi index 847263af..c6b767b1 100755 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/panel-aa599-p-7-a0014-dsi-cmd-common.dtsi +++ b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/panel-aa599-p-7-a0014-dsi-cmd-common.dtsi @@ -27,22 +27,6 @@ 15 00 00 40 00 00 02 6F 4A 39 00 00 00 00 00 05 B8 00 00 00 00 ]; - oplus,dsi-lhbm-pressed-icon-on-command = [ - 39 00 00 40 00 00 06 F0 55 AA 52 08 08 - 15 00 00 40 00 00 02 6F 4A - 39 00 00 40 00 00 0D A9 02 00 DF 31 31 06 01 00 87 00 00 05 - 39 00 00 40 00 00 06 F0 55 AA 52 08 04 - 15 00 00 40 00 00 02 CB 37 - 15 00 00 00 00 00 02 8B 10 - ]; - oplus,dsi-lhbm-pressed-icon-on-pwm-command = [ - 39 00 00 40 00 00 06 F0 55 AA 52 08 08 - 15 00 00 40 00 00 02 6F 4A - 39 00 00 40 00 00 0D A9 02 00 DF 31 31 16 01 00 87 00 00 25 - 39 00 00 40 00 00 06 F0 55 AA 52 08 04 - 15 00 00 40 00 00 02 CB 37 - 15 00 00 00 00 00 02 8B 10 - ]; oplus,dsi-lhbm-pressed-icon-off-command = [ 15 00 00 40 00 00 02 87 20 39 00 00 40 00 00 06 F0 55 AA 52 08 04 @@ -105,8 +89,6 @@ oplus,dsi-aod-on-command-state = "dsi_ls_mode"; oplus,dsi-aod-high-mode-command-state = "dsi_ls_mode"; oplus,dsi-aod-low-mode-command-state = "dsi_ls_mode"; - oplus,dsi-lhbm-pressed-icon-on-command-state = "dsi_hs_mode"; - oplus,dsi-lhbm-pressed-icon-on-pwm-command-state = "dsi_hs_mode"; oplus,dsi-lhbm-pressed-icon-off-command-state = "dsi_hs_mode"; oplus,dsi-lhbm-pressed-icon-gamma-command-state = "dsi_hs_mode"; oplus,dsi-lhbm-pressed-icon-grayscale-command-state = "dsi_hs_mode"; diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/panel-aa599-p-7-a0014-dsi-cmd.dtsi b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/panel-aa599-p-7-a0014-dsi-cmd.dtsi index 01112ee0..e16bbb9b 100755 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/panel-aa599-p-7-a0014-dsi-cmd.dtsi +++ b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus-display/panel-aa599-p-7-a0014-dsi-cmd.dtsi @@ -150,6 +150,32 @@ timing@sa_fhd_120 { oplus,dsi-hbm-off-command = [ 39 00 00 00 00 00 03 51 0D BB ]; + oplus,dsi-lhbm-pressed-icon-on-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 06 01 00 87 00 00 05 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + 39 00 00 40 00 00 06 F0 55 AA 52 08 00 + 39 00 00 40 00 00 02 6F 30 + 39 00 00 40 00 00 02 DF 00 + 39 00 00 40 00 00 02 6F 36 + 39 00 00 40 00 00 02 DF 01 + ]; + oplus,dsi-lhbm-pressed-icon-on-pwm-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 16 01 00 87 00 00 25 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + 39 00 00 40 00 00 06 F0 55 AA 52 08 00 + 39 00 00 40 00 00 02 6F 30 + 39 00 00 40 00 00 02 DF 00 + 39 00 00 40 00 00 02 6F 36 + 39 00 00 40 00 00 02 DF 01 + ]; oplus,dsi-timing-switch-command-state = "dsi_hs_mode"; oplus,dsi-on-command-state = "dsi_lp_mode"; @@ -157,6 +183,8 @@ timing@sa_fhd_120 { oplus,dsi-panel-aod-off-insert-black-command-state = "dsi_ls_mode"; oplus,dsi-hbm-on-command-state = "dsi_hs_mode"; oplus,dsi-hbm-off-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-pwm-command-state = "dsi_hs_mode"; oplus,dsc-params-entries = <&dsc_params>; //oplus,spr-params-entries = <&spr_params>; oplus,phy-timcon { @@ -338,6 +366,32 @@ timing@sa_fhd_60 { oplus,dsi-hbm-off-command = [ 39 00 00 00 00 00 03 51 0D BB ]; + oplus,dsi-lhbm-pressed-icon-on-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 06 01 00 87 00 00 05 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + 39 00 00 40 00 00 06 F0 55 AA 52 08 00 + 39 00 00 40 00 00 02 6F 30 + 39 00 00 40 00 00 02 DF 02 + 39 00 00 40 00 00 02 6F 36 + 39 00 00 40 00 00 02 DF 03 + ]; + oplus,dsi-lhbm-pressed-icon-on-pwm-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 16 01 00 87 00 00 25 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + 39 00 00 40 00 00 06 F0 55 AA 52 08 00 + 39 00 00 40 00 00 02 6F 30 + 39 00 00 40 00 00 02 DF 02 + 39 00 00 40 00 00 02 6F 36 + 39 00 00 40 00 00 02 DF 03 + ]; oplus,dsi-timing-switch-command-state = "dsi_hs_mode"; oplus,dsi-on-command-state = "dsi_lp_mode"; @@ -345,6 +399,8 @@ timing@sa_fhd_60 { oplus,dsi-panel-aod-off-insert-black-command-state = "dsi_ls_mode"; oplus,dsi-hbm-on-command-state = "dsi_hs_mode"; oplus,dsi-hbm-off-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-pwm-command-state = "dsi_hs_mode"; oplus,dsc-params-entries = <&dsc_params>; //oplus,spr-params-entries = <&spr_params>; oplus,phy-timcon { @@ -368,7 +424,7 @@ display-mode@0 { fhd-vfp = <52>; fhd-vsa = <14>; fhd-vbp = <22>; - hskew = ; + hskew = ; }; display-mode@1 { hdisplay = <1080>; @@ -379,7 +435,7 @@ display-mode@1 { fhd-vfp = <52>; fhd-vsa = <14>; fhd-vbp = <22>; - hskew = ; + hskew = ; }; }; }; @@ -528,6 +584,22 @@ timing@sa_fhd_90 { oplus,dsi-hbm-off-command = [ 39 00 00 00 00 00 03 51 0D BB ]; + oplus,dsi-lhbm-pressed-icon-on-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 06 01 00 87 00 00 05 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + ]; + oplus,dsi-lhbm-pressed-icon-on-pwm-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 16 01 00 87 00 00 25 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + ]; oplus,dsi-timing-switch-command-state = "dsi_hs_mode"; oplus,dsi-on-command-state = "dsi_lp_mode"; @@ -535,6 +607,8 @@ timing@sa_fhd_90 { oplus,dsi-panel-aod-off-insert-black-command-state = "dsi_ls_mode"; oplus,dsi-hbm-on-command-state = "dsi_hs_mode"; oplus,dsi-hbm-off-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-pwm-command-state = "dsi_hs_mode"; oplus,dsc-params-entries = <&dsc_params>; //oplus,spr-params-entries = <&spr_params>; oplus,phy-timcon { @@ -695,17 +769,45 @@ timing@sa_fhd_144 { 15 00 00 40 00 00 02 38 00 39 00 00 00 00 00 03 51 00 00 ]; + oplus,dsi-panel-aod-off-insert-black-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 00 + 39 00 00 40 00 00 02 C0 70 + 39 00 00 40 00 00 06 F0 55 AA 52 08 01 + 39 00 00 40 00 00 02 6F 01 + 39 00 00 40 00 00 02 D2 11 + 39 00 00 40 00 00 02 38 00 + 39 00 00 00 00 00 03 51 00 00 + ]; oplus,dsi-hbm-on-command = [ 39 00 00 00 00 00 03 51 0F FF ]; oplus,dsi-hbm-off-command = [ 39 00 00 00 00 00 03 51 0D BB ]; + oplus,dsi-lhbm-pressed-icon-on-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 06 01 00 87 00 00 05 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + ]; + oplus,dsi-lhbm-pressed-icon-on-pwm-command = [ + 39 00 00 40 00 00 06 F0 55 AA 52 08 08 + 39 00 00 40 00 00 02 6F 4A + 39 00 00 40 00 00 0D A9 02 00 DF 31 31 16 01 00 87 00 00 25 + 39 00 00 40 00 00 06 F0 55 AA 52 08 04 + 39 00 00 40 00 00 02 CB 37 + 39 00 00 00 00 00 02 8B 10 + ]; oplus,dsi-timing-switch-command-state = "dsi_hs_mode"; oplus,dsi-on-command-state = "dsi_lp_mode"; oplus,dsi-aod-off-command-state = "dsi_ls_mode"; + oplus,dsi-panel-aod-off-insert-black-command-state = "dsi_ls_mode"; oplus,dsi-hbm-on-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-command-state = "dsi_hs_mode"; + oplus,dsi-lhbm-pressed-icon-on-pwm-command-state = "dsi_hs_mode"; oplus,dsi-hbm-off-command-state = "dsi_hs_mode"; oplus,dsc-params-entries = <&dsc_params>; //oplus,spr-params-entries = <&spr_params>; @@ -772,7 +874,7 @@ oplus,dsi-display-panel@0 { oplus,backlight-check-disable; oplus,demura-dbv-enable; //oplus,emduty-dbv-cfg = <699 772 843 900 929 1153>; - oplus,demura-dbv-cfg = <1153 4094>; + oplus,demura-dbv-cfg = <1153>; /* PWM config */ oplus,pwm-turbo-support = <0>; /* 0 not support, 1 with switch, 2 Global high frequency pwm without switch */ oplus,pwm-switch-backlight-threshold = <0x481>; @@ -783,6 +885,7 @@ oplus,dsi-display-panel@0 { oplus,ofp-fp-local-hbm-calibration; oplus,ofp-longrui-aod-config = <0x02>; oplus,ofp-need-aod-off-insert-black-frame; + oplus,ofp-no-need-a-mirror-to-the-end; /* ext_params */ oplus,panel-type = <2>; oplus,keep_ulps = <1>; diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_chg/oplus_charge_24813.dtsi b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_chg/oplus_charge_24813.dtsi index b11ec11b..13438da7 100644 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_chg/oplus_charge_24813.dtsi +++ b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_chg/oplus_charge_24813.dtsi @@ -576,7 +576,7 @@ oplus_chg_comm: oplus,comm { oplus_spec,vbatt-ov-thr-mv = <4600>; oplus_spec,full_pre_ffc_judge; - oplus_spec,full-pre-ffc-mv = <4495>; + oplus_spec,full-pre-ffc-mv = <4530>; oplus_spec,ffc-temp-thr = <120 210 350 440>; oplus_spec,wired-ffc-step-max = <2>; oplus_spec,wired-ffc-fv-mv = <4630 4630>; @@ -756,7 +756,6 @@ oplus_ufcs_charge: oplus,ufcs_charge { oplus,cp_ic = <&oplus_virtual_cp>; oplus,dpdm_switch_ic = <&oplus_virtual_dpdm_switch>; - oplus,ufcs_boot_time_retry = <10>; oplus,impedance_unit = <&oplus_ufcs_impedance_unit>; oplus,ufcs_need_reset_adapter; @@ -1386,7 +1385,7 @@ strategy_soc_range_high { 11000 4330 1000 0 0 11000 4560 900 0 0 11000 4570 500 1 0>; - strategy_temp_little_cool = <11000 4650 1500 0 0 + strategy_temp_little_cool = <11000 4560 1500 0 0 11000 4560 1000 0 0 11000 4570 600 1 0>; strategy_temp_little_cool_high = <11000 4560 1500 0 0 diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_chg/oplus_chg.h b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_chg/oplus_chg.h index 876a16a6..09acc59a 100755 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_chg/oplus_chg.h +++ b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_chg/oplus_chg.h @@ -271,6 +271,7 @@ #define OPLUS_IC_FUNC_GAUGE_GET_DEC_CV_SOH (OPLUS_IC_FUNC_NUM_GAUGE_START + 94) #define OPLUS_IC_FUNC_GAUGE_SET_VCT (OPLUS_IC_FUNC_NUM_GAUGE_START + 95) #define OPLUS_IC_FUNC_GAUGE_GET_VCT (OPLUS_IC_FUNC_NUM_GAUGE_START + 96) + /* misc */ #define OPLUS_IC_FUNC_NUM_MISC_START 500 #define OPLUS_IC_FUNC_GET_CHARGER_CYCLE (OPLUS_IC_FUNC_NUM_MISC_START + 0) @@ -351,6 +352,17 @@ #define OPLUS_IC_FUNC_GAUGE_SET_RESET_GAUGE_DATE (OPLUS_IC_FUNC_NUM_GAUGE2_START + 2) #define OPLUS_IC_FUNC_GAUGE_GET_BATT_IC_SN (OPLUS_IC_FUNC_NUM_GAUGE2_START + 3) +/* gauge sec */ +#define OPLUS_IC_FUNC_NUM_GAUGE_SEC_START 1300 +#define OPLUS_IC_FUNC_GAUGE_SEC_GET_ROMID (OPLUS_IC_FUNC_NUM_GAUGE_SEC_START + 0) +#define OPLUS_IC_FUNC_GAUGE_SEC_WRITE_PAGE (OPLUS_IC_FUNC_NUM_GAUGE_SEC_START + 1) +#define OPLUS_IC_FUNC_GAUGE_SEC_READ_PAGE (OPLUS_IC_FUNC_NUM_GAUGE_SEC_START + 2) +#define OPLUS_IC_FUNC_GAUGE_SEC_ECDSA (OPLUS_IC_FUNC_NUM_GAUGE_SEC_START + 3) +#define OPLUS_IC_FUNC_GAUGE_SEC_ECW (OPLUS_IC_FUNC_NUM_GAUGE_SEC_START + 4) +#define OPLUS_IC_FUNC_GAUGE_SEC_SHUTDOWN (OPLUS_IC_FUNC_NUM_GAUGE_SEC_START + 5) +#define OPLUS_IC_FUNC_GAUGE_SEC_SET_PRIKEY (OPLUS_IC_FUNC_NUM_GAUGE_SEC_START + 6) +#define OPLUS_IC_FUNC_GAUGE_SEC_GET_PRIKEY_INDEX (OPLUS_IC_FUNC_NUM_GAUGE_SEC_START + 7) + #define VOOC_VERSION_DEFAULT 0x0 #define VOOC_VERSION_1_0 0x1 #define VOOC_VERSION_2_0 0x2 diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_misc_24813.dtsi b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_misc_24813.dtsi index dca811f8..093aa585 100644 --- a/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_misc_24813.dtsi +++ b/kernel/kernel_device_modules-6.6/arch/arm64/boot/dts/mediatek/oplus_misc_24813.dtsi @@ -23,6 +23,10 @@ &u2port0 { mediatek,eye-term-host = <7>; mediatek,rev6-host = <3>; mediatek,discth = <0xb>; + mediatek,rx-sqth = <0x2>; + mediatek,rx-sqd = <0x2>; + mediatek,host-rx-sqth = <0xc>; + mediatek,host-rx-sqd = <0x3>; }; &i2c5 { diff --git a/kernel/kernel_device_modules-6.6/arch/arm64/configs/mgk_64_k66_defconfig b/kernel/kernel_device_modules-6.6/arch/arm64/configs/mgk_64_k66_defconfig index 11038e17..b92fd3cb 100755 --- a/kernel/kernel_device_modules-6.6/arch/arm64/configs/mgk_64_k66_defconfig +++ b/kernel/kernel_device_modules-6.6/arch/arm64/configs/mgk_64_k66_defconfig @@ -1008,6 +1008,7 @@ CONFIG_OPLUS_FEATURE_SCHED_SPREAD=y CONFIG_OPLUS_ADD_CORE_CTRL_MASK=y CONFIG_OPLUS_FEATURE_BAN_APP_SET_AFFINITY=y CONFIG_OPLUS_CPU_AUDIO_PERF=y +CONFIG_OPLUS_FEATURE_SCHED_DDL=y CONFIG_OPLUS_FEATURE_LOADBALANCE=y CONFIG_OPLUS_FEATURE_TASK_CPUSTATS=m CONFIG_OPLUS_FEATURE_TASK_SCHED=m @@ -1032,4 +1033,4 @@ CONFIG_OPLUS_CAM_EVENT_REPORT=m #ifdef CONFIG_OPLUS_FEATURE_FREQ_TUNE CONFIG_OPLUS_FEATURE_FREQ_TUNE=m -#endif \ No newline at end of file +#endif diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_disp_recovery.c b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_disp_recovery.c index 92c205a6..9f36f8ac 100755 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_disp_recovery.c +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_disp_recovery.c @@ -238,7 +238,8 @@ int _mtk_esd_check_read(struct drm_crtc *crtc) cmdq_pkt_wfe(cmdq_handle, mtk_crtc->gce_obj.event[EVENT_CABC_EOF]); - + cmdq_pkt_set_event(cmdq_handle, + mtk_crtc->gce_obj.event[EVENT_STREAM_BLOCK]); /* Record Vblank start timestamp */ mtk_vblank_config_rec_start(mtk_crtc, cmdq_handle, ESD_CHECK); @@ -639,6 +640,8 @@ int mtk_drm_esd_testing_process(struct mtk_drm_esd_ctx *esd_ctx, bool need_lock) #endif /* OPLUS_FEATURE_DISPLAY_MAINLINE*/ #endif /* OPLUS_FEATURE_DISPLAY */ unsigned int crtc_idx = 0; + struct cmdq_pkt *handle = NULL; + struct mtk_panel_ext *panel_ext; if (!esd_ctx) { DDPPR_ERR("%s invalid ESD context, stop thread\n", __func__); @@ -655,6 +658,7 @@ int mtk_drm_esd_testing_process(struct mtk_drm_esd_ctx *esd_ctx, bool need_lock) } mtk_crtc = to_mtk_crtc(crtc); + panel_ext = mtk_crtc->panel_ext; if (!mtk_crtc) { DDPPR_ERR("%s invalid mtk_crtc stop thread\n", __func__); return -EINVAL; @@ -670,6 +674,19 @@ int mtk_drm_esd_testing_process(struct mtk_drm_esd_ctx *esd_ctx, bool need_lock) i = 0; /* repeat */ do { + if (mtk_crtc_is_frame_trigger_mode(esd_ctx->crtc) && esd_ctx->chk_mode == READ_LCM) { + int index = drm_crtc_index(crtc); + if (mtk_drm_is_idle(crtc)) { + DDPINFO("[ESD%u]%s esd check in idle\n", index, __func__); + mtk_drm_idlemgr_kick(__func__, &mtk_crtc->base, index); + } + mtk_crtc_pkt_create(&handle, &mtk_crtc->base, + mtk_crtc->gce_obj.client[CLIENT_CFG]); + cmdq_pkt_clear_event(handle, mtk_crtc->gce_obj.event[EVENT_STREAM_BLOCK]); + cmdq_pkt_flush(handle); + cmdq_pkt_destroy(handle); + } + CRTC_MMP_MARK(crtc_idx, esd_check, 0x00ff, 0); mtk_drm_trace_begin("esd loop:%d", i); ret = mtk_drm_esd_check(crtc); if (!ret && !debug_force_esd) /* success */ @@ -938,6 +955,10 @@ void mtk_disp_esd_check_switch(struct drm_crtc *crtc, bool enable) atomic_set(&esd_ctx->check_wakeup, enable); if (enable) wake_up_interruptible(&esd_ctx->check_task_wq); + +#ifdef OPLUS_FEATURE_DISPLAY + esd_ctx->esd_check_cnt = 0; +#endif } static void mtk_disp_esd_chk_deinit(struct drm_crtc *crtc) diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_disp_recovery.h b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_disp_recovery.h index 75f5cb8e..58598081 100644 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_disp_recovery.h +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_disp_recovery.h @@ -28,6 +28,9 @@ struct mtk_drm_esd_ctx { u32 chk_sta; u32 chk_en; u32 chk_retry; +#ifdef OPLUS_FEATURE_DISPLAY + unsigned int esd_check_cnt; +#endif }; int mtk_drm_esd_testing_process(struct mtk_drm_esd_ctx *esd_ctx, bool need_lock); diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_crtc.c b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_crtc.c index 1431979e..a538e23b 100755 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_crtc.c +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_crtc.c @@ -3042,6 +3042,12 @@ int mtk_drm_aod_setbacklight(struct drm_crtc *crtc, unsigned int level) DDP_MUTEX_UNLOCK(&mtk_crtc->lock, __func__, __LINE__); return -EINVAL; } + if (mtk_crtc_with_sub_path(crtc, mtk_crtc->ddp_mode)) + mtk_crtc_wait_frame_done(mtk_crtc, cmdq_handle, + DDP_SECOND_PATH, 0); + else + mtk_crtc_wait_frame_done(mtk_crtc, cmdq_handle, + DDP_FIRST_PATH, 0); if (is_frame_mode) { cmdq_pkt_clear_event(cmdq_handle, @@ -3050,13 +3056,6 @@ int mtk_drm_aod_setbacklight(struct drm_crtc *crtc, unsigned int level) mtk_crtc->gce_obj.event[EVENT_CABC_EOF]); } - if (mtk_crtc_with_sub_path(crtc, mtk_crtc->ddp_mode)) - mtk_crtc_wait_frame_done(mtk_crtc, cmdq_handle, - DDP_SECOND_PATH, 0); - else - mtk_crtc_wait_frame_done(mtk_crtc, cmdq_handle, - DDP_FIRST_PATH, 0); - /* Record Vblank start timestamp */ mtk_vblank_config_rec_start(mtk_crtc, cmdq_handle, SET_BL); @@ -5470,7 +5469,6 @@ bool mtk_crtc_alloc_sram(struct mtk_drm_crtc *mtk_crtc, unsigned int hrt_idx) DDPMSG("%s slbc callback registered\n", __func__); } - mutex_lock(&mtk_crtc->mml_ir_sram.ref_lock); mutex_lock(&mtk_crtc->mml_ir_sram.lock); if (kref_read(&mtk_crtc->mml_ir_sram.ref) < 1) { @@ -5492,14 +5490,7 @@ bool mtk_crtc_alloc_sram(struct mtk_drm_crtc *mtk_crtc, unsigned int hrt_idx) kref_init(&mtk_crtc->mml_ir_sram.ref); } else { - if (kref_read(&mtk_crtc->mml_ir_sram.ref) < 0 || - kref_read(&mtk_crtc->mml_ir_sram.ref) >= INT_MAX) - DDPAEE("%s, mml_ir_sram ref (%d) will saturate\n", - __func__, kref_read(&mtk_crtc->mml_ir_sram.ref)); - ret = kref_get_unless_zero(&mtk_crtc->mml_ir_sram.ref); - if (!ret) - DDPAEE("%s, mml_ir_sram ref (%d) zero\n", - __func__, kref_read(&mtk_crtc->mml_ir_sram.ref)); + kref_get(&mtk_crtc->mml_ir_sram.ref); } mtk_crtc->mml_ir_sram.expiry_hrt_idx = hrt_idx; @@ -5507,7 +5498,6 @@ bool mtk_crtc_alloc_sram(struct mtk_drm_crtc *mtk_crtc, unsigned int hrt_idx) done: mutex_unlock(&mtk_crtc->mml_ir_sram.lock); - mutex_unlock(&mtk_crtc->mml_ir_sram.ref_lock); return (ret == 0 ? true : false); } @@ -5520,10 +5510,8 @@ static void mtk_crtc_free_sram(struct mtk_drm_crtc *mtk_crtc) DDPMSG("%s address:0x%lx size:0x%lx\n", __func__, (unsigned long)mtk_crtc->mml_ir_sram.data.paddr, mtk_crtc->mml_ir_sram.data.size); - mutex_lock(&mtk_crtc->mml_ir_sram.lock); slbc_power_off(&mtk_crtc->mml_ir_sram.data); slbc_release(&mtk_crtc->mml_ir_sram.data); - mutex_unlock(&mtk_crtc->mml_ir_sram.lock); DRM_MMP_MARK(sram_free, (unsigned long)mtk_crtc->mml_ir_sram.data.paddr, mtk_crtc->mml_ir_sram.expiry_hrt_idx); @@ -10247,11 +10235,11 @@ static void ddp_cmdq_cb(struct cmdq_cb_data data) drm_writeback_signal_completion(&mtk_crtc->wb_connector, 0); } - mutex_lock(&mtk_crtc->mml_ir_sram.ref_lock); + mutex_lock(&mtk_crtc->mml_ir_sram.lock); if (kref_read(&mtk_crtc->mml_ir_sram.ref) && (cb_data->hrt_idx > mtk_crtc->mml_ir_sram.expiry_hrt_idx)) kref_put(&mtk_crtc->mml_ir_sram.ref, mtk_crtc_mml_clean); - mutex_unlock(&mtk_crtc->mml_ir_sram.ref_lock); + mutex_unlock(&mtk_crtc->mml_ir_sram.lock); { /* OVL reset debug */ unsigned int i; @@ -13700,6 +13688,7 @@ void mtk_crtc_stop(struct mtk_drm_crtc *mtk_crtc, bool need_wait) mtk_disp_clear_channel_srt_bw(mtk_crtc); /* 3.1 stop the last mml pkt */ + mutex_lock(&mtk_crtc->mml_ir_sram.lock); if (kref_read(&mtk_crtc->mml_ir_sram.ref)) { if (mtk_crtc_is_frame_trigger_mode(crtc) || mtk_crtc_is_connector_enable(mtk_crtc)) mtk_crtc_mml_racing_stop_sync(crtc, cmdq_handle, false); @@ -13707,6 +13696,7 @@ void mtk_crtc_stop(struct mtk_drm_crtc *mtk_crtc, bool need_wait) mtk_crtc_free_sram(mtk_crtc); refcount_set(&mtk_crtc->mml_ir_sram.ref.refcount, 0); } + mutex_unlock(&mtk_crtc->mml_ir_sram.lock); if ((crtc_id == 0) && priv && priv->mml_ctx) mml_drm_kick_done(priv->mml_ctx); @@ -18216,67 +18206,28 @@ static void mtk_drm_wb_cb(struct cmdq_cb_data data) struct mtk_cmdq_cb_data *cb_data = data.data; struct drm_crtc *crtc = cb_data->crtc; struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc); - struct mtk_crtc_state *state; - struct mtk_drm_private *priv = NULL; int session_id; - unsigned int i; - int sec_on = 0; unsigned int fence_idx = cb_data->wb_fence_idx; struct pixel_type_map *pixel_types; - unsigned int spr_mode_type,bw_zero; + unsigned int spr_mode_type; - if (mtk_crtc->base.dev && mtk_crtc->base.dev->dev_private) - priv = mtk_crtc->base.dev->dev_private; - if (mtk_crtc->pq_data) { - spr_mode_type = mtk_get_cur_spr_type(crtc); - pixel_types = &mtk_crtc->pq_data->pixel_types; - pixel_types->map[pixel_types->head].fence_idx = fence_idx; - pixel_types->map[pixel_types->head].type = spr_mode_type; - pixel_types->map[pixel_types->head].secure = false; - DDPDBG("%s: idx %d fence %u type %u", __func__, - pixel_types->head, fence_idx, spr_mode_type); - pixel_types->head += 1; - pixel_types->head %= SPR_TYPE_FENCE_MAX; - } + if (mtk_crtc->pq_data) { + spr_mode_type = mtk_get_cur_spr_type(crtc); + pixel_types = &mtk_crtc->pq_data->pixel_types; + pixel_types->map[pixel_types->head].fence_idx = fence_idx; + pixel_types->map[pixel_types->head].type = spr_mode_type; + pixel_types->map[pixel_types->head].secure = false; + DDPDBG("%s: idx %d fence %u type %u", __func__, + pixel_types->head, fence_idx, spr_mode_type); + pixel_types->head += 1; + pixel_types->head %= SPR_TYPE_FENCE_MAX; + } /* fb reference conut will also have 1 after put */ - // drm_framebuffer_put(cb_data->wb_fb); + // drm_framebuffer_put(cb_data->wb_fb); session_id = mtk_get_session_id(crtc); mtk_crtc_release_output_buffer_fence_by_idx(crtc, session_id, fence_idx); - DDPINFO("%s: fence %u\n", __func__, fence_idx); - - // reset wb sec_on state to enter idle - DDP_MUTEX_LOCK(&mtk_crtc->lock, __func__, __LINE__); - - for (i = 0; i < mtk_crtc->layer_nr; i++) { - struct drm_plane *plane = &mtk_crtc->planes[i].base; - - if (plane->state->crtc) { - if (plane->state->fb - && plane->state->fb->format->format - != DRM_FORMAT_C8 - && mtk_drm_fb_is_secure(plane->state->fb)) - sec_on = true; - } - - } - mtk_crtc->sec_on = sec_on; - if (crtc->state) { - state = to_mtk_crtc_state(crtc->state); - if(fence_idx >= state->prop_val[CRTC_PROP_OUTPUT_FENCE_IDX]) - state->prop_val[CRTC_PROP_OUTPUT_ENABLE] = 0; - } - - DDP_MUTEX_UNLOCK(&mtk_crtc->lock, __func__, __LINE__); - - bw_zero = 0; - if (priv && priv->power_state) { - DDP_MUTEX_LOCK(&mtk_crtc->lock, __func__, __LINE__); - mtk_addon_path_io_cmd(crtc, cb_data->wb_scn, PMQOS_SET_HRT_BW, &bw_zero); - DDP_MUTEX_UNLOCK(&mtk_crtc->lock, __func__, __LINE__); - } - CRTC_MMP_MARK(0, wbBmpDump, 1, fence_idx); mtk_dprec_mmp_dump_wdma_layer(crtc, cb_data->wb_fb); @@ -21474,7 +21425,6 @@ int mtk_drm_crtc_create(struct drm_device *drm_dev, mutex_init(&mtk_crtc->lock); mutex_init(&mtk_crtc->sol_lock); mutex_init(&mtk_crtc->cwb_lock); - mutex_init(&mtk_crtc->mml_ir_sram.ref_lock); mutex_init(&mtk_crtc->mml_ir_sram.lock); spin_lock_init(&mtk_crtc->pf_time_lock); mtk_crtc->config_regs = priv->config_regs; diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_crtc.h b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_crtc.h index b2e08150..0e672c25 100755 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_crtc.h +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_crtc.h @@ -1009,7 +1009,6 @@ struct mtk_drm_sram_list { struct mtk_drm_sram { struct slbc_data data; struct mutex lock; - struct mutex ref_lock; struct kref ref; unsigned int expiry_hrt_idx; }; diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_drv.c b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_drv.c index 51498168..34119ee6 100755 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_drv.c +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_drm_drv.c @@ -9475,33 +9475,6 @@ void mtk_drm_wait_mml_submit_done(struct mtk_mml_cb_para *cb_para) DDPINFO("%s- ret:%d\n", __func__, ret); } -static void mtk_drm_mmlsys_dump_cb(void *cb_param) -{ - struct drm_crtc *crtc = (struct drm_crtc *)cb_param; - struct mtk_drm_crtc *mtk_crtc; - struct cmdq_client *cl; - dma_addr_t trig_pc = 0; - u64 *inst; - - mtk_crtc = to_mtk_crtc(crtc); - - mtk_drm_crtc_analysis(crtc); - mtk_drm_crtc_dump(crtc); - - if ((mtk_crtc->trig_loop_cmdq_handle) && - (mtk_crtc->trig_loop_cmdq_handle->cl)) { - cl = (struct cmdq_client *)mtk_crtc->trig_loop_cmdq_handle->cl; - DDPMSG("++++++ Dump trigger loop ++++++\n"); - cmdq_thread_dump(cl->chan, mtk_crtc->trig_loop_cmdq_handle, - &inst, &trig_pc); - cmdq_dump_pkt(mtk_crtc->trig_loop_cmdq_handle, trig_pc, true); - - DDPMSG("------ Dump trigger loop ------\n"); - } - -} - - struct mml_drm_ctx *mtk_drm_get_mml_drm_ctx(struct drm_device *dev, struct drm_crtc *crtc) { @@ -9538,7 +9511,6 @@ struct mml_drm_ctx *mtk_drm_get_mml_drm_ctx(struct drm_device *dev, disp_param.ddren_cb = mtk_drm_mmlsys_ddren_cb; disp_param.kick_idle_cb = mtk_drm_mmlsys_kick_idle_cb; disp_param.disp_crtc = (void *)crtc; - disp_param.disp_dump_dl_cb = mtk_drm_mmlsys_dump_cb; mml_ctx = mml_drm_get_context(mml_pdev, &disp_param); if (IS_ERR_OR_NULL(mml_ctx)) { diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_dsi.c b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_dsi.c index 4bd2a2b9..e6d6db36 100755 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_dsi.c +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_dsi.c @@ -67,6 +67,9 @@ #include "oplus_display_onscreenfingerprint.h" #endif /* OPLUS_FEATURE_DISPLAY_ONSCREENFINGERPRINT */ +#ifdef OPLUS_FEATURE_DISPLAY +#include +#endif /* ************ Panel Master ********** */ #include "mtk_fbconfig_kdebug.h" /* ********* end Panel Master *********** */ @@ -501,6 +504,7 @@ extern unsigned int oplus_display_brightness; extern atomic_t oplus_pcp_handle_lock; extern unsigned int oplus_display_log_type; extern unsigned long oplus_esd_triggered; +extern unsigned int get_project(void); #endif /* OPLUS_FEATURE_DISPLAY */ #ifdef OPLUS_FEATURE_DISPLAY_APOLLO @@ -4352,7 +4356,11 @@ irqreturn_t mtk_dsi_irq_status(int irq, void *dev_id) mtk_dump_comp_str(comp)); #ifdef OPLUS_FEATURE_DISPLAY - DDPAEE("buffer underrun. triger kernel_api db\n"); + if (get_eng_version() == 0x00) { + DDPAEE_FATAL("buffer underrun. (release) triger kernel_api db isu \n"); + } else { + DDPAEE("buffer underrun. triger kernel_api db all log\n"); + } #endif /* OPLUS_FEATURE_DISPLAY */ mtk_vidle_force_power_ctrl_by_cpu(true); @@ -7543,14 +7551,39 @@ int mtk_dsi_esd_read(struct mtk_ddp_comp *comp, void *handle, void *ptr) struct mtk_panel_params *params; struct mipi_dsi_msg read_msg; unsigned char tx_buf[10]; + int prj_id = get_project(); //uintptr_t slot = (uintptr_t)ptr; +#ifdef OPLUS_FEATURE_DISPLAY + unsigned int esd_check_total; + unsigned int esd_check_cnt; +#endif if (dsi->ext && dsi->ext->params) params = dsi->ext->params; else /* can't find panel ext information, stop esd read */ return 0; - for (i = 0 ; i < ESD_CHECK_NUM ; i++) { +#ifdef OPLUS_FEATURE_DISPLAY + esd_check_total = ESD_CHECK_NUM; + esd_check_cnt = dsi->esd_ctx->esd_check_cnt; + + if (params->esd_check_repeatedly_cnt) { + esd_check_total = esd_check_cnt + 1; + } + + for (i = esd_check_cnt; i < esd_check_total; i++) +#else + for (i = 0; i < ESD_CHECK_NUM; i++) +#endif + { + if (params->lcm_esd_check_table[i].cmd == 0) + break; + +#ifdef OPLUS_FEATURE_DISPLAY + if (dsi->ext->funcs && dsi->ext->funcs->esd_check_multipage_pre) { + dsi->ext->funcs->esd_check_multipage_pre(dsi, mipi_dsi_dcs_write_gce2, handle, i); + } +#endif if (params->lcm_esd_check_table[i].cmd == 0) break; @@ -7564,17 +7597,31 @@ int mtk_dsi_esd_read(struct mtk_ddp_comp *comp, void *handle, void *ptr) read_msg.rx_len = params->lcm_esd_check_table[i].count; _mtk_dsi_read_ddic_by6382(dsi, handle, &read_msg, i, ptr); } else { - t0.CONFG = 0x00; - t0.Data_ID = 0x37; - t0.Data0 = params->lcm_esd_check_table[i].count; - t0.Data1 = 0; + if ((prj_id == 24069) || (prj_id == 24297)) { + t0.CONFG = 0x00 | HSTX; + t0.Data_ID = 0x37; + t0.Data0 = params->lcm_esd_check_table[i].count; + t0.Data1 = 0; - t1.CONFG = 0x04; - t1.Data0 = params->lcm_esd_check_table[i].cmd; - t1.Data_ID = (t1.Data0 < 0xB0) - ? DSI_DCS_READ_PACKET_ID - : DSI_GERNERIC_READ_LONG_PACKET_ID; - t1.Data1 = 0; + t1.CONFG = 0x04 | HSTX; + t1.Data0 = params->lcm_esd_check_table[i].cmd; + t1.Data_ID = (t1.Data0 < 0xB0) + ? DSI_DCS_READ_PACKET_ID + : DSI_GERNERIC_READ_LONG_PACKET_ID; + t1.Data1 = 0; + } else { + t0.CONFG = 0x00; + t0.Data_ID = 0x37; + t0.Data0 = params->lcm_esd_check_table[i].count; + t0.Data1 = 0; + + t1.CONFG = 0x04; + t1.Data0 = params->lcm_esd_check_table[i].cmd; + t1.Data_ID = (t1.Data0 < 0xB0) + ? DSI_DCS_READ_PACKET_ID + : DSI_GERNERIC_READ_LONG_PACKET_ID; + t1.Data1 = 0; + } mtk_dsi_read_gce(comp, handle, &t0, &t1, i, ptr); } @@ -7591,6 +7638,10 @@ int mtk_dsi_esd_cmp(struct mtk_ddp_comp *comp, void *handle, void *ptr) struct esd_check_item *lcm_esd_tb; struct mtk_panel_params *params; struct mtk_drm_crtc *mtk_crtc = (struct mtk_drm_crtc *)ptr; +#ifdef OPLUS_FEATURE_DISPLAY + unsigned int esd_check_total; + unsigned int esd_check_cnt; +#endif if (!dsi->driver_data) { pr_info("%s: error! dsi->driver_data=NULL! return!\n", __func__); @@ -7602,7 +7653,23 @@ int mtk_dsi_esd_cmp(struct mtk_ddp_comp *comp, void *handle, void *ptr) else /* can't find panel ext information, stop esd read */ return 0; - for (i = 0; i < ESD_CHECK_NUM; i++) { +#ifdef OPLUS_FEATURE_DISPLAY + esd_check_total = ESD_CHECK_NUM; + esd_check_cnt = dsi->esd_ctx->esd_check_cnt; + + if (params->esd_check_repeatedly_cnt) { + esd_check_total = ++dsi->esd_ctx->esd_check_cnt; + if (dsi->esd_ctx->esd_check_cnt == params->esd_check_repeatedly_cnt) { + dsi->esd_ctx->esd_check_cnt = 0; + DDPINFO("%s, esd check done, reset esd_check_cnt\n", __func__); + } + } + + for (i = esd_check_cnt; i < esd_check_total; i++) +#else + for (i = 0; i < ESD_CHECK_NUM; i++) +#endif + { if (dsi->ext->params->lcm_esd_check_table[i].cmd == 0) break; @@ -7749,7 +7816,6 @@ int mtk_dsi_dump(struct mtk_ddp_comp *comp) pr_info("%s: error! dsi->driver_data=NULL! return!\n", __func__); return -1; } - if (DISP_REG_GET_FIELD(MODE_FLD_REG_MODE_CON, baddr + DSI_MODE_CTRL(dsi->driver_data))) { /* VDO mode */ @@ -7842,6 +7908,7 @@ unsigned int mtk_dsi_mode_change_index(struct mtk_dsi *dsi, state->prop_val[CRTC_PROP_DISP_MODE_IDX]; /*Msync 2.0*/ struct mtk_drm_private *priv = (mtk_crtc->base).dev->dev_private; + bool doze_enabled_flag = mtk_dsi_doze_state(dsi); old_mode = &(mtk_crtc->avail_modes[src_mode_idx]); adjust_mode = &(mtk_crtc->avail_modes[dst_mode_idx]); @@ -7874,7 +7941,7 @@ unsigned int mtk_dsi_mode_change_index(struct mtk_dsi *dsi, __func__, __LINE__, adjust_panel_params->dyn.switch_en); } } - + DDPMSG("%s doze_enabled_flag %d\n", __func__, doze_enabled_flag); if (cur_panel_params && adjust_panel_params && !(dsi->mipi_hopping_sta && (cur_panel_params->dyn.switch_en || adjust_panel_params->dyn.switch_en))) { @@ -7890,8 +7957,13 @@ unsigned int mtk_dsi_mode_change_index(struct mtk_dsi *dsi, mode_chg_index |= MODE_DSI_RES; } - if (drm_mode_vfp(adjust_mode) != drm_mode_vfp(old_mode)) + if (drm_mode_vfp(adjust_mode) != drm_mode_vfp(old_mode)) { mode_chg_index |= MODE_DSI_VFP; + if (doze_enabled_flag && oplus_ofp_video_mode_30hz_aod_accelerate_is_enabled()) { + mode_chg_index |= MODE_DSI_HFP; + DDPMSG("mode_chg_index flag %d\n", mode_chg_index); + } + } if (drm_mode_hfp(adjust_mode) != drm_mode_hfp(old_mode)) mode_chg_index |= MODE_DSI_HFP; @@ -13445,6 +13517,7 @@ static void mtk_dsi_vdo_timing_change(struct mtk_dsi *dsi, state->prop_val[CRTC_PROP_DISP_MODE_IDX]); //1.fps change index fps_chg_index = mtk_crtc->mode_change_index; + DDPMSG("fps_chg_index %d", fps_chg_index); mtk_drm_idlemgr_kick(__func__, &(mtk_crtc->base), 0); @@ -13557,7 +13630,8 @@ static void mtk_dsi_vdo_timing_change(struct mtk_dsi *dsi, handle, DSI_VFP, dsi->vfp); #ifdef OPLUS_FEATURE_DISPLAY_ONSCREENFINGERPRINT - if (oplus_ofp_is_supported() && oplus_ofp_video_mode_30hz_aod_is_enabled()) { + if (oplus_ofp_is_supported() + && (oplus_ofp_video_mode_30hz_aod_is_enabled() || oplus_ofp_video_mode_30hz_aod_accelerate_is_enabled())) { oplus_ofp_video_mode_aod_handle(dsi->encoder.crtc, dsi->ext, dsi->panel, dsi, mtk_dsi_cmdq_pack_gce, handle); } #endif /* OPLUS_FEATURE_DISPLAY_ONSCREENFINGERPRINT */ @@ -13719,7 +13793,8 @@ static void mtk_dsi_vdo_timing_change(struct mtk_dsi *dsi, if (dsi && dsi->ext && dsi->ext->params && dsi->ext->params->change_fps_by_vfp_send_cmd) { #ifdef OPLUS_FEATURE_DISPLAY_ONSCREENFINGERPRINT - if (oplus_ofp_is_supported() && oplus_ofp_video_mode_30hz_aod_is_enabled()) { + if (oplus_ofp_is_supported() + && (oplus_ofp_video_mode_30hz_aod_is_enabled() || oplus_ofp_video_mode_30hz_aod_accelerate_is_enabled())) { oplus_ofp_video_mode_aod_handle(dsi->encoder.crtc, dsi->ext, dsi->panel, dsi, mtk_dsi_cmdq_pack_gce, handle); } #endif /* OPLUS_FEATURE_DISPLAY_ONSCREENFINGERPRINT */ @@ -13803,7 +13878,7 @@ static void mtk_dsi_vdo_aod_ctrl(struct mtk_dsi *dsi, DDPINFO("%s+\n", __func__); if(!vdo_aod_cfg) - DDPINFO("aod_en:%d, wfe_cmd_eof:%d, need_dsi_trigger:%d \n", + DDPPR_ERR("aod_en:%d, wfe_cmd_eof:%d, need_dsi_trigger:%d \n", vdo_aod_cfg->aod_en,vdo_aod_cfg->wfe_cmd_eof, vdo_aod_cfg->need_dsi_trigger); if (!dsi) { @@ -13824,12 +13899,12 @@ static void mtk_dsi_vdo_aod_ctrl(struct mtk_dsi *dsi, dst_vfp = vdo_aod_param->dst_vfp; hfp_byte = ALIGN_TO((dst_hfp * dsi_tmp_buf_bpp - 12), 4); dsi_mode = readl(dsi->regs + DSI_MODE_CTRL(dsi->driver_data)); - DDPINFO("%s, dsi_mode=0x%x, porch_change_flag=0x%x, dst_hfp=%d, dst_vfp=%d\n", - __func__, dsi_mode, porch_change_flag, dst_hfp, dst_vfp); + DDPMSG("%s, dsi_mode=0x%x, porch_change_flag=0x%x, dst_hfp=%d, dst_vfp=%d, , hfp_byte = %x\n", + __func__, dsi_mode, porch_change_flag, dst_hfp, dst_vfp, hfp_byte); cb_data = kmalloc(sizeof(*cb_data), GFP_KERNEL); if (!cb_data) { - DDPINFO("%s:%d, cb data creation failed\n", + DDPPR_ERR("%s:%d, cb data creation failed\n", __func__, __LINE__); return; } @@ -13884,7 +13959,7 @@ static void mtk_dsi_vdo_aod_ctrl(struct mtk_dsi *dsi, /*1.2 send cmd: send cmd*/ for (i = 0; i < MAX_DYN_CMD_NUM; i++) { vdo_aod_param_cmd_list = &vdo_aod_param->vdo_aod_cmd_table[i]; - DDPINFO("[zxl_test] 111 num =%d, para_list[0] =0x%x\n", + DDPINFO("num =%d, para_list[0] =0x%x\n", vdo_aod_param_cmd_list->cmd_num, vdo_aod_param_cmd_list->para_list[0]); if (vdo_aod_param_cmd_list->cmd_num == 0) break; @@ -13955,7 +14030,7 @@ static void mtk_dsi_vdo_aod_ctrl(struct mtk_dsi *dsi, /*1.2 send cmd: send cmd*/ for (i = 0; i < MAX_DYN_CMD_NUM; i++) { vdo_aod_param_cmd_list = &vdo_aod_param->vdo_aod_cmd_table[i]; - DDPINFO("[zxl_test] 222 num =%d, para_list[0] =0x%x\n", + DDPINFO("in_dsi_init ture num =%d, para_list[0] =0x%x\n", vdo_aod_param_cmd_list->cmd_num, vdo_aod_param_cmd_list->para_list[0]); if (vdo_aod_param_cmd_list->cmd_num == 0) break; @@ -14072,7 +14147,7 @@ static void mtk_dsi_set_targetline(struct mtk_ddp_comp *comp, return; } - val = (hactive * 9) / 10; + val = (hactive * 7) / 10; val |= TARGET_NL_EN; DDPINFO("%s -> h:%u, val:0x%x\n", __func__, hactive, val); @@ -15441,6 +15516,7 @@ static int mtk_dsi_io_cmd(struct mtk_ddp_comp *comp, struct cmdq_pkt *handle, (struct mtk_vdo_aod_cfg *)params; mtk_dsi_vdo_aod_ctrl(dsi, crtc, vdo_aod_cfg); + oplus_ofp_set_aod_state(false); } break; case DSI_MSYNC_SWITCH_TE_LEVEL: @@ -16914,16 +16990,20 @@ static int mtk_dsi_probe(struct platform_device *pdev) num_irqs = platform_irq_count(pdev); if (num_irqs) { + unsigned int cpu_num = 0; irq = platform_get_irq(pdev, 0); - if (irq < 0) { dev_err(&pdev->dev, "failed to request dsi irq resource\n"); ret = -EPROBE_DEFER; goto error; } - irq_set_status_flags(irq, IRQ_TYPE_LEVEL_HIGH); + + ret = of_property_read_u32(dev->of_node, + "cpu-num", &cpu_num); + if (cpu_num != 0) + ret = irq_force_affinity(irq, cpumask_of(cpu_num)); ret = devm_request_irq( &pdev->dev, irq, dsi->driver_data->irq_handler, IRQF_TRIGGER_NONE | IRQF_SHARED, dev_name(&pdev->dev), dsi); diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_log.h b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_log.h index 8f576856..900c3391 100755 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_log.h +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_log.h @@ -355,7 +355,7 @@ int mtk_dprec_logger_pr(unsigned int type, char *fmt, ...); if (r < 0) { \ pr_err("snprintf error\n"); \ } \ - aee_kernel_exception_api(__FILE__, __LINE__, \ + aee_kernel_fatal_api(__FILE__, __LINE__, \ DB_OPT_DEFAULT | DB_OPT_FTRACE | \ DB_OPT_MMPROFILE_BUFFER, \ str, string, ##args); \ diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_panel_ext.h b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_panel_ext.h index f897b992..73ee0c82 100755 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_panel_ext.h +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mediatek_v2/mtk_panel_ext.h @@ -17,7 +17,11 @@ #endif #define RT_MAX_NUM 10 +#ifdef OPLUS_FEATURE_DISPLAY +#define ESD_CHECK_NUM 4 +#else #define ESD_CHECK_NUM 3 +#endif #define MAX_TX_CMD_NUM 20 #define MAX_RX_CMD_NUM 20 #define READ_DDIC_SLOT_NUM 6 @@ -551,6 +555,8 @@ struct mtk_panel_params { #ifdef OPLUS_FEATURE_DISPLAY bool skip_unnecessary_switch; unsigned int change_fps_by_vfp_send_cmd_need_delay; + unsigned int esd_te_check_gpio; + unsigned int esd_check_repeatedly_cnt; #endif /* OPLUS_FEATURE_DISPLAY */ struct mtk_ddic_dsi_cmd send_cmd_to_ddic; unsigned int cust_esd_check; @@ -866,6 +872,8 @@ struct mtk_panel_funcs { int (*panel_poweroff)(struct drm_panel *panel); int (*panel_poweron)(struct drm_panel *panel); int (*panel_reset)(struct drm_panel *panel); + int (*esd_read_gpio)(struct drm_panel *panel); + int (*esd_check_multipage_pre)(void *dsi, dcs_write_gce cb, void *handle, int i); int (*oplus_set_power)(uint32_t voltage_id, uint32_t voltage_value); int (*set_seed)(void *dsi_drv, dcs_write_gce_pack cb, void *handle, unsigned int mode); int (*oplus_update_power_value)(uint32_t voltage_id); diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-core.c b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-core.c index d41cc7ac..a47d481c 100755 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-core.c +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-core.c @@ -35,10 +35,6 @@ int mtk_mml_msg = 1; EXPORT_SYMBOL(mtk_mml_msg); module_param(mtk_mml_msg, int, 0644); -int mml_dl_disp_dump = 1; -EXPORT_SYMBOL(mml_dl_disp_dump); -module_param(mml_dl_disp_dump, int, 0644); - /* see mtk-mml-core.c enum mml_hrt_mode for more detail */ int mtk_mml_hrt_mode; EXPORT_SYMBOL(mtk_mml_hrt_mode); @@ -864,13 +860,6 @@ static void core_comp_dump(struct mml_task *task, u32 pipe, int cnt) call_dbg_op(comp, dump); } - if ((cfg->info.mode == MML_MODE_DIRECT_LINK) || - (cfg->info.mode == MML_MODE_RACING)) { - - if (mml_dl_disp_dump) - cfg->task_ops->disp_dump(task); - } - if (cnt >= 0) mml_dpc_dump(); @@ -1214,11 +1203,9 @@ static u32 mml_core_calc_tput_couple(struct mml_task *task, u32 pixel, u32 pipe) /* workaround, increase mml throughput to avoid underrun */ task_tput = task_tput * 11 / 10; } - mml_log("%s panel_w %d data.width %d task_tput %d", __func__, cfg->panel_w, dest->data.width, task_tput); - if (cfg->panel_w > dest->data.width) { + + if (cfg->panel_w > dest->data.width) task_tput = (u32)((u64)task_tput * cfg->panel_w / dest->data.width); - mml_log("%s panel_w > width task_tput %d", __func__, task_tput); - } } else if (info->mode == MML_MODE_DIRECT_LINK) { /* workaround, increase mml throughput to avoid underrun */ if (cfg->panel_w > dest->data.width) @@ -1419,9 +1406,6 @@ static void mml_core_dvfs_begin(struct mml_task *task, u32 pipe) mml_msg_qos("task dvfs begin %p pipe %u throughput %u (%u) bandwidth %u pixel %u dpc %u", task, pipe, throughput, task_pipe_tmp->throughput[dpc], task_pipe_tmp->bandwidth, max_pixel, dpc); - mml_log("task dvfs begin %p pipe %u throughput %u (%u) bandwidth %u pixel %u dpc %u", - task, pipe, throughput, task_pipe_tmp->throughput[dpc], - task_pipe_tmp->bandwidth, max_pixel, dpc); done: mutex_unlock(&tp->qos_mutex); mml_trace_ex_end(); diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-core.h b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-core.h index f58a050a..eb79376b 100755 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-core.h +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-core.h @@ -293,8 +293,6 @@ struct mml_task_ops { void (*kt_setsched)(struct mml_ctx *ctx); void (*ddren)(struct mml_task *task, struct cmdq_pkt *pkt, bool enable); void (*dispen)(struct mml_task *task, bool enable); - - void (*disp_dump)(struct mml_task *task); }; struct mml_config_ops { diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-driver.c b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-driver.c old mode 100644 new mode 100755 index 6e52360c..f14a4324 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-driver.c +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-driver.c @@ -18,6 +18,7 @@ #include #include #include +#include #include @@ -147,6 +148,7 @@ struct mml_dev { struct cmdq_base *cmdq_base; struct cmdq_client *cmdq_clts[MML_MAX_CMDQ_CLTS]; u8 cmdq_clt_cnt; + struct kthread_worker *kt_config; u32 sw_ver; atomic_t drm_cnt; @@ -671,6 +673,11 @@ struct mml_m2m_ctx *mml_dev_create_m2m_ctx(struct mml_dev *mml, return ctx; } +struct kthread_worker *mml_dev_get_config_worker(struct mml_dev *mml) +{ + return mml->kt_config; +} + struct mml_v4l2_dev *mml_get_v4l2_dev(struct mml_dev *mml) { return mml->v4l2_dev; @@ -1383,25 +1390,14 @@ void mml_comp_qos_set(struct mml_comp *comp, struct mml_task *task, struct mml_comp_config *ccfg, u32 throughput, u32 tput_up) { struct mml_frame_config *cfg = task->config; - const struct mml_frame_info *info = &cfg->info; - const struct mml_frame_dest *dest = &info->dest[0]; struct mml_dev *mml = cfg->mml; struct mml_pipe_cache *cache = &cfg->cache[ccfg->pipe]; struct mml_comp_bw *bw = &comp->bw[cfg->dpc]; - u32 srt_bw = bw->srt_bw, hrt_bw = bw->hrt_bw; - u32 stash_srt_bw = bw->stash_srt_bw, stash_hrt_bw = bw->stash_hrt_bw; + const u32 srt_bw = bw->srt_bw, hrt_bw = bw->hrt_bw; + const u32 stash_srt_bw = bw->stash_srt_bw, stash_hrt_bw = bw->stash_hrt_bw; bool hrt = cfg->info.mode == MML_MODE_RACING || cfg->info.mode == MML_MODE_DIRECT_LINK; bool updated = false; - mml_log("%s srt_bw %d hrt_bw %d", __func__, srt_bw, hrt_bw); - if (cfg->panel_w > dest->data.width) { - srt_bw = (u32)((u64)srt_bw * cfg->panel_w / dest->data.width); - hrt_bw = (u32)((u64)hrt_bw * cfg->panel_w / dest->data.width); - stash_srt_bw = (u32)((u64)stash_srt_bw * cfg->panel_w / dest->data.width); - stash_hrt_bw = (u32)((u64)stash_hrt_bw * cfg->panel_w / dest->data.width); - mml_log("%s panel_w > width srt_bw %d hrt_bw %d", __func__, srt_bw, hrt_bw); - } - /* store for debug log */ task->pipe[ccfg->pipe].bandwidth = max(srt_bw, task->pipe[ccfg->pipe].bandwidth); if (srt_bw == mml->port_srt_bw[comp->sysid][comp->larb_port] && @@ -2266,6 +2262,18 @@ static int mml_probe(struct platform_device *pdev) return -ENOMEM; platform_set_drvdata(pdev, mml); + mml->kt_config = kthread_create_worker(0, "mml_work0"); + if (IS_ERR(mml->kt_config)) { + ret = PTR_ERR(mml->kt_config); + mml_log("%s create thread fail %d", __func__, ret); + goto err_sys_add; + } else { + struct sched_param kt_param = { .sched_priority = MAX_RT_PRIO - 1 }; + + ret = sched_setscheduler(mml->kt_config->task, SCHED_FIFO, &kt_param); + mml_log("%s thread work0 ret %d", __func__, ret); + } + mml->pdev = pdev; mutex_init(&mml->sys_state_mutex); mutex_init(&mml->ctx_mutex); @@ -2434,6 +2442,11 @@ static int mml_remove(struct platform_device *pdev) struct device *dev = &pdev->dev; struct mml_dev *mml = platform_get_drvdata(pdev); + if (mml->kt_config) { + kthread_destroy_worker(mml->kt_config); + mml->kt_config = NULL; + } + #ifdef MML_DEBUG_PROC proc_remove(mml->dbg_procfs); vfree(mml->debug_buffer); diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-driver.h b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-driver.h index 6f4e8c27..9524967a 100644 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-driver.h +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-driver.h @@ -323,6 +323,7 @@ void mml_dev_put_dle_ctx(struct mml_dev *mml, void (*ctx_release)(struct mml_dle_ctx *ctx)); struct mml_m2m_ctx *mml_dev_create_m2m_ctx(struct mml_dev *mml, struct mml_m2m_ctx *(*ctx_create)(struct mml_dev *mml)); +struct kthread_worker *mml_dev_get_config_worker(struct mml_dev *mml); struct mml_v4l2_dev *mml_get_v4l2_dev(struct mml_dev *mml); diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-drm-adaptor.c b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-drm-adaptor.c index 0a1bc0ec..a39bf279 100755 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-drm-adaptor.c +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-drm-adaptor.c @@ -67,8 +67,6 @@ struct mml_drm_ctx { void (*dispen_cb)(bool enable, void *dispen_param); void *dispen_param; struct completion idle; - - void (*disp_dump_dl_cb)(void *disp_crtc); }; static struct mml_drm_ctx *task_ctx_to_drm(struct mml_task *task) @@ -1097,17 +1095,6 @@ static void drm_task_dispen(struct mml_task *task, bool enable) ctx->dispen_cb(enable, ctx->dispen_param); } - -static void drm_task_disp_dump(struct mml_task *task) -{ - struct mml_drm_ctx *ctx = task_ctx_to_drm(task); - - if (!ctx->disp_dump_dl_cb) - return; - - ctx->disp_dump_dl_cb(ctx->disp_crtc); -} - static const struct mml_task_ops drm_task_ops = { .queue = task_queue, .submit_done = task_submit_done, @@ -1117,8 +1104,6 @@ static const struct mml_task_ops drm_task_ops = { .kt_setsched = ctx_kt_setsched, .ddren = drm_task_ddren, .dispen = drm_task_dispen, - - .disp_dump = drm_task_disp_dump, }; static const struct mml_config_ops drm_config_ops = { @@ -1132,43 +1117,44 @@ static struct mml_drm_ctx *drm_ctx_create(struct mml_dev *mml, { static const char * const threads[] = { "mml_drm_done", "mml_destroy", - "mml_work0", "mml_work1", + NULL, "mml_work1", }; - struct mml_drm_ctx *ctx; + struct mml_drm_ctx *dctx; int ret; mml_msg("[drm]%s on dev %p", __func__, mml); - ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); - if (!ctx) + dctx = kzalloc(sizeof(*dctx), GFP_KERNEL); + if (!dctx) return ERR_PTR(-ENOMEM); - ret = mml_ctx_init(&ctx->ctx, mml, threads); + dctx->ctx.kt_config[0] = mml_dev_get_config_worker(mml); + + ret = mml_ctx_init(&dctx->ctx, mml, threads); if (ret) { - kfree(ctx); + kfree(dctx); return ERR_PTR(ret); } - ctx->ctx.task_ops = &drm_task_ops; - ctx->ctx.cfg_ops = &drm_config_ops; - ctx->ctx.disp_dual = disp->dual; - ctx->ctx.disp_vdo = disp->vdo_mode; - ctx->ctx.submit_cb = disp->submit_cb; - ctx->ddren_cb = disp->ddren_cb; - ctx->disp_crtc = disp->disp_crtc; - ctx->dispen_cb = disp->dispen_cb; - ctx->dispen_param = disp->dispen_param; - ctx->disp_dump_dl_cb = disp->disp_dump_dl_cb; - ctx->panel_width = MML_DEFAULT_PANEL_W; - ctx->panel_height = MML_DEFAULT_PANEL_H; + dctx->ctx.task_ops = &drm_task_ops; + dctx->ctx.cfg_ops = &drm_config_ops; + dctx->ctx.disp_dual = disp->dual; + dctx->ctx.disp_vdo = disp->vdo_mode; + dctx->ctx.submit_cb = disp->submit_cb; + dctx->ddren_cb = disp->ddren_cb; + dctx->disp_crtc = disp->disp_crtc; + dctx->dispen_cb = disp->dispen_cb; + dctx->dispen_param = disp->dispen_param; + dctx->panel_width = MML_DEFAULT_PANEL_W; + dctx->panel_height = MML_DEFAULT_PANEL_H; #ifndef MML_FPGA - ctx->timeline = mtk_sync_timeline_create("mml_timeline"); + dctx->timeline = mtk_sync_timeline_create("mml_timeline"); #endif - if (!ctx->timeline) + if (!dctx->timeline) mml_err("[drm]fail to create timeline"); else - mml_msg("[drm]timeline for mml %p", ctx->timeline); + mml_msg("[drm]timeline for mml %p", dctx->timeline); /* return info to display */ disp->racing_height = mml_sram_get_racing_height(mml); @@ -1177,9 +1163,9 @@ static struct mml_drm_ctx *drm_ctx_create(struct mml_dev *mml, mml_pw_set_kick_cb(mml, disp->kick_idle_cb, disp->disp_crtc); /* idle complete event to prevent display ignore put context */ - init_completion(&ctx->idle); + init_completion(&dctx->idle); - return ctx; + return dctx; } struct mml_drm_ctx *mml_drm_get_context(struct platform_device *pdev, @@ -1231,6 +1217,7 @@ static void drm_ctx_release(struct mml_drm_ctx *dctx) mml_msg("[drm]%s on ctx %p", __func__, ctx); + ctx->kt_config[0] = NULL; /* clear kthread from mml driver */ mml_ctx_deinit(ctx); for (i = 0; i < ARRAY_SIZE(ctx->tile_cache); i++) if (ctx->tile_cache[i].tiles) diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-drm-adaptor.h b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-drm-adaptor.h index c73e440e..4c2ea020 100644 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-drm-adaptor.h +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-drm-adaptor.h @@ -73,9 +73,6 @@ struct mml_drm_param { /* [out]The height of racing mode for each output tile in pixel. */ u8 racing_height; - - /* [in] */ - void (*disp_dump_dl_cb)(void *disp_crtc); }; /* diff --git a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-tp-mt6899.c b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-tp-mt6899.c index 5dd5f8a0..0122d5a3 100644 --- a/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-tp-mt6899.c +++ b/kernel/kernel_device_modules-6.6/drivers/gpu/drm/mediatek/mml/mtk-mml-tp-mt6899.c @@ -954,6 +954,11 @@ static enum mml_mode tp_query_mode_racing(struct mml_dev *mml, struct mml_frame_ { struct mml_topology_cache *tp; u32 pixel; + u32 out_w = info->dest[0].data.width; + u32 out_h = info->dest[0].data.height; + + mml_log("%s in crop %d %d out %d %d", __func__, info->dest[0].crop.r.width, info->dest[0].crop.r.height, + info->dest[0].data.width, info->dest[0].data.height); if (unlikely(mml_racing)) { if (mml_racing == 2) @@ -1060,10 +1065,14 @@ static enum mml_mode tp_query_mode_racing(struct mml_dev *mml, struct mml_frame_ goto decouple; } - if ((info->dest[0].data.width > info->dest[0].crop.r.width && - info->dest[0].data.height < info->dest[0].crop.r.height) || - (info->dest[0].data.width < info->dest[0].crop.r.width && - info->dest[0].data.height > info->dest[0].crop.r.height)) { + if (info->dest[0].rotate == MML_ROT_90 || + info->dest[0].rotate == MML_ROT_270) + swap(out_w, out_h); + + if ((out_w > info->dest[0].crop.r.width && + out_h < info->dest[0].crop.r.height) || + (out_w < info->dest[0].crop.r.width && + out_h > info->dest[0].crop.r.height)) { *reason = mml_query_rszratio; goto decouple; } diff --git a/kernel/kernel_device_modules-6.6/drivers/leds/fan/oplus_fan.c b/kernel/kernel_device_modules-6.6/drivers/leds/fan/oplus_fan.c index b85669fa..6ae3a6da 100755 --- a/kernel/kernel_device_modules-6.6/drivers/leds/fan/oplus_fan.c +++ b/kernel/kernel_device_modules-6.6/drivers/leds/fan/oplus_fan.c @@ -32,7 +32,11 @@ #define MAX_LEVEL_DEFAULT 10 #define DEVICE_ID_HONGYING 0 #define DEVICE_ID_TAIDA 1 +#define FAN_STATUS_PERIOD_DEFAULT 60000 +static int dbg_rpm = -1; +module_param(dbg_rpm, int, 0644); +MODULE_PARM_DESC(dbg_rpm, "oplus debug fan rpm"); #ifdef CONFIG_OPLUS_FAN_MTK #define FAN_DEFAULT_PWM_NUM 1 #define FAN_DEFAULT_VDD_MIN_VOL 2950000 @@ -45,7 +49,8 @@ struct oplus_fan_tach { int fg_irq_gpio; atomic_t pulses; unsigned int rpm; - + bool fg_irq_en; + struct mutex irq_lock; #ifdef CONFIG_OPLUS_FAN_MTK u32 pwm_num; int vdd_type; @@ -55,10 +60,17 @@ struct oplus_fan_tach { #endif }; +struct fan_rpm_offset_config { + int temp; + u32 rpm_offset; +}; + struct fan_hw_config { int max_level; int duty_config[MAX_LEVEL_DEFAULT]; + struct fan_rpm_offset_config *rpm_offset_config; int pulses_per_revolution; + int rpm_offset_count; }; struct pwm_setting { @@ -68,6 +80,31 @@ struct pwm_setting { bool enabled; }; +struct fan_rpm_table { + u32 duty; + u32 rpm; +}; + +enum fan_status { + FAN_STATUS_NORMAL = 0, + FAN_STATUS_BLOCKED = 1, + FAN_STATUS_DAMAGED = 2, +}; + +static const char *const fan_state_names[] = { + [FAN_STATUS_NORMAL] = "NORMAL", + [FAN_STATUS_BLOCKED] = "BLOCKED", + [FAN_STATUS_DAMAGED] = "DAMAGED", +}; + +static const char *fan_status_string(enum fan_status status) +{ + if (status < 0 || status >= ARRAY_SIZE(fan_state_names)) + return "UNKNOWN"; + + return fan_state_names[status]; +} + struct oplus_fan_chip { struct device *dev; struct mutex lock; @@ -82,9 +119,21 @@ struct oplus_fan_chip { int reg_en_gpio; bool regulator_enabled; bool rpm_timer_enabled; + bool force_rpm_timer_enabled; struct oplus_fan_tach tach; ktime_t sample_start; struct timer_list rpm_timer; + struct delayed_work fan_status_work; + struct delayed_work fan_retry_work; + int status_check_period; + bool force_disable_status_work; + enum fan_status status; + struct fan_rpm_table rpm_table[MAX_LEVEL_DEFAULT]; + bool rpm_table_initialized; + bool fan_status_checking; + bool fan_state_retrying; + bool state_changed; + struct thermal_zone_device *shell_themal; #ifdef CONFIG_OPLUS_FAN_MTK struct pwm_spec_config mtk_pwm_setting; #endif @@ -94,6 +143,7 @@ static struct fan_hw_config default_hw_config = { .max_level = MAX_LEVEL_DEFAULT, .duty_config = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}, .pulses_per_revolution = DEFAULT_PULSES_PER_REVOLUTION, + .rpm_offset_config = NULL, }; /* This handler assumes self resetting edge triggered interrupt. */ @@ -136,20 +186,242 @@ static void sample_timer(struct timer_list *t) dev_err(chip->dev, "sample_timer:delta=%u ms, duty=%u, pulses=%d, rpm=%u\n", delta, chip->pwm_setting.duty, pulses, tach->rpm); + if (dbg_rpm >= 0) { + tach->rpm = dbg_rpm; + dev_err(chip->dev, "dbg_rpm != 0, force rpm=%u\n", tach->rpm); + } + mod_timer(&chip->rpm_timer, jiffies + HZ); } -static void restart_sample_timer(struct oplus_fan_chip *chip) +static void oplus_fan_fg_irq_config(struct oplus_fan_chip *chip, + bool enabled) +{ + if (!chip) + return; + + if (!gpio_is_valid(chip->tach.fg_irq_gpio)) + return; + + mutex_lock(&chip->tach.irq_lock); + if (!chip->tach.fg_irq_en && enabled) { + enable_irq(gpio_to_irq(chip->tach.fg_irq_gpio)); + chip->tach.fg_irq_en = true; + } else if (chip->tach.fg_irq_en && !enabled) { + disable_irq_nosync(gpio_to_irq(chip->tach.fg_irq_gpio)); + chip->tach.fg_irq_en = false; + } + mutex_unlock(&chip->tach.irq_lock); +} + +static void oplus_fan_sample_timer_enable(struct oplus_fan_chip *chip, + bool enabled) { int pulses; if (!chip) return; - pulses = atomic_read(&chip->tach.pulses); - atomic_sub(pulses, &chip->tach.pulses); - chip->sample_start = ktime_get(); - mod_timer(&chip->rpm_timer, jiffies + HZ); + if (chip->fan_status_checking) { + dev_err(chip->dev, "fan_status_work checking, don't allow change sample_timer state\n"); + return; + } + + if (chip->force_rpm_timer_enabled && !enabled) { + dev_err(chip->dev, "force_rpm_timer_enabled, don't disable sample_timer\n"); + return; + } + + chip->rpm_timer_enabled = enabled; + dev_err(chip->dev, "sample_timer enable = %d\n", enabled); + + if (enabled) { + oplus_fan_fg_irq_config(chip, true); + pulses = atomic_read(&chip->tach.pulses); + atomic_sub(pulses, &chip->tach.pulses); + chip->sample_start = ktime_get(); + mod_timer(&chip->rpm_timer, jiffies + HZ); + } else { + oplus_fan_fg_irq_config(chip, false); + } +} + +#define DEFAULT_SHELL_TEMP 25 +static int oplus_fan_get_shell_temp(struct oplus_fan_chip *chip) +{ + int shell_temp; + struct thermal_zone_device *tmp_shell_themal = NULL; + int rc; + + if (chip->shell_themal == NULL) { + tmp_shell_themal = thermal_zone_get_zone_by_name("shell_back"); + if (IS_ERR(tmp_shell_themal)) { + dev_err(chip->dev, "Can't get shell_back\n"); + tmp_shell_themal = NULL; + } + chip->shell_themal = tmp_shell_themal; + } + + if (IS_ERR_OR_NULL(chip->shell_themal)) { + shell_temp = DEFAULT_SHELL_TEMP; + } else { + rc = thermal_zone_get_temp(chip->shell_themal, &shell_temp); + if (rc) { + dev_err(chip->dev, "thermal_zone_get_temp get error"); + shell_temp = DEFAULT_SHELL_TEMP; + } else { + shell_temp = shell_temp / 100; + } + } + + dev_err(chip->dev, "shell_back temp = %d", shell_temp); + + return shell_temp; +} + +static u32 oplus_fan_get_target_rpm(struct oplus_fan_chip *chip, u32 duty) +{ + int i; + + for (i = 0; i < MAX_LEVEL_DEFAULT; i++) { + if (duty == chip->rpm_table[i].duty) + return chip->rpm_table[i].rpm; + } + + return 0; +} + +#define FAN_RPM_OFFSET_DEFAULT 1000 +static u32 oplus_fan_get_rpm_offset(struct oplus_fan_chip *chip, int temp) +{ + struct fan_hw_config *config = &chip->hw_config[chip->device_id]; + int i; + + if (config->rpm_offset_count <= 0) + return FAN_RPM_OFFSET_DEFAULT; + + for (i = 0; i < config->rpm_offset_count; i++) { + if (temp < config->rpm_offset_config[i].temp) + return config->rpm_offset_config[i].rpm_offset; + } + + return FAN_RPM_OFFSET_DEFAULT; +} + +static bool oplus_fan_check_duty_support(struct oplus_fan_chip *chip, u32 duty) +{ + int i; + + if (duty == 0) + return false; + + for (i = 0; i < MAX_LEVEL_DEFAULT; i++) { + if (duty == chip->rpm_table[i].duty) + return true; + } + + return false; +} + +static bool oplus_fan_check_status_work_needed(struct oplus_fan_chip *chip) +{ + if (!chip->rpm_table_initialized) { + dev_err(chip->dev, "rpm_table is not initialized\n"); + return false; + } + + if (chip->force_disable_status_work) { + dev_err(chip->dev, "force disabled\n"); + return false; + } + + if (!chip->regulator_enabled || !chip->pwm_setting.enabled) { + dev_err(chip->dev, "fan state is disabled\n"); + return false; + } + + return true; +} + +#define DAMAGED_RPM_THRESHOLD 100 +static void oplus_fan_status_work(struct work_struct *work) +{ + struct oplus_fan_chip *chip = container_of(work, struct oplus_fan_chip, + fan_status_work.work); + char *normal_strs[2] = { "FAN_STATE=NORMAL", NULL }; + char *blocked_strs[2] = { "FAN_STATE=BLOCKED", NULL }; + char *damaged_strs[2] = { "FAN_STATE=DAMAGED", NULL }; + u32 current_duty; + u32 current_rpm; + u32 target_rpm; + u32 rpm_offset; + int shell_temp; + bool check_block_status; + + if (!oplus_fan_check_status_work_needed(chip)) { + dev_err(chip->dev, "fan_status_work:don't need check, return\n"); + return; + } + + current_duty = chip->pwm_setting.duty; + oplus_fan_sample_timer_enable(chip, true); + chip->fan_status_checking = true; + msleep(1200); + chip->fan_status_checking = false; + oplus_fan_sample_timer_enable(chip, false); + + if (!chip->regulator_enabled || !chip->pwm_setting.enabled) { + dev_err(chip->dev, "fan_status_work: fan state changed, return\n"); + return; + } + + if (current_duty != chip->pwm_setting.duty) { + dev_err(chip->dev, "fan_status_work:duty changed, skip this check\n"); + goto next_check; + } + + current_rpm = chip->tach.rpm; + + check_block_status = oplus_fan_check_duty_support(chip, chip->pwm_setting.duty); + if (check_block_status) { + target_rpm = oplus_fan_get_target_rpm(chip, current_duty); + if (target_rpm == 0) { + dev_err(chip->dev, "fan_status_work:target_rpm = 0, return\n"); + return; + } + } else { + target_rpm = 0; + dev_err(chip->dev, "duty=%d not support in rpm_table\n", chip->pwm_setting.duty); + } + + shell_temp = oplus_fan_get_shell_temp(chip); + rpm_offset = oplus_fan_get_rpm_offset(chip, shell_temp); + + dev_err(chip->dev, "fan_status_work: rpm=%u, level=%d, duty=%u target_rpm=%u, rpm_offset=%u\n", + current_rpm, chip->level, current_duty, target_rpm, rpm_offset); + + if (check_block_status && current_rpm > target_rpm + rpm_offset) { + chip->status = FAN_STATUS_BLOCKED; + if (kobject_uevent_env(&chip->cdev.dev->kobj, KOBJ_CHANGE, blocked_strs)) + dev_err(chip->dev, "Failed to send fan status uevent\n"); + else + dev_err(chip->dev, "sent uevent %s\n", blocked_strs[0]); + } else if (current_rpm < DAMAGED_RPM_THRESHOLD) { + chip->status = FAN_STATUS_DAMAGED; + if (kobject_uevent_env(&chip->cdev.dev->kobj, KOBJ_CHANGE, damaged_strs)) + dev_err(chip->dev, "Failed to send fan status uevent\n"); + else + dev_err(chip->dev, "sent uevent %s\n", damaged_strs[0]); + } else { + chip->status = FAN_STATUS_NORMAL; + if (kobject_uevent_env(&chip->cdev.dev->kobj, KOBJ_CHANGE, normal_strs)) + dev_err(chip->dev, "Failed to send fan status uevent\n"); + else + dev_err(chip->dev, "sent uevent %s\n", normal_strs[0]); + } + +next_check: + schedule_delayed_work(&chip->fan_status_work, msecs_to_jiffies(chip->status_check_period)); } static int oplus_fan_parse_hw_config(struct oplus_fan_chip *chip) @@ -157,9 +429,11 @@ static int oplus_fan_parse_hw_config(struct oplus_fan_chip *chip) struct device_node *np = chip->dev->of_node; struct device_node *temp; struct fan_hw_config *config; + int buf[64] = {0}; int ret; int count; int i = 0; + int j; count = of_get_child_count(np); if (count < 1) { @@ -173,6 +447,8 @@ static int oplus_fan_parse_hw_config(struct oplus_fan_chip *chip) if (!chip->hw_config) { dev_err(chip->dev, "failed to kcalloc memory\n"); goto parse_err; + } else { + memset(chip->hw_config, 0, count * sizeof(struct fan_hw_config)); } for_each_child_of_node(np, temp) { @@ -196,6 +472,34 @@ static int oplus_fan_parse_hw_config(struct oplus_fan_chip *chip) dev_err(chip->dev, "failed to get duty-config count = %d\n", count); goto parse_err; } + + count = of_property_count_elems_of_size(temp, "rpm-offset-config", sizeof(int)); + if (count > 0 && count % 2 == 0) { + ret = of_property_read_u32_array(temp, "rpm-offset-config", (u32 *)buf, count); + if (ret) { + dev_err(chip->dev, "failed to get rpm-offset-config ret = %d\n", ret); + goto parse_err; + } + config->rpm_offset_count = count / 2; + config->rpm_offset_config = devm_kcalloc(chip->dev, + config->rpm_offset_count, sizeof(struct fan_rpm_offset_config), GFP_KERNEL); + if (!config->rpm_offset_config) { + dev_err(chip->dev, "fail to alloc rpm_offset_config memory\n"); + goto parse_err; + } + + for (j = 0; j < config->rpm_offset_count; j++) { + config->rpm_offset_config[j].temp = buf[j * 2 + 0]; + config->rpm_offset_config[j].rpm_offset = buf[j * 2 + 1]; + dev_err(chip->dev, "rpm_offset_config[%d]:temp=%d, rpm_offset=%u\n", j, + config->rpm_offset_config[j].temp, + config->rpm_offset_config[j].rpm_offset); + } + } else { + dev_err(chip->dev, "failed to get rpm-offset-config count = %d\n", count); + goto parse_err; + } + dev_err(chip->dev, "parse config[%d] pulses_per_revolution = %d\n", i, config->pulses_per_revolution); dev_err(chip->dev, "duty_config = %d,%d,%d,%d,%d, %d,%d,%d,%d,%d\n", config->duty_config[0], config->duty_config[1], config->duty_config[2], @@ -259,6 +563,8 @@ static int oplus_fan_parse_dt(struct oplus_fan_chip *chip) gpio_to_irq(tach->fg_irq_gpio), ret); return ret; } + disable_irq_nosync(gpio_to_irq(tach->fg_irq_gpio)); + tach->fg_irq_en = false; } dev_err(chip->dev, "tach: fg_irq_gpio=%d\n", tach->fg_irq_gpio); @@ -343,12 +649,13 @@ static int mtk_oplus_fan_pwm_start(struct oplus_fan_chip *chip) chip->mtk_pwm_setting.PWM_MODE_OLD_REGS.DATA_WIDTH * chip->pwm_setting.duty / 100; - ret = pwm_set_spec_config(&chip->mtk_pwm_setting); - if (ret) { - dev_err(chip->dev, "Fail to pwm_set_spec_config ret = %d\n", ret); + if (chip->pwm_setting.enabled) { + ret = pwm_set_spec_config(&chip->mtk_pwm_setting); + if (ret) { + dev_err(chip->dev, "Fail to pwm_set_spec_config ret = %d\n", ret); + } } - - dev_err(chip->dev, "mtk_oplus_fan_pwm_start set THRESH = %d", chip->mtk_pwm_setting.PWM_MODE_OLD_REGS.THRESH); + dev_err(chip->dev, "mtk_oplus_fan_pwm_start PWM:enabled=%d, duty=%u", chip->pwm_setting.enabled, chip->pwm_setting.duty); mutex_unlock(&chip->lock); @@ -363,7 +670,7 @@ static int mtk_oplus_fan_pwm_stop(struct oplus_fan_chip *chip) mt_pwm_disable(chip->mtk_pwm_setting.pwm_no, chip->mtk_pwm_setting.pmic_pad); - dev_err(chip->dev, "mtk_oplus_fan_pwm_stop pwm\n"); + dev_err(chip->dev, "mtk_oplus_fan_pwm_stop PWM:enabled=%d\n", chip->pwm_setting.enabled); return 0; } @@ -443,16 +750,26 @@ static void oplus_fan_enable(struct oplus_fan_chip *chip, bool enabled) if (!chip) return; + chip->state_changed = false; + if (enabled) { oplus_fan_regulator_set(chip, true); msleep(100); chip->pwm_setting.enabled = true; oplus_fan_set_pwm(chip); + oplus_fan_sample_timer_enable(chip, true); + cancel_delayed_work_sync(&chip->fan_status_work); + if (chip->fan_state_retrying) + schedule_delayed_work(&chip->fan_retry_work, msecs_to_jiffies(200)); + else + schedule_delayed_work(&chip->fan_status_work, msecs_to_jiffies(2000)); } else { chip->pwm_setting.enabled = false; oplus_fan_set_pwm(chip); msleep(100); oplus_fan_regulator_set(chip, false); + oplus_fan_sample_timer_enable(chip, false); + cancel_delayed_work_sync(&chip->fan_status_work); } return; @@ -466,22 +783,88 @@ static void mtk_oplus_fan_enable(struct oplus_fan_chip *chip, bool enabled) if (enabled == chip->pwm_setting.enabled) return; + chip->state_changed = false; + if (enabled) { oplus_fan_regulator_set(chip, true); msleep(100); chip->pwm_setting.enabled = true; mtk_oplus_fan_pwm_start(chip); + oplus_fan_sample_timer_enable(chip, true); + cancel_delayed_work_sync(&chip->fan_status_work); + if (chip->fan_state_retrying) + schedule_delayed_work(&chip->fan_retry_work, msecs_to_jiffies(200)); + else + schedule_delayed_work(&chip->fan_status_work, msecs_to_jiffies(2000)); } else { chip->pwm_setting.enabled = false; mtk_oplus_fan_pwm_stop(chip); msleep(100); oplus_fan_regulator_set(chip, false); + oplus_fan_sample_timer_enable(chip, false); + cancel_delayed_work_sync(&chip->fan_status_work); } return; } #endif +#define DEFAULT_RETRY_COUNT 3 +static void oplus_fan_retry_work(struct work_struct *work) +{ + struct oplus_fan_chip *chip = container_of(work, struct oplus_fan_chip, + fan_retry_work.work); + int i; + int count = 0; + + for (i = 0; i < DEFAULT_RETRY_COUNT; i++) { + if (chip->state_changed) { + dev_err(chip->dev, "fan state_changed\n"); + break; + } + + if (!chip->regulator_enabled || !chip->pwm_setting.enabled) { + dev_err(chip->dev, "fan state is disabled\n"); + break; + } + + oplus_fan_sample_timer_enable(chip, true); + chip->fan_status_checking = true; + msleep(1200); + chip->fan_status_checking = false; + oplus_fan_sample_timer_enable(chip, false); + + if (!chip->regulator_enabled || !chip->pwm_setting.enabled) { + dev_err(chip->dev, "fan state is disabled\n"); + break; + } + + if (chip->tach.rpm < DAMAGED_RPM_THRESHOLD) { + count++; + } else { + break; + } + } + + chip->fan_state_retrying = false; + + if (count == DEFAULT_RETRY_COUNT) { + dev_err(chip->dev, "fan status abnormal, retry fan enable\n"); +#ifndef CONFIG_OPLUS_FAN_MTK + oplus_fan_enable(chip, false); + msleep(20); + oplus_fan_enable(chip, true); +#else + mtk_oplus_fan_enable(chip, false); + msleep(20); + mtk_oplus_fan_enable(chip, true); +#endif + } else { + dev_err(chip->dev, "fan status normal\n"); + schedule_delayed_work(&chip->fan_status_work, msecs_to_jiffies(2000)); + } +} + static int oplus_fan_init(struct oplus_fan_chip *chip) { #ifdef CONFIG_OPLUS_FAN_MTK @@ -491,6 +874,7 @@ static int oplus_fan_init(struct oplus_fan_chip *chip) return -EINVAL; } chip->level = 0; + chip->status_check_period = FAN_STATUS_PERIOD_DEFAULT; chip->pwm_setting.duty = MAX_DUTY; #ifndef CONFIG_OPLUS_FAN_MTK chip->pwm_setting.period_ns = chip->pwm_setting.pre_period_ns; @@ -554,6 +938,7 @@ static ssize_t speed_store(struct device *dev, struct device_attribute *attr, if (speed > MAX_DUTY) speed = MAX_DUTY; + chip->level = 0; chip->pwm_setting.duty = speed; #ifndef CONFIG_OPLUS_FAN_MTK oplus_fan_set_pwm(chip); @@ -587,7 +972,11 @@ static ssize_t state_store(struct device *dev, struct device_attribute *attr, rc = kstrtobool(buf, &enabled); if (rc < 0) return rc; + dev_err(chip->dev, "state_store = %d\n", enabled); + chip->state_changed = true; + cancel_delayed_work_sync(&chip->fan_retry_work); + chip->fan_state_retrying = enabled; #ifndef CONFIG_OPLUS_FAN_MTK oplus_fan_enable(chip, enabled); #else @@ -620,11 +1009,9 @@ static ssize_t rpm_store(struct device *dev, struct device_attribute *attr, if (rc < 0) return rc; - dev_err(chip->dev, "rpm_timer enable = %d\n", enabled); - - chip->rpm_timer_enabled = enabled; - if (enabled) - restart_sample_timer(chip); + chip->force_rpm_timer_enabled = enabled; + dev_err(chip->dev, "rpm_store force_rpm_timer_enabled = %d\n", enabled); + oplus_fan_sample_timer_enable(chip, enabled); return count; } @@ -720,12 +1107,156 @@ static ssize_t device_id_store(struct device *dev, struct device_attribute *attr } static DEVICE_ATTR_RW(device_id); +static ssize_t status_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct led_classdev *fan_cdev = dev_get_drvdata(dev); + struct oplus_fan_chip *chip = + container_of(fan_cdev, struct oplus_fan_chip, cdev); + + return scnprintf(buf, PAGE_SIZE, "%s\n", fan_status_string(chip->status)); +} +static DEVICE_ATTR_RO(status); + +static ssize_t check_period_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct led_classdev *fan_cdev = dev_get_drvdata(dev); + struct oplus_fan_chip *chip = + container_of(fan_cdev, struct oplus_fan_chip, cdev); + + return scnprintf(buf, PAGE_SIZE, "%d\n", chip->status_check_period); +} + +static ssize_t check_period_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + struct led_classdev *fan_cdev = dev_get_drvdata(dev); + struct oplus_fan_chip *chip = + container_of(fan_cdev, struct oplus_fan_chip, cdev); + int rc; + u32 val; + + rc = kstrtouint(buf, 0, &val); + if (rc < 0) + return rc; + + dev_err(chip->dev, "set check_period = %u\n", val); + + if (val == 0) { + chip->force_disable_status_work = true; + dev_err(chip->dev, "force disable check status work\n"); + } else { + chip->status_check_period = val; + chip->force_disable_status_work = false; + } + + return count; +} +static DEVICE_ATTR_RW(check_period); + +static ssize_t rpm_table_show(struct device *dev, struct device_attribute *attr, + char *buf) +{ + struct led_classdev *fan_cdev = dev_get_drvdata(dev); + struct oplus_fan_chip *chip = + container_of(fan_cdev, struct oplus_fan_chip, cdev); + int i; + int count = 0; + + for (i = 0; i < MAX_LEVEL_DEFAULT; i++) { + count += scnprintf(buf + count, PAGE_SIZE, "%u,%u,", + chip->rpm_table[i].duty, chip->rpm_table[i].rpm); + dev_err(chip->dev, "rpm_table[%d]:%u,%u\n", i, + chip->rpm_table[i].duty, chip->rpm_table[i].rpm); + } + + if (count > 0) + buf[count - 1] = '\n'; + + return count; +} + +static ssize_t rpm_table_store(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + struct led_classdev *fan_cdev = dev_get_drvdata(dev); + struct oplus_fan_chip *chip = + container_of(fan_cdev, struct oplus_fan_chip, cdev); + char buffer[128] = {0}; + u32 data[MAX_LEVEL_DEFAULT * 2] = {0}; + char *str = buffer; + int val; + int cnt = 0; + int i; + + if (count > sizeof(buffer) - 1) { + dev_err(chip->dev, "rpm_table data length out of range, count=%zu\n", count); + return -EFAULT; + } + + memmove(buffer, buf, count); + dev_err(chip->dev, "rpm_table_store:%s\n", buffer); + + while (*str != '\0' && *str != '\n') { + if (sscanf(str, "%d", &val) && val != 0) { + data[cnt++] = val; + str = strstr(str, ","); + if (!str) + break; + else + str++; + if (cnt == MAX_LEVEL_DEFAULT * 2) + break; + } else { + dev_err(chip->dev, "invalid rpm_table data, buffer=%s\n", buffer); + return -EFAULT; + } + } + + if (cnt % 2) { + dev_err(chip->dev, "invalid rpm_table data count, buffer=%s\n", buffer); + return -EFAULT; + } else { + /* all duty param must be lower than MAX_DUTY */ + for (i = 0; i < cnt; i += 2) { + if (data[i] > MAX_DUTY) { + dev_err(chip->dev, "duty param %u is invalid, buffer=%s\n", data[i], buffer); + return -EFAULT; + } + } + + /* all rpm param can't be zero */ + for (i = 1; i < cnt; i += 2) { + if (data[i] == 0) { + dev_err(chip->dev, "rpm param %u is invalid, buffer=%s\n", data[i], buffer); + return -EFAULT; + } + } + + memset(chip->rpm_table, 0 , sizeof(chip->rpm_table)); + dev_err(chip->dev, "rpm_table update count = %d\n", cnt); + for (i = 0; i < (cnt / 2); i++) { + chip->rpm_table[i].duty = data[i * 2]; + chip->rpm_table[i].rpm = data[i * 2 + 1]; + dev_err(chip->dev, "rpm_table[%d]:%u,%u\n", i, data[i * 2], data[i * 2 + 1]); + } + chip->rpm_table_initialized = true; + } + + return count; +} +static DEVICE_ATTR_RW(rpm_table); + static struct attribute *oplus_fan_attrs[] = { &dev_attr_speed.attr, &dev_attr_state.attr, &dev_attr_rpm.attr, &dev_attr_level.attr, &dev_attr_device_id.attr, + &dev_attr_status.attr, + &dev_attr_check_period.attr, + &dev_attr_rpm_table.attr, NULL }; @@ -802,6 +1333,7 @@ static int oplus_fan_probe(struct platform_device *pdev) return -ENOMEM; mutex_init(&chip->lock); + mutex_init(&chip->tach.irq_lock); chip->dev = &pdev->dev; platform_set_drvdata(pdev, chip); @@ -819,21 +1351,18 @@ static int oplus_fan_probe(struct platform_device *pdev) dev_err(chip->dev, "failed to kzalloc memory\n"); return ret; } - memcpy(chip->hw_config, &default_hw_config, sizeof(struct fan_hw_config)); + memmove(chip->hw_config, &default_hw_config, sizeof(struct fan_hw_config)); } chip->device_id = DEVICE_ID_HONGYING; + INIT_DELAYED_WORK(&chip->fan_status_work, oplus_fan_status_work); + INIT_DELAYED_WORK(&chip->fan_retry_work, oplus_fan_retry_work); timer_setup(&chip->rpm_timer, sample_timer, 0); ret = devm_add_action_or_reset(dev, oplus_fan_cleanup, chip); if (ret) return ret; oplus_fan_cdev_register(chip); - - chip->rpm_timer_enabled = true; - chip->sample_start = ktime_get(); - mod_timer(&chip->rpm_timer, jiffies + HZ); - oplus_fan_init(chip); dev_err(chip->dev, "probe complete!\n"); diff --git a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/boot_common/mtk_boot_common.c b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/boot_common/mtk_boot_common.c index e894c22e..3b1751be 100755 --- a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/boot_common/mtk_boot_common.c +++ b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/boot_common/mtk_boot_common.c @@ -321,7 +321,7 @@ static int boot_mode_proc_show(struct seq_file *p, void *v) #if 0 #ifdef OPLUS_BUG_STABILITY -OPPO_BOOTMODE oplus_boot_mode = OPLUS_NORMAL_BOOT; +OPLUS_BOOTMODE oplus_boot_mode = OPLUS_NORMAL_BOOT; static int oplus_get_boot_mode(char *oplus_boot_mode_char) { int boot_mode_temp = 0; diff --git a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/jpeg/jpeg_drv.c b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/jpeg/jpeg_drv.c index d4a317cc..15135f55 100644 --- a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/jpeg/jpeg_drv.c +++ b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/jpeg/jpeg_drv.c @@ -628,41 +628,47 @@ static void jpeg_drv_hybrid_dec_unlock(unsigned int hwid) mutex_unlock(&jpeg_hybrid_dec_lock); } -static int jpeg_drv_hybrid_dec_suspend_notifier( +static int jpeg_drv_hybrid_dec_suspend_prepare_notifier( struct notifier_block *nb, unsigned long action, void *data) { int i; int wait_cnt = 0; + if (action != PM_SUSPEND_PREPARE) + return NOTIFY_DONE; + JPEG_LOG(0, "action:%ld", action); - switch (action) { - case PM_SUSPEND_PREPARE: - mutex_lock(&jpeg_hybrid_dec_lock); - gJpegqDev.is_suspending = 1; - for (i = 0 ; i < HW_CORE_NUMBER; i++) { - JPEG_LOG(1, "jpeg dec sn wait core %d", i); - while (dec_hwlocked[i] && dec_hw_enable[i]) { - JPEG_LOG(1, "jpeg dec sn core %d locked. wait...", i); - usleep_range(10000, 20000); - wait_cnt++; - if (wait_cnt > 5) { - JPEG_LOG(0, "jpeg dec sn unlock core %d", i); - _jpeg_drv_hybrid_dec_unlock(i); - break; - } + mutex_lock(&jpeg_hybrid_dec_lock); + gJpegqDev.is_suspending = 1; + for (i = 0 ; i < HW_CORE_NUMBER; i++) { + JPEG_LOG(1, "jpeg dec sn wait core %d", i); + while (dec_hwlocked[i] && dec_hw_enable[i]) { + JPEG_LOG(1, "jpeg dec sn core %d locked. wait...", i); + usleep_range(10000, 20000); + wait_cnt++; + if (wait_cnt > 5) { + JPEG_LOG(0, "jpeg dec sn unlock core %d", i); + _jpeg_drv_hybrid_dec_unlock(i); + break; } } - mutex_unlock(&jpeg_hybrid_dec_lock); - - return NOTIFY_OK; - case PM_POST_SUSPEND: - gJpegqDev.is_suspending = 0; - return NOTIFY_OK; - default: - return NOTIFY_DONE; } - return NOTIFY_DONE; + mutex_unlock(&jpeg_hybrid_dec_lock); + + return NOTIFY_OK; +} + +static int jpeg_drv_hybrid_dec_post_suspend_notifier( + struct notifier_block *nb, + unsigned long action, void *data) +{ + if (action != PM_POST_SUSPEND) + return NOTIFY_DONE; + + JPEG_LOG(0, "action:%ld", action); + gJpegqDev.is_suspending = 0; + return NOTIFY_OK; } static int jpeg_drv_hybrid_dec_suspend(void) @@ -1310,8 +1316,16 @@ static int jpeg_probe(struct platform_device *pdev) jpeg_drv_prepare_bw_request(node_index); if (atomic_read(&nodeCount) == 1) { - gJpegqDev.pm_notifier.notifier_call = jpeg_drv_hybrid_dec_suspend_notifier; - register_pm_notifier(&gJpegqDev.pm_notifier); + gJpegqDev.pm_suspend_prepare_notifier.notifier_call = + jpeg_drv_hybrid_dec_suspend_prepare_notifier; + /* PM_SUSPEND_PREPARE priority should be higher than vcp */ + gJpegqDev.pm_suspend_prepare_notifier.priority = 1; + register_pm_notifier(&gJpegqDev.pm_suspend_prepare_notifier); + gJpegqDev.pm_post_suspend_notifier.notifier_call = + jpeg_drv_hybrid_dec_post_suspend_notifier; + /* PM_POST_SUSPEND priority should be lower than vcp */ + gJpegqDev.pm_post_suspend_notifier.priority = -1; + register_pm_notifier(&gJpegqDev.pm_post_suspend_notifier); gJpegqDev.is_suspending = 0; gJpegqDev.is_shutdowning = 0; memset(_jpeg_hybrid_dec_int_status, 0, HW_CORE_NUMBER); diff --git a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/jpeg/jpeg_drv.h b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/jpeg/jpeg_drv.h index 8123a37a..5f67057f 100644 --- a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/jpeg/jpeg_drv.h +++ b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/jpeg/jpeg_drv.h @@ -62,7 +62,8 @@ struct JpegDeviceStruct { unsigned long jpeg_freqs[JPEG_LARB_COUNT][MAX_FREQ_STEP]; struct regulator *jpeg_reg[JPEG_LARB_COUNT]; struct clk *jpeg_dvfs[JPEG_LARB_COUNT]; - struct notifier_block pm_notifier; + struct notifier_block pm_suspend_prepare_notifier; + struct notifier_block pm_post_suspend_notifier; bool is_suspending; bool is_shutdowning; struct icc_path *jpeg_path_wdma[HW_CORE_NUMBER]; diff --git a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/performance/perf_ioctl/perf_ioctl_magt.c b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/performance/perf_ioctl/perf_ioctl_magt.c index 346957a9..5ae590fd 100644 --- a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/performance/perf_ioctl/perf_ioctl_magt.c +++ b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/performance/perf_ioctl/perf_ioctl_magt.c @@ -350,7 +350,7 @@ static long magt_ioctl(struct file *filp, } query_mask = (1 << GET_FPSGO_PERF_IDX); - render = kcalloc(MAX_RENDER_TID, sizeof(struct render_frame_info), GFP_KERNEL); + render = kvmalloc(MAX_RENDER_TID * sizeof(struct render_frame_info), GFP_KERNEL); if (!render) { ret = -ENOMEM; goto ret_ioctl; @@ -368,7 +368,7 @@ static long magt_ioctl(struct file *filp, perfctl_copy_to_user((void *)arg, &pid_support, sizeof(struct fpsgo_pid_support)); ret = 0; } - kfree(render); + kvfree(render); break; } case MAGT_GET_FPSGO_STATUS: @@ -391,7 +391,7 @@ static long magt_ioctl(struct file *filp, query_mask = (1 << GET_FPSGO_TARGET_FPS | 1 << GET_FPSGO_QUEUE_FPS | 1 << GET_FRS_TARGET_FPS_DIFF | 1 << GET_GED_GPU_TIME); - render = kcalloc(MAX_RENDER_TID, sizeof(struct render_frame_info), GFP_KERNEL); + render = kvmalloc(MAX_RENDER_TID * sizeof(struct render_frame_info), GFP_KERNEL); if (!render) { ret = -ENOMEM; goto ret_ioctl; @@ -411,7 +411,7 @@ static long magt_ioctl(struct file *filp, if (render_item == -1) { ret = -EINVAL; - kfree(render); + kvfree(render); break; } render_status.curFps = render[render_item].queue_fps; @@ -421,7 +421,7 @@ static long magt_ioctl(struct file *filp, perfctl_copy_to_user((void *)arg, &render_status, sizeof(struct fpsgo_render_status)); ret = 0; } - kfree(render); + kvfree(render); break; } case MAGT_GET_FPSGO_CRITICAL_THREAD_BG: @@ -441,7 +441,7 @@ static long magt_ioctl(struct file *filp, } query_mask = (1 << GET_FPSGO_MINITOP_LIST); - render = kcalloc(MAX_RENDER_TID, sizeof(struct render_frame_info), GFP_KERNEL); + render = kvmalloc(MAX_RENDER_TID * sizeof(struct render_frame_info), GFP_KERNEL); if (!render) { ret = -ENOMEM; goto ret_ioctl; @@ -461,7 +461,7 @@ static long magt_ioctl(struct file *filp, if (render_item == -1) { ret = -EINVAL; - kfree(render); + kvfree(render); break; } bg_info.bg_num = render[render_item].non_dep_num; @@ -474,7 +474,7 @@ static long magt_ioctl(struct file *filp, perfctl_copy_to_user((void *)arg, &bg_info, sizeof(struct fpsgo_bg_info)); ret = 0; } - kfree(render); + kvfree(render); break; } case MAGT_GET_FPSGO_CPU_FRAMETIME: @@ -494,7 +494,7 @@ static long magt_ioctl(struct file *filp, } query_mask = (1 << GET_FPSGO_RAW_CPU_TIME | 1 << GET_FPSGO_EMA_CPU_TIME); - render = kcalloc(MAX_RENDER_TID, sizeof(struct render_frame_info), GFP_KERNEL); + render = kvmalloc(MAX_RENDER_TID * sizeof(struct render_frame_info), GFP_KERNEL); if (!render) { ret = -ENOMEM; goto ret_ioctl; @@ -514,7 +514,7 @@ static long magt_ioctl(struct file *filp, if (render_item == -1) { ret = -EINVAL; - kfree(render); + kvfree(render); break; } cpu_time_info.raw_t_cpu = render[render_item].raw_t_cpu; @@ -523,7 +523,7 @@ static long magt_ioctl(struct file *filp, perfctl_copy_to_user((void *)arg, &cpu_time_info, sizeof(struct fpsgo_cpu_frametime)); ret = 0; } - kfree(render); + kvfree(render); break; } case MAGT_GET_FPSGO_THREAD_LOADING: @@ -543,7 +543,7 @@ static long magt_ioctl(struct file *filp, } query_mask = (1 << GET_FPSGO_AVG_FRAME_CAP | 1 << GET_FPSGO_DEP_LIST); - render = kcalloc(MAX_RENDER_TID, sizeof(struct render_frame_info), GFP_KERNEL); + render = kvmalloc(MAX_RENDER_TID * sizeof(struct render_frame_info), GFP_KERNEL); if (!render) { ret = -ENOMEM; goto ret_ioctl; @@ -563,7 +563,7 @@ static long magt_ioctl(struct file *filp, if (render_item == -1) { ret = -EINVAL; - kfree(render); + kvfree(render); break; } @@ -577,7 +577,7 @@ static long magt_ioctl(struct file *filp, perfctl_copy_to_user((void *)arg, &thread_loading, sizeof(struct fpsgo_thread_loading)); ret = 0; } - kfree(render); + kvfree(render); break; } case MAGT_GET_FPSGO_RENDER_PERFIDX: @@ -597,7 +597,7 @@ static long magt_ioctl(struct file *filp, } query_mask = (1 << GET_FPSGO_PERF_IDX); - render = kcalloc(MAX_RENDER_TID, sizeof(struct render_frame_info), GFP_KERNEL); + render = kvmalloc(MAX_RENDER_TID * sizeof(struct render_frame_info), GFP_KERNEL); if (!render) { ret = -ENOMEM; goto ret_ioctl; @@ -617,14 +617,14 @@ static long magt_ioctl(struct file *filp, if (render_item == -1) { ret = -EINVAL; - kfree(render); + kvfree(render); break; } render_perf.perf_idx = render[render_item].blc; perfctl_copy_to_user((void *)arg, &render_perf, sizeof(struct fpsgo_render_perf)); ret = 0; } - kfree(render); + kvfree(render); break; } case MAGT_NOTIFY_THREAD_STATUS: diff --git a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/sched/eas/group.c b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/sched/eas/group.c index ba02d5b0..2944c258 100755 --- a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/sched/eas/group.c +++ b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/sched/eas/group.c @@ -340,9 +340,17 @@ static void group_init_tg_pointers(void) struct cgroup_subsys_state *css = &root_task_group.css; struct cgroup_subsys_state *top_css = css; +#ifdef CONFIG_OPLUS_SCHED_GROUP_OPT + oplus_update_tg_map(top_css, true); +#endif + rcu_read_lock(); - css_for_each_child(css, top_css) + css_for_each_child(css, top_css) { group_update_tg_pointer(css); +#ifdef CONFIG_OPLUS_SCHED_GROUP_OPT + oplus_update_tg_map(css, true); +#endif + } rcu_read_unlock(); } @@ -389,7 +397,7 @@ static void group_android_rvh_cpu_cgroup_online(void *unused, struct cgroup_subs group_update_tg_pointer(css); #ifdef CONFIG_OPLUS_SCHED_GROUP_OPT - oplus_update_tg_map(css); + oplus_update_tg_map(css, false); #endif } diff --git a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/sched/eas/sched_main.c b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/sched/eas/sched_main.c index abba13b9..02557607 100755 --- a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/sched/eas/sched_main.c +++ b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/sched/eas/sched_main.c @@ -407,28 +407,29 @@ static void mtk_set_cpus_allowed_ptr(void *data, struct task_struct *p, struct rq_flags rf; struct cpumask *kernel_allowed_mask = &((struct mtk_task *) p->android_vendor_data1)->kernel_allowed_mask; struct rq *rq = task_rq_lock(p, &rf); - cpumask_t new_mask; + cpumask_t user_mask; // not set or invalid cpu mask if (cpumask_empty(kernel_allowed_mask)){ goto out; } + cpumask_copy(&user_mask, ctx->new_mask); + if (p->user_cpus_ptr && - !(ctx->flags & (SCA_USER | SCA_MIGRATE_ENABLE | SCA_MIGRATE_DISABLE)) && - cpumask_and(rq->scratch_mask, ctx->new_mask, p->user_cpus_ptr)) { + !(ctx->flags & (SCA_MIGRATE_ENABLE | SCA_MIGRATE_DISABLE)) && + !((ctx->flags & SCA_USER) && (current->tgid != p->tgid))) { *skip_user_ptr = true; cpumask_copy(rq->scratch_mask, kernel_allowed_mask); ctx->new_mask = rq->scratch_mask; - } - if (trace_sched_skip_user_enabled() && p->user_cpus_ptr && !cpumask_empty(kernel_allowed_mask)){ - cpumask_copy(&new_mask, ctx->new_mask); - trace_sched_skip_user(p, *skip_user_ptr, p->user_cpus_ptr, kernel_allowed_mask, &new_mask); + } + if (trace_sched_skip_user_enabled() && p->user_cpus_ptr && !cpumask_empty(kernel_allowed_mask)) { + trace_sched_skip_user(p, *skip_user_ptr, &user_mask, kernel_allowed_mask, ctx->new_mask); } out: - task_rq_unlock(rq, p, &rf); - return; + task_rq_unlock(rq, p, &rf); + return; } #if IS_ENABLED(CONFIG_MTK_IRQ_MONITOR_DEBUG) diff --git a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/typec/tcpc/tcpci_typec.c b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/typec/tcpc/tcpci_typec.c index 2c34fb36..b539e39a 100755 --- a/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/typec/tcpc/tcpci_typec.c +++ b/kernel/kernel_device_modules-6.6/drivers/misc/mediatek/typec/tcpc/tcpci_typec.c @@ -915,6 +915,7 @@ static inline bool typec_cc_change_source_entry(struct tcpc_device *tcpc) static inline bool typec_attached_snk_cc_change(struct tcpc_device *tcpc) { uint8_t cc_res = typec_get_cc_res(); + bool changed = false; #if IS_ENABLED(CONFIG_USB_POWER_DELIVERY) struct pd_port *pd_port = &tcpc->pd_port; #endif /* CONFIG_USB_POWER_DELIVERY */ @@ -922,20 +923,21 @@ static inline bool typec_attached_snk_cc_change(struct tcpc_device *tcpc) if (cc_res != tcpc->typec_remote_rp_level) { TYPEC_INFO("RpLvl Change\n"); tcpc->typec_remote_rp_level = cc_res; - + changed = true; + } #if CONFIG_USB_PD_REV30 - if (pd_port->pe_data.pd_connected && pd_check_rev30(pd_port) && - cc_res == TYPEC_CC_VOLT_SNK_3_0) - pd_put_sink_tx_event(tcpc, cc_res); + if (pd_port->pe_data.pd_connected && pd_check_rev30(pd_port) && + cc_res == TYPEC_CC_VOLT_SNK_3_0) + pd_put_sink_tx_event(tcpc, cc_res); #endif /* CONFIG_USB_PD_REV30 */ + if (changed) { #if IS_ENABLED(CONFIG_USB_POWER_DELIVERY) if (!pd_port->pe_data.pd_connected) #endif /* CONFIG_USB_POWER_DELIVERY */ tcpci_sink_vbus(tcpc, - TCP_VBUS_CTRL_TYPEC, TCPC_VBUS_SINK_5V, -1); + TCP_VBUS_CTRL_TYPEC, TCPC_VBUS_SINK_5V, -1); } - return true; } @@ -1051,11 +1053,6 @@ static inline void typec_attach_wait_entry(struct tcpc_device *tcpc) case typec_attached_dbgacc_snk: #endif /* CONFIG_TYPEC_CAP_DBGACC_SNK */ case typec_attached_custom_src: - if (cc_res == tcpc->typec_remote_rp_level) { - tcpc_reset_typec_debounce_timer(tcpc); - TYPEC_DBG("The Same RpLvl, Ignore cc_attach\n"); - return; - } TYPEC_INFO("RpLvl Alert\n"); #if CONFIG_USB_PD_REV30 if (pd_port->pe_data.pd_connected && pd_check_rev30(pd_port) && diff --git a/kernel/kernel_device_modules-6.6/drivers/phy/mediatek/phy-mtk-xsphy.c b/kernel/kernel_device_modules-6.6/drivers/phy/mediatek/phy-mtk-xsphy.c index 6d6cf1d2..7600d09e 100755 --- a/kernel/kernel_device_modules-6.6/drivers/phy/mediatek/phy-mtk-xsphy.c +++ b/kernel/kernel_device_modules-6.6/drivers/phy/mediatek/phy-mtk-xsphy.c @@ -81,6 +81,12 @@ #define P2A5_RG_HSTX_SRCAL_EN BIT(15) #define P2A5_RG_HSTX_SRCTRL GENMASK(14, 12) +//mtk_debug +#define P2A6_RG_USB20_SQD GENMASK(23, 22) +#define P2A5_RG_USB20_SQD_VAL(x) ((0x3 & (x)) << 22) +#define P2A5_RG_USB20_SQD_MASK (0x3) +#define P2A5_RG_USB20_SQD_OFET (22) + #define XSP_USBPHYACR6 ((SSUSB_SIFSLV_U2PHY_COM) + 0x018) #define P2A6_RG_U2_PHY_REV6 GENMASK(31, 30) #define P2A6_RG_U2_PHY_REV6_VAL(x) ((0x3 & (x)) << 30) @@ -296,6 +302,8 @@ #define PHY_REV6_STR "phy_rev6" #define DISCTH_STR "discth" #define RX_SQTH_STR "rx_sqth" +#define RX_SQD_STR "rx_sqd" + #define INTR_OFS_STR "intr_ofs" #define TERM_OFS_STR "term_ofs" #define SIB_STR "sib" @@ -415,6 +423,8 @@ struct xsphy_instance { int discth; int rx_sqth; int host_rx_sqth; + int rx_sqd; + int host_rx_sqd; int rev6; int hsrx_vref_sel; int fs_cr; @@ -1243,6 +1253,63 @@ static const struct proc_ops proc_rx_sqth_fops = { .proc_release = single_release, }; +static int proc_rx_sqd_show(struct seq_file *s, void *unused) +{ + struct xsphy_instance *inst = s->private; + void __iomem *pbase = inst->port_base; + u32 tmp; + char str[16]; + + tmp = readl(pbase + XSP_USBPHYACR5); + tmp >>= P2A5_RG_USB20_SQD_OFET; + tmp &= P2A5_RG_USB20_SQD_MASK; + + cover_val_to_str(tmp, 4, str); + + seq_printf(s, "\n%s = %s\n", RX_SQD_STR, str); + return 0; +} + +static int proc_rx_sqd_open(struct inode *inode, struct file *file) +{ + return single_open(file, proc_rx_sqd_show, pde_data(inode)); +} + +static ssize_t proc_rx_sqd_write(struct file *file, + const char __user *ubuf, size_t count, loff_t *ppos) +{ + struct seq_file *s = file->private_data; + struct xsphy_instance *inst = s->private; + void __iomem *pbase = inst->port_base; + char buf[20]; + u32 val; + + memset(buf, 0x00, sizeof(buf)); + if (count > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(&buf, ubuf, count)) + return -EFAULT; + + if (kstrtouint(buf, 2, &val)) + return -EINVAL; + + inst->rx_sqd = val; + inst->host_rx_sqd = val; + + mtk_phy_update_field(pbase + XSP_USBPHYACR5, P2A6_RG_USB20_SQD, val); + + return count; +} + +static const struct proc_ops proc_rx_sqd_fops = { + .proc_open = proc_rx_sqd_open, + .proc_write = proc_rx_sqd_write, + .proc_read = seq_read, + .proc_lseek = seq_lseek, + .proc_release = single_release, +}; + static int proc_intr_ofs_show(struct seq_file *s, void *unused) { struct xsphy_instance *inst = s->private; @@ -1447,6 +1514,14 @@ static int u2_phy_procfs_init(struct mtk_xsphy *xsphy, goto err1; } + file = proc_create_data(RX_SQD_STR, 0640, + phy_root, &proc_rx_sqd_fops, inst); + if (!file) { + dev_info(dev, "failed to creat proc file: %s\n", RX_SQD_STR); + ret = -ENOMEM; + goto err1; + } + file = proc_create_data(INTR_OFS_STR, 0640, phy_root, &proc_intr_ofs_fops, inst); if (!file) { @@ -2688,6 +2763,12 @@ static void phy_parse_property(struct mtk_xsphy *xsphy, if (device_property_read_u32(dev, "mediatek,host-rx-sqth", &inst->host_rx_sqth) || inst->host_rx_sqth < 0) inst->host_rx_sqth = -EINVAL; + if (device_property_read_u32(dev, "mediatek,rx-sqd", + &inst->rx_sqd) || inst->rx_sqd < 0) + inst->rx_sqd = -EINVAL; + if (device_property_read_u32(dev, "mediatek,host-rx-sqd", + &inst->host_rx_sqd) || inst->host_rx_sqd < 0) + inst->host_rx_sqd = -EINVAL; if (device_property_read_u32(dev, "mediatek,rev6", &inst->rev6) || inst->rev6 < 0) inst->rev6 = -EINVAL; @@ -2746,9 +2827,9 @@ static void phy_parse_property(struct mtk_xsphy *xsphy, dev_dbg(dev, "src_host:%d, vrt_host:%d, term_host:%d\n", inst->eye_src_host, inst->eye_vrt_host, inst->eye_term_host); - dev_dbg(dev, "discth:%d, rx_sqth:%d, host_rx_sqth:%d, rev6:%d, rev6_host:%d\n", + dev_dbg(dev, "discth:%d, rx_sqth:%d, host_rx_sqth:%d, rev6:%d, rev6_host:%d, rx_sqd:%d, host_rx_sqd:%d\n", inst->discth, inst->rx_sqth, inst->host_rx_sqth, inst->rev6, - inst->rev6_host); + inst->rev6_host, inst->rx_sqd, inst->host_rx_sqd); dev_dbg(dev, "u2-sw-efuse:%d hwpll-mode:%d, refclk-sel:%d, chp-en-disable:%d", inst->u2_sw_efuse, inst->hwpll_mode, inst->refclk_sel, inst->chp_en_disable); #ifdef OPLUS_FEATURE_CHG_BASIC @@ -2862,6 +2943,10 @@ static void u2_phy_props_set(struct mtk_xsphy *xsphy, mtk_phy_update_field(pbase + XSP_USBPHYACR6, P2A6_RG_U2_SQTH, inst->rx_sqth); + if (inst->rx_sqd != -EINVAL) + mtk_phy_update_field(pbase + XSP_USBPHYACR5, P2A6_RG_USB20_SQD, + inst->rx_sqd); + if (inst->rev6 != -EINVAL) mtk_phy_update_field(pbase + XSP_USBPHYACR6, P2A6_RG_U2_PHY_REV6, inst->rev6); @@ -2917,6 +3002,10 @@ static void u2_phy_host_props_set(struct mtk_xsphy *xsphy, mtk_phy_update_field(pbase + XSP_USBPHYACR6, P2A6_RG_U2_SQTH, inst->host_rx_sqth); + if (inst->host_rx_sqd != -EINVAL) + mtk_phy_update_field(pbase + XSP_USBPHYACR5, P2A6_RG_USB20_SQD, + inst->host_rx_sqd); + if (inst->eye_src_host != -EINVAL) mtk_phy_update_field(pbase + XSP_USBPHYACR5, P2A5_RG_HSTX_SRCTRL, inst->eye_src_host); @@ -3015,6 +3104,7 @@ static int mtk_phy_init(struct phy *phy) dev_info(xsphy->dev, "term_cal:%d term_ofs:%d host_term_ofs:%d\n", inst->efuse_term_cal, inst->term_ofs, inst->host_term_ofs); dev_info(xsphy->dev, "rx_sqth:%d host_rx_sqth:%d\n", inst->rx_sqth, inst->host_rx_sqth); + dev_info(xsphy->dev, "rx_sqd:%d host_rx_sqd:%d\n", inst->rx_sqd, inst->host_rx_sqd); dev_info(xsphy->dev, "pll_fbksel:%d, pll_posdiv: %d\n", inst->pll_fbksel, inst->pll_posdiv); break; diff --git a/kernel/kernel_device_modules-6.6/drivers/power/supply/mt6358-gauge.c b/kernel/kernel_device_modules-6.6/drivers/power/supply/mt6358-gauge.c index 5aeae73a..82907d2c 100755 --- a/kernel/kernel_device_modules-6.6/drivers/power/supply/mt6358-gauge.c +++ b/kernel/kernel_device_modules-6.6/drivers/power/supply/mt6358-gauge.c @@ -821,7 +821,11 @@ static int get_nafg_vbat(struct mtk_gauge *gauge) AUXADC_ADC_OUT_NAG_SHIFT)) >> AUXADC_ADC_OUT_NAG_SHIFT; if ((nag_vbat_reg & 0x8000) != 0) break; +#ifdef OPLUS_FEATURE_CHG_BASIC + msleep(2); +#else msleep(30); +#endif i++; } while (i <= 5); diff --git a/kernel/kernel_device_modules-6.6/drivers/ufs/ufs-mediatek-dbg.c b/kernel/kernel_device_modules-6.6/drivers/ufs/ufs-mediatek-dbg.c index 6e5310a2..8e7313ee 100755 --- a/kernel/kernel_device_modules-6.6/drivers/ufs/ufs-mediatek-dbg.c +++ b/kernel/kernel_device_modules-6.6/drivers/ufs/ufs-mediatek-dbg.c @@ -36,7 +36,7 @@ #endif #define MAX_CMD_HIST_ENTRY_CNT (500) -#define UFS_AEE_BUFFER_SIZE (100 * 1024) +#define UFS_AEE_BUFFER_SIZE (128 * 1024) /* * Currently only global variables are used. @@ -420,6 +420,30 @@ static void ufs_mtk_dbg_print_info(char **buff, unsigned long *size, UFS_EVT_ABORT, "task_abort"); } +static void oplus_block_dbg_print_info(char **buff, unsigned long *size, + struct seq_file *m) +{ + int i; + struct ufs_hba *hba = ufshba; + struct Scsi_Host *shost = hba->host; + struct blk_mq_tag_set *tag_set = &shost->tag_set; + if (tag_set->shared_tags) { + struct blk_mq_tags *tags = tag_set->shared_tags; + for (i = 0; i < tags->nr_tags; i++) { + struct request *rq = tags->static_rqs[i]; + + if (!rq) + continue; + /* Block Request Information */ + SPREAD_PRINTF(buff, size, m, + "Request Infomation:t=%d,it=%d,dl=%d,s=%lld,atn=%lld,stn=%lld,istn=%lld\n", rq->tag, rq->internal_tag, rq->__data_len, rq->__sector, rq->alloc_time_ns, rq->start_time_ns, rq->io_start_time_ns); + } + } else { + SPREAD_PRINTF(buff, size, m, + "Request Information Obtain Fail!\n"); + } +} + static int cmd_hist_get_entry(void) { unsigned long flags; @@ -2148,6 +2172,7 @@ void ufs_mtk_dbg_get_aee_buffer(unsigned long *vaddr, unsigned long *size) ufs_mtk_dbg_print_info(&buff, &free_size, NULL); ufs_mtk_dbg_print_cmd_hist(&buff, &free_size, MAX_CMD_HIST_ENTRY_CNT, NULL, false); + oplus_block_dbg_print_info(&buff, &free_size, NULL); /* retrun start location */ *vaddr = (unsigned long)ufs_aee_buffer; @@ -2212,6 +2237,8 @@ static int ufs_debug_proc_show(struct seq_file *m, void *v) ufs_mtk_dbg_print_info(NULL, NULL, m); ufs_mtk_dbg_print_cmd_hist(NULL, NULL, MAX_CMD_HIST_ENTRY_CNT, m, false); + + oplus_block_dbg_print_info(NULL, NULL, m); return 0; } diff --git a/kernel/oplus/bazel/oplus_modules_list.bzl b/kernel/oplus/bazel/oplus_modules_list.bzl index dac05e11..194eed88 100755 --- a/kernel/oplus/bazel/oplus_modules_list.bzl +++ b/kernel/oplus/bazel/oplus_modules_list.bzl @@ -72,9 +72,7 @@ COMMON_OPLUS_MODULES_LIST = [ "//vendor/oplus/kernel/camera:oplus_camera_jd5516w", "//vendor/oplus/kernel/camera:oplus_camera_jd5516w_24618", "//vendor/oplus/kernel/camera:oplus_camera_jd5516we4", - "//vendor/oplus/kernel/camera:oplus_camera_dw9786", "//vendor/oplus/kernel/camera:oplus_camera_ak7316t33", - "//vendor/oplus/kernel/camera:oplus_camera_ois_dw9786", "//vendor/oplus/kernel/camera:oplus_camera_ois_power", "//vendor/oplus/kernel/camera:oplus_camera_aw36515_brza", "//vendor/oplus/kernel/cpu/game_opt:oplus_bsp_game_opt", @@ -114,6 +112,7 @@ COMMON_OPLUS_MODULES_LIST = [ "//vendor/oplus/kernel/mm:oplus_bsp_zram_opt", #"//vendor/oplus/kernel/mm:oplus_bsp_look_around", "//vendor/oplus/kernel/mm:oplus_bsp_kshrink_slabd", + "//vendor/oplus/kernel/mm:oplus_bsp_zstdn", "//vendor/oplus/kernel/synchronize:oplus_lock_torture", "//vendor/oplus/kernel/wifi:oplus_connectivity_routerboost", "//vendor/oplus/kernel/wifi:oplus_connectivity_sla", diff --git a/kernel/oplus/tools/config_info.xlsx b/kernel/oplus/tools/config_info.xlsx deleted file mode 100755 index 3c0e309a..00000000 Binary files a/kernel/oplus/tools/config_info.xlsx and /dev/null differ diff --git a/kernel/oplus/tools/ko_owner_list.xlsx b/kernel/oplus/tools/ko_owner_list.xlsx deleted file mode 100755 index 3849b28d..00000000 Binary files a/kernel/oplus/tools/ko_owner_list.xlsx and /dev/null differ diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/Kbuild.main b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/Kbuild.main index 09b30b1e..74d4cb4e 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/Kbuild.main +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/Kbuild.main @@ -440,6 +440,7 @@ CONFIG_MTK_WIFI_SUPPORT_TXPWR_ENV=y CONFIG_MTK_WIFI_SUPPORT_6G_PWR_MODE=y CONFIG_WIFI_RAM_HW_DETECT_REPORT_SUPPORT=y CONFIG_WIFI_PLAT_SHUTDOWN_SUPPORT=y + ifneq ($(filter 6983 6895 6879 6886, $(WLAN_CHIP_ID)),) CONFIG_RX_NAPI_THREADED=n else @@ -473,6 +474,8 @@ else ifneq ($(filter 6897 6878 6899, $(WLAN_CHIP_ID)),) ccflags-y += -DCFG_WLAN_LK_FWDL_SUPPORT=1 ccflags-y += -DCFG_WLAN_ATF_SUPPORT=0 + CONFIG_MTK_WIFI_DRVOWN_EINT_CHECK=y + ccflags-y += -DCFG_MTK_WIFI_FORCE_HOST_CSR_IRQ_EN endif endif @@ -1280,6 +1283,12 @@ else ccflags-y += -DCFG_SUPPORT_DISABLE_CMD_DDONE_INTR=0 endif +ifeq ($(CONFIG_MTK_WIFI_DRVOWN_EINT_CHECK), y) + ccflags-y += -DCFG_CHECK_DRVOWN_EINT=1 +else + ccflags-y += -DCFG_CHECK_DRVOWN_EINT=0 +endif + ifeq ($(CONFIG_MTK_WIFI_CONNAC2X), y) ccflags-y += -DCFG_SUPPORT_CONNAC2X=1 else diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/common/cmm_asic_connac2x.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/common/cmm_asic_connac2x.c index 29e28f47..cb9a61f5 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/common/cmm_asic_connac2x.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/common/cmm_asic_connac2x.c @@ -1207,22 +1207,78 @@ void asicConnac2xLowPowerOwnClear( u_int8_t *pfgResult) { struct mt66xx_chip_info *prChipInfo; + uint32_t u4RegValue = 0; +#if (CFG_CHECK_DRVOWN_EINT == 1) + uint32_t u4Retry = 0; +#endif prChipInfo = prAdapter->chip_info; - if (prChipInfo->is_support_asic_lp) { - u_int32_t u4RegValue = 0; - - HAL_MCR_WR(prAdapter, - CONNAC2X_BN0_LPCTL_ADDR, - PCIE_LPCR_HOST_CLR_OWN); - HAL_MCR_RD(prAdapter, - CONNAC2X_BN0_LPCTL_ADDR, - &u4RegValue); - *pfgResult = (u4RegValue & - PCIE_LPCR_AP_HOST_OWNER_STATE_SYNC) == 0; - } else + if (!prChipInfo->is_support_asic_lp) { *pfgResult = TRUE; + return; + } + +#if IS_ENABLED(CFG_MTK_WIFI_FORCE_HOST_CSR_IRQ_EN) + if (prChipInfo->forceEnableHostCsrIrq) + prChipInfo->forceEnableHostCsrIrq(prAdapter); +#endif + +#if (CFG_CHECK_DRVOWN_EINT == 1) + while (1) { + /* EINT CR select */ + /* WR 0x7c06_0B00[0] = 0x1 */ + HAL_MCR_RD(prAdapter, 0x7c060B00, &u4RegValue); + u4RegValue |= 0x1; + HAL_MCR_WR(prAdapter, 0x7c060B00, u4RegValue); + + /* WR 0x7c06_0B04[4:0] = 0x6 */ + HAL_MCR_RD(prAdapter, 0x7c060B04, &u4RegValue); + u4RegValue &= ~BITS(0, 4); + u4RegValue |= 0x6; + HAL_MCR_WR(prAdapter, 0x7c060B04, u4RegValue); + + /* WR 0x7c06_0B14[2:0] = 0x1 */ + HAL_MCR_RD(prAdapter, 0x7c060B14, &u4RegValue); + u4RegValue &= ~BITS(0, 2); + u4RegValue |= 0x1; + HAL_MCR_WR(prAdapter, 0x7c060B14, u4RegValue); + + /* Check MCU wake, RD 0x7c06_0A10[4] */ + HAL_MCR_RD(prAdapter, 0x7c060A10, &u4RegValue); + + /* Clear FW own */ + HAL_MCR_WR(prAdapter, + CONNAC2X_BN0_LPCTL_ADDR, PCIE_LPCR_HOST_CLR_OWN); + + if (!(u4RegValue & BIT(4))) { + kalUdelay(LP_OWN_EINT_CHECK_DELAY); + } else { + DBGLOG(HAL, TRACE, "MCU not in sleep (0x%08x)\n", + u4RegValue); + break; + } + + /* Check EINT, RD 0x7c06_0B10 (WF_AON_DBG_FLAG) */ + HAL_MCR_RD(prAdapter, 0x7c060B10, &u4RegValue); + if (((u4RegValue & BIT(0)) != 0) + && ((u4RegValue & BIT(10)) != 0)) { + DBGLOG(HAL, ERROR, + "EINT trigger failed [0x%08x]\n", u4RegValue); + if (u4Retry == LP_OWN_EINT_CHECK_RETRY_CNT) + break; + u4Retry++; + } else + break; + } +#else /* !CFG_CHECK_DRVOWN_EINT */ + HAL_MCR_WR(prAdapter, + CONNAC2X_BN0_LPCTL_ADDR, PCIE_LPCR_HOST_CLR_OWN); +#endif /* CFG_CHECK_DRVOWN_EINT */ + HAL_MCR_RD(prAdapter, + CONNAC2X_BN0_LPCTL_ADDR, &u4RegValue); + *pfgResult = (u4RegValue & + PCIE_LPCR_AP_HOST_OWNER_STATE_SYNC) == 0; } void asicConnac2xProcessSoftwareInterrupt( diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/common/dbg_connac2x.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/common/dbg_connac2x.c index 1d38def1..b0871e79 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/common/dbg_connac2x.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/common/dbg_connac2x.c @@ -3401,6 +3401,11 @@ void connac2x_show_wfdma_info(struct ADAPTER *prAdapter) struct SW_WFDMA_INFO *prSwWfdmaInfo; uint32_t u4DmaNum = 1; + if (!prAdapter) { + DBGLOG(HAL, ERROR, "prAdapter NULL\n"); + return; + } + prChipInfo = prAdapter->chip_info; prBusInfo = prChipInfo->bus_info; prSwWfdmaInfo = &prBusInfo->rSwWfdmaInfo; @@ -3444,6 +3449,11 @@ void connac2x_show_dmashdl_info(struct ADAPTER *prAdapter) DBGLOG(HAL, INFO, "DMASHDL info:\n"); + if (!prAdapter) { + DBGLOG(HAL, ERROR, "prAdapter NULL\n"); + return; + } + prBusInfo = prAdapter->chip_info->bus_info; prCfg = prBusInfo->prDmashdlCfg; @@ -3898,6 +3908,11 @@ void connac2x_show_pse_info(struct ADAPTER *prAdapter) char *str; uint32_t pse_peek[10] = {0}; + if (!prAdapter) { + DBGLOG(HAL, ERROR, "prAdapter NULL\n"); + return; + } + prBusInfo = prAdapter->chip_info->bus_info; pse_group = prBusInfo->prPseGroup; prCr = prBusInfo->prPseTopCr; diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/soc7_0/soc7_0.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/soc7_0/soc7_0.c index b2b1aef7..80e013c3 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/soc7_0/soc7_0.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/chips/soc7_0/soc7_0.c @@ -119,6 +119,14 @@ static u_int8_t soc7_0_get_sw_interrupt_status(struct ADAPTER *prAdapter, static void soc7_0_DumpWfsyscpupcr(struct ADAPTER *prAdapter); +#if (CFG_CHECK_DRVOWN_EINT == 1) +static void soc7_0_CheckDrvownEint(struct ADAPTER *prAdapter); +#endif + +#if IS_ENABLED(CFG_MTK_WIFI_FORCE_HOST_CSR_IRQ_EN) +static void soc7_0ForceEnableHostCsrIrq(struct ADAPTER *prAdapter); +#endif + static uint32_t soc7_0_SetupRomEmi(struct ADAPTER *prAdapter); static void soc7_0_SetupFwDateInfo(struct ADAPTER *prAdapter, enum ENUM_IMG_DL_IDX_T eDlIdx, @@ -732,6 +740,9 @@ struct mt66xx_chip_info mt66xx_chip_info_soc7_0 = { .fw_log_info = { .ops = &soc7_0_fw_log_ops, }, +#if IS_ENABLED(CFG_MTK_WIFI_FORCE_HOST_CSR_IRQ_EN) + .forceEnableHostCsrIrq = soc7_0ForceEnableHostCsrIrq, +#endif }; struct mt66xx_hif_driver_data mt66xx_driver_data_soc7_0 = { @@ -1646,6 +1657,27 @@ static int wf_pwr_on_consys_mcu(struct ADAPTER *prAdapter) value |= 0x00000100; wf_ioremap_write(DEBUG_CTRL_AO_WFMCU_PWA_CTRL3, value); +#if (CFG_CHECK_DRVOWN_EINT == 1) + /* Set conn2wf remapping window + * Address: 0x830C_0120 + * Data: 32'h81050000 + * Action: write + */ + kalDevRegWrite(NULL, WF_MCU_BUS_CR_AP2WF_REMAP_1_ADDR, + 0x81050000); + + /* Set cirq IRQ_DBGSEL for dump eint status + * Address: 0x1850_00F4[7:0] + * Data: 8'h80 + * Action: write + */ + wf_ioremap_read(0x185000f4, &value); + value &= 0xffffff00; + value |= 0x00000080; + wf_ioremap_write(0x185000f4, value); + wf_ioremap_read(0x185000f4, &value); +#endif + /* Enable wfsys bus timeout (debug ctrl ao) * Address: 0x1850_0000[4] 0x1850_0000[3] 0x1850_0000[2] * Data: 1'b1 1'b1 1'b1 @@ -2115,6 +2147,9 @@ static uint32_t soc7_0_McuInit(struct ADAPTER *prAdapter) "wf_pwr_on_consys_mcu failed, ret=%d\n", ret); soc7_0_DumpBusHangCr(prAdapter); + glSetRstReasonString( + "wlan polling mcu idle fail"); + glResetWholeChipResetTrigger(g_reason); goto exit; } @@ -2293,6 +2328,88 @@ static void soc7_0_DumpWfsyscpupcr(struct ADAPTER *prAdapter) log_buf_lp[4]); } +#if (CFG_CHECK_DRVOWN_EINT == 1) +static void soc7_0_CheckDrvownEint(struct ADAPTER *prAdapter) +{ + u_int32_t u4RegValue = 0; + + /* WR 0x1806_0B00[0] = 0x1 */ + HAL_MCR_RD(prAdapter, 0x7c060B00, &u4RegValue); + u4RegValue |= 0x1; + HAL_MCR_WR(prAdapter, 0x7c060B00, u4RegValue); + + /* WR 0x1806_0B04[4:0] = 0x6 */ + HAL_MCR_RD(prAdapter, 0x7c060B04, &u4RegValue); + u4RegValue &= ~BITS(0, 4); + u4RegValue |= 0x6; + HAL_MCR_WR(prAdapter, 0x7c060B04, u4RegValue); + + /* WR 0x1806_0B14[2:0] = 0x1 */ + HAL_MCR_RD(prAdapter, 0x7c060B14, &u4RegValue); + u4RegValue &= ~BITS(0, 2); + u4RegValue |= 0x1; + HAL_MCR_WR(prAdapter, 0x7c060B14, u4RegValue); + + /* RD 0x1806_0B10 (WF_AON_DBG_FLAG) */ + HAL_MCR_RD(prAdapter, 0x7c060B10, &u4RegValue); +} +#endif + +#if IS_ENABLED(CFG_MTK_WIFI_FORCE_HOST_CSR_IRQ_EN) +static void soc7_0ForceEnableHostCsrIrq(struct ADAPTER *prAdapter) +{ + uint32_t u4RegValue = 0, u4ConnsysVersion = kalGetConnsysVersion(); + uint8_t ucPollingCnt = 0; + + /* wake up conn_infra */ + HAL_MCR_RD(prAdapter, 0x7c0601a4, &u4RegValue); + u4RegValue |= BIT(0); + HAL_MCR_WR(prAdapter, 0x7c0601a4, u4RegValue); + kalUdelay(200); + + /* check conn_infra off ID */ + while (1) { + kalMdelay(1); + HAL_MCR_RD(prAdapter, 0x7c011000, &u4RegValue); + if (u4RegValue == u4ConnsysVersion) + break; + if (ucPollingCnt >= 10) { + DBGLOG(HAL, ERROR, + "Polling conn_infra ID failed. (0x%08x)\n", + u4RegValue); + return; + } + ucPollingCnt++; + } + + /* check conn_infra cmdbt restore done */ + ucPollingCnt = 0; + while (1) { + kalUdelay(500); + HAL_MCR_RD(prAdapter, 0x7c001210, &u4RegValue); + if ((u4RegValue & BIT(16)) == BIT(16)) + break; + if (ucPollingCnt >= 10) { + DBGLOG(HAL, ERROR, + "conn_infra cmdbt restore failed.(0x%08x)\n", + u4RegValue); + return; + } + ucPollingCnt++; + } + + /* force enable HOST_CSR_IRQ_EN */ + HAL_MCR_RD(prAdapter, 0x7c001600, &u4RegValue); + HAL_MCR_WR(prAdapter, 0x7c001600, 0x3FF); + HAL_MCR_RD(prAdapter, 0x7c001600, &u4RegValue); + + /* let conn_infra sleep */ + HAL_MCR_RD(prAdapter, 0x7c0601a4, &u4RegValue); + u4RegValue &= ~0x1; + HAL_MCR_WR(prAdapter, 0x7c0601a4, u4RegValue); +} +#endif + static void soc7_0_DumpPcLrLog(struct ADAPTER *prAdapter) { #define HANG_PC_LOG_NUM 32 @@ -2558,6 +2675,10 @@ static void soc7_0_DumpOtherCr(struct ADAPTER *prAdapter) connac2x_DbgCrRead(prAdapter, 0x18400120, &u4Val); DBGLOG(INIT, INFO, "0x18400120=[0x%08x]\n", u4Val); +#if (CFG_CHECK_DRVOWN_EINT == 1) + soc7_0_CheckDrvownEint(prAdapter); +#endif + set_wf_monflg_on_mailbox_wf(); /* pooling host_mailbox_wf status */ diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/common/wlan_lib.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/common/wlan_lib.c index e42981b4..537ace9f 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/common/wlan_lib.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/common/wlan_lib.c @@ -8209,8 +8209,10 @@ void wlanInitFeatureOptionImpl(struct ADAPTER *prAdapter, uint8_t *pucKey) #if CFG_SUPPORT_RX_NAPI /* unit: s */ - INIT_UINT(prWifiVar->u4NapiScheduleTimeout, "NapiScheduleTimeout", 60, - FEATURE_TO_CUSTOMER); + INIT_UINT(prWifiVar->u4NapiScheduleTimeout, "NapiScheduleTimeout", + 60, FEATURE_DEBUG_ONLY); + INIT_UINT(prWifiVar->fgNapiScheduleAeeEn, "NapiScheduleAeeEn", + FEATURE_DISABLED, FEATURE_DEBUG_ONLY); #endif #if CFG_NAPI_DELAY diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/oplus_rlm_txpwr_init_lmt.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/oplus_rlm_txpwr_init_lmt.h index bb38abf7..1f540ab4 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/oplus_rlm_txpwr_init_lmt.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/oplus_rlm_txpwr_init_lmt.h @@ -41193,43 +41193,67 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION g_rRlmPowerLimitConfiguration_24069[] = { /*Default*/ { {'G', '6'} - , 1, {60, 60, 60, 60, 60, 60, 60, 60, 60} + , 1, {34, 60, 60, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} - , 3, {60, 60, 60, 60, 60, 60, 60, 60, 60} + , 2, {34, 60, 60, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} - , 7, {60, 60, 60, 32, 32, 60, 60, 60, 60} + , 3, {34, 60, 60, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} - , 8, {60, 60, 60, 28, 28, 60, 60, 60, 60} + , 4, {34, 60, 60, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} - , 9, {60, 60, 60, 26, 26, 60, 60, 60, 60} + , 5, {34, 60, 60, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} - , 10, {60, 60, 60, 26, 26, 60, 60, 60, 60} + , 6, {34, 60, 60, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} - , 11, {60, 32, 32, 20, 20, 60, 60, 60, 60} + , 7, {34, 60, 60, 32, 32, 60, 60, 60, 60} }, { {'G', '6'} - , 12, {34, 26, 26, 60, 60, 60, 60, 60, 60} + , 8, {34, 60, 60, 28, 28, 60, 60, 60, 60} + }, + { {'G', '6'} + , 9, {34, 60, 60, 26, 26, 60, 60, 60, 60} + }, + { {'G', '6'} + , 10, {34, 60, 60, 26, 26, 60, 60, 60, 60} + }, + { {'G', '6'} + , 11, {34, 32, 32, 20, 20, 60, 60, 60, 60} + }, + { {'G', '6'} + , 12, {33, 26, 26, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} , 13, {32, 20, 20, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} - , 52, {60, 32, 32, 60, 60, 60, 60, 60, 60} + , 36, {60, 38, 38, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} - , 56, {60, 32, 32, 60, 60, 60, 60, 60, 60} + , 40, {60, 38, 38, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} - , 60, {60, 32, 32, 60, 60, 60, 60, 60, 60} + , 44, {60, 38, 38, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} - , 64, {60, 32, 32, 60, 60, 60, 60, 60, 60} + , 48, {60, 38, 38, 60, 60, 60, 60, 60, 60} + }, + { {'G', '6'} + , 52, {60, 31, 31, 60, 60, 60, 60, 60, 60} + }, + { {'G', '6'} + , 56, {60, 31, 31, 60, 60, 60, 60, 60, 60} + }, + { {'G', '6'} + , 60, {60, 31, 31, 60, 60, 60, 60, 60, 60} + }, + { {'G', '6'} + , 64, {60, 31, 31, 60, 60, 60, 60, 60, 60} }, { {'G', '6'} , 151, {60, 60, 60, 32, 32, 60, 60, 60, 60} @@ -41335,12 +41359,52 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 63, 63, 63, /* RU996 L,H,U*/ 63, 63, 63} /* RU1992 L,H,U ax160M*/ }, + { {'G', '6'} + , 36, + {63, 63, 63, /* RU26 L,H,U */ + 63, 63, 63, /* RU52 L,H,U*/ + 63, 63, 63, /* RU106 L,H,U*/ + 38, 38, 38, /* RU242 L,H,U*/ + 63, 63, 63, /* RU484 L,H,U*/ + 63, 63, 63, /* RU996 L,H,U*/ + 63, 63, 63} /* RU1992 L,H,U ax160M*/ + }, + { {'G', '6'} + , 40, + {63, 63, 63, /* RU26 L,H,U */ + 63, 63, 63, /* RU52 L,H,U*/ + 63, 63, 63, /* RU106 L,H,U*/ + 38, 38, 38, /* RU242 L,H,U*/ + 63, 63, 63, /* RU484 L,H,U*/ + 63, 63, 63, /* RU996 L,H,U*/ + 63, 63, 63} /* RU1992 L,H,U ax160M*/ + }, + { {'G', '6'} + , 44, + {63, 63, 63, /* RU26 L,H,U */ + 63, 63, 63, /* RU52 L,H,U*/ + 63, 63, 63, /* RU106 L,H,U*/ + 38, 38, 38, /* RU242 L,H,U*/ + 63, 63, 63, /* RU484 L,H,U*/ + 63, 63, 63, /* RU996 L,H,U*/ + 63, 63, 63} /* RU1992 L,H,U ax160M*/ + }, + { {'G', '6'} + , 48, + {63, 63, 63, /* RU26 L,H,U */ + 63, 63, 63, /* RU52 L,H,U*/ + 63, 63, 63, /* RU106 L,H,U*/ + 38, 38, 38, /* RU242 L,H,U*/ + 63, 63, 63, /* RU484 L,H,U*/ + 63, 63, 63, /* RU996 L,H,U*/ + 63, 63, 63} /* RU1992 L,H,U ax160M*/ + }, { {'G', '6'} , 52, {64, 64, 64, /* RU26 L,H,U */ 64, 64, 64, /* RU52 L,H,U*/ 64, 64, 64, /* RU106 L,H,U*/ - 32, 32, 32, /* RU242 L,H,U*/ + 31, 31, 31, /* RU242 L,H,U*/ 64, 64, 64, /* RU484 L,H,U*/ 64, 64, 64, /* RU996 L,H,U*/ 60, 60, 60} /* RU1992 L,H,U ax160M*/ @@ -41350,7 +41414,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {64, 64, 64, /* RU26 L,H,U */ 64, 64, 64, /* RU52 L,H,U*/ 64, 64, 64, /* RU106 L,H,U*/ - 32, 32, 32, /* RU242 L,H,U*/ + 31, 31, 31, /* RU242 L,H,U*/ 64, 64, 64, /* RU484 L,H,U*/ 64, 64, 64, /* RU996 L,H,U*/ 60, 60, 60} /* RU1992 L,H,U ax160M*/ @@ -41360,7 +41424,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {64, 64, 64, /* RU26 L,H,U */ 64, 64, 64, /* RU52 L,H,U*/ 64, 64, 64, /* RU106 L,H,U*/ - 32, 32, 32, /* RU242 L,H,U*/ + 31, 31, 31, /* RU242 L,H,U*/ 64, 64, 64, /* RU484 L,H,U*/ 64, 64, 64, /* RU996 L,H,U*/ 60, 60, 60} /* RU1992 L,H,U ax160M*/ @@ -41370,11 +41434,41 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {64, 64, 64, /* RU26 L,H,U */ 64, 64, 64, /* RU52 L,H,U*/ 64, 64, 64, /* RU106 L,H,U*/ - 32, 32, 32, /* RU242 L,H,U*/ + 31, 31, 31, /* RU242 L,H,U*/ 64, 64, 64, /* RU484 L,H,U*/ 64, 64, 64, /* RU996 L,H,U*/ 60, 60, 60} /* RU1992 L,H,U ax160M*/ }, + { {'G', '6'} + , 54, + {64, 64, 64, /* RU26 L,H,U */ + 64, 64, 64, /* RU52 L,H,U*/ + 64, 64, 64, /* RU106 L,H,U*/ + 64, 64, 64, /* RU242 L,H,U*/ + 37, 37, 37, /* RU484 L,H,U*/ + 64, 64, 64, /* RU996 L,H,U*/ + 60, 60, 60} /* RU1992 L,H,U ax160M*/ + }, + { {'G', '6'} + , 62, + {64, 64, 64, /* RU26 L,H,U */ + 64, 64, 64, /* RU52 L,H,U*/ + 64, 64, 64, /* RU106 L,H,U*/ + 64, 64, 64, /* RU242 L,H,U*/ + 37, 37, 37, /* RU484 L,H,U*/ + 64, 64, 64, /* RU996 L,H,U*/ + 60, 60, 60} /* RU1992 L,H,U ax160M*/ + }, + { {'G', '6'} + , 58, + {64, 64, 64, /* RU26 L,H,U */ + 64, 64, 64, /* RU52 L,H,U*/ + 64, 64, 64, /* RU106 L,H,U*/ + 64, 64, 64, /* RU242 L,H,U*/ + 64, 64, 64, /* RU484 L,H,U*/ + 37, 37, 37, /* RU996 L,H,U*/ + 60, 60, 60} /* RU1992 L,H,U ax160M*/ + }, { {'G', '6'} , 151, {64, 64, 64, /* RU26 L,H,U */ @@ -42664,7 +42758,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ + 32, 32, 32, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42675,7 +42769,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ + 33, 33, 33, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42686,8 +42780,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ - 32, 32, 32, /* RU484 L,H,U ax40M*/ + 33, 33, 33, /* RU242 L,H,U ax20M*/ + 31, 31, 31, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -42697,8 +42791,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ - 32, 32, 32, /* RU484 L,H,U ax40M*/ + 33, 33, 33, /* RU242 L,H,U ax20M*/ + 31, 31, 31, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -42708,8 +42802,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ - 32, 32, 32, /* RU484 L,H,U ax40M*/ + 33, 33, 33, /* RU242 L,H,U ax20M*/ + 31, 31, 31, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -42719,8 +42813,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ - 32, 32, 32, /* RU484 L,H,U ax40M*/ + 33, 33, 33, /* RU242 L,H,U ax20M*/ + 31, 31, 31, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -42730,8 +42824,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ - 32, 32, 32, /* RU484 L,H,U ax40M*/ + 33, 33, 33, /* RU242 L,H,U ax20M*/ + 30, 30, 30, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -42741,8 +42835,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ - 32, 32, 32, /* RU484 L,H,U ax40M*/ + 33, 33, 33, /* RU242 L,H,U ax20M*/ + 28, 28, 28, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -42752,8 +42846,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ - 32, 32, 32, /* RU484 L,H,U ax40M*/ + 33, 33, 33, /* RU242 L,H,U ax20M*/ + 27, 27, 27, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -42763,8 +42857,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ - 32, 32, 32, /* RU484 L,H,U ax40M*/ + 33, 33, 33, /* RU242 L,H,U ax20M*/ + 26, 26, 26, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -42774,8 +42868,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ - 32, 32, 32, /* RU484 L,H,U ax40M*/ + 30, 30, 30, /* RU242 L,H,U ax20M*/ + 24, 24, 24, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -42785,7 +42879,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42796,7 +42890,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {60, 60, 60, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 26, 26, 26, /* RU106 L,H,U*/ - 34, 34, 34, /* RU242 L,H,U ax20M*/ + 26, 26, 26, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42804,10 +42898,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 36, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {12, 12, 12, /* RU26 L,H,U */ + 18, 18, 18, /* RU52 L,H,U*/ + 24, 24, 24, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42815,10 +42909,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 40, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {12, 12, 12, /* RU26 L,H,U */ + 18, 18, 18, /* RU52 L,H,U*/ + 24, 24, 24, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42826,10 +42920,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 44, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {12, 12, 12, /* RU26 L,H,U */ + 18, 18, 18, /* RU52 L,H,U*/ + 24, 24, 24, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42837,10 +42931,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 48, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {12, 12, 12, /* RU26 L,H,U */ + 18, 18, 18, /* RU52 L,H,U*/ + 24, 24, 24, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42848,10 +42942,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 52, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42859,10 +42953,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 56, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42870,10 +42964,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 60, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42881,10 +42975,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 64, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42892,10 +42986,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 100, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42903,10 +42997,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 104, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42914,10 +43008,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 108, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42925,10 +43019,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 112, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42936,10 +43030,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 116, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42947,10 +43041,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 120, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42958,10 +43052,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 124, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42969,10 +43063,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 128, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42980,10 +43074,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 132, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -42991,10 +43085,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 136, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -43002,10 +43096,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 140, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 28, 28, 28, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -43068,9 +43162,9 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 38, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ + {12, 12, 12, /* RU26 L,H,U */ + 18, 18, 18, /* RU52 L,H,U*/ + 24, 24, 24, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ 28, 28, 28, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ @@ -43079,9 +43173,9 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 46, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ + {12, 12, 12, /* RU26 L,H,U */ + 18, 18, 18, /* RU52 L,H,U*/ + 24, 24, 24, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ 28, 28, 28, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ @@ -43090,9 +43184,9 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 54, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ 28, 28, 28, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ @@ -43101,9 +43195,9 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 62, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ 28, 28, 28, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ @@ -43112,9 +43206,9 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 102, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ 28, 28, 28, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ @@ -43123,9 +43217,9 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 110, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ 28, 28, 28, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ @@ -43134,9 +43228,9 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 118, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ 28, 28, 28, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ @@ -43145,9 +43239,9 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 126, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ 28, 28, 28, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ @@ -43156,9 +43250,9 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 134, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ 28, 28, 28, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ @@ -43189,45 +43283,45 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 42, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 28, 28, 28, /* RU242 L,H,U ax20M*/ - 28, 28, 28, /* RU484 L,H,U ax40M*/ - 28, 28, 28, /* RU996 L,H,U ax80M*/ + {12, 12, 12, /* RU26 L,H,U */ + 18, 18, 18, /* RU52 L,H,U*/ + 24, 24, 24, /* RU106 L,H,U*/ + 27, 27, 27, /* RU242 L,H,U ax20M*/ + 27, 27, 27, /* RU484 L,H,U ax40M*/ + 27, 27, 27, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } }, { {'G', '2'} , 58, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 28, 28, 28, /* RU242 L,H,U ax20M*/ - 28, 28, 28, /* RU484 L,H,U ax40M*/ - 28, 28, 28, /* RU996 L,H,U ax80M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 24, 24, 24, /* RU242 L,H,U ax20M*/ + 24, 24, 24, /* RU484 L,H,U ax40M*/ + 24, 24, 24, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } }, { {'G', '2'} , 106, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 28, 28, 28, /* RU242 L,H,U ax20M*/ - 28, 28, 28, /* RU484 L,H,U ax40M*/ - 28, 28, 28, /* RU996 L,H,U ax80M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 26, 26, 26, /* RU242 L,H,U ax20M*/ + 26, 26, 26, /* RU484 L,H,U ax40M*/ + 26, 26, 26, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } }, { {'G', '2'} , 122, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 28, 28, 28, /* RU242 L,H,U ax20M*/ - 28, 28, 28, /* RU484 L,H,U ax40M*/ - 28, 28, 28, /* RU996 L,H,U ax80M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 26, 26, 26, /* RU242 L,H,U ax20M*/ + 26, 26, 26, /* RU484 L,H,U ax40M*/ + 26, 26, 26, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } }, @@ -43244,24 +43338,24 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 }, { {'G', '2'} , 50, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 28, 28, 28, /* RU242 L,H,U ax20M*/ - 28, 28, 28, /* RU484 L,H,U ax40M*/ - 28, 28, 28, /* RU996 L,H,U ax80M*/ - 28, 28, 28, /* RU1992 L,H,U ax160M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 24, 24, 24, /* RU242 L,H,U ax20M*/ + 24, 24, 24, /* RU484 L,H,U ax40M*/ + 24, 24, 24, /* RU996 L,H,U ax80M*/ + 24, 24, 24, /* RU1992 L,H,U ax160M*/ } }, { {'G', '2'} , 114, - {14, 14, 14, /* RU26 L,H,U */ - 20, 20, 20, /* RU52 L,H,U*/ - 26, 26, 26, /* RU106 L,H,U*/ - 28, 28, 28, /* RU242 L,H,U ax20M*/ - 28, 28, 28, /* RU484 L,H,U ax40M*/ - 28, 28, 28, /* RU996 L,H,U ax80M*/ - 28, 28, 28, /* RU1992 L,H,U ax160M*/ + {11, 11, 11, /* RU26 L,H,U */ + 17, 17, 17, /* RU52 L,H,U*/ + 23, 23, 23, /* RU106 L,H,U*/ + 24, 24, 24, /* RU242 L,H,U ax20M*/ + 24, 24, 24, /* RU484 L,H,U ax40M*/ + 24, 24, 24, /* RU996 L,H,U ax80M*/ + 24, 24, 24, /* RU1992 L,H,U ax160M*/ } }, @@ -46151,131 +46245,131 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION /*IN*/ { {'G', '2'} - , 1, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 1, {60, 33, 33, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} - , 2, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 2, {60, 33, 33, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} - , 3, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 3, {60, 33, 33, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} - , 4, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 4, {60, 33, 33, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} - , 5, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 5, {60, 33, 33, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} - , 6, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 6, {60, 33, 33, 30, 30, 63, 63, 63, 63} } , { {'G', '2'} - , 7, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 7, {60, 33, 33, 28, 28, 63, 63, 63, 63} } , { {'G', '2'} - , 8, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 8, {60, 33, 33, 28, 28, 63, 63, 63, 63} } , { {'G', '2'} - , 9, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 9, {60, 33, 33, 27, 27, 63, 63, 63, 63} } , { {'G', '2'} - , 10, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 10, {60, 33, 33, 26, 26, 63, 63, 63, 63} } , { {'G', '2'} - , 11, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 11, {60, 30, 30, 24, 24, 63, 63, 63, 63} } , { {'G', '2'} - , 12, {60, 34, 34, 32, 32, 63, 63, 63, 63} + , 12, {60, 28, 28, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} - , 13, {34, 34, 34, 32, 32, 63, 63, 63, 63} + , 13, {34, 26, 26, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} - , 36, {60, 30, 30, 60, 60, 63, 63, 63, 63} + , 36, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 40, {60, 30, 30, 60, 60, 63, 63, 63, 63} + , 40, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 44, {60, 30, 30, 60, 60, 63, 63, 63, 63} + , 44, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 48, {60, 30, 30, 60, 60, 63, 63, 63, 63} + , 48, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 52, {60, 30, 30, 60, 60, 63, 63, 63, 63} + , 52, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 56, {60, 30, 30, 60, 60, 63, 63, 63, 63} + , 56, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 60, {60, 30, 30, 60, 60, 63, 63, 63, 63} + , 60, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 64, {60, 30, 30, 60, 60, 63, 63, 63, 63} + , 64, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 100, {60, 29, 29, 60, 60, 63, 63, 63, 63} + , 100, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 104, {60, 29, 29, 60, 60, 63, 63, 63, 63} + , 104, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 108, {60, 29, 29, 60, 60, 63, 63, 63, 63} + , 108, {60, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 112, {63, 29, 29, 60, 60, 63, 63, 63, 63} + , 112, {63, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 116, {63, 29, 29, 60, 60, 63, 63, 63, 63} + , 116, {63, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 120, {63, 29, 29, 60, 60, 63, 63, 63, 63} + , 120, {63, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 124, {63, 29, 29, 60, 60, 63, 63, 63, 63} + , 124, {63, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 128, {63, 29, 29, 60, 60, 63, 63, 63, 63} + , 128, {63, 28, 28, 60, 60, 63, 63, 63, 63} } , { {'G', '2'} - , 132, {63, 29, 29, 63, 63, 63, 63, 63, 63} + , 132, {63, 28, 28, 63, 63, 63, 63, 63, 63} } , { {'G', '2'} - , 136, {63, 29, 29, 63, 63, 63, 63, 63, 63} + , 136, {63, 28, 28, 63, 63, 63, 63, 63, 63} } , { {'G', '2'} - , 140, {63, 29, 29, 63, 63, 63, 63, 63, 63} + , 140, {63, 28, 28, 63, 63, 63, 63, 63, 63} } , { {'G', '2'} @@ -46315,23 +46409,23 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION } , { {'G', '2'} - , 102, {63, 60, 60, 34, 34, 63, 63, 63, 63} + , 102, {63, 60, 60, 29, 29, 63, 63, 63, 63} } , { {'G', '2'} - , 110, {63, 60, 60, 34, 34, 63, 63, 63, 63} + , 110, {63, 60, 60, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} - , 118, {63, 60, 60, 34, 34, 63, 63, 63, 63} + , 118, {63, 60, 60, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} - , 126, {63, 60, 60, 34, 34, 63, 63, 63, 63} + , 126, {63, 60, 60, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} - , 134, {63, 60, 60, 34, 34, 63, 63, 63, 63} + , 134, {63, 60, 60, 32, 32, 63, 63, 63, 63} } , { {'G', '2'} @@ -46343,19 +46437,19 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION } , { {'G', '2'} - , 42, {63, 60, 60, 63, 63, 30, 30, 63, 63} + , 42, {63, 60, 60, 63, 63, 27, 27, 63, 63} } , { {'G', '2'} - , 58, {63, 60, 60, 63, 63, 28, 28, 63, 63} + , 58, {63, 60, 60, 63, 63, 24, 24, 63, 63} } , { {'G', '2'} - , 106, {63, 60, 60, 63, 63, 30, 30, 63, 63} + , 106, {63, 60, 60, 63, 63, 26, 26, 63, 63} } , { {'G', '2'} - , 122, {63, 60, 60, 63, 63, 30, 30, 63, 63} + , 122, {63, 60, 60, 63, 63, 26, 26, 63, 63} } , { {'G', '2'} @@ -46363,11 +46457,11 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION } , { {'G', '2'} - , 50, {63, 60, 60, 63, 63, 63, 63, 63, 63} + , 50, {63, 60, 60, 63, 63, 63, 63, 24, 24} } , { {'G', '2'} - , 114, {63, 60, 60, 63, 63, 63, 63, 30, 30} + , 114, {63, 60, 60, 63, 63, 63, 63, 25, 25} } , @@ -48576,7 +48670,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION struct COUNTRY_POWER_LIMIT_TABLE_DEFAULT g_rRlmPowerLimitDefault_24071[] = { {{'G', '6'} - , {49, 63, 34, 63, 63} + , {40, 63, 34, 63, 63} , 0} , /*Default*/ @@ -48593,7 +48687,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -48604,7 +48698,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -48615,7 +48709,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ 41, 41, 41, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -48626,7 +48720,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ 40, 40, 40, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -48637,7 +48731,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ 40, 40, 40, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -48648,7 +48742,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ 40, 40, 40, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -48659,7 +48753,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ 40, 40, 40, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -48670,7 +48764,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ 40, 40, 40, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -48681,7 +48775,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ 40, 40, 40, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -48692,8 +48786,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ - 40, 40, 40, /* RU484 L,H,U ax40M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ + 38, 38, 38, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -48703,8 +48797,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 42, 42, 42, /* RU242 L,H,U ax20M*/ - 28, 28, 28, /* RU484 L,H,U ax40M*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ + 26, 26, 26, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ } @@ -48725,7 +48819,29 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {16, 16, 16, /* RU26 L,H,U */ 22, 22, 22, /* RU52 L,H,U*/ 28, 28, 28, /* RU106 L,H,U*/ - 30, 30, 30, /* RU242 L,H,U ax20M*/ + 33, 33, 33, /* RU242 L,H,U ax20M*/ + 63, 63, 63, /* RU484 L,H,U ax40M*/ + 63, 63, 63, /* RU996 L,H,U ax80M*/ + 63, 63, 63, /* RU1992 L,H,U ax160M*/ + } + }, + { {'G', '6'} + , 36, + {63, 63, 63, /* RU26 L,H,U */ + 63, 63, 63, /* RU52 L,H,U*/ + 63, 63, 63, /* RU106 L,H,U*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ + 63, 63, 63, /* RU484 L,H,U ax40M*/ + 63, 63, 63, /* RU996 L,H,U ax80M*/ + 63, 63, 63, /* RU1992 L,H,U ax160M*/ + } + }, + { {'G', '6'} + , 40, + {63, 63, 63, /* RU26 L,H,U */ + 63, 63, 63, /* RU52 L,H,U*/ + 63, 63, 63, /* RU106 L,H,U*/ + 40, 40, 40, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, /* RU1992 L,H,U ax160M*/ @@ -48825,43 +48941,49 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION g_rRlmPowerLimitConfiguration_24071[] = { /*Default*/ { {'G', '6'} - , 1, {40, 42, 42, 63, 63, 63, 63, 63, 63} + , 1, {37, 40, 40, 63, 63, 63, 63, 63, 63} }, { {'G', '6'} - , 2, {40, 42, 42, 63, 63, 63, 63, 63, 63} + , 2, {37, 40, 40, 63, 63, 63, 63, 63, 63} }, { {'G', '6'} - , 3, {40, 42, 42, 41, 41, 63, 63, 63, 63} + , 3, {37, 40, 40, 40, 40, 63, 63, 63, 63} }, { {'G', '6'} - , 4, {40, 42, 42, 40, 40, 63, 63, 63, 63} + , 4, {37, 40, 40, 40, 40, 63, 63, 63, 63} }, { {'G', '6'} - , 5, {40, 42, 42, 40, 40, 63, 63, 63, 63} + , 5, {37, 40, 40, 40, 40, 63, 63, 63, 63} }, { {'G', '6'} - , 6, {40, 42, 42, 40, 40, 63, 63, 63, 63} + , 6, {37, 40, 40, 40, 40, 63, 63, 63, 63} }, { {'G', '6'} - , 7, {40, 42, 42, 40, 40, 63, 63, 63, 63} + , 7, {37, 40, 40, 40, 40, 63, 63, 63, 63} }, { {'G', '6'} - , 8, {40, 42, 42, 40, 40, 63, 63, 63, 63} + , 8, {37, 40, 40, 40, 40, 63, 63, 63, 63} }, { {'G', '6'} - , 9, {40, 42, 42, 40, 40, 63, 63, 63, 63} + , 9, {37, 40, 40, 40, 40, 63, 63, 63, 63} }, { {'G', '6'} - , 10, {40, 42, 42, 40, 40, 63, 63, 63, 63} + , 10, {37, 40, 40, 40, 40, 63, 63, 63, 63} }, { {'G', '6'} - , 11, {40, 42, 42, 28, 28, 63, 63, 63, 63} + , 11, {37, 40, 40, 26, 26, 63, 63, 63, 63} }, { {'G', '6'} - , 12, {40, 42, 42, 63, 63, 63, 63, 63, 63} + , 12, {40, 43, 43, 63, 63, 63, 63, 63, 63} }, { {'G', '6'} - , 13, {40, 30, 30, 63, 63, 63, 63, 63, 63} + , 13, {40, 33, 33, 63, 63, 63, 63, 63, 63} + }, + { {'G', '6'} + , 36, {63, 40, 40, 63, 63, 63, 63, 63, 63} + }, + { {'G', '6'} + , 40, {63, 40, 40, 63, 63, 63, 63, 63, 63} }, { {'G', '6'} , 52, {63, 34, 34, 63, 63, 63, 63, 63, 63} @@ -48875,7 +48997,6 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION { {'G', '6'} , 64, {63, 34, 34, 63, 63, 63, 63, 63, 63} }, - { {'G', '6'} , 149, {63, 38, 38, 63, 63, 63, 63, 63, 63} }, @@ -48898,7 +49019,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_DEFAULT , 0} , {{'G', '1'} - , {49, 31, 30, 29, 63, 63, 63, 63, 63} + , {49, 30, 30, 29, 63, 63, 63, 63, 63} , 0} , {{'G', '2'} @@ -48906,7 +49027,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_DEFAULT , 0} , {{'G', '7'} - , {49, 31, 30, 29, 63, 32, 63, 63, 63} + , {49, 30, 30, 29, 63, 32, 63, 63, 63} , 0} , /*Default*/ @@ -49133,10 +49254,10 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {10, 10, 10, /* RU26 L,H,U */ 18, 18, 18, /* RU52 L,H,U*/ 22, 22, 22, /* RU106 L,H,U*/ - 63, 63, 63, /* RU242 L,H,U ax20M*/ - 63, 63, 63, /* RU484 L,H,U ax40M*/ - 63, 63, 63, /* RU996 L,H,U ax80M*/ - 63, 63, 63, }/* RU1992 L,H,U ax160M*/ + 29, 29, 29, /* RU242 L,H,U ax20M*/ + 29, 29, 29, /* RU484 L,H,U ax40M*/ + 29, 29, 29, /* RU996 L,H,U ax80M*/ + 29, 29, 29, }/* RU1992 L,H,U ax160M*/ }, { {'G', '0'} , 100, @@ -49443,7 +49564,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {12, 12, 12, /* RU26 L,H,U */ 18, 18, 18, /* RU52 L,H,U*/ 24, 24, 24, /* RU106 L,H,U*/ - 31, 31, 31, /* RU242 L,H,U ax20M*/ + 24, 24, 24, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, }/* RU1992 L,H,U ax160M*/ @@ -49453,7 +49574,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {12, 12, 12, /* RU26 L,H,U */ 18, 18, 18, /* RU52 L,H,U*/ 24, 24, 24, /* RU106 L,H,U*/ - 31, 31, 31, /* RU242 L,H,U ax20M*/ + 30, 30, 30, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, }/* RU1992 L,H,U ax160M*/ @@ -49463,7 +49584,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {12, 12, 12, /* RU26 L,H,U */ 18, 18, 18, /* RU52 L,H,U*/ 24, 24, 24, /* RU106 L,H,U*/ - 31, 31, 31, /* RU242 L,H,U ax20M*/ + 30, 30, 30, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, }/* RU1992 L,H,U ax160M*/ @@ -49473,7 +49594,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {12, 12, 12, /* RU26 L,H,U */ 18, 18, 18, /* RU52 L,H,U*/ 24, 24, 24, /* RU106 L,H,U*/ - 31, 31, 31, /* RU242 L,H,U ax20M*/ + 24, 24, 24, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, }/* RU1992 L,H,U ax160M*/ @@ -50384,7 +50505,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 18, 18, 18, /* RU52 L,H,U*/ 24, 24, 24, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ - 30, 63, 63, /* RU484 L,H,U ax40M*/ + 26, 26, 26, /* RU484 L,H,U ax40M*/ 20, 20, 20, /* RU996 L,H,U ax80M*/ 16, 16, 16, }/* RU1992 L,H,U ax160M*/ }, @@ -50394,8 +50515,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 18, 18, 18, /* RU52 L,H,U*/ 24, 24, 24, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ - 30, 30, 30, /* RU484 L,H,U ax40M*/ - 20, 20, 20, /* RU996 L,H,U ax80M*/ + 26, 26, 26, /* RU484 L,H,U ax40M*/ + 26, 26, 26, /* RU996 L,H,U ax80M*/ 16, 16, 16, }/* RU1992 L,H,U ax160M*/ }, { {'G', '2'} @@ -50404,8 +50525,8 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 18, 18, 18, /* RU52 L,H,U*/ 24, 24, 24, /* RU106 L,H,U*/ 28, 28, 28, /* RU242 L,H,U ax20M*/ - 30, 30, 30, /* RU484 L,H,U ax40M*/ - 32, 32, 32, /* RU996 L,H,U ax80M*/ + 26, 26, 26, /* RU484 L,H,U ax40M*/ + 26, 26, 26, /* RU996 L,H,U ax80M*/ 16, 16, 16, }/* RU1992 L,H,U ax160M*/ }, { {'G', '7'} @@ -50523,7 +50644,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {12, 12, 12, /* RU26 L,H,U */ 18, 18, 18, /* RU52 L,H,U*/ 24, 24, 24, /* RU106 L,H,U*/ - 31, 31, 31, /* RU242 L,H,U ax20M*/ + 24, 24, 24, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, }/* RU1992 L,H,U ax160M*/ @@ -50553,7 +50674,7 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION_HE_BW160 {12, 12, 12, /* RU26 L,H,U */ 18, 18, 18, /* RU52 L,H,U*/ 24, 24, 24, /* RU106 L,H,U*/ - 31, 31, 31, /* RU242 L,H,U ax20M*/ + 24, 24, 24, /* RU242 L,H,U ax20M*/ 63, 63, 63, /* RU484 L,H,U ax40M*/ 63, 63, 63, /* RU996 L,H,U ax80M*/ 63, 63, 63, }/* RU1992 L,H,U ax160M*/ @@ -50987,6 +51108,9 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION { {'G', '0'} , 64, {63, 23, 23, 63, 63, 63, 63, 63, 63} }, + { {'G', '0'} + , 50, {63, 63, 63, 63, 63, 63, 63, 29, 29} + }, { {'G', '1'} , 1, {40, 34, 34, 63, 63, 63, 63, 63, 63} }, @@ -51020,6 +51144,12 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION { {'G', '1'} , 11, {40, 26, 26, 24, 24, 63, 63, 63, 63} }, + { {'G', '1'} + , 36, {63, 24, 24, 63, 63, 63, 63, 63, 63} + }, + { {'G', '1'} + , 48, {63, 24, 24, 63, 63, 63, 63, 63, 63} + }, { {'G', '1'} , 38, {63, 63, 63, 22, 22, 63, 63, 63, 63} }, @@ -51171,13 +51301,13 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION , 165, {63, 28, 28, 63, 63, 63, 63, 63, 63} }, { {'G', '2'} - , 151, {63, 63, 63, 30, 30, 63, 63, 63, 63} + , 151, {63, 63, 63, 26, 26, 63, 63, 63, 63} }, { {'G', '2'} - , 159, {63, 63, 63, 30, 30, 63, 63, 63, 63} + , 159, {63, 63, 63, 26, 26, 63, 63, 63, 63} }, { {'G', '2'} - , 155, {63, 63, 63, 63, 63, 32, 32, 63, 63} + , 155, {63, 63, 63, 63, 63, 26, 26, 63, 63} }, { {'G', '7'} , 1, {40, 34, 34, 63, 63, 63, 63, 63, 63} @@ -51211,6 +51341,12 @@ struct COUNTRY_POWER_LIMIT_TABLE_CONFIGURATION }, { {'G', '7'} , 11, {40, 26, 26, 24, 24, 63, 63, 63, 63} + }, + { {'G', '7'} + , 36, {40, 24, 24, 24, 24, 63, 63, 63, 63} + }, + { {'G', '7'} + , 48, {40, 24, 24, 24, 24, 63, 63, 63, 63} }, { {'G', '7'} , 38, {63, 63, 63, 22, 22, 63, 63, 63, 63} diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/p2p_dev.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/p2p_dev.h index 5951c726..3fd7f5c0 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/p2p_dev.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/p2p_dev.h @@ -125,6 +125,7 @@ struct P2P_PENDING_MGMT_INFO { enum ENUM_BAND eBand; uint8_t ucChannelNum; uint8_t fgIsOffChannel; + uint8_t ucBssIdx; }; struct P2P_DEV_FSM_INFO { diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/p2p_func.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/p2p_func.h index b534d23f..0d79d6ed 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/p2p_func.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/mgmt/p2p_func.h @@ -156,6 +156,16 @@ uint32_t p2pFuncIsPendingTxMgmtNeedWait(struct ADAPTER *prAdapter, uint8_t ucRoleIndex, enum ENUM_P2P_MGMT_TX_TYPE eP2pMgmtTxType); +enum ENUM_P2P_CONNECT_STATE +p2pFuncTagMgmtFrame(struct MSDU_INFO *prMgmtTxMsdu, + uint64_t u8Cookie); + +u_int8_t +p2pFuncGetBssIdxByCookie(struct ADAPTER *prAdapter, + uint8_t ucRoleIndex, + struct P2P_PENDING_MGMT_INFO **prPendingMgmtInfoValid, + uint64_t u8cookie); + void p2pFuncAcquireCh(struct ADAPTER *prAdapter, uint8_t ucBssIdx, struct P2P_CHNL_REQ_INFO *prChnlReqInfo); @@ -661,6 +671,9 @@ p2pFuncNeedWaitRsp(struct ADAPTER *prAdapter, u_int8_t p2pFuncNeedForceSleep(struct ADAPTER *prAdapter); +u_int8_t +p2pFuncIsSapGoCsa(struct ADAPTER *prAdapter, uint8_t ucRoleIdx); + void p2pFunClearAllTxReq(struct ADAPTER *prAdapter, struct P2P_MGMT_TX_REQ_INFO *prP2pMgmtTxInfo); diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/adapter.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/adapter.h index 74f4418c..1f08791b 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/adapter.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/adapter.h @@ -1266,6 +1266,7 @@ struct WIFI_VAR { uint32_t u4PerfMonTpTh[PERF_MON_TP_MAX_THRESHOLD]; #if CFG_SUPPORT_RX_NAPI uint32_t u4NapiScheduleTimeout; + u_int8_t fgNapiScheduleAeeEn; #endif #if CFG_NAPI_DELAY uint32_t u4NapiDelayTputTh; diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/mt66xx_reg.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/mt66xx_reg.h index b7ad3558..72100b72 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/mt66xx_reg.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/mt66xx_reg.h @@ -1709,6 +1709,10 @@ struct mt66xx_chip_info { uint8_t ucBssidx); #endif +#if IS_ENABLED(CFG_MTK_WIFI_FORCE_HOST_CSR_IRQ_EN) + void (*forceEnableHostCsrIrq)(struct ADAPTER *prAdapter); +#endif + /* If you want to explicitly specify the max AMPDU length exponent in * HE CAP IE instead of using default one specified by * prWifiVar->ucMaxAmpduLenExp, then you shall set diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/nic_rx.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/nic_rx.h index fdabcfca..d30a1a2b 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/nic_rx.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/nic/nic_rx.h @@ -555,6 +555,7 @@ enum ENUM_RX_STATISTIC_COUNTER { RX_TASKLET_COUNT, RX_WORK_COUNT, RX_NAPI_SCHEDULE_COUNT, + RX_NAPI_SCHEDULE_FAIL_COUNT, RX_NAPI_LEGACY_SCHED_COUNT, RX_NAPI_WORK_COUNT, RX_NAPI_POLL_COUNT, diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/precomp.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/precomp.h index 6393d99c..b7d9c0da 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/precomp.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/precomp.h @@ -227,9 +227,9 @@ #include "p2p_ie.h" #include "p2p_role.h" -#include "p2p_func.h" #include "p2p_scan.h" #include "p2p_dev.h" +#include "p2p_func.h" #include "p2p_fsm.h" #include "p2p_link.h" #endif diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/pwr_mgt.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/pwr_mgt.h index c0765db0..c690d696 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/pwr_mgt.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/include/pwr_mgt.h @@ -49,6 +49,8 @@ #define LP_OWN_BACK_LOOP_DELAY_MIN_US 900 #define LP_OWN_BACK_LOOP_DELAY_MAX_US 1000 #define LP_OWN_REQ_CLR_INTERVAL_MS 200 +#define LP_OWN_EINT_CHECK_DELAY 156 /* 5T 32K = 0.156ms */ +#define LP_OWN_EINT_CHECK_RETRY_CNT 2 #define LP_DBGCR_POLL_ROUND 1 /******************************************************************************* diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/p2p_func.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/p2p_func.c index b5303221..abc8e10b 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/p2p_func.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/p2p_func.c @@ -782,6 +782,8 @@ p2pFuncAddPendingMgmtLinkEntry(struct ADAPTER *prAdapter, prPendingMgmtInfo->ucChannelNum = prMgmtTxMsg->rChannelInfo.ucChannelNum; prPendingMgmtInfo->fgIsOffChannel = prMgmtTxMsg->fgIsOffChannel; + prPendingMgmtInfo->ucBssIdx = prMgmtTxMsg->ucBssIdx; + LINK_INSERT_TAIL(&prGlueP2pInfo->rWaitTxDoneLink, &prPendingMgmtInfo->rLinkEntry); @@ -1212,6 +1214,30 @@ p2pFuncTagMgmtFrame(struct MSDU_INFO *prMgmtTxMsdu, return eCNNState; } +u_int8_t +p2pFuncGetBssIdxByCookie(struct ADAPTER *prAdapter, + uint8_t ucRoleIndex, + struct P2P_PENDING_MGMT_INFO **prPendingMgmtInfoValid, + uint64_t u8cookie) +{ + struct GL_P2P_INFO *prGlueP2pInfo = NULL; + struct P2P_PENDING_MGMT_INFO *prPendingMgmtInfo = NULL; + struct P2P_PENDING_MGMT_INFO *prPendingMgmtInfoNext = NULL; + + prGlueP2pInfo = prAdapter->prGlueInfo->prP2PInfo[ucRoleIndex]; + + LINK_FOR_EACH_ENTRY_SAFE(prPendingMgmtInfo, + prPendingMgmtInfoNext, &prGlueP2pInfo->rWaitTxDoneLink, + rLinkEntry, struct P2P_PENDING_MGMT_INFO) { + if (prPendingMgmtInfoNext->u8PendingMgmtCookie + == u8cookie) { + *prPendingMgmtInfoValid = prPendingMgmtInfoNext; + return TRUE; + } + } + return FALSE; +} + struct MSDU_INFO *p2pFuncProcessAuth( struct ADAPTER *prAdapter, struct STA_RECORD *prStaRec, @@ -4309,6 +4335,11 @@ p2pFuncValidateAuth(struct ADAPTER *prAdapter, "Current OP mode is not under AP mode. (%d)\n", prP2pBssInfo->eCurrentOPMode); return FALSE; + } else if (p2pFuncIsSapGoCsa(prAdapter, prP2pBssInfo->u4PrivateData) || + prAdapter->rWifiVar.fgCsaInProgress) { + DBGLOG(P2P, INFO, "skip due to CSA still in progress\n"); + *pu2StatusCode = STATUS_CODE_UNSPECIFIED_FAILURE; + return FALSE; } if (bssGetClientCount(prAdapter, prP2pBssInfo) >= P2P_MAXIMUM_CLIENT_COUNT @@ -10470,6 +10501,15 @@ p2pFuncNeedForceSleep(struct ADAPTER *prAdapter) return TRUE; } +u_int8_t +p2pFuncIsSapGoCsa(struct ADAPTER *prAdapter, uint8_t ucRoleIdx) +{ + struct GLUE_INFO *prGlueInfo = prAdapter->prGlueInfo; + struct GL_P2P_INFO *prP2pInfo = prGlueInfo->prP2PInfo[ucRoleIdx]; + + return prP2pInfo->fgChannelSwitchReq; +} + void p2pFunClearAllTxReq(struct ADAPTER *prAdapter, struct P2P_MGMT_TX_REQ_INFO *prP2pMgmtTxInfo) diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/rlm.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/rlm.c index 76851443..030abaa8 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/rlm.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/rlm.c @@ -144,7 +144,7 @@ static void rlmFillVhtOpNotificationIE(struct ADAPTER *prAdapter, static void rlmOpModeTxDoneHandler(struct ADAPTER *prAdapter, struct MSDU_INFO *prMsduInfo, uint8_t ucOpChangeType, - u_int8_t fgIsSuccess); + enum ENUM_TX_RESULT_CODE rTxDoneStatus); static void rlmApGoOmiOpModeDoneHandler(struct ADAPTER *prAdapter, struct MSDU_INFO *prMsduInfo); static void rlmChangeOwnOpInfo(struct ADAPTER *prAdapter, @@ -8553,18 +8553,8 @@ uint32_t rlmNotifyVhtOpModeTxDone(struct ADAPTER *prAdapter, struct MSDU_INFO *prMsduInfo, enum ENUM_TX_RESULT_CODE rTxDoneStatus) { - u_int8_t fgIsSuccess = FALSE; - - do { - ASSERT((prAdapter != NULL) && (prMsduInfo != NULL)); - - if (rTxDoneStatus == TX_RESULT_SUCCESS) - fgIsSuccess = TRUE; - - } while (FALSE); - rlmOpModeTxDoneHandler(prAdapter, prMsduInfo, OP_NOTIFY_TYPE_VHT_NSS_BW, - fgIsSuccess); + rTxDoneStatus); return WLAN_STATUS_SUCCESS; } @@ -8582,18 +8572,8 @@ uint32_t rlmNotifyOMIOpModeTxDone(struct ADAPTER *prAdapter, struct MSDU_INFO *prMsduInfo, enum ENUM_TX_RESULT_CODE rTxDoneStatus) { - u_int8_t fgIsSuccess = FALSE; - - do { - ASSERT((prAdapter != NULL) && (prMsduInfo != NULL)); - - if (rTxDoneStatus == TX_RESULT_SUCCESS) - fgIsSuccess = TRUE; - - } while (FALSE); - rlmOpModeTxDoneHandler(prAdapter, prMsduInfo, OP_NOTIFY_TYPE_OMI_NSS_BW, - fgIsSuccess); + rTxDoneStatus); return WLAN_STATUS_SUCCESS; } @@ -8638,18 +8618,8 @@ uint32_t rlmSmPowerSaveTxDone(struct ADAPTER *prAdapter, struct MSDU_INFO *prMsduInfo, enum ENUM_TX_RESULT_CODE rTxDoneStatus) { - u_int8_t fgIsSuccess = FALSE; - - do { - ASSERT((prAdapter != NULL) && (prMsduInfo != NULL)); - - if (rTxDoneStatus == TX_RESULT_SUCCESS) - fgIsSuccess = TRUE; - - } while (FALSE); - rlmOpModeTxDoneHandler(prAdapter, prMsduInfo, OP_NOTIFY_TYPE_HT_NSS, - fgIsSuccess); + rTxDoneStatus); return WLAN_STATUS_SUCCESS; } @@ -8667,18 +8637,8 @@ uint32_t rlmNotifyChannelWidthtTxDone(struct ADAPTER *prAdapter, struct MSDU_INFO *prMsduInfo, enum ENUM_TX_RESULT_CODE rTxDoneStatus) { - u_int8_t fgIsSuccess = FALSE; - - do { - ASSERT((prAdapter != NULL) && (prMsduInfo != NULL)); - - if (rTxDoneStatus == TX_RESULT_SUCCESS) - fgIsSuccess = TRUE; - - } while (FALSE); - rlmOpModeTxDoneHandler(prAdapter, prMsduInfo, OP_NOTIFY_TYPE_HT_BW, - fgIsSuccess); + rTxDoneStatus); return WLAN_STATUS_SUCCESS; } @@ -8695,7 +8655,7 @@ uint32_t rlmNotifyChannelWidthtTxDone(struct ADAPTER *prAdapter, static void rlmOpModeTxDoneHandler(struct ADAPTER *prAdapter, struct MSDU_INFO *prMsduInfo, uint8_t ucOpChangeType, - u_int8_t fgIsSuccess) + enum ENUM_TX_RESULT_CODE rTxDoneStatus) { uint32_t u4Status = WLAN_STATUS_SUCCESS; struct BSS_INFO *prBssInfo = NULL; @@ -8703,6 +8663,7 @@ static void rlmOpModeTxDoneHandler(struct ADAPTER *prAdapter, u_int8_t fgIsOpModeChangeSuccess = FALSE; /* OP change result */ uint8_t *pucCurrOpState = NULL; uint8_t ucFailCnt = 0, i = 0; + u_int8_t fgIsSuccess = FALSE; /* Sanity check */ ASSERT((prAdapter != NULL) && (prMsduInfo != NULL)); @@ -8715,6 +8676,9 @@ static void rlmOpModeTxDoneHandler(struct ADAPTER *prAdapter, if (!prStaRec) return; + if (rTxDoneStatus == TX_RESULT_SUCCESS) + fgIsSuccess = TRUE; + DBGLOG(RLM, INFO, "OP notification Tx done: BSS[%d] Type[%d] Status[%d] IsSuccess[%d]\n", prBssInfo->ucBssIndex, ucOpChangeType, @@ -8766,6 +8730,10 @@ static void rlmOpModeTxDoneHandler(struct ADAPTER *prAdapter, return; } } else { + /* Reduce useless retry to prevent long cnm req lock */ + if (rTxDoneStatus == TX_RESULT_FLUSHED) + break; + /* Record rollback frame status to fail only */ if (prBssInfo->aucOpModeChangeState[ucOpChangeType] == OP_NOTIFY_STATE_ROLLBACK) { diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/rlm_domain.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/rlm_domain.c index 00841670..f69578cf 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/rlm_domain.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/mgmt/rlm_domain.c @@ -5273,9 +5273,15 @@ rlmDomainBuildCmdByDefaultTable(struct ADAPTER *prAdapter, uint16_t u2DefaultTableIndex) { uint16_t i, k; +#ifndef OPLUS_FEATURE_WIFI_PWR_LMT +//Add for distinguish country power limit at runtime. struct COUNTRY_POWER_LIMIT_TABLE_DEFAULT *prPwrLimitSubBand = &g_rRlmPowerLimitDefault[u2DefaultTableIndex]; +#else +struct COUNTRY_POWER_LIMIT_TABLE_DEFAULT *prPwrLimitSubBand = + &g_prOplusCountryPwrLimitDefault[u2DefaultTableIndex]; +#endif /*OPLUS_FEATURE_WIFI_PWR_LMT*/ struct CMD_CHANNEL_POWER_LIMIT *prPwrLimit = NULL; struct CMD_CHANNEL_POWER_LIMIT_HE *prPwrLmtHE = NULL; struct CMD_CHANNEL_POWER_LIMIT_HE_BW160 *prPwrLmtHEBW160 = NULL; @@ -5309,13 +5315,9 @@ rlmDomainBuildCmdByDefaultTable(struct ADAPTER *prAdapter, "ucCountryPwrLimitCtrl setting[%x]", prAdapter->rWifiVar.ucCountryPwrLimitCtrl); -#ifdef OPLUS_FEATURE_WIFI_PWR_LMT -#if (CFG_SUPPORT_PWR_LMT_EMI == 0) -prPwrLimitSubBand = &g_prOplusCountryPwrLimitDefault[u2DefaultTableIndex]; -#endif -#endif /*OPLUS_FEATURE_WIFI_PWR_LMT*/ - eType = prCmd->ucLimitType; +#ifndef OPLUS_FEATURE_WIFI_PWR_LMT +//Add for distinguish country power limit at runtime. #if (CFG_SUPPORT_WIFI_6G_PWR_MODE == 1) if (rlmDomainPwrLmt6GPwrModeGet(prAdapter) == PWR_MODE_6G_VLP) { prPwrLimitSubBand = @@ -5325,6 +5327,7 @@ prPwrLimitSubBand = &g_prOplusCountryPwrLimitDefault[u2DefaultTableIndex]; &g_rRlmPowerLimitDefault_SP[u2DefaultTableIndex]; } #endif +#endif /*OPLUS_FEATURE_WIFI_PWR_LMT*/ if (eType == PWR_LIMIT_TYPE_COMP_11AX) prPwrLmtHE = &prCmd->u.rChPwrLimtHE[0]; @@ -11312,8 +11315,11 @@ void rlmDomainSendPwrLimitCmd(struct ADAPTER *prAdapter) uint32_t u4SetQueryInfoLen; uint8_t bandedgeParam[4] = { 0, 0, 0, 0 }; uint8_t *pu1PwrLmtCountryCode; + +#ifndef OPLUS_FEATURE_WIFI_PWR_LMT struct COUNTRY_POWER_LIMIT_TABLE_DEFAULT *prPwrLmtDefaultTable = g_rRlmPowerLimitDefault; +#endif /*OPLUS_FEATURE_WIFI_PWR_LMT*/ struct DOMAIN_INFO_ENTRY *prDomainInfo; /* TODO : 5G band edge */ @@ -11495,6 +11501,7 @@ void rlmDomainSendPwrLimitCmd(struct ADAPTER *prAdapter) "Can't find any table index!\n"); goto err; } +#ifndef OPLUS_FEATURE_WIFI_PWR_LMT #if (CFG_SUPPORT_WIFI_6G_PWR_MODE == 1) DBGLOG(RLM, TRACE, "Country 6G Power mode[%d]\n", rlmDomainPwrLmt6GPwrModeGet(prAdapter)); @@ -11506,24 +11513,16 @@ void rlmDomainSendPwrLimitCmd(struct ADAPTER *prAdapter) pu1PwrLmtCountryCode = &prPwrLmtDefaultTable[u2DefaultTableIndex] .aucCountryCode[0]; - -#ifdef OPLUS_FEATURE_WIFI_PWR_LMT -#if (CFG_SUPPORT_PWR_LMT_EMI == 0) - WLAN_GET_FIELD_BE16(&g_prOplusCountryPwrLimitDefault - [u2DefaultTableIndex] - .aucCountryCode[0], - &prCmd->u2CountryCode); - WLAN_GET_FIELD_BE16(&g_prOplusCountryPwrLimitDefault - [u2DefaultTableIndex] - .aucCountryCode[0], - &prCmdHE->u2CountryCode); -#endif #else + pu1PwrLmtCountryCode = &g_prOplusCountryPwrLimitDefault[u2DefaultTableIndex] + .aucCountryCode[0]; +#endif /*OPLUS_FEATURE_WIFI_PWR_LMT*/ + WLAN_GET_FIELD_BE16(pu1PwrLmtCountryCode, &prCmd->u2CountryCode); WLAN_GET_FIELD_BE16(pu1PwrLmtCountryCode, &prCmdHE->u2CountryCode); -#endif /*OPLUS_FEATURE_WIFI_PWR_LMT*/ + #if (CFG_SUPPORT_PWR_LIMIT_EHT == 1) WLAN_GET_FIELD_BE16(pu1PwrLmtCountryCode, diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/nic/nic_rate.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/nic/nic_rate.c index 69d9f530..7be55177 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/nic/nic_rate.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/nic/nic_rate.c @@ -386,7 +386,8 @@ nicRateCode2DataRate( u4PhyRateIn100Kbps = (nicGetHwRateByPhyRate( ucPhyRate & BITS(0, 3))) * 5; } else { - ASSERT(FALSE); + DBGLOG(INIT, ERROR, "Invalid TxMode = %x\n", u2TxMode); + return 0; } return u4PhyRateIn100Kbps; } diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/nic/nic_tx.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/nic/nic_tx.c index c286d24e..b07a2b2e 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/nic/nic_tx.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/nic/nic_tx.c @@ -4777,7 +4777,8 @@ void nicTxSetPktLowestFixedRate(struct ADAPTER *prAdapter, u4CurrentPhyRate = nicRateCode2PhyRate(u2RateCode, FIX_BW_NO_FIXED, MAC_GI_NORMAL, AR_SS_NULL); - if (prBssInfo->u4CoexPhyRateLimit > u4CurrentPhyRate) { + if (u4CurrentPhyRate && + prBssInfo->u4CoexPhyRateLimit > u4CurrentPhyRate) { nicGetRateIndexFromRateSetWithLimit( u2OperationalRateSet, prBssInfo->u4CoexPhyRateLimit, diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/gl_kal.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/gl_kal.c index f46e905a..ccee282f 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/gl_kal.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/gl_kal.c @@ -2143,6 +2143,21 @@ void kal_gro_flush(struct ADAPTER *prAdapter) GET_CURRENT_SYSTIME(&prGlueInfo->tmGROFlushTimeout); } #endif + +void kal_netif_rx(struct GLUE_INFO *prGlueInfo, struct sk_buff *prSkb) +{ +#if KERNEL_VERSION(5, 18, 0) <= LINUX_VERSION_CODE + netif_rx(prSkb); +#else + if (!in_interrupt()) + netif_rx_ni(prSkb); + else + netif_rx(prSkb); +#endif + RX_INC_CNT(&prGlueInfo->prAdapter->rRxCtrl, + RX_DATA_INDICATION_END_COUNT); + +} /*----------------------------------------------------------------------------*/ /*! * \brief To indicate one received packets is available for higher @@ -2315,16 +2330,34 @@ uint32_t kalRxIndicateOnePkt(struct GLUE_INFO spin_unlock_bh(&prGlueInfo->napi_spinlock); preempt_enable(); } else { - skb_queue_tail(&prGlueInfo->rRxNapiSkbQ, prSkb); - RX_INC_CNT(&prGlueInfo->prAdapter->rRxCtrl, - RX_NAPI_SCHEDULE_COUNT); - GLUE_SET_REF_CNT(1, prGlueInfo->fgNapiScheduled); - if (prGlueInfo->fgNapiReady) - kal_napi_schedule(&prGlueInfo->napi); - else - DBGLOG(RX, WARN, - "Skip napi schedule, NapiReady:%u\n", - prGlueInfo->fgNapiReady); + if (prGlueInfo->fgNapiReady && + !prGlueInfo->fgNapiScheduleTimeout) { + skb_queue_tail(&prGlueInfo->rRxNapiSkbQ, prSkb); + if (kal_napi_schedule(&prGlueInfo->napi)) { + RX_INC_CNT( + &prGlueInfo->prAdapter->rRxCtrl, + RX_NAPI_SCHEDULE_COUNT); + } + } else { + RX_INC_CNT( + &prGlueInfo->prAdapter->rRxCtrl, + RX_NAPI_SCHEDULE_FAIL_COUNT); + DBGLOG(RX, TRACE, + "Skip napi schedule fail, NapiReady:%u NapiScheduleTimeout:%u\n", + prGlueInfo->fgNapiReady, + prGlueInfo->fgNapiScheduleTimeout); + + if (skb_queue_len(&prGlueInfo->rRxNapiSkbQ)) { + while ((prSkb = skb_dequeue( + &prGlueInfo->rRxNapiSkbQ)) + != NULL) { + kal_netif_rx(prGlueInfo, + prSkb); + } + } else { + kal_netif_rx(prGlueInfo, prSkb); + } + } } #else /* CFG_SUPPORT_RX_NAPI */ /* GRO receive function can't be interrupt so it need to @@ -2347,16 +2380,8 @@ skip_gro: #endif /* CFG_SUPPORT_SKIP_RX_GRO_FOR_TC */ #endif /* CFG_SUPPORT_RX_GRO */ -#if KERNEL_VERSION(5, 18, 0) <= LINUX_VERSION_CODE - netif_rx(prSkb); -#else - if (!in_interrupt()) - netif_rx_ni(prSkb); - else - netif_rx(prSkb); -#endif - RX_INC_CNT(&prGlueInfo->prAdapter->rRxCtrl, - RX_DATA_INDICATION_END_COUNT); + kal_netif_rx(prGlueInfo, prSkb); + return WLAN_STATUS_SUCCESS; } @@ -11727,9 +11752,9 @@ static uint32_t kalPerMonUpdate(struct ADAPTER *prAdapter) #endif /* CFG_QUEUE_RX_IF_CONN_NOT_READY */ #if CFG_SUPPORT_RX_GRO -#define NAPI_TEMPLATE "NAPI[%lu,%lu,%u,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%u] " +#define NAPI_TEMPLATE "NAPI[%lu,%lu,0x%03x,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%u] " #else -#define NAPI_TEMPLATE "NAPI[%lu,%lu,%u,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu] " +#define NAPI_TEMPLATE "NAPI[%lu,%lu,0x%03x,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu] " #endif #if CFG_NAPI_DELAY @@ -11759,9 +11784,10 @@ static uint32_t kalPerMonUpdate(struct ADAPTER *prAdapter) head3, RX_GET_CNT(&prAdapter->rRxCtrl, RX_INTR_COUNT), RX_GET_CNT(&prAdapter->rRxCtrl, RX_TASKLET_COUNT), - glue->fgNapiScheduled, + glue->napi.state, RX_GET_CNT(&prAdapter->rRxCtrl, RX_NAPI_WORK_COUNT), RX_GET_CNT(&prAdapter->rRxCtrl, RX_NAPI_SCHEDULE_COUNT), + RX_GET_CNT(&prAdapter->rRxCtrl, RX_NAPI_SCHEDULE_FAIL_COUNT), RX_GET_CNT(&prAdapter->rRxCtrl, RX_NAPI_LEGACY_SCHED_COUNT), RX_GET_CNT(&prAdapter->rRxCtrl, RX_NAPI_POLL_COUNT), RX_GET_CNT(&prAdapter->rRxCtrl, RX_NAPI_POLL_END_COUNT), @@ -14993,16 +15019,54 @@ void kal_napi_complete_done(struct napi_struct *n, int work_done) #endif /* KERNEL_VERSION(3, 19, 0) */ } -void kal_napi_schedule(struct napi_struct *n) +uint8_t kal_napi_schedule(struct napi_struct *n) { if (!n) - return; + return FALSE; #if KERNEL_VERSION(4, 0, 0) <= CFG80211_VERSION_CODE - if (in_interrupt()) + if (in_interrupt()) { napi_schedule_irqoff(n); - else + return TRUE; + } #endif /* KERNEL_VERSION(4, 0, 0) */ - napi_schedule(n); + + if (napi_schedule_prep(n)) { + __napi_schedule(n); + return TRUE; + } + + return FALSE; +} + +void kal_napi_synchronize(struct napi_struct *n) +{ + static OS_SYSTIME now, last; + uint32_t u4LastState; + + GET_CURRENT_SYSTIME(&last); + + if (IS_ENABLED(CONFIG_SMP)) + while (test_bit(NAPI_STATE_SCHED, &n->state)) { + msleep(1); + + u4LastState = n->state; + + GET_CURRENT_SYSTIME(&now); + if (CHECK_FOR_TIMEOUT(now, last, + MSEC_TO_SYSTIME(3 * MSEC_PER_SEC)) && + test_bit(NAPI_STATE_SCHED, &n->state)) { + clear_bit(NAPI_STATE_SCHED, &n->state); + clear_bit(NAPIF_STATE_NPSVC, &n->state); + DBGLOG(RX, WARN, + "RX NAPI synchronize timeout:%lu, reset state:0x%03x->0x%03x,\n", + (last - now) ? + ((last-now) / MSEC_PER_SEC) : 0, + u4LastState, + n->state); + } + } + else + barrier(); } #if CFG_SUPPORT_RX_GRO @@ -15121,11 +15185,11 @@ static inline void __kalNapiSchedule(struct ADAPTER *prAdapter) } prRxCtrl = &prAdapter->rRxCtrl; - - RX_INC_CNT(prRxCtrl, RX_NAPI_SCHEDULE_COUNT); - - GLUE_SET_REF_CNT(1, prGlueInfo->fgNapiScheduled); - kal_napi_schedule(prGlueInfo->prRxDirectNapi); + if (kal_napi_schedule(prGlueInfo->prRxDirectNapi)) { + RX_INC_CNT(prRxCtrl, RX_NAPI_SCHEDULE_COUNT); + } else { + RX_INC_CNT(prRxCtrl, RX_NAPI_SCHEDULE_FAIL_COUNT); + } } static inline void _kalNapiSchedule(struct ADAPTER *prAdapter) @@ -15140,40 +15204,55 @@ static inline void _kalNapiSchedule(struct ADAPTER *prAdapter) #endif /* CFG_SUPPORT_RX_NAPI_WORK */ } -static void kalNapiScheduleCheck(struct GLUE_INFO *pr) +static void kalNapiScheduleCheck(struct GLUE_INFO *prGlueInfo) { + struct WIFI_VAR *prWifiVar = &prGlueInfo->prAdapter->rWifiVar; static OS_SYSTIME now, last; uint32_t u4ScheduleTimeout; - uint32_t u4ScheduleCnt, u4NapiPollCnt; + uint32_t u4NapiPollCnt; - GET_BOOT_SYSTIME(&now); + GET_CURRENT_SYSTIME(&now); - u4ScheduleCnt = - RX_GET_CNT(&pr->prAdapter->rRxCtrl, RX_NAPI_SCHEDULE_COUNT); - u4NapiPollCnt = - RX_GET_CNT(&pr->prAdapter->rRxCtrl, RX_NAPI_POLL_COUNT); + u4NapiPollCnt = RX_GET_CNT(&prGlueInfo->prAdapter->rRxCtrl, + RX_NAPI_POLL_COUNT); - if (!pr->fgNapiScheduled) { - pr->u4LastScheduleCnt = u4ScheduleCnt; - pr->u4LastNapiPollCnt = u4NapiPollCnt; + if ((KAL_GET_FIFO_CNT(prGlueInfo) == 0 && + skb_queue_len(&prGlueInfo->rRxNapiSkbQ) == 0) || + prGlueInfo->u4LastNapiPollCnt != u4NapiPollCnt) { + prGlueInfo->u4LastNapiPollCnt = u4NapiPollCnt; + last = 0; + } else if ((KAL_GET_FIFO_CNT(prGlueInfo) != 0 || + skb_queue_len(&prGlueInfo->rRxNapiSkbQ) != 0)&& + u4NapiPollCnt == prGlueInfo->u4LastNapiPollCnt && + last == 0) { last = now; - return; - } - if (pr->u4LastNapiPollCnt != 0 && - u4ScheduleCnt > pr->u4LastScheduleCnt && - u4NapiPollCnt == pr->u4LastNapiPollCnt) { - u4ScheduleTimeout = - pr->prAdapter->rWifiVar.u4NapiScheduleTimeout - * MSEC_PER_SEC; - if (CHECK_FOR_TIMEOUT(now, last, - MSEC_TO_SYSTIME(u4ScheduleTimeout))) - kalSendAeeWarning("Napi Schedule Timeout", - "Napi Schedule Timeout\n"); + DBGLOG(INIT, WARN, + "FIFOCnt[%u] NapiSkbQ[%u] NapiState[%u] NapiPollCnt[%u/%u] Timestamp[%lu]\n", + KAL_GET_FIFO_CNT(prGlueInfo), + skb_queue_len(&prGlueInfo->rRxNapiSkbQ), + prGlueInfo->napi.state, + u4NapiPollCnt, prGlueInfo->u4LastNapiPollCnt, + last); } else { - pr->u4LastScheduleCnt = u4ScheduleCnt; - pr->u4LastNapiPollCnt = u4NapiPollCnt; - last = now; + u4ScheduleTimeout = prWifiVar->u4NapiScheduleTimeout + * MSEC_PER_SEC; + + if (CHECK_FOR_TIMEOUT(now, last, + MSEC_TO_SYSTIME(u4ScheduleTimeout))) { + DBGLOG(INIT, WARN, + "FIFOCnt[%u] NapiSkbQ[%u] NapiState[%u] NapiPollCnt[%u/%u] Timestamp[%lu/%lu]\n", + KAL_GET_FIFO_CNT(prGlueInfo), + skb_queue_len(&prGlueInfo->rRxNapiSkbQ), + prGlueInfo->napi.state, + u4NapiPollCnt, prGlueInfo->u4LastNapiPollCnt, + now, last); + GLUE_SET_REF_CNT(1, prGlueInfo->fgNapiScheduleTimeout); + if (prWifiVar->fgNapiScheduleAeeEn) + kalSendAeeWarning("Napi Schedule Timeout", + "Napi Schedule Timeout\n"); + + } } } @@ -15473,7 +15552,9 @@ int kalNapiPoll(struct napi_struct *napi, int budget) /* follow timeout rule in net_rx_action() */ const unsigned long ulTimeLimit = jiffies + 2; #endif - GLUE_SET_REF_CNT(0, prGlueInfo->fgNapiScheduled); + + GLUE_SET_REF_CNT(0, prGlueInfo->fgNapiScheduleTimeout); + RX_INC_CNT(&prGlueInfo->prAdapter->rRxCtrl, RX_NAPI_POLL_COUNT); if (HAL_IS_RX_DIRECT(prGlueInfo->prAdapter)) { @@ -15566,7 +15647,7 @@ next_try: kal_napi_complete_done(napi, work_done); if (skb_queue_len(prRxNapiSkbQ) && prGlueInfo->fgNapiReady) { RX_INC_CNT(&prAdapter->rRxCtrl, RX_NAPI_LEGACY_SCHED_COUNT); - napi_schedule(napi); + __napi_schedule(napi); } RX_INC_CNT(&prGlueInfo->prAdapter->rRxCtrl, RX_NAPI_POLL_END_COUNT); @@ -15588,14 +15669,13 @@ uint8_t kalNapiEnable(struct GLUE_INFO *prGlueInfo) uint8_t kalNapiDisable(struct GLUE_INFO *prGlueInfo) { DBGLOG(RX, INFO, "RX NAPI disable ongoing\n"); - GLUE_SET_REF_CNT(0, prGlueInfo->fgNapiScheduled); prGlueInfo->fgNapiReady = FALSE; #if CFG_NAPI_DELAY kalNapiDelayTimerUninit(prGlueInfo); #endif /* CFG_NAPI_DELAY */ - napi_synchronize(&prGlueInfo->napi); + kal_napi_synchronize(&prGlueInfo->napi); napi_disable(&prGlueInfo->napi); if (skb_queue_len(&prGlueInfo->rRxNapiSkbQ)) { struct sk_buff *skb; @@ -15607,6 +15687,7 @@ uint8_t kalNapiDisable(struct GLUE_INFO *prGlueInfo) != NULL) kfree_skb(skb); } + DBGLOG(RX, TRACE, "RX NAPI disabled\n"); return 0; } diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/gl_p2p_cfg80211.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/gl_p2p_cfg80211.c index 2daeeb9d..e334aea3 100644 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/gl_p2p_cfg80211.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/gl_p2p_cfg80211.c @@ -3050,6 +3050,7 @@ int _mtk_p2p_cfg80211_mgmt_tx(struct wiphy *wiphy, uint8_t ucRoleIdx = 0, ucBssIdx = 0; int32_t i4Rslt = -EINVAL; struct net_device *dev = NULL; + enum ENUM_P2P_CONNECT_STATE eCNNState; do { if ((wiphy == NULL) || (wdev == NULL) || @@ -3137,10 +3138,6 @@ int _mtk_p2p_cfg80211_mgmt_tx(struct wiphy *wiphy, break; } - prMsgTxReq->u8Cookie = *cookie; - prMsgTxReq->rMsgHdr.eMsgId = MID_MNY_P2P_MGMT_TX; - prMsgTxReq->ucBssIdx = ucBssIdx; - pucFrameBuf = (uint8_t *) ((unsigned long) prMgmtFrame->prPacket @@ -3158,6 +3155,19 @@ int _mtk_p2p_cfg80211_mgmt_tx(struct wiphy *wiphy, prMgmtFrame->u2FrameLength = len; + eCNNState = p2pFuncTagMgmtFrame(prMsgTxReq->prMgmtMsduInfo, + *cookie); + + prMsgTxReq->u8Cookie = *cookie; + prMsgTxReq->rMsgHdr.eMsgId = MID_MNY_P2P_MGMT_TX; + + if (eCNNState == P2P_CNN_INVITATION_REQ) { + DBGLOG(P2P, INFO, "INVITATION_REQ change bssIdx\n"); + prMsgTxReq->ucBssIdx = + prGlueInfo->prAdapter->ucP2PDevBssIdx; + } else + prMsgTxReq->ucBssIdx = ucBssIdx; + #define TEMP_LOG_TEMPLATE "[%s] bssIdx: %d, band: %d, chan: %d, " \ "offchan: %d, wait: %d, len: %d, no_cck: %d, " \ "dont_wait_for_ack: %d, link_id: %d, cookie: 0x%llx\n" @@ -3241,6 +3251,7 @@ int mtk_p2p_cfg80211_mgmt_tx_cancel_wait(struct wiphy *wiphy, uint8_t ucRetry = 0; struct MSG_CANCEL_TX_WAIT_REQUEST *prMsgCancelTxWait = (struct MSG_CANCEL_TX_WAIT_REQUEST *) NULL; + struct P2P_PENDING_MGMT_INFO *prPendingMgmtInfo = NULL; do { ASSERT(wiphy); @@ -3262,6 +3273,14 @@ int mtk_p2p_cfg80211_mgmt_tx_cancel_wait(struct wiphy *wiphy, } } + if (p2pFuncGetBssIdxByCookie(prGlueInfo->prAdapter, + ucRoleIdx, + &prPendingMgmtInfo, + cookie) && + prPendingMgmtInfo && + IS_BSS_INDEX_VALID(prPendingMgmtInfo->ucBssIdx)) + ucBssIdx = prPendingMgmtInfo->ucBssIdx; + DBGLOG(P2P, INFO, "bssIdx: %d, cookie: 0x%llx\n", ucBssIdx, cookie); diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/hif/common/kal_pdma.c b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/hif/common/kal_pdma.c index 2d81b06f..a2891684 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/hif/common/kal_pdma.c +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/hif/common/kal_pdma.c @@ -3014,10 +3014,12 @@ end: } #endif /* CFG_SUPPORT_PDMA_SCATTER */ -void kalCheckRxDmadAddr(struct RTMP_DMACB *pRxCell, +static u_int8_t kalCheckRxDmadAddr(struct GLUE_INFO *prGlueInfo, + struct RTMP_DMACB *pRxCell, struct RXD_STRUCT *pRxD, struct RTMP_DMABUF *prDmaBuf) { uint64_t u8Addr = 0; + struct ADAPTER *prAdapter = NULL; u8Addr = pRxD->SDPtr0; #ifdef CONFIG_PHYS_ADDR_T_64BIT @@ -3025,12 +3027,17 @@ void kalCheckRxDmadAddr(struct RTMP_DMACB *pRxCell, DMA_BITS_OFFSET; #endif if (u8Addr != (uint64_t)prDmaBuf->AllocPa) { - DBGLOG(HAL, ERROR, "Dump RXDMAD PA[0x%llx]!=[0x%llx]:\n", + DBGLOG(HAL, ERROR, + "Dump RXDMAD PA[0x%llx]!=[0x%llx]: Trigger SER\n", u8Addr, (uint64_t)prDmaBuf->AllocPa); - DBGLOG_MEM32(RX, INFO, pRxCell->AllocVa, - sizeof(struct RXD_STRUCT)); - ASSERT(0); + + prAdapter = prGlueInfo->prAdapter; + prAdapter->u4HifChkFlag |= HIF_DRV_SER; + kalSetHifDbgEvent(prGlueInfo); + return FALSE; } + + return TRUE; } bool kalDevReadData(struct GLUE_INFO *prGlueInfo, uint16_t u2Port, @@ -3119,7 +3126,11 @@ bool kalDevReadData(struct GLUE_INFO *prGlueInfo, uint16_t u2Port, prDmaBuf = &pRxCell->DmaBuf; - kalCheckRxDmadAddr(pRxCell, pRxD, prDmaBuf); + if (kalCheckRxDmadAddr(prGlueInfo, pRxCell, pRxD, prDmaBuf) + == FALSE) { + fgRet = false; + goto skip; + } if (prMemOps->copyRxData && !prMemOps->copyRxData(prHifInfo, pRxCell, prDmaBuf, prSwRfb)) { diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/hif/pcie/include/hif.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/hif/pcie/include/hif.h index 6d74276d..c92538c7 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/hif/pcie/include/hif.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/hif/pcie/include/hif.h @@ -619,6 +619,7 @@ struct BUS_INFO { u_int8_t (*checkPortForRxEventFromPse)(struct ADAPTER *prAdapter, uint8_t u2Port); #endif + struct timespec64 rHifIntTs; uint32_t u4EnHifIntTs; uint32_t u4HifIntTsCnt; diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/include/gl_kal.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/include/gl_kal.h index 21d9a660..cde5b8ee 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/include/gl_kal.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/include/gl_kal.h @@ -2531,13 +2531,12 @@ kalChannelFormatSwitch(struct cfg80211_chan_def *channel_def, struct RF_CHANNEL_INFO *prRfChnlInfo); void kal_napi_complete_done(struct napi_struct *n, int work_done); -void kal_napi_schedule(struct napi_struct *n); +uint8_t kal_napi_schedule(struct napi_struct *n); #if CFG_SUPPORT_RX_GRO uint8_t kalRxGroInit(struct net_device *prDev); uint32_t kal_is_skb_gro(struct ADAPTER *prAdapter, uint8_t ucBssIdx); void kal_gro_flush(struct ADAPTER *prAdapter); -void kal_napi_schedule(struct napi_struct *n); int kalNapiPoll(struct napi_struct *napi, int budget); uint8_t kalNapiInit(struct GLUE_INFO *prGlueInfo); uint8_t kalNapiUninit(struct GLUE_INFO *prGlueInfo); diff --git a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/include/gl_os.h b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/include/gl_os.h index b6900c0f..3a20b70a 100755 --- a/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/include/gl_os.h +++ b/vendor/mediatek/kernel_modules/connectivity/wlan/core/gen4m/os/linux/include/gl_os.h @@ -1053,10 +1053,9 @@ struct GLUE_INFO { struct napi_struct *prRxDirectNapi; struct kfifo rRxKfifoQ; u_int8_t fgNapiReady; + u_int8_t fgNapiScheduleTimeout; uint8_t *prRxKfifoBuf; uint32_t u4RxKfifoBufLen; - u_int8_t fgNapiScheduled; - uint32_t u4LastScheduleCnt; uint32_t u4LastNapiPollCnt; #if CFG_NAPI_DELAY struct hrtimer rNapiDelayTimer; diff --git a/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/mali_kbase_mem_migrate.c b/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/mali_kbase_mem_migrate.c index 3be79b6e..8be1c9b9 100644 --- a/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/mali_kbase_mem_migrate.c +++ b/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/mali_kbase_mem_migrate.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note /* * - * (C) COPYRIGHT 2022-2024 ARM Limited. All rights reserved. + * (C) COPYRIGHT 2022-2025 ARM Limited. All rights reserved. * * This program is free software and is provided to you under the terms of the * GNU General Public License version 2 as published by the Free Software @@ -157,9 +157,8 @@ static void kbase_free_pages_worker(struct work_struct *work) __ClearPageMovable(p); page_md->status = PAGE_MOVABLE_CLEAR(page_md->status); } - unlock_page(p); - kbase_free_page_metadata(kbdev, p, &group_id); + unlock_page(p); kbdev->mgm_dev->ops.mgm_free_page(kbdev->mgm_dev, group_id, p, 0); } } diff --git a/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/mmu/mali_kbase_mmu.c b/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/mmu/mali_kbase_mmu.c index 879510dd..1efd1d16 100644 --- a/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/mmu/mali_kbase_mmu.c +++ b/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/mmu/mali_kbase_mmu.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note /* * - * (C) COPYRIGHT 2010-2024 ARM Limited. All rights reserved. + * (C) COPYRIGHT 2010-2025 ARM Limited. All rights reserved. * * This program is free software and is provided to you under the terms of the * GNU General Public License version 2 as published by the Free Software @@ -4635,6 +4635,8 @@ static void kbase_mmu_mark_non_movable(struct kbase_device *const kbdev, struct if (!kbase_is_page_migration_enabled()) return; + lock_page(page); + /* Composite large-page is excluded from migration, trigger a warn if a development * wrongly leads to it. */ @@ -4650,7 +4652,9 @@ static void kbase_mmu_mark_non_movable(struct kbase_device *const kbdev, struct if (IS_PAGE_MOVABLE(page_md->status)) page_md->status = PAGE_MOVABLE_CLEAR(page_md->status); + __ClearPageMovable(page); spin_unlock(&page_md->migrate_lock); + unlock_page(page); } int kbase_mmu_init(struct kbase_device *const kbdev, struct kbase_mmu_table *const mmut, diff --git a/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/platform/mt6991/mali_kbase_config_mt6991.c b/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/platform/mt6991/mali_kbase_config_mt6991.c index 68664af1..f304f532 100644 --- a/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/platform/mt6991/mali_kbase_config_mt6991.c +++ b/vendor/mediatek/kernel_modules/gpu/gpu_mali/mali_avalon/mali-r49p1/drivers/gpu/arm/midgard/platform/mt6991/mali_kbase_config_mt6991.c @@ -452,19 +452,14 @@ static void pm_callback_runtime_gpu_active(struct kbase_device *kbdev) mtk_common_ged_dvfs_write_sysram_last_commit_top_idx(); mtk_common_ged_dvfs_write_sysram_last_commit_dual(); - if (pm_runtime_status_suspended(kbdev->dev)) { - error = pm_runtime_get_sync(kbdev->dev); - KBASE_PLATFORM_LOGD("pm_runtime_get_sync returned %d", error); - } else { - /* Call the async version here, otherwise there could be - * a deadlock if the runtime suspend operation is ongoing. - * Caller would have taken the kbdev->pm.lock and/or the - * scheduler lock, and the runtime suspend callback function - * will also try to acquire the same lock(s). - */ - error = pm_runtime_get(kbdev->dev); - KBASE_PLATFORM_LOGD("pm_runtime_get returned %d", error); - } + /* Call the async version here, otherwise there could be + * a deadlock if the runtime suspend operation is ongoing. + * Caller would have taken the kbdev->pm.lock and/or the + * scheduler lock, and the runtime suspend callback function + * will also try to acquire the same lock(s). + */ + error = pm_runtime_get(kbdev->dev); + KBASE_PLATFORM_LOGD("pm_runtime_get returned %d", error); kbdev->pm.runtime_active = true; diff --git a/vendor/mediatek/kernel_modules/mtkcam/cam_cal/src_v4l2/custom/cam_cal_config.c b/vendor/mediatek/kernel_modules/mtkcam/cam_cal/src_v4l2/custom/cam_cal_config.c index 0481613d..0060d4b5 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/cam_cal/src_v4l2/custom/cam_cal_config.c +++ b/vendor/mediatek/kernel_modules/mtkcam/cam_cal/src_v4l2/custom/cam_cal_config.c @@ -1137,7 +1137,7 @@ EXPORT_SYMBOL(read_cam_cal); void custom_eeprom_read(bool *is_valid, void *d_data) { *is_valid = (preload_ois.valid == 0x01) ? true : false; - if (d_data) + if (d_data && (*is_valid)) memcpy(d_data, preload_ois.ois_table, sizeof(preload_ois.ois_table)); return; } diff --git a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job.c b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job.c index f248c260..13c94b28 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job.c +++ b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job.c @@ -70,6 +70,19 @@ static inline bool check_qof_support(struct mtk_cam_job *job) return (GET_PLAT_HW(qof_support) && !disable_qof && !job->enable_hsf_raw && !is_ois_compensation(job)); } +#ifdef OPLUS_FEATURE_CAMERA_COMMON +/* wa: for performace, dc mode work buffer increasing */ +static inline void wa_for_srt(struct mtk_cam_job *job) +{ + if (!is_dc_mode(job)) { + return; + } + if (is_buffer_increase(job)) { + job->scq_period = job->scq_period * 10; + } +} +#endif + static struct mtk_raw_request_data *req_get_raw_data(struct mtk_cam_ctx *ctx, struct mtk_cam_request *req); static bool is_sensor_mode_update(struct mtk_cam_job *job); @@ -1277,11 +1290,11 @@ _stream_on(struct mtk_cam_job *job, bool on) /* ois compensation */ #ifndef OPLUS_FEATURE_CAMERA_COMMON if (is_ois_compensation(job)) - mtk_cam_tuning_init(&job->tuning_param); + mtk_cam_tuning_init(job); #else /*OPLUS_FEATURE_CAMERA_COMMON*/ if (is_ois_compensation(job)) { ctx->is_ois_compensation = 1; - mtk_cam_tuning_init(&job->tuning_param); + mtk_cam_tuning_init(job); } #endif /*OPLUS_FEATURE_CAMERA_COMMON*/ @@ -3048,6 +3061,11 @@ _job_pack_otf_stagger(struct mtk_cam_job *job, /* check if slave raw need to init or uninit */ job_raw_change_hw_init(job); } + +#ifdef OPLUS_FEATURE_CAMERA_COMMON + wa_for_srt(job); +#endif + job->do_ipi_config = false; if (check_if_need_configure(ctx->configured, job->seamless_switch, job->raw_switch, job->raw_change)) { @@ -3329,6 +3347,11 @@ _job_pack_normal(struct mtk_cam_job *job, /* check if slave/new raw need to uninit or init */ job_raw_change_hw_init(job); } + +#ifdef OPLUS_FEATURE_CAMERA_COMMON + wa_for_srt(job); +#endif + job->do_ipi_config = false; if (check_if_need_configure(ctx->configured, job->seamless_switch, @@ -4413,7 +4436,7 @@ _common_seamless_after_frame_done(struct mtk_cam_job *job) job, job->raw_change_uninit_engine); if (is_ois_comp) - mtk_cam_tuning_init(&job->tuning_param); + mtk_cam_tuning_init(job); lock_done_ctrl_enable(raw_dev, is_ois_comp); stream_on(raw_dev, 1, false); diff --git a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job_utils.c b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job_utils.c old mode 100644 new mode 100755 index 7765cfff..1dd2fd94 --- a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job_utils.c +++ b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job_utils.c @@ -2007,7 +2007,18 @@ bool is_ois_compensation(struct mtk_cam_job *job) return res_raw_ois_compensation(&res->raw_res); } +#ifdef OPLUS_FEATURE_CAMERA_COMMON +bool is_buffer_increase(struct mtk_cam_job *job) +{ + struct mtk_cam_resource_v2 *res; + res = _get_job_res(job); + if (!res) + return false; + + return res_raw_is_buffer_increase(&res->raw_res); +} +#endif bool is_rgbw(struct mtk_cam_job *job) { return scen_is_rgbw(&job->job_scen); diff --git a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job_utils.h b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job_utils.h old mode 100644 new mode 100755 index 763a8260..428defdc --- a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job_utils.h +++ b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-job_utils.h @@ -151,6 +151,9 @@ int get_exp_order(struct mtk_cam_scen *scen); bool is_vhdr(struct mtk_cam_job *job); bool is_dc_mode(struct mtk_cam_job *job); bool is_ois_compensation(struct mtk_cam_job *job); +#ifdef OPLUS_FEATURE_CAMERA_COMMON +bool is_buffer_increase(struct mtk_cam_job *job); +#endif bool is_sv_pure_raw(struct mtk_cam_job *job); bool is_offline_timeshare(struct mtk_cam_job *job); bool is_rgbw(struct mtk_cam_job *job); diff --git a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-raw_ctrl.h b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-raw_ctrl.h old mode 100644 new mode 100755 index 66d42923..f461ee46 --- a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-raw_ctrl.h +++ b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-raw_ctrl.h @@ -33,6 +33,13 @@ bool res_raw_ois_compensation(const struct mtk_cam_resource_raw_v2 *res_raw) return res_raw->ois_compensation == 1; } +#ifdef OPLUS_FEATURE_CAMERA_COMMON +static inline +bool res_raw_is_buffer_increase(const struct mtk_cam_resource_raw_v2 *res_raw) +{ + return res_raw->buffer_increase == 1; +} +#endif static inline bool scen_is_normal(const struct mtk_cam_scen *scen) { return scen->id == MTK_CAM_SCEN_NORMAL || diff --git a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-raw_pipeline.c b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-raw_pipeline.c index bf35d68a..1a2e16e4 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-raw_pipeline.c +++ b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-raw_pipeline.c @@ -311,10 +311,29 @@ mtk_cam_resource_update_work_buf(struct mtk_cam_resource_v2 *user_ctrl) exp_num = (scen->scen.normal.exp_num == 0) ? 1 : scen->scen.normal.exp_num; #endif /*OPLUS_FEATURE_CAMERA_COMMON*/ + +#ifdef OPLUS_FEATURE_CAMERA_COMMON + /* wa: for performace, dc mode work buffer increasing */ + if (r->buffer_increase == 1) { + buf_require = res_raw_is_dc_mode(r) ? exp_num * 2 : exp_num - 1; + buf_require = !!(scen->scen.normal.w_chn_supported) ? + buf_require * 2 : buf_require; + if (res_raw_is_dc_mode(r)) + buf_require = buf_require + (r->ois_compensation ? exp_num : 0); + else + buf_require = buf_require * (r->ois_compensation ? 2 : 1); + } else { + buf_require = res_raw_is_dc_mode(r) ? exp_num : exp_num - 1; + buf_require = !!(scen->scen.normal.w_chn_supported) ? + buf_require * 2 : buf_require; + buf_require = buf_require * (r->ois_compensation ? 2 : 1); + } +#else buf_require = res_raw_is_dc_mode(r) ? exp_num : exp_num - 1; buf_require = !!(scen->scen.normal.w_chn_supported) ? buf_require * 2 : buf_require; buf_require = buf_require * (r->ois_compensation ? 2 : 1); +#endif break; case MTK_CAM_SCEN_MSTREAM: buf_require = res_raw_is_dc_mode(r) ? 2 : 1; diff --git a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-tuning.c b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-tuning.c index 35873ed6..c883aae3 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-tuning.c +++ b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-tuning.c @@ -5,10 +5,15 @@ #include "mtk_cam.h" +// This macro needs to be consistent with the macro definition in the following file +// vendor/oplus/hardware/camera/mtkcam/mtkcam-custom/aaa/aaa/lsc/OplusShadingUtil.cpp #define OTP_SIZE 2340 +#define OTP_DATA_INDEX_NUM (9) +#define OTP_DATA_TABLE_NUM (130) extern void custom_eeprom_read(bool *is_valid, void *d_data); static bool do_set_otp_once; static unsigned char ois_otp[OTP_SIZE]; +static unsigned char swap_ois_otp[OTP_SIZE]; /* @@ -1439,6 +1444,36 @@ void oplus_cam_copy_res(int *pInBuf, struct mtk_cam_tuning *param) } } +void oplus_get_sensor_mirror_type(struct mtk_cam_job *job, u8* mirror) +{ + if (job && + job->sensor && + job->sensor->ops && + job->sensor->ops->core && + job->sensor->ops->core->command) { + job->sensor->ops->core->command(job->sensor, + V4L2_CMD_GET_SENSOR_MIRROR_TYPE, + mirror); + } +} + +void oplus_swap_otp_data(unsigned char* ori_otp_data, unsigned char* swap_otp_data) +{ + int i; + int j; + for (i = 0; i < OTP_DATA_INDEX_NUM; i++) { + swap_otp_data[i * (OTP_DATA_TABLE_NUM * 2)] = ori_otp_data[i * (OTP_DATA_TABLE_NUM * 2)]; + swap_otp_data[i * (OTP_DATA_TABLE_NUM * 2) + 1] = ori_otp_data[i * (OTP_DATA_TABLE_NUM * 2) + 1]; + for (j = 1; j < OTP_DATA_TABLE_NUM; j++) { + swap_otp_data[i * (OTP_DATA_TABLE_NUM * 2) + j * 2] = + ori_otp_data[i * (OTP_DATA_TABLE_NUM * 2) + (OTP_DATA_TABLE_NUM - j) * 2]; + swap_otp_data[i * (OTP_DATA_TABLE_NUM * 2) + j * 2 + 1] = + ori_otp_data[i * (OTP_DATA_TABLE_NUM * 2) + (OTP_DATA_TABLE_NUM - j) * 2 + 1]; + } + } + pr_info("%s: \n", __func__); +} + /* * oplus's part: end */ @@ -1447,8 +1482,9 @@ void mtk_cam_tuning_probe(void) { } -void mtk_cam_tuning_init(struct mtk_cam_tuning *param) +void mtk_cam_tuning_init(struct mtk_cam_job *job) { + u8 mirror = IMAGE_NORMAL; pr_info("%s: platform_id:%u \n", __func__, GET_PLAT_HW(platform_id)); if (!do_set_otp_once) { @@ -1458,7 +1494,17 @@ void mtk_cam_tuning_init(struct mtk_cam_tuning *param) custom_eeprom_read(&is_otp_valid, (void *)ois_otp); - mtk_set_ois_table(&is_otp_valid, (void *)ois_otp, OTP_SIZE); + if (is_otp_valid) { + oplus_get_sensor_mirror_type(job, &mirror); + } + + if (mirror == IMAGE_V_MIRROR) { + oplus_swap_otp_data(ois_otp, swap_ois_otp); + mtk_set_ois_table(&is_otp_valid, (void *)swap_ois_otp, OTP_SIZE); + } else { + mtk_set_ois_table(&is_otp_valid, (void *)ois_otp, OTP_SIZE); + } + pr_info("%s: mirror:%u \n", __func__, mirror); } if (GET_PLAT_HW(platform_id) == 6899) { diff --git a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-tuning.h b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-tuning.h index b75972a8..b48891d5 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-tuning.h +++ b/vendor/mediatek/kernel_modules/mtkcam/camsys/isp8/cam/mtk_cam-tuning.h @@ -53,7 +53,7 @@ struct mtk_cam_tuning { void mtk_cam_tuning_probe(void); -void mtk_cam_tuning_init(struct mtk_cam_tuning *param); +void mtk_cam_tuning_init(struct mtk_cam_job *job); void mtk_cam_tuning_update(struct mtk_cam_tuning *param); @@ -90,6 +90,10 @@ void oplus_cam_calc_ois_data(struct mtk_cam_tuning *param, struct out_ois_param void oplus_cam_copy_res(int *pInBuf, struct mtk_cam_tuning *param); int oplus_cam_poll_ois_thread(void *arg); + +void oplus_get_sensor_mirror_type(struct mtk_cam_job *job, u8* mirror); + +void oplus_swap_otp_data(unsigned char* ori_otp_data, unsigned char* swap_otp_data); /* * oplus's part: end */ diff --git a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-command.c b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-command.c index c7c57658..0801bd5b 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-command.c +++ b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-command.c @@ -338,6 +338,23 @@ static int g_cmd_g_sensor_stream_status(struct adaptor_ctx *ctx, void *arg) return ret; } +// #define OPLUS_FEATURE_CAMERA_COMMON +static int g_cmd_sensor_mirror_type(struct adaptor_ctx *ctx, void *arg) +{ + int ret = 0; + u8 *mirror = NULL; + + /* unexpected case, arg is nullptr */ + if (unlikely((chk_input_arg(ctx, arg, &ret, __func__)) != 0)) + return ret; + + mirror = arg; + *mirror = ctx->subctx.s_ctx.mirror; + + return ret; +} +// #endif + /* SET */ static int s_cmd_fsync_sync_frame_start_end(struct adaptor_ctx *ctx, void *arg) @@ -622,6 +639,9 @@ static const struct command_entry command_list[] = { {V4L2_CMD_G_SENSOR_VC_INFO_BY_SCENARIO, g_cmd_sensor_vc_info_by_scenario}, {V4L2_CMD_G_SENSOR_STREAM_STATUS, g_cmd_g_sensor_stream_status}, {V4L2_CMD_G_SENSOR_FAKE_SENSOR_INFO, g_cmd_fake_sensor_info}, +// #define OPLUS_FEATURE_CAMERA_COMMON + {V4L2_CMD_GET_SENSOR_MIRROR_TYPE, g_cmd_sensor_mirror_type}, +// #endif /* SET */ {V4L2_CMD_FSYNC_SYNC_FRAME_START_END, s_cmd_fsync_sync_frame_start_end}, diff --git a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-drv.c b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-drv.c index 02a4f68a..96ca0fad 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-drv.c +++ b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-drv.c @@ -58,10 +58,6 @@ MODULE_PARM_DESC(sensor_debug, "imgsensor_debug"); unsigned int gSensor_num; unsigned int is_multicam; unsigned int is_imgsensor_fusion_test_workaround; -#ifdef OPLUS_FEATURE_CAMERA_COMMON -extern struct mutex dw9786_mutex; -bool dw9786_mutex_init_flag = false; -#endif /*OPLUS_FEATURE_CAMERA_COMMON*/ static void get_outfmt_code(struct adaptor_ctx *ctx) { @@ -1539,13 +1535,6 @@ static int imgsensor_probe(struct i3c_i2c_device *client) mutex_init(&ctx->mutex); mutex_init(&ctx->ebd_lock); mutex_init(&ctx->subctx.i2c_buffer_lock); -#ifdef OPLUS_FEATURE_CAMERA_COMMON - if (!dw9786_mutex_init_flag) { - mutex_init(&dw9786_mutex); - adaptor_loge(ctx, "dw9786_mutex init\n"); - dw9786_mutex_init_flag = true; - } -#endif /*OPLUS_FEATURE_CAMERA_COMMON*/ if (sentest_probe_init(ctx)) adaptor_loge(ctx, "sentest_probe_init return failed\n"); @@ -1785,13 +1774,6 @@ static void imgsensor_remove(struct i3c_i2c_device *client) device_remove_file(ctx->dev, &dev_attr_debug_sensor_mode_ops); mutex_destroy(&ctx->mutex); -#ifdef OPLUS_FEATURE_CAMERA_COMMON - if (dw9786_mutex_init_flag) { - mutex_destroy(&dw9786_mutex); - adaptor_loge(ctx, "dw9786_mutex destroy\n"); - dw9786_mutex_init_flag = false; - } -#endif /*OPLUS_FEATURE_CAMERA_COMMON*/ } diff --git a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-subdrv-ctrl.c b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-subdrv-ctrl.c index d4532b95..81e1952c 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-subdrv-ctrl.c +++ b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-subdrv-ctrl.c @@ -28,12 +28,6 @@ #include "adaptor-subdrv.h" #endif -#ifdef OPLUS_FEATURE_CAMERA_COMMON -#define KONKAUTELE_AF_SLAVE_ID 0x32 -#define DW9786_CHIP_EN 0xE000 -extern struct mutex dw9786_mutex; -#endif /*OPLUS_FEATURE_CAMERA_COMMON*/ - static const char * const clk_names[] = { ADAPTOR_CLK_NAMES }; @@ -179,6 +173,28 @@ u64 ixc_table_rewrite(struct subdrv_ctx *ctx, u16 *list, u32 len) ixc_end = ktime_get_boottime_ns(); return (ixc_end-ixc_start)/1000; } + +static void get_sensor_hw_mode(struct subdrv_ctx *ctx, + enum SENSOR_SCENARIO_ID_ENUM scenario_id, u64 *val) { + u8 *hw_mode = (u8 *)(uintptr_t)(*val); + if (scenario_id >= ctx->s_ctx.sensor_mode_num) { + DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n", + scenario_id, ctx->s_ctx.sensor_mode_num); + scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW; + } + *hw_mode = ctx->s_ctx.mode[scenario_id].hw_mode; +} + +static void get_sensor_buffer_increase(struct subdrv_ctx *ctx, + enum SENSOR_SCENARIO_ID_ENUM scenario_id, u64 *val) { + u8 *buffer_increase = (u8 *)(uintptr_t)(*val); + if (scenario_id >= ctx->s_ctx.sensor_mode_num) { + DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n", + scenario_id, ctx->s_ctx.sensor_mode_num); + scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW; + } + *buffer_increase = ctx->s_ctx.mode[scenario_id].buffer_increase; +} #endif /*OPLUS_FEATURE_CAMERA_COMMON*/ static void dump_i2c_buf(struct subdrv_ctx *ctx) @@ -366,38 +382,12 @@ bool probe_eeprom(struct subdrv_ctx *ctx) u32 header_id = 0; u32 addr_header_id = 0; struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info; -#ifdef OPLUS_FEATURE_CAMERA_COMMON - unsigned short stdby[17] = {0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000}; - u16 dw9786_status; - int ret = 0; -#endif /*OPLUS_FEATURE_CAMERA_COMMON*/ if (info == NULL) { DRV_LOG_MUST(ctx, "sensor no support eeprom\n"); return FALSE; } -#ifdef OPLUS_FEATURE_CAMERA_COMMON - if(ctx->s_ctx.sensor_id == KONKAUTELE_SENSOR_ID) { - mutex_lock(&dw9786_mutex); - DRV_LOG_MUST(ctx, "dw9786_mutex: %p\n", &dw9786_mutex); - ret = adaptor_i2c_rd_u16(ctx->i2c_client, KONKAUTELE_AF_SLAVE_ID>> 1, DW9786_CHIP_EN, &dw9786_status); - DRV_LOG_MUST(ctx, "DW9786_CHIP_EN: 0x%x, ret: %d\n", dw9786_status, ret); - if (dw9786_status != 1) { - DRV_LOG_MUST(ctx, "dw9786 probe_eeprom open read protect\n"); - adaptor_i2c_wr_u16(ctx->i2c_client, KONKAUTELE_AF_SLAVE_ID>> 1, DW9786_CHIP_EN, 0x0000); - mdelay(2); - adaptor_i2c_wr_p8(ctx->i2c_client, KONKAUTELE_AF_SLAVE_ID>> 1, DW9786_CHIP_EN, (unsigned char *)stdby, 34); - mdelay(5); - adaptor_i2c_wr_u16(ctx->i2c_client, KONKAUTELE_AF_SLAVE_ID>> 1, 0xE004, 0x0001); - mdelay(20); - } - mutex_unlock(&dw9786_mutex); - } -#endif /*OPLUS_FEATURE_CAMERA_COMMON*/ - eeprom_num = ctx->s_ctx.eeprom_num; if (ctx->eeprom_index < ctx->s_ctx.eeprom_num) { DRV_LOG_MUST(ctx, "index:%u\n", ctx->eeprom_index); @@ -4511,6 +4501,14 @@ int common_feature_control(struct subdrv_ctx *ctx, MSDK_SENSOR_FEATURE_ENUM feat (u64 *)(feature_data + 1)); break; case SENSOR_FEATURE_GET_HW_MODE: + get_sensor_hw_mode(ctx, + (enum SENSOR_SCENARIO_ID_ENUM)*(feature_data), + feature_data + 1); + break; + case SENSOR_FEATURE_GET_BUFFER_INCREASE: + get_sensor_buffer_increase(ctx, + (enum SENSOR_SCENARIO_ID_ENUM)*(feature_data), + feature_data + 1); break; #endif /*OPLUS_FEATURE_CAMERA_COMMON*/ default: @@ -4915,4 +4913,5 @@ void get_sensor_setting_info(struct subdrv_ctx *ctx, (void *)&ctx->s_ctx.mode[scenario_id].sensor_setting_info, sizeof(struct SENSOR_SETTING_INFO_STRUCT)); } -#endif /*OPLUS_FEATURE_CAMERA_COMMON*/ \ No newline at end of file + +#endif /*OPLUS_FEATURE_CAMERA_COMMON*/ diff --git a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-subdrv.h b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-subdrv.h index 0726bf3a..e1944abd 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-subdrv.h +++ b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-isp8/adaptor-subdrv.h @@ -294,6 +294,7 @@ struct subdrv_mode_struct { #ifdef OPLUS_FEATURE_CAMERA_COMMON struct SENSOR_SETTING_INFO_STRUCT sensor_setting_info; u8 hw_mode;//2:DC MODE, 1:OTF MODE, 0:defalut + u8 buffer_increase;// 1:need increase, 0:no increase #endif /*OPLUS_FEATURE_CAMERA_COMMON*/ }; diff --git a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-v4l2/adaptor-command.c b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-v4l2/adaptor-command.c old mode 100644 new mode 100755 index 496fbbe1..0b9d7848 --- a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-v4l2/adaptor-command.c +++ b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src-v4l2/adaptor-command.c @@ -299,6 +299,23 @@ static int g_cmd_sensor_vc_info_by_scenario(struct adaptor_ctx *ctx, void *arg) return ret; } +// #define OPLUS_FEATURE_CAMERA_COMMON +static int g_cmd_sensor_mirror_type(struct adaptor_ctx *ctx, void *arg) +{ + int ret = 0; + u8 *mirror = NULL; + + /* unexpected case, arg is nullptr */ + if (unlikely((chk_input_arg(ctx, arg, &ret, __func__)) != 0)) + return ret; + + mirror = arg; + *mirror = ctx->subctx.s_ctx.mirror; + + return ret; +} +// #endif + /* SET */ static int s_cmd_fsync_sync_frame_start_end(struct adaptor_ctx *ctx, void *arg) { @@ -481,6 +498,9 @@ static const struct command_entry command_list[] = { {V4L2_CMD_G_SENSOR_FRAME_CNT, g_cmd_sensor_frame_cnt}, {V4L2_CMD_G_SENSOR_GLP_DT, g_cmd_sensor_glp_dt}, {V4L2_CMD_G_SENSOR_VC_INFO_BY_SCENARIO, g_cmd_sensor_vc_info_by_scenario}, +// #define OPLUS_FEATURE_CAMERA_COMMON + {V4L2_CMD_GET_SENSOR_MIRROR_TYPE, g_cmd_sensor_mirror_type}, +// #endif /* SET */ {V4L2_CMD_FSYNC_SYNC_FRAME_START_END, s_cmd_fsync_sync_frame_start_end}, diff --git a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src_spm-isp8/adaptor-command.c b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src_spm-isp8/adaptor-command.c old mode 100644 new mode 100755 index e22a1737..12e41fcd --- a/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src_spm-isp8/adaptor-command.c +++ b/vendor/mediatek/kernel_modules/mtkcam/imgsensor/src_spm-isp8/adaptor-command.c @@ -300,6 +300,23 @@ static int g_cmd_sensor_vc_info_by_scenario(struct adaptor_ctx *ctx, void *arg) return ret; } +// #define OPLUS_FEATURE_CAMERA_COMMON +static int g_cmd_sensor_mirror_type(struct adaptor_ctx *ctx, void *arg) +{ + int ret = 0; + u8 *mirror = NULL; + + /* unexpected case, arg is nullptr */ + if (unlikely((chk_input_arg(ctx, arg, &ret, __func__)) != 0)) + return ret; + + mirror = arg; + *mirror = ctx->subctx.s_ctx.mirror; + + return ret; +} +// #endif + /* SET */ static int s_cmd_fsync_sync_frame_start_end(struct adaptor_ctx *ctx, void *arg) { @@ -485,6 +502,9 @@ static const struct command_entry command_list[] = { {V4L2_CMD_G_SENSOR_FRAME_CNT, g_cmd_sensor_frame_cnt}, {V4L2_CMD_G_SENSOR_GLP_DT, g_cmd_sensor_glp_dt}, {V4L2_CMD_G_SENSOR_VC_INFO_BY_SCENARIO, g_cmd_sensor_vc_info_by_scenario}, +// #define OPLUS_FEATURE_CAMERA_COMMON + {V4L2_CMD_GET_SENSOR_MIRROR_TYPE, g_cmd_sensor_mirror_type}, +// #endif /* SET */ {V4L2_CMD_FSYNC_SYNC_FRAME_START_END, s_cmd_fsync_sync_frame_start_end}, diff --git a/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/cmdq/isp8/mtk_imgsys-cmdq-qos.c b/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/cmdq/isp8/mtk_imgsys-cmdq-qos.c index bc38d133..fa7633cb 100644 --- a/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/cmdq/isp8/mtk_imgsys-cmdq-qos.c +++ b/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/cmdq/isp8/mtk_imgsys-cmdq-qos.c @@ -210,6 +210,7 @@ void mtk_imgsys_mmqos_set_by_scen_plat8(struct mtk_imgsys_dev *imgsys_dev, u64 bw_final[4] = {0}; u32 sidx = 0; const u32 step = imgsys_qos_update_freq; + uint8_t boost = frm_info->user_info[0].boost; frm_num = frm_info->total_frmnum; hw_comb = frm_info->user_info[frm_num-1].hw_comb; @@ -220,12 +221,12 @@ void mtk_imgsys_mmqos_set_by_scen_plat8(struct mtk_imgsys_dev *imgsys_dev, if (imgsys_cmdq_is_stream_off() == 0 && isSet == 1) { if (imgsys_qos_dbg_enable_plat8()) dev_info(qos_info->dev, - "imgsys_qos: frame_no:%d req_cnt:%lu fps:%d vss:%d\n", + "imgsys_qos: frame_no:%d req_cnt:%lu fps:%d vss:%d boost:0x%X\n", frm_info->frame_no, qos_info->req_cnt, - fps, dvfs_info->vss_task_cnt); + fps, dvfs_info->vss_task_cnt, boost); - if (dvfs_info->vss_task_cnt > 0 && - qos_info->qos_path[IMGSYS_COMMON_0_R].bw < IMGSYS_QOS_MAX_PERF) { + if ((dvfs_info->vss_task_cnt > 0 || boost == 0xFF) && + qos_info->qos_path[IMGSYS_COMMON_0_R].bw < IMGSYS_QOS_MAX_PERF) { qos_info->qos_path[IMGSYS_COMMON_0_R].bw = IMGSYS_QOS_MAX_PERF; qos_info->qos_path[IMGSYS_COMMON_0_W].bw = IMGSYS_QOS_MAX_PERF; qos_info->qos_path[IMGSYS_COMMON_1_R].bw = IMGSYS_QOS_MAX_PERF; @@ -298,7 +299,8 @@ void mtk_imgsys_mmqos_set_by_scen_plat8(struct mtk_imgsys_dev *imgsys_dev, qos_info->bw_avg[1][1] += bw_final[3]; qos_info->avg_cnt++; - if (dvfs_info->vss_task_cnt == 0 && + if ((dvfs_info->vss_task_cnt == 0) && + (boost != 0xFF) && ((qos_info->avg_cnt >= step) || (qos_info->req_cnt <= 1))) { /* unit is MB/s */ @@ -351,6 +353,15 @@ void mtk_imgsys_mmqos_set_by_scen_plat8(struct mtk_imgsys_dev *imgsys_dev, } } + if (boost == 0xFF) { + /* reset QoS info */ + qos_info->req_cnt = 0; + qos_info->avg_cnt = 0; + qos_info->bw_avg[0][0] = 0; + qos_info->bw_avg[0][1] = 0; + qos_info->bw_avg[1][0] = 0; + qos_info->bw_avg[1][1] = 0; + } } } diff --git a/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/isp8/mtk-img-ipi.h b/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/isp8/mtk-img-ipi.h index fea6a403..e949e437 100644 --- a/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/isp8/mtk-img-ipi.h +++ b/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/isp8/mtk-img-ipi.h @@ -149,7 +149,7 @@ struct img_swfrm_info { uint64_t sw_bwoft; int subfrm_idx; void *g_swbuf; - void *bw_swbuf; + uint64_t boost; uint64_t pixel_bw; int tunmeta_size; struct private_data priv[IMGSYS_MAX]; diff --git a/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/isp8/mtk_imgsys-sys.c b/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/isp8/mtk_imgsys-sys.c index a98ca409..fe9cd891 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/isp8/mtk_imgsys-sys.c +++ b/vendor/mediatek/kernel_modules/mtkcam/imgsys/imgsys/isp8/mtk_imgsys-sys.c @@ -756,9 +756,9 @@ static void cmdq_cb_done_worker(struct work_struct *work) &swbuf_data, sizeof(struct img_sw_buffer), gwork->reqfd, 0); else - imgsys_send(pipe->imgsys_dev->scp_pdev, HCP_IMGSYS_DEQUE_DONE_ID, - &swbuf_data, sizeof(struct img_sw_buffer), - gwork->reqfd, 0); + imgsys_send(pipe->imgsys_dev->scp_pdev, HCP_IMGSYS_DEQUE_DONE_ID, + &swbuf_data, sizeof(struct img_sw_buffer), + gwork->reqfd, 0); wake_up_interruptible(&frm_info_waitq); @@ -2236,7 +2236,6 @@ unsigned int mode = imgsys_streaming; } for (i = 0 ; i < swfrm_info->total_frmnum ; i++) { swfrm_info->user_info[i].g_swbuf = gce_virt + (swfrm_info->user_info[i].sw_goft); - swfrm_info->user_info[i].bw_swbuf = gce_virt + (swfrm_info->user_info[i].sw_bwoft); } /*first group in request*/ diff --git a/vendor/mediatek/kernel_modules/mtkcam/include/mtk_camera-v4l2-controls-8.h b/vendor/mediatek/kernel_modules/mtkcam/include/mtk_camera-v4l2-controls-8.h old mode 100644 new mode 100755 index b8ea8007..40c3bbdb --- a/vendor/mediatek/kernel_modules/mtkcam/include/mtk_camera-v4l2-controls-8.h +++ b/vendor/mediatek/kernel_modules/mtkcam/include/mtk_camera-v4l2-controls-8.h @@ -56,6 +56,10 @@ #define V4L2_MTK_CAM_TG_FLASH_MODE_CONTINUOUS 1 #define V4L2_MTK_CAM_TG_FLASH_MODE_MULTIPLE 2 +#ifndef OPLUS_FEATURE_CAMERA_COMMON +#define OPLUS_FEATURE_CAMERA_COMMON +#endif + struct mtk_cam_shutter_gain { __u32 shutter; __u32 gain; @@ -235,6 +239,9 @@ struct mtk_cam_resource_raw_v2 { __u8 sen_apply_ctrl; __u64 sen_deadline_ns; __u8 ois_compensation; +#ifdef OPLUS_FEATURE_CAMERA_COMMON + __u8 buffer_increase; +#endif }; struct mtk_cam_resource_v2 { diff --git a/vendor/mediatek/kernel_modules/mtkcam/include/mtk_camera-v4l2-controls-common.h b/vendor/mediatek/kernel_modules/mtkcam/include/mtk_camera-v4l2-controls-common.h index e26a1831..bc98c99c 100755 --- a/vendor/mediatek/kernel_modules/mtkcam/include/mtk_camera-v4l2-controls-common.h +++ b/vendor/mediatek/kernel_modules/mtkcam/include/mtk_camera-v4l2-controls-common.h @@ -336,6 +336,11 @@ struct mtk_seninf_lbmf_info { #define V4L2_CMD_G_SENSOR_FAKE_SENSOR_INFO \ (V4L2_CMD_USER_MTK_SENSOR_BASE + 18) +// #define OPLUS_FEATURE_CAMERA_COMMON +#define V4L2_CMD_GET_SENSOR_MIRROR_TYPE \ + (V4L2_CMD_USER_MTK_SENSOR_BASE + 19) +// #endif + /** * TSREC - notify vsync structure * V4L2_CMD_TSREC_NOTIFY_VSYNC diff --git a/vendor/oplus/kernel/audio/codecs/aw87xxx/aw87xxx.c b/vendor/oplus/kernel/audio/codecs/aw87xxx/aw87xxx.c index 734a542e..6b2b7d9a 100755 --- a/vendor/oplus/kernel/audio/codecs/aw87xxx/aw87xxx.c +++ b/vendor/oplus/kernel/audio/codecs/aw87xxx/aw87xxx.c @@ -503,6 +503,7 @@ uint8_t aw_speaker_get_mode(struct oplus_speaker_device *speaker_device) case WORK_MODE_RIGHT: return AW_CTOS_PROFILE_MUSIC; case WORK_MODE_LEFT_VOICE: + case WORK_MODE_RIGHT_VOICE: return AW_CTOS_PROFILE_VOICE; default: return -EINVAL; @@ -2074,8 +2075,10 @@ exit_device_init_failed: aw87xxx_dev_hw_pwr_ctrl(&aw87xxx->aw_dev, false); exit_dtsi_parse_failed: AW_DEV_LOGE(aw87xxx->dev, "pa init failed"); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 0)) if (gpio_is_valid(aw87xxx->aw_dev.rst_gpio)) - gpio_free(aw87xxx->aw_dev.rst_gpio); + devm_gpio_free(aw87xxx->dev, aw87xxx->aw_dev.rst_gpio); +#endif #ifdef OPLUS_ARCH_EXTENDS // add for AW87xxx_2_X_0 i2c_set_clientdata(client, NULL); @@ -2103,8 +2106,10 @@ static int aw87xxx_i2c_remove(struct i2c_client *client) oplus_speaker_pa_unregister(aw87xxx->oplus_dev_node); #endif /*CONFIG_SND_SOC_OPLUS_PA_MANAGER*/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 0)) if (gpio_is_valid(aw87xxx->aw_dev.rst_gpio)) - gpio_free(aw87xxx->aw_dev.rst_gpio); + devm_gpio_free(aw87xxx->dev, aw87xxx->aw_dev.rst_gpio); +#endif if (aw87xxx->dev_index == 0) aw87xxx_algo_auth_misc_deinit(&aw87xxx->aw_dev); diff --git a/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx.c b/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx.c index 10d7513d..0f2b2cf8 100755 --- a/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx.c +++ b/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx.c @@ -3821,6 +3821,34 @@ range_err: return ret; } +static ssize_t aw882xx_dbgfs_auto_cali_re(struct file *file, + char __user *user_buf, size_t count, + loff_t *ppos) +{ + struct i2c_client *i2c = PDE_DATA(file_inode(file)); + struct aw882xx *aw882xx = i2c_get_clientdata(i2c); + char *str = NULL; + int ret = 0; + if (!aw882xx) { + pr_err("%s aw882xx is null\n", __func__); + return -EINVAL; + } + + str = kzalloc(PAGE_SIZE, GFP_KERNEL); + if (!str) { + ret = -ENOMEM; + pr_err("[0x%x] memory allocation failed\n", aw882xx->i2c->addr); + goto cali_re_err; + } + + ret = oplus_aw_cali_re(&i2c->dev, str); + pr_info("%s addr 0x%x, str=%s\n", __func__, aw882xx->i2c->addr, str); + ret = simple_read_from_buffer(user_buf, count, ppos, str, ret); + kfree(str); +cali_re_err: + return ret; +} + static const struct proc_ops aw882xx_dbgfs_range_fops = { .proc_open = simple_open, .proc_read = aw882xx_dbgfs_range_read, @@ -3857,6 +3885,12 @@ static const struct proc_ops aw882xx_dbgfs_f0_show_fops = { .proc_lseek = default_llseek, }; +static const struct proc_ops aw882xx_dbgfs_auto_cali_re_fops = { + .proc_open = simple_open, + .proc_read = aw882xx_dbgfs_auto_cali_re, + .proc_lseek = default_llseek, +}; + static void aw882xx_debug_init(struct aw882xx *aw882xx, struct i2c_client *i2c) { char name[50]; @@ -3870,6 +3904,8 @@ static void aw882xx_debug_init(struct aw882xx *aw882xx, struct i2c_client *i2c) &aw882xx_dbgfs_cali_re_fops, i2c); proc_create_data("r_impedance", S_IRUGO, aw882xx->dbg_dir, &aw882xx_dbgfs_cali_r_impedance_fops, i2c); + proc_create_data("auto_cali_re", S_IRUGO, aw882xx->dbg_dir, + &aw882xx_dbgfs_auto_cali_re_fops, i2c); #ifdef AW_NEED_CALIB_F0 if (aw882xx->need_f0_cali) { proc_create_data("f0_range", S_IRUGO, aw882xx->dbg_dir, diff --git a/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx_calib.c b/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx_calib.c index f61bf611..f4533bbf 100755 --- a/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx_calib.c +++ b/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx_calib.c @@ -1608,6 +1608,13 @@ static ssize_t aw_range_re_show(struct device *dev, return len; } + +ssize_t oplus_aw_cali_re(struct device *dev, char *buf) +{ + pr_info("[awinic] %s: cali re only.\n", + __func__); + return oplus_cali_re_f0_show(dev, buf, AW_CALI_CMD_RE); +} #endif /*OPLUS_ARCH_EXTENDS*/ /*set cali time*/ diff --git a/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx_calib.h b/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx_calib.h index 01574b93..afb3c482 100755 --- a/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx_calib.h +++ b/vendor/oplus/kernel/audio/codecs/aw882xx_v1.13.0/aw882xx_calib.h @@ -209,6 +209,7 @@ bool aw882xx_cali_check_result(struct aw_cali_desc *cali_desc); void oplus_aw882xx_cali_set_pa_number(unsigned char total_pa_number); ssize_t oplus_aw_calib_re_show(struct device *dev, char *buf); ssize_t oplus_aw_cali_re_f0(struct device *dev, char *buf); +ssize_t oplus_aw_cali_re(struct device *dev, char *buf); int aw_cali_svc_get_devs_cali_re(struct aw_device *aw_dev, int32_t *re_buf, int num); int aw_cali_svc_get_devs_cali_f0(struct aw_device *aw_dev, int32_t *f0_buf, int num); int aw_cali_svc_set_devs_re_str(struct aw_device *aw_dev, const char *re_str); diff --git a/vendor/oplus/kernel/audio/codecs/sipa/sipa.c b/vendor/oplus/kernel/audio/codecs/sipa/sipa.c index ce1c1a9c..1998b9e3 100755 --- a/vendor/oplus/kernel/audio/codecs/sipa/sipa.c +++ b/vendor/oplus/kernel/audio/codecs/sipa/sipa.c @@ -106,7 +106,7 @@ /* OWI_POLARITY 0 : pulse level == high, 1 : pulse level == low */ #define OWI_POLARITY (SIA81XX_DISABLE_LEVEL) -// #define DISTINGUISH_CHIP_TYPE +#define DISTINGUISH_CHIP_TYPE // #define OWI_SUPPORT_WRITE_DATA #ifdef OWI_SUPPORT_WRITE_DATA #define OWI_DATA_BIG_END @@ -3550,6 +3550,10 @@ static int sipa_probe(struct platform_device *pdev) sipa_dev_t *si_pa = NULL; char work_name[20]; char *sipa_fw_name = "sipa.bin"; +#if IS_ENABLED(CONFIG_SND_SOC_OPLUS_PA_MANAGER) + struct oplus_spk_dev_node *spk_dev_node = NULL; + struct oplus_speaker_device *speaker_device = NULL; +#endif /* CONFIG_SND_SOC_OPLUS_PA_MANAGER */ #ifdef CONFIG_SND_SOC_OPLUS_PA_MANAGER oplus_speaker_probe_lock(); @@ -3619,6 +3623,51 @@ static int sipa_probe(struct platform_device *pdev) /* load firmware */ sipa_param_load_fw(&pdev->dev, sipa_fw_name); } +#if IS_ENABLED(CONFIG_SND_SOC_OPLUS_PA_MANAGER) + if (IS_SUPPORT_OWI_TYPE(si_pa->chip_type)) { + if (speaker_device == NULL) { + pr_info("[ info][%s] %s():speaker_device == null ,oplus_register start\r\n", LOG_FLAG, __func__); + speaker_device = kzalloc(sizeof(struct oplus_speaker_device), GFP_KERNEL); + if ( speaker_device != NULL) { + speaker_device->speaker_manufacture = MFR_SI; + speaker_device->chipset = si_pa->chip_type; + speaker_device->type = L_SPK + si_pa->channel_num; + speaker_device->speaker_enable_set = sipa_speaker_enable; + speaker_device->speaker_enable_get = sipa_get_speaker_status; + #ifndef OPLUS_AUDIO_PA_BOOST_VOLTAGE + speaker_device->boost_voltage_set = NULL; + #else + speaker_device->boost_voltage_set = sipa_volme_boost_set; + #endif + speaker_device->boost_voltage_get = NULL; + #ifndef OPLUS_FEATURE_SPEAKER_MUTE + speaker_device->speaker_mute_set = NULL; + #else /* OPLUS_FEATURE_SPEAKER_MUTE */ + speaker_device->speaker_mute_set = sipa_speaker_mute_set; + #endif /* OPLUS_FEATURE_SPEAKER_MUTE */ + speaker_device->speaker_mute_get = NULL; + #if IS_ENABLED(CONFIG_OPLUS_FEATURE_MM_FEEDBACK) + speaker_device->speaker_check_feeback_set = sipa_speaker_check_feeback_set; + speaker_device->speaker_check_feeback_get = sipa_speaker_check_feeback_get; + #else + speaker_device->speaker_check_feeback_set = NULL; + speaker_device->speaker_check_feeback_get = NULL; + #endif + spk_dev_node = oplus_speaker_pa_register(speaker_device); + if (spk_dev_node == NULL) { + pr_err("[err][%s] %s:,oplus_register fail \r\n",LOG_FLAG, __func__); + kfree(speaker_device); + } else { + si_pa->oplus_dev_node = spk_dev_node; + pr_info("[info][%s] %s():,oplus_register end\r\n", LOG_FLAG, __func__); + } + }else { + pr_err("[err][%s] %s:,spk device kzalloc failed \r\n",LOG_FLAG, __func__); + } + } + } +#endif /* CONFIG_SND_SOC_OPLUS_PA_MANAGER */ + pr_info("[ info][%s] %s: finish, channel:%d\r\n", LOG_FLAG, __func__, si_pa->channel_num); #ifdef CONFIG_SND_SOC_OPLUS_PA_MANAGER oplus_speaker_probe_unlock(); @@ -3666,7 +3715,11 @@ static int sipa_remove(struct platform_device *pdev) si_pa = (sipa_dev_t *)dev_get_drvdata(&pdev->dev); if (NULL == si_pa) return 0; - +#ifdef CONFIG_SND_SOC_OPLUS_PA_MANAGER + if (IS_SUPPORT_OWI_TYPE(si_pa->chip_type)) { + oplus_speaker_pa_unregister(si_pa->oplus_dev_node); + } +#endif /* CONFIG_SND_SOC_OPLUS_PA_MANAGER */ #ifdef LOAD_FW_BY_DELAY_WORK cancel_delayed_work_sync(&si_pa->fw_load_work); #endif diff --git a/vendor/oplus/kernel/audio/oplus_audio_kernel_modules.mk b/vendor/oplus/kernel/audio/oplus_audio_kernel_modules.mk index 3d161eeb..8c751e18 100755 --- a/vendor/oplus/kernel/audio/oplus_audio_kernel_modules.mk +++ b/vendor/oplus/kernel/audio/oplus_audio_kernel_modules.mk @@ -47,6 +47,7 @@ AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/oplus_audio_tfa98xx_v6.ko AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/oplus_audio_sipa.ko AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/oplus_audio_sipa_tuning.ko AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/oplus_audio_pa_manager.ko +AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/oplus_audio_aw87xxx.ko # add for audio daemon kernel on QCOM platform sun AUDIO_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/oplus_audio_daemon.ko # add for audio netlink kernel communication diff --git a/vendor/oplus/kernel/audio/oplus_audio_kernel_product_board.mk b/vendor/oplus/kernel/audio/oplus_audio_kernel_product_board.mk index 95c47ea1..21f5fab4 100755 --- a/vendor/oplus/kernel/audio/oplus_audio_kernel_product_board.mk +++ b/vendor/oplus/kernel/audio/oplus_audio_kernel_product_board.mk @@ -47,6 +47,7 @@ PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/oplus_audio_tfa98xx_v6.ko PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/oplus_audio_sipa.ko PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/oplus_audio_sipa_tuning.ko PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/oplus_audio_pa_manager.ko +PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/oplus_audio_aw87xxx.ko # add for audio daemon kernel on QCOM platform sun PRODUCT_PACKAGES += $(KERNEL_MODULES_OUT)/oplus_audio_daemon.ko # add for audio netlink kernel communication diff --git a/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager.c b/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager.c index b90e5098..321e54bf 100755 --- a/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager.c +++ b/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager.c @@ -33,7 +33,7 @@ const char *const ext_amp_vdd_need[] = { "None", "Need" }; const char *const ext_amp_boost_vol_text[] = {"Level_1", "Level_2", "Level_3", "Level_4"}; const char *const ext_amp_speaker_switch_function[] = { "Off", "On" }; const char *const ext_rcv_amp_function[] = { "Off", "On" }; -const char *const ext_amp_speaker_mode_function[] = { "Off", "Music", "Voice", "Fm", "Rcv", "Left", "Right", "Left_Voice"}; +const char *const ext_amp_speaker_mode_function[] = { "Off", "Music", "Voice", "Fm", "Rcv", "Left", "Right", "Left_Voice", "Right_Voice"}; const char *const ext_amp_voice_function[] = { "Off", "On" }; const char *const ext_amp_mute_function[] = { "Off", "On" }; const char *const ext_amp_check_feedback[] = { "Off", "On" }; @@ -59,6 +59,7 @@ static const struct snd_kcontrol_new oplus_pa_manager_snd_controls[] = { SOC_ENUM_EXT("SpeakerL_Amp_Switch", (oplus_amp_control_enum)[0], speaker_l_amp_get, speaker_l_amp_set), SOC_ENUM_EXT("SpeakerR_Amp_Switch", (oplus_amp_control_enum)[0], speaker_r_amp_get, speaker_r_amp_set), SOC_ENUM_EXT("Rcv_Amp_Switch", (oplus_amp_control_enum)[1], rcv_amp_get, rcv_amp_set), + SOC_ENUM_EXT("RcvL_Amp_Switch", (oplus_amp_control_enum)[1], rcv_l_amp_get, rcv_l_amp_set), SOC_ENUM_EXT("Ext_Amp_Mode", (oplus_amp_control_enum)[2], ext_amp_mode_get, ext_amp_mode_set), SOC_ENUM_EXT("Ext_Amp_Vdd_Need", (oplus_amp_control_enum)[3], ext_amp_vdd_get, ext_amp_vdd_set), SOC_ENUM_EXT("Ext_Amp_Boost_Volume", (oplus_amp_control_enum)[4], ext_amp_boost_volume_get, ext_amp_boost_volume_set), @@ -340,6 +341,85 @@ int rcv_amp_set(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontr return 0; } +int rcv_l_amp_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) +{ + struct oplus_speaker_device *speaker_device = get_speaker_dev(L_SPK); + + ucontrol->value.integer.value[0] = 0; + + if (speaker_device == NULL) { + pr_err("%s, %d, speaker_device == NULL\n", __func__, __LINE__); + + return -ENODEV; + } else if (contrl_status == NULL) { + pr_err("%s, %d, contrl_status == NULL\n", __func__, __LINE__); + + return -ENOMEM; + } else { + ucontrol->value.integer.value[0] = contrl_status->rcv_enable; + } + + pr_debug("%s, %d, status = %ld\n", __func__, __LINE__, ucontrol->value.integer.value[0]); + + return 0; +} + +int rcv_l_amp_set(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) +{ + int value = ucontrol->value.integer.value[0]; + + enum oplus_pa_work_mode work_mode = WORK_MODE_OFF; + int protection_needed = 0; + + struct oplus_speaker_device *speaker_device = get_speaker_dev(L_SPK); + int ret = 0; + + if (value == 0) { + work_mode = WORK_MODE_OFF; + } else { + work_mode = WORK_MODE_RECEIVER; + protection_needed = 1; + } + + if (speaker_device == NULL) { + pr_err("%s, %d, speaker_device == NULL\n", __func__, __LINE__); + + return -ENODEV; + } else if (contrl_status == NULL) { + pr_err("%s, %d, contrl_status == NULL\n", __func__, __LINE__); + } else { + if (speaker_device->speaker_enable_set != NULL) { + pr_debug("%s, %d, speaker_device->speaker_status = %d, contrl_status->rcv_enable = %d\n", + __func__, __LINE__, speaker_device->speaker_status, contrl_status->rcv_enable); + + if (speaker_device->speaker_mode != work_mode) { + pr_debug("%s, %d, channel = %d, value = %d, contrl_status->amp_mode_setting = %d\n", + __func__, __LINE__, R_SPK - L_SPK, value, contrl_status->amp_mode_setting); + + speaker_device->speaker_mode = work_mode; + ret = speaker_device->speaker_enable_set(speaker_device, value); + if (ret != 0) { + pr_err("%s, %d, ret = %d\n", __func__, __LINE__, ret); + speaker_device->speaker_mode = WORK_MODE_OFF; + } else { + contrl_status->amp_mode_setting = work_mode; + contrl_status->rcv_enable = (speaker_device->speaker_mode == WORK_MODE_RECEIVER) ? 1:0; + } + + if (speaker_device->speaker_protection_set != NULL) { + pr_debug("%s, %d, channel = %d, value = %d\n", __func__, __LINE__, R_SPK - L_SPK, protection_needed); + + speaker_device->speaker_protection_set(speaker_device, protection_needed); + } + } + } else { + pr_debug("%s, %d, channel = %d, speaker_mode_set == NULL\n", __func__, __LINE__, R_SPK - L_SPK); + } + } + + return 0; +} + int ext_amp_mode_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { ucontrol->value.integer.value[0] = 0; @@ -548,7 +628,8 @@ int oplus_spkr_pa_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcon } else if ((contrl_status->amp_mode_setting == WORK_MODE_LEFT) || (contrl_status->amp_mode_setting == WORK_MODE_LEFT_VOICE)) { oplus_speaker_amp_set(L_SPK, WORK_STATUS_ON); - } else if (contrl_status->amp_mode_setting == WORK_MODE_RIGHT) { + } else if ((contrl_status->amp_mode_setting == WORK_MODE_RIGHT) + || (contrl_status->amp_mode_setting == WORK_MODE_RIGHT_VOICE)) { oplus_speaker_amp_set(R_SPK, WORK_STATUS_ON); } else { oplus_speaker_amp_set(L_SPK, WORK_STATUS_ON); diff --git a/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager.h b/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager.h index 24661554..753c6c5c 100755 --- a/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager.h +++ b/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager.h @@ -31,6 +31,8 @@ int speaker_r_amp_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value * int speaker_r_amp_set(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); int rcv_amp_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); int rcv_amp_set(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); +int rcv_l_amp_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); +int rcv_l_amp_set(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); int ext_amp_mode_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); int ext_amp_mode_set(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); int ext_amp_vdd_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol); diff --git a/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager_codec.h b/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager_codec.h index 938d3ceb..21455c7e 100755 --- a/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager_codec.h +++ b/vendor/oplus/kernel/audio/qcom/oplus_speaker_manager/oplus_speaker_manager_codec.h @@ -47,6 +47,7 @@ enum oplus_pa_work_mode { WORK_MODE_LEFT, WORK_MODE_RIGHT, WORK_MODE_LEFT_VOICE, + WORK_MODE_RIGHT_VOICE, WORK_MODE_COUNT, }; diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/brzafront_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/brzafront_op_eeprom.c deleted file mode 100755 index da4abe3b..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/brzafront_op_eeprom.c +++ /dev/null @@ -1,852 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_BRZAFRONT" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_brzafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_brzafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_brzafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_brzafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -//static unsigned int layout_check_brzafront(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, unsigned int *_cfg); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01c40055, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000530, 0x0000074C, do_single_lsc_brzafront}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_brzafront}, //Start address, block size is useless - {0x00000001, 0x00000000, 0x00000000, do_pdaf_brzafront}, - {0x00000000, 0x00000000, 0x00000000, do_stereo_data}, - {0x00000001, 0x00000000, 0x00002000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_brzafront} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT brzafront_op_eeprom = { - .name = "brzafront_op_eeprom", -// .check_layout_function = layout_check_brzafront, - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = BRZAFRONT_SENSOR_ID, - .i2c_write_id = 0xA8, - .max_size = 0x1FFF, - .enable_preload = 1, - .preload_size = 0x1FFF, -}; -//static struct STRUCT_CAM_CAL_CONFIG_STRUCT *cam_cal_config = &brzafront_op_eeprom; - -/* -unsigned int do_pdaf_brzafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} -*/ -static unsigned int do_pdaf_brzafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData){ - - return 0; - -} -#if 0 -#define BRZAFRONT_HVBIN_PDAF_PROC1_SIZE (0x1BA0-0x17D0) //976 0x3D0 -#define BRZAFRONT_HVBIN_PDAF_PROC2_SIZE (0x2208-0x1BB0) //1624 2600 0xA28 -#define BRZAFRONT_HVBIN_PDAF_PROC1_ADDR (0x17D0) -#define BRZAFRONT_HVBIN_PDAF_PROC2_ADDR (0x1BB0) - -//partial PD -#define BRZAFRONT_PARTIAL_PD_PROC1_SIZE (0x3590-0x33A0) //496 0X1F0 -#define BRZAFRONT_PARTIAL_PD_PROC2_SIZE (0x398C-0x35A0) //1004 1500 0x5DC -#define BRZAFRONT_PARTIAL_PD_PROC1_ADDR (0x33A0) -#define BRZAFRONT_PARTIAL_PD_PROC2_ADDR (0x35A0) -unsigned int do_pdaf_brzafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - return err; - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - int bios = 0; - bool partial_pd_proc1_flag = false; - bool partial_pd_proc2_flag = false; - bool qpd_proc1_flag = false; - bool qpd_proc2_flag = false; - - pCamCalData->PDAF.Size_of_PDAF = 0; - debug_log("======================PDAF Data==================\n"); - debug_log("[%s] QPD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, BRZAFRONT_HVBIN_PDAF_PROC1_ADDR, BRZAFRONT_HVBIN_PDAF_PROC1_SIZE); - debug_log("[%s] QPD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, BRZAFRONT_HVBIN_PDAF_PROC2_ADDR, BRZAFRONT_HVBIN_PDAF_PROC2_SIZE); - debug_log("[%s] partial PD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, BRZAFRONT_PARTIAL_PD_PROC1_ADDR, BRZAFRONT_PARTIAL_PD_PROC1_SIZE); - debug_log("[%s] partial PD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, BRZAFRONT_PARTIAL_PD_PROC2_ADDR, BRZAFRONT_PARTIAL_PD_PROC2_SIZE); - -// partial PD - isValid = 0; - bios = 0; -// partial PD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAFRONT_PARTIAL_PD_PROC1_ADDR + BRZAFRONT_PARTIAL_PD_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] partial PD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAFRONT_PARTIAL_PD_PROC1_ADDR, BRZAFRONT_PARTIAL_PD_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZAFRONT_PARTIAL_PD_PROC1_SIZE; - partial_pd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(partial_pd_proc1_flag) { - // partial PD proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAFRONT_PARTIAL_PD_PROC2_ADDR + BRZAFRONT_PARTIAL_PD_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAFRONT_PARTIAL_PD_PROC2_ADDR, BRZAFRONT_PARTIAL_PD_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZAFRONT_PARTIAL_PD_PROC2_SIZE; - partial_pd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - } - - if(partial_pd_proc1_flag && partial_pd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] partial PD eeprom error",__FUNCTION__); - } - err = CAM_CAL_ERR_NO_ERR; - -// QPD -// QPD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAFRONT_HVBIN_PDAF_PROC1_ADDR + BRZAFRONT_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAFRONT_HVBIN_PDAF_PROC1_ADDR, BRZAFRONT_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZAFRONT_HVBIN_PDAF_PROC1_SIZE; - qpd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - -// QPD proc2 - if(qpd_proc1_flag) { - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAFRONT_HVBIN_PDAF_PROC2_ADDR + BRZAFRONT_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc2 unvalid\n", __FUNCTION__); - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAFRONT_HVBIN_PDAF_PROC2_ADDR, BRZAFRONT_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZAFRONT_HVBIN_PDAF_PROC2_SIZE; - qpd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(qpd_proc1_flag && qpd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] QPD eeprom error",__FUNCTION__); - } - if(pCamCalData->PDAF.Size_of_PDAF == 0) { - err = CamCalReturnErr[pCamCalData->Command]; - } - - debug_log("[%s] pCamCalData->PDAF.Size_of_PDAF= %d 0x%x\n", __FUNCTION__, - pCamCalData->PDAF.Size_of_PDAF, pCamCalData->PDAF.Size_of_PDAF); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} -#endif - - -static unsigned int do_single_lsc_brzafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_brzafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - //unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - printk("awb Calibration OK tanhao"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - printk("brzaLight source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - printk("awb Calibration 5100k OK tanhao"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0010; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - printk("brza5000k UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - printk("brza5000k fail UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0018; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - printk("brzaGoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - printk("brzafail GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Calibration Data*/ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x006C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - printk("brzaLight source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - printk("brzafail Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (3100K) */ - awb_offset = 0x0034; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x003C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - printk("brzaGoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - printk("brzafail GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - #if 0 - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - -/* AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; */ - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering layout->header_addr; - unsigned int check_id = 0x00000000; - unsigned int result = CAM_CAL_ERR_NO_DEVICE; - - if (cam_cal_config->sensor_id == sensorID) - debug_log("%s sensor_id matched\n", cam_cal_config->name); - else { - debug_log("%s sensor_id not matched\n", cam_cal_config->name); - return result; - } - - if (read_data_region(pdata, (u8 *)&check_id, header_offset, 4) != 4) { - debug_log("header_id read failed\n"); - return result; - } - - if (check_id == 0x01c40055 || check_id == 0x01C3012B || check_id == 0x00510055) { // hearder id on OTP guide - debug_log("header_id matched 0x%08x\n", check_id); - printk("brzaheader_id matched 0x%08x\n", check_id); - result = CAM_CAL_ERR_NO_ERR; - } else{ - debug_log("header_id not matched 0x%08x\n", check_id); - printk("brzaheader_id not matched 0x%08x\n", check_id); - } - return result; -}*/ diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/brzamain_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/brzamain_op_eeprom.c deleted file mode 100755 index 54421161..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/brzamain_op_eeprom.c +++ /dev/null @@ -1,824 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_BRZAMAIN" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define READ_4000K 0 -#define DEBUG_CALIBRATION_LOAD - -static unsigned int do_single_lsc_brzamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_brzamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_brzamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_brzamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -//static unsigned int layout_check_brzamain(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, unsigned int *_cfg); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x016B012B, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00001070, 0x0000074C, do_single_lsc_brzamain}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_brzamain}, //Start address, block size is useless - {0x00000001, 0x000017D0, 0x00000A3A, do_pdaf_brzamain}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_brzamain} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT brzamain_op_eeprom = { - .name = "brzamain_op_eeprom", - //.check_layout_function = layout_check_brzamain, - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = BRZAMAIN_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, -}; -//static struct STRUCT_CAM_CAL_CONFIG_STRUCT *cam_cal_config = &brzamain_op_eeprom; - -/* -unsigned int do_pdaf_brzamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} -*/ - -#define BRZAMAIN_HVBIN_PDAF_PROC1_SIZE (0x1BA0-0x17D0) //976 0x3D0 -#define BRZAMAIN_HVBIN_PDAF_PROC2_SIZE (0x2208-0x1BB0) //1624 2600 0xA28 -#define BRZAMAIN_HVBIN_PDAF_PROC1_ADDR (0x17D0) -#define BRZAMAIN_HVBIN_PDAF_PROC2_ADDR (0x1BB0) - -//partial PD -#define BRZAMAIN_PARTIAL_PD_PROC1_SIZE (0x3590-0x33A0) //496 0X1F0 -#define BRZAMAIN_PARTIAL_PD_PROC2_SIZE (0x398C-0x35A0) //1004 1500 0x5DC -#define BRZAMAIN_PARTIAL_PD_PROC1_ADDR (0x33A0) -#define BRZAMAIN_PARTIAL_PD_PROC2_ADDR (0x35A0) -unsigned int do_pdaf_brzamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - int bios = 0; - bool partial_pd_proc1_flag = false; - bool partial_pd_proc2_flag = false; - bool qpd_proc1_flag = false; - bool qpd_proc2_flag = false; - - pCamCalData->PDAF.Size_of_PDAF = 0; - debug_log("======================PDAF Data==================\n"); - debug_log("[%s] QPD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, BRZAMAIN_HVBIN_PDAF_PROC1_ADDR, BRZAMAIN_HVBIN_PDAF_PROC1_SIZE); - debug_log("[%s] QPD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, BRZAMAIN_HVBIN_PDAF_PROC2_ADDR, BRZAMAIN_HVBIN_PDAF_PROC2_SIZE); - debug_log("[%s] partial PD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, BRZAMAIN_PARTIAL_PD_PROC1_ADDR, BRZAMAIN_PARTIAL_PD_PROC1_SIZE); - debug_log("[%s] partial PD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, BRZAMAIN_PARTIAL_PD_PROC2_ADDR, BRZAMAIN_PARTIAL_PD_PROC2_SIZE); - -// partial PD - isValid = 0; - bios = 0; -// partial PD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAMAIN_PARTIAL_PD_PROC1_ADDR + BRZAMAIN_PARTIAL_PD_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] partial PD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAMAIN_PARTIAL_PD_PROC1_ADDR, BRZAMAIN_PARTIAL_PD_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZAMAIN_PARTIAL_PD_PROC1_SIZE; - partial_pd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(partial_pd_proc1_flag) { - // partial PD proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAMAIN_PARTIAL_PD_PROC2_ADDR + BRZAMAIN_PARTIAL_PD_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAMAIN_PARTIAL_PD_PROC2_ADDR, BRZAMAIN_PARTIAL_PD_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZAMAIN_PARTIAL_PD_PROC2_SIZE; - partial_pd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - } - - if(partial_pd_proc1_flag && partial_pd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] partial PD eeprom error",__FUNCTION__); - } - err = CAM_CAL_ERR_NO_ERR; - -// QPD -// QPD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAMAIN_HVBIN_PDAF_PROC1_ADDR + BRZAMAIN_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAMAIN_HVBIN_PDAF_PROC1_ADDR, BRZAMAIN_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZAMAIN_HVBIN_PDAF_PROC1_SIZE; - qpd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - -// QPD proc2 - if(qpd_proc1_flag) { - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAMAIN_HVBIN_PDAF_PROC2_ADDR + BRZAMAIN_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc2 unvalid\n", __FUNCTION__); - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZAMAIN_HVBIN_PDAF_PROC2_ADDR, BRZAMAIN_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZAMAIN_HVBIN_PDAF_PROC2_SIZE; - qpd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(qpd_proc1_flag && qpd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] QPD eeprom error",__FUNCTION__); - } - if(pCamCalData->PDAF.Size_of_PDAF == 0) { - err = CamCalReturnErr[pCamCalData->Command]; - } - - debug_log("[%s] pCamCalData->PDAF.Size_of_PDAF= %d 0x%x\n", __FUNCTION__, - pCamCalData->PDAF.Size_of_PDAF, pCamCalData->PDAF.Size_of_PDAF); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} - -static unsigned int do_single_lsc_brzamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_brzamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - -/* AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; */ - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering layout->header_addr; - unsigned int check_id = 0x00000000; - unsigned int result = CAM_CAL_ERR_NO_DEVICE; - - if (cam_cal_config->sensor_id == sensorID) { - debug_log("%s sensor_id matched\n", cam_cal_config->name); - } - else { - debug_log("%s sensor_id not matched\n", cam_cal_config->name); - return result; - } - - if (read_data_region(pdata, (u8 *)&check_id, header_offset, 4) != 4) { - debug_log("header_id read failed\n"); - return result; - } - - if (check_id == 0x016B012B || check_id == 0x01C3012B) { // hearder id on OTP guide - debug_log("header_id matched 0x%08x\n", check_id); - result = CAM_CAL_ERR_NO_ERR; - } else { - debug_log("header_id not matched 0x%08x\n", check_id); - } - - return result; -}*/ diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/brzauwide_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/brzauwide_op_eeprom.c deleted file mode 100755 index 9b69caf4..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/brzauwide_op_eeprom.c +++ /dev/null @@ -1,622 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_BRZAUWIDE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_brzauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_brzauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_brzauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -//static unsigned int layout_check_brzauwide(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, unsigned int *_cfg); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x0065009a, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000530, 0x0000074C, do_single_lsc_brzauwide}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_brzauwide}, //Start address, block size is useless - {0x00000000, 0x00000000, 0x00000000, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_brzauwide} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT brzauwide_op_eeprom = { - .name = "brzauwide_op_eeprom", - //.check_layout_function = layout_check_brzauwide, - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = BRZAUWIDE_SENSOR_ID, - .i2c_write_id = 0xA2, - .max_size = 0x4000, - .enable_preload = 1, - .preload_size = 0x4000, - .has_stored_data = 1, -}; - -//static struct STRUCT_CAM_CAL_CONFIG_STRUCT *cam_cal_config = &brzauwide_op_eeprom; - -static unsigned int do_single_lsc_brzauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_brzauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = FacGr = FacGb = FacG = FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - AFInf = AFInf >> 1; - AFMacro = AFMacro >> 1; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering layout->header_addr; - unsigned int check_id = 0x00000000; - unsigned int result = CAM_CAL_ERR_NO_DEVICE; - - if (cam_cal_config->sensor_id == sensorID) - debug_log("%s sensor_id matched\n", cam_cal_config->name); - else { - debug_log("%s sensor_id not matched\n", cam_cal_config->name); - return result; - } - - if (read_data_region(pdata, (u8 *)&check_id, header_offset, 4) != 4) { - debug_log("header_id read failed\n"); - return result; - } - - if (check_id == 0x016B012B || check_id == 0x016d009a) { // hearder id on OTP guide - debug_log("header_id matched 0x%08x\n", check_id); - printk("brzaheader_id wide matched 0x%08x\n", check_id); - result = CAM_CAL_ERR_NO_ERR; - } else{ - debug_log("header_id not matched 0x%08x\n", check_id); - printk("brzaheader_id wide not matched 0x%08x\n", check_id); - } - return result; -}*/ diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/brzbfront2_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/brzbfront2_op_eeprom.c deleted file mode 100755 index 712bb5db..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/brzbfront2_op_eeprom.c +++ /dev/null @@ -1,564 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2023 OPLUS Inc. - */ - -#define PFX "CAM_CAL_BRZBFRONT2" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_brzbfront2(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_brzbfront2(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_brzbfront2(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01510008, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000530, 0x0000074C, do_single_lsc_brzbfront2}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_brzbfront2}, //Start address, block size is useless - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00002000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_brzbfront2} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT brzbfront2_op_eeprom = { - .name = "brzbfront2_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = BRZBFRONT2_SENSOR_ID, - .i2c_write_id = 0xA8, - .max_size = 0x2000, - .enable_preload = 1, - .preload_size = 0x2000, -}; - -static unsigned int do_single_lsc_brzbfront2(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - debug_log("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_brzbfront2(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - //AFInf = AFInf >> 2; - //AFMacro = AFMacro >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_brzbfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_brzbfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_brzbfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_brzbfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -//static unsigned int layout_check_brzbfront(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, unsigned int *_cfg); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01c40055, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000530, 0x0000074C, do_single_lsc_brzbfront}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_brzbfront}, //Start address, block size is useless - {0x00000001, 0x00000000, 0x00000000, do_pdaf_brzbfront}, - {0x00000000, 0x00000000, 0x00000000, do_stereo_data}, - {0x00000001, 0x00000000, 0x00002000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_brzbfront} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT brzbfront_op_eeprom = { - .name = "brzbfront_op_eeprom", -// .check_layout_function = layout_check_brzbfront, - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = BRZBFRONT_SENSOR_ID, - .i2c_write_id = 0xA8, - .max_size = 0x1FFF, - .enable_preload = 1, - .preload_size = 0x1FFF, -}; -//static struct STRUCT_CAM_CAL_CONFIG_STRUCT *cam_cal_config = &brzbfront_op_eeprom; - -/* -unsigned int do_pdaf_brzbfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} -*/ -static unsigned int do_pdaf_brzbfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData){ - - return 0; - -} -#if 0 -#define BRZBFRONT_HVBIN_PDAF_PROC1_SIZE (0x1BA0-0x17D0) //976 0x3D0 -#define BRZBFRONT_HVBIN_PDAF_PROC2_SIZE (0x2208-0x1BB0) //1624 2600 0xA28 -#define BRZBFRONT_HVBIN_PDAF_PROC1_ADDR (0x17D0) -#define BRZBFRONT_HVBIN_PDAF_PROC2_ADDR (0x1BB0) - -//partial PD -#define BRZBFRONT_PARTIAL_PD_PROC1_SIZE (0x3590-0x33A0) //496 0X1F0 -#define BRZBFRONT_PARTIAL_PD_PROC2_SIZE (0x398C-0x35A0) //1004 1500 0x5DC -#define BRZBFRONT_PARTIAL_PD_PROC1_ADDR (0x33A0) -#define BRZBFRONT_PARTIAL_PD_PROC2_ADDR (0x35A0) -unsigned int do_pdaf_brzbfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - return err; - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - int bios = 0; - bool partial_pd_proc1_flag = false; - bool partial_pd_proc2_flag = false; - bool qpd_proc1_flag = false; - bool qpd_proc2_flag = false; - - pCamCalData->PDAF.Size_of_PDAF = 0; - debug_log("======================PDAF Data==================\n"); - debug_log("[%s] QPD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, BRZBFRONT_HVBIN_PDAF_PROC1_ADDR, BRZBFRONT_HVBIN_PDAF_PROC1_SIZE); - debug_log("[%s] QPD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, BRZBFRONT_HVBIN_PDAF_PROC2_ADDR, BRZBFRONT_HVBIN_PDAF_PROC2_SIZE); - debug_log("[%s] partial PD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, BRZBFRONT_PARTIAL_PD_PROC1_ADDR, BRZBFRONT_PARTIAL_PD_PROC1_SIZE); - debug_log("[%s] partial PD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, BRZBFRONT_PARTIAL_PD_PROC2_ADDR, BRZBFRONT_PARTIAL_PD_PROC2_SIZE); - -// partial PD - isValid = 0; - bios = 0; -// partial PD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBFRONT_PARTIAL_PD_PROC1_ADDR + BRZBFRONT_PARTIAL_PD_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] partial PD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBFRONT_PARTIAL_PD_PROC1_ADDR, BRZBFRONT_PARTIAL_PD_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZBFRONT_PARTIAL_PD_PROC1_SIZE; - partial_pd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(partial_pd_proc1_flag) { - // partial PD proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBFRONT_PARTIAL_PD_PROC2_ADDR + BRZBFRONT_PARTIAL_PD_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBFRONT_PARTIAL_PD_PROC2_ADDR, BRZBFRONT_PARTIAL_PD_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZBFRONT_PARTIAL_PD_PROC2_SIZE; - partial_pd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - } - - if(partial_pd_proc1_flag && partial_pd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] partial PD eeprom error",__FUNCTION__); - } - err = CAM_CAL_ERR_NO_ERR; - -// QPD -// QPD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBFRONT_HVBIN_PDAF_PROC1_ADDR + BRZBFRONT_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBFRONT_HVBIN_PDAF_PROC1_ADDR, BRZBFRONT_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZBFRONT_HVBIN_PDAF_PROC1_SIZE; - qpd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - -// QPD proc2 - if(qpd_proc1_flag) { - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBFRONT_HVBIN_PDAF_PROC2_ADDR + BRZBFRONT_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc2 unvalid\n", __FUNCTION__); - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBFRONT_HVBIN_PDAF_PROC2_ADDR, BRZBFRONT_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZBFRONT_HVBIN_PDAF_PROC2_SIZE; - qpd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(qpd_proc1_flag && qpd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] QPD eeprom error",__FUNCTION__); - } - if(pCamCalData->PDAF.Size_of_PDAF == 0) { - err = CamCalReturnErr[pCamCalData->Command]; - } - - debug_log("[%s] pCamCalData->PDAF.Size_of_PDAF= %d 0x%x\n", __FUNCTION__, - pCamCalData->PDAF.Size_of_PDAF, pCamCalData->PDAF.Size_of_PDAF); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} -#endif - - -static unsigned int do_single_lsc_brzbfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_brzbfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - //unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - printk("awb Calibration OK tanhao"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - printk("brzbLight source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - printk("awb Calibration 5100k OK tanhao"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0010; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - printk("brzb5000k UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - printk("brzb5000k fail UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0018; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - printk("brzbGoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - printk("brzbfail GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Calibration Data*/ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x006C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - printk("brzbLight source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - printk("brzbfail Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (3100K) */ - awb_offset = 0x0034; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x003C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - printk("brzbGoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - printk("brzbfail GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - #if 0 - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - -/* AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; */ - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering layout->header_addr; - unsigned int check_id = 0x00000000; - unsigned int result = CAM_CAL_ERR_NO_DEVICE; - - if (cam_cal_config->sensor_id == sensorID) - debug_log("%s sensor_id matched\n", cam_cal_config->name); - else { - debug_log("%s sensor_id not matched\n", cam_cal_config->name); - return result; - } - - if (read_data_region(pdata, (u8 *)&check_id, header_offset, 4) != 4) { - debug_log("header_id read failed\n"); - return result; - } - - if (check_id == 0x01c40055 || check_id == 0x01C3012B || check_id == 0x00510055) { // hearder id on OTP guide - debug_log("header_id matched 0x%08x\n", check_id); - printk("brzbheader_id matched 0x%08x\n", check_id); - result = CAM_CAL_ERR_NO_ERR; - } else{ - debug_log("header_id not matched 0x%08x\n", check_id); - printk("brzbheader_id not matched 0x%08x\n", check_id); - } - return result; -}*/ diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/brzbmain_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/brzbmain_op_eeprom.c deleted file mode 100755 index 4e97b326..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/brzbmain_op_eeprom.c +++ /dev/null @@ -1,824 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_BRZBMAIN" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define READ_4000K 0 -#define DEBUG_CALIBRATION_LOAD - -static unsigned int do_single_lsc_brzbmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_brzbmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_brzbmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_brzbmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -//static unsigned int layout_check_brzbmain(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, unsigned int *_cfg); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01480143, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00001140, 0x0000074C, do_single_lsc_brzbmain}, - {0x00000001, 0x00000020, 0x00000023, do_2a_gain_brzbmain}, //Start address, block size is useless - {0x00000001, 0x00001890, 0x00000A28, do_pdaf_brzbmain}, - {0x00000000, 0x00000FAE, 0x00000A28, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_brzbmain} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT brzbmain_op_eeprom = { - .name = "brzbmain_op_eeprom", - //.check_layout_function = layout_check_brzbmain, - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = BRZBMAIN_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, -}; -//static struct STRUCT_CAM_CAL_CONFIG_STRUCT *cam_cal_config = &brzbmain_op_eeprom; - -/* -unsigned int do_pdaf_brzbmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} -*/ - -#define BRZBMAIN_HVBIN_PDAF_PROC1_SIZE (0x1C60-0x1890) //976 0x3D0 -#define BRZBMAIN_HVBIN_PDAF_PROC2_SIZE (0x22C8-0x1C70) //1624 2600 0xA28 -#define BRZBMAIN_HVBIN_PDAF_PROC1_ADDR (0x1890) -#define BRZBMAIN_HVBIN_PDAF_PROC2_ADDR (0x1C70) - -//partial PD -#define BRZBMAIN_PARTIAL_PD_PROC1_SIZE (0x3720-0x3530) //496 0X1F0 -#define BRZBMAIN_PARTIAL_PD_PROC2_SIZE (0x3B1C-0x3730) //1004 1500 0x5DC -#define BRZBMAIN_PARTIAL_PD_PROC1_ADDR (0x3530) -#define BRZBMAIN_PARTIAL_PD_PROC2_ADDR (0x3730) -unsigned int do_pdaf_brzbmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - int bios = 0; - bool partial_pd_proc1_flag = false; - bool partial_pd_proc2_flag = false; - bool qpd_proc1_flag = false; - bool qpd_proc2_flag = false; - - pCamCalData->PDAF.Size_of_PDAF = 0; - debug_log("======================PDAF Data==================\n"); - debug_log("[%s] QPD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, BRZBMAIN_HVBIN_PDAF_PROC1_ADDR, BRZBMAIN_HVBIN_PDAF_PROC1_SIZE); - debug_log("[%s] QPD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, BRZBMAIN_HVBIN_PDAF_PROC2_ADDR, BRZBMAIN_HVBIN_PDAF_PROC2_SIZE); - debug_log("[%s] partial PD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, BRZBMAIN_PARTIAL_PD_PROC1_ADDR, BRZBMAIN_PARTIAL_PD_PROC1_SIZE); - debug_log("[%s] partial PD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, BRZBMAIN_PARTIAL_PD_PROC2_ADDR, BRZBMAIN_PARTIAL_PD_PROC2_SIZE); - -// partial PD - isValid = 0; - bios = 0; -// partial PD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBMAIN_PARTIAL_PD_PROC1_ADDR + BRZBMAIN_PARTIAL_PD_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] partial PD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBMAIN_PARTIAL_PD_PROC1_ADDR, BRZBMAIN_PARTIAL_PD_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZBMAIN_PARTIAL_PD_PROC1_SIZE; - partial_pd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(partial_pd_proc1_flag) { - // partial PD proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBMAIN_PARTIAL_PD_PROC2_ADDR + BRZBMAIN_PARTIAL_PD_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBMAIN_PARTIAL_PD_PROC2_ADDR, BRZBMAIN_PARTIAL_PD_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZBMAIN_PARTIAL_PD_PROC2_SIZE; - partial_pd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - } - - if(partial_pd_proc1_flag && partial_pd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] partial PD eeprom error",__FUNCTION__); - } - err = CAM_CAL_ERR_NO_ERR; - -// QPD -// QPD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBMAIN_HVBIN_PDAF_PROC1_ADDR + BRZBMAIN_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBMAIN_HVBIN_PDAF_PROC1_ADDR, BRZBMAIN_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZBMAIN_HVBIN_PDAF_PROC1_SIZE; - qpd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - -// QPD proc2 - if(qpd_proc1_flag) { - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBMAIN_HVBIN_PDAF_PROC2_ADDR + BRZBMAIN_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc2 unvalid\n", __FUNCTION__); - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - BRZBMAIN_HVBIN_PDAF_PROC2_ADDR, BRZBMAIN_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += BRZBMAIN_HVBIN_PDAF_PROC2_SIZE; - qpd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(qpd_proc1_flag && qpd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] QPD eeprom error",__FUNCTION__); - } - if(pCamCalData->PDAF.Size_of_PDAF == 0) { - err = CamCalReturnErr[pCamCalData->Command]; - } - - debug_log("[%s] pCamCalData->PDAF.Size_of_PDAF= %d 0x%x\n", __FUNCTION__, - pCamCalData->PDAF.Size_of_PDAF, pCamCalData->PDAF.Size_of_PDAF); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} - -static unsigned int do_single_lsc_brzbmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_brzbmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - -/* AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; */ - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering layout->header_addr; - unsigned int check_id = 0x00000000; - unsigned int result = CAM_CAL_ERR_NO_DEVICE; - - if (cam_cal_config->sensor_id == sensorID) { - debug_log("%s sensor_id matched\n", cam_cal_config->name); - } - else { - debug_log("%s sensor_id not matched\n", cam_cal_config->name); - return result; - } - - if (read_data_region(pdata, (u8 *)&check_id, header_offset, 4) != 4) { - debug_log("header_id read failed\n"); - return result; - } - - if (check_id == 0x016B012B || check_id == 0x01C3012B) { // hearder id on OTP guide - debug_log("header_id matched 0x%08x\n", check_id); - result = CAM_CAL_ERR_NO_ERR; - } else { - debug_log("header_id not matched 0x%08x\n", check_id); - } - - return result; -}*/ diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/brzbuwide_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/brzbuwide_op_eeprom.c deleted file mode 100755 index 80c021eb..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/brzbuwide_op_eeprom.c +++ /dev/null @@ -1,622 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_BRZBUWIDE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_brzbuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_brzbuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_brzbuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -//static unsigned int layout_check_brzbuwide(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, unsigned int *_cfg); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x0065009a, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000530, 0x0000074C, do_single_lsc_brzbuwide}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_brzbuwide}, //Start address, block size is useless - {0x00000000, 0x00000000, 0x00000000, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_brzbuwide} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT brzbuwide_op_eeprom = { - .name = "brzbuwide_op_eeprom", - //.check_layout_function = layout_check_brzbuwide, - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = BRZBUWIDE_SENSOR_ID, - .i2c_write_id = 0xA2, - .max_size = 0x4000, - .enable_preload = 1, - .preload_size = 0x4000, - .has_stored_data = 1, -}; - -//static struct STRUCT_CAM_CAL_CONFIG_STRUCT *cam_cal_config = &brzbuwide_op_eeprom; - -static unsigned int do_single_lsc_brzbuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_brzbuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = FacGr = FacGb = FacG = FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - AFInf = AFInf >> 1; - AFMacro = AFMacro >> 1; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering layout->header_addr; - unsigned int check_id = 0x00000000; - unsigned int result = CAM_CAL_ERR_NO_DEVICE; - - if (cam_cal_config->sensor_id == sensorID) - debug_log("%s sensor_id matched\n", cam_cal_config->name); - else { - debug_log("%s sensor_id not matched\n", cam_cal_config->name); - return result; - } - - if (read_data_region(pdata, (u8 *)&check_id, header_offset, 4) != 4) { - debug_log("header_id read failed\n"); - return result; - } - - if (check_id == 0x016B012B || check_id == 0x016d009a) { // hearder id on OTP guide - debug_log("header_id matched 0x%08x\n", check_id); - printk("brzbheader_id wide matched 0x%08x\n", check_id); - result = CAM_CAL_ERR_NO_ERR; - } else{ - debug_log("header_id not matched 0x%08x\n", check_id); - printk("brzbheader_id wide not matched 0x%08x\n", check_id); - } - return result; -}*/ diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/kkthfront_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/kkthfront_op_eeprom.c deleted file mode 100755 index 569d27de..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/kkthfront_op_eeprom.c +++ /dev/null @@ -1,565 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2023 OPLUS Inc. - */ - -#define PFX "CAM_CAL_KKTHFRONT" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_kkthfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_kkthfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_kkthfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01510008, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000530, 0x0000074C, do_single_lsc_kkthfront}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_kkthfront}, //Start address, block size is useless - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00002000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_kkthfront} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT kkthfront_op_eeprom = { - .name = "kkthfront_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KKTHFRONT_SENSOR_ID, - .i2c_write_id = 0xA8, - .max_size = 0x2000, - .enable_preload = 1, - .preload_size = 0x2000, -}; - -static unsigned int do_single_lsc_kkthfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - debug_log("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_kkthfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - //AFInf = AFInf >> 2; - //AFMacro = AFMacro >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_kkthmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_kkthmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_kkthmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_kkthmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x0148012E, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000011, do_part_number}, - {0x00000001, 0x00001070, 0x0000074C, do_single_lsc_kkthmain}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_kkthmain}, //Start address, block size is useless - {0x00000001, 0x000017D0, 0x0000102E, do_pdaf_kkthmain}, - {0x00000001, 0x00000530, 0x00000012, do_pdaf}, - // {0x00000001, 0x00001250, 0x000003E2, do_pdaf}, - // {0x00000001, 0x00001640, 0x000003E2, do_pdaf}, - // {0x00000001, 0x00001A30, 0x000003E2, do_pdaf}, - // {0x00000001, 0x000039B0, 0x000000C8, do_pdaf}, - // {0x00000001, 0x00003A80, 0x000000C8, do_pdaf}, - // {0x00000001, 0x00003F37, 0x000000C8, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_kkthmain} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT kkthmain_op_eeprom = { - .name = "kkthmain_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KKTHMAIN_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, -}; - -static unsigned int do_single_lsc_kkthmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; // flip - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_kkthmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x003A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF 50cm - af_offset = 0x0096; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - pCamCalData->Single2A.S2aAF_t.AF_dac_code_bit_depth = 12; - - printk("======================AF CAM_CAL==================\n"); - printk("cccccc[AFInf] = %d\n", AFInf); - printk("cccccc[AFMacro] = %d\n", AFMacro); - printk("cccccc[AF_50cm] = %d\n", AF_50cm); - printk("======================AF CAM_CAL==================\n"); - } - return err; -} - -static unsigned int do_lens_id_kkthmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - return do_lens_id_base(pdata, start_addr, block_size, pGetSensorCalData); -} - -static unsigned int do_pdaf_kkthmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int read_data_size2; - int err = CamCalReturnErr[pCamCalData->Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - block_size = 0x0A40; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size <= 0) { - return err; - } - /*patrial pd data*/ - start_addr = 0x33A0; - block_size = 0x05EE; - read_data_size2 = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[read_data_size]); - if (read_data_size2 > 0) { - err = CAM_CAL_ERR_NO_ERR; - } else { - return err; - } - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[read_data_size], - pCamCalData->PDAF.Data[read_data_size + 1], - pCamCalData->PDAF.Data[read_data_size + 2], - pCamCalData->PDAF.Data[read_data_size + 3], - pCamCalData->PDAF.Data[read_data_size + 4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - return err; -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/kkthtele_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/kkthtele_op_eeprom.c deleted file mode 100755 index 31fc838c..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/kkthtele_op_eeprom.c +++ /dev/null @@ -1,692 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_KKTHTELE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_kkthtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_kkthtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_kkthtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_kkthtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static int do_ois_kkthtele(struct EEPROM_DRV_FD_DATA *pdata, struct ois_cal_data *data); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01ae010d, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000B00, 0x0000074C, do_single_lsc_kkthtele}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_kkthtele}, //Start address, block size is useless - {0x00000001, 0x00001300, 0x00000A3A, do_pdaf_kkthtele}, - {0x00000000, 0x00000000, 0x00000000, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_kkthtele}, - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT kkthtele_op_eeprom = { - .name = "kkthtele_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KKTHTELE_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, - .parsing_ois_cal_data_from_preload = do_ois_kkthtele, -}; - - -#define KKTHTELE_HVBIN_PDAF_PROC1_SIZE (496) -#define KKTHTELE_HVBIN_PDAF_PROC2_SIZE (1004) -#define KKTHTELE_HVBIN_PDAF_PROC1_ADDR (0x1300) -#define KKTHTELE_HVBIN_PDAF_PROC2_ADDR (0x1500) - -unsigned int do_pdaf_kkthtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - - pCamCalData->PDAF.Size_of_PDAF = KKTHTELE_HVBIN_PDAF_PROC1_SIZE + KKTHTELE_HVBIN_PDAF_PROC2_SIZE; - error_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - -//proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - KKTHTELE_HVBIN_PDAF_PROC1_ADDR + KKTHTELE_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - error_log("[%s] proc1 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - KKTHTELE_HVBIN_PDAF_PROC1_ADDR, KKTHTELE_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - -//proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - KKTHTELE_HVBIN_PDAF_PROC2_ADDR + KKTHTELE_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - error_log("[%s] proc2 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - KKTHTELE_HVBIN_PDAF_PROC2_ADDR, KKTHTELE_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[KKTHTELE_HVBIN_PDAF_PROC1_SIZE]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - error_log("======================PDAF Data==================\n"); - error_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - error_log("RETURN = 0x%x\n", err); - error_log("======================PDAF Data==================\n"); - - return err; - -} - -static unsigned int do_single_lsc_kkthtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; -/* -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif -*/ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - error_log("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - error_log("======================SingleLsc Data==================\n"); - error_log("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - error_log("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - error_log("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - error_log("RETURN = 0x%x\n", err); - error_log("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_kkthtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; -/* -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif -*/ - error_log("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - error_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - error_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - error_log("There are something wrong on EEPROM, plz contact module vendor!!\n"); - error_log("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - error_log("There are something wrong on EEPROM, plz contact module vendor!!"); - error_log("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - error_log("======================AWB CAM_CAL==================\n"); - error_log("AWB Calibration @5100K\n"); - error_log("[CalGain] = 0x%llx\n", CalGain); - error_log("[FacGain] = 0x%llx\n", FacGain); - error_log("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - error_log("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - error_log("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - error_log("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - error_log("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - error_log("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - error_log("There are something wrong on EEPROM, plz contact module vendor!!\n"); - error_log("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - error_log("There are something wrong on EEPROM, plz contact module vendor!!"); - error_log("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - error_log("AWB Calibration @4000K\n"); - error_log("[CalGain] = 0x%llx\n", CalGain); - error_log("[FacGain] = 0x%llx\n", FacGain); - error_log("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - error_log("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - error_log("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - error_log("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - error_log("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - error_log("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - error_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - error_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - error_log("There are something wrong on EEPROM, plz contact module vendor!!\n"); - error_log("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - error_log("There are something wrong on EEPROM, plz contact module vendor!!"); - error_log("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - error_log("AWB Calibration @3100K\n"); - error_log("[CalGain] = 0x%llx\n", CalGain); - error_log("[FacGain] = 0x%llx\n", FacGain); - error_log("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - error_log("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - error_log("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - error_log("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - error_log("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - error_log("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - error_log("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering pdrv->config_info.mp_eeprom_preload == NULL) - return -1; - offset = 0x1960; - length = 2341; - memcpy(data, pdata->pdrv->config_info.mp_eeprom_preload + offset, length); - return 0; -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/kkthuwide_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/kkthuwide_op_eeprom.c deleted file mode 100755 index eb2d104e..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/kkthuwide_op_eeprom.c +++ /dev/null @@ -1,563 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2023 OPLUS Inc. - */ - -#define PFX "CAM_CAL_KKTHUWIDE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_kkthuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_kkthuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_kkthuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01AB010A, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000B00, 0x0000074C, do_single_lsc_kkthuwide}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_kkthuwide}, //Start address, block size is useless - {0x00000001, 0x00001300, 0x000005EC, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, //temp 4000, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_kkthuwide} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT kkthuwide_op_eeprom = { - .name = "kkthuwide_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KKTHUWIDE_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x4000, - .enable_preload = 1, - .preload_size = 0x4000, -}; - -static unsigned int do_single_lsc_kkthuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_kkthuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x0060; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x003A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x006C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_knightmfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_knightmfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_knightmfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01C40055, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000B00, 0x0000074C, do_single_lsc_knightmfront}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_knightmfront}, //Start address, block size is useless - {0x00000000, 0x00000000, 0x00000000, do_stereo_data}, - {0x00000001, 0x00000000, 0x00002000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_knightmfront} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT knightmfront_op_eeprom = { - .name = "knightmfront_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KNIGHTMFRONT_SENSOR_ID, - .i2c_write_id = 0xA8, - .max_size = 0x1FFF, - .enable_preload = 1, - .preload_size = 0x1FFF, - .has_stored_data = 1, -}; - -static unsigned int do_single_lsc_knightmfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 1; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_knightmfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 2850 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - pr_debug_if(dump_enable, "2850K AWB\n"); - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (2850K) */ - FacR = FacGr = FacGb = FacG = FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @2850K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - return err; -} - -static unsigned int do_lens_id_knightmfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - return do_lens_id_base(pdata, start_addr, block_size, pGetSensorCalData); -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/knightmmain_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/knightmmain_op_eeprom.c deleted file mode 100755 index 764731b8..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/knightmmain_op_eeprom.c +++ /dev/null @@ -1,654 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_KNIGHTMMAIN" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_knightmmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_knightmmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_knightmmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_knightmmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01A30115, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000C00, 0x0000074C, do_single_lsc_knightmmain}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_knightmmain}, //Start address, block size is useless - {0x00000001, 0x00001400, 0x00000A3A, do_pdaf_knightmmain}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_knightmmain} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT knightmmain_op_eeprom = { - .name = "knightmmain_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KNIGHTMMAIN_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x4000, - .enable_preload = 1, - .preload_size = 0x4000, - .has_stored_data = 1, -}; - -#define KNIGHTMMAIN_HVBIN_PDAF_PROC1_SIZE (496) -#define KNIGHTMMAIN_HVBIN_PDAF_PROC2_SIZE (1004) -#define KNIGHTMMAIN_HVBIN_PDAF_PROC1_ADDR (0x1400) -#define KNIGHTMMAIN_HVBIN_PDAF_PROC2_ADDR (0x1600) - -unsigned int do_pdaf_knightmmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - - pCamCalData->PDAF.Size_of_PDAF = KNIGHTMMAIN_HVBIN_PDAF_PROC1_SIZE + KNIGHTMMAIN_HVBIN_PDAF_PROC2_SIZE; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - -//proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - KNIGHTMMAIN_HVBIN_PDAF_PROC1_ADDR + KNIGHTMMAIN_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc1 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - KNIGHTMMAIN_HVBIN_PDAF_PROC1_ADDR, KNIGHTMMAIN_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - -//proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - KNIGHTMMAIN_HVBIN_PDAF_PROC2_ADDR + KNIGHTMMAIN_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - KNIGHTMMAIN_HVBIN_PDAF_PROC2_ADDR, KNIGHTMMAIN_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[KNIGHTMMAIN_HVBIN_PDAF_PROC1_SIZE]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - pr_debug("======================PDAF Data==================\n"); - pr_debug("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - pr_debug("RETURN = 0x%x\n", err); - error_log("======================PDAF Data==================\n"); - - return err; - -} - - -static unsigned int do_single_lsc_knightmmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 1; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_knightmmain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 2850 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - pr_debug_if(dump_enable, "2850K AWB\n"); - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (2850K) */ - FacR = FacGr = FacGb = FacG = FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @2850K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AFInf = AFInf >> 1; - // AFMacro = AFMacro >> 1; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_konkafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_konkafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_konkafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01510008, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000530, 0x0000074C, do_single_lsc_konkafront}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_konkafront}, //Start address, block size is useless - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00002000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_konkafront} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT konkafront_op_eeprom = { - .name = "konkafront_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KONKAFRONT_SENSOR_ID, - .i2c_write_id = 0xA8, - .max_size = 0x2000, - .enable_preload = 1, - .preload_size = 0x2000, -}; - -static unsigned int do_single_lsc_konkafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - debug_log("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_konkafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - //AFInf = AFInf >> 2; - //AFMacro = AFMacro >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -#define READ_AVG 1 - -static unsigned int do_single_lsc_konkamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_konkamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_konkamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_konkamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x015E012C, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000011, do_part_number}, - {0x00000001, 0x00004000, 0x0000074C, do_single_lsc_konkamain}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_konkamain}, //Start address, block size is useless - {0x00000001, 0x00005300, 0x00001648, do_pdaf_konkamain}, - {0x00000001, 0x000005E4, 0x00000012, do_pdaf}, - // {0x00000001, 0x00001250, 0x000003E2, do_pdaf}, - // {0x00000001, 0x00001640, 0x000003E2, do_pdaf}, - // {0x00000001, 0x00001A30, 0x000003E2, do_pdaf}, - // {0x00000001, 0x000039B0, 0x000000C8, do_pdaf}, - // {0x00000001, 0x00003A80, 0x000000C8, do_pdaf}, - // {0x00000001, 0x00003F37, 0x000000C8, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_konkamain} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT konkamain_op_eeprom = { - .name = "konkamain_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KONKAMAIN_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, -}; - -static unsigned int do_single_lsc_konkamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; // flip - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_konkamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - #if READ_AVG /* AWBRG&BG integer And fractional parts */ - long long ReadAvgData= 0; - #endif - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x003A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - #if READ_AVG /* AWBRG&BG integer And fractional parts */ - awb_offset = 0x0530; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 6, (unsigned char *) & ReadAvgData); - if (read_data_size > 0) { - if (ReadAvgData != 0x0000000000000000 && - ReadAvgData != 0x0000FFFFFFFFFFFF) { - pCamCalData->Single2A.S2aAwb.r1RG_avg_lnt = ReadAvgData & 0xFFFF; - pCamCalData->Single2A.S2aAwb.r1RG_avg_dec = (ReadAvgData >> 16) & 0xFFFFFFFF; - } else { - pCamCalData->Single2A.S2aAwb.r1RG_avg_lnt = 0; - pCamCalData->Single2A.S2aAwb.r1RG_avg_dec = 0; - } - printk("Read r1RG_avg OK 0x%llx %d.%d\n", ReadAvgData, pCamCalData->Single2A.S2aAwb.r1RG_avg_lnt, pCamCalData->Single2A.S2aAwb.r1RG_avg_dec); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read r1RG_avg Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0536; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 6, (unsigned char *) & ReadAvgData); - if (read_data_size > 0) { - if (ReadAvgData != 0x0000000000000000 && - ReadAvgData != 0x0000FFFFFFFFFFFF) { - pCamCalData->Single2A.S2aAwb.r1BG_avg_lnt = ReadAvgData & 0xFFFF; - pCamCalData->Single2A.S2aAwb.r1BG_avg_dec = (ReadAvgData >> 16) & 0xFFFFFFFF; - } else { - pCamCalData->Single2A.S2aAwb.r1BG_avg_lnt = 0; - pCamCalData->Single2A.S2aAwb.r1BG_avg_dec = 0; - } - printk("Read r1BG_avg OK 0x%llx %d.%d\n", ReadAvgData, pCamCalData->Single2A.S2aAwb.r1BG_avg_lnt, pCamCalData->Single2A.S2aAwb.r1BG_avg_dec); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read r1BG_avg Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x053C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 6, (unsigned char *) & ReadAvgData); - if (read_data_size > 0) { - if (ReadAvgData != 0x0000000000000000 && - ReadAvgData != 0x0000FFFFFFFFFFFF) { - pCamCalData->Single2A.S2aAwb.r1GoldenRG_lnt = ReadAvgData & 0xFFFF; - pCamCalData->Single2A.S2aAwb.r1GoldenRG_dec = (ReadAvgData >> 16) & 0xFFFFFFFF; - } else { - pCamCalData->Single2A.S2aAwb.r1GoldenRG_lnt = 0; - pCamCalData->Single2A.S2aAwb.r1GoldenRG_dec = 0; - } - printk("Read r1GoldenRG OK 0x%llx %d.%d\n", ReadAvgData, pCamCalData->Single2A.S2aAwb.r1GoldenRG_lnt, pCamCalData->Single2A.S2aAwb.r1GoldenRG_dec); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read r1GoldenRG Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0542; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 6, (unsigned char *) & ReadAvgData); - if (read_data_size > 0) { - if (ReadAvgData != 0x0000000000000000 && - ReadAvgData != 0x0000FFFFFFFFFFFF) { - pCamCalData->Single2A.S2aAwb.r1GoldenBG_lnt = ReadAvgData & 0xFFFF; - pCamCalData->Single2A.S2aAwb.r1GoldenBG_dec = (ReadAvgData >> 16) & 0xFFFFFFFF; - } else { - pCamCalData->Single2A.S2aAwb.r1GoldenBG_lnt = 0; - pCamCalData->Single2A.S2aAwb.r1GoldenBG_dec = 0; - } - printk("Read r1GoldenBG_avg OK 0x%llx %d.%d\n", ReadAvgData, pCamCalData->Single2A.S2aAwb.r1GoldenBG_lnt, pCamCalData->Single2A.S2aAwb.r1GoldenBG_dec); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read r1GoldenBG_avg Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0550; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 6, (unsigned char *) & ReadAvgData); - if (read_data_size > 0) { - if (ReadAvgData != 0x0000000000000000 && - ReadAvgData != 0x0000FFFFFFFFFFFF) { - pCamCalData->Single2A.S2aAwb.r2RG_avg_lnt = ReadAvgData & 0xFFFF; - pCamCalData->Single2A.S2aAwb.r2RG_avg_dec = (ReadAvgData >> 16) & 0xFFFFFFFF; - } else { - pCamCalData->Single2A.S2aAwb.r2RG_avg_lnt = 0; - pCamCalData->Single2A.S2aAwb.r2RG_avg_dec = 0; - } - printk("Read r2RG_avg OK 0x%llx %d.%d\n", ReadAvgData, pCamCalData->Single2A.S2aAwb.r2RG_avg_lnt, pCamCalData->Single2A.S2aAwb.r2RG_avg_dec); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read r2RG_avg Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0556; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 6, (unsigned char *) & ReadAvgData); - if (read_data_size > 0) { - if (ReadAvgData != 0x0000000000000000 && - ReadAvgData != 0x0000FFFFFFFFFFFF) { - pCamCalData->Single2A.S2aAwb.r2BG_avg_lnt = ReadAvgData & 0xFFFF; - pCamCalData->Single2A.S2aAwb.r2BG_avg_dec = (ReadAvgData >> 16) & 0xFFFFFFFF; - } else { - pCamCalData->Single2A.S2aAwb.r2BG_avg_lnt = 0; - pCamCalData->Single2A.S2aAwb.r2BG_avg_dec = 0; - } - printk("Read r1RG_avg OK 0x%llx %d.%d\n", ReadAvgData, pCamCalData->Single2A.S2aAwb.r2BG_avg_lnt, pCamCalData->Single2A.S2aAwb.r2BG_avg_dec); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read r2BG_avg Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x055C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 6, (unsigned char *) & ReadAvgData); - if (read_data_size > 0) { - if (ReadAvgData != 0x0000000000000000 && - ReadAvgData != 0x0000FFFFFFFFFFFF) { - pCamCalData->Single2A.S2aAwb.r2GoldenRG_lnt = ReadAvgData & 0xFFFF; - pCamCalData->Single2A.S2aAwb.r2GoldenRG_dec = (ReadAvgData >> 16) & 0xFFFFFFFF; - } else { - pCamCalData->Single2A.S2aAwb.r2GoldenRG_lnt = 0; - pCamCalData->Single2A.S2aAwb.r2GoldenRG_lnt = 0; - } - printk("Read r2GoldenRG_avg OK 0x%llx %d.%d\n", ReadAvgData, pCamCalData->Single2A.S2aAwb.r2GoldenRG_lnt, pCamCalData->Single2A.S2aAwb.r2GoldenRG_dec); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read r2GoldenRG_avg Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0562; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 6, (unsigned char *) & ReadAvgData); - if (read_data_size > 0) { - if (ReadAvgData != 0x0000000000000000 && - ReadAvgData != 0x0000FFFFFFFFFFFF) { - pCamCalData->Single2A.S2aAwb.r2GoldenBG_lnt = ReadAvgData & 0xFFFF; - pCamCalData->Single2A.S2aAwb.r2GoldenBG_dec = (ReadAvgData >> 16) & 0xFFFFFFFF; - } else { - pCamCalData->Single2A.S2aAwb.r2GoldenBG_lnt = 0; - pCamCalData->Single2A.S2aAwb.r2GoldenBG_dec = 0; - } - printk("Read r2GoldenBG_avg OK 0x%llx %d.%d\n", ReadAvgData, pCamCalData->Single2A.S2aAwb.r2GoldenBG_lnt, pCamCalData->Single2A.S2aAwb.r2GoldenBG_dec); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read r2GoldenBG_avg Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF 50cm - af_offset = 0x0096; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /*Compatible for 10bit and 14bit*/ - if (AFMacro > 2000) { - AFInf = AFInf >> 4; - AFMacro = AFMacro >> 4; - AF_50cm = AF_50cm >> 4; - } - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - printk("======================AF CAM_CAL==================\n"); - printk("cccccc[AFInf] = %d\n", AFInf); - printk("cccccc[AFMacro] = %d\n", AFMacro); - printk("cccccc[AF_50cm] = %d\n", AF_50cm); - printk("======================AF CAM_CAL==================\n"); - } - return err; -} - -static unsigned int do_lens_id_konkamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - return do_lens_id_base(pdata, start_addr, block_size, pGetSensorCalData); -} - -static unsigned int do_pdaf_konkamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int read_data_size2; - int err = CamCalReturnErr[pCamCalData->Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - block_size = 0x105A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size <= 0) { - return err; - } - /*patrial pd data*/ - start_addr = 0x7630; - block_size = 0x5EE; - read_data_size2 = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[read_data_size]); - if (read_data_size2 > 0) { - err = CAM_CAL_ERR_NO_ERR; - } else { - return err; - } - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[read_data_size], - pCamCalData->PDAF.Data[read_data_size + 1], - pCamCalData->PDAF.Data[read_data_size + 2], - pCamCalData->PDAF.Data[read_data_size + 3], - pCamCalData->PDAF.Data[read_data_size + 4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - return err; -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/konkatele_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/konkatele_op_eeprom.c deleted file mode 100755 index 21fb4b37..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/konkatele_op_eeprom.c +++ /dev/null @@ -1,645 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2023 OPLUS Inc. - */ - -#define PFX "CAM_CAL_KONKATELE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_konkatele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_konkatele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_konkatele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_konkatele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static int do_ois_konkatele(struct EEPROM_DRV_FD_DATA *pdata, struct ois_cal_data *data); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - // 0x00000006, 0xffffffff, CAM_CAL_SINGLE_EEPROM_DATA, - 0x00000006, 0x01B1012F, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00001070, 0x0000074C, do_single_lsc_konkatele}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_konkatele}, //Start address, block size is useless - {0x00000001, 0x000017D0, 0x00001028, do_pdaf_konkatele}, - {0x00000001, 0x00001300, 0x000005EC, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, //temp 4000, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_konkatele} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT konkatele_op_eeprom = { - .name = "konkatele_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KONKATELE_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .parsing_ois_cal_data_from_preload = do_ois_konkatele, -}; - -static unsigned int do_single_lsc_konkatele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 3; // flip - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_konkatele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x0060; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x003A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x006C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF 50cm - af_offset = 0x0098; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - error_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - block_size = 0xA3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size <= 0) { - return err; - } - /*patrial pd data*/ - start_addr = 0x33A0; - block_size = 0x5EE; - read_data_size2 = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[read_data_size]); - if (read_data_size2 > 0) { - err = CAM_CAL_ERR_NO_ERR; - } else { - return err; - } - error_log("======================PDAF Data==================\n"); - error_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - error_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[read_data_size], - pCamCalData->PDAF.Data[read_data_size + 1], - pCamCalData->PDAF.Data[read_data_size + 2], - pCamCalData->PDAF.Data[read_data_size + 3], - pCamCalData->PDAF.Data[read_data_size + 4]); - error_log("RETURN = 0x%x\n", err); - error_log("======================PDAF Data==================\n"); - return err; -} - -static int do_ois_konkatele(struct EEPROM_DRV_FD_DATA *pdata, struct ois_cal_data *data) -{ - unsigned int offset; - unsigned int length; - if (pdata->pdrv->config_info.mp_eeprom_preload == NULL) - return -1; - offset = 0x5A90; - length = 2341; - memcpy(data, pdata->pdrv->config_info.mp_eeprom_preload + offset, length); - return 0; -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/konkautele_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/konkautele_op_eeprom.c deleted file mode 100644 index 8c66cd4f..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/konkautele_op_eeprom.c +++ /dev/null @@ -1,863 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2023 OPLUS Inc. - */ - -#define PFX "CAM_CAL_KONKAUTELE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" -#include - - -#define READ_4000K 0 -#define DW9786_CHIP_EN 0xE000 -#define KONKAUTELE_AF_SLAVE_ID 0x32 -#define MAX_BUF_SIZE 511 -#define MAX_VAL_NUM_U8 (MAX_BUF_SIZE - 2) - -static unsigned int do_module_version_konkautele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_single_lsc_konkautele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_konkautele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_konkautele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_konkautele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int layout_check_konkautele(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, - unsigned int *_cfg); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x00EA0129, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version_konkautele}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000CFE, 0x0000074C, do_single_lsc_konkautele}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_konkautele}, //Start address, block size is useless - {0x00000001, 0x00001456, 0x00001020, do_pdaf_konkautele}, - {0x00000001, 0x00001300, 0x000005EC, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, //temp 4000, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_konkautele} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT konkautele_op_eeprom = { - .name = "konkautele_op_eeprom", - .check_layout_function = layout_check_konkautele, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KONKAUTELE_SENSOR_ID, - .i2c_write_id = 0x74, - .max_size = 0x4000, - .enable_preload = 1, - .preload_size = 0x4000, -}; - -struct mutex dw9786_mutex; -EXPORT_SYMBOL(dw9786_mutex); - -int adaptor_i2c_wr_u16(struct i2c_client *i2c_client, u16 addr, u16 reg, - u16 val) -{ - int ret; - u8 buf[4]; - struct i2c_msg msg; - - buf[0] = reg >> 8; - buf[1] = reg & 0xff; - buf[2] = val >> 8; - buf[3] = val & 0xff; - - msg.addr = addr; - msg.flags = i2c_client->flags; - msg.buf = buf; - msg.len = sizeof(buf); - - ret = i2c_transfer(i2c_client->adapter, &msg, 1); - if (ret < 0) - dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret); - - return ret; -} - -int adaptor_i2c_rd_u16(struct i2c_client *i2c_client, - u16 addr, u16 reg, u16 *val) -{ - int ret; - u8 buf[2]; - struct i2c_msg msg[2]; - - if (i2c_client == NULL) - return -ENODEV; - - buf[0] = reg >> 8; - buf[1] = reg & 0xff; - - msg[0].addr = addr; - msg[0].flags = i2c_client->flags; - msg[0].buf = buf; - msg[0].len = sizeof(buf); - - msg[1].addr = addr; - msg[1].flags = i2c_client->flags | I2C_M_RD; - msg[1].buf = buf; - msg[1].len = 2; - - ret = i2c_transfer(i2c_client->adapter, msg, 2); - if (ret < 0) { - dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret); - return ret; - } - - *val = ((u16)buf[0] << 8) | buf[1]; - - return 0; -} - -int adaptor_i2c_wr_p8(struct i2c_client *i2c_client, u16 addr, u16 reg, - u8 *p_vals, u32 n_vals) -{ - u8 *buf, *pbuf, *pdata; - struct i2c_msg msg; - int ret, sent, total, cnt; - - buf = kmalloc(MAX_BUF_SIZE, GFP_KERNEL); - if (!buf) - return -ENOMEM; - - sent = 0; - total = n_vals; - pdata = p_vals; - - buf[0] = reg >> 8; - buf[1] = reg & 0xff; - - msg.addr = addr; - msg.flags = i2c_client->flags; - msg.buf = buf; - - while (sent < total) { - cnt = total - sent; - if (cnt > MAX_VAL_NUM_U8) - cnt = MAX_VAL_NUM_U8; - - pbuf = buf + 2; - memcpy(pbuf, pdata, cnt); - - msg.len = 2 + cnt; - - ret = i2c_transfer(i2c_client->adapter, &msg, 1); - if (ret < 0) { - dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", - ret); - kfree(buf); - return -EIO; - } - - sent += cnt; - pdata += cnt; - } - - kfree(buf); - - return 0; -} - -static unsigned int do_module_version_konkautele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - (void) pdata; - (void) start_addr; - (void) block_size; - (void) pGetSensorCalData; - - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int ret = 0; - u8 retry = 5; - unsigned short sensor_id; - int read_data_size; - unsigned int af_offset = 0x0006; - uint16_t chip_en; - struct i2c_client *client; - unsigned short stdby[17] = {0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000}; - - client = pdata->pdrv->pi2c_client; - if (client == NULL) { - error_log("i2c_client == NULL\n"); - return 0; - } - client->addr = KONKAUTELE_AF_SLAVE_ID >> 1; - do{ - mutex_lock(&dw9786_mutex); - printk("%s dw9786_mutex: %p\n", __func__, &dw9786_mutex); - ret = adaptor_i2c_rd_u16(client, client->addr, DW9786_CHIP_EN, &chip_en); - printk("%s DW9786_CHIP_EN: 0x%x, ret: %d\n", __func__, chip_en, ret); - if(chip_en != 0x0001) { - ret = adaptor_i2c_wr_u16(client, client->addr, DW9786_CHIP_EN, 0x0000); - msleep(2); - adaptor_i2c_wr_p8(client, client->addr, DW9786_CHIP_EN, (unsigned char *)stdby, 34); - msleep(5); - ret = adaptor_i2c_wr_u16(client, client->addr, 0xE004, 0x0001); - msleep(20); - } - mutex_unlock(&dw9786_mutex); - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&sensor_id); - retry--; - printk("ccccc sensor_id:%d try:%d, ret:%d, \n", sensor_id, retry, ret); - } while (sensor_id != 0x0129 && retry > 0); - - return CAM_CAL_ERR_NO_ERR; -} - -static unsigned int do_single_lsc_konkautele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 3; // flip - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_konkautele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x0060; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x003A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x006C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF 50cm - af_offset = 0x0098; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - pCamCalData->Single2A.S2aAF_t.AF_dac_code_bit_depth = 12; - - ////Only AF Gathering Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - block_size = 0xA36; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size <= 0) { - return err; - } - /*patrial pd data*/ - start_addr = 0x3110; - block_size = 0x5EA; - read_data_size2 = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[read_data_size]); - if (read_data_size2 > 0) { - err = CAM_CAL_ERR_NO_ERR; - } else { - return err; - } - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[read_data_size], - pCamCalData->PDAF.Data[read_data_size + 1], - pCamCalData->PDAF.Data[read_data_size + 2], - pCamCalData->PDAF.Data[read_data_size + 3], - pCamCalData->PDAF.Data[read_data_size + 4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - return err; -} - -static unsigned int layout_check_konkautele(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, - unsigned int *_cfg) -{ - struct STRUCT_CAM_CAL_CONFIG_STRUCT *cfg = - (struct STRUCT_CAM_CAL_CONFIG_STRUCT *)_cfg; - unsigned int header_offset = 0x00000000; - unsigned int check_id = 0x00000000; - unsigned int result = CAM_CAL_ERR_NO_DEVICE; - int ret = -1; - uint16_t chip_en = 0; - struct i2c_client *client; - unsigned short stdby[17] = {0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000}; - client = pdata->pdrv->pi2c_client; - if (client == NULL) { - error_log("i2c_client == NULL\n"); - return 0; - } - client->addr = KONKAUTELE_AF_SLAVE_ID >> 1; - - if (cfg == NULL) { - error_log("null STRUCT_CAM_CAL_CONFIG_STRUCT arg\n"); - return result; - } - - header_offset = cfg->layout->header_addr; - - if (cfg->sensor_id == sensorID) - debug_log("%s sensor_id matched\n", cfg->name); - else { - debug_log("%s sensor_id not matched\n", cfg->name); - return result; - } - - mutex_lock(&dw9786_mutex); - printk("%s dw9786_mutex: %p\n", __func__, &dw9786_mutex); - ret = adaptor_i2c_rd_u16(client, client->addr, DW9786_CHIP_EN, &chip_en); - printk("%s DW9786_CHIP_EN: 0x%x, ret: %d\n", __func__, chip_en, ret); - if(chip_en != 0x0001) { - ret = adaptor_i2c_wr_u16(client, client->addr, DW9786_CHIP_EN, 0x0000); - msleep(2); - adaptor_i2c_wr_p8(client, client->addr, DW9786_CHIP_EN, (unsigned char *)stdby, 34); - msleep(5); - ret = adaptor_i2c_wr_u16(client, client->addr, 0xE004, 0x0001); - msleep(20); - } - mutex_unlock(&dw9786_mutex); - - if (read_data_region(pdata, (u8 *)&check_id, header_offset, 4, cfg) != 4) { - debug_log("header_id read failed\n"); - return result; - } - - if (check_id == cfg->layout->header_id) { - debug_log("header_id matched 0x%08x 0x%08x\n", - check_id, cfg->layout->header_id); - result = CAM_CAL_ERR_NO_ERR; - } else - debug_log("header_id not matched 0x%08x 0x%08x\n", - check_id, cfg->layout->header_id); - - return result; -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/konkauwide_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/konkauwide_op_eeprom.c deleted file mode 100644 index b3bdecfc..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/konkauwide_op_eeprom.c +++ /dev/null @@ -1,563 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2023 OPLUS Inc. - */ - -#define PFX "CAM_CAL_KONKAUWIDE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_konkauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_konkauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_konkauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01AB010A, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000B00, 0x0000074C, do_single_lsc_konkauwide}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_konkauwide}, //Start address, block size is useless - {0x00000001, 0x00001300, 0x000005EC, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, //temp 4000, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_konkauwide} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT konkauwide_op_eeprom = { - .name = "konkauwide_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = KONKAUWIDE_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x4000, - .enable_preload = 1, - .preload_size = 0x4000, -}; - -static unsigned int do_single_lsc_konkauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_konkauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x0060; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x003A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x006C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_sayramfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_sayramfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_sayramfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01510008, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000530, 0x0000074C, do_single_lsc_sayramfront}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_sayramfront}, //Start address, block size is useless - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00002000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_sayramfront} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT sayramfront_op_eeprom = { - .name = "sayramfront_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = SAYRAMFRONT_SENSOR_ID, - .i2c_write_id = 0xA8, - .max_size = 0x2000, - .enable_preload = 1, - .preload_size = 0x2000, -}; - -static unsigned int do_single_lsc_sayramfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - debug_log("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_sayramfront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - //AFInf = AFInf >> 2; - //AFMacro = AFMacro >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_sayrammain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_sayrammain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_sayrammain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_sayrammain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x0148012E, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000011, do_part_number}, - {0x00000001, 0x00001070, 0x0000074C, do_single_lsc_sayrammain}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_sayrammain}, //Start address, block size is useless - {0x00000001, 0x000017D0, 0x0000102E, do_pdaf_sayrammain}, - {0x00000001, 0x00000530, 0x00000012, do_pdaf}, - // {0x00000001, 0x00001250, 0x000003E2, do_pdaf}, - // {0x00000001, 0x00001640, 0x000003E2, do_pdaf}, - // {0x00000001, 0x00001A30, 0x000003E2, do_pdaf}, - // {0x00000001, 0x000039B0, 0x000000C8, do_pdaf}, - // {0x00000001, 0x00003A80, 0x000000C8, do_pdaf}, - // {0x00000001, 0x00003F37, 0x000000C8, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_sayrammain} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT sayrammain_op_eeprom = { - .name = "sayrammain_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = SAYRAMMAIN_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, -}; - -static unsigned int do_single_lsc_sayrammain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; // flip - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_sayrammain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x003A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF 50cm - af_offset = 0x0096; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - pCamCalData->Single2A.S2aAF_t.AF_dac_code_bit_depth = 12; - - printk("======================AF CAM_CAL==================\n"); - printk("cccccc[AFInf] = %d\n", AFInf); - printk("cccccc[AFMacro] = %d\n", AFMacro); - printk("cccccc[AF_50cm] = %d\n", AF_50cm); - printk("======================AF CAM_CAL==================\n"); - } - return err; -} - -static unsigned int do_lens_id_sayrammain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - return do_lens_id_base(pdata, start_addr, block_size, pGetSensorCalData); -} - -static unsigned int do_pdaf_sayrammain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int read_data_size2; - int err = CamCalReturnErr[pCamCalData->Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - block_size = 0x0A40; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size <= 0) { - return err; - } - /*patrial pd data*/ - start_addr = 0x33A0; - block_size = 0x05EE; - read_data_size2 = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[read_data_size]); - if (read_data_size2 > 0) { - err = CAM_CAL_ERR_NO_ERR; - } else { - return err; - } - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[read_data_size], - pCamCalData->PDAF.Data[read_data_size + 1], - pCamCalData->PDAF.Data[read_data_size + 2], - pCamCalData->PDAF.Data[read_data_size + 3], - pCamCalData->PDAF.Data[read_data_size + 4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - return err; -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/sayramtele_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/sayramtele_op_eeprom.c deleted file mode 100755 index 6189deef..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/sayramtele_op_eeprom.c +++ /dev/null @@ -1,645 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2023 OPLUS Inc. - */ - -#define PFX "CAM_CAL_SAYRAMTELE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_sayramtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_sayramtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_sayramtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_sayramtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static int do_ois_sayramtele(struct EEPROM_DRV_FD_DATA *pdata, struct ois_cal_data *data); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - // 0x00000006, 0xffffffff, CAM_CAL_SINGLE_EEPROM_DATA, - 0x00000006, 0x01B1012F, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00001070, 0x0000074C, do_single_lsc_sayramtele}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_sayramtele}, //Start address, block size is useless - {0x00000001, 0x000017D0, 0x00001028, do_pdaf_sayramtele}, - {0x00000001, 0x00001300, 0x000005EC, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, //temp 4000, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_sayramtele} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT sayramtele_op_eeprom = { - .name = "sayramtele_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = SAYRAMTELE_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .parsing_ois_cal_data_from_preload = do_ois_sayramtele, -}; - -static unsigned int do_single_lsc_sayramtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 3; // flip - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_sayramtele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x0060; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x003A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x006C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF 50cm - af_offset = 0x0098; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - error_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - block_size = 0xA3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size <= 0) { - return err; - } - /*patrial pd data*/ - start_addr = 0x33A0; - block_size = 0x5EE; - read_data_size2 = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[read_data_size]); - if (read_data_size2 > 0) { - err = CAM_CAL_ERR_NO_ERR; - } else { - return err; - } - error_log("======================PDAF Data==================\n"); - error_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - error_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[read_data_size], - pCamCalData->PDAF.Data[read_data_size + 1], - pCamCalData->PDAF.Data[read_data_size + 2], - pCamCalData->PDAF.Data[read_data_size + 3], - pCamCalData->PDAF.Data[read_data_size + 4]); - error_log("RETURN = 0x%x\n", err); - error_log("======================PDAF Data==================\n"); - return err; -} - -static int do_ois_sayramtele(struct EEPROM_DRV_FD_DATA *pdata, struct ois_cal_data *data) -{ - unsigned int offset; - unsigned int length; - if (pdata->pdrv->config_info.mp_eeprom_preload == NULL) - return -1; - offset = 0x5A90; - length = 2341; - memcpy(data, pdata->pdrv->config_info.mp_eeprom_preload + offset, length); - return 0; -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/sayramuwide_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/sayramuwide_op_eeprom.c deleted file mode 100644 index d18fb29b..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/sayramuwide_op_eeprom.c +++ /dev/null @@ -1,563 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2023 OPLUS Inc. - */ - -#define PFX "CAM_CAL_SAYRAMUWIDE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_sayramuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_sayramuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_sayramuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01AB010A, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000B00, 0x0000074C, do_single_lsc_sayramuwide}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_sayramuwide}, //Start address, block size is useless - {0x00000001, 0x00001300, 0x000005EC, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, //temp 4000, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_sayramuwide} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT sayramuwide_op_eeprom = { - .name = "sayramuwide_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = SAYRAMUWIDE_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x4000, - .enable_preload = 1, - .preload_size = 0x4000, -}; - -static unsigned int do_single_lsc_sayramuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_sayramuwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x0060; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x003A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x006C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_targafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_targafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_targafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_targafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -//static unsigned int layout_check_targafront(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, unsigned int *_cfg); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01c40055, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000530, 0x0000074C, do_single_lsc_targafront}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_targafront}, //Start address, block size is useless - {0x00000001, 0x00000000, 0x00000000, do_pdaf_targafront}, - {0x00000000, 0x00000000, 0x00000000, do_stereo_data}, - {0x00000001, 0x00000000, 0x00002000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_targafront} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT targafront_op_eeprom = { - .name = "targafront_op_eeprom", -// .check_layout_function = layout_check_targafront, - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = TARGAFRONT_SENSOR_ID, - .i2c_write_id = 0xA8, - .max_size = 0x1FFF, - .enable_preload = 1, - .preload_size = 0x1FFF, -}; -//static struct STRUCT_CAM_CAL_CONFIG_STRUCT *cam_cal_config = &targafront_op_eeprom; - -/* -unsigned int do_pdaf_targafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} -*/ -static unsigned int do_pdaf_targafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData){ - - return 0; - -} -#if 0 -#define TARGAFRONT_HVBIN_PDAF_PROC1_SIZE (0x1BA0-0x17D0) //976 0x3D0 -#define TARGAFRONT_HVBIN_PDAF_PROC2_SIZE (0x2208-0x1BB0) //1624 2600 0xA28 -#define TARGAFRONT_HVBIN_PDAF_PROC1_ADDR (0x17D0) -#define TARGAFRONT_HVBIN_PDAF_PROC2_ADDR (0x1BB0) - -//partial PD -#define TARGAFRONT_PARTIAL_PD_PROC1_SIZE (0x3590-0x33A0) //496 0X1F0 -#define TARGAFRONT_PARTIAL_PD_PROC2_SIZE (0x398C-0x35A0) //1004 1500 0x5DC -#define TARGAFRONT_PARTIAL_PD_PROC1_ADDR (0x33A0) -#define TARGAFRONT_PARTIAL_PD_PROC2_ADDR (0x35A0) -unsigned int do_pdaf_targafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - return err; - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - int bios = 0; - bool partial_pd_proc1_flag = false; - bool partial_pd_proc2_flag = false; - bool qpd_proc1_flag = false; - bool qpd_proc2_flag = false; - - pCamCalData->PDAF.Size_of_PDAF = 0; - debug_log("======================PDAF Data==================\n"); - debug_log("[%s] QPD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, TARGAFRONT_HVBIN_PDAF_PROC1_ADDR, TARGAFRONT_HVBIN_PDAF_PROC1_SIZE); - debug_log("[%s] QPD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, TARGAFRONT_HVBIN_PDAF_PROC2_ADDR, TARGAFRONT_HVBIN_PDAF_PROC2_SIZE); - debug_log("[%s] partial PD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, TARGAFRONT_PARTIAL_PD_PROC1_ADDR, TARGAFRONT_PARTIAL_PD_PROC1_SIZE); - debug_log("[%s] partial PD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, TARGAFRONT_PARTIAL_PD_PROC2_ADDR, TARGAFRONT_PARTIAL_PD_PROC2_SIZE); - -// partial PD - isValid = 0; - bios = 0; -// partial PD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAFRONT_PARTIAL_PD_PROC1_ADDR + TARGAFRONT_PARTIAL_PD_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] partial PD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAFRONT_PARTIAL_PD_PROC1_ADDR, TARGAFRONT_PARTIAL_PD_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += TARGAFRONT_PARTIAL_PD_PROC1_SIZE; - partial_pd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(partial_pd_proc1_flag) { - // partial PD proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAFRONT_PARTIAL_PD_PROC2_ADDR + TARGAFRONT_PARTIAL_PD_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAFRONT_PARTIAL_PD_PROC2_ADDR, TARGAFRONT_PARTIAL_PD_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += TARGAFRONT_PARTIAL_PD_PROC2_SIZE; - partial_pd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - } - - if(partial_pd_proc1_flag && partial_pd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] partial PD eeprom error",__FUNCTION__); - } - err = CAM_CAL_ERR_NO_ERR; - -// QPD -// QPD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAFRONT_HVBIN_PDAF_PROC1_ADDR + TARGAFRONT_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAFRONT_HVBIN_PDAF_PROC1_ADDR, TARGAFRONT_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += TARGAFRONT_HVBIN_PDAF_PROC1_SIZE; - qpd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - -// QPD proc2 - if(qpd_proc1_flag) { - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAFRONT_HVBIN_PDAF_PROC2_ADDR + TARGAFRONT_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc2 unvalid\n", __FUNCTION__); - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAFRONT_HVBIN_PDAF_PROC2_ADDR, TARGAFRONT_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += TARGAFRONT_HVBIN_PDAF_PROC2_SIZE; - qpd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(qpd_proc1_flag && qpd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] QPD eeprom error",__FUNCTION__); - } - if(pCamCalData->PDAF.Size_of_PDAF == 0) { - err = CamCalReturnErr[pCamCalData->Command]; - } - - debug_log("[%s] pCamCalData->PDAF.Size_of_PDAF= %d 0x%x\n", __FUNCTION__, - pCamCalData->PDAF.Size_of_PDAF, pCamCalData->PDAF.Size_of_PDAF); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} -#endif - - -static unsigned int do_single_lsc_targafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_targafront(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - //unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - printk("awb Calibration OK tanhao"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - printk("targaLight source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - printk("awb Calibration 5100k OK tanhao"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0010; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - printk("targa5000k UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - printk("targa5000k fail UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0018; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - printk("targaGoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - printk("targafail GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Calibration Data*/ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x006C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - printk("targaLight source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - printk("targafail Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (3100K) */ - awb_offset = 0x0034; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x003C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - printk("targaGoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - printk("targafail GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - #if 0 - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - -/* AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; */ - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering layout->header_addr; - unsigned int check_id = 0x00000000; - unsigned int result = CAM_CAL_ERR_NO_DEVICE; - - if (cam_cal_config->sensor_id == sensorID) - debug_log("%s sensor_id matched\n", cam_cal_config->name); - else { - debug_log("%s sensor_id not matched\n", cam_cal_config->name); - return result; - } - - if (read_data_region(pdata, (u8 *)&check_id, header_offset, 4) != 4) { - debug_log("header_id read failed\n"); - return result; - } - - if (check_id == 0x01c40055 || check_id == 0x01C3012B || check_id == 0x00510055) { // hearder id on OTP guide - debug_log("header_id matched 0x%08x\n", check_id); - printk("targaheader_id matched 0x%08x\n", check_id); - result = CAM_CAL_ERR_NO_ERR; - } else{ - debug_log("header_id not matched 0x%08x\n", check_id); - printk("targaheader_id not matched 0x%08x\n", check_id); - } - return result; -}*/ diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/targamain_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/targamain_op_eeprom.c deleted file mode 100755 index ec908c83..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/targamain_op_eeprom.c +++ /dev/null @@ -1,824 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_TARGAMAIN" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define READ_4000K 0 -#define DEBUG_CALIBRATION_LOAD - -static unsigned int do_single_lsc_targamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_targamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_targamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_targamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -//static unsigned int layout_check_targamain(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, unsigned int *_cfg); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01480143, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00001140, 0x0000074C, do_single_lsc_targamain}, - {0x00000001, 0x00000020, 0x00000023, do_2a_gain_targamain}, //Start address, block size is useless - {0x00000001, 0x00001890, 0x00000A28, do_pdaf_targamain}, - {0x00000000, 0x00000FAE, 0x00000A28, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_targamain} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT targamain_op_eeprom = { - .name = "targamain_op_eeprom", - //.check_layout_function = layout_check_targamain, - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = TARGAMAIN_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, -}; -//static struct STRUCT_CAM_CAL_CONFIG_STRUCT *cam_cal_config = &targamain_op_eeprom; - -/* -unsigned int do_pdaf_targamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} -*/ - -#define TARGAMAIN_HVBIN_PDAF_PROC1_SIZE (0x1C60-0x1890) //976 0x3D0 -#define TARGAMAIN_HVBIN_PDAF_PROC2_SIZE (0x22C8-0x1C70) //1624 2600 0xA28 -#define TARGAMAIN_HVBIN_PDAF_PROC1_ADDR (0x1890) -#define TARGAMAIN_HVBIN_PDAF_PROC2_ADDR (0x1C70) - -//partial PD -#define TARGAMAIN_PARTIAL_PD_PROC1_SIZE (0x3720-0x3530) //496 0X1F0 -#define TARGAMAIN_PARTIAL_PD_PROC2_SIZE (0x3B1C-0x3730) //1004 1500 0x5DC -#define TARGAMAIN_PARTIAL_PD_PROC1_ADDR (0x3530) -#define TARGAMAIN_PARTIAL_PD_PROC2_ADDR (0x3730) -unsigned int do_pdaf_targamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - int bios = 0; - bool partial_pd_proc1_flag = false; - bool partial_pd_proc2_flag = false; - bool qpd_proc1_flag = false; - bool qpd_proc2_flag = false; - - pCamCalData->PDAF.Size_of_PDAF = 0; - debug_log("======================PDAF Data==================\n"); - debug_log("[%s] QPD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, TARGAMAIN_HVBIN_PDAF_PROC1_ADDR, TARGAMAIN_HVBIN_PDAF_PROC1_SIZE); - debug_log("[%s] QPD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, TARGAMAIN_HVBIN_PDAF_PROC2_ADDR, TARGAMAIN_HVBIN_PDAF_PROC2_SIZE); - debug_log("[%s] partial PD proc1 start_addr =%x table_size=%d\n", __FUNCTION__, TARGAMAIN_PARTIAL_PD_PROC1_ADDR, TARGAMAIN_PARTIAL_PD_PROC1_SIZE); - debug_log("[%s] partial PD proc2 start_addr =%x table_size=%d\n", __FUNCTION__, TARGAMAIN_PARTIAL_PD_PROC2_ADDR, TARGAMAIN_PARTIAL_PD_PROC2_SIZE); - -// partial PD - isValid = 0; - bios = 0; -// partial PD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAMAIN_PARTIAL_PD_PROC1_ADDR + TARGAMAIN_PARTIAL_PD_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] partial PD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAMAIN_PARTIAL_PD_PROC1_ADDR, TARGAMAIN_PARTIAL_PD_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += TARGAMAIN_PARTIAL_PD_PROC1_SIZE; - partial_pd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(partial_pd_proc1_flag) { - // partial PD proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAMAIN_PARTIAL_PD_PROC2_ADDR + TARGAMAIN_PARTIAL_PD_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAMAIN_PARTIAL_PD_PROC2_ADDR, TARGAMAIN_PARTIAL_PD_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] partial PD proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += TARGAMAIN_PARTIAL_PD_PROC2_SIZE; - partial_pd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - } - - if(partial_pd_proc1_flag && partial_pd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] partial PD eeprom error",__FUNCTION__); - } - err = CAM_CAL_ERR_NO_ERR; - -// QPD -// QPD proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAMAIN_HVBIN_PDAF_PROC1_ADDR + TARGAMAIN_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc1 unvalid\n", __FUNCTION__); - } else { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAMAIN_HVBIN_PDAF_PROC1_ADDR, TARGAMAIN_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc1 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += TARGAMAIN_HVBIN_PDAF_PROC1_SIZE; - qpd_proc1_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - -// QPD proc2 - if(qpd_proc1_flag) { - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAMAIN_HVBIN_PDAF_PROC2_ADDR + TARGAMAIN_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] QPD proc2 unvalid\n", __FUNCTION__); - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - TARGAMAIN_HVBIN_PDAF_PROC2_ADDR, TARGAMAIN_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[bios]); - if (read_data_size > 0) { - debug_log("[%s] QDP proc2 First five %x, %x, %x, %x, %x\n", - __FUNCTION__, - pCamCalData->PDAF.Data[bios], - pCamCalData->PDAF.Data[bios + 1], - pCamCalData->PDAF.Data[bios + 2], - pCamCalData->PDAF.Data[bios + 3], - pCamCalData->PDAF.Data[bios + 4]); - bios += TARGAMAIN_HVBIN_PDAF_PROC2_SIZE; - qpd_proc2_flag = true; - debug_log("[%s] bios = %d 0x%x\n",__FUNCTION__, bios, bios); - } - } - - if(qpd_proc1_flag && qpd_proc2_flag) { - pCamCalData->PDAF.Size_of_PDAF = bios; - } else { - bios = pCamCalData->PDAF.Size_of_PDAF; - debug_log("[%s] QPD eeprom error",__FUNCTION__); - } - if(pCamCalData->PDAF.Size_of_PDAF == 0) { - err = CamCalReturnErr[pCamCalData->Command]; - } - - debug_log("[%s] pCamCalData->PDAF.Size_of_PDAF= %d 0x%x\n", __FUNCTION__, - pCamCalData->PDAF.Size_of_PDAF, pCamCalData->PDAF.Size_of_PDAF); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} - -static unsigned int do_single_lsc_targamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_targamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - -/* AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; */ - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering layout->header_addr; - unsigned int check_id = 0x00000000; - unsigned int result = CAM_CAL_ERR_NO_DEVICE; - - if (cam_cal_config->sensor_id == sensorID) { - debug_log("%s sensor_id matched\n", cam_cal_config->name); - } - else { - debug_log("%s sensor_id not matched\n", cam_cal_config->name); - return result; - } - - if (read_data_region(pdata, (u8 *)&check_id, header_offset, 4) != 4) { - debug_log("header_id read failed\n"); - return result; - } - - if (check_id == 0x016B012B || check_id == 0x01C3012B) { // hearder id on OTP guide - debug_log("header_id matched 0x%08x\n", check_id); - result = CAM_CAL_ERR_NO_ERR; - } else { - debug_log("header_id not matched 0x%08x\n", check_id); - } - - return result; -}*/ diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/targauwide_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/targauwide_op_eeprom.c deleted file mode 100755 index 23254233..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/targauwide_op_eeprom.c +++ /dev/null @@ -1,622 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_TARGAUWIDE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_targauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_targauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_targauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -//static unsigned int layout_check_targauwide(struct EEPROM_DRV_FD_DATA *pdata, unsigned int sensorID, unsigned int *_cfg); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x0065009a, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000530, 0x0000074C, do_single_lsc_targauwide}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_targauwide}, //Start address, block size is useless - {0x00000000, 0x00000000, 0x00000000, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_targauwide} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT targauwide_op_eeprom = { - .name = "targauwide_op_eeprom", - //.check_layout_function = layout_check_targauwide, - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = TARGAUWIDE_SENSOR_ID, - .i2c_write_id = 0xA2, - .max_size = 0x4000, - .enable_preload = 1, - .preload_size = 0x4000, - .has_stored_data = 1, -}; - -//static struct STRUCT_CAM_CAL_CONFIG_STRUCT *cam_cal_config = &targauwide_op_eeprom; - -static unsigned int do_single_lsc_targauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_targauwide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = FacGr = FacGb = FacG = FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - AFInf = AFInf >> 1; - AFMacro = AFMacro >> 1; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering layout->header_addr; - unsigned int check_id = 0x00000000; - unsigned int result = CAM_CAL_ERR_NO_DEVICE; - - if (cam_cal_config->sensor_id == sensorID) - debug_log("%s sensor_id matched\n", cam_cal_config->name); - else { - debug_log("%s sensor_id not matched\n", cam_cal_config->name); - return result; - } - - if (read_data_region(pdata, (u8 *)&check_id, header_offset, 4) != 4) { - debug_log("header_id read failed\n"); - return result; - } - - if (check_id == 0x016B012B || check_id == 0x016d009a) { // hearder id on OTP guide - debug_log("header_id matched 0x%08x\n", check_id); - printk("targaheader_id wide matched 0x%08x\n", check_id); - result = CAM_CAL_ERR_NO_ERR; - } else{ - debug_log("header_id not matched 0x%08x\n", check_id); - printk("targaheader_id wide not matched 0x%08x\n", check_id); - } - return result; -}*/ diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/yalamain_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/yalamain_op_eeprom.c deleted file mode 100755 index 3901afb8..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/yalamain_op_eeprom.c +++ /dev/null @@ -1,632 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2023 OPLUS Inc. - */ - -#define PFX "CAM_CAL_YALAMAIN" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -// #include "oplus_kd_imgsensor.h" -#include "kd_imgsensor.h" - -#define READ_4000K 0 - -static unsigned int do_single_lsc_yalamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_yalamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_yalamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_yalamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x0148012E, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000002, do_module_version}, - {0x00000001, 0x00000000, 0x00000011, do_part_number}, - {0x00000001, 0x00001070, 0x0000074C, do_single_lsc_yalamain}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_yalamain}, //Start address, block size is useless - {0x00000001, 0x000017D0, 0x0000102E, do_pdaf_yalamain}, - {0x00000001, 0x00000530, 0x00000012, do_pdaf}, - // {0x00000001, 0x00001250, 0x000003E2, do_pdaf}, - // {0x00000001, 0x00001640, 0x000003E2, do_pdaf}, - // {0x00000001, 0x00001A30, 0x000003E2, do_pdaf}, - // {0x00000001, 0x000039B0, 0x000000C8, do_pdaf}, - // {0x00000001, 0x00003A80, 0x000000C8, do_pdaf}, - // {0x00000001, 0x00003F37, 0x000000C8, do_pdaf}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_yalamain} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT yalamain_op_eeprom = { - .name = "yalamain_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = YALAMAIN_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, -}; - -static unsigned int do_single_lsc_yalamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - error_log("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; // flip - debug_log("u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - error_log("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_yalamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset, af_offset; - - (void) start_addr; - (void) block_size; - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - debug_log("S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5000K) */ - debug_log("5000K AWB\n"); - awb_offset = 0x0020; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5000K) */ - awb_offset = 0x0028; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("4000K AWB\n"); - awb_offset = 0x0032; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log( - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x003A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (2850K) */ - CalR = 0; CalGr = 0; CalGb = 0; CalG = 0; CalB = 0; - tempMax = 0; - debug_log("2850K AWB\n"); - debug_log( "3100K AWB\n"); - rgCalValue = 0; bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x0044; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - debug_log("Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - debug_log("CalR:%d, CalB:%d",CalR, CalB); - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - debug_log("UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; FacGr = 0; FacGb = 0; FacG = 0; FacB = 0; - tempMax = 0; - awb_offset = 0x004C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - debug_log("Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - debug_log("GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%x\n", CalGain); - pr_debug("[FacGain] = 0x%x\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - // AF 50cm - af_offset = 0x0096; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Inf - af_offset = 0x0094; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AF Macro - af_offset = 0x0092; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - af_offset, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - pCamCalData->Single2A.S2aAF_t.AF_dac_code_bit_depth = 12; - - printk("======================AF CAM_CAL==================\n"); - printk("cccccc[AFInf] = %d\n", AFInf); - printk("cccccc[AFMacro] = %d\n", AFMacro); - printk("cccccc[AF_50cm] = %d\n", AF_50cm); - printk("======================AF CAM_CAL==================\n"); - } - return err; -} - -static unsigned int do_lens_id_yalamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - return do_lens_id_base(pdata, start_addr, block_size, pGetSensorCalData); -} - -static unsigned int do_pdaf_yalamain(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int read_data_size2; - int err = CamCalReturnErr[pCamCalData->Command]; - - pCamCalData->PDAF.Size_of_PDAF = block_size; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - block_size = 0x0A40; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size <= 0) { - return err; - } - /*patrial pd data*/ - start_addr = 0x33A0; - block_size = 0x05EE; - read_data_size2 = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, block_size, (unsigned char *)&pCamCalData->PDAF.Data[read_data_size]); - if (read_data_size2 > 0) { - err = CAM_CAL_ERR_NO_ERR; - } else { - return err; - } - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[read_data_size], - pCamCalData->PDAF.Data[read_data_size + 1], - pCamCalData->PDAF.Data[read_data_size + 2], - pCamCalData->PDAF.Data[read_data_size + 3], - pCamCalData->PDAF.Data[read_data_size + 4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - return err; -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/zhuquec1front_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/zhuquec1front_op_eeprom.c deleted file mode 100755 index 9e25bc57..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/zhuquec1front_op_eeprom.c +++ /dev/null @@ -1,677 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_ZHUQUEC1FRONT" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_zhuquec1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_zhuquec1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_zhuquec1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_zhuquec1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x0175010a, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000C00, 0x0000074C, do_single_lsc_zhuquec1front}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_zhuquec1front}, //Start address, block size is useless - {0x00000001, 0x00001400, 0x00000A3A, do_pdaf_zhuquec1front}, - {0x00000000, 0x00000000, 0x00000000, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_zhuquec1front} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT zhuquec1front_op_eeprom = { - .name = "zhuquec1front_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = ZHUQUEC1FRONT_SENSOR_ID, - .i2c_write_id = 0xA8, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, -}; - - -#define ZHUQUEC1FRONT_HVBIN_PDAF_PROC1_SIZE (496) -#define ZHUQUEC1FRONT_HVBIN_PDAF_PROC2_SIZE (1004) -#define ZHUQUEC1FRONT_HVBIN_PDAF_PROC1_ADDR (0x1400) -#define ZHUQUEC1FRONT_HVBIN_PDAF_PROC2_ADDR (0x1600) - -unsigned int do_pdaf_zhuquec1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - - pCamCalData->PDAF.Size_of_PDAF = ZHUQUEC1FRONT_HVBIN_PDAF_PROC1_SIZE + ZHUQUEC1FRONT_HVBIN_PDAF_PROC2_SIZE; - pr_debug("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - -//proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1FRONT_HVBIN_PDAF_PROC1_ADDR + ZHUQUEC1FRONT_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - pr_debug("[%s] proc1 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1FRONT_HVBIN_PDAF_PROC1_ADDR, ZHUQUEC1FRONT_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - -//proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1FRONT_HVBIN_PDAF_PROC2_ADDR + ZHUQUEC1FRONT_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - pr_debug("[%s] proc2 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1FRONT_HVBIN_PDAF_PROC2_ADDR, ZHUQUEC1FRONT_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[ZHUQUEC1FRONT_HVBIN_PDAF_PROC1_SIZE]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - pr_debug("======================PDAF Data==================\n"); - pr_debug("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================PDAF Data==================\n"); - - return err; - -} - -static unsigned int do_single_lsc_zhuquec1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_zhuquec1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - -// AFInf = AFInf >> 2; -// AFMacro = AFMacro >> 2; -// AF_50cm = AF_50cm >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_zhuquec1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_zhuquec1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_zhuquec1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_zhuquec1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01480116, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000C00, 0x0000074C, do_single_lsc_zhuquec1main}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_zhuquec1main}, //Start address, block size is useless - {0x00000001, 0x00001400, 0x00000A3A, do_pdaf_zhuquec1main}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_zhuquec1main} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT zhuquec1main_op_eeprom = { - .name = "zhuquec1main_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = ZHUQUEC1MAIN_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, -}; - - -#define ZHUQUEC1MAIN_HVBIN_PDAF_PROC1_SIZE (496) -#define ZHUQUEC1MAIN_HVBIN_PDAF_PROC2_SIZE (1004) -#define ZHUQUEC1MAIN_HVBIN_PDAF_PROC1_ADDR (0x1400) -#define ZHUQUEC1MAIN_HVBIN_PDAF_PROC2_ADDR (0x1600) - -unsigned int do_pdaf_zhuquec1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - - pCamCalData->PDAF.Size_of_PDAF = ZHUQUEC1MAIN_HVBIN_PDAF_PROC1_SIZE + ZHUQUEC1MAIN_HVBIN_PDAF_PROC2_SIZE; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - -//proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1MAIN_HVBIN_PDAF_PROC1_ADDR + ZHUQUEC1MAIN_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc1 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1MAIN_HVBIN_PDAF_PROC1_ADDR, ZHUQUEC1MAIN_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - -//proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1MAIN_HVBIN_PDAF_PROC2_ADDR + ZHUQUEC1MAIN_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1MAIN_HVBIN_PDAF_PROC2_ADDR, ZHUQUEC1MAIN_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[ZHUQUEC1MAIN_HVBIN_PDAF_PROC1_SIZE]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - pr_debug("======================PDAF Data==================\n"); - pr_debug("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - pr_debug("RETURN = 0x%x\n", err); - error_log("======================PDAF Data==================\n"); - - return err; - -} - -static unsigned int do_single_lsc_zhuquec1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_zhuquec1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - -// AFInf = AFInf >> 2; -// AFMacro = AFMacro >> 2; -// AF_50cm = AF_50cm >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_zhuquec1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_zhuquec1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_zhuquec1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_zhuquec1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static int do_ois_zhuquec1tele(struct EEPROM_DRV_FD_DATA *pdata, struct ois_cal_data *data); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x00c6010d, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000B00, 0x0000074C, do_single_lsc_zhuquec1tele}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_zhuquec1tele}, //Start address, block size is useless - {0x00000001, 0x00001300, 0x00000A3A, do_pdaf_zhuquec1tele}, - {0x00000000, 0x00000000, 0x00000000, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_zhuquec1tele} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT zhuquec1tele_op_eeprom = { - .name = "zhuquec1tele_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = ZHUQUEC1TELE_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, - .parsing_ois_cal_data_from_preload = do_ois_zhuquec1tele, -}; - - -#define ZHUQUEC1TELE_HVBIN_PDAF_PROC1_SIZE (496) -#define ZHUQUEC1TELE_HVBIN_PDAF_PROC2_SIZE (1004) -#define ZHUQUEC1TELE_HVBIN_PDAF_PROC1_ADDR (0x1300) -#define ZHUQUEC1TELE_HVBIN_PDAF_PROC2_ADDR (0x1500) - -unsigned int do_pdaf_zhuquec1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - - pCamCalData->PDAF.Size_of_PDAF = ZHUQUEC1TELE_HVBIN_PDAF_PROC1_SIZE + ZHUQUEC1TELE_HVBIN_PDAF_PROC2_SIZE; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - -//proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1TELE_HVBIN_PDAF_PROC1_ADDR + ZHUQUEC1TELE_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc1 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1TELE_HVBIN_PDAF_PROC1_ADDR, ZHUQUEC1TELE_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - -//proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1TELE_HVBIN_PDAF_PROC2_ADDR + ZHUQUEC1TELE_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1TELE_HVBIN_PDAF_PROC2_ADDR, ZHUQUEC1TELE_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[ZHUQUEC1TELE_HVBIN_PDAF_PROC1_SIZE]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} - -static unsigned int do_single_lsc_zhuquec1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_zhuquec1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering pdrv->config_info.mp_eeprom_preload == NULL) - return -1; - offset = 0x1960; - length = 2341; - memcpy(data, pdata->pdrv->config_info.mp_eeprom_preload + offset, length); - return 0; -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/zhuquec1wide_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/zhuquec1wide_op_eeprom.c deleted file mode 100755 index 3e6ce42d..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/zhuquec1wide_op_eeprom.c +++ /dev/null @@ -1,654 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_ZHUQUEC1WIDE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_zhuquec1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_zhuquec1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_zhuquec1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_zhuquec1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01ab0115, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000B00, 0x0000074C, do_single_lsc_zhuquec1wide}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_zhuquec1wide}, //Start address, block size is useless - {0x00000001, 0x00001300, 0x00000A3A, do_pdaf_zhuquec1wide}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_zhuquec1wide} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT zhuquec1wide_op_eeprom = { - .name = "zhuquec1wide_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = ZHUQUEC1WIDE_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x4000, - .enable_preload = 1, - .preload_size = 0x4000, - .has_stored_data = 1, -}; - -#define ZHUQUEC1WIDE_HVBIN_PDAF_PROC1_SIZE (496) -#define ZHUQUEC1WIDE_HVBIN_PDAF_PROC2_SIZE (1004) -#define ZHUQUEC1WIDE_HVBIN_PDAF_PROC1_ADDR (0x1300) -#define ZHUQUEC1WIDE_HVBIN_PDAF_PROC2_ADDR (0x1500) - -unsigned int do_pdaf_zhuquec1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - - pCamCalData->PDAF.Size_of_PDAF = ZHUQUEC1WIDE_HVBIN_PDAF_PROC1_SIZE + ZHUQUEC1WIDE_HVBIN_PDAF_PROC2_SIZE; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - -//proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1WIDE_HVBIN_PDAF_PROC1_ADDR + ZHUQUEC1WIDE_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc1 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1WIDE_HVBIN_PDAF_PROC1_ADDR, ZHUQUEC1WIDE_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - -//proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1WIDE_HVBIN_PDAF_PROC2_ADDR + ZHUQUEC1WIDE_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUEC1WIDE_HVBIN_PDAF_PROC2_ADDR, ZHUQUEC1WIDE_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[ZHUQUEC1WIDE_HVBIN_PDAF_PROC1_SIZE]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - pr_debug("======================PDAF Data==================\n"); - pr_debug("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - pr_debug("RETURN = 0x%x\n", err); - error_log("======================PDAF Data==================\n"); - - return err; - -} - - -static unsigned int do_single_lsc_zhuquec1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 1; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_zhuquec1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = FacGr = FacGb = FacG = FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AFInf = AFInf >> 1; - // AFMacro = AFMacro >> 1; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_zhuques1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_zhuques1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_zhuques1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_zhuques1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x0175010a, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000C00, 0x0000074C, do_single_lsc_zhuques1front}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_zhuques1front}, //Start address, block size is useless - {0x00000001, 0x00001400, 0x00000A3A, do_pdaf_zhuques1front}, - {0x00000000, 0x00000000, 0x00000000, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_zhuques1front} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT zhuques1front_op_eeprom = { - .name = "zhuques1front_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = ZHUQUES1FRONT_SENSOR_ID, - .i2c_write_id = 0xA8, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, -}; - - -#define ZHUQUES1FRONT_HVBIN_PDAF_PROC1_SIZE (496) -#define ZHUQUES1FRONT_HVBIN_PDAF_PROC2_SIZE (1004) -#define ZHUQUES1FRONT_HVBIN_PDAF_PROC1_ADDR (0x1400) -#define ZHUQUES1FRONT_HVBIN_PDAF_PROC2_ADDR (0x1600) - -unsigned int do_pdaf_zhuques1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - - pCamCalData->PDAF.Size_of_PDAF = ZHUQUES1FRONT_HVBIN_PDAF_PROC1_SIZE + ZHUQUES1FRONT_HVBIN_PDAF_PROC2_SIZE; - pr_debug("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - -//proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1FRONT_HVBIN_PDAF_PROC1_ADDR + ZHUQUES1FRONT_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - pr_debug("[%s] proc1 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1FRONT_HVBIN_PDAF_PROC1_ADDR, ZHUQUES1FRONT_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - -//proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1FRONT_HVBIN_PDAF_PROC2_ADDR + ZHUQUES1FRONT_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - pr_debug("[%s] proc2 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1FRONT_HVBIN_PDAF_PROC2_ADDR, ZHUQUES1FRONT_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[ZHUQUES1FRONT_HVBIN_PDAF_PROC1_SIZE]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - pr_debug("======================PDAF Data==================\n"); - pr_debug("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================PDAF Data==================\n"); - - return err; - -} - -static unsigned int do_single_lsc_zhuques1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_zhuques1front(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - -// AFInf = AFInf >> 2; -// AFMacro = AFMacro >> 2; -// AF_50cm = AF_50cm >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_zhuques1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_zhuques1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_zhuques1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_zhuques1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01480116, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000C00, 0x0000074C, do_single_lsc_zhuques1main}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_zhuques1main}, //Start address, block size is useless - {0x00000001, 0x00001400, 0x00000A3A, do_pdaf_zhuques1main}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_zhuques1main} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT zhuques1main_op_eeprom = { - .name = "zhuques1main_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = ZHUQUES1MAIN_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, -}; - - -#define ZHUQUES1MAIN_HVBIN_PDAF_PROC1_SIZE (496) -#define ZHUQUES1MAIN_HVBIN_PDAF_PROC2_SIZE (1004) -#define ZHUQUES1MAIN_HVBIN_PDAF_PROC1_ADDR (0x1400) -#define ZHUQUES1MAIN_HVBIN_PDAF_PROC2_ADDR (0x1600) - -unsigned int do_pdaf_zhuques1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - - pCamCalData->PDAF.Size_of_PDAF = ZHUQUES1MAIN_HVBIN_PDAF_PROC1_SIZE + ZHUQUES1MAIN_HVBIN_PDAF_PROC2_SIZE; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - -//proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1MAIN_HVBIN_PDAF_PROC1_ADDR + ZHUQUES1MAIN_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc1 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1MAIN_HVBIN_PDAF_PROC1_ADDR, ZHUQUES1MAIN_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - -//proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1MAIN_HVBIN_PDAF_PROC2_ADDR + ZHUQUES1MAIN_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1MAIN_HVBIN_PDAF_PROC2_ADDR, ZHUQUES1MAIN_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[ZHUQUES1MAIN_HVBIN_PDAF_PROC1_SIZE]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - pr_debug("======================PDAF Data==================\n"); - pr_debug("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - pr_debug("RETURN = 0x%x\n", err); - error_log("======================PDAF Data==================\n"); - - return err; - -} - -static unsigned int do_single_lsc_zhuques1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_zhuques1main(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - -// AFInf = AFInf >> 2; -// AFMacro = AFMacro >> 2; -// AF_50cm = AF_50cm >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_zhuques1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_zhuques1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_zhuques1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_zhuques1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static int do_ois_zhuques1tele(struct EEPROM_DRV_FD_DATA *pdata, struct ois_cal_data *data); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x00c6010d, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000B00, 0x0000074C, do_single_lsc_zhuques1tele}, - {0x00000001, 0x00000007, 0x0000000E, do_2a_gain_zhuques1tele}, //Start address, block size is useless - {0x00000001, 0x00001300, 0x00000A3A, do_pdaf_zhuques1tele}, - {0x00000000, 0x00000000, 0x00000000, do_stereo_data}, - {0x00000001, 0x00000000, 0x00008000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_zhuques1tele} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT zhuques1tele_op_eeprom = { - .name = "zhuques1tele_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = ZHUQUES1TELE_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x8000, - .enable_preload = 1, - .preload_size = 0x8000, - .has_stored_data = 1, - .parsing_ois_cal_data_from_preload = do_ois_zhuques1tele, -}; - - -#define ZHUQUES1TELE_HVBIN_PDAF_PROC1_SIZE (496) -#define ZHUQUES1TELE_HVBIN_PDAF_PROC2_SIZE (1004) -#define ZHUQUES1TELE_HVBIN_PDAF_PROC1_ADDR (0x1300) -#define ZHUQUES1TELE_HVBIN_PDAF_PROC2_ADDR (0x1500) - -unsigned int do_pdaf_zhuques1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - - pCamCalData->PDAF.Size_of_PDAF = ZHUQUES1TELE_HVBIN_PDAF_PROC1_SIZE + ZHUQUES1TELE_HVBIN_PDAF_PROC2_SIZE; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - -//proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1TELE_HVBIN_PDAF_PROC1_ADDR + ZHUQUES1TELE_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc1 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1TELE_HVBIN_PDAF_PROC1_ADDR, ZHUQUES1TELE_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - -//proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1TELE_HVBIN_PDAF_PROC2_ADDR + ZHUQUES1TELE_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1TELE_HVBIN_PDAF_PROC2_ADDR, ZHUQUES1TELE_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[ZHUQUES1TELE_HVBIN_PDAF_PROC1_SIZE]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - debug_log("======================PDAF Data==================\n"); - debug_log("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - debug_log("RETURN = 0x%x\n", err); - debug_log("======================PDAF Data==================\n"); - - return err; - -} - -static unsigned int do_single_lsc_zhuques1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 0; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_zhuques1tele(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro, AF_50cm; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = 0; - CalGr = 0; - CalGb = 0; - CalG = 0; - CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x96, 2, (unsigned char *)&AF_50cm); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - AFInf = AFInf >> 2; - AFMacro = AFMacro >> 2; - AF_50cm = AF_50cm >> 2; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - pCamCalData->Single2A.S2aAf[2] = AF_50cm; - - ////Only AF Gathering pdrv->config_info.mp_eeprom_preload == NULL) - return -1; - offset = 0x1960; - length = 2341; - memcpy(data, pdata->pdrv->config_info.mp_eeprom_preload + offset, length); - return 0; -} diff --git a/vendor/oplus/kernel/camera/cam_cal/layout/zhuques1wide_op_eeprom.c b/vendor/oplus/kernel/camera/cam_cal/layout/zhuques1wide_op_eeprom.c deleted file mode 100755 index 0393b88d..00000000 --- a/vendor/oplus/kernel/camera/cam_cal/layout/zhuques1wide_op_eeprom.c +++ /dev/null @@ -1,654 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -#define PFX "CAM_CAL_ZHUQUES1WIDE" -#define pr_fmt(fmt) PFX "[%s] " fmt, __func__ - -#include -#include "cam_cal_list.h" -#include "eeprom_i2c_common_driver.h" -#include "eeprom_i2c_custom_driver.h" -#include "cam_cal_config.h" -#include "oplus_kd_imgsensor.h" - -#define DEBUG_CALIBRATION_LOAD - -#define pr_debug_if(cond, ...) do { if ((cond)) pr_debug(__VA_ARGS__); } while (0) -#define pr_debug_err(...) pr_debug("error: " __VA_ARGS__) -#define READ_4000K 0 -static int dump_enable = 1; - -static unsigned int do_single_lsc_zhuques1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_2a_gain_zhuques1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_lens_id_zhuques1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); -static unsigned int do_pdaf_zhuques1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData); - -static struct STRUCT_CALIBRATION_LAYOUT_STRUCT cal_layout_table = { - 0x00000006, 0x01ab0115, CAM_CAL_SINGLE_EEPROM_DATA, - { - {0x00000001, 0x00000000, 0x00000000, do_module_version}, - {0x00000001, 0x00000000, 0x00000002, do_part_number}, - {0x00000001, 0x00000B00, 0x0000074C, do_single_lsc_zhuques1wide}, - {0x00000001, 0x00000020, 0x0000000E, do_2a_gain_zhuques1wide}, //Start address, block size is useless - {0x00000001, 0x00001300, 0x00000A3A, do_pdaf_zhuques1wide}, - {0x00000000, 0x00000FAE, 0x00000550, do_stereo_data}, - {0x00000001, 0x00000000, 0x00004000, do_dump_all}, - {0x00000001, 0x00000008, 0x00000002, do_lens_id_zhuques1wide} - } -}; - -struct STRUCT_CAM_CAL_CONFIG_STRUCT zhuques1wide_op_eeprom = { - .name = "zhuques1wide_op_eeprom", - .check_layout_function = layout_check, - .read_function = Common_read_region, - .layout = &cal_layout_table, - .sensor_id = ZHUQUES1WIDE_SENSOR_ID, - .i2c_write_id = 0xA0, - .max_size = 0x4000, - .enable_preload = 1, - .preload_size = 0x4000, - .has_stored_data = 1, -}; - -#define ZHUQUES1WIDE_HVBIN_PDAF_PROC1_SIZE (496) -#define ZHUQUES1WIDE_HVBIN_PDAF_PROC2_SIZE (1004) -#define ZHUQUES1WIDE_HVBIN_PDAF_PROC1_ADDR (0x1300) -#define ZHUQUES1WIDE_HVBIN_PDAF_PROC2_ADDR (0x1500) - -unsigned int do_pdaf_zhuques1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - int err = CamCalReturnErr[pCamCalData->Command]; - unsigned char isValid = 0; - - pCamCalData->PDAF.Size_of_PDAF = ZHUQUES1WIDE_HVBIN_PDAF_PROC1_SIZE + ZHUQUES1WIDE_HVBIN_PDAF_PROC2_SIZE; - debug_log("PDAF start_addr =%x table_size=%d\n", start_addr, block_size); - -//proc1 - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1WIDE_HVBIN_PDAF_PROC1_ADDR + ZHUQUES1WIDE_HVBIN_PDAF_PROC1_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc1 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1WIDE_HVBIN_PDAF_PROC1_ADDR, ZHUQUES1WIDE_HVBIN_PDAF_PROC1_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[0]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - -//proc2 - isValid = 0; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1WIDE_HVBIN_PDAF_PROC2_ADDR + ZHUQUES1WIDE_HVBIN_PDAF_PROC2_SIZE, - 1, (unsigned char *)&isValid); - if(isValid != 1) { - debug_log("[%s] proc2 unvalid\n", __FUNCTION__); - err = CamCalReturnErr[pCamCalData->Command]; - return err; - } - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - ZHUQUES1WIDE_HVBIN_PDAF_PROC2_ADDR, ZHUQUES1WIDE_HVBIN_PDAF_PROC2_SIZE, - (unsigned char *)&pCamCalData->PDAF.Data[ZHUQUES1WIDE_HVBIN_PDAF_PROC1_SIZE]); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - - pr_debug("======================PDAF Data==================\n"); - pr_debug("First five %x, %x, %x, %x, %x\n", - pCamCalData->PDAF.Data[0], - pCamCalData->PDAF.Data[1], - pCamCalData->PDAF.Data[2], - pCamCalData->PDAF.Data[3], - pCamCalData->PDAF.Data[4]); - pr_debug("RETURN = 0x%x\n", err); - error_log("======================PDAF Data==================\n"); - - return err; - -} - - -static unsigned int do_single_lsc_zhuques1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - unsigned short table_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - if (block_size != CAM_CAL_SINGLE_LSC_SIZE) - pr_debug_err("block_size(%d) is not match (%d)\n", - block_size, CAM_CAL_SINGLE_LSC_SIZE); - - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType = 2;//mtk type - pCamCalData->SingleLsc.LscTable.MtkLcsData.PixId = 8; - - table_size = 1868; - - pr_debug("lsc table_size %d\n", table_size); - pCamCalData->SingleLsc.LscTable.MtkLcsData.TableSize = table_size; - if (table_size > 0) { - pCamCalData->SingleLsc.TableRotation = 1; - pr_debug_if(dump_enable, "u4Offset=%d u4Length=%d", start_addr, table_size); - read_data_size = read_data(pdata, - pCamCalData->sensorID, pCamCalData->deviceID, - start_addr, table_size, (unsigned char *) - &pCamCalData->SingleLsc.LscTable.MtkLcsData.SlimLscType); - if (table_size == read_data_size) - err = CAM_CAL_ERR_NO_ERR; - else { - pr_debug_err("Read Failed\n"); - err = CamCalReturnErr[pCamCalData->Command]; - show_cmd_error_log(pCamCalData->Command); - } - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================SingleLsc Data==================\n"); - pr_debug("[1st] = %x, %x, %x, %x\n", - pCamCalData->SingleLsc.LscTable.Data[0], - pCamCalData->SingleLsc.LscTable.Data[1], - pCamCalData->SingleLsc.LscTable.Data[2], - pCamCalData->SingleLsc.LscTable.Data[3]); - pr_debug("[1st] = SensorLSC(1)?MTKLSC(2)? %x\n", - pCamCalData->SingleLsc.LscTable.MtkLcsData.MtkLscType); - pr_debug("CapIspReg =0x%x, 0x%x, 0x%x, 0x%x, 0x%x", - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[0], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[1], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[2], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[3], - pCamCalData->SingleLsc.LscTable.MtkLcsData.CapIspReg[4]); - pr_debug("RETURN = 0x%x\n", err); - pr_debug("======================SingleLsc Data==================\n"); - #endif - - return err; -} - -static unsigned int do_2a_gain_zhuques1wide(struct EEPROM_DRV_FD_DATA *pdata, - unsigned int start_addr, unsigned int block_size, unsigned int *pGetSensorCalData) -{ - struct STRUCT_CAM_CAL_DATA_STRUCT *pCamCalData = - (struct STRUCT_CAM_CAL_DATA_STRUCT *)pGetSensorCalData; - int read_data_size; - unsigned int err = CamCalReturnErr[pCamCalData->Command]; - - long long CalGain, FacGain, CalValue; - unsigned char AWBAFConfig = 0xf; - - unsigned short AFInf, AFMacro; - int tempMax = 0; - int CalR = 1, CalGr = 1, CalGb = 1, CalG = 1, CalB = 1; - int FacR = 1, FacGr = 1, FacGb = 1, FacG = 1, FacB = 1; - int rgCalValue = 1, bgCalValue = 1; - unsigned int awb_offset; - - (void) start_addr; - (void) block_size; - -#ifdef MTK_LOAD_DEBUG - dump_enable = 1; -#else - dump_enable = 0; -#endif - - pr_debug("In %s: sensor_id=%x\n", __func__, pCamCalData->sensorID); - memset((void *)&pCamCalData->Single2A, 0, sizeof(struct STRUCT_CAM_CAL_SINGLE_2A_STRUCT)); - /* Check rule */ - if (pCamCalData->DataVer >= CAM_CAL_TYPE_NUM) { - err = CAM_CAL_ERR_NO_DEVICE; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - return err; - } - /* Check AWB & AF enable bit */ - pCamCalData->Single2A.S2aVer = 0x01; - pCamCalData->Single2A.S2aBitEn = (0x03 & AWBAFConfig); - pCamCalData->Single2A.S2aAfBitflagEn = (0x0C & AWBAFConfig); - pr_debug_if(dump_enable, "S2aBitEn=0x%02x", pCamCalData->Single2A.S2aBitEn); - /* AWB Calibration Data*/ - if (0x1 & AWBAFConfig) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 0x02; - awb_offset = 0x60; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration 5100K value R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - /* AWB Unit Gain (5100K) */ - pr_debug_if(dump_enable, "5100K AWB\n"); - awb_offset = 0x20; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 1; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (5100K) */ - awb_offset = 0x28; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - /* Set AWB to 3A Layer */ - pCamCalData->Single2A.S2aAwb.rValueR = CalR; - pCamCalData->Single2A.S2aAwb.rValueGr = CalGr; - pCamCalData->Single2A.S2aAwb.rValueGb = CalGb; - pCamCalData->Single2A.S2aAwb.rValueB = CalB; - pCamCalData->Single2A.S2aAwb.rGoldenR = FacR; - pCamCalData->Single2A.S2aAwb.rGoldenGr = FacGr; - pCamCalData->Single2A.S2aAwb.rGoldenGb = FacGb; - pCamCalData->Single2A.S2aAwb.rGoldenB = FacB; - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("======================AWB CAM_CAL==================\n"); - pr_debug("AWB Calibration @5100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B); - #endif - /* AWB Unit Gain (4000K) */ - #if READ_4000K //zemin.lai@CamTuning delet ,module not support 4000k otp 20220421 - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - pr_debug_if(dump_enable, "4000K AWB\n"); - awb_offset = 0x32; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (4000K) */ - FacR = 0; - FacGr = 0; - FacGb = 0; - FacG = 0; - FacB = 0; - tempMax = 0; - awb_offset = 0x3A; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @4000K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_mid); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_mid); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_mid); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_mid); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_mid); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_mid); - #endif - #endif - /* AWB Unit Gain (3100K) */ - CalR = CalGr = CalGb = CalG = CalB = 0; - tempMax = 0; - rgCalValue = 0; - bgCalValue = 0; - awb_offset = 0x6C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalValue); - if (read_data_size > 0) { - debug_log( "Read CalValue OK\n"); - rgCalValue = CalValue & 0xFFFF; - bgCalValue = (CalValue >> 16) & 0xFFFF; - debug_log("Light source calibration value 3100 R/G:%d, B/G:%d",rgCalValue, bgCalValue); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - error_log("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - pr_debug_if(dump_enable, "3100K AWB\n"); - awb_offset = 0x44; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&CalGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read CalGain OK %x\n", read_data_size); - CalR = CalGain & 0xFFFF; - CalGr = (CalGain >> 16) & 0xFFFF; - CalGb = (CalGain >> 32) & 0xFFFF; - CalG = ((CalGr + CalGb) + 1) >> 1; - CalB = (CalGain >> 48) & 0xFFFF; - CalR = CalR * rgCalValue / 1000; - CalB = CalB * bgCalValue / 1000; - if (CalR > CalG) - /* R > G */ - if (CalR > CalB) - tempMax = CalR; - else - tempMax = CalB; - else - /* G > R */ - if (CalG > CalB) - tempMax = CalG; - else - tempMax = CalB; - pr_debug_if(dump_enable, - "UnitR:%d, UnitG:%d, UnitB:%d, New Unit Max=%d", - CalR, CalG, CalB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read CalGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (CalGain != 0x0000000000000000 && - CalGain != 0xFFFFFFFFFFFFFFFF && - CalR != 0x00000000 && - CalG != 0x00000000 && - CalB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGainSetNum = 2; - pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low = - (unsigned int)((tempMax * 512 + (CalR >> 1)) / CalR); - pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low = - (unsigned int)((tempMax * 512 + (CalG >> 1)) / CalG); - pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low = - (unsigned int)((tempMax * 512 + (CalB >> 1)) / CalB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!\n"); - pr_debug("Unit R=%d G=%d B=%d!!\n", CalR, CalG, CalB); - } - /* AWB Golden Gain (3100K) */ - FacR = FacGr = FacGb = FacG = FacB = 0; - tempMax = 0; - awb_offset = 0x4C; - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - awb_offset, 8, (unsigned char *)&FacGain); - if (read_data_size > 0) { - pr_debug_if(dump_enable, "Read FacGain OK\n"); - FacR = FacGain & 0xFFFF; - FacGr = (FacGain >> 16) & 0xFFFF; - FacGb = (FacGain >> 32) & 0xFFFF; - FacG = ((FacGr + FacGb) + 1) >> 1; - FacB = (FacGain >> 48) & 0xFFFF; - if (FacR > FacG) - if (FacR > FacB) - tempMax = FacR; - else - tempMax = FacB; - else - if (FacG > FacB) - tempMax = FacG; - else - tempMax = FacB; - pr_debug_if(dump_enable, - "GoldenR:%d, GoldenG:%d, GoldenB:%d, New Golden Max=%d", - FacR, FacG, FacB, tempMax); - err = CAM_CAL_ERR_NO_ERR; - } else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read FacGain Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - if (FacGain != 0x0000000000000000 && - FacGain != 0xFFFFFFFFFFFFFFFF && - FacR != 0x00000000 && - FacG != 0x00000000 && - FacB != 0x00000000) { - pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low = - (unsigned int)((tempMax * 512 + (FacR >> 1)) / FacR); - pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low = - (unsigned int)((tempMax * 512 + (FacG >> 1)) / FacG); - pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low = - (unsigned int)((tempMax * 512 + (FacB >> 1)) / FacB); - } else { - pr_debug("There are something wrong on EEPROM, plz contact module vendor!!"); - pr_debug("Golden R=%d G=%d B=%d\n", FacR, FacG, FacB); - } - #ifdef DEBUG_CALIBRATION_LOAD - pr_debug("AWB Calibration @3100K\n"); - pr_debug("[CalGain] = 0x%llx\n", CalGain); - pr_debug("[FacGain] = 0x%llx\n", FacGain); - pr_debug("[rCalGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4R_low); - pr_debug("[rCalGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4G_low); - pr_debug("[rCalGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rUnitGainu4B_low); - pr_debug("[rFacGain.u4R] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4R_low); - pr_debug("[rFacGain.u4G] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4G_low); - pr_debug("[rFacGain.u4B] = %d\n", pCamCalData->Single2A.S2aAwb.rGoldGainu4B_low); - pr_debug("======================AWB CAM_CAL==================\n"); - #endif - } - /* AF Calibration Data*/ - if (0x2 & AWBAFConfig) { - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x94, 2, (unsigned char *)&AFInf); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - read_data_size = read_data(pdata, pCamCalData->sensorID, pCamCalData->deviceID, - 0x92, 2, (unsigned char *)&AFMacro); - if (read_data_size > 0) - err = CAM_CAL_ERR_NO_ERR; - else { - pCamCalData->Single2A.S2aBitEn = CAM_CAL_NONE_BITEN; - pr_debug_err("Read Failed\n"); - show_cmd_error_log(pCamCalData->Command); - } - - // AFInf = AFInf >> 1; - // AFMacro = AFMacro >> 1; - - pCamCalData->Single2A.S2aAf[0] = AFInf; - pCamCalData->Single2A.S2aAf[1] = AFMacro; - - ////Only AF Gathering dummy_line, ctx->dummy_pixel); - - subdrv_i2c_wr_u8(ctx, 0x0350, 0x00); /* Disable auto extend */ - subdrv_i2c_wr_u8(ctx, 0x0104, 0x01); - - subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8); - subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF); - subdrv_i2c_wr_u8(ctx, 0x0342, ctx->line_length >> 8); - subdrv_i2c_wr_u8(ctx, 0x0343, ctx->line_length & 0xFF); - - subdrv_i2c_wr_u8(ctx, 0x0104, 0x00); -} /* set_dummy */ - -static void brzafront_set_max_framerate(struct subdrv_ctx *ctx, UINT16 framerate, - kal_bool min_framelength_en) -{ - - kal_uint32 frame_length = ctx->frame_length; - - DRV_LOG(ctx, "framerate = %d, min framelength should enable %d\n", - framerate, min_framelength_en); - - frame_length = ctx->pclk / framerate * 10 / ctx->line_length; - - if (frame_length >= ctx->min_frame_length) - ctx->frame_length = frame_length; - else - ctx->frame_length = ctx->min_frame_length; - - ctx->dummy_line = - ctx->frame_length - ctx->min_frame_length; - - if (ctx->frame_length > ctx->max_frame_length) { - ctx->frame_length = ctx->max_frame_length; - - ctx->dummy_line = - ctx->frame_length - ctx->min_frame_length; - } - if (min_framelength_en) - ctx->min_frame_length = ctx->frame_length; - brzafront_set_dummy(ctx); -} - -static void brzafront_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u32 *shutter, u32 frame_length, bool auto_extend_en) -{ - kal_uint16 realtime_fps = 0; - kal_int32 dummy_line = 0; - u8 exposure_margin = ctx->s_ctx.exposure_margin; - ctx->exposure[0] = *shutter; - /* Change frame time */ - if (frame_length > 1) - dummy_line = frame_length - ctx->frame_length; - - ctx->frame_length = ctx->frame_length + dummy_line; - - if (ctx->exposure[0] > ctx->frame_length - exposure_margin) - ctx->frame_length = ctx->exposure[0] + exposure_margin; - - if (ctx->frame_length > ctx->max_frame_length) - ctx->frame_length = ctx->max_frame_length; - - ctx->exposure[0] = (ctx->exposure[0] < ctx->s_ctx.exposure_min) - ? ctx->s_ctx.exposure_min : ctx->exposure[0]; - - if (ctx->autoflicker_en) { - realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length; - if (realtime_fps >= 297 && realtime_fps <= 305) { - brzafront_set_max_framerate(ctx, 296, 0); - } else if (realtime_fps >= 147 && realtime_fps <= 150) { - brzafront_set_max_framerate(ctx, 146, 0); - } else { - // Extend frame length - subdrv_i2c_wr_u8(ctx, 0x0104, 0x01); - subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8); - subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF); - subdrv_i2c_wr_u8(ctx, 0x0104, 0x00); - } - } else { - // Extend frame length - subdrv_i2c_wr_u8(ctx, 0x0104, 0x01); - subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8); - subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF); - subdrv_i2c_wr_u8(ctx, 0x0104, 0x00); - } - /* Update Shutter */ - subdrv_i2c_wr_u8(ctx, 0x0104, 0x01); - if (auto_extend_en) - subdrv_i2c_wr_u8(ctx, 0x0350, 0x01); /* Enable auto extend */ - else - subdrv_i2c_wr_u8(ctx, 0x0350, 0x00); /* Disable auto extend */ - - subdrv_i2c_wr_u8(ctx, 0x0202, (ctx->exposure[0] >> 8) & 0xFF); - subdrv_i2c_wr_u8(ctx, 0x0203, ctx->exposure[0] & 0xFF); - subdrv_i2c_wr_u8(ctx, 0x0104, 0x00); - DRV_LOG(ctx, "Exit! shutter =%d, framelength =%d/%d, dummy_line=%d, auto_extend=%d\n", - ctx->exposure[0], ctx->frame_length, frame_length, dummy_line, subdrv_i2c_rd_u16(ctx, 0x0350)); -} /* set_shutter_frame_length */ - -static int brzafront_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - DRV_LOG(ctx, "shutter:%u, frame_length:%u\n", (u32)(*para), (u32) (*(para + 1))); - brzafront_set_shutter_frame_length_convert(ctx, (u32 *)para, (u32) (*(para + 1)), (u16) (*(para + 2))); - return 0; -} - -static void brzafront_write_shutter(struct subdrv_ctx *ctx) -{ - kal_uint16 realtime_fps = 0; - u8 exposure_margin = 0; - DRV_LOG(ctx, "===brad shutter:%d\n", ctx->exposure[0]); - exposure_margin = ctx->s_ctx.exposure_margin; - LOG_INF("exposure_margin:%d\n", exposure_margin); - if (ctx->exposure[0] > ctx->min_frame_length - exposure_margin) { - ctx->frame_length = ctx->exposure[0] + exposure_margin; - } else { - ctx->frame_length = ctx->min_frame_length; - } - if (ctx->frame_length > ctx->max_frame_length) { - ctx->frame_length = ctx->max_frame_length; - } - - if (ctx->exposure[0] < ctx->s_ctx.exposure_min) { - ctx->exposure[0] = ctx->s_ctx.exposure_min; - } - - if (ctx->autoflicker_en) { - realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length; - if (realtime_fps >= 297 && realtime_fps <= 305) { - brzafront_set_max_framerate(ctx, 296, 0); - } else if (realtime_fps >= 147 && realtime_fps <= 150) { - brzafront_set_max_framerate(ctx, 146, 0); - } else { - // Extend frame length - subdrv_i2c_wr_u8(ctx, 0x0104, 0x01); - subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8); - subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF); - subdrv_i2c_wr_u8(ctx, 0x0104, 0x00); - } - } else { - // Extend frame length - subdrv_i2c_wr_u8(ctx, 0x0104, 0x01); - subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8); - subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF); - subdrv_i2c_wr_u8(ctx, 0x0104, 0x00); - } - /* Update Shutter */ - subdrv_i2c_wr_u8(ctx, 0x0104, 0x01); - subdrv_i2c_wr_u8(ctx, 0x0350, 0x01); /* Enable auto extend */ - subdrv_i2c_wr_u8(ctx, 0x0202, (ctx->exposure[0] >> 8) & 0xFF); - subdrv_i2c_wr_u8(ctx, 0x0203, ctx->exposure[0] & 0xFF); - subdrv_i2c_wr_u8(ctx, 0x0104, 0x00); - DRV_LOG(ctx, "shutter =%d, framelength =%d\n", ctx->exposure[0], ctx->frame_length); -} /* write_shutter */ - -static void brzafront_set_shutter_convert(struct subdrv_ctx *ctx, u32 *shutter) -{ - DRV_LOG(ctx, "set_shutter shutter =%d\n", *shutter); - ctx->exposure[0] = *shutter; - - brzafront_write_shutter(ctx); -} - -static int brzafront_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - DRV_LOG(ctx, "set_shutter shutter =%d\n", *para); - brzafront_set_shutter_convert(ctx, (u32 *)para); - return 0; -} - -static void brzafront_set_multi_shutter_frame_length(struct subdrv_ctx *ctx, - u32 *shutters, u16 exp_cnt, u16 frame_length) -{ - int i = 0; - u32 fine_integ_line = 0; - u16 last_exp_cnt = 1; - u32 calc_fl[3] = {0}; - int readout_diff = 0; - bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL); - u32 rg_shutters[3] = {0}; - u32 cit_step = 0; - - ctx->frame_length = frame_length ? frame_length : ctx->frame_length; - if (exp_cnt > ARRAY_SIZE(ctx->exposure)) { - DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure)); - exp_cnt = ARRAY_SIZE(ctx->exposure); - } - check_current_scenario_id_bound(ctx); - - /* check boundary of shutter */ - for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++) - last_exp_cnt += ctx->exposure[i] ? 1 : 0; - fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line; - cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step; - for (i = 0; i < exp_cnt; i++) { - shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line); - shutters[i] = max(shutters[i], ctx->s_ctx.exposure_min); - shutters[i] = min(shutters[i], ctx->s_ctx.exposure_max); - if (cit_step) - shutters[i] = round_up(shutters[i], cit_step); - } - - /* check boundary of framelength */ - /* - (1) previous se + previous me + current le */ - calc_fl[0] = shutters[0]; - for (i = 1; i < last_exp_cnt; i++) - calc_fl[0] += ctx->exposure[i]; - calc_fl[0] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt; - - /* - (2) current se + current me + current le */ - calc_fl[1] = shutters[0]; - for (i = 1; i < exp_cnt; i++) - calc_fl[1] += shutters[i]; - calc_fl[1] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt; - - /* - (3) readout time cannot be overlapped */ - calc_fl[2] = - (ctx->s_ctx.mode[ctx->current_scenario_id].readout_length + - ctx->s_ctx.mode[ctx->current_scenario_id].read_margin); - if (last_exp_cnt == exp_cnt) - for (i = 1; i < exp_cnt; i++) { - readout_diff = ctx->exposure[i] - shutters[i]; - calc_fl[2] += readout_diff > 0 ? readout_diff : 0; - } - for (i = 0; i < ARRAY_SIZE(calc_fl); i++) - ctx->frame_length = max(ctx->frame_length, calc_fl[i]); - ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length); - ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max); - /* restore shutter */ - memset(ctx->exposure, 0, sizeof(ctx->exposure)); - for (i = 0; i < exp_cnt; i++) - ctx->exposure[i] = shutters[i]; - /* group hold start */ - if (gph) - ctx->s_ctx.s_gph((void *)ctx, 1); - /* enable auto extend */ - if (ctx->s_ctx.reg_addr_auto_extend) - set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01); - /* write framelength */ - if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend) - write_frame_length(ctx, ctx->frame_length); - /* write shutter */ - switch (exp_cnt) { - case 1: - rg_shutters[0] = shutters[0] / exp_cnt; - break; - case 2: - rg_shutters[0] = shutters[0] / exp_cnt; - rg_shutters[2] = shutters[1] / exp_cnt; - break; - case 3: - rg_shutters[0] = shutters[0] / exp_cnt; - rg_shutters[1] = shutters[1] / exp_cnt; - rg_shutters[2] = shutters[2] / exp_cnt; - break; - default: - break; - } - for (i = 0; i < 3; i++) { - if (rg_shutters[i]) { - if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) { - set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure[i].addr[0], - (rg_shutters[i] >> 16) & 0xFF); - set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure[i].addr[1], - (rg_shutters[i] >> 8) & 0xFF); - set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure[i].addr[2], - rg_shutters[i] & 0xFF); - } else { - set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure[i].addr[0], - (rg_shutters[i] >> 8) & 0xFF); - set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure[i].addr[1], - rg_shutters[i] & 0xFF); - } - } - } - DRV_LOG(ctx, "exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n", - rg_shutters[0], rg_shutters[1], rg_shutters[2], - frame_length, ctx->frame_length, ctx->autoflicker_en); - - if (gph) - ctx->s_ctx.s_gph((void *)ctx, 0); - commit_i2c_buffer(ctx); - - DRV_LOG(ctx, "yuan brz out"); - /* group hold end */ -} - -static int brzafront_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - u64* feature_data = (u64*)para; - - brzafront_set_multi_shutter_frame_length(ctx, (u32 *)(*feature_data), - (u16) (*(feature_data + 1)), (u16) (*(feature_data + 2))); - return 0; -} - -static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable) -{ - check_current_scenario_id_bound(ctx); - if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) { - DRV_LOG(ctx, "AOV mode set stream in SCP side! (sid:%u)\n", - ctx->current_scenario_id); - return; - } - - if (enable) { - if (ctx->s_ctx.chk_s_off_sta) { - DRV_LOG(ctx, "check_stream_off before stream on"); - check_stream_off(ctx); - } - subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01); - } else { - subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00); - if (ctx->s_ctx.reg_addr_fast_mode && ctx->fast_mode_on) { - ctx->fast_mode_on = FALSE; - ctx->ref_sof_cnt = 0; - DRV_LOG(ctx, "seamless_switch disabled."); - set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00); - commit_i2c_buffer(ctx); - } - } - mdelay(10); - ctx->is_streaming = enable; - DRV_LOG(ctx, "X! enable:%u\n", enable); -} - -static int brzafront_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para); - if (*(u32 *)para) - brzafront_set_shutter_convert(ctx, (u32 *)para); - streaming_ctrl(ctx, true); - return 0; -} - -static int brzafront_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - DRV_LOG(ctx, "streaming control para:%d\n", *para); - streaming_ctrl(ctx, false); - return 0; -} - -static unsigned int read_brzafront_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id, - BYTE *data, int size) -{ - kal_uint16 addr; - int readsize; - - if (meta_id != brzafront_eeprom_info[meta_id].meta) - return -1; - - if (size != brzafront_eeprom_info[meta_id].size) - return -1; - - addr = brzafront_eeprom_info[meta_id].start; - readsize = brzafront_eeprom_info[meta_id].size; - - if (!read_cmos_eeprom_p8(ctx, addr, data, readsize)) { - DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id); - } - - return 0; -} - -static struct eeprom_addr_table_struct oplus_eeprom_addr_table = { - .i2c_read_id = 0xA9, - .i2c_write_id = 0xA8, - - .addr_modinfo = 0x0000, - .addr_sensorid = 0x0006, - .addr_lens = 0x0008, - .addr_vcm = 0x000A, - .addr_modinfoflag = 0x000D, - - .addr_qrcode = 0x00B0, - .addr_qrcodeflag = 0x00C7, -}; - -static struct oplus_eeprom_info_struct oplus_eeprom_info = {0}; - -static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info)); - *len = sizeof(oplus_eeprom_info); - return 0; -} - -static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr) -{ - kal_uint16 get_byte = 0; - - adaptor_i2c_rd_u8(ctx->i2c_client, BRZAFRONT_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte); - return get_byte; -} - -#ifdef WRITE_DATA_MAX_LENGTH -#undef WRITE_DATA_MAX_LENGTH -#endif -#define WRITE_DATA_MAX_LENGTH (32) -static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx, - kal_uint16 addr, kal_uint8 *para, kal_uint32 len) -{ - kal_int32 ret = ERROR_NONE; - ret = adaptor_i2c_wr_p8(ctx->i2c_client, BRZAFRONT_EEPROM_WRITE_ID >> 1, - addr, para, len); - - return ret; -} - -static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable) -{ - kal_int32 ret = ERROR_NONE; - kal_uint16 reg = 0xE000; - if (enable) { - adaptor_i2c_wr_u8(ctx->i2c_client, BRZAFRONT_EEPROM_WRITE_ID >> 1, reg, 0xA1); - } - else { - adaptor_i2c_wr_u8(ctx->i2c_client, BRZAFRONT_EEPROM_WRITE_ID >> 1, reg, 0xA0); - } - - return ret; -} - -static kal_int32 write_Module_data(struct subdrv_ctx *ctx, - ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata) -{ - kal_int32 ret = ERROR_NONE; - kal_uint16 data_base, data_length; - kal_uint32 idx, idy; - kal_uint8 *pData; - UINT32 i = 0; - kal_uint16 offset = 0; - if(pStereodata != NULL) { - LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n", - pStereodata->uSensorId, - pStereodata->uDeviceId, - pStereodata->baseAddr, - pStereodata->dataLength); - - data_base = pStereodata->baseAddr; - data_length = pStereodata->dataLength; - pData = pStereodata->uData; - offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base; - if (offset > data_length) { - offset = data_length; - } - if ((pStereodata->uSensorId == BRZAFRONT_SENSOR_ID) && (data_length == CALI_DATA_SLAVE_LENGTH) - && (data_base == BRZAFRONT_STEREO_START_ADDR)) { - LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]); - /* close write protect */ - write_eeprom_protect(ctx, 0); - msleep(6); - if (offset > 0) { - ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset); - if (ret != ERROR_NONE) { - LOG_INF("write_eeprom error: offset\n"); - /* open write protect */ - write_eeprom_protect(ctx, 1); - msleep(6); - return -1; - } - msleep(6); - data_base += offset; - data_length -= offset; - pData += offset; - } - idx = data_length/WRITE_DATA_MAX_LENGTH; - idy = data_length%WRITE_DATA_MAX_LENGTH; - for (i = 0; i < idx; i++ ) { - ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i), - &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH); - if (ret != ERROR_NONE) { - LOG_INF("write_eeprom error: i= %d\n", i); - /* open write protect */ - write_eeprom_protect(ctx, 1); - msleep(6); - return -1; - } - msleep(6); - } - ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx), - &pData[WRITE_DATA_MAX_LENGTH*idx], idy); - if (ret != ERROR_NONE) { - LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy); - /* open write protect */ - write_eeprom_protect(ctx, 1); - msleep(6); - return -1; - } - msleep(6); - /* open write protect */ - write_eeprom_protect(ctx, 1); - msleep(6); - LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base)); - LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39)); - LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40)); - LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556)); - LOG_INF("write_Module_data Write end\n"); - } else if ((pStereodata->uSensorId == BRZAFRONT_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL) - && (data_base == BRZAFRONT_AESYNC_START_ADDR)) { - LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1], - pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]); - /* close write protect */ - write_eeprom_protect(ctx, 0); - msleep(6); - if (offset > 0) { - ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset); - if (ret != ERROR_NONE) { - LOG_INF("write_eeprom error: offset\n"); - /* open write protect */ - write_eeprom_protect(ctx, 1); - msleep(6); - return -1; - } - msleep(6); - data_base += offset; - data_length -= offset; - pData += offset; - } - idx = data_length/WRITE_DATA_MAX_LENGTH; - idy = data_length%WRITE_DATA_MAX_LENGTH; - for (i = 0; i < idx; i++ ) { - ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i), - &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH); - if (ret != ERROR_NONE) { - LOG_INF("write_eeprom error: i= %d\n", i); - /* open write protect */ - write_eeprom_protect(ctx, 1); - msleep(6); - return -1; - } - msleep(6); - } - ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx), - &pData[WRITE_DATA_MAX_LENGTH*idx], idy); - if (ret != ERROR_NONE) { - LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy); - /* open write protect */ - write_eeprom_protect(ctx, 1); - msleep(6); - return -1; - } - msleep(6); - /* open write protect */ - write_eeprom_protect(ctx, 1); - msleep(6); - LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n", - read_cmos_eeprom_8(ctx, BRZAFRONT_AESYNC_START_ADDR), - read_cmos_eeprom_8(ctx, BRZAFRONT_AESYNC_START_ADDR+1), - read_cmos_eeprom_8(ctx, BRZAFRONT_AESYNC_START_ADDR+2), - read_cmos_eeprom_8(ctx, BRZAFRONT_AESYNC_START_ADDR+3), - read_cmos_eeprom_8(ctx, BRZAFRONT_AESYNC_START_ADDR+4), - read_cmos_eeprom_8(ctx, BRZAFRONT_AESYNC_START_ADDR+5), - read_cmos_eeprom_8(ctx, BRZAFRONT_AESYNC_START_ADDR+6), - read_cmos_eeprom_8(ctx, BRZAFRONT_AESYNC_START_ADDR+7)); - LOG_INF("AESync write_Module_data Write end\n"); - } else { - LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId); - return -1; - } - } else { - LOG_INF("brzafront write_Module_data pStereodata is null\n"); - return -1; - } - return ret; -} - -static int brzafront_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - int ret = ERROR_NONE; - ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para)); - if (ret != ERROR_NONE) { - *len = (u32)-1; /*write eeprom failed*/ - LOG_INF("ret=%d\n", ret); - } - return 0; -} - -static int brzafront_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - if(*len > CALI_DATA_SLAVE_LENGTH) { - *len = CALI_DATA_SLAVE_LENGTH; - } - read_brzafront_eeprom_info(ctx, EEPROM_META_STEREO_DATA, - (BYTE *)para, *len); - return 0; -} - -static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr, - BYTE *data, int size) -{ - if (adaptor_i2c_rd_p8(ctx->i2c_client, BRZAFRONT_EEPROM_READ_ID >> 1, - addr, data, size) < 0) { - return false; - } - return true; -} - -static void read_otp_info(struct subdrv_ctx *ctx) -{ - DRV_LOGE(ctx, "brzafront read_otp_info begin\n"); - read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE); - DRV_LOGE(ctx, "brzafront read_otp_info end\n"); -} - -static int brzafront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - u32 *feature_return_para_32 = (u32 *)para; - DRV_LOGE(ctx, "get otp data"); - if (otp_data_checksum[0] == 0) { - read_otp_info(ctx); - } else { - DRV_LOG(ctx, "otp data has already read"); - } - memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum)); - *len = sizeof(otp_data_checksum); - return 0; -} - -static int brzafront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - get_imgsensor_id(ctx, (u32 *)para); - return 0; -} - -static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id) -{ - u8 i = 0; - u8 retry = 2; - static bool first_read = TRUE; - u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0]; - u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1]; - u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2]; - - ctx->i2c_write_id = 0x20; - LOG_INF("dbgmsg - reg(0x300a) = 0x%x, reg(0x300b) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x300a), subdrv_i2c_rd_u8(ctx, 0x300b)); - LOG_INF("dbgmsg - reg(0x0A22) = 0x%x, reg(0x0A23) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x0A22), subdrv_i2c_rd_u8(ctx, 0x0A23)); - LOG_INF("dbgmsg - reg(0x0136) = 0x%x, reg(0x0137) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x0136), subdrv_i2c_rd_u8(ctx, 0x0137)); - - subdrv_i2c_wr_u8(ctx, 0x0A02, 0x1B); - subdrv_i2c_wr_u8(ctx, 0x0A00, 0x01); - - while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) { - ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i]; - do { - *sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) | - subdrv_i2c_rd_u8(ctx, addr_l); - if (addr_ll) - *sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll); - *sensor_id = (*sensor_id >> 4) & 0xFFFF; - LOG_INF("i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n", - ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id); - if (*sensor_id == 0x0471) { - *sensor_id = ctx->s_ctx.sensor_id; - if (first_read) { - read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table); - first_read = FALSE; - } - return ERROR_NONE; - } - LOG_INF("Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id); - LOG_INF("sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n", - *sensor_id, ctx->s_ctx.sensor_id); - retry--; - } while (retry > 0); - i++; - retry = 2; - } - if (*sensor_id != ctx->s_ctx.sensor_id) { - *sensor_id = 0xFFFFFFFF; - return ERROR_SENSOR_CONNECT_FAIL; - } - return ERROR_NONE; -} - -static int open(struct subdrv_ctx *ctx) -{ - u32 sensor_id = 0; - u32 scenario_id = 0; - - /* get sensor id */ - if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE) - return ERROR_SENSOR_CONNECT_FAIL; - sensor_init(ctx); - - /* HW GGC*/ - set_sensor_cali(ctx); - - memset(ctx->exposure, 0, sizeof(ctx->exposure)); - memset(ctx->ana_gain, 0, sizeof(ctx->gain)); - ctx->exposure[0] = ctx->s_ctx.exposure_def; - ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def; - ctx->current_scenario_id = scenario_id; - ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk; - ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength; - ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength; - ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length; - ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length; - ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin; - ctx->min_frame_length = ctx->frame_length; - ctx->autoflicker_en = FALSE; - ctx->test_pattern = 0; - ctx->ihdr_mode = 0; - ctx->pdaf_mode = 0; - ctx->hdr_mode = 0; - ctx->extend_frame_length_en = 0; - ctx->is_seamless = 0; - ctx->fast_mode_on = 0; - ctx->sof_cnt = 0; - ctx->ref_sof_cnt = 0; - ctx->is_streaming = 0; - - return ERROR_NONE; -} - -static void set_group_hold(void *arg, u8 en) -{ - struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg; - - if (en) - subdrv_i2c_wr_u8(ctx, 0x0104, 0x01); - else - subdrv_i2c_wr_u8(ctx, 0x0104, 0x00); -} - -static u16 get_gain2reg(u32 gain) -{ - u16 reg_gain = 0x0; - reg_gain = 1024 - (1024 * BASEGAIN) / gain; - return reg_gain; -} - -static int brzafront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - u32 mode = *((u32 *)para); - - if (mode != ctx->test_pattern) - DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode); - /* 1:Solid Color 2:Color Bar 5:Black */ - if (mode) { - if (mode == 5) { - subdrv_i2c_wr_u8(ctx, 0x0600, mode >> 4); /*black*/ - subdrv_i2c_wr_u8(ctx, 0x0601, mode); /*black*/ - } else { - subdrv_i2c_wr_u8(ctx, 0x0600, mode); /*100% Color bar*/ - } - } - else if (ctx->test_pattern) - subdrv_i2c_wr_u8(ctx, 0x0600, 0x0000); /*No pattern*/ - - ctx->test_pattern = mode; - return 0; -} - -static int init_ctx(struct subdrv_ctx *ctx, struct i2c_client *i2c_client, u8 i2c_write_id) -{ - memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx)); - subdrv_ctx_init(ctx); - ctx->i2c_client = i2c_client; - ctx->i2c_write_id = i2c_write_id; - return 0; -} - -void get_sensor_cali(void* arg) -{ - struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg; - - u16 idx = 0; - u8 support = FALSE; - u8 *buf = NULL; - u16 size = 0; - u16 addr = 0; - u8 qsc_is_valid = 0; - struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info; - - /* Probe EEPROM device */ - if (!probe_eeprom(ctx)) - return; - - idx = ctx->eeprom_index; - - /* QSC data */ - support = info[idx].qsc_support; - size = info[idx].qsc_size; - addr = info[idx].addr_qsc; - buf = info[idx].qsc_table; - if (support && size > 0) { - // Check QSC validation - qsc_is_valid = QSC_IS_VALID_VAL; // i2c_read_eeprom(ctx, OTP_QSC_VALID_ADDR); - if (qsc_is_valid != QSC_IS_VALID_VAL) { - DRV_LOGE(ctx, "QSC data is invalid, flag(%02x)", qsc_is_valid); - } else if (info[idx].preload_qsc_table == NULL) { - info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL); - if (buf == NULL) { - if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) { - DRV_LOGE(ctx, "preload QSC data failed"); - } - } else { - memcpy(info[idx].preload_qsc_table, buf, size); - } - DRV_LOG(ctx, "preload QSC data %u bytes", size); - } else { - DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size); - } - } - - ctx->is_read_preload_eeprom = 1; -} - -static void set_sensor_cali(void *arg) -{ - //struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg; - return; -} - -int brzafront_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) -{ - u64* feature_data = (u64*)para; - u32 gain = *feature_data; - u16 rg_gain; - - bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL); - - /* check boundary of gain */ - gain = max(gain, ctx->s_ctx.ana_gain_min); - gain = min(gain, ctx->s_ctx.ana_gain_max); - /* mapping of gain to register value */ - if (ctx->s_ctx.g_gain2reg != NULL) - rg_gain = ctx->s_ctx.g_gain2reg(gain); - else - rg_gain = gain2reg(gain); - /* restore gain */ - memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain)); - ctx->ana_gain[0] = gain; - /* group hold start */ - if (gph && !ctx->ae_ctrl_gph_en) - ctx->s_ctx.s_gph((void *)ctx, 1); - /* write gain */ - subdrv_i2c_wr_u8(ctx, 0x0104, 0x01); - subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_ana_gain[0].addr[0], - (rg_gain >> 8) & 0xFF); - subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_ana_gain[0].addr[1], - rg_gain & 0xFF); - subdrv_i2c_wr_u8(ctx, 0x0104, 0x00); - DRV_LOG(ctx, "gain[0x%x]\n", rg_gain); - if (gph) - ctx->s_ctx.s_gph((void *)ctx, 0); - /* group hold end */ - return 0; -} - -static int power_off(struct subdrv_ctx *ctx, void *data) -{ - LOG_INF("dbgmsg - func: %s, line: %d\n", __FUNCTION__, __LINE__); - mdelay(2); - return 0; -} diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzafront_mipi_raw/brzafrontmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/brzafront_mipi_raw/brzafrontmipiraw_Sensor.h deleted file mode 100755 index c86f4146..00000000 --- a/vendor/oplus/kernel/camera/imgsensor/common/brzafront_mipi_raw/brzafrontmipiraw_Sensor.h +++ /dev/null @@ -1,47 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2019 MediaTek Inc. - */ - -/***************************************************************************** - * - * Filename: - * --------- - * BRZAFRONTmipi_Sensor.h - * - * Project: - * -------- - * ALPS - * - * Description: - * ------------ - * CMOS sensor header file - * - ****************************************************************************/ -#ifndef _BRZAFRONTMIPI_SENSOR_H -#define _BRZAFRONTMIPI_SENSOR_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "kd_camera_typedef.h" -#include "kd_imgsensor.h" -#include "kd_imgsensor_define_v4l2.h" -#include "kd_imgsensor_errcode.h" -#include "oplus_kd_eeprom.h" -#include "oplus_kd_imgsensor.h" -#include "brzafront_ana_gain_table.h" -#include "brzafront_Sensor_setting.h" -#include "oplus-adaptor-subdrv-ctrl.h" -#include "adaptor-subdrv-ctrl.h" -#include "adaptor-i2c.h" -#include "adaptor.h" - -#endif diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/Makefile deleted file mode 100755 index 58cc1e05..00000000 --- a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -# Copyright (C) 2020 MediaTek Inc. - -imgsensor_isp8-objs += \ - $(subdrv-rpath)/brzamainmipiraw_Sensor.o \ - diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamain_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamain_Sensor_setting.h deleted file mode 100755 index fc7f5a40..00000000 --- a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamain_Sensor_setting.h +++ /dev/null @@ -1,3022 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2019 MediaTek Inc. - */ -/***************************************************************************** - * - * Filename: - * --------- - * caymanamain_Sensor_setting.h - * - * Project: - * -------- - * Description: - * ------------ - * CMOS sensor header file - * - ****************************************************************************/ -#ifndef _BRZAMAIN_SENSOR_SETTING_H -#define _BRZAMAIN_SENSOR_SETTING_H - -#include "kd_camera_typedef.h" - -static kal_uint16 brzamain_init_setting[] = { -//Stand-by OFF Sequence -//Power ON -//Input EXTCLK -//XCLR OFF -//External Clock Setting - 0x0136, 0x18, - 0x0137, 0x00, -// Global Setting 0 - 0x961C, 0x04, - 0xF800, 0x18, - 0xF801, 0x18, - 0xF802, 0xC5, - 0xF803, 0x26, - 0xF804, 0x55, - 0xF805, 0xC4, - 0xF806, 0x3F, - 0xF807, 0x00, - 0xF808, 0x17, - 0xF809, 0xFA, - 0xF80A, 0x84, - 0xF80B, 0xBE, - 0xF80C, 0x55, - 0xF80D, 0xC8, - 0xF80E, 0x3F, - 0xF80F, 0x00, - 0xF810, 0x40, - 0xF811, 0x80, - 0xF812, 0x3A, - 0xF813, 0xC4, - 0xFA00, 0x23, - 0xFA01, 0x23, - 0xFA02, 0xC5, - 0xFA03, 0x2B, - 0xFA04, 0x55, - 0xFA05, 0xC4, - 0xFA06, 0x3F, - 0xFA07, 0x00, - 0xFA08, 0x17, - 0xFA09, 0xFA, - 0xFA0A, 0x84, - 0xFA0B, 0xBE, - 0xFA0C, 0x55, - 0xFA0D, 0xC8, - 0xFA0E, 0x3F, - 0xFA0F, 0x00, - 0xFA10, 0x40, - 0xFA11, 0x80, - 0xFA12, 0x3A, - 0xFA13, 0xC4, - 0xFC00, 0x4F, - 0xFC01, 0x06, - 0xFC02, 0xAC, - 0xFC03, 0x27, - 0xFC04, 0xAC, - 0xFC05, 0x1D, - 0xFC06, 0xAC, - 0xFC07, 0x14, - 0xFC08, 0xFA, - 0xFC09, 0xE8, - 0xFC0A, 0xEB, - 0xFC0B, 0x2E, - 0xFC0C, 0xD0, - 0xFC0D, 0x20, - 0xFC0E, 0x40, - 0xFC0F, 0x4F, - 0xFC10, 0x1E, - 0xFC11, 0x05, - 0xFC12, 0xD4, - 0xFC13, 0x18, - 0xFC14, 0x08, - 0xFC15, 0x00, - 0xFC16, 0xF6, - 0xFC17, 0x40, - 0xFC18, 0x06, - 0xFC19, 0xB7, - 0xFC1A, 0xBE, - 0xFC1B, 0x06, - 0xFC1C, 0xF0, - 0xFC1D, 0x40, - 0xFC1E, 0x06, - 0xFC1F, 0xB8, - 0xFC20, 0x29, - 0xFC21, 0x25, - 0xFC22, 0x90, - 0xFC23, 0x2C, - 0xFC24, 0x80, - 0xFC25, 0x22, - 0xFC26, 0xF6, - 0xFC27, 0x41, - 0xFC28, 0x05, - 0xFC29, 0x1C, - 0xFC2A, 0xB8, - 0xFC2B, 0x8B, - 0xFC2C, 0xD0, - 0xFC2D, 0x18, - 0xFC2E, 0x27, - 0xFC2F, 0x6C, - 0xFC30, 0xF0, - 0xFC31, 0x02, - 0xFC32, 0x02, - 0xFC33, 0x74, - 0xFC34, 0xF6, - 0xFC35, 0x40, - 0xFC36, 0x07, - 0xFC37, 0x10, - 0xFC38, 0x0F, - 0xFC39, 0x20, - 0xFC3A, 0xFA, - 0xFC3B, 0xE8, - 0xFC3C, 0x03, - 0xFC3D, 0x8A, - 0xFC3E, 0x80, - 0xFC3F, 0x04, - 0xFC40, 0x5F, - 0xFC41, 0xF0, - 0xFC42, 0x29, - 0xFC43, 0x25, - 0xFC44, 0x90, - 0xFC45, 0x0A, - 0xFC46, 0x50, - 0xFC47, 0x31, - 0xFC48, 0xFA, - 0xFC49, 0xE8, - 0xFC4A, 0x03, - 0xFC4B, 0x7C, - 0xFC4C, 0x80, - 0xFC4D, 0x04, - 0xFC4E, 0x09, - 0xFC4F, 0x50, - 0xFC50, 0xF4, - 0xFC51, 0x40, - 0xFC52, 0x06, - 0xFC53, 0xBC, - 0xFC54, 0x50, - 0xFC55, 0xA1, - 0xFC56, 0xFA, - 0xFC57, 0xE8, - 0xFC58, 0x03, - 0xFC59, 0x6E, - 0xFC5A, 0xFA, - 0xFC5B, 0xE8, - 0xFC5C, 0x02, - 0xFC5D, 0x9E, - 0xFC5E, 0xA8, - 0xFC5F, 0x14, - 0xFC60, 0xA8, - 0xFC61, 0x1D, - 0xFC62, 0xA8, - 0xFC63, 0x27, - 0xFC64, 0xA0, - 0xFC65, 0x09, - 0xFC66, 0x00, - 0xFC67, 0x00, - 0x4331, 0x01, - // PHY_VIF Setting - 0x3304, 0x00, - // Register version - 0x33F0, 0x01, - 0x33F1, 0x06, - // Signaling mode setting - 0x0111, 0x03, - // ROI Setting 2 - 0x3855, 0x01, - 0x0808, 0x02,// Global Setting - 0x0D06, 0x82, - 0x0D07, 0x02, - 0x0D12, 0x78, - 0x0D13, 0x01, - 0x0D0D, 0x00, - 0x0D08, 0x01, - 0x1012, 0x00, - 0x2EDF, 0x07, - 0x3953, 0x01, - 0x3954, 0x01, - 0x3955, 0x01, - 0x3B30, 0x01, - 0x3B32, 0x12, - 0x3B33, 0x04, - 0x3B34, 0x0A, - 0x3B36, 0xB2, - 0x3B40, 0x00, - 0x3B42, 0x0A, - 0x3B43, 0x04, - 0x3B45, 0x0D, - 0x3B46, 0x40, - 0x5A1D, 0x52, - 0x5A27, 0x19, - 0x5A37, 0xC8, - 0x5A39, 0x25, - 0x5A3D, 0x0E, - 0x5A41, 0x19, - 0x5A47, 0x62, - 0x5A51, 0x52, - 0x5A5B, 0x19, - 0x5A69, 0xC8, - 0x5A6B, 0x25, - 0x5A6F, 0x11, - 0x5A73, 0x19, - 0x5A79, 0x8A, - 0x5A83, 0x52, - 0x5A8D, 0x19, - 0x5A9B, 0xC8, - 0x5A9D, 0x25, - 0x5AA1, 0x52, - 0x5AA5, 0x19, - 0x5AAB, 0x93, - 0x5AB5, 0x52, - 0x5ABF, 0x19, - 0x5ACD, 0xC8, - 0x5ACF, 0x25, - 0x5AD3, 0x11, - 0x5AD7, 0x19, - 0x5ADD, 0x4B, - 0x5AE7, 0x52, - 0x5AF1, 0x19, - 0x5AF5, 0x2D, - 0x5AFF, 0xC8, - 0x5B01, 0x25, - 0x5B05, 0x0E, - 0x5B09, 0x19, - 0x5B0D, 0x9E, - 0x5B0F, 0x34, - 0x5B21, 0x19, - 0x5B27, 0x2D, - 0x5B33, 0x19, - 0x5B39, 0x9E, - 0x5B3F, 0x52, - 0x5B49, 0x19, - 0x5B4D, 0x87, - 0x5B57, 0xC8, - 0x5B59, 0x25, - 0x5B5D, 0x0E, - 0x5B61, 0x19, - 0x5B65, 0xDA, - 0x5B6D, 0x52, - 0x5B79, 0x19, - 0x5B7F, 0x2D, - 0x5B8B, 0x19, - 0x5B91, 0x9E, - 0x5B97, 0x52, - 0x5BA1, 0x19, - 0x5BA5, 0x2D, - 0x5BAF, 0xC8, - 0x5BB1, 0x25, - 0x5BB5, 0x11, - 0x5BB9, 0x19, - 0x5BBD, 0x9E, - 0x5BBF, 0x5C, - 0x5BD1, 0x19, - 0x5BD7, 0x2D, - 0x5BE3, 0x19, - 0x5BE9, 0x9E, - 0x5BEF, 0x52, - 0x5BF9, 0x19, - 0x5BFD, 0x87, - 0x5C07, 0xC8, - 0x5C09, 0x25, - 0x5C0D, 0x11, - 0x5C11, 0x19, - 0x5C15, 0xDA, - 0x5C29, 0x19, - 0x5C2F, 0x2D, - 0x5C3B, 0x19, - 0x5C41, 0x9E, - 0x5C47, 0x52, - 0x5C51, 0x19, - 0x5C57, 0x41, - 0x5C5F, 0xC8, - 0x5C61, 0x25, - 0x5C65, 0x11, - 0x5C69, 0x19, - 0x5C6E, 0x01, - 0x5C6F, 0x13, - 0x5C85, 0xC8, - 0x5C87, 0x25, - 0x5C8B, 0x1B, - 0x5C8F, 0x19, - 0x5C95, 0x41, - 0x5C9B, 0x52, - 0x5CA5, 0x19, - 0x5CAA, 0x03, - 0x5CAB, 0xDE, - 0x5CB3, 0xC8, - 0x5CB5, 0x25, - 0x5CB9, 0x11, - 0x5CBD, 0x19, - 0x5CC3, 0xB8, - 0x5CD9, 0xC8, - 0x5CDB, 0x25, - 0x5CDF, 0x1B, - 0x5CE3, 0x19, - 0x5CE8, 0x03, - 0x5CE9, 0xDE, - 0x5CEF, 0x52, - 0x5CF9, 0x19, - 0x5CFF, 0x79, - 0x5D07, 0xC8, - 0x5D09, 0x25, - 0x5D0C, 0x00, - 0x5D0D, 0x52, - 0x5D11, 0x19, - 0x5D16, 0x01, - 0x5D17, 0x28, - 0x5D2D, 0xC8, - 0x5D2F, 0x25, - 0x5D33, 0x53, - 0x5D37, 0x19, - 0x5D3D, 0x79, - 0x5D43, 0x52, - 0x5D4D, 0x19, - 0x5D51, 0x2D, - 0x5D53, 0x41, - 0x5D55, 0x6B, - 0x5D5B, 0xC8, - 0x5D5D, 0x25, - 0x5D61, 0x11, - 0x5D65, 0x19, - 0x5D69, 0x9E, - 0x5D6B, 0xD0, - 0x5D7D, 0x19, - 0x5D83, 0x2D, - 0x5D95, 0xC8, - 0x5D97, 0x25, - 0x5D9B, 0x1B, - 0x5D9F, 0x19, - 0x5DA5, 0x41, - 0x5DB1, 0x19, - 0x5DB7, 0x6B, - 0x5DC3, 0x19, - 0x5DC9, 0x9E, - 0x5DCF, 0x52, - 0x5DD9, 0x19, - 0x5DDD, 0x87, - 0x5DDF, 0x41, - 0x5DE1, 0x41, - 0x5DE7, 0xC8, - 0x5DE9, 0x25, - 0x5DED, 0x11, - 0x5DF1, 0x19, - 0x5DF5, 0xDA, - 0x5DF7, 0x4A, - 0x5E09, 0x19, - 0x5E0F, 0x2D, - 0x5E21, 0xC8, - 0x5E23, 0x25, - 0x5E27, 0x1B, - 0x5E2B, 0x19, - 0x5E31, 0x41, - 0x5E3D, 0x19, - 0x5E43, 0x6B, - 0x5E4F, 0x19, - 0x5E55, 0x9E, - 0x5E5B, 0x52, - 0x5E65, 0x19, - 0x5E69, 0x2D, - 0x5E6B, 0x41, - 0x5E73, 0xC8, - 0x5E75, 0x25, - 0x5E79, 0x11, - 0x5E7D, 0x19, - 0x5E81, 0x9E, - 0x5E83, 0xFB, - 0x5E95, 0x19, - 0x5E9B, 0x2D, - 0x5EAD, 0xC8, - 0x5EAF, 0x25, - 0x5EB3, 0x1B, - 0x5EB7, 0x19, - 0x5EBD, 0x41, - 0x5EC9, 0x19, - 0x5ECF, 0x9E, - 0x5ED5, 0x52, - 0x5EDF, 0x19, - 0x5EE3, 0x2D, - 0x5EE5, 0x5A, - 0x5EE7, 0x41, - 0x5EEF, 0xC8, - 0x5EF1, 0x25, - 0x5EF5, 0x11, - 0x5EF9, 0x19, - 0x5EFD, 0xDA, - 0x5EFF, 0xCB, - 0x5F11, 0x19, - 0x5F17, 0x2D, - 0x5F23, 0x19, - 0x5F29, 0x2D, - 0x5F3B, 0xC8, - 0x5F3D, 0x25, - 0x5F41, 0x1B, - 0x5F45, 0x19, - 0x5F4B, 0x41, - 0x5F57, 0x19, - 0x5F5D, 0x9E, - 0x5F63, 0x52, - 0x5F6D, 0x19, - 0x5F7F, 0x55, - 0x5F83, 0x0E, - 0x5F87, 0x19, - 0x5F93, 0x12, - 0x6C06, 0xFF, - 0x6C07, 0xFF, - 0x6C0E, 0x00, - 0x6C0F, 0x02, - 0x6C11, 0xD9, - 0x6C12, 0xFF, - 0x6C13, 0xFF, - 0x6C1A, 0x00, - 0x6C1B, 0x02, - 0x6C1D, 0xD9, - 0x6C1E, 0xFF, - 0x6C1F, 0xFF, - 0x6C26, 0x00, - 0x6C27, 0x02, - 0x6C29, 0xD9, - 0x6C2A, 0xFF, - 0x6C2B, 0xFF, - 0x6C32, 0x00, - 0x6C33, 0x02, - 0x6C35, 0xD9, - 0x6C36, 0xFF, - 0x6C37, 0xFF, - 0x6C3E, 0x00, - 0x6C3F, 0x02, - 0x6C41, 0xD9, - 0x6C42, 0xFF, - 0x6C43, 0xFF, - 0x6C4A, 0x00, - 0x6C4B, 0x02, - 0x6C4D, 0xD9, - 0x6C4E, 0xFF, - 0x6C4F, 0xFF, - 0x6C5A, 0xFF, - 0x6C5B, 0xFF, - 0x6C66, 0xFF, - 0x6C67, 0xFF, - 0x6C72, 0xFF, - 0x6C73, 0xFF, - 0x6C7E, 0xFF, - 0x6C7F, 0xFF, - 0x6CAA, 0x00, - 0x6CAB, 0x02, - 0x6CAD, 0xD9, - 0x6CAE, 0x00, - 0x6CAF, 0x02, - 0x6CB1, 0xD9, - 0x6CB2, 0x00, - 0x6CB3, 0x02, - 0x6CB5, 0xD9, - 0x6CB6, 0x00, - 0x6CB7, 0x02, - 0x6CB9, 0xD9, - 0x6CBA, 0x00, - 0x6CBB, 0x02, - 0x6CBD, 0xD9, - 0x6E3F, 0xDE, - 0x6E47, 0xDE, - 0x6E4F, 0xDE, - 0x6E57, 0xDE, - 0x6E5F, 0xDE, - 0x6E67, 0xDE, - 0x6EB3, 0xDE, - 0x6EB7, 0xDE, - 0x6EBB, 0xDE, - 0x6EBF, 0xDE, - 0x6EC3, 0xDE, - 0x7476, 0x00, - 0x7477, 0x00, - 0x7478, 0x00, - 0x7509, 0x00, - 0x750B, 0x00, - 0x7516, 0x01, - 0x7524, 0x0C, - 0x7528, 0x02, - 0x7530, 0x03, - 0x7616, 0x0C, - 0x7619, 0x0C, - 0x761C, 0x0C, - 0x761D, 0x0C, - 0x761E, 0x0C, - 0x761F, 0x0C, - 0x7620, 0x00, - 0x7623, 0x00, - 0x7624, 0x00, - 0x7625, 0x00, - 0x7626, 0x00, - 0x7627, 0x00, - 0x7628, 0x00, - 0x7629, 0x00, - 0x762A, 0x00, - 0x762B, 0x00, - 0x762C, 0x00, - 0x762D, 0x00, - 0x762E, 0x00, - 0x762F, 0x00, - 0x7631, 0x07, - 0x7632, 0x07, - 0x7634, 0x07, - 0x7635, 0x07, - 0x76FC, 0x44, - 0x76FD, 0x2A, - 0x76FE, 0x2C, - 0x76FF, 0x26, - 0x7700, 0x43, - 0x7701, 0x2A, - 0x7702, 0x2A, - 0x7703, 0x26, - 0x7704, 0x2C, - 0x7705, 0x2A, - 0x7706, 0x2A, - 0x7707, 0x65, - 0x7708, 0x44, - 0x7709, 0x48, - 0x770A, 0x40, - 0x770B, 0x64, - 0x770C, 0x44, - 0x770D, 0x44, - 0x770E, 0x40, - 0x770F, 0x48, - 0x7710, 0x44, - 0x7711, 0x44, - 0x7712, 0x45, - 0x7713, 0x43, - 0x7714, 0x47, - 0x7715, 0x40, - 0x7716, 0x42, - 0x7717, 0x43, - 0x7718, 0x43, - 0x7719, 0x40, - 0x771A, 0x47, - 0x771B, 0x43, - 0x771C, 0x43, - 0x771D, 0x5D, - 0x771E, 0x43, - 0x771F, 0x46, - 0x7720, 0x40, - 0x7721, 0x62, - 0x7722, 0x43, - 0x7723, 0x43, - 0x7724, 0x40, - 0x7725, 0x46, - 0x7726, 0x43, - 0x7727, 0x43, - 0x7728, 0x41, - 0x7729, 0x43, - 0x772A, 0x3F, - 0x772B, 0x41, - 0x772C, 0x41, - 0x772D, 0x3F, - 0x772E, 0x43, - 0x772F, 0x41, - 0x7730, 0x41, - 0x7731, 0x40, - 0x7732, 0x42, - 0x7733, 0x3F, - 0x7734, 0x40, - 0x7735, 0x40, - 0x7736, 0x3F, - 0x7737, 0x42, - 0x7738, 0x40, - 0x7739, 0x40, - 0x773A, 0x40, - 0x773B, 0x15, - 0x773C, 0x16, - 0x773D, 0x09, - 0x773E, 0x3B, - 0x773F, 0x15, - 0x7740, 0x15, - 0x7741, 0x09, - 0x7742, 0x16, - 0x7743, 0x15, - 0x7744, 0x15, - 0x7745, 0x63, - 0x7746, 0x2F, - 0x7747, 0x2F, - 0x7748, 0x19, - 0x7749, 0x5D, - 0x774A, 0x2F, - 0x774B, 0x2F, - 0x774C, 0x19, - 0x774D, 0x2F, - 0x774E, 0x2F, - 0x774F, 0x2F, - 0x7750, 0x45, - 0x7751, 0x2F, - 0x7752, 0x2F, - 0x7753, 0x24, - 0x7754, 0x43, - 0x7755, 0x2F, - 0x7756, 0x2F, - 0x7757, 0x24, - 0x7758, 0x2F, - 0x7759, 0x2F, - 0x775A, 0x2F, - 0x775B, 0x57, - 0x775C, 0x39, - 0x775D, 0x36, - 0x775E, 0x32, - 0x775F, 0x64, - 0x7760, 0x39, - 0x7761, 0x39, - 0x7762, 0x32, - 0x7763, 0x36, - 0x7764, 0x39, - 0x7765, 0x39, - 0x7766, 0x3B, - 0x7767, 0x3B, - 0x7768, 0x3B, - 0x7769, 0x3B, - 0x776A, 0x3B, - 0x776B, 0x3B, - 0x776C, 0x3B, - 0x776D, 0x3B, - 0x776E, 0x3B, - 0x776F, 0x41, - 0x7770, 0x40, - 0x7771, 0x3F, - 0x7772, 0x41, - 0x7773, 0x41, - 0x7774, 0x3F, - 0x7775, 0x40, - 0x7776, 0x41, - 0x7777, 0x41, - 0x7778, 0x0F, - 0x7779, 0x0A, - 0x777A, 0x0A, - 0x777B, 0x0A, - 0x777C, 0x0F, - 0x777D, 0x0A, - 0x777E, 0x0A, - 0x777F, 0x0A, - 0x7780, 0x0A, - 0x7781, 0x0A, - 0x7782, 0x0A, - 0x7783, 0x0F, - 0x7784, 0x0A, - 0x7785, 0x0A, - 0x7786, 0x0A, - 0x7787, 0x0F, - 0x7788, 0x0A, - 0x7789, 0x0A, - 0x778A, 0x0A, - 0x778B, 0x0A, - 0x778C, 0x0A, - 0x778D, 0x0A, - 0x778E, 0x14, - 0x778F, 0x0A, - 0x7790, 0x0A, - 0x7791, 0x0A, - 0x7792, 0x0F, - 0x7793, 0x0A, - 0x7794, 0x0A, - 0x7795, 0x0A, - 0x7796, 0x0A, - 0x7797, 0x0A, - 0x7798, 0x0A, - 0x7799, 0x14, - 0x779A, 0x0A, - 0x779B, 0x0A, - 0x779C, 0x0A, - 0x779D, 0x0F, - 0x779E, 0x0A, - 0x779F, 0x0A, - 0x77A0, 0x0A, - 0x77A1, 0x0A, - 0x77A2, 0x0A, - 0x77A3, 0x0A, - 0x77A4, 0x0A, - 0x77A5, 0x0A, - 0x77A6, 0x0A, - 0x77A7, 0x0A, - 0x77A8, 0x0A, - 0x77A9, 0x0A, - 0x77AA, 0x0A, - 0x77AB, 0x0A, - 0x77AC, 0x0A, - 0x77AD, 0x0B, - 0x77AE, 0x0A, - 0x77AF, 0x0A, - 0x77B0, 0x0B, - 0x77B1, 0x0B, - 0x77B2, 0x0A, - 0x77B3, 0x0A, - 0x77B4, 0x0B, - 0x77B5, 0x0B, - 0x77F4, 0x01, - 0x77F5, 0x01, - 0x77F6, 0x01, - 0x77F8, 0x01, - 0x77F9, 0x01, - 0x77FB, 0x01, - 0x77FC, 0x01, - 0x7814, 0x2A, - 0x7815, 0x01, - 0x7816, 0x01, - 0x7818, 0x2A, - 0x7819, 0x01, - 0x781A, 0x01, - 0x781C, 0x01, - 0x781D, 0x01, - 0x781E, 0x01, - 0x781F, 0x2A, - 0x7820, 0x01, - 0x7821, 0x01, - 0x7823, 0x2A, - 0x7824, 0x01, - 0x7825, 0x01, - 0x7827, 0x01, - 0x7828, 0x01, - 0x7829, 0x01, - 0x782A, 0x2A, - 0x782B, 0x0A, - 0x782C, 0x0A, - 0x782E, 0x2A, - 0x782F, 0x0A, - 0x7830, 0x0A, - 0x7832, 0x0A, - 0x7833, 0x0A, - 0x7834, 0x0A, - 0x7835, 0x2A, - 0x7836, 0x19, - 0x7837, 0x19, - 0x7838, 0x2A, - 0x7839, 0x2A, - 0x783A, 0x19, - 0x783B, 0x19, - 0x783C, 0x2A, - 0x783D, 0x19, - 0x783E, 0x19, - 0x783F, 0x19, - 0x7840, 0x1D, - 0x7841, 0x1D, - 0x7842, 0x2A, - 0x7843, 0x1D, - 0x7844, 0x1D, - 0x7845, 0x2A, - 0x7846, 0x1D, - 0x7847, 0x1D, - 0x7848, 0x1D, - 0x7849, 0x2A, - 0x784A, 0x2A, - 0x784B, 0x2A, - 0x784C, 0x2A, - 0x784D, 0x2A, - 0x784E, 0x2A, - 0x784F, 0x2A, - 0x7850, 0x2A, - 0x7851, 0x2A, - 0x7853, 0x50, - 0x7856, 0x50, - 0x7857, 0x50, - 0x785A, 0x50, - 0x785B, 0x50, - 0x785D, 0x50, - 0x7860, 0x50, - 0x7861, 0x50, - 0x7864, 0x50, - 0x7865, 0x50, - 0x7867, 0x50, - 0x786A, 0x50, - 0x786B, 0x50, - 0x7902, 0x15, - 0x7904, 0x13, - 0x7905, 0x15, - 0x7908, 0x13, - 0x7909, 0x08, - 0x790B, 0x11, - 0x790D, 0x0C, - 0x790E, 0x08, - 0x790F, 0x08, - 0x7912, 0x0B, - 0x7919, 0x06, - 0x791E, 0x06, - 0x791F, 0x06, - 0x7929, 0x00, - 0x792E, 0x00, - 0x792F, 0x00, - 0x7A2A, 0x19, - 0x7A2B, 0xF1, - 0x7A2C, 0x0F, - 0x7A48, 0x0F, - 0x7A49, 0x01, - 0x7A4A, 0x03, - 0x7A51, 0x09, - 0x7A58, 0x0F, - 0x7A5D, 0x32, - 0x7A63, 0x32, - 0x7A6B, 0x3E, - 0x7A71, 0x3E, - 0x7AAD, 0x99, - 0x7AB3, 0x99, - 0x7ABB, 0xA5, - 0x7AC1, 0xA5, - 0x7AFD, 0x66, - 0x7B05, 0x72, - 0x7B26, 0x12, - 0x7B27, 0x12, - 0x7B28, 0x12, - 0x7B29, 0x12, - 0x7B2A, 0x12, - 0x7B2B, 0x12, - 0x7B2C, 0x12, - 0x7B2D, 0x12, - 0x7B2E, 0x12, - 0x7B2F, 0x12, - 0x7B30, 0x12, - 0x7B31, 0x12, - 0x7B32, 0x12, - 0x7B33, 0x12, - 0x7B34, 0x12, - 0x7B35, 0x12, - 0x7B36, 0x12, - 0x7B37, 0x12, - 0x7B38, 0x12, - 0x7B39, 0x12, - 0x7B3A, 0x12, - 0x7B3B, 0x12, - 0x7B3C, 0x12, - 0x7B3D, 0x12, - 0x7B3E, 0x12, - 0x7B3F, 0x12, - 0x7B40, 0x12, - 0x7B41, 0x12, - 0x7B42, 0x12, - 0x7B43, 0x12, - 0x7B44, 0x12, - 0x7B45, 0x12, - 0x7B46, 0x12, - 0x7B47, 0x12, - 0x7B48, 0x12, - 0x7B49, 0x12, - 0x7B4A, 0x12, - 0x7B4B, 0x12, - 0x7B4C, 0x12, - 0x7B4D, 0x12, - 0x7C73, 0x0B, - 0x7C74, 0x0B, - 0x7C75, 0x0B, - 0x7C76, 0x0B, - 0x7C77, 0x0B, - 0x7C78, 0x0B, - 0x7C79, 0x0B, - 0x7C7C, 0x0B, - 0x7C7D, 0x0B, - 0x7C7E, 0x0B, - 0x7C7F, 0x0B, - 0x7C80, 0x0B, - 0x7C81, 0x0B, - 0x7C83, 0x0B, - 0x7C84, 0x0B, - 0x7C85, 0x0B, - 0x7C86, 0x0B, - 0x7C87, 0x0B, - 0x7C88, 0x0B, - 0x7CA5, 0x01, - 0x7CAA, 0x01, - 0x7CB0, 0x01, - 0x7CB5, 0x01, - 0x7CBB, 0x01, - 0x7CC0, 0x01, - 0x7CD1, 0x01, - 0x7CD6, 0x01, - 0x7CDC, 0x01, - 0x7CE1, 0x01, - 0x7CE7, 0x01, - 0x7CEC, 0x01, - 0x90B3, 0x80, - 0x974A, 0x09, - 0x974B, 0x08, - 0x9752, 0x0E, - 0x9753, 0xB4, - 0x975B, 0x0C, - 0x9762, 0x09, - 0x9763, 0x08, - 0x976A, 0x09, - 0x976B, 0x08, - 0x9772, 0x0F, - 0x9773, 0x7C, - 0x978A, 0x09, - 0x978B, 0xE8, - 0xDDA9, 0x4E, - 0xDE8D, 0x01, - 0xE24E, 0x00, - 0x7854, 0x50, - 0x7859, 0x50, - 0x785E, 0x50, - 0x7863, 0x50, - 0x7869, 0x50, - 0x7A5E, 0x00, - 0x7A5F, 0x32, - 0x7A66, 0x00, - 0x7A67, 0x32, - 0x7A6C, 0x00, - 0x7A6D, 0x3E, - 0x7A74, 0x00, - 0x7A75, 0x3E, - 0x7AAE, 0x00, - 0x7AAF, 0x99, - 0x7AB6, 0x00, - 0x7AB7, 0x99, - 0x7ABC, 0x00, - 0x7ABD, 0xA5, - 0x7AC4, 0x00, - 0x7AC5, 0xA5, - 0x7B00, 0x00, - 0x7B01, 0x66, - 0x7B08, 0x00, - 0x7B09, 0x72, - 0x7CA6, 0x01, - 0x7CA9, 0x01, - 0x7CAC, 0x01, - 0x7CAD, 0x01, - 0x7CAE, 0x01, - 0x7CB1, 0x01, - 0x7CB4, 0x01, - 0x7CB7, 0x01, - 0x7CB8, 0x01, - 0x7CB9, 0x01, - 0x7CBC, 0x01, - 0x7CBF, 0x01, - 0x7CC2, 0x01, - 0x7CC3, 0x01, - 0x7CC4, 0x01, - 0x7CD2, 0x01, - 0x7CD5, 0x01, - 0x7CD8, 0x01, - 0x7CD9, 0x01, - 0x7CDA, 0x01, - 0x7CDD, 0x01, - 0x7CE0, 0x01, - 0x7CE3, 0x01, - 0x7CE4, 0x01, - 0x7CE5, 0x01, - 0x7CE8, 0x01, - 0x7CEB, 0x01, - 0x7CEE, 0x01, - 0x7CEF, 0x01, - 0x7CF0, 0x01, - 0xAB30, 0x00, - 0xAB31, 0x3C, - 0xAB32, 0x00, - 0xAB33, 0x3C, - 0xAB34, 0x00, - 0xAB35, 0x3C, - 0xAE24, 0x01, - 0xAE25, 0x61, - 0xAE26, 0x01, - 0xAE27, 0xDF, - 0xAE28, 0x02, - 0xAE29, 0xD0, - 0xAB55, 0x23, - 0xAB57, 0x23, - 0xAB59, 0x23, - 0xAB5B, 0x0A, - 0xAB5D, 0x0A, - 0xAB5F, 0x0A, - 0xAB73, 0x23, - 0xAB75, 0x23, - 0xAB77, 0x23, - 0xAB79, 0x0A, - 0xAB7B, 0x0A, - 0xAB7D, 0x0A, - 0x0D08, 0x00, -}; - -static kal_uint16 brzamain_preview_setting[] = { -//3Lane -//reg_A -//QBIN(VBIN)_4096x3072_30FPS with PDAF VB_max -//H: 4096 -//V: 3072 -//MIPI output setting -//Address value - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x1D, - 0x0343, 0x4C, - 0x3850, 0x00, - 0x3851, 0xCD, - 0x0340, 0x0F, - 0x0341, 0x3C, - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x00, - 0x0347, 0x00, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x17, - 0x034B, 0xFF, - 0x0900, 0x01, - 0x0901, 0x22, - 0x0902, 0x00, - 0x3005, 0x02, - 0x3006, 0x02, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x04, - 0x31C0, 0x41, - 0x31C1, 0x41, - 0x3205, 0x00, - 0x323C, 0x01, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x10, - 0x040D, 0x00, - 0x040E, 0x0C, - 0x040F, 0x00, - 0x034C, 0x10, - 0x034D, 0x00, - 0x034E, 0x0C, - 0x034F, 0x00, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x01, - 0x030D, 0x18, - 0x030E, 0x05, - 0x030F, 0xDD, - 0x3104, 0x01, - 0x38A0, 0x00, - 0x38A1, 0xB4, - 0x38A2, 0x00, - 0x38A3, 0xE8, - 0x38A8, 0x00, - 0x38A9, 0x38, - 0x38AA, 0x00, - 0x38AB, 0x6A, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x0B, - 0x38D1, 0x04, - 0x38D2, 0x08, - 0x38D3, 0xB0, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x08, - 0x3B01, 0x8E, - 0x3B04, 0x00, - 0x3B05, 0x88, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x0D, - 0x0850, 0x00, - 0x0851, 0x0B, - 0x0852, 0x00, - 0x0853, 0x17, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, - 0x0100, 0x00, -}; -static kal_uint16 brzamain_capture_setting[] = { - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x1D, - 0x0343, 0x4C, - 0x3850, 0x00, - 0x3851, 0xCD, - 0x0340, 0x0F, - 0x0341, 0x3C, - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x00, - 0x0347, 0x00, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x17, - 0x034B, 0xFF, - 0x0900, 0x01, - 0x0901, 0x22, - 0x0902, 0x00, - 0x3005, 0x02, - 0x3006, 0x02, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x04, - 0x31C0, 0x41, - 0x31C1, 0x41, - 0x3205, 0x00, - 0x323C, 0x01, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x10, - 0x040D, 0x00, - 0x040E, 0x0C, - 0x040F, 0x00, - 0x034C, 0x10, - 0x034D, 0x00, - 0x034E, 0x0C, - 0x034F, 0x00, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x01, - 0x030D, 0x18, - 0x030E, 0x05, - 0x030F, 0xDD, - 0x3104, 0x01, - 0x38A0, 0x00, - 0x38A1, 0xB4, - 0x38A2, 0x00, - 0x38A3, 0xE8, - 0x38A8, 0x00, - 0x38A9, 0x38, - 0x38AA, 0x00, - 0x38AB, 0x6A, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x0B, - 0x38D1, 0x04, - 0x38D2, 0x08, - 0x38D3, 0xB0, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x08, - 0x3B01, 0x8E, - 0x3B04, 0x00, - 0x3B05, 0x88, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x0D, - 0x0850, 0x00, - 0x0851, 0x0B, - 0x0852, 0x00, - 0x0853, 0x17, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, - 0x0100, 0x00, -}; -static kal_uint16 brzamain_normal_video_setting[] = { - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x12, - 0x0343, 0x08, - 0x3850, 0x00, - 0x3851, 0x9F, - 0x0340, 0x13, - 0x0341, 0xA7, - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x03, - 0x0347, 0x00, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x14, - 0x034B, 0xFF, - 0x0900, 0x01, - 0x0901, 0x22, - 0x0902, 0x00, - 0x3005, 0x06, - 0x3006, 0x01, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x00, - 0x31C0, 0x41, - 0x31C1, 0x41, - 0x3205, 0x00, - 0x323C, 0x02, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x10, - 0x040D, 0x00, - 0x040E, 0x09, - 0x040F, 0x00, - 0x034C, 0x10, - 0x034D, 0x00, - 0x034E, 0x09, - 0x034F, 0x00, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0x92, - 0x030B, 0x01, - 0x030D, 0x18, - 0x030E, 0x04, - 0x030F, 0xB0, - 0x3104, 0x00, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x06, - 0x38D1, 0x0E, - 0x38D2, 0x06, - 0x38D3, 0x0E, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x01, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x0B, - 0x0850, 0x00, - 0x0851, 0x09, - 0x0852, 0x00, - 0x0853, 0x13, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, - 0x3228, 0x02, - 0x0104, 0x01, - 0x322C, 0x00, - 0x322D, 0x00, - 0x322A, 0x00, - 0x322B, 0x00, - 0x322E, 0x00, - 0x322F, 0x00, - 0x0104, 0x00, - 0x0100, 0x00, -}; -static kal_uint16 brzamain_hs_video_setting[] = { - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x12, - 0x0343, 0x08, - 0x3850, 0x00, - 0x3851, 0x9F, - 0x0340, 0x09, - 0x0341, 0xD3, - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x03, - 0x0347, 0x00, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x14, - 0x034B, 0xFF, - 0x0900, 0x01, - 0x0901, 0x22, - 0x0902, 0x00, - 0x3005, 0x06, - 0x3006, 0x01, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x00, - 0x31C0, 0x41, - 0x31C1, 0x41, - 0x3205, 0x00, - 0x323C, 0x02, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x10, - 0x040D, 0x00, - 0x040E, 0x09, - 0x040F, 0x00, - 0x034C, 0x10, - 0x034D, 0x00, - 0x034E, 0x09, - 0x034F, 0x00, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0x92, - 0x030B, 0x01, - 0x030D, 0x18, - 0x030E, 0x04, - 0x030F, 0xB0, - 0x3104, 0x00, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x06, - 0x38D1, 0x0E, - 0x38D2, 0x06, - 0x38D3, 0x0E, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x01, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x0B, - 0x0850, 0x00, - 0x0851, 0x09, - 0x0852, 0x00, - 0x0853, 0x13, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, -}; -static kal_uint16 brzamain_slim_video_setting[] = { - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x0F, - 0x0343, 0xB8, - 0x3850, 0x00, - 0x3851, 0x6E, - 0x0340, 0x07, - 0x0341, 0x18, - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x03, - 0x0347, 0x00, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x14, - 0x034B, 0xFF, - 0x0900, 0x01, - 0x0901, 0x44, - 0x0902, 0x02, - 0x3005, 0x02, - 0x3006, 0x02, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x04, - 0x31C0, 0x43, - 0x31C1, 0x43, - 0x3205, 0x00, - 0x323C, 0x01, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x08, - 0x040D, 0x00, - 0x040E, 0x04, - 0x040F, 0x80, - 0x034C, 0x08, - 0x034D, 0x00, - 0x034E, 0x04, - 0x034F, 0x80, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x01, - 0x030D, 0x0C, - 0x030E, 0x02, - 0x030F, 0x1D, - 0x3104, 0x01, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x05, - 0x38D1, 0x14, - 0x38D2, 0x05, - 0x38D3, 0x14, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x09, - 0x0850, 0x00, - 0x0851, 0x09, - 0x0852, 0x00, - 0x0853, 0x0F, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, - 0x0100, 0x00, -}; -static kal_uint16 brzamain_custom1_setting[] = { - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x09, - 0x0343, 0xA4, - 0x3850, 0x00, - 0x3851, 0x44, - 0x0340, 0x05, - 0x0341, 0xBE, - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x03, - 0x0347, 0x00, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x14, - 0x034B, 0xFF, - 0x0900, 0x01, - 0x0901, 0x44, - 0x0902, 0x02, - 0x3005, 0x00, - 0x3006, 0x00, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x00, - 0x31C0, 0x43, - 0x31C1, 0x43, - 0x3205, 0x00, - 0x323C, 0x01, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x08, - 0x040D, 0x00, - 0x040E, 0x04, - 0x040F, 0x80, - 0x034C, 0x08, - 0x034D, 0x00, - 0x034E, 0x04, - 0x034F, 0x80, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x01, - 0x030D, 0x04, - 0x030E, 0x00, - 0x030F, 0xEE, - 0x3104, 0x00, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x00, - 0x38D1, 0x32, - 0x38D2, 0x00, - 0x38D3, 0x32, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x0D, - 0x0850, 0x00, - 0x0851, 0x0B, - 0x0852, 0x00, - 0x0853, 0x17, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, - 0x0100, 0x00, -}; -static kal_uint16 brzamain_custom2_setting[] = { - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x1D, - 0x0343, 0x4C, - 0x3850, 0x00, - 0x3851, 0xCD, - 0x0340, 0x13, - 0x0341, 0x0C, - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x00, - 0x0347, 0x00, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x17, - 0x034B, 0xFF, - 0x0900, 0x01, - 0x0901, 0x22, - 0x0902, 0x00, - 0x3005, 0x02, - 0x3006, 0x02, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x04, - 0x31C0, 0x41, - 0x31C1, 0x41, - 0x3205, 0x00, - 0x323C, 0x01, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x10, - 0x040D, 0x00, - 0x040E, 0x0C, - 0x040F, 0x00, - 0x034C, 0x10, - 0x034D, 0x00, - 0x034E, 0x0C, - 0x034F, 0x00, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x02, - 0x030D, 0x0C, - 0x030E, 0x03, - 0x030F, 0xFD, - 0x3104, 0x01, - 0x38A0, 0x00, - 0x38A1, 0xB4, - 0x38A2, 0x00, - 0x38A3, 0xE8, - 0x38A8, 0x00, - 0x38A9, 0x38, - 0x38AA, 0x00, - 0x38AB, 0x6A, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x0B, - 0x38D1, 0x04, - 0x38D2, 0x08, - 0x38D3, 0xB0, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x08, - 0x3B01, 0x8E, - 0x3B04, 0x00, - 0x3B05, 0x88, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x09, - 0x0850, 0x00, - 0x0851, 0x09, - 0x0852, 0x00, - 0x0853, 0x0F, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, -//IQ tunig settings for RegA - 0x0100, 0x00, -}; -static kal_uint16 brzamain_custom3_setting[] = { -//3Lane -//reg_D -//Full RMSC 15fps with PDAF VB_max -//H: 8192 -//V: 6144 -//MIPI output setting -//Address value - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, -//Line Length PCK Setting -//Address value - 0x0342, 0x23, - 0x0343, 0x00, - 0x3850, 0x00, - 0x3851, 0xF6, -//Frame Length Lines Setting -//Address value - 0x0340, 0x19, - 0x0341, 0x68, -//ROI Setting -//Address value - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x00, - 0x0347, 0x00, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x17, - 0x034B, 0xFF, -//Mode Setting -//Address value - 0x0900, 0x00, - 0x0901, 0x11, - 0x0902, 0x00, - 0x3005, 0x00, - 0x3006, 0x00, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x00, - 0x31C0, 0x01, - 0x31C1, 0x01, - 0x3205, 0x01, - 0x323C, 0x01, - 0x39AC, 0x01, -//Digital Crop & Scaling -//Address value - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x20, - 0x040D, 0x00, - 0x040E, 0x18, - 0x040F, 0x00, -//Output Size Setting -//Address value - 0x034C, 0x20, - 0x034D, 0x00, - 0x034E, 0x18, - 0x034F, 0x00, -//Clock Setting -//Address value - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x01, - 0x030D, 0x03, - 0x030E, 0x00, - 0x030F, 0xCB, -//Other Setting -//Address value - 0x3104, 0x01, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x03, - 0x38D1, 0x20, - 0x38D2, 0x03, - 0x38D3, 0x20, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, -//Integration Setting -//Address value - 0x0202, 0x03, - 0x0203, 0xE8, -//Gain Setting -//Address value - 0x0204, 0x00, - 0x0205, 0x00, - 0x020E, 0x01, - 0x020F, 0x00, -//PDAF TYPE2 Setting -//Address value - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, -//EAE-Bracketing Setting -//Address value - 0x0E00, 0x00, -//PHASE PIX VCID Setting -//Address value - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, -//PHASE PIX data type Setting -//Address value - 0x30A5, 0x30, - 0x30A7, 0x30, -//PDAF TYPE2 VCID Setting -//Address value - 0x30A2, 0x00, - 0x30F1, 0x01, -//PDAF TYPE2 data type Setting -//Address value - 0x30A3, 0x30, -//MIPI Global Timing Setting -//Address value - 0x084E, 0x00, - 0x084F, 0x0F, - 0x0850, 0x00, - 0x0851, 0x0D, - 0x0852, 0x00, - 0x0853, 0x19, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, - 0x0100, 0x00, -}; -static kal_uint16 brzamain_custom4_setting[] = { -//3Lane -//reg_A -//QBIN(VBIN)_4096x3072_30FPS with PDAF VB_max -//H: 4096 -//V: 3072 -//MIPI output setting -//Address value - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x23, - 0x0343, 0x00, - 0x3850, 0x00, - 0x3851, 0xF6, - 0x0340, 0x0C, - 0x0341, 0xB4, - 0x0344, 0x08, - 0x0345, 0x00, - 0x0346, 0x06, - 0x0347, 0x00, - 0x0348, 0x17, - 0x0349, 0xFF, - 0x034A, 0x11, - 0x034B, 0xFF, - 0x0900, 0x00, - 0x0901, 0x11, - 0x0902, 0x00, - 0x3005, 0x00, - 0x3006, 0x00, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x00, - 0x31C0, 0x01, - 0x31C1, 0x01, - 0x3205, 0x00, - 0x323C, 0x01, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x10, - 0x040D, 0x00, - 0x040E, 0x0C, - 0x040F, 0x00, - 0x034C, 0x10, - 0x034D, 0x00, - 0x034E, 0x0C, - 0x034F, 0x00, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x01, - 0x030D, 0x18, - 0x030E, 0x05, - 0x030F, 0xDD, - 0x3104, 0x01, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x03, - 0x38D1, 0x52, - 0x38D2, 0x03, - 0x38D3, 0x52, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x00, - 0x0205, 0x00, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x0D, - 0x0850, 0x00, - 0x0851, 0x0B, - 0x0852, 0x00, - 0x0853, 0x17, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, - 0x0100, 0x00, -}; -static kal_uint16 brzamain_custom5_setting[] = { - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x23, - 0x0343, 0x00, - 0x3850, 0x00, - 0x3851, 0xF6, - 0x0340, 0x0F, - 0x0341, 0xE0, - 0x0344, 0x08, - 0x0345, 0x00, - 0x0346, 0x06, - 0x0347, 0x00, - 0x0348, 0x17, - 0x0349, 0xFF, - 0x034A, 0x11, - 0x034B, 0xFF, - 0x0900, 0x00, - 0x0901, 0x11, - 0x0902, 0x00, - 0x3005, 0x00, - 0x3006, 0x00, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x00, - 0x31C0, 0x01, - 0x31C1, 0x01, - 0x3205, 0x00, - 0x323C, 0x01, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x10, - 0x040D, 0x00, - 0x040E, 0x0C, - 0x040F, 0x00, - 0x034C, 0x10, - 0x034D, 0x00, - 0x034E, 0x0C, - 0x034F, 0x00, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x02, - 0x030D, 0x0C, - 0x030E, 0x03, - 0x030F, 0xFD, - 0x3104, 0x01, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x03, - 0x38D1, 0x52, - 0x38D2, 0x03, - 0x38D3, 0x52, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x00, - 0x0205, 0x00, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x09, - 0x0850, 0x00, - 0x0851, 0x09, - 0x0852, 0x00, - 0x0853, 0x0F, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, -//IQ tunig settings for RegA - 0x0100, 0x00, -}; -static kal_uint16 brzamain_custom6_setting[] = { -//3Lane -//reg_A-3-S1 -//Full-RMSC-Crop_4096x3072_30FPS with PDAF VB_max seamless A-2-S1 -//H: 4096 -//V: 3072 -//MIPI output setting -//Address value - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x1D, - 0x0343, 0x4C, - 0x3850, 0x00, - 0x3851, 0xCD, - 0x0340, 0x0F, - 0x0341, 0x3C, - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x03, - 0x0347, 0x90, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x14, - 0x034B, 0x6F, - 0x0900, 0x01, - 0x0901, 0x22, - 0x0902, 0x00, - 0x3005, 0x02, - 0x3006, 0x02, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x04, - 0x31C0, 0x41, - 0x31C1, 0x41, - 0x3205, 0x00, - 0x323C, 0x01, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x80, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x0F, - 0x040D, 0x00, - 0x040E, 0x08, - 0x040F, 0x70, - 0x034C, 0x0F, - 0x034D, 0x00, - 0x034E, 0x08, - 0x034F, 0x70, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x02, - 0x030D, 0x04, - 0x030E, 0x01, - 0x030F, 0x42, - 0x3104, 0x01, - 0x38A0, 0x00, - 0x38A1, 0xB4, - 0x38A2, 0x00, - 0x38A3, 0xE8, - 0x38A8, 0x00, - 0x38A9, 0x38, - 0x38AA, 0x00, - 0x38AB, 0x6A, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x0B, - 0x38D1, 0x04, - 0x38D2, 0x08, - 0x38D3, 0xB0, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x08, - 0x3B01, 0x8E, - 0x3B04, 0x00, - 0x3B05, 0x88, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x09, - 0x0850, 0x00, - 0x0851, 0x09, - 0x0852, 0x00, - 0x0853, 0x0F, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, - 0x0100, 0x00, -};//IQ tunig settings for RegA -static kal_uint16 brzamain_custom7_setting[] = { - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x12, - 0x0343, 0x08, - 0x3850, 0x00, - 0x3851, 0x7F, - 0x0340, 0x0C, - 0x0341, 0x4D, - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x03, - 0x0347, 0x90, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x14, - 0x034B, 0x6F, - 0x0900, 0x01, - 0x0901, 0x22, - 0x0902, 0x00, - 0x3005, 0x06, - 0x3006, 0x01, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x00, - 0x31C0, 0x41, - 0x31C1, 0x41, - 0x3205, 0x00, - 0x323C, 0x02, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x80, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x0F, - 0x040D, 0x00, - 0x040E, 0x08, - 0x040F, 0x70, - 0x034C, 0x0F, - 0x034D, 0x00, - 0x034E, 0x08, - 0x034F, 0x70, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x01, - 0x030D, 0x0C, - 0x030E, 0x02, - 0x030F, 0xC9, - 0x3104, 0x00, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x06, - 0x38D1, 0x0E, - 0x38D2, 0x06, - 0x38D3, 0x0E, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x01, - 0x3422, 0x01, - 0x3423, 0xE0, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x0D, - 0x0850, 0x00, - 0x0851, 0x0B, - 0x0852, 0x00, - 0x0853, 0x17, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, - 0x0100, 0x00, -}; -static kal_uint16 brzamain_custom8_setting[] = { -}; -static kal_uint16 brzamain_custom9_setting[] = { - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, - 0x0342, 0x12, - 0x0343, 0x08, - 0x3850, 0x00, - 0x3851, 0x7F, - 0x0340, 0x0C, - 0x0341, 0x4D, - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x00, - 0x0347, 0x00, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x17, - 0x034B, 0xFF, - 0x0900, 0x01, - 0x0901, 0x22, - 0x0902, 0x00, - 0x3005, 0x06, - 0x3006, 0x01, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x00, - 0x31C0, 0x41, - 0x31C1, 0x41, - 0x3205, 0x00, - 0x323C, 0x02, - 0x39AC, 0x01, - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x10, - 0x040D, 0x00, - 0x040E, 0x0C, - 0x040F, 0x00, - 0x034C, 0x10, - 0x034D, 0x00, - 0x034E, 0x0C, - 0x034F, 0x00, - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x02, - 0x0306, 0x00, - 0x0307, 0xB7, - 0x030B, 0x01, - 0x030D, 0x18, - 0x030E, 0x05, - 0x030F, 0xDD, - 0x3104, 0x00, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x06, - 0x38D1, 0x0E, - 0x38D2, 0x06, - 0x38D3, 0x0E, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, - 0x0202, 0x03, - 0x0203, 0xE8, - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, - 0x3103, 0x01, - 0x3422, 0x01, - 0x3423, 0xFC, - 0x0E00, 0x00, - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, - 0x30A5, 0x30, - 0x30A7, 0x30, - 0x30A2, 0x00, - 0x30F1, 0x01, - 0x30A3, 0x30, - 0x084E, 0x00, - 0x084F, 0x0D, - 0x0850, 0x00, - 0x0851, 0x0B, - 0x0852, 0x00, - 0x0853, 0x17, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, -}; -static kal_uint16 brzamain_custom10_setting[] = { -//3Lane -//reg_V2 -//2048x1536 @24FPS QBIN(VBIN)-V2H2 RST= 33.3ms (Tline Max.) -//H: 2048 -//V: 1536 -//MIPI output setting -//Address value - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, -//Line Length PCK Setting -//Address value - 0x0342, 0x0F, - 0x0343, 0xB8, - 0x3850, 0x01, - 0x3851, 0xCC, -//Frame Length Lines Setting -//Address value - 0x0340, 0x08, - 0x0341, 0x78, -//ROI Setting -//Address value - 0x0344, 0x00, - 0x0345, 0x00, - 0x0346, 0x00, - 0x0347, 0x00, - 0x0348, 0x1F, - 0x0349, 0xFF, - 0x034A, 0x17, - 0x034B, 0xFF, -//Mode Setting -//Address value - 0x0900, 0x01, - 0x0901, 0x44, - 0x0902, 0x02, - 0x3005, 0x02, - 0x3006, 0x02, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x04, - 0x31C0, 0x43, - 0x31C1, 0x43, - 0x3205, 0x00, - 0x323C, 0x01, - 0x39AC, 0x01, -//Digital Crop & Scaling -//Address value - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x08, - 0x040D, 0x00, - 0x040E, 0x06, - 0x040F, 0x00, -//Output Size Setting -//Address value - 0x034C, 0x08, - 0x034D, 0x00, - 0x034E, 0x06, - 0x034F, 0x00, -//Clock Setting -//Address value - 0x0301, 0x05, - 0x0303, 0x04, - 0x0305, 0x04, - 0x0306, 0x00, - 0x0307, 0xAF, - 0x030B, 0x04, - 0x030D, 0x06, - 0x030E, 0x01, - 0x030F, 0xF4, -//Other Setting -//Address value - 0x3104, 0x01, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x05, - 0x38D1, 0x14, - 0x38D2, 0x05, - 0x38D3, 0x14, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, -//Integration Setting -//Address value - 0x0202, 0x03, - 0x0203, 0xE8, -//Gain Setting -//Address value - 0x0204, 0x13, - 0x0205, 0x34, - 0x020E, 0x01, - 0x020F, 0x00, -//PDAF TYPE2 Setting -//Address value - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, -//EAE-Bracketing Setting -//Address value - 0x0E00, 0x00, -//PHASE PIX VCID Setting -//Address value - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, -//PHASE PIX data type Setting -//Address value - 0x30A5, 0x30, - 0x30A7, 0x30, -//PDAF TYPE2 VCID Setting -//Address value - 0x30A2, 0x00, - 0x30F1, 0x01, -//PDAF TYPE2 data type Setting -//Address value - 0x30A3, 0x30, -//MIPI Global Timing Setting -//Address value - 0x084E, 0x00, - 0x084F, 0x05, - 0x0850, 0x00, - 0x0851, 0x05, - 0x0852, 0x00, - 0x0853, 0x09, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, -}; -static kal_uint16 brzamain_custom11_setting[] = { -//3Lane -//reg_A-3-S1 -//4096x3072 @24FPS full crop -//H: 4096 -//V: 3072 -//MIPI output setting -//Address value - 0x0112, 0x0A, - 0x0113, 0x0A, - 0x0114, 0x02, -//Line Length PCK Setting -//Address value - 0x0342, 0x23, - 0x0343, 0x00, - 0x3850, 0x00, - 0x3851, 0xF6, -//Frame Length Lines Setting -//Address value - 0x0340, 0x0F, - 0x0341, 0xE0, -//ROI Setting -//Address value - 0x0344, 0x08, - 0x0345, 0x00, - 0x0346, 0x06, - 0x0347, 0x00, - 0x0348, 0x17, - 0x0349, 0xFF, - 0x034A, 0x11, - 0x034B, 0xFF, -//Mode Setting -//Address value - 0x0900, 0x00, - 0x0901, 0x11, - 0x0902, 0x00, - 0x3005, 0x00, - 0x3006, 0x00, - 0x3140, 0x0A, - 0x3144, 0x00, - 0x3148, 0x00, - 0x31C0, 0x01, - 0x31C1, 0x01, - 0x3205, 0x01, - 0x323C, 0x01, - 0x39AC, 0x01, -//Digital Crop & Scaling -//Address value - 0x0408, 0x00, - 0x0409, 0x00, - 0x040A, 0x00, - 0x040B, 0x00, - 0x040C, 0x10, - 0x040D, 0x00, - 0x040E, 0x0C, - 0x040F, 0x00, -//Output Size Setting -//Address value - 0x034C, 0x10, - 0x034D, 0x00, - 0x034E, 0x0C, - 0x034F, 0x00, -//Clock Setting -//Address value - 0x0301, 0x05, - 0x0303, 0x02, - 0x0305, 0x04, - 0x0306, 0x01, - 0x0307, 0x6E, - 0x030B, 0x02, - 0x030D, 0x06, - 0x030E, 0x01, - 0x030F, 0xFF, -//Other Setting -//Address value - 0x3104, 0x01, - 0x38A0, 0x00, - 0x38A1, 0x00, - 0x38A2, 0x00, - 0x38A3, 0x00, - 0x38A8, 0x00, - 0x38A9, 0x00, - 0x38AA, 0x00, - 0x38AB, 0x00, - 0x38B0, 0x03, - 0x38B1, 0xFF, - 0x38B4, 0x03, - 0x38B5, 0xFF, - 0x38B8, 0x03, - 0x38B9, 0xFF, - 0x38BC, 0x03, - 0x38BD, 0xFF, - 0x38D0, 0x03, - 0x38D1, 0x52, - 0x38D2, 0x03, - 0x38D3, 0x52, - 0x38D8, 0x14, - 0x38E0, 0x00, - 0x38E1, 0x00, - 0x38E2, 0x00, - 0x38E3, 0x00, - 0x38E4, 0x00, - 0x38E5, 0x00, - 0x38E6, 0x00, - 0x38E7, 0x00, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B04, 0x00, - 0x3B05, 0x00, -//Integration Setting -//Address value - 0x0202, 0x03, - 0x0203, 0xE8, -//Gain Setting -//Address value - 0x0204, 0x00, - 0x0205, 0x00, - 0x020E, 0x01, - 0x020F, 0x00, -//PDAF TYPE2 Setting -//Address value - 0x3103, 0x00, - 0x3422, 0x01, - 0x3423, 0xFC, -//EAE-Bracketing Setting -//Address value - 0x0E00, 0x00, -//PHASE PIX VCID Setting -//Address value - 0x30A4, 0x00, - 0x30A6, 0x00, - 0x30F2, 0x01, - 0x30F3, 0x01, -//PHASE PIX data type Setting -//Address value - 0x30A5, 0x30, - 0x30A7, 0x30, -//PDAF TYPE2 VCID Setting -//Address value - 0x30A2, 0x00, - 0x30F1, 0x01, -//PDAF TYPE2 data type Setting -//Address value - 0x30A3, 0x30, -//MIPI Global Timing Setting -//Address value - 0x084E, 0x00, - 0x084F, 0x09, - 0x0850, 0x00, - 0x0851, 0x09, - 0x0852, 0x00, - 0x0853, 0x0F, - 0x0854, 0x00, - 0x0855, 0x29, - 0x0858, 0x00, - 0x0859, 0x1F, -}; -unsigned short brzamain_seamless_custom2[] = { - 0x0342, 0x1D, - 0x0343, 0x4C, - 0x3851, 0xCD, - 0x0340, 0x13, - 0x0341, 0x0C, - 0x0344, 0x00, - 0x0346, 0x00, - 0x0348, 0x1F, - 0x034A, 0x17, - 0x0900, 0x01, - 0x0901, 0x22, - 0x3005, 0x02, - 0x3006, 0x02, - 0x3148, 0x04, - 0x31C0, 0x41, - 0x31C1, 0x41, - 0x38A1, 0xB4, - 0x38A3, 0xE8, - 0x38A9, 0x38, - 0x38AB, 0x6A, - 0x38D0, 0x0B, - 0x38D1, 0x04, - 0x38D2, 0x08, - 0x38D3, 0xB0, - 0x3B00, 0x08, - 0x3B01, 0x8E, - 0x3B05, 0x88, - 0x0204, 0x13, - 0x0205, 0x34, -}; -unsigned short brzamain_seamless_custom5[] = { - 0x0342, 0x23, - 0x0343, 0x00, - 0x3851, 0xF6, - 0x0340, 0x0F, - 0x0341, 0xE0, - 0x0344, 0x08, - 0x0346, 0x06, - 0x0348, 0x17, - 0x034A, 0x11, - 0x0900, 0x00, - 0x0901, 0x11, - 0x3005, 0x00, - 0x3006, 0x00, - 0x3148, 0x00, - 0x31C0, 0x01, - 0x31C1, 0x01, - 0x38A1, 0x00, - 0x38A3, 0x00, - 0x38A9, 0x00, - 0x38AB, 0x00, - 0x38D0, 0x03, - 0x38D1, 0x52, - 0x38D2, 0x03, - 0x38D3, 0x52, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B05, 0x00, - 0x0204, 0x00, - 0x0205, 0x00, -}; - -unsigned short brzamain_seamless_preview[] = { - 0x0342, 0x1D, - 0x0343, 0x4C, - 0x3851, 0xCD, - 0x0340, 0x0F, - 0x0341, 0x3C, - 0x0344, 0x00, - 0x0346, 0x00, - 0x0348, 0x1F, - 0x034A, 0x17, - 0x0900, 0x01, - 0x0901, 0x22, - 0x3005, 0x02, - 0x3006, 0x02, - 0x3148, 0x04, - 0x31C0, 0x41, - 0x31C1, 0x41, - 0x38A1, 0xB4, - 0x38A3, 0xE8, - 0x38A9, 0x38, - 0x38AB, 0x6A, - 0x38D0, 0x0B, - 0x38D1, 0x04, - 0x38D2, 0x08, - 0x38D3, 0xB0, - 0x3B00, 0x08, - 0x3B01, 0x8E, - 0x3B05, 0x88, - 0x0204, 0x13, - 0x0205, 0x34, -}; - -unsigned short brzamain_seamless_custom4[] = { - 0x0342, 0x23, - 0x0343, 0x00, - 0x3851, 0xF6, - 0x0340, 0x0C, - 0x0341, 0xB4, - 0x0344, 0x08, - 0x0346, 0x06, - 0x0348, 0x17, - 0x034A, 0x11, - 0x0900, 0x00, - 0x0901, 0x11, - 0x3005, 0x00, - 0x3006, 0x00, - 0x3148, 0x00, - 0x31C0, 0x01, - 0x31C1, 0x01, - 0x38A1, 0x00, - 0x38A3, 0x00, - 0x38A9, 0x00, - 0x38AB, 0x00, - 0x38D0, 0x03, - 0x38D1, 0x52, - 0x38D2, 0x03, - 0x38D3, 0x52, - 0x3B00, 0x00, - 0x3B01, 0x00, - 0x3B05, 0x00, - 0x0204, 0x00, - 0x0205, 0x00, -}; -#endif diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamain_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamain_ana_gain_table.h deleted file mode 100755 index 61234a25..00000000 --- a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamain_ana_gain_table.h +++ /dev/null @@ -1,1907 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * Copyright (c) 2019 MediaTek Inc. - */ -/***************************************************************************** - * - * Filename: - * --------- - * brzamain_ana_gain_table.h - * - * Project: - * -------- - * Description: - * ------------ - * Analog Gain Table - * - ****************************************************************************/ -#ifndef __BRZAMAIN_ANA_GAIN_TABLE_H__ -#define __BRZAMAIN_ANA_GAIN_TABLE_H__ - -#include "kd_camera_typedef.h" - -static kal_uint32 brzamain_ana_gain_table[] = { - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1037, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1050, - 1051, - 1052, - 1053, - 1054, - 1055, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1069, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1081, - 1082, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1099, - 1100, - 1101, - 1102, - 1103, - 1104, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1113, - 1114, - 1115, - 1116, - 1117, - 1119, - 1120, - 1121, - 1122, - 1123, - 1125, - 1126, - 1127, - 1128, - 1129, - 1131, - 1132, - 1133, - 1134, - 1136, - 1137, - 1138, - 1139, - 1140, - 1142, - 1143, - 1144, - 1145, - 1147, - 1148, - 1149, - 1151, - 1152, - 1153, - 1154, - 1156, - 1157, - 1158, - 1159, - 1161, - 1162, - 1163, - 1165, - 1166, - 1167, - 1168, - 1170, - 1171, - 1172, - 1174, - 1175, - 1176, - 1178, - 1179, - 1180, - 1182, - 1183, - 1184, - 1186, - 1187, - 1188, - 1190, - 1191, - 1192, - 1194, - 1195, - 1197, - 1198, - 1199, - 1201, - 1202, - 1203, - 1205, - 1206, - 1208, - 1209, - 1210, - 1212, - 1213, - 1215, - 1216, - 1217, - 1219, - 1220, - 1222, - 1223, - 1224, - 1226, - 1227, - 1229, - 1230, - 1232, - 1233, - 1235, - 1236, - 1237, - 1239, - 1240, - 1242, - 1243, - 1245, - 1246, - 1248, - 1249, - 1251, - 1252, - 1254, - 1255, - 1257, - 1258, - 1260, - 1261, - 1263, - 1264, - 1266, - 1267, - 1269, - 1270, - 1272, - 1274, - 1275, - 1277, - 1278, - 1280, - 1281, - 1283, - 1285, - 1286, - 1288, - 1289, - 1291, - 1292, - 1294, - 1296, - 1297, - 1299, - 1300, - 1302, - 1304, - 1305, - 1307, - 1309, - 1310, - 1312, - 1314, - 1315, - 1317, - 1318, - 1320, - 1322, - 1323, - 1325, - 1327, - 1328, - 1330, - 1332, - 1334, - 1335, - 1337, - 1339, - 1340, - 1342, - 1344, - 1346, - 1347, - 1349, - 1351, - 1353, - 1354, - 1356, - 1358, - 1360, - 1361, - 1363, - 1365, - 1367, - 1368, - 1370, - 1372, - 1374, - 1376, - 1377, - 1379, - 1381, - 1383, - 1385, - 1387, - 1388, - 1390, - 1392, - 1394, - 1396, - 1398, - 1399, - 1401, - 1403, - 1405, - 1407, - 1409, - 1411, - 1413, - 1415, - 1416, - 1418, - 1420, - 1422, - 1424, - 1426, - 1428, - 1430, - 1432, - 1434, - 1436, - 1438, - 1440, - 1442, - 1444, - 1446, - 1448, - 1450, - 1452, - 1454, - 1456, - 1458, - 1460, - 1462, - 1464, - 1466, - 1468, - 1470, - 1472, - 1474, - 1476, - 1478, - 1481, - 1483, - 1485, - 1487, - 1489, - 1491, - 1493, - 1495, - 1497, - 1500, - 1502, - 1504, - 1506, - 1508, - 1510, - 1513, - 1515, - 1517, - 1519, - 1521, - 1524, - 1526, - 1528, - 1530, - 1533, - 1535, - 1537, - 1539, - 1542, - 1544, - 1546, - 1548, - 1551, - 1553, - 1555, - 1558, - 1560, - 1562, - 1565, - 1567, - 1569, - 1572, - 1574, - 1576, - 1579, - 1581, - 1583, - 1586, - 1588, - 1591, - 1593, - 1596, - 1598, - 1600, - 1603, - 1605, - 1608, - 1610, - 1613, - 1615, - 1618, - 1620, - 1623, - 1625, - 1628, - 1630, - 1633, - 1635, - 1638, - 1640, - 1643, - 1646, - 1648, - 1651, - 1653, - 1656, - 1659, - 1661, - 1664, - 1667, - 1669, - 1672, - 1675, - 1677, - 1680, - 1683, - 1685, - 1688, - 1691, - 1693, - 1696, - 1699, - 1702, - 1705, - 1707, - 1710, - 1713, - 1716, - 1718, - 1721, - 1724, - 1727, - 1730, - 1733, - 1736, - 1738, - 1741, - 1744, - 1747, - 1750, - 1753, - 1756, - 1759, - 1762, - 1765, - 1768, - 1771, - 1774, - 1777, - 1780, - 1783, - 1786, - 1789, - 1792, - 1795, - 1798, - 1801, - 1804, - 1807, - 1811, - 1814, - 1817, - 1820, - 1823, - 1826, - 1829, - 1833, - 1836, - 1839, - 1842, - 1846, - 1849, - 1852, - 1855, - 1859, - 1862, - 1865, - 1869, - 1872, - 1875, - 1879, - 1882, - 1885, - 1889, - 1892, - 1896, - 1899, - 1903, - 1906, - 1909, - 1913, - 1916, - 1920, - 1923, - 1927, - 1931, - 1934, - 1938, - 1941, - 1945, - 1949, - 1952, - 1956, - 1959, - 1963, - 1967, - 1971, - 1974, - 1978, - 1982, - 1985, - 1989, - 1993, - 1997, - 2001, - 2004, - 2008, - 2012, - 2016, - 2020, - 2024, - 2028, - 2032, - 2036, - 2040, - 2044, - 2048, - 2052, - 2056, - 2060, - 2064, - 2068, - 2072, - 2076, - 2080, - 2084, - 2088, - 2092, - 2097, - 2101, - 2105, - 2109, - 2114, - 2118, - 2122, - 2126, - 2131, - 2135, - 2139, - 2144, - 2148, - 2153, - 2157, - 2162, - 2166, - 2170, - 2175, - 2179, - 2184, - 2189, - 2193, - 2198, - 2202, - 2207, - 2212, - 2216, - 2221, - 2226, - 2231, - 2235, - 2240, - 2245, - 2250, - 2255, - 2259, - 2264, - 2269, - 2274, - 2279, - 2284, - 2289, - 2294, - 2299, - 2304, - 2309, - 2314, - 2319, - 2325, - 2330, - 2335, - 2340, - 2345, - 2351, - 2356, - 2361, - 2366, - 2372, - 2377, - 2383, - 2388, - 2394, - 2399, - 2404, - 2410, - 2416, - 2421, - 2427, - 2432, - 2438, - 2444, - 2449, - 2455, - 2461, - 2467, - 2473, - 2478, - 2484, - 2490, - 2496, - 2502, - 2508, - 2514, - 2520, - 2526, - 2532, - 2538, - 2545, - 2551, - 2557, - 2563, - 2570, - 2576, - 2582, - 2589, - 2595, - 2601, - 2608, - 2614, - 2621, - 2628, - 2634, - 2641, - 2647, - 2654, - 2661, - 2668, - 2674, - 2681, - 2688, - 2695, - 2702, - 2709, - 2716, - 2723, - 2730, - 2737, - 2744, - 2752, - 2759, - 2766, - 2774, - 2781, - 2788, - 2796, - 2803, - 2811, - 2818, - 2826, - 2833, - 2841, - 2849, - 2857, - 2864, - 2872, - 2880, - 2888, - 2896, - 2904, - 2912, - 2920, - 2928, - 2937, - 2945, - 2953, - 2962, - 2970, - 2978, - 2987, - 2995, - 3004, - 3013, - 3021, - 3030, - 3039, - 3048, - 3057, - 3066, - 3075, - 3084, - 3093, - 3102, - 3111, - 3120, - 3130, - 3139, - 3148, - 3158, - 3167, - 3177, - 3187, - 3196, - 3206, - 3216, - 3226, - 3236, - 3246, - 3256, - 3266, - 3276, - 3287, - 3297, - 3307, - 3318, - 3328, - 3339, - 3350, - 3360, - 3371, - 3382, - 3393, - 3404, - 3415, - 3426, - 3437, - 3449, - 3460, - 3472, - 3483, - 3495, - 3506, - 3518, - 3530, - 3542, - 3554, - 3566, - 3578, - 3591, - 3603, - 3615, - 3628, - 3640, - 3653, - 3666, - 3679, - 3692, - 3705, - 3718, - 3731, - 3744, - 3758, - 3771, - 3785, - 3799, - 3813, - 3826, - 3840, - 3855, - 3869, - 3883, - 3898, - 3912, - 3927, - 3942, - 3956, - 3971, - 3986, - 4002, - 4017, - 4032, - 4048, - 4064, - 4080, - 4096, - 4112, - 4128, - 4144, - 4161, - 4177, - 4194, - 4211, - 4228, - 4245, - 4262, - 4279, - 4297, - 4315, - 4332, - 4350, - 4369, - 4387, - 4405, - 4424, - 4443, - 4462, - 4481, - 4500, - 4519, - 4539, - 4559, - 4578, - 4599, - 4619, - 4639, - 4660, - 4681, - 4702, - 4723, - 4744, - 4766, - 4788, - 4809, - 4832, - 4854, - 4877, - 4899, - 4922, - 4946, - 4969, - 4993, - 5017, - 5041, - 5065, - 5090, - 5115, - 5140, - 5165, - 5190, - 5216, - 5242, - 5269, - 5295, - 5322, - 5349, - 5377, - 5405, - 5433, - 5461, - 5489, - 5518, - 5548, - 5577, - 5607, - 5637, - 5667, - 5698, - 5729, - 5761, - 5793, - 5825, - 5857, - 5890, - 5924, - 5957, - 5991, - 6026, - 6061, - 6096, - 6132, - 6168, - 6204, - 6241, - 6278, - 6316, - 6355, - 6393, - 6432, - 6472, - 6512, - 6553, - 6594, - 6636, - 6678, - 6721, - 6765, - 6808, - 6853, - 6898, - 6944, - 6990, - 7037, - 7084, - 7133, - 7182, - 7231, - 7281, - 7332, - 7384, - 7436, - 7489, - 7543, - 7598, - 7653, - 7710, - 7767, - 7825, - 7884, - 7943, - 8004, - 8065, - 8128, - 8192, - 8256, - 8322, - 8388, - 8456, - 8525, - 8594, - 8665, - 8738, - 8811, - 8886, - 8962, - 9039, - 9118, - 9198, - 9279, - 9362, - 9446, - 9532, - 9619, - 9709, - 9799, - 9892, - 9986, - 10082, - 10180, - 10280, - 10381, - 10485, - 10591, - 10699, - 10810, - 10922, - 11037, - 11155, - 11275, - 11397, - 11522, - 11650, - 11781, - 11915, - 12052, - 12192, - 12336, - 12483, - 12633, - 12787, - 12945, - 13107, - 13273, - 13443, - 13617, - 13797, - 13981, - 14169, - 14364, - 14563, - 14768, - 14979, - 15196, - 15420, - 15650, - 15887, - 16131, - 16384, - 16644, - 16912, - 17189, - 17476, - 17772, - 18078, - 18396, - 18724, - 19065, - 19418, - 19784, - 20164, - 20560, - 20971, - 21399, - 21845, - 22310, - 22795, - 23301, - 23831, - 24385, - 24966, - 25575, - 26214, - 26886, - 27594, - 28339, - 29127, - 29959, - 30840, - 31775, - 32768, - 33825, - 34952, - 36157, - 37449, - 38836, - 40329, - 41943, - 43690, - 45590, - 47662, - 49932, - 52428, - 55188, - 58254, - 61680, - 65536, - 65536, -}; - -#define BRZAMAIN_GAIN_TABLE_SIZE 432 -static kal_uint32 brzamain_gain_table[BRZAMAIN_GAIN_TABLE_SIZE] = { - 1024, - 1040, - 1056, - 1072, - 1088, - 1104, - 1120, - 1136, - 1152, - 1168, - 1184, - 1200, - 1216, - 1232, - 1248, - 1264, - 1280, - 1296, - 1312, - 1328, - 1344, - 1360, - 1376, - 1392, - 1408, - 1424, - 1440, - 1456, - 1472, - 1488, - 1504, - 1520, - 1536, - 1552, - 1568, - 1584, - 1600, - 1616, - 1632, - 1648, - 1664, - 1680, - 1696, - 1712, - 1728, - 1744, - 1760, - 1776, - 1792, - 1808, - 1824, - 1840, - 1856, - 1872, - 1888, - 1904, - 1920, - 1936, - 1952, - 1968, - 1984, - 2000, - 2016, - 2032, - 2048, - 2064, - 2080, - 2096, - 2112, - 2128, - 2144, - 2160, - 2176, - 2192, - 2208, - 2224, - 2240, - 2256, - 2272, - 2288, - 2304, - 2320, - 2336, - 2352, - 2368, - 2384, - 2400, - 2416, - 2432, - 2448, - 2464, - 2480, - 2496, - 2512, - 2528, - 2544, - 2560, - 2576, - 2592, - 2608, - 2624, - 2640, - 2656, - 2672, - 2688, - 2704, - 2720, - 2736, - 2752, - 2768, - 2784, - 2800, - 2816, - 2832, - 2848, - 2864, - 2880, - 2896, - 2912, - 2928, - 2944, - 2960, - 2976, - 2992, - 3008, - 3024, - 3040, - 3056, - 3072, - 3088, - 3104, - 3120, - 3136, - 3152, - 3168, - 3184, - 3200, - 3216, - 3232, - 3248, - 3264, - 3280, - 3296, - 3312, - 3328, - 3344, - 3360, - 3376, - 3392, - 3408, - 3424, - 3440, - 3456, - 3472, - 3488, - 3504, - 3520, - 3536, - 3552, - 3568, - 3584, - 3600, - 3616, - 3632, - 3648, - 3664, - 3680, - 3696, - 3712, - 3728, - 3744, - 3760, - 3776, - 3792, - 3808, - 3824, - 3840, - 3856, - 3872, - 3888, - 3904, - 3920, - 3936, - 3952, - 3968, - 3984, - 4000, - 4016, - 4032, - 4048, - 4064, - 4080, - 4096, - 4112, - 4128, - 4144, - 4160, - 4176, - 4192, - 4208, - 4224, - 4240, - 4256, - 4272, - 4288, - 4304, - 4320, - 4336, - 4368, - 4384, - 4400, - 4416, - 4432, - 4448, - 4480, - 4496, - 4512, - 4528, - 4544, - 4576, - 4592, - 4608, - 4624, - 4656, - 4672, - 4688, - 4720, - 4736, - 4752, - 4784, - 4800, - 4832, - 4848, - 4864, - 4896, - 4912, - 4944, - 4960, - 4992, - 5008, - 5040, - 5088, - 5104, - 5136, - 5152, - 5184, - 5216, - 5232, - 5264, - 5280, - 5312, - 5344, - 5376, - 5392, - 5424, - 5456, - 5488, - 5504, - 5536, - 5568, - 5600, - 5632, - 5664, - 5696, - 5728, - 5760, - 5792, - 5824, - 5856, - 5888, - 5920, - 5952, - 5984, - 6016, - 6048, - 6096, - 6128, - 6160, - 6192, - 6240, - 6272, - 6304, - 6352, - 6384, - 6432, - 6464, - 6512, - 6544, - 6592, - 6624, - 6672, - 6720, - 6752, - 6800, - 6848, - 6896, - 6944, - 6976, - 7024, - 7072, - 7120, - 7168, - 7216, - 7280, - 7328, - 7376, - 7424, - 7488, - 7536, - 7584, - 7648, - 7696, - 7760, - 7824, - 7872, - 7936, - 8000, - 8064, - 8128, - 8192, - 8256, - 8320, - 8384, - 8448, - 8512, - 8592, - 8656, - 8736, - 8800, - 8880, - 8960, - 9024, - 9104, - 9184, - 9264, - 9360, - 9440, - 9520, - 9616, - 9696, - 9792, - 9888, - 9984, - 10080, - 10176, - 10272, - 10368, - 10480, - 10576, - 10688, - 10800, - 10912, - 11024, - 11152, - 11264, - 11392, - 11520, - 11648, - 11776, - 11904, - 12048, - 12192, - 12336, - 12480, - 12624, - 12784, - 12944, - 13104, - 13264, - 13440, - 13616, - 13792, - 13968, - 14160, - 14352, - 14560, - 14768, - 14976, - 15184, - 15408, - 15648, - 15872, - 16128, - 16384, - 16640, - 16912, - 17184, - 17472, - 17760, - 18064, - 18384, - 18720, - 19056, - 19408, - 19776, - 20160, - 20560, - 20960, - 21392, - 21840, - 22304, - 22784, - 23296, - 23824, - 24384, - 24960, - 25568, - 26208, - 26880, - 27584, - 28336, - 29120, - 29952, - 30832, - 31760, - 32768, - 33824, - 34944, - 36144, - 37440, - 38832, - 40320, - 41936, - 43680, - 45584, - 47648, - 49920, - 52416, - 55184, - 58240, - 61680, - 65536, -}; - -static kal_uint16 brzamain_gain_reg[BRZAMAIN_GAIN_TABLE_SIZE] = { - 0, - 240, - 496, - 720, - 944, - 1168, - 1392, - 1616, - 1808, - 2000, - 2192, - 2384, - 2576, - 2768, - 2928, - 3088, - 3280, - 3408, - 3568, - 3728, - 3888, - 4048, - 4176, - 4304, - 4464, - 4592, - 4720, - 4848, - 4976, - 5104, - 5200, - 5328, - 5456, - 5552, - 5680, - 5776, - 5872, - 6000, - 6096, - 6192, - 6288, - 6384, - 6480, - 6576, - 6672, - 6736, - 6832, - 6928, - 7024, - 7088, - 7184, - 7248, - 7344, - 7408, - 7472, - 7568, - 7632, - 7696, - 7760, - 7856, - 7920, - 7984, - 8048, - 8112, - 8192, - 8240, - 8304, - 8368, - 8432, - 8496, - 8544, - 8608, - 8672, - 8720, - 8784, - 8832, - 8880, - 8944, - 8992, - 9040, - 9088, - 9152, - 9200, - 9248, - 9296, - 9344, - 9392, - 9440, - 9472, - 9520, - 9568, - 9616, - 9648, - 9696, - 9744, - 9776, - 9824, - 9856, - 9904, - 9936, - 9984, - 10016, - 10064, - 10096, - 10128, - 10176, - 10208, - 10240, - 10272, - 10320, - 10352, - 10384, - 10416, - 10448, - 10480, - 10512, - 10544, - 10576, - 10608, - 10640, - 10672, - 10704, - 10736, - 10768, - 10800, - 10832, - 10864, - 10880, - 10912, - 10944, - 10976, - 10992, - 11024, - 11056, - 11072, - 11104, - 11136, - 11152, - 11184, - 11216, - 11232, - 11264, - 11280, - 11312, - 11328, - 11360, - 11376, - 11408, - 11424, - 11456, - 11472, - 11504, - 11520, - 11536, - 11568, - 11584, - 11616, - 11632, - 11648, - 11680, - 11696, - 11712, - 11744, - 11760, - 11776, - 11792, - 11824, - 11840, - 11856, - 11872, - 11888, - 11920, - 11936, - 11952, - 11968, - 11984, - 12000, - 12032, - 12048, - 12064, - 12080, - 12096, - 12128, - 12144, - 12160, - 12176, - 12192, - 12208, - 12224, - 12240, - 12256, - 12272, - 12288, - 12304, - 12320, - 12336, - 12352, - 12368, - 12384, - 12400, - 12416, - 12432, - 12448, - 12464, - 12480, - 12496, - 12512, - 12528, - 12544, - 12560, - 12576, - 12592, - 12608, - 12624, - 12640, - 12656, - 12672, - 12688, - 12704, - 12720, - 12736, - 12752, - 12768, - 12784, - 12800, - 12816, - 12832, - 12848, - 12864, - 12880, - 12896, - 12912, - 12928, - 12944, - 12960, - 12976, - 12992, - 13008, - 13024, - 13040, - 13056, - 13088, - 13104, - 13120, - 13136, - 13152, - 13168, - 13184, - 13200, - 13216, - 13232, - 13248, - 13264, - 13280, - 13296, - 13312, - 13328, - 13344, - 13360, - 13376, - 13392, - 13408, - 13424, - 13440, - 13456, - 13472, - 13488, - 13504, - 13520, - 13536, - 13552, - 13568, - 13584, - 13600, - 13616, - 13632, - 13648, - 13664, - 13680, - 13696, - 13712, - 13728, - 13744, - 13760, - 13776, - 13792, - 13808, - 13824, - 13840, - 13856, - 13872, - 13888, - 13904, - 13920, - 13936, - 13952, - 13968, - 13984, - 14000, - 14016, - 14032, - 14048, - 14064, - 14080, - 14096, - 14112, - 14128, - 14144, - 14160, - 14176, - 14192, - 14208, - 14224, - 14240, - 14256, - 14272, - 14288, - 14304, - 14320, - 14336, - 14352, - 14368, - 14384, - 14400, - 14416, - 14432, - 14448, - 14464, - 14480, - 14496, - 14512, - 14528, - 14544, - 14560, - 14576, - 14592, - 14608, - 14624, - 14640, - 14656, - 14672, - 14688, - 14704, - 14720, - 14736, - 14752, - 14768, - 14784, - 14800, - 14816, - 14832, - 14848, - 14864, - 14880, - 14896, - 14912, - 14928, - 14944, - 14960, - 14976, - 14992, - 15008, - 15024, - 15040, - 15056, - 15072, - 15088, - 15104, - 15120, - 15136, - 15152, - 15168, - 15184, - 15200, - 15216, - 15232, - 15248, - 15264, - 15280, - 15296, - 15312, - 15328, - 15344, - 15360, - 15376, - 15392, - 15408, - 15424, - 15440, - 15456, - 15472, - 15488, - 15504, - 15520, - 15536, - 15552, - 15568, - 15584, - 15600, - 15616, - 15632, - 15648, - 15664, - 15680, - 15696, - 15712, - 15728, - 15744, - 15760, - 15776, - 15792, - 15808, - 15824, - 15840, - 15856, - 15872, - 15888, - 15904, - 15920, - 15936, - 15952, - 15968, - 15984, - 16000, - 16016, - 16032, - 16048, - 16064, - 16080, - 16096, - 16112, - 16128, -}; - -#endif diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamainmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamainmipiraw_Sensor.c deleted file mode 100755 index e9ebaa01..00000000 --- a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamainmipiraw_Sensor.c +++ /dev/null @@ -1,2441 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (c) 2022 MediaTek Inc. - -/***************************************************************************** - * - * Filename: - * --------- - * caymanamainmipiraw_Sensor.c - * - * Project: - * -------- - * ALPS - * - * Description: - * ------------ - * Source code of Sensor driver - * - * - *------------------------------------------------------------------------------ - * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!! - *============================================================================ - ****************************************************************************/ -#include "brzamainmipiraw_Sensor.h" - -#define BRZAMAIN_EEPROM_READ_ID 0xA1 -#define BRZAMAIN_EEPROM_WRITE_ID 0xA0 -#define BRZAMAIN_MAX_OFFSET 0x8000 -#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40 -#define PFX "brzamain_camera_sensor" -#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args) -#define OTP_SIZE 0x8000 - -#define OTP_QSC_VALID_ADDR 0x2E10 -#define QSC_IS_VALID_VAL 0x01 -#define SENSOR_QSC_ENABLE_REG 0x3206 - -#define OTP_PDC_VALID_ADDR 0x2FA0 -#define SPC_IS_VALID_VAL 0x01 -#define SPC_OTP_ADDR_PART1 0xD200 -#define SPC_OTP_ADDR_PART2 0xD300 - -//#define BRZAMAIN_UNIQUE_SENSOR_ID 0x0A1F -//#define BRZAMAIN_UNIQUE_SENSOR_ID_LENGHT 11 - -static kal_uint8 otp_data_checksum[OTP_SIZE] = {0}; -static void set_sensor_cali(void *arg); -static int get_sensor_temperature(void *arg); -static void set_group_hold(void *arg, u8 en); -static u16 get_gain2reg(u32 gain); -static int brzamain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len); -static int brzamain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len); -static int brzamain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len); -static int brzamain_get_sensor_sn(struct subdrv_ctx *ctx, u8 *para, u32 *len); -static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len); -static int brzamain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len); -static int brzamain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len); -static int brzamain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len); -//static void brzamain_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len); -static int brzamain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len); -static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id); -static int open(struct subdrv_ctx *ctx); -static int init_ctx(struct subdrv_ctx *ctx, struct i2c_client *i2c_client, u8 i2c_write_id); -static int vsync_notify(struct subdrv_ctx *ctx, unsigned int sof_cnt); -static int brzamain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len); -static void get_sensor_cali(void* arg); -static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr, - BYTE *data, int size); -/* STRUCT */ - -static BYTE brzamain_common_data[OPLUS_CAMERA_COMMON_DATA_LENGTH] = { 0 }; -//static BYTE brzamain_unique_id[BRZAMAIN_UNIQUE_SENSOR_ID_LENGHT] = { 0 }; - -/* Normal(Qbin) to Normal(Qbin) */ -/* Normal(Qbin) to 2DOL(Qbin) */ -static void comp_mode_tran_time_cal1(struct subdrv_ctx *ctx, u32 pre_scenario_id, u32* prsh); -typedef void (*cal_comp_mode_tran_time)(struct subdrv_ctx *ctx, u32 pre_scenario_id, u32* prsh); -struct comp_mode_tran_time_params { - u8 enable; - u32 clock_vtpxck; - cal_comp_mode_tran_time cal_fn; -}; -static struct comp_mode_tran_time_params brzamain_comp_params[SENSOR_SCENARIO_ID_MAX] = { - { .enable = 0, }, /*pre*/ - { .enable = 1, .clock_vtpxck = 1884, .cal_fn = comp_mode_tran_time_cal1, }, /*cap*/ - { .enable = 0, }, /*vid*/ - { .enable = 0, }, /*hvid*/ - { .enable = 0, }, /*svid*/ - { .enable = 0, }, /*cus1*/ - { .enable = 0, }, /*cus2*/ - { .enable = 0, }, /*csu3*/ - { .enable = 0, }, /*cus4*/ - { .enable = 0, }, /*cus5*/ - { .enable = 0, }, /*cus6*/ - { .enable = 1, .clock_vtpxck = 1404, .cal_fn = comp_mode_tran_time_cal1, }, /*cus7*/ - { .enable = 0, }, /*cus8*/ - { .enable = 0, }, /*cus9*/ - { .enable = 0, }, /*cus10*/ - { .enable = 0, }, /*cus11*/ - { .enable = 0, }, /*cus12*/ - { .enable = 0, }, /*cus13*/ -}; - -static struct eeprom_map_info brzamain_eeprom_info[] = { - { EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true }, - { EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true }, - { EEPROM_META_LENS_ID, 0x0008,0x0010, 0x0011, 2, true }, - { EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true }, - { EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true }, - { EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8,23, true }, - { EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true }, - { EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true }, - { EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0x0000, false }, - { EEPROM_META_STEREO_MW_MAIN_DATA, 0x2FBA, 0xFFFF, 0xFFFF, CALI_DATA_MASTER_LENGTH, false }, - { EEPROM_META_STEREO_MT_MAIN_DATA, 0x3655, 0xFFFF, 0xFFFF, CALI_DATA_MASTER_LENGTH, false } -}; - -static struct subdrv_feature_control feature_control_list[] = { - {SENSOR_FEATURE_SET_TEST_PATTERN, brzamain_set_test_pattern}, - {SENSOR_FEATURE_SEAMLESS_SWITCH, brzamain_seamless_switch}, - {SENSOR_FEATURE_CHECK_SENSOR_ID, brzamain_check_sensor_id}, - {SENSOR_FEATURE_GET_EEPROM_DATA, brzamain_get_sensor_sn}, - {SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data}, - {SENSOR_FEATURE_SET_SENSOR_OTP, brzamain_set_eeprom_calibration}, - {SENSOR_FEATURE_GET_EEPROM_STEREODATA, brzamain_get_eeprom_calibration}, - {SENSOR_FEATURE_GET_SENSOR_OTP_ALL, brzamain_get_otp_checksum_data}, - //{SENSOR_FEATURE_GET_UNIQUE_SENSORID, brzamain_get_unique_sensorid}, - {SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, brzamain_get_min_shutter_by_scenario_adapter}, - {SENSOR_FEATURE_SET_AWB_GAIN, brzamain_set_awb_gain}, -}; - -static struct eeprom_info_struct eeprom_info[] = { - { - .header_id = 0x016B012B, - .addr_header_id = 0x00000006, - .i2c_write_id = 0xA0, - - .lrc_support = TRUE, - .lrc_size = 384, - .addr_lrc = 0x2220, - .sensor_reg_addr_lrc = 0xC800, // useless - - .qsc_support = TRUE, - .qsc_size = 3072, - .addr_qsc = 0x2210, //QSC_EEPROM_ADDR - .sensor_reg_addr_qsc = 0xC000, //QSC_OTP_ADDR - - .pdc_support = TRUE, - .pdc_size = 384, - .addr_pdc = 0x2E20, //SPC_EEPROM_ADDR - }, -}; - -static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = { - .i4OffsetX = 0, - .i4OffsetY = 0, - .i4PitchX = 0, - .i4PitchY = 0, - .i4PairNum = 0, - .i4SubBlkW = 0, - .i4SubBlkH = 0, - .i4PosL = {{0, 0} }, - .i4PosR = {{0, 0} }, - .i4BlockNumX = 0, - .i4BlockNumY = 0, - .i4LeFirst = 0, - .i4Crop = { - /*
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 384}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*     */
-		{128, 456}, {128, 456}, {0, 384}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 0,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-		/*      */
-		{0, 384}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*     */
-		{128, 456}, {128, 456}, {0, 384}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 0,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 384}, {0, 0}, {0, 0}, {2048, 1536}, {2048, 1536},
-		/*     */
-		{128, 456}, {128, 456}, {0, 384}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 0,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 2,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_partial_pd_info = {
-	.i4OffsetX = 16,
-	.i4OffsetY = 32,
-	.i4PitchX = 8,
-	.i4PitchY = 16,
-	.i4PairNum = 4,
-	.i4SubBlkW = 8,
-	.i4SubBlkH = 4,
-	.i4PosL = {{16, 35}, {20, 37}, {19, 42}, {23, 44}},
-	.i4PosR = {{18, 33}, {22, 39}, {17, 40}, {21, 46}},
-	.i4BlockNumX = 496,
-	.i4BlockNumY = 144,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}
-	},
-	.iMirrorFlip = 0,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4ModeIndex = 0,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	/* VC's PD pattern description */
-	.sPDMapInfo[0] = {
-		.i4VCFeature = VC_PDAF_STATS_NE_PIX_1,
-		.i4PDPattern = 3,
-		.i4PDRepetition = 4,
-		.i4PDOrder = {0, 1, 1, 0}, /*R = 1, L = 0*/
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,//4096
-			.vsize = 0x0300,//768
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,//4096
-			.vsize = 0x0c00,//3072
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,//4096
-			.vsize = 0x0300,//768
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,//4096
-			.vsize = 0x0900,//2304
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	// partial pd
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 496,
-			.vsize = 1152,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-    // partial pd
-	{
-	    .bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 496,
-			.vsize = 1152,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	/*{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},*/
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,//4096
-			.vsize = 3072,//768
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,//4096
-			.vsize = 1536,//768
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 4096,
-            .vsize = 3072,
-            .user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-        },
-    },
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x30,
-            .hsize = 2048,
-            .vsize = 1536,
-            .user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-            .dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-        },
-    },
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3840,
-            .vsize = 2160,
-            .user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-        },
-    },
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x30,
-            .hsize = 3840,
-            .vsize = 540,
-            .user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-            .dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-        },
-    },
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3840,
-			.vsize = 2160,
-			.user_data_desc = VC_RAW_PROCESSED_DATA,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 480,
-			.vsize = 1072,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2c,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_RAW_PROCESSED_DATA,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-    // partial pd
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 512,
-			.vsize = 1504,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-static struct subdrv_mode_struct mode_struct[] = {
-	{/*Reg_A_QBIN(VBIN)_4096x3072_30FPS with PDAF VB_max*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = brzamain_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzamain_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzamain_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 3900,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1029260000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,//cc
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{/*Reg_A_QBIN(VBIN)_4096x3072_30FPS with PDAF VB_max*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = brzamain_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 3900,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1029260000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,//cc
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = UNUSE_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = brzamain_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 700800000,
-		.linelength = 4616,
-		.framelength = 5031,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 822860000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-//		.sensor_setting_info = {
-//		.sensor_scenario_usage = NORMAL_MASK,
-//		.equivalent_fps = 30,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = brzamain_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 700800000,
-		.linelength = 4616,
-		.framelength = 2515,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 822860000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-// 		.sensor_setting_info = {
-// 				.sensor_scenario_usage = NORMAL_MASK,
-// 				.equivalent_fps = 60,
-// 		},
-	},
-	{
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = brzamain_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 4024,
-		.framelength = 1816,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 741940000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 8,
-		.coarse_integ_step = 8,
-		.min_exposure_line = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 120,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = brzamain_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 2468,
-		.framelength = 1470,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 979200000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 8,
-		.coarse_integ_step = 8,
-		.min_exposure_line = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 240,
-//		},
-	},
-    {/*Reg_A-1_QBIN(VBIN)_4096x3072_24FPS with PDAF VB_max**/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = brzamain_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom2_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = brzamain_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzamain_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 4876,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 700110000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 24,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = brzamain_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 6504,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-		.awb_enabled = true,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = RMSC_MASK,
-//			.equivalent_fps = 15,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = brzamain_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzamain_seamless_custom4,
-		.seamless_switch_mode_setting_len =ARRAY_SIZE(brzamain_seamless_custom4),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 3252,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1029260000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1,//cc
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.pdc_enabled = TRUE,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.awb_enabled = true,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = INSENSORZOOM_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = brzamain_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom5_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = brzamain_seamless_custom5,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzamain_seamless_custom5),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 4064,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 700110000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.pdc_enabled = TRUE,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.awb_enabled = true,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = INSENSORZOOM_MASK,
-//			.equivalent_fps = 24,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = brzamain_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom6_setting),
-		.seamless_switch_group =PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len =PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 3252,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 662400000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 912,
-			.w0_size = 8192,
-			.h0_size = 4320,
-			.scale_w = 4096,
-			.scale_h = 2160,
-			.x1_offset = 128,
-			.y1_offset = 0,
-			.w1_size = 3840,
-			.h1_size = 2160,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3840,
-			.h2_tg_size = 2160,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = brzamain_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom7_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 4616,
-		.framelength = 3149,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 977830000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 912,
-			.w0_size = 8192,
-			.h0_size = 4320,
-			.scale_w = 4096,
-			.scale_h = 2160,
-			.x1_offset = 128,
-			.y1_offset = 0,
-			.w1_size = 3840,
-			.h1_size = 2160,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3840,
-			.h2_tg_size = 2160,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 60,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = brzamain_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2246400000,
-		.linelength = 15616,
-		.framelength = 4692,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 858510000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = UNUSE_MASK,
-//			.equivalent_fps = 0,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = brzamain_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 4616,
-		.framelength = 3149,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1029260000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = UNUSE_MASK,
-//			.equivalent_fps = 0,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = brzamain_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom10_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 210000000,
-		.linelength = 4024,
-		.framelength = 2168,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 342820000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 8,
-		.coarse_integ_step = 8,
-		.min_exposure_line = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 695,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 64,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 24,
-//		},
-	},
-    {/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = brzamain_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(brzamain_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 4064,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 700800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = INSENSORZOOM_MASK,
-//			.equivalent_fps = 24,
-//		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = BRZAMAIN_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},
-	.i2c_addr_table = {0x34, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_HV_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = brzamain_ana_gain_table,
-	.ana_gain_table_size = sizeof(brzamain_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 6,
-	.exposure_max = 128*(0xFFFC - 56), /* exposure reg is limited to 4x. max = max - margin */
-	.exposure_step = 4,
-	.exposure_margin = 56,
-	.dig_gain_min = BASE_DGAIN * 1,
-	.dig_gain_max = BASE_DGAIN * 16,
-	.dig_gain_step = 4,
-
-	.frame_length_max = 0xFFFC,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1000000,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0202, 0x0203},//Long exposure
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3160,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205},//Long Gian
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = 0x0138,
-	.reg_addr_temp_read = 0x013A,
-	.reg_addr_auto_extend = 0x0350,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_fast_mode = 0x3010,
-
-	.init_setting_table = brzamain_init_setting,
-	.init_setting_len = ARRAY_SIZE(brzamain_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xf10e5980,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_DVDD1, {1}, 2000},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_AVDD, {2800000,2800000}, 3000},
-	//{HW_ID_AVDD1, {1804000,1804000}, 3000},
-	{HW_ID_AFVDD, {2800000,2800000}, 3000},
-	{HW_ID_DVDD, {1104000,1104000}, 3000},
-	{HW_ID_DOVDD, {1800000,1800000}, 3000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-	{HW_ID_RST, {1}, 4000}
-};
-/*
-static struct subdrv_pw_seq_entry pw_off_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1804000,1804000}, 3000},
-	{HW_ID_PDN, {0}, 3000},
-	{HW_ID_AVDD, {2804000,2804000}, 3000},
-	{HW_ID_AVDD1, {1804000,1804000}, 3000},
-	{HW_ID_AFVDD, {3004000,1804000}, 3000},
-	{HW_ID_DVDD, {1160000,1160000}, 4000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-	{HW_ID_RST, {1}, 2000},
-};*/
-
-const struct subdrv_entry brzamain_mipi_raw_entry = {
-	.name = "brzamain_mipi_raw",
-	.id = BRZAMAIN_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-//	.pw_off_seq = pw_off_seq,
-//	.pw_off_seq_cnt = ARRAY_SIZE(pw_off_seq),
-	.ops = &ops,
-};
-
-
-/* FUNCTION */
-
-static unsigned int read_brzamain_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != brzamain_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != brzamain_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = brzamain_eeprom_info[meta_id].start;
-	readsize = brzamain_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct oplus_eeprom_info_struct* infoPtr;
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-
-	return 0;
-}
-
-static int brzamain_get_sensor_sn(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	memcpy(feature_return_para_32, brzamain_common_data,
-		OPLUS_CAMERA_COMMON_DATA_LENGTH);
-	*len = OPLUS_CAMERA_COMMON_DATA_LENGTH;
-	return 0;
-}
-
-/*
-static void brzamain_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	LOG_INF("get unique sensorid");
-	memcpy(feature_return_para_32, brzamain_unique_id,
-		BRZAMAIN_UNIQUE_SENSOR_ID_LENGHT);
-	LOG_INF("para :%x, get unique sensorid", *para);
-}
-*/
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, BRZAMAIN_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, BRZAMAIN_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xE000;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, BRZAMAIN_EEPROM_READ_ID >> 1, reg, (BRZAMAIN_EEPROM_WRITE_ID & 0xFE) | 0x01);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, BRZAMAIN_EEPROM_READ_ID >> 1, reg, BRZAMAIN_EEPROM_WRITE_ID & 0xFE);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == BRZAMAIN_SENSOR_ID) && (data_length == CALI_DATA_SLAVE_LENGTH)
-            && (data_base == BRZAMAIN_STEREO_START_ADDR )) {
-
-                return ERROR_NONE;
-           /* LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    // open write protect
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-            */
-        } else if ((pStereodata->uSensorId == BRZAMAIN_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == BRZAMAIN_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, BRZAMAIN_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, BRZAMAIN_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, BRZAMAIN_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, BRZAMAIN_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, BRZAMAIN_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, BRZAMAIN_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, BRZAMAIN_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, BRZAMAIN_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("brzamain write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int brzamain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        LOG_INF("ret=%d\n", ret);
-    }
-	return 0;
-}
-
-static int brzamain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    if(*len > CALI_DATA_MASTER_LENGTH)
-        *len = CALI_DATA_MASTER_LENGTH;
-    read_brzamain_eeprom_info(ctx, EEPROM_META_STEREO_DATA,
-            (BYTE *)para, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, BRZAMAIN_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "brzamain read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "brzamain read_otp_info end\n");
-}
-
-static int brzamain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int brzamain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x8206 || *sensor_id == 0x8202) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOG(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 brzamain_feedback_awbgain[] = {
-	0x0B8E, 0x01,
-	0x0B8F, 0x00,
-	0x0B90, 0x02,
-	0x0B91, 0x28,
-	0x0B92, 0x01,
-	0x0B93, 0x77,
-	0x0B94, 0x01,
-	0x0B95, 0x00,
-};
-
-/*write AWB gain to sensor*/
-static void feedback_awbgain(struct subdrv_ctx *ctx, kal_uint32 r_gain, kal_uint32 b_gain)
-{
-	UINT32 r_gain_int = 0;
-	UINT32 b_gain_int = 0;
-
-	DRV_LOG(ctx, "feedback_awbgain r_gain: %d, b_gain: %d\n", r_gain, b_gain);
-	r_gain_int = r_gain / 512;
-	b_gain_int = b_gain / 512;
-	brzamain_feedback_awbgain[5] = r_gain_int;
-	brzamain_feedback_awbgain[7] = (r_gain - r_gain_int * 512) / 2;
-	brzamain_feedback_awbgain[9] = b_gain_int;
-	brzamain_feedback_awbgain[11] = (b_gain - b_gain_int * 512) / 2;
-	subdrv_i2c_wr_regs_u8(ctx, brzamain_feedback_awbgain,
-		ARRAY_SIZE(brzamain_feedback_awbgain));
-}
-
-static int brzamain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-	feedback_awbgain(ctx, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B);
-	return 0;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	sensor_init(ctx);
-
-	/*QSC&SPC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, SENSOR_QSC_ENABLE_REG, 0x01);
-			DRV_LOG(ctx, "set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, SENSOR_QSC_ENABLE_REG, 0x00);
-		}
-	}
-
-	/* SPC data */
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			addr = SPC_OTP_ADDR_PART1;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = SPC_OTP_ADDR_PART2;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature <= 0x60)
-		temperature_convert = temperature;
-	else if (temperature >= 0x61 && temperature <= 0x7F)
-		temperature_convert = 97;
-	else if (temperature >= 0x80 && temperature <= 0xE2)
-		temperature_convert = -30;
-	else
-		temperature_convert = (char)temperature | 0xFFFFFF0;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	kal_uint16 reg_gain = 0x0;
-	reg_gain =  (16384 - (16384 * BASEGAIN) / gain);
-	reg_gain = round_up(reg_gain, 4);
-	return (kal_uint16) reg_gain;
-}
-
-void brzamain_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
- 	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-  		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-  			scenario_id, ctx->s_ctx.sensor_mode_num);
-  		scenario_id = 0;
-  	}
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-			switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-			case HDR_RAW_STAGGER:
-			case HDR_NONE:
-			case HDR_RAW_LBMF:
- 			case HDR_RAW_DCG_RAW:
-				if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-					ctx->s_ctx.mode[scenario_id].min_exposure_line) {
-					*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-					*min_shutter = ctx->s_ctx.mode[scenario_id].min_exposure_line;
-				} else {
-					*exposure_step = ctx->s_ctx.exposure_step;
-					*min_shutter = ctx->s_ctx.exposure_min;
-				}
-				break;
-			default:
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-				break;
-			}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int brzamain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	brzamain_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static int brzamain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-	update_mode_info(ctx, scenario_id);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		(ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF ||
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF))
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x4);
-
-	update_mode_info(ctx, scenario_id);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	DRV_LOG(ctx, "write seamless switch setting done\n");
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	common_get_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id, scenario_id);
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8)  & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int brzamain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode) {
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-		switch (mode) {
-		case 5:
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x00); /* dig_gain = 0 */
-			subdrv_i2c_wr_u8(ctx, 0x0218, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x3015, 0x00);
-			break;
-		default:
-			subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-			break;
-		}
-	} else if (ctx->test_pattern) {
-		subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /*No pattern*/
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x0218, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x3015, 0x40);
-	}
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, 0x3010, 0x00);
-		set_i2c_buffer(ctx, 0x3036, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-void get_sensor_cali(void* arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u8 qsc_is_valid = 0;
-	u8 pdc_is_valid = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		// Check QSC validation
-		qsc_is_valid = QSC_IS_VALID_VAL; //i2c_read_eeprom(ctx, OTP_QSC_VALID_ADDR);
-		if (qsc_is_valid != QSC_IS_VALID_VAL) {
-			DRV_LOGE(ctx, "QSC data is invalid, flag(%02x)", qsc_is_valid);
-		} else if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	/* SPC data */
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		pdc_is_valid = QSC_IS_VALID_VAL; //i2c_read_eeprom(ctx, OTP_PDC_VALID_ADDR);
-		if (pdc_is_valid != SPC_IS_VALID_VAL) {
-			DRV_LOGE(ctx, "SPC data is invalid, flag(%02x)", pdc_is_valid);
-		} else if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void comp_mode_tran_time_cal1(struct subdrv_ctx *ctx, u32 scenario_id, u32* prsh) {
-	#define SYSTEM_USED_LINES1 (96UL)
-	#define SYSTEM_DELAY1      (189UL)
-	u64 frame_duration = 0;
-	u64 data_delay = 0;
-	u64 system_delay = 0;
-	u64 current_tline = 0;
-	u64 tline = 0;
-
-	if (!prsh) {
-		DRV_LOGE(ctx, "prsh param is NULL");
-		return;
-	}
-
-	*prsh = 0U;
-	if (brzamain_comp_params[ctx->current_scenario_id].clock_vtpxck == 0) {
-		DRV_LOG(ctx, "invalid params");
-		return;
-	}
-
-	frame_duration = 1000000000UL / ctx->current_fps * 10;
-	current_tline = 1000000000UL * ctx->s_ctx.mode[ctx->current_scenario_id].linelength /
-		ctx->s_ctx.mode[ctx->current_scenario_id].pclk;
-	tline = 1000000000UL * ctx->s_ctx.mode[scenario_id].linelength /
-		ctx->s_ctx.mode[scenario_id].pclk;
-	data_delay = (ctx->s_ctx.mode[ctx->current_scenario_id].imgsensor_winsize_info.h2_tg_size +
-		SYSTEM_USED_LINES1) * current_tline;
-	system_delay = SYSTEM_DELAY1 * 1000 * 1000 * 10 /
-		brzamain_comp_params[ctx->current_scenario_id].clock_vtpxck;
-	if (frame_duration <= data_delay + system_delay) {
-		DRV_LOGE(ctx, "invalid parameter");
-		return;
-	}
-
-	*prsh = (frame_duration - data_delay - system_delay) / tline;
-	if (ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_STAGGER) {
-		*prsh = *prsh / 2;
-	}
-
-	DRV_LOG(ctx, "frame_duration(%llu), current_tline(%llu), tline(%llu), "
-		"data_delay(%llu) system_delay(%llu) prsh(%u)\n", frame_duration,
-		current_tline, tline, data_delay, system_delay, *prsh);
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamainmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamainmipiraw_Sensor.h
deleted file mode 100755
index 71cad63a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/brzamainmipiraw_Sensor.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     brzamainmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZAMAINMIPI_SENSOR_H
-#define _BRZAMAINMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "brzamain_ana_gain_table.h"
-#include "brzamain_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_AdditionalSetting_20230829.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_AdditionalSetting_20230829.xlsx
deleted file mode 100755
index 19f95d33..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_AdditionalSetting_20230829.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_AdditionalSetting_20230907.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_AdditionalSetting_20230907.xlsx
deleted file mode 100755
index 420d0973..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_AdditionalSetting_20230907.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_AdditionalSetting_for_PSRR_20230804.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_AdditionalSetting_for_PSRR_20230804.xlsx
deleted file mode 100755
index a7c27168..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_AdditionalSetting_for_PSRR_20230804.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver10.01-6.00_240116.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver10.01-6.00_240116.xlsx
deleted file mode 100755
index 2a69b70e..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver10.01-6.00_240116.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver3.00-1.00_230630.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver3.00-1.00_230630.xlsx
deleted file mode 100755
index 0d74f2fe..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver3.00-1.00_230630.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver4.00-1.00_230720.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver4.00-1.00_230720.xlsx
deleted file mode 100755
index 2636a09c..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver4.00-1.00_230720.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver4.00-2.00_230731.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver4.00-2.00_230731.xlsx
deleted file mode 100755
index 1905e58b..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver4.00-2.00_230731.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver5.00-2.00_230803.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver5.00-2.00_230803.xlsx
deleted file mode 100755
index 022bd73e..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver5.00-2.00_230803.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver6.00-2.00_230822.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver6.00-2.00_230822.xlsx
deleted file mode 100755
index 82d76229..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver6.00-2.00_230822.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver6.00-3.00_230830.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver6.00-3.00_230830.xlsx
deleted file mode 100755
index 0140f886..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/brzamain_mipi_raw/setting_excel/IMX882_OPLUS-CPHY-1.8V-24M_RegisterSetting_ver6.00-3.00_230830.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/Makefile
deleted file mode 100755
index 3eaa7214..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/brzauwidemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwide_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwide_Sensor_setting.h
deleted file mode 100755
index cd439853..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwide_Sensor_setting.h
+++ /dev/null
@@ -1,1241 +0,0 @@
-/*  SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzauwide_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZAUWIDE_SENSOR_SETTING_H
-#define _BRZAUWIDE_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-
-/*static u16 brzauwide_soft_reset[] = {
- @@ init
-	0xfd, 0x00,
-	0x20, 0x0e,
- sl 3 3 ; sleep time
-};*/
-
-static u16 brzauwide_init_setting[] = {
-	0xfd, 0x00,
-	0x20, 0x0e,
-};
-
-static u16 brzauwide_preview_capture_setting[] = {
-/* @@OV08D_MIPI_3264x2448_2lane_1440M_30fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 3264x2448 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 2608 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x00,
-	0x06, 0xd0,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x08,
-	0xa2, 0x09,
-	0xa3, 0x90,
-	0xa4, 0x00,
-	0xa5, 0x08,
-	0xa6, 0x0c,
-	0xa7, 0xc0,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x0c,
-	0x8f, 0xc0,
-	0x90, 0x09,
-	0x91, 0x90,
-	0xb7, 0x02,
-};
-
-static u16 brzauwide_normal_video_setting[] = {
-/* @@OV08D_MIPI_3264x1840_2lane_1440M_30fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 3264x1840 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 2608 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x00,
-	0x06, 0xd0,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x01,
-	0xa1, 0x38,
-	0xa2, 0x07,
-	0xa3, 0x30,
-	0xa4, 0x00,
-	0xa5, 0x08,
-	0xa6, 0x0c,
-	0xa7, 0xc0,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x0c,
-	0x8f, 0xc0,
-	0x90, 0x07,
-	0x91, 0x30,
-	0xb7, 0x02,
-};
-
-static u16 brzauwide_hs_video_setting[] = {
-/* @@OV08D_MIPI_1632x1224_2lane_720M_60fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 1664x1248 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 720Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 60 */
-/* ; linelength: 478 */
-/* ; framelength: 1252 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x1d, 0x00,
-	0x18, 0x3c,
-	0x1c, 0x19,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x1a, 0x0a,
-	0x1b, 0x08,
-	0x2a, 0x01,
-	0x2b, 0x9a,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x09,
-	0x04, 0x6a,
-	0x05, 0x00,
-	0x06, 0x00,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0xf8,
-	0x31, 0x06,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x55,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x7b,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb7, 0x0a,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc8, 0x03,
-	0xc9, 0xf8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x1a,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x03,
-	0x09, 0x08,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x2c, 0x01,
-	0x50, 0x02,
-	0x51, 0x03,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa9, 0x04,
-	0xaa, 0xd0,
-	0xab, 0x06,
-	0xac, 0x68,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x04,
-	0xa2, 0x04,
-	0xa3, 0xc8,
-	0xa4, 0x00,
-	0xa5, 0x04,
-	0xa6, 0x06,
-	0xa7, 0x60,
-	0xfd, 0x05,
-	0x04, 0x60,
-	0x06, 0x80,
-	0x07, 0x99,
-	0x0D, 0x03,
-	0x0F, 0x03,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x06,
-	0x19, 0x68,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x06,
-	0x8f, 0x60,
-	0x90, 0x04,
-	0x91, 0xc8,
-	0x93, 0x0e,
-	0x94, 0x77,
-	0x95, 0x77,
-	0x96, 0x10,
-	0x98, 0x88,
-	0x9c, 0x1a,
-	0xb7, 0x02,
-};
-
-static u16 brzauwide_slim_video_setting[] = {
-};
-
-static u16 brzauwide_custom1_setting[] = {
-/* @@OV08D_MIPI_3264x2448_2lane_1440M_24fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 3264x2448 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 24 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x08,
-	0xa2, 0x09,
-	0xa3, 0x90,
-	0xa4, 0x00,
-	0xa5, 0x08,
-	0xa6, 0x0c,
-	0xa7, 0xc0,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x0c,
-	0x8f, 0xc0,
-	0x90, 0x09,
-	0x91, 0x90,
-	0xb7, 0x02,
-};
-
-static u16 brzauwide_custom2_setting[] = {
-/* @@OV08D_MIPI_1632x1224_2lane_720M_24fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 1664x1248 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 720Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 24 */
-/* ; linelength: 478 */
-/* ; framelength: 3136 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x1d, 0x00,
-	0x18, 0x3c,
-	0x1c, 0x19,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x1a, 0x0a,
-	0x1b, 0x08,
-	0x2a, 0x01,
-	0x2b, 0x9a,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x09,
-	0x04, 0x6a,
-	0x05, 0x0e,
-	0x06, 0xb8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0xf8,
-	0x31, 0x06,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x55,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x7b,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb7, 0x0a,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc8, 0x03,
-	0xc9, 0xf8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x1a,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x03,
-	0x09, 0x08,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x2c, 0x01,
-	0x50, 0x02,
-	0x51, 0x03,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa9, 0x04,
-	0xaa, 0xd0,
-	0xab, 0x06,
-	0xac, 0x68,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x04,
-	0xa2, 0x04,
-	0xa3, 0xc8,
-	0xa4, 0x00,
-	0xa5, 0x04,
-	0xa6, 0x06,
-	0xa7, 0x60,
-	0xfd, 0x05,
-	0x04, 0x60,
-	0x06, 0x80,
-	0x07, 0x99,
-	0x0D, 0x03,
-	0x0F, 0x03,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x06,
-	0x19, 0x68,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x06,
-	0x8f, 0x60,
-	0x90, 0x04,
-	0x91, 0xc8,
-	0x93, 0x0e,
-	0x94, 0x77,
-	0x95, 0x77,
-	0x96, 0x10,
-	0x98, 0x88,
-	0x9c, 0x1a,
-	0xb7, 0x02,
-};
-
-static u16 brzauwide_custom3_setting[] = {
-/* @@OV08D_MIPI_2560x1920_2lane_1440M_24fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 2560x1920 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x01,
-	0xa1, 0x10,
-	0xa2, 0x07,
-	0xa3, 0x80,
-	0xa4, 0x01,
-	0xa5, 0x68,
-	0xa6, 0x0a,
-	0xa7, 0x00,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x0a,
-	0x8f, 0x00,
-	0x90, 0x07,
-	0x91, 0x80,
-	0xb7, 0x02,
-};
-
-static u16 brzauwide_custom4_setting[] = {
-/* @@OV08D_MIPI_2304x1728_2lane_1440M_24fps_V2.0 */
-/* 100 99 2304 1728 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 2304x1728 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x01,
-	0xa1, 0x70,
-	0xa2, 0x06,
-	0xa3, 0xc0,
-	0xa4, 0x01,
-	0xa5, 0xe8,
-	0xa6, 0x09,
-	0xa7, 0x00,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x09,
-	0x8f, 0x00,
-	0x90, 0x06,
-	0x91, 0xc0,
-	0xb7, 0x02,
-};
-
-static u16 brzauwide_custom5_setting[] = {
-/* @@OV08D_MIPI_1664x1248_2lane_1440M_24fps_V2.0 */
-/* 100 99 1664 1248 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 1664x1248 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 24 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x02,
-	0xa1, 0x60,
-	0xa2, 0x04,
-	0xa3, 0xe0,
-	0xa4, 0x03,
-	0xa5, 0x28,
-	0xa6, 0x06,
-	0xa7, 0x80,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x06,
-	0x8f, 0x80,
-	0x90, 0x04,
-	0x91, 0xe0,
-	0xb7, 0x02,
-};
-
-#endif  /* _OMEGAC1WIDE_SENSOR_SETTING_H  */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwide_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwide_ana_gain_table.h
deleted file mode 100755
index 9ed89a80..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwide_ana_gain_table.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzauwide_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __BRZAUWIDE_ANA_GAIN_TABLE_H__
-#define __BRZAUWIDE_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 brzauwide_ana_gain_table[] = {
-	1024,
-	1088,
-	1152,
-	1216,
-	1280,
-	1344,
-	1408,
-	1472,
-	1536,
-	1600,
-	1664,
-	1728,
-	1792,
-	1856,
-	1920,
-	1984,
-	2048,
-	2176,
-	2304,
-	2432,
-	2560,
-	2688,
-	2816,
-	2944,
-	3072,
-	3200,
-	3328,
-	3456,
-	3584,
-	3712,
-	3840,
-	3968,
-	4096,
-	4352,
-	4608,
-	4864,
-	5120,
-	5376,
-	5632,
-	5888,
-	6144,
-	6400,
-	6656,
-	6912,
-	7168,
-	7424,
-	7680,
-	7936,
-	8192,
-	8704,
-	9216,
-	9728,
-	10240,
-	10752,
-	11264,
-	11776,
-	12288,
-	12800,
-	13312,
-	13824,
-	14336,
-	14848,
-	15360,
-	15872,
-};
-#endif /* __BRZAUWIDE_ANA_GAIN_TABLE_H__  */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwidemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwidemipiraw_Sensor.c
deleted file mode 100755
index 69e86ace..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwidemipiraw_Sensor.c
+++ /dev/null
@@ -1,1798 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzauwidemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "brzauwidemipiraw_Sensor.h"
-
-#define SENSOR_NAME  SENSOR_DRVNAME_BRZAUWIDE_MIPI_RAW
-#define PFX "brzauwide_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-
-#define BRZAUWIDE_EEPROM_I2C_ADDR	(0xA2)
-
-#define OTP_SIZE	          (0x2000)
-#define SENSOR_ID	          (0x56084700)
-
-#define BRZAUWIDE_STEREO_START_ADDR    (0x1260)
-#define BRZAUWIDE_AESYNC_START_ADDR    (0x1A00)
-
-#define BRZAUWIDE_UNIQUE_SENSOR_ID_ADDR 0x00
-#define BRZAUWIDE_UNIQUE_SENSOR_ID_LENGTH 16
-static BYTE brzauwide_unique_id[BRZAUWIDE_UNIQUE_SENSOR_ID_LENGTH] = { 0 };
-
-static struct subdrv_ctx *g_ctx = NULL;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int brzauwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-
-static int brzauwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain);
-static int brzauwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter);
-static int brzauwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length);
-static int brzauwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr, BYTE *data, int size);
-static int brzauwide_set_register(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_get_register(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int brzauwide_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzauwide_set_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void read_unique_sensorid(struct subdrv_ctx *ctx);
-
-static int brzauwide_common_control(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-	MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-	MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data);
-
-static bool g_id_from_dts_flag = false;
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id);
-
-
-static struct eeprom_map_info brzauwide_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x001l, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x1260, 0x0000, 0x0000, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0, 0, 0, 0, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0, 0, 0, 0, false },
-	{ EEPROM_META_DISTORTION_DATA, 0, 0, 0, 0, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, brzauwide_set_test_pattern},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, brzauwide_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, brzauwide_get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, brzauwide_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, brzauwide_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, brzauwide_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, brzauwide_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, brzauwide_streaming_resume},
-	{SENSOR_FEATURE_SET_GAIN, brzauwide_set_gain},
-	{SENSOR_FEATURE_SET_ESHUTTER, brzauwide_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, brzauwide_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_SEAMLESS_EXTEND_FRAME_LENGTH, brzauwide_extend_frame_length},
-	{SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO, brzauwide_set_max_framerate_by_scenario},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, brzauwide_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_SET_REGISTER, brzauwide_set_register},
-	{SENSOR_FEATURE_GET_REGISTER, brzauwide_get_register},
-	{SENSOR_FEATURE_SET_FRAMELENGTH, brzauwide_set_frame_length},
-};
-
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x0065009a,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA2,
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 1840,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1224,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 1840,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1224,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2560,
-			.vsize = 1920,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1664,
-			.vsize = 1248,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{ /* 3264x2448 @30FPS  */
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = brzauwide_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(brzauwide_preview_capture_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 2608,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 3264,
-			.scale_h = 2448,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x34,
-		},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-		}, */
-	},
-	{ /* 3264x2448 @30FPS  */
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = brzauwide_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(brzauwide_preview_capture_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 2608,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 3264,
-			.scale_h = 2448,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*    		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = brzauwide_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzauwide_normal_video_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 2608,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 312,
-			.w0_size = 3264,
-			.h0_size = 1840,
-			.scale_w = 3264,
-			.scale_h = 1840,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1840,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1840,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*     		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = brzauwide_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzauwide_hs_video_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 478,
-		.framelength = 1252,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 144000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 1632,
-			.scale_h = 1224,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1224,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1224,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 60,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = brzauwide_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzauwide_slim_video_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 288000000,
-		.linelength = 3672,
-		.framelength = 2612,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 312,
-			.w0_size = 3264,
-			.h0_size = 1840,
-			.scale_w = 3264,
-			.scale_h = 1840,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1840,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1840,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = brzauwide_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(brzauwide_custom1_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 3264,
-			.scale_h = 2448,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = brzauwide_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(brzauwide_custom2_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 478,
-		.framelength = 3136,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 144000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 1632,
-			.scale_h = 1224,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1224,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1224,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = brzauwide_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(brzauwide_custom3_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 360,
-			.y0_offset = 272,
-			.w0_size = 2560,
-			.h0_size = 1920,
-			.scale_w = 2560,
-			.scale_h = 1920,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2560,
-			.h1_size = 1920,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2560,
-			.h2_tg_size = 1920,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = brzauwide_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(brzauwide_custom4_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 488,
-			.y0_offset = 368,
-			.w0_size = 2304,
-			.h0_size = 1728,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = brzauwide_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(brzauwide_custom5_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 808,
-			.y0_offset = 608,
-			.w0_size = 1664,
-			.h0_size = 1248,
-			.scale_w = 1664,
-			.scale_h = 1248,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1664,
-			.h1_size = 1248,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1664,
-			.h2_tg_size = 1248,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 75,
-		},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		}, */
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = BRZAUWIDE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0000}, /*page0, 0x00, 0x01, 0x02, 0x03*/
-	.i2c_addr_table = {0x6c, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_8_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {3264, 2448},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_2_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_B,
-	.ana_gain_def = BASEGAIN * 1,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 15.5,
-	.ana_gain_type = 1, /*0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC*/
-	.ana_gain_step = 1,
-/*	.ana_gain_table = brzauwide_ana_gain_table,
-	.ana_gain_table_size = sizeof(brzauwide_ana_gain_table),*/
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max =  0x1FFFFE,      /* (3ffffc / 2) */
-	.exposure_step = 4,
-	.exposure_margin = 20,
-
-	.frame_length_max = 0x1FFFFE,   /* (3ffffc / 2) */
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 934000,
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.g_gain2reg = get_gain2reg,
-	.s_gph = set_group_hold,
-
-/*	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0102, 0x0103},
-	},*/
-	.long_exposure_support = FALSE,
-	.reg_addr_exposure_lshift = 0,
-/*	.reg_addr_ana_gain = {
-			{0x0204, 0x0205},
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},*/
-	.reg_addr_auto_extend = 0,
-	.reg_addr_frame_count = PARAM_UNDEFINED,
-/*	.reg_addr_fast_mode = 0x3010,*/
-
-	.init_setting_table = brzauwide_init_setting,
-	.init_setting_len = ARRAY_SIZE(brzauwide_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.checksum_value = 0xD1EFF68B,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = brzauwide_common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 5000},
-	{HW_ID_AVDD, {2800000, 2800000}, 9000},
-	{HW_ID_DVDD, {1200000, 1200000}, 5000},
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {1}, 1000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 8000},
-};
-
-struct subdrv_entry brzauwide_mipi_raw_entry = {
-	.name = SENSOR_NAME,
-	.id = BRZAUWIDE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	check_current_scenario_id_bound(ctx);
-
-	if (enable) {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x03);
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0x20, 0x0f);
-		subdrv_i2c_wr_u8_u8(ctx, 0xe7, 0x03);
-		subdrv_i2c_wr_u8_u8(ctx, 0xe7, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0xa0, 0x01);
-	} else {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0xa0, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0x20, 0x0b);
-	}
-
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int brzauwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-		if (*(u32 *)para)
-			brzauwide_set_shutter_convert(ctx, *(u32 *)para);
-		streaming_ctrl(ctx, true);
-
-		return 0;
-}
-
-static int brzauwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-
-		return 0;
-}
-static unsigned int read_brzauwide_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != brzauwide_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != brzauwide_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = brzauwide_eeprom_info[meta_id].start;
-	readsize = brzauwide_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA3,
-	.i2c_write_id = 0xA2,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int brzauwide_get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct oplus_eeprom_info_struct* infoPtr;
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-	infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 7) | (infoPtr->afInfo[0] >> 1));
-	infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 1);
-	infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 7) | (infoPtr->afInfo[2] >> 1));
-	infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 1);
-	infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 7) | (infoPtr->afInfo[4] >> 1));
-	infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 1);
-
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, BRZAUWIDE_EEPROM_I2C_ADDR >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-		kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-	ret = adaptor_i2c_wr_p8(ctx->i2c_client, BRZAUWIDE_EEPROM_I2C_ADDR >> 1,
-			addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xE000;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, BRZAUWIDE_EEPROM_I2C_ADDR >> 1, reg, 0x03);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, BRZAUWIDE_EEPROM_I2C_ADDR >> 1, reg, 0x02);
-	}
-
-	return ret;
-}
-
-static kal_uint16 get_64align_addr(kal_uint16 data_base) {
-	kal_uint16 multiple = 0;
-	kal_uint16 surplus = 0;
-	kal_uint16 addr_64align = 0;
-
-	multiple = data_base / 64;
-	surplus = data_base % 64;
-	if(surplus) {
-		addr_64align = (multiple + 1) * 64;
-	} else {
-		addr_64align = multiple * 64;
-	}
-	return addr_64align;
-}
-
-static kal_int32 eeprom_table_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-	kal_uint16 idx;
-	kal_uint16 idy;
-	kal_int32 ret = ERROR_NONE;
-	UINT32 i = 0;
-
-	idx = data_length/WRITE_DATA_MAX_LENGTH;
-	idy = data_length%WRITE_DATA_MAX_LENGTH;
-
-	LOG_INF("[test] data_base(0x%x) data_length(%d) idx(%d) idy(%d)\n", data_base, data_length, idx, idy);
-
-	for (i = 0; i < idx; i++) {
-		ret = table_write_eeprom_30Bytes(ctx, (data_base + WRITE_DATA_MAX_LENGTH * i),
-				&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: i=%d\n", i);
-			return -1;
-		}
-		msleep(6);
-	}
-
-	msleep(6);
-	if(idy) {
-		ret = table_write_eeprom_30Bytes(ctx, (data_base + WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-			return -1;
-		}
-	}
-	return 0;
-}
-
-static kal_int32 eeprom_64align_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-	kal_uint16 addr_64align = 0;
-	kal_uint16 part1_length = 0;
-	kal_uint16 part2_length = 0;
-	kal_int32 ret = ERROR_NONE;
-
-	addr_64align = get_64align_addr(data_base);
-
-	part1_length = addr_64align - data_base;
-	if(part1_length > data_length) {
-		part1_length = data_length;
-	}
-	part2_length = data_length - part1_length;
-
-	write_eeprom_protect(ctx, 0);
-	msleep(6);
-
-	if (part1_length) {
-		ret = eeprom_table_write(ctx, data_base, pData, part1_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part1\n");
-			msleep(6);
-			return -1;
-		}
-	}
-
-	msleep(6);
-	if (part2_length) {
-		ret = eeprom_table_write(ctx, addr_64align, pData + part1_length, part2_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part2\n");
-			msleep(6);
-			return -1;
-		}
-	}
-	msleep(6);
-	write_eeprom_protect(ctx, 1);
-	msleep(6);
-
-	return 0;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-			ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-	kal_int32  ret = ERROR_NONE;
-	kal_uint16 data_base, data_length;
-	kal_uint8 *pData;
-
-	if(pStereodata != NULL) {
-		LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-					   pStereodata->uSensorId,
-					   pStereodata->uDeviceId,
-					   pStereodata->baseAddr,
-					   pStereodata->dataLength);
-
-		data_base = pStereodata->baseAddr;
-		data_length = pStereodata->dataLength;
-		pData = pStereodata->uData;
-		if ((pStereodata->uSensorId == BRZAUWIDE_SENSOR_ID)
-			&& (data_length == CALI_DATA_SLAVE_LENGTH)
-			&& (data_base == BRZAUWIDE_STEREO_START_ADDR)) {
-			LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-
-			eeprom_64align_write(ctx, data_base, pData, data_length);
-
-			LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-			LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-			LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-			LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-			LOG_INF("write_Module_data Write end\n");
-
-		} else if ((pStereodata->uSensorId == BRZAUWIDE_SENSOR_ID)
-			&& (data_length < AESYNC_DATA_LENGTH_TOTAL)
-			&& (data_base == BRZAUWIDE_AESYNC_START_ADDR)) {
-			LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-				pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-
-			eeprom_64align_write(ctx, data_base, pData, data_length);
-
-			LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-					read_cmos_eeprom_8(ctx, BRZAUWIDE_AESYNC_START_ADDR),
-					read_cmos_eeprom_8(ctx, BRZAUWIDE_AESYNC_START_ADDR+1),
-					read_cmos_eeprom_8(ctx, BRZAUWIDE_AESYNC_START_ADDR+2),
-					read_cmos_eeprom_8(ctx, BRZAUWIDE_AESYNC_START_ADDR+3),
-					read_cmos_eeprom_8(ctx, BRZAUWIDE_AESYNC_START_ADDR+4),
-					read_cmos_eeprom_8(ctx, BRZAUWIDE_AESYNC_START_ADDR+5),
-					read_cmos_eeprom_8(ctx, BRZAUWIDE_AESYNC_START_ADDR+6),
-					read_cmos_eeprom_8(ctx, BRZAUWIDE_AESYNC_START_ADDR+7));
-			LOG_INF("AESync write_Module_data Write end\n");
-		} else {
-			LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-			return -1;
-		}
-	} else {
-		LOG_INF("omegas2 write_Module_data pStereodata is null\n");
-		return -1;
-	}
-	return ret;
-}
-
-static int brzauwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	int ret = ERROR_NONE;
-	ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-	if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-		LOG_INF("ret=%d\n", ret);
-	}
-	return 0;
-}
-
-static int brzauwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_SLAVE_LENGTH)
-		*len = CALI_DATA_SLAVE_LENGTH;
-	LOG_INF("feature_data mode:%d  lens:%d", *feature_data_16, *len);
-	read_brzauwide_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-			(BYTE *)feature_return_para_32, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-					BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, BRZAUWIDE_EEPROM_I2C_ADDR >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "brzauwide read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "brzauwide read_otp_info end\n");
-}
-
-static int brzauwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int brzauwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static u16 brzauwide_unique_sensorid[] = {
-	0xfd, 0x00,
-	0x20, 0x0f,
-	0xe7, 0x03,
-	0xe7, 0x00,
-	0xfd, 0x03,
-	0x84, 0x40,
-	0x88, 0x00,
-	0x89, 0x00,
-	0x8a, 0x00,
-	0x8b, 0x0f,
-	0x81, 0x01,
-	0xfd, 0x08,
-};
-
-static void read_unique_sensorid(struct subdrv_ctx *ctx)
-{
-	kal_uint8 i = 0;
-
-	LOG_INF("read wide sensor unique sensorid");
-	subdrv_i2c_wr_regs_u8_u8(ctx, brzauwide_unique_sensorid, ARRAY_SIZE(brzauwide_unique_sensorid));
-	msleep(50);
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x08);
-	for (i = 0; i< BRZAUWIDE_UNIQUE_SENSOR_ID_LENGTH; i++) {
-		brzauwide_unique_id[i] =  subdrv_i2c_rd_u8_u8(ctx, BRZAUWIDE_UNIQUE_SENSOR_ID_ADDR + i);
-		pr_err("%s unique_id[%d] = 0x%x", __func__, i, brzauwide_unique_id[i]);
-	}
-}
-
-static kal_uint32 return_sensor_id(struct subdrv_ctx *ctx)
-{
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x00);
-
-	return ((subdrv_i2c_rd_u8_u8(ctx, 0x00) << 24) | (subdrv_i2c_rd_u8_u8(ctx, 0x01) << 16)
-		  | (subdrv_i2c_rd_u8_u8(ctx, 0x02) << 8)  |  subdrv_i2c_rd_u8_u8(ctx, 0x03));
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = return_sensor_id(ctx);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == SENSOR_ID) {
-				get_imgsensor_id_from_dts(ctx, sensor_id);
-				if (first_read) {
-					read_unique_sensorid(ctx);
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	/*subdrv_i2c_wr_regs_u8_u8(ctx, brzauwide_soft_reset, ARRAY_SIZE(brzauwide_soft_reset));
-	mdelay(3);*/
-	subdrv_i2c_wr_regs_u8_u8(ctx, brzauwide_init_setting, ARRAY_SIZE(brzauwide_init_setting));
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	if(!en) {  /*fresh*/
-		subdrv_i2c_wr_u8_u8(g_ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(g_ctx, 0x01, 0x01);
-	}
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return  0x10 * gain/BASEGAIN;
-}
-
-static int g_diff_frame_length[] = {
-	2504,  /*preview*/
-	2504,  /*capture*/
-	2504,  /*normal video*/
-	1252,  /*his video*/
-	1252,  /*slim video*/
-	2504,  /*custom1*/
-	1252,  /*custom2*/
-	2504,  /*custom3*/
-	2504,  /*custom4*/
-	2504,  /*custom5*/
-};
-
-void brzauwide_write_frame_length(struct subdrv_ctx *ctx, u32 fll)
-{
-	u32 fll_step = 0;
-	u32 vblank = 0;
-	u32 diff_frame_length;
-	check_current_scenario_id_bound(ctx);
-
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-	diff_frame_length = g_diff_frame_length[ctx->current_scenario_id] ?
-		g_diff_frame_length[ctx->current_scenario_id] : g_diff_frame_length[0];
-
-	ctx->frame_length = fll;
-
-	if (fll_step)
-		fll = round_up(fll, fll_step);
-
-	/* write framelength */
-	vblank = (fll - diff_frame_length) * 2;
-
-	if(vblank < 65535) {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x05, (vblank >> 8) & 0xFF);
-		subdrv_i2c_wr_u8_u8(ctx, 0x06,  vblank & 0xFF);
-	/*	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);	*/
-	}
-
-	DRV_LOG(ctx, "ctx->frame_length(%d), diff_frame_length(%d), vblank(%d)\n",
-		ctx->frame_length, diff_frame_length, vblank);
-	DRV_LOG(ctx, "fll[0x%x], fll_step:%u ctx->extend_frame_length_en:%d\n",
-		fll, fll_step, ctx->extend_frame_length_en);
-}
-
-void brzauwide_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_NONE:
-			if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-				ctx->s_ctx.mode[scenario_id].min_exposure_line) {
-				*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-				*min_shutter = ctx->s_ctx.mode[scenario_id].min_exposure_line;
-			} else {
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-			}
-			break;
-		default:
-			*exposure_step = ctx->s_ctx.exposure_step;
-			*min_shutter = ctx->s_ctx.exposure_min;
-			break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-static int brzauwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-	if (mode != ctx->test_pattern) {
-		if (mode) {
-			LOG_INF("%s mode(%d)", __func__, mode);
-			switch(mode) {
-			case 5:
-				subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-				subdrv_i2c_wr_u8_u8(ctx, 0x21, 0x00); /*DIG_GAIN*/
-				subdrv_i2c_wr_u8_u8(ctx, 0x22, 0x00);
-				subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);
-				subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x07);
-				subdrv_i2c_wr_u8_u8(ctx, 0x04, 0x00); /*blc_lvl_target*/
-				subdrv_i2c_wr_u8_u8(ctx, 0x05, 0x00);
-				break;
-			default:
-				break;
-			}
-		} else {
-			LOG_INF("%s mode(%d)", __func__, mode);
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x21, 0x02);
-			subdrv_i2c_wr_u8_u8(ctx, 0x22, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x07);
-			subdrv_i2c_wr_u8_u8(ctx, 0x04, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x05, 0x40);
-		}
-		ctx->test_pattern = mode;
-	}
-
-	return ERROR_NONE;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	g_ctx = ctx;
-
-	return 0;
-}
-
-static int brzauwide_set_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u16 frame_length = (u16) (*para);
-	if (frame_length) {
-		ctx->frame_length = frame_length;
-	}
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-
-	if (gph) {
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	}
-	brzauwide_write_frame_length(ctx, ctx->frame_length);
-	if (gph) {
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	}
-
-	DRV_LOG(ctx, "fll(input/output/min):%u/%u/%u\n",
-		frame_length, ctx->frame_length, ctx->min_frame_length);
-	return 0;
-}
-
-static int brzauwide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length)
-{
-	u32 fine_integ_line = 0;
-	u32 cit_step = 0;
-
-	bool gph = (ctx->s_ctx.s_gph != NULL);
-	u8 exposure_margin = ctx->s_ctx.exposure_margin;
-	DRV_LOG(ctx, "shutter:%llu, frame_length:%u  exposure_margin:%d\n", shutter, frame_length, exposure_margin);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	check_current_scenario_id_bound(ctx);
-	/* check boundary of shutter */
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	shutter = FINE_INTEG_CONVERT(shutter, fine_integ_line);
-	shutter = max(shutter, (u64)ctx->s_ctx.exposure_min);
-	shutter = min(shutter, (u64)ctx->s_ctx.exposure_max);
-	/* check boundary of framelength */
-
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	if (cit_step)
-		shutter = round_up(shutter, cit_step);
-	ctx->frame_length =	max(shutter + exposure_margin, (u64)ctx->frame_length);
-	ctx->frame_length =	max((u64)ctx->min_frame_length, (u64)ctx->frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->exposure[0] = shutter;
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		brzauwide_write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-	subdrv_i2c_wr_u8_u8(ctx, 0x02, (shutter * 2 >> 16) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0x03, (shutter * 2 >>  8) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0x04,  shutter * 2  & 0xFF);
-/*	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);	
-	subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);	*/
-
-	DRV_LOG(ctx, "exp[0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		ctx->exposure[0], frame_length, ctx->frame_length, ctx->autoflicker_en);
-
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		/*commit_i2c_buffer(ctx);*/
-	}
-	/* group hold end */
-
-	return 0;
-}
-
-static int brzauwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	return brzauwide_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], ((u64*)para)[1]);
-}
-
-static int brzauwide_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter)
-{
-	return brzauwide_set_shutter_frame_length_convert(ctx, shutter, 0);
-}
-
-static int brzauwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	return brzauwide_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], 0);
-}
-
-static int brzauwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64*)para;
-	u64 *shutters =(u64 *)(*feature_data);
-	u16 exp_cnt = (u64) (*(feature_data + 1));
-	u64 framelength = (u64) (*(feature_data + 2));
-
-	if(exp_cnt != 1) {
-		LOG_INF("exp_cnt(%d) != 1\n", exp_cnt);
-	}
-
-	return brzauwide_set_shutter_frame_length_convert(ctx, shutters[0], framelength);
-}
-
-static int brzauwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain)
-{
-	u16 rg_gain;
-	bool gph = (ctx->s_ctx.s_gph != NULL);
-	u32 ana_gain_min = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_min : ctx->ana_gain_min;
-	u32 ana_gain_max = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max : ctx->ana_gain_max;
-
-	/* check boundary of gain */
-	gain = max(gain, ana_gain_min);
-	gain = min(gain, ana_gain_max);
-
-	/* mapping of gain to register value */
-	rg_gain = get_gain2reg(gain);
-
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-
-	/* write gain */
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-	subdrv_i2c_wr_u8_u8(ctx, 0x24, rg_gain);
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01); /*page1*/
-	subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01); /*fresh*/
-
-	DRV_LOG(ctx, "%s gain(%d) rg_gain[0x%x]\n", __func__, gain, rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	/* group hold end */
-
-	return 0;
-}
-
-static int brzauwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-
-	return brzauwide_set_gain_convert(ctx, gain);
-}
-
-void brzauwide_set_dummy(struct subdrv_ctx *ctx)
-{
-}
-
-static int brzauwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = (u32)((u64*)para)[0];
-	u32 framerate = (u32)((u64*)para)[1];
-	u32 frame_length;
-	u32 frame_length_step;
-
-	LOG_INF("scenario_id(%d), framerate(%d)", scenario_id, framerate);
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOG(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-	}
-
-	if (framerate == 0) {
-		DRV_LOG(ctx, "framerate (%u) is invalid\n", framerate);
-		return 0;
-	}
-
-	if (ctx->s_ctx.mode[scenario_id].linelength == 0) {
-		DRV_LOG(ctx, "linelength (%u) is invalid\n",
-			ctx->s_ctx.mode[scenario_id].linelength);
-		return 0;
-	}
-
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	ctx->frame_length =
-		max(frame_length, ctx->s_ctx.mode[scenario_id].framelength);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	ctx->min_frame_length = ctx->frame_length;
-	DRV_LOG(ctx, "max_fps(input/output):%u/%u(sid:%u), min_fl_en:1\n",
-		framerate, ctx->current_fps, scenario_id);
-	if (ctx->s_ctx.reg_addr_auto_extend ||
-			(ctx->frame_length > (ctx->exposure[0] + ctx->s_ctx.exposure_margin))) {
-		brzauwide_set_dummy(ctx);
-	}
-
-	return 0;
-}
-
-static int brzauwide_extend_frame_length_convert(struct subdrv_ctx *ctx, u32 ns)
-{
-	return 0;
-}
-
-static int brzauwide_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 ns = (u32)((u64*)para)[0];
-
-	return brzauwide_extend_frame_length_convert(ctx, ns);
-}
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-
-	return 0;
-}
-
-static int brzauwide_set_register(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u8 page = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF00;
-	u8 addr = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF;
-
-
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, page);
-	subdrv_i2c_wr_u8_u8(ctx, addr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData & 0xFF);
-
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);	/*page1*/
-	subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);	/*fresh*/
-
-	pr_err("%s RegAddr: 0x%08x, RegData: 0x%04x \n",
-		__func__, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-
-	return 0;
-}
-
-static int brzauwide_get_register(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u8 page = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF00;
-	u8 addr = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF;
-
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, page);
-	((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData =
-		subdrv_i2c_rd_u8_u8(ctx, addr);
-	pr_err("%s RegAddr: 0x%08x, RegData: 0x%04x \n",
-		__func__, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-
-	return 0;
-}
-
-
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id) {
-	struct subdrv_entry *m_subdrv_entry = &brzauwide_mipi_raw_entry;
-	u32 final_sensor_id = 0xFFFFFFFF;
-	const char *of_sensor_names[OF_SENSOR_NAMES_MAXCNT];
-	const char *of_sensor_hal_names[OF_SENSOR_NAMES_MAXCNT];
-	u32   of_sensor_ids[OF_SENSOR_NAMES_MAXCNT] = {0};
-	int i, index, of_sensor_names_cnt, of_sensor_hal_names_cnt, of_sensor_ids_ret;
-	struct device *dev = &ctx->i2c_client->dev;
-
-	memset(&of_sensor_ids, 0xFF, sizeof(of_sensor_ids));
-
-	if(g_id_from_dts_flag == false) {
-		of_sensor_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-names", of_sensor_names, ARRAY_SIZE(of_sensor_names));
-
-		of_sensor_hal_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-hal-names", of_sensor_hal_names, ARRAY_SIZE(of_sensor_hal_names));
-
-		of_sensor_ids_ret = of_property_read_u32_array(dev->of_node,
-				"sensor-ids", of_sensor_ids, of_sensor_names_cnt);
-
-		pr_err("%s of_sensor_names_cnt(%d), of_sensor_ids_ret(%d)",
-			__func__, of_sensor_names_cnt, of_sensor_ids_ret);
-		for(i = 0 ;i < of_sensor_names_cnt; i++) {
-				pr_err("%s of_sensor_names[%d] = %s  of_sensor_ids[%d] = %d",
-				__func__, i, of_sensor_names[i], i, of_sensor_ids[i]);
-		}
-		for(i = 0 ;i < of_sensor_hal_names_cnt; i++) {
-			pr_err("%s of_sensor_hal_names_cnt[%d] = %s",
-				__func__, i, of_sensor_hal_names[i]);
-		}
-
-		if (of_sensor_names_cnt && (of_sensor_ids_ret == 0)) {
-			for(index = 0; index < of_sensor_names_cnt; index++) {
-				if (strncmp(SENSOR_NAME, of_sensor_names[index], strlen(SENSOR_NAME)) == 0) {
-					final_sensor_id = of_sensor_ids[index];
-					break;
-				}
-			}
-		} else {
-			pr_err("%s sensor-ids error in dts", __func__);
-		}
-		g_id_from_dts_flag = true;
-	}
-
-	if(final_sensor_id != 0xFFFFFFFF) {
-		*sensor_id = final_sensor_id;
-		ctx->s_ctx.sensor_id = final_sensor_id;
-
-		m_subdrv_entry->id = final_sensor_id;
-		if(of_sensor_hal_names_cnt == of_sensor_names_cnt) {
-			m_subdrv_entry->name = of_sensor_hal_names[index];
-		}
-
-		pr_err("%s final index(%d), id(%d) name(%s)",
-			__func__, index, m_subdrv_entry->id, m_subdrv_entry->name);
-	} else {
-		*sensor_id = ctx->s_ctx.sensor_id;
-	}
-
-	return;
-}
-
-static int brzauwide_common_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data)
-{
-	int ret = ERROR_NONE;
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u64 time_boot_begin = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx) {
-		DRV_LOGE(ctx, "null _adaptor_ctx\n");
-		return -ENODEV;
-	}
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOG(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-		ret = ERROR_INVALID_SCENARIO_ID;
-	}
-	update_mode_info(ctx, scenario_id);
-
-	if (ctx->s_ctx.mode[scenario_id].mode_setting_table != NULL) {
-		DRV_LOG_MUST(ctx, "E: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		if (ctx->power_on_profile_en)
-			time_boot_begin = ktime_get_boottime_ns();
-
-		/* initail setting */
-		/*subdrv_i2c_wr_regs_u8_u8(ctx, brzauwide_soft_reset, ARRAY_SIZE(brzauwide_soft_reset));
-		mdelay(3);*/
-
-		i2c_table_rewrite(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table,
-				ctx->s_ctx.mode[scenario_id].mode_setting_len);
-
-		if (ctx->power_on_profile_en) {
-			ctx->sensor_pw_on_profile.i2c_cfg_period =
-					ktime_get_boottime_ns() - time_boot_begin;
-
-			ctx->sensor_pw_on_profile.i2c_cfg_table_len =
-					ctx->s_ctx.mode[scenario_id].mode_setting_len;
-		}
-		DRV_LOG(ctx, "X: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-	} else {
-		DRV_LOGE(ctx, "please implement mode setting(sid:%u)!\n", scenario_id);
-	}
-
-	if (check_is_no_crop(ctx, scenario_id) && probe_eeprom(ctx)) {
-		idx = ctx->eeprom_index;
-		support = info[idx].xtalk_support;
-		pbuf = info[idx].preload_xtalk_table;
-		size = info[idx].xtalk_size;
-		addr = info[idx].sensor_reg_addr_xtalk;
-		if (support) {
-			if (pbuf != NULL && addr > 0 && size > 0) {
-				subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-				DRV_LOG(ctx, "set XTALK calibration data done.");
-			}
-		}
-	}
-
-	set_mirror_flip(ctx, ctx->s_ctx.mirror);
-
-	return ret;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwidemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwidemipiraw_Sensor.h
deleted file mode 100755
index ed6b567f..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzauwide_mipi_raw/brzauwidemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     brzauwidemipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZAUWIDEMIPI_SENSOR_H
-#define _BRZAUWIDEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "brzauwide_ana_gain_table.h"
-#include "brzauwide_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#endif /* _BRZAUWIDEMIPI_SENSOR_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/Makefile
deleted file mode 100755
index 6fc7650c..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/brzbfront2mipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2_Sensor_setting.h
deleted file mode 100755
index 548dc861..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2_Sensor_setting.h
+++ /dev/null
@@ -1,1429 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzbfront2_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZBFRONT2_SENSOR_SETTING_H
-#define _BRZBFRONT2_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-
-static u16 brzbfront2_init_setting[] = {
-    //External Clock Setting
-    0x0136,0x18,
-    0x0137,0x00,
-    //Register version
-    0x3C7E,0x02,
-    0x3C7F,0x01,
-    //Signaling mode setting
-    0x0111,0x02,
-    //Global Setting
-    0x380C,0x00,
-    0x3C00,0x01,
-    0x3C01,0x00,
-    0x3C02,0x00,
-    0x3C03,0x03,
-    0x3C04,0xFF,
-    0x3C05,0x01,
-    0x3C06,0x00,
-    0x3C07,0x00,
-    0x3C08,0x03,
-    0x3C09,0xFF,
-    0x3C0A,0x00,
-    0x3C0B,0x00,
-    0x3C0C,0x10,
-    0x3C0D,0x10,
-    0x3C0E,0x10,
-    0x3C0F,0x10,
-    0x3C10,0x10,
-    0x3C11,0x20,
-    0x3C15,0x00,
-    0x3C16,0x00,
-    0x3C17,0x01,
-    0x3C18,0x00,
-    0x3C19,0x01,
-    0x3C1A,0x00,
-    0x3C1B,0x01,
-    0x3C1C,0x00,
-    0x3C1D,0x01,
-    0x3C1E,0x00,
-    0x3C1F,0x00,
-    0x3F89,0x01,
-    0x3F8F,0x01,
-    0x53B9,0x01,
-    0x62C4,0x04,
-    0x658F,0x07,
-    0x6590,0x05,
-    0x6591,0x07,
-    0x6592,0x05,
-    0x6593,0x07,
-    0x6594,0x05,
-    0x6595,0x07,
-    0x6596,0x05,
-    0x6597,0x05,
-    0x6598,0x05,
-    0x6599,0x05,
-    0x659A,0x05,
-    0x659B,0x05,
-    0x659C,0x05,
-    0x659D,0x05,
-    0x659E,0x07,
-    0x659F,0x05,
-    0x65A0,0x07,
-    0x65A1,0x05,
-    0x65A2,0x07,
-    0x65A3,0x05,
-    0x65A4,0x07,
-    0x65A5,0x05,
-    0x65A6,0x05,
-    0x65A7,0x05,
-    0x65A8,0x05,
-    0x65A9,0x05,
-    0x65AA,0x05,
-    0x65AB,0x05,
-    0x65AC,0x05,
-    0x65AD,0x07,
-    0x65AE,0x07,
-    0x65AF,0x07,
-    0x65B0,0x05,
-    0x65B1,0x05,
-    0x65B2,0x05,
-    0x65B3,0x05,
-    0x65B4,0x07,
-    0x65B5,0x07,
-    0x65B6,0x07,
-    0x65B7,0x07,
-    0x65B8,0x05,
-    0x65B9,0x05,
-    0x65BA,0x05,
-    0x65BB,0x05,
-    0x65BC,0x05,
-    0x65BD,0x05,
-    0x65BE,0x05,
-    0x65BF,0x05,
-    0x65C0,0x05,
-    0x65C1,0x05,
-    0x65C2,0x05,
-    0x65C3,0x05,
-    0x65C4,0x05,
-    0x65C5,0x05,
-    0x6E1C,0x00,
-    0x6E1D,0x00,
-    0x6E25,0x00,
-    0x6E38,0x03,
-    0x895C,0x01,
-    0x895D,0x00,
-    0x8966,0x00,
-    0x8967,0x4E,
-    0x896A,0x00,
-    0x896B,0x24,
-    0x896F,0x34,
-    0x8976,0x00,
-    0x8977,0x00,
-    0x9004,0x1F,
-    0x9200,0xB7,
-    0x9201,0x34,
-    0x9202,0xB7,
-    0x9203,0x36,
-    0x9204,0xB7,
-    0x9205,0x37,
-    0x9206,0xB7,
-    0x9207,0x38,
-    0x9208,0xB7,
-    0x9209,0x39,
-    0x920A,0xB7,
-    0x920B,0x3A,
-    0x920C,0xB7,
-    0x920D,0x3C,
-    0x920E,0xB7,
-    0x920F,0x3D,
-    0x9210,0xB7,
-    0x9211,0x3E,
-    0x9212,0xB7,
-    0x9213,0x3F,
-    0x9214,0xF6,
-    0x9215,0x13,
-    0x9216,0xF6,
-    0x9217,0x34,
-    0x9218,0xF4,
-    0x9219,0xA7,
-    0x921A,0xF4,
-    0x921B,0xAA,
-    0x921C,0xF4,
-    0x921D,0xAD,
-    0x921E,0xF4,
-    0x921F,0xB0,
-    0x9220,0xF4,
-    0x9221,0xB3,
-    0x9222,0x85,
-    0x9223,0x77,
-    0x9224,0xC4,
-    0x9225,0x4B,
-    0x9226,0xC4,
-    0x9227,0x4C,
-    0x9228,0xC4,
-    0x9229,0x4D,
-    0x922A,0xF5,
-    0x922B,0x5E,
-    0x922C,0xF5,
-    0x922D,0x5F,
-    0x922E,0xF5,
-    0x922F,0x64,
-    0x9230,0xF5,
-    0x9231,0x65,
-    0x9232,0xF5,
-    0x9233,0x6A,
-    0x9234,0xF5,
-    0x9235,0x6B,
-    0x9236,0xF5,
-    0x9237,0x70,
-    0x9238,0xF5,
-    0x9239,0x71,
-    0x923A,0xF5,
-    0x923B,0x76,
-    0x923C,0xF5,
-    0x923D,0x77,
-    0x9810,0x14,
-    0x9814,0x14,
-    0xC020,0x00,
-    0xC026,0x00,
-    0xC027,0x00,
-    0xC448,0x01,
-    0xC44F,0x01,
-    0xC450,0x00,
-    0xC451,0x00,
-    0xC452,0x01,
-    0xC455,0x00,
-    0xE186,0x36,
-    0xE206,0x35,
-    0xE226,0x33,
-    0xE266,0x34,
-    0xE2A6,0x31,
-    0xE2C6,0x37,
-    0xE2E6,0x32,
-    //Image Quality adjustment setting
-    0x88D6,0x60,
-    0x9852,0x00,
-    0xA569,0x06,
-    0xA56A,0x13,
-    0xA56B,0x13,
-    0xA56C,0x01,
-    0xA678,0x00,
-    0xA679,0x20,
-    0xA812,0x00,
-    0xA813,0x3F,
-    0xA814,0x3F,
-    0xA830,0x68,
-    0xA831,0x56,
-    0xA832,0x2B,
-    0xA833,0x55,
-    0xA834,0x55,
-    0xA835,0x16,
-    0xA837,0x51,
-    0xA838,0x34,
-    0xA854,0x4F,
-    0xA855,0x48,
-    0xA856,0x45,
-    0xA857,0x02,
-    0xA85A,0x23,
-    0xA85B,0x16,
-    0xA85C,0x12,
-    0xA85D,0x02,
-    0xAA55,0x00,
-    0xAA56,0x01,
-    0xAA57,0x30,
-    0xAA58,0x01,
-    0xAA59,0x30,
-    0xAC72,0x01,
-    0xAC73,0x26,
-    0xAC74,0x01,
-    0xAC75,0x26,
-    0xAC76,0x00,
-    0xAC77,0xC4,
-    0xAE09,0xFF,
-    0xAE0A,0xFF,
-    0xAE12,0x58,
-    0xAE13,0x58,
-    0xAE15,0x10,
-    0xAE16,0x10,
-    0xAF05,0x48,
-    0xB069,0x02,
-    0xEA4B,0x00,
-    0xEA4C,0x00,
-    0xEA4D,0x00,
-    0xEA4E,0x00,
-    0xBCF1,0x00,
-};
-
-/*Reg B1, 3264x2448,30fps,2X2Binning,w/o PD,For MaxVB*/
-// static u16 brzbfront2_preview_setting[] = {
-//     //MIPI output setting
-//     0x0112,0x0A,
-//     0x0113,0x0A,
-//     0x0114,0x03,
-//     //Line Length PCK Setting
-//     0x0342,0x0E,
-//     0x0343,0xB8,
-//     //Frame Length Lines Setting
-//     0x0340,0x1D,
-//     0x0341,0xDA,
-//     //ROI Setting
-//     0x0344,0x00,
-//     0x0345,0x00,
-//     0x0346,0x00,
-//     0x0347,0x10,
-//     0x0348,0x19,
-//     0x0349,0x9F,
-//     0x034A,0x13,
-//     0x034B,0x2F,
-//     //Mode Setting
-//     0x0900,0x01,
-//     0x0901,0x22,
-//     0x0902,0x08,
-//     0x3246,0x81,
-//     0x3247,0x81,
-//     //Digital Crop & Scaling
-//     0x0401,0x00,
-//     0x0404,0x00,
-//     0x0405,0x10,
-//     0x0408,0x00,
-//     0x0409,0x08,
-//     0x040A,0x00,
-//     0x040B,0x00,
-//     0x040C,0x0C,
-//     0x040D,0xC0,
-//     0x040E,0x09,
-//     0x040F,0x90,
-//     //Output Size Setting
-//     0x034C,0x0C,
-//     0x034D,0xC0,
-//     0x034E,0x09,
-//     0x034F,0x90,
-//     //Clock Setting
-//     0x0301,0x05,
-//     0x0303,0x02,
-//     0x0305,0x03,
-//     0x0306,0x01,
-//     0x0307,0x0E,
-//     0x030B,0x01,
-//     0x030D,0x02,
-//     0x030E,0x00,
-//     0x030F,0xB0,
-//     0x0310,0x01,
-//     //Other Setting
-//     0x3620,0x00,
-//     0x3621,0x00,
-//     0x3C12,0x56,
-//     0x3C13,0x52,
-//     0x3C14,0x3E,
-//     0x3F0C,0x00,
-//     0x3F14,0x01,
-//     0x3F80,0x00,
-//     0x3F81,0xA0,
-//     0x3F8C,0x00,
-//     0x3F8D,0x00,
-//     0x3FFC,0x00,
-//     0x3FFD,0x1E,
-//     0x3FFE,0x00,
-//     0x3FFF,0xDC,
-//     //Integration Setting
-//     0x0202,0x1D,
-//     0x0203,0xAA,
-//     //Gain Setting
-//     0x0204,0x00,
-//     0x0205,0x70,
-//     0x020E,0x01,
-//     0x020F,0x00,
-//     0x0210,0x01,
-//     0x0211,0x00,
-//     0x0212,0x01,
-//     0x0213,0x00,
-//     0x0214,0x01,
-//     0x0215,0x00,
-//     // mipi
-//     0x0808, 0x02,
-//     0x080A, 0x00,
-//     0x080B, 0xD7,
-//     0x080C, 0x00,
-//     0x080D, 0x87,
-//     0x080E, 0x00,
-//     0x080F, 0xF7,
-//     0x0810, 0x00,
-//     0x0811, 0x87,
-//     0x0812, 0x00,
-//     0x0813, 0x87,
-//     0x0814, 0x00,
-//     0x0815, 0x87,
-//     0x0816, 0x02,
-//     0x0817, 0x47,
-//     0x0818, 0x00,
-//     0x0819, 0x6F,
-//     0x0824, 0x00,
-//     0x0825, 0xF1,
-//     0x0826, 0x00,
-//     0x0827, 0x0F,
-// };
-
-/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-static u16 brzbfront2_preview_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x10,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x2F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-static kal_uint16 brzbfront2_capture_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x10,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x2F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B14, 3264x1836,30fps,2X2Binning,w/o PD,For(rst<21ms&cycle>1.5 s)*/
-static kal_uint16 brzbfront2_normal_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x0B,
-    0x0341, 0x8E,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x04,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0xD1,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x03,
-    0x030F, 0x0C,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x0B,
-    0x0203, 0x5E,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xA7,
-    0x080C, 0x00,
-    0x080D, 0x37,
-    0x080E, 0x00,
-    0x080F, 0x67,
-    0x0810, 0x00,
-    0x0811, 0x37,
-    0x0812, 0x00,
-    0x0813, 0x37,
-    0x0814, 0x00,
-    0x0815, 0x37,
-    0x0816, 0x00,
-    0x0817, 0xE7,
-    0x0818, 0x00,
-    0x0819, 0x2F,
-    0x0824, 0x00,
-    0x0825, 0xE5,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 brzbfront2_hs_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x07,
-    0x0341, 0xF6,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x07,
-    0x0203, 0xC6,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 brzbfront2_slim_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x07,
-    0x0341, 0xF6,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x07,
-    0x0203, 0xC6,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg V1-2 (26M MCLK) 1280x960,10fps,4x4Binning_Crop,w/o PD,For MIPI<1.5G(Skew off)&Hblank=2.4us*/
-static kal_uint16 brzbfront2_custom1_setting[] = {
-    //Reset MCLK
-    0x0136, 0x1A,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x08,
-    0x0343, 0xC8,
-    //Frame Length Lines Setting
-    0x0340, 0x53,
-    0x0341, 0x94,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x20,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x11,
-    0x034B, 0x1F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x08,
-    0x3246, 0x89,
-    0x3247, 0x89,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0xB4,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x05,
-    0x040D, 0x00,
-    0x040E, 0x03,
-    0x040F, 0xC0,
-    //Output Size Setting
-    0x034C, 0x05,
-    0x034D, 0x00,
-    0x034E, 0x03,
-    0x034F, 0xC0,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x00,
-    0x0307, 0xB9,
-    0x030B, 0x01,
-    0x030D, 0x04,
-    0x030E, 0x00,
-    0x030F, 0xD8,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x3E,
-    0x3C13, 0x3A,
-    0x3C14, 0x22,
-    0x3F0C, 0x00,
-    0x3F14, 0x00,
-    0x3F80, 0x00,
-    0x3F81, 0x00,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x55,
-    0x3FFE, 0x00,
-    0x3FFF, 0x78,
-    //Integration Setting
-    0x0202, 0x53,
-    0x0203, 0x64,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xA7,
-    0x080C, 0x00,
-    0x080D, 0x5F,
-    0x080E, 0x00,
-    0x080F, 0xAF,
-    0x0810, 0x00,
-    0x0811, 0x5F,
-    0x0812, 0x00,
-    0x0813, 0x5F,
-    0x0814, 0x00,
-    0x0815, 0x5F,
-    0x0816, 0x01,
-    0x0817, 0x97,
-    0x0818, 0x00,
-    0x0819, 0x4F,
-    0x0824, 0x00,
-    0x0825, 0xEB,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg F1-S7, 6560x4928,15fps,Full,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 brzbfront2_custom2_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x2C,
-    0x0343, 0xD8,
-    //Frame Length Lines Setting
-    0x0340, 0x13,
-    0x0341, 0x99,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x3F,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x0A,
-    0x3246, 0x01,
-    0x3247, 0x01,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x19,
-    0x040D, 0xA0,
-    0x040E, 0x13,
-    0x040F, 0x40,
-    //Output Size Setting
-    0x034C, 0x19,
-    0x034D, 0xA0,
-    0x034E, 0x13,
-    0x034F, 0x40,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x01,
-    0x3621, 0x01,
-    0x3C12, 0x62,
-    0x3C13, 0x32,
-    0x3C14, 0x20,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0x46,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x6E,
-    0x3FFE, 0x00,
-    0x3FFF, 0x64,
-    //Integration Setting
-    0x0202, 0x13,
-    0x0203, 0x69,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg_B8-3 3264x1856,15fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 brzbfront2_custom3_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x3B,
-    0x0341, 0xB6,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x60,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xDF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x40,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x40,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x3B,
-    0x0203, 0x86,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg V3 1640x1232,30fps,4x4Binning,w/o PD,For MaxVB&Binning-Ave*/
-static kal_uint16 brzbfront2_custom4_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x08,
-    0x0343, 0xC8,
-    //Frame Length Lines Setting
-    0x0340, 0x32,
-    0x0341, 0x0A,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x3F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x08,
-    0x3246, 0x89,
-    0x3247, 0x89,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x06,
-    0x040D, 0x68,
-    0x040E, 0x04,
-    0x040F, 0xD0,
-    //Output Size Setting
-    0x034C, 0x06,
-    0x034D, 0x68,
-    0x034E, 0x04,
-    0x034F, 0xD0,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x06,
-    0x030F, 0x59,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x3E,
-    0x3C13, 0x3A,
-    0x3C14, 0x22,
-    0x3F0C, 0x00,
-    0x3F14, 0x00,
-    0x3F80, 0x00,
-    0x3F81, 0x00,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x55,
-    0x3FFE, 0x00,
-    0x3FFF, 0x78,
-    //Integration Setting
-    0x0202, 0x31,
-    0x0203, 0xDA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xCF,
-    0x080C, 0x00,
-    0x080D, 0x7F,
-    0x080E, 0x00,
-    0x080F, 0xEF,
-    0x0810, 0x00,
-    0x0811, 0x7F,
-    0x0812, 0x00,
-    0x0813, 0x7F,
-    0x0814, 0x00,
-    0x0815, 0x7F,
-    0x0816, 0x02,
-    0x0817, 0x1F,
-    0x0818, 0x00,
-    0x0819, 0x67,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-static kal_uint16 brzbfront2_preview_seamless_setting[] = {
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    0x0347, 0x10,
-    0x034B, 0x2F,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    0x0409, 0x08,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F81, 0xA0,
-    0x3FFD, 0x1E,
-    0x3FFF, 0xDC,
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-};
-
-static kal_uint16 brzbfront2_custom2_seamless_setting[] = {
-    0x0342, 0x2C,
-    0x0343, 0xD8,
-    0x0340, 0x13,
-    0x0341, 0x99,
-    0x0347, 0x00,
-    0x034B, 0x3F,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x0A,
-    0x3246, 0x01,
-    0x3247, 0x01,
-    0x0409, 0x00,
-    0x040C, 0x19,
-    0x040D, 0xA0,
-    0x040E, 0x13,
-    0x040F, 0x40,
-    0x034C, 0x19,
-    0x034D, 0xA0,
-    0x034E, 0x13,
-    0x034F, 0x40,
-    0x3620, 0x01,
-    0x3621, 0x01,
-    0x3C12, 0x62,
-    0x3C13, 0x32,
-    0x3C14, 0x20,
-    0x3F81, 0x46,
-    0x3FFD, 0x6E,
-    0x3FFF, 0x64,
-    0x0202, 0x13,
-    0x0203, 0x69,
-};
-
-#endif /*_BRZBFRONT2_SENSOR_SETTING_H*/
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2_ana_gain_table.h
deleted file mode 100644
index 3229f029..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2_ana_gain_table.h
+++ /dev/null
@@ -1,1034 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzbfront2_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __BRZBFRONT2_ANA_GAIN_TABLE_H__
-#define __BRZBFRONT2_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 brzbfront2_ana_gain_table[] = {
-    1024,
-    1026,
-    1027,
-    1028,
-    1029,
-    1030,
-    1031,
-    1032,
-    1033,
-    1034,
-    1035,
-    1036,
-    1037,
-    1038,
-    1039,
-    1040,
-    1041,
-    1042,
-    1043,
-    1044,
-    1045,
-    1046,
-    1047,
-    1048,
-    1049,
-    1050,
-    1051,
-    1052,
-    1053,
-    1054,
-    1055,
-    1056,
-    1058,
-    1059,
-    1060,
-    1061,
-    1062,
-    1063,
-    1064,
-    1065,
-    1066,
-    1067,
-    1068,
-    1069,
-    1070,
-    1072,
-    1073,
-    1074,
-    1075,
-    1076,
-    1077,
-    1078,
-    1079,
-    1080,
-    1082,
-    1083,
-    1084,
-    1085,
-    1086,
-    1087,
-    1088,
-    1089,
-    1090,
-    1092,
-    1093,
-    1094,
-    1095,
-    1096,
-    1097,
-    1098,
-    1100,
-    1101,
-    1102,
-    1103,
-    1104,
-    1105,
-    1107,
-    1108,
-    1109,
-    1110,
-    1111,
-    1112,
-    1114,
-    1115,
-    1116,
-    1117,
-    1118,
-    1120,
-    1121,
-    1122,
-    1123,
-    1124,
-    1126,
-    1127,
-    1128,
-    1129,
-    1130,
-    1132,
-    1133,
-    1134,
-    1135,
-    1137,
-    1138,
-    1139,
-    1140,
-    1141,
-    1143,
-    1144,
-    1145,
-    1146,
-    1148,
-    1149,
-    1150,
-    1152,
-    1153,
-    1154,
-    1155,
-    1157,
-    1158,
-    1159,
-    1160,
-    1162,
-    1163,
-    1164,
-    1166,
-    1167,
-    1168,
-    1169,
-    1171,
-    1172,
-    1173,
-    1175,
-    1176,
-    1177,
-    1179,
-    1180,
-    1181,
-    1183,
-    1184,
-    1185,
-    1187,
-    1188,
-    1189,
-    1191,
-    1192,
-    1193,
-    1195,
-    1196,
-    1198,
-    1199,
-    1200,
-    1202,
-    1203,
-    1204,
-    1206,
-    1207,
-    1209,
-    1210,
-    1211,
-    1213,
-    1214,
-    1216,
-    1217,
-    1218,
-    1220,
-    1221,
-    1223,
-    1224,
-    1225,
-    1227,
-    1228,
-    1230,
-    1231,
-    1233,
-    1234,
-    1236,
-    1237,
-    1238,
-    1240,
-    1241,
-    1243,
-    1244,
-    1246,
-    1247,
-    1249,
-    1250,
-    1252,
-    1253,
-    1255,
-    1256,
-    1258,
-    1259,
-    1261,
-    1262,
-    1264,
-    1265,
-    1267,
-    1268,
-    1270,
-    1272,
-    1273,
-    1275,
-    1276,
-    1278,
-    1279,
-    1281,
-    1282,
-    1284,
-    1286,
-    1287,
-    1289,
-    1290,
-    1292,
-    1293,
-    1295,
-    1297,
-    1298,
-    1300,
-    1301,
-    1303,
-    1305,
-    1306,
-    1308,
-    1310,
-    1311,
-    1313,
-    1315,
-    1316,
-    1318,
-    1319,
-    1321,
-    1323,
-    1324,
-    1326,
-    1328,
-    1329,
-    1331,
-    1333,
-    1335,
-    1336,
-    1338,
-    1340,
-    1341,
-    1343,
-    1345,
-    1347,
-    1348,
-    1350,
-    1352,
-    1354,
-    1355,
-    1357,
-    1359,
-    1361,
-    1362,
-    1364,
-    1366,
-    1368,
-    1369,
-    1371,
-    1373,
-    1375,
-    1377,
-    1378,
-    1380,
-    1382,
-    1384,
-    1386,
-    1388,
-    1389,
-    1391,
-    1393,
-    1395,
-    1397,
-    1399,
-    1400,
-    1402,
-    1404,
-    1406,
-    1408,
-    1410,
-    1412,
-    1414,
-    1416,
-    1417,
-    1419,
-    1421,
-    1423,
-    1425,
-    1427,
-    1429,
-    1431,
-    1433,
-    1435,
-    1437,
-    1439,
-    1441,
-    1443,
-    1445,
-    1447,
-    1449,
-    1451,
-    1453,
-    1455,
-    1457,
-    1459,
-    1461,
-    1463,
-    1465,
-    1467,
-    1469,
-    1471,
-    1473,
-    1475,
-    1477,
-    1479,
-    1482,
-    1484,
-    1486,
-    1488,
-    1490,
-    1492,
-    1494,
-    1496,
-    1498,
-    1501,
-    1503,
-    1505,
-    1507,
-    1509,
-    1511,
-    1514,
-    1516,
-    1518,
-    1520,
-    1522,
-    1525,
-    1527,
-    1529,
-    1531,
-    1534,
-    1536,
-    1538,
-    1540,
-    1543,
-    1545,
-    1547,
-    1549,
-    1552,
-    1554,
-    1556,
-    1559,
-    1561,
-    1563,
-    1566,
-    1568,
-    1570,
-    1573,
-    1575,
-    1577,
-    1580,
-    1582,
-    1584,
-    1587,
-    1589,
-    1592,
-    1594,
-    1597,
-    1599,
-    1601,
-    1604,
-    1606,
-    1609,
-    1611,
-    1614,
-    1616,
-    1619,
-    1621,
-    1624,
-    1626,
-    1629,
-    1631,
-    1634,
-    1636,
-    1639,
-    1641,
-    1644,
-    1647,
-    1649,
-    1652,
-    1654,
-    1657,
-    1660,
-    1662,
-    1665,
-    1668,
-    1670,
-    1673,
-    1676,
-    1678,
-    1681,
-    1684,
-    1686,
-    1689,
-    1692,
-    1694,
-    1697,
-    1700,
-    1703,
-    1706,
-    1708,
-    1711,
-    1714,
-    1717,
-    1719,
-    1722,
-    1725,
-    1728,
-    1731,
-    1734,
-    1737,
-    1739,
-    1742,
-    1745,
-    1748,
-    1751,
-    1754,
-    1757,
-    1760,
-    1763,
-    1766,
-    1769,
-    1772,
-    1775,
-    1778,
-    1781,
-    1784,
-    1787,
-    1790,
-    1793,
-    1796,
-    1799,
-    1802,
-    1805,
-    1808,
-    1812,
-    1815,
-    1818,
-    1821,
-    1824,
-    1827,
-    1830,
-    1834,
-    1837,
-    1840,
-    1843,
-    1847,
-    1850,
-    1853,
-    1856,
-    1860,
-    1863,
-    1866,
-    1870,
-    1873,
-    1876,
-    1880,
-    1883,
-    1886,
-    1890,
-    1893,
-    1897,
-    1900,
-    1904,
-    1907,
-    1910,
-    1914,
-    1917,
-    1921,
-    1924,
-    1928,
-    1932,
-    1935,
-    1939,
-    1942,
-    1946,
-    1950,
-    1953,
-    1957,
-    1960,
-    1964,
-    1968,
-    1972,
-    1975,
-    1979,
-    1983,
-    1986,
-    1990,
-    1994,
-    1998,
-    2002,
-    2005,
-    2009,
-    2013,
-    2017,
-    2021,
-    2025,
-    2029,
-    2033,
-    2037,
-    2041,
-    2045,
-    2048,
-    2053,
-    2057,
-    2061,
-    2065,
-    2069,
-    2073,
-    2077,
-    2081,
-    2085,
-    2089,
-    2093,
-    2098,
-    2102,
-    2106,
-    2110,
-    2115,
-    2119,
-    2123,
-    2127,
-    2132,
-    2136,
-    2140,
-    2145,
-    2149,
-    2154,
-    2158,
-    2163,
-    2167,
-    2171,
-    2176,
-    2180,
-    2185,
-    2190,
-    2194,
-    2199,
-    2203,
-    2208,
-    2213,
-    2217,
-    2222,
-    2227,
-    2232,
-    2236,
-    2241,
-    2246,
-    2251,
-    2256,
-    2260,
-    2265,
-    2270,
-    2275,
-    2280,
-    2285,
-    2290,
-    2295,
-    2300,
-    2305,
-    2310,
-    2315,
-    2320,
-    2326,
-    2331,
-    2336,
-    2341,
-    2346,
-    2352,
-    2357,
-    2362,
-    2367,
-    2373,
-    2378,
-    2384,
-    2389,
-    2395,
-    2400,
-    2405,
-    2411,
-    2417,
-    2422,
-    2428,
-    2433,
-    2439,
-    2445,
-    2450,
-    2456,
-    2462,
-    2468,
-    2474,
-    2479,
-    2485,
-    2491,
-    2497,
-    2503,
-    2509,
-    2515,
-    2521,
-    2527,
-    2533,
-    2539,
-    2546,
-    2552,
-    2558,
-    2564,
-    2571,
-    2577,
-    2583,
-    2590,
-    2596,
-    2602,
-    2609,
-    2615,
-    2622,
-    2629,
-    2635,
-    2642,
-    2648,
-    2655,
-    2662,
-    2669,
-    2675,
-    2682,
-    2689,
-    2696,
-    2703,
-    2710,
-    2717,
-    2724,
-    2731,
-    2738,
-    2745,
-    2753,
-    2760,
-    2767,
-    2775,
-    2782,
-    2789,
-    2797,
-    2804,
-    2812,
-    2819,
-    2827,
-    2834,
-    2842,
-    2850,
-    2858,
-    2865,
-    2873,
-    2881,
-    2889,
-    2897,
-    2905,
-    2913,
-    2921,
-    2929,
-    2938,
-    2946,
-    2954,
-    2963,
-    2971,
-    2979,
-    2988,
-    2996,
-    3005,
-    3014,
-    3022,
-    3031,
-    3040,
-    3049,
-    3058,
-    3067,
-    3076,
-    3085,
-    3094,
-    3103,
-    3112,
-    3121,
-    3131,
-    3140,
-    3149,
-    3159,
-    3168,
-    3178,
-    3188,
-    3197,
-    3207,
-    3217,
-    3227,
-    3237,
-    3247,
-    3257,
-    3267,
-    3277,
-    3288,
-    3298,
-    3308,
-    3319,
-    3329,
-    3340,
-    3351,
-    3361,
-    3372,
-    3383,
-    3394,
-    3405,
-    3416,
-    3427,
-    3438,
-    3450,
-    3461,
-    3473,
-    3484,
-    3496,
-    3507,
-    3519,
-    3531,
-    3543,
-    3555,
-    3567,
-    3579,
-    3592,
-    3604,
-    3616,
-    3629,
-    3641,
-    3654,
-    3667,
-    3680,
-    3693,
-    3706,
-    3719,
-    3732,
-    3745,
-    3759,
-    3772,
-    3786,
-    3800,
-    3814,
-    3827,
-    3841,
-    3856,
-    3870,
-    3884,
-    3899,
-    3913,
-    3928,
-    3943,
-    3957,
-    3972,
-    3987,
-    4003,
-    4018,
-    4033,
-    4049,
-    4065,
-    4081,
-    4096,
-    4113,
-    4129,
-    4145,
-    4162,
-    4178,
-    4195,
-    4212,
-    4229,
-    4246,
-    4263,
-    4280,
-    4298,
-    4316,
-    4333,
-    4351,
-    4370,
-    4388,
-    4406,
-    4425,
-    4444,
-    4463,
-    4482,
-    4501,
-    4520,
-    4540,
-    4560,
-    4579,
-    4600,
-    4620,
-    4640,
-    4661,
-    4682,
-    4703,
-    4724,
-    4745,
-    4767,
-    4789,
-    4810,
-    4833,
-    4855,
-    4878,
-    4900,
-    4923,
-    4947,
-    4970,
-    4994,
-    5018,
-    5042,
-    5066,
-    5091,
-    5116,
-    5141,
-    5166,
-    5191,
-    5217,
-    5243,
-    5270,
-    5296,
-    5323,
-    5350,
-    5378,
-    5406,
-    5434,
-    5462,
-    5490,
-    5519,
-    5549,
-    5578,
-    5608,
-    5638,
-    5668,
-    5699,
-    5730,
-    5762,
-    5794,
-    5826,
-    5858,
-    5891,
-    5925,
-    5958,
-    5992,
-    6027,
-    6062,
-    6097,
-    6133,
-    6169,
-    6205,
-    6242,
-    6279,
-    6317,
-    6356,
-    6394,
-    6433,
-    6473,
-    6513,
-    6554,
-    6595,
-    6637,
-    6679,
-    6722,
-    6766,
-    6809,
-    6854,
-    6899,
-    6945,
-    6991,
-    7038,
-    7085,
-    7134,
-    7183,
-    7232,
-    7282,
-    7333,
-    7385,
-    7437,
-    7490,
-    7544,
-    7599,
-    7654,
-    7711,
-    7768,
-    7826,
-    7885,
-    7944,
-    8005,
-    8066,
-    8129,
-    8192,
-    8257,
-    8323,
-    8389,
-    8457,
-    8526,
-    8595,
-    8666,
-    8739,
-    8812,
-    8887,
-    8963,
-    9040,
-    9119,
-    9199,
-    9280,
-    9363,
-    9447,
-    9533,
-    9620,
-    9710,
-    9800,
-    9893,
-    9987,
-    10083,
-    10181,
-    10281,
-    10382,
-    10486,
-    10592,
-    10700,
-    10811,
-    10923,
-    11038,
-    11156,
-    11276,
-    11398,
-    11523,
-    11651,
-    11782,
-    11916,
-    12053,
-    12193,
-    12337,
-    12484,
-    12634,
-    12788,
-    12946,
-    13108,
-    13274,
-    13444,
-    13618,
-    13798,
-    13982,
-    14170,
-    14365,
-    14564,
-    14769,
-    14980,
-    15197,
-    15421,
-    15651,
-    15888,
-    16132,
-    16384,
-    16645,
-    16913,
-    17190,
-    17477,
-    17773,
-    18079,
-    18397,
-    18725,
-    19066,
-    19419,
-    19785,
-    20165,
-    20561,
-    20972,
-    21400,
-    21846,
-    22311,
-    22796,
-    23302,
-    23832,
-    24386,
-    24967,
-    25576,
-    26215,
-    26887,
-    27595,
-    28340,
-    29128,
-    29960,
-    30841,
-    31776,
-    32768,
-    33826,
-    34953,
-    36158,
-    37450,
-    38837,
-    40330,
-    41944,
-    43691,
-    45591,
-    47663,
-    49933,
-    52429,
-    55189,
-    58255,
-    61681,
-    65536,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2mipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2mipiraw_Sensor.c
deleted file mode 100755
index 6831d974..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2mipiraw_Sensor.c
+++ /dev/null
@@ -1,1458 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     BRZBFRONT2mipiraw_Sensor.c
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "brzbfront2mipiraw_Sensor.h"
-
-
-#define brzbfront2_EEPROM_READ_ID	0xA9
-#define OTP_SIZE    0x2000  /* 8KB */
-#define LRC_L_REG   0x7A98  /* sensor reg */
-#define LRC_R_REG   0x7B1C
-#define SEAMLEES_GRP_HOLD 0x0104
-
-#define DEBUG_LOG_EN 0
-#define PFX "brzbfront2_camera_sensor"
-#define LOG_INF(format, args...) pr_info(PFX "I [%s] " format, __func__, ##args)
-#define LOG_ERR(format, args...) pr_err(PFX "E [%s] " format, __func__, ##args)
-#define LOG_DEBUG(...) do { if ((DEBUG_LOG_EN)) LOG_INF(__VA_ARGS__); } while (0)
-
-static const char * const clk_names[] = {
-	ADAPTOR_CLK_NAMES
-};
-
-static const char * const reg_names[] = {
-	ADAPTOR_REGULATOR_NAMES
-};
-
-static const char * const state_names[] = {
-	ADAPTOR_STATE_NAMES
-};
-
-static int stream_refcnt_for_aov = 0;
-
-static int init_ctx(
-	struct subdrv_ctx *ctx, struct i2c_client *i2c_client, u8 i2c_write_id);
-static int brzbfront2_open(struct subdrv_ctx *ctx);
-static int brzbfront2_get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-// static int get_csi_param(
-// 	struct subdrv_ctx *ctx,
-// 	enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-// 	struct mtk_csi_param *csi_param);
-static int get_sensor_temperature(void *arg);
-static u16 get_gain2reg(u32 gain);
-static void set_group_hold(void *arg, u8 en);
-
-#ifdef brzbfront2_AOV_MCLK_26M
-static int set_pwr_seq_reset_view_to_sensing(void *arg);
-#endif /* brzbfront2_AOV_MCLK_26M */
-
-static int brzbfront2_streaming_control(void *arg, bool enable);
-static int brzbfront2_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront2_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront2_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void Imx615_fab_read(struct subdrv_ctx *ctx);
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront2_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void set_sensor_cali(void *arg);
-static void get_sensor_cali(void* arg);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int brzbfront2_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-/* STRUCT */
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, brzbfront2_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, brzbfront2_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, brzbfront2_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, brzbfront2_get_otp_checksum_data},
-	// {SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, brzbfront2_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, brzbfront2_set_awb_gain},
-};
-
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA9,
-	.i2c_write_id = 0xA8,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x000F,
-
-	// .addr_af = 0x0092,
-	// .addr_afmacro = 0x0092,
-	// .addr_afinf = 0x0094,
-	// .addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C1,
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01510008,  /* cal_layout_table */
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA8,
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0618,
-		.addr_qsc = 0x1000, /* QSC_EEPROM_ADDR 0x0C90~0x12A7*/
-		.sensor_reg_addr_qsc = 0xC500, /*QSC_Sensor_ADDR*/
-
-		.lrc_support = TRUE,
-		.lrc_size = 0x0104,
-		.addr_lrc = 0x14B0, /* LRC_EEPROM_ADDR 0x14B0~0x15B3*/
-		.sensor_reg_addr_lrc = 0x7A98, /*useless, use LRC_L_REG and LRC_R_REG*/
-	},
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 2448,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 1280,
-            .vsize = 960,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 6560,
-            .vsize = 4928,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1856,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 1640,
-            .vsize = 1232,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-// static int stream_refcnt_for_aov;
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{  /* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = brzbfront2_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront2_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzbfront2_preview_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbfront2_preview_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 7642,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 16,
-			.w0_size = 6560,
-			.h0_size = 4896,
-			.scale_w = 3280,
-			.scale_h = 2448,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x40,
-			.need_bw_change = 1,
-		},
-	},
-	{	/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = brzbfront2_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront2_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 7642,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 16,
-			.w0_size = 6560,
-			.h0_size = 4896,
-			.scale_w = 3280,
-			.scale_h = 2448,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x40,
-			.need_bw_change = 1,
-		},
-	},
-
-	{/*3264x1836 @30FPS BIN w/o PD DataRate 780Mbps/lane VB Max.*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = brzbfront2_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront2_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 334400000,
-		.linelength = 3768,
-		.framelength = 2958,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 312000000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x47,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For seamless2 group*/
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = brzbfront2_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront2_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 2038,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x47,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For seamless2 group*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = brzbfront2_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront2_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 2038,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x47,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg V2-4 1280x960,10fps,4x4Binning_Crop,w/o PD,For MIPI<1.5G(Skew off)&Hblank=2.4us*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = brzbfront2_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront2_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 481000000,
-		.linelength = 2248,
-		.framelength = 21396,
-		.max_framerate = 100,
-		.mipi_pixel_rate = 561600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 544,
-			.w0_size = 6560,
-			.h0_size = 3840,
-			.scale_w = 1640,
-			.scale_h = 960,
-			.x1_offset = 180,
-			.y1_offset = 0,
-			.w1_size = 1280,
-			.h1_size = 960,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1280,
-			.h2_tg_size = 960,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 879,
-		.csi_param = {
-			.dphy_trail = 0x60,
-			.need_bw_change = 1,
-		},
-		.aov_mode = 1,
-		.s_dummy_support = 0,
-		.ae_ctrl_support = IMGSENSOR_AE_CONTROL_SUPPORT_VIEWING_MODE,
-	},
-	{/*Reg F1-S7, 6560x4928,15fps,Full,w/o PD,For seamless1 group*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = brzbfront2_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront2_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzbfront2_custom2_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbfront2_custom2_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 11480,
-		.framelength = 5017,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 6560,
-			.h0_size = 4928,
-			.scale_w = 6560,
-			.scale_h = 4928,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 6560,
-			.h1_size = 4928,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 6560,
-			.h2_tg_size = 4928,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 617,
-		.csi_param = {
-			.dphy_trail = 0xB3,
-			.need_bw_change = 1,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{/*Reg_B8-3 3264x1856,15fps,2X2Binning,w/o PD,For MaxVB*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = brzbfront2_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront2_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 15286,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 608,
-			.w0_size = 6560,
-			.h0_size = 3712,
-			.scale_w = 3280,
-			.scale_h = 1856,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1856,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1856,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0xB3,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg V3 1640x1232,30fps,4x4Binning,w/o PD,For MaxVB&Binning-Ave*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = brzbfront2_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront2_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 2248,
-		.framelength = 12810,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 780000000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 6560,
-			.h0_size = 4928,
-			.scale_w = 1640,
-			.scale_h = 1232,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1640,
-			.h1_size = 1232,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1640,
-			.h2_tg_size = 1232,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = BRZBFRONT2_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},  // todo
-	.i2c_addr_table = {0x20, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {6560, 4928},
-	.mirror = IMAGE_NORMAL,
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_6MA,  // todo
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_R,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,  // BASEGAIN * 1.123
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = brzbfront2_ana_gain_table,
-	.ana_gain_table_size = sizeof(brzbfront2_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 16,
-	.exposure_max =  128*(0xFFFF - 48),
-	.exposure_step = 1,
-	.exposure_margin = 48,
-
-	.frame_length_max = 0xffff-5,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1794700,
-
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.hdr_type = HDR_SUPPORT_NA,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.s_gph = set_group_hold,
-
-	.s_cali = set_sensor_cali,
-	.g_cali = get_sensor_cali,
-	// .s_data_rate_global_timing_phy_ctrl = set_data_rate_global_timing_phy_ctrl,
-#ifdef brzbfront2_AOV_MCLK_26M
-	.s_pwr_seq_reset_view_to_sensing = set_pwr_seq_reset_view_to_sensing,
-#endif
-	.s_streaming_control = brzbfront2_streaming_control,
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-
-	.reg_addr_exposure = {
-			{0x0202, 0x0203},
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3100,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205},
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = 0x0138,
-	.reg_addr_temp_read = 0x013A,
-	.reg_addr_auto_extend = 0x0350,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_fast_mode = 0x3020,
-
-	.init_setting_table = brzbfront2_init_setting,
-	.init_setting_len = ARRAY_SIZE(brzbfront2_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0x8ac2d94a,
-	.aov_sensor_support = FALSE,
-	.sensor_mode_ops = 0,  // debug
-	.sensor_debug_sensing_ut_on_scp = TRUE, // whether stream on scp
-	// .sensor_debug_dphy_global_timing_continuous_clk = TRUE,
-	.init_in_open = TRUE,
-	.streaming_ctrl_imp = TRUE,
-};
-
-static struct subdrv_ops ops = {
-	.init_ctx = init_ctx,
-	.open = brzbfront2_open,
-	.get_id = brzbfront2_get_imgsensor_id,
-	.vsync_notify = vsync_notify,
-	.get_csi_param = common_get_csi_param,
-	.get_temp = common_get_temp,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-    {HW_ID_RST, {0}, 2000},
-    {HW_ID_AVDD, {2900000,2900000}, 3000},
-    {HW_ID_DVDD, {1104000,1104000}, 4000},
-    {HW_ID_DOVDD, {1800000,1800000}, 3000},
-    {HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-    {HW_ID_RST, {1}, 4000}
-};
-
-static struct subdrv_pw_seq_entry aov_pw_seq[] = {
-	{HW_ID_MCLK, {26, MCLK_ULPOSC}, 0},
-	{HW_ID_SCL, {0}, 0},	/* default i2c bus scl 4 on apmcu side */
-	{HW_ID_SDA, {0}, 0},	/* default i2c bus sda 4 on apmcu side */
-	{HW_ID_RST, {0}, 0},
-	{HW_ID_AVDD, {2900000, 2900000}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_DVDD, {1104000, 1104000}, 1000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {6}, 1000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry brzbfront2_mipi_raw_entry = {
-	.name = "brzbfront2_mipi_raw",
-	.id = BRZBFRONT2_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.aov_pw_seq = aov_pw_seq,
-	.aov_pw_seq_cnt = ARRAY_SIZE(aov_pw_seq),
-	.ops = &ops,
-};
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static void Imx615_fab_read(struct subdrv_ctx *ctx)
-{
-    kal_uint16 reg_0xa01 = 0;
-    kal_uint16 reg_0xa1f = 0;
-    kal_uint16 reg_0xa20 = 0;
-
-    subdrv_i2c_wr_u8(ctx, 0x0A02, 0x7F);
-    subdrv_i2c_wr_u8(ctx, 0x0A00, 0x01);
-    msleep(1);
-
-    reg_0xa01 = subdrv_i2c_rd_u8(ctx, 0x0A01);
-    reg_0xa1f = subdrv_i2c_rd_u8(ctx, 0x0A1F);
-    reg_0xa20 = subdrv_i2c_rd_u8(ctx, 0x0A20);
-
-    pr_info("Read fab2 reg table [0xa01->0x%x, 0xa1f->0x%x, 0xa20->0x%x]", reg_0xa01, reg_0xa1f, reg_0xa20);
-    if (reg_0xa01 == 0x01) {
-        if (reg_0xa1f == 0xB4 && reg_0xa20 == 0x01) {
-            msleep(2);
-            subdrv_i2c_wr_u8(ctx, 0x0A00, 0x00);
-            sensor_init(ctx);
-            subdrv_i2c_wr_u8(ctx, 0x574B, 0x01);
-            subdrv_i2c_wr_u8(ctx, 0x5765, 0x33);
-        }else if (reg_0xa20 != 0x01 || reg_0xa1f != 0xB4) {
-            subdrv_i2c_wr_u8(ctx, 0x0A00, 0x00);
-            sensor_init(ctx);
-        }
-
-    } else {
-        pr_info("Read 0xa01 vaule is 0x%x",reg_0xa01);
-        pr_info("IMX615 read reg_0xa01 failed,just write init setting");
-        sensor_init(ctx);
-    }
-}
-
-
-static int brzbfront2_open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	DRV_LOG_MUST(ctx, "for brzbfront2 start\n");
-
-	/* initail setting */
-	// sensor_init(ctx);
-	Imx615_fab_read(ctx);
-
-	/* get sensor id */
-	if (brzbfront2_get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static int brzbfront2_get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	static bool first_read = KAL_TRUE;
-
-	LOG_INF("for brzbfront2 id\n");
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			LOG_INF("i2c_write_id:0x%x sensor_id(cur/exp):0x%x/0x%x\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x615) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					LOG_INF("first read eeprom +");
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-					LOG_INF("first read eeprom -");
-				}
-				return ERROR_NONE;
-			}
-			LOG_INF("Read sensor id fail, id(0x%x)\n",
-				ctx->i2c_write_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		/* if Sensor ID is not correct,
-		 * Must set *sensor_id to 0xFFFFFFFF
-		 */
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-static int brzbfront2_streaming_control(void *arg, bool enable) {
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	int ret = 0;
-	DRV_LOG(ctx, "E!\n");
-
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	DRV_LOG_MUST(ctx,
-		"brzbfront2 streaming_enable(0=Sw Standby,1=streaming):(%d)\n", enable);
-
-	if (enable) { // stream on
-		if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-			stream_refcnt_for_aov = 1;
-		}
-		subdrv_i2c_wr_u8(ctx, 0x0100, 0x01);
-	} else { // stream off
-		subdrv_i2c_wr_u8(ctx, 0x0100, 0x00);
-		if (stream_refcnt_for_aov) {
-			// i2c bus scl4 on apmcu side
-			ret = pinctrl_select_state(
-				_adaptor_ctx->pinctrl,
-				_adaptor_ctx->state[STATE_SCL_AP]);
-			if (ret < 0) {
-				DRV_LOG_MUST(ctx,
-					"brzbfront2 select(%s)(fail),ret(%d)\n",
-					state_names[STATE_SCL_AP], ret);
-				return ret;
-			}
-			DRV_LOG(ctx, "brzbfront2 select(%s)(correct)\n", state_names[STATE_SCL_AP]);
-
-			// i2c bus sda4 on apmcu side
-			ret = pinctrl_select_state(
-				_adaptor_ctx->pinctrl,
-				_adaptor_ctx->state[STATE_SDA_AP]);
-			if (ret < 0) {
-				DRV_LOG_MUST(ctx,
-					"brzbfront2 select(%s)(fail),ret(%d)\n",
-					state_names[STATE_SDA_AP], ret);
-				return ret;
-			}
-			DRV_LOG(ctx, "brzbfront2 select(%s)(correct)\n", state_names[STATE_SDA_AP]);
-			mdelay(1);
-		}
-		stream_refcnt_for_aov = 0;
-
-	}
-	return ret;
-}
-
-#ifdef brzbfront2_AOV_MCLK_26M
-static int set_pwr_seq_reset_view_to_sensing(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	DRV_LOGE(ctx, "brzbfront2 set_pwr_seq_reset_view_to_sensing");
-
-	int ret = 0;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	/* switch viewing mode sw stand-by to hw stand-by */
-	// 1. set gpio
-	// xclr(reset) = 0
-	ret = pinctrl_select_state(
-		_adaptor_ctx->pinctrl,
-		_adaptor_ctx->state[STATE_RST_LOW]);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"select(%s)(fail),ret(%d)\n",
-			state_names[STATE_RST_LOW], ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "select(%s)(correct)\n", state_names[STATE_RST_LOW]);
-	mdelay(1);	// response time T4-T6 in datasheet
-
-#ifdef PWR_SEQ_ALL_USE_FOR_AOV_MODE_TRANSITION
-	ret = pwr_seq_common_disable_for_mode_transition(_adaptor_ctx);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"pwr_seq_common_disable_for_mode_transition(fail),ret(%d)\n",
-			ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "pwr_seq_common_disable_for_mode_transition(correct)\n");
-	// switch hw stand-by to sensing mode sw stand-by
-	ret = pwr_seq_common_enable_for_mode_transition(_adaptor_ctx);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"pwr_seq_common_enable_for_mode_transition(fail),ret(%d)\n",
-			ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "pwr_seq_common_enable_for_mode_transition)(correct)\n");
-#endif
-	// xclr(reset) = 1
-	ret = pinctrl_select_state(
-		_adaptor_ctx->pinctrl,
-		_adaptor_ctx->state[STATE_RST_HIGH]);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"select(%s)(fail),ret(%d)\n",
-			state_names[STATE_RST_HIGH], ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "select(%s)(correct)\n", state_names[STATE_RST_HIGH]);
-	mdelay(4);	// response time T7 in datasheet
-	return ret;
-
-}
-#endif /* brzbfront2_AOV_MCLK_26M */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x50)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 80;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG_MUST(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (1024 - (1024 * BASEGAIN) / gain);
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, SEAMLEES_GRP_HOLD, 0x01);
-	else
-		set_i2c_buffer(ctx, SEAMLEES_GRP_HOLD, 0x00);
-}
-
-
-
-static int brzbfront2_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	return brzbfront2_get_imgsensor_id(ctx, (u32 *)para);
-}
-
-static int brzbfront2_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG_MUST(ctx,
-		"E: set seamless switch %u %u\n",
-		ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table
-		== NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	update_mode_info(ctx, scenario_id);
-
-	subdrv_i2c_wr_u8(ctx, SEAMLEES_GRP_HOLD, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	subdrv_i2c_wr_u8(ctx, SEAMLEES_GRP_HOLD, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG_MUST(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int brzbfront2_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG_MUST(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	switch (mode) {
-	case 5:
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x00); /* dig_gain = 0 */
-		break;
-	default:
-		subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-		break;
-	}
-
-	if ((ctx->test_pattern) && (mode != ctx->test_pattern)) {
-		if (ctx->test_pattern == 5)
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-		else if (mode == 0)
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /* No pattern */
-	}
-
-	ctx->test_pattern = mode;
-	return ERROR_NONE;
-}
-
-
-// static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u32 addr_sensorver = 0x0018;
-// 	struct oplus_eeprom_info_struct* infoPtr;
-// 	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-// 	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-// 	*len = sizeof(oplus_eeprom_info);
-// 	if (subdrv_i2c_rd_u8(ctx, addr_sensorver) != 0x00) {
-// 		printk("need to convert to 10bit");
-// 		infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 4) | (infoPtr->afInfo[0] >> 4));
-// 		infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 4);
-// 		infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 4) | (infoPtr->afInfo[2] >> 4));
-// 		infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 4);
-// 		infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 4) | (infoPtr->afInfo[4] >> 4));
-// 		infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 4);
-// 	}
-// 	return 0;
-// }
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, brzbfront2_EEPROM_READ_ID >> 1,
-		addr, data, size) < 0) {
-		DRV_LOGE(ctx, "brzbfront2 read_cmos_eeprom_p8 failed\n");
-		return false;
-	}
-	DRV_LOGE(ctx, "brzbfront2 read_cmos_eeprom_p8 success read size = %d\n", size);
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "brzbfront2 read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "brzbfront2 read_otp_info end\n");
-}
-
-static int brzbfront2_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read read read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3621, 0x01);
-			LOG_INF("set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x32D2, 0x00);
-		}
-	}
-
-	/* SPC data */
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0xD200;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0xD300;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-
-	/* LRC data */
-	support = info[idx].lrc_support;
-	pbuf = info[idx].preload_lrc_table;
-	size = info[idx].lrc_size;
-	if (support) {
-		if (pbuf != NULL && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, LRC_L_REG, pbuf, size / 2); // L data
-			subdrv_i2c_wr_seq_p8(ctx, LRC_R_REG, pbuf + size / 2, size / 2); // R data
-			DRV_LOG(ctx, "set LRC calibration data done.");
-		} else {
-			DRV_LOGE(ctx, "LRC calibration data error");
-		}
-	}
-
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-
-	/* LRC data */
-	support = info[idx].lrc_support;
-	size = info[idx].lrc_size;
-	addr = info[idx].addr_lrc;
-	buf = info[idx].lrc_table;
-	if (support && size > 0) {
-		if (info[idx].preload_lrc_table == NULL) {
-			info[idx].preload_lrc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_lrc_table, size)) {
-					DRV_LOGE(ctx, "preload LRC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_lrc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload LRC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "LRC data is already preloaded %u bytes", size);
-		}
-	}
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static int brzbfront2_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-
-	set_group_hold((void *)ctx, 1);
-	subdrv_i2c_wr_u8(ctx, 0x0B8E, (u8)(awb_gain->ABS_GAIN_GR >> 8)); // GR
-	subdrv_i2c_wr_u8(ctx, 0x0B8F, (u8)(awb_gain->ABS_GAIN_GR & 0xFF)); // GR
-	subdrv_i2c_wr_u8(ctx, 0x0B90, (u8)(awb_gain->ABS_GAIN_R >> 8)); // R
-	subdrv_i2c_wr_u8(ctx, 0x0B91, (u8)(awb_gain->ABS_GAIN_R & 0xFF)); // R
-	subdrv_i2c_wr_u8(ctx, 0x0B92, (u8)(awb_gain->ABS_GAIN_B >> 8)); // B
-	subdrv_i2c_wr_u8(ctx, 0x0B93, (u8)(awb_gain->ABS_GAIN_B & 0xFF)); // B
-	subdrv_i2c_wr_u8(ctx, 0x0B94, (u8)(awb_gain->ABS_GAIN_GB >> 8)); // GB
-	subdrv_i2c_wr_u8(ctx, 0x0B95, (u8)(awb_gain->ABS_GAIN_GB & 0xFF)); // GB
-	set_group_hold((void *)ctx, 0);
-
-	DRV_LOG(ctx, "ABS_GAIN_GR(%d) ABS_GAIN_R(%d) ABS_GAIN_B(%d) ABS_GAIN_GB(%d)",
-		awb_gain->ABS_GAIN_GR, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B, awb_gain->ABS_GAIN_GB);
-
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2mipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2mipiraw_Sensor.h
deleted file mode 100644
index 443ac63e..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront2_mipi_raw/brzbfront2mipiraw_Sensor.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     brzbfront2mipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZBFRONT2MIPI_SENSOR_H
-#define _BRZBFRONT2MIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-
-#include "brzbfront2_ana_gain_table.h"
-#include "brzbfront2_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#define EEPROM_READY 1	// #define it when eeprom ready
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/Makefile
deleted file mode 100755
index 665d1fc3..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/brzbfrontmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfront_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfront_Sensor_setting.h
deleted file mode 100755
index f86589c9..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfront_Sensor_setting.h
+++ /dev/null
@@ -1,764 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzbfront_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZBFRONTMIPI_SENSOR_SETTING_H
-#define _BRZBFRONTMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 brzbfront_sensor_init_setting[] = {
-	0x0136, 0x18,
-	0x0137, 0x00,
-	0x3C7E, 0x03,
-	0x3C7F, 0x05,
-	0x3E35, 0x00,
-	0x3E36, 0x00,
-	0x3E37, 0x00,
-	0x3F7F, 0x01,
-	0x4431, 0x04,
-	0x531C, 0x01,
-	0x531D, 0x02,
-	0x531E, 0x04,
-	0x5928, 0x00,
-	0x5929, 0x2F,
-	0x592A, 0x00,
-	0x592B, 0x85,
-	0x592C, 0x00,
-	0x592D, 0x32,
-	0x592E, 0x00,
-	0x592F, 0x88,
-	0x5930, 0x00,
-	0x5931, 0x3D,
-	0x5932, 0x00,
-	0x5933, 0x93,
-	0x5938, 0x00,
-	0x5939, 0x24,
-	0x593A, 0x00,
-	0x593B, 0x7A,
-	0x593C, 0x00,
-	0x593D, 0x24,
-	0x593E, 0x00,
-	0x593F, 0x7A,
-	0x5940, 0x00,
-	0x5941, 0x2F,
-	0x5942, 0x00,
-	0x5943, 0x85,
-	0x5F0E, 0x6E,
-	0x5F11, 0xC6,
-	0x5F17, 0x5E,
-	0x7990, 0x01,
-	0x7993, 0x5D,
-	0x7994, 0x5D,
-	0x7995, 0xA1,
-	0x799A, 0x01,
-	0x799D, 0x00,
-	0x8169, 0x01,
-	0x8359, 0x01,
-	0x9302, 0x1E,
-	0x9306, 0x1F,
-	0x930A, 0x26,
-	0x930E, 0x23,
-	0x9312, 0x23,
-	0x9316, 0x2C,
-	0x9317, 0x19,
-	0xB046, 0x01,
-	0xB048, 0x01,
-	0x0100, 0x00,
-};
-
-static u16 brzbfront_preview_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x1D,
-	0x0341, 0x80,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xF7,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x1D,
-	0x0203, 0x6E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xAF,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x5F,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x97,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xEB,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 brzbfront_capture_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x1D,
-	0x0341, 0x80,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xF7,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x1D,
-	0x0203, 0x6E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xAF,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x5F,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x97,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xEB,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 brzbfront_normal_video_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x0A,
-	0x0341, 0xE2,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x01,
-	0x0347, 0xC4,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0B,
-	0x034B, 0xE3,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x05,
-	0x040F, 0x10,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x05,
-	0x034F, 0x10,
-	0x0301, 0x06,
-	0x0303, 0x04,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0xD6,
-	0x030B, 0x01,
-	0x030D, 0x06,
-	0x030E, 0x00,
-	0x030F, 0xC8,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x0A,
-	0x0203, 0xD0,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x37,
-	0x080E, 0x00,
-	0x080F, 0x67,
-	0x0810, 0x00,
-	0x0811, 0x37,
-	0x0812, 0x00,
-	0x0813, 0x37,
-	0x0814, 0x00,
-	0x0815, 0x37,
-	0x0816, 0x00,
-	0x0817, 0xDF,
-	0x0818, 0x00,
-	0x0819, 0x2F,
-	0x0824, 0x00,
-	0x0825, 0xE3,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 brzbfront_hs_video_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x05,
-	0x0341, 0x70,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x01,
-	0x0347, 0xC4,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0B,
-	0x034B, 0xE3,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x05,
-	0x040F, 0x10,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x05,
-	0x034F, 0x10,
-	0x0301, 0x06,
-	0x0303, 0x04,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0xD6,
-	0x030B, 0x01,
-	0x030D, 0x06,
-	0x030E, 0x00,
-	0x030F, 0xC8,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x05,
-	0x0203, 0x5E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x37,
-	0x080E, 0x00,
-	0x080F, 0x67,
-	0x0810, 0x00,
-	0x0811, 0x37,
-	0x0812, 0x00,
-	0x0813, 0x37,
-	0x0814, 0x00,
-	0x0815, 0x37,
-	0x0816, 0x00,
-	0x0817, 0xDF,
-	0x0818, 0x00,
-	0x0819, 0x2F,
-	0x0824, 0x00,
-	0x0825, 0xE3,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 brzbfront_slim_video_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x05,
-	0x0341, 0xE6,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x01,
-	0x0347, 0xBC,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0B,
-	0x034B, 0xEB,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x04,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x05,
-	0x040F, 0x10,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x05,
-	0x034F, 0x10,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0x3A,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0x8B,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x05,
-	0x0203, 0xD4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-};
-
-static u16 brzbfront_custom1_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x07,
-	0x0341, 0x1E,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0xA7,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x0A,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0x46,
-	0x030B, 0x01,
-	0x030D, 0x02,
-	0x030E, 0x00,
-	0x030F, 0x1E,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x07,
-	0x0203, 0x0C,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-};
-
-static u16 brzbfront_custom2_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x1D,
-	0x0341, 0x80,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xF7,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x1D,
-	0x0203, 0x6E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xAF,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x5F,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x97,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xEB,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 brzbfront_custom3_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x14,
-	0x0343, 0x00,
-	0x0340, 0x0E,
-	0x0341, 0xC0,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x0A,
-	0x3F4C, 0x01,
-	0x3F4D, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x18,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x12,
-	0x040D, 0x00,
-	0x040E, 0x0D,
-	0x040F, 0x80,
-	0x034C, 0x12,
-	0x034D, 0x00,
-	0x034E, 0x0D,
-	0x034F, 0x80,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xE8,
-	0x0310, 0x01,
-	0x3F78, 0x02,
-	0x3F79, 0x0A,
-	0x3FFE, 0x00,
-	0x3FFF, 0x18,
-	0x5F0A, 0xB2,
-	0x0202, 0x0E,
-	0x0203, 0xAE,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0x9F,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xA7,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x57,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x87,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xE7,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 brzbfront_custom4_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x14,
-	0x0343, 0x00,
-	0x0340, 0x0E,
-	0x0341, 0x6C,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x0A,
-	0x3F4C, 0x01,
-	0x3F4D, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x18,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x12,
-	0x040D, 0x00,
-	0x040E, 0x0D,
-	0x040F, 0x80,
-	0x034C, 0x12,
-	0x034D, 0x00,
-	0x034E, 0x0D,
-	0x034F, 0x80,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x1C,
-	0x030B, 0x01,
-	0x030D, 0x06,
-	0x030E, 0x01,
-	0x030F, 0x9C,
-	0x0310, 0x01,
-	0x3F78, 0x02,
-	0x3F79, 0x0A,
-	0x3FFE, 0x00,
-	0x3FFF, 0x18,
-	0x5F0A, 0xB2,
-	0x0202, 0x0E,
-	0x0203, 0x5A,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfront_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfront_ana_gain_table.h
deleted file mode 100755
index d51a8edc..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfront_ana_gain_table.h
+++ /dev/null
@@ -1,492 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************/
-#ifndef __BRZBFRONT_ANA_GAIN_TABLE_H__
-#define __BRZBFRONT_ANA_GAIN_TABLE_H__
-static kal_uint32 brzbfront_ana_gain_table[] = {
-	1024,
-	1056,
-	1088,
-	1120,
-	1152,
-	1184,
-	1216,
-	1248,
-	1280,
-	1312,
-	1344,
-	1376,
-	1408,
-	1440,
-	1472,
-	1504,
-	1536,
-	1568,
-	1600,
-	1632,
-	1664,
-	1696,
-	1728,
-	1760,
-	1792,
-	1824,
-	1856,
-	1888,
-	1920,
-	1952,
-	1984,
-	2016,
-	2048,
-	2080,
-	2112,
-	2144,
-	2176,
-	2208,
-	2240,
-	2272,
-	2304,
-	2336,
-	2368,
-	2400,
-	2432,
-	2464,
-	2496,
-	2528,
-	2560,
-	2592,
-	2624,
-	2656,
-	2688,
-	2720,
-	2752,
-	2784,
-	2816,
-	2848,
-	2880,
-	2912,
-	2944,
-	2976,
-	3008,
-	3040,
-	3072,
-	3104,
-	3136,
-	3168,
-	3200,
-	3232,
-	3264,
-	3296,
-	3328,
-	3360,
-	3392,
-	3424,
-	3456,
-	3488,
-	3520,
-	3552,
-	3584,
-	3616,
-	3648,
-	3680,
-	3712,
-	3744,
-	3776,
-	3808,
-	3840,
-	3872,
-	3904,
-	3936,
-	3968,
-	4000,
-	4032,
-	4064,
-	4096,
-	4128,
-	4160,
-	4192,
-	4224,
-	4256,
-	4288,
-	4320,
-	4352,
-	4384,
-	4416,
-	4448,
-	4480,
-	4512,
-	4544,
-	4576,
-	4608,
-	4640,
-	4672,
-	4704,
-	4736,
-	4768,
-	4800,
-	4832,
-	4864,
-	4896,
-	4928,
-	4960,
-	4992,
-	5024,
-	5056,
-	5088,
-	5120,
-	5152,
-	5184,
-	5216,
-	5248,
-	5280,
-	5312,
-	5344,
-	5376,
-	5408,
-	5440,
-	5472,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6080,
-	6112,
-	6144,
-	6176,
-	6208,
-	6240,
-	6272,
-	6304,
-	6336,
-	6368,
-	6400,
-	6432,
-	6464,
-	6496,
-	6528,
-	6560,
-	6592,
-	6624,
-	6656,
-	6688,
-	6720,
-	6752,
-	6784,
-	6816,
-	6848,
-	6880,
-	6912,
-	6944,
-	6976,
-	7008,
-	7040,
-	7072,
-	7104,
-	7136,
-	7168,
-	7200,
-	7232,
-	7264,
-	7296,
-	7328,
-	7360,
-	7392,
-	7424,
-	7456,
-	7488,
-	7520,
-	7552,
-	7584,
-	7616,
-	7648,
-	7680,
-	7712,
-	7744,
-	7776,
-	7808,
-	7840,
-	7872,
-	7904,
-	7936,
-	7968,
-	8000,
-	8032,
-	8064,
-	8096,
-	8128,
-	8160,
-	8192,
-	8224,
-	8256,
-	8288,
-	8320,
-	8352,
-	8384,
-	8416,
-	8448,
-	8480,
-	8512,
-	8544,
-	8576,
-	8608,
-	8640,
-	8672,
-	8704,
-	8736,
-	8768,
-	8800,
-	8832,
-	8864,
-	8896,
-	8928,
-	8960,
-	8992,
-	9024,
-	9056,
-	9088,
-	9120,
-	9152,
-	9184,
-	9216,
-	9248,
-	9280,
-	9312,
-	9344,
-	9376,
-	9408,
-	9440,
-	9472,
-	9504,
-	9536,
-	9568,
-	9600,
-	9632,
-	9664,
-	9696,
-	9728,
-	9760,
-	9792,
-	9824,
-	9856,
-	9888,
-	9920,
-	9952,
-	9984,
-	10016,
-	10048,
-	10080,
-	10112,
-	10144,
-	10176,
-	10208,
-	10240,
-	10272,
-	10304,
-	10336,
-	10368,
-	10400,
-	10432,
-	10464,
-	10496,
-	10528,
-	10560,
-	10592,
-	10624,
-	10656,
-	10688,
-	10720,
-	10752,
-	10784,
-	10816,
-	10848,
-	10880,
-	10912,
-	10944,
-	10976,
-	11008,
-	11040,
-	11072,
-	11104,
-	11136,
-	11168,
-	11200,
-	11232,
-	11264,
-	11296,
-	11328,
-	11360,
-	11392,
-	11424,
-	11456,
-	11488,
-	11520,
-	11552,
-	11584,
-	11616,
-	11648,
-	11680,
-	11712,
-	11744,
-	11776,
-	11808,
-	11840,
-	11872,
-	11904,
-	11936,
-	11968,
-	12000,
-	12032,
-	12064,
-	12096,
-	12128,
-	12160,
-	12192,
-	12224,
-	12256,
-	12288,
-	12320,
-	12352,
-	12384,
-	12416,
-	12448,
-	12480,
-	12512,
-	12544,
-	12576,
-	12608,
-	12640,
-	12672,
-	12704,
-	12736,
-	12768,
-	12800,
-	12832,
-	12864,
-	12896,
-	12928,
-	12960,
-	12992,
-	13024,
-	13056,
-	13088,
-	13120,
-	13152,
-	13184,
-	13216,
-	13248,
-	13280,
-	13312,
-	13344,
-	13376,
-	13408,
-	13440,
-	13472,
-	13504,
-	13536,
-	13568,
-	13600,
-	13632,
-	13664,
-	13696,
-	13728,
-	13760,
-	13792,
-	13824,
-	13856,
-	13888,
-	13920,
-	13952,
-	13984,
-	14016,
-	14048,
-	14080,
-	14112,
-	14144,
-	14176,
-	14208,
-	14240,
-	14272,
-	14304,
-	14336,
-	14368,
-	14400,
-	14432,
-	14464,
-	14496,
-	14528,
-	14560,
-	14592,
-	14624,
-	14656,
-	14688,
-	14720,
-	14752,
-	14784,
-	14816,
-	14848,
-	14880,
-	14912,
-	14944,
-	14976,
-	15008,
-	15040,
-	15072,
-	15104,
-	15136,
-	15168,
-	15200,
-	15232,
-	15264,
-	15296,
-	15328,
-	15360,
-	15392,
-	15424,
-	15456,
-	15488,
-	15520,
-	15552,
-	15584,
-	15616,
-	15648,
-	15680,
-	15712,
-	15744,
-	15776,
-	15808,
-	15840,
-	15872,
-	15904,
-	15936,
-	15968,
-	16000,
-	16032,
-	16064,
-	16096,
-	16128,
-	16160,
-	16192,
-	16224,
-	16256,
-	16288,
-	16320,
-	16352,
-	16384,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfrontmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfrontmipiraw_Sensor.c
deleted file mode 100755
index 1d863afc..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfrontmipiraw_Sensor.c
+++ /dev/null
@@ -1,1620 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzbfrontmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "brzbfrontmipiraw_Sensor.h"
-
-#define PFX "brzbfront_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-
-#define BRZBFRONT_EEPROM_READ_ID			0xA9
-#define BRZBFRONT_EEPROM_WRITE_ID			0xA8
-#define BRZBFRONT_MAX_OFFSET				0x4000
-#define OTP_SIZE							0x2000
-#define OTP_QSC_VALID_ADDR    				0x0EC0
-#define QSC_IS_VALID_VAL      				0x01
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH		40
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int brzbfront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbfront_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static void get_sensor_cali(void* arg);
-static void set_sensor_cali(void *arg);
-static int brzbfront_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int power_off(struct subdrv_ctx *ctx, void *data);
-
-/* STRUCT */
-
-static struct eeprom_map_info brzbfront_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000C, 0x000D, 0x000E, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, brzbfront_set_test_pattern},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, brzbfront_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, brzbfront_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, brzbfront_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, brzbfront_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, brzbfront_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, brzbfront_streaming_resume},
-	{SENSOR_FEATURE_SET_ESHUTTER, brzbfront_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, brzbfront_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, brzbfront_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_SET_GAIN, brzbfront_set_gain},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01c40055,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA8,
-
-		.qsc_support = TRUE,
-		.qsc_size = 560,
-		.addr_qsc = 0x0C90, //QSC_EEPROM_ADDR
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1296,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1296,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1296,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4608,
-			.vsize = 3456,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1244,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = brzbfront_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront_preview_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-//		.raw_cnt = 1,
-//		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 2560,
-		.framelength = 7552,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 592800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x41,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = brzbfront_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-//		.raw_cnt = 1,
-//		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 2560,
-		.framelength = 7552,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 592800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x41,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = UNUSE_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = brzbfront_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 214000000,
-		.linelength = 2560,
-		.framelength = 2786,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 320000000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 444,
-			.w0_size = 4608,
-			.h0_size = 2608 ,
-			.scale_w = 2304,
-			.scale_h = 1304,
-			.x1_offset = 0,
-			.y1_offset = 4,
-			.w1_size = 2304,
-			.h1_size = 1296,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1296,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x4B,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_hs_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_hs_vid),
-		.mode_setting_table = brzbfront_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 214000000,
-		.linelength = 2560,
-		.framelength = 1392,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 320000000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 452,
-			.w0_size = 4608,
-			.h0_size = 2592 ,
-			.scale_w = 2304,
-			.scale_h = 1296,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1296,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1296,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x4B,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 60,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_slim_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_slim_vid),
-		.mode_setting_table = brzbfront_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 216000000,
-		.linelength = 2560,
-		.framelength = 1406,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 259200000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 444,
-			.w0_size = 4608,
-			.h0_size = 2608,
-			.scale_w = 2304,
-			.scale_h = 1304,
-			.x1_offset = 0,
-			.y1_offset = 4,
-			.w1_size = 2304,
-			.h1_size = 1296,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1296,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 120,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = brzbfront_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 124000000,
-		.linelength = 2560,
-		.framelength = 2018,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 139200000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 24,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = brzbfront_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront_custom2_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 2560,
-		.framelength = 7552,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 592800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x41,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = brzbfront_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 5120,
-		.framelength = 3776,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 556800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 4608,
-			.scale_h = 3456,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4608,
-			.h1_size = 3456,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4608,
-			.h2_tg_size = 3456,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 2,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {.dphy_trail = 0x45,},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = RMSC_MASK,
-//			.equivalent_fps = 15,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = brzbfront_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbfront_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 132000000,
-		.linelength = 2560,
-		.framelength = 1718,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 681600000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 696,
-			.y0_offset = 504,
-			.w0_size = 3264,
-			.h0_size = 2488,
-			.scale_w = 1632,
-			.scale_h = 1244,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1244,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1244,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 3,
-		.csi_param = {0},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = HDR_RAW_STAGGER_2EXP_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = BRZBFRONT_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0A22, 0x0A23},
-	.i2c_addr_table = {0x20, 0xff},
-	.i2c_burst_write_support = FALSE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {4656, 3496},
-	.mirror = IMAGE_HV_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_6MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_BAYER_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 16,
-	.ana_gain_type = 0, //0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC
-	.ana_gain_step = 1,
-	.ana_gain_table = brzbfront_ana_gain_table,
-	.ana_gain_table_size = sizeof(brzbfront_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max = (0xffff * 128) - 18,
-	.exposure_step = 1,
-	.exposure_margin = 18,
-
-	.frame_length_max = 0xffff,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1891000,
-
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.hdr_type = HDR_SUPPORT_NA,
-	.seamless_switch_support = FALSE,
-	.temperature_support = FALSE,
-	.g_temp = PARAM_UNDEFINED,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {{0x0202, 0x0203},},
-	.long_exposure_support = FALSE,
-	.reg_addr_exposure_lshift = PARAM_UNDEFINED,
-	.reg_addr_ana_gain = {{0x0204, 0x0205},},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = PARAM_UNDEFINED,
-	.reg_addr_temp_read = 0x0020,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = 0x0005,
-
-	.init_setting_table = brzbfront_sensor_init_setting,
-	.init_setting_len =  ARRAY_SIZE(brzbfront_sensor_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xb1893b4f,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.update_sof_cnt = common_update_sof_cnt,
-	.power_off = power_off,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-    {HW_ID_MCLK, {24}, 0},
-    {HW_ID_DVDD1, {1}, 2000},
-    {HW_ID_RST, {0}, 2000},
-    {HW_ID_AVDD, {2800000,2800000}, 3000},
-    {HW_ID_DVDD, {1050000,1050000}, 4000},
-    {HW_ID_DOVDD, {1800000,1800000}, 3000},
-    {HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-    {HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry brzbfront_mipi_raw_entry = {
-	.name = "brzbfront_mipi_raw",
-	.id = BRZBFRONT_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static void brzbfront_set_dummy(struct subdrv_ctx *ctx)
-{
-	DRV_LOG(ctx, "dummyline = %d, dummypixels = %d\n",
-		ctx->dummy_line, ctx->dummy_pixel);
-
-	subdrv_i2c_wr_u8(ctx, 0x0350, 0x00); /* Disable auto extend */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-
-	subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-	subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0342, ctx->line_length >> 8);
-	subdrv_i2c_wr_u8(ctx, 0x0343, ctx->line_length & 0xFF);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-}				/*      set_dummy  */
-
-static void brzbfront_set_max_framerate(struct subdrv_ctx *ctx, UINT16 framerate,
-			kal_bool min_framelength_en)
-{
-
-	kal_uint32 frame_length = ctx->frame_length;
-
-	DRV_LOG(ctx, "framerate = %d, min framelength should enable %d\n",
-		framerate, min_framelength_en);
-
-	frame_length = ctx->pclk / framerate * 10 / ctx->line_length;
-
-	if (frame_length >= ctx->min_frame_length)
-		ctx->frame_length = frame_length;
-	else
-		ctx->frame_length = ctx->min_frame_length;
-
-	ctx->dummy_line =
-		ctx->frame_length - ctx->min_frame_length;
-
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-
-		ctx->dummy_line =
-			ctx->frame_length - ctx->min_frame_length;
-	}
-	if (min_framelength_en)
-		ctx->min_frame_length = ctx->frame_length;
-
-	brzbfront_set_dummy(ctx);
-}
-
-static void brzbfront_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u32 *shutter, u32 frame_length, bool auto_extend_en)
-{
-	kal_uint16 realtime_fps = 0;
-	kal_int32 dummy_line = 0;
-	u8 exposure_margin = ctx->s_ctx.exposure_margin;
-
-	ctx->exposure[0] = *shutter;
-
-	/* Change frame time */
-	if (frame_length > 1)
-		dummy_line = frame_length - ctx->frame_length;
-
-	ctx->frame_length = ctx->frame_length + dummy_line;
-
-	if (ctx->exposure[0] > ctx->frame_length - exposure_margin)
-		ctx->frame_length = ctx->exposure[0] + exposure_margin;
-
-	if (ctx->frame_length > ctx->max_frame_length)
-		ctx->frame_length = ctx->max_frame_length;
-
-	ctx->exposure[0] = (ctx->exposure[0] < ctx->s_ctx.exposure_min)
-			? ctx->s_ctx.exposure_min : ctx->exposure[0];
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps >= 297 && realtime_fps <= 305) {
-			brzbfront_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps >= 147 && realtime_fps <= 150) {
-			brzbfront_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-			subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);	
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-		subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	}
-	/* Update Shutter */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	if (auto_extend_en)
-		subdrv_i2c_wr_u8(ctx, 0x0350, 0x01); /* Enable auto extend */
-	else
-		subdrv_i2c_wr_u8(ctx, 0x0350, 0x00); /* Disable auto extend */
-
-	subdrv_i2c_wr_u8(ctx, 0x0202, (ctx->exposure[0] >> 8) & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0203, ctx->exposure[0] & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	DRV_LOG(ctx, "Exit! shutter =%d, framelength =%d/%d, dummy_line=%d, auto_extend=%d\n",
-		ctx->exposure[0], ctx->frame_length, frame_length, dummy_line, subdrv_i2c_rd_u16(ctx, 0x0350));
-}	/* set_shutter_frame_length */
-
-static int brzbfront_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "shutter:%u, frame_length:%u\n", (u32)(*para), (u32) (*(para + 1)));
-	brzbfront_set_shutter_frame_length_convert(ctx, (u32 *)para, (u32) (*(para + 1)), (u16) (*(para + 2)));
-	return 0;
-}
-
-static void brzbfront_write_shutter(struct subdrv_ctx *ctx)
-{
-	kal_uint16 realtime_fps = 0;
-	u8 exposure_margin = 0;
-	DRV_LOG(ctx, "===brad shutter:%d\n", ctx->exposure[0]);
-	exposure_margin = ctx->s_ctx.exposure_margin;
-  	LOG_INF("exposure_margin:%d\n", exposure_margin);
-
-	if (ctx->exposure[0] > ctx->min_frame_length - exposure_margin) {
-		ctx->frame_length = ctx->exposure[0] + exposure_margin;
-	} else {
-		ctx->frame_length = ctx->min_frame_length;
-	}
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-	}
-
-	if (ctx->exposure[0] < ctx->s_ctx.exposure_min) {
-		ctx->exposure[0] = ctx->s_ctx.exposure_min;
-	}
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps >= 297 && realtime_fps <= 305) {
-			brzbfront_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps >= 147 && realtime_fps <= 150) {
-			brzbfront_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-			subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-		subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	}
-	/* Update Shutter */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, 0x0350, 0x01); /* Enable auto extend */
-	subdrv_i2c_wr_u8(ctx, 0x0202, (ctx->exposure[0] >> 8) & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0203, ctx->exposure[0] & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	DRV_LOG(ctx, "shutter =%d, framelength =%d\n", ctx->exposure[0], ctx->frame_length);
-}	/*	write_shutter  */
-
-static void brzbfront_set_shutter_convert(struct subdrv_ctx *ctx, u32 *shutter)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", *shutter);
-	ctx->exposure[0] = *shutter;
-
-	brzbfront_write_shutter(ctx);
-}
-
-static int brzbfront_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", *para);
-	brzbfront_set_shutter_convert(ctx, (u32 *)para);
-	return 0;
-}
-
-static void brzbfront_set_multi_shutter_frame_length(struct subdrv_ctx *ctx,
-		u32 *shutters, u16 exp_cnt,	u16 frame_length)
-{
-	int i = 0;
-	u32 fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[3] = {0};
-	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max(shutters[i], ctx->s_ctx.exposure_min);
-		shutters[i] = min(shutters[i], ctx->s_ctx.exposure_max);
-		if (cit_step)
-			shutters[i] = round_up(shutters[i], cit_step);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */
-	calc_fl[0] = shutters[0];
-	for (i = 1; i < last_exp_cnt; i++)
-		calc_fl[0] += ctx->exposure[i];
-	calc_fl[0] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (2) current se + current me + current le */
-	calc_fl[1] = shutters[0];
-	for (i = 1; i < exp_cnt; i++)
-		calc_fl[1] += shutters[i];
-	calc_fl[1] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (3) readout time cannot be overlapped */
-	calc_fl[2] =
-		(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-		ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-	if (last_exp_cnt == exp_cnt)
-		for (i = 1; i < exp_cnt; i++) {
-			readout_diff = ctx->exposure[i] - shutters[i];
-			calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-		}
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		ctx->frame_length = max(ctx->frame_length, calc_fl[i]);
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = shutters[i];
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		break;
-	case 2:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[2] = shutters[1] / exp_cnt;
-		break;
-	case 3:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[1] = shutters[1] / exp_cnt;
-		rg_shutters[2] = shutters[2] / exp_cnt;
-		break;
-	default:
-		break;
-	}
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[2],
-					rg_shutters[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					rg_shutters[i] & 0xFF);
-			}
-		}
-	}
-	DRV_LOG(ctx, "exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-
-	DRV_LOG(ctx, "yuan brz out");
-	/* group hold end */
-}
-
-static int brzbfront_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	brzbfront_set_multi_shutter_frame_length(ctx, (u32 *)(*feature_data),
-		(u16) (*(feature_data + 1)), (u16) (*(feature_data + 2)));
-	return 0;
-}
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG(ctx, "AOV mode set stream in SCP side! (sid:%u)\n",
-			ctx->current_scenario_id);
-		return;
-	}
-
-	if (enable) {
-		if (ctx->s_ctx.chk_s_off_sta) {
-			DRV_LOG(ctx, "check_stream_off before stream on");
-			check_stream_off(ctx);
-		}
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-	} else {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-		if (ctx->s_ctx.reg_addr_fast_mode && ctx->fast_mode_on) {
-			ctx->fast_mode_on = FALSE;
-			ctx->ref_sof_cnt = 0;
-			DRV_LOG(ctx, "seamless_switch disabled.");
-			set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-			commit_i2c_buffer(ctx);
-		}
-	}
-	mdelay(10);
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int brzbfront_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-		if (*(u32 *)para)
-			brzbfront_set_shutter_convert(ctx, (u32 *)para);
-		streaming_ctrl(ctx, true);
-		return 0;
-}
-
-static int brzbfront_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-		return 0;
-}
-
-static unsigned int read_brzbfront_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != brzbfront_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != brzbfront_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = brzbfront_eeprom_info[meta_id].start;
-	readsize = brzbfront_eeprom_info[meta_id].size;
-
-	if (!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA9,
-	.i2c_write_id = 0xA8,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x000D,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-    kal_uint16 get_byte = 0;
-
-    adaptor_i2c_rd_u8(ctx->i2c_client, BRZBFRONT_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-    return get_byte;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, BRZBFRONT_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xE000;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, BRZBFRONT_EEPROM_WRITE_ID >> 1, reg, 0xA1);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, BRZBFRONT_EEPROM_WRITE_ID >> 1, reg, 0xA0);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == BRZBFRONT_SENSOR_ID) && (data_length == CALI_DATA_SLAVE_LENGTH)
-            && (data_base == BRZBFRONT_STEREO_START_ADDR)) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-        } else if ((pStereodata->uSensorId == BRZBFRONT_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == BRZBFRONT_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, BRZBFRONT_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, BRZBFRONT_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, BRZBFRONT_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, BRZBFRONT_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, BRZBFRONT_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, BRZBFRONT_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, BRZBFRONT_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, BRZBFRONT_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("brzbfront write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int brzbfront_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        *len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-    return 0;
-}
-
-static int brzbfront_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	if(*len > CALI_DATA_SLAVE_LENGTH) {
-		*len = CALI_DATA_SLAVE_LENGTH;
-	}
-	read_brzbfront_eeprom_info(ctx, EEPROM_META_STEREO_DATA,
-			(BYTE *)para, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, BRZBFRONT_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "brzbfront read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "brzbfront read_otp_info end\n");
-}
-
-static int brzbfront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int brzbfront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	ctx->i2c_write_id = 0x20;
-	LOG_INF("dbgmsg - reg(0x300a) = 0x%x, reg(0x300b) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x300a), subdrv_i2c_rd_u8(ctx, 0x300b));
-	LOG_INF("dbgmsg - reg(0x0A22) = 0x%x, reg(0x0A23) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x0A22), subdrv_i2c_rd_u8(ctx, 0x0A23));
-	LOG_INF("dbgmsg - reg(0x0136) = 0x%x, reg(0x0137) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x0136), subdrv_i2c_rd_u8(ctx, 0x0137));
-
-	subdrv_i2c_wr_u8(ctx, 0x0A02, 0x1B);
-	subdrv_i2c_wr_u8(ctx, 0x0A00, 0x01);
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			*sensor_id = (*sensor_id >> 4) & 0xFFFF;
-			LOG_INF("i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x0471) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = FALSE;
-				}
-				return ERROR_NONE;
-			}
-			LOG_INF("Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			LOG_INF("sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-	sensor_init(ctx);
-
-	/* HW GGC*/
-	set_sensor_cali(ctx);
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	else
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	u16 reg_gain = 0x0;
-	reg_gain = 1024 - (1024 * BASEGAIN) / gain;
-	return reg_gain;
-}
-
-static int brzbfront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	if (mode) {
-		if (mode == 5) {
-			subdrv_i2c_wr_u8(ctx, 0x0600, mode >> 4); /*black*/
-			subdrv_i2c_wr_u8(ctx, 0x0601, mode); /*black*/
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x0600, mode); /*100% Color bar*/
-		}
-	}
-	else if (ctx->test_pattern)
-		subdrv_i2c_wr_u8(ctx, 0x0600, 0x0000); /*No pattern*/
-
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-void get_sensor_cali(void* arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u8 qsc_is_valid = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		// Check QSC validation
-		qsc_is_valid = QSC_IS_VALID_VAL; // i2c_read_eeprom(ctx, OTP_QSC_VALID_ADDR);
-		if (qsc_is_valid != QSC_IS_VALID_VAL) {
-			DRV_LOGE(ctx, "QSC data is invalid, flag(%02x)", qsc_is_valid);
-		} else if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	//struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	return;
-}
-
-int brzbfront_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-	u16 rg_gain;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain, ctx->s_ctx.ana_gain_min);
-	gain = min(gain, ctx->s_ctx.ana_gain_max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	/* group hold end */
-	return 0;
-}
-
-static int power_off(struct subdrv_ctx *ctx, void *data)
-{
-	LOG_INF("dbgmsg - func: %s, line: %d\n", __FUNCTION__, __LINE__);
-	mdelay(2);
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfrontmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfrontmipiraw_Sensor.h
deleted file mode 100755
index bb2327bf..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbfront_mipi_raw/brzbfrontmipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     BRZBFRONTmipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZBFRONTMIPI_SENSOR_H
-#define _BRZBFRONTMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "brzbfront_ana_gain_table.h"
-#include "brzbfront_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/Makefile
deleted file mode 100755
index db18c97a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/brzbmainmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmain_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmain_Sensor_setting.h
deleted file mode 100755
index 2abfe5e8..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmain_Sensor_setting.h
+++ /dev/null
@@ -1,3779 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzbmain_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZBMAIN_SENSOR_SETTING_H
-#define _BRZBMAIN_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-/* NOTE:
-for 2 exp setting,  VCID of LE/SE should be 0x00 and 0x02
-which align 3 exp setting LE/NE/SE 0x00,  0x01,  0x02
-to seamless switch,  VC ID of SE should remain the same
-SONY sensor: VCID of 2nd frame at 0x3070; VCID of 3rd frame at 0x3080
-must be two different value*/
-
-static u16 brzbmain_init_setting[] = {
-	0x0136, 0x18,
-	0x0137, 0x00,
-	0xF800, 0xFD,
-	0xF801, 0xFD,
-	0xF802, 0xD7,
-	0xF803, 0xE3,
-	0xF804, 0x55,
-	0xF805, 0xC0,
-	0xF806, 0x03,
-	0xF807, 0x01,
-	0xF808, 0x16,
-	0xF809, 0xFA,
-	0xF80A, 0x82,
-	0xF80B, 0x00,
-	0xF80C, 0x55,
-	0xF80D, 0xC4,
-	0xF80E, 0x03,
-	0xF80F, 0x01,
-	0xF810, 0x1B,
-	0xF811, 0x24,
-	0xF812, 0xC2,
-	0xF813, 0xFC,
-	0xF814, 0x55,
-	0xF815, 0x90,
-	0xF816, 0x11,
-	0xF817, 0x01,
-	0xF818, 0x00,
-	0xF819, 0x00,
-	0xF81A, 0x51,
-	0xF81B, 0x00,
-	0xF81C, 0x55,
-	0xF81D, 0x94,
-	0xF81E, 0x11,
-	0xF81F, 0x01,
-	0xF820, 0x16,
-	0xF821, 0xFA,
-	0xF822, 0x00,
-	0xF823, 0x00,
-	0xF824, 0x55,
-	0xF825, 0x98,
-	0xF826, 0x11,
-	0xF827, 0x01,
-	0xF828, 0xB4,
-	0xF829, 0x00,
-	0xF82A, 0x20,
-	0xF82B, 0xEF,
-	0xF82C, 0x55,
-	0xF82D, 0x64,
-	0xF82E, 0x39,
-	0xF82F, 0x00,
-	0xF830, 0x32,
-	0xF831, 0xC8,
-	0xF832, 0x17,
-	0xF833, 0xFA,
-	0xF884, 0x4F,
-	0xF885, 0x06,
-	0xF886, 0xAC,
-	0xF887, 0x27,
-	0xF888, 0xAC,
-	0xF889, 0x1D,
-	0xF88A, 0xAC,
-	0xF88B, 0x14,
-	0xF88C, 0xD4,
-	0xF88D, 0x18,
-	0xF88E, 0x08,
-	0xF88F, 0x00,
-	0xF890, 0xF0,
-	0xF891, 0x45,
-	0xF892, 0x06,
-	0xF893, 0xD8,
-	0xF894, 0xD4,
-	0xF895, 0x21,
-	0xF896, 0x42,
-	0xF897, 0x84,
-	0xF898, 0x1E,
-	0xF899, 0x44,
-	0xF89A, 0x29,
-	0xF89B, 0x14,
-	0xF89C, 0x90,
-	0xF89D, 0x0C,
-	0xF89E, 0xD4,
-	0xF89F, 0x21,
-	0xF8A0, 0x42,
-	0xF8A1, 0x86,
-	0xF8A2, 0x1E,
-	0xF8A3, 0x44,
-	0xF8A4, 0x0F,
-	0xF8A5, 0x14,
-	0xF8A6, 0x80,
-	0xF8A7, 0x04,
-	0xF8A8, 0x00,
-	0xF8A9, 0x14,
-	0xF8AA, 0x00,
-	0xF8AB, 0x41,
-	0xF8AC, 0xA1,
-	0xF8AD, 0x50,
-	0xF8AE, 0xA8,
-	0xF8AF, 0x14,
-	0xF8B0, 0xA8,
-	0xF8B1, 0x1D,
-	0xF8B2, 0xA8,
-	0xF8B3, 0x27,
-	0xF8B4, 0xA0,
-	0xF8B5, 0x09,
-	0xF8B6, 0x4F,
-	0xF8B7, 0x06,
-	0xF8B8, 0xAC,
-	0xF8B9, 0x27,
-	0xF8BA, 0xAC,
-	0xF8BB, 0x1D,
-	0xF8BC, 0xAC,
-	0xF8BD, 0x14,
-	0xF8BE, 0xD0,
-	0xF8BF, 0x21,
-	0xF8C0, 0x42,
-	0xF8C1, 0x84,
-	0xF8C2, 0x1E,
-	0xF8C3, 0x00,
-	0xF8C4, 0xBE,
-	0xF8C5, 0x54,
-	0xF8C6, 0xD0,
-	0xF8C7, 0x21,
-	0xF8C8, 0x42,
-	0xF8C9, 0x86,
-	0xF8CA, 0x1E,
-	0xF8CB, 0x05,
-	0xF8CC, 0xD4,
-	0xF8CD, 0x18,
-	0xF8CE, 0x27,
-	0xF8CF, 0xF8,
-	0xF8D0, 0xF1,
-	0xF8D1, 0x41,
-	0xF8D2, 0x00,
-	0xF8D3, 0x02,
-	0xF8D4, 0x1A,
-	0xF8D5, 0x40,
-	0xF8D6, 0xD2,
-	0xF8D7, 0x20,
-	0xF8D8, 0x44,
-	0xF8D9, 0x00,
-	0xF8DA, 0x1A,
-	0xF8DB, 0x22,
-	0xF8DC, 0x20,
-	0xF8DD, 0x21,
-	0xF8DE, 0x90,
-	0xF8DF, 0x04,
-	0xF8E0, 0x80,
-	0xF8E1, 0x0E,
-	0xF8E2, 0xFC,
-	0xF8E3, 0x41,
-	0xF8E4, 0x7F,
-	0xF8E5, 0xFF,
-	0xF8E6, 0xFC,
-	0xF8E7, 0x31,
-	0xF8E8, 0xFF,
-	0xF8E9, 0xFF,
-	0xF8EA, 0x50,
-	0xF8EB, 0x00,
-	0xF8EC, 0x80,
-	0xF8ED, 0x0E,
-	0xF8EE, 0x02,
-	0xF8EF, 0x21,
-	0xF8F0, 0x11,
-	0xF8F1, 0x00,
-	0xF8F2, 0xFA,
-	0xF8F3, 0xE8,
-	0xF8F4, 0x07,
-	0xF8F5, 0x14,
-	0xF8F6, 0x00,
-	0xF8F7, 0x01,
-	0xF8F8, 0x15,
-	0xF8F9, 0xF0,
-	0xF8FA, 0x6F,
-	0xF8FB, 0xF5,
-	0xF8FC, 0x28,
-	0xF8FD, 0x05,
-	0xF8FE, 0xA6,
-	0xF8FF, 0x13,
-	0xF900, 0xA5,
-	0xF901, 0x53,
-	0xF902, 0x50,
-	0xF903, 0x02,
-	0xF904, 0xFA,
-	0xF905, 0xE9,
-	0xF906, 0xD0,
-	0xF907, 0x20,
-	0xF908, 0x00,
-	0xF909, 0x02,
-	0xF90A, 0x00,
-	0xF90B, 0x13,
-	0xF90C, 0x00,
-	0xF90D, 0x30,
-	0xF90E, 0x05,
-	0xF90F, 0x20,
-	0xF910, 0xB8,
-	0xF911, 0x07,
-	0xF912, 0x19,
-	0xF913, 0x40,
-	0xF914, 0x50,
-	0xF915, 0x01,
-	0xF916, 0xFA,
-	0xF917, 0xE8,
-	0xF918, 0x07,
-	0xF919, 0x86,
-	0xF91A, 0x00,
-	0xF91B, 0x10,
-	0xF91C, 0x80,
-	0xF91D, 0x04,
-	0xF91E, 0x5F,
-	0xF91F, 0xF0,
-	0xF920, 0xD1,
-	0xF921, 0x18,
-	0xF922, 0x26,
-	0xF923, 0x58,
-	0xF924, 0x1A,
-	0xF925, 0x12,
-	0xF926, 0xD1,
-	0xF927, 0x18,
-	0xF928, 0x28,
-	0xF929, 0x40,
-	0xF92A, 0xF6,
-	0xF92B, 0x11,
-	0xF92C, 0x08,
-	0xF92D, 0x3A,
-	0xF92E, 0x0F,
-	0xF92F, 0x21,
-	0xF930, 0xD2,
-	0xF931, 0x01,
-	0xF932, 0x00,
-	0xF933, 0x00,
-	0xF934, 0x01,
-	0xF935, 0x02,
-	0xF936, 0x0E,
-	0xF937, 0x03,
-	0xF938, 0x28,
-	0xF939, 0x03,
-	0xF93A, 0xA4,
-	0xF93B, 0x03,
-	0xF93C, 0xA5,
-	0xF93D, 0x23,
-	0xF93E, 0xFC,
-	0xF93F, 0x42,
-	0xF940, 0xFF,
-	0xF941, 0xFE,
-	0xF942, 0xFC,
-	0xF943, 0x32,
-	0xF944, 0xFF,
-	0xF945, 0xFF,
-	0xF946, 0x24,
-	0xF947, 0x02,
-	0xF948, 0xA5,
-	0xF949, 0x30,
-	0xF94A, 0x13,
-	0xF94B, 0x00,
-	0xF94C, 0xF1,
-	0xF94D, 0x42,
-	0xF94E, 0x00,
-	0xF94F, 0x02,
-	0xF950, 0x02,
-	0xF951, 0x02,
-	0xF952, 0x2A,
-	0xF953, 0x02,
-	0xF954, 0xA6,
-	0xF955, 0x00,
-	0xF956, 0xA5,
-	0xF957, 0x20,
-	0xF958, 0xFC,
-	0xF959, 0x12,
-	0xF95A, 0x3F,
-	0xF95B, 0xFF,
-	0xF95C, 0x22,
-	0xF95D, 0x02,
-	0xF95E, 0xA5,
-	0xF95F, 0x02,
-	0xF960, 0x0E,
-	0xF961, 0x20,
-	0xF962, 0xFA,
-	0xF963, 0x00,
-	0xF964, 0x00,
-	0xF965, 0x24,
-	0xF966, 0xD1,
-	0xF967, 0x18,
-	0xF968, 0x28,
-	0xF969, 0x0C,
-	0xF96A, 0x3A,
-	0xF96B, 0x18,
-	0xF96C, 0xD0,
-	0xF96D, 0x18,
-	0xF96E, 0x26,
-	0xF96F, 0x76,
-	0xF970, 0x1A,
-	0xF971, 0x00,
-	0xF972, 0x50,
-	0xF973, 0x01,
-	0xF974, 0xFA,
-	0xF975, 0x00,
-	0xF976, 0x00,
-	0xF977, 0x12,
-	0xF978, 0xD1,
-	0xF979, 0x18,
-	0xF97A, 0x28,
-	0xF97B, 0x0C,
-	0xF97C, 0x3A,
-	0xF97D, 0x1B,
-	0xF97E, 0xA8,
-	0xF97F, 0x14,
-	0xF980, 0xA8,
-	0xF981, 0x1D,
-	0xF982, 0xA8,
-	0xF983, 0x27,
-	0xF984, 0xA0,
-	0xF985, 0x09,
-	0xF986, 0x4F,
-	0xF987, 0x86,
-	0xF988, 0xAC,
-	0xF989, 0x17,
-	0xF98A, 0x50,
-	0xF98B, 0x12,
-	0xF98C, 0x50,
-	0xF98D, 0x03,
-	0xF98E, 0xFA,
-	0xF98F, 0xE9,
-	0xF990, 0x18,
-	0xF991, 0x76,
-	0xF992, 0xA8,
-	0xF993, 0x17,
-	0xF994, 0xA0,
-	0xF995, 0x05,
-	0xF996, 0x4F,
-	0xF997, 0x06,
-	0xF998, 0xAC,
-	0xF999, 0x27,
-	0xF99A, 0xAC,
-	0xF99B, 0x1D,
-	0xF99C, 0xAC,
-	0xF99D, 0x14,
-	0xF99E, 0xFA,
-	0xF99F, 0xE8,
-	0xF9A0, 0xF6,
-	0xF9A1, 0x2C,
-	0xF9A2, 0xD0,
-	0xF9A3, 0x20,
-	0xF9A4, 0x40,
-	0xF9A5, 0x4F,
-	0xF9A6, 0x1E,
-	0xF9A7, 0x05,
-	0xF9A8, 0xD4,
-	0xF9A9, 0x18,
-	0xF9AA, 0x08,
-	0xF9AB, 0x00,
-	0xF9AC, 0xF6,
-	0xF9AD, 0x40,
-	0xF9AE, 0x06,
-	0xF9AF, 0xE7,
-	0xF9B0, 0xBE,
-	0xF9B1, 0x06,
-	0xF9B2, 0xF0,
-	0xF9B3, 0x40,
-	0xF9B4, 0x06,
-	0xF9B5, 0xE8,
-	0xF9B6, 0x29,
-	0xF9B7, 0x25,
-	0xF9B8, 0x90,
-	0xF9B9, 0x2C,
-	0xF9BA, 0x80,
-	0xF9BB, 0x22,
-	0xF9BC, 0xF6,
-	0xF9BD, 0x41,
-	0xF9BE, 0x05,
-	0xF9BF, 0x1C,
-	0xF9C0, 0xB8,
-	0xF9C1, 0x8B,
-	0xF9C2, 0xD0,
-	0xF9C3, 0x18,
-	0xF9C4, 0x28,
-	0xF9C5, 0x40,
-	0xF9C6, 0xF0,
-	0xF9C7, 0x02,
-	0xF9C8, 0x02,
-	0xF9C9, 0x74,
-	0xF9CA, 0xF6,
-	0xF9CB, 0x40,
-	0xF9CC, 0x07,
-	0xF9CD, 0x10,
-	0xF9CE, 0x0F,
-	0xF9CF, 0x20,
-	0xF9D0, 0xFA,
-	0xF9D1, 0xE8,
-	0xF9D2, 0x05,
-	0xF9D3, 0xF4,
-	0xF9D4, 0x80,
-	0xF9D5, 0x04,
-	0xF9D6, 0x5F,
-	0xF9D7, 0xF0,
-	0xF9D8, 0x29,
-	0xF9D9, 0x25,
-	0xF9DA, 0x90,
-	0xF9DB, 0x0A,
-	0xF9DC, 0x50,
-	0xF9DD, 0x31,
-	0xF9DE, 0xFA,
-	0xF9DF, 0xE8,
-	0xF9E0, 0x05,
-	0xF9E1, 0xE6,
-	0xF9E2, 0x80,
-	0xF9E3, 0x04,
-	0xF9E4, 0x09,
-	0xF9E5, 0x50,
-	0xF9E6, 0xF4,
-	0xF9E7, 0x40,
-	0xF9E8, 0x06,
-	0xF9E9, 0xEC,
-	0xF9EA, 0x50,
-	0xF9EB, 0xA1,
-	0xF9EC, 0xFA,
-	0xF9ED, 0xE8,
-	0xF9EE, 0x05,
-	0xF9EF, 0xD8,
-	0xF9F0, 0xFA,
-	0xF9F1, 0xE8,
-	0xF9F2, 0x05,
-	0xF9F3, 0x08,
-	0xF9F4, 0xA8,
-	0xF9F5, 0x14,
-	0xF9F6, 0xA8,
-	0xF9F7, 0x1D,
-	0xF9F8, 0xA8,
-	0xF9F9, 0x27,
-	0xF9FA, 0xA0,
-	0xF9FB, 0x09,
-	0x97D8, 0x00,
-	0x97D9, 0x01,
-	0x97DA, 0x0B,
-	0x97DB, 0x38,
-	0x4331, 0x01,
-	0x3304, 0x00,
-	0x33F0, 0x01,
-	0x33F1, 0x03,
-	0x0111, 0x03,
-	0x0808, 0x02,
-	0xA71E, 0x00,
-	0xA722, 0x00,
-	0xAD01, 0x0A,
-	0xAD02, 0x0A,
-	0xAD0E, 0x02,
-	0xAE48, 0x01,
-	0xAE49, 0x61,
-	0xAE4A, 0x01,
-	0xAE4B, 0xDF,
-	0xAE4C, 0x02,
-	0xAE4D, 0xD0,
-	0xAE4E, 0x01,
-	0xAE4F, 0x61,
-	0xAE50, 0x01,
-	0xAE51, 0xDF,
-	0xAE52, 0x02,
-	0xAE53, 0xD0,
-	0xAEA3, 0x28,
-	0xAEA9, 0x28,
-	0xAEBB, 0xAA,
-	0xAEBD, 0xE9,
-	0xAEC1, 0xAA,
-	0xAEC3, 0xE9,
-	0xAEC9, 0x78,
-	0xAECF, 0x78,
-	0xAED3, 0x0C,
-	0xAED5, 0x42,
-	0xAED9, 0x0C,
-	0xAEDB, 0x42,
-	0xAEF7, 0x50,
-	0xAEF9, 0x50,
-	0xAF5B, 0x50,
-	0xAF5D, 0x50,
-};
-
-/*4096x3072 @30FPS QBIN(VBIN) w/ All-PD VB Max. Seamless w/ "*-S1"*/
-static u16 brzbmain_preview_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3850, 0x00,
-	0x3851, 0xD3,
-	0x0340, 0x0E,
-	0x0341, 0xCF,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x38D0, 0x00,
-	0x38D1, 0x10,
-	0x38D2, 0x01,
-	0x38D3, 0x00,
-};
-
-/*4096x3072 @30FPS QBIN(VBIN) w/ All-PD VB Max. Seamless w/ "*-S1"*/
-static u16 brzbmain_capture_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3850, 0x00,
-	0x3851, 0xD3,
-	0x0340, 0x0E,
-	0x0341, 0xCF,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x38D0, 0x00,
-	0x38D1, 0x10,
-	0x38D2, 0x01,
-	0x38D3, 0x00,
-};
-
-/*reg_B4-S3 4096x2304 @30FPS QBIN(VBIN) w/ All-PD VB Max. Seamless w/ "*-S3"*/
-static u16 brzbmain_normal_video_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3850, 0x00,
-	0x3851, 0xD3,
-	0x0340, 0x0E,
-	0x0341, 0xCF,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x02,
-	0x0104, 0x01,
-	0x322C, 0x00,
-	0x322D, 0x00,
-	0x322A, 0x00,
-	0x322B, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x0104, 0x00,
-};
-
-/*reg_B5-S3  096x2304 @60FPS QBIN w/ Partial-PD VB Max. Seamless w/ "*-S3" */
-static u16 brzbmain_hs_video_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x7E,
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xC8,
-	0x38D2, 0x00,
-	0x38D3, 0xC8,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_V1 2048x1152 @120FPS QBIN(VBIN) V2H2 w/ All-PD VB Max.*/
-static u16 brzbmain_slim_video_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x1A,
-	0x0343, 0x48,
-	0x3850, 0x00,
-	0x3851, 0x77,
-	0x0340, 0x06,
-	0x0341, 0x90,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x02,
-	0x030D, 0x18,
-	0x030E, 0x07,
-	0x030F, 0xD4,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x02,
-	0x38D1, 0x26,
-	0x38D2, 0x02,
-	0x38D3, 0x26,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x09,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x0F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_V2 2048x1152 @240FPS QBIN V2H2 w/o PD VB Max*/
-static u16 brzbmain_custom1_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x10,
-	0x0343, 0xA8,
-	0x3850, 0x00,
-	0x3851, 0x4C,
-	0x0340, 0x05,
-	0x0341, 0x22,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x04,
-	0x030F, 0xF7,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0B,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x13,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_B1-S2 4096x3072 @24FPS QBIN(VBIN) w/ All-PD VB Max.*/
-static u16 brzbmain_custom2_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3850, 0x00,
-	0x3851, 0xD3,
-	0x0340, 0x12,
-	0x0341, 0x83,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x02,
-	0x030D, 0x18,
-	0x030E, 0x07,
-	0x030F, 0xC8,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x09,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x0F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_B6-S3  4096x2304 @30FPS QBIN w/ Partial-PD*/
-static u16 brzbmain_custom3_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x7E,
-	0x0340, 0x18,
-	0x0341, 0xCD,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xC8,
-	0x38D2, 0x00,
-	0x38D3, 0xC8,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_L1-S1 4096x3072 @30FPS QBIN 2LB-MF w/ Partial-PD */
-static u16 brzbmain_custom4_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x7E,
-	0x0340, 0x18,
-	0x0341, 0xCD,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xC8,
-	0x38D2, 0x00,
-	0x38D3, 0xC8,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E05, 0x03,
-	0x0E06, 0x33,
-	0x0E20, 0x0C,
-	0x0E21, 0x2C,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x00,
-	0x0E29, 0x00,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x30,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E40, 0x06,
-	0x0E41, 0x16,
-	0x0E42, 0x00,
-	0x0E43, 0x00,
-	0x0E44, 0x01,
-	0x0E45, 0x00,
-	0x0E47, 0x00,
-	0x0E48, 0x00,
-	0x0E49, 0x00,
-	0x0E4A, 0x01,
-	0x0E4B, 0x2B,
-	0x0E4C, 0x00,
-	0x0E50, 0x01,
-	0x0E51, 0x12,
-	0x0E52, 0x01,
-	0x0E53, 0x30,
-	0x0E54, 0x01,
-	0x0E55, 0x30,
-	0x0E56, 0x01,
-	0x0E57, 0x30,
-	0x0E58, 0x00,
-	0x0E59, 0x00,
-	0x0E5C, 0x00,
-	0x0E5D, 0x00,
-	0x0E5E, 0x01,
-	0x0E5F, 0x30,
-	0x301C, 0x01,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x31A7, 0x02,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_F2-S1 4096x3072 @30FPS Full-Crop w/ PD VB Max*/
-static u16 brzbmain_custom5_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x0C,
-	0x0341, 0x99,
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x01,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_L2-S1 4096x3072 @15FPS Full RMSC 2LB-MF w/ All-PD */
-static u16 brzbmain_custom6_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x01,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E05, 0x03,
-	0x0E06, 0x33,
-	0x0E20, 0x0C,
-	0x0E21, 0x54,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x00,
-	0x0E29, 0x00,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x30,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E40, 0x06,
-	0x0E41, 0x2A,
-	0x0E42, 0x00,
-	0x0E43, 0x00,
-	0x0E44, 0x01,
-	0x0E45, 0x00,
-	0x0E47, 0x00,
-	0x0E48, 0x00,
-	0x0E49, 0x00,
-	0x0E4A, 0x01,
-	0x0E4B, 0x2B,
-	0x0E4C, 0x00,
-	0x0E50, 0x01,
-	0x0E51, 0x12,
-	0x0E52, 0x01,
-	0x0E53, 0x30,
-	0x0E54, 0x01,
-	0x0E55, 0x30,
-	0x0E56, 0x01,
-	0x0E57, 0x30,
-	0x0E58, 0x00,
-	0x0E59, 0x00,
-	0x0E5C, 0x00,
-	0x0E5D, 0x00,
-	0x0E5E, 0x01,
-	0x0E5F, 0x30,
-	0x301C, 0x01,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x31A7, 0x02,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_G1-S3  4096x2304 @30FPS QBIN DAG1:4 w/ Partial-PD */
-static u16 brzbmain_custom7_setting[] = {
-	0x0112, 0x0C,
-	0x0113, 0x0C,
-	0x0114, 0x02,
-	0x3239, 0x01,
-	0x0342, 0x37,
-	0x0343, 0xB0,
-	0x3850, 0x00,
-	0x3851, 0xFC,
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x03,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x64,
-	0x38D2, 0x00,
-	0x38D3, 0x64,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x5EFC, 0x00,
-	0x5EFD, 0x39,
-	0x5EFE, 0x01,
-	0x5EFF, 0x21,
-	0x5F0C, 0x00,
-	0x5F0D, 0xD8,
-	0x5F0E, 0x01,
-	0x5F0F, 0x77,
-	0x5F14, 0x00,
-	0x5F15, 0x6E,
-	0x5F1A, 0x06,
-	0x5F1B, 0x50,
-	0x5F28, 0x00,
-	0x5F29, 0x81,
-	0x5F2C, 0x01,
-	0x5F2D, 0x21,
-	0x5F3A, 0x00,
-	0x5F3B, 0x90,
-	0x5F3E, 0x01,
-	0x5F3F, 0x77,
-	0x5F8C, 0x00,
-	0x5F8D, 0x39,
-	0x5FAE, 0x00,
-	0x5FAF, 0x81,
-	0x5FD4, 0x00,
-	0x5FD5, 0xD8,
-	0x6012, 0x00,
-	0x6013, 0x90,
-	0x716A, 0x00,
-	0x716B, 0x39,
-	0x716C, 0x00,
-	0x716D, 0xD8,
-	0x718C, 0x00,
-	0x718D, 0x81,
-	0x71C8, 0x00,
-	0x71C9, 0x90,
-	0x740E, 0x00,
-	0x740F, 0x39,
-	0x7410, 0x00,
-	0x7411, 0x81,
-	0x7422, 0x00,
-	0x7423, 0x90,
-	0x7424, 0x00,
-	0x7425, 0xD8,
-	0x7F78, 0x08,
-	0x7F7B, 0x07,
-	0x7F87, 0x0D,
-	0x8258, 0x28,
-	0x8321, 0x18,
-	0x833B, 0x18,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x01,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_F1 8192x6144 @15FPS Full*/
-static u16 brzbmain_custom8_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x01,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x06,
-	0x030F, 0x45,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0F,
-	0x0850, 0x00,
-	0x0851, 0x0D,
-	0x0852, 0x00,
-	0x0853, 0x19,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_F1-RAW 8192x6144 @15FPS Full-RAW*/
-static u16 brzbmain_custom9_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x06,
-	0x030F, 0x45,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0F,
-	0x0850, 0x00,
-	0x0851, 0x0D,
-	0x0852, 0x00,
-	0x0853, 0x19,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_F2-RAW-S1 4096x3072 @30FPS Full-RAW-Crop*/
-static u16 brzbmain_custom10_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x0C,
-	0x0341, 0x99,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*F3-RAW-S2 4096x3072 @24FPS Full-RAW-Crop w/ PD VB Max. Seamless*/
-static u16 brzbmain_custom11_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x0F,
-	0x0341, 0xC0,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x02,
-	0x030D, 0x18,
-	0x030E, 0x07,
-	0x030F, 0xC8,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x09,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x0F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*8192x6144 @12FPS Full-RAW w/ PD VB Max. Seamless w*/
-static u16 brzbmain_custom12_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x45,
-	0x0343, 0xA0,
-	0x3850, 0x01,
-	0x3851, 0x3C,
-	0x0340, 0x18,
-	0x0341, 0xB9,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*
-2024.9.11 add for Portrait 2x slave sensor
-reg_V3 2048x1536 @24FPS QBIN V2H2 w/o PD VB Max.
-*/
-static u16 brzbmain_custom13_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x10,
-	0x0343, 0xA8,
-	0x3850, 0x00,
-	0x3851, 0x4C,
-	0x0340, 0x33,
-	0x0341, 0x64,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0x00,
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x04,
-	0x030F, 0xF7,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0B,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x13,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_B3-S1 4096x3072 @60FPS QBIN w/ Partial-PD VB Max.*/
-static u16 brzbmain_custom14_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x7E,
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xC8,
-	0x38D2, 0x00,
-	0x38D3, 0xC8,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-
-/*seamless setting*/
-/*seamless reg_B2-S1 & reg_L1-S1 & reg_F2-S1 & reg_L2-S1 & F2-RAW-S1 & L2-RAW-S1 & reg_B3-S1*/
-/*reg_B2-S1_QBIN(VBIN)_4096x3072_30fps*/
-static u16 brzbmain_seamless_preview[] = {
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3850, 0x00,
-	0x3851, 0xD3,
-	0x0340, 0x0E,
-	0x0341, 0xCF,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x323C, 0x01,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38D1, 0x00,
-	0x38D3, 0x00,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3103, 0x00,
-};
-
-/*reg_L1-S1 4096x3072 @30FPS QBIN 2LB-MF w/ Partial-PD VB Max. Seamless w/ "*-S1"*/
-static u16 brzbmain_seamless_custom4[] = {
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3851, 0x7E,
-	0x0340, 0x18,
-	0x0341, 0xCD,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3148, 0x00,
-	0x323C, 0x02,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0xC8,
-	0x38D3, 0xC8,
-	0x3103, 0x01,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E05, 0x03,
-	0x0E06, 0x33,
-	0x0E20, 0x0C,
-	0x0E21, 0x2C,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x00,
-	0x0E29, 0x00,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x30,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E40, 0x06,
-	0x0E41, 0x16,
-	0x0E42, 0x00,
-	0x0E43, 0x00,
-	0x0E44, 0x01,
-	0x0E45, 0x00,
-	0x0E47, 0x00,
-	0x0E48, 0x00,
-	0x0E49, 0x00,
-	0x0E4A, 0x01,
-	0x0E4B, 0x2B,
-	0x0E4C, 0x00,
-	0x0E50, 0x01,
-	0x0E51, 0x12,
-	0x0E52, 0x01,
-	0x0E53, 0x30,
-	0x0E54, 0x01,
-	0x0E55, 0x30,
-	0x0E56, 0x01,
-	0x0E57, 0x30,
-	0x0E58, 0x00,
-	0x0E59, 0x00,
-	0x0E5C, 0x00,
-	0x0E5D, 0x00,
-	0x0E5E, 0x01,
-	0x0E5F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x31A7, 0x02,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x0408, 0x00,
-};
-
-/*reg_F2-S1 4096x3072 @30FPS Full-Crop w/ PD VB Max. Seamless w/  "*-S1"*/
-static u16 brzbmain_seamless_custom5[] = {
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3851, 0xF8,
-	0x0340, 0x0C,
-	0x0341, 0x99,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x323C, 0x01,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0x00,
-	0x38D3, 0x00,
-	0x0344, 0x08,
-	0x0346, 0x06,
-	0x0348, 0x17,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x01,
-	0x0408, 0x00,
-	0x3103, 0x00,
-};
-
-/*reg_L2-S1  4096x3072 @15FPS Full RMSC 2LB-MF w/ All-PD VB Max. Seamless w/ "*-S1"*/
-static u16 brzbmain_seamless_custom6[] = {
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3851, 0xF8,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x323C, 0x01,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0x00,
-	0x38D3, 0x00,
-	0x3103, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E05, 0x03,
-	0x0E06, 0x33,
-	0x0E20, 0x0C,
-	0x0E21, 0x54,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x00,
-	0x0E29, 0x00,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x30,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E40, 0x06,
-	0x0E41, 0x2A,
-	0x0E42, 0x00,
-	0x0E43, 0x00,
-	0x0E44, 0x01,
-	0x0E45, 0x00,
-	0x0E47, 0x00,
-	0x0E48, 0x00,
-	0x0E49, 0x00,
-	0x0E4A, 0x01,
-	0x0E4B, 0x2B,
-	0x0E4C, 0x00,
-	0x0E50, 0x01,
-	0x0E51, 0x12,
-	0x0E52, 0x01,
-	0x0E53, 0x30,
-	0x0E54, 0x01,
-	0x0E55, 0x30,
-	0x0E56, 0x01,
-	0x0E57, 0x30,
-	0x0E58, 0x00,
-	0x0E59, 0x00,
-	0x0E5C, 0x00,
-	0x0E5D, 0x00,
-	0x0E5E, 0x01,
-	0x0E5F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x31A7, 0x02,
-	0x0344, 0x08,
-	0x0346, 0x06,
-	0x0348, 0x17,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x01,
-	0x0408, 0x00,
-};
-
-/*reg_F2-RAW-S1 4096x3072 @30FPS Full-RAW-Crop*/
-static u16 brzbmain_seamless_custom10[] = {
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x0C,
-	0x0341, 0x99,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x323C, 0x01,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0x00,
-	0x38D3, 0x00,
-	0x0344, 0x00,
-	0x0346, 0x06,
-	0x0348, 0x1F,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x0408, 0x08,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3103, 0x00,
-};
-
-/*8192x6144 @12FPS Full-RAW w/ PD VB Max. Seamless w*/
-static u16 brzbmain_seamless_custom12[] = {
-	0x0342, 0x45,
-	0x0343, 0xA0,
-	0x3850, 0x01,
-	0x3851, 0x3C,
-	0x0340, 0x18,
-	0x0341, 0xB9,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x20,
-	0x040E, 0x18,
-	0x034C, 0x20,
-	0x034E, 0x18,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-};
-
-/*reg_B3-S1 4096x3072 @60FPS QBIN w/ Partial-PD VB Max.*/
-static u16 brzbmain_seamless_custom14[] = {
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3851, 0x7E,
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0xC8,
-	0x38D3, 0xC8,
-	0x3103, 0x01,
-	0x0E00, 0x00,
-};
-
-/*seamless reg_B4-S3 & reg_B5-S3 & reg_B6-S3*/
-/*reg_B4-S3_4096x2304_30FPS*/
-static u16 brzbmain_seamless_normal_video[] = {
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3851, 0xD3,
-	0x0340, 0x0E,
-	0x0341, 0xCF,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x323C, 0x01,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38D1, 0x00,
-	0x38D3, 0x00,
-	0x3103, 0x00,
-};
-
-/*reg_B5-S3 4096x2304 @60FPS*/
-static u16 brzbmain_seamless_hs_video[] = {
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3851, 0x7E,
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3148, 0x00,
-	0x323C, 0x02,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0xC8,
-	0x38D3, 0xC8,
-	0x3103, 0x01,
-};
-
-/*reg_B6-S3 4096x2304 @30FPS*/
-static u16 brzbmain_seamless_custom3[] = {
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3851, 0x7E,
-	0x0340, 0x18,
-	0x0341, 0xCD,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3148, 0x00,
-	0x323C, 0x02,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0xC8,
-	0x38D3, 0xC8,
-	0x3103, 0x01,
-};
-
-/*seamless reg_B1-S2 & F3-RAW-S2*/
-/*reg_B1-S2 4096x3072 @24FPS QBIN(VBIN) w/ All-PD VB Max.*/
-static u16 brzbmain_seamless_custom2[] = {
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3851, 0xD3,
-	0x0340, 0x12,
-	0x0341, 0x83,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-};
-
-/*F3-RAW-S2 4096x3072 @24FPS Full-RAW-Crop w/ PD VB Max. Seamless*/
-static u16 brzbmain_seamless_custom11[] = {
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3851, 0xF8,
-	0x0340, 0x0F,
-	0x0341, 0xC0,
-	0x0346, 0x06,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-};
-
-#endif /* BRZBMAIN */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmain_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmain_ana_gain_table.h
deleted file mode 100755
index 3a70c804..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmain_ana_gain_table.h
+++ /dev/null
@@ -1,1907 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzbmain_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __BRZBMAIN_ANA_GAIN_TABLE_H__
-#define __BRZBMAIN_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 brzbmain_ana_gain_table[] = {
-	1024,
-	1025,
-	1026,
-	1027,
-	1028,
-	1029,
-	1030,
-	1031,
-	1032,
-	1033,
-	1034,
-	1035,
-	1036,
-	1037,
-	1038,
-	1039,
-	1040,
-	1041,
-	1042,
-	1043,
-	1044,
-	1045,
-	1046,
-	1047,
-	1048,
-	1049,
-	1050,
-	1051,
-	1052,
-	1053,
-	1054,
-	1055,
-	1057,
-	1058,
-	1059,
-	1060,
-	1061,
-	1062,
-	1063,
-	1064,
-	1065,
-	1066,
-	1067,
-	1068,
-	1069,
-	1071,
-	1072,
-	1073,
-	1074,
-	1075,
-	1076,
-	1077,
-	1078,
-	1079,
-	1081,
-	1082,
-	1083,
-	1084,
-	1085,
-	1086,
-	1087,
-	1088,
-	1089,
-	1091,
-	1092,
-	1093,
-	1094,
-	1095,
-	1096,
-	1097,
-	1099,
-	1100,
-	1101,
-	1102,
-	1103,
-	1104,
-	1106,
-	1107,
-	1108,
-	1109,
-	1110,
-	1111,
-	1113,
-	1114,
-	1115,
-	1116,
-	1117,
-	1119,
-	1120,
-	1121,
-	1122,
-	1123,
-	1125,
-	1126,
-	1127,
-	1128,
-	1129,
-	1131,
-	1132,
-	1133,
-	1134,
-	1136,
-	1137,
-	1138,
-	1139,
-	1140,
-	1142,
-	1143,
-	1144,
-	1145,
-	1147,
-	1148,
-	1149,
-	1151,
-	1152,
-	1153,
-	1154,
-	1156,
-	1157,
-	1158,
-	1159,
-	1161,
-	1162,
-	1163,
-	1165,
-	1166,
-	1167,
-	1168,
-	1170,
-	1171,
-	1172,
-	1174,
-	1175,
-	1176,
-	1178,
-	1179,
-	1180,
-	1182,
-	1183,
-	1184,
-	1186,
-	1187,
-	1188,
-	1190,
-	1191,
-	1192,
-	1194,
-	1195,
-	1197,
-	1198,
-	1199,
-	1201,
-	1202,
-	1203,
-	1205,
-	1206,
-	1208,
-	1209,
-	1210,
-	1212,
-	1213,
-	1215,
-	1216,
-	1217,
-	1219,
-	1220,
-	1222,
-	1223,
-	1224,
-	1226,
-	1227,
-	1229,
-	1230,
-	1232,
-	1233,
-	1235,
-	1236,
-	1237,
-	1239,
-	1240,
-	1242,
-	1243,
-	1245,
-	1246,
-	1248,
-	1249,
-	1251,
-	1252,
-	1254,
-	1255,
-	1257,
-	1258,
-	1260,
-	1261,
-	1263,
-	1264,
-	1266,
-	1267,
-	1269,
-	1270,
-	1272,
-	1274,
-	1275,
-	1277,
-	1278,
-	1280,
-	1281,
-	1283,
-	1285,
-	1286,
-	1288,
-	1289,
-	1291,
-	1292,
-	1294,
-	1296,
-	1297,
-	1299,
-	1300,
-	1302,
-	1304,
-	1305,
-	1307,
-	1309,
-	1310,
-	1312,
-	1314,
-	1315,
-	1317,
-	1318,
-	1320,
-	1322,
-	1323,
-	1325,
-	1327,
-	1328,
-	1330,
-	1332,
-	1334,
-	1335,
-	1337,
-	1339,
-	1340,
-	1342,
-	1344,
-	1346,
-	1347,
-	1349,
-	1351,
-	1353,
-	1354,
-	1356,
-	1358,
-	1360,
-	1361,
-	1363,
-	1365,
-	1367,
-	1368,
-	1370,
-	1372,
-	1374,
-	1376,
-	1377,
-	1379,
-	1381,
-	1383,
-	1385,
-	1387,
-	1388,
-	1390,
-	1392,
-	1394,
-	1396,
-	1398,
-	1399,
-	1401,
-	1403,
-	1405,
-	1407,
-	1409,
-	1411,
-	1413,
-	1415,
-	1416,
-	1418,
-	1420,
-	1422,
-	1424,
-	1426,
-	1428,
-	1430,
-	1432,
-	1434,
-	1436,
-	1438,
-	1440,
-	1442,
-	1444,
-	1446,
-	1448,
-	1450,
-	1452,
-	1454,
-	1456,
-	1458,
-	1460,
-	1462,
-	1464,
-	1466,
-	1468,
-	1470,
-	1472,
-	1474,
-	1476,
-	1478,
-	1481,
-	1483,
-	1485,
-	1487,
-	1489,
-	1491,
-	1493,
-	1495,
-	1497,
-	1500,
-	1502,
-	1504,
-	1506,
-	1508,
-	1510,
-	1513,
-	1515,
-	1517,
-	1519,
-	1521,
-	1524,
-	1526,
-	1528,
-	1530,
-	1533,
-	1535,
-	1537,
-	1539,
-	1542,
-	1544,
-	1546,
-	1548,
-	1551,
-	1553,
-	1555,
-	1558,
-	1560,
-	1562,
-	1565,
-	1567,
-	1569,
-	1572,
-	1574,
-	1576,
-	1579,
-	1581,
-	1583,
-	1586,
-	1588,
-	1591,
-	1593,
-	1596,
-	1598,
-	1600,
-	1603,
-	1605,
-	1608,
-	1610,
-	1613,
-	1615,
-	1618,
-	1620,
-	1623,
-	1625,
-	1628,
-	1630,
-	1633,
-	1635,
-	1638,
-	1640,
-	1643,
-	1646,
-	1648,
-	1651,
-	1653,
-	1656,
-	1659,
-	1661,
-	1664,
-	1667,
-	1669,
-	1672,
-	1675,
-	1677,
-	1680,
-	1683,
-	1685,
-	1688,
-	1691,
-	1693,
-	1696,
-	1699,
-	1702,
-	1705,
-	1707,
-	1710,
-	1713,
-	1716,
-	1718,
-	1721,
-	1724,
-	1727,
-	1730,
-	1733,
-	1736,
-	1738,
-	1741,
-	1744,
-	1747,
-	1750,
-	1753,
-	1756,
-	1759,
-	1762,
-	1765,
-	1768,
-	1771,
-	1774,
-	1777,
-	1780,
-	1783,
-	1786,
-	1789,
-	1792,
-	1795,
-	1798,
-	1801,
-	1804,
-	1807,
-	1811,
-	1814,
-	1817,
-	1820,
-	1823,
-	1826,
-	1829,
-	1833,
-	1836,
-	1839,
-	1842,
-	1846,
-	1849,
-	1852,
-	1855,
-	1859,
-	1862,
-	1865,
-	1869,
-	1872,
-	1875,
-	1879,
-	1882,
-	1885,
-	1889,
-	1892,
-	1896,
-	1899,
-	1903,
-	1906,
-	1909,
-	1913,
-	1916,
-	1920,
-	1923,
-	1927,
-	1931,
-	1934,
-	1938,
-	1941,
-	1945,
-	1949,
-	1952,
-	1956,
-	1959,
-	1963,
-	1967,
-	1971,
-	1974,
-	1978,
-	1982,
-	1985,
-	1989,
-	1993,
-	1997,
-	2001,
-	2004,
-	2008,
-	2012,
-	2016,
-	2020,
-	2024,
-	2028,
-	2032,
-	2036,
-	2040,
-	2044,
-	2048,
-	2052,
-	2056,
-	2060,
-	2064,
-	2068,
-	2072,
-	2076,
-	2080,
-	2084,
-	2088,
-	2092,
-	2097,
-	2101,
-	2105,
-	2109,
-	2114,
-	2118,
-	2122,
-	2126,
-	2131,
-	2135,
-	2139,
-	2144,
-	2148,
-	2153,
-	2157,
-	2162,
-	2166,
-	2170,
-	2175,
-	2179,
-	2184,
-	2189,
-	2193,
-	2198,
-	2202,
-	2207,
-	2212,
-	2216,
-	2221,
-	2226,
-	2231,
-	2235,
-	2240,
-	2245,
-	2250,
-	2255,
-	2259,
-	2264,
-	2269,
-	2274,
-	2279,
-	2284,
-	2289,
-	2294,
-	2299,
-	2304,
-	2309,
-	2314,
-	2319,
-	2325,
-	2330,
-	2335,
-	2340,
-	2345,
-	2351,
-	2356,
-	2361,
-	2366,
-	2372,
-	2377,
-	2383,
-	2388,
-	2394,
-	2399,
-	2404,
-	2410,
-	2416,
-	2421,
-	2427,
-	2432,
-	2438,
-	2444,
-	2449,
-	2455,
-	2461,
-	2467,
-	2473,
-	2478,
-	2484,
-	2490,
-	2496,
-	2502,
-	2508,
-	2514,
-	2520,
-	2526,
-	2532,
-	2538,
-	2545,
-	2551,
-	2557,
-	2563,
-	2570,
-	2576,
-	2582,
-	2589,
-	2595,
-	2601,
-	2608,
-	2614,
-	2621,
-	2628,
-	2634,
-	2641,
-	2647,
-	2654,
-	2661,
-	2668,
-	2674,
-	2681,
-	2688,
-	2695,
-	2702,
-	2709,
-	2716,
-	2723,
-	2730,
-	2737,
-	2744,
-	2752,
-	2759,
-	2766,
-	2774,
-	2781,
-	2788,
-	2796,
-	2803,
-	2811,
-	2818,
-	2826,
-	2833,
-	2841,
-	2849,
-	2857,
-	2864,
-	2872,
-	2880,
-	2888,
-	2896,
-	2904,
-	2912,
-	2920,
-	2928,
-	2937,
-	2945,
-	2953,
-	2962,
-	2970,
-	2978,
-	2987,
-	2995,
-	3004,
-	3013,
-	3021,
-	3030,
-	3039,
-	3048,
-	3057,
-	3066,
-	3075,
-	3084,
-	3093,
-	3102,
-	3111,
-	3120,
-	3130,
-	3139,
-	3148,
-	3158,
-	3167,
-	3177,
-	3187,
-	3196,
-	3206,
-	3216,
-	3226,
-	3236,
-	3246,
-	3256,
-	3266,
-	3276,
-	3287,
-	3297,
-	3307,
-	3318,
-	3328,
-	3339,
-	3350,
-	3360,
-	3371,
-	3382,
-	3393,
-	3404,
-	3415,
-	3426,
-	3437,
-	3449,
-	3460,
-	3472,
-	3483,
-	3495,
-	3506,
-	3518,
-	3530,
-	3542,
-	3554,
-	3566,
-	3578,
-	3591,
-	3603,
-	3615,
-	3628,
-	3640,
-	3653,
-	3666,
-	3679,
-	3692,
-	3705,
-	3718,
-	3731,
-	3744,
-	3758,
-	3771,
-	3785,
-	3799,
-	3813,
-	3826,
-	3840,
-	3855,
-	3869,
-	3883,
-	3898,
-	3912,
-	3927,
-	3942,
-	3956,
-	3971,
-	3986,
-	4002,
-	4017,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4161,
-	4177,
-	4194,
-	4211,
-	4228,
-	4245,
-	4262,
-	4279,
-	4297,
-	4315,
-	4332,
-	4350,
-	4369,
-	4387,
-	4405,
-	4424,
-	4443,
-	4462,
-	4481,
-	4500,
-	4519,
-	4539,
-	4559,
-	4578,
-	4599,
-	4619,
-	4639,
-	4660,
-	4681,
-	4702,
-	4723,
-	4744,
-	4766,
-	4788,
-	4809,
-	4832,
-	4854,
-	4877,
-	4899,
-	4922,
-	4946,
-	4969,
-	4993,
-	5017,
-	5041,
-	5065,
-	5090,
-	5115,
-	5140,
-	5165,
-	5190,
-	5216,
-	5242,
-	5269,
-	5295,
-	5322,
-	5349,
-	5377,
-	5405,
-	5433,
-	5461,
-	5489,
-	5518,
-	5548,
-	5577,
-	5607,
-	5637,
-	5667,
-	5698,
-	5729,
-	5761,
-	5793,
-	5825,
-	5857,
-	5890,
-	5924,
-	5957,
-	5991,
-	6026,
-	6061,
-	6096,
-	6132,
-	6168,
-	6204,
-	6241,
-	6278,
-	6316,
-	6355,
-	6393,
-	6432,
-	6472,
-	6512,
-	6553,
-	6594,
-	6636,
-	6678,
-	6721,
-	6765,
-	6808,
-	6853,
-	6898,
-	6944,
-	6990,
-	7037,
-	7084,
-	7133,
-	7182,
-	7231,
-	7281,
-	7332,
-	7384,
-	7436,
-	7489,
-	7543,
-	7598,
-	7653,
-	7710,
-	7767,
-	7825,
-	7884,
-	7943,
-	8004,
-	8065,
-	8128,
-	8192,
-	8256,
-	8322,
-	8388,
-	8456,
-	8525,
-	8594,
-	8665,
-	8738,
-	8811,
-	8886,
-	8962,
-	9039,
-	9118,
-	9198,
-	9279,
-	9362,
-	9446,
-	9532,
-	9619,
-	9709,
-	9799,
-	9892,
-	9986,
-	10082,
-	10180,
-	10280,
-	10381,
-	10485,
-	10591,
-	10699,
-	10810,
-	10922,
-	11037,
-	11155,
-	11275,
-	11397,
-	11522,
-	11650,
-	11781,
-	11915,
-	12052,
-	12192,
-	12336,
-	12483,
-	12633,
-	12787,
-	12945,
-	13107,
-	13273,
-	13443,
-	13617,
-	13797,
-	13981,
-	14169,
-	14364,
-	14563,
-	14768,
-	14979,
-	15196,
-	15420,
-	15650,
-	15887,
-	16131,
-	16384,
-	16644,
-	16912,
-	17189,
-	17476,
-	17772,
-	18078,
-	18396,
-	18724,
-	19065,
-	19418,
-	19784,
-	20164,
-	20560,
-	20971,
-	21399,
-	21845,
-	22310,
-	22795,
-	23301,
-	23831,
-	24385,
-	24966,
-	25575,
-	26214,
-	26886,
-	27594,
-	28339,
-	29127,
-	29959,
-	30840,
-	31775,
-	32768,
-	33825,
-	34952,
-	36157,
-	37449,
-	38836,
-	40329,
-	41943,
-	43690,
-	45590,
-	47662,
-	49932,
-	52428,
-	55188,
-	58254,
-	61680,
-	65536,
-	65536,
-};
-
-#define BRZBMAIN_GAIN_TABLE_SIZE 432
-static kal_uint32 brzbmain_gain_table[BRZBMAIN_GAIN_TABLE_SIZE] = {
-	1024,
-	1040,
-	1056,
-	1072,
-	1088,
-	1104,
-	1120,
-	1136,
-	1152,
-	1168,
-	1184,
-	1200,
-	1216,
-	1232,
-	1248,
-	1264,
-	1280,
-	1296,
-	1312,
-	1328,
-	1344,
-	1360,
-	1376,
-	1392,
-	1408,
-	1424,
-	1440,
-	1456,
-	1472,
-	1488,
-	1504,
-	1520,
-	1536,
-	1552,
-	1568,
-	1584,
-	1600,
-	1616,
-	1632,
-	1648,
-	1664,
-	1680,
-	1696,
-	1712,
-	1728,
-	1744,
-	1760,
-	1776,
-	1792,
-	1808,
-	1824,
-	1840,
-	1856,
-	1872,
-	1888,
-	1904,
-	1920,
-	1936,
-	1952,
-	1968,
-	1984,
-	2000,
-	2016,
-	2032,
-	2048,
-	2064,
-	2080,
-	2096,
-	2112,
-	2128,
-	2144,
-	2160,
-	2176,
-	2192,
-	2208,
-	2224,
-	2240,
-	2256,
-	2272,
-	2288,
-	2304,
-	2320,
-	2336,
-	2352,
-	2368,
-	2384,
-	2400,
-	2416,
-	2432,
-	2448,
-	2464,
-	2480,
-	2496,
-	2512,
-	2528,
-	2544,
-	2560,
-	2576,
-	2592,
-	2608,
-	2624,
-	2640,
-	2656,
-	2672,
-	2688,
-	2704,
-	2720,
-	2736,
-	2752,
-	2768,
-	2784,
-	2800,
-	2816,
-	2832,
-	2848,
-	2864,
-	2880,
-	2896,
-	2912,
-	2928,
-	2944,
-	2960,
-	2976,
-	2992,
-	3008,
-	3024,
-	3040,
-	3056,
-	3072,
-	3088,
-	3104,
-	3120,
-	3136,
-	3152,
-	3168,
-	3184,
-	3200,
-	3216,
-	3232,
-	3248,
-	3264,
-	3280,
-	3296,
-	3312,
-	3328,
-	3344,
-	3360,
-	3376,
-	3392,
-	3408,
-	3424,
-	3440,
-	3456,
-	3472,
-	3488,
-	3504,
-	3520,
-	3536,
-	3552,
-	3568,
-	3584,
-	3600,
-	3616,
-	3632,
-	3648,
-	3664,
-	3680,
-	3696,
-	3712,
-	3728,
-	3744,
-	3760,
-	3776,
-	3792,
-	3808,
-	3824,
-	3840,
-	3856,
-	3872,
-	3888,
-	3904,
-	3920,
-	3936,
-	3952,
-	3968,
-	3984,
-	4000,
-	4016,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4160,
-	4176,
-	4192,
-	4208,
-	4224,
-	4240,
-	4256,
-	4272,
-	4288,
-	4304,
-	4320,
-	4336,
-	4368,
-	4384,
-	4400,
-	4416,
-	4432,
-	4448,
-	4480,
-	4496,
-	4512,
-	4528,
-	4544,
-	4576,
-	4592,
-	4608,
-	4624,
-	4656,
-	4672,
-	4688,
-	4720,
-	4736,
-	4752,
-	4784,
-	4800,
-	4832,
-	4848,
-	4864,
-	4896,
-	4912,
-	4944,
-	4960,
-	4992,
-	5008,
-	5040,
-	5088,
-	5104,
-	5136,
-	5152,
-	5184,
-	5216,
-	5232,
-	5264,
-	5280,
-	5312,
-	5344,
-	5376,
-	5392,
-	5424,
-	5456,
-	5488,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6096,
-	6128,
-	6160,
-	6192,
-	6240,
-	6272,
-	6304,
-	6352,
-	6384,
-	6432,
-	6464,
-	6512,
-	6544,
-	6592,
-	6624,
-	6672,
-	6720,
-	6752,
-	6800,
-	6848,
-	6896,
-	6944,
-	6976,
-	7024,
-	7072,
-	7120,
-	7168,
-	7216,
-	7280,
-	7328,
-	7376,
-	7424,
-	7488,
-	7536,
-	7584,
-	7648,
-	7696,
-	7760,
-	7824,
-	7872,
-	7936,
-	8000,
-	8064,
-	8128,
-	8192,
-	8256,
-	8320,
-	8384,
-	8448,
-	8512,
-	8592,
-	8656,
-	8736,
-	8800,
-	8880,
-	8960,
-	9024,
-	9104,
-	9184,
-	9264,
-	9360,
-	9440,
-	9520,
-	9616,
-	9696,
-	9792,
-	9888,
-	9984,
-	10080,
-	10176,
-	10272,
-	10368,
-	10480,
-	10576,
-	10688,
-	10800,
-	10912,
-	11024,
-	11152,
-	11264,
-	11392,
-	11520,
-	11648,
-	11776,
-	11904,
-	12048,
-	12192,
-	12336,
-	12480,
-	12624,
-	12784,
-	12944,
-	13104,
-	13264,
-	13440,
-	13616,
-	13792,
-	13968,
-	14160,
-	14352,
-	14560,
-	14768,
-	14976,
-	15184,
-	15408,
-	15648,
-	15872,
-	16128,
-	16384,
-	16640,
-	16912,
-	17184,
-	17472,
-	17760,
-	18064,
-	18384,
-	18720,
-	19056,
-	19408,
-	19776,
-	20160,
-	20560,
-	20960,
-	21392,
-	21840,
-	22304,
-	22784,
-	23296,
-	23824,
-	24384,
-	24960,
-	25568,
-	26208,
-	26880,
-	27584,
-	28336,
-	29120,
-	29952,
-	30832,
-	31760,
-	32768,
-	33824,
-	34944,
-	36144,
-	37440,
-	38832,
-	40320,
-	41936,
-	43680,
-	45584,
-	47648,
-	49920,
-	52416,
-	55184,
-	58240,
-	61680,
-	65536,
-};
-
-static kal_uint16 brzbmain_gain_reg[BRZBMAIN_GAIN_TABLE_SIZE] = {
-	0,
-	240,
-	496,
-	720,
-	944,
-	1168,
-	1392,
-	1616,
-	1808,
-	2000,
-	2192,
-	2384,
-	2576,
-	2768,
-	2928,
-	3088,
-	3280,
-	3408,
-	3568,
-	3728,
-	3888,
-	4048,
-	4176,
-	4304,
-	4464,
-	4592,
-	4720,
-	4848,
-	4976,
-	5104,
-	5200,
-	5328,
-	5456,
-	5552,
-	5680,
-	5776,
-	5872,
-	6000,
-	6096,
-	6192,
-	6288,
-	6384,
-	6480,
-	6576,
-	6672,
-	6736,
-	6832,
-	6928,
-	7024,
-	7088,
-	7184,
-	7248,
-	7344,
-	7408,
-	7472,
-	7568,
-	7632,
-	7696,
-	7760,
-	7856,
-	7920,
-	7984,
-	8048,
-	8112,
-	8192,
-	8240,
-	8304,
-	8368,
-	8432,
-	8496,
-	8544,
-	8608,
-	8672,
-	8720,
-	8784,
-	8832,
-	8880,
-	8944,
-	8992,
-	9040,
-	9088,
-	9152,
-	9200,
-	9248,
-	9296,
-	9344,
-	9392,
-	9440,
-	9472,
-	9520,
-	9568,
-	9616,
-	9648,
-	9696,
-	9744,
-	9776,
-	9824,
-	9856,
-	9904,
-	9936,
-	9984,
-	10016,
-	10064,
-	10096,
-	10128,
-	10176,
-	10208,
-	10240,
-	10272,
-	10320,
-	10352,
-	10384,
-	10416,
-	10448,
-	10480,
-	10512,
-	10544,
-	10576,
-	10608,
-	10640,
-	10672,
-	10704,
-	10736,
-	10768,
-	10800,
-	10832,
-	10864,
-	10880,
-	10912,
-	10944,
-	10976,
-	10992,
-	11024,
-	11056,
-	11072,
-	11104,
-	11136,
-	11152,
-	11184,
-	11216,
-	11232,
-	11264,
-	11280,
-	11312,
-	11328,
-	11360,
-	11376,
-	11408,
-	11424,
-	11456,
-	11472,
-	11504,
-	11520,
-	11536,
-	11568,
-	11584,
-	11616,
-	11632,
-	11648,
-	11680,
-	11696,
-	11712,
-	11744,
-	11760,
-	11776,
-	11792,
-	11824,
-	11840,
-	11856,
-	11872,
-	11888,
-	11920,
-	11936,
-	11952,
-	11968,
-	11984,
-	12000,
-	12032,
-	12048,
-	12064,
-	12080,
-	12096,
-	12128,
-	12144,
-	12160,
-	12176,
-	12192,
-	12208,
-	12224,
-	12240,
-	12256,
-	12272,
-	12288,
-	12304,
-	12320,
-	12336,
-	12352,
-	12368,
-	12384,
-	12400,
-	12416,
-	12432,
-	12448,
-	12464,
-	12480,
-	12496,
-	12512,
-	12528,
-	12544,
-	12560,
-	12576,
-	12592,
-	12608,
-	12624,
-	12640,
-	12656,
-	12672,
-	12688,
-	12704,
-	12720,
-	12736,
-	12752,
-	12768,
-	12784,
-	12800,
-	12816,
-	12832,
-	12848,
-	12864,
-	12880,
-	12896,
-	12912,
-	12928,
-	12944,
-	12960,
-	12976,
-	12992,
-	13008,
-	13024,
-	13040,
-	13056,
-	13088,
-	13104,
-	13120,
-	13136,
-	13152,
-	13168,
-	13184,
-	13200,
-	13216,
-	13232,
-	13248,
-	13264,
-	13280,
-	13296,
-	13312,
-	13328,
-	13344,
-	13360,
-	13376,
-	13392,
-	13408,
-	13424,
-	13440,
-	13456,
-	13472,
-	13488,
-	13504,
-	13520,
-	13536,
-	13552,
-	13568,
-	13584,
-	13600,
-	13616,
-	13632,
-	13648,
-	13664,
-	13680,
-	13696,
-	13712,
-	13728,
-	13744,
-	13760,
-	13776,
-	13792,
-	13808,
-	13824,
-	13840,
-	13856,
-	13872,
-	13888,
-	13904,
-	13920,
-	13936,
-	13952,
-	13968,
-	13984,
-	14000,
-	14016,
-	14032,
-	14048,
-	14064,
-	14080,
-	14096,
-	14112,
-	14128,
-	14144,
-	14160,
-	14176,
-	14192,
-	14208,
-	14224,
-	14240,
-	14256,
-	14272,
-	14288,
-	14304,
-	14320,
-	14336,
-	14352,
-	14368,
-	14384,
-	14400,
-	14416,
-	14432,
-	14448,
-	14464,
-	14480,
-	14496,
-	14512,
-	14528,
-	14544,
-	14560,
-	14576,
-	14592,
-	14608,
-	14624,
-	14640,
-	14656,
-	14672,
-	14688,
-	14704,
-	14720,
-	14736,
-	14752,
-	14768,
-	14784,
-	14800,
-	14816,
-	14832,
-	14848,
-	14864,
-	14880,
-	14896,
-	14912,
-	14928,
-	14944,
-	14960,
-	14976,
-	14992,
-	15008,
-	15024,
-	15040,
-	15056,
-	15072,
-	15088,
-	15104,
-	15120,
-	15136,
-	15152,
-	15168,
-	15184,
-	15200,
-	15216,
-	15232,
-	15248,
-	15264,
-	15280,
-	15296,
-	15312,
-	15328,
-	15344,
-	15360,
-	15376,
-	15392,
-	15408,
-	15424,
-	15440,
-	15456,
-	15472,
-	15488,
-	15504,
-	15520,
-	15536,
-	15552,
-	15568,
-	15584,
-	15600,
-	15616,
-	15632,
-	15648,
-	15664,
-	15680,
-	15696,
-	15712,
-	15728,
-	15744,
-	15760,
-	15776,
-	15792,
-	15808,
-	15824,
-	15840,
-	15856,
-	15872,
-	15888,
-	15904,
-	15920,
-	15936,
-	15952,
-	15968,
-	15984,
-	16000,
-	16016,
-	16032,
-	16048,
-	16064,
-	16080,
-	16096,
-	16112,
-	16128,
-};
-
-#endif /* BRZBMAIN */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmainmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmainmipiraw_Sensor.c
deleted file mode 100755
index 60ec5daa..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmainmipiraw_Sensor.c
+++ /dev/null
@@ -1,2806 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzbmainmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "brzbmainmipiraw_Sensor.h"
-
-#define BRZBMAIN_EEPROM_READ_ID	0xA1
-#define BRZBMAIN_EEPROM_WRITE_ID	0xA0
-#define BRZBMAIN_MAX_OFFSET		0x8000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "brzbmain_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x8000
-#define OTP_QSC_VALID_ADDR 0x2A30
-#define OTP_PDC_VALID_ADDR 0x7DA0
-#define QSC_IS_VALID_VAL      0x01
-#define SPC_IS_VALID_VAL      0x01
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x1832
-#define OTP_QCOM_PDAF_OFFSET_DATA_LENGTH 0x650
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x5E4
-#define OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR 0x39b0
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-static kal_uint8 otp_qcom_pdaf_offset_data[OTP_QCOM_PDAF_OFFSET_DATA_LENGTH] = {0};
-static void set_sensor_cali(void *arg);
-static int get_sensor_temperature(void *arg);
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int brzbmain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbmain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbmain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbmain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbmain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbmain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbmain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int brzbmain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void get_sensor_cali(void *arg);
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int brzbmain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static int brzbmain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbmain_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbmain_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-/* STRUCT */
-
-static struct eeprom_map_info brzbmain_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x009A, 0x009B, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0010, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x2B00, 0x3199, 0x319A, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x31C0, 0x3859, 0x385A, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0x6400, 0x0000, 0x0000, CALI_DATA_MASTER_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, brzbmain_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, brzbmain_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, brzbmain_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, brzbmain_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, brzbmain_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, brzbmain_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, brzbmain_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, brzbmain_set_awb_gain},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, brzbmain_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_OFFSET_DATA, brzbmain_get_otp_qcom_pdaf_offset_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, brzbmain_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, brzbmain_streaming_resume},
-};
-
-static u32 brzbmain_dcg_ratio_table_ratio4[] = {4000};
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_12bit = {
-	.gain_ratio = 4000,
-	.OB_pedestal = 64,
-	.saturation_level = 3900,
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01480143,/*cal_layout_table*/
-		.addr_header_id = 0x00000006,/*cc*/
-		.i2c_write_id = 0xA0,/*cc*/
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0C00,
-		.addr_qsc = 0x22D0,/*QSC_EEPROM_ADDR*/
-		.sensor_reg_addr_qsc = 0xC000, /*QSC_OTP_ADDR*/
-
-		.pdc_support = TRUE,
-		.pdc_size = 0x180,
-		.addr_pdc = 0x2EE0,
-		.sensor_reg_addr_pdc = 0xD200,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-		/*      */
-		{0, 192}, {0, 0}, {0, 384}, {0, 0}, {2048, 1536},
-		/*      */
-		{2048, 1536}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 3,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1},
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-		/*      */
-		{0, 192}, {0, 0}, {0, 384}, {0, 0}, {2048, 1536},
-		/*      */
-		{2048, 1536}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 3,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1},
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-		/*      */
-		{0, 192}, {0, 0}, {0, 384}, {0, 0}, {2048, 1536},
-		/*      */
-		{2048, 1536}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 3,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,
-		.i4BinFacX = 4,
-		.i4BinFacY = 2,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1},
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_partial_pd_info = {
-	.i4OffsetX = 16,
-	.i4OffsetY = 32,
-	.i4PitchX = 8,
-	.i4PitchY = 32,
-	.i4PairNum = 4,
-	.i4SubBlkW = 8,
-	.i4SubBlkH = 16,
-	.i4PosL = {{20, 41}, {20, 43}, {19, 48}, {19, 50}},
-	.i4PosR = {{16, 33}, {16, 35}, {23, 56}, {23, 58}},
-	.i4BlockNumX = 504,
-	.i4BlockNumY = 72,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-		/*      */
-		{0, 192}, {0, 0}, {0, 384}, {0, 0}, {2048, 1536},
-		/*      */
-		{2048, 1536}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 3,
-	.i4VolumeX = 1,
-	.i4VolumeY = 2,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4ModeIndex = 0,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	/* VC's PD pattern description */
-	.sPDMapInfo[0] = {
-		/*.i4VCFeature = VC_PDAF_STATS_NE_PIX_1,*/
-		.i4PDPattern = 3,
-		.i4PDRepetition = 8,
-		.i4PDOrder = {1, 1, 0, 0, 0, 0, 1, 1}, /*R = 1, L = 0*/
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x0200,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x0800,
-			.vsize = 0x0480,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x0200,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x0200,
-			.vsize = 0x02F0,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 0x0200,
-			.vsize = 0x02F0,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2c,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x0800,
-			.vsize = 0x0600,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus12[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus13[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus14[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x0200,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{/*reg_B2-S1_QBIN(VBIN)_4096x3072_30fps*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = brzbmain_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 11904,
-		.framelength = 3791,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_B2-S1_QBIN(VBIN)_4096x3072_30fps*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = brzbmain_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 11904,
-		.framelength = 3791,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_B4-S3_4096x2304_30FPS**/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = brzbmain_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_normal_video_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_normal_video,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_normal_video),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 11904,
-		.framelength = 3791,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_B5-S3  4096x2304 @60FPS */
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = brzbmain_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_hs_video_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_hs_video,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_hs_video),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 7136,
-		.framelength = 3174,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{   /*reg_V1  2048x1152 @120FPS.*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = brzbmain_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 6728,
-		.framelength = 1680,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 687090000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = 2469,
-		.delay_frame = 3,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_V2 2048x1152 @240FPS QBIN V2H2 w/o PD VB Max*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = brzbmain_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 4264,
-		.framelength = 1314,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 871540000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = 2469,
-		.delay_frame = 3,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_B1-S2 4096x3072 @24FPS QBIN(VBIN) w/ All-PD VB Max.*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = brzbmain_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom2_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 11904,
-		.framelength = 4739,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 682970000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_B6-S3  4096x2304 @30FPS QBIN w/ Partial-PD VB Max. Seamless w/ "*-S3"**/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = brzbmain_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom3_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 7136,
-		.framelength = 6349,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-		.awb_enabled = true,
-	},
-	{/*reg_L1-S1 4096x3072 @30FPS QBIN 2LB-MF w/ Partial-PD VB Max. Seamless w/ "*-S1"*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = brzbmain_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_custom4,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_custom4),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 1360000000,
-		.linelength = 7136,
-		.framelength = 6349,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 3092,
-		.read_margin = 36*2,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 2,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-		.awb_enabled = true,
-	},
-	{/*reg_F2-S1 4096x3072 @30FPS Full-Crop w/ PD VB Max. Seamless w/  "*-S1"*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = brzbmain_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom5_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_custom5,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_custom5),
-		.hdr_mode = HDR_NONE,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 3225,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.delay_frame = 2,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.ana_gain_max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.awb_enabled = true,
-	},
-	{/*reg_L2-S1 4096x3072 @15FPS Full RMSC 2LB-MF w/ All-PD VB Max. Seamless w/ "*-S1"*/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = brzbmain_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom6_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_custom6,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_custom6),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 6451,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 3132,
-		.read_margin = 36*2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.delay_frame = 2,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 16,
-	},
-	{/*reg_G1-S3  4096x2304 @30FPS QBIN DAG1:4 w/ Partial-PD VB Max. Seamless w/ "*-S3"*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = brzbmain_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom7_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.pclk = 1360000000,
-		.linelength = 14256,
-		.framelength = 3174,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 811430000,
-		.readout_length = 0,
-		.read_margin = 64,
-		.framelength_step = 8,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -352,
-		.delay_frame = 2,
-		.csi_param = {},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_R,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = brzbmain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(brzbmain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.awb_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/*reg_F1 8192x6144 @15FPS Full RMSC w/ PD VB Max.*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = brzbmain_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 6451,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1100570000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 16,
-	},
-	{/*reg_F1-RAW 8192x6144 @15FPS Full-RAW w/ PD VB Max.*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = brzbmain_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 6451,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1100570000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.ana_gain_max = BASEGAIN * 16,
-	},
-	{/*reg_F2-RAW-S1 4096x3072 @30FPS Full-RAW-Crop w/ PD VB Max.*/
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = brzbmain_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom10_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_custom10,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_custom10),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 3225,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.ana_gain_max = BASEGAIN * 16,
-                .sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-	},
-	{/*F3-RAW-S2 4096x3072 @24FPS Full-RAW-Crop w/ PD VB Max. Seamless*/
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = brzbmain_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom11_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_custom11,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_custom11),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 4032,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 682970000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-		.pdc_enabled = TRUE,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-	},
-	{/*8192x6144 @12FPS Full-RAW w/ PD VB Max. Seamless w*/
-		.frame_desc = frame_desc_cus12,
-		.num_entries = ARRAY_SIZE(frame_desc_cus12),
-		.mode_setting_table = brzbmain_custom12_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom12_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_custom12,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_custom12),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 17824,
-		.framelength = 6329,
-		.max_framerate = 120,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.awb_enabled = true,
-	},
-	{/*reg_V3 2048x1536 @24FPS QBIN V2H2 w/o PD VB Max.*/
-		.frame_desc = frame_desc_cus13,
-		.num_entries = ARRAY_SIZE(frame_desc_cus13),
-		.mode_setting_table = brzbmain_custom13_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom13_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 4264,
-		.framelength = 13156,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 871540000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 8,
-		.coarse_integ_step = 8,
-		.min_exposure_line = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 695,
-		.delay_frame = 2,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.ana_gain_max = BASEGAIN * 64,
-		.awb_enabled = true,
-/* 		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		}, */
-	},
-	{/*reg_B3-S1 4096x3072 @60FPS QBIN w/ Partial-PD VB Max.*/
-		.frame_desc = frame_desc_cus14,
-		.num_entries = ARRAY_SIZE(frame_desc_cus14),
-		.mode_setting_table = brzbmain_custom14_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbmain_custom14_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = brzbmain_seamless_custom14,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(brzbmain_seamless_custom14),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 7136,
-		.framelength = 3174,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = BRZBMAIN_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},
-	.i2c_addr_table = {0x34, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_HV_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = brzbmain_ana_gain_table,
-	.ana_gain_table_size = sizeof(brzbmain_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 6,
-	.exposure_max = 128*(0xFFFC - 56), /* exposure reg is limited to 4x. max = max - margin */
-	.exposure_step = 4,
-	.exposure_margin = 56,
-	.dig_gain_min = BASE_DGAIN * 1,
-	.dig_gain_max = BASE_DGAIN * 16,
-	.dig_gain_step = 4,
-
-	.frame_length_max = 0xFFFC,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1000000,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,/*PDAF_SUPPORT_CAMSV_QPD*/
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0202, 0x0203}, /*COARSE_INTEG_TIME*/
-			{0x0000, 0x0000}, /*not support*/
-			{0x0224, 0x0225}, /*ST_COARSE_INTEG_TIME*/
-	},
-	.reg_addr_exposure_in_lut = {
-			{0x0E20, 0x0E21}, /*LUT_A_COARSE_INTEG_TIME*/
-			{0x0E40, 0x0E41}, /*LUT_B_COARSE_INTEG_TIME*/
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3160,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, /*ANA_GAIN_GLOBAL*/
-			{0x0000, 0x0000}, /*not support*/
-			{0x0216, 0x0217}, /*ST_ANA_GAIN_GLOBAL*/
-	},
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E22, 0x0E23}, /*LUT_A_ANA_GAIN_GLOBAL*/
-			{0x0E42, 0x0E43}, /*LUT_B_ANA_GAIN_GLOBAL*/
-	},
-	.reg_addr_dig_gain = {
-			{0x020E, 0x020F}, /*DIG_GAIN_GLOBAL*/
-			{0x0000, 0x0000}, /*not support*/
-			{0x0218, 0x0219}, /*ST_DIG_GAIN_GLOBAL*/
-	},
-	.reg_addr_dig_gain_in_lut = {
-			{0x0E24, 0x0E25}, /*LUT_A_DIG_GAIN_GLOBAL*/
-			{0x0E64, 0x0E65}, /*LUT_B_DIG_GAIN_GLOBAL*/
-	},
-	.reg_addr_dcg_ratio = 0x3182, /* DCGHDR_RATIO */
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E28, 0x0E29},  /*LUT_A_FRM_LENGTH_LINES*/
-			{0x0E68, 0x0E69},  /*LUT_B_FRM_LENGTH_LINES*/
-	},
-	.reg_addr_temp_en = 0x0138, /*TEMP_SEN_CTL*/
-	.reg_addr_temp_read = 0x013A, /*TEMP_SEN_OUT*/
-	.reg_addr_auto_extend = 0x0350, /*FRM_LENGTH_CTL*/
-	.reg_addr_frame_count = 0x0005, /*FRM_CNT*/
-	.reg_addr_fast_mode = 0x3010, /*FAST_MODETRANSIT_CTL*/
-	.reg_addr_fast_mode_in_lbmf = 0x31A7, /*EAEB_LUT_CONTROL*/
-
-	.init_setting_table = brzbmain_init_setting,
-	.init_setting_len = ARRAY_SIZE(brzbmain_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xf10e5980,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {0}, 2000},
-	{HW_ID_AVDD, {2800000, 2800000}, 3000},
-	{HW_ID_AVDD1, {1804000, 1804000}, 3000},
-	{HW_ID_AFVDD, {3000000, 3000000}, 3000},
-	{HW_ID_DVDD, {1104000, 1104000}, 4000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 3000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry brzbmain_mipi_raw_entry = {
-	.name = "brzbmain_mipi_raw",
-	.id = BRZBMAIN_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static unsigned int read_brzbmain_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != brzbmain_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != brzbmain_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = brzbmain_eeprom_info[meta_id].start;
-	readsize = brzbmain_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct oplus_eeprom_info_struct* infoPtr;
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, BRZBMAIN_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static int brzbmain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int brzbmain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR, otp_qcom_pdaf_offset_data, OTP_QCOM_PDAF_OFFSET_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_offset_data, sizeof(otp_qcom_pdaf_offset_data));
-	*len = sizeof(otp_qcom_pdaf_offset_data);
-
-	return 0;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH	 (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-	ret = adaptor_i2c_wr_p8(ctx->i2c_client, BRZBMAIN_EEPROM_WRITE_ID >> 1,
-			addr, para, len);
-
-	return ret;
-}
-
-
-static kal_int32 write_1st_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xff35;
-	u8 flag = 0;
-
-	adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | BRZBMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-
-	reg = 0x06ca;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | BRZBMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x2);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | BRZBMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-	}
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, BRZBMAIN_EEPROM_WRITE_ID >> 1, reg, &flag);
-	LOG_INF("SET_SENSOR_OTP WRP: 0x%x\n", flag);
-
-	return ret;
-}
-
-static kal_int32 write_2nd_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xa000;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, BRZBMAIN_EEPROM_WRITE_ID >> 1, reg, 0x0E);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, BRZBMAIN_EEPROM_WRITE_ID >> 1, reg, 0x00);
-	}
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	u8 flag = 0;
-	int ret = 0;
-	adaptor_i2c_rd_u8(ctx->i2c_client, BRZBMAIN_EEPROM_READ_ID >> 1, 0x000D, &flag);
-	if (flag == 0x01) {
-		ret = write_1st_eeprom_protect(ctx, enable);
-	} else {
-		ret = write_2nd_eeprom_protect(ctx, enable);
-	}
-	return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-	ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-	kal_int32  ret = ERROR_NONE;
-	kal_uint16 data_base, data_length;
-	kal_uint32 idx, idy;
-	kal_uint8 *pData;
-	UINT32 i = 0;
-	kal_uint16 offset = 0;
-	if(pStereodata != NULL) {
-		LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-			pStereodata->uSensorId,
-			pStereodata->uDeviceId,
-			pStereodata->baseAddr,
-			pStereodata->dataLength);
-
-		data_base = pStereodata->baseAddr;
-		data_length = pStereodata->dataLength;
-		pData = pStereodata->uData;
-		offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-		if (offset > data_length) {
-			offset = data_length;
-		}
-		if ((pStereodata->uSensorId == BRZBMAIN_SENSOR_ID) && (data_length == CALI_DATA_MASTER_LENGTH)
-				&& (data_base == BRZBMAIN_STEREO_START_ADDR || data_base == BRZBMAIN_STEREO_MT_START_ADDR
-				|| data_base == BRZBMAIN_STEREO_MT_105CM_START_ADDR)) {
-			LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-			LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-			LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-			LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-			LOG_INF("write_Module_data Write end\n");
-		} else if ((pStereodata->uSensorId == BRZBMAIN_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-				&& (data_base == BRZBMAIN_AESYNC_START_ADDR)) {
-			LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-				pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-				read_cmos_eeprom_8(ctx, BRZBMAIN_AESYNC_START_ADDR),
-				read_cmos_eeprom_8(ctx, BRZBMAIN_AESYNC_START_ADDR+1),
-				read_cmos_eeprom_8(ctx, BRZBMAIN_AESYNC_START_ADDR+2),
-				read_cmos_eeprom_8(ctx, BRZBMAIN_AESYNC_START_ADDR+3),
-				read_cmos_eeprom_8(ctx, BRZBMAIN_AESYNC_START_ADDR+4),
-				read_cmos_eeprom_8(ctx, BRZBMAIN_AESYNC_START_ADDR+5),
-				read_cmos_eeprom_8(ctx, BRZBMAIN_AESYNC_START_ADDR+6),
-				read_cmos_eeprom_8(ctx, BRZBMAIN_AESYNC_START_ADDR+7));
-			LOG_INF("AESync write_Module_data Write end\n");
-		} else {
-			LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-			return -1;
-		}
-	} else {
-		LOG_INF("brzbmain write_Module_data pStereodata is null\n");
-		return -1;
-	}
-	return ret;
-}
-
-static int brzbmain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	int ret = ERROR_NONE;
-	ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-	if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-		LOG_INF("ret=%d\n", ret);
-	}
-	return 0;
-}
-
-static int brzbmain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_MASTER_LENGTH)
-		*len = CALI_DATA_MASTER_LENGTH;
-	LOG_INF("feature_data mode: %d", *feature_data_16);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_brzbmain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_brzbmain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MW_MAIN:
-	default:
-		read_brzbmain_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	}
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, BRZBMAIN_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "brzbmain read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "brzbmain read_otp_info end\n");
-}
-
-static int brzbmain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int brzbmain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x896) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 brzbmain_feedback_awbgain[] = {
-	0x0B8E, 0x01,
-	0x0B8F, 0x00,
-	0x0B90, 0x02,
-	0x0B91, 0x28,
-	0x0B92, 0x01,
-	0x0B93, 0x77,
-	0x0B94, 0x01,
-	0x0B95, 0x00,
-};
-
-/*write AWB gain to sensor*/
-static void feedback_awbgain(struct subdrv_ctx *ctx, kal_uint32 r_gain, kal_uint32 b_gain)
-{
-	UINT32 r_gain_int = 0;
-	UINT32 b_gain_int = 0;
-
-	DRV_LOG(ctx, "feedback_awbgain r_gain: %d, b_gain: %d\n", r_gain, b_gain);
-	r_gain_int = r_gain / 512;
-	b_gain_int = b_gain / 512;
-	brzbmain_feedback_awbgain[5] = r_gain_int;
-	brzbmain_feedback_awbgain[7] = (r_gain - r_gain_int * 512) / 2;
-	brzbmain_feedback_awbgain[9] = b_gain_int;
-	brzbmain_feedback_awbgain[11] = (b_gain - b_gain_int * 512) / 2;
-	subdrv_i2c_wr_regs_u8(ctx, brzbmain_feedback_awbgain,
-		ARRAY_SIZE(brzbmain_feedback_awbgain));
-}
-
-static int brzbmain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-	feedback_awbgain(ctx, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B);
-	return 0;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	sensor_init(ctx);
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_u8(ctx, 0x0101, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x0B06, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0xDDA9, 0x4E);
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x01);
-			DRV_LOG(ctx, "set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x00);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0xD200;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0xD300;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature <= 0x60)
-		temperature_convert = temperature;
-	else if (temperature >= 0x61 && temperature <= 0x7F)
-		temperature_convert = 97;
-	else if (temperature >= 0x80 && temperature <= 0xE2)
-		temperature_convert = -30;
-	else
-		temperature_convert = (char)temperature | 0xFFFFFF0;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (16384 - (16384 * BASEGAIN) / gain);
-}
-
-void brzbmain_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-		case HDR_NONE:
-		case HDR_RAW_LBMF:
-		case HDR_RAW_DCG_RAW:
-			if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-				ctx->s_ctx.mode[scenario_id].min_exposure_line) {
-				*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-				*min_shutter = ctx->s_ctx.mode[scenario_id].min_exposure_line;
-			} else {
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-			}
-			break;
-		default:
-			*exposure_step = ctx->s_ctx.exposure_step;
-			*min_shutter = ctx->s_ctx.exposure_min;
-			break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int brzbmain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	brzbmain_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static int brzbmain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		(ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF ||
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF))
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x4);
-
-	update_mode_info(ctx, scenario_id);
-
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-		calculate_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id);
-	}
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0] - 1,
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 24) & 0x07);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8)  & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int brzbmain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-	DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	if (mode) {
-	/* 1:Solid Color 2:Color Bar 5:Black */
-		switch (mode) {
-		case 5:
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x0218, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x3015, 0x00);
-			break;
-		default:
-			subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-			break;
-		}
-	} else if (ctx->test_pattern) {
-		subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /*No pattern*/
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x0218, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x3015, 0x40);
-	}
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG(ctx, "AOV mode set stream in SCP side! (sid:%u)\n",
-			ctx->current_scenario_id);
-		return;
-	}
-	if (enable) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-
-	} else {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x38D0, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x38D1, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x38D2, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x38D3, 0x00);
-	}
-	mdelay(10);
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int brzbmain_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, true);
-		return 0;
-}
-
-static int brzbmain_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-		return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u8 qsc_is_valid = 0;
-	u8 pdc_is_valid = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/*Check QSC validation*/
-		qsc_is_valid = QSC_IS_VALID_VAL; /*i2c_read_eeprom(ctx, OTP_QSC_VALID_ADDR);*/
-		if (qsc_is_valid != 0x01) {
-			DRV_LOGE(ctx, "QSC data is invalid, flag(%02x)", qsc_is_valid);
-		} else if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		pdc_is_valid = QSC_IS_VALID_VAL; /*i2c_read_eeprom(ctx, OTP_PDC_VALID_ADDR);*/
-		if (pdc_is_valid != 0x01) {
-			DRV_LOGE(ctx, "PDC data is invalid, flag(%02x)", pdc_is_valid);
-		} else if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id)
-{
-	u32 ae_ctrl_cit;
-	u32 prsh_length_lc = 0;
-	u32 cit_step = 1;
-	u8 hw_fixed_value = ctx->s_ctx.seamless_switch_prsh_hw_fixed_value;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = ctx->current_scenario_id;
-	enum IMGSENSOR_HDR_MODE_ENUM hdr_mode;
-
-	if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM7) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM7 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 400;
-	} else {
-		prsh_length_lc = 0;
-	}
-
-	hdr_mode = ctx->s_ctx.mode[scenario_id].hdr_mode;
-	switch (hdr_mode) {
-	case HDR_RAW_LBMF:
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: dig_gain_lut_a = SE / dig_gain_lut_b = LE */
-			/* 3exp: dig_gain_lut_a = SE / dig_gain_lut_b = ME / dig_gain_lut_c = LE */
-			ae_ctrl_cit = ae_ctrl->exposure.me_exposure;
-			DRV_LOGE(ctx, "debug se %llu le %llu, me %llu", ae_ctrl->exposure.se_exposure, ae_ctrl->exposure.le_exposure, ae_ctrl->exposure.me_exposure);
-		} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: dig_gain_lut_a = LE / dig_gain_lut_b = SE */
-			/* 3exp: dig_gain_lut_a = LE / dig_gain_lut_b = ME / dig_gain_lut_c = SE */
-			ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-			DRV_LOGE(ctx, "debug le\n");
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-		break;
-	case HDR_NONE:
-	case HDR_RAW:
-	case HDR_CAMSV:
-	case HDR_RAW_ZHDR:
-	case HDR_MultiCAMSV:
-	case HDR_RAW_STAGGER:
-	case HDR_RAW_DCG_RAW:
-	case HDR_RAW_DCG_COMPOSE:
-	default:
-		ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-		break;
-	}
-	ae_ctrl_cit = max(ae_ctrl_cit, ctx->s_ctx.exposure_min);
-	ae_ctrl_cit = min(ae_ctrl_cit, ctx->s_ctx.exposure_max);
-	cit_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step ?: 1;
-	if (cit_step) {
-		ae_ctrl_cit = round_up(ae_ctrl_cit, cit_step);
-		prsh_length_lc = round_up(prsh_length_lc, cit_step);
-	}
-	DRV_LOGE(ctx, "prsh_length_lc %u ae_ctrl_cit %u\n", prsh_length_lc, ae_ctrl_cit);
-	prsh_length_lc = (prsh_length_lc > (ae_ctrl_cit + hw_fixed_value)) ? prsh_length_lc : 0;
-	if (prsh_length_lc < (ae_ctrl_cit + hw_fixed_value)) {
-		DRV_LOG_MUST(ctx,
-			"pre-shutter no need: prsh_length_lc(%u) < (ae_ctrl_cit(%u(max=%u,min=%u)) + hw_fixed_value(%u))\n",
-			prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.exposure_max, ctx->s_ctx.exposure_min, hw_fixed_value);
-		ctx->s_ctx.seamless_switch_prsh_length_lc = 0;
-		return;
-	}
-
-	ctx->s_ctx.seamless_switch_prsh_length_lc = prsh_length_lc;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmainmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmainmipiraw_Sensor.h
deleted file mode 100755
index c75ac137..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbmain_mipi_raw/brzbmainmipiraw_Sensor.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     brzbmainmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZBMAINMIPI_SENSOR_H
-#define _BRZBMAINMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "brzbmain_ana_gain_table.h"
-#include "brzbmain_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#endif /* BRZBMAIN */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/Makefile
deleted file mode 100755
index 5b2d11b3..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/brzbuwidemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwide_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwide_Sensor_setting.h
deleted file mode 100755
index 6425c821..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwide_Sensor_setting.h
+++ /dev/null
@@ -1,1241 +0,0 @@
-/*  SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzbuwide_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZBUWIDE_SENSOR_SETTING_H
-#define _BRZBUWIDE_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-
-/*static u16 brzbuwide_soft_reset[] = {
- @@ init
-	0xfd, 0x00,
-	0x20, 0x0e,
- sl 3 3 ; sleep time
-};*/
-
-static u16 brzbuwide_init_setting[] = {
-	0xfd, 0x00,
-	0x20, 0x0e,
-};
-
-static u16 brzbuwide_preview_capture_setting[] = {
-/* @@OV08D_MIPI_3264x2448_2lane_1440M_30fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 3264x2448 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 2608 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x00,
-	0x06, 0xd0,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x08,
-	0xa2, 0x09,
-	0xa3, 0x90,
-	0xa4, 0x00,
-	0xa5, 0x08,
-	0xa6, 0x0c,
-	0xa7, 0xc0,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x0c,
-	0x8f, 0xc0,
-	0x90, 0x09,
-	0x91, 0x90,
-	0xb7, 0x02,
-};
-
-static u16 brzbuwide_normal_video_setting[] = {
-/* @@OV08D_MIPI_3264x1840_2lane_1440M_30fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 3264x1840 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 2608 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x00,
-	0x06, 0xd0,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x01,
-	0xa1, 0x38,
-	0xa2, 0x07,
-	0xa3, 0x30,
-	0xa4, 0x00,
-	0xa5, 0x08,
-	0xa6, 0x0c,
-	0xa7, 0xc0,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x0c,
-	0x8f, 0xc0,
-	0x90, 0x07,
-	0x91, 0x30,
-	0xb7, 0x02,
-};
-
-static u16 brzbuwide_hs_video_setting[] = {
-/* @@OV08D_MIPI_1632x1224_2lane_720M_60fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 1664x1248 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 720Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 60 */
-/* ; linelength: 478 */
-/* ; framelength: 1252 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x1d, 0x00,
-	0x18, 0x3c,
-	0x1c, 0x19,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x1a, 0x0a,
-	0x1b, 0x08,
-	0x2a, 0x01,
-	0x2b, 0x9a,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x09,
-	0x04, 0x6a,
-	0x05, 0x00,
-	0x06, 0x00,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0xf8,
-	0x31, 0x06,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x55,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x7b,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb7, 0x0a,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc8, 0x03,
-	0xc9, 0xf8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x1a,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x03,
-	0x09, 0x08,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x2c, 0x01,
-	0x50, 0x02,
-	0x51, 0x03,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa9, 0x04,
-	0xaa, 0xd0,
-	0xab, 0x06,
-	0xac, 0x68,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x04,
-	0xa2, 0x04,
-	0xa3, 0xc8,
-	0xa4, 0x00,
-	0xa5, 0x04,
-	0xa6, 0x06,
-	0xa7, 0x60,
-	0xfd, 0x05,
-	0x04, 0x60,
-	0x06, 0x80,
-	0x07, 0x99,
-	0x0D, 0x03,
-	0x0F, 0x03,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x06,
-	0x19, 0x68,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x06,
-	0x8f, 0x60,
-	0x90, 0x04,
-	0x91, 0xc8,
-	0x93, 0x0e,
-	0x94, 0x77,
-	0x95, 0x77,
-	0x96, 0x10,
-	0x98, 0x88,
-	0x9c, 0x1a,
-	0xb7, 0x02,
-};
-
-static u16 brzbuwide_slim_video_setting[] = {
-};
-
-static u16 brzbuwide_custom1_setting[] = {
-/* @@OV08D_MIPI_3264x2448_2lane_1440M_24fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 3264x2448 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 24 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x08,
-	0xa2, 0x09,
-	0xa3, 0x90,
-	0xa4, 0x00,
-	0xa5, 0x08,
-	0xa6, 0x0c,
-	0xa7, 0xc0,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x0c,
-	0x8f, 0xc0,
-	0x90, 0x09,
-	0x91, 0x90,
-	0xb7, 0x02,
-};
-
-static u16 brzbuwide_custom2_setting[] = {
-/* @@OV08D_MIPI_1632x1224_2lane_720M_24fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 1664x1248 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 720Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 24 */
-/* ; linelength: 478 */
-/* ; framelength: 3136 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x1d, 0x00,
-	0x18, 0x3c,
-	0x1c, 0x19,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x1a, 0x0a,
-	0x1b, 0x08,
-	0x2a, 0x01,
-	0x2b, 0x9a,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x09,
-	0x04, 0x6a,
-	0x05, 0x0e,
-	0x06, 0xb8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0xf8,
-	0x31, 0x06,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x55,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x7b,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb7, 0x0a,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc8, 0x03,
-	0xc9, 0xf8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x1a,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x03,
-	0x09, 0x08,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x2c, 0x01,
-	0x50, 0x02,
-	0x51, 0x03,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa9, 0x04,
-	0xaa, 0xd0,
-	0xab, 0x06,
-	0xac, 0x68,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x04,
-	0xa2, 0x04,
-	0xa3, 0xc8,
-	0xa4, 0x00,
-	0xa5, 0x04,
-	0xa6, 0x06,
-	0xa7, 0x60,
-	0xfd, 0x05,
-	0x04, 0x60,
-	0x06, 0x80,
-	0x07, 0x99,
-	0x0D, 0x03,
-	0x0F, 0x03,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x06,
-	0x19, 0x68,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x06,
-	0x8f, 0x60,
-	0x90, 0x04,
-	0x91, 0xc8,
-	0x93, 0x0e,
-	0x94, 0x77,
-	0x95, 0x77,
-	0x96, 0x10,
-	0x98, 0x88,
-	0x9c, 0x1a,
-	0xb7, 0x02,
-};
-
-static u16 brzbuwide_custom3_setting[] = {
-/* @@OV08D_MIPI_2560x1920_2lane_1440M_24fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 2560x1920 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x01,
-	0xa1, 0x10,
-	0xa2, 0x07,
-	0xa3, 0x80,
-	0xa4, 0x01,
-	0xa5, 0x68,
-	0xa6, 0x0a,
-	0xa7, 0x00,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x0a,
-	0x8f, 0x00,
-	0x90, 0x07,
-	0x91, 0x80,
-	0xb7, 0x02,
-};
-
-static u16 brzbuwide_custom4_setting[] = {
-/* @@OV08D_MIPI_2304x1728_2lane_1440M_24fps_V2.0 */
-/* 100 99 2304 1728 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 2304x1728 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x01,
-	0xa1, 0x70,
-	0xa2, 0x06,
-	0xa3, 0xc0,
-	0xa4, 0x01,
-	0xa5, 0xe8,
-	0xa6, 0x09,
-	0xa7, 0x00,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x09,
-	0x8f, 0x00,
-	0x90, 0x06,
-	0x91, 0xc0,
-	0xb7, 0x02,
-};
-
-static u16 brzbuwide_custom5_setting[] = {
-/* @@OV08D_MIPI_1664x1248_2lane_1440M_24fps_V2.0 */
-/* 100 99 1664 1248 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 1664x1248 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 24 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x02,
-	0xa1, 0x60,
-	0xa2, 0x04,
-	0xa3, 0xe0,
-	0xa4, 0x03,
-	0xa5, 0x28,
-	0xa6, 0x06,
-	0xa7, 0x80,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x40,
-	0x8e, 0x06,
-	0x8f, 0x80,
-	0x90, 0x04,
-	0x91, 0xe0,
-	0xb7, 0x02,
-};
-
-#endif  /* _OMEGAC1WIDE_SENSOR_SETTING_H  */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwide_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwide_ana_gain_table.h
deleted file mode 100755
index b0e53cdb..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwide_ana_gain_table.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzbuwide_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __BRZBUWIDE_ANA_GAIN_TABLE_H__
-#define __BRZBUWIDE_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 brzbuwide_ana_gain_table[] = {
-	1024,
-	1088,
-	1152,
-	1216,
-	1280,
-	1344,
-	1408,
-	1472,
-	1536,
-	1600,
-	1664,
-	1728,
-	1792,
-	1856,
-	1920,
-	1984,
-	2048,
-	2176,
-	2304,
-	2432,
-	2560,
-	2688,
-	2816,
-	2944,
-	3072,
-	3200,
-	3328,
-	3456,
-	3584,
-	3712,
-	3840,
-	3968,
-	4096,
-	4352,
-	4608,
-	4864,
-	5120,
-	5376,
-	5632,
-	5888,
-	6144,
-	6400,
-	6656,
-	6912,
-	7168,
-	7424,
-	7680,
-	7936,
-	8192,
-	8704,
-	9216,
-	9728,
-	10240,
-	10752,
-	11264,
-	11776,
-	12288,
-	12800,
-	13312,
-	13824,
-	14336,
-	14848,
-	15360,
-	15872,
-};
-#endif /* __BRZBUWIDE_ANA_GAIN_TABLE_H__  */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwidemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwidemipiraw_Sensor.c
deleted file mode 100755
index a1ebd627..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwidemipiraw_Sensor.c
+++ /dev/null
@@ -1,1798 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzbuwidemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "brzbuwidemipiraw_Sensor.h"
-
-#define SENSOR_NAME  SENSOR_DRVNAME_BRZBUWIDE_MIPI_RAW
-#define PFX "brzbuwide_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-
-#define BRZBUWIDE_EEPROM_I2C_ADDR	(0xA2)
-
-#define OTP_SIZE	          (0x2000)
-#define SENSOR_ID	          (0x56084700)
-
-#define BRZBUWIDE_STEREO_START_ADDR    (0x1260)
-#define BRZBUWIDE_AESYNC_START_ADDR    (0x1A00)
-
-#define BRZBUWIDE_UNIQUE_SENSOR_ID_ADDR 0x00
-#define BRZBUWIDE_UNIQUE_SENSOR_ID_LENGTH 16
-static BYTE brzbuwide_unique_id[BRZBUWIDE_UNIQUE_SENSOR_ID_LENGTH] = { 0 };
-
-static struct subdrv_ctx *g_ctx = NULL;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int brzbuwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-
-static int brzbuwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain);
-static int brzbuwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter);
-static int brzbuwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length);
-static int brzbuwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr, BYTE *data, int size);
-static int brzbuwide_set_register(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_get_register(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int brzbuwide_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int brzbuwide_set_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void read_unique_sensorid(struct subdrv_ctx *ctx);
-
-static int brzbuwide_common_control(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-	MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-	MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data);
-
-static bool g_id_from_dts_flag = false;
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id);
-
-
-static struct eeprom_map_info brzbuwide_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x001l, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x1260, 0x0000, 0x0000, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0, 0, 0, 0, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0, 0, 0, 0, false },
-	{ EEPROM_META_DISTORTION_DATA, 0, 0, 0, 0, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, brzbuwide_set_test_pattern},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, brzbuwide_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, brzbuwide_get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, brzbuwide_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, brzbuwide_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, brzbuwide_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, brzbuwide_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, brzbuwide_streaming_resume},
-	{SENSOR_FEATURE_SET_GAIN, brzbuwide_set_gain},
-	{SENSOR_FEATURE_SET_ESHUTTER, brzbuwide_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, brzbuwide_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_SEAMLESS_EXTEND_FRAME_LENGTH, brzbuwide_extend_frame_length},
-	{SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO, brzbuwide_set_max_framerate_by_scenario},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, brzbuwide_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_SET_REGISTER, brzbuwide_set_register},
-	{SENSOR_FEATURE_GET_REGISTER, brzbuwide_get_register},
-	{SENSOR_FEATURE_SET_FRAMELENGTH, brzbuwide_set_frame_length},
-};
-
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x0065009a,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA2,
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 1840,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1224,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 1840,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1224,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2560,
-			.vsize = 1920,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1664,
-			.vsize = 1248,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{ /* 3264x2448 @30FPS  */
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = brzbuwide_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbuwide_preview_capture_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 2608,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 3264,
-			.scale_h = 2448,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x34,
-		},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-		}, */
-	},
-	{ /* 3264x2448 @30FPS  */
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = brzbuwide_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbuwide_preview_capture_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 2608,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 3264,
-			.scale_h = 2448,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*      	.sensor_setting_info = {
-                     .sensor_scenario_usage = UNUSE_MASK,
-		     .equivalent_fps = 0,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = brzbuwide_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbuwide_normal_video_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 2608,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 312,
-			.w0_size = 3264,
-			.h0_size = 1840,
-			.scale_w = 3264,
-			.scale_h = 1840,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1840,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1840,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*      	.sensor_setting_info = {
-                        .sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = brzbuwide_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbuwide_hs_video_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 478,
-		.framelength = 1252,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 144000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 1632,
-			.scale_h = 1224,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1224,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1224,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 60,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = brzbuwide_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbuwide_slim_video_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 288000000,
-		.linelength = 3672,
-		.framelength = 2612,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 312,
-			.w0_size = 3264,
-			.h0_size = 1840,
-			.scale_w = 3264,
-			.scale_h = 1840,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1840,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1840,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = brzbuwide_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbuwide_custom1_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 3264,
-			.scale_h = 2448,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = brzbuwide_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbuwide_custom2_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 478,
-		.framelength = 3136,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 144000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 1632,
-			.scale_h = 1224,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1224,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1224,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = brzbuwide_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbuwide_custom3_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 360,
-			.y0_offset = 272,
-			.w0_size = 2560,
-			.h0_size = 1920,
-			.scale_w = 2560,
-			.scale_h = 1920,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2560,
-			.h1_size = 1920,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2560,
-			.h2_tg_size = 1920,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = brzbuwide_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbuwide_custom4_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 488,
-			.y0_offset = 368,
-			.w0_size = 2304,
-			.h0_size = 1728,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = brzbuwide_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(brzbuwide_custom5_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 808,
-			.y0_offset = 608,
-			.w0_size = 1664,
-			.h0_size = 1248,
-			.scale_w = 1664,
-			.scale_h = 1248,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1664,
-			.h1_size = 1248,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1664,
-			.h2_tg_size = 1248,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 75,
-		},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		}, */
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = BRZBUWIDE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0000}, /*page0, 0x00, 0x01, 0x02, 0x03*/
-	.i2c_addr_table = {0x6c, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_8_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {3264, 2448},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_2_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_B,
-	.ana_gain_def = BASEGAIN * 1,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 15.5,
-	.ana_gain_type = 1, /*0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC*/
-	.ana_gain_step = 1,
-/*	.ana_gain_table = brzbuwide_ana_gain_table,
-	.ana_gain_table_size = sizeof(brzbuwide_ana_gain_table),*/
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max =  0x1FFFFE,      /* (3ffffc / 2) */
-	.exposure_step = 4,
-	.exposure_margin = 20,
-
-	.frame_length_max = 0x1FFFFE,   /* (3ffffc / 2) */
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 934000,
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.g_gain2reg = get_gain2reg,
-	.s_gph = set_group_hold,
-
-/*	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0102, 0x0103},
-	},*/
-	.long_exposure_support = FALSE,
-	.reg_addr_exposure_lshift = 0,
-/*	.reg_addr_ana_gain = {
-			{0x0204, 0x0205},
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},*/
-	.reg_addr_auto_extend = 0,
-	.reg_addr_frame_count = PARAM_UNDEFINED,
-/*	.reg_addr_fast_mode = 0x3010,*/
-
-	.init_setting_table = brzbuwide_init_setting,
-	.init_setting_len = ARRAY_SIZE(brzbuwide_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.checksum_value = 0xD1EFF68B,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = brzbuwide_common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 5000},
-	{HW_ID_AVDD, {2800000, 2800000}, 9000},
-	{HW_ID_DVDD, {1200000, 1200000}, 5000},
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {1}, 1000},
-        {HW_ID_MCLK_DRIVING_CURRENT, {4}, 8000},
-};
-
-struct subdrv_entry brzbuwide_mipi_raw_entry = {
-	.name = SENSOR_NAME,
-	.id = BRZBUWIDE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	check_current_scenario_id_bound(ctx);
-
-	if (enable) {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x03);
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0x20, 0x0f);
-		subdrv_i2c_wr_u8_u8(ctx, 0xe7, 0x03);
-		subdrv_i2c_wr_u8_u8(ctx, 0xe7, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0xa0, 0x01);
-	} else {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0xa0, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0x20, 0x0b);
-	}
-
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int brzbuwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-		if (*(u32 *)para)
-			brzbuwide_set_shutter_convert(ctx, *(u32 *)para);
-		streaming_ctrl(ctx, true);
-
-		return 0;
-}
-
-static int brzbuwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-
-		return 0;
-}
-static unsigned int read_brzbuwide_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != brzbuwide_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != brzbuwide_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = brzbuwide_eeprom_info[meta_id].start;
-	readsize = brzbuwide_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA3,
-	.i2c_write_id = 0xA2,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int brzbuwide_get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct oplus_eeprom_info_struct* infoPtr;
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-	infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 7) | (infoPtr->afInfo[0] >> 1));
-	infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 1);
-	infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 7) | (infoPtr->afInfo[2] >> 1));
-	infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 1);
-	infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 7) | (infoPtr->afInfo[4] >> 1));
-	infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 1);
-
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, BRZBUWIDE_EEPROM_I2C_ADDR >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-		kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-	ret = adaptor_i2c_wr_p8(ctx->i2c_client, BRZBUWIDE_EEPROM_I2C_ADDR >> 1,
-			addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xE000;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, BRZBUWIDE_EEPROM_I2C_ADDR >> 1, reg, 0x03);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, BRZBUWIDE_EEPROM_I2C_ADDR >> 1, reg, 0x02);
-	}
-
-	return ret;
-}
-
-static kal_uint16 get_64align_addr(kal_uint16 data_base) {
-	kal_uint16 multiple = 0;
-	kal_uint16 surplus = 0;
-	kal_uint16 addr_64align = 0;
-
-	multiple = data_base / 64;
-	surplus = data_base % 64;
-	if(surplus) {
-		addr_64align = (multiple + 1) * 64;
-	} else {
-		addr_64align = multiple * 64;
-	}
-	return addr_64align;
-}
-
-static kal_int32 eeprom_table_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-	kal_uint16 idx;
-	kal_uint16 idy;
-	kal_int32 ret = ERROR_NONE;
-	UINT32 i = 0;
-
-	idx = data_length/WRITE_DATA_MAX_LENGTH;
-	idy = data_length%WRITE_DATA_MAX_LENGTH;
-
-	LOG_INF("[test] data_base(0x%x) data_length(%d) idx(%d) idy(%d)\n", data_base, data_length, idx, idy);
-
-	for (i = 0; i < idx; i++) {
-		ret = table_write_eeprom_30Bytes(ctx, (data_base + WRITE_DATA_MAX_LENGTH * i),
-				&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: i=%d\n", i);
-			return -1;
-		}
-		msleep(6);
-	}
-
-	msleep(6);
-	if(idy) {
-		ret = table_write_eeprom_30Bytes(ctx, (data_base + WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-			return -1;
-		}
-	}
-	return 0;
-}
-
-static kal_int32 eeprom_64align_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-	kal_uint16 addr_64align = 0;
-	kal_uint16 part1_length = 0;
-	kal_uint16 part2_length = 0;
-	kal_int32 ret = ERROR_NONE;
-
-	addr_64align = get_64align_addr(data_base);
-
-	part1_length = addr_64align - data_base;
-	if(part1_length > data_length) {
-		part1_length = data_length;
-	}
-	part2_length = data_length - part1_length;
-
-	write_eeprom_protect(ctx, 0);
-	msleep(6);
-
-	if (part1_length) {
-		ret = eeprom_table_write(ctx, data_base, pData, part1_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part1\n");
-			msleep(6);
-			return -1;
-		}
-	}
-
-	msleep(6);
-	if (part2_length) {
-		ret = eeprom_table_write(ctx, addr_64align, pData + part1_length, part2_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part2\n");
-			msleep(6);
-			return -1;
-		}
-	}
-	msleep(6);
-	write_eeprom_protect(ctx, 1);
-	msleep(6);
-
-	return 0;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-			ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-	kal_int32  ret = ERROR_NONE;
-	kal_uint16 data_base, data_length;
-	kal_uint8 *pData;
-
-	if(pStereodata != NULL) {
-		LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-					   pStereodata->uSensorId,
-					   pStereodata->uDeviceId,
-					   pStereodata->baseAddr,
-					   pStereodata->dataLength);
-
-		data_base = pStereodata->baseAddr;
-		data_length = pStereodata->dataLength;
-		pData = pStereodata->uData;
-		if ((pStereodata->uSensorId == BRZBUWIDE_SENSOR_ID)
-			&& (data_length == CALI_DATA_SLAVE_LENGTH)
-			&& (data_base == BRZBUWIDE_STEREO_START_ADDR)) {
-			LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-
-			eeprom_64align_write(ctx, data_base, pData, data_length);
-
-			LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-			LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-			LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-			LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-			LOG_INF("write_Module_data Write end\n");
-
-		} else if ((pStereodata->uSensorId == BRZBUWIDE_SENSOR_ID)
-			&& (data_length < AESYNC_DATA_LENGTH_TOTAL)
-			&& (data_base == BRZBUWIDE_AESYNC_START_ADDR)) {
-			LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-				pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-
-			eeprom_64align_write(ctx, data_base, pData, data_length);
-
-			LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-					read_cmos_eeprom_8(ctx, BRZBUWIDE_AESYNC_START_ADDR),
-					read_cmos_eeprom_8(ctx, BRZBUWIDE_AESYNC_START_ADDR+1),
-					read_cmos_eeprom_8(ctx, BRZBUWIDE_AESYNC_START_ADDR+2),
-					read_cmos_eeprom_8(ctx, BRZBUWIDE_AESYNC_START_ADDR+3),
-					read_cmos_eeprom_8(ctx, BRZBUWIDE_AESYNC_START_ADDR+4),
-					read_cmos_eeprom_8(ctx, BRZBUWIDE_AESYNC_START_ADDR+5),
-					read_cmos_eeprom_8(ctx, BRZBUWIDE_AESYNC_START_ADDR+6),
-					read_cmos_eeprom_8(ctx, BRZBUWIDE_AESYNC_START_ADDR+7));
-			LOG_INF("AESync write_Module_data Write end\n");
-		} else {
-			LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-			return -1;
-		}
-	} else {
-		LOG_INF("omegas2 write_Module_data pStereodata is null\n");
-		return -1;
-	}
-	return ret;
-}
-
-static int brzbuwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	int ret = ERROR_NONE;
-	ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-	if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-		LOG_INF("ret=%d\n", ret);
-	}
-	return 0;
-}
-
-static int brzbuwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_SLAVE_LENGTH)
-		*len = CALI_DATA_SLAVE_LENGTH;
-	LOG_INF("feature_data mode:%d  lens:%d", *feature_data_16, *len);
-	read_brzbuwide_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-			(BYTE *)feature_return_para_32, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-					BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, BRZBUWIDE_EEPROM_I2C_ADDR >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "brzbuwide read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "brzbuwide read_otp_info end\n");
-}
-
-static int brzbuwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int brzbuwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static u16 brzbuwide_unique_sensorid[] = {
-	0xfd, 0x00,
-	0x20, 0x0f,
-	0xe7, 0x03,
-	0xe7, 0x00,
-	0xfd, 0x03,
-	0x84, 0x40,
-	0x88, 0x00,
-	0x89, 0x00,
-	0x8a, 0x00,
-	0x8b, 0x0f,
-	0x81, 0x01,
-	0xfd, 0x08,
-};
-
-static void read_unique_sensorid(struct subdrv_ctx *ctx)
-{
-	kal_uint8 i = 0;
-
-	LOG_INF("read wide sensor unique sensorid");
-	subdrv_i2c_wr_regs_u8_u8(ctx, brzbuwide_unique_sensorid, ARRAY_SIZE(brzbuwide_unique_sensorid));
-	msleep(50);
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x08);
-	for (i = 0; i< BRZBUWIDE_UNIQUE_SENSOR_ID_LENGTH; i++) {
-		brzbuwide_unique_id[i] =  subdrv_i2c_rd_u8_u8(ctx, BRZBUWIDE_UNIQUE_SENSOR_ID_ADDR + i);
-		pr_err("%s unique_id[%d] = 0x%x", __func__, i, brzbuwide_unique_id[i]);
-	}
-}
-
-static kal_uint32 return_sensor_id(struct subdrv_ctx *ctx)
-{
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x00);
-
-	return ((subdrv_i2c_rd_u8_u8(ctx, 0x00) << 24) | (subdrv_i2c_rd_u8_u8(ctx, 0x01) << 16)
-		  | (subdrv_i2c_rd_u8_u8(ctx, 0x02) << 8)  |  subdrv_i2c_rd_u8_u8(ctx, 0x03));
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = return_sensor_id(ctx);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == SENSOR_ID) {
-				get_imgsensor_id_from_dts(ctx, sensor_id);
-				if (first_read) {
-					read_unique_sensorid(ctx);
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	/*subdrv_i2c_wr_regs_u8_u8(ctx, brzbuwide_soft_reset, ARRAY_SIZE(brzbuwide_soft_reset));
-	mdelay(3);*/
-	subdrv_i2c_wr_regs_u8_u8(ctx, brzbuwide_init_setting, ARRAY_SIZE(brzbuwide_init_setting));
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	if(!en) {  /*fresh*/
-		subdrv_i2c_wr_u8_u8(g_ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(g_ctx, 0x01, 0x01);
-	}
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return  0x10 * gain/BASEGAIN;
-}
-
-static int g_diff_frame_length[] = {
-	2504,  /*preview*/
-	2504,  /*capture*/
-	2504,  /*normal video*/
-	1252,  /*his video*/
-	1252,  /*slim video*/
-	2504,  /*custom1*/
-	1252,  /*custom2*/
-	2504,  /*custom3*/
-	2504,  /*custom4*/
-	2504,  /*custom5*/
-};
-
-void brzbuwide_write_frame_length(struct subdrv_ctx *ctx, u32 fll)
-{
-	u32 fll_step = 0;
-	u32 vblank = 0;
-	u32 diff_frame_length;
-	check_current_scenario_id_bound(ctx);
-
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-	diff_frame_length = g_diff_frame_length[ctx->current_scenario_id] ?
-		g_diff_frame_length[ctx->current_scenario_id] : g_diff_frame_length[0];
-
-	ctx->frame_length = fll;
-
-	if (fll_step)
-		fll = round_up(fll, fll_step);
-
-	/* write framelength */
-	vblank = (fll - diff_frame_length) * 2;
-
-	if(vblank < 65535) {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x05, (vblank >> 8) & 0xFF);
-		subdrv_i2c_wr_u8_u8(ctx, 0x06,  vblank & 0xFF);
-	/*	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);	*/
-	}
-
-	DRV_LOG(ctx, "ctx->frame_length(%d), diff_frame_length(%d), vblank(%d)\n",
-		ctx->frame_length, diff_frame_length, vblank);
-	DRV_LOG(ctx, "fll[0x%x], fll_step:%u ctx->extend_frame_length_en:%d\n",
-		fll, fll_step, ctx->extend_frame_length_en);
-}
-
-void brzbuwide_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_NONE:
-			if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-				ctx->s_ctx.mode[scenario_id].min_exposure_line) {
-				*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-				*min_shutter = ctx->s_ctx.mode[scenario_id].min_exposure_line;
-			} else {
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-			}
-			break;
-		default:
-			*exposure_step = ctx->s_ctx.exposure_step;
-			*min_shutter = ctx->s_ctx.exposure_min;
-			break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-static int brzbuwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-	if (mode != ctx->test_pattern) {
-		if (mode) {
-			LOG_INF("%s mode(%d)", __func__, mode);
-			switch(mode) {
-			case 5:
-				subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-				subdrv_i2c_wr_u8_u8(ctx, 0x21, 0x00); /*DIG_GAIN*/
-				subdrv_i2c_wr_u8_u8(ctx, 0x22, 0x00);
-				subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);
-				subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x07);
-				subdrv_i2c_wr_u8_u8(ctx, 0x04, 0x00); /*blc_lvl_target*/
-				subdrv_i2c_wr_u8_u8(ctx, 0x05, 0x00);
-				break;
-			default:
-				break;
-			}
-		} else {
-			LOG_INF("%s mode(%d)", __func__, mode);
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x21, 0x02);
-			subdrv_i2c_wr_u8_u8(ctx, 0x22, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x07);
-			subdrv_i2c_wr_u8_u8(ctx, 0x04, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x05, 0x40);
-		}
-		ctx->test_pattern = mode;
-	}
-
-	return ERROR_NONE;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	g_ctx = ctx;
-
-	return 0;
-}
-
-static int brzbuwide_set_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u16 frame_length = (u16) (*para);
-	if (frame_length) {
-		ctx->frame_length = frame_length;
-	}
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-
-	if (gph) {
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	}
-	brzbuwide_write_frame_length(ctx, ctx->frame_length);
-	if (gph) {
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	}
-
-	DRV_LOG(ctx, "fll(input/output/min):%u/%u/%u\n",
-		frame_length, ctx->frame_length, ctx->min_frame_length);
-	return 0;
-}
-
-static int brzbuwide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length)
-{
-	u32 fine_integ_line = 0;
-	u32 cit_step = 0;
-
-	bool gph = (ctx->s_ctx.s_gph != NULL);
-	u8 exposure_margin = ctx->s_ctx.exposure_margin;
-	DRV_LOG(ctx, "shutter:%llu, frame_length:%u  exposure_margin:%d\n", shutter, frame_length, exposure_margin);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	check_current_scenario_id_bound(ctx);
-	/* check boundary of shutter */
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	shutter = FINE_INTEG_CONVERT(shutter, fine_integ_line);
-	shutter = max(shutter, (u64)ctx->s_ctx.exposure_min);
-	shutter = min(shutter, (u64)ctx->s_ctx.exposure_max);
-	/* check boundary of framelength */
-
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	if (cit_step)
-		shutter = round_up(shutter, cit_step);
-	ctx->frame_length =	max(shutter + exposure_margin, (u64)ctx->frame_length);
-	ctx->frame_length =	max((u64)ctx->min_frame_length, (u64)ctx->frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->exposure[0] = shutter;
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		brzbuwide_write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-	subdrv_i2c_wr_u8_u8(ctx, 0x02, (shutter * 2 >> 16) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0x03, (shutter * 2 >>  8) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0x04,  shutter * 2  & 0xFF);
-/*	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);	
-	subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);	*/
-
-	DRV_LOG(ctx, "exp[0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		ctx->exposure[0], frame_length, ctx->frame_length, ctx->autoflicker_en);
-
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		/*commit_i2c_buffer(ctx);*/
-	}
-	/* group hold end */
-
-	return 0;
-}
-
-static int brzbuwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	return brzbuwide_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], ((u64*)para)[1]);
-}
-
-static int brzbuwide_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter)
-{
-	return brzbuwide_set_shutter_frame_length_convert(ctx, shutter, 0);
-}
-
-static int brzbuwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	return brzbuwide_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], 0);
-}
-
-static int brzbuwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64*)para;
-	u64 *shutters =(u64 *)(*feature_data);
-	u16 exp_cnt = (u64) (*(feature_data + 1));
-	u64 framelength = (u64) (*(feature_data + 2));
-
-	if(exp_cnt != 1) {
-		LOG_INF("exp_cnt(%d) != 1\n", exp_cnt);
-	}
-
-	return brzbuwide_set_shutter_frame_length_convert(ctx, shutters[0], framelength);
-}
-
-static int brzbuwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain)
-{
-	u16 rg_gain;
-	bool gph = (ctx->s_ctx.s_gph != NULL);
-	u32 ana_gain_min = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_min : ctx->ana_gain_min;
-	u32 ana_gain_max = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max : ctx->ana_gain_max;
-
-	/* check boundary of gain */
-	gain = max(gain, ana_gain_min);
-	gain = min(gain, ana_gain_max);
-
-	/* mapping of gain to register value */
-	rg_gain = get_gain2reg(gain);
-
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-
-	/* write gain */
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-	subdrv_i2c_wr_u8_u8(ctx, 0x24, rg_gain);
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01); /*page1*/
-	subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01); /*fresh*/
-
-	DRV_LOG(ctx, "%s gain(%d) rg_gain[0x%x]\n", __func__, gain, rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	/* group hold end */
-
-	return 0;
-}
-
-static int brzbuwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-
-	return brzbuwide_set_gain_convert(ctx, gain);
-}
-
-void brzbuwide_set_dummy(struct subdrv_ctx *ctx)
-{
-}
-
-static int brzbuwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = (u32)((u64*)para)[0];
-	u32 framerate = (u32)((u64*)para)[1];
-	u32 frame_length;
-	u32 frame_length_step;
-
-	LOG_INF("scenario_id(%d), framerate(%d)", scenario_id, framerate);
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOG(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-	}
-
-	if (framerate == 0) {
-		DRV_LOG(ctx, "framerate (%u) is invalid\n", framerate);
-		return 0;
-	}
-
-	if (ctx->s_ctx.mode[scenario_id].linelength == 0) {
-		DRV_LOG(ctx, "linelength (%u) is invalid\n",
-			ctx->s_ctx.mode[scenario_id].linelength);
-		return 0;
-	}
-
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	ctx->frame_length =
-		max(frame_length, ctx->s_ctx.mode[scenario_id].framelength);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	ctx->min_frame_length = ctx->frame_length;
-	DRV_LOG(ctx, "max_fps(input/output):%u/%u(sid:%u), min_fl_en:1\n",
-		framerate, ctx->current_fps, scenario_id);
-	if (ctx->s_ctx.reg_addr_auto_extend ||
-			(ctx->frame_length > (ctx->exposure[0] + ctx->s_ctx.exposure_margin))) {
-		brzbuwide_set_dummy(ctx);
-	}
-
-	return 0;
-}
-
-static int brzbuwide_extend_frame_length_convert(struct subdrv_ctx *ctx, u32 ns)
-{
-	return 0;
-}
-
-static int brzbuwide_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 ns = (u32)((u64*)para)[0];
-
-	return brzbuwide_extend_frame_length_convert(ctx, ns);
-}
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-
-	return 0;
-}
-
-static int brzbuwide_set_register(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u8 page = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF00;
-	u8 addr = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF;
-
-
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, page);
-	subdrv_i2c_wr_u8_u8(ctx, addr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData & 0xFF);
-
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);	/*page1*/
-	subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);	/*fresh*/
-
-	pr_err("%s RegAddr: 0x%08x, RegData: 0x%04x \n",
-		__func__, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-
-	return 0;
-}
-
-static int brzbuwide_get_register(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u8 page = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF00;
-	u8 addr = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF;
-
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, page);
-	((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData =
-		subdrv_i2c_rd_u8_u8(ctx, addr);
-	pr_err("%s RegAddr: 0x%08x, RegData: 0x%04x \n",
-		__func__, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-
-	return 0;
-}
-
-
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id) {
-	struct subdrv_entry *m_subdrv_entry = &brzbuwide_mipi_raw_entry;
-	u32 final_sensor_id = 0xFFFFFFFF;
-	const char *of_sensor_names[OF_SENSOR_NAMES_MAXCNT];
-	const char *of_sensor_hal_names[OF_SENSOR_NAMES_MAXCNT];
-	u32   of_sensor_ids[OF_SENSOR_NAMES_MAXCNT] = {0};
-	int i, index, of_sensor_names_cnt, of_sensor_hal_names_cnt, of_sensor_ids_ret;
-	struct device *dev = &ctx->i2c_client->dev;
-
-	memset(&of_sensor_ids, 0xFF, sizeof(of_sensor_ids));
-
-	if(g_id_from_dts_flag == false) {
-		of_sensor_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-names", of_sensor_names, ARRAY_SIZE(of_sensor_names));
-
-		of_sensor_hal_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-hal-names", of_sensor_hal_names, ARRAY_SIZE(of_sensor_hal_names));
-
-		of_sensor_ids_ret = of_property_read_u32_array(dev->of_node,
-				"sensor-ids", of_sensor_ids, of_sensor_names_cnt);
-
-		pr_err("%s of_sensor_names_cnt(%d), of_sensor_ids_ret(%d)",
-			__func__, of_sensor_names_cnt, of_sensor_ids_ret);
-		for(i = 0 ;i < of_sensor_names_cnt; i++) {
-				pr_err("%s of_sensor_names[%d] = %s  of_sensor_ids[%d] = %d",
-				__func__, i, of_sensor_names[i], i, of_sensor_ids[i]);
-		}
-		for(i = 0 ;i < of_sensor_hal_names_cnt; i++) {
-			pr_err("%s of_sensor_hal_names_cnt[%d] = %s",
-				__func__, i, of_sensor_hal_names[i]);
-		}
-
-		if (of_sensor_names_cnt && (of_sensor_ids_ret == 0)) {
-			for(index = 0; index < of_sensor_names_cnt; index++) {
-				if (strncmp(SENSOR_NAME, of_sensor_names[index], strlen(SENSOR_NAME)) == 0) {
-					final_sensor_id = of_sensor_ids[index];
-					break;
-				}
-			}
-		} else {
-			pr_err("%s sensor-ids error in dts", __func__);
-		}
-		g_id_from_dts_flag = true;
-	}
-
-	if(final_sensor_id != 0xFFFFFFFF) {
-		*sensor_id = final_sensor_id;
-		ctx->s_ctx.sensor_id = final_sensor_id;
-
-		m_subdrv_entry->id = final_sensor_id;
-		if(of_sensor_hal_names_cnt == of_sensor_names_cnt) {
-			m_subdrv_entry->name = of_sensor_hal_names[index];
-		}
-
-		pr_err("%s final index(%d), id(%d) name(%s)",
-			__func__, index, m_subdrv_entry->id, m_subdrv_entry->name);
-	} else {
-		*sensor_id = ctx->s_ctx.sensor_id;
-	}
-
-	return;
-}
-
-static int brzbuwide_common_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data)
-{
-	int ret = ERROR_NONE;
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u64 time_boot_begin = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx) {
-		DRV_LOGE(ctx, "null _adaptor_ctx\n");
-		return -ENODEV;
-	}
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOG(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-		ret = ERROR_INVALID_SCENARIO_ID;
-	}
-	update_mode_info(ctx, scenario_id);
-
-	if (ctx->s_ctx.mode[scenario_id].mode_setting_table != NULL) {
-		DRV_LOG_MUST(ctx, "E: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		if (ctx->power_on_profile_en)
-			time_boot_begin = ktime_get_boottime_ns();
-
-		/* initail setting */
-		/*subdrv_i2c_wr_regs_u8_u8(ctx, brzbuwide_soft_reset, ARRAY_SIZE(brzbuwide_soft_reset));
-		mdelay(3);*/
-
-		i2c_table_rewrite(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table,
-				ctx->s_ctx.mode[scenario_id].mode_setting_len);
-
-		if (ctx->power_on_profile_en) {
-			ctx->sensor_pw_on_profile.i2c_cfg_period =
-					ktime_get_boottime_ns() - time_boot_begin;
-
-			ctx->sensor_pw_on_profile.i2c_cfg_table_len =
-					ctx->s_ctx.mode[scenario_id].mode_setting_len;
-		}
-		DRV_LOG(ctx, "X: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-	} else {
-		DRV_LOGE(ctx, "please implement mode setting(sid:%u)!\n", scenario_id);
-	}
-
-	if (check_is_no_crop(ctx, scenario_id) && probe_eeprom(ctx)) {
-		idx = ctx->eeprom_index;
-		support = info[idx].xtalk_support;
-		pbuf = info[idx].preload_xtalk_table;
-		size = info[idx].xtalk_size;
-		addr = info[idx].sensor_reg_addr_xtalk;
-		if (support) {
-			if (pbuf != NULL && addr > 0 && size > 0) {
-				subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-				DRV_LOG(ctx, "set XTALK calibration data done.");
-			}
-		}
-	}
-
-	set_mirror_flip(ctx, ctx->s_ctx.mirror);
-
-	return ret;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwidemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwidemipiraw_Sensor.h
deleted file mode 100755
index 1d87cf9a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/brzbuwide_mipi_raw/brzbuwidemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     brzbuwidemipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _BRZBUWIDEMIPI_SENSOR_H
-#define _BRZBUWIDEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "brzbuwide_ana_gain_table.h"
-#include "brzbuwide_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#endif /* _BRZBUWIDEMIPI_SENSOR_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/emiramain_mipi_raw/emiramainmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/emiramain_mipi_raw/emiramainmipiraw_Sensor.c
index 45ada439..f942fa6c 100755
--- a/vendor/oplus/kernel/camera/imgsensor/common/emiramain_mipi_raw/emiramainmipiraw_Sensor.c
+++ b/vendor/oplus/kernel/camera/imgsensor/common/emiramain_mipi_raw/emiramainmipiraw_Sensor.c
@@ -25,7 +25,6 @@
 
 #define EMIRAMAIN_EEPROM_READ_ID	0xA0
 #define EMIRAMAIN_EEPROM_WRITE_ID	0xA1
-#define EMIRAMAIN_AF_WRITE_ID	0x18
 #define EMIRAMAIN_MAX_OFFSET		0x8000
 
 #define PFX "emiramain_camera_sensor"
@@ -2694,35 +2693,10 @@ static int emiramain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
 	return 0;
 }
 
-static int yala_adaptor_i2c_wr_u8_u8(struct i2c_client *i2c_client, u8 addr, u8 reg, u8 val)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg;
-
-	if (i2c_client == NULL)
-		return -ENODEV;
-
-	buf[0] = reg;
-	buf[1] = val;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-	msg.len = sizeof(buf);
-
-	ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-	if (ret < 0)
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-
-	return ret;
-}
-
 static int open(struct subdrv_ctx *ctx)
 {
 	u32 sensor_id = 0;
 	u32 scenario_id = 0;
-	int ret = -1;
 
 	/* get sensor id */
 	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
@@ -2730,9 +2704,6 @@ static int open(struct subdrv_ctx *ctx)
 
 	/* initail setting */
 	sensor_init(ctx);
-	ret = yala_adaptor_i2c_wr_u8_u8(ctx->i2c_client, EMIRAMAIN_AF_WRITE_ID >> 1, 0x02, 0x0);
-	mdelay(2);
-	DRV_LOGE(ctx, "init emiramain af before write qsc data, ret: %d\n", ret);
 
 	/*QSC setting*/
 	if (ctx->s_ctx.s_cali != NULL) {
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/Makefile
deleted file mode 100755
index dd3b641f..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/kkthfrontmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfront_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfront_Sensor_setting.h
deleted file mode 100755
index 98165d68..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfront_Sensor_setting.h
+++ /dev/null
@@ -1,1429 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 kkthfront_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KKTHFRONGT_SENSOR_SETTING_H
-#define _KKTHFRONGT_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-
-static u16 kkthfront_init_setting[] = {
-    //External Clock Setting
-    0x0136,0x18,
-    0x0137,0x00,
-    //Register version
-    0x3C7E,0x02,
-    0x3C7F,0x01,
-    //Signaling mode setting
-    0x0111,0x02,
-    //Global Setting
-    0x380C,0x00,
-    0x3C00,0x01,
-    0x3C01,0x00,
-    0x3C02,0x00,
-    0x3C03,0x03,
-    0x3C04,0xFF,
-    0x3C05,0x01,
-    0x3C06,0x00,
-    0x3C07,0x00,
-    0x3C08,0x03,
-    0x3C09,0xFF,
-    0x3C0A,0x00,
-    0x3C0B,0x00,
-    0x3C0C,0x10,
-    0x3C0D,0x10,
-    0x3C0E,0x10,
-    0x3C0F,0x10,
-    0x3C10,0x10,
-    0x3C11,0x20,
-    0x3C15,0x00,
-    0x3C16,0x00,
-    0x3C17,0x01,
-    0x3C18,0x00,
-    0x3C19,0x01,
-    0x3C1A,0x00,
-    0x3C1B,0x01,
-    0x3C1C,0x00,
-    0x3C1D,0x01,
-    0x3C1E,0x00,
-    0x3C1F,0x00,
-    0x3F89,0x01,
-    0x3F8F,0x01,
-    0x53B9,0x01,
-    0x62C4,0x04,
-    0x658F,0x07,
-    0x6590,0x05,
-    0x6591,0x07,
-    0x6592,0x05,
-    0x6593,0x07,
-    0x6594,0x05,
-    0x6595,0x07,
-    0x6596,0x05,
-    0x6597,0x05,
-    0x6598,0x05,
-    0x6599,0x05,
-    0x659A,0x05,
-    0x659B,0x05,
-    0x659C,0x05,
-    0x659D,0x05,
-    0x659E,0x07,
-    0x659F,0x05,
-    0x65A0,0x07,
-    0x65A1,0x05,
-    0x65A2,0x07,
-    0x65A3,0x05,
-    0x65A4,0x07,
-    0x65A5,0x05,
-    0x65A6,0x05,
-    0x65A7,0x05,
-    0x65A8,0x05,
-    0x65A9,0x05,
-    0x65AA,0x05,
-    0x65AB,0x05,
-    0x65AC,0x05,
-    0x65AD,0x07,
-    0x65AE,0x07,
-    0x65AF,0x07,
-    0x65B0,0x05,
-    0x65B1,0x05,
-    0x65B2,0x05,
-    0x65B3,0x05,
-    0x65B4,0x07,
-    0x65B5,0x07,
-    0x65B6,0x07,
-    0x65B7,0x07,
-    0x65B8,0x05,
-    0x65B9,0x05,
-    0x65BA,0x05,
-    0x65BB,0x05,
-    0x65BC,0x05,
-    0x65BD,0x05,
-    0x65BE,0x05,
-    0x65BF,0x05,
-    0x65C0,0x05,
-    0x65C1,0x05,
-    0x65C2,0x05,
-    0x65C3,0x05,
-    0x65C4,0x05,
-    0x65C5,0x05,
-    0x6E1C,0x00,
-    0x6E1D,0x00,
-    0x6E25,0x00,
-    0x6E38,0x03,
-    0x895C,0x01,
-    0x895D,0x00,
-    0x8966,0x00,
-    0x8967,0x4E,
-    0x896A,0x00,
-    0x896B,0x24,
-    0x896F,0x34,
-    0x8976,0x00,
-    0x8977,0x00,
-    0x9004,0x1F,
-    0x9200,0xB7,
-    0x9201,0x34,
-    0x9202,0xB7,
-    0x9203,0x36,
-    0x9204,0xB7,
-    0x9205,0x37,
-    0x9206,0xB7,
-    0x9207,0x38,
-    0x9208,0xB7,
-    0x9209,0x39,
-    0x920A,0xB7,
-    0x920B,0x3A,
-    0x920C,0xB7,
-    0x920D,0x3C,
-    0x920E,0xB7,
-    0x920F,0x3D,
-    0x9210,0xB7,
-    0x9211,0x3E,
-    0x9212,0xB7,
-    0x9213,0x3F,
-    0x9214,0xF6,
-    0x9215,0x13,
-    0x9216,0xF6,
-    0x9217,0x34,
-    0x9218,0xF4,
-    0x9219,0xA7,
-    0x921A,0xF4,
-    0x921B,0xAA,
-    0x921C,0xF4,
-    0x921D,0xAD,
-    0x921E,0xF4,
-    0x921F,0xB0,
-    0x9220,0xF4,
-    0x9221,0xB3,
-    0x9222,0x85,
-    0x9223,0x77,
-    0x9224,0xC4,
-    0x9225,0x4B,
-    0x9226,0xC4,
-    0x9227,0x4C,
-    0x9228,0xC4,
-    0x9229,0x4D,
-    0x922A,0xF5,
-    0x922B,0x5E,
-    0x922C,0xF5,
-    0x922D,0x5F,
-    0x922E,0xF5,
-    0x922F,0x64,
-    0x9230,0xF5,
-    0x9231,0x65,
-    0x9232,0xF5,
-    0x9233,0x6A,
-    0x9234,0xF5,
-    0x9235,0x6B,
-    0x9236,0xF5,
-    0x9237,0x70,
-    0x9238,0xF5,
-    0x9239,0x71,
-    0x923A,0xF5,
-    0x923B,0x76,
-    0x923C,0xF5,
-    0x923D,0x77,
-    0x9810,0x14,
-    0x9814,0x14,
-    0xC020,0x00,
-    0xC026,0x00,
-    0xC027,0x00,
-    0xC448,0x01,
-    0xC44F,0x01,
-    0xC450,0x00,
-    0xC451,0x00,
-    0xC452,0x01,
-    0xC455,0x00,
-    0xE186,0x36,
-    0xE206,0x35,
-    0xE226,0x33,
-    0xE266,0x34,
-    0xE2A6,0x31,
-    0xE2C6,0x37,
-    0xE2E6,0x32,
-    //Image Quality adjustment setting
-    0x88D6,0x60,
-    0x9852,0x00,
-    0xA569,0x06,
-    0xA56A,0x13,
-    0xA56B,0x13,
-    0xA56C,0x01,
-    0xA678,0x00,
-    0xA679,0x20,
-    0xA812,0x00,
-    0xA813,0x3F,
-    0xA814,0x3F,
-    0xA830,0x68,
-    0xA831,0x56,
-    0xA832,0x2B,
-    0xA833,0x55,
-    0xA834,0x55,
-    0xA835,0x16,
-    0xA837,0x51,
-    0xA838,0x34,
-    0xA854,0x4F,
-    0xA855,0x48,
-    0xA856,0x45,
-    0xA857,0x02,
-    0xA85A,0x23,
-    0xA85B,0x16,
-    0xA85C,0x12,
-    0xA85D,0x02,
-    0xAA55,0x00,
-    0xAA56,0x01,
-    0xAA57,0x30,
-    0xAA58,0x01,
-    0xAA59,0x30,
-    0xAC72,0x01,
-    0xAC73,0x26,
-    0xAC74,0x01,
-    0xAC75,0x26,
-    0xAC76,0x00,
-    0xAC77,0xC4,
-    0xAE09,0xFF,
-    0xAE0A,0xFF,
-    0xAE12,0x58,
-    0xAE13,0x58,
-    0xAE15,0x10,
-    0xAE16,0x10,
-    0xAF05,0x48,
-    0xB069,0x02,
-    0xEA4B,0x00,
-    0xEA4C,0x00,
-    0xEA4D,0x00,
-    0xEA4E,0x00,
-    0xBCF1,0x00,
-};
-
-/*Reg B1, 3264x2448,30fps,2X2Binning,w/o PD,For MaxVB*/
-// static u16 kkthfront_preview_setting[] = {
-//     //MIPI output setting
-//     0x0112,0x0A,
-//     0x0113,0x0A,
-//     0x0114,0x03,
-//     //Line Length PCK Setting
-//     0x0342,0x0E,
-//     0x0343,0xB8,
-//     //Frame Length Lines Setting
-//     0x0340,0x1D,
-//     0x0341,0xDA,
-//     //ROI Setting
-//     0x0344,0x00,
-//     0x0345,0x00,
-//     0x0346,0x00,
-//     0x0347,0x10,
-//     0x0348,0x19,
-//     0x0349,0x9F,
-//     0x034A,0x13,
-//     0x034B,0x2F,
-//     //Mode Setting
-//     0x0900,0x01,
-//     0x0901,0x22,
-//     0x0902,0x08,
-//     0x3246,0x81,
-//     0x3247,0x81,
-//     //Digital Crop & Scaling
-//     0x0401,0x00,
-//     0x0404,0x00,
-//     0x0405,0x10,
-//     0x0408,0x00,
-//     0x0409,0x08,
-//     0x040A,0x00,
-//     0x040B,0x00,
-//     0x040C,0x0C,
-//     0x040D,0xC0,
-//     0x040E,0x09,
-//     0x040F,0x90,
-//     //Output Size Setting
-//     0x034C,0x0C,
-//     0x034D,0xC0,
-//     0x034E,0x09,
-//     0x034F,0x90,
-//     //Clock Setting
-//     0x0301,0x05,
-//     0x0303,0x02,
-//     0x0305,0x03,
-//     0x0306,0x01,
-//     0x0307,0x0E,
-//     0x030B,0x01,
-//     0x030D,0x02,
-//     0x030E,0x00,
-//     0x030F,0xB0,
-//     0x0310,0x01,
-//     //Other Setting
-//     0x3620,0x00,
-//     0x3621,0x00,
-//     0x3C12,0x56,
-//     0x3C13,0x52,
-//     0x3C14,0x3E,
-//     0x3F0C,0x00,
-//     0x3F14,0x01,
-//     0x3F80,0x00,
-//     0x3F81,0xA0,
-//     0x3F8C,0x00,
-//     0x3F8D,0x00,
-//     0x3FFC,0x00,
-//     0x3FFD,0x1E,
-//     0x3FFE,0x00,
-//     0x3FFF,0xDC,
-//     //Integration Setting
-//     0x0202,0x1D,
-//     0x0203,0xAA,
-//     //Gain Setting
-//     0x0204,0x00,
-//     0x0205,0x70,
-//     0x020E,0x01,
-//     0x020F,0x00,
-//     0x0210,0x01,
-//     0x0211,0x00,
-//     0x0212,0x01,
-//     0x0213,0x00,
-//     0x0214,0x01,
-//     0x0215,0x00,
-//     // mipi
-//     0x0808, 0x02,
-//     0x080A, 0x00,
-//     0x080B, 0xD7,
-//     0x080C, 0x00,
-//     0x080D, 0x87,
-//     0x080E, 0x00,
-//     0x080F, 0xF7,
-//     0x0810, 0x00,
-//     0x0811, 0x87,
-//     0x0812, 0x00,
-//     0x0813, 0x87,
-//     0x0814, 0x00,
-//     0x0815, 0x87,
-//     0x0816, 0x02,
-//     0x0817, 0x47,
-//     0x0818, 0x00,
-//     0x0819, 0x6F,
-//     0x0824, 0x00,
-//     0x0825, 0xF1,
-//     0x0826, 0x00,
-//     0x0827, 0x0F,
-// };
-
-/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-static u16 kkthfront_preview_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x10,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x2F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-static kal_uint16 kkthfront_capture_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x10,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x2F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B14, 3264x1836,30fps,2X2Binning,w/o PD,For(rst<21ms&cycle>1.5 s)*/
-static kal_uint16 kkthfront_normal_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x0F,
-    0x0341, 0xEC,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x0F,
-    0x0203, 0xBC,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 kkthfront_hs_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x07,
-    0x0341, 0xF6,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x07,
-    0x0203, 0xC6,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 kkthfront_slim_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x07,
-    0x0341, 0xF6,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x07,
-    0x0203, 0xC6,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg V2-4 1280x960,10fps,4x4Binning_Crop,w/o PD,For MIPI<1.5G(Skew off)&Hblank=2.4us*/
-static kal_uint16 kkthfront_custom1_setting[] = {
-    //Reset MCLK
-    0x0136, 0x1A,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x08,
-    0x0343, 0xC8,
-    //Frame Length Lines Setting
-    0x0340, 0x53,
-    0x0341, 0x94,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x20,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x11,
-    0x034B, 0x1F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x08,
-    0x3246, 0x89,
-    0x3247, 0x89,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0xB4,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x05,
-    0x040D, 0x00,
-    0x040E, 0x03,
-    0x040F, 0xC0,
-    //Output Size Setting
-    0x034C, 0x05,
-    0x034D, 0x00,
-    0x034E, 0x03,
-    0x034F, 0xC0,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x00,
-    0x0307, 0xB9,
-    0x030B, 0x01,
-    0x030D, 0x04,
-    0x030E, 0x00,
-    0x030F, 0xD8,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x3E,
-    0x3C13, 0x3A,
-    0x3C14, 0x22,
-    0x3F0C, 0x00,
-    0x3F14, 0x00,
-    0x3F80, 0x00,
-    0x3F81, 0x00,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x55,
-    0x3FFE, 0x00,
-    0x3FFF, 0x78,
-    //Integration Setting
-    0x0202, 0x53,
-    0x0203, 0x64,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xA7,
-    0x080C, 0x00,
-    0x080D, 0x5F,
-    0x080E, 0x00,
-    0x080F, 0xAF,
-    0x0810, 0x00,
-    0x0811, 0x5F,
-    0x0812, 0x00,
-    0x0813, 0x5F,
-    0x0814, 0x00,
-    0x0815, 0x5F,
-    0x0816, 0x01,
-    0x0817, 0x97,
-    0x0818, 0x00,
-    0x0819, 0x4F,
-    0x0824, 0x00,
-    0x0825, 0xEB,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg F1-S7, 6560x4928,15fps,Full,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 kkthfront_custom2_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x2C,
-    0x0343, 0xD8,
-    //Frame Length Lines Setting
-    0x0340, 0x13,
-    0x0341, 0x99,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x3F,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x0A,
-    0x3246, 0x01,
-    0x3247, 0x01,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x19,
-    0x040D, 0xA0,
-    0x040E, 0x13,
-    0x040F, 0x40,
-    //Output Size Setting
-    0x034C, 0x19,
-    0x034D, 0xA0,
-    0x034E, 0x13,
-    0x034F, 0x40,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x01,
-    0x3621, 0x01,
-    0x3C12, 0x62,
-    0x3C13, 0x32,
-    0x3C14, 0x20,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0x46,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x6E,
-    0x3FFE, 0x00,
-    0x3FFF, 0x64,
-    //Integration Setting
-    0x0202, 0x13,
-    0x0203, 0x69,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg_B8-3 3264x1856,15fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 kkthfront_custom3_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x3B,
-    0x0341, 0xB6,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x60,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xDF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x40,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x40,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x3B,
-    0x0203, 0x86,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg V3 1640x1232,30fps,4x4Binning,w/o PD,For MaxVB&Binning-Ave*/
-static kal_uint16 kkthfront_custom4_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x08,
-    0x0343, 0xC8,
-    //Frame Length Lines Setting
-    0x0340, 0x32,
-    0x0341, 0x0A,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x3F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x08,
-    0x3246, 0x89,
-    0x3247, 0x89,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x06,
-    0x040D, 0x68,
-    0x040E, 0x04,
-    0x040F, 0xD0,
-    //Output Size Setting
-    0x034C, 0x06,
-    0x034D, 0x68,
-    0x034E, 0x04,
-    0x034F, 0xD0,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x06,
-    0x030F, 0x59,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x3E,
-    0x3C13, 0x3A,
-    0x3C14, 0x22,
-    0x3F0C, 0x00,
-    0x3F14, 0x00,
-    0x3F80, 0x00,
-    0x3F81, 0x00,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x55,
-    0x3FFE, 0x00,
-    0x3FFF, 0x78,
-    //Integration Setting
-    0x0202, 0x31,
-    0x0203, 0xDA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xCF,
-    0x080C, 0x00,
-    0x080D, 0x7F,
-    0x080E, 0x00,
-    0x080F, 0xEF,
-    0x0810, 0x00,
-    0x0811, 0x7F,
-    0x0812, 0x00,
-    0x0813, 0x7F,
-    0x0814, 0x00,
-    0x0815, 0x7F,
-    0x0816, 0x02,
-    0x0817, 0x1F,
-    0x0818, 0x00,
-    0x0819, 0x67,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-static kal_uint16 kkthfront_preview_seamless_setting[] = {
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    0x0347, 0x10,
-    0x034B, 0x2F,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    0x0409, 0x08,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F81, 0xA0,
-    0x3FFD, 0x1E,
-    0x3FFF, 0xDC,
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-};
-
-static kal_uint16 kkthfront_custom2_seamless_setting[] = {
-    0x0342, 0x2C,
-    0x0343, 0xD8,
-    0x0340, 0x13,
-    0x0341, 0x99,
-    0x0347, 0x00,
-    0x034B, 0x3F,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x0A,
-    0x3246, 0x01,
-    0x3247, 0x01,
-    0x0409, 0x00,
-    0x040C, 0x19,
-    0x040D, 0xA0,
-    0x040E, 0x13,
-    0x040F, 0x40,
-    0x034C, 0x19,
-    0x034D, 0xA0,
-    0x034E, 0x13,
-    0x034F, 0x40,
-    0x3620, 0x01,
-    0x3621, 0x01,
-    0x3C12, 0x62,
-    0x3C13, 0x32,
-    0x3C14, 0x20,
-    0x3F81, 0x46,
-    0x3FFD, 0x6E,
-    0x3FFF, 0x64,
-    0x0202, 0x13,
-    0x0203, 0x69,
-};
-
-#endif /*_KKTHFRONGT_SENSOR_SETTING_H*/
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfront_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfront_ana_gain_table.h
deleted file mode 100755
index f5b4a165..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfront_ana_gain_table.h
+++ /dev/null
@@ -1,1034 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 kkthfront_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __KKTHFRONT_ANA_GAIN_TABLE_H__
-#define __KKTHFRONT_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 kkthfront_ana_gain_table[] = {
-    1024,
-    1025,
-    1026,
-    1027,
-    1028,
-    1029,
-    1030,
-    1031,
-    1032,
-    1033,
-    1034,
-    1035,
-    1036,
-    1037,
-    1038,
-    1039,
-    1040,
-    1041,
-    1042,
-    1043,
-    1044,
-    1045,
-    1046,
-    1047,
-    1048,
-    1049,
-    1050,
-    1051,
-    1052,
-    1053,
-    1054,
-    1055,
-    1057,
-    1058,
-    1059,
-    1060,
-    1061,
-    1062,
-    1063,
-    1064,
-    1065,
-    1066,
-    1067,
-    1068,
-    1069,
-    1071,
-    1072,
-    1073,
-    1074,
-    1075,
-    1076,
-    1077,
-    1078,
-    1079,
-    1081,
-    1082,
-    1083,
-    1084,
-    1085,
-    1086,
-    1087,
-    1088,
-    1089,
-    1091,
-    1092,
-    1093,
-    1094,
-    1095,
-    1096,
-    1097,
-    1099,
-    1100,
-    1101,
-    1102,
-    1103,
-    1104,
-    1106,
-    1107,
-    1108,
-    1109,
-    1110,
-    1111,
-    1113,
-    1114,
-    1115,
-    1116,
-    1117,
-    1119,
-    1120,
-    1121,
-    1122,
-    1123,
-    1125,
-    1126,
-    1127,
-    1128,
-    1129,
-    1131,
-    1132,
-    1133,
-    1134,
-    1136,
-    1137,
-    1138,
-    1139,
-    1140,
-    1142,
-    1143,
-    1144,
-    1145,
-    1147,
-    1148,
-    1149,
-    1151,
-    1152,
-    1153,
-    1154,
-    1156,
-    1157,
-    1158,
-    1159,
-    1161,
-    1162,
-    1163,
-    1165,
-    1166,
-    1167,
-    1168,
-    1170,
-    1171,
-    1172,
-    1174,
-    1175,
-    1176,
-    1178,
-    1179,
-    1180,
-    1182,
-    1183,
-    1184,
-    1186,
-    1187,
-    1188,
-    1190,
-    1191,
-    1192,
-    1194,
-    1195,
-    1197,
-    1198,
-    1199,
-    1201,
-    1202,
-    1203,
-    1205,
-    1206,
-    1208,
-    1209,
-    1210,
-    1212,
-    1213,
-    1215,
-    1216,
-    1217,
-    1219,
-    1220,
-    1222,
-    1223,
-    1224,
-    1226,
-    1227,
-    1229,
-    1230,
-    1232,
-    1233,
-    1235,
-    1236,
-    1237,
-    1239,
-    1240,
-    1242,
-    1243,
-    1245,
-    1246,
-    1248,
-    1249,
-    1251,
-    1252,
-    1254,
-    1255,
-    1257,
-    1258,
-    1260,
-    1261,
-    1263,
-    1264,
-    1266,
-    1267,
-    1269,
-    1271,
-    1272,
-    1274,
-    1275,
-    1277,
-    1278,
-    1280,
-    1281,
-    1283,
-    1285,
-    1286,
-    1288,
-    1289,
-    1291,
-    1292,
-    1294,
-    1296,
-    1297,
-    1299,
-    1300,
-    1302,
-    1304,
-    1305,
-    1307,
-    1309,
-    1310,
-    1312,
-    1314,
-    1315,
-    1317,
-    1318,
-    1320,
-    1322,
-    1323,
-    1325,
-    1327,
-    1328,
-    1330,
-    1332,
-    1334,
-    1335,
-    1337,
-    1339,
-    1340,
-    1342,
-    1344,
-    1346,
-    1347,
-    1349,
-    1351,
-    1353,
-    1354,
-    1356,
-    1358,
-    1360,
-    1361,
-    1363,
-    1365,
-    1367,
-    1368,
-    1370,
-    1372,
-    1374,
-    1376,
-    1377,
-    1379,
-    1381,
-    1383,
-    1385,
-    1387,
-    1388,
-    1390,
-    1392,
-    1394,
-    1396,
-    1398,
-    1399,
-    1401,
-    1403,
-    1405,
-    1407,
-    1409,
-    1411,
-    1413,
-    1415,
-    1416,
-    1418,
-    1420,
-    1422,
-    1424,
-    1426,
-    1428,
-    1430,
-    1432,
-    1434,
-    1436,
-    1438,
-    1440,
-    1442,
-    1444,
-    1446,
-    1448,
-    1450,
-    1452,
-    1454,
-    1456,
-    1458,
-    1460,
-    1462,
-    1464,
-    1466,
-    1468,
-    1470,
-    1472,
-    1474,
-    1476,
-    1478,
-    1481,
-    1483,
-    1485,
-    1487,
-    1489,
-    1491,
-    1493,
-    1495,
-    1497,
-    1500,
-    1502,
-    1504,
-    1506,
-    1508,
-    1510,
-    1513,
-    1515,
-    1517,
-    1519,
-    1521,
-    1524,
-    1526,
-    1528,
-    1530,
-    1533,
-    1535,
-    1537,
-    1539,
-    1542,
-    1544,
-    1546,
-    1548,
-    1551,
-    1553,
-    1555,
-    1558,
-    1560,
-    1562,
-    1565,
-    1567,
-    1569,
-    1572,
-    1574,
-    1576,
-    1579,
-    1581,
-    1583,
-    1586,
-    1588,
-    1591,
-    1593,
-    1596,
-    1598,
-    1600,
-    1603,
-    1605,
-    1608,
-    1610,
-    1613,
-    1615,
-    1618,
-    1620,
-    1623,
-    1625,
-    1628,
-    1630,
-    1633,
-    1635,
-    1638,
-    1640,
-    1643,
-    1646,
-    1648,
-    1651,
-    1653,
-    1656,
-    1659,
-    1661,
-    1664,
-    1667,
-    1669,
-    1672,
-    1675,
-    1677,
-    1680,
-    1683,
-    1685,
-    1688,
-    1691,
-    1693,
-    1696,
-    1699,
-    1702,
-    1705,
-    1707,
-    1710,
-    1713,
-    1716,
-    1718,
-    1721,
-    1724,
-    1727,
-    1730,
-    1733,
-    1736,
-    1738,
-    1741,
-    1744,
-    1747,
-    1750,
-    1753,
-    1756,
-    1759,
-    1762,
-    1765,
-    1768,
-    1771,
-    1774,
-    1777,
-    1780,
-    1783,
-    1786,
-    1789,
-    1792,
-    1795,
-    1798,
-    1801,
-    1804,
-    1807,
-    1811,
-    1814,
-    1817,
-    1820,
-    1823,
-    1826,
-    1829,
-    1833,
-    1836,
-    1839,
-    1842,
-    1846,
-    1849,
-    1852,
-    1855,
-    1859,
-    1862,
-    1865,
-    1869,
-    1872,
-    1875,
-    1879,
-    1882,
-    1885,
-    1889,
-    1892,
-    1896,
-    1899,
-    1903,
-    1906,
-    1909,
-    1913,
-    1916,
-    1920,
-    1923,
-    1927,
-    1931,
-    1934,
-    1938,
-    1941,
-    1945,
-    1949,
-    1952,
-    1956,
-    1959,
-    1963,
-    1967,
-    1971,
-    1974,
-    1978,
-    1982,
-    1985,
-    1989,
-    1993,
-    1997,
-    2001,
-    2004,
-    2008,
-    2012,
-    2016,
-    2020,
-    2024,
-    2028,
-    2032,
-    2036,
-    2040,
-    2044,
-    2048,
-    2052,
-    2056,
-    2060,
-    2064,
-    2068,
-    2072,
-    2076,
-    2080,
-    2084,
-    2088,
-    2092,
-    2097,
-    2101,
-    2105,
-    2109,
-    2114,
-    2118,
-    2122,
-    2126,
-    2131,
-    2135,
-    2139,
-    2144,
-    2148,
-    2153,
-    2157,
-    2162,
-    2166,
-    2170,
-    2175,
-    2179,
-    2184,
-    2189,
-    2193,
-    2198,
-    2202,
-    2207,
-    2212,
-    2216,
-    2221,
-    2226,
-    2231,
-    2235,
-    2240,
-    2245,
-    2250,
-    2255,
-    2259,
-    2264,
-    2269,
-    2274,
-    2279,
-    2284,
-    2289,
-    2294,
-    2299,
-    2304,
-    2309,
-    2314,
-    2319,
-    2325,
-    2330,
-    2335,
-    2340,
-    2345,
-    2351,
-    2356,
-    2361,
-    2366,
-    2372,
-    2377,
-    2383,
-    2388,
-    2394,
-    2399,
-    2404,
-    2410,
-    2416,
-    2421,
-    2427,
-    2432,
-    2438,
-    2444,
-    2449,
-    2455,
-    2461,
-    2467,
-    2473,
-    2478,
-    2484,
-    2490,
-    2496,
-    2502,
-    2508,
-    2514,
-    2520,
-    2526,
-    2532,
-    2538,
-    2545,
-    2551,
-    2557,
-    2563,
-    2570,
-    2576,
-    2582,
-    2589,
-    2595,
-    2601,
-    2608,
-    2614,
-    2621,
-    2628,
-    2634,
-    2641,
-    2647,
-    2654,
-    2661,
-    2668,
-    2674,
-    2681,
-    2688,
-    2695,
-    2702,
-    2709,
-    2716,
-    2723,
-    2730,
-    2737,
-    2744,
-    2752,
-    2759,
-    2766,
-    2774,
-    2781,
-    2788,
-    2796,
-    2803,
-    2811,
-    2818,
-    2826,
-    2833,
-    2841,
-    2849,
-    2857,
-    2864,
-    2872,
-    2880,
-    2888,
-    2896,
-    2904,
-    2912,
-    2920,
-    2928,
-    2937,
-    2945,
-    2953,
-    2962,
-    2970,
-    2978,
-    2987,
-    2995,
-    3004,
-    3013,
-    3021,
-    3030,
-    3039,
-    3048,
-    3057,
-    3066,
-    3075,
-    3084,
-    3093,
-    3102,
-    3111,
-    3120,
-    3130,
-    3139,
-    3148,
-    3158,
-    3167,
-    3177,
-    3187,
-    3196,
-    3206,
-    3216,
-    3226,
-    3236,
-    3246,
-    3256,
-    3266,
-    3276,
-    3287,
-    3297,
-    3307,
-    3318,
-    3328,
-    3339,
-    3350,
-    3360,
-    3371,
-    3382,
-    3393,
-    3404,
-    3415,
-    3426,
-    3437,
-    3449,
-    3460,
-    3472,
-    3483,
-    3495,
-    3506,
-    3518,
-    3530,
-    3542,
-    3554,
-    3566,
-    3578,
-    3591,
-    3603,
-    3615,
-    3628,
-    3640,
-    3653,
-    3666,
-    3679,
-    3692,
-    3705,
-    3718,
-    3731,
-    3744,
-    3758,
-    3771,
-    3785,
-    3799,
-    3813,
-    3826,
-    3840,
-    3855,
-    3869,
-    3883,
-    3898,
-    3912,
-    3927,
-    3942,
-    3956,
-    3971,
-    3986,
-    4002,
-    4017,
-    4032,
-    4048,
-    4064,
-    4080,
-    4096,
-    4112,
-    4128,
-    4144,
-    4161,
-    4177,
-    4194,
-    4211,
-    4228,
-    4245,
-    4262,
-    4279,
-    4297,
-    4315,
-    4332,
-    4350,
-    4369,
-    4387,
-    4405,
-    4424,
-    4443,
-    4462,
-    4481,
-    4500,
-    4519,
-    4539,
-    4559,
-    4578,
-    4599,
-    4619,
-    4639,
-    4660,
-    4681,
-    4702,
-    4723,
-    4744,
-    4766,
-    4788,
-    4809,
-    4832,
-    4854,
-    4877,
-    4899,
-    4922,
-    4946,
-    4969,
-    4993,
-    5017,
-    5041,
-    5065,
-    5090,
-    5115,
-    5140,
-    5165,
-    5190,
-    5216,
-    5242,
-    5269,
-    5295,
-    5322,
-    5349,
-    5377,
-    5405,
-    5433,
-    5461,
-    5489,
-    5518,
-    5548,
-    5577,
-    5607,
-    5637,
-    5667,
-    5698,
-    5729,
-    5761,
-    5793,
-    5825,
-    5857,
-    5890,
-    5924,
-    5957,
-    5991,
-    6026,
-    6061,
-    6096,
-    6132,
-    6168,
-    6204,
-    6241,
-    6278,
-    6316,
-    6355,
-    6393,
-    6432,
-    6472,
-    6512,
-    6553,
-    6594,
-    6636,
-    6678,
-    6721,
-    6765,
-    6808,
-    6853,
-    6898,
-    6944,
-    6990,
-    7037,
-    7084,
-    7133,
-    7182,
-    7231,
-    7281,
-    7332,
-    7384,
-    7436,
-    7489,
-    7543,
-    7598,
-    7653,
-    7710,
-    7767,
-    7825,
-    7884,
-    7943,
-    8004,
-    8065,
-    8128,
-    8192,
-    8256,
-    8322,
-    8388,
-    8456,
-    8525,
-    8594,
-    8665,
-    8738,
-    8811,
-    8886,
-    8962,
-    9039,
-    9118,
-    9198,
-    9279,
-    9362,
-    9446,
-    9532,
-    9619,
-    9709,
-    9799,
-    9892,
-    9986,
-    10082,
-    10180,
-    10280,
-    10381,
-    10485,
-    10591,
-    10699,
-    10810,
-    10922,
-    11037,
-    11155,
-    11275,
-    11397,
-    11522,
-    11650,
-    11781,
-    11915,
-    12052,
-    12192,
-    12336,
-    12483,
-    12633,
-    12787,
-    12945,
-    13107,
-    13273,
-    13443,
-    13617,
-    13797,
-    13981,
-    14169,
-    14364,
-    14563,
-    14768,
-    14979,
-    15196,
-    15420,
-    15650,
-    15887,
-    16131,
-    16384,
-    16644,
-    16912,
-    17189,
-    17476,
-    17772,
-    18078,
-    18396,
-    18724,
-    19065,
-    19418,
-    19784,
-    20164,
-    20560,
-    20971,
-    21399,
-    21845,
-    22310,
-    22795,
-    23301,
-    23831,
-    24385,
-    24966,
-    25575,
-    26214,
-    26886,
-    27594,
-    28339,
-    29127,
-    29959,
-    30840,
-    31775,
-    32768,
-    33825,
-    34952,
-    36157,
-    37449,
-    38836,
-    40329,
-    41943,
-    43690,
-    45590,
-    47662,
-    49932,
-    52428,
-    55188,
-    58254,
-    61680,
-    65536,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfrontmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfrontmipiraw_Sensor.c
deleted file mode 100755
index 19565917..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfrontmipiraw_Sensor.c
+++ /dev/null
@@ -1,1463 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     kkthmipiraw_Sensor.c
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "kkthfrontmipiraw_Sensor.h"
-
-
-#define KKTHFRONT_EEPROM_READ_ID	0xA9
-#define OTP_SIZE    0x2000  /* 8KB */
-#define LRC_L_REG   0x7A98  /* sensor reg */
-#define LRC_R_REG   0x7B1C
-#define SEAMLEES_GRP_HOLD 0x0104
-
-#define DEBUG_LOG_EN 0
-#define PFX "kkthfront_camera_sensor"
-#define LOG_INF(format, args...) pr_info(PFX "I [%s] " format, __func__, ##args)
-#define LOG_ERR(format, args...) pr_err(PFX "E [%s] " format, __func__, ##args)
-#define LOG_DEBUG(...) do { if ((DEBUG_LOG_EN)) LOG_INF(__VA_ARGS__); } while (0)
-#define GET_SENSOR_ID_RETRY_CNT    5
-
-static const char * const clk_names[] = {
-	ADAPTOR_CLK_NAMES
-};
-
-static const char * const reg_names[] = {
-	ADAPTOR_REGULATOR_NAMES
-};
-
-static const char * const state_names[] = {
-	ADAPTOR_STATE_NAMES
-};
-
-static int stream_refcnt_for_aov = 0;
-
-static int init_ctx(
-	struct subdrv_ctx *ctx, struct i2c_client *i2c_client, u8 i2c_write_id);
-static int kkthfront_open(struct subdrv_ctx *ctx);
-static int kkthfront_get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-// static int get_csi_param(
-// 	struct subdrv_ctx *ctx,
-// 	enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-// 	struct mtk_csi_param *csi_param);
-static int get_sensor_temperature(void *arg);
-static u16 get_gain2reg(u32 gain);
-static void set_group_hold(void *arg, u8 en);
-
-#ifdef KKTHFRONT_AOV_MCLK_26M
-static int set_pwr_seq_reset_view_to_sensing(void *arg);
-#endif /* KKTHFRONT_AOV_MCLK_26M */
-
-static int kkthfront_streaming_control(void *arg, bool enable);
-static int kkthfront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthfront_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthfront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void Imx615_fab_read(struct subdrv_ctx *ctx);
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthfront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void set_sensor_cali(void *arg);
-static void get_sensor_cali(void* arg);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int kkthfront_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-/* STRUCT */
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, kkthfront_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, kkthfront_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, kkthfront_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, kkthfront_get_otp_checksum_data},
-	// {SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, kkthfront_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, kkthfront_set_awb_gain},
-};
-
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA9,
-	.i2c_write_id = 0xA8,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x000F,
-
-	// .addr_af = 0x0092,
-	// .addr_afmacro = 0x0092,
-	// .addr_afinf = 0x0094,
-	// .addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01510008,  /* cal_layout_table */
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA8,
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0618,
-		.addr_qsc = 0x0C90, /* QSC_EEPROM_ADDR 0x0C90~0x12A7*/
-		.sensor_reg_addr_qsc = 0xC500, /*QSC_Sensor_ADDR*/
-
-		.lrc_support = TRUE,
-		.lrc_size = 0x0104,
-		.addr_lrc = 0x14B0, /* LRC_EEPROM_ADDR 0x14B0~0x15B3*/
-		.sensor_reg_addr_lrc = 0x7A98, /*useless, use LRC_L_REG and LRC_R_REG*/
-	},
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 2448,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 1280,
-            .vsize = 960,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 6560,
-            .vsize = 4928,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1856,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 1640,
-            .vsize = 1232,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-// static int stream_refcnt_for_aov;
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{  /* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = kkthfront_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthfront_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthfront_preview_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthfront_preview_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 7642,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 16,
-			.w0_size = 6560,
-			.h0_size = 4896,
-			.scale_w = 3280,
-			.scale_h = 2448,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x40,
-			.need_bw_change = 1,
-		},
-	},
-	{	/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = kkthfront_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthfront_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 7642,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 16,
-			.w0_size = 6560,
-			.h0_size = 4896,
-			.scale_w = 3280,
-			.scale_h = 2448,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x40,
-			.need_bw_change = 1,
-		},
-	},
-
-	{/*Reg B14, 3264x1836,30fps,2X2Binning,w/o PD,For(rst<21ms&cycle>1.5 s)*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = kkthfront_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthfront_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 4076,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x47,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For seamless2 group*/
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = kkthfront_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthfront_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 2038,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x47,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For seamless2 group*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = kkthfront_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthfront_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 2038,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x47,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg V2-4 1280x960,10fps,4x4Binning_Crop,w/o PD,For MIPI<1.5G(Skew off)&Hblank=2.4us*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = kkthfront_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthfront_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 481000000,
-		.linelength = 2248,
-		.framelength = 21396,
-		.max_framerate = 100,
-		.mipi_pixel_rate = 561600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 544,
-			.w0_size = 6560,
-			.h0_size = 3840,
-			.scale_w = 1640,
-			.scale_h = 960,
-			.x1_offset = 180,
-			.y1_offset = 0,
-			.w1_size = 1280,
-			.h1_size = 960,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1280,
-			.h2_tg_size = 960,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 879,
-		.csi_param = {
-			.dphy_trail = 0x60,
-			.need_bw_change = 1,
-		},
-		.aov_mode = 1,
-		.s_dummy_support = 0,
-		.ae_ctrl_support = IMGSENSOR_AE_CONTROL_SUPPORT_VIEWING_MODE,
-	},
-	{/*Reg F1-S7, 6560x4928,15fps,Full,w/o PD,For seamless1 group*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = kkthfront_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthfront_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthfront_custom2_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthfront_custom2_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 11480,
-		.framelength = 5017,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 6560,
-			.h0_size = 4928,
-			.scale_w = 6560,
-			.scale_h = 4928,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 6560,
-			.h1_size = 4928,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 6560,
-			.h2_tg_size = 4928,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 617,
-		.csi_param = {
-			.dphy_trail = 0xB3,
-			.need_bw_change = 1,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{/*Reg_B8-3 3264x1856,15fps,2X2Binning,w/o PD,For MaxVB*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = kkthfront_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthfront_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 15286,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 608,
-			.w0_size = 6560,
-			.h0_size = 3712,
-			.scale_w = 3280,
-			.scale_h = 1856,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1856,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1856,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0xB3,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg V3 1640x1232,30fps,4x4Binning,w/o PD,For MaxVB&Binning-Ave*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = kkthfront_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthfront_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 2248,
-		.framelength = 12810,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 780000000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 6560,
-			.h0_size = 4928,
-			.scale_w = 1640,
-			.scale_h = 1232,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1640,
-			.h1_size = 1232,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1640,
-			.h2_tg_size = 1232,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KKTHFRONT_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},  // todo
-	.i2c_addr_table = {0x20, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {6560, 4928},
-	.mirror = IMAGE_NORMAL,
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_6MA,  // todo
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_R,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,  // BASEGAIN * 1.123
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = kkthfront_ana_gain_table,
-	.ana_gain_table_size = sizeof(kkthfront_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 16,
-	.exposure_max =  128*(0xFFFF - 48),
-	.exposure_step = 1,
-	.exposure_margin = 48,
-
-	.frame_length_max = 0xffff-5,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1794700,
-
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.hdr_type = HDR_SUPPORT_NA,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.s_gph = set_group_hold,
-
-	.s_cali = set_sensor_cali,
-	.g_cali = get_sensor_cali,
-	// .s_data_rate_global_timing_phy_ctrl = set_data_rate_global_timing_phy_ctrl,
-#ifdef KKTHFRONT_AOV_MCLK_26M
-	.s_pwr_seq_reset_view_to_sensing = set_pwr_seq_reset_view_to_sensing,
-#endif
-	.s_streaming_control = kkthfront_streaming_control,
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-
-	.reg_addr_exposure = {
-			{0x0202, 0x0203},
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3100,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205},
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = 0x0138,
-	.reg_addr_temp_read = 0x013A,
-	.reg_addr_auto_extend = 0x0350,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_fast_mode = 0x3020,
-
-	.init_setting_table = kkthfront_init_setting,
-	.init_setting_len = ARRAY_SIZE(kkthfront_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0x8ac2d94a,
-	.aov_sensor_support = TRUE,
-	.sensor_mode_ops = 0,  // debug
-	.sensor_debug_sensing_ut_on_scp = TRUE, // whether stream on scp
-	// .sensor_debug_dphy_global_timing_continuous_clk = TRUE,
-	.init_in_open = TRUE,
-	.streaming_ctrl_imp = TRUE,
-};
-
-static struct subdrv_ops ops = {
-	.init_ctx = init_ctx,
-	.open = kkthfront_open,
-	.get_id = kkthfront_get_imgsensor_id,
-	.vsync_notify = vsync_notify,
-	.get_csi_param = common_get_csi_param,
-	.get_temp = common_get_temp,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_SCL, {0}, 0},	/* default i2c bus scl 4 on apmcu side */
-	{HW_ID_SDA, {0}, 0},	/* default i2c bus sda 4 on apmcu side */
-	{HW_ID_RST, {0}, 0},
-	{HW_ID_AVDD, {2900000, 2900000}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_DVDD, {1104000, 1104000}, 1000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 1000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-static struct subdrv_pw_seq_entry aov_pw_seq[] = {
-	{HW_ID_MCLK, {26, MCLK_ULPOSC}, 0},
-	{HW_ID_SCL, {0}, 0},	/* default i2c bus scl 4 on apmcu side */
-	{HW_ID_SDA, {0}, 0},	/* default i2c bus sda 4 on apmcu side */
-	{HW_ID_RST, {0}, 0},
-	{HW_ID_AVDD, {2900000, 2900000}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_DVDD, {1104000, 1104000}, 1000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 1000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry kkthfront_mipi_raw_entry = {
-	.name = "kkthfront_mipi_raw",
-	.id = KKTHFRONT_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.aov_pw_seq = aov_pw_seq,
-	.aov_pw_seq_cnt = ARRAY_SIZE(aov_pw_seq),
-	.ops = &ops,
-};
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static void Imx615_fab_read(struct subdrv_ctx *ctx)
-{
-    kal_uint16 reg_0xa01 = 0;
-    kal_uint16 reg_0xa1f = 0;
-    kal_uint16 reg_0xa20 = 0;
-
-    subdrv_i2c_wr_u8(ctx, 0x0A02, 0x7F);
-    subdrv_i2c_wr_u8(ctx, 0x0A00, 0x01);
-    msleep(1);
-
-    reg_0xa01 = subdrv_i2c_rd_u8(ctx, 0x0A01);
-    reg_0xa1f = subdrv_i2c_rd_u8(ctx, 0x0A1F);
-    reg_0xa20 = subdrv_i2c_rd_u8(ctx, 0x0A20);
-
-    pr_info("Read fab2 reg table [0xa01->0x%x, 0xa1f->0x%x, 0xa20->0x%x]", reg_0xa01, reg_0xa1f, reg_0xa20);
-    if (reg_0xa01 == 0x01) {
-        if (reg_0xa1f == 0xB4 && reg_0xa20 == 0x01) {
-            msleep(2);
-            subdrv_i2c_wr_u8(ctx, 0x0A00, 0x00);
-            sensor_init(ctx);
-            subdrv_i2c_wr_u8(ctx, 0x574B, 0x01);
-            subdrv_i2c_wr_u8(ctx, 0x5765, 0x33);
-        }else if (reg_0xa20 != 0x01 || reg_0xa1f != 0xB4) {
-            subdrv_i2c_wr_u8(ctx, 0x0A00, 0x00);
-            sensor_init(ctx);
-        }
-
-    } else {
-        pr_info("Read 0xa01 vaule is 0x%x",reg_0xa01);
-        pr_info("IMX615 read reg_0xa01 failed,just write init setting");
-        sensor_init(ctx);
-    }
-}
-
-
-static int kkthfront_open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	DRV_LOG_MUST(ctx, "for kkthfront start\n");
-
-	/* initail setting */
-	// sensor_init(ctx);
-	Imx615_fab_read(ctx);
-
-	/* get sensor id */
-	if (kkthfront_get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static int kkthfront_get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = GET_SENSOR_ID_RETRY_CNT;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	static bool first_read = KAL_TRUE;
-
-	DRV_LOGE(ctx, "for kkthfront id\n");
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOGE(ctx, "i2c_write_id:0x%x sensor_id(cur/exp):0x%x/0x%x\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x615) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					DRV_LOGE(ctx,"first read eeprom +");
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-					DRV_LOGE(ctx,"first read eeprom -");
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail, id(0x%x)\n",
-				ctx->i2c_write_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = GET_SENSOR_ID_RETRY_CNT;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		/* if Sensor ID is not correct,
-		 * Must set *sensor_id to 0xFFFFFFFF
-		 */
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-static int kkthfront_streaming_control(void *arg, bool enable) {
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	int ret = 0;
-	DRV_LOG(ctx, "E!\n");
-
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	DRV_LOG_MUST(ctx,
-		"kkthfront streaming_enable(0=Sw Standby,1=streaming):(%d)\n", enable);
-
-	if (enable) { // stream on
-		if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-			stream_refcnt_for_aov = 1;
-		}
-		subdrv_i2c_wr_u8(ctx, 0x0100, 0x01);
-	} else { // stream off
-		subdrv_i2c_wr_u8(ctx, 0x0100, 0x00);
-		if (stream_refcnt_for_aov) {
-			// i2c bus scl4 on apmcu side
-			ret = pinctrl_select_state(
-				_adaptor_ctx->pinctrl,
-				_adaptor_ctx->state[STATE_SCL_AP]);
-			if (ret < 0) {
-				DRV_LOG_MUST(ctx,
-					"kkthfront select(%s)(fail),ret(%d)\n",
-					state_names[STATE_SCL_AP], ret);
-				return ret;
-			}
-			DRV_LOG(ctx, "kkthfront select(%s)(correct)\n", state_names[STATE_SCL_AP]);
-
-			// i2c bus sda4 on apmcu side
-			ret = pinctrl_select_state(
-				_adaptor_ctx->pinctrl,
-				_adaptor_ctx->state[STATE_SDA_AP]);
-			if (ret < 0) {
-				DRV_LOG_MUST(ctx,
-					"kkthfront select(%s)(fail),ret(%d)\n",
-					state_names[STATE_SDA_AP], ret);
-				return ret;
-			}
-			DRV_LOG(ctx, "kkthfront select(%s)(correct)\n", state_names[STATE_SDA_AP]);
-			mdelay(1);
-		}
-		stream_refcnt_for_aov = 0;
-
-	}
-	return ret;
-}
-
-#ifdef KKTHFRONT_AOV_MCLK_26M
-static int set_pwr_seq_reset_view_to_sensing(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	DRV_LOGE(ctx, "kkthfront set_pwr_seq_reset_view_to_sensing");
-
-	int ret = 0;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	/* switch viewing mode sw stand-by to hw stand-by */
-	// 1. set gpio
-	// xclr(reset) = 0
-	ret = pinctrl_select_state(
-		_adaptor_ctx->pinctrl,
-		_adaptor_ctx->state[STATE_RST_LOW]);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"select(%s)(fail),ret(%d)\n",
-			state_names[STATE_RST_LOW], ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "select(%s)(correct)\n", state_names[STATE_RST_LOW]);
-	mdelay(1);	// response time T4-T6 in datasheet
-
-#ifdef PWR_SEQ_ALL_USE_FOR_AOV_MODE_TRANSITION
-	ret = pwr_seq_common_disable_for_mode_transition(_adaptor_ctx);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"pwr_seq_common_disable_for_mode_transition(fail),ret(%d)\n",
-			ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "pwr_seq_common_disable_for_mode_transition(correct)\n");
-	// switch hw stand-by to sensing mode sw stand-by
-	ret = pwr_seq_common_enable_for_mode_transition(_adaptor_ctx);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"pwr_seq_common_enable_for_mode_transition(fail),ret(%d)\n",
-			ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "pwr_seq_common_enable_for_mode_transition)(correct)\n");
-#endif
-	// xclr(reset) = 1
-	ret = pinctrl_select_state(
-		_adaptor_ctx->pinctrl,
-		_adaptor_ctx->state[STATE_RST_HIGH]);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"select(%s)(fail),ret(%d)\n",
-			state_names[STATE_RST_HIGH], ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "select(%s)(correct)\n", state_names[STATE_RST_HIGH]);
-	mdelay(4);	// response time T7 in datasheet
-	return ret;
-
-}
-#endif /* KKTHFRONT_AOV_MCLK_26M */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x50)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 80;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG_MUST(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (1024 - (1024 * BASEGAIN) / gain);
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, SEAMLEES_GRP_HOLD, 0x01);
-	else
-		set_i2c_buffer(ctx, SEAMLEES_GRP_HOLD, 0x00);
-}
-
-
-
-static int kkthfront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	return kkthfront_get_imgsensor_id(ctx, (u32 *)para);
-}
-
-static int kkthfront_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG_MUST(ctx,
-		"E: set seamless switch %u %u\n",
-		ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table
-		== NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	update_mode_info(ctx, scenario_id);
-
-	subdrv_i2c_wr_u8(ctx, SEAMLEES_GRP_HOLD, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	subdrv_i2c_wr_u8(ctx, SEAMLEES_GRP_HOLD, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG_MUST(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int kkthfront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG_MUST(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	switch (mode) {
-	case 5:
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x00); /* dig_gain = 0 */
-		break;
-	default:
-		subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-		break;
-	}
-
-	if ((ctx->test_pattern) && (mode != ctx->test_pattern)) {
-		if (ctx->test_pattern == 5)
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-		else if (mode == 0)
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /* No pattern */
-	}
-
-	ctx->test_pattern = mode;
-	return ERROR_NONE;
-}
-
-
-// static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u32 addr_sensorver = 0x0018;
-// 	struct oplus_eeprom_info_struct* infoPtr;
-// 	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-// 	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-// 	*len = sizeof(oplus_eeprom_info);
-// 	if (subdrv_i2c_rd_u8(ctx, addr_sensorver) != 0x00) {
-// 		printk("need to convert to 10bit");
-// 		infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 4) | (infoPtr->afInfo[0] >> 4));
-// 		infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 4);
-// 		infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 4) | (infoPtr->afInfo[2] >> 4));
-// 		infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 4);
-// 		infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 4) | (infoPtr->afInfo[4] >> 4));
-// 		infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 4);
-// 	}
-// 	return 0;
-// }
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	DRV_LOGE(ctx, "moduleInfo: %s\n", oplus_eeprom_info.moduleInfo);
-	DRV_LOGE(ctx, "qrcodeInfo: %s\n", oplus_eeprom_info.qrcodeInfo);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KKTHFRONT_EEPROM_READ_ID >> 1,
-		addr, data, size) < 0) {
-		DRV_LOGE(ctx, "kkthfront read_cmos_eeprom_p8 failed\n");
-		return false;
-	}
-	DRV_LOGE(ctx, "kkthfront read_cmos_eeprom_p8 success read size = %d\n", size);
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "kkthfront read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "kkthfront read_otp_info end\n");
-}
-
-static int kkthfront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read read read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3621, 0x01);
-			LOG_INF("set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x32D2, 0x00);
-		}
-	}
-
-	/* SPC data */
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0xD200;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0xD300;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-
-	/* LRC data */
-	support = info[idx].lrc_support;
-	pbuf = info[idx].preload_lrc_table;
-	size = info[idx].lrc_size;
-	if (support) {
-		if (pbuf != NULL && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, LRC_L_REG, pbuf, size / 2); // L data
-			subdrv_i2c_wr_seq_p8(ctx, LRC_R_REG, pbuf + size / 2, size / 2); // R data
-			DRV_LOG(ctx, "set LRC calibration data done.");
-		} else {
-			DRV_LOGE(ctx, "LRC calibration data error");
-		}
-	}
-
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-
-	/* LRC data */
-	support = info[idx].lrc_support;
-	size = info[idx].lrc_size;
-	addr = info[idx].addr_lrc;
-	buf = info[idx].lrc_table;
-	if (support && size > 0) {
-		if (info[idx].preload_lrc_table == NULL) {
-			info[idx].preload_lrc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_lrc_table, size)) {
-					DRV_LOGE(ctx, "preload LRC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_lrc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload LRC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "LRC data is already preloaded %u bytes", size);
-		}
-	}
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static int kkthfront_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-
-	set_group_hold((void *)ctx, 1);
-	subdrv_i2c_wr_u8(ctx, 0x0B8E, (u8)(awb_gain->ABS_GAIN_GR >> 8)); // GR
-	subdrv_i2c_wr_u8(ctx, 0x0B8F, (u8)(awb_gain->ABS_GAIN_GR & 0xFF)); // GR
-	subdrv_i2c_wr_u8(ctx, 0x0B90, (u8)(awb_gain->ABS_GAIN_R >> 8)); // R
-	subdrv_i2c_wr_u8(ctx, 0x0B91, (u8)(awb_gain->ABS_GAIN_R & 0xFF)); // R
-	subdrv_i2c_wr_u8(ctx, 0x0B92, (u8)(awb_gain->ABS_GAIN_B >> 8)); // B
-	subdrv_i2c_wr_u8(ctx, 0x0B93, (u8)(awb_gain->ABS_GAIN_B & 0xFF)); // B
-	subdrv_i2c_wr_u8(ctx, 0x0B94, (u8)(awb_gain->ABS_GAIN_GB >> 8)); // GB
-	subdrv_i2c_wr_u8(ctx, 0x0B95, (u8)(awb_gain->ABS_GAIN_GB & 0xFF)); // GB
-	set_group_hold((void *)ctx, 0);
-
-	DRV_LOG(ctx, "ABS_GAIN_GR(%d) ABS_GAIN_R(%d) ABS_GAIN_B(%d) ABS_GAIN_GB(%d)",
-		awb_gain->ABS_GAIN_GR, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B, awb_gain->ABS_GAIN_GB);
-
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfrontmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfrontmipiraw_Sensor.h
deleted file mode 100755
index 9839c7ed..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthfront_mipi_raw/kkthfrontmipiraw_Sensor.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     kkthfrontmipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KKTHFRONTMIPI_SENSOR_H
-#define _KKTHFRONTMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-
-#include "kkthfront_ana_gain_table.h"
-#include "kkthfront_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#define EEPROM_READY 1	// #define it when eeprom ready
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/Makefile
deleted file mode 100755
index 421b5ad0..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/kkthmainmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmain_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmain_Sensor_setting.h
deleted file mode 100755
index 13cf5fe6..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmain_Sensor_setting.h
+++ /dev/null
@@ -1,4553 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 kkthmain_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KKTHMAIN_SENSOR_SETTING_H
-#define _KKTHMAIN_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-/* NOTE:
-for 2 exp setting, VCID of LE/SE should be 0x00 and 0x02
-which align 3 exp setting LE/NE/SE 0x00, 0x01, 0x02
-to seamless switch, VC ID of SE should remain the same
-SONY sensor: VCID of 2nd frame at 0x3070; VCID of 3rd frame at 0x3080
-must be two different value */
-
-static u16 kkthmain_init_setting[] = {
-	0x0136, 0x18,
-	0x0137, 0x00,
-	0x3304, 0x00,
-	0x33F0, 0x06,
-	0x33F1, 0x06,
-	0x0111, 0x03,
-	0x0808, 0x02,
-	0x4815, 0x0F,
-	0x614D, 0x00,
-	0x614F, 0x00,
-	0x6188, 0x09,
-	0x6189, 0x09,
-	0x6190, 0x09,
-	0x6191, 0x09,
-	0x6356, 0x13,
-	0x6358, 0x13,
-	0x6366, 0x13,
-	0x6367, 0x13,
-	0x90E7, 0x01,
-	0x9200, 0x90,
-	0x9202, 0xD4,
-	0x9203, 0xDA,
-	0x9204, 0x90,
-	0x9206, 0xD4,
-	0x9207, 0xD7,
-	0x9208, 0x90,
-	0x920A, 0x7A,
-	0x920B, 0x96,
-	0xA3F8, 0x0C,
-	0xA429, 0x40,
-	0xB148, 0x01,
-	0xB149, 0x61,
-	0xB14A, 0x01,
-	0xB14B, 0xDF,
-	0xB14C, 0x02,
-	0xB14D, 0xD0,
-	0xB14E, 0x01,
-	0xB14F, 0x61,
-	0xB150, 0x01,
-	0xB151, 0xDF,
-	0xB152, 0x02,
-	0xB153, 0xD0,
-	0xB154, 0x01,
-	0xB155, 0x61,
-	0xB156, 0x01,
-	0xB157, 0xDF,
-	0xB158, 0x02,
-	0xB159, 0xD0,
-	0xB15A, 0x01,
-	0xB15B, 0x61,
-	0xB15C, 0x01,
-	0xB15D, 0xDF,
-	0xB15E, 0x02,
-	0xB15F, 0xD0,
-	0x2433, 0x01,
-	0xD566, 0x13,
-	0xD567, 0x13,
-	0xD556, 0x13,
-	0xD558, 0x13,
-	0x2433, 0x00,
-	/*EBD Setting*/
-	0x3870, 0x00,
-	/* add for ois return center */
-	0x3228, 0x01,
-	/* disable deep sleep */
-	0x306D, 0x00,
-	/* fast mode transition in lbmf */
-	0x31A7, 0x04,
-};
-
-/* Reg_B4-S4 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-static u16 kkthmain_preview_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-	/* add for vsync */
-	0x4112, 0x00, /* MON_SEL */
-	0x4113, 0x00,
-	0x4048, 0x00, /* GPIO_SEL */
-	0x4049, 0x00,
-	0x3030, 0x01, /* XVS_IO_CTRL */
-	0x4101, 0xFE, /* MON_XVS */
-	0x402D, 0x00, /* IO_CTRL_XVS */
-	0x454A, 0x00, /* MNTTEST2_SEL */
-	0x454B, 0x0D,
-	0x470C, 0x00, /* VSYNC_POL */
-	0x470D, 0x00, /* VSYNC_WID */
-	0x3031, 0x00, /* XVS_CTRL_SEL */
-};
-
-/* Reg_B4-S4 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-static u16 kkthmain_capture_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B2-S2 4096x2304_30FPS*/
-static u16 kkthmain_normal_video_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xD2,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x19,
-	0x0850, 0x00,
-	0x0851, 0x15,
-	0x0852, 0x00,
-	0x0853, 0x29,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/* B3-1 4096x2304_60FPS */
-static u16 kkthmain_hs_video_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xD2,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x19,
-	0x0850, 0x00,
-	0x0851, 0x15,
-	0x0852, 0x00,
-	0x0853, 0x29,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* G2 4096x2304 @60FPS QBIN DCG-HDR RAW12 w/ Partial-PD VB_max*/
-static u16 kkthmain_slim_video_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0C,
-	0x0113, 0x0C,
-	0x0114, 0x02,
-	0x319A, 0x0C,
-	0x319B, 0x0C,
-	0x3239, 0x01,
-	/*Line Length PCK Setting*/
-	0x0342, 0x18,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x46,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x16,
-	0x0341, 0x52,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x02,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x19,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x01,
-	/*Flicker Setting*/
-	0x3107, 0x01,
-	0x3268, 0x03,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x02,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x0F,
-	0x0850, 0x00,
-	0x0851, 0x0D,
-	0x0852, 0x00,
-	0x0853, 0x19,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* V1 QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-static u16 kkthmain_custom1_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x15,
-	0x0343, 0x60,
-	0x3750, 0x00,
-	0x3751, 0x3C,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x06,
-	0x0341, 0x80,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x02,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	/*Output Size Setting*/
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x5B,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x14,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* Reg_B4-S4 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-/* static u16 kkthmain_preview_setting[] = { */
-/* B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-static u16 kkthmain_custom2_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/* F2-S1 8192x6144_30FPS bayer*/
-static u16 kkthmain_custom3_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*L1-S1 QBIN(VBIN) 4096x3072_2-exp LBMF 30FPS with PDAF VB_max*/
-static u16 kkthmain_custom4_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0E,
-	0x0E29, 0xBC,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0E,
-	0x0E59, 0xBC,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-	/* add for vsync */
-	0x4112, 0x00, /* MON_SEL */
-	0x4113, 0x00,
-	0x4048, 0x00, /* GPIO_SEL */
-	0x4049, 0x00,
-	0x3030, 0x01, /* XVS_IO_CTRL */
-	0x4101, 0xFE, /* MON_XVS */
-	0x402D, 0x00, /* IO_CTRL_XVS */
-	0x454A, 0x00, /* MNTTEST2_SEL */
-	0x454B, 0x0D,
-	0x470C, 0x00, /* VSYNC_POL */
-	0x470D, 0x00, /* VSYNC_WID */
-	0x3031, 0x00, /* XVS_CTRL_SEL */
-};
-
-/* F1-S1 QRMSC_4096x3072_30FPS for izoom--bayer */
-static u16 kkthmain_custom5_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x40,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* V2 QBIN-V2H2 FHD 2048x1152_480FPS*/
-static u16 kkthmain_custom6_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x0D,
-	0x0343, 0xC0,
-	0x3750, 0x00,
-	0x3751, 0x27,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x05,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x02,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	/*Output Size Setting*/
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xFA,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x01,
-	0x37A9, 0x2C,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x01,
-	0x37AB, 0x2C,
-	0x37D0, 0x00,
-	0x37D1, 0x3C,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1B,
-	0x0850, 0x00,
-	0x0851, 0x17,
-	0x0852, 0x00,
-	0x0853, 0x2D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*L2-S1 Izoom 2exp-LBMF 4096x3072 @30FPS bayer w/ PDAF VB_max*/
-static u16 kkthmain_custom7_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0C,
-	0x0E29, 0x80,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0C,
-	0x0E59, 0x80,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*B4 4096x3072 @60FPS QBIN(VBIN) with PDAF VB_max*/
-static u16 kkthmain_custom8_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x52,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*G1-S2 4096x2304 30FPS DCG AP Merge*/
-static u16 kkthmain_custom9_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x27,
-	0x0343, 0x90,
-	0x3750, 0x00,
-	0x3751, 0x6F,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1C,
-	0x0341, 0x26,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xD2,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x18,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x38,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x02,
-	0x3A01, 0xB6,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x03,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x02,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x19,
-	0x0850, 0x00,
-	0x0851, 0x15,
-	0x0852, 0x00,
-	0x0853, 0x29,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-	/* add for OB Unstable */
-	0x3AC0, 0xCD,
-	0x3AC4, 0xCD,
-	0x3AC8, 0xCD,
-	0x3ACC, 0xCD,
-};
-
-/* G3 4096x2304 60FPS DCG AP Merge */
-static u16 kkthmain_custom10_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x18,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x46,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x16,
-	0x0341, 0x52,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xD2,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x03,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x02,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x19,
-	0x0850, 0x00,
-	0x0851, 0x15,
-	0x0852, 0x00,
-	0x0853, 0x29,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B9-1 1632X1224,30fps,2X2Binning_crop,w/o All-PD(VBin),For RST(6.97ms) */
-static u16 kkthmain_custom11_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x89,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x16,
-	0x0341, 0xCE,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x07,
-	0x0347, 0x20,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x10,
-	0x034B, 0xDF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x04,
-	0x0409, 0xD0,
-	0x040A, 0x00,
-	0x040B, 0x0C,
-	0x040C, 0x06,
-	0x040D, 0x60,
-	0x040E, 0x04,
-	0x040F, 0xC8,
-	/*Output Size Setting*/
-	0x034C, 0x06,
-	0x034D, 0x60,
-	0x034E, 0x04,
-	0x034F, 0xC8,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x1B,
-	0x030B, 0x04,
-	0x030D, 0x0C,
-	0x030E, 0x05,
-	0x030F, 0xFE,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/* DOL Setting */
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x3880, 0x00,
-	0x3884, 0x00,
-	0x3886, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x07,
-	0x0850, 0x00,
-	0x0851, 0x07,
-	0x0852, 0x00,
-	0x0853, 0x0D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*F3-S1 8192X6144,30fps,Full-Raw,w/All-PD(VBin),ForVB_Max*/
-static u16 kkthmain_custom12_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*not use B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-static u16 kkthmain_custom13_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x24,
-	0x0341, 0xD8,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* F1-S1 4096x3072 30FPS izoom - Qbayer*/
-static u16 kkthmain_custom14_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x40,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*not use V1 QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-static u16 kkthmain_custom15_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x15,
-	0x0343, 0x60,
-	0x3750, 0x00,
-	0x3751, 0x3C,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x06,
-	0x0341, 0x80,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x02,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	/*Output Size Setting*/
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x5B,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x14,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B5 4096x2304 @120FPS QBIN Partial-PD VB_max*/
-static u16 kkthmain_custom16_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x16,
-	0x0343, 0x50,
-	0x3750, 0x00,
-	0x3751, 0x3F,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xF8,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1B,
-	0x0850, 0x00,
-	0x0851, 0x17,
-	0x0852, 0x00,
-	0x0853, 0x2D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* G4 4096x3072 30FPS DCG AP Merge */
-static u16 kkthmain_custom17_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x27,
-	0x0343, 0x90,
-	0x3750, 0x00,
-	0x3751, 0x6F,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1C,
-	0x0341, 0x26,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x02,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0xA4,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x00,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x03,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x02,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*L2-S1 Izoom 2exp-LBMF 4096x3072 @30FPS bayer w/ PDAF VB_max*/
-/*static u16 kkthmain_custom7_setting[] = {*/
-/*F4-S3 Izoom 2exp-LBMF 4096x3072 @24FPS w/ PDAF VB_max*/
-static u16 kkthmain_custom18_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0C,
-	0x0E29, 0x80,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0C,
-	0x0E59, 0x80,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*L1-S1 QBIN(VBIN) 4096x3072_2-exp LBMF 30FPS with PDAF VB_max*/
-/*static u16 kkthmain_custom4_setting[] = {*/
-/*L3-S3 4096X3072,24fps,2X2Binning_2exp_LB-MF,w/All-PD(VBin),For RST(9-16ms)*/
-static u16 kkthmain_custom19_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0E,
-	0x0E29, 0xBC,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0E,
-	0x0E59, 0xBC,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 kkthmain_seamless_preview[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x00,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 kkthmain_seamless_capture[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x00,
-};
-
-/*B2-S2/mode2 G1-S2/mode13*/
-static u16 kkthmain_seamless_normal_video[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x3104, 0x01,
-	0x3879, 0x00,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B3-1/mode3 G3/mode14*/
-static u16 kkthmain_seamless_hs_video_setting[] = {
-	0x0342, 0x25,
-	0x3751, 0x6A,
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x3213, 0x01,
-	0x37A1, 0x82,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	0x3878, 0x00,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-/*static u16 kkthmain_seamless_preview[] = {*/
-/*B6-S3/mode6 F4-S3/mode22 L3-S3/mode23*/
-static u16 kkthmain_seamless_custom2[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x00,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 kkthmain_seamless_custom3[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x19,
-	0x0341, 0x00,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x20,
-	0x040E, 0x18,
-	0x034C, 0x20,
-	0x034E, 0x18,
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x00,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 kkthmain_seamless_custom4[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0E,
-	0x0E29, 0xBC,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0E,
-	0x0E59, 0xBC,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 kkthmain_seamless_custom5[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x19,
-	0x0341, 0x00,
-	0x0344, 0x08,
-	0x0346, 0x06,
-	0x0348, 0x17,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x40,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x00,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 kkthmain_seamless_custom7[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0344, 0x00,
-	0x0346, 0x06,
-	0x0348, 0x1F,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0C,
-	0x0E29, 0x80,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0C,
-	0x0E59, 0x80,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B2-S2/mode2 G1-S2/mode13*/
-static u16 kkthmain_seamless_custom9[] = {
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x0342, 0x27,
-	0x0343, 0x90,
-	0x3751, 0x6F,
-	0x0340, 0x1C,
-	0x0341, 0x26,
-	0x37D1, 0x00,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x3104, 0x03,
-	0x3879, 0x02,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B3-1/mode3 G3/mode14*/
-static u16 kkthmain_seamless_custom10[] = {
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x0342, 0x18,
-	0x3751, 0x46,
-	0x0340, 0x16,
-	0x0341, 0x52,
-	0x3005, 0x06,
-	0x3148, 0x00,
-	0x3213, 0x00,
-	0x37A1, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x3104, 0x00,
-	0x3103, 0x03,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3878, 0x02,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 kkthmain_seamless_custom12[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x19,
-	0x0341, 0x00,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x20,
-	0x040E, 0x18,
-	0x034C, 0x20,
-	0x034E, 0x18,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x00,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-/*static u16 kkthmain_seamless_custom7[] = {*/
-/*B6-S3/mode6 F4-S3/mode22 L3-S3/mode23*/
-static u16 kkthmain_seamless_custom18[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0344, 0x00,
-	0x0346, 0x06,
-	0x0348, 0x1F,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0C,
-	0x0E29, 0x80,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0C,
-	0x0E59, 0x80,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-/*static u16 kkthmain_seamless_custom4[] = {*/
-/*B6-S3/mode6 F4-S3/mode22 L3-S3/mode23*/
-static u16 kkthmain_seamless_custom19[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0E,
-	0x0E29, 0xBC,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0E,
-	0x0E59, 0xBC,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-#endif /* _KKTHMAIN_SENSOR_SETTING_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmain_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmain_ana_gain_table.h
deleted file mode 100755
index eca0ca15..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmain_ana_gain_table.h
+++ /dev/null
@@ -1,3906 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 kkthmain_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __KKTHMAIN_ANA_GAIN_TABLE_H__
-#define __KKTHMAIN_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 kkthmain_ana_gain_table[] = {
-	1024,
-	1025,
-	1026,
-	1027,
-	1028,
-	1029,
-	1030,
-	1031,
-	1032,
-	1033,
-	1034,
-	1035,
-	1036,
-	1037,
-	1038,
-	1039,
-	1040,
-	1041,
-	1042,
-	1043,
-	1044,
-	1045,
-	1046,
-	1047,
-	1048,
-	1049,
-	1050,
-	1051,
-	1052,
-	1053,
-	1054,
-	1055,
-	1056,
-	1057,
-	1058,
-	1059,
-	1060,
-	1061,
-	1062,
-	1063,
-	1064,
-	1065,
-	1066,
-	1067,
-	1068,
-	1069,
-	1070,
-	1071,
-	1072,
-	1073,
-	1074,
-	1075,
-	1076,
-	1077,
-	1078,
-	1079,
-	1080,
-	1081,
-	1082,
-	1083,
-	1084,
-	1085,
-	1086,
-	1087,
-	1088,
-	1089,
-	1090,
-	1091,
-	1092,
-	1093,
-	1094,
-	1095,
-	1096,
-	1097,
-	1098,
-	1099,
-	1100,
-	1101,
-	1102,
-	1103,
-	1104,
-	1105,
-	1106,
-	1107,
-	1108,
-	1109,
-	1110,
-	1111,
-	1112,
-	1113,
-	1114,
-	1115,
-	1116,
-	1117,
-	1118,
-	1119,
-	1120,
-	1121,
-	1122,
-	1123,
-	1124,
-	1125,
-	1126,
-	1127,
-	1128,
-	1129,
-	1130,
-	1131,
-	1132,
-	1133,
-	1134,
-	1135,
-	1136,
-	1137,
-	1138,
-	1139,
-	1140,
-	1141,
-	1142,
-	1143,
-	1144,
-	1145,
-	1146,
-	1147,
-	1148,
-	1149,
-	1150,
-	1151,
-	1152,
-	1153,
-	1154,
-	1155,
-	1156,
-	1157,
-	1158,
-	1159,
-	1160,
-	1161,
-	1162,
-	1163,
-	1164,
-	1165,
-	1166,
-	1167,
-	1168,
-	1169,
-	1170,
-	1171,
-	1172,
-	1173,
-	1174,
-	1175,
-	1176,
-	1177,
-	1178,
-	1179,
-	1180,
-	1181,
-	1182,
-	1183,
-	1184,
-	1185,
-	1186,
-	1187,
-	1188,
-	1189,
-	1190,
-	1191,
-	1192,
-	1193,
-	1194,
-	1195,
-	1196,
-	1197,
-	1198,
-	1199,
-	1200,
-	1201,
-	1202,
-	1203,
-	1204,
-	1205,
-	1206,
-	1207,
-	1208,
-	1209,
-	1210,
-	1211,
-	1212,
-	1213,
-	1214,
-	1215,
-	1216,
-	1217,
-	1218,
-	1219,
-	1220,
-	1221,
-	1222,
-	1223,
-	1224,
-	1225,
-	1226,
-	1227,
-	1228,
-	1229,
-	1230,
-	1231,
-	1232,
-	1233,
-	1234,
-	1235,
-	1236,
-	1237,
-	1238,
-	1239,
-	1240,
-	1241,
-	1242,
-	1243,
-	1244,
-	1245,
-	1246,
-	1247,
-	1248,
-	1249,
-	1250,
-	1251,
-	1252,
-	1253,
-	1254,
-	1255,
-	1256,
-	1257,
-	1258,
-	1259,
-	1260,
-	1261,
-	1262,
-	1263,
-	1264,
-	1265,
-	1266,
-	1267,
-	1268,
-	1269,
-	1270,
-	1271,
-	1272,
-	1273,
-	1274,
-	1275,
-	1276,
-	1277,
-	1278,
-	1279,
-	1280,
-	1281,
-	1282,
-	1283,
-	1284,
-	1285,
-	1286,
-	1287,
-	1288,
-	1289,
-	1290,
-	1291,
-	1292,
-	1293,
-	1294,
-	1295,
-	1296,
-	1297,
-	1298,
-	1299,
-	1300,
-	1301,
-	1302,
-	1303,
-	1304,
-	1305,
-	1306,
-	1307,
-	1308,
-	1309,
-	1310,
-	1311,
-	1312,
-	1313,
-	1314,
-	1315,
-	1316,
-	1317,
-	1318,
-	1319,
-	1320,
-	1321,
-	1322,
-	1323,
-	1324,
-	1325,
-	1326,
-	1327,
-	1328,
-	1329,
-	1330,
-	1331,
-	1332,
-	1333,
-	1334,
-	1335,
-	1336,
-	1337,
-	1338,
-	1339,
-	1340,
-	1341,
-	1342,
-	1343,
-	1344,
-	1345,
-	1346,
-	1347,
-	1348,
-	1349,
-	1350,
-	1351,
-	1352,
-	1353,
-	1354,
-	1355,
-	1356,
-	1357,
-	1358,
-	1359,
-	1360,
-	1361,
-	1362,
-	1363,
-	1364,
-	1365,
-	1366,
-	1367,
-	1368,
-	1369,
-	1370,
-	1371,
-	1372,
-	1373,
-	1374,
-	1375,
-	1376,
-	1377,
-	1378,
-	1379,
-	1380,
-	1381,
-	1382,
-	1383,
-	1384,
-	1385,
-	1386,
-	1387,
-	1388,
-	1389,
-	1390,
-	1391,
-	1392,
-	1393,
-	1394,
-	1395,
-	1396,
-	1397,
-	1398,
-	1399,
-	1400,
-	1401,
-	1402,
-	1403,
-	1404,
-	1405,
-	1406,
-	1407,
-	1408,
-	1409,
-	1410,
-	1411,
-	1412,
-	1413,
-	1414,
-	1415,
-	1416,
-	1417,
-	1418,
-	1419,
-	1420,
-	1421,
-	1422,
-	1423,
-	1424,
-	1425,
-	1426,
-	1427,
-	1428,
-	1429,
-	1430,
-	1431,
-	1432,
-	1433,
-	1434,
-	1435,
-	1436,
-	1437,
-	1438,
-	1439,
-	1440,
-	1441,
-	1442,
-	1443,
-	1444,
-	1445,
-	1446,
-	1447,
-	1448,
-	1449,
-	1450,
-	1451,
-	1452,
-	1453,
-	1454,
-	1455,
-	1456,
-	1457,
-	1458,
-	1459,
-	1460,
-	1461,
-	1462,
-	1463,
-	1464,
-	1465,
-	1466,
-	1467,
-	1468,
-	1469,
-	1470,
-	1471,
-	1472,
-	1473,
-	1474,
-	1475,
-	1476,
-	1477,
-	1478,
-	1479,
-	1480,
-	1481,
-	1482,
-	1483,
-	1484,
-	1485,
-	1486,
-	1487,
-	1488,
-	1489,
-	1490,
-	1491,
-	1492,
-	1493,
-	1494,
-	1495,
-	1496,
-	1497,
-	1498,
-	1499,
-	1500,
-	1501,
-	1502,
-	1503,
-	1504,
-	1505,
-	1506,
-	1507,
-	1508,
-	1509,
-	1510,
-	1511,
-	1512,
-	1513,
-	1514,
-	1515,
-	1516,
-	1517,
-	1518,
-	1519,
-	1520,
-	1521,
-	1522,
-	1523,
-	1524,
-	1525,
-	1526,
-	1527,
-	1528,
-	1529,
-	1530,
-	1531,
-	1532,
-	1533,
-	1534,
-	1535,
-	1536,
-	1537,
-	1538,
-	1539,
-	1540,
-	1541,
-	1542,
-	1543,
-	1544,
-	1545,
-	1546,
-	1547,
-	1548,
-	1549,
-	1550,
-	1551,
-	1552,
-	1553,
-	1554,
-	1555,
-	1556,
-	1557,
-	1558,
-	1559,
-	1560,
-	1561,
-	1562,
-	1563,
-	1564,
-	1565,
-	1566,
-	1567,
-	1568,
-	1569,
-	1570,
-	1571,
-	1572,
-	1573,
-	1574,
-	1575,
-	1576,
-	1577,
-	1578,
-	1579,
-	1580,
-	1581,
-	1582,
-	1583,
-	1584,
-	1585,
-	1586,
-	1587,
-	1588,
-	1589,
-	1590,
-	1591,
-	1592,
-	1593,
-	1594,
-	1595,
-	1596,
-	1597,
-	1598,
-	1599,
-	1600,
-	1601,
-	1602,
-	1603,
-	1604,
-	1605,
-	1606,
-	1607,
-	1608,
-	1609,
-	1610,
-	1611,
-	1612,
-	1613,
-	1614,
-	1615,
-	1616,
-	1617,
-	1618,
-	1619,
-	1620,
-	1621,
-	1622,
-	1623,
-	1624,
-	1625,
-	1626,
-	1627,
-	1628,
-	1629,
-	1630,
-	1631,
-	1632,
-	1633,
-	1634,
-	1635,
-	1636,
-	1637,
-	1638,
-	1639,
-	1640,
-	1641,
-	1642,
-	1643,
-	1644,
-	1645,
-	1646,
-	1647,
-	1648,
-	1649,
-	1650,
-	1651,
-	1652,
-	1653,
-	1654,
-	1655,
-	1656,
-	1657,
-	1658,
-	1659,
-	1660,
-	1661,
-	1662,
-	1663,
-	1664,
-	1665,
-	1666,
-	1667,
-	1668,
-	1669,
-	1670,
-	1671,
-	1672,
-	1673,
-	1674,
-	1675,
-	1676,
-	1677,
-	1678,
-	1679,
-	1680,
-	1681,
-	1682,
-	1683,
-	1684,
-	1685,
-	1686,
-	1687,
-	1688,
-	1689,
-	1690,
-	1691,
-	1692,
-	1693,
-	1694,
-	1695,
-	1696,
-	1697,
-	1698,
-	1699,
-	1700,
-	1701,
-	1702,
-	1703,
-	1704,
-	1705,
-	1706,
-	1707,
-	1708,
-	1709,
-	1710,
-	1711,
-	1712,
-	1713,
-	1714,
-	1715,
-	1716,
-	1717,
-	1718,
-	1719,
-	1720,
-	1721,
-	1722,
-	1723,
-	1724,
-	1725,
-	1726,
-	1727,
-	1728,
-	1729,
-	1730,
-	1731,
-	1732,
-	1733,
-	1734,
-	1735,
-	1736,
-	1737,
-	1738,
-	1739,
-	1740,
-	1741,
-	1742,
-	1743,
-	1744,
-	1745,
-	1746,
-	1747,
-	1748,
-	1749,
-	1750,
-	1751,
-	1752,
-	1753,
-	1754,
-	1755,
-	1756,
-	1757,
-	1758,
-	1759,
-	1760,
-	1761,
-	1762,
-	1763,
-	1764,
-	1765,
-	1766,
-	1767,
-	1768,
-	1769,
-	1770,
-	1771,
-	1772,
-	1773,
-	1774,
-	1775,
-	1776,
-	1777,
-	1778,
-	1779,
-	1780,
-	1781,
-	1782,
-	1783,
-	1784,
-	1785,
-	1786,
-	1787,
-	1788,
-	1789,
-	1790,
-	1791,
-	1792,
-	1793,
-	1794,
-	1795,
-	1796,
-	1797,
-	1798,
-	1799,
-	1800,
-	1801,
-	1802,
-	1803,
-	1804,
-	1805,
-	1806,
-	1807,
-	1808,
-	1809,
-	1810,
-	1811,
-	1812,
-	1813,
-	1814,
-	1815,
-	1816,
-	1817,
-	1818,
-	1819,
-	1820,
-	1821,
-	1822,
-	1823,
-	1824,
-	1825,
-	1826,
-	1827,
-	1828,
-	1829,
-	1830,
-	1831,
-	1832,
-	1833,
-	1834,
-	1835,
-	1836,
-	1837,
-	1838,
-	1839,
-	1840,
-	1841,
-	1842,
-	1843,
-	1844,
-	1845,
-	1846,
-	1847,
-	1848,
-	1849,
-	1850,
-	1851,
-	1852,
-	1853,
-	1854,
-	1855,
-	1856,
-	1857,
-	1858,
-	1859,
-	1860,
-	1861,
-	1862,
-	1863,
-	1864,
-	1865,
-	1866,
-	1867,
-	1868,
-	1869,
-	1870,
-	1871,
-	1872,
-	1873,
-	1874,
-	1875,
-	1876,
-	1877,
-	1878,
-	1879,
-	1880,
-	1881,
-	1882,
-	1883,
-	1884,
-	1885,
-	1886,
-	1887,
-	1888,
-	1889,
-	1890,
-	1891,
-	1892,
-	1893,
-	1894,
-	1895,
-	1896,
-	1897,
-	1898,
-	1899,
-	1900,
-	1901,
-	1902,
-	1903,
-	1904,
-	1905,
-	1906,
-	1907,
-	1908,
-	1909,
-	1910,
-	1911,
-	1912,
-	1913,
-	1914,
-	1915,
-	1916,
-	1917,
-	1918,
-	1919,
-	1920,
-	1921,
-	1922,
-	1923,
-	1924,
-	1925,
-	1926,
-	1927,
-	1928,
-	1929,
-	1930,
-	1931,
-	1932,
-	1933,
-	1934,
-	1935,
-	1936,
-	1937,
-	1938,
-	1939,
-	1940,
-	1941,
-	1942,
-	1943,
-	1944,
-	1945,
-	1946,
-	1947,
-	1948,
-	1949,
-	1950,
-	1951,
-	1952,
-	1953,
-	1954,
-	1955,
-	1956,
-	1957,
-	1958,
-	1959,
-	1960,
-	1961,
-	1962,
-	1963,
-	1964,
-	1965,
-	1966,
-	1967,
-	1968,
-	1969,
-	1970,
-	1971,
-	1972,
-	1973,
-	1974,
-	1975,
-	1976,
-	1977,
-	1978,
-	1979,
-	1980,
-	1981,
-	1982,
-	1983,
-	1984,
-	1985,
-	1986,
-	1987,
-	1988,
-	1989,
-	1990,
-	1991,
-	1992,
-	1993,
-	1994,
-	1995,
-	1996,
-	1997,
-	1998,
-	1999,
-	2000,
-	2001,
-	2002,
-	2003,
-	2004,
-	2005,
-	2006,
-	2007,
-	2008,
-	2009,
-	2010,
-	2011,
-	2012,
-	2013,
-	2014,
-	2015,
-	2016,
-	2017,
-	2018,
-	2019,
-	2020,
-	2021,
-	2022,
-	2023,
-	2024,
-	2025,
-	2026,
-	2027,
-	2028,
-	2029,
-	2030,
-	2031,
-	2032,
-	2033,
-	2034,
-	2035,
-	2036,
-	2037,
-	2038,
-	2039,
-	2040,
-	2041,
-	2042,
-	2043,
-	2044,
-	2045,
-	2046,
-	2047,
-	2048,
-	2049,
-	2050,
-	2051,
-	2052,
-	2053,
-	2054,
-	2055,
-	2056,
-	2057,
-	2058,
-	2059,
-	2060,
-	2061,
-	2062,
-	2063,
-	2064,
-	2065,
-	2066,
-	2067,
-	2068,
-	2069,
-	2070,
-	2071,
-	2072,
-	2073,
-	2074,
-	2075,
-	2076,
-	2077,
-	2078,
-	2079,
-	2080,
-	2081,
-	2082,
-	2083,
-	2084,
-	2085,
-	2086,
-	2087,
-	2088,
-	2089,
-	2090,
-	2091,
-	2092,
-	2094,
-	2095,
-	2096,
-	2097,
-	2098,
-	2099,
-	2100,
-	2101,
-	2102,
-	2103,
-	2104,
-	2105,
-	2106,
-	2107,
-	2108,
-	2109,
-	2110,
-	2111,
-	2112,
-	2114,
-	2115,
-	2116,
-	2117,
-	2118,
-	2119,
-	2120,
-	2121,
-	2122,
-	2123,
-	2124,
-	2125,
-	2126,
-	2128,
-	2129,
-	2130,
-	2131,
-	2132,
-	2133,
-	2134,
-	2135,
-	2136,
-	2137,
-	2138,
-	2139,
-	2141,
-	2142,
-	2143,
-	2144,
-	2145,
-	2146,
-	2147,
-	2148,
-	2149,
-	2150,
-	2152,
-	2153,
-	2154,
-	2155,
-	2156,
-	2157,
-	2158,
-	2159,
-	2160,
-	2162,
-	2163,
-	2164,
-	2165,
-	2166,
-	2167,
-	2168,
-	2169,
-	2170,
-	2172,
-	2173,
-	2174,
-	2175,
-	2176,
-	2177,
-	2178,
-	2179,
-	2181,
-	2182,
-	2183,
-	2184,
-	2185,
-	2186,
-	2187,
-	2189,
-	2190,
-	2191,
-	2192,
-	2193,
-	2194,
-	2195,
-	2197,
-	2198,
-	2199,
-	2200,
-	2201,
-	2202,
-	2204,
-	2205,
-	2206,
-	2207,
-	2208,
-	2209,
-	2211,
-	2212,
-	2213,
-	2214,
-	2215,
-	2216,
-	2218,
-	2219,
-	2220,
-	2221,
-	2222,
-	2223,
-	2225,
-	2226,
-	2227,
-	2228,
-	2229,
-	2231,
-	2232,
-	2233,
-	2234,
-	2235,
-	2236,
-	2238,
-	2239,
-	2240,
-	2241,
-	2242,
-	2244,
-	2245,
-	2246,
-	2247,
-	2248,
-	2250,
-	2251,
-	2252,
-	2253,
-	2255,
-	2256,
-	2257,
-	2258,
-	2259,
-	2261,
-	2262,
-	2263,
-	2264,
-	2265,
-	2267,
-	2268,
-	2269,
-	2270,
-	2272,
-	2273,
-	2274,
-	2275,
-	2277,
-	2278,
-	2279,
-	2280,
-	2281,
-	2283,
-	2284,
-	2285,
-	2286,
-	2288,
-	2289,
-	2290,
-	2291,
-	2293,
-	2294,
-	2295,
-	2296,
-	2298,
-	2299,
-	2300,
-	2302,
-	2303,
-	2304,
-	2305,
-	2307,
-	2308,
-	2309,
-	2310,
-	2312,
-	2313,
-	2314,
-	2316,
-	2317,
-	2318,
-	2319,
-	2321,
-	2322,
-	2323,
-	2325,
-	2326,
-	2327,
-	2328,
-	2330,
-	2331,
-	2332,
-	2334,
-	2335,
-	2336,
-	2337,
-	2339,
-	2340,
-	2341,
-	2343,
-	2344,
-	2345,
-	2347,
-	2348,
-	2349,
-	2351,
-	2352,
-	2353,
-	2355,
-	2356,
-	2357,
-	2359,
-	2360,
-	2361,
-	2362,
-	2364,
-	2365,
-	2366,
-	2368,
-	2369,
-	2371,
-	2372,
-	2373,
-	2375,
-	2376,
-	2377,
-	2379,
-	2380,
-	2381,
-	2383,
-	2384,
-	2385,
-	2387,
-	2388,
-	2389,
-	2391,
-	2392,
-	2394,
-	2395,
-	2396,
-	2398,
-	2399,
-	2400,
-	2402,
-	2403,
-	2404,
-	2406,
-	2407,
-	2409,
-	2410,
-	2411,
-	2413,
-	2414,
-	2416,
-	2417,
-	2418,
-	2420,
-	2421,
-	2423,
-	2424,
-	2425,
-	2427,
-	2428,
-	2430,
-	2431,
-	2432,
-	2434,
-	2435,
-	2437,
-	2438,
-	2439,
-	2441,
-	2442,
-	2444,
-	2445,
-	2447,
-	2448,
-	2449,
-	2451,
-	2452,
-	2454,
-	2455,
-	2457,
-	2458,
-	2460,
-	2461,
-	2462,
-	2464,
-	2465,
-	2467,
-	2468,
-	2470,
-	2471,
-	2473,
-	2474,
-	2475,
-	2477,
-	2478,
-	2480,
-	2481,
-	2483,
-	2484,
-	2486,
-	2487,
-	2489,
-	2490,
-	2492,
-	2493,
-	2495,
-	2496,
-	2498,
-	2499,
-	2501,
-	2502,
-	2504,
-	2505,
-	2507,
-	2508,
-	2510,
-	2511,
-	2513,
-	2514,
-	2516,
-	2517,
-	2519,
-	2520,
-	2522,
-	2523,
-	2525,
-	2526,
-	2528,
-	2529,
-	2531,
-	2532,
-	2534,
-	2535,
-	2537,
-	2538,
-	2540,
-	2542,
-	2543,
-	2545,
-	2546,
-	2548,
-	2549,
-	2551,
-	2552,
-	2554,
-	2555,
-	2557,
-	2559,
-	2560,
-	2562,
-	2563,
-	2565,
-	2566,
-	2568,
-	2570,
-	2571,
-	2573,
-	2574,
-	2576,
-	2577,
-	2579,
-	2581,
-	2582,
-	2584,
-	2585,
-	2587,
-	2589,
-	2590,
-	2592,
-	2593,
-	2595,
-	2597,
-	2598,
-	2600,
-	2601,
-	2603,
-	2605,
-	2606,
-	2608,
-	2610,
-	2611,
-	2613,
-	2614,
-	2616,
-	2618,
-	2619,
-	2621,
-	2623,
-	2624,
-	2626,
-	2628,
-	2629,
-	2631,
-	2632,
-	2634,
-	2636,
-	2637,
-	2639,
-	2641,
-	2642,
-	2644,
-	2646,
-	2647,
-	2649,
-	2651,
-	2652,
-	2654,
-	2656,
-	2657,
-	2659,
-	2661,
-	2663,
-	2664,
-	2666,
-	2668,
-	2669,
-	2671,
-	2673,
-	2674,
-	2676,
-	2678,
-	2680,
-	2681,
-	2683,
-	2685,
-	2686,
-	2688,
-	2690,
-	2692,
-	2693,
-	2695,
-	2697,
-	2699,
-	2700,
-	2702,
-	2704,
-	2706,
-	2707,
-	2709,
-	2711,
-	2713,
-	2714,
-	2716,
-	2718,
-	2720,
-	2721,
-	2723,
-	2725,
-	2727,
-	2728,
-	2730,
-	2732,
-	2734,
-	2736,
-	2737,
-	2739,
-	2741,
-	2743,
-	2744,
-	2746,
-	2748,
-	2750,
-	2752,
-	2753,
-	2755,
-	2757,
-	2759,
-	2761,
-	2763,
-	2764,
-	2766,
-	2768,
-	2770,
-	2772,
-	2774,
-	2775,
-	2777,
-	2779,
-	2781,
-	2783,
-	2785,
-	2786,
-	2788,
-	2790,
-	2792,
-	2794,
-	2796,
-	2798,
-	2799,
-	2801,
-	2803,
-	2805,
-	2807,
-	2809,
-	2811,
-	2813,
-	2814,
-	2816,
-	2818,
-	2820,
-	2822,
-	2824,
-	2826,
-	2828,
-	2830,
-	2832,
-	2833,
-	2835,
-	2837,
-	2839,
-	2841,
-	2843,
-	2845,
-	2847,
-	2849,
-	2851,
-	2853,
-	2855,
-	2857,
-	2859,
-	2861,
-	2863,
-	2864,
-	2866,
-	2868,
-	2870,
-	2872,
-	2874,
-	2876,
-	2878,
-	2880,
-	2882,
-	2884,
-	2886,
-	2888,
-	2890,
-	2892,
-	2894,
-	2896,
-	2898,
-	2900,
-	2902,
-	2904,
-	2906,
-	2908,
-	2910,
-	2912,
-	2914,
-	2916,
-	2918,
-	2920,
-	2922,
-	2924,
-	2926,
-	2928,
-	2931,
-	2933,
-	2935,
-	2937,
-	2939,
-	2941,
-	2943,
-	2945,
-	2947,
-	2949,
-	2951,
-	2953,
-	2955,
-	2957,
-	2959,
-	2962,
-	2964,
-	2966,
-	2968,
-	2970,
-	2972,
-	2974,
-	2976,
-	2978,
-	2981,
-	2983,
-	2985,
-	2987,
-	2989,
-	2991,
-	2993,
-	2995,
-	2998,
-	3000,
-	3002,
-	3004,
-	3006,
-	3008,
-	3010,
-	3013,
-	3015,
-	3017,
-	3019,
-	3021,
-	3024,
-	3026,
-	3028,
-	3030,
-	3032,
-	3034,
-	3037,
-	3039,
-	3041,
-	3043,
-	3045,
-	3048,
-	3050,
-	3052,
-	3054,
-	3057,
-	3059,
-	3061,
-	3063,
-	3066,
-	3068,
-	3070,
-	3072,
-	3075,
-	3077,
-	3079,
-	3081,
-	3084,
-	3086,
-	3088,
-	3090,
-	3093,
-	3095,
-	3097,
-	3100,
-	3102,
-	3104,
-	3106,
-	3109,
-	3111,
-	3113,
-	3116,
-	3118,
-	3120,
-	3123,
-	3125,
-	3127,
-	3130,
-	3132,
-	3134,
-	3137,
-	3139,
-	3141,
-	3144,
-	3146,
-	3148,
-	3151,
-	3153,
-	3155,
-	3158,
-	3160,
-	3163,
-	3165,
-	3167,
-	3170,
-	3172,
-	3175,
-	3177,
-	3179,
-	3182,
-	3184,
-	3187,
-	3189,
-	3192,
-	3194,
-	3196,
-	3199,
-	3201,
-	3204,
-	3206,
-	3209,
-	3211,
-	3214,
-	3216,
-	3218,
-	3221,
-	3223,
-	3226,
-	3228,
-	3231,
-	3233,
-	3236,
-	3238,
-	3241,
-	3243,
-	3246,
-	3248,
-	3251,
-	3253,
-	3256,
-	3258,
-	3261,
-	3264,
-	3266,
-	3269,
-	3271,
-	3274,
-	3276,
-	3279,
-	3281,
-	3284,
-	3287,
-	3289,
-	3292,
-	3294,
-	3297,
-	3300,
-	3302,
-	3305,
-	3307,
-	3310,
-	3313,
-	3315,
-	3318,
-	3320,
-	3323,
-	3326,
-	3328,
-	3331,
-	3334,
-	3336,
-	3339,
-	3342,
-	3344,
-	3347,
-	3350,
-	3352,
-	3355,
-	3358,
-	3360,
-	3363,
-	3366,
-	3368,
-	3371,
-	3374,
-	3377,
-	3379,
-	3382,
-	3385,
-	3387,
-	3390,
-	3393,
-	3396,
-	3398,
-	3401,
-	3404,
-	3407,
-	3410,
-	3412,
-	3415,
-	3418,
-	3421,
-	3423,
-	3426,
-	3429,
-	3432,
-	3435,
-	3437,
-	3440,
-	3443,
-	3446,
-	3449,
-	3452,
-	3454,
-	3457,
-	3460,
-	3463,
-	3466,
-	3469,
-	3472,
-	3474,
-	3477,
-	3480,
-	3483,
-	3486,
-	3489,
-	3492,
-	3495,
-	3498,
-	3501,
-	3504,
-	3506,
-	3509,
-	3512,
-	3515,
-	3518,
-	3521,
-	3524,
-	3527,
-	3530,
-	3533,
-	3536,
-	3539,
-	3542,
-	3545,
-	3548,
-	3551,
-	3554,
-	3557,
-	3560,
-	3563,
-	3566,
-	3569,
-	3572,
-	3575,
-	3578,
-	3581,
-	3584,
-	3587,
-	3591,
-	3594,
-	3597,
-	3600,
-	3603,
-	3606,
-	3609,
-	3612,
-	3615,
-	3618,
-	3622,
-	3625,
-	3628,
-	3631,
-	3634,
-	3637,
-	3640,
-	3644,
-	3647,
-	3650,
-	3653,
-	3656,
-	3659,
-	3663,
-	3666,
-	3669,
-	3672,
-	3675,
-	3679,
-	3682,
-	3685,
-	3688,
-	3692,
-	3695,
-	3698,
-	3701,
-	3705,
-	3708,
-	3711,
-	3715,
-	3718,
-	3721,
-	3724,
-	3728,
-	3731,
-	3734,
-	3738,
-	3741,
-	3744,
-	3748,
-	3751,
-	3754,
-	3758,
-	3761,
-	3765,
-	3768,
-	3771,
-	3775,
-	3778,
-	3782,
-	3785,
-	3788,
-	3792,
-	3795,
-	3799,
-	3802,
-	3806,
-	3809,
-	3813,
-	3816,
-	3819,
-	3823,
-	3826,
-	3830,
-	3833,
-	3837,
-	3840,
-	3844,
-	3847,
-	3851,
-	3855,
-	3858,
-	3862,
-	3865,
-	3869,
-	3872,
-	3876,
-	3880,
-	3883,
-	3887,
-	3890,
-	3894,
-	3898,
-	3901,
-	3905,
-	3908,
-	3912,
-	3916,
-	3919,
-	3923,
-	3927,
-	3930,
-	3934,
-	3938,
-	3942,
-	3945,
-	3949,
-	3953,
-	3956,
-	3960,
-	3964,
-	3968,
-	3971,
-	3975,
-	3979,
-	3983,
-	3986,
-	3990,
-	3994,
-	3998,
-	4002,
-	4006,
-	4009,
-	4013,
-	4017,
-	4021,
-	4025,
-	4029,
-	4032,
-	4036,
-	4040,
-	4044,
-	4048,
-	4052,
-	4056,
-	4060,
-	4064,
-	4068,
-	4072,
-	4076,
-	4080,
-	4084,
-	4088,
-	4092,
-	4096,
-	4100,
-	4104,
-	4108,
-	4112,
-	4116,
-	4120,
-	4124,
-	4128,
-	4132,
-	4136,
-	4140,
-	4144,
-	4148,
-	4152,
-	4156,
-	4161,
-	4165,
-	4169,
-	4173,
-	4177,
-	4181,
-	4185,
-	4190,
-	4194,
-	4198,
-	4202,
-	4206,
-	4211,
-	4215,
-	4219,
-	4223,
-	4228,
-	4232,
-	4236,
-	4240,
-	4245,
-	4249,
-	4253,
-	4258,
-	4262,
-	4266,
-	4271,
-	4275,
-	4279,
-	4284,
-	4288,
-	4293,
-	4297,
-	4301,
-	4306,
-	4310,
-	4315,
-	4319,
-	4324,
-	4328,
-	4332,
-	4337,
-	4341,
-	4346,
-	4350,
-	4355,
-	4359,
-	4364,
-	4369,
-	4373,
-	4378,
-	4382,
-	4387,
-	4391,
-	4396,
-	4401,
-	4405,
-	4410,
-	4415,
-	4419,
-	4424,
-	4429,
-	4433,
-	4438,
-	4443,
-	4447,
-	4452,
-	4457,
-	4462,
-	4466,
-	4471,
-	4476,
-	4481,
-	4485,
-	4490,
-	4495,
-	4500,
-	4505,
-	4510,
-	4514,
-	4519,
-	4524,
-	4529,
-	4534,
-	4539,
-	4544,
-	4549,
-	4554,
-	4559,
-	4563,
-	4568,
-	4573,
-	4578,
-	4583,
-	4588,
-	4593,
-	4599,
-	4604,
-	4609,
-	4614,
-	4619,
-	4624,
-	4629,
-	4634,
-	4639,
-	4644,
-	4650,
-	4655,
-	4660,
-	4665,
-	4670,
-	4675,
-	4681,
-	4686,
-	4691,
-	4696,
-	4702,
-	4707,
-	4712,
-	4718,
-	4723,
-	4728,
-	4733,
-	4739,
-	4744,
-	4750,
-	4755,
-	4760,
-	4766,
-	4771,
-	4777,
-	4782,
-	4788,
-	4793,
-	4798,
-	4804,
-	4809,
-	4815,
-	4821,
-	4826,
-	4832,
-	4837,
-	4843,
-	4848,
-	4854,
-	4860,
-	4865,
-	4871,
-	4877,
-	4882,
-	4888,
-	4894,
-	4899,
-	4905,
-	4911,
-	4917,
-	4922,
-	4928,
-	4934,
-	4940,
-	4946,
-	4951,
-	4957,
-	4963,
-	4969,
-	4975,
-	4981,
-	4987,
-	4993,
-	4999,
-	5005,
-	5011,
-	5017,
-	5023,
-	5029,
-	5035,
-	5041,
-	5047,
-	5053,
-	5059,
-	5065,
-	5071,
-	5077,
-	5084,
-	5090,
-	5096,
-	5102,
-	5108,
-	5115,
-	5121,
-	5127,
-	5133,
-	5140,
-	5146,
-	5152,
-	5159,
-	5165,
-	5171,
-	5178,
-	5184,
-	5190,
-	5197,
-	5203,
-	5210,
-	5216,
-	5223,
-	5229,
-	5236,
-	5242,
-	5249,
-	5256,
-	5262,
-	5269,
-	5275,
-	5282,
-	5289,
-	5295,
-	5302,
-	5309,
-	5315,
-	5322,
-	5329,
-	5336,
-	5343,
-	5349,
-	5356,
-	5363,
-	5370,
-	5377,
-	5384,
-	5391,
-	5398,
-	5405,
-	5412,
-	5418,
-	5426,
-	5433,
-	5440,
-	5447,
-	5454,
-	5461,
-	5468,
-	5475,
-	5482,
-	5489,
-	5497,
-	5504,
-	5511,
-	5518,
-	5526,
-	5533,
-	5540,
-	5548,
-	5555,
-	5562,
-	5570,
-	5577,
-	5584,
-	5592,
-	5599,
-	5607,
-	5614,
-	5622,
-	5629,
-	5637,
-	5645,
-	5652,
-	5660,
-	5667,
-	5675,
-	5683,
-	5691,
-	5698,
-	5706,
-	5714,
-	5722,
-	5729,
-	5737,
-	5745,
-	5753,
-	5761,
-	5769,
-	5777,
-	5785,
-	5793,
-	5801,
-	5809,
-	5817,
-	5825,
-	5833,
-	5841,
-	5849,
-	5857,
-	5866,
-	5874,
-	5882,
-	5890,
-	5899,
-	5907,
-	5915,
-	5924,
-	5932,
-	5940,
-	5949,
-	5957,
-	5966,
-	5974,
-	5983,
-	5991,
-	6000,
-	6009,
-	6017,
-	6026,
-	6034,
-	6043,
-	6052,
-	6061,
-	6069,
-	6078,
-	6087,
-	6096,
-	6105,
-	6114,
-	6123,
-	6132,
-	6141,
-	6150,
-	6159,
-	6168,
-	6177,
-	6186,
-	6195,
-	6204,
-	6213,
-	6223,
-	6232,
-	6241,
-	6250,
-	6260,
-	6269,
-	6278,
-	6288,
-	6297,
-	6307,
-	6316,
-	6326,
-	6335,
-	6345,
-	6355,
-	6364,
-	6374,
-	6384,
-	6393,
-	6403,
-	6413,
-	6423,
-	6432,
-	6442,
-	6452,
-	6462,
-	6472,
-	6482,
-	6492,
-	6502,
-	6512,
-	6523,
-	6533,
-	6543,
-	6553,
-	6563,
-	6574,
-	6584,
-	6594,
-	6605,
-	6615,
-	6626,
-	6636,
-	6647,
-	6657,
-	6668,
-	6678,
-	6689,
-	6700,
-	6710,
-	6721,
-	6732,
-	6743,
-	6754,
-	6765,
-	6775,
-	6786,
-	6797,
-	6808,
-	6820,
-	6831,
-	6842,
-	6853,
-	6864,
-	6875,
-	6887,
-	6898,
-	6909,
-	6921,
-	6932,
-	6944,
-	6955,
-	6967,
-	6978,
-	6990,
-	7002,
-	7013,
-	7025,
-	7037,
-	7049,
-	7061,
-	7073,
-	7084,
-	7096,
-	7108,
-	7121,
-	7133,
-	7145,
-	7157,
-	7169,
-	7182,
-	7194,
-	7206,
-	7219,
-	7231,
-	7244,
-	7256,
-	7269,
-	7281,
-	7294,
-	7307,
-	7319,
-	7332,
-	7345,
-	7358,
-	7371,
-	7384,
-	7397,
-	7410,
-	7423,
-	7436,
-	7449,
-	7463,
-	7476,
-	7489,
-	7503,
-	7516,
-	7530,
-	7543,
-	7557,
-	7570,
-	7584,
-	7598,
-	7612,
-	7626,
-	7639,
-	7653,
-	7667,
-	7681,
-	7695,
-	7710,
-	7724,
-	7738,
-	7752,
-	7767,
-	7781,
-	7796,
-	7810,
-	7825,
-	7839,
-	7854,
-	7869,
-	7884,
-	7898,
-	7913,
-	7928,
-	7943,
-	7958,
-	7973,
-	7989,
-	8004,
-	8019,
-	8035,
-	8050,
-	8065,
-	8081,
-	8097,
-	8112,
-	8128,
-	8144,
-	8160,
-	8176,
-	8192,
-	8208,
-	8224,
-	8240,
-	8256,
-	8272,
-	8289,
-	8305,
-	8322,
-	8338,
-	8355,
-	8371,
-	8388,
-	8405,
-	8422,
-	8439,
-	8456,
-	8473,
-	8490,
-	8507,
-	8525,
-	8542,
-	8559,
-	8577,
-	8594,
-	8612,
-	8630,
-	8648,
-	8665,
-	8683,
-	8701,
-	8719,
-	8738,
-	8756,
-	8774,
-	8793,
-	8811,
-	8830,
-	8848,
-	8867,
-	8886,
-	8905,
-	8924,
-	8943,
-	8962,
-	8981,
-	9000,
-	9020,
-	9039,
-	9058,
-	9078,
-	9098,
-	9118,
-	9137,
-	9157,
-	9177,
-	9198,
-	9218,
-	9238,
-	9258,
-	9279,
-	9300,
-	9320,
-	9341,
-	9362,
-	9383,
-	9404,
-	9425,
-	9446,
-	9467,
-	9489,
-	9510,
-	9532,
-	9554,
-	9576,
-	9597,
-	9619,
-	9642,
-	9664,
-	9686,
-	9709,
-	9731,
-	9754,
-	9776,
-	9799,
-	9822,
-	9845,
-	9868,
-	9892,
-	9915,
-	9939,
-	9962,
-	9986,
-	10010,
-	10034,
-	10058,
-	10082,
-	10106,
-	10131,
-	10155,
-	10180,
-	10205,
-	10230,
-	10255,
-	10280,
-	10305,
-	10330,
-	10356,
-	10381,
-	10407,
-	10433,
-	10459,
-	10485,
-	10512,
-	10538,
-	10564,
-	10591,
-	10618,
-	10645,
-	10672,
-	10699,
-	10727,
-	10754,
-	10782,
-	10810,
-	10837,
-	10866,
-	10894,
-	10922,
-	10951,
-	10979,
-	11008,
-	11037,
-	11066,
-	11096,
-	11125,
-	11155,
-	11184,
-	11214,
-	11244,
-	11275,
-	11305,
-	11335,
-	11366,
-	11397,
-	11428,
-	11459,
-	11491,
-	11522,
-	11554,
-	11586,
-	11618,
-	11650,
-	11683,
-	11715,
-	11748,
-	11781,
-	11814,
-	11848,
-	11881,
-	11915,
-	11949,
-	11983,
-	12018,
-	12052,
-	12087,
-	12122,
-	12157,
-	12192,
-	12228,
-	12264,
-	12300,
-	12336,
-	12372,
-	12409,
-	12446,
-	12483,
-	12520,
-	12557,
-	12595,
-	12633,
-	12671,
-	12710,
-	12748,
-	12787,
-	12826,
-	12865,
-	12905,
-	12945,
-	12985,
-	13025,
-	13066,
-	13107,
-	13148,
-	13189,
-	13231,
-	13273,
-	13315,
-	13357,
-	13400,
-	13443,
-	13486,
-	13530,
-	13573,
-	13617,
-	13662,
-	13706,
-	13751,
-	13797,
-	13842,
-	13888,
-	13934,
-	13981,
-	14027,
-	14074,
-	14122,
-	14169,
-	14217,
-	14266,
-	14315,
-	14364,
-	14413,
-	14463,
-	14513,
-	14563,
-	14614,
-	14665,
-	14716,
-	14768,
-	14820,
-	14873,
-	14926,
-	14979,
-	15033,
-	15087,
-	15141,
-	15196,
-	15252,
-	15307,
-	15363,
-	15420,
-	15477,
-	15534,
-	15592,
-	15650,
-	15709,
-	15768,
-	15827,
-	15887,
-	15947,
-	16008,
-	16070,
-	16131,
-	16194,
-	16256,
-	16320,
-	16384,
-	16448,
-	16513,
-	16578,
-	16644,
-	16710,
-	16777,
-	16844,
-	16912,
-	16980,
-	17050,
-	17119,
-	17189,
-	17260,
-	17331,
-	17403,
-	17476,
-	17549,
-	17623,
-	17697,
-	17772,
-	17848,
-	17924,
-	18001,
-	18078,
-	18157,
-	18236,
-	18315,
-	18396,
-	18477,
-	18558,
-	18641,
-	18724,
-	18808,
-	18893,
-	18978,
-	19065,
-	19152,
-	19239,
-	19328,
-	19418,
-	19508,
-	19599,
-	19691,
-	19784,
-	19878,
-	19972,
-	20068,
-	20164,
-	20262,
-	20360,
-	20460,
-	20560,
-	20661,
-	20763,
-	20867,
-	20971,
-	21076,
-	21183,
-	21290,
-	21399,
-	21509,
-	21620,
-	21732,
-	21845,
-	21959,
-	22075,
-	22192,
-	22310,
-	22429,
-	22550,
-	22671,
-	22795,
-	22919,
-	23045,
-	23172,
-	23301,
-	23431,
-	23563,
-	23696,
-	23831,
-	23967,
-	24105,
-	24244,
-	24385,
-	24528,
-	24672,
-	24818,
-	24966,
-	25115,
-	25266,
-	25420,
-	25575,
-	25731,
-	25890,
-	26051,
-	26214,
-	26379,
-	26546,
-	26715,
-	26886,
-	27060,
-	27235,
-	27413,
-	27594,
-	27776,
-	27962,
-	28149,
-	28339,
-	28532,
-	28728,
-	28926,
-	29127,
-	29330,
-	29537,
-	29746,
-	29959,
-	30174,
-	30393,
-	30615,
-	30840,
-	31068,
-	31300,
-	31536,
-	31775,
-	32017,
-	32263,
-	32513,
-	32768,
-	33026,
-	33288,
-	33554,
-	33825,
-	34100,
-	34379,
-	34663,
-	34952,
-	35246,
-	35544,
-	35848,
-	36157,
-	36472,
-	36792,
-	37117,
-	37449,
-	37786,
-	38130,
-	38479,
-	38836,
-	39199,
-	39568,
-	39945,
-	40329,
-	40721,
-	41120,
-	41527,
-	41943,
-	42366,
-	42799,
-	43240,
-	43690,
-	44150,
-	44620,
-	45100,
-	45590,
-	46091,
-	46603,
-	47127,
-	47662,
-	48210,
-	48770,
-	49344,
-	49932,
-	50533,
-	51150,
-	51781,
-	52428,
-	53092,
-	53773,
-	54471,
-	55188,
-	55924,
-	56679,
-	57456,
-	58254,
-	59074,
-	59918,
-	60787,
-	61680,
-	62601,
-	63550,
-	64527,
-	65536,
-};
-
-#define KKTHMAIN_GAIN_TABLE_SIZE 432
-static kal_uint32 kkthmain_gain_table[KKTHMAIN_GAIN_TABLE_SIZE] = {
-	1024,
-	1040,
-	1056,
-	1072,
-	1088,
-	1104,
-	1120,
-	1136,
-	1152,
-	1168,
-	1184,
-	1200,
-	1216,
-	1232,
-	1248,
-	1264,
-	1280,
-	1296,
-	1312,
-	1328,
-	1344,
-	1360,
-	1376,
-	1392,
-	1408,
-	1424,
-	1440,
-	1456,
-	1472,
-	1488,
-	1504,
-	1520,
-	1536,
-	1552,
-	1568,
-	1584,
-	1600,
-	1616,
-	1632,
-	1648,
-	1664,
-	1680,
-	1696,
-	1712,
-	1728,
-	1744,
-	1760,
-	1776,
-	1792,
-	1808,
-	1824,
-	1840,
-	1856,
-	1872,
-	1888,
-	1904,
-	1920,
-	1936,
-	1952,
-	1968,
-	1984,
-	2000,
-	2016,
-	2032,
-	2048,
-	2064,
-	2080,
-	2096,
-	2112,
-	2128,
-	2144,
-	2160,
-	2176,
-	2192,
-	2208,
-	2224,
-	2240,
-	2256,
-	2272,
-	2288,
-	2304,
-	2320,
-	2336,
-	2352,
-	2368,
-	2384,
-	2400,
-	2416,
-	2432,
-	2448,
-	2464,
-	2480,
-	2496,
-	2512,
-	2528,
-	2544,
-	2560,
-	2576,
-	2592,
-	2608,
-	2624,
-	2640,
-	2656,
-	2672,
-	2688,
-	2704,
-	2720,
-	2736,
-	2752,
-	2768,
-	2784,
-	2800,
-	2816,
-	2832,
-	2848,
-	2864,
-	2880,
-	2896,
-	2912,
-	2928,
-	2944,
-	2960,
-	2976,
-	2992,
-	3008,
-	3024,
-	3040,
-	3056,
-	3072,
-	3088,
-	3104,
-	3120,
-	3136,
-	3152,
-	3168,
-	3184,
-	3200,
-	3216,
-	3232,
-	3248,
-	3264,
-	3280,
-	3296,
-	3312,
-	3328,
-	3344,
-	3360,
-	3376,
-	3392,
-	3408,
-	3424,
-	3440,
-	3456,
-	3472,
-	3488,
-	3504,
-	3520,
-	3536,
-	3552,
-	3568,
-	3584,
-	3600,
-	3616,
-	3632,
-	3648,
-	3664,
-	3680,
-	3696,
-	3712,
-	3728,
-	3744,
-	3760,
-	3776,
-	3792,
-	3808,
-	3824,
-	3840,
-	3856,
-	3872,
-	3888,
-	3904,
-	3920,
-	3936,
-	3952,
-	3968,
-	3984,
-	4000,
-	4016,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4160,
-	4176,
-	4192,
-	4208,
-	4224,
-	4240,
-	4256,
-	4272,
-	4288,
-	4304,
-	4320,
-	4336,
-	4368,
-	4384,
-	4400,
-	4416,
-	4432,
-	4448,
-	4480,
-	4496,
-	4512,
-	4528,
-	4544,
-	4576,
-	4592,
-	4608,
-	4624,
-	4656,
-	4672,
-	4688,
-	4720,
-	4736,
-	4752,
-	4784,
-	4800,
-	4832,
-	4848,
-	4864,
-	4896,
-	4912,
-	4944,
-	4960,
-	4992,
-	5008,
-	5040,
-	5088,
-	5104,
-	5136,
-	5152,
-	5184,
-	5216,
-	5232,
-	5264,
-	5280,
-	5312,
-	5344,
-	5376,
-	5392,
-	5424,
-	5456,
-	5488,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6096,
-	6128,
-	6160,
-	6192,
-	6240,
-	6272,
-	6304,
-	6352,
-	6384,
-	6432,
-	6464,
-	6512,
-	6544,
-	6592,
-	6624,
-	6672,
-	6720,
-	6752,
-	6800,
-	6848,
-	6896,
-	6944,
-	6976,
-	7024,
-	7072,
-	7120,
-	7168,
-	7216,
-	7280,
-	7328,
-	7376,
-	7424,
-	7488,
-	7536,
-	7584,
-	7648,
-	7696,
-	7760,
-	7824,
-	7872,
-	7936,
-	8000,
-	8064,
-	8128,
-	8192,
-	8256,
-	8320,
-	8384,
-	8448,
-	8512,
-	8592,
-	8656,
-	8736,
-	8800,
-	8880,
-	8960,
-	9024,
-	9104,
-	9184,
-	9264,
-	9360,
-	9440,
-	9520,
-	9616,
-	9696,
-	9792,
-	9888,
-	9984,
-	10080,
-	10176,
-	10272,
-	10368,
-	10480,
-	10576,
-	10688,
-	10800,
-	10912,
-	11024,
-	11152,
-	11264,
-	11392,
-	11520,
-	11648,
-	11776,
-	11904,
-	12048,
-	12192,
-	12336,
-	12480,
-	12624,
-	12784,
-	12944,
-	13104,
-	13264,
-	13440,
-	13616,
-	13792,
-	13968,
-	14160,
-	14352,
-	14560,
-	14768,
-	14976,
-	15184,
-	15408,
-	15648,
-	15872,
-	16128,
-	16384,
-	16640,
-	16912,
-	17184,
-	17472,
-	17760,
-	18064,
-	18384,
-	18720,
-	19056,
-	19408,
-	19776,
-	20160,
-	20560,
-	20960,
-	21392,
-	21840,
-	22304,
-	22784,
-	23296,
-	23824,
-	24384,
-	24960,
-	25568,
-	26208,
-	26880,
-	27584,
-	28336,
-	29120,
-	29952,
-	30832,
-	31760,
-	32768,
-	33824,
-	34944,
-	36144,
-	37440,
-	38832,
-	40320,
-	41936,
-	43680,
-	45584,
-	47648,
-	49920,
-	52416,
-	55184,
-	58240,
-	61680,
-	65536,
-};
-
-static kal_uint16 kkthmain_gain_reg[KKTHMAIN_GAIN_TABLE_SIZE] = {
-	0,
-	240,
-	496,
-	720,
-	944,
-	1168,
-	1392,
-	1616,
-	1808,
-	2000,
-	2192,
-	2384,
-	2576,
-	2768,
-	2928,
-	3088,
-	3280,
-	3408,
-	3568,
-	3728,
-	3888,
-	4048,
-	4176,
-	4304,
-	4464,
-	4592,
-	4720,
-	4848,
-	4976,
-	5104,
-	5200,
-	5328,
-	5456,
-	5552,
-	5680,
-	5776,
-	5872,
-	6000,
-	6096,
-	6192,
-	6288,
-	6384,
-	6480,
-	6576,
-	6672,
-	6736,
-	6832,
-	6928,
-	7024,
-	7088,
-	7184,
-	7248,
-	7344,
-	7408,
-	7472,
-	7568,
-	7632,
-	7696,
-	7760,
-	7856,
-	7920,
-	7984,
-	8048,
-	8112,
-	8192,
-	8240,
-	8304,
-	8368,
-	8432,
-	8496,
-	8544,
-	8608,
-	8672,
-	8720,
-	8784,
-	8832,
-	8880,
-	8944,
-	8992,
-	9040,
-	9088,
-	9152,
-	9200,
-	9248,
-	9296,
-	9344,
-	9392,
-	9440,
-	9472,
-	9520,
-	9568,
-	9616,
-	9648,
-	9696,
-	9744,
-	9776,
-	9824,
-	9856,
-	9904,
-	9936,
-	9984,
-	10016,
-	10064,
-	10096,
-	10128,
-	10176,
-	10208,
-	10240,
-	10272,
-	10320,
-	10352,
-	10384,
-	10416,
-	10448,
-	10480,
-	10512,
-	10544,
-	10576,
-	10608,
-	10640,
-	10672,
-	10704,
-	10736,
-	10768,
-	10800,
-	10832,
-	10864,
-	10880,
-	10912,
-	10944,
-	10976,
-	10992,
-	11024,
-	11056,
-	11072,
-	11104,
-	11136,
-	11152,
-	11184,
-	11216,
-	11232,
-	11264,
-	11280,
-	11312,
-	11328,
-	11360,
-	11376,
-	11408,
-	11424,
-	11456,
-	11472,
-	11504,
-	11520,
-	11536,
-	11568,
-	11584,
-	11616,
-	11632,
-	11648,
-	11680,
-	11696,
-	11712,
-	11744,
-	11760,
-	11776,
-	11792,
-	11824,
-	11840,
-	11856,
-	11872,
-	11888,
-	11920,
-	11936,
-	11952,
-	11968,
-	11984,
-	12000,
-	12032,
-	12048,
-	12064,
-	12080,
-	12096,
-	12128,
-	12144,
-	12160,
-	12176,
-	12192,
-	12208,
-	12224,
-	12240,
-	12256,
-	12272,
-	12288,
-	12304,
-	12320,
-	12336,
-	12352,
-	12368,
-	12384,
-	12400,
-	12416,
-	12432,
-	12448,
-	12464,
-	12480,
-	12496,
-	12512,
-	12528,
-	12544,
-	12560,
-	12576,
-	12592,
-	12608,
-	12624,
-	12640,
-	12656,
-	12672,
-	12688,
-	12704,
-	12720,
-	12736,
-	12752,
-	12768,
-	12784,
-	12800,
-	12816,
-	12832,
-	12848,
-	12864,
-	12880,
-	12896,
-	12912,
-	12928,
-	12944,
-	12960,
-	12976,
-	12992,
-	13008,
-	13024,
-	13040,
-	13056,
-	13088,
-	13104,
-	13120,
-	13136,
-	13152,
-	13168,
-	13184,
-	13200,
-	13216,
-	13232,
-	13248,
-	13264,
-	13280,
-	13296,
-	13312,
-	13328,
-	13344,
-	13360,
-	13376,
-	13392,
-	13408,
-	13424,
-	13440,
-	13456,
-	13472,
-	13488,
-	13504,
-	13520,
-	13536,
-	13552,
-	13568,
-	13584,
-	13600,
-	13616,
-	13632,
-	13648,
-	13664,
-	13680,
-	13696,
-	13712,
-	13728,
-	13744,
-	13760,
-	13776,
-	13792,
-	13808,
-	13824,
-	13840,
-	13856,
-	13872,
-	13888,
-	13904,
-	13920,
-	13936,
-	13952,
-	13968,
-	13984,
-	14000,
-	14016,
-	14032,
-	14048,
-	14064,
-	14080,
-	14096,
-	14112,
-	14128,
-	14144,
-	14160,
-	14176,
-	14192,
-	14208,
-	14224,
-	14240,
-	14256,
-	14272,
-	14288,
-	14304,
-	14320,
-	14336,
-	14352,
-	14368,
-	14384,
-	14400,
-	14416,
-	14432,
-	14448,
-	14464,
-	14480,
-	14496,
-	14512,
-	14528,
-	14544,
-	14560,
-	14576,
-	14592,
-	14608,
-	14624,
-	14640,
-	14656,
-	14672,
-	14688,
-	14704,
-	14720,
-	14736,
-	14752,
-	14768,
-	14784,
-	14800,
-	14816,
-	14832,
-	14848,
-	14864,
-	14880,
-	14896,
-	14912,
-	14928,
-	14944,
-	14960,
-	14976,
-	14992,
-	15008,
-	15024,
-	15040,
-	15056,
-	15072,
-	15088,
-	15104,
-	15120,
-	15136,
-	15152,
-	15168,
-	15184,
-	15200,
-	15216,
-	15232,
-	15248,
-	15264,
-	15280,
-	15296,
-	15312,
-	15328,
-	15344,
-	15360,
-	15376,
-	15392,
-	15408,
-	15424,
-	15440,
-	15456,
-	15472,
-	15488,
-	15504,
-	15520,
-	15536,
-	15552,
-	15568,
-	15584,
-	15600,
-	15616,
-	15632,
-	15648,
-	15664,
-	15680,
-	15696,
-	15712,
-	15728,
-	15744,
-	15760,
-	15776,
-	15792,
-	15808,
-	15824,
-	15840,
-	15856,
-	15872,
-	15888,
-	15904,
-	15920,
-	15936,
-	15952,
-	15968,
-	15984,
-	16000,
-	16016,
-	16032,
-	16048,
-	16064,
-	16080,
-	16096,
-	16112,
-	16128,
-};
-
-#endif /* __KKTHMAIN_ANA_GAIN_TABLE_H__ */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmainmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmainmipiraw_Sensor.c
deleted file mode 100755
index 3152f51f..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmainmipiraw_Sensor.c
+++ /dev/null
@@ -1,3332 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 kkthmainmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "kkthmainmipiraw_Sensor.h"
-
-#define KKTHMAIN_EEPROM_READ_ID	0xA0
-#define KKTHMAIN_EEPROM_WRITE_ID	0xA1
-#define KKTHMAIN_AF_WRITE_ID	0x18
-#define KKTHMAIN_MAX_OFFSET		0x8000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "kkthmain_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x8000
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x800
-#define OTP_QCOM_PDAF_OFFSET_DATA_LENGTH 0x340
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x0530
-#define OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR 0X0D30
-#define GET_SENSOR_ID_RETRY_CNT    5
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-static kal_uint8 otp_qcom_pdaf_offset_data[OTP_QCOM_PDAF_OFFSET_DATA_LENGTH] = {0};
-static void set_sensor_cali(void *arg);
-static int get_sensor_temperature(void *arg);
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int kkthmain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthmain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthmain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthmain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthmain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthmain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthmain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int kkthmain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void get_sensor_cali(void *arg);
-/* extern unsigned int get_PCB_Version(void); */
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int kkthmain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static int kkthmain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id);
-/* STRUCT */
-
-static struct eeprom_map_info kkthmain_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C1, 0x00C2, 17, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x009A, 0x009B, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0010, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x3BC0, 0x4255, 0x4256, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x4260, 0x48F5, 0x48F6, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0x4900, 0x4F95, 0x4F96, CALI_DATA_MASTER_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, kkthmain_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, kkthmain_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, kkthmain_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, kkthmain_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, kkthmain_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, kkthmain_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, kkthmain_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, kkthmain_set_awb_gain},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, kkthmain_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_OFFSET_DATA, kkthmain_get_otp_qcom_pdaf_offset_data},
-};
-
-static u32 kkthmain_dcg_ratio_table_ratio4[] = {4000};
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_10bit = {
-	.gain_ratio = 1000,
-	.OB_pedestal = 64,
-	.saturation_level = 1023,
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_12bit = {
-	.gain_ratio = 4000,
-	.OB_pedestal = 64,
-	.saturation_level = 3900,
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x0148012E,/* cal_layout_table */
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA0,
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0C00,
-		.addr_qsc = 0x2210,
-		.sensor_reg_addr_qsc = 0x1000,
-
-		.pdc_support = TRUE,
-		.pdc_size = 0x180,
-		.addr_pdc = 0x2E20,
-		.sensor_reg_addr_pdc = 0x2B00,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {0, 0}, {2048, 1536}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {0, 0}, {2048, 1536}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 4,
-		.i4BinFacY = 2,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_partial_pd_info = {
-	.i4OffsetX = 16,
-	.i4OffsetY = 32,
-	.i4PitchX = 8,
-	.i4PitchY = 32,
-	.i4PairNum = 4,
-	.i4SubBlkW = 8,
-	.i4SubBlkH = 16,
-	.i4PosL = {{20, 41}, {20, 43}, {19, 48}, {19, 50}},
-	.i4PosR = {{16, 33}, {16, 35}, {23, 56}, {23, 58}},
-	.i4BlockNumX = 496,
-	.i4BlockNumY = 72,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {0, 0}, {2048, 1536}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.i4VolumeX = 1,
-	.i4VolumeY = 2,
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4ModeIndex = 0,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	/* VC's PD pattern description */
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 3,
-		.i4PDRepetition = 8,
-		.i4PDOrder = {1, 1, 0, 0, 0, 0, 1, 1}, /*R = 1, L = 0*/
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2c,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 576,
-			/* .dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10, */
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW12,
-			.valid_bit = 10,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1224,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus12[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus13[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus14[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus15[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus16[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus17[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus18[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus19[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{/* B1-S1 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = kkthmain_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthmain_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthmain_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* B1-S1 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = kkthmain_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_capture_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthmain_seamless_capture,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthmain_seamless_capture),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/*B2-S2 4096x2304_30FPS**/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = kkthmain_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1917260000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* B3-1 4096x2304_60FPS */
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = kkthmain_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 3772,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1917260000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{   /* G2 4096x2304 @60FPS QBIN DCG-HDR RAW12 w/ Partial-PD VB_max*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = kkthmain_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 6352,
-		.framelength = 5714,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 920570000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 707,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_R,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_HCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = kkthmain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(kkthmain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 5.7,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-	},
-	{/* V1  QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = kkthmain_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5472,
-		.framelength = 1664,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 1427660000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 2482,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-		.frame_desc = frame_desc_cus2, /* use frame_desc_prev */
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = kkthmain_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom2_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = kkthmain_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthmain_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F2-S1 8192x6144_30FPS remosaic*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = kkthmain_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthmain_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthmain_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/*L1-S1 QBIN(VBIN) 4096x3072_2-exp LBMF 30FPS with PDAF VB_max*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = kkthmain_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthmain_seamless_custom4,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthmain_seamless_custom4),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 3772*2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{/* F1-S1 QRMSC_4096x3072_30FPS for izoom--bayer */
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = kkthmain_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom5_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthmain_seamless_custom5,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthmain_seamless_custom5),
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.awb_enabled = true,
-	},
-	{/*V2 QBIN-V2H2 FHD 2048x1152_480FPS */
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = kkthmain_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom6_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 3520,
-		.framelength = 1280,
-		.max_framerate = 4800,
-		.mipi_pixel_rate = 2081830000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1763,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/*L2-S1 4096x3072 @30FPS Izoom 2exp-LBMF Qbayer w/ PDAF  VB_max seamless reg_A-1*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = kkthmain_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom7_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthmain_seamless_custom7,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthmain_seamless_custom7),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.awb_enabled = true,
-	},
-	{/*B4 4096x3072 @60FPS QBIN(VBIN) with PDAF VB_max*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = kkthmain_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 3772,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 57,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/*G1-S2 4096x2304 30FPS DCG AP Merge*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = kkthmain_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 10128,
-		.framelength = 7206,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1917260000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1178,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = kkthmain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(kkthmain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1.43,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/* G3 4096x2304 60FPS DCG AP Merge */
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = kkthmain_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom10_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 6352,
-		.framelength = 5714,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1917260000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 707,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = kkthmain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(kkthmain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1.43,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/* B9-1 1632X1224,30fps,2X2Binning_crop,w/o All-PD(VBin),For RST(6.97ms) */
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = kkthmain_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1698000000,
-		.linelength = 9680,
-		.framelength = 5838,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 525940000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1824,
-			.w0_size = 8192,
-			.h0_size = 2496,
-			.scale_w = 4096,
-			.scale_h = 1248,
-			.x1_offset = 1232,
-			.y1_offset = 12,
-			.w1_size = 1632,
-			.h1_size = 1224,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1224,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 590,
-		.delay_frame = 3,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F2-S1 8192x6144_30FPS Qbayer*/
-		.frame_desc = frame_desc_cus12,
-		.num_entries = ARRAY_SIZE(frame_desc_cus12),
-		.mode_setting_table = kkthmain_custom12_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom12_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthmain_seamless_custom12,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthmain_seamless_custom12),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.awb_enabled = true,
-	},
-	{/*not use B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-		.frame_desc = frame_desc_cus13,
-		.num_entries = ARRAY_SIZE(frame_desc_cus13),
-		.mode_setting_table = kkthmain_custom13_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom13_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 9432,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 57,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F1-S1 4096x3072 30FPS izoom - Qbayer*/
-		.frame_desc = frame_desc_cus14,
-		.num_entries = ARRAY_SIZE(frame_desc_cus14),
-		.mode_setting_table = kkthmain_custom14_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom14_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.dpc_enabled = true,
-		.awb_enabled = true,
-	},
-	{/*not use V1 QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-		.frame_desc = frame_desc_cus15,
-		.num_entries = ARRAY_SIZE(frame_desc_cus15),
-		.mode_setting_table = kkthmain_custom15_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom15_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5472,
-		.framelength = 1664,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 1427660000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 2482,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* B5 4096x2304 @120FPS QBIN Partial-PD VB_max*/
-		.frame_desc = frame_desc_cus16,
-		.num_entries = ARRAY_SIZE(frame_desc_cus16),
-		.mode_setting_table = kkthmain_custom16_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom16_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5712,
-		.framelength = 3174,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 2073600000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -908,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* G4 4096x3072 30FPS DCG AP Merge */
-		.frame_desc = frame_desc_cus17,
-		.num_entries = ARRAY_SIZE(frame_desc_cus17),
-		.mode_setting_table = kkthmain_custom17_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom17_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 10128,
-		.framelength = 7206,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1178,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = kkthmain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(kkthmain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1.43,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/*F4-S3 Izoom 2exp-LBMF 4096x3072 @24FPS w/ PDAF VB_max*/
-		.frame_desc = frame_desc_cus18, /*use frame_desc_cus7*/
-		.num_entries = ARRAY_SIZE(frame_desc_cus18),
-		.mode_setting_table = kkthmain_custom18_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom18_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = kkthmain_seamless_custom18,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthmain_seamless_custom18),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.awb_enabled = true,
-	},
-	{/*L3-S3 4096X3072,24fps,2X2Binning_2exp_LB-MF,w/All-PD(VBin),For RST(9-16ms)*/
-		.frame_desc = frame_desc_cus19, /*use frame_desc_cus4*/
-		.num_entries = ARRAY_SIZE(frame_desc_cus19),
-		.mode_setting_table = kkthmain_custom19_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthmain_custom19_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = kkthmain_seamless_custom19,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthmain_seamless_custom19),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 3772*2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KKTHMAIN_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},
-	.i2c_addr_table = {0x34, 0x35, 0x66, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_R,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = kkthmain_ana_gain_table,
-	.ana_gain_table_size = sizeof(kkthmain_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 6,
-	.exposure_max = 128*(65532 - 48), /* exposure reg is limited to 4x. max = max - margin */
-	.exposure_step = 2,
-	.exposure_margin = 48,
-
-	.frame_length_max = 0xfffc,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 2036600,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_DCG|HDR_SUPPORT_LBMF,
-	.seamless_switch_support = TRUE,
-	.seamless_switch_type = SEAMLESS_SWITCH_CUT_VB_INIT_SHUT,
-	.seamless_switch_hw_re_init_time_ns = 0,
-	.seamless_switch_prsh_hw_fixed_value = 48,
-	.seamless_switch_prsh_length_lc = 0,
-	.reg_addr_prsh_length_lines = {0x3058, 0x3059, 0x305A, 0x305B},
-	.reg_addr_prsh_mode = 0x3056,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0202, 0x0203}, /* COARSE_INTEG_TIME */
-			{0x0000, 0x0000}, /*not support*/
-			{0x0224, 0x0225}, /* ST_COARSE_INTEG_TIME */
-	},
-	.reg_addr_exposure_in_lut = {
-			{0x0E20, 0x0E21}, /* LUT_A_COARSE_INTEG_TIME */
-			{0x0E50, 0x0E51}, /* LUT_B_COARSE_INTEG_TIME */
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3160,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, /* ANA_GAIN_GLOBAL */
-			{0x0000, 0x0000}, /*not support*/
-			{0x0216, 0x0217}, /* ST_ANA_GAIN_GLOBAL */
-	},
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E22, 0x0E23}, /* LUT_A_ANA_GAIN_GLOBAL */
-			{0x0E52, 0x0E53}, /* LUT_B_ANA_GAIN_GLOBAL */
-	},
-	.reg_addr_dcg_ratio = 0x3182, /* DCGHDR_RATIO */
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E28, 0x0E29},  /* LUT_A_FRM_LENGTH_LINES */
-			{0x0E58, 0x0E59},  /*LUT_B_FRM_LENGTH_LINES*/
-	},
-	.reg_addr_temp_en = 0x0138, /* TEMP_SEN_CTL */
-	.reg_addr_temp_read = 0x013A, /* TEMP_SEN_OUT */
-	.reg_addr_auto_extend = 0x0350, /* FRM_LENGTH_CTL */
-	.reg_addr_frame_count = 0x0005, /* FRM_CNT */
-	.reg_addr_fast_mode = 0x3010, /* FAST_MODETRANSIT_CTL */
-	.reg_addr_fast_mode_in_lbmf = 0x31A7, /*EAEB_LUT_CONTROL */
-
-	.init_setting_table = kkthmain_init_setting,
-	.init_setting_len = ARRAY_SIZE(kkthmain_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xf10e5980,
-
-	.oplus_notify_chg_flag = false,
-	.portrait_max_fps = 240,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_AVDD, {2804000, 2804000}, 3000},
-	{HW_ID_AVDD1, {1804000, 1804000}, 3000},
-	{HW_ID_AFVDD, {2800000, 2800000}, 3000},
-	{HW_ID_DVDD, {1160000, 1160000}, 4000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 3000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry kkthmain_mipi_raw_entry = {
-	.name = "kkthmain_mipi_raw",
-	.id = KKTHMAIN_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static unsigned int read_kkthmain_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != kkthmain_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != kkthmain_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = kkthmain_eeprom_info[meta_id].start;
-	readsize = kkthmain_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA0,
-	.i2c_write_id = 0xA1,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, KKTHMAIN_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static int kkthmain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int kkthmain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR, otp_qcom_pdaf_offset_data, OTP_QCOM_PDAF_OFFSET_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_offset_data, sizeof(otp_qcom_pdaf_offset_data));
-	*len = sizeof(otp_qcom_pdaf_offset_data);
-
-	return 0;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH	 (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-	ret = adaptor_i2c_wr_p8(ctx->i2c_client, KKTHMAIN_EEPROM_WRITE_ID >> 1,
-			addr, para, len);
-
-	return ret;
-}
-
-
-static kal_int32 write_1st_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xff35;
-	u8 flag = 0;
-
-	adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | KKTHMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-
-	reg = 0x06ca;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | KKTHMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x2);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | KKTHMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-	}
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, KKTHMAIN_EEPROM_WRITE_ID >> 1, reg, &flag);
-	LOG_INF("SET_SENSOR_OTP WRP: 0x%x\n", flag);
-
-	return ret;
-}
-
-static kal_int32 write_2nd_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xa000;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, KKTHMAIN_EEPROM_WRITE_ID >> 1, reg, 0x0E);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, KKTHMAIN_EEPROM_WRITE_ID >> 1, reg, 0x00);
-	}
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	u8 flag = 0;
-	int ret = 0;
-	adaptor_i2c_rd_u8(ctx->i2c_client, KKTHMAIN_EEPROM_READ_ID >> 1, 0x000D, &flag);
-	if (flag == 0x01) {
-		ret = write_1st_eeprom_protect(ctx, enable);
-	} else {
-		ret = write_2nd_eeprom_protect(ctx, enable);
-	}
-	return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-	ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-	kal_int32  ret = ERROR_NONE;
-	kal_uint16 data_base, data_length;
-	kal_uint32 idx, idy;
-	kal_uint8 *pData;
-	kal_uint32 checksum = 0;
-	UINT32 i = 0;
-	kal_uint16 offset = 0;
-	if(pStereodata != NULL) {
-		LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-			pStereodata->uSensorId,
-			pStereodata->uDeviceId,
-			pStereodata->baseAddr,
-			pStereodata->dataLength);
-
-		data_base = pStereodata->baseAddr;
-		data_length = pStereodata->dataLength;
-		pData = pStereodata->uData;
-		for(i = 0; i < pStereodata->dataLength; i++) {
-			checksum += pData[i];
-		}
-		pData[data_length] = 0x01;
-		pData[data_length + 1] = checksum % 255;
-		data_length = data_length + 2;
-		offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-		if (offset > data_length) {
-			offset = data_length;
-		}
-		if (((pStereodata->uSensorId == KKTHMAIN_SENSOR_ID) && ((data_length - 2) == CALI_DATA_MASTER_LENGTH))
-				&& (data_base == KKTHMAIN_STEREO_START_ADDR || data_base == KKTHMAIN_STEREO_MT_START_ADDR
-				|| data_base == KKTHMAIN_STEREO_MT_105CM_START_ADDR)) {
-			LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-			LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-			LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-			LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-			LOG_INF("write_Module_data Write end\n");
-		} else if ((pStereodata->uSensorId == KKTHMAIN_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-				&& (data_base == KKTHMAIN_AESYNC_START_ADDR)) {
-			LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-				pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-				read_cmos_eeprom_8(ctx, KKTHMAIN_AESYNC_START_ADDR),
-				read_cmos_eeprom_8(ctx, KKTHMAIN_AESYNC_START_ADDR+1),
-				read_cmos_eeprom_8(ctx, KKTHMAIN_AESYNC_START_ADDR+2),
-				read_cmos_eeprom_8(ctx, KKTHMAIN_AESYNC_START_ADDR+3),
-				read_cmos_eeprom_8(ctx, KKTHMAIN_AESYNC_START_ADDR+4),
-				read_cmos_eeprom_8(ctx, KKTHMAIN_AESYNC_START_ADDR+5),
-				read_cmos_eeprom_8(ctx, KKTHMAIN_AESYNC_START_ADDR+6),
-				read_cmos_eeprom_8(ctx, KKTHMAIN_AESYNC_START_ADDR+7));
-			LOG_INF("AESync write_Module_data Write end\n");
-		} else {
-			LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-			return -1;
-		}
-	} else {
-		LOG_INF("kkthmain write_Module_data pStereodata is null\n");
-		return -1;
-	}
-	return ret;
-}
-
-static int kkthmain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	int ret = ERROR_NONE;
-	ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-	if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-		LOG_INF("ret=%d\n", ret);
-	}
-	return 0;
-}
-
-static int kkthmain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_MASTER_LENGTH)
-		*len = CALI_DATA_MASTER_LENGTH;
-	LOG_INF("feature_data mode: %d", *feature_data_16);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_kkthmain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_kkthmain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MW_MAIN:
-	default:
-		read_kkthmain_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	}
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KKTHMAIN_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "kkthmain read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "kkthmain read_otp_info end\n");
-}
-
-static int kkthmain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int kkthmain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = GET_SENSOR_ID_RETRY_CNT;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	DRV_LOGE(ctx, "+\n");
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			printk("kkthmain_mipi_raw i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x906) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = GET_SENSOR_ID_RETRY_CNT;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 kkthmain_feedback_awbgain[] = {
-	0x0B8E, 0x01,
-	0x0B8F, 0x00,
-	0x0B90, 0x02,
-	0x0B91, 0x28,
-	0x0B92, 0x01,
-	0x0B93, 0x77,
-	0x0B94, 0x01,
-	0x0B95, 0x00,
-};
-
-/*write AWB gain to sensor*/
-static void feedback_awbgain(struct subdrv_ctx *ctx, kal_uint32 r_gain, kal_uint32 b_gain)
-{
-	UINT32 r_gain_int = 0;
-	UINT32 b_gain_int = 0;
-
-
-	DRV_LOG(ctx, "feedback_awbgain r_gain: %d, b_gain: %d\n", r_gain, b_gain);
-	r_gain_int = r_gain / 512;
-	b_gain_int = b_gain / 512;
-	kkthmain_feedback_awbgain[5] = r_gain_int;
-	kkthmain_feedback_awbgain[7] = (r_gain - r_gain_int * 512) / 2;
-	kkthmain_feedback_awbgain[9] = b_gain_int;
-	kkthmain_feedback_awbgain[11] = (b_gain - b_gain_int * 512) / 2;
-	subdrv_i2c_wr_regs_u8(ctx, kkthmain_feedback_awbgain,
-		ARRAY_SIZE(kkthmain_feedback_awbgain));
-}
-
-static int kkthmain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-	feedback_awbgain(ctx, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B);
-	return 0;
-}
-
-static int kkth_adaptor_i2c_wr_u8_u8(struct i2c_client *i2c_client, u8 addr, u8 reg, u8 val)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg;
-
-	if (i2c_client == NULL)
-		return -ENODEV;
-
-	buf[0] = reg;
-	buf[1] = val;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-	msg.len = sizeof(buf);
-
-	ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-	if (ret < 0)
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-
-	return ret;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-	int ret = -1;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	sensor_init(ctx);
-	ret = kkth_adaptor_i2c_wr_u8_u8(ctx->i2c_client, KKTHMAIN_AF_WRITE_ID >> 1, 0x02, 0x0);
-	mdelay(2);
-	DRV_LOGE(ctx, "init KKTHMAIN af before write qsc data, ret: %d\n", ret);
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_u8(ctx, 0x0101, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x0B06, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0xDDA9, 0x4E);
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x01);
-			DRV_LOG(ctx, "set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x00);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0x2B00;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0x2C00;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x55)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 85;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (16384 - (16384 * BASEGAIN) / gain);
-}
-
-void kkthmain_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-		case HDR_NONE:
-		case HDR_RAW_LBMF:
-		case HDR_RAW_DCG_RAW:
-			if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-				ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min) {
-				*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-				*min_shutter = ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min;
-			} else {
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-			}
-			break;
-		default:
-			*exposure_step = ctx->s_ctx.exposure_step;
-			*min_shutter = ctx->s_ctx.exposure_min;
-			break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int kkthmain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	kkthmain_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static void kkthmain_update_mode_info(struct subdrv_ctx *ctx, enum SENSOR_SCENARIO_ID_ENUM scenario_id)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return;
-	}
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->pclk / ctx->line_length * 10 / ctx->s_ctx.portrait_max_fps;
-	ctx->frame_length_rg = ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->frame_time_delay_frame = (ctx->s_ctx.mode[scenario_id].delay_frame)
-		? ctx->s_ctx.mode[scenario_id].delay_frame : ctx->frame_time_delay_frame;
-	ctx->margin = ctx->s_ctx.mode[scenario_id].exposure_margin;
-	ctx->autoflicker_en = FALSE;
-	ctx->l_shift = 0;
-	ctx->min_vblanking_line = ctx->s_ctx.mode[scenario_id].min_vblanking_line;
-	if (ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		memset(ctx->frame_length_in_lut, 0,
-			sizeof(ctx->frame_length_in_lut));
-
-		switch (ctx->s_ctx.mode[scenario_id].exp_cnt) {
-		case 2:
-			ctx->frame_length_in_lut[0] = ctx->readout_length + ctx->read_margin;
-			ctx->frame_length_in_lut[1] = ctx->frame_length -
-				ctx->frame_length_in_lut[0];
-			break;
-		case 3:
-			ctx->frame_length_in_lut[0] = ctx->readout_length + ctx->read_margin;
-			ctx->frame_length_in_lut[1] = ctx->readout_length + ctx->read_margin;
-			ctx->frame_length_in_lut[2] = ctx->frame_length -
-				ctx->frame_length_in_lut[1] - ctx->frame_length_in_lut[0];
-			break;
-		default:
-			break;
-		}
-		memcpy(ctx->frame_length_in_lut_rg, ctx->frame_length_in_lut,
-			sizeof(ctx->frame_length_in_lut_rg));
-	}
-
-	/* MCSS low power mode update para */
-	if (ctx->s_ctx.mcss_update_subdrv_para != NULL)
-		ctx->s_ctx.mcss_update_subdrv_para((void *) ctx, scenario_id);
-}
-
-static int kkthmain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-	if (scenario_id == SENSOR_SCENARIO_ID_CUSTOM18 ||
-		scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 ||
-		scenario_id == SENSOR_SCENARIO_ID_CUSTOM19) {
-		kkthmain_update_mode_info(ctx, scenario_id);
-	} else {
-		update_mode_info(ctx, scenario_id);
-	}
-
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-		calculate_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id);
-	}
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 24) & 0x07);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[3],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int kkthmain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	switch (mode) {
-	case 5:
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x00); /* DIG_GAIN_GLOBAL */
-		subdrv_i2c_wr_u8(ctx, 0x0218, 0x00); /* ST_DIG_GAIN_GLOBAL */
-		/* subdrv_i2c_wr_u8(ctx, 0x3028, 0x00); */
-		subdrv_i2c_wr_u8(ctx, 0x0E24, 0x00); /* LUT_A_DIG_GAIN_GLOBAL */
-		subdrv_i2c_wr_u8(ctx, 0x0E25, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x0E54, 0x00); /* LUT_B_DIG_GAIN_GLOBAL */
-		subdrv_i2c_wr_u8(ctx, 0x0E55, 0x00);
-		break;
-	default:
-		subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-		break;
-	}
-
-	if ((ctx->test_pattern) && (mode != ctx->test_pattern)) {
-		if (ctx->test_pattern == 5) {
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0218, 0x01);
-			/* subdrv_i2c_wr_u8(ctx, 0x3028, 0x40); */
-			subdrv_i2c_wr_u8(ctx, 0x0E24, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0E54, 0x01);
-		}
-		else if (mode == 0)
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /* No pattern */
-	}
-
-	ctx->test_pattern = mode;
-	return ERROR_NONE;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id)
-{
-	u32 ae_ctrl_cit;
-	u32 prsh_length_lc = 0;
-	u32 cit_step = 1;
-	u8 hw_fixed_value = ctx->s_ctx.seamless_switch_prsh_hw_fixed_value;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = ctx->current_scenario_id;
-	enum IMGSENSOR_HDR_MODE_ENUM hdr_mode;
-
-	if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM7) {
-		prsh_length_lc = 2000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM7 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM18) {
-		prsh_length_lc = 5000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM18 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 6000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM19) {
-		prsh_length_lc = 6000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM19 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 5000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 4000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM12) {
-		prsh_length_lc = 2000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM12 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM3) {
-		prsh_length_lc = 3600;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM3 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_CAPTURE && scenario_id == SENSOR_SCENARIO_ID_CUSTOM5) {
-		prsh_length_lc = 3500;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM5 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_CAPTURE) {
-		prsh_length_lc = 3600;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM7) {
-		prsh_length_lc = 3200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM7 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else {
-		prsh_length_lc = 0;
-	}
-
-
-	hdr_mode = ctx->s_ctx.mode[scenario_id].hdr_mode;
-	switch (hdr_mode) {
-	case HDR_RAW_LBMF:
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: dig_gain_lut_a = SE / dig_gain_lut_b = LE */
-			/* 3exp: dig_gain_lut_a = SE / dig_gain_lut_b = ME / dig_gain_lut_c = LE */
-			ae_ctrl_cit = ae_ctrl->exposure.me_exposure;
-			DRV_LOG_MUST(ctx, "debug se %llu le %llu, me %llu", ae_ctrl->exposure.se_exposure, ae_ctrl->exposure.le_exposure, ae_ctrl->exposure.me_exposure);
-		} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: dig_gain_lut_a = LE / dig_gain_lut_b = SE */
-			/* 3exp: dig_gain_lut_a = LE / dig_gain_lut_b = ME / dig_gain_lut_c = SE */
-			ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-			DRV_LOG_MUST(ctx, "debug le\n");
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-		break;
-	case HDR_NONE:
-	case HDR_RAW:
-	case HDR_CAMSV:
-	case HDR_RAW_ZHDR:
-	case HDR_MultiCAMSV:
-	case HDR_RAW_STAGGER:
-	case HDR_RAW_DCG_RAW:
-	case HDR_RAW_DCG_COMPOSE:
-	default:
-		ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-		break;
-	}
-	ae_ctrl_cit = max(ae_ctrl_cit, ctx->s_ctx.exposure_min);
-	ae_ctrl_cit = min(ae_ctrl_cit, ctx->s_ctx.exposure_max);
-	cit_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step ?: 1;
-	if (cit_step) {
-		ae_ctrl_cit = round_up(ae_ctrl_cit, cit_step);
-		prsh_length_lc = round_up(prsh_length_lc, cit_step);
-	}
-	DRV_LOG_MUST(ctx, "prsh_length_lc %u ae_ctrl_cit %u fine_integ_line %d\n",
-					prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.mode[scenario_id].fine_integ_line);
-	if(hdr_mode != HDR_RAW_LBMF && ctx->s_ctx.mode[scenario_id].fine_integ_line != 0) {
-		ae_ctrl_cit = ae_ctrl_cit / 1000;
-	}
-	prsh_length_lc = (prsh_length_lc > (ae_ctrl_cit + hw_fixed_value)) ? prsh_length_lc : 0;
-	if (prsh_length_lc < (ae_ctrl_cit + hw_fixed_value)) {
-		DRV_LOG_MUST(ctx,
-			"pre-shutter no need: prsh_length_lc(%u) < (ae_ctrl_cit(%u(max=%u,min=%u)) + hw_fixed_value(%u))\n",
-			prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.exposure_max, ctx->s_ctx.exposure_min, hw_fixed_value);
-		ctx->s_ctx.seamless_switch_prsh_length_lc = 0;
-		return;
-	}
-
-	ctx->s_ctx.seamless_switch_prsh_length_lc = prsh_length_lc;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmainmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmainmipiraw_Sensor.h
deleted file mode 100755
index f2037da5..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthmain_mipi_raw/kkthmainmipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     kkthmainmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KKTHMAINMIPI_SENSOR_H
-#define _KKTHMAINMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "kkthmain_ana_gain_table.h"
-#include "kkthmain_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#endif /* _KKTHMAINMIPI_SENSOR_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/Makefile
deleted file mode 100755
index 3908961b..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/kkthtelemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtele_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtele_Sensor_setting.h
deleted file mode 100755
index c71a89b7..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtele_Sensor_setting.h
+++ /dev/null
@@ -1,20984 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 kkthtele_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KKTHTELEMIPI_SENSOR_SETTING_H
-#define _KKTHTELEMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 kkthtele_sensor_init_pre_setting[] = {
-    0xFCFC, 0x4000,
-    0x0000, 0x000E,
-    0x0000, 0x38E5,
-    0x6018, 0x0001,
-    0x7002, 0x0408,
-    0x6014, 0x0001,
-    0xFCFC, 0x2002,
-    0x1E92, 0x8000,
-    0x1E84, 0x282B,
-    0x1E86, 0x0320,
-    0xFCFC, 0x4000,
-    0x7002, 0x0008,
-};
-
-static u16 kkthtele_sensor_init_setting[] = {
-	0xFCFC, 0x2000,
-	0xDCF0, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C60, 0x0000,
-	0xFCFC, 0x2002,
-	0xA614, 0x8280,
-	0xA616, 0x0100,
-	0xA618, 0x1753,
-	0xA61A, 0x02FC,
-	0xA61C, 0xE702,
-	0xA61E, 0x83EA,
-	0xA620, 0xB7E7,
-	0xA622, 0x0124,
-	0xA624, 0x9387,
-	0xA626, 0x0787,
-	0xA628, 0x83A4,
-	0xA62A, 0x870D,
-	0xA62C, 0x03A4,
-	0xA62E, 0xC70D,
-	0xA630, 0x0146,
-	0xA632, 0xA685,
-	0xA634, 0x2285,
-	0xA636, 0x9740,
-	0xA638, 0x01FC,
-	0xA63A, 0xE780,
-	0xA63C, 0xE040,
-	0xA63E, 0x97B0,
-	0xA640, 0xFEFB,
-	0xA642, 0xE780,
-	0xA644, 0x60DC,
-	0xA646, 0x0546,
-	0xA648, 0xA685,
-	0xA64A, 0x2285,
-	0xA64C, 0x9740,
-	0xA64E, 0x01FC,
-	0xA650, 0xE780,
-	0xA652, 0x803F,
-	0xA654, 0x37A7,
-	0xA656, 0x0224,
-	0xA658, 0x9307,
-	0xA65A, 0x8754,
-	0xA65C, 0x03C6,
-	0xA65E, 0xC702,
-	0xA660, 0x8546,
-	0xA662, 0x6301,
-	0xA664, 0xD602,
-	0xA666, 0x83C6,
-	0xA668, 0x0700,
-	0xA66A, 0x0947,
-	0xA66C, 0x6384,
-	0xA66E, 0xE608,
-	0xA670, 0xB7C7,
-	0xA672, 0x0224,
-	0xA674, 0x83A7,
-	0xA676, 0x07B7,
-	0xA678, 0x0545,
-	0xA67A, 0x8297,
-	0xA67C, 0x1753,
-	0xA67E, 0x02FC,
-	0xA680, 0x6700,
-	0xA682, 0x83E6,
-	0xA684, 0x03D5,
-	0xA686, 0x4705,
-	0xA688, 0x05C9,
-	0xA68A, 0x83D8,
-	0xA68C, 0x2705,
-	0xA68E, 0xB7E6,
-	0xA690, 0x0124,
-	0xA692, 0x83D5,
-	0xA694, 0x665F,
-	0xA696, 0x1307,
-	0xA698, 0x8754,
-	0xA69A, 0x8146,
-	0xA69C, 0x2548,
-	0xA69E, 0x0356,
-	0xA6A0, 0xE702,
-	0xA6A2, 0x0907,
-	0xA6A4, 0x63E0,
-	0xA6A6, 0xC50E,
-	0xA6A8, 0x8506,
-	0xA6AA, 0xE39A,
-	0xA6AC, 0x06FF,
-	0xA6AE, 0x3707,
-	0xA6B0, 0x0040,
-	0xA6B2, 0x3A95,
-	0xA6B4, 0x2310,
-	0xA6B6, 0x1501,
-	0xA6B8, 0x03D5,
-	0xA6BA, 0x6705,
-	0xA6BC, 0x4DD5,
-	0xA6BE, 0x83D8,
-	0xA6C0, 0x2705,
-	0xA6C2, 0x37E7,
-	0xA6C4, 0x0124,
-	0xA6C6, 0x8355,
-	0xA6C8, 0x675F,
-	0xA6CA, 0xBE86,
-	0xA6CC, 0x0147,
-	0xA6CE, 0x2548,
-	0xA6D0, 0x03D6,
-	0xA6D2, 0xE602,
-	0xA6D4, 0x8906,
-	0xA6D6, 0x63EE,
-	0xA6D8, 0xC50A,
-	0xA6DA, 0x0507,
-	0xA6DC, 0xE31A,
-	0xA6DE, 0x07FF,
-	0xA6E0, 0x3707,
-	0xA6E2, 0x0040,
-	0xA6E4, 0x3A95,
-	0xA6E6, 0x2310,
-	0xA6E8, 0x1501,
-	0xA6EA, 0x83C6,
-	0xA6EC, 0x0700,
-	0xA6EE, 0x0947,
-	0xA6F0, 0xE390,
-	0xA6F2, 0xE6F8,
-	0xA6F4, 0x03D5,
-	0xA6F6, 0x8702,
-	0xA6F8, 0x1DC5,
-	0xA6FA, 0x83D8,
-	0xA6FC, 0x6702,
-	0xA6FE, 0x37F7,
-	0xA700, 0x0124,
-	0xA702, 0x8355,
-	0xA704, 0xA781,
-	0xA706, 0xBE86,
-	0xA708, 0x0147,
-	0xA70A, 0x2548,
-	0xA70C, 0x03D6,
-	0xA70E, 0x2600,
-	0xA710, 0x8906,
-	0xA712, 0x63E3,
-	0xA714, 0xC506,
-	0xA716, 0x0507,
-	0xA718, 0xE31A,
-	0xA71A, 0x07FF,
-	0xA71C, 0x3707,
-	0xA71E, 0x0040,
-	0xA720, 0x3A95,
-	0xA722, 0x2310,
-	0xA724, 0x1501,
-	0xA726, 0x03D5,
-	0xA728, 0xA702,
-	0xA72A, 0x39D1,
-	0xA72C, 0x83D8,
-	0xA72E, 0x6702,
-	0xA730, 0x37F7,
-	0xA732, 0x0124,
-	0xA734, 0x8355,
-	0xA736, 0xA781,
-	0xA738, 0xBE86,
-	0xA73A, 0x0147,
-	0xA73C, 0x2548,
-	0xA73E, 0x03D6,
-	0xA740, 0x2600,
-	0xA742, 0x8906,
-	0xA744, 0x63E4,
-	0xA746, 0xC502,
-	0xA748, 0x0507,
-	0xA74A, 0xE31A,
-	0xA74C, 0x07FF,
-	0xA74E, 0xB707,
-	0xA750, 0x0040,
-	0xA752, 0x3E95,
-	0xA754, 0xB7C7,
-	0xA756, 0x0224,
-	0xA758, 0x83A7,
-	0xA75A, 0x07B7,
-	0xA75C, 0x2310,
-	0xA75E, 0x1501,
-	0xA760, 0x0545,
-	0xA762, 0x8297,
-	0xA764, 0x1753,
-	0xA766, 0x02FC,
-	0xA768, 0x6700,
-	0xA76A, 0x03D8,
-	0xA76C, 0x2107,
-	0xA76E, 0x0607,
-	0xA770, 0xBA97,
-	0xA772, 0x83D8,
-	0xA774, 0x4700,
-	0xA776, 0xE1BF,
-	0xA778, 0x2107,
-	0xA77A, 0x0607,
-	0xA77C, 0x3E97,
-	0xA77E, 0x8358,
-	0xA780, 0x4700,
-	0xA782, 0x69BF,
-	0xA784, 0x1387,
-	0xA786, 0x0602,
-	0xA788, 0x0607,
-	0xA78A, 0x3E97,
-	0xA78C, 0x8358,
-	0xA78E, 0x0700,
-	0xA790, 0x39BF,
-	0xA792, 0x1307,
-	0xA794, 0x0702,
-	0xA796, 0x0607,
-	0xA798, 0x3E97,
-	0xA79A, 0x8358,
-	0xA79C, 0x0700,
-	0xA79E, 0x89B7,
-	0xA7A0, 0x1753,
-	0xA7A2, 0x02FC,
-	0xA7A4, 0xE702,
-	0xA7A6, 0x83CF,
-	0xA7A8, 0x3284,
-	0xA7AA, 0xB7E7,
-	0xA7AC, 0x0124,
-	0xA7AE, 0x032B,
-	0xA7B0, 0x4600,
-	0xA7B2, 0x832A,
-	0xA7B4, 0x4609,
-	0xA7B6, 0x032A,
-	0xA7B8, 0xC604,
-	0xA7BA, 0x0348,
-	0xA7BC, 0x8600,
-	0xA7BE, 0x9387,
-	0xA7C0, 0x0787,
-	0xA7C2, 0x0346,
-	0xA7C4, 0x8609,
-	0xA7C6, 0x0347,
-	0xA7C8, 0x0405,
-	0xA7CA, 0x83AB,
-	0xA7CC, 0x070E,
-	0xA7CE, 0x03AC,
-	0xA7D0, 0x470E,
-	0xA7D2, 0x3318,
-	0xA7D4, 0x0B01,
-	0xA7D6, 0x3317,
-	0xA7D8, 0xEA00,
-	0xA7DA, 0x3396,
-	0xA7DC, 0xCA00,
-	0xA7DE, 0x2322,
-	0xA7E0, 0x0401,
-	0xA7E2, 0x78C4,
-	0xA7E4, 0xAA84,
-	0xA7E6, 0x2E89,
-	0xA7E8, 0x232A,
-	0xA7EA, 0xC408,
-	0xA7EC, 0xDE85,
-	0xA7EE, 0x6285,
-	0xA7F0, 0x0146,
-	0xA7F2, 0xB689,
-	0xA7F4, 0x9740,
-	0xA7F6, 0x01FC,
-	0xA7F8, 0xE780,
-	0xA7FA, 0x0025,
-	0xA7FC, 0xCE86,
-	0xA7FE, 0x2286,
-	0xA800, 0xCA85,
-	0xA802, 0x2685,
-	0xA804, 0x97B0,
-	0xA806, 0xFDFB,
-	0xA808, 0xE780,
-	0xA80A, 0x00B0,
-	0xA80C, 0x6285,
-	0xA80E, 0x0546,
-	0xA810, 0xDE85,
-	0xA812, 0x9740,
-	0xA814, 0x01FC,
-	0xA816, 0xE780,
-	0xA818, 0x2023,
-	0xA81A, 0xB7C7,
-	0xA81C, 0x0224,
-	0xA81E, 0x83A7,
-	0xA820, 0x07B7,
-	0xA822, 0x2322,
-	0xA824, 0x6401,
-	0xA826, 0x232A,
-	0xA828, 0x5409,
-	0xA82A, 0x2326,
-	0xA82C, 0x4405,
-	0xA82E, 0x0145,
-	0xA830, 0x8297,
-	0xA832, 0x1753,
-	0xA834, 0x02FC,
-	0xA836, 0x6700,
-	0xA838, 0xE3C9,
-	0xA83A, 0x0100,
-	0xA83C, 0x1753,
-	0xA83E, 0x02FC,
-	0xA840, 0xE702,
-	0xA842, 0x43C8,
-	0xA844, 0x2A84,
-	0xA846, 0xEFE0,
-	0xA848, 0xEFA9,
-	0xA84A, 0xA147,
-	0xA84C, 0x6306,
-	0xA84E, 0xF400,
-	0xA850, 0x1753,
-	0xA852, 0x02FC,
-	0xA854, 0x6700,
-	0xA856, 0x43C9,
-	0xA858, 0x9770,
-	0xA85A, 0xFFFB,
-	0xA85C, 0xE780,
-	0xA85E, 0x000C,
-	0xA860, 0x39C5,
-	0xA862, 0xB737,
-	0xA864, 0x0124,
-	0xA866, 0x83C7,
-	0xA868, 0x271A,
-	0xA86A, 0xFDD3,
-	0xA86C, 0x3784,
-	0xA86E, 0x0040,
-	0xA870, 0x8355,
-	0xA872, 0xE4F3,
-	0xA874, 0x0D45,
-	0xA876, 0x93E5,
-	0xA878, 0x0524,
-	0xA87A, 0x97D0,
-	0xA87C, 0xFFFB,
-	0xA87E, 0xE780,
-	0xA880, 0xA00A,
-	0xA882, 0x8355,
-	0xA884, 0x24F7,
-	0xA886, 0xB7A7,
-	0xA888, 0x0124,
-	0xA88A, 0x9387,
-	0xA88C, 0x0753,
-	0xA88E, 0x03D7,
-	0xA890, 0x47B6,
-	0xA892, 0xC205,
-	0xA894, 0xC181,
-	0xA896, 0x1377,
-	0xA898, 0xF7DB,
-	0xA89A, 0x93F5,
-	0xA89C, 0xF5DB,
-	0xA89E, 0x4145,
-	0xA8A0, 0x2392,
-	0xA8A2, 0xE7B6,
-	0xA8A4, 0x97D0,
-	0xA8A6, 0xFFFB,
-	0xA8A8, 0xE780,
-	0xA8AA, 0x0008,
-	0xA8AC, 0x55B7,
-	0xA8AE, 0x9770,
-	0xA8B0, 0xFFFB,
-	0xA8B2, 0xE780,
-	0xA8B4, 0xA003,
-	0xA8B6, 0x55D5,
-	0xA8B8, 0x9770,
-	0xA8BA, 0xFFFB,
-	0xA8BC, 0xE780,
-	0xA8BE, 0x807D,
-	0xA8C0, 0x19C9,
-	0xA8C2, 0xB797,
-	0xA8C4, 0x0124,
-	0xA8C6, 0x9387,
-	0xA8C8, 0x07D7,
-	0xA8CA, 0x03C7,
-	0xA8CC, 0x8703,
-	0xA8CE, 0x83C7,
-	0xA8D0, 0x2706,
-	0xA8D2, 0x6306,
-	0xA8D4, 0xF706,
-	0xA8D6, 0x9770,
-	0xA8D8, 0xFFFB,
-	0xA8DA, 0xE780,
-	0xA8DC, 0xA07B,
-	0xA8DE, 0x51D1,
-	0xA8E0, 0xB797,
-	0xA8E2, 0x0124,
-	0xA8E4, 0x9387,
-	0xA8E6, 0x07D7,
-	0xA8E8, 0x03C7,
-	0xA8EA, 0xC701,
-	0xA8EC, 0x83C7,
-	0xA8EE, 0x2706,
-	0xA8F0, 0xE319,
-	0xA8F2, 0xF7F6,
-	0xA8F4, 0xB727,
-	0xA8F6, 0x0224,
-	0xA8F8, 0x0564,
-	0xA8FA, 0x9387,
-	0xA8FC, 0x076B,
-	0xA8FE, 0xA297,
-	0xA900, 0x03C7,
-	0xA902, 0xF780,
-	0xA904, 0x8547,
-	0xA906, 0x6317,
-	0xA908, 0xF700,
-	0xA90A, 0xB737,
-	0xA90C, 0x0124,
-	0xA90E, 0x83C7,
-	0xA910, 0x57A5,
-	0xA912, 0xB1C3,
-	0xA914, 0xB787,
-	0xA916, 0x0040,
-	0xA918, 0x83D5,
-	0xA91A, 0xE7F3,
-	0xA91C, 0x0D45,
-	0xA91E, 0x93E5,
-	0xA920, 0x0501,
-	0xA922, 0x97D0,
-	0xA924, 0xFFFB,
-	0xA926, 0xE780,
-	0xA928, 0x2000,
-	0xA92A, 0xB7A7,
-	0xA92C, 0x0124,
-	0xA92E, 0x9387,
-	0xA930, 0x0753,
-	0xA932, 0x03D7,
-	0xA934, 0x47B6,
-	0xA936, 0x3D9B,
-	0xA938, 0x2392,
-	0xA93A, 0xE7B6,
-	0xA93C, 0x1DB7,
-	0xA93E, 0xB727,
-	0xA940, 0x0224,
-	0xA942, 0x0564,
-	0xA944, 0x9387,
-	0xA946, 0x076B,
-	0xA948, 0xA297,
-	0xA94A, 0x03C7,
-	0xA94C, 0xF780,
-	0xA94E, 0x9147,
-	0xA950, 0xE30D,
-	0xA952, 0xF7FA,
-	0xA954, 0xC1B7,
-	0xA956, 0xB787,
-	0xA958, 0x0040,
-	0xA95A, 0x83D5,
-	0xA95C, 0xE7F3,
-	0xA95E, 0x0D45,
-	0xA960, 0x93E5,
-	0xA962, 0x0504,
-	0xA964, 0x97D0,
-	0xA966, 0xFFFB,
-	0xA968, 0xE780,
-	0xA96A, 0x00FC,
-	0xA96C, 0xB797,
-	0xA96E, 0x0124,
-	0xA970, 0x9387,
-	0xA972, 0x0753,
-	0xA974, 0xA297,
-	0xA976, 0x03D7,
-	0xA978, 0x47B6,
-	0xA97A, 0x1377,
-	0xA97C, 0xF7FB,
-	0xA97E, 0x2392,
-	0xA980, 0xE7B6,
-	0xA982, 0xC5B5,
-	0xA984, 0x3571,
-	0xA986, 0x22CF,
-	0xA988, 0x26CD,
-	0xA98A, 0x7324,
-	0xA98C, 0x2034,
-	0xA98E, 0xF324,
-	0xA990, 0x1034,
-	0xA992, 0x7360,
-	0xA994, 0x0430,
-	0xA996, 0x06CB,
-	0xA998, 0x16C9,
-	0xA99A, 0x1AC7,
-	0xA99C, 0x1EC5,
-	0xA99E, 0x2AC3,
-	0xA9A0, 0x2EC1,
-	0xA9A2, 0xB2DE,
-	0xA9A4, 0xB6DC,
-	0xA9A6, 0xBADA,
-	0xA9A8, 0xBED8,
-	0xA9AA, 0xC2D6,
-	0xA9AC, 0xC6D4,
-	0xA9AE, 0xF2D2,
-	0xA9B0, 0xF6D0,
-	0xA9B2, 0xFACE,
-	0xA9B4, 0xFECC,
-	0xA9B6, 0x82E2,
-	0xA9B8, 0x86E0,
-	0xA9BA, 0x0AFE,
-	0xA9BC, 0x0EFC,
-	0xA9BE, 0x12FA,
-	0xA9C0, 0x16F8,
-	0xA9C2, 0x1AF6,
-	0xA9C4, 0x1EF4,
-	0xA9C6, 0x2AF2,
-	0xA9C8, 0x2EF0,
-	0xA9CA, 0x32EE,
-	0xA9CC, 0x36EC,
-	0xA9CE, 0x3AEA,
-	0xA9D0, 0x3EE8,
-	0xA9D2, 0x42E6,
-	0xA9D4, 0x46E4,
-	0xA9D6, 0x72E2,
-	0xA9D8, 0x76E0,
-	0xA9DA, 0x272E,
-	0xA9DC, 0xE1FF,
-	0xA9DE, 0x272C,
-	0xA9E0, 0xF1FF,
-	0xA9E2, 0x9770,
-	0xA9E4, 0xFFFB,
-	0xA9E6, 0xE780,
-	0xA9E8, 0x60F3,
-	0xA9EA, 0x19C5,
-	0xA9EC, 0x9770,
-	0xA9EE, 0xFFFB,
-	0xA9F0, 0xE780,
-	0xA9F2, 0xC0EF,
-	0xA9F4, 0x631C,
-	0xA9F6, 0x0512,
-	0xA9F8, 0x9305,
-	0xA9FA, 0x0024,
-	0xA9FC, 0x4145,
-	0xA9FE, 0x97D0,
-	0xAA00, 0xFFFB,
-	0xAA02, 0xE780,
-	0xAA04, 0x60F9,
-	0xAA06, 0x8145,
-	0xAA08, 0x9377,
-	0xAA0A, 0x1500,
-	0xAA0C, 0x85C7,
-	0xAA0E, 0x37D7,
-	0xAA10, 0x0124,
-	0xAA12, 0xB7A7,
-	0xAA14, 0x0124,
-	0xAA16, 0x1307,
-	0xAA18, 0x07C4,
-	0xAA1A, 0x9387,
-	0xAA1C, 0x0753,
-	0xAA1E, 0x0356,
-	0xAA20, 0x4707,
-	0xAA22, 0x83D6,
-	0xAA24, 0xA7B6,
-	0xAA26, 0x0506,
-	0xAA28, 0x93E6,
-	0xAA2A, 0x1600,
-	0xAA2C, 0x231A,
-	0xAA2E, 0xC706,
-	0xAA30, 0x2395,
-	0xAA32, 0xD7B6,
-	0xAA34, 0x9377,
-	0xAA36, 0x2500,
-	0xAA38, 0x85C7,
-	0xAA3A, 0x37D7,
-	0xAA3C, 0x0124,
-	0xAA3E, 0xB7A7,
-	0xAA40, 0x0124,
-	0xAA42, 0x1307,
-	0xAA44, 0x07C4,
-	0xAA46, 0x9387,
-	0xAA48, 0x0753,
-	0xAA4A, 0x0356,
-	0xAA4C, 0xC70C,
-	0xAA4E, 0x83D6,
-	0xAA50, 0xA7B6,
-	0xAA52, 0x0506,
-	0xAA54, 0x93E6,
-	0xAA56, 0x2600,
-	0xAA58, 0x2316,
-	0xAA5A, 0xC70C,
-	0xAA5C, 0x2395,
-	0xAA5E, 0xD7B6,
-	0xAA60, 0x9377,
-	0xAA62, 0x0520,
-	0xAA64, 0x1375,
-	0xAA66, 0x0504,
-	0xAA68, 0xC5C3,
-	0xAA6A, 0xB7D7,
-	0xAA6C, 0x0124,
-	0xAA6E, 0x9387,
-	0xAA70, 0x07C4,
-	0xAA72, 0x03D7,
-	0xAA74, 0x6708,
-	0xAA76, 0x0507,
-	0xAA78, 0x2393,
-	0xAA7A, 0xE708,
-	0xAA7C, 0xD1C5,
-	0xAA7E, 0x37A7,
-	0xAA80, 0x0124,
-	0xAA82, 0x1307,
-	0xAA84, 0x0753,
-	0xAA86, 0x8356,
-	0xAA88, 0xA7B6,
-	0xAA8A, 0x93E6,
-	0xAA8C, 0x0620,
-	0xAA8E, 0x2315,
-	0xAA90, 0xD7B6,
-	0xAA92, 0x11C9,
-	0xAA94, 0x03D6,
-	0xAA96, 0xA708,
-	0xAA98, 0x0506,
-	0xAA9A, 0x2395,
-	0xAA9C, 0xC708,
-	0xAA9E, 0x93E6,
-	0xAAA0, 0x0604,
-	0xAAA2, 0x2315,
-	0xAAA4, 0xD7B6,
-	0xAAA6, 0xDA40,
-	0xAAA8, 0xCA42,
-	0xAAAA, 0x3A43,
-	0xAAAC, 0xAA43,
-	0xAAAE, 0x1A45,
-	0xAAB0, 0x8A45,
-	0xAAB2, 0x7656,
-	0xAAB4, 0xE656,
-	0xAAB6, 0x5657,
-	0xAAB8, 0xC657,
-	0xAABA, 0x3658,
-	0xAABC, 0xA658,
-	0xAABE, 0x165E,
-	0xAAC0, 0x865E,
-	0xAAC2, 0x764F,
-	0xAAC4, 0xE64F,
-	0xAAC6, 0x1660,
-	0xAAC8, 0x8660,
-	0xAACA, 0x7271,
-	0xAACC, 0xE271,
-	0xAACE, 0x5272,
-	0xAAD0, 0xC272,
-	0xAAD2, 0x3273,
-	0xAAD4, 0xA273,
-	0xAAD6, 0x1275,
-	0xAAD8, 0x8275,
-	0xAADA, 0x7266,
-	0xAADC, 0xE266,
-	0xAADE, 0x5267,
-	0xAAE0, 0xC267,
-	0xAAE2, 0x3268,
-	0xAAE4, 0xA268,
-	0xAAE6, 0x126E,
-	0xAAE8, 0x826E,
-	0xAAEA, 0x072F,
-	0xAAEC, 0xC1FF,
-	0xAAEE, 0x872F,
-	0xAAF0, 0x81FF,
-	0xAAF2, 0x7370,
-	0xAAF4, 0x0430,
-	0xAAF6, 0x7390,
-	0xAAF8, 0x1434,
-	0xAAFA, 0x7310,
-	0xAAFC, 0x2434,
-	0xAAFE, 0x7A44,
-	0xAB00, 0xEA44,
-	0xAB02, 0x0D61,
-	0xAB04, 0x7300,
-	0xAB06, 0x2030,
-	0xAB08, 0x59DD,
-	0xAB0A, 0xB7D7,
-	0xAB0C, 0x0124,
-	0xAB0E, 0x9387,
-	0xAB10, 0x07C4,
-	0xAB12, 0x03D7,
-	0xAB14, 0xA708,
-	0xAB16, 0x0507,
-	0xAB18, 0x2395,
-	0xAB1A, 0xE708,
-	0xAB1C, 0xC9D5,
-	0xAB1E, 0x37A7,
-	0xAB20, 0x0124,
-	0xAB22, 0x1307,
-	0xAB24, 0x0753,
-	0xAB26, 0x8356,
-	0xAB28, 0xA7B6,
-	0xAB2A, 0x95BF,
-	0xAB2C, 0xB7A7,
-	0xAB2E, 0x0124,
-	0xAB30, 0x83D5,
-	0xAB32, 0x8709,
-	0xAB34, 0x4145,
-	0xAB36, 0x97D0,
-	0xAB38, 0xFFFB,
-	0xAB3A, 0xE780,
-	0xAB3C, 0xE0E5,
-	0xAB3E, 0x8545,
-	0xAB40, 0xE1B5,
-	0xAB42, 0x0100,
-	0xAB44, 0x8280,
-	0xAB46, 0x0100,
-	0xAB48, 0x1753,
-	0xAB4A, 0x02FC,
-	0xAB4C, 0xE702,
-	0xAB4E, 0x8397,
-	0xAB50, 0x37E4,
-	0xAB52, 0x0124,
-	0xAB54, 0x1304,
-	0xAB56, 0x044C,
-	0xAB58, 0x8344,
-	0xAB5A, 0xE40A,
-	0xAB5C, 0x8547,
-	0xAB5E, 0x2307,
-	0xAB60, 0xF40A,
-	0xAB62, 0x97A0,
-	0xAB64, 0xFDFB,
-	0xAB66, 0xE780,
-	0xAB68, 0x20E3,
-	0xAB6A, 0x2307,
-	0xAB6C, 0x940A,
-	0xAB6E, 0x1753,
-	0xAB70, 0x02FC,
-	0xAB72, 0x6700,
-	0xAB74, 0x6397,
-	0xAB76, 0x0100,
-	0xAB78, 0xB7A7,
-	0xAB7A, 0x0224,
-	0xAB7C, 0x83C7,
-	0xAB7E, 0x075A,
-	0xAB80, 0x0547,
-	0xAB82, 0x6383,
-	0xAB84, 0xE700,
-	0xAB86, 0x8280,
-	0xAB88, 0x1753,
-	0xAB8A, 0x02FC,
-	0xAB8C, 0xE702,
-	0xAB8E, 0xE391,
-	0xAB90, 0x3794,
-	0xAB92, 0x0124,
-	0xAB94, 0x1304,
-	0xAB96, 0x0453,
-	0xAB98, 0x0347,
-	0xAB9A, 0x041B,
-	0xAB9C, 0x4111,
-	0xAB9E, 0x6307,
-	0xABA0, 0xF700,
-	0xABA2, 0x4101,
-	0xABA4, 0x1753,
-	0xABA6, 0x02FC,
-	0xABA8, 0x6700,
-	0xABAA, 0x6393,
-	0xABAC, 0x8947,
-	0xABAE, 0xE31A,
-	0xABB0, 0xF5FE,
-	0xABB2, 0x8347,
-	0xABB4, 0x3441,
-	0xABB6, 0xADC3,
-	0xABB8, 0x83A9,
-	0xABBA, 0x0500,
-	0xABBC, 0x2EC6,
-	0xABBE, 0x97C0,
-	0xABC0, 0x01FC,
-	0xABC2, 0xE780,
-	0xABC4, 0x20B8,
-	0xABC6, 0xAA84,
-	0xABC8, 0x9780,
-	0xABCA, 0x01FC,
-	0xABCC, 0xE780,
-	0xABCE, 0x80C7,
-	0xABD0, 0xB245,
-	0xABD2, 0x2A89,
-	0xABD4, 0x9C41,
-	0xABD6, 0x63F3,
-	0xABD8, 0x9700,
-	0xABDA, 0xA687,
-	0xABDC, 0x8851,
-	0xABDE, 0x9CC1,
-	0xABE0, 0x2EC6,
-	0xABE2, 0x4A95,
-	0xABE4, 0x97B0,
-	0xABE6, 0x00FC,
-	0xABE8, 0xE780,
-	0xABEA, 0x00C5,
-	0xABEC, 0xB245,
-	0xABEE, 0xAA84,
-	0xABF0, 0xE8C9,
-	0xABF2, 0x3385,
-	0xABF4, 0x2901,
-	0xABF6, 0x97B0,
-	0xABF8, 0x00FC,
-	0xABFA, 0xE780,
-	0xABFC, 0xE0C3,
-	0xABFE, 0x8567,
-	0xAC00, 0x3E94,
-	0xAC02, 0x8327,
-	0xAC04, 0xC483,
-	0xAC06, 0x2695,
-	0xAC08, 0xB245,
-	0xAC0A, 0x63F3,
-	0xAC0C, 0xA700,
-	0xAC0E, 0xAA87,
-	0xAC10, 0x2322,
-	0xAC12, 0xF498,
-	0xAC14, 0xE8C5,
-	0xAC16, 0x71B7,
-	0xAC18, 0x0145,
-	0xAC1A, 0x2EC6,
-	0xAC1C, 0x97B0,
-	0xAC1E, 0x01FC,
-	0xAC20, 0xE780,
-	0xAC22, 0x8035,
-	0xAC24, 0xB245,
-	0xAC26, 0xAA89,
-	0xAC28, 0x51BF,
-	0xAC2A, 0x0100,
-	0xAC2C, 0x1753,
-	0xAC2E, 0x02FC,
-	0xAC30, 0xE702,
-	0xAC32, 0x4389,
-	0xAC34, 0x2A84,
-	0xAC36, 0xEFE0,
-	0xAC38, 0xAFFC,
-	0xAC3A, 0x01E8,
-	0xAC3C, 0xB7D7,
-	0xAC3E, 0x0124,
-	0xAC40, 0x03A7,
-	0xAC42, 0x87C1,
-	0xAC44, 0x9147,
-	0xAC46, 0x6306,
-	0xAC48, 0xF700,
-	0xAC4A, 0x1753,
-	0xAC4C, 0x02FC,
-	0xAC4E, 0x6700,
-	0xAC50, 0xA389,
-	0xAC52, 0xB7D7,
-	0xAC54, 0x0124,
-	0xAC56, 0x83C7,
-	0xAC58, 0x07FA,
-	0xAC5A, 0xE5DB,
-	0xAC5C, 0xB747,
-	0xAC5E, 0x0124,
-	0xAC60, 0x83C7,
-	0xAC62, 0x27C4,
-	0xAC64, 0xFDF3,
-	0xAC66, 0x97E0,
-	0xAC68, 0x00FC,
-	0xAC6A, 0xE780,
-	0xAC6C, 0xA097,
-	0xAC6E, 0xB787,
-	0xAC70, 0x0224,
-	0xAC72, 0x0547,
-	0xAC74, 0xA380,
-	0xAC76, 0xE74E,
-	0xAC78, 0xC9BF,
-	0xAC7A, 0x0100,
-	0xAC7C, 0x1753,
-	0xAC7E, 0x02FC,
-	0xAC80, 0xE702,
-	0xAC82, 0x4384,
-	0xAC84, 0x3784,
-	0xAC86, 0x0224,
-	0xAC88, 0x1304,
-	0xAC8A, 0xC449,
-	0xAC8C, 0x8347,
-	0xAC8E, 0x5404,
-	0xAC90, 0x99E7,
-	0xAC92, 0xEFE0,
-	0xAC94, 0x7F82,
-	0xAC96, 0x1753,
-	0xAC98, 0x02FC,
-	0xAC9A, 0x6700,
-	0xAC9C, 0xE384,
-	0xAC9E, 0x97E0,
-	0xACA0, 0x00FC,
-	0xACA2, 0xE780,
-	0xACA4, 0x20AF,
-	0xACA6, 0xA302,
-	0xACA8, 0x0404,
-	0xACAA, 0xEFE0,
-	0xACAC, 0xFF80,
-	0xACAE, 0x1753,
-	0xACB0, 0x02FC,
-	0xACB2, 0x6700,
-	0xACB4, 0x6383,
-	0xACB6, 0x0100,
-	0xACB8, 0x1753,
-	0xACBA, 0x02FC,
-	0xACBC, 0xE702,
-	0xACBE, 0x8380,
-	0xACC0, 0xB7E7,
-	0xACC2, 0x0124,
-	0xACC4, 0x9387,
-	0xACC6, 0x0787,
-	0xACC8, 0x03A9,
-	0xACCA, 0x870E,
-	0xACCC, 0x83A4,
-	0xACCE, 0xC70E,
-	0xACD0, 0x0146,
-	0xACD2, 0xCA85,
-	0xACD4, 0x2A84,
-	0xACD6, 0x2685,
-	0xACD8, 0x9740,
-	0xACDA, 0x01FC,
-	0xACDC, 0xE780,
-	0xACDE, 0xC0D6,
-	0xACE0, 0x2285,
-	0xACE2, 0x97A0,
-	0xACE4, 0xFFFB,
-	0xACE6, 0xE780,
-	0xACE8, 0x603E,
-	0xACEA, 0x0546,
-	0xACEC, 0xCA85,
-	0xACEE, 0x2685,
-	0xACF0, 0x9740,
-	0xACF2, 0x01FC,
-	0xACF4, 0xE780,
-	0xACF6, 0x40D5,
-	0xACF8, 0x8547,
-	0xACFA, 0x630F,
-	0xACFC, 0xF400,
-	0xACFE, 0x9147,
-	0xAD00, 0x630C,
-	0xAD02, 0xF400,
-	0xAD04, 0xB7C7,
-	0xAD06, 0x0224,
-	0xAD08, 0x83A7,
-	0xAD0A, 0x07B7,
-	0xAD0C, 0x0945,
-	0xAD0E, 0x8297,
-	0xAD10, 0x1743,
-	0xAD12, 0x02FC,
-	0xAD14, 0x6700,
-	0xAD16, 0x437D,
-	0xAD18, 0x9770,
-	0xAD1A, 0xFFFB,
-	0xAD1C, 0xE780,
-	0xAD1E, 0x00C0,
-	0xAD20, 0x75F1,
-	0xAD22, 0x9770,
-	0xAD24, 0xFFFB,
-	0xAD26, 0xE780,
-	0xAD28, 0x60BC,
-	0xAD2A, 0x69DD,
-	0xAD2C, 0x9770,
-	0xAD2E, 0xFFFB,
-	0xAD30, 0xE780,
-	0xAD32, 0x4036,
-	0xAD34, 0x19C9,
-	0xAD36, 0xB797,
-	0xAD38, 0x0124,
-	0xAD3A, 0x9387,
-	0xAD3C, 0x07D7,
-	0xAD3E, 0x03C7,
-	0xAD40, 0x8703,
-	0xAD42, 0x83C7,
-	0xAD44, 0x2706,
-	0xAD46, 0x6306,
-	0xAD48, 0xF706,
-	0xAD4A, 0x9770,
-	0xAD4C, 0xFFFB,
-	0xAD4E, 0xE780,
-	0xAD50, 0x6034,
-	0xAD52, 0x4DD9,
-	0xAD54, 0xB797,
-	0xAD56, 0x0124,
-	0xAD58, 0x9387,
-	0xAD5A, 0x07D7,
-	0xAD5C, 0x03C7,
-	0xAD5E, 0xC701,
-	0xAD60, 0x83C7,
-	0xAD62, 0x2706,
-	0xAD64, 0xE310,
-	0xAD66, 0xF7FA,
-	0xAD68, 0xB7C7,
-	0xAD6A, 0x0224,
-	0xAD6C, 0x83A7,
-	0xAD6E, 0x47B7,
-	0xAD70, 0xB706,
-	0xAD72, 0x0040,
-	0xAD74, 0x1386,
-	0xAD76, 0x4606,
-	0xAD78, 0x8965,
-	0xAD7A, 0x3E96,
-	0xAD7C, 0x1387,
-	0xAD7E, 0x061F,
-	0xAD80, 0x9385,
-	0xAD82, 0xF5F1,
-	0xAD84, 0x2310,
-	0xAD86, 0xB600,
-	0xAD88, 0x3E97,
-	0xAD8A, 0x7D56,
-	0xAD8C, 0x2310,
-	0xAD8E, 0xC700,
-	0xAD90, 0x37D6,
-	0xAD92, 0x0124,
-	0xAD94, 0x1306,
-	0xAD96, 0x06E7,
-	0xAD98, 0x0357,
-	0xAD9A, 0xC605,
-	0xAD9C, 0x0356,
-	0xAD9E, 0x6606,
-	0xADA0, 0x9386,
-	0xADA2, 0x861D,
-	0xADA4, 0x3297,
-	0xADA6, 0x4207,
-	0xADA8, 0xB697,
-	0xADAA, 0x4183,
-	0xADAC, 0x2390,
-	0xADAE, 0xE700,
-	0xADB0, 0x91BF,
-	0xADB2, 0xB7C7,
-	0xADB4, 0x0224,
-	0xADB6, 0x83A7,
-	0xADB8, 0x47B7,
-	0xADBA, 0xB706,
-	0xADBC, 0x0040,
-	0xADBE, 0x1386,
-	0xADC0, 0x4606,
-	0xADC2, 0x8965,
-	0xADC4, 0x3E96,
-	0xADC6, 0x1387,
-	0xADC8, 0x061F,
-	0xADCA, 0x9385,
-	0xADCC, 0xF5F1,
-	0xADCE, 0x2310,
-	0xADD0, 0xB600,
-	0xADD2, 0x3E97,
-	0xADD4, 0x7D56,
-	0xADD6, 0x2310,
-	0xADD8, 0xC700,
-	0xADDA, 0x37D6,
-	0xADDC, 0x0124,
-	0xADDE, 0x1306,
-	0xADE0, 0x06E7,
-	0xADE2, 0x0357,
-	0xADE4, 0x0606,
-	0xADE6, 0x9386,
-	0xADE8, 0xA61D,
-	0xADEA, 0x0356,
-	0xADEC, 0x6606,
-	0xADEE, 0x5DBF,
-	0xADF0, 0x1743,
-	0xADF2, 0x02FC,
-	0xADF4, 0xE702,
-	0xADF6, 0x036D,
-	0xADF8, 0xB7D7,
-	0xADFA, 0x0024,
-	0xADFC, 0x83C7,
-	0xADFE, 0x476D,
-	0xAE00, 0x8544,
-	0xAE02, 0x6380,
-	0xAE04, 0x9714,
-	0xAE06, 0xB7E7,
-	0xAE08, 0x0024,
-	0xAE0A, 0x03C4,
-	0xAE0C, 0xC784,
-	0xAE0E, 0xB7A7,
-	0xAE10, 0x0124,
-	0xAE12, 0x83C7,
-	0xAE14, 0x6792,
-	0xAE16, 0x3334,
-	0xAE18, 0x8000,
-	0xAE1A, 0x3304,
-	0xAE1C, 0x8040,
-	0xAE1E, 0x7998,
-	0xAE20, 0x1304,
-	0xAE22, 0x6402,
-	0xAE24, 0xEDE7,
-	0xAE26, 0xB767,
-	0xAE28, 0x0024,
-	0xAE2A, 0x9387,
-	0xAE2C, 0x0733,
-	0xAE2E, 0x03D7,
-	0xAE30, 0xE75B,
-	0xAE32, 0x19C7,
-	0xAE34, 0x1347,
-	0xAE36, 0xF7FF,
-	0xAE38, 0x618F,
-	0xAE3A, 0x1314,
-	0xAE3C, 0x0701,
-	0xAE3E, 0x4180,
-	0xAE40, 0x83D7,
-	0xAE42, 0x075C,
-	0xAE44, 0x0D45,
-	0xAE46, 0x5D8C,
-	0xAE48, 0x4204,
-	0xAE4A, 0x4180,
-	0xAE4C, 0xA285,
-	0xAE4E, 0x97D0,
-	0xAE50, 0xFFFB,
-	0xAE52, 0xE780,
-	0xAE54, 0xA0BB,
-	0xAE56, 0x9315,
-	0xAE58, 0x0501,
-	0xAE5A, 0xC181,
-	0xAE5C, 0xAA84,
-	0xAE5E, 0x6309,
-	0xAE60, 0xB400,
-	0xAE62, 0x0565,
-	0xAE64, 0xA18D,
-	0xAE66, 0x2D05,
-	0xAE68, 0x97A0,
-	0xAE6A, 0xFFFB,
-	0xAE6C, 0xE780,
-	0xAE6E, 0x8046,
-	0xAE70, 0x1395,
-	0xAE72, 0x0401,
-	0xAE74, 0x93F7,
-	0xAE76, 0x1400,
-	0xAE78, 0x4181,
-	0xAE7A, 0x91CB,
-	0xAE7C, 0xB7D7,
-	0xAE7E, 0x0124,
-	0xAE80, 0x9387,
-	0xAE82, 0x07C4,
-	0xAE84, 0x03D7,
-	0xAE86, 0x4707,
-	0xAE88, 0x0507,
-	0xAE8A, 0x239A,
-	0xAE8C, 0xE706,
-	0xAE8E, 0x9377,
-	0xAE90, 0x2500,
-	0xAE92, 0x91CB,
-	0xAE94, 0xB7D7,
-	0xAE96, 0x0124,
-	0xAE98, 0x9387,
-	0xAE9A, 0x07C4,
-	0xAE9C, 0x03D7,
-	0xAE9E, 0xC70C,
-	0xAEA0, 0x0507,
-	0xAEA2, 0x2396,
-	0xAEA4, 0xE70C,
-	0xAEA6, 0x9377,
-	0xAEA8, 0x4500,
-	0xAEAA, 0x91CB,
-	0xAEAC, 0xB7D7,
-	0xAEAE, 0x0124,
-	0xAEB0, 0x9387,
-	0xAEB2, 0x07C4,
-	0xAEB4, 0x03D7,
-	0xAEB6, 0xE70C,
-	0xAEB8, 0x0507,
-	0xAEBA, 0x2397,
-	0xAEBC, 0xE70C,
-	0xAEBE, 0x9377,
-	0xAEC0, 0x0502,
-	0xAEC2, 0x91CB,
-	0xAEC4, 0xB7D7,
-	0xAEC6, 0x0124,
-	0xAEC8, 0x9387,
-	0xAECA, 0x07C4,
-	0xAECC, 0x03D7,
-	0xAECE, 0x070F,
-	0xAED0, 0x0507,
-	0xAED2, 0x2398,
-	0xAED4, 0xE70E,
-	0xAED6, 0x9377,
-	0xAED8, 0x0520,
-	0xAEDA, 0x91CB,
-	0xAEDC, 0xB7D7,
-	0xAEDE, 0x0124,
-	0xAEE0, 0x9387,
-	0xAEE2, 0x07C4,
-	0xAEE4, 0x03D7,
-	0xAEE6, 0x6708,
-	0xAEE8, 0x0507,
-	0xAEEA, 0x2393,
-	0xAEEC, 0xE708,
-	0xAEEE, 0x1375,
-	0xAEF0, 0x0504,
-	0xAEF2, 0x11C9,
-	0xAEF4, 0xB7D7,
-	0xAEF6, 0x0124,
-	0xAEF8, 0x9387,
-	0xAEFA, 0x07C4,
-	0xAEFC, 0x03D7,
-	0xAEFE, 0xA708,
-	0xAF00, 0x0507,
-	0xAF02, 0x2395,
-	0xAF04, 0xE708,
-	0xAF06, 0x1743,
-	0xAF08, 0x02FC,
-	0xAF0A, 0x6700,
-	0xAF0C, 0xE35D,
-	0xAF0E, 0xB7D7,
-	0xAF10, 0x0124,
-	0xAF12, 0x83D7,
-	0xAF14, 0xA7E7,
-	0xAF16, 0x81DB,
-	0xAF18, 0x9760,
-	0xAF1A, 0xFEFB,
-	0xAF1C, 0xE780,
-	0xAF1E, 0x8068,
-	0xAF20, 0x6311,
-	0xAF22, 0x9506,
-	0xAF24, 0xB797,
-	0xAF26, 0x0124,
-	0xAF28, 0x9387,
-	0xAF2A, 0x07D7,
-	0xAF2C, 0x03C7,
-	0xAF2E, 0xC701,
-	0xAF30, 0x83C7,
-	0xAF32, 0x2706,
-	0xAF34, 0x6307,
-	0xAF36, 0xF704,
-	0xAF38, 0x1364,
-	0xAF3A, 0x0424,
-	0xAF3C, 0x4204,
-	0xAF3E, 0x4180,
-	0xAF40, 0x11A0,
-	0xAF42, 0x0144,
-	0xAF44, 0xB767,
-	0xAF46, 0x0024,
-	0xAF48, 0x9387,
-	0xAF4A, 0x0733,
-	0xAF4C, 0x03C7,
-	0xAF4E, 0x273B,
-	0xAF50, 0xE30F,
-	0xAF52, 0x07EC,
-	0xAF54, 0x37A7,
-	0xAF56, 0x0124,
-	0xAF58, 0x0347,
-	0xAF5A, 0x6792,
-	0xAF5C, 0xE309,
-	0xAF5E, 0x07EC,
-	0xAF60, 0x37D7,
-	0xAF62, 0x0124,
-	0xAF64, 0x0357,
-	0xAF66, 0xA7E7,
-	0xAF68, 0xE303,
-	0xAF6A, 0x07EC,
-	0xAF6C, 0x3797,
-	0xAF6E, 0x0124,
-	0xAF70, 0x0347,
-	0xAF72, 0x1700,
-	0xAF74, 0xE30D,
-	0xAF76, 0x07EA,
-	0xAF78, 0x1374,
-	0xAF7A, 0xF4DF,
-	0xAF7C, 0x4204,
-	0xAF7E, 0x4180,
-	0xAF80, 0x7DB5,
-	0xAF82, 0x9760,
-	0xAF84, 0xFEFB,
-	0xAF86, 0xE780,
-	0xAF88, 0xE061,
-	0xAF8A, 0x8547,
-	0xAF8C, 0xE31C,
-	0xAF8E, 0xF5FA,
-	0xAF90, 0xB797,
-	0xAF92, 0x0124,
-	0xAF94, 0x9387,
-	0xAF96, 0x07D7,
-	0xAF98, 0x03C7,
-	0xAF9A, 0xC701,
-	0xAF9C, 0x83C7,
-	0xAF9E, 0x2706,
-	0xAFA0, 0xE312,
-	0xAFA2, 0xF7FA,
-	0xAFA4, 0x1364,
-	0xAFA6, 0x0420,
-	0xAFA8, 0x4204,
-	0xAFAA, 0x4180,
-	0xAFAC, 0x61BF,
-	0xAFAE, 0x0100,
-	0xAFB0, 0x7171,
-	0xAFB2, 0x22D7,
-	0xAFB4, 0x26D5,
-	0xAFB6, 0x7324,
-	0xAFB8, 0x2034,
-	0xAFBA, 0xF324,
-	0xAFBC, 0x1034,
-	0xAFBE, 0x7360,
-	0xAFC0, 0x0430,
-	0xAFC2, 0x2EC5,
-	0xAFC4, 0xA565,
-	0xAFC6, 0xBEDC,
-	0xAFC8, 0x06D3,
-	0xAFCA, 0x16D1,
-	0xAFCC, 0x1ACF,
-	0xAFCE, 0x1ECD,
-	0xAFD0, 0x22CB,
-	0xAFD2, 0x2AC7,
-	0xAFD4, 0x32C3,
-	0xAFD6, 0x36C1,
-	0xAFD8, 0xBADE,
-	0xAFDA, 0xC2DA,
-	0xAFDC, 0xC6D8,
-	0xAFDE, 0xF2D0,
-	0xAFE0, 0xF6CE,
-	0xAFE2, 0xFACC,
-	0xAFE4, 0xFECA,
-	0xAFE6, 0x82E2,
-	0xAFE8, 0x86E0,
-	0xAFEA, 0x0AFE,
-	0xAFEC, 0x0EFC,
-	0xAFEE, 0x12FA,
-	0xAFF0, 0x16F8,
-	0xAFF2, 0x1AF6,
-	0xAFF4, 0x1EF4,
-	0xAFF6, 0x2AF2,
-	0xAFF8, 0x2EF0,
-	0xAFFA, 0x32EE,
-	0xAFFC, 0x26C9,
-	0xAFFE, 0xCAD6,
-	0xB000, 0xCED4,
-	0xB002, 0xD2D2,
-	0xB004, 0x9385,
-	0xB006, 0x0540,
-	0xB008, 0x0545,
-	0xB00A, 0x36EC,
-	0xB00C, 0x3AEA,
-	0xB00E, 0x3EE8,
-	0xB010, 0x42E6,
-	0xB012, 0x46E4,
-	0xB014, 0x72E2,
-	0xB016, 0x76E0,
-	0xB018, 0x272E,
-	0xB01A, 0xE1FF,
-	0xB01C, 0x272C,
-	0xB01E, 0xF1FF,
-	0xB020, 0x97D0,
-	0xB022, 0xFFFB,
-	0xB024, 0xE780,
-	0xB026, 0x4097,
-	0xB028, 0xA167,
-	0xB02A, 0xE98F,
-	0xB02C, 0x2A84,
-	0xB02E, 0x6394,
-	0xB030, 0x0718,
-	0xB032, 0xB764,
-	0xB034, 0x0124,
-	0xB036, 0x9384,
-	0xB038, 0x0440,
-	0xB03A, 0x8567,
-	0xB03C, 0xE18F,
-	0xB03E, 0xCDCF,
-	0xB040, 0x37D7,
-	0xB042, 0x0124,
-	0xB044, 0x3789,
-	0xB046, 0x0224,
-	0xB048, 0x1307,
-	0xB04A, 0x07C4,
-	0xB04C, 0x1309,
-	0xB04E, 0xC949,
-	0xB050, 0x8356,
-	0xB052, 0x670E,
-	0xB054, 0x8327,
-	0xB056, 0x0905,
-	0xB058, 0x8506,
-	0xB05A, 0x8507,
-	0xB05C, 0x2328,
-	0xB05E, 0xF904,
-	0xB060, 0x2313,
-	0xB062, 0xD70E,
-	0xB064, 0x858B,
-	0xB066, 0x639F,
-	0xB068, 0x071A,
-	0xB06A, 0x8547,
-	0xB06C, 0xA30A,
-	0xB06E, 0xF904,
-	0xB070, 0x9770,
-	0xB072, 0xFFFB,
-	0xB074, 0xE780,
-	0xB076, 0x00FF,
-	0xB078, 0x19C5,
-	0xB07A, 0x0357,
-	0xB07C, 0x4905,
-	0xB07E, 0x9307,
-	0xB080, 0x1010,
-	0xB082, 0x6306,
-	0xB084, 0xF724,
-	0xB086, 0xDC50,
-	0xB088, 0x0945,
-	0xB08A, 0x8297,
-	0xB08C, 0x9770,
-	0xB08E, 0xFFFB,
-	0xB090, 0xE780,
-	0xB092, 0xC085,
-	0xB094, 0x11C5,
-	0xB096, 0x9770,
-	0xB098, 0xFFFB,
-	0xB09A, 0xE780,
-	0xB09C, 0x2088,
-	0xB09E, 0x55C5,
-	0xB0A0, 0x9760,
-	0xB0A2, 0x00FC,
-	0xB0A4, 0xE780,
-	0xB0A6, 0x405A,
-	0xB0A8, 0xB787,
-	0xB0AA, 0x0024,
-	0xB0AC, 0x83C7,
-	0xB0AE, 0x078C,
-	0xB0B0, 0xAA89,
-	0xB0B2, 0x6392,
-	0xB0B4, 0x071C,
-	0xB0B6, 0xB7D7,
-	0xB0B8, 0x0124,
-	0xB0BA, 0x9387,
-	0xB0BC, 0x07E7,
-	0xB0BE, 0xBC5F,
-	0xB0C0, 0x639A,
-	0xB0C2, 0x0716,
-	0xB0C4, 0x3799,
-	0xB0C6, 0x0124,
-	0xB0C8, 0x1309,
-	0xB0CA, 0x0953,
-	0xB0CC, 0xB727,
-	0xB0CE, 0x0024,
-	0xB0D0, 0x83C7,
-	0xB0D2, 0x7752,
-	0xB0D4, 0x6396,
-	0xB0D6, 0x071E,
-	0xB0D8, 0x0345,
-	0xB0DA, 0xC918,
-	0xB0DC, 0x631D,
-	0xB0DE, 0x051C,
-	0xB0E0, 0xDC50,
-	0xB0E2, 0x0D45,
-	0xB0E4, 0x8297,
-	0xB0E6, 0x4E85,
-	0xB0E8, 0x9760,
-	0xB0EA, 0x00FC,
-	0xB0EC, 0xE780,
-	0xB0EE, 0x005A,
-	0xB0F0, 0x8567,
-	0xB0F2, 0x3E99,
-	0xB0F4, 0x2320,
-	0xB0F6, 0xA9A2,
-	0xB0F8, 0x1374,
-	0xB0FA, 0x0440,
-	0xB0FC, 0x21C4,
-	0xB0FE, 0xB7D7,
-	0xB100, 0x0124,
-	0xB102, 0x9387,
-	0xB104, 0x07C4,
-	0xB106, 0x37A7,
-	0xB108, 0x0124,
-	0xB10A, 0x83D6,
-	0xB10C, 0x670E,
-	0xB10E, 0x1307,
-	0xB110, 0x0753,
-	0xB112, 0x0347,
-	0xB114, 0x179B,
-	0xB116, 0x8506,
-	0xB118, 0x3784,
-	0xB11A, 0x0224,
-	0xB11C, 0x1304,
-	0xB11E, 0xC449,
-	0xB120, 0x1337,
-	0xB122, 0x1700,
-	0xB124, 0x2393,
-	0xB126, 0xD70E,
-	0xB128, 0x230A,
-	0xB12A, 0xE404,
-	0xB12C, 0x9770,
-	0xB12E, 0xFFFB,
-	0xB130, 0xE780,
-	0xB132, 0x40F3,
-	0xB134, 0x6306,
-	0xB136, 0x0510,
-	0xB138, 0x0357,
-	0xB13A, 0x4405,
-	0xB13C, 0x9307,
-	0xB13E, 0x1010,
-	0xB140, 0x6300,
-	0xB142, 0xF710,
-	0xB144, 0xDC50,
-	0xB146, 0x1D45,
-	0xB148, 0x8297,
-	0xB14A, 0x9A50,
-	0xB14C, 0x8A52,
-	0xB14E, 0x7A43,
-	0xB150, 0xEA43,
-	0xB152, 0x5A44,
-	0xB154, 0xCA44,
-	0xB156, 0x3A45,
-	0xB158, 0xAA45,
-	0xB15A, 0x1A46,
-	0xB15C, 0x8A46,
-	0xB15E, 0x7657,
-	0xB160, 0xE657,
-	0xB162, 0x5658,
-	0xB164, 0xC658,
-	0xB166, 0x3659,
-	0xB168, 0xA659,
-	0xB16A, 0x165A,
-	0xB16C, 0x065E,
-	0xB16E, 0xF64E,
-	0xB170, 0x664F,
-	0xB172, 0xD64F,
-	0xB174, 0x1660,
-	0xB176, 0x8660,
-	0xB178, 0x7271,
-	0xB17A, 0xE271,
-	0xB17C, 0x5272,
-	0xB17E, 0xC272,
-	0xB180, 0x3273,
-	0xB182, 0xA273,
-	0xB184, 0x1275,
-	0xB186, 0x8275,
-	0xB188, 0x7266,
-	0xB18A, 0xE266,
-	0xB18C, 0x5267,
-	0xB18E, 0xC267,
-	0xB190, 0x3268,
-	0xB192, 0xA268,
-	0xB194, 0x126E,
-	0xB196, 0x826E,
-	0xB198, 0x072F,
-	0xB19A, 0xC1FF,
-	0xB19C, 0x872F,
-	0xB19E, 0x81FF,
-	0xB1A0, 0x7370,
-	0xB1A2, 0x0430,
-	0xB1A4, 0x7390,
-	0xB1A6, 0x1434,
-	0xB1A8, 0x7310,
-	0xB1AA, 0x2434,
-	0xB1AC, 0x3A54,
-	0xB1AE, 0xAA54,
-	0xB1B0, 0x4D61,
-	0xB1B2, 0x7300,
-	0xB1B4, 0x2030,
-	0xB1B6, 0x37D9,
-	0xB1B8, 0x0124,
-	0xB1BA, 0x1309,
-	0xB1BC, 0x09C4,
-	0xB1BE, 0x8357,
-	0xB1C0, 0x490E,
-	0xB1C2, 0xB764,
-	0xB1C4, 0x0124,
-	0xB1C6, 0x9384,
-	0xB1C8, 0x0440,
-	0xB1CA, 0xD850,
-	0xB1CC, 0x8507,
-	0xB1CE, 0x0145,
-	0xB1D0, 0x2312,
-	0xB1D2, 0xF90E,
-	0xB1D4, 0x0297,
-	0xB1D6, 0x9760,
-	0xB1D8, 0xFFFB,
-	0xB1DA, 0xE780,
-	0xB1DC, 0x2071,
-	0xB1DE, 0x25E5,
-	0xB1E0, 0xB729,
-	0xB1E2, 0x0024,
-	0xB1E4, 0x3799,
-	0xB1E6, 0x0124,
-	0xB1E8, 0x9389,
-	0xB1EA, 0x0933,
-	0xB1EC, 0x1309,
-	0xB1EE, 0x0953,
-	0xB1F0, 0x056A,
-	0xB1F2, 0x83C7,
-	0xB1F4, 0x791F,
-	0xB1F6, 0x4A9A,
-	0xB1F8, 0x2320,
-	0xB1FA, 0x0AA2,
-	0xB1FC, 0xB9EF,
-	0xB1FE, 0x0345,
-	0xB200, 0xC918,
-	0xB202, 0x2DE5,
-	0xB204, 0x83C7,
-	0xB206, 0x0920,
-	0xB208, 0x89C7,
-	0xB20A, 0x0327,
-	0xB20C, 0x4AB3,
-	0xB20E, 0x630A,
-	0xB210, 0xF700,
-	0xB212, 0x97E0,
-	0xB214, 0x00FC,
-	0xB216, 0xE780,
-	0xB218, 0xE0D2,
-	0xB21A, 0xDC50,
-	0xB21C, 0x0545,
-	0xB21E, 0x8297,
-	0xB220, 0x29BD,
-	0xB222, 0x01A0,
-	0xB224, 0x8547,
-	0xB226, 0x230A,
-	0xB228, 0x0904,
-	0xB22A, 0xA30A,
-	0xB22C, 0x0904,
-	0xB22E, 0x2328,
-	0xB230, 0xF904,
-	0xB232, 0x3DBD,
-	0xB234, 0x7D55,
-	0xB236, 0x9770,
-	0xB238, 0x01FC,
-	0xB23A, 0xE780,
-	0xB23C, 0xA004,
-	0xB23E, 0x59B5,
-	0xB240, 0xEFE0,
-	0xB242, 0x5FD9,
-	0xB244, 0x01B7,
-	0xB246, 0x9760,
-	0xB248, 0xFFFB,
-	0xB24A, 0xE780,
-	0xB24C, 0x206D,
-	0xB24E, 0x49F9,
-	0xB250, 0x8357,
-	0xB252, 0x490E,
-	0xB254, 0x858B,
-	0xB256, 0xC9F7,
-	0xB258, 0xCDBD,
-	0xB25A, 0x9770,
-	0xB25C, 0x01FC,
-	0xB25E, 0xE780,
-	0xB260, 0x2003,
-	0xB262, 0x2311,
-	0xB264, 0xA94E,
-	0xB266, 0x0345,
-	0xB268, 0xC918,
-	0xB26A, 0x49DD,
-	0xB26C, 0x97C0,
-	0xB26E, 0xFFFB,
-	0xB270, 0xE780,
-	0xB272, 0x40B4,
-	0xB274, 0x41BF,
-	0xB276, 0x9770,
-	0xB278, 0x01FC,
-	0xB27A, 0xE780,
-	0xB27C, 0x6001,
-	0xB27E, 0x3799,
-	0xB280, 0x0124,
-	0xB282, 0x1309,
-	0xB284, 0x0953,
-	0xB286, 0x8D67,
-	0xB288, 0xCA97,
-	0xB28A, 0x03C7,
-	0xB28C, 0xD76F,
-	0xB28E, 0x232E,
-	0xB290, 0xA94E,
-	0xB292, 0x8547,
-	0xB294, 0x6306,
-	0xB296, 0xF700,
-	0xB298, 0x8327,
-	0xB29A, 0x094F,
-	0xB29C, 0xE377,
-	0xB29E, 0xF5EA,
-	0xB2A0, 0x9760,
-	0xB2A2, 0x00FC,
-	0xB2A4, 0xE780,
-	0xB2A6, 0x80FC,
-	0xB2A8, 0x9770,
-	0xB2AA, 0x01FC,
-	0xB2AC, 0xE780,
-	0xB2AE, 0x40FE,
-	0xB2B0, 0x2320,
-	0xB2B2, 0xA950,
-	0xB2B4, 0x21BD,
-	0xB2B6, 0x97C0,
-	0xB2B8, 0xFFFB,
-	0xB2BA, 0xE780,
-	0xB2BC, 0xA0B2,
-	0xB2BE, 0x0DB5,
-	0xB2C0, 0x9770,
-	0xB2C2, 0x01FC,
-	0xB2C4, 0xE780,
-	0xB2C6, 0xC0FC,
-	0xB2C8, 0x2312,
-	0xB2CA, 0xA94E,
-	0xB2CC, 0x31B5,
-	0xB2CE, 0xEFE0,
-	0xB2D0, 0x7FD0,
-	0xB2D2, 0x55BB,
-	0xB2D4, 0x1743,
-	0xB2D6, 0x02FC,
-	0xB2D8, 0xE702,
-	0xB2DA, 0xC31E,
-	0xB2DC, 0x2A84,
-	0xB2DE, 0xEFD0,
-	0xB2E0, 0xBFA7,
-	0xB2E2, 0x8947,
-	0xB2E4, 0x6306,
-	0xB2E6, 0xF400,
-	0xB2E8, 0x1743,
-	0xB2EA, 0x02FC,
-	0xB2EC, 0x6700,
-	0xB2EE, 0xC31F,
-	0xB2F0, 0xB7E7,
-	0xB2F2, 0x0024,
-	0xB2F4, 0x03D7,
-	0xB2F6, 0xC7C8,
-	0xB2F8, 0x8564,
-	0xB2FA, 0x9387,
-	0xB2FC, 0xF4B3,
-	0xB2FE, 0xE315,
-	0xB300, 0xF7FE,
-	0xB302, 0x37A9,
-	0xB304, 0x0224,
-	0xB306, 0x1309,
-	0xB308, 0x8954,
-	0xB30A, 0x8347,
-	0xB30C, 0x190C,
-	0xB30E, 0xE9FF,
-	0xB310, 0x9770,
-	0xB312, 0xFFFB,
-	0xB314, 0xE780,
-	0xB316, 0x00E3,
-	0xB318, 0x61F9,
-	0xB31A, 0x9770,
-	0xB31C, 0xFFFB,
-	0xB31E, 0xE780,
-	0xB320, 0xA0E3,
-	0xB322, 0x79F1,
-	0xB324, 0x3725,
-	0xB326, 0x0224,
-	0xB328, 0x1305,
-	0xB32A, 0x05ED,
-	0xB32C, 0x9700,
-	0xB32E, 0xFFFB,
-	0xB330, 0xE780,
-	0xB332, 0x80FA,
-	0xB334, 0xB797,
-	0xB336, 0x0124,
-	0xB338, 0x3767,
-	0xB33A, 0x0124,
-	0xB33C, 0x0327,
-	0xB33E, 0x0740,
-	0xB340, 0x9387,
-	0xB342, 0x0753,
-	0xB344, 0xA697,
-	0xB346, 0x8544,
-	0xB348, 0x1D45,
-	0xB34A, 0x238D,
-	0xB34C, 0x97CE,
-	0xB34E, 0x0297,
-	0xB350, 0xA300,
-	0xB352, 0x990C,
-	0xB354, 0x9780,
-	0xB356, 0x01FC,
-	0xB358, 0xE780,
-	0xB35A, 0x0083,
-	0xB35C, 0x51F5,
-	0xB35E, 0xB727,
-	0xB360, 0x0124,
-	0xB362, 0x2380,
-	0xB364, 0x8754,
-	0xB366, 0x97B0,
-	0xB368, 0xFEFB,
-	0xB36A, 0xE780,
-	0xB36C, 0x6002,
-	0xB36E, 0x2301,
-	0xB370, 0x990C,
-	0xB372, 0x9DBF,
-	0xB374, 0x1743,
-	0xB376, 0x02FC,
-	0xB378, 0xE702,
-	0xB37A, 0xC314,
-	0xB37C, 0x37A4,
-	0xB37E, 0x0224,
-	0xB380, 0x1304,
-	0xB382, 0x8454,
-	0xB384, 0x0347,
-	0xB386, 0x240C,
-	0xB388, 0x8547,
-	0xB38A, 0x630A,
-	0xB38C, 0xF700,
-	0xB38E, 0x97B0,
-	0xB390, 0xFEFB,
-	0xB392, 0xE780,
-	0xB394, 0xE069,
-	0xB396, 0x1743,
-	0xB398, 0x02FC,
-	0xB39A, 0x6700,
-	0xB39C, 0xE314,
-	0xB39E, 0x9770,
-	0xB3A0, 0x01FC,
-	0xB3A2, 0xE780,
-	0xB3A4, 0x607E,
-	0xB3A6, 0x65F5,
-	0xB3A8, 0x97B0,
-	0xB3AA, 0xFEFB,
-	0xB3AC, 0xE780,
-	0xB3AE, 0x800F,
-	0xB3B0, 0x2301,
-	0xB3B2, 0x040C,
-	0xB3B4, 0xE9BF,
-	0xB3B6, 0x0100,
-	0xB3B8, 0x1743,
-	0xB3BA, 0x02FC,
-	0xB3BC, 0xE702,
-	0xB3BE, 0x8310,
-	0xB3C0, 0x9D47,
-	0xB3C2, 0x631F,
-	0xB3C4, 0xF500,
-	0xB3C6, 0x3794,
-	0xB3C8, 0x0124,
-	0xB3CA, 0x1304,
-	0xB3CC, 0x0453,
-	0xB3CE, 0x8567,
-	0xB3D0, 0xA297,
-	0xB3D2, 0x83C7,
-	0xB3D4, 0xA7CF,
-	0xB3D6, 0x9DE7,
-	0xB3D8, 0x1743,
-	0xB3DA, 0x02FC,
-	0xB3DC, 0x6700,
-	0xB3DE, 0xC310,
-	0xB3E0, 0x2A84,
-	0xB3E2, 0xEFD0,
-	0xB3E4, 0x7FDD,
-	0xB3E6, 0x8547,
-	0xB3E8, 0xE318,
-	0xB3EA, 0xF4FE,
-	0xB3EC, 0xB7E7,
-	0xB3EE, 0x0124,
-	0xB3F0, 0x9387,
-	0xB3F2, 0x074C,
-	0xB3F4, 0x23AE,
-	0xB3F6, 0x0710,
-	0xB3F8, 0x23A4,
-	0xB3FA, 0x077E,
-	0xB3FC, 0x1743,
-	0xB3FE, 0x02FC,
-	0xB400, 0x6700,
-	0xB402, 0x830E,
-	0xB404, 0x9770,
-	0xB406, 0xFFFB,
-	0xB408, 0xE780,
-	0xB40A, 0xC0D3,
-	0xB40C, 0x71F5,
-	0xB40E, 0x9770,
-	0xB410, 0xFFFB,
-	0xB412, 0xE780,
-	0xB414, 0x60D4,
-	0xB416, 0x69F1,
-	0xB418, 0x8D67,
-	0xB41A, 0x3E94,
-	0xB41C, 0x8327,
-	0xB41E, 0x846D,
-	0xB420, 0xB724,
-	0xB422, 0x0124,
-	0xB424, 0x9384,
-	0xB426, 0x045F,
-	0xB428, 0x91EF,
-	0xB42A, 0x83A7,
-	0xB42C, 0x440E,
-	0xB42E, 0x99CB,
-	0xB430, 0xB7D7,
-	0xB432, 0x0124,
-	0xB434, 0x83C7,
-	0xB436, 0x07FA,
-	0xB438, 0xC5D3,
-	0xB43A, 0x9700,
-	0xB43C, 0xFFFB,
-	0xB43E, 0xE780,
-	0xB440, 0x20E3,
-	0xB442, 0x59BF,
-	0xB444, 0x83A7,
-	0xB446, 0xC40A,
-	0xB448, 0xC1DB,
-	0xB44A, 0x0545,
-	0xB44C, 0x9730,
-	0xB44E, 0xFEFB,
-	0xB450, 0xE780,
-	0xB452, 0x8051,
-	0xB454, 0xB735,
-	0xB456, 0x202D,
-	0xB458, 0x7578,
-	0xB45A, 0x37F5,
-	0xB45C, 0x202D,
-	0xB45E, 0x9385,
-	0xB460, 0x0560,
-	0xB462, 0x1308,
-	0xB464, 0x08A0,
-	0xB466, 0x9168,
-	0xB468, 0x1305,
-	0xB46A, 0x0560,
-	0xB46C, 0xB387,
-	0xB46E, 0x0501,
-	0xB470, 0x03C7,
-	0xB472, 0x0700,
-	0xB474, 0x9306,
-	0xB476, 0xF00F,
-	0xB478, 0x1316,
-	0xB47A, 0x8701,
-	0xB47C, 0x6186,
-	0xB47E, 0x0607,
-	0xB480, 0x6344,
-	0xB482, 0x0600,
-	0xB484, 0x9376,
-	0xB486, 0xF70F,
-	0xB488, 0x2380,
-	0xB48A, 0xD700,
-	0xB48C, 0x8507,
-	0xB48E, 0xE391,
-	0xB490, 0xB7FE,
-	0xB492, 0xB385,
-	0xB494, 0x1701,
-	0xB496, 0xE39B,
-	0xB498, 0xA5FC,
-	0xB49A, 0xB7A7,
-	0xB49C, 0x0224,
-	0xB49E, 0x0547,
-	0xB4A0, 0x0145,
-	0xB4A2, 0xA384,
-	0xB4A4, 0xE760,
-	0xB4A6, 0x9730,
-	0xB4A8, 0xFEFB,
-	0xB4AA, 0xE780,
-	0xB4AC, 0xE04B,
-	0xB4AE, 0xB7D7,
-	0xB4B0, 0x0124,
-	0xB4B2, 0x83C7,
-	0xB4B4, 0x07FA,
-	0xB4B6, 0x8DD3,
-	0xB4B8, 0x8327,
-	0xB4BA, 0x846D,
-	0xB4BC, 0x91FF,
-	0xB4BE, 0x83A7,
-	0xB4C0, 0x440E,
-	0xB4C2, 0x99DB,
-	0xB4C4, 0x9DBF,
-	0xB4C6, 0x0100,
-	0xB4C8, 0x1743,
-	0xB4CA, 0x02FC,
-	0xB4CC, 0xE702,
-	0xB4CE, 0x83FF,
-	0xB4D0, 0xB7D7,
-	0xB4D2, 0x0124,
-	0xB4D4, 0x9387,
-	0xB4D6, 0x07F4,
-	0xB4D8, 0x03C7,
-	0xB4DA, 0x1705,
-	0xB4DC, 0x2A84,
-	0xB4DE, 0x11C7,
-	0xB4E0, 0x03C7,
-	0xB4E2, 0x1700,
-	0xB4E4, 0x8947,
-	0xB4E6, 0x6307,
-	0xB4E8, 0xF704,
-	0xB4EA, 0xB7E7,
-	0xB4EC, 0x0124,
-	0xB4EE, 0x9387,
-	0xB4F0, 0x0787,
-	0xB4F2, 0x83A4,
-	0xB4F4, 0x870F,
-	0xB4F6, 0x03A9,
-	0xB4F8, 0xC70F,
-	0xB4FA, 0x0146,
-	0xB4FC, 0xA685,
-	0xB4FE, 0x4A85,
-	0xB500, 0x9730,
-	0xB502, 0x01FC,
-	0xB504, 0xE780,
-	0xB506, 0x4054,
-	0xB508, 0x2285,
-	0xB50A, 0x97D0,
-	0xB50C, 0xFEFB,
-	0xB50E, 0xE780,
-	0xB510, 0x20D7,
-	0xB512, 0x4A85,
-	0xB514, 0x0546,
-	0xB516, 0xA685,
-	0xB518, 0x9730,
-	0xB51A, 0x01FC,
-	0xB51C, 0xE780,
-	0xB51E, 0xC052,
-	0xB520, 0xB7C7,
-	0xB522, 0x0224,
-	0xB524, 0x83A7,
-	0xB526, 0x07B7,
-	0xB528, 0x1145,
-	0xB52A, 0x8297,
-	0xB52C, 0x1743,
-	0xB52E, 0x02FC,
-	0xB530, 0x6700,
-	0xB532, 0x83FB,
-	0xB534, 0xB7E7,
-	0xB536, 0x0024,
-	0xB538, 0x83D6,
-	0xB53A, 0xC7C8,
-	0xB53C, 0x8567,
-	0xB53E, 0x1387,
-	0xB540, 0xF7B3,
-	0xB542, 0xE394,
-	0xB544, 0xE6FA,
-	0xB546, 0x3797,
-	0xB548, 0x0124,
-	0xB54A, 0x1307,
-	0xB54C, 0x0753,
-	0xB54E, 0xBA97,
-	0xB550, 0x03A5,
-	0xB552, 0x07B2,
-	0xB554, 0x8145,
-	0xB556, 0x3325,
-	0xB558, 0xA000,
-	0xB55A, 0x97D0,
-	0xB55C, 0x00FC,
-	0xB55E, 0xE780,
-	0xB560, 0x60BB,
-	0xB562, 0x61B7,
-	0xB564, 0x1743,
-	0xB566, 0x02FC,
-	0xB568, 0xE702,
-	0xB56A, 0xC3F5,
-	0xB56C, 0x9760,
-	0xB56E, 0xFFFB,
-	0xB570, 0xE780,
-	0xB572, 0xC037,
-	0xB574, 0x11C5,
-	0xB576, 0xB7E7,
-	0xB578, 0x0024,
-	0xB57A, 0x83C7,
-	0xB57C, 0xC784,
-	0xB57E, 0xBDEF,
-	0xB580, 0x1384,
-	0xB582, 0x81E7,
-	0xB584, 0x0347,
-	0xB586, 0x8400,
-	0xB588, 0x8547,
-	0xB58A, 0x6303,
-	0xB58C, 0xF706,
-	0xB58E, 0x0357,
-	0xB590, 0x2403,
-	0xB592, 0xB767,
-	0xB594, 0x0040,
-	0xB596, 0x2398,
-	0xB598, 0xE718,
-	0xB59A, 0x8357,
-	0xB59C, 0x4403,
-	0xB59E, 0x3767,
-	0xB5A0, 0x0040,
-	0xB5A2, 0x2314,
-	0xB5A4, 0xF720,
-	0xB5A6, 0x9760,
-	0xB5A8, 0xFFFB,
-	0xB5AA, 0xE780,
-	0xB5AC, 0x2034,
-	0xB5AE, 0x19C5,
-	0xB5B0, 0xB7E7,
-	0xB5B2, 0x0024,
-	0xB5B4, 0x03C7,
-	0xB5B6, 0xC784,
-	0xB5B8, 0x8147,
-	0xB5BA, 0x09EB,
-	0xB5BC, 0x8346,
-	0xB5BE, 0x8400,
-	0xB5C0, 0x0547,
-	0xB5C2, 0x8147,
-	0xB5C4, 0x6384,
-	0xB5C6, 0xE600,
-	0xB5C8, 0x8357,
-	0xB5CA, 0xC405,
-	0xB5CC, 0x37A7,
-	0xB5CE, 0x0040,
-	0xB5D0, 0x2312,
-	0xB5D2, 0xF710,
-	0xB5D4, 0x9770,
-	0xB5D6, 0xFFFB,
-	0xB5D8, 0xE780,
-	0xB5DA, 0xC0B6,
-	0xB5DC, 0x35C1,
-	0xB5DE, 0x9770,
-	0xB5E0, 0xFFFB,
-	0xB5E2, 0xE780,
-	0xB5E4, 0x60B7,
-	0xB5E6, 0x05C9,
-	0xB5E8, 0x1743,
-	0xB5EA, 0x02FC,
-	0xB5EC, 0x6700,
-	0xB5EE, 0xC3EF,
-	0xB5F0, 0xB767,
-	0xB5F2, 0x0040,
-	0xB5F4, 0x2398,
-	0xB5F6, 0x0718,
-	0xB5F8, 0x8147,
-	0xB5FA, 0x55B7,
-	0xB5FC, 0xB767,
-	0xB5FE, 0x0040,
-	0xB600, 0x2398,
-	0xB602, 0x0718,
-	0xB604, 0x1384,
-	0xB606, 0x81E7,
-	0xB608, 0x8346,
-	0xB60A, 0x8400,
-	0xB60C, 0x0547,
-	0xB60E, 0x8147,
-	0xB610, 0xE395,
-	0xB612, 0xE6F8,
-	0xB614, 0x69B7,
-	0xB616, 0x9760,
-	0xB618, 0xFFFB,
-	0xB61A, 0xE780,
-	0xB61C, 0x202D,
-	0xB61E, 0x31ED,
-	0xB620, 0x8346,
-	0xB622, 0x8400,
-	0xB624, 0x0547,
-	0xB626, 0x8147,
-	0xB628, 0x6384,
-	0xB62A, 0xE600,
-	0xB62C, 0x8357,
-	0xB62E, 0x4408,
-	0xB630, 0x3787,
-	0xB632, 0x0040,
-	0xB634, 0x2314,
-	0xB636, 0xF710,
-	0xB638, 0x1743,
-	0xB63A, 0x02FC,
-	0xB63C, 0x6700,
-	0xB63E, 0xC3EA,
-	0xB640, 0x9770,
-	0xB642, 0xFFFB,
-	0xB644, 0xE780,
-	0xB646, 0x40B1,
-	0xB648, 0x59F9,
-	0xB64A, 0x9760,
-	0xB64C, 0xFFFB,
-	0xB64E, 0xE780,
-	0xB650, 0xE029,
-	0xB652, 0x19C5,
-	0xB654, 0xB7E7,
-	0xB656, 0x0024,
-	0xB658, 0x03C7,
-	0xB65A, 0xC784,
-	0xB65C, 0x8147,
-	0xB65E, 0x09EB,
-	0xB660, 0x8346,
-	0xB662, 0x8400,
-	0xB664, 0x0547,
-	0xB666, 0x8147,
-	0xB668, 0x6384,
-	0xB66A, 0xE600,
-	0xB66C, 0x8357,
-	0xB66E, 0x6407,
-	0xB670, 0x3707,
-	0xB672, 0x0140,
-	0xB674, 0x2314,
-	0xB676, 0xF710,
-	0xB678, 0x9DB7,
-	0xB67A, 0xB7E7,
-	0xB67C, 0x0024,
-	0xB67E, 0x03C7,
-	0xB680, 0xC784,
-	0xB682, 0x8147,
-	0xB684, 0x55F7,
-	0xB686, 0x69BF,
-	0xB688, 0x1743,
-	0xB68A, 0x02FC,
-	0xB68C, 0xE702,
-	0xB68E, 0x03E1,
-	0xB690, 0x4111,
-	0xB692, 0x3A84,
-	0xB694, 0x22E6,
-	0xB696, 0x26E4,
-	0xB698, 0x4AE2,
-	0xB69A, 0x4EE0,
-	0xB69C, 0xAA84,
-	0xB69E, 0x3689,
-	0xB6A0, 0x97A0,
-	0xB6A2, 0xFEFB,
-	0xB6A4, 0xE780,
-	0xB6A6, 0x8066,
-	0xB6A8, 0xB727,
-	0xB6AA, 0x0224,
-	0xB6AC, 0x9387,
-	0xB6AE, 0x076B,
-	0xB6B0, 0xA297,
-	0xB6B2, 0x0567,
-	0xB6B4, 0xBA97,
-	0xB6B6, 0x83C7,
-	0xB6B8, 0x078D,
-	0xB6BA, 0x639D,
-	0xB6BC, 0x0718,
-	0xB6BE, 0x83C7,
-	0xB6C0, 0x0400,
-	0xB6C2, 0x6399,
-	0xB6C4, 0x0718,
-	0xB6C6, 0xB7A7,
-	0xB6C8, 0x0224,
-	0xB6CA, 0x9389,
-	0xB6CC, 0x8754,
-	0xB6CE, 0x03C7,
-	0xB6D0, 0x9905,
-	0xB6D2, 0x6301,
-	0xB6D4, 0x0718,
-	0xB6D6, 0x03CA,
-	0xB6D8, 0xA905,
-	0xB6DA, 0x03D6,
-	0xB6DC, 0xA90B,
-	0xB6DE, 0x37E7,
-	0xB6E0, 0x0124,
-	0xB6E2, 0x0355,
-	0xB6E4, 0x675F,
-	0xB6E6, 0x9387,
-	0xB6E8, 0x8754,
-	0xB6EA, 0x0147,
-	0xB6EC, 0xA145,
-	0xB6EE, 0x6369,
-	0xB6F0, 0xA622,
-	0xB6F2, 0x83D6,
-	0xB6F4, 0xC70A,
-	0xB6F6, 0x8907,
-	0xB6F8, 0x63F1,
-	0xB6FA, 0xA626,
-	0xB6FC, 0x0507,
-	0xB6FE, 0xE318,
-	0xB700, 0xB7FE,
-	0xB702, 0x37CB,
-	0xB704, 0x0224,
-	0xB706, 0x5309,
-	0xB708, 0x00F0,
-	0xB70A, 0x8727,
-	0xB70C, 0x8BB7,
-	0xB70E, 0x9D46,
-	0xB710, 0x4379,
-	0xB712, 0xF990,
-	0xB714, 0x1307,
-	0xB716, 0x0705,
-	0xB718, 0x0607,
-	0xB71A, 0x4E97,
-	0xB71C, 0x8357,
-	0xB71E, 0xC700,
-	0xB720, 0x118D,
-	0xB722, 0x5377,
-	0xB724, 0x05D0,
-	0xB726, 0x918F,
-	0xB728, 0xD3F7,
-	0xB72A, 0x07D0,
-	0xB72C, 0x9317,
-	0xB72E, 0x3A00,
-	0xB730, 0xB697,
-	0xB732, 0x5377,
-	0xB734, 0xF718,
-	0xB736, 0x9387,
-	0xB738, 0x8702,
-	0xB73A, 0x8607,
-	0xB73C, 0xCE97,
-	0xB73E, 0x83D7,
-	0xB740, 0xC700,
-	0xB742, 0x0726,
-	0xB744, 0x8BB7,
-	0xB746, 0x13F7,
-	0xB748, 0xF70F,
-	0xB74A, 0xA183,
-	0xB74C, 0xD377,
-	0xB74E, 0x07D0,
-	0xB750, 0xD3F6,
-	0xB752, 0x07D0,
-	0xB754, 0xC3F7,
-	0xB756, 0xC768,
-	0xB758, 0x5379,
-	0xB75A, 0xF908,
-	0xB75C, 0x4379,
-	0xB75E, 0xE978,
-	0xB760, 0x9770,
-	0xB762, 0xFFFB,
-	0xB764, 0xE780,
-	0xB766, 0xC08A,
-	0xB768, 0xAA8A,
-	0xB76A, 0x93DA,
-	0xB76C, 0x8A40,
-	0xB76E, 0x9770,
-	0xB770, 0xFFFB,
-	0xB772, 0xE780,
-	0xB774, 0xE089,
-	0xB776, 0xC20A,
-	0xB778, 0x9307,
-	0xB77A, 0x8A04,
-	0xB77C, 0x1375,
-	0xB77E, 0xF50F,
-	0xB780, 0x93DA,
-	0xB782, 0x0A41,
-	0xB784, 0xD3F7,
-	0xB786, 0x0AD0,
-	0xB788, 0xD374,
-	0xB78A, 0x05D0,
-	0xB78C, 0x0727,
-	0xB78E, 0x8BB7,
-	0xB790, 0x8607,
-	0xB792, 0xCE97,
-	0xB794, 0x03DC,
-	0xB796, 0xC700,
-	0xB798, 0xC3F4,
-	0xB79A, 0xE478,
-	0xB79C, 0xDC4C,
-	0xB79E, 0x5374,
-	0xB7A0, 0x0CD0,
-	0xB7A2, 0xD307,
-	0xB7A4, 0x00F0,
-	0xB7A6, 0x83D4,
-	0xB7A8, 0xC700,
-	0xB7AA, 0x53F4,
-	0xB7AC, 0x8408,
-	0xB7AE, 0x130A,
-	0xB7B0, 0x0A05,
-	0xB7B2, 0x060A,
-	0xB7B4, 0x4E9A,
-	0xB7B6, 0x035A,
-	0xB7B8, 0x4A00,
-	0xB7BA, 0xD317,
-	0xB7BC, 0xF4A0,
-	0xB7BE, 0x99C3,
-	0xB7C0, 0x5314,
-	0xB7C2, 0x8420,
-	0xB7C4, 0xB7CB,
-	0xB7C6, 0x0224,
-	0xB7C8, 0x83A7,
-	0xB7CA, 0x0BB7,
-	0xB7CC, 0x0D45,
-	0xB7CE, 0x8297,
-	0xB7D0, 0xD397,
-	0xB7D2, 0x14C0,
-	0xB7D4, 0xC207,
-	0xB7D6, 0xC183,
-	0xB7D8, 0x6395,
-	0xB7DA, 0x870B,
-	0xB7DC, 0xB747,
-	0xB7DE, 0x0124,
-	0xB7E0, 0x9387,
-	0xB7E2, 0x0727,
-	0xB7E4, 0x03D7,
-	0xB7E6, 0x6712,
-	0xB7E8, 0x83D6,
-	0xB7EA, 0xE710,
-	0xB7EC, 0x8947,
-	0xB7EE, 0x7D17,
-	0xB7F0, 0xB397,
-	0xB7F2, 0xE700,
-	0xB7F4, 0xD3F7,
-	0xB7F6, 0x07D0,
-	0xB7F8, 0x53F7,
-	0xB7FA, 0x16D0,
-	0xB7FC, 0x5304,
-	0xB7FE, 0x00F0,
-	0xB800, 0xD3F7,
-	0xB802, 0x2711,
-	0xB804, 0x37CA,
-	0xB806, 0x0224,
-	0xB808, 0xD3F7,
-	0xB80A, 0xE718,
-	0xB80C, 0xB7C7,
-	0xB80E, 0x0224,
-	0xB810, 0x07A7,
-	0xB812, 0xC7B7,
-	0xB814, 0x83A7,
-	0xB816, 0x0BB7,
-	0xB818, 0x2545,
-	0xB81A, 0xD3F7,
-	0xB81C, 0xE700,
-	0xB81E, 0xD39A,
-	0xB820, 0x17C0,
-	0xB822, 0x8297,
-	0xB824, 0x8727,
-	0xB826, 0x0AB8,
-	0xB828, 0xC20A,
-	0xB82A, 0x93DA,
-	0xB82C, 0x0A01,
-	0xB82E, 0x5374,
-	0xB830, 0xF410,
-	0xB832, 0xD694,
-	0xB834, 0xC204,
-	0xB836, 0x2393,
-	0xB838, 0x590D,
-	0xB83A, 0xC180,
-	0xB83C, 0xD317,
-	0xB83E, 0x14C0,
-	0xB840, 0x2392,
-	0xB842, 0xF90C,
-	0xB844, 0xB707,
-	0xB846, 0x0040,
-	0xB848, 0x19EC,
-	0xB84A, 0x9387,
-	0xB84C, 0xE703,
-	0xB84E, 0xCA97,
-	0xB850, 0x2390,
-	0xB852, 0x9700,
-	0xB854, 0x3264,
-	0xB856, 0xA264,
-	0xB858, 0x1269,
-	0xB85A, 0x8269,
-	0xB85C, 0x4101,
-	0xB85E, 0x1743,
-	0xB860, 0x02FC,
-	0xB862, 0x6700,
-	0xB864, 0x23C7,
-	0xB866, 0x9387,
-	0xB868, 0x0704,
-	0xB86A, 0x3264,
-	0xB86C, 0xA264,
-	0xB86E, 0x1269,
-	0xB870, 0x8269,
-	0xB872, 0xCA97,
-	0xB874, 0x2390,
-	0xB876, 0x9700,
-	0xB878, 0x4101,
-	0xB87A, 0x1743,
-	0xB87C, 0x02FC,
-	0xB87E, 0x6700,
-	0xB880, 0x63C5,
-	0xB882, 0x9377,
-	0xB884, 0xFA0F,
-	0xB886, 0x135A,
-	0xB888, 0x8A00,
-	0xB88A, 0x8729,
-	0xB88C, 0x8BB7,
-	0xB88E, 0xD3F7,
-	0xB890, 0x07D0,
-	0xB892, 0xD376,
-	0xB894, 0x0AD0,
-	0xB896, 0x37CA,
-	0xB898, 0x0224,
-	0xB89A, 0x0727,
-	0xB89C, 0x0AB8,
-	0xB89E, 0xC3F7,
-	0xB8A0, 0x3769,
-	0xB8A2, 0x5374,
-	0xB8A4, 0xF418,
-	0xB8A6, 0x5374,
-	0xB8A8, 0xE410,
-	0xB8AA, 0x531B,
-	0xB8AC, 0x14C0,
-	0xB8AE, 0x420B,
-	0xB8B0, 0x135B,
-	0xB8B2, 0x0B01,
-	0xB8B4, 0x5A85,
-	0xB8B6, 0x9760,
-	0xB8B8, 0x00FC,
-	0xB8BA, 0xE780,
-	0xB8BC, 0xA01A,
-	0xB8BE, 0xAA8A,
-	0xB8C0, 0x5A85,
-	0xB8C2, 0x9760,
-	0xB8C4, 0x00FC,
-	0xB8C6, 0xE780,
-	0xB8C8, 0xE019,
-	0xB8CA, 0x93DA,
-	0xB8CC, 0x8A00,
-	0xB8CE, 0xD397,
-	0xB8D0, 0x04C0,
-	0xB8D2, 0xC20A,
-	0xB8D4, 0x1375,
-	0xB8D6, 0xF50F,
-	0xB8D8, 0x93DA,
-	0xB8DA, 0x0A01,
-	0xB8DC, 0x5374,
-	0xB8DE, 0x05D0,
-	0xB8E0, 0xD3F7,
-	0xB8E2, 0x0AD0,
-	0xB8E4, 0xC207,
-	0xB8E6, 0xC187,
-	0xB8E8, 0x4374,
-	0xB8EA, 0x3479,
-	0xB8EC, 0x63D7,
-	0xB8EE, 0x8703,
-	0xB8F0, 0x5374,
-	0xB8F2, 0x8918,
-	0xB8F4, 0xB747,
-	0xB8F6, 0x0124,
-	0xB8F8, 0x9387,
-	0xB8FA, 0x0727,
-	0xB8FC, 0x03D7,
-	0xB8FE, 0x6712,
-	0xB900, 0x83D6,
-	0xB902, 0xE710,
-	0xB904, 0x8947,
-	0xB906, 0x7D17,
-	0xB908, 0xB397,
-	0xB90A, 0xE700,
-	0xB90C, 0xD3F7,
-	0xB90E, 0x07D0,
-	0xB910, 0x53F7,
-	0xB912, 0x16D0,
-	0xB914, 0xD3F7,
-	0xB916, 0x8710,
-	0xB918, 0xC5BD,
-	0xB91A, 0x5374,
-	0xB91C, 0x8910,
-	0xB91E, 0xD9BF,
-	0xB920, 0x9317,
-	0xB922, 0x4A00,
-	0xB924, 0xCE97,
-	0xB926, 0x83D7,
-	0xB928, 0xA706,
-	0xB92A, 0x93F6,
-	0xB92C, 0xF70F,
-	0xB92E, 0x37CB,
-	0xB930, 0x0224,
-	0xB932, 0xA183,
-	0xB934, 0x53F9,
-	0xB936, 0x06D0,
-	0xB938, 0xD3F7,
-	0xB93A, 0x07D0,
-	0xB93C, 0x0727,
-	0xB93E, 0x8BB7,
-	0xB940, 0x4379,
-	0xB942, 0xE978,
-	0xB944, 0xE30E,
-	0xB946, 0x07E0,
-	0xB948, 0x9307,
-	0xB94A, 0xF704,
-	0xB94C, 0x8607,
-	0xB94E, 0xCE97,
-	0xB950, 0x03D6,
-	0xB952, 0xC700,
-	0xB954, 0x9306,
-	0xB956, 0xF7FF,
-	0xB958, 0x75BB,
-	0xB95A, 0x9317,
-	0xB95C, 0x3A00,
-	0xB95E, 0xBA97,
-	0xB960, 0x9387,
-	0xB962, 0x8702,
-	0xB964, 0x8607,
-	0xB966, 0xCE97,
-	0xB968, 0x83D7,
-	0xB96A, 0xC700,
-	0xB96C, 0x7DBF,
-	0xB96E, 0x0100,
-	0xB970, 0x1743,
-	0xB972, 0x02FC,
-	0xB974, 0xE702,
-	0xB976, 0x63B3,
-	0xB978, 0xB747,
-	0xB97A, 0x0124,
-	0xB97C, 0x03D7,
-	0xB97E, 0xC7E1,
-	0xB980, 0x8947,
-	0xB982, 0x2A84,
-	0xB984, 0xAE84,
-	0xB986, 0x6319,
-	0xB988, 0xF700,
-	0xB98A, 0xB7A7,
-	0xB98C, 0x0124,
-	0xB98E, 0x03A7,
-	0xB990, 0x4706,
-	0xB992, 0xFD57,
-	0xB994, 0x6304,
-	0xB996, 0xF704,
-	0xB998, 0xB7E7,
-	0xB99A, 0x0124,
-	0xB99C, 0x9387,
-	0xB99E, 0x0787,
-	0xB9A0, 0x03A9,
-	0xB9A2, 0x8710,
-	0xB9A4, 0x83A9,
-	0xB9A6, 0xC710,
-	0xB9A8, 0x0146,
-	0xB9AA, 0xCA85,
-	0xB9AC, 0x4E85,
-	0xB9AE, 0x9730,
-	0xB9B0, 0x01FC,
-	0xB9B2, 0xE780,
-	0xB9B4, 0x6009,
-	0xB9B6, 0xA685,
-	0xB9B8, 0x2285,
-	0xB9BA, 0x97C0,
-	0xB9BC, 0x00FC,
-	0xB9BE, 0xE780,
-	0xB9C0, 0x6075,
-	0xB9C2, 0x4E85,
-	0xB9C4, 0x0546,
-	0xB9C6, 0xCA85,
-	0xB9C8, 0x9730,
-	0xB9CA, 0x01FC,
-	0xB9CC, 0xE780,
-	0xB9CE, 0xC007,
-	0xB9D0, 0xB7C7,
-	0xB9D2, 0x0224,
-	0xB9D4, 0x83A7,
-	0xB9D6, 0x07B7,
-	0xB9D8, 0x1545,
-	0xB9DA, 0x8297,
-	0xB9DC, 0x1743,
-	0xB9DE, 0x02FC,
-	0xB9E0, 0x6700,
-	0xB9E2, 0xE3AF,
-	0xB9E4, 0xB7C7,
-	0xB9E6, 0x0224,
-	0xB9E8, 0x03A6,
-	0xB9EA, 0x47B7,
-	0xB9EC, 0xB707,
-	0xB9EE, 0x0040,
-	0xB9F0, 0x9387,
-	0xB9F2, 0x0706,
-	0xB9F4, 0x3E96,
-	0xB9F6, 0x0967,
-	0xB9F8, 0x1308,
-	0xB9FA, 0x0502,
-	0xB9FC, 0xAA87,
-	0xB9FE, 0x098E,
-	0xBA00, 0x1307,
-	0xBA02, 0xF7F1,
-	0xBA04, 0x2390,
-	0xBA06, 0xE700,
-	0xBA08, 0xB306,
-	0xBA0A, 0xF600,
-	0xBA0C, 0x2390,
-	0xBA0E, 0xE600,
-	0xBA10, 0x8907,
-	0xBA12, 0xE399,
-	0xBA14, 0x07FF,
-	0xBA16, 0x83C7,
-	0xBA18, 0xC500,
-	0xBA1A, 0xB1CB,
-	0xBA1C, 0x83AF,
-	0xBA1E, 0x0500,
-	0xBA20, 0x0963,
-	0xBA22, 0x1388,
-	0xBA24, 0xE500,
-	0xBA26, 0x8147,
-	0xBA28, 0x0D4F,
-	0xBA2A, 0x854E,
-	0xBA2C, 0x094E,
-	0xBA2E, 0x1303,
-	0xBA30, 0x03F0,
-	0xBA32, 0x3317,
-	0xBA34, 0xFF00,
-	0xBA36, 0x3377,
-	0xBA38, 0xF701,
-	0xBA3A, 0x3396,
-	0xBA3C, 0xFE00,
-	0xBA3E, 0xB316,
-	0xBA40, 0xFE00,
-	0xBA42, 0x798E,
-	0xBA44, 0xB308,
-	0xBA46, 0xF500,
-	0xBA48, 0xF98E,
-	0xBA4A, 0x8907,
-	0xBA4C, 0x7D47,
-	0xBA4E, 0x19C2,
-	0xBA50, 0x0347,
-	0xBA52, 0x0800,
-	0xBA54, 0x1A86,
-	0xBA56, 0x81C6,
-	0xBA58, 0x0346,
-	0xBA5A, 0x1800,
-	0xBA5C, 0x2206,
-	0xBA5E, 0x518F,
-	0xBA60, 0x2390,
-	0xBA62, 0xE800,
-	0xBA64, 0x03C7,
-	0xBA66, 0xC500,
-	0xBA68, 0x0908,
-	0xBA6A, 0xE3C4,
-	0xBA6C, 0xE7FC,
-	0xBA6E, 0xB7C7,
-	0xBA70, 0x0224,
-	0xBA72, 0x83A7,
-	0xBA74, 0x07B7,
-	0xBA76, 0x1D45,
-	0xBA78, 0x8287,
-	0xBA7A, 0x0100,
-	0xBA7C, 0x1743,
-	0xBA7E, 0x02FC,
-	0xBA80, 0xE702,
-	0xBA82, 0x43A4,
-	0xBA84, 0xB7A7,
-	0xBA86, 0x0224,
-	0xBA88, 0x03C7,
-	0xBA8A, 0x6760,
-	0xBA8C, 0x8547,
-	0xBA8E, 0x630C,
-	0xBA90, 0xF700,
-	0xBA92, 0xB7C7,
-	0xBA94, 0x0224,
-	0xBA96, 0x83A7,
-	0xBA98, 0x07B7,
-	0xBA9A, 0x2145,
-	0xBA9C, 0x8297,
-	0xBA9E, 0x1743,
-	0xBAA0, 0x02FC,
-	0xBAA2, 0x6700,
-	0xBAA4, 0x63A4,
-	0xBAA6, 0x9760,
-	0xBAA8, 0xFFFB,
-	0xBAAA, 0xE780,
-	0xBAAC, 0xE0E8,
-	0xBAAE, 0x75D1,
-	0xBAB0, 0xB7E7,
-	0xBAB2, 0x0024,
-	0xBAB4, 0x83C7,
-	0xBAB6, 0xB7AD,
-	0xBAB8, 0xE9FF,
-	0xBABA, 0xB7B7,
-	0xBABC, 0x0024,
-	0xBABE, 0x03D7,
-	0xBAC0, 0x4733,
-	0xBAC2, 0xB707,
-	0xBAC4, 0x0140,
-	0xBAC6, 0x2399,
-	0xBAC8, 0xE7DC,
-	0xBACA, 0xE1B7,
-	0xBACC, 0x1743,
-	0xBACE, 0x02FC,
-	0xBAD0, 0xE702,
-	0xBAD2, 0x439F,
-	0xBAD4, 0xB7B7,
-	0xBAD6, 0x0224,
-	0xBAD8, 0x9387,
-	0xBADA, 0x87B4,
-	0xBADC, 0x23AE,
-	0xBADE, 0xF194,
-	0xBAE0, 0x3764,
-	0xBAE2, 0x0124,
-	0xBAE4, 0x9D66,
-	0xBAE6, 0xB7B5,
-	0xBAE8, 0x0224,
-	0xBAEA, 0xB7B7,
-	0xBAEC, 0x0224,
-	0xBAEE, 0x1304,
-	0xBAF0, 0x0440,
-	0xBAF2, 0x9387,
-	0xBAF4, 0xC783,
-	0xBAF6, 0x9386,
-	0xBAF8, 0xF6BF,
-	0xBAFA, 0x1146,
-	0xBAFC, 0x9385,
-	0xBAFE, 0x05FB,
-	0xBB00, 0x0545,
-	0xBB02, 0x5CC4,
-	0xBB04, 0x97E0,
-	0xBB06, 0xFFFB,
-	0xBB08, 0xE780,
-	0xBB0A, 0xC0E8,
-	0xBB0C, 0xC166,
-	0xBB0E, 0xB7B5,
-	0xBB10, 0x0224,
-	0xBB12, 0xFD16,
-	0xBB14, 0x3146,
-	0xBB16, 0x9385,
-	0xBB18, 0x4598,
-	0xBB1A, 0x4145,
-	0xBB1C, 0x97E0,
-	0xBB1E, 0xFFFB,
-	0xBB20, 0xE780,
-	0xBB22, 0x40E7,
-	0xBB24, 0x37B7,
-	0xBB26, 0x0224,
-	0xBB28, 0x1307,
-	0xBB2A, 0x87B7,
-	0xBB2C, 0xB7A7,
-	0xBB2E, 0x0224,
-	0xBB30, 0x9387,
-	0xBB32, 0x8754,
-	0xBB34, 0x78C8,
-	0xBB36, 0x37B7,
-	0xBB38, 0x0224,
-	0xBB3A, 0xA380,
-	0xBB3C, 0x070C,
-	0xBB3E, 0x2381,
-	0xBB40, 0x070C,
-	0xBB42, 0x1307,
-	0xBB44, 0xC7C2,
-	0xBB46, 0xB7B7,
-	0xBB48, 0x0224,
-	0xBB4A, 0x18D4,
-	0xBB4C, 0x9387,
-	0xBB4E, 0x472D,
-	0xBB50, 0x37B7,
-	0xBB52, 0x0224,
-	0xBB54, 0x7CC4,
-	0xBB56, 0x1307,
-	0xBB58, 0x873B,
-	0xBB5A, 0xB7B7,
-	0xBB5C, 0x0224,
-	0xBB5E, 0x18C0,
-	0xBB60, 0x9387,
-	0xBB62, 0x4737,
-	0xBB64, 0x23AA,
-	0xBB66, 0xF1A4,
-	0xBB68, 0x1743,
-	0xBB6A, 0x02FC,
-	0xBB6C, 0x6700,
-	0xBB6E, 0xC397,
-	0xBB70, 0x14A6,
-	0xBB72, 0x0224,
-	0xBB74, 0x008D,
-	0xBB76, 0x0000,
-	0xBB78, 0x0000,
-	0xBB7A, 0x803B,
-	0xBB7C, 0x0000,
-	0xBB7E, 0x003F,
-	0xBB80, 0x0000,
-	0xBB82, 0x8043,
-	0xBC98, 0x1743,
-	0xBC9A, 0x02FC,
-	0xBC9C, 0xE702,
-	0xBC9E, 0x8382,
-	0xBCA0, 0x2A84,
-	0xBCA2, 0xEFE0,
-	0xBCA4, 0xBFB9,
-	0xBCA6, 0xA147,
-	0xBCA8, 0x6306,
-	0xBCAA, 0xF400,
-	0xBCAC, 0x1743,
-	0xBCAE, 0x02FC,
-	0xBCB0, 0x6700,
-	0xBCB2, 0x8383,
-	0xBCB4, 0xB7C7,
-	0xBCB6, 0x0224,
-	0xBCB8, 0x83C7,
-	0xBCBA, 0x87B8,
-	0xBCBC, 0xE5DB,
-	0xBCBE, 0xB797,
-	0xBCC0, 0x0124,
-	0xBCC2, 0x9387,
-	0xBCC4, 0x0753,
-	0xBCC6, 0x0567,
-	0xBCC8, 0x3E97,
-	0xBCCA, 0x8346,
-	0xBCCC, 0x07B9,
-	0xBCCE, 0xF9DE,
-	0xBCD0, 0x83C7,
-	0xBCD2, 0x673F,
-	0xBCD4, 0xE1DF,
-	0xBCD6, 0x8357,
-	0xBCD8, 0x47B6,
-	0xBCDA, 0x93E7,
-	0xBCDC, 0x0720,
-	0xBCDE, 0x2312,
-	0xBCE0, 0xF7B6,
-	0xBCE2, 0xE9B7,
-	0xBCE4, 0x1733,
-	0xBCE6, 0x02FC,
-	0xBCE8, 0xE702,
-	0xBCEA, 0x437B,
-	0xBCEC, 0x37C8,
-	0xBCEE, 0x0224,
-	0xBCF0, 0x1308,
-	0xBCF2, 0x48B8,
-	0xBCF4, 0x8348,
-	0xBCF6, 0x4800,
-	0xBCF8, 0x2A8B,
-	0xBCFA, 0xAE8B,
-	0xBCFC, 0x3284,
-	0xBCFE, 0xB684,
-	0xBD00, 0x3A89,
-	0xBD02, 0xBE89,
-	0xBD04, 0x6380,
-	0xBD06, 0x0802,
-	0xBD08, 0xB7A7,
-	0xBD0A, 0x0124,
-	0xBD0C, 0x9387,
-	0xBD0E, 0x0753,
-	0xBD10, 0x03C7,
-	0xBD12, 0x07B9,
-	0xBD14, 0x83C7,
-	0xBD16, 0xB792,
-	0xBD18, 0x11C7,
-	0xBD1A, 0x0347,
-	0xBD1C, 0x5800,
-	0xBD1E, 0xBD8B,
-	0xBD20, 0x6306,
-	0xBD22, 0xF704,
-	0xBD24, 0x37E8,
-	0xBD26, 0x0124,
-	0xBD28, 0x1308,
-	0xBD2A, 0x0887,
-	0xBD2C, 0x832A,
-	0xBD2E, 0x0812,
-	0xBD30, 0x032A,
-	0xBD32, 0x4812,
-	0xBD34, 0x0146,
-	0xBD36, 0xD685,
-	0xBD38, 0x5285,
-	0xBD3A, 0x9730,
-	0xBD3C, 0x01FC,
-	0xBD3E, 0xE780,
-	0xBD40, 0xA0D0,
-	0xBD42, 0xCE87,
-	0xBD44, 0x4A87,
-	0xBD46, 0xA686,
-	0xBD48, 0x2286,
-	0xBD4A, 0xDE85,
-	0xBD4C, 0x5A85,
-	0xBD4E, 0x9740,
-	0xBD50, 0x00FC,
-	0xBD52, 0xE780,
-	0xBD54, 0xA066,
-	0xBD56, 0x0546,
-	0xBD58, 0xD685,
-	0xBD5A, 0x5285,
-	0xBD5C, 0x9730,
-	0xBD5E, 0x01FC,
-	0xBD60, 0xE780,
-	0xBD62, 0x80CE,
-	0xBD64, 0x1733,
-	0xBD66, 0x02FC,
-	0xBD68, 0x6700,
-	0xBD6A, 0xC376,
-	0xBD6C, 0x2315,
-	0xBD6E, 0x0600,
-	0xBD70, 0x9760,
-	0xBD72, 0xFFFB,
-	0xBD74, 0xE780,
-	0xBD76, 0x80BA,
-	0xBD78, 0x01CD,
-	0xBD7A, 0xB797,
-	0xBD7C, 0x0124,
-	0xBD7E, 0x9387,
-	0xBD80, 0x07D7,
-	0xBD82, 0x03C7,
-	0xBD84, 0xC700,
-	0xBD86, 0x59DF,
-	0xBD88, 0x7D17,
-	0xBD8A, 0x2386,
-	0xBD8C, 0xE700,
-	0xBD8E, 0x59BF,
-	0xBD90, 0x9760,
-	0xBD92, 0xFFFB,
-	0xBD94, 0xE780,
-	0xBD96, 0x80B5,
-	0xBD98, 0x6DD1,
-	0xBD9A, 0xB797,
-	0xBD9C, 0x0124,
-	0xBD9E, 0x9387,
-	0xBDA0, 0x07D7,
-	0xBDA2, 0x03C7,
-	0xBDA4, 0xD700,
-	0xBDA6, 0x3DDF,
-	0xBDA8, 0x7D17,
-	0xBDAA, 0xA386,
-	0xBDAC, 0xE700,
-	0xBDAE, 0x9DBF,
-	0xBDB0, 0x1733,
-	0xBDB2, 0x02FC,
-	0xBDB4, 0xE702,
-	0xBDB6, 0x636F,
-	0xBDB8, 0xB7E7,
-	0xBDBA, 0x0124,
-	0xBDBC, 0x9387,
-	0xBDBE, 0x0787,
-	0xBDC0, 0x03AA,
-	0xBDC2, 0x8712,
-	0xBDC4, 0x83A9,
-	0xBDC6, 0xC712,
-	0xBDC8, 0xAE84,
-	0xBDCA, 0x2A84,
-	0xBDCC, 0x3289,
-	0xBDCE, 0xD285,
-	0xBDD0, 0x0146,
-	0xBDD2, 0x4E85,
-	0xBDD4, 0x9730,
-	0xBDD6, 0x01FC,
-	0xBDD8, 0xE780,
-	0xBDDA, 0x00C7,
-	0xBDDC, 0xA685,
-	0xBDDE, 0x4A86,
-	0xBDE0, 0x2285,
-	0xBDE2, 0x9760,
-	0xBDE4, 0xFFFB,
-	0xBDE6, 0xE780,
-	0xBDE8, 0x206A,
-	0xBDEA, 0xAA84,
-	0xBDEC, 0x0546,
-	0xBDEE, 0xD285,
-	0xBDF0, 0x4E85,
-	0xBDF2, 0x9730,
-	0xBDF4, 0x01FC,
-	0xBDF6, 0xE780,
-	0xBDF8, 0x20C5,
-	0xBDFA, 0xB7C7,
-	0xBDFC, 0x0224,
-	0xBDFE, 0x9387,
-	0xBE00, 0x47B8,
-	0xBE02, 0x03C7,
-	0xBE04, 0xE710,
-	0xBE06, 0x15C3,
-	0xBE08, 0x37A7,
-	0xBE0A, 0x0124,
-	0xBE0C, 0x1307,
-	0xBE0E, 0x0753,
-	0xBE10, 0x0346,
-	0xBE12, 0x37B9,
-	0xBE14, 0x8946,
-	0xBE16, 0x631A,
-	0xBE18, 0xD600,
-	0xBE1A, 0x8356,
-	0xBE1C, 0x87BA,
-	0xBE1E, 0xE18E,
-	0xBE20, 0x89C6,
-	0xBE22, 0x9306,
-	0xBE24, 0x0040,
-	0xBE26, 0x6307,
-	0xBE28, 0xD400,
-	0xBE2A, 0x2685,
-	0xBE2C, 0x1733,
-	0xBE2E, 0x02FC,
-	0xBE30, 0x6700,
-	0xBE32, 0xE36A,
-	0xBE34, 0x8326,
-	0xBE36, 0x47B3,
-	0xBE38, 0x7D57,
-	0xBE3A, 0xE388,
-	0xBE3C, 0xE6FE,
-	0xBE3E, 0x03D7,
-	0xBE40, 0x2711,
-	0xBE42, 0x9396,
-	0xBE44, 0x0401,
-	0xBE46, 0xC182,
-	0xBE48, 0x11E3,
-	0xBE4A, 0x3687,
-	0xBE4C, 0xBA84,
-	0xBE4E, 0x2399,
-	0xBE50, 0xD710,
-	0xBE52, 0xE1BF,
-	0xBE54, 0x1733,
-	0xBE56, 0x02FC,
-	0xBE58, 0xE702,
-	0xBE5A, 0x2365,
-	0xBE5C, 0x3729,
-	0xBE5E, 0x0024,
-	0xBE60, 0xB7A4,
-	0xBE62, 0x0124,
-	0xBE64, 0x1309,
-	0xBE66, 0x0933,
-	0xBE68, 0x9384,
-	0xBE6A, 0x0453,
-	0xBE6C, 0x8347,
-	0xBE6E, 0x491A,
-	0xBE70, 0x03C7,
-	0xBE72, 0x24B7,
-	0xBE74, 0x2A84,
-	0xBE76, 0xD98F,
-	0xBE78, 0x6382,
-	0xBE7A, 0x0714,
-	0xBE7C, 0x8347,
-	0xBE7E, 0xE400,
-	0xBE80, 0x0547,
-	0xBE82, 0x2305,
-	0xBE84, 0xE400,
-	0xBE86, 0x99E7,
-	0xBE88, 0x8347,
-	0xBE8A, 0xC400,
-	0xBE8C, 0xD1CF,
-	0xBE8E, 0x83C7,
-	0xBE90, 0x24B7,
-	0xBE92, 0xC5CB,
-	0xBE94, 0xB76A,
-	0xBE96, 0x0124,
-	0xBE98, 0x130A,
-	0xBE9A, 0x0403,
-	0xBE9C, 0x0347,
-	0xBE9E, 0x0400,
-	0xBEA0, 0xA169,
-	0xBEA2, 0xFD19,
-	0xBEA4, 0xA301,
-	0xBEA6, 0xE400,
-	0xBEA8, 0x83A7,
-	0xBEAA, 0x0A4B,
-	0xBEAC, 0x2302,
-	0xBEAE, 0xE400,
-	0xBEB0, 0x0567,
-	0xBEB2, 0xBA97,
-	0xBEB4, 0x83D7,
-	0xBEB6, 0x47E0,
-	0xBEB8, 0x2303,
-	0xBEBA, 0x0400,
-	0xBEBC, 0xB3F7,
-	0xBEBE, 0x3701,
-	0xBEC0, 0x231C,
-	0xBEC2, 0xF400,
-	0xBEC4, 0x9740,
-	0xBEC6, 0xFDFB,
-	0xBEC8, 0xE780,
-	0xBECA, 0x0067,
-	0xBECC, 0x0358,
-	0xBECE, 0x8401,
-	0xBED0, 0xA308,
-	0xBED2, 0xA400,
-	0xBED4, 0x6301,
-	0xBED6, 0x0806,
-	0xBED8, 0x3736,
-	0xBEDA, 0x0520,
-	0xBEDC, 0x1306,
-	0xBEDE, 0x06C8,
-	0xBEE0, 0x8146,
-	0xBEE2, 0x8147,
-	0xBEE4, 0x4145,
-	0xBEE6, 0xB305,
-	0xBEE8, 0xF400,
-	0xBEEA, 0x3357,
-	0xBEEC, 0xF840,
-	0xBEEE, 0x2380,
-	0xBEF0, 0xD502,
-	0xBEF2, 0x058B,
-	0xBEF4, 0x8507,
-	0xBEF6, 0x11C7,
-	0xBEF8, 0x0347,
-	0xBEFA, 0x0600,
-	0xBEFC, 0xBA96,
-	0xBEFE, 0x93F6,
-	0xBF00, 0xF60F,
-	0xBF02, 0x0506,
-	0xBF04, 0xE391,
-	0xBF06, 0xA7FE,
-	0xBF08, 0x2308,
-	0xBF0A, 0xD400,
-	0xBF0C, 0x8347,
-	0xBF0E, 0x491A,
-	0xBF10, 0x03C7,
-	0xBF12, 0x24B7,
-	0xBF14, 0xD98F,
-	0xBF16, 0xC9C3,
-	0xBF18, 0x2307,
-	0xBF1A, 0x0400,
-	0xBF1C, 0x232E,
-	0xBF1E, 0x4401,
-	0xBF20, 0x1733,
-	0xBF22, 0x02FC,
-	0xBF24, 0x6700,
-	0xBF26, 0xA35B,
-	0xBF28, 0x8347,
-	0xBF2A, 0xB400,
-	0xBF2C, 0xA5D7,
-	0xBF2E, 0x83C7,
-	0xBF30, 0x24B7,
-	0xBF32, 0xADF3,
-	0xBF34, 0x39A0,
-	0xBF36, 0x0148,
-	0xBF38, 0x45F1,
-	0xBF3A, 0x231C,
-	0xBF3C, 0x3401,
-	0xBF3E, 0x4E88,
-	0xBF40, 0x61BF,
-	0xBF42, 0xB76A,
-	0xBF44, 0x0124,
-	0xBF46, 0x83A5,
-	0xBF48, 0x0A4B,
-	0xBF4A, 0x8567,
-	0xBF4C, 0x130A,
-	0xBF4E, 0x0403,
-	0xBF50, 0x9387,
-	0xBF52, 0x07E1,
-	0xBF54, 0x1306,
-	0xBF56, 0x8007,
-	0xBF58, 0xBE95,
-	0xBF5A, 0x5285,
-	0xBF5C, 0x9760,
-	0xBF5E, 0x00FC,
-	0xBF60, 0xE780,
-	0xBF62, 0x400A,
-	0xBF64, 0x21C9,
-	0xBF66, 0x2305,
-	0xBF68, 0x0400,
-	0xBF6A, 0x0347,
-	0xBF6C, 0x2401,
-	0xBF6E, 0x8347,
-	0xBF70, 0x6400,
-	0xBF72, 0x8356,
-	0xBF74, 0x4401,
-	0xBF76, 0xA308,
-	0xBF78, 0xE400,
-	0xBF7A, 0x0547,
-	0xBF7C, 0x231C,
-	0xBF7E, 0xD400,
-	0xBF80, 0x2307,
-	0xBF82, 0xE400,
-	0xBF84, 0xA301,
-	0xBF86, 0xF400,
-	0xBF88, 0x2303,
-	0xBF8A, 0x0400,
-	0xBF8C, 0x232E,
-	0xBF8E, 0x4401,
-	0xBF90, 0x1733,
-	0xBF92, 0x02FC,
-	0xBF94, 0x6700,
-	0xBF96, 0xA354,
-	0xBF98, 0x83A5,
-	0xBF9A, 0x0A4B,
-	0xBF9C, 0x8567,
-	0xBF9E, 0x9387,
-	0xBFA0, 0x07E1,
-	0xBFA2, 0x1306,
-	0xBFA4, 0x000F,
-	0xBFA6, 0xBE95,
-	0xBFA8, 0x5285,
-	0xBFAA, 0x9760,
-	0xBFAC, 0x00FC,
-	0xBFAE, 0xE780,
-	0xBFB0, 0x2005,
-	0xBFB2, 0x9DB7,
-	0xBFB4, 0x8347,
-	0xBFB6, 0xA400,
-	0xBFB8, 0xCDDB,
-	0xBFBA, 0xCDB5,
-	0xBFBC, 0x37A5,
-	0xBFBE, 0x0124,
-	0xBFC0, 0x1305,
-	0xBFC2, 0x050C,
-	0xBFC4, 0x9760,
-	0xBFC6, 0xFFFB,
-	0xBFC8, 0xE780,
-	0xBFCA, 0x8043,
-	0xBFCC, 0x45BD,
-	0xBFCE, 0x0100,
-	0xBFD0, 0x1733,
-	0xBFD2, 0x02FC,
-	0xBFD4, 0xE702,
-	0xBFD6, 0x034F,
-	0xBFD8, 0x8347,
-	0xBFDA, 0x1501,
-	0xBFDC, 0xA304,
-	0xBFDE, 0x0500,
-	0xBFE0, 0x2A84,
-	0xBFE2, 0x91EF,
-	0xBFE4, 0x8357,
-	0xBFE6, 0x8501,
-	0xBFE8, 0x99EB,
-	0xBFEA, 0x8347,
-	0xBFEC, 0xF500,
-	0xBFEE, 0xA307,
-	0xBFF0, 0x0500,
-	0xBFF2, 0xA304,
-	0xBFF4, 0xF500,
-	0xBFF6, 0x1733,
-	0xBFF8, 0x02FC,
-	0xBFFA, 0x6700,
-	0xBFFC, 0xE34E,
-	0xBFFE, 0x2285,
-	0xC000, 0x9790,
-	0xC002, 0xFFFB,
-	0xC004, 0xE780,
-	0xC006, 0xC0C4,
-	0xC008, 0x8347,
-	0xC00A, 0x3400,
-	0xC00C, 0x0347,
-	0xC00E, 0x6400,
-	0xC010, 0x8346,
-	0xC012, 0x7400,
-	0xC014, 0xFD17,
-	0xC016, 0x0507,
-	0xC018, 0x93F7,
-	0xC01A, 0xF70F,
-	0xC01C, 0x2303,
-	0xC01E, 0xE400,
-	0xC020, 0xA301,
-	0xC022, 0xF400,
-	0xC024, 0x99C2,
-	0xC026, 0xA303,
-	0xC028, 0x0400,
-	0xC02A, 0xB1EF,
-	0xC02C, 0x0347,
-	0xC02E, 0x1401,
-	0xC030, 0x8356,
-	0xC032, 0x8401,
-	0xC034, 0x8347,
-	0xC036, 0x5400,
-	0xC038, 0x2309,
-	0xC03A, 0xE400,
-	0xC03C, 0x0547,
-	0xC03E, 0x231A,
-	0xC040, 0xD400,
-	0xC042, 0x2304,
-	0xC044, 0xE400,
-	0xC046, 0x231C,
-	0xC048, 0x0400,
-	0xC04A, 0xA308,
-	0xC04C, 0x0400,
-	0xC04E, 0xC5E3,
-	0xC050, 0x8347,
-	0xC052, 0x1400,
-	0xC054, 0x13F7,
-	0xC056, 0x2700,
-	0xC058, 0x19C7,
-	0xC05A, 0x0347,
-	0xC05C, 0x0400,
-	0xC05E, 0x01C7,
-	0xC060, 0x0347,
-	0xC062, 0x2400,
-	0xC064, 0x4DC3,
-	0xC066, 0x858B,
-	0xC068, 0xA5CF,
-	0xC06A, 0xB727,
-	0xC06C, 0x0024,
-	0xC06E, 0x83C7,
-	0xC070, 0x274D,
-	0xC072, 0xD1D3,
-	0xC074, 0xB767,
-	0xC076, 0x0124,
-	0xC078, 0x83A7,
-	0xC07A, 0x074B,
-	0xC07C, 0x0567,
-	0xC07E, 0xBA97,
-	0xC080, 0x2380,
-	0xC082, 0x07E0,
-	0xC084, 0x8DBF,
-	0xC086, 0x0347,
-	0xC088, 0x0401,
-	0xC08A, 0x5C4C,
-	0xC08C, 0x9316,
-	0xC08E, 0x1700,
-	0xC090, 0xB697,
-	0xC092, 0x5CCC,
-	0xC094, 0xB727,
-	0xC096, 0x0024,
-	0xC098, 0x9387,
-	0xC09A, 0x0733,
-	0xC09C, 0x83C6,
-	0xC09E, 0x371A,
-	0xC0A0, 0x89EA,
-	0xC0A2, 0x8346,
-	0xC0A4, 0x6401,
-	0xC0A6, 0xA1DA,
-	0xC0A8, 0xB7A6,
-	0xC0AA, 0x0124,
-	0xC0AC, 0x83C6,
-	0xC0AE, 0x260A,
-	0xC0B0, 0xB9F2,
-	0xC0B2, 0x83C7,
-	0xC0B4, 0x471A,
-	0xC0B6, 0xA1F3,
-	0xC0B8, 0x0346,
-	0xC0BA, 0x0400,
-	0xC0BC, 0xB767,
-	0xC0BE, 0x0124,
-	0xC0C0, 0x83A5,
-	0xC0C2, 0x074B,
-	0xC0C4, 0x3306,
-	0xC0C6, 0xE602,
-	0xC0C8, 0x8567,
-	0xC0CA, 0x9387,
-	0xC0CC, 0x07E1,
-	0xC0CE, 0xBE95,
-	0xC0D0, 0x1305,
-	0xC0D2, 0x0403,
-	0xC0D4, 0x0606,
-	0xC0D6, 0x9760,
-	0xC0D8, 0x00FC,
-	0xC0DA, 0xE780,
-	0xC0DC, 0x60F2,
-	0xC0DE, 0x21BF,
-	0xC0E0, 0x8547,
-	0xC0E2, 0xA304,
-	0xC0E4, 0xF400,
-	0xC0E6, 0x1733,
-	0xC0E8, 0x02FC,
-	0xC0EA, 0x6700,
-	0xC0EC, 0xE33F,
-	0xC0EE, 0xFD17,
-	0xC0F0, 0xA302,
-	0xC0F2, 0xF400,
-	0xC0F4, 0x2285,
-	0xC0F6, 0x9760,
-	0xC0F8, 0xFFFB,
-	0xC0FA, 0xE780,
-	0xC0FC, 0x6011,
-	0xC0FE, 0x1733,
-	0xC100, 0x02FC,
-	0xC102, 0x6700,
-	0xC104, 0x633E,
-	0xC106, 0x2285,
-	0xC108, 0x9760,
-	0xC10A, 0xFFFB,
-	0xC10C, 0xE780,
-	0xC10E, 0x4010,
-	0xC110, 0xDDB5,
-	0xC112, 0x0100,
-	0xC114, 0x8947,
-	0xC116, 0x6303,
-	0xC118, 0xF500,
-	0xC11A, 0x8280,
-	0xC11C, 0x1733,
-	0xC11E, 0x02FC,
-	0xC120, 0xE702,
-	0xC122, 0xA338,
-	0xC124, 0xB784,
-	0xC126, 0x0124,
-	0xC128, 0x9384,
-	0xC12A, 0x04AA,
-	0xC12C, 0x87A7,
-	0xC12E, 0x040A,
-	0xC130, 0x4111,
-	0xC132, 0x37C5,
-	0xC134, 0x0224,
-	0xC136, 0x5396,
-	0xC138, 0x17C0,
-	0xC13A, 0x7400,
-	0xC13C, 0x9145,
-	0xC13E, 0x1305,
-	0xC140, 0xA5B8,
-	0xC142, 0x9750,
-	0xC144, 0xFFFB,
-	0xC146, 0xE780,
-	0xC148, 0x60C3,
-	0xC14A, 0x3719,
-	0xC14C, 0x0140,
-	0xC14E, 0x4205,
-	0xC150, 0x4181,
-	0xC152, 0x130A,
-	0xC154, 0x4924,
-	0xC156, 0xB789,
-	0xC158, 0x0124,
-	0xC15A, 0x37C4,
-	0xC15C, 0x0224,
-	0xC15E, 0xB7CA,
-	0xC160, 0x0224,
-	0xC162, 0x2317,
-	0xC164, 0xA100,
-	0xC166, 0x9389,
-	0xC168, 0x89B1,
-	0xC16A, 0x1304,
-	0xC16C, 0x24B9,
-	0xC16E, 0x938A,
-	0xC170, 0xAABB,
-	0xC172, 0x330A,
-	0xC174, 0x9A40,
-	0xC176, 0x0605,
-	0xC178, 0x2295,
-	0xC17A, 0x8355,
-	0xC17C, 0x2500,
-	0xC17E, 0x0356,
-	0xC180, 0xC100,
-	0xC182, 0x0355,
-	0xC184, 0x0500,
-	0xC186, 0x2104,
-	0xC188, 0x9760,
-	0xC18A, 0x00FC,
-	0xC18C, 0xE780,
-	0xC18E, 0x8082,
-	0xC190, 0x4205,
-	0xC192, 0x4181,
-	0xC194, 0x2390,
-	0xC196, 0xA900,
-	0xC198, 0xB387,
-	0xC19A, 0x4901,
-	0xC19C, 0x2390,
-	0xC19E, 0xA700,
-	0xC1A0, 0x8909,
-	0xC1A2, 0x6305,
-	0xC1A4, 0x5401,
-	0xC1A6, 0x0355,
-	0xC1A8, 0xE100,
-	0xC1AA, 0xF1B7,
-	0xC1AC, 0xB789,
-	0xC1AE, 0x0124,
-	0xC1B0, 0x37CA,
-	0xC1B2, 0x0224,
-	0xC1B4, 0x1309,
-	0xC1B6, 0x0926,
-	0xC1B8, 0x9389,
-	0xC1BA, 0xA9AF,
-	0xC1BC, 0x130A,
-	0xC1BE, 0x2AC3,
-	0xC1C0, 0x8357,
-	0xC1C2, 0xE100,
-	0xC1C4, 0x0356,
-	0xC1C6, 0xC100,
-	0xC1C8, 0x8509,
-	0xC1CA, 0x8607,
-	0xC1CC, 0xA297,
-	0xC1CE, 0x83D5,
-	0xC1D0, 0x2700,
-	0xC1D2, 0x03D5,
-	0xC1D4, 0x0700,
-	0xC1D6, 0x0909,
-	0xC1D8, 0x2104,
-	0xC1DA, 0x9750,
-	0xC1DC, 0x00FC,
-	0xC1DE, 0xE780,
-	0xC1E0, 0x607D,
-	0xC1E2, 0x1375,
-	0xC1E4, 0xF50F,
-	0xC1E6, 0xA38F,
-	0xC1E8, 0xA9FE,
-	0xC1EA, 0x4205,
-	0xC1EC, 0x4181,
-	0xC1EE, 0x231F,
-	0xC1F0, 0xA9FE,
-	0xC1F2, 0xE317,
-	0xC1F4, 0x44FD,
-	0xC1F6, 0xB719,
-	0xC1F8, 0x0140,
-	0xC1FA, 0x3789,
-	0xC1FC, 0x0124,
-	0xC1FE, 0x37CA,
-	0xC200, 0x0224,
-	0xC202, 0x9389,
-	0xC204, 0x291F,
-	0xC206, 0x1309,
-	0xC208, 0xC9B2,
-	0xC20A, 0x130A,
-	0xC20C, 0x2AC6,
-	0xC20E, 0xB389,
-	0xC210, 0x9940,
-	0xC212, 0x8357,
-	0xC214, 0xE100,
-	0xC216, 0x0356,
-	0xC218, 0xC100,
-	0xC21A, 0x8607,
-	0xC21C, 0xA297,
-	0xC21E, 0x83D5,
-	0xC220, 0x2700,
-	0xC222, 0x03D5,
-	0xC224, 0x0700,
-	0xC226, 0x2104,
-	0xC228, 0x9750,
-	0xC22A, 0x00FC,
-	0xC22C, 0xE780,
-	0xC22E, 0x8078,
-	0xC230, 0x4205,
-	0xC232, 0x4181,
-	0xC234, 0x2310,
-	0xC236, 0xA900,
-	0xC238, 0xB307,
-	0xC23A, 0x3901,
-	0xC23C, 0x2390,
-	0xC23E, 0xA700,
-	0xC240, 0x0909,
-	0xC242, 0xE318,
-	0xC244, 0x44FD,
-	0xC246, 0xB717,
-	0xC248, 0x0140,
-	0xC24A, 0x3789,
-	0xC24C, 0x0124,
-	0xC24E, 0xB7C9,
-	0xC250, 0x0224,
-	0xC252, 0x9387,
-	0xC254, 0xA720,
-	0xC256, 0x1309,
-	0xC258, 0x69B4,
-	0xC25A, 0x9389,
-	0xC25C, 0x29C9,
-	0xC25E, 0xB384,
-	0xC260, 0x9740,
-	0xC262, 0x8357,
-	0xC264, 0xE100,
-	0xC266, 0x0356,
-	0xC268, 0xC100,
-	0xC26A, 0x8607,
-	0xC26C, 0xA297,
-	0xC26E, 0x83D5,
-	0xC270, 0x2700,
-	0xC272, 0x03D5,
-	0xC274, 0x0700,
-	0xC276, 0x2104,
-	0xC278, 0x9750,
-	0xC27A, 0x00FC,
-	0xC27C, 0xE780,
-	0xC27E, 0x8073,
-	0xC280, 0x4205,
-	0xC282, 0x4181,
-	0xC284, 0x2310,
-	0xC286, 0xA900,
-	0xC288, 0xB307,
-	0xC28A, 0x9900,
-	0xC28C, 0x2390,
-	0xC28E, 0xA700,
-	0xC290, 0x0909,
-	0xC292, 0xE318,
-	0xC294, 0x34FD,
-	0xC296, 0x4101,
-	0xC298, 0x1733,
-	0xC29A, 0x02FC,
-	0xC29C, 0x6700,
-	0xC29E, 0x2324,
-	0xC2A0, 0x1733,
-	0xC2A2, 0x02FC,
-	0xC2A4, 0xE702,
-	0xC2A6, 0x0322,
-	0xC2A8, 0x2A84,
-	0xC2AA, 0xEFE0,
-	0xC2AC, 0x3F98,
-	0xC2AE, 0x1DE0,
-	0xC2B0, 0xB797,
-	0xC2B2, 0x0124,
-	0xC2B4, 0x9387,
-	0xC2B6, 0x0753,
-	0xC2B8, 0x0D67,
-	0xC2BA, 0x3E97,
-	0xC2BC, 0x0327,
-	0xC2BE, 0x876E,
-	0xC2C0, 0x058B,
-	0xC2C2, 0x09CB,
-	0xC2C4, 0x3787,
-	0xC2C6, 0x0040,
-	0xC2C8, 0x0357,
-	0xC2CA, 0x87F4,
-	0xC2CC, 0xA146,
-	0xC2CE, 0x618B,
-	0xC2D0, 0x6306,
-	0xC2D2, 0xD700,
-	0xC2D4, 0x1733,
-	0xC2D6, 0x02FC,
-	0xC2D8, 0x6700,
-	0xC2DA, 0x0321,
-	0xC2DC, 0x0567,
-	0xC2DE, 0xBA97,
-	0xC2E0, 0x2389,
-	0xC2E2, 0x07B6,
-	0xC2E4, 0xC5BF,
-	0xC2E6, 0x0100,
-	0xC2E8, 0x9147,
-	0xC2EA, 0x6303,
-	0xC2EC, 0xF500,
-	0xC2EE, 0x8280,
-	0xC2F0, 0x1733,
-	0xC2F2, 0x02FC,
-	0xC2F4, 0xE702,
-	0xC2F6, 0x031D,
-	0xC2F8, 0x9750,
-	0xC2FA, 0xFFFB,
-	0xC2FC, 0xE780,
-	0xC2FE, 0xC063,
-	0xC300, 0x09C5,
-	0xC302, 0x1733,
-	0xC304, 0x02FC,
-	0xC306, 0x6700,
-	0xC308, 0x231E,
-	0xC30A, 0x9750,
-	0xC30C, 0xFFFB,
-	0xC30E, 0xE780,
-	0xC310, 0xE05D,
-	0xC312, 0x65F9,
-	0xC314, 0xB7C7,
-	0xC316, 0x0224,
-	0xC318, 0x03D7,
-	0xC31A, 0x67B8,
-	0xC31C, 0xB7F7,
-	0xC31E, 0x0040,
-	0xC320, 0x2390,
-	0xC322, 0xE73E,
-	0xC324, 0xF9BF,
-	0xC326, 0x0100,
-	0xC328, 0x37C7,
-	0xC32A, 0x0224,
-	0xC32C, 0x1307,
-	0xC32E, 0x47B8,
-	0xC330, 0x8345,
-	0xC332, 0x0700,
-	0xC334, 0xB7A7,
-	0xC336, 0x0224,
-	0xC338, 0xB7D6,
-	0xC33A, 0x0124,
-	0xC33C, 0x03D6,
-	0xC33E, 0x4760,
-	0xC340, 0x23A8,
-	0xC342, 0xB6DA,
-	0xC344, 0xB767,
-	0xC346, 0x0124,
-	0xC348, 0xB7C6,
-	0xC34A, 0x0224,
-	0xC34C, 0x9387,
-	0xC34E, 0x0740,
-	0xC350, 0x9386,
-	0xC352, 0x86C9,
-	0xC354, 0xD4C7,
-	0xC356, 0x09CA,
-	0xC358, 0xB7B6,
-	0xC35A, 0x0224,
-	0xC35C, 0x3726,
-	0xC35E, 0x0024,
-	0xC360, 0x9386,
-	0xC362, 0x8668,
-	0xC364, 0x2320,
-	0xC366, 0xD6CE,
-	0xC368, 0x2319,
-	0xC36A, 0x0710,
-	0xC36C, 0x37C7,
-	0xC36E, 0x0224,
-	0xC370, 0x1307,
-	0xC372, 0x072A,
-	0xC374, 0xB7C6,
-	0xC376, 0x0224,
-	0xC378, 0x98D7,
-	0xC37A, 0x37C7,
-	0xC37C, 0x0224,
-	0xC37E, 0x9386,
-	0xC380, 0x4611,
-	0xC382, 0x1307,
-	0xC384, 0x872E,
-	0xC386, 0x23A4,
-	0xC388, 0xD1A4,
-	0xC38A, 0xD8C3,
-	0xC38C, 0x8280,
-	0xC38E, 0x0000,
-	0xC398, 0x29E1,
-	0xC39A, 0x1733,
-	0xC39C, 0x02FC,
-	0xC39E, 0xE702,
-	0xC3A0, 0x6312,
-	0xC3A2, 0xB797,
-	0xC3A4, 0x0124,
-	0xC3A6, 0x9387,
-	0xC3A8, 0x0753,
-	0xC3AA, 0x8564,
-	0xC3AC, 0xBE94,
-	0xC3AE, 0x03C7,
-	0xC3B0, 0xE4B6,
-	0xC3B2, 0x8D66,
-	0xC3B4, 0x3384,
-	0xC3B6, 0xD700,
-	0xC3B8, 0x8327,
-	0xC3BA, 0x846E,
-	0xC3BC, 0x05C3,
-	0xC3BE, 0x858B,
-	0xC3C0, 0x89CB,
-	0xC3C2, 0xB787,
-	0xC3C4, 0x0040,
-	0xC3C6, 0x83D7,
-	0xC3C8, 0x87F4,
-	0xC3CA, 0x2147,
-	0xC3CC, 0xE18B,
-	0xC3CE, 0x638B,
-	0xC3D0, 0xE702,
-	0xC3D2, 0x1733,
-	0xC3D4, 0x02FC,
-	0xC3D6, 0x6700,
-	0xC3D8, 0x2311,
-	0xC3DA, 0x8280,
-	0xC3DC, 0x1147,
-	0xC3DE, 0xE390,
-	0xC3E0, 0xE7FE,
-	0xC3E2, 0xB7D7,
-	0xC3E4, 0x0124,
-	0xC3E6, 0x83C7,
-	0xC3E8, 0x07FA,
-	0xC3EA, 0xE5D7,
-	0xC3EC, 0x97C0,
-	0xC3EE, 0x00FC,
-	0xC3F0, 0xE780,
-	0xC3F2, 0x401F,
-	0xC3F4, 0x3787,
-	0xC3F6, 0x0224,
-	0xC3F8, 0x8546,
-	0xC3FA, 0x8327,
-	0xC3FC, 0x846E,
-	0xC3FE, 0xA300,
-	0xC400, 0xD74E,
-	0xC402, 0x75BF,
-	0xC404, 0x2389,
-	0xC406, 0x04B6,
-	0xC408, 0xE9B7,
-	0xC40A, 0x0100,
-	0xC40C, 0x1733,
-	0xC40E, 0x02FC,
-	0xC410, 0xE702,
-	0xC412, 0xA309,
-	0xC414, 0x2A84,
-	0xC416, 0x2E8A,
-	0xC418, 0x9750,
-	0xC41A, 0xFFFB,
-	0xC41C, 0xE780,
-	0xC41E, 0x004D,
-	0xC420, 0x1DC5,
-	0xC422, 0xB797,
-	0xC424, 0x0124,
-	0xC426, 0x9387,
-	0xC428, 0x0753,
-	0xC42A, 0x0567,
-	0xC42C, 0x3E97,
-	0xC42E, 0x8346,
-	0xC430, 0x37B7,
-	0xC432, 0x0547,
-	0xC434, 0x6385,
-	0xC436, 0xE600,
-	0xC438, 0x83C7,
-	0xC43A, 0x2741,
-	0xC43C, 0x89CB,
-	0xC43E, 0xB787,
-	0xC440, 0x0224,
-	0xC442, 0x03C7,
-	0xC444, 0xB74A,
-	0xC446, 0x8547,
-	0xC448, 0xA284,
-	0xC44A, 0x630F,
-	0xC44C, 0xF702,
-	0xC44E, 0xB7E7,
-	0xC450, 0x0124,
-	0xC452, 0x9387,
-	0xC454, 0x0787,
-	0xC456, 0x83A9,
-	0xC458, 0x870A,
-	0xC45A, 0x03A9,
-	0xC45C, 0xC70A,
-	0xC45E, 0x0146,
-	0xC460, 0xCE85,
-	0xC462, 0x4A85,
-	0xC464, 0x9720,
-	0xC466, 0x01FC,
-	0xC468, 0xE780,
-	0xC46A, 0x005E,
-	0xC46C, 0xD285,
-	0xC46E, 0x2285,
-	0xC470, 0x9780,
-	0xC472, 0x01FC,
-	0xC474, 0xE780,
-	0xC476, 0x001B,
-	0xC478, 0xAA84,
-	0xC47A, 0x0546,
-	0xC47C, 0xCE85,
-	0xC47E, 0x4A85,
-	0xC480, 0x9720,
-	0xC482, 0x01FC,
-	0xC484, 0xE780,
-	0xC486, 0x405C,
-	0xC488, 0x2685,
-	0xC48A, 0x1733,
-	0xC48C, 0x02FC,
-	0xC48E, 0x6700,
-	0xC490, 0x0305,
-	0xC492, 0x0100,
-	0xC494, 0x1733,
-	0xC496, 0x02FC,
-	0xC498, 0xE702,
-	0xC49A, 0xC302,
-	0xC49C, 0x9750,
-	0xC49E, 0xFFFB,
-	0xC4A0, 0xE780,
-	0xC4A2, 0xC044,
-	0xC4A4, 0x09CD,
-	0xC4A6, 0x9750,
-	0xC4A8, 0xFFFB,
-	0xC4AA, 0xE780,
-	0xC4AC, 0x2047,
-	0xC4AE, 0x01E9,
-	0xC4B0, 0xB7A7,
-	0xC4B2, 0x0124,
-	0xC4B4, 0x9387,
-	0xC4B6, 0x0753,
-	0xC4B8, 0x83A7,
-	0xC4BA, 0x47B2,
-	0xC4BC, 0x95EF,
-	0xC4BE, 0x9750,
-	0xC4C0, 0xFFFB,
-	0xC4C2, 0xE780,
-	0xC4C4, 0xA042,
-	0xC4C6, 0x0DED,
-	0xC4C8, 0xB7E7,
-	0xC4CA, 0x0124,
-	0xC4CC, 0x9387,
-	0xC4CE, 0x0787,
-	0xC4D0, 0x8457,
-	0xC4D2, 0xC057,
-	0xC4D4, 0x0146,
-	0xC4D6, 0xA685,
-	0xC4D8, 0x2285,
-	0xC4DA, 0x9720,
-	0xC4DC, 0x01FC,
-	0xC4DE, 0xE780,
-	0xC4E0, 0xA056,
-	0xC4E2, 0x9750,
-	0xC4E4, 0x00FC,
-	0xC4E6, 0xE780,
-	0xC4E8, 0x60D8,
-	0xC4EA, 0x0546,
-	0xC4EC, 0xA685,
-	0xC4EE, 0x2285,
-	0xC4F0, 0x9720,
-	0xC4F2, 0x01FC,
-	0xC4F4, 0xE780,
-	0xC4F6, 0x4055,
-	0xC4F8, 0x1733,
-	0xC4FA, 0x02FC,
-	0xC4FC, 0x6700,
-	0xC4FE, 0xC3FE,
-	0xC500, 0x9750,
-	0xC502, 0xFFFB,
-	0xC504, 0xE780,
-	0xC506, 0x8041,
-	0xC508, 0x61F1,
-	0xC50A, 0x9760,
-	0xC50C, 0x01FC,
-	0xC50E, 0xE780,
-	0xC510, 0x20D8,
-	0xC512, 0xB7D7,
-	0xC514, 0x0124,
-	0xC516, 0x03D4,
-	0xC518, 0x07ED,
-	0xC51A, 0xAA84,
-	0xC51C, 0x97C0,
-	0xC51E, 0x01FC,
-	0xC520, 0xE780,
-	0xC522, 0xC051,
-	0xC524, 0x3314,
-	0xC526, 0xA400,
-	0xC528, 0x97C0,
-	0xC52A, 0x01FC,
-	0xC52C, 0xE780,
-	0xC52E, 0xC052,
-	0xC530, 0x3354,
-	0xC532, 0xA440,
-	0xC534, 0xE3FA,
-	0xC536, 0x84F8,
-	0xC538, 0xC1B7,
-	0xC53A, 0x0100,
-	0xC53C, 0xB7C7,
-	0xC53E, 0x0224,
-	0xC540, 0x03C7,
-	0xC542, 0x0739,
-	0xC544, 0xB7D7,
-	0xC546, 0x0124,
-	0xC548, 0x23A8,
-	0xC54A, 0xE7DA,
-	0xC54C, 0xB7C7,
-	0xC54E, 0x0224,
-	0xC550, 0x3767,
-	0xC552, 0x0124,
-	0xC554, 0x9387,
-	0xC556, 0x8739,
-	0xC558, 0x2324,
-	0xC55A, 0xF742,
-	0xC55C, 0x8280,
-	0xC55E, 0x0100,
-	0xC560, 0x1733,
-	0xC562, 0x02FC,
-	0xC564, 0xE702,
-	0xC566, 0x03F6,
-	0xC568, 0xB7C6,
-	0xC56A, 0x0224,
-	0xC56C, 0xB787,
-	0xC56E, 0x0324,
-	0xC570, 0x9386,
-	0xC572, 0x065C,
-	0xC574, 0x37A7,
-	0xC576, 0x0124,
-	0xC578, 0x9387,
-	0xC57A, 0x07FF,
-	0xC57C, 0x1307,
-	0xC57E, 0x0753,
-	0xC580, 0x958F,
-	0xC582, 0x232C,
-	0xC584, 0xD7B4,
-	0xC586, 0x232E,
-	0xC588, 0xF7B4,
-	0xC58A, 0x9720,
-	0xC58C, 0x01FC,
-	0xC58E, 0xE780,
-	0xC590, 0x60EF,
-	0xC592, 0x19C5,
-	0xC594, 0xEFD0,
-	0xC596, 0x1FE3,
-	0xC598, 0xEFF0,
-	0xC59A, 0x4FD3,
-	0xC59C, 0x7133,
-	0xC59E, 0x793F,
-	0xC5A0, 0x1733,
-	0xC5A2, 0x02FC,
-	0xC5A4, 0x6700,
-	0xC5A6, 0x43F4,
-	0xC5A8, 0x0000,
-	0xC5AA, 0x0000,
-	0xC5AC, 0x0000,
-	0xC5AE, 0x0000,
-	0xC5B0, 0xBD10,
-	0xC5B2, 0xE538,
-	0xC5B4, 0x0000,
-	0xC5B6, 0x0000,
-	0xC5B8, 0xBEFF,
-	0xC5BA, 0x0F00,
-	0xC5BC, 0x0000,
-	0xC5BE, 0x0000,
-	0x849C, 0x0100,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0x84A4, 0x0000,
-	0x84A6, 0x0000,
-	0x84A8, 0x0000,
-	0x84AA, 0x0001,
-	0x84AC, 0x01FF,
-	0x84B0, 0x8089,
-	0x84B2, 0x0000,
-	0x84B4, 0x8889,
-	0x84B6, 0x0000,
-	0x84B8, 0xC097,
-	0x84BA, 0x0000,
-	0x84BC, 0xA60E,
-	0x84BE, 0x0000,
-	0x84C0, 0x2206,
-	0x84C2, 0x0000,
-	0x84C4, 0x0036,
-	0x84C8, 0x60C5,
-	0x84CA, 0x0224,
-	0x84CC, 0x44AB,
-	0x84CE, 0x0224,
-	0x84D0, 0x44AB,
-	0x84D2, 0x0224,
-	0x84D4, 0x44AB,
-	0x84D6, 0x0224,
-	0x84D8, 0x44AB,
-	0x84DA, 0x0224,
-	0x84DC, 0x44AB,
-	0x84DE, 0x0224,
-	0xA548, 0x00B2,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xA56C, 0x0000,
-	0xA56E, 0x0000,
-	0xA570, 0x0000,
-	0xA572, 0x0000,
-	0xA574, 0x008A,
-	0xA576, 0x0000,
-	0xA578, 0x0000,
-	0xA57A, 0x0000,
-	0xA57C, 0x0000,
-	0xA57E, 0x0000,
-	0xA580, 0x0000,
-	0xA582, 0x0000,
-	0xA584, 0x0000,
-	0xA586, 0x0000,
-	0xA588, 0x0000,
-	0xA58A, 0x0000,
-	0xA58C, 0x0000,
-	0xA58E, 0x0000,
-	0xA590, 0x0000,
-	0xA592, 0x0000,
-	0xA594, 0x0000,
-	0xA596, 0x0000,
-	0xA598, 0x0000,
-	0xA59A, 0x0000,
-	0xA59C, 0x0000,
-	0xA59E, 0x0000,
-	0xA5A0, 0x0100,
-	0xA5A2, 0x00AC,
-	0xA5A4, 0x0000,
-	0xA5A6, 0x0000,
-	0xA5A8, 0x0000,
-	0xA5AA, 0x0000,
-	0xA5AC, 0x0000,
-	0xA5AE, 0x0000,
-	0xA5B0, 0x0000,
-	0xA5B2, 0x0000,
-	0xA5B4, 0x0000,
-	0xA5B6, 0x0000,
-	0xA5B8, 0x0000,
-	0xA5BA, 0x0000,
-	0xA5BC, 0x0000,
-	0xA5BE, 0x0000,
-	0xA5C0, 0x0000,
-	0xA5C2, 0x0000,
-	0xA5C4, 0x0000,
-	0xA5C6, 0x0000,
-	0xA5C8, 0x0000,
-	0xA5CA, 0x0000,
-	0xA5CC, 0x0000,
-	0xA5CE, 0x0000,
-	0xA5D0, 0x0000,
-	0xA5D2, 0x0000,
-	0xA5D4, 0x0000,
-	0xA5D6, 0x0000,
-	0xA5D8, 0x0000,
-	0xA5DA, 0x0000,
-	0xA5DC, 0x0000,
-	0xA5DE, 0x0000,
-	0xA5E0, 0x0000,
-	0xA5E2, 0x0000,
-	0xA5E4, 0x0000,
-	0xA5E6, 0x0000,
-	0xA5E8, 0x0000,
-	0xA5EA, 0x0000,
-	0xA5EC, 0x000F,
-	0xA5EE, 0x000F,
-	0xA5F0, 0x000F,
-	0xA5F2, 0x000F,
-	0xA5F4, 0x0000,
-	0xA5F6, 0x0000,
-	0xA5F8, 0x0000,
-	0xA5FA, 0x0000,
-	0xA5FC, 0x0000,
-	0xA5FE, 0x0000,
-	0xA600, 0x0000,
-	0xA602, 0x0000,
-	0xA604, 0x0000,
-	0xA606, 0x0034,
-	0xBB84, 0x00E7,
-	0xBB86, 0x0000,
-	0xBB88, 0x0000,
-	0xBB8A, 0x0100,
-	0xBB8C, 0x0800,
-	0xBB8E, 0x1000,
-	0xBB90, 0x2000,
-	0xBB92, 0x9A00,
-	0xBB94, 0x9A00,
-	0xBB96, 0x9A00,
-	0xBB98, 0x9A00,
-	0xBB9A, 0x9600,
-	0xBB9C, 0x9600,
-	0xBB9E, 0x9600,
-	0xBBA0, 0x9600,
-	0xBBA2, 0x9300,
-	0xBBA4, 0x9300,
-	0xBBA6, 0x9300,
-	0xBBA8, 0x9300,
-	0xBBAA, 0x9000,
-	0xBBAC, 0x9000,
-	0xBBAE, 0x9000,
-	0xBBB0, 0x9000,
-	0xBBB2, 0x8D00,
-	0xBBB4, 0x8D00,
-	0xBBB6, 0x8D00,
-	0xBBB8, 0x8D00,
-	0xBBBA, 0x3F00,
-	0xBBBC, 0x3F00,
-	0xBBBE, 0x3F00,
-	0xBBC0, 0x3F00,
-	0xBBC2, 0x1E00,
-	0xBBC4, 0x1E00,
-	0xBBC6, 0x1E00,
-	0xBBC8, 0x1E00,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0000,
-	0xBBD2, 0x0800,
-	0xBBD4, 0x0800,
-	0xBBD6, 0x0800,
-	0xBBD8, 0x0800,
-	0xBBDA, 0x0000,
-	0xBBDC, 0x0000,
-	0xBBDE, 0x0000,
-	0xBBE0, 0x0000,
-	0xBBE2, 0x3F00,
-	0xBBE4, 0x3F00,
-	0xBBE6, 0x3F00,
-	0xBBE8, 0x3F00,
-	0xBBEA, 0x3400,
-	0xBBEC, 0x3400,
-	0xBBEE, 0x3400,
-	0xBBF0, 0x3400,
-	0xBBF2, 0x0A00,
-	0xBBF4, 0x0A00,
-	0xBBF6, 0x0A00,
-	0xBBF8, 0x0A00,
-	0xBBFA, 0x1000,
-	0xBBFC, 0x1000,
-	0xBBFE, 0x1000,
-	0xBC00, 0x1000,
-	0xBC02, 0x0600,
-	0xBC04, 0x0600,
-	0xBC06, 0x0600,
-	0xBC08, 0x0600,
-	0xBC0A, 0x0C00,
-	0xBC0C, 0x0C00,
-	0xBC0E, 0x0C00,
-	0xBC10, 0x0C00,
-	0xBC12, 0x0000,
-	0xBC14, 0x0000,
-	0xBC16, 0x0000,
-	0xBC18, 0x0000,
-	0xBC1A, 0x1000,
-	0xBC1C, 0x1000,
-	0xBC1E, 0x1000,
-	0xBC20, 0x1000,
-	0xBC22, 0x1000,
-	0xBC24, 0x1000,
-	0xBC26, 0x1000,
-	0xBC28, 0x1000,
-	0xBC2A, 0x2000,
-	0xBC2C, 0x1000,
-	0xBC2E, 0x1000,
-	0xBC30, 0x1000,
-	0xBC32, 0x0600,
-	0xBC34, 0x0600,
-	0xBC36, 0x0600,
-	0xBC38, 0x0600,
-	0xBC3A, 0x1C00,
-	0xBC3C, 0x1C00,
-	0xBC3E, 0x1C00,
-	0xBC40, 0x1C00,
-	0xBC42, 0x0600,
-	0xBC44, 0x0600,
-	0xBC46, 0x0600,
-	0xBC48, 0x0600,
-	0xBC4A, 0x2A00,
-	0xBC4C, 0x2A00,
-	0xBC4E, 0x2A00,
-	0xBC50, 0x2A00,
-	0xBC52, 0x0200,
-	0xBC54, 0x0200,
-	0xBC56, 0x0200,
-	0xBC58, 0x0200,
-	0xBC5A, 0x1000,
-	0xBC5C, 0x1000,
-	0xBC5E, 0x1000,
-	0xBC60, 0x1000,
-	0xBC62, 0x0E00,
-	0xBC64, 0x0E00,
-	0xBC66, 0x0E00,
-	0xBC68, 0x0E00,
-	0xBC6A, 0x2800,
-	0xBC6C, 0x2800,
-	0xBC6E, 0x2800,
-	0xBC70, 0x2800,
-	0xBC72, 0x1800,
-	0xBC74, 0x1800,
-	0xBC76, 0x1800,
-	0xBC78, 0x1800,
-	0xBC7A, 0x0800,
-	0xBC7C, 0x0800,
-	0xBC7E, 0x0800,
-	0xBC80, 0x0800,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x0000,
-	0xBC8A, 0x2400,
-	0xBC8C, 0x2400,
-	0xBC8E, 0x2400,
-	0xBC90, 0x2400,
-	0xBC92, 0x00AF,
-	0xFCFC, 0x2001,
-	0x5634, 0x041D,
-	0x5636, 0x0420,
-	0x5638, 0x3C85,
-	0x563A, 0x0224,
-	0x563C, 0x3CE6,
-	0x563E, 0x0320,
-	0x5640, 0xD885,
-	0x5642, 0x0224,
-	0x5644, 0xD06E,
-	0x5646, 0x0320,
-	0x5648, 0xC48D,
-	0x564A, 0x0224,
-	0x564C, 0x4877,
-	0x564E, 0x0320,
-	0x5650, 0xCC90,
-	0x5652, 0x0224,
-	0x5654, 0x6812,
-	0x5656, 0x0320,
-	0x5658, 0x94C4,
-	0x565A, 0x0224,
-	0x565C, 0xE8FE,
-	0x565E, 0x0220,
-	0x5660, 0x5491,
-	0x5662, 0x0224,
-	0x5664, 0xA462,
-	0x5666, 0x0320,
-	0x5668, 0x9C95,
-	0x566A, 0x0224,
-	0x566C, 0x901B,
-	0x566E, 0x0020,
-	0x5670, 0x2896,
-	0x5672, 0x0224,
-	0x5674, 0xC446,
-	0x5676, 0x0320,
-	0x5678, 0xE896,
-	0x567A, 0x0224,
-	0x567C, 0x1427,
-	0x567E, 0x0320,
-	0x5680, 0xC498,
-	0x5682, 0x0224,
-	0x5684, 0x304C,
-	0x5686, 0x0220,
-	0x5688, 0x749B,
-	0x568A, 0x0224,
-	0x568C, 0xC82C,
-	0x568E, 0x0220,
-	0x5690, 0xD09B,
-	0x5692, 0x0224,
-	0x5694, 0x484F,
-	0x5696, 0x0220,
-	0x5698, 0x289C,
-	0x569A, 0x0224,
-	0x569C, 0xB041,
-	0x569E, 0x0220,
-	0x56A0, 0x3C9A,
-	0x56A2, 0x0224,
-	0x56A4, 0xC81D,
-	0x56A6, 0x0420,
-	0x56A8, 0xFC9A,
-	0x56AA, 0x0224,
-	0x56AC, 0xAC7F,
-	0x56AE, 0x0420,
-	0x56B0, 0x8C86,
-	0x56B2, 0x0224,
-	0x56B4, 0x7C80,
-	0x56B6, 0x0420,
-	0x56B8, 0x1086,
-	0x56BA, 0x0224,
-	0x56BC, 0xF887,
-	0x56BE, 0x0320,
-	0x56C0, 0x7CAC,
-	0x56C2, 0x0224,
-	0x56C4, 0x1007,
-	0x56C6, 0x0320,
-	0x56C8, 0xE08E,
-	0x56CA, 0x0224,
-	0x56CC, 0x1409,
-	0x56CE, 0x0020,
-	0x56D0, 0x2495,
-	0x56D2, 0x0224,
-	0x56D4, 0x2046,
-	0x56D6, 0x0420,
-	0x56D8, 0x0CC4,
-	0x56DA, 0x0224,
-	0x56DC, 0xB05B,
-	0x56DE, 0x0420,
-	0x56E0, 0x4088,
-	0x56E2, 0x0224,
-	0x56E4, 0x505C,
-	0x56E6, 0x0320,
-	0x56E8, 0x448A,
-	0x56EA, 0x0224,
-	0x56EC, 0xA45B,
-	0x56EE, 0x0320,
-	0x56F0, 0x5089,
-	0x56F2, 0x0224,
-	0x56F4, 0x306A,
-	0x56F6, 0x0420,
-	0x56F8, 0x1485,
-	0x56FA, 0x0224,
-	0x56FC, 0x90F8,
-	0x56FE, 0x0220,
-	0x5700, 0x44A1,
-	0x5702, 0x0224,
-	0x5704, 0x0454,
-	0x5706, 0x0120,
-	0x5708, 0x18A6,
-	0x570A, 0x0224,
-	0x570C, 0x0453,
-	0x570E, 0x0020,
-	0x5710, 0xA0A7,
-	0x5712, 0x0224,
-	0x5714, 0xC850,
-	0x5716, 0x0220,
-	0x5718, 0xB8AC,
-	0x571A, 0x0224,
-	0x571C, 0x2C88,
-	0x571E, 0x0220,
-	0x5720, 0xF0AD,
-	0x5722, 0x0224,
-	0x5724, 0x7C82,
-	0x5726, 0x0120,
-	0x5728, 0xC8B4,
-	0x572A, 0x0224,
-	0x572C, 0xACF3,
-	0x572E, 0x0320,
-	0x5730, 0x64B5,
-	0x5732, 0x0224,
-	0x5734, 0x1081,
-	0x5736, 0x0320,
-	0x5738, 0x70B9,
-	0x573A, 0x0224,
-	0x573C, 0xBCFD,
-	0x573E, 0x0220,
-	0x5740, 0xE4B9,
-	0x5742, 0x0224,
-	0x5744, 0xBCA5,
-	0x5746, 0x0420,
-	0x5748, 0x7CBA,
-	0x574A, 0x0224,
-	0x574C, 0xB803,
-	0x574E, 0x0320,
-	0x5750, 0xE4BC,
-	0x5752, 0x0224,
-	0x5754, 0x8424,
-	0x5756, 0x0220,
-	0x5758, 0xB0BD,
-	0x575A, 0x0224,
-	0x575C, 0x9C4C,
-	0x575E, 0x0220,
-	0x5760, 0xD0BF,
-	0x5762, 0x0224,
-	0x5764, 0x0C22,
-	0x5766, 0x0220,
-	0x5768, 0x54BE,
-	0x576A, 0x0224,
-	0xFCFC, 0x2000,
-	0x2366, 0x001C,
-	0x2368, 0x001C,
-	0x238E, 0x3F28,
-	0x2398, 0x5037,
-	0x24B8, 0x0101,
-	0x66E4, 0x1E8D,
-	0x66E6, 0x0000,
-	0x6874, 0x0000,
-	0x6876, 0x0000,
-	0x6878, 0x0000,
-	0x687A, 0x0000,
-	0x6884, 0x0100,
-	0x6886, 0x0100,
-	0x6888, 0x0100,
-	0x688A, 0x0100,
-	0x77D2, 0x0000,
-	0x780A, 0x0000,
-	0x793E, 0x0100,
-	0x7940, 0x7017,
-	0x795C, 0x0400,
-	0x795E, 0x0400,
-	0x7960, 0x0800,
-	0x7962, 0x1000,
-	0x7964, 0x0800,
-	0x7966, 0x1000,
-	0x7968, 0x0800,
-	0x796A, 0x0800,
-	0x796C, 0x0800,
-	0x796E, 0x0800,
-	0x7972, 0x0400,
-	0x7974, 0x0400,
-	0x7976, 0x0800,
-	0x7978, 0x1000,
-	0x797A, 0x0800,
-	0x797C, 0x1000,
-	0x797E, 0x0800,
-	0x7980, 0x0800,
-	0x7982, 0x0800,
-	0x7984, 0x0800,
-	0xB3AC, 0x4000,
-	0xB3B4, 0x2000,
-	0xB3B8, 0x1000,
-	0xB3F8, 0x8000,
-	0xB400, 0x4000,
-	0xB404, 0x2000,
-	0xBF70, 0x3A46,
-	0xBF7C, 0x0800,
-	0xC4A8, 0x0000,
-	0xC4F8, 0x00A8,
-	0xC4FA, 0x0000,
-	0xD3DA, 0x0D00,
-	0xD3E0, 0x0D00,
-	0xD3E2, 0x0D00,
-	0xD3E4, 0x0D00,
-	0xD3E6, 0x0D00,
-	0xD3EA, 0x0D00,
-	0xD3F4, 0x301C,
-	0xD3F8, 0x301C,
-	0xDD6C, 0xB47E,
-	0xDD6E, 0xB67E,
-	0xDE34, 0x0000,
-	0xDE36, 0x9231,
-	0xEC42, 0x0100,
-	0xEC44, 0x0100,
-	0xFCFC, 0x2001,
-	0x2542, 0x2020,
-	0x2544, 0x2018,
-	0x2554, 0x0000,
-	0x2556, 0x0000,
-	0x256E, 0x0000,
-	0x25D2, 0x0102,
-	0x2936, 0x4400,
-	0x2A14, 0x0002,
-	0x2A16, 0xDF03,
-	0x2A18, 0x0002,
-	0x2A1A, 0x0002,
-	0x3252, 0x8C00,
-	0x3254, 0x8C00,
-	0x3256, 0x8C00,
-	0x3258, 0x8700,
-	0x325A, 0x8200,
-	0x3E1C, 0x0200,
-	0x3E1E, 0x2000,
-	0x5ACC, 0x6505,
-	0xFCFC, 0x4000,
-	0x1858, 0x123F,
-	0xFCFC, 0x2001,
-	0x3EB8, 0x00FF,
-	0x3ECC, 0xFE03,
-	0x3F12, 0x9001,
-	0x33E0, 0x1E00,
-	0x33E2, 0x1E00,
-	0x33E4, 0x1E00,
-	0x33E6, 0x1E00,
-	0x33E8, 0x1E00,
-	0x33EA, 0x1E00,
-	0x3440, 0x0500,
-	0x3442, 0x0500,
-	0x3444, 0x0500,
-	0x3446, 0x0500,
-	0x3448, 0x0500,
-	0x344A, 0x0500,
-	0x3450, 0x0A00,
-	0x3452, 0x0A00,
-	0x3454, 0x0A00,
-	0x3456, 0x0A00,
-	0x3458, 0x0A00,
-	0x345A, 0x0A00,
-	0x34E0, 0x1400,
-	0x34E2, 0x1400,
-	0x34E4, 0x1400,
-	0x34E6, 0x1400,
-	0x34E8, 0x1400,
-	0x34EA, 0x1400,
-	0x3500, 0x1400,
-	0x3502, 0x1400,
-	0x3504, 0x1400,
-	0x3506, 0x1400,
-	0x3508, 0x1400,
-	0x350A, 0x1400,
-	0x3520, 0x1400,
-	0x3522, 0x1400,
-	0x3524, 0x1400,
-	0x3526, 0x1400,
-	0x3528, 0x1400,
-	0x352A, 0x1400,
-	0x3580, 0x2300,
-	0x3582, 0x2300,
-	0x3584, 0x2300,
-	0x3586, 0x2300,
-	0x3588, 0x2300,
-	0x358A, 0x2300,
-	0x35A0, 0x1900,
-	0x35A2, 0x1900,
-	0x35A4, 0x1900,
-	0x35A6, 0x1900,
-	0x35A8, 0x1900,
-	0x35AA, 0x1900,
-	0x35D0, 0x1E00,
-	0x35D2, 0x1E00,
-	0x35D4, 0x1E00,
-	0x35D6, 0x1E00,
-	0x35D8, 0x1E00,
-	0x35DA, 0x1E00,
-	0x35E0, 0x1E00,
-	0x35E2, 0x1E00,
-	0x35E4, 0x1E00,
-	0x35E6, 0x1E00,
-	0x35E8, 0x1E00,
-	0x35EA, 0x1E00,
-	0x35F0, 0x1E00,
-	0x35F2, 0x1E00,
-	0x35F4, 0x1E00,
-	0x35F6, 0x1E00,
-	0x35F8, 0x1E00,
-	0x35FA, 0x1E00,
-	0x3600, 0x1E00,
-	0x3602, 0x1E00,
-	0x3604, 0x1E00,
-	0x3606, 0x1E00,
-	0x3608, 0x1E00,
-	0x360A, 0x1E00,
-	0x3610, 0x1E00,
-	0x3612, 0x1E00,
-	0x3614, 0x1E00,
-	0x3616, 0x1E00,
-	0x3618, 0x1E00,
-	0x361A, 0x1E00,
-	0x3620, 0x0000,
-	0x3622, 0x0000,
-	0x3624, 0x0000,
-	0x3626, 0x0000,
-	0x3628, 0x0000,
-	0x362A, 0x0000,
-	0x3630, 0x0A00,
-	0x3632, 0x0A00,
-	0x3634, 0x0A00,
-	0x3636, 0x0A00,
-	0x3638, 0x0A00,
-	0x363A, 0x0A00,
-	0x3650, 0x1E00,
-	0x3652, 0x1E00,
-	0x3654, 0x1E00,
-	0x3656, 0x1E00,
-	0x3658, 0x1E00,
-	0x365A, 0x1E00,
-	0x3660, 0x1E00,
-	0x3662, 0x1E00,
-	0x3664, 0x1E00,
-	0x3666, 0x1E00,
-	0x3668, 0x1E00,
-	0x366A, 0x1E00,
-	0x36A0, 0x6400,
-	0x36A2, 0x6400,
-	0x36A4, 0x6400,
-	0x36A6, 0x6400,
-	0x36A8, 0x6400,
-	0x36AA, 0x6400,
-	0x36C0, 0x8C00,
-	0x36C2, 0x8C00,
-	0x36C4, 0x8C00,
-	0x36C6, 0x8C00,
-	0x36C8, 0x8C00,
-	0x36CA, 0x8C00,
-	0x36E0, 0x6400,
-	0x36E2, 0x6400,
-	0x36E4, 0x6400,
-	0x36E6, 0x6400,
-	0x36E8, 0x6400,
-	0x36EA, 0x6400,
-	0x36F0, 0x3200,
-	0x36F2, 0x3200,
-	0x36F4, 0x3200,
-	0x36F6, 0x3200,
-	0x36F8, 0x3200,
-	0x36FA, 0x3200,
-	0x3700, 0x3200,
-	0x3702, 0x3200,
-	0x3704, 0x3200,
-	0x3706, 0x3200,
-	0x3708, 0x3200,
-	0x370A, 0x3200,
-	0x3720, 0x3200,
-	0x3722, 0x3200,
-	0x3724, 0x3200,
-	0x3726, 0x3200,
-	0x3728, 0x3200,
-	0x372A, 0x3200,
-	0x3730, 0x3200,
-	0x3732, 0x3200,
-	0x3734, 0x3200,
-	0x3736, 0x3200,
-	0x3738, 0x3200,
-	0x373A, 0x3200,
-	0x3790, 0x3200,
-	0x3792, 0x3200,
-	0x3794, 0x3200,
-	0x3796, 0x3200,
-	0x3798, 0x3200,
-	0x379A, 0x3200,
-	0x37A0, 0x5000,
-	0x37A2, 0x5000,
-	0x37A4, 0x5000,
-	0x37A6, 0x5000,
-	0x37A8, 0x5000,
-	0x37AA, 0x5000,
-	0x37B0, 0x6400,
-	0x37B2, 0x6400,
-	0x37B4, 0x6400,
-	0x37B6, 0x6400,
-	0x37B8, 0x6400,
-	0x37BA, 0x6400,
-	0x37C0, 0x5000,
-	0x37C2, 0x5000,
-	0x37C4, 0x5000,
-	0x37C6, 0x5000,
-	0x37C8, 0x5000,
-	0x37CA, 0x5000,
-	0x37D0, 0x3200,
-	0x37D2, 0x3200,
-	0x37D4, 0x3200,
-	0x37D6, 0x3200,
-	0x37D8, 0x3200,
-	0x37DA, 0x3200,
-	0x37E0, 0x1E00,
-	0x37E2, 0x1E00,
-	0x37E4, 0x1E00,
-	0x37E6, 0x1E00,
-	0x37E8, 0x1E00,
-	0x37EA, 0x1E00,
-	0x37F0, 0x1E00,
-	0x37F2, 0x1E00,
-	0x37F4, 0x1E00,
-	0x37F6, 0x1E00,
-	0x37F8, 0x1E00,
-	0x37FA, 0x1E00,
-	0x3800, 0x1E00,
-	0x3802, 0x1E00,
-	0x3804, 0x1E00,
-	0x3806, 0x1E00,
-	0x3808, 0x1E00,
-	0x380A, 0x1E00,
-	0x3810, 0x1E00,
-	0x3812, 0x1E00,
-	0x3814, 0x1E00,
-	0x3816, 0x1E00,
-	0x3818, 0x1E00,
-	0x381A, 0x1E00,
-	0x3820, 0x1E00,
-	0x3822, 0x1E00,
-	0x3824, 0x1E00,
-	0x3826, 0x1E00,
-	0x3828, 0x1E00,
-	0x382A, 0x1E00,
-	0x3870, 0x3200,
-	0x3872, 0x3200,
-	0x3874, 0x3200,
-	0x3876, 0x3200,
-	0x3878, 0x3200,
-	0x387A, 0x3200,
-	0x3880, 0x3200,
-	0x3882, 0x3200,
-	0x3884, 0x3200,
-	0x3886, 0x3200,
-	0x3888, 0x3200,
-	0x388A, 0x3200,
-	0x3890, 0x3200,
-	0x3892, 0x3200,
-	0x3894, 0x3200,
-	0x3896, 0x3200,
-	0x3898, 0x3200,
-	0x389A, 0x3200,
-	0x38A0, 0x3200,
-	0x38A2, 0x3200,
-	0x38A4, 0x3200,
-	0x38A6, 0x3200,
-	0x38A8, 0x3200,
-	0x38AA, 0x3200,
-	0x38B0, 0x3200,
-	0x38B2, 0x3200,
-	0x38B4, 0x3200,
-	0x38B6, 0x3200,
-	0x38B8, 0x3200,
-	0x38BA, 0x3200,
-	0x320A, 0xFF03,
-	0x320C, 0x0700,
-	0x320E, 0xFF03,
-	0x3210, 0x0700,
-	0x321E, 0x0000,
-	0x31D4, 0x00FF,
-	0x321A, 0x0406,
-	0x3244, 0x0101,
-	0x3246, 0x0101,
-	0x3248, 0x0010,
-	0x3266, 0x0100,
-	0x3330, 0x0108,
-	0x3334, 0x0100,
-	0x3336, 0x0000,
-	0xFCFC, 0x2002,
-	0xBB8A, 0x0100,
-	0xBB8C, 0x0800,
-	0xBB8E, 0x1000,
-	0xBB90, 0x2000,
-	0xBB92, 0xC800,
-	0xBB94, 0xC800,
-	0xBB96, 0xC800,
-	0xBB98, 0xC800,
-	0xBB9A, 0xC400,
-	0xBB9C, 0xC400,
-	0xBB9E, 0xC400,
-	0xBBA0, 0xC400,
-	0xBBA2, 0xC200,
-	0xBBA4, 0xC200,
-	0xBBA6, 0xC200,
-	0xBBA8, 0xC200,
-	0xBBAA, 0xBE00,
-	0xBBAC, 0xBE00,
-	0xBBAE, 0xBE00,
-	0xBBB0, 0xBE00,
-	0xBBB2, 0xBC00,
-	0xBBB4, 0xBC00,
-	0xBBB6, 0xBC00,
-	0xBBB8, 0xBC00,
-	0xBBBA, 0x2000,
-	0xBBBC, 0x2000,
-	0xBBBE, 0x2000,
-	0xBBC0, 0x2000,
-	0xBBC2, 0x1600,
-	0xBBC4, 0x1600,
-	0xBBC6, 0x1600,
-	0xBBC8, 0x1600,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0000,
-	0xBBD2, 0x0A00,
-	0xBBD4, 0x0A00,
-	0xBBD6, 0x0A00,
-	0xBBD8, 0x0A00,
-	0xBBDA, 0x1400,
-	0xBBDC, 0x1400,
-	0xBBDE, 0x1400,
-	0xBBE0, 0x1400,
-	0xBBE2, 0x2A00,
-	0xBBE4, 0x2A00,
-	0xBBE6, 0x2A00,
-	0xBBE8, 0x2A00,
-	0xBBEA, 0x2A00,
-	0xBBEC, 0x2A00,
-	0xBBEE, 0x2A00,
-	0xBBF0, 0x2A00,
-	0xBBF2, 0x0100,
-	0xBBF4, 0x0100,
-	0xBBF6, 0x0100,
-	0xBBF8, 0x0100,
-	0xBBFA, 0x0F00,
-	0xBBFC, 0x0F00,
-	0xBBFE, 0x0F00,
-	0xBC00, 0x0F00,
-	0xBC02, 0x0400,
-	0xBC04, 0x0400,
-	0xBC06, 0x0400,
-	0xBC08, 0x0400,
-	0xBC0A, 0x1900,
-	0xBC0C, 0x1900,
-	0xBC0E, 0x1900,
-	0xBC10, 0x1900,
-	0xBC12, 0x1400,
-	0xBC14, 0x1400,
-	0xBC16, 0x1400,
-	0xBC18, 0x1400,
-	0xBC1A, 0x3A00,
-	0xBC1C, 0x3A00,
-	0xBC1E, 0x3A00,
-	0xBC20, 0x3A00,
-	0xBC22, 0x0A00,
-	0xBC24, 0x0A00,
-	0xBC26, 0x0A00,
-	0xBC28, 0x0A00,
-	0xBC2A, 0x4B00,
-	0xBC2C, 0x4B00,
-	0xBC2E, 0x4B00,
-	0xBC30, 0x4B00,
-	0xBC32, 0x0200,
-	0xBC34, 0x0600,
-	0xBC36, 0x0C00,
-	0xBC38, 0x0C00,
-	0xBC3A, 0x2A00,
-	0xBC3C, 0x2500,
-	0xBC3E, 0x2000,
-	0xBC40, 0x2000,
-	0xBC42, 0x0000,
-	0xBC44, 0x1000,
-	0xBC46, 0x2300,
-	0xBC48, 0x2300,
-	0xBC4A, 0x3F00,
-	0xBC4C, 0x3100,
-	0xBC4E, 0x2100,
-	0xBC50, 0x2100,
-	0xBC52, 0x0A00,
-	0xBC54, 0x1B00,
-	0xBC56, 0x3000,
-	0xBC58, 0x3000,
-	0xBC5A, 0x1900,
-	0xBC5C, 0x1500,
-	0xBC5E, 0x1100,
-	0xBC60, 0x1100,
-	0xBC62, 0x0F00,
-	0xBC64, 0x0F00,
-	0xBC66, 0x0F00,
-	0xBC68, 0x0F00,
-	0xBC6A, 0x1900,
-	0xBC6C, 0x1900,
-	0xBC6E, 0x1900,
-	0xBC70, 0x1900,
-	0xBC72, 0x0A00,
-	0xBC74, 0x0A00,
-	0xBC76, 0x0A00,
-	0xBC78, 0x0A00,
-	0xBC7A, 0x0B00,
-	0xBC7C, 0x0B00,
-	0xBC7E, 0x0B00,
-	0xBC80, 0x0B00,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x0000,
-	0xBC8A, 0x0800,
-	0xBC8C, 0x0800,
-	0xBC8E, 0x0800,
-	0xBC90, 0x0800,
-	0xFCFC, 0x4000,
-	0xFCFC, 0x2000,
-	0x68D8, 0x0100,
-	0xFCFC, 0x2002,
-	0xBC92, 0x0100,
-	0xFCFC, 0x4000,
-	0x0E04, 0x1C03,
-	0x0E10, 0x0100,
-	0x0E12, 0x00A0,
-	0x0E14, 0x0C84,
-	0x0E16, 0x002B,
-	0x0E18, 0x0300,
-	0x0E1A, 0x3000,
-	0x0E1C, 0x0100,
-	0x0E1E, 0x00A0,
-	0x0E20, 0x0C84,
-	0x0E22, 0x012B,
-	0x0E24, 0x0400,
-	0x0E26, 0x3000,
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0xFCFC, 0x2000,
-	0x3D44, 0x0000,
-	0x3D88, 0xFCFC,
-	0x3D8A, 0xFEFF,
-	0x3D8C, 0xFCFC,
-	0x3D8E, 0xFEFF,
-	0x3D90, 0xFCFC,
-	0x3D92, 0xFEFF,
-	0x3D94, 0xFCFC,
-	0x3D96, 0xFEFF,
-	0x3FE0, 0x0324,
-	0x3FE2, 0x3E8B,
-	0x3FE4, 0x0324,
-	0x3FE6, 0x0080,
-	0x4238, 0x0324,
-	0x423A, 0x3E8B,
-	0x423C, 0x0324,
-	0x423E, 0xA080,
-	0x4490, 0x0324,
-	0x4492, 0x3E8B,
-	0x4494, 0x0324,
-	0x4496, 0xEC80,
-	0x46E8, 0x0324,
-	0x46EA, 0x3E8B,
-	0x46EC, 0x0324,
-	0x46EE, 0x1281,
-	0x4940, 0x0324,
-	0x4942, 0x3E8B,
-	0x4944, 0x0324,
-	0x4946, 0x1884,
-	0x4B98, 0x0324,
-	0x4B9A, 0x3E8B,
-	0x4B9C, 0x0324,
-	0x4B9E, 0x1884,
-	0x4BA0, 0x0324,
-	0x4BA2, 0x0C87,
-	0x4DF0, 0x0324,
-	0x4DF2, 0x3E8B,
-	0x4DF4, 0x0324,
-	0x4DF6, 0xB487,
-	0x5048, 0x0324,
-	0x504A, 0x3E8B,
-	0x504C, 0x0324,
-	0x504E, 0x2088,
-	0x52A0, 0x0324,
-	0x52A2, 0x3E8B,
-	0x52A4, 0x0000,
-	0x52A6, 0x0000,
-	0xFCFC, 0x2003,
-	0x8000, 0xFFFE,
-	0x8002, 0x2400,
-	0x8004, 0xFFFD,
-	0x8006, 0xD49C,
-	0x8008, 0x0003,
-	0x800A, 0xD4A8,
-	0x800C, 0x0001,
-	0x800E, 0xD4AC,
-	0x8010, 0x037E,
-	0x8012, 0xD4D0,
-	0x8014, 0x0011,
-	0x8016, 0xD4DE,
-	0x8018, 0x0028,
-	0x801A, 0xD4EE,
-	0x801C, 0x00E6,
-	0x801E, 0xD4FA,
-	0x8020, 0x0218,
-	0x8022, 0xF3F4,
-	0x8024, 0x00C8,
-	0x8026, 0xFFFE,
-	0x8028, 0x2401,
-	0x802A, 0xFFFD,
-	0x802C, 0x1D72,
-	0x802E, 0x0003,
-	0x8030, 0x1D74,
-	0x8032, 0x0003,
-	0x8034, 0x1D82,
-	0x8036, 0x0003,
-	0x8038, 0x1D84,
-	0x803A, 0x0003,
-	0x803C, 0xFFFE,
-	0x803E, 0x2400,
-	0x8040, 0xFFFD,
-	0x8042, 0x0342,
-	0x8044, 0x2580,
-	0x8046, 0x0000,
-	0x8048, 0xFFFF,
-	0x804A, 0x0008,
-	0x804C, 0x2401,
-	0x804E, 0x1DF2,
-	0x8050, 0x0300,
-	0x8052, 0x0300,
-	0x8054, 0x0600,
-	0x8056, 0x0600,
-	0x8058, 0xFFFF,
-	0x805A, 0x0008,
-	0x805C, 0x2401,
-	0x805E, 0x1E02,
-	0x8060, 0x0300,
-	0x8062, 0x0300,
-	0x8064, 0x0600,
-	0x8066, 0x0600,
-	0x8068, 0xFFFF,
-	0x806A, 0x0008,
-	0x806C, 0x2401,
-	0x806E, 0x1E12,
-	0x8070, 0x0600,
-	0x8072, 0x0600,
-	0x8074, 0x0600,
-	0x8076, 0x0600,
-	0x8078, 0xFFFF,
-	0x807A, 0x0008,
-	0x807C, 0x2401,
-	0x807E, 0x1E22,
-	0x8080, 0x0600,
-	0x8082, 0x0600,
-	0x8084, 0x0600,
-	0x8086, 0x0600,
-	0x8088, 0xFFFF,
-	0x808A, 0x000C,
-	0x808C, 0x2400,
-	0x808E, 0x0344,
-	0x8090, 0x0000,
-	0x8092, 0x0000,
-	0x8094, 0x1F20,
-	0x8096, 0x1F18,
-	0x8098, 0x0020,
-	0x809A, 0x0018,
-	0x809C, 0x0000,
-	0x809E, 0x0000,
-	0x80A0, 0xFFFE,
-	0x80A2, 0x2400,
-	0x80A4, 0xFFFD,
-	0x80A6, 0xD4AC,
-	0x80A8, 0x0316,
-	0x80AA, 0xF3F4,
-	0x80AC, 0x00C8,
-	0x80AE, 0xFFFE,
-	0x80B0, 0x2401,
-	0x80B2, 0xFFFD,
-	0x80B4, 0x25E0,
-	0x80B6, 0x0001,
-	0x80B8, 0x25E2,
-	0x80BA, 0x00CD,
-	0x80BC, 0x31D0,
-	0x80BE, 0x0000,
-	0x80C0, 0x31FA,
-	0x80C2, 0x0400,
-	0x80C4, 0xFFFE,
-	0x80C6, 0x2400,
-	0x80C8, 0xFFFD,
-	0x80CA, 0x0B08,
-	0x80CC, 0x0001,
-	0x80CE, 0x0342,
-	0x80D0, 0x2580,
-	0x80D2, 0x0000,
-	0x80D4, 0xFFFF,
-	0x80D6, 0x000C,
-	0x80D8, 0x2400,
-	0x80DA, 0x0344,
-	0x80DC, 0x0000,
-	0x80DE, 0x0000,
-	0x80E0, 0x1F20,
-	0x80E2, 0x1F18,
-	0x80E4, 0x0020,
-	0x80E6, 0x0018,
-	0x80E8, 0x0000,
-	0x80EA, 0x0000,
-	0x80EC, 0xFFFE,
-	0x80EE, 0x2401,
-	0x80F0, 0xFFFD,
-	0x80F2, 0x25E0,
-	0x80F4, 0x0001,
-	0x80F6, 0x25E2,
-	0x80F8, 0x00CD,
-	0x80FA, 0x31D0,
-	0x80FC, 0x0000,
-	0x80FE, 0x31FA,
-	0x8100, 0x0400,
-	0x8102, 0xFFFE,
-	0x8104, 0x2400,
-	0x8106, 0xFFFD,
-	0x8108, 0x0B08,
-	0x810A, 0x0001,
-	0x810C, 0x0000,
-	0x810E, 0x0000,
-	0x8110, 0x0000,
-	0x8112, 0xFFFE,
-	0x8114, 0x2400,
-	0x8116, 0xFFFD,
-	0x8118, 0x703C,
-	0x811A, 0x0101,
-	0x811C, 0x703E,
-	0x811E, 0x0001,
-	0x8120, 0x7048,
-	0x8122, 0x021F,
-	0x8124, 0x704A,
-	0x8126, 0x0A00,
-	0x8128, 0x705A,
-	0x812A, 0x0220,
-	0x812C, 0x705C,
-	0x812E, 0x0A01,
-	0x8130, 0x7274,
-	0x8132, 0x000B,
-	0x8134, 0x7276,
-	0x8136, 0x000B,
-	0x8138, 0x7278,
-	0x813A, 0xD236,
-	0x813C, 0x795A,
-	0x813E, 0x0020,
-	0x8140, 0x7970,
-	0x8142, 0x0020,
-	0x8144, 0x7996,
-	0x8146, 0x0101,
-	0x8148, 0x7A0E,
-	0x814A, 0x000F,
-	0x814C, 0x7A6E,
-	0x814E, 0x0019,
-	0x8150, 0x7A86,
-	0x8152, 0x0019,
-	0x8154, 0x7BDA,
-	0x8156, 0x004C,
-	0x8158, 0x82A2,
-	0x815A, 0x0014,
-	0x815C, 0x82BA,
-	0x815E, 0x0033,
-	0x8160, 0x8C9E,
-	0x8162, 0x0035,
-	0x8164, 0x8CA2,
-	0x8166, 0x0070,
-	0x8168, 0x8CCE,
-	0x816A, 0x0096,
-	0x816C, 0x8CD2,
-	0x816E, 0x00BE,
-	0x8170, 0xB176,
-	0x8172, 0x0206,
-	0x8174, 0xB220,
-	0x8176, 0x0301,
-	0x8178, 0xB268,
-	0x817A, 0xF380,
-	0x817C, 0xC4E2,
-	0x817E, 0x0000,
-	0x8180, 0xC53C,
-	0x8182, 0x0005,
-	0x8184, 0xC554,
-	0x8186, 0x1000,
-	0x8188, 0xD326,
-	0x818A, 0x1001,
-	0x818C, 0xD3EC,
-	0x818E, 0x1CB0,
-	0x8190, 0xD4A8,
-	0x8192, 0x0000,
-	0x8194, 0xD4AC,
-	0x8196, 0x0001,
-	0x8198, 0xD4B0,
-	0x819A, 0x00BE,
-	0x819C, 0xD4B8,
-	0x819E, 0x0014,
-	0x81A0, 0xD4BC,
-	0x81A2, 0x0032,
-	0x81A4, 0xD4C4,
-	0x81A6, 0x0000,
-	0x81A8, 0xD4C8,
-	0x81AA, 0x0001,
-	0x81AC, 0xD4D0,
-	0x81AE, 0x000A,
-	0x81B0, 0xD4D2,
-	0x81B2, 0x0000,
-	0x81B4, 0xD4D6,
-	0x81B6, 0x001A,
-	0x81B8, 0xD4DE,
-	0x81BA, 0x0001,
-	0x81BC, 0xD4E2,
-	0x81BE, 0x0036,
-	0x81C0, 0xD4EC,
-	0x81C2, 0x0000,
-	0x81C4, 0xD4EE,
-	0x81C6, 0x0000,
-	0x81C8, 0xD4F8,
-	0x81CA, 0x0000,
-	0x81CC, 0xD4FA,
-	0x81CE, 0x0000,
-	0x81D0, 0xD554,
-	0x81D2, 0x00C4,
-	0x81D4, 0xD556,
-	0x81D6, 0x00FA,
-	0x81D8, 0xD560,
-	0x81DA, 0x0352,
-	0x81DC, 0xD562,
-	0x81DE, 0x0388,
-	0x81E0, 0xD684,
-	0x81E2, 0xF380,
-	0x81E4, 0xDADA,
-	0x81E6, 0x0100,
-	0x81E8, 0xDC8C,
-	0x81EA, 0x0B3F,
-	0x81EC, 0xDC94,
-	0x81EE, 0x0301,
-	0x81F0, 0xE980,
-	0x81F2, 0x049E,
-	0x81F4, 0xF014,
-	0x81F6, 0x0007,
-	0x81F8, 0xF3F4,
-	0x81FA, 0x00C8,
-	0x81FC, 0xF3F6,
-	0x81FE, 0x10D6,
-	0x8200, 0xFFFE,
-	0x8202, 0x2401,
-	0x8204, 0xFFFD,
-	0x8206, 0x1C28,
-	0x8208, 0x04F0,
-	0x820A, 0x1C50,
-	0x820C, 0x02FD,
-	0x820E, 0x1C78,
-	0x8210, 0x02FD,
-	0x8212, 0x1CA0,
-	0x8214, 0x04F0,
-	0x8216, 0x2540,
-	0x8218, 0x0000,
-	0x821A, 0x29A8,
-	0x821C, 0x0001,
-	0x821E, 0x29BA,
-	0x8220, 0x0020,
-	0x8222, 0x2A44,
-	0x8224, 0x0739,
-	0x8226, 0x2A56,
-	0x8228, 0x0004,
-	0x822A, 0x3132,
-	0x822C, 0x0002,
-	0x822E, 0x31D0,
-	0x8230, 0x0000,
-	0x8232, 0x31F8,
-	0x8234, 0x0000,
-	0x8236, 0x31FA,
-	0x8238, 0x0000,
-	0x823A, 0x437E,
-	0x823C, 0x00E4,
-	0x823E, 0x4396,
-	0x8240, 0x000B,
-	0x8242, 0x4398,
-	0x8244, 0x000B,
-	0x8246, 0x43C6,
-	0x8248, 0x1401,
-	0x824A, 0xFFFE,
-	0x824C, 0x2402,
-	0x824E, 0xFFFD,
-	0x8250, 0x84C4,
-	0x8252, 0x0001,
-	0x8254, 0xA598,
-	0x8256, 0x0032,
-	0x8258, 0xA59A,
-	0x825A, 0x0035,
-	0x825C, 0xFFFE,
-	0x825E, 0x2400,
-	0x8260, 0xFFFD,
-	0x8262, 0x0086,
-	0x8264, 0x1400,
-	0x8266, 0x0350,
-	0x8268, 0x0008,
-	0x826A, 0x0352,
-	0x826C, 0x0008,
-	0x826E, 0x0900,
-	0x8270, 0x2222,
-	0x8272, 0x0B02,
-	0x8274, 0x0201,
-	0x8276, 0x0B08,
-	0x8278, 0x0001,
-	0x827A, 0x0342,
-	0x827C, 0x12B0,
-	0x827E, 0x0000,
-	0x8280, 0xFFFF,
-	0x8282, 0x0008,
-	0x8284, 0x2400,
-	0x8286, 0x7314,
-	0x8288, 0x2E00,
-	0x828A, 0x3000,
-	0x828C, 0x9EFD,
-	0x828E, 0x0040,
-	0x8290, 0xFFFF,
-	0x8292, 0x0008,
-	0x8294, 0x2400,
-	0x8296, 0xDAE0,
-	0x8298, 0xA000,
-	0x829A, 0x0001,
-	0x829C, 0x0005,
-	0x829E, 0x4011,
-	0x82A0, 0xFFFF,
-	0x82A2, 0x000C,
-	0x82A4, 0x2400,
-	0x82A6, 0xDB0C,
-	0x82A8, 0x1F1F,
-	0x82AA, 0x0080,
-	0x82AC, 0x0040,
-	0x82AE, 0x0020,
-	0x82B0, 0x0040,
-	0x82B2, 0x0040,
-	0x82B4, 0xFFFF,
-	0x82B6, 0x000C,
-	0x82B8, 0x2400,
-	0x82BA, 0xDB3C,
-	0x82BC, 0xD2FD,
-	0x82BE, 0x12D2,
-	0x82C0, 0x12D2,
-	0x82C2, 0x12D2,
-	0x82C4, 0x12D2,
-	0x82C6, 0x12D2,
-	0x82C8, 0xFFFF,
-	0x82CA, 0x000A,
-	0x82CC, 0x2401,
-	0x82CE, 0x1C2C,
-	0x82D0, 0x2010,
-	0x82D2, 0x0005,
-	0x82D4, 0x00A0,
-	0x82D6, 0x5110,
-	0x82D8, 0x3510,
-	0x82DA, 0xFFFF,
-	0x82DC, 0x0012,
-	0x82DE, 0x2401,
-	0x82E0, 0x1C54,
-	0x82E2, 0x2810,
-	0x82E4, 0x0003,
-	0x82E6, 0xF004,
-	0x82E8, 0x0010,
-	0x82EA, 0x3110,
-	0x82EC, 0x0005,
-	0x82EE, 0x00A0,
-	0x82F0, 0x6E10,
-	0x82F2, 0x6E10,
-	0x82F4, 0xFFFF,
-	0x82F6, 0x0012,
-	0x82F8, 0x2401,
-	0x82FA, 0x1C7C,
-	0x82FC, 0x2810,
-	0x82FE, 0x0003,
-	0x8300, 0xF004,
-	0x8302, 0x0010,
-	0x8304, 0x3110,
-	0x8306, 0x0005,
-	0x8308, 0x00A0,
-	0x830A, 0x6610,
-	0x830C, 0x6610,
-	0x830E, 0xFFFF,
-	0x8310, 0x000A,
-	0x8312, 0x2401,
-	0x8314, 0x1CA4,
-	0x8316, 0x2010,
-	0x8318, 0x0005,
-	0x831A, 0x00A0,
-	0x831C, 0x5110,
-	0x831E, 0x3510,
-	0x8320, 0xFFFF,
-	0x8322, 0x0010,
-	0x8324, 0x2401,
-	0x8326, 0x1CC6,
-	0x8328, 0x0001,
-	0x832A, 0xF004,
-	0x832C, 0x0010,
-	0x832E, 0x2010,
-	0x8330, 0x0005,
-	0x8332, 0x00A0,
-	0x8334, 0x5110,
-	0x8336, 0x3510,
-	0x8338, 0xFFFF,
-	0x833A, 0x0018,
-	0x833C, 0x2401,
-	0x833E, 0x1CEE,
-	0x8340, 0x0001,
-	0x8342, 0xFD02,
-	0x8344, 0x0010,
-	0x8346, 0x2810,
-	0x8348, 0x0003,
-	0x834A, 0xF004,
-	0x834C, 0x0010,
-	0x834E, 0x3110,
-	0x8350, 0x0005,
-	0x8352, 0x00A0,
-	0x8354, 0x6E10,
-	0x8356, 0x6E10,
-	0x8358, 0xFFFF,
-	0x835A, 0x0018,
-	0x835C, 0x2401,
-	0x835E, 0x1D16,
-	0x8360, 0x0001,
-	0x8362, 0xFD02,
-	0x8364, 0x0010,
-	0x8366, 0x2810,
-	0x8368, 0x0003,
-	0x836A, 0xF004,
-	0x836C, 0x0010,
-	0x836E, 0x3110,
-	0x8370, 0x0005,
-	0x8372, 0x00A0,
-	0x8374, 0x6610,
-	0x8376, 0x6610,
-	0x8378, 0xFFFF,
-	0x837A, 0x0010,
-	0x837C, 0x2401,
-	0x837E, 0x1D3E,
-	0x8380, 0x0001,
-	0x8382, 0xF004,
-	0x8384, 0x0010,
-	0x8386, 0x2010,
-	0x8388, 0x0005,
-	0x838A, 0x00A0,
-	0x838C, 0x5110,
-	0x838E, 0x3510,
-	0x8390, 0xFFFF,
-	0x8392, 0x0008,
-	0x8394, 0x2401,
-	0x8396, 0x1DF2,
-	0x8398, 0x0600,
-	0x839A, 0x0600,
-	0x839C, 0x0600,
-	0x839E, 0x0600,
-	0x83A0, 0xFFFF,
-	0x83A2, 0x0008,
-	0x83A4, 0x2401,
-	0x83A6, 0x1E02,
-	0x83A8, 0x0600,
-	0x83AA, 0x0600,
-	0x83AC, 0x0600,
-	0x83AE, 0x0600,
-	0x83B0, 0xFFFF,
-	0x83B2, 0x0008,
-	0x83B4, 0x2401,
-	0x83B6, 0x1E12,
-	0x83B8, 0x0C00,
-	0x83BA, 0x0C00,
-	0x83BC, 0x0C00,
-	0x83BE, 0x0C00,
-	0x83C0, 0xFFFF,
-	0x83C2, 0x0008,
-	0x83C4, 0x2401,
-	0x83C6, 0x1E22,
-	0x83C8, 0x0C00,
-	0x83CA, 0x0C00,
-	0x83CC, 0x0C00,
-	0x83CE, 0x0C00,
-	0x83D0, 0xFFFF,
-	0x83D2, 0x001C,
-	0x83D4, 0x2402,
-	0x83D6, 0xA57A,
-	0x83D8, 0xA000,
-	0x83DA, 0x4001,
-	0x83DC, 0x8002,
-	0x83DE, 0x0005,
-	0x83E0, 0x000A,
-	0x83E2, 0xA00F,
-	0x83E4, 0x4011,
-	0x83E6, 0x0E00,
-	0x83E8, 0x2000,
-	0x83EA, 0x2800,
-	0x83EC, 0x1400,
-	0x83EE, 0x2200,
-	0x83F0, 0x2800,
-	0x83F2, 0x2C00,
-	0x83F4, 0xFFFF,
-	0x83F6, 0x0008,
-	0x83F8, 0x2400,
-	0x83FA, 0x0344,
-	0x83FC, 0x0000,
-	0x83FE, 0x0000,
-	0x8400, 0x1F20,
-	0x8402, 0x1F18,
-	0x8404, 0xFFFF,
-	0x8406, 0x0008,
-	0x8408, 0x2400,
-	0x840A, 0x0380,
-	0x840C, 0x0200,
-	0x840E, 0x0200,
-	0x8410, 0x0200,
-	0x8412, 0x0200,
-	0x8414, 0x0000,
-	0x8416, 0x0000,
-	0x8418, 0xFFFE,
-	0x841A, 0x2400,
-	0x841C, 0xFFFD,
-	0x841E, 0x703C,
-	0x8420, 0x0101,
-	0x8422, 0x703E,
-	0x8424, 0x0001,
-	0x8426, 0x7048,
-	0x8428, 0x021F,
-	0x842A, 0x704A,
-	0x842C, 0x0A00,
-	0x842E, 0x705A,
-	0x8430, 0x0220,
-	0x8432, 0x705C,
-	0x8434, 0x0A01,
-	0x8436, 0x7274,
-	0x8438, 0x000B,
-	0x843A, 0x7276,
-	0x843C, 0x000B,
-	0x843E, 0x7278,
-	0x8440, 0xD236,
-	0x8442, 0x795A,
-	0x8444, 0x0020,
-	0x8446, 0x7970,
-	0x8448, 0x0020,
-	0x844A, 0x7996,
-	0x844C, 0x0101,
-	0x844E, 0x7A0E,
-	0x8450, 0x000F,
-	0x8452, 0x7A6E,
-	0x8454, 0x0019,
-	0x8456, 0x7A86,
-	0x8458, 0x0019,
-	0x845A, 0x7BDA,
-	0x845C, 0x004C,
-	0x845E, 0x82A2,
-	0x8460, 0x0014,
-	0x8462, 0x82BA,
-	0x8464, 0x0033,
-	0x8466, 0x8C9E,
-	0x8468, 0x0035,
-	0x846A, 0x8CA2,
-	0x846C, 0x0070,
-	0x846E, 0x8CCE,
-	0x8470, 0x0096,
-	0x8472, 0x8CD2,
-	0x8474, 0x00BE,
-	0x8476, 0xB176,
-	0x8478, 0x0206,
-	0x847A, 0xB220,
-	0x847C, 0x0301,
-	0x847E, 0xB268,
-	0x8480, 0xF380,
-	0x8482, 0xC4E2,
-	0x8484, 0x0000,
-	0x8486, 0xC53C,
-	0x8488, 0x0005,
-	0x848A, 0xC554,
-	0x848C, 0x1000,
-	0x848E, 0xD326,
-	0x8490, 0x1001,
-	0x8492, 0xD3EC,
-	0x8494, 0x1CB0,
-	0x8496, 0xD4A8,
-	0x8498, 0x0000,
-	0x849A, 0xD4AC,
-	0x849C, 0x0001,
-	0x849E, 0xD4B0,
-	0x84A0, 0x00BE,
-	0x84A2, 0xD4B8,
-	0x84A4, 0x0014,
-	0x84A6, 0xD4BC,
-	0x84A8, 0x0032,
-	0x84AA, 0xD4C4,
-	0x84AC, 0x0000,
-	0x84AE, 0xD4C8,
-	0x84B0, 0x0001,
-	0x84B2, 0xD4D0,
-	0x84B4, 0x000A,
-	0x84B6, 0xD4D2,
-	0x84B8, 0x0000,
-	0x84BA, 0xD4D6,
-	0x84BC, 0x001A,
-	0x84BE, 0xD4DE,
-	0x84C0, 0x0001,
-	0x84C2, 0xD4E2,
-	0x84C4, 0x0036,
-	0x84C6, 0xD4EC,
-	0x84C8, 0x0000,
-	0x84CA, 0xD4EE,
-	0x84CC, 0x0000,
-	0x84CE, 0xD4F8,
-	0x84D0, 0x0000,
-	0x84D2, 0xD4FA,
-	0x84D4, 0x0000,
-	0x84D6, 0xD554,
-	0x84D8, 0x00C4,
-	0x84DA, 0xD556,
-	0x84DC, 0x00FA,
-	0x84DE, 0xD560,
-	0x84E0, 0x0352,
-	0x84E2, 0xD562,
-	0x84E4, 0x0388,
-	0x84E6, 0xD684,
-	0x84E8, 0xF380,
-	0x84EA, 0xDADA,
-	0x84EC, 0x0100,
-	0x84EE, 0xDC8C,
-	0x84F0, 0x0B3F,
-	0x84F2, 0xDC94,
-	0x84F4, 0x0301,
-	0x84F6, 0xE980,
-	0x84F8, 0x049E,
-	0x84FA, 0xF014,
-	0x84FC, 0x0007,
-	0x84FE, 0xF3F4,
-	0x8500, 0x00C8,
-	0x8502, 0xF3F6,
-	0x8504, 0x10D6,
-	0x8506, 0xFFFE,
-	0x8508, 0x2401,
-	0x850A, 0xFFFD,
-	0x850C, 0x1C4E,
-	0x850E, 0x0180,
-	0x8510, 0x1C50,
-	0x8512, 0x0480,
-	0x8514, 0x2540,
-	0x8516, 0x0000,
-	0x8518, 0x29A8,
-	0x851A, 0x0001,
-	0x851C, 0x29BA,
-	0x851E, 0x0020,
-	0x8520, 0x2A44,
-	0x8522, 0x0739,
-	0x8524, 0x2A56,
-	0x8526, 0x0004,
-	0x8528, 0x3132,
-	0x852A, 0x0002,
-	0x852C, 0x31D0,
-	0x852E, 0x0000,
-	0x8530, 0x31F8,
-	0x8532, 0x0000,
-	0x8534, 0x31FA,
-	0x8536, 0x0000,
-	0x8538, 0x437E,
-	0x853A, 0x00E4,
-	0x853C, 0x4396,
-	0x853E, 0x000B,
-	0x8540, 0x4398,
-	0x8542, 0x000B,
-	0x8544, 0x43C6,
-	0x8546, 0x1401,
-	0x8548, 0xFFFE,
-	0x854A, 0x2402,
-	0x854C, 0xFFFD,
-	0x854E, 0x84C4,
-	0x8550, 0x0001,
-	0x8552, 0xA598,
-	0x8554, 0x0032,
-	0x8556, 0xA59A,
-	0x8558, 0x0035,
-	0x855A, 0xFFFE,
-	0x855C, 0x2400,
-	0x855E, 0xFFFD,
-	0x8560, 0x0086,
-	0x8562, 0x1400,
-	0x8564, 0x0350,
-	0x8566, 0x0008,
-	0x8568, 0x0352,
-	0x856A, 0x0008,
-	0x856C, 0x0900,
-	0x856E, 0x2222,
-	0x8570, 0x0B02,
-	0x8572, 0x0201,
-	0x8574, 0x0B08,
-	0x8576, 0x0001,
-	0x8578, 0x0E00,
-	0x857A, 0x0302,
-	0x857C, 0x0342,
-	0x857E, 0x12B0,
-	0x8580, 0x0000,
-	0x8582, 0xFFFF,
-	0x8584, 0x0008,
-	0x8586, 0x2400,
-	0x8588, 0x7314,
-	0x858A, 0x2E00,
-	0x858C, 0x3000,
-	0x858E, 0x9EFD,
-	0x8590, 0x0040,
-	0x8592, 0xFFFF,
-	0x8594, 0x0008,
-	0x8596, 0x2400,
-	0x8598, 0xDAE0,
-	0x859A, 0xA000,
-	0x859C, 0x0001,
-	0x859E, 0x0005,
-	0x85A0, 0x4011,
-	0x85A2, 0xFFFF,
-	0x85A4, 0x000C,
-	0x85A6, 0x2400,
-	0x85A8, 0xDB0C,
-	0x85AA, 0x1F1F,
-	0x85AC, 0x0080,
-	0x85AE, 0x0040,
-	0x85B0, 0x0020,
-	0x85B2, 0x0040,
-	0x85B4, 0x0060,
-	0x85B6, 0xFFFF,
-	0x85B8, 0x000C,
-	0x85BA, 0x2400,
-	0x85BC, 0xDB3C,
-	0x85BE, 0xD2FD,
-	0x85C0, 0x12D2,
-	0x85C2, 0x12D2,
-	0x85C4, 0x12D2,
-	0x85C6, 0x12D2,
-	0x85C8, 0x12D2,
-	0x85CA, 0xFFFF,
-	0x85CC, 0x0010,
-	0x85CE, 0x2401,
-	0x85D0, 0x1C26,
-	0x85D2, 0x8001,
-	0x85D4, 0x8004,
-	0x85D6, 0x2010,
-	0x85D8, 0x0010,
-	0x85DA, 0x0005,
-	0x85DC, 0x00A0,
-	0x85DE, 0x5110,
-	0x85E0, 0x3510,
-	0x85E2, 0xFFFF,
-	0x85E4, 0x000A,
-	0x85E6, 0x2401,
-	0x85E8, 0x1C54,
-	0x85EA, 0x0010,
-	0x85EC, 0x0005,
-	0x85EE, 0x00A0,
-	0x85F0, 0x7210,
-	0x85F2, 0x7210,
-	0x85F4, 0xFFFF,
-	0x85F6, 0x0010,
-	0x85F8, 0x2401,
-	0x85FA, 0x1C76,
-	0x85FC, 0x8001,
-	0x85FE, 0x8004,
-	0x8600, 0x2010,
-	0x8602, 0x0010,
-	0x8604, 0x0005,
-	0x8606, 0x00A0,
-	0x8608, 0x6610,
-	0x860A, 0x6610,
-	0x860C, 0xFFFF,
-	0x860E, 0x0010,
-	0x8610, 0x2401,
-	0x8612, 0x1C9E,
-	0x8614, 0x8001,
-	0x8616, 0x8004,
-	0x8618, 0x2010,
-	0x861A, 0x2010,
-	0x861C, 0x0005,
-	0x861E, 0x00A0,
-	0x8620, 0x5110,
-	0x8622, 0x3510,
-	0x8624, 0xFFFF,
-	0x8626, 0x0010,
-	0x8628, 0x2401,
-	0x862A, 0x1CC6,
-	0x862C, 0x8001,
-	0x862E, 0x8004,
-	0x8630, 0x2010,
-	0x8632, 0x0010,
-	0x8634, 0x0005,
-	0x8636, 0x00A0,
-	0x8638, 0x5110,
-	0x863A, 0x3510,
-	0x863C, 0xFFFF,
-	0x863E, 0x0010,
-	0x8640, 0x2401,
-	0x8642, 0x1CEE,
-	0x8644, 0x8001,
-	0x8646, 0x8004,
-	0x8648, 0x0010,
-	0x864A, 0x0010,
-	0x864C, 0x0005,
-	0x864E, 0x00A0,
-	0x8650, 0x7210,
-	0x8652, 0x7210,
-	0x8654, 0xFFFF,
-	0x8656, 0x0010,
-	0x8658, 0x2401,
-	0x865A, 0x1D16,
-	0x865C, 0x8001,
-	0x865E, 0x8004,
-	0x8660, 0x2010,
-	0x8662, 0x0010,
-	0x8664, 0x0005,
-	0x8666, 0x00A0,
-	0x8668, 0x6610,
-	0x866A, 0x6610,
-	0x866C, 0xFFFF,
-	0x866E, 0x0010,
-	0x8670, 0x2401,
-	0x8672, 0x1D3E,
-	0x8674, 0x8001,
-	0x8676, 0x8004,
-	0x8678, 0x2010,
-	0x867A, 0x2010,
-	0x867C, 0x0005,
-	0x867E, 0x00A0,
-	0x8680, 0x5110,
-	0x8682, 0x3510,
-	0x8684, 0xFFFF,
-	0x8686, 0x0008,
-	0x8688, 0x2401,
-	0x868A, 0x1DF2,
-	0x868C, 0x0C00,
-	0x868E, 0x0C00,
-	0x8690, 0x0C00,
-	0x8692, 0x0C00,
-	0x8694, 0xFFFF,
-	0x8696, 0x0008,
-	0x8698, 0x2401,
-	0x869A, 0x1E02,
-	0x869C, 0x0C00,
-	0x869E, 0x0C00,
-	0x86A0, 0x0C00,
-	0x86A2, 0x0C00,
-	0x86A4, 0xFFFF,
-	0x86A6, 0x0008,
-	0x86A8, 0x2401,
-	0x86AA, 0x1E12,
-	0x86AC, 0x0C00,
-	0x86AE, 0x0C00,
-	0x86B0, 0x0C00,
-	0x86B2, 0x0C00,
-	0x86B4, 0xFFFF,
-	0x86B6, 0x0008,
-	0x86B8, 0x2401,
-	0x86BA, 0x1E22,
-	0x86BC, 0x0C00,
-	0x86BE, 0x0C00,
-	0x86C0, 0x0C00,
-	0x86C2, 0x0C00,
-	0x86C4, 0xFFFF,
-	0x86C6, 0x001C,
-	0x86C8, 0x2402,
-	0x86CA, 0xA57A,
-	0x86CC, 0xA000,
-	0x86CE, 0x4001,
-	0x86D0, 0x8002,
-	0x86D2, 0x0005,
-	0x86D4, 0x000A,
-	0x86D6, 0xA00F,
-	0x86D8, 0x4011,
-	0x86DA, 0x0E00,
-	0x86DC, 0x2000,
-	0x86DE, 0x2800,
-	0x86E0, 0x1400,
-	0x86E2, 0x2200,
-	0x86E4, 0x2800,
-	0x86E6, 0x2C00,
-	0x86E8, 0xFFFF,
-	0x86EA, 0x0008,
-	0x86EC, 0x2400,
-	0x86EE, 0x0344,
-	0x86F0, 0x0000,
-	0x86F2, 0x0000,
-	0x86F4, 0x1F20,
-	0x86F6, 0x1F18,
-	0x86F8, 0xFFFF,
-	0x86FA, 0x0008,
-	0x86FC, 0x2400,
-	0x86FE, 0x0380,
-	0x8700, 0x0200,
-	0x8702, 0x0200,
-	0x8704, 0x0200,
-	0x8706, 0x0200,
-	0x8708, 0x0000,
-	0x870A, 0x0000,
-	0x870C, 0xFFFE,
-	0x870E, 0x2400,
-	0x8710, 0xFFFD,
-	0x8712, 0xD4B0,
-	0x8714, 0x049E,
-	0x8716, 0xDB14,
-	0x8718, 0x2000,
-	0x871A, 0xDB16,
-	0x871C, 0x3000,
-	0x871E, 0xFFFE,
-	0x8720, 0x2401,
-	0x8722, 0xFFFD,
-	0x8724, 0x1C54,
-	0x8726, 0x1010,
-	0x8728, 0x1C5A,
-	0x872A, 0x1078,
-	0x872C, 0x1C5C,
-	0x872E, 0x1078,
-	0x8730, 0x1C7A,
-	0x8732, 0x1028,
-	0x8734, 0x1C7C,
-	0x8736, 0x0FFE,
-	0x8738, 0x1CA4,
-	0x873A, 0x1010,
-	0x873C, 0x1CF4,
-	0x873E, 0x1010,
-	0x8740, 0x1CFA,
-	0x8742, 0x1078,
-	0x8744, 0x1CFC,
-	0x8746, 0x1078,
-	0x8748, 0x1D1A,
-	0x874A, 0x1028,
-	0x874C, 0x1D1C,
-	0x874E, 0x0FFE,
-	0x8750, 0x1D44,
-	0x8752, 0x1010,
-	0x8754, 0x2A44,
-	0x8756, 0x0952,
-	0x8758, 0xFFFE,
-	0x875A, 0x2400,
-	0x875C, 0xFFFD,
-	0x875E, 0x0346,
-	0x8760, 0x0300,
-	0x8762, 0x034A,
-	0x8764, 0x151F,
-	0x8766, 0x034E,
-	0x8768, 0x0900,
-	0x876A, 0x0E00,
-	0x876C, 0x0300,
-	0x876E, 0x0000,
-	0x8770, 0xFFFF,
-	0x8772, 0x0008,
-	0x8774, 0x2401,
-	0x8776, 0x1DF2,
-	0x8778, 0x0600,
-	0x877A, 0x0600,
-	0x877C, 0x0600,
-	0x877E, 0x0600,
-	0x8780, 0xFFFF,
-	0x8782, 0x0008,
-	0x8784, 0x2401,
-	0x8786, 0x1E02,
-	0x8788, 0x0600,
-	0x878A, 0x0600,
-	0x878C, 0x0600,
-	0x878E, 0x0600,
-	0x8790, 0xFFFF,
-	0x8792, 0x0008,
-	0x8794, 0x2401,
-	0x8796, 0x1E12,
-	0x8798, 0x0000,
-	0x879A, 0x0000,
-	0x879C, 0x0000,
-	0x879E, 0x0000,
-	0x87A0, 0xFFFF,
-	0x87A2, 0x0008,
-	0x87A4, 0x2401,
-	0x87A6, 0x1E22,
-	0x87A8, 0x0000,
-	0x87AA, 0x0000,
-	0x87AC, 0x0000,
-	0x87AE, 0x0000,
-	0x87B0, 0x0000,
-	0x87B2, 0x0000,
-	0x87B4, 0xFFFE,
-	0x87B6, 0x2400,
-	0x87B8, 0xFFFD,
-	0x87BA, 0x7048,
-	0x87BC, 0x002F,
-	0x87BE, 0x705A,
-	0x87C0, 0x0030,
-	0x87C2, 0x7274,
-	0x87C4, 0x000D,
-	0x87C6, 0x7276,
-	0x87C8, 0x000C,
-	0x87CA, 0x7278,
-	0x87CC, 0xD236,
-	0x87CE, 0xD49C,
-	0x87D0, 0x0000,
-	0x87D2, 0xD4A8,
-	0x87D4, 0x0000,
-	0x87D6, 0xD4AC,
-	0x87D8, 0x0001,
-	0x87DA, 0xD4B8,
-	0x87DC, 0x0014,
-	0x87DE, 0xD4C4,
-	0x87E0, 0x0000,
-	0x87E2, 0xD4D0,
-	0x87E4, 0x000A,
-	0x87E6, 0xD4D2,
-	0x87E8, 0x0000,
-	0x87EA, 0xD4DE,
-	0x87EC, 0x0001,
-	0x87EE, 0xD4EC,
-	0x87F0, 0x0000,
-	0x87F2, 0xD4EE,
-	0x87F4, 0x0000,
-	0x87F6, 0xD4F8,
-	0x87F8, 0x0000,
-	0x87FA, 0xD4FA,
-	0x87FC, 0x0000,
-	0x87FE, 0xFFFE,
-	0x8800, 0x2401,
-	0x8802, 0xFFFD,
-	0x8804, 0x2A44,
-	0x8806, 0x047E,
-	0x8808, 0xFFFE,
-	0x880A, 0x2400,
-	0x880C, 0xFFFD,
-	0x880E, 0x0346,
-	0x8810, 0x0780,
-	0x8812, 0x034A,
-	0x8814, 0x109F,
-	0x8816, 0x034E,
-	0x8818, 0x0900,
-	0x881A, 0x0000,
-	0x881C, 0x0000,
-	0x881E, 0x0000,
-	0x8820, 0xFFFE,
-	0x8822, 0x2400,
-	0x8824, 0xFFFD,
-	0x8826, 0x703C,
-	0x8828, 0x0101,
-	0x882A, 0x7048,
-	0x882C, 0x009F,
-	0x882E, 0x705A,
-	0x8830, 0x00A0,
-	0x8832, 0x7274,
-	0x8834, 0xB000,
-	0x8836, 0x7806,
-	0x8838, 0x0101,
-	0x883A, 0x7808,
-	0x883C, 0x0C3F,
-	0x883E, 0x795A,
-	0x8840, 0x0020,
-	0x8842, 0x7970,
-	0x8844, 0x0020,
-	0x8846, 0x7A0E,
-	0x8848, 0x000F,
-	0x884A, 0x7A6E,
-	0x884C, 0x0019,
-	0x884E, 0x7A86,
-	0x8850, 0x0019,
-	0x8852, 0x82A2,
-	0x8854, 0x0014,
-	0x8856, 0x82BA,
-	0x8858, 0x0033,
-	0x885A, 0x8C9E,
-	0x885C, 0x0035,
-	0x885E, 0x8CA2,
-	0x8860, 0x0050,
-	0x8862, 0x8CCE,
-	0x8864, 0x0096,
-	0x8866, 0x8CD2,
-	0x8868, 0x00BE,
-	0x886A, 0xB176,
-	0x886C, 0x0206,
-	0x886E, 0xB220,
-	0x8870, 0x0301,
-	0x8872, 0xB268,
-	0x8874, 0xE380,
-	0x8876, 0xC4D8,
-	0x8878, 0x0010,
-	0x887A, 0xC4E2,
-	0x887C, 0x0000,
-	0x887E, 0xC53C,
-	0x8880, 0x0005,
-	0x8882, 0xC554,
-	0x8884, 0x1000,
-	0x8886, 0xD326,
-	0x8888, 0x1001,
-	0x888A, 0xD3EC,
-	0x888C, 0x1CB0,
-	0x888E, 0xD4A8,
-	0x8890, 0x0001,
-	0x8892, 0xD4AC,
-	0x8894, 0x0001,
-	0x8896, 0xD4B0,
-	0x8898, 0x037E,
-	0x889A, 0xD4B8,
-	0x889C, 0x0014,
-	0x889E, 0xD4BC,
-	0x88A0, 0x040B,
-	0x88A2, 0xD4C4,
-	0x88A4, 0x0000,
-	0x88A6, 0xD4C8,
-	0x88A8, 0x0001,
-	0x88AA, 0xD4D0,
-	0x88AC, 0x000A,
-	0x88AE, 0xD4D2,
-	0x88B0, 0x0000,
-	0x88B2, 0xD4D6,
-	0x88B4, 0x001A,
-	0x88B6, 0xD4DE,
-	0x88B8, 0x0001,
-	0x88BA, 0xD4E2,
-	0x88BC, 0x0036,
-	0x88BE, 0xD4EC,
-	0x88C0, 0x0000,
-	0x88C2, 0xD4EE,
-	0x88C4, 0x0000,
-	0x88C6, 0xD4F8,
-	0x88C8, 0x0000,
-	0x88CA, 0xD4FA,
-	0x88CC, 0x0000,
-	0x88CE, 0xD554,
-	0x88D0, 0x00C4,
-	0x88D2, 0xD556,
-	0x88D4, 0x00FA,
-	0x88D6, 0xD560,
-	0x88D8, 0x0352,
-	0x88DA, 0xD562,
-	0x88DC, 0x0388,
-	0x88DE, 0xD684,
-	0x88E0, 0xE380,
-	0x88E2, 0xD704,
-	0x88E4, 0x7800,
-	0x88E6, 0xDADA,
-	0x88E8, 0x0100,
-	0x88EA, 0xDADE,
-	0x88EC, 0x00A0,
-	0x88EE, 0xDAE0,
-	0x88F0, 0x0140,
-	0x88F2, 0xDB0C,
-	0x88F4, 0x000D,
-	0x88F6, 0xDB0E,
-	0x88F8, 0x000F,
-	0x88FA, 0xDB10,
-	0x88FC, 0x000D,
-	0x88FE, 0xDB3C,
-	0x8900, 0xD236,
-	0x8902, 0xDB3E,
-	0x8904, 0xD236,
-	0x8906, 0xDB40,
-	0x8908, 0xD236,
-	0x890A, 0xDC8C,
-	0x890C, 0x0B3F,
-	0x890E, 0xDC94,
-	0x8910, 0x0301,
-	0x8912, 0xE980,
-	0x8914, 0x049E,
-	0x8916, 0xF3F4,
-	0x8918, 0x00C8,
-	0x891A, 0xF3F6,
-	0x891C, 0x10D6,
-	0x891E, 0xFFFE,
-	0x8920, 0x2401,
-	0x8922, 0xFFFD,
-	0x8924, 0x195E,
-	0x8926, 0x0101,
-	0x8928, 0x1966,
-	0x892A, 0x0002,
-	0x892C, 0x2540,
-	0x892E, 0x0000,
-	0x8930, 0x29A8,
-	0x8932, 0x0001,
-	0x8934, 0x29BA,
-	0x8936, 0x0020,
-	0x8938, 0x2A44,
-	0x893A, 0x0739,
-	0x893C, 0x2A56,
-	0x893E, 0x0004,
-	0x8940, 0x3132,
-	0x8942, 0x0002,
-	0x8944, 0x31D0,
-	0x8946, 0x0000,
-	0x8948, 0x31F8,
-	0x894A, 0x0000,
-	0x894C, 0x31FA,
-	0x894E, 0x0000,
-	0x8950, 0x4396,
-	0x8952, 0x000D,
-	0x8954, 0x5A70,
-	0x8956, 0x0001,
-	0x8958, 0xFFFE,
-	0x895A, 0x2402,
-	0x895C, 0xFFFD,
-	0x895E, 0xA598,
-	0x8960, 0x0032,
-	0x8962, 0xA59A,
-	0x8964, 0x0035,
-	0x8966, 0xFFFE,
-	0x8968, 0x2400,
-	0x896A, 0xFFFD,
-	0x896C, 0x0086,
-	0x896E, 0x0280,
-	0x8970, 0x021E,
-	0x8972, 0x0006,
-	0x8974, 0x034E,
-	0x8976, 0x0900,
-	0x8978, 0x0350,
-	0x897A, 0x0008,
-	0x897C, 0x0352,
-	0x897E, 0x0008,
-	0x8980, 0x0722,
-	0x8982, 0x0020,
-	0x8984, 0x0900,
-	0x8986, 0x2222,
-	0x8988, 0x0B02,
-	0x898A, 0x0201,
-	0x898C, 0x0B08,
-	0x898E, 0x0001,
-	0x8990, 0x0342,
-	0x8992, 0x2560,
-	0x8994, 0x0000,
-	0x8996, 0xFFFF,
-	0x8998, 0x0010,
-	0x899A, 0x2401,
-	0x899C, 0x1C26,
-	0x899E, 0x8001,
-	0x89A0, 0xF004,
-	0x89A2, 0x2010,
-	0x89A4, 0x5610,
-	0x89A6, 0x0005,
-	0x89A8, 0x00A0,
-	0x89AA, 0xB610,
-	0x89AC, 0x7011,
-	0x89AE, 0xFFFF,
-	0x89B0, 0x0018,
-	0x89B2, 0x2401,
-	0x89B4, 0x1C4E,
-	0x89B6, 0x8001,
-	0x89B8, 0xF004,
-	0x89BA, 0x2810,
-	0x89BC, 0x5110,
-	0x89BE, 0x0005,
-	0x89C0, 0xF009,
-	0x89C2, 0x9710,
-	0x89C4, 0xDA10,
-	0x89C6, 0x000A,
-	0x89C8, 0x00A0,
-	0x89CA, 0xDA10,
-	0x89CC, 0x7011,
-	0x89CE, 0xFFFF,
-	0x89D0, 0x0018,
-	0x89D2, 0x2401,
-	0x89D4, 0x1C76,
-	0x89D6, 0x8001,
-	0x89D8, 0xF004,
-	0x89DA, 0x2810,
-	0x89DC, 0x6610,
-	0x89DE, 0x0005,
-	0x89E0, 0xF009,
-	0x89E2, 0x7210,
-	0x89E4, 0xDD10,
-	0x89E6, 0x000A,
-	0x89E8, 0x00A0,
-	0x89EA, 0xDD10,
-	0x89EC, 0x7011,
-	0x89EE, 0xFFFF,
-	0x89F0, 0x0010,
-	0x89F2, 0x2401,
-	0x89F4, 0x1C9E,
-	0x89F6, 0x8001,
-	0x89F8, 0xF004,
-	0x89FA, 0x2010,
-	0x89FC, 0x5610,
-	0x89FE, 0x0005,
-	0x8A00, 0x00A0,
-	0x8A02, 0xC410,
-	0x8A04, 0x7011,
-	0x8A06, 0xFFFF,
-	0x8A08, 0x0010,
-	0x8A0A, 0x2401,
-	0x8A0C, 0x1CC6,
-	0x8A0E, 0x8001,
-	0x8A10, 0xF004,
-	0x8A12, 0x2010,
-	0x8A14, 0x5610,
-	0x8A16, 0x0005,
-	0x8A18, 0x00A0,
-	0x8A1A, 0xB610,
-	0x8A1C, 0x7011,
-	0x8A1E, 0xFFFF,
-	0x8A20, 0x0018,
-	0x8A22, 0x2401,
-	0x8A24, 0x1CEE,
-	0x8A26, 0x8001,
-	0x8A28, 0xF004,
-	0x8A2A, 0x2810,
-	0x8A2C, 0x5110,
-	0x8A2E, 0x0005,
-	0x8A30, 0xF009,
-	0x8A32, 0x9710,
-	0x8A34, 0xDA10,
-	0x8A36, 0x000A,
-	0x8A38, 0x00A0,
-	0x8A3A, 0xDA10,
-	0x8A3C, 0x7011,
-	0x8A3E, 0xFFFF,
-	0x8A40, 0x0018,
-	0x8A42, 0x2401,
-	0x8A44, 0x1D16,
-	0x8A46, 0x8001,
-	0x8A48, 0xF004,
-	0x8A4A, 0x2810,
-	0x8A4C, 0x6610,
-	0x8A4E, 0x0005,
-	0x8A50, 0xF009,
-	0x8A52, 0x7210,
-	0x8A54, 0xDD10,
-	0x8A56, 0x000A,
-	0x8A58, 0x00A0,
-	0x8A5A, 0xDD10,
-	0x8A5C, 0x7011,
-	0x8A5E, 0xFFFF,
-	0x8A60, 0x0010,
-	0x8A62, 0x2401,
-	0x8A64, 0x1D3E,
-	0x8A66, 0x8001,
-	0x8A68, 0xF004,
-	0x8A6A, 0x2010,
-	0x8A6C, 0x5610,
-	0x8A6E, 0x0005,
-	0x8A70, 0x00A0,
-	0x8A72, 0xC410,
-	0x8A74, 0x7011,
-	0x8A76, 0xFFFF,
-	0x8A78, 0x0008,
-	0x8A7A, 0x2401,
-	0x8A7C, 0x1D72,
-	0x8A7E, 0x0600,
-	0x8A80, 0x0600,
-	0x8A82, 0x0600,
-	0x8A84, 0x0600,
-	0x8A86, 0xFFFF,
-	0x8A88, 0x0008,
-	0x8A8A, 0x2401,
-	0x8A8C, 0x1D82,
-	0x8A8E, 0x0600,
-	0x8A90, 0x0600,
-	0x8A92, 0x0600,
-	0x8A94, 0x0600,
-	0x8A96, 0xFFFF,
-	0x8A98, 0x0008,
-	0x8A9A, 0x2401,
-	0x8A9C, 0x1D92,
-	0x8A9E, 0x0600,
-	0x8AA0, 0x0600,
-	0x8AA2, 0x0600,
-	0x8AA4, 0x0600,
-	0x8AA6, 0xFFFF,
-	0x8AA8, 0x0008,
-	0x8AAA, 0x2401,
-	0x8AAC, 0x1DA2,
-	0x8AAE, 0x0600,
-	0x8AB0, 0x0600,
-	0x8AB2, 0x0600,
-	0x8AB4, 0x0600,
-	0x8AB6, 0xFFFF,
-	0x8AB8, 0x0008,
-	0x8ABA, 0x2401,
-	0x8ABC, 0x1DF2,
-	0x8ABE, 0xFAFF,
-	0x8AC0, 0xFAFF,
-	0x8AC2, 0x0600,
-	0x8AC4, 0x0600,
-	0x8AC6, 0xFFFF,
-	0x8AC8, 0x0008,
-	0x8ACA, 0x2401,
-	0x8ACC, 0x1E02,
-	0x8ACE, 0xFAFF,
-	0x8AD0, 0xFAFF,
-	0x8AD2, 0x0600,
-	0x8AD4, 0x0600,
-	0x8AD6, 0xFFFF,
-	0x8AD8, 0x0008,
-	0x8ADA, 0x2401,
-	0x8ADC, 0x1E12,
-	0x8ADE, 0x0600,
-	0x8AE0, 0x0600,
-	0x8AE2, 0xFAFF,
-	0x8AE4, 0xFAFF,
-	0x8AE6, 0xFFFF,
-	0x8AE8, 0x0008,
-	0x8AEA, 0x2401,
-	0x8AEC, 0x1E22,
-	0x8AEE, 0x0600,
-	0x8AF0, 0x0600,
-	0x8AF2, 0xFAFF,
-	0x8AF4, 0xFAFF,
-	0x8AF6, 0xFFFF,
-	0x8AF8, 0x001C,
-	0x8AFA, 0x2402,
-	0x8AFC, 0xA57A,
-	0x8AFE, 0xA000,
-	0x8B00, 0x4001,
-	0x8B02, 0x8002,
-	0x8B04, 0x0005,
-	0x8B06, 0x000A,
-	0x8B08, 0xA00F,
-	0x8B0A, 0x4011,
-	0x8B0C, 0x0E00,
-	0x8B0E, 0x2000,
-	0x8B10, 0x2800,
-	0x8B12, 0x1400,
-	0x8B14, 0x2200,
-	0x8B16, 0x2800,
-	0x8B18, 0x2C00,
-	0x8B1A, 0xFFFF,
-	0x8B1C, 0x0008,
-	0x8B1E, 0x2400,
-	0x8B20, 0x0344,
-	0x8B22, 0x0000,
-	0x8B24, 0x0003,
-	0x8B26, 0x1F20,
-	0x8B28, 0x1F15,
-	0x8B2A, 0xFFFF,
-	0x8B2C, 0x0008,
-	0x8B2E, 0x2400,
-	0x8B30, 0x0380,
-	0x8B32, 0x0200,
-	0x8B34, 0x0200,
-	0x8B36, 0x0200,
-	0x8B38, 0x0200,
-	0x8B3A, 0x0000,
-	0x8B3C, 0x0000,
-	0x8B3E, 0xFFFE,
-	0x8B40, 0x2400,
-	0x8B42, 0xFFFD,
-	0x8B44, 0x22C2,
-	0x8B46, 0x0006,
-	0x8B48, 0x22C4,
-	0x8B4A, 0x1FFF,
-	0x8B4C, 0x22EC,
-	0x8B4E, 0x001F,
-	0x8B50, 0x2306,
-	0x8B52, 0x3FFF,
-	0x8B54, 0x2314,
-	0x8B56, 0x00FF,
-	0x8B58, 0x2354,
-	0x8B5A, 0x0003,
-	0x8B5C, 0x23F0,
-	0x8B5E, 0x0100,
-	0x8B60, 0x68DE,
-	0x8B62, 0x0000,
-	0x8B64, 0x703C,
-	0x8B66, 0x0100,
-	0x8B68, 0x703E,
-	0x8B6A, 0x0000,
-	0x8B6C, 0x7046,
-	0x8B6E, 0x027F,
-	0x8B70, 0x7048,
-	0x8B72, 0x005F,
-	0x8B74, 0x704A,
-	0x8B76, 0x0400,
-	0x8B78, 0x7058,
-	0x8B7A, 0x0280,
-	0x8B7C, 0x705A,
-	0x8B7E, 0x0060,
-	0x8B80, 0x705C,
-	0x8B82, 0x0400,
-	0x8B84, 0x7806,
-	0x8B86, 0x0100,
-	0x8B88, 0x7808,
-	0x8B8A, 0x0824,
-	0x8B8C, 0x78C0,
-	0x8B8E, 0x0101,
-	0x8B90, 0x795A,
-	0x8B92, 0x0010,
-	0x8B94, 0x7970,
-	0x8B96, 0x0010,
-	0x8B98, 0x7994,
-	0x8B9A, 0x2020,
-	0x8B9C, 0x7996,
-	0x8B9E, 0x0001,
-	0x8BA0, 0x799A,
-	0x8BA2, 0x0000,
-	0x8BA4, 0x7BDA,
-	0x8BA6, 0x003C,
-	0x8BA8, 0x7EE6,
-	0x8BAA, 0x002C,
-	0x8BAC, 0x7EF2,
-	0x8BAE, 0x002C,
-	0x8BB0, 0x7EFE,
-	0x8BB2, 0x0064,
-	0x8BB4, 0x7F0A,
-	0x8BB6, 0x0058,
-	0x8BB8, 0x7F0E,
-	0x8BBA, 0x0058,
-	0x8BBC, 0x82A2,
-	0x8BBE, 0x0012,
-	0x8BC0, 0x82BA,
-	0x8BC2, 0x0036,
-	0x8BC4, 0x8CCE,
-	0x8BC6, 0x012C,
-	0x8BC8, 0x8CD0,
-	0x8BCA, 0x0096,
-	0x8BCC, 0x8CD2,
-	0x8BCE, 0x0096,
-	0x8BD0, 0x8CD6,
-	0x8BD2, 0x0096,
-	0x8BD4, 0x8D0E,
-	0x8BD6, 0x0000,
-	0x8BD8, 0x9032,
-	0x8BDA, 0x0000,
-	0x8BDC, 0x903E,
-	0x8BDE, 0x0000,
-	0x8BE0, 0xB176,
-	0x8BE2, 0x0006,
-	0x8BE4, 0xB178,
-	0x8BE6, 0x0000,
-	0x8BE8, 0xB20C,
-	0x8BEA, 0x002E,
-	0x8BEC, 0xB21A,
-	0x8BEE, 0x0204,
-	0x8BF0, 0xB23C,
-	0x8BF2, 0x6060,
-	0x8BF4, 0xB242,
-	0x8BF6, 0x6060,
-	0x8BF8, 0xB266,
-	0x8BFA, 0x04C0,
-	0x8BFC, 0xB268,
-	0x8BFE, 0x0440,
-	0x8C00, 0xB270,
-	0x8C02, 0x0887,
-	0x8C04, 0xB322,
-	0x8C06, 0x0101,
-	0x8C08, 0xB324,
-	0x8C0A, 0x0001,
-	0x8C0C, 0xB330,
-	0x8C0E, 0x2828,
-	0x8C10, 0xB34A,
-	0x8C12, 0x2828,
-	0x8C14, 0xB360,
-	0x8C16, 0x2828,
-	0x8C18, 0xB378,
-	0x8C1A, 0x0001,
-	0x8C1C, 0xBF16,
-	0x8C1E, 0xAA0B,
-	0x8C20, 0xBF30,
-	0x8C22, 0x0000,
-	0x8C24, 0xBF78,
-	0x8C26, 0x3353,
-	0x8C28, 0xC4D8,
-	0x8C2A, 0x0020,
-	0x8C2C, 0xC4E0,
-	0x8C2E, 0x0001,
-	0x8C30, 0xC4E2,
-	0x8C32, 0x0002,
-	0x8C34, 0xC4F6,
-	0x8C36, 0x0000,
-	0x8C38, 0xC53C,
-	0x8C3A, 0x0001,
-	0x8C3C, 0xC53E,
-	0x8C3E, 0x0000,
-	0x8C40, 0xC544,
-	0x8C42, 0x0500,
-	0x8C44, 0xC554,
-	0x8C46, 0x0D53,
-	0x8C48, 0xC556,
-	0x8C4A, 0x0000,
-	0x8C4C, 0xD1F6,
-	0x8C4E, 0x003A,
-	0x8C50, 0xD20C,
-	0x8C52, 0x0809,
-	0x8C54, 0xD27A,
-	0x8C56, 0x0005,
-	0x8C58, 0xD314,
-	0x8C5A, 0x0220,
-	0x8C5C, 0xD326,
-	0x8C5E, 0x2001,
-	0x8C60, 0xD3EC,
-	0x8C62, 0x1CB1,
-	0x8C64, 0xD3F0,
-	0x8C66, 0x1CB0,
-	0x8C68, 0xD410,
-	0x8C6A, 0x0248,
-	0x8C6C, 0xD412,
-	0x8C6E, 0x04D2,
-	0x8C70, 0xD426,
-	0x8C72, 0x04D2,
-	0x8C74, 0xD428,
-	0x8C76, 0x0AEA,
-	0x8C78, 0xD43C,
-	0x8C7A, 0x4001,
-	0x8C7C, 0xD43E,
-	0x8C7E, 0x4001,
-	0x8C80, 0xD49C,
-	0x8C82, 0x0021,
-	0x8C84, 0xD4A8,
-	0x8C86, 0x0003,
-	0x8C88, 0xD4AC,
-	0x8C8A, 0x003B,
-	0x8C8C, 0xD4B0,
-	0x8C8E, 0x0001,
-	0x8C90, 0xD4B4,
-	0x8C92, 0x0001,
-	0x8C94, 0xD4B8,
-	0x8C96, 0x0035,
-	0x8C98, 0xD4BC,
-	0x8C9A, 0x0014,
-	0x8C9C, 0xD4C0,
-	0x8C9E, 0x0014,
-	0x8CA0, 0xD4C4,
-	0x8CA2, 0x0001,
-	0x8CA4, 0xD4C8,
-	0x8CA6, 0x0000,
-	0x8CA8, 0xD4CC,
-	0x8CAA, 0x0000,
-	0x8CAC, 0xD4D0,
-	0x8CAE, 0x0016,
-	0x8CB0, 0xD4D2,
-	0x8CB2, 0x0020,
-	0x8CB4, 0xD4D6,
-	0x8CB6, 0x0000,
-	0x8CB8, 0xD4DA,
-	0x8CBA, 0x0000,
-	0x8CBC, 0xD4DE,
-	0x8CBE, 0x0000,
-	0x8CC0, 0xD4E2,
-	0x8CC2, 0x0001,
-	0x8CC4, 0xD4E6,
-	0x8CC6, 0x0001,
-	0x8CC8, 0xD4EA,
-	0x8CCA, 0x0001,
-	0x8CCC, 0xD4EC,
-	0x8CCE, 0x00BE,
-	0x8CD0, 0xD4EE,
-	0x8CD2, 0x00BE,
-	0x8CD4, 0xD4F8,
-	0x8CD6, 0x01F0,
-	0x8CD8, 0xD4FA,
-	0x8CDA, 0x01F0,
-	0x8CDC, 0xD554,
-	0x8CDE, 0x0000,
-	0x8CE0, 0xD556,
-	0x8CE2, 0x0000,
-	0x8CE4, 0xD560,
-	0x8CE6, 0x0000,
-	0x8CE8, 0xD562,
-	0x8CEA, 0x0000,
-	0x8CEC, 0xD5BC,
-	0x8CEE, 0x0000,
-	0x8CF0, 0xD5BE,
-	0x8CF2, 0x0000,
-	0x8CF4, 0xD5C8,
-	0x8CF6, 0x0000,
-	0x8CF8, 0xD5CA,
-	0x8CFA, 0x0000,
-	0x8CFC, 0xD624,
-	0x8CFE, 0x0000,
-	0x8D00, 0xD62E,
-	0x8D02, 0x0000,
-	0x8D04, 0xD638,
-	0x8D06, 0x0000,
-	0x8D08, 0xD682,
-	0x8D0A, 0x04C0,
-	0x8D0C, 0xD684,
-	0x8D0E, 0x0440,
-	0x8D10, 0xD6D4,
-	0x8D12, 0x0000,
-	0x8D14, 0xD704,
-	0x8D16, 0x7802,
-	0x8D18, 0xD718,
-	0x8D1A, 0x0200,
-	0x8D1C, 0xD856,
-	0x8D1E, 0x0705,
-	0x8D20, 0xD896,
-	0x8D22, 0x0000,
-	0x8D24, 0xD8A2,
-	0x8D26, 0x0001,
-	0x8D28, 0xDC8C,
-	0x8D2A, 0x2B3F,
-	0x8D2C, 0xDC94,
-	0x8D2E, 0x0001,
-	0x8D30, 0xDD70,
-	0x8D32, 0x0000,
-	0x8D34, 0xDE38,
-	0x8D36, 0x0000,
-	0x8D38, 0xE980,
-	0x8D3A, 0x0500,
-	0x8D3C, 0xEF80,
-	0x8D3E, 0x0000,
-	0x8D40, 0xF014,
-	0x8D42, 0x0006,
-	0x8D44, 0xF09A,
-	0x8D46, 0xFF00,
-	0x8D48, 0xF0AA,
-	0x8D4A, 0xFFFF,
-	0x8D4C, 0xF0AC,
-	0x8D4E, 0xFFFF,
-	0x8D50, 0xF288,
-	0x8D52, 0x0000,
-	0x8D54, 0xF2E0,
-	0x8D56, 0x0000,
-	0x8D58, 0xF2EA,
-	0x8D5A, 0x0040,
-	0x8D5C, 0xF370,
-	0x8D5E, 0x0302,
-	0x8D60, 0xF372,
-	0x8D62, 0x0000,
-	0x8D64, 0xF3E4,
-	0x8D66, 0x0103,
-	0x8D68, 0xF3F4,
-	0x8D6A, 0x08C8,
-	0x8D6C, 0xF3F6,
-	0x8D6E, 0x10D7,
-	0x8D70, 0xFFFE,
-	0x8D72, 0x2401,
-	0x8D74, 0xFFFD,
-	0x8D76, 0x195E,
-	0x8D78, 0x0001,
-	0x8D7A, 0x1966,
-	0x8D7C, 0x0000,
-	0x8D7E, 0x2540,
-	0x8D80, 0x0002,
-	0x8D82, 0x25E0,
-	0x8D84, 0x0000,
-	0x8D86, 0x25E2,
-	0x8D88, 0x0000,
-	0x8D8A, 0x2920,
-	0x8D8C, 0x0001,
-	0x8D8E, 0x29A8,
-	0x8D90, 0x0002,
-	0x8D92, 0x29BA,
-	0x8D94, 0x00FF,
-	0x8D96, 0x2A30,
-	0x8D98, 0xFF01,
-	0x8D9A, 0x2A42,
-	0x8D9C, 0x0001,
-	0x8D9E, 0x2A44,
-	0x8DA0, 0x04B0,
-	0x8DA2, 0x2A46,
-	0x8DA4, 0x0000,
-	0x8DA6, 0x2A54,
-	0x8DA8, 0x0000,
-	0x8DAA, 0x2A56,
-	0x8DAC, 0x0008,
-	0x8DAE, 0x2BB2,
-	0x8DB0, 0x0010,
-	0x8DB2, 0x2D32,
-	0x8DB4, 0x1000,
-	0x8DB6, 0x3132,
-	0x8DB8, 0x0001,
-	0x8DBA, 0x31D0,
-	0x8DBC, 0x0002,
-	0x8DBE, 0x31F8,
-	0x8DC0, 0x0001,
-	0x8DC2, 0x31FA,
-	0x8DC4, 0x04CD,
-	0x8DC6, 0x3C42,
-	0x8DC8, 0x0000,
-	0x8DCA, 0x3C46,
-	0x8DCC, 0x05EB,
-	0x8DCE, 0x3C52,
-	0x8DD0, 0x0640,
-	0x8DD2, 0x4270,
-	0x8DD4, 0x0000,
-	0x8DD6, 0x427C,
-	0x8DD8, 0x0020,
-	0x8DDA, 0x4280,
-	0x8DDC, 0x0010,
-	0x8DDE, 0x4290,
-	0x8DE0, 0x0001,
-	0x8DE2, 0x4292,
-	0x8DE4, 0x0000,
-	0x8DE6, 0x4362,
-	0x8DE8, 0x0001,
-	0x8DEA, 0x4364,
-	0x8DEC, 0x0000,
-	0x8DEE, 0x4366,
-	0x8DF0, 0x0000,
-	0x8DF2, 0x4370,
-	0x8DF4, 0x0000,
-	0x8DF6, 0x437E,
-	0x8DF8, 0x00A4,
-	0x8DFA, 0x4396,
-	0x8DFC, 0x000C,
-	0x8DFE, 0x4398,
-	0x8E00, 0x000E,
-	0x8E02, 0x43AA,
-	0x8E04, 0x0000,
-	0x8E06, 0x43AC,
-	0x8E08, 0x0000,
-	0x8E0A, 0x43B4,
-	0x8E0C, 0x0000,
-	0x8E0E, 0x43B6,
-	0x8E10, 0x0000,
-	0x8E12, 0x43C6,
-	0x8E14, 0x0A01,
-	0x8E16, 0x44C6,
-	0x8E18, 0x0000,
-	0x8E1A, 0x5A70,
-	0x8E1C, 0x0000,
-	0x8E1E, 0xFFFE,
-	0x8E20, 0x2402,
-	0x8E22, 0xFFFD,
-	0x8E24, 0x849E,
-	0x8E26, 0x0000,
-	0x8E28, 0x84A0,
-	0x8E2A, 0x0000,
-	0x8E2C, 0x84A2,
-	0x8E2E, 0x0500,
-	0x8E30, 0x84C4,
-	0x8E32, 0x0000,
-	0x8E34, 0xA570,
-	0x8E36, 0x0000,
-	0x8E38, 0xFFFE,
-	0x8E3A, 0x2400,
-	0x8E3C, 0xFFFD,
-	0x8E3E, 0x0086,
-	0x8E40, 0x0200,
-	0x8E42, 0x0112,
-	0x8E44, 0x0A0A,
-	0x8E46, 0x0114,
-	0x8E48, 0x0103,
-	0x8E4A, 0x0118,
-	0x8E4C, 0x0400,
-	0x8E4E, 0x011A,
-	0x8E50, 0x0100,
-	0x8E52, 0x011C,
-	0x8E54, 0x0001,
-	0x8E56, 0x0136,
-	0x8E58, 0x1800,
-	0x8E5A, 0x013E,
-	0x8E5C, 0x0000,
-	0x8E5E, 0x020A,
-	0x8E60, 0x0000,
-	0x8E62, 0x021E,
-	0x8E64, 0x0000,
-	0x8E66, 0x0228,
-	0x8E68, 0x0001,
-	0x8E6A, 0x0270,
-	0x8E6C, 0x2B2B,
-	0x8E6E, 0x0272,
-	0x8E70, 0x102B,
-	0x8E72, 0x0274,
-	0x8E74, 0x2B30,
-	0x8E76, 0x0304,
-	0x8E78, 0x0003,
-	0x8E7A, 0x0306,
-	0x8E7C, 0x00E6,
-	0x8E7E, 0x031A,
-	0x8E80, 0x0003,
-	0x8E82, 0x031C,
-	0x8E84, 0x0028,
-	0x8E86, 0x031E,
-	0x8E88, 0x0002,
-	0x8E8A, 0x0400,
-	0x8E8C, 0x1010,
-	0x8E8E, 0x0408,
-	0x8E90, 0x0100,
-	0x8E92, 0x040A,
-	0x8E94, 0x0100,
-	0x8E96, 0x040C,
-	0x8E98, 0x0000,
-	0x8E9A, 0x0702,
-	0x8E9C, 0x0000,
-	0x8E9E, 0x0704,
-	0x8EA0, 0x0000,
-	0x8EA2, 0x0720,
-	0x8EA4, 0x0001,
-	0x8EA6, 0x0722,
-	0x8EA8, 0x0008,
-	0x8EAA, 0x0724,
-	0x8EAC, 0x0000,
-	0x8EAE, 0x0808,
-	0x8EB0, 0x0102,
-	0x8EB2, 0x0900,
-	0x8EB4, 0x1100,
-	0x8EB6, 0x0936,
-	0x8EB8, 0x0000,
-	0x8EBA, 0x0C40,
-	0x8EBC, 0x0000,
-	0x8EBE, 0x0E00,
-	0x8EC0, 0x0300,
-	0x8EC2, 0x0342,
-	0x8EC4, 0x23F0,
-	0x8EC6, 0x0000,
-	0x8EC8, 0xFFFF,
-	0x8ECA, 0x0008,
-	0x8ECC, 0x2400,
-	0x8ECE, 0x71D4,
-	0x8ED0, 0x3F00,
-	0x8ED2, 0x3D00,
-	0x8ED4, 0x84F3,
-	0x8ED6, 0x0040,
-	0x8ED8, 0xFFFF,
-	0x8EDA, 0x0010,
-	0x8EDC, 0x2400,
-	0x8EDE, 0x7274,
-	0x8EE0, 0x0080,
-	0x8EE2, 0x0000,
-	0x8EE4, 0x12D2,
-	0x8EE6, 0x0040,
-	0x8EE8, 0x0000,
-	0x8EEA, 0x0000,
-	0x8EEC, 0x0000,
-	0x8EEE, 0x0000,
-	0x8EF0, 0xFFFF,
-	0x8EF2, 0x0008,
-	0x8EF4, 0x2400,
-	0x8EF6, 0x7314,
-	0x8EF8, 0x0000,
-	0x8EFA, 0x0000,
-	0x8EFC, 0x0000,
-	0x8EFE, 0x0000,
-	0x8F00, 0xFFFF,
-	0x8F02, 0x0008,
-	0x8F04, 0x2400,
-	0x8F06, 0x7A0E,
-	0x8F08, 0x1E00,
-	0x8F0A, 0x0F00,
-	0x8F0C, 0x0F00,
-	0x8F0E, 0x0F00,
-	0x8F10, 0xFFFF,
-	0x8F12, 0x0008,
-	0x8F14, 0x2400,
-	0x8F16, 0x7A6E,
-	0x8F18, 0x2800,
-	0x8F1A, 0x1900,
-	0x8F1C, 0x1900,
-	0x8F1E, 0x1900,
-	0x8F20, 0xFFFF,
-	0x8F22, 0x0008,
-	0x8F24, 0x2400,
-	0x8F26, 0x7A86,
-	0x8F28, 0x2800,
-	0x8F2A, 0x1900,
-	0x8F2C, 0x1900,
-	0x8F2E, 0x1900,
-	0x8F30, 0xFFFF,
-	0x8F32, 0x0008,
-	0x8F34, 0x2400,
-	0x8F36, 0x8C9E,
-	0x8F38, 0x5000,
-	0x8F3A, 0x3500,
-	0x8F3C, 0x3500,
-	0x8F3E, 0x3500,
-	0x8F40, 0xFFFF,
-	0x8F42, 0x000A,
-	0x8F44, 0x2400,
-	0x8F46, 0xB21E,
-	0x8F48, 0x0000,
-	0x8F4A, 0x0000,
-	0x8F4C, 0xC000,
-	0x8F4E, 0x0103,
-	0x8F50, 0x0000,
-	0x8F52, 0xFFFF,
-	0x8F54, 0x000C,
-	0x8F56, 0x2400,
-	0x8F58, 0xBEDC,
-	0x8F5A, 0xC526,
-	0x8F5C, 0x903E,
-	0x8F5E, 0xC00F,
-	0x8F60, 0x0008,
-	0x8F62, 0x0C00,
-	0x8F64, 0x8000,
-	0x8F66, 0xFFFF,
-	0x8F68, 0x000E,
-	0x8F6A, 0x2400,
-	0x8F6C, 0xDADA,
-	0x8F6E, 0x0000,
-	0x8F70, 0x0000,
-	0x8F72, 0x0000,
-	0x8F74, 0x0000,
-	0x8F76, 0x0000,
-	0x8F78, 0x0000,
-	0x8F7A, 0x0000,
-	0x8F7C, 0xFFFF,
-	0x8F7E, 0x000C,
-	0x8F80, 0x2400,
-	0x8F82, 0xDB0C,
-	0x8F84, 0x0000,
-	0x8F86, 0x0000,
-	0x8F88, 0x0000,
-	0x8F8A, 0x0000,
-	0x8F8C, 0x0000,
-	0x8F8E, 0x0000,
-	0x8F90, 0xFFFF,
-	0x8F92, 0x000C,
-	0x8F94, 0x2400,
-	0x8F96, 0xDB3C,
-	0x8F98, 0x0000,
-	0x8F9A, 0x0000,
-	0x8F9C, 0x0000,
-	0x8F9E, 0x0000,
-	0x8FA0, 0x0000,
-	0x8FA2, 0x0000,
-	0x8FA4, 0xFFFF,
-	0x8FA6, 0x000C,
-	0x8FA8, 0x2400,
-	0x8FAA, 0xDB6C,
-	0x8FAC, 0x0000,
-	0x8FAE, 0x0000,
-	0x8FB0, 0x0000,
-	0x8FB2, 0x0000,
-	0x8FB4, 0x0000,
-	0x8FB6, 0x0000,
-	0x8FB8, 0xFFFF,
-	0x8FBA, 0x000C,
-	0x8FBC, 0x2400,
-	0x8FBE, 0xDB9C,
-	0x8FC0, 0x0000,
-	0x8FC2, 0x0000,
-	0x8FC4, 0x0000,
-	0x8FC6, 0x0000,
-	0x8FC8, 0x0000,
-	0x8FCA, 0x0000,
-	0x8FCC, 0xFFFF,
-	0x8FCE, 0x000C,
-	0x8FD0, 0x2400,
-	0x8FD2, 0xDBCC,
-	0x8FD4, 0x0000,
-	0x8FD6, 0x0000,
-	0x8FD8, 0x0000,
-	0x8FDA, 0x0000,
-	0x8FDC, 0x0000,
-	0x8FDE, 0x0000,
-	0x8FE0, 0xFFFF,
-	0x8FE2, 0x0012,
-	0x8FE4, 0x2401,
-	0x8FE6, 0x1C24,
-	0x8FE8, 0x0002,
-	0x8FEA, 0x0001,
-	0x8FEC, 0xFF03,
-	0x8FEE, 0x0010,
-	0x8FF0, 0xD70F,
-	0x8FF2, 0x0004,
-	0x8FF4, 0x0010,
-	0x8FF6, 0xD70F,
-	0x8FF8, 0xC20F,
-	0x8FFA, 0xFFFF,
-	0x8FFC, 0x0020,
-	0x8FFE, 0x2401,
-	0x9000, 0x1C4E,
-	0x9002, 0x0001,
-	0x9004, 0xFF03,
-	0x9006, 0x0010,
-	0x9008, 0xD70F,
-	0x900A, 0x0004,
-	0x900C, 0x0010,
-	0x900E, 0xD70F,
-	0x9010, 0xC20F,
-	0x9012, 0x0000,
-	0x9014, 0x0000,
-	0x9016, 0x0000,
-	0x9018, 0x0000,
-	0x901A, 0x0000,
-	0x901C, 0x0000,
-	0x901E, 0x0000,
-	0x9020, 0x0000,
-	0x9022, 0xFFFF,
-	0x9024, 0x0020,
-	0x9026, 0x2401,
-	0x9028, 0x1C76,
-	0x902A, 0x0001,
-	0x902C, 0xFF03,
-	0x902E, 0x0010,
-	0x9030, 0xD70F,
-	0x9032, 0x0004,
-	0x9034, 0x0010,
-	0x9036, 0xD70F,
-	0x9038, 0xC20F,
-	0x903A, 0x0000,
-	0x903C, 0x0000,
-	0x903E, 0x0000,
-	0x9040, 0x0000,
-	0x9042, 0x0000,
-	0x9044, 0x0000,
-	0x9046, 0x0000,
-	0x9048, 0x0000,
-	0x904A, 0xFFFF,
-	0x904C, 0x0010,
-	0x904E, 0x2401,
-	0x9050, 0x1C9E,
-	0x9052, 0x0001,
-	0x9054, 0xFF03,
-	0x9056, 0x0010,
-	0x9058, 0xD70F,
-	0x905A, 0x0004,
-	0x905C, 0x0010,
-	0x905E, 0xD70F,
-	0x9060, 0xC20F,
-	0x9062, 0xFFFF,
-	0x9064, 0x0010,
-	0x9066, 0x2401,
-	0x9068, 0x1CC6,
-	0x906A, 0x0000,
-	0x906C, 0x0000,
-	0x906E, 0x0000,
-	0x9070, 0x0000,
-	0x9072, 0x0000,
-	0x9074, 0x0000,
-	0x9076, 0x0000,
-	0x9078, 0x0000,
-	0x907A, 0xFFFF,
-	0x907C, 0x0020,
-	0x907E, 0x2401,
-	0x9080, 0x1CEE,
-	0x9082, 0x0000,
-	0x9084, 0x0000,
-	0x9086, 0x0000,
-	0x9088, 0x0000,
-	0x908A, 0x0000,
-	0x908C, 0x0000,
-	0x908E, 0x0000,
-	0x9090, 0x0000,
-	0x9092, 0x0000,
-	0x9094, 0x0000,
-	0x9096, 0x0000,
-	0x9098, 0x0000,
-	0x909A, 0x0000,
-	0x909C, 0x0000,
-	0x909E, 0x0000,
-	0x90A0, 0x0000,
-	0x90A2, 0xFFFF,
-	0x90A4, 0x0020,
-	0x90A6, 0x2401,
-	0x90A8, 0x1D16,
-	0x90AA, 0x0000,
-	0x90AC, 0x0000,
-	0x90AE, 0x0000,
-	0x90B0, 0x0000,
-	0x90B2, 0x0000,
-	0x90B4, 0x0000,
-	0x90B6, 0x0000,
-	0x90B8, 0x0000,
-	0x90BA, 0x0000,
-	0x90BC, 0x0000,
-	0x90BE, 0x0000,
-	0x90C0, 0x0000,
-	0x90C2, 0x0000,
-	0x90C4, 0x0000,
-	0x90C6, 0x0000,
-	0x90C8, 0x0000,
-	0x90CA, 0xFFFF,
-	0x90CC, 0x0010,
-	0x90CE, 0x2401,
-	0x90D0, 0x1D3E,
-	0x90D2, 0x0000,
-	0x90D4, 0x0000,
-	0x90D6, 0x0000,
-	0x90D8, 0x0000,
-	0x90DA, 0x0000,
-	0x90DC, 0x0000,
-	0x90DE, 0x0000,
-	0x90E0, 0x0000,
-	0x90E2, 0xFFFF,
-	0x90E4, 0x0008,
-	0x90E6, 0x2401,
-	0x90E8, 0x1D72,
-	0x90EA, 0x0000,
-	0x90EC, 0x0000,
-	0x90EE, 0x0000,
-	0x90F0, 0x0000,
-	0x90F2, 0xFFFF,
-	0x90F4, 0x0008,
-	0x90F6, 0x2401,
-	0x90F8, 0x1D82,
-	0x90FA, 0x0000,
-	0x90FC, 0x0000,
-	0x90FE, 0x0000,
-	0x9100, 0x0000,
-	0x9102, 0xFFFF,
-	0x9104, 0x0008,
-	0x9106, 0x2401,
-	0x9108, 0x1D92,
-	0x910A, 0x0000,
-	0x910C, 0x0000,
-	0x910E, 0x0000,
-	0x9110, 0x0000,
-	0x9112, 0xFFFF,
-	0x9114, 0x0008,
-	0x9116, 0x2401,
-	0x9118, 0x1DA2,
-	0x911A, 0x0000,
-	0x911C, 0x0000,
-	0x911E, 0x0000,
-	0x9120, 0x0000,
-	0x9122, 0xFFFF,
-	0x9124, 0x0008,
-	0x9126, 0x2401,
-	0x9128, 0x1DF2,
-	0x912A, 0x0000,
-	0x912C, 0x0000,
-	0x912E, 0x0000,
-	0x9130, 0x0000,
-	0x9132, 0xFFFF,
-	0x9134, 0x0008,
-	0x9136, 0x2401,
-	0x9138, 0x1E02,
-	0x913A, 0x0000,
-	0x913C, 0x0000,
-	0x913E, 0x0000,
-	0x9140, 0x0000,
-	0x9142, 0xFFFF,
-	0x9144, 0x0008,
-	0x9146, 0x2401,
-	0x9148, 0x1E12,
-	0x914A, 0x0000,
-	0x914C, 0x0000,
-	0x914E, 0x0000,
-	0x9150, 0x0000,
-	0x9152, 0xFFFF,
-	0x9154, 0x0008,
-	0x9156, 0x2401,
-	0x9158, 0x1E22,
-	0x915A, 0x0000,
-	0x915C, 0x0000,
-	0x915E, 0x0000,
-	0x9160, 0x0000,
-	0x9162, 0xFFFF,
-	0x9164, 0x0010,
-	0x9166, 0x2402,
-	0x9168, 0xA548,
-	0x916A, 0x0000,
-	0x916C, 0x0000,
-	0x916E, 0x0000,
-	0x9170, 0x0000,
-	0x9172, 0x0000,
-	0x9174, 0x0000,
-	0x9176, 0x0000,
-	0x9178, 0x0000,
-	0x917A, 0xFFFF,
-	0x917C, 0x0010,
-	0x917E, 0x2402,
-	0x9180, 0xA55C,
-	0x9182, 0x0000,
-	0x9184, 0x0000,
-	0x9186, 0x0000,
-	0x9188, 0x0000,
-	0x918A, 0x0000,
-	0x918C, 0x0000,
-	0x918E, 0x0000,
-	0x9190, 0x0000,
-	0x9192, 0xFFFF,
-	0x9194, 0x002C,
-	0x9196, 0x2402,
-	0x9198, 0xA574,
-	0x919A, 0x0100,
-	0x919C, 0x4000,
-	0x919E, 0x8000,
-	0x91A0, 0x0001,
-	0x91A2, 0x0002,
-	0x91A4, 0x0002,
-	0x91A6, 0x0002,
-	0x91A8, 0x0002,
-	0x91AA, 0x0002,
-	0x91AC, 0x0002,
-	0x91AE, 0x0800,
-	0x91B0, 0x2100,
-	0x91B2, 0x2900,
-	0x91B4, 0x2E00,
-	0x91B6, 0x2E00,
-	0x91B8, 0x2E00,
-	0x91BA, 0x2E00,
-	0x91BC, 0x2E00,
-	0x91BE, 0x2E00,
-	0x91C0, 0x3000,
-	0x91C2, 0xA2FD,
-	0x91C4, 0xFEFE,
-	0x91C6, 0xFFFF,
-	0x91C8, 0x0008,
-	0x91CA, 0x2400,
-	0x91CC, 0x0260,
-	0x91CE, 0x0001,
-	0x91D0, 0x0000,
-	0x91D2, 0x0406,
-	0x91D4, 0x0700,
-	0x91D6, 0xFFFF,
-	0x91D8, 0x0008,
-	0x91DA, 0x2400,
-	0x91DC, 0x030C,
-	0x91DE, 0x0000,
-	0x91E0, 0x0300,
-	0x91E2, 0xBF00,
-	0x91E4, 0x0000,
-	0x91E6, 0xFFFF,
-	0x91E8, 0x0010,
-	0x91EA, 0x2400,
-	0x91EC, 0x0344,
-	0x91EE, 0x0008,
-	0x91F0, 0x0006,
-	0x91F2, 0x1F18,
-	0x91F4, 0x1F12,
-	0x91F6, 0x0010,
-	0x91F8, 0x000C,
-	0x91FA, 0x1000,
-	0x91FC, 0x1000,
-	0x91FE, 0xFFFF,
-	0x9200, 0x0008,
-	0x9202, 0x2400,
-	0x9204, 0x0380,
-	0x9206, 0x0100,
-	0x9208, 0x0100,
-	0x920A, 0x0100,
-	0x920C, 0x0100,
-	0x920E, 0xFFFF,
-	0x9210, 0x0008,
-	0x9212, 0x2400,
-	0x9214, 0x0728,
-	0x9216, 0x0000,
-	0x9218, 0x0000,
-	0x921A, 0x0000,
-	0x921C, 0x0000,
-	0x921E, 0xFFFF,
-	0x9220, 0x000C,
-	0x9222, 0x2400,
-	0x9224, 0x0B02,
-	0x9226, 0x0101,
-	0x9228, 0x0001,
-	0x922A, 0x0101,
-	0x922C, 0x0101,
-	0x922E, 0x0101,
-	0x9230, 0x0100,
-	0x9232, 0x0000,
-	0x9234, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static u16 kkthtele_sensor_init_pre_setting_short[] = {
-    0xFCFC, 0x4000,
-    0x0000, 0x000E,
-    0x0000, 0x38E5,
-    0x6018, 0x0001,
-    0x7002, 0x0408,
-    0x6014, 0x0001,
-    0xFCFC, 0x2002,
-    0x1E92, 0x8000,
-    0x1E84, 0x282B,
-    0x1E86, 0x0320,
-    0xFCFC, 0x4000,
-    0x7002, 0x0008,
-};
-
-static u16 kkthtele_sensor_init_setting_short[] = {
-	0xFCFC, 0x2000,
-	0xDCF0, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C60, 0x0000,
-	0xFCFC, 0x2002,
-	0x849C, 0x0100,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0x84A4, 0x0000,
-	0x84A6, 0x0000,
-	0x84A8, 0x0000,
-	0x84AA, 0x0001,
-	0x84AC, 0x01FF,
-	0x84B0, 0x8089,
-	0x84B2, 0x0000,
-	0x84B4, 0x8889,
-	0x84B6, 0x0000,
-	0x84B8, 0xC097,
-	0x84BA, 0x0000,
-	0x84BC, 0xA60E,
-	0x84BE, 0x0000,
-	0x84C0, 0x2206,
-	0x84C2, 0x0000,
-	0x84C4, 0x0036,
-	0x84C8, 0x60C5,
-	0x84CA, 0x0224,
-	0x84CC, 0x44AB,
-	0x84CE, 0x0224,
-	0x84D0, 0x44AB,
-	0x84D2, 0x0224,
-	0x84D4, 0x44AB,
-	0x84D6, 0x0224,
-	0x84D8, 0x44AB,
-	0x84DA, 0x0224,
-	0x84DC, 0x44AB,
-	0x84DE, 0x0224,
-	0xA548, 0x00B2,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xA56C, 0x0000,
-	0xA56E, 0x0000,
-	0xA570, 0x0000,
-	0xA572, 0x0000,
-	0xA574, 0x008A,
-	0xA576, 0x0000,
-	0xA578, 0x0000,
-	0xA57A, 0x0000,
-	0xA57C, 0x0000,
-	0xA57E, 0x0000,
-	0xA580, 0x0000,
-	0xA582, 0x0000,
-	0xA584, 0x0000,
-	0xA586, 0x0000,
-	0xA588, 0x0000,
-	0xA58A, 0x0000,
-	0xA58C, 0x0000,
-	0xA58E, 0x0000,
-	0xA590, 0x0000,
-	0xA592, 0x0000,
-	0xA594, 0x0000,
-	0xA596, 0x0000,
-	0xA598, 0x0000,
-	0xA59A, 0x0000,
-	0xA59C, 0x0000,
-	0xA59E, 0x0000,
-	0xA5A0, 0x0100,
-	0xA5A2, 0x00AC,
-	0xA5A4, 0x0000,
-	0xA5A6, 0x0000,
-	0xA5A8, 0x0000,
-	0xA5AA, 0x0000,
-	0xA5AC, 0x0000,
-	0xA5AE, 0x0000,
-	0xA5B0, 0x0000,
-	0xA5B2, 0x0000,
-	0xA5B4, 0x0000,
-	0xA5B6, 0x0000,
-	0xA5B8, 0x0000,
-	0xA5BA, 0x0000,
-	0xA5BC, 0x0000,
-	0xA5BE, 0x0000,
-	0xA5C0, 0x0000,
-	0xA5C2, 0x0000,
-	0xA5C4, 0x0000,
-	0xA5C6, 0x0000,
-	0xA5C8, 0x0000,
-	0xA5CA, 0x0000,
-	0xA5CC, 0x0000,
-	0xA5CE, 0x0000,
-	0xA5D0, 0x0000,
-	0xA5D2, 0x0000,
-	0xA5D4, 0x0000,
-	0xA5D6, 0x0000,
-	0xA5D8, 0x0000,
-	0xA5DA, 0x0000,
-	0xA5DC, 0x0000,
-	0xA5DE, 0x0000,
-	0xA5E0, 0x0000,
-	0xA5E2, 0x0000,
-	0xA5E4, 0x0000,
-	0xA5E6, 0x0000,
-	0xA5E8, 0x0000,
-	0xA5EA, 0x0000,
-	0xA5EC, 0x000F,
-	0xA5EE, 0x000F,
-	0xA5F0, 0x000F,
-	0xA5F2, 0x000F,
-	0xA5F4, 0x0000,
-	0xA5F6, 0x0000,
-	0xA5F8, 0x0000,
-	0xA5FA, 0x0000,
-	0xA5FC, 0x0000,
-	0xA5FE, 0x0000,
-	0xA600, 0x0000,
-	0xA602, 0x0000,
-	0xA604, 0x0000,
-	0xA606, 0x0034,
-	0xBB84, 0x00E7,
-	0xBB86, 0x0000,
-	0xBB88, 0x0000,
-	0xBB8A, 0x0100,
-	0xBB8C, 0x0800,
-	0xBB8E, 0x1000,
-	0xBB90, 0x2000,
-	0xBB92, 0x9A00,
-	0xBB94, 0x9A00,
-	0xBB96, 0x9A00,
-	0xBB98, 0x9A00,
-	0xBB9A, 0x9600,
-	0xBB9C, 0x9600,
-	0xBB9E, 0x9600,
-	0xBBA0, 0x9600,
-	0xBBA2, 0x9300,
-	0xBBA4, 0x9300,
-	0xBBA6, 0x9300,
-	0xBBA8, 0x9300,
-	0xBBAA, 0x9000,
-	0xBBAC, 0x9000,
-	0xBBAE, 0x9000,
-	0xBBB0, 0x9000,
-	0xBBB2, 0x8D00,
-	0xBBB4, 0x8D00,
-	0xBBB6, 0x8D00,
-	0xBBB8, 0x8D00,
-	0xBBBA, 0x3F00,
-	0xBBBC, 0x3F00,
-	0xBBBE, 0x3F00,
-	0xBBC0, 0x3F00,
-	0xBBC2, 0x1E00,
-	0xBBC4, 0x1E00,
-	0xBBC6, 0x1E00,
-	0xBBC8, 0x1E00,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0000,
-	0xBBD2, 0x0800,
-	0xBBD4, 0x0800,
-	0xBBD6, 0x0800,
-	0xBBD8, 0x0800,
-	0xBBDA, 0x0000,
-	0xBBDC, 0x0000,
-	0xBBDE, 0x0000,
-	0xBBE0, 0x0000,
-	0xBBE2, 0x3F00,
-	0xBBE4, 0x3F00,
-	0xBBE6, 0x3F00,
-	0xBBE8, 0x3F00,
-	0xBBEA, 0x3400,
-	0xBBEC, 0x3400,
-	0xBBEE, 0x3400,
-	0xBBF0, 0x3400,
-	0xBBF2, 0x0A00,
-	0xBBF4, 0x0A00,
-	0xBBF6, 0x0A00,
-	0xBBF8, 0x0A00,
-	0xBBFA, 0x1000,
-	0xBBFC, 0x1000,
-	0xBBFE, 0x1000,
-	0xBC00, 0x1000,
-	0xBC02, 0x0600,
-	0xBC04, 0x0600,
-	0xBC06, 0x0600,
-	0xBC08, 0x0600,
-	0xBC0A, 0x0C00,
-	0xBC0C, 0x0C00,
-	0xBC0E, 0x0C00,
-	0xBC10, 0x0C00,
-	0xBC12, 0x0000,
-	0xBC14, 0x0000,
-	0xBC16, 0x0000,
-	0xBC18, 0x0000,
-	0xBC1A, 0x1000,
-	0xBC1C, 0x1000,
-	0xBC1E, 0x1000,
-	0xBC20, 0x1000,
-	0xBC22, 0x1000,
-	0xBC24, 0x1000,
-	0xBC26, 0x1000,
-	0xBC28, 0x1000,
-	0xBC2A, 0x2000,
-	0xBC2C, 0x1000,
-	0xBC2E, 0x1000,
-	0xBC30, 0x1000,
-	0xBC32, 0x0600,
-	0xBC34, 0x0600,
-	0xBC36, 0x0600,
-	0xBC38, 0x0600,
-	0xBC3A, 0x1C00,
-	0xBC3C, 0x1C00,
-	0xBC3E, 0x1C00,
-	0xBC40, 0x1C00,
-	0xBC42, 0x0600,
-	0xBC44, 0x0600,
-	0xBC46, 0x0600,
-	0xBC48, 0x0600,
-	0xBC4A, 0x2A00,
-	0xBC4C, 0x2A00,
-	0xBC4E, 0x2A00,
-	0xBC50, 0x2A00,
-	0xBC52, 0x0200,
-	0xBC54, 0x0200,
-	0xBC56, 0x0200,
-	0xBC58, 0x0200,
-	0xBC5A, 0x1000,
-	0xBC5C, 0x1000,
-	0xBC5E, 0x1000,
-	0xBC60, 0x1000,
-	0xBC62, 0x0E00,
-	0xBC64, 0x0E00,
-	0xBC66, 0x0E00,
-	0xBC68, 0x0E00,
-	0xBC6A, 0x2800,
-	0xBC6C, 0x2800,
-	0xBC6E, 0x2800,
-	0xBC70, 0x2800,
-	0xBC72, 0x1800,
-	0xBC74, 0x1800,
-	0xBC76, 0x1800,
-	0xBC78, 0x1800,
-	0xBC7A, 0x0800,
-	0xBC7C, 0x0800,
-	0xBC7E, 0x0800,
-	0xBC80, 0x0800,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x0000,
-	0xBC8A, 0x2400,
-	0xBC8C, 0x2400,
-	0xBC8E, 0x2400,
-	0xBC90, 0x2400,
-	0xBC92, 0x00AF,
-	0xFCFC, 0x2001,
-	0x5634, 0x041D,
-	0x5636, 0x0420,
-	0x5638, 0x3C85,
-	0x563A, 0x0224,
-	0x563C, 0x3CE6,
-	0x563E, 0x0320,
-	0x5640, 0xD885,
-	0x5642, 0x0224,
-	0x5644, 0xD06E,
-	0x5646, 0x0320,
-	0x5648, 0xC48D,
-	0x564A, 0x0224,
-	0x564C, 0x4877,
-	0x564E, 0x0320,
-	0x5650, 0xCC90,
-	0x5652, 0x0224,
-	0x5654, 0x6812,
-	0x5656, 0x0320,
-	0x5658, 0x94C4,
-	0x565A, 0x0224,
-	0x565C, 0xE8FE,
-	0x565E, 0x0220,
-	0x5660, 0x5491,
-	0x5662, 0x0224,
-	0x5664, 0xA462,
-	0x5666, 0x0320,
-	0x5668, 0x9C95,
-	0x566A, 0x0224,
-	0x566C, 0x901B,
-	0x566E, 0x0020,
-	0x5670, 0x2896,
-	0x5672, 0x0224,
-	0x5674, 0xC446,
-	0x5676, 0x0320,
-	0x5678, 0xE896,
-	0x567A, 0x0224,
-	0x567C, 0x1427,
-	0x567E, 0x0320,
-	0x5680, 0xC498,
-	0x5682, 0x0224,
-	0x5684, 0x304C,
-	0x5686, 0x0220,
-	0x5688, 0x749B,
-	0x568A, 0x0224,
-	0x568C, 0xC82C,
-	0x568E, 0x0220,
-	0x5690, 0xD09B,
-	0x5692, 0x0224,
-	0x5694, 0x484F,
-	0x5696, 0x0220,
-	0x5698, 0x289C,
-	0x569A, 0x0224,
-	0x569C, 0xB041,
-	0x569E, 0x0220,
-	0x56A0, 0x3C9A,
-	0x56A2, 0x0224,
-	0x56A4, 0xC81D,
-	0x56A6, 0x0420,
-	0x56A8, 0xFC9A,
-	0x56AA, 0x0224,
-	0x56AC, 0xAC7F,
-	0x56AE, 0x0420,
-	0x56B0, 0x8C86,
-	0x56B2, 0x0224,
-	0x56B4, 0x7C80,
-	0x56B6, 0x0420,
-	0x56B8, 0x1086,
-	0x56BA, 0x0224,
-	0x56BC, 0xF887,
-	0x56BE, 0x0320,
-	0x56C0, 0x7CAC,
-	0x56C2, 0x0224,
-	0x56C4, 0x1007,
-	0x56C6, 0x0320,
-	0x56C8, 0xE08E,
-	0x56CA, 0x0224,
-	0x56CC, 0x1409,
-	0x56CE, 0x0020,
-	0x56D0, 0x2495,
-	0x56D2, 0x0224,
-	0x56D4, 0x2046,
-	0x56D6, 0x0420,
-	0x56D8, 0x0CC4,
-	0x56DA, 0x0224,
-	0x56DC, 0xB05B,
-	0x56DE, 0x0420,
-	0x56E0, 0x4088,
-	0x56E2, 0x0224,
-	0x56E4, 0x505C,
-	0x56E6, 0x0320,
-	0x56E8, 0x448A,
-	0x56EA, 0x0224,
-	0x56EC, 0xA45B,
-	0x56EE, 0x0320,
-	0x56F0, 0x5089,
-	0x56F2, 0x0224,
-	0x56F4, 0x306A,
-	0x56F6, 0x0420,
-	0x56F8, 0x1485,
-	0x56FA, 0x0224,
-	0x56FC, 0x90F8,
-	0x56FE, 0x0220,
-	0x5700, 0x44A1,
-	0x5702, 0x0224,
-	0x5704, 0x0454,
-	0x5706, 0x0120,
-	0x5708, 0x18A6,
-	0x570A, 0x0224,
-	0x570C, 0x0453,
-	0x570E, 0x0020,
-	0x5710, 0xA0A7,
-	0x5712, 0x0224,
-	0x5714, 0xC850,
-	0x5716, 0x0220,
-	0x5718, 0xB8AC,
-	0x571A, 0x0224,
-	0x571C, 0x2C88,
-	0x571E, 0x0220,
-	0x5720, 0xF0AD,
-	0x5722, 0x0224,
-	0x5724, 0x7C82,
-	0x5726, 0x0120,
-	0x5728, 0xC8B4,
-	0x572A, 0x0224,
-	0x572C, 0xACF3,
-	0x572E, 0x0320,
-	0x5730, 0x64B5,
-	0x5732, 0x0224,
-	0x5734, 0x1081,
-	0x5736, 0x0320,
-	0x5738, 0x70B9,
-	0x573A, 0x0224,
-	0x573C, 0xBCFD,
-	0x573E, 0x0220,
-	0x5740, 0xE4B9,
-	0x5742, 0x0224,
-	0x5744, 0xBCA5,
-	0x5746, 0x0420,
-	0x5748, 0x7CBA,
-	0x574A, 0x0224,
-	0x574C, 0xB803,
-	0x574E, 0x0320,
-	0x5750, 0xE4BC,
-	0x5752, 0x0224,
-	0x5754, 0x8424,
-	0x5756, 0x0220,
-	0x5758, 0xB0BD,
-	0x575A, 0x0224,
-	0x575C, 0x9C4C,
-	0x575E, 0x0220,
-	0x5760, 0xD0BF,
-	0x5762, 0x0224,
-	0x5764, 0x0C22,
-	0x5766, 0x0220,
-	0x5768, 0x54BE,
-	0x576A, 0x0224,
-	0xFCFC, 0x2002,
-	0xBC98, 0x1743,
-	0xBC9A, 0x02FC,
-	0xBC9C, 0xE702,
-	0xBC9E, 0x8382,
-	0xBCA0, 0x2A84,
-	0xBCA2, 0xEFE0,
-	0xBCA4, 0xBFB9,
-	0xBCA6, 0xA147,
-	0xBCA8, 0x6306,
-	0xBCAA, 0xF400,
-	0xBCAC, 0x1743,
-	0xBCAE, 0x02FC,
-	0xBCB0, 0x6700,
-	0xBCB2, 0x8383,
-	0xBCB4, 0xB7C7,
-	0xBCB6, 0x0224,
-	0xBCB8, 0x83C7,
-	0xBCBA, 0x87B8,
-	0xBCBC, 0xE5DB,
-	0xBCBE, 0xB797,
-	0xBCC0, 0x0124,
-	0xBCC2, 0x9387,
-	0xBCC4, 0x0753,
-	0xBCC6, 0x0567,
-	0xBCC8, 0x3E97,
-	0xBCCA, 0x8346,
-	0xBCCC, 0x07B9,
-	0xBCCE, 0xF9DE,
-	0xBCD0, 0x83C7,
-	0xBCD2, 0x673F,
-	0xBCD4, 0xE1DF,
-	0xBCD6, 0x8357,
-	0xBCD8, 0x47B6,
-	0xBCDA, 0x93E7,
-	0xBCDC, 0x0720,
-	0xBCDE, 0x2312,
-	0xBCE0, 0xF7B6,
-	0xBCE2, 0xE9B7,
-	0xBCE4, 0x1733,
-	0xBCE6, 0x02FC,
-	0xBCE8, 0xE702,
-	0xBCEA, 0x437B,
-	0xBCEC, 0x37C8,
-	0xBCEE, 0x0224,
-	0xBCF0, 0x1308,
-	0xBCF2, 0x48B8,
-	0xBCF4, 0x8348,
-	0xBCF6, 0x4800,
-	0xBCF8, 0x2A8B,
-	0xBCFA, 0xAE8B,
-	0xBCFC, 0x3284,
-	0xBCFE, 0xB684,
-	0xBD00, 0x3A89,
-	0xBD02, 0xBE89,
-	0xBD04, 0x6380,
-	0xBD06, 0x0802,
-	0xBD08, 0xB7A7,
-	0xBD0A, 0x0124,
-	0xBD0C, 0x9387,
-	0xBD0E, 0x0753,
-	0xBD10, 0x03C7,
-	0xBD12, 0x07B9,
-	0xBD14, 0x83C7,
-	0xBD16, 0xB792,
-	0xBD18, 0x11C7,
-	0xBD1A, 0x0347,
-	0xBD1C, 0x5800,
-	0xBD1E, 0xBD8B,
-	0xBD20, 0x6306,
-	0xBD22, 0xF704,
-	0xBD24, 0x37E8,
-	0xBD26, 0x0124,
-	0xBD28, 0x1308,
-	0xBD2A, 0x0887,
-	0xBD2C, 0x832A,
-	0xBD2E, 0x0812,
-	0xBD30, 0x032A,
-	0xBD32, 0x4812,
-	0xBD34, 0x0146,
-	0xBD36, 0xD685,
-	0xBD38, 0x5285,
-	0xBD3A, 0x9730,
-	0xBD3C, 0x01FC,
-	0xBD3E, 0xE780,
-	0xBD40, 0xA0D0,
-	0xBD42, 0xCE87,
-	0xBD44, 0x4A87,
-	0xBD46, 0xA686,
-	0xBD48, 0x2286,
-	0xBD4A, 0xDE85,
-	0xBD4C, 0x5A85,
-	0xBD4E, 0x9740,
-	0xBD50, 0x00FC,
-	0xBD52, 0xE780,
-	0xBD54, 0xA066,
-	0xBD56, 0x0546,
-	0xBD58, 0xD685,
-	0xBD5A, 0x5285,
-	0xBD5C, 0x9730,
-	0xBD5E, 0x01FC,
-	0xBD60, 0xE780,
-	0xBD62, 0x80CE,
-	0xBD64, 0x1733,
-	0xBD66, 0x02FC,
-	0xBD68, 0x6700,
-	0xBD6A, 0xC376,
-	0xBD6C, 0x2315,
-	0xBD6E, 0x0600,
-	0xBD70, 0x9760,
-	0xBD72, 0xFFFB,
-	0xBD74, 0xE780,
-	0xBD76, 0x80BA,
-	0xBD78, 0x01CD,
-	0xBD7A, 0xB797,
-	0xBD7C, 0x0124,
-	0xBD7E, 0x9387,
-	0xBD80, 0x07D7,
-	0xBD82, 0x03C7,
-	0xBD84, 0xC700,
-	0xBD86, 0x59DF,
-	0xBD88, 0x7D17,
-	0xBD8A, 0x2386,
-	0xBD8C, 0xE700,
-	0xBD8E, 0x59BF,
-	0xBD90, 0x9760,
-	0xBD92, 0xFFFB,
-	0xBD94, 0xE780,
-	0xBD96, 0x80B5,
-	0xBD98, 0x6DD1,
-	0xBD9A, 0xB797,
-	0xBD9C, 0x0124,
-	0xBD9E, 0x9387,
-	0xBDA0, 0x07D7,
-	0xBDA2, 0x03C7,
-	0xBDA4, 0xD700,
-	0xBDA6, 0x3DDF,
-	0xBDA8, 0x7D17,
-	0xBDAA, 0xA386,
-	0xBDAC, 0xE700,
-	0xBDAE, 0x9DBF,
-	0xBDB0, 0x1733,
-	0xBDB2, 0x02FC,
-	0xBDB4, 0xE702,
-	0xBDB6, 0x636F,
-	0xBDB8, 0xB7E7,
-	0xBDBA, 0x0124,
-	0xBDBC, 0x9387,
-	0xBDBE, 0x0787,
-	0xBDC0, 0x03AA,
-	0xBDC2, 0x8712,
-	0xBDC4, 0x83A9,
-	0xBDC6, 0xC712,
-	0xBDC8, 0xAE84,
-	0xBDCA, 0x2A84,
-	0xBDCC, 0x3289,
-	0xBDCE, 0xD285,
-	0xBDD0, 0x0146,
-	0xBDD2, 0x4E85,
-	0xBDD4, 0x9730,
-	0xBDD6, 0x01FC,
-	0xBDD8, 0xE780,
-	0xBDDA, 0x00C7,
-	0xBDDC, 0xA685,
-	0xBDDE, 0x4A86,
-	0xBDE0, 0x2285,
-	0xBDE2, 0x9760,
-	0xBDE4, 0xFFFB,
-	0xBDE6, 0xE780,
-	0xBDE8, 0x206A,
-	0xBDEA, 0xAA84,
-	0xBDEC, 0x0546,
-	0xBDEE, 0xD285,
-	0xBDF0, 0x4E85,
-	0xBDF2, 0x9730,
-	0xBDF4, 0x01FC,
-	0xBDF6, 0xE780,
-	0xBDF8, 0x20C5,
-	0xBDFA, 0xB7C7,
-	0xBDFC, 0x0224,
-	0xBDFE, 0x9387,
-	0xBE00, 0x47B8,
-	0xBE02, 0x03C7,
-	0xBE04, 0xE710,
-	0xBE06, 0x15C3,
-	0xBE08, 0x37A7,
-	0xBE0A, 0x0124,
-	0xBE0C, 0x1307,
-	0xBE0E, 0x0753,
-	0xBE10, 0x0346,
-	0xBE12, 0x37B9,
-	0xBE14, 0x8946,
-	0xBE16, 0x631A,
-	0xBE18, 0xD600,
-	0xBE1A, 0x8356,
-	0xBE1C, 0x87BA,
-	0xBE1E, 0xE18E,
-	0xBE20, 0x89C6,
-	0xBE22, 0x9306,
-	0xBE24, 0x0040,
-	0xBE26, 0x6307,
-	0xBE28, 0xD400,
-	0xBE2A, 0x2685,
-	0xBE2C, 0x1733,
-	0xBE2E, 0x02FC,
-	0xBE30, 0x6700,
-	0xBE32, 0xE36A,
-	0xBE34, 0x8326,
-	0xBE36, 0x47B3,
-	0xBE38, 0x7D57,
-	0xBE3A, 0xE388,
-	0xBE3C, 0xE6FE,
-	0xBE3E, 0x03D7,
-	0xBE40, 0x2711,
-	0xBE42, 0x9396,
-	0xBE44, 0x0401,
-	0xBE46, 0xC182,
-	0xBE48, 0x11E3,
-	0xBE4A, 0x3687,
-	0xBE4C, 0xBA84,
-	0xBE4E, 0x2399,
-	0xBE50, 0xD710,
-	0xBE52, 0xE1BF,
-	0xBE54, 0x1733,
-	0xBE56, 0x02FC,
-	0xBE58, 0xE702,
-	0xBE5A, 0x2365,
-	0xBE5C, 0x3729,
-	0xBE5E, 0x0024,
-	0xBE60, 0xB7A4,
-	0xBE62, 0x0124,
-	0xBE64, 0x1309,
-	0xBE66, 0x0933,
-	0xBE68, 0x9384,
-	0xBE6A, 0x0453,
-	0xBE6C, 0x8347,
-	0xBE6E, 0x491A,
-	0xBE70, 0x03C7,
-	0xBE72, 0x24B7,
-	0xBE74, 0x2A84,
-	0xBE76, 0xD98F,
-	0xBE78, 0x6382,
-	0xBE7A, 0x0714,
-	0xBE7C, 0x8347,
-	0xBE7E, 0xE400,
-	0xBE80, 0x0547,
-	0xBE82, 0x2305,
-	0xBE84, 0xE400,
-	0xBE86, 0x99E7,
-	0xBE88, 0x8347,
-	0xBE8A, 0xC400,
-	0xBE8C, 0xD1CF,
-	0xBE8E, 0x83C7,
-	0xBE90, 0x24B7,
-	0xBE92, 0xC5CB,
-	0xBE94, 0xB76A,
-	0xBE96, 0x0124,
-	0xBE98, 0x130A,
-	0xBE9A, 0x0403,
-	0xBE9C, 0x0347,
-	0xBE9E, 0x0400,
-	0xBEA0, 0xA169,
-	0xBEA2, 0xFD19,
-	0xBEA4, 0xA301,
-	0xBEA6, 0xE400,
-	0xBEA8, 0x83A7,
-	0xBEAA, 0x0A4B,
-	0xBEAC, 0x2302,
-	0xBEAE, 0xE400,
-	0xBEB0, 0x0567,
-	0xBEB2, 0xBA97,
-	0xBEB4, 0x83D7,
-	0xBEB6, 0x47E0,
-	0xBEB8, 0x2303,
-	0xBEBA, 0x0400,
-	0xBEBC, 0xB3F7,
-	0xBEBE, 0x3701,
-	0xBEC0, 0x231C,
-	0xBEC2, 0xF400,
-	0xBEC4, 0x9740,
-	0xBEC6, 0xFDFB,
-	0xBEC8, 0xE780,
-	0xBECA, 0x0067,
-	0xBECC, 0x0358,
-	0xBECE, 0x8401,
-	0xBED0, 0xA308,
-	0xBED2, 0xA400,
-	0xBED4, 0x6301,
-	0xBED6, 0x0806,
-	0xBED8, 0x3736,
-	0xBEDA, 0x0520,
-	0xBEDC, 0x1306,
-	0xBEDE, 0x06C8,
-	0xBEE0, 0x8146,
-	0xBEE2, 0x8147,
-	0xBEE4, 0x4145,
-	0xBEE6, 0xB305,
-	0xBEE8, 0xF400,
-	0xBEEA, 0x3357,
-	0xBEEC, 0xF840,
-	0xBEEE, 0x2380,
-	0xBEF0, 0xD502,
-	0xBEF2, 0x058B,
-	0xBEF4, 0x8507,
-	0xBEF6, 0x11C7,
-	0xBEF8, 0x0347,
-	0xBEFA, 0x0600,
-	0xBEFC, 0xBA96,
-	0xBEFE, 0x93F6,
-	0xBF00, 0xF60F,
-	0xBF02, 0x0506,
-	0xBF04, 0xE391,
-	0xBF06, 0xA7FE,
-	0xBF08, 0x2308,
-	0xBF0A, 0xD400,
-	0xBF0C, 0x8347,
-	0xBF0E, 0x491A,
-	0xBF10, 0x03C7,
-	0xBF12, 0x24B7,
-	0xBF14, 0xD98F,
-	0xBF16, 0xC9C3,
-	0xBF18, 0x2307,
-	0xBF1A, 0x0400,
-	0xBF1C, 0x232E,
-	0xBF1E, 0x4401,
-	0xBF20, 0x1733,
-	0xBF22, 0x02FC,
-	0xBF24, 0x6700,
-	0xBF26, 0xA35B,
-	0xBF28, 0x8347,
-	0xBF2A, 0xB400,
-	0xBF2C, 0xA5D7,
-	0xBF2E, 0x83C7,
-	0xBF30, 0x24B7,
-	0xBF32, 0xADF3,
-	0xBF34, 0x39A0,
-	0xBF36, 0x0148,
-	0xBF38, 0x45F1,
-	0xBF3A, 0x231C,
-	0xBF3C, 0x3401,
-	0xBF3E, 0x4E88,
-	0xBF40, 0x61BF,
-	0xBF42, 0xB76A,
-	0xBF44, 0x0124,
-	0xBF46, 0x83A5,
-	0xBF48, 0x0A4B,
-	0xBF4A, 0x8567,
-	0xBF4C, 0x130A,
-	0xBF4E, 0x0403,
-	0xBF50, 0x9387,
-	0xBF52, 0x07E1,
-	0xBF54, 0x1306,
-	0xBF56, 0x8007,
-	0xBF58, 0xBE95,
-	0xBF5A, 0x5285,
-	0xBF5C, 0x9760,
-	0xBF5E, 0x00FC,
-	0xBF60, 0xE780,
-	0xBF62, 0x400A,
-	0xBF64, 0x21C9,
-	0xBF66, 0x2305,
-	0xBF68, 0x0400,
-	0xBF6A, 0x0347,
-	0xBF6C, 0x2401,
-	0xBF6E, 0x8347,
-	0xBF70, 0x6400,
-	0xBF72, 0x8356,
-	0xBF74, 0x4401,
-	0xBF76, 0xA308,
-	0xBF78, 0xE400,
-	0xBF7A, 0x0547,
-	0xBF7C, 0x231C,
-	0xBF7E, 0xD400,
-	0xBF80, 0x2307,
-	0xBF82, 0xE400,
-	0xBF84, 0xA301,
-	0xBF86, 0xF400,
-	0xBF88, 0x2303,
-	0xBF8A, 0x0400,
-	0xBF8C, 0x232E,
-	0xBF8E, 0x4401,
-	0xBF90, 0x1733,
-	0xBF92, 0x02FC,
-	0xBF94, 0x6700,
-	0xBF96, 0xA354,
-	0xBF98, 0x83A5,
-	0xBF9A, 0x0A4B,
-	0xBF9C, 0x8567,
-	0xBF9E, 0x9387,
-	0xBFA0, 0x07E1,
-	0xBFA2, 0x1306,
-	0xBFA4, 0x000F,
-	0xBFA6, 0xBE95,
-	0xBFA8, 0x5285,
-	0xBFAA, 0x9760,
-	0xBFAC, 0x00FC,
-	0xBFAE, 0xE780,
-	0xBFB0, 0x2005,
-	0xBFB2, 0x9DB7,
-	0xBFB4, 0x8347,
-	0xBFB6, 0xA400,
-	0xBFB8, 0xCDDB,
-	0xBFBA, 0xCDB5,
-	0xBFBC, 0x37A5,
-	0xBFBE, 0x0124,
-	0xBFC0, 0x1305,
-	0xBFC2, 0x050C,
-	0xBFC4, 0x9760,
-	0xBFC6, 0xFFFB,
-	0xBFC8, 0xE780,
-	0xBFCA, 0x8043,
-	0xBFCC, 0x45BD,
-	0xBFCE, 0x0100,
-	0xBFD0, 0x1733,
-	0xBFD2, 0x02FC,
-	0xBFD4, 0xE702,
-	0xBFD6, 0x034F,
-	0xBFD8, 0x8347,
-	0xBFDA, 0x1501,
-	0xBFDC, 0xA304,
-	0xBFDE, 0x0500,
-	0xBFE0, 0x2A84,
-	0xBFE2, 0x91EF,
-	0xBFE4, 0x8357,
-	0xBFE6, 0x8501,
-	0xBFE8, 0x99EB,
-	0xBFEA, 0x8347,
-	0xBFEC, 0xF500,
-	0xBFEE, 0xA307,
-	0xBFF0, 0x0500,
-	0xBFF2, 0xA304,
-	0xBFF4, 0xF500,
-	0xBFF6, 0x1733,
-	0xBFF8, 0x02FC,
-	0xBFFA, 0x6700,
-	0xBFFC, 0xE34E,
-	0xBFFE, 0x2285,
-	0xC000, 0x9790,
-	0xC002, 0xFFFB,
-	0xC004, 0xE780,
-	0xC006, 0xC0C4,
-	0xC008, 0x8347,
-	0xC00A, 0x3400,
-	0xC00C, 0x0347,
-	0xC00E, 0x6400,
-	0xC010, 0x8346,
-	0xC012, 0x7400,
-	0xC014, 0xFD17,
-	0xC016, 0x0507,
-	0xC018, 0x93F7,
-	0xC01A, 0xF70F,
-	0xC01C, 0x2303,
-	0xC01E, 0xE400,
-	0xC020, 0xA301,
-	0xC022, 0xF400,
-	0xC024, 0x99C2,
-	0xC026, 0xA303,
-	0xC028, 0x0400,
-	0xC02A, 0xB1EF,
-	0xC02C, 0x0347,
-	0xC02E, 0x1401,
-	0xC030, 0x8356,
-	0xC032, 0x8401,
-	0xC034, 0x8347,
-	0xC036, 0x5400,
-	0xC038, 0x2309,
-	0xC03A, 0xE400,
-	0xC03C, 0x0547,
-	0xC03E, 0x231A,
-	0xC040, 0xD400,
-	0xC042, 0x2304,
-	0xC044, 0xE400,
-	0xC046, 0x231C,
-	0xC048, 0x0400,
-	0xC04A, 0xA308,
-	0xC04C, 0x0400,
-	0xC04E, 0xC5E3,
-	0xC050, 0x8347,
-	0xC052, 0x1400,
-	0xC054, 0x13F7,
-	0xC056, 0x2700,
-	0xC058, 0x19C7,
-	0xC05A, 0x0347,
-	0xC05C, 0x0400,
-	0xC05E, 0x01C7,
-	0xC060, 0x0347,
-	0xC062, 0x2400,
-	0xC064, 0x4DC3,
-	0xC066, 0x858B,
-	0xC068, 0xA5CF,
-	0xC06A, 0xB727,
-	0xC06C, 0x0024,
-	0xC06E, 0x83C7,
-	0xC070, 0x274D,
-	0xC072, 0xD1D3,
-	0xC074, 0xB767,
-	0xC076, 0x0124,
-	0xC078, 0x83A7,
-	0xC07A, 0x074B,
-	0xC07C, 0x0567,
-	0xC07E, 0xBA97,
-	0xC080, 0x2380,
-	0xC082, 0x07E0,
-	0xC084, 0x8DBF,
-	0xC086, 0x0347,
-	0xC088, 0x0401,
-	0xC08A, 0x5C4C,
-	0xC08C, 0x9316,
-	0xC08E, 0x1700,
-	0xC090, 0xB697,
-	0xC092, 0x5CCC,
-	0xC094, 0xB727,
-	0xC096, 0x0024,
-	0xC098, 0x9387,
-	0xC09A, 0x0733,
-	0xC09C, 0x83C6,
-	0xC09E, 0x371A,
-	0xC0A0, 0x89EA,
-	0xC0A2, 0x8346,
-	0xC0A4, 0x6401,
-	0xC0A6, 0xA1DA,
-	0xC0A8, 0xB7A6,
-	0xC0AA, 0x0124,
-	0xC0AC, 0x83C6,
-	0xC0AE, 0x260A,
-	0xC0B0, 0xB9F2,
-	0xC0B2, 0x83C7,
-	0xC0B4, 0x471A,
-	0xC0B6, 0xA1F3,
-	0xC0B8, 0x0346,
-	0xC0BA, 0x0400,
-	0xC0BC, 0xB767,
-	0xC0BE, 0x0124,
-	0xC0C0, 0x83A5,
-	0xC0C2, 0x074B,
-	0xC0C4, 0x3306,
-	0xC0C6, 0xE602,
-	0xC0C8, 0x8567,
-	0xC0CA, 0x9387,
-	0xC0CC, 0x07E1,
-	0xC0CE, 0xBE95,
-	0xC0D0, 0x1305,
-	0xC0D2, 0x0403,
-	0xC0D4, 0x0606,
-	0xC0D6, 0x9760,
-	0xC0D8, 0x00FC,
-	0xC0DA, 0xE780,
-	0xC0DC, 0x60F2,
-	0xC0DE, 0x21BF,
-	0xC0E0, 0x8547,
-	0xC0E2, 0xA304,
-	0xC0E4, 0xF400,
-	0xC0E6, 0x1733,
-	0xC0E8, 0x02FC,
-	0xC0EA, 0x6700,
-	0xC0EC, 0xE33F,
-	0xC0EE, 0xFD17,
-	0xC0F0, 0xA302,
-	0xC0F2, 0xF400,
-	0xC0F4, 0x2285,
-	0xC0F6, 0x9760,
-	0xC0F8, 0xFFFB,
-	0xC0FA, 0xE780,
-	0xC0FC, 0x6011,
-	0xC0FE, 0x1733,
-	0xC100, 0x02FC,
-	0xC102, 0x6700,
-	0xC104, 0x633E,
-	0xC106, 0x2285,
-	0xC108, 0x9760,
-	0xC10A, 0xFFFB,
-	0xC10C, 0xE780,
-	0xC10E, 0x4010,
-	0xC110, 0xDDB5,
-	0xC112, 0x0100,
-	0xC114, 0x8947,
-	0xC116, 0x6303,
-	0xC118, 0xF500,
-	0xC11A, 0x8280,
-	0xC11C, 0x1733,
-	0xC11E, 0x02FC,
-	0xC120, 0xE702,
-	0xC122, 0xA338,
-	0xC124, 0xB784,
-	0xC126, 0x0124,
-	0xC128, 0x9384,
-	0xC12A, 0x04AA,
-	0xC12C, 0x87A7,
-	0xC12E, 0x040A,
-	0xC130, 0x4111,
-	0xC132, 0x37C5,
-	0xC134, 0x0224,
-	0xC136, 0x5396,
-	0xC138, 0x17C0,
-	0xC13A, 0x7400,
-	0xC13C, 0x9145,
-	0xC13E, 0x1305,
-	0xC140, 0xA5B8,
-	0xC142, 0x9750,
-	0xC144, 0xFFFB,
-	0xC146, 0xE780,
-	0xC148, 0x60C3,
-	0xC14A, 0x3719,
-	0xC14C, 0x0140,
-	0xC14E, 0x4205,
-	0xC150, 0x4181,
-	0xC152, 0x130A,
-	0xC154, 0x4924,
-	0xC156, 0xB789,
-	0xC158, 0x0124,
-	0xC15A, 0x37C4,
-	0xC15C, 0x0224,
-	0xC15E, 0xB7CA,
-	0xC160, 0x0224,
-	0xC162, 0x2317,
-	0xC164, 0xA100,
-	0xC166, 0x9389,
-	0xC168, 0x89B1,
-	0xC16A, 0x1304,
-	0xC16C, 0x24B9,
-	0xC16E, 0x938A,
-	0xC170, 0xAABB,
-	0xC172, 0x330A,
-	0xC174, 0x9A40,
-	0xC176, 0x0605,
-	0xC178, 0x2295,
-	0xC17A, 0x8355,
-	0xC17C, 0x2500,
-	0xC17E, 0x0356,
-	0xC180, 0xC100,
-	0xC182, 0x0355,
-	0xC184, 0x0500,
-	0xC186, 0x2104,
-	0xC188, 0x9760,
-	0xC18A, 0x00FC,
-	0xC18C, 0xE780,
-	0xC18E, 0x8082,
-	0xC190, 0x4205,
-	0xC192, 0x4181,
-	0xC194, 0x2390,
-	0xC196, 0xA900,
-	0xC198, 0xB387,
-	0xC19A, 0x4901,
-	0xC19C, 0x2390,
-	0xC19E, 0xA700,
-	0xC1A0, 0x8909,
-	0xC1A2, 0x6305,
-	0xC1A4, 0x5401,
-	0xC1A6, 0x0355,
-	0xC1A8, 0xE100,
-	0xC1AA, 0xF1B7,
-	0xC1AC, 0xB789,
-	0xC1AE, 0x0124,
-	0xC1B0, 0x37CA,
-	0xC1B2, 0x0224,
-	0xC1B4, 0x1309,
-	0xC1B6, 0x0926,
-	0xC1B8, 0x9389,
-	0xC1BA, 0xA9AF,
-	0xC1BC, 0x130A,
-	0xC1BE, 0x2AC3,
-	0xC1C0, 0x8357,
-	0xC1C2, 0xE100,
-	0xC1C4, 0x0356,
-	0xC1C6, 0xC100,
-	0xC1C8, 0x8509,
-	0xC1CA, 0x8607,
-	0xC1CC, 0xA297,
-	0xC1CE, 0x83D5,
-	0xC1D0, 0x2700,
-	0xC1D2, 0x03D5,
-	0xC1D4, 0x0700,
-	0xC1D6, 0x0909,
-	0xC1D8, 0x2104,
-	0xC1DA, 0x9750,
-	0xC1DC, 0x00FC,
-	0xC1DE, 0xE780,
-	0xC1E0, 0x607D,
-	0xC1E2, 0x1375,
-	0xC1E4, 0xF50F,
-	0xC1E6, 0xA38F,
-	0xC1E8, 0xA9FE,
-	0xC1EA, 0x4205,
-	0xC1EC, 0x4181,
-	0xC1EE, 0x231F,
-	0xC1F0, 0xA9FE,
-	0xC1F2, 0xE317,
-	0xC1F4, 0x44FD,
-	0xC1F6, 0xB719,
-	0xC1F8, 0x0140,
-	0xC1FA, 0x3789,
-	0xC1FC, 0x0124,
-	0xC1FE, 0x37CA,
-	0xC200, 0x0224,
-	0xC202, 0x9389,
-	0xC204, 0x291F,
-	0xC206, 0x1309,
-	0xC208, 0xC9B2,
-	0xC20A, 0x130A,
-	0xC20C, 0x2AC6,
-	0xC20E, 0xB389,
-	0xC210, 0x9940,
-	0xC212, 0x8357,
-	0xC214, 0xE100,
-	0xC216, 0x0356,
-	0xC218, 0xC100,
-	0xC21A, 0x8607,
-	0xC21C, 0xA297,
-	0xC21E, 0x83D5,
-	0xC220, 0x2700,
-	0xC222, 0x03D5,
-	0xC224, 0x0700,
-	0xC226, 0x2104,
-	0xC228, 0x9750,
-	0xC22A, 0x00FC,
-	0xC22C, 0xE780,
-	0xC22E, 0x8078,
-	0xC230, 0x4205,
-	0xC232, 0x4181,
-	0xC234, 0x2310,
-	0xC236, 0xA900,
-	0xC238, 0xB307,
-	0xC23A, 0x3901,
-	0xC23C, 0x2390,
-	0xC23E, 0xA700,
-	0xC240, 0x0909,
-	0xC242, 0xE318,
-	0xC244, 0x44FD,
-	0xC246, 0xB717,
-	0xC248, 0x0140,
-	0xC24A, 0x3789,
-	0xC24C, 0x0124,
-	0xC24E, 0xB7C9,
-	0xC250, 0x0224,
-	0xC252, 0x9387,
-	0xC254, 0xA720,
-	0xC256, 0x1309,
-	0xC258, 0x69B4,
-	0xC25A, 0x9389,
-	0xC25C, 0x29C9,
-	0xC25E, 0xB384,
-	0xC260, 0x9740,
-	0xC262, 0x8357,
-	0xC264, 0xE100,
-	0xC266, 0x0356,
-	0xC268, 0xC100,
-	0xC26A, 0x8607,
-	0xC26C, 0xA297,
-	0xC26E, 0x83D5,
-	0xC270, 0x2700,
-	0xC272, 0x03D5,
-	0xC274, 0x0700,
-	0xC276, 0x2104,
-	0xC278, 0x9750,
-	0xC27A, 0x00FC,
-	0xC27C, 0xE780,
-	0xC27E, 0x8073,
-	0xC280, 0x4205,
-	0xC282, 0x4181,
-	0xC284, 0x2310,
-	0xC286, 0xA900,
-	0xC288, 0xB307,
-	0xC28A, 0x9900,
-	0xC28C, 0x2390,
-	0xC28E, 0xA700,
-	0xC290, 0x0909,
-	0xC292, 0xE318,
-	0xC294, 0x34FD,
-	0xC296, 0x4101,
-	0xC298, 0x1733,
-	0xC29A, 0x02FC,
-	0xC29C, 0x6700,
-	0xC29E, 0x2324,
-	0xC2A0, 0x1733,
-	0xC2A2, 0x02FC,
-	0xC2A4, 0xE702,
-	0xC2A6, 0x0322,
-	0xC2A8, 0x2A84,
-	0xC2AA, 0xEFE0,
-	0xC2AC, 0x3F98,
-	0xC2AE, 0x1DE0,
-	0xC2B0, 0xB797,
-	0xC2B2, 0x0124,
-	0xC2B4, 0x9387,
-	0xC2B6, 0x0753,
-	0xC2B8, 0x0D67,
-	0xC2BA, 0x3E97,
-	0xC2BC, 0x0327,
-	0xC2BE, 0x876E,
-	0xC2C0, 0x058B,
-	0xC2C2, 0x09CB,
-	0xC2C4, 0x3787,
-	0xC2C6, 0x0040,
-	0xC2C8, 0x0357,
-	0xC2CA, 0x87F4,
-	0xC2CC, 0xA146,
-	0xC2CE, 0x618B,
-	0xC2D0, 0x6306,
-	0xC2D2, 0xD700,
-	0xC2D4, 0x1733,
-	0xC2D6, 0x02FC,
-	0xC2D8, 0x6700,
-	0xC2DA, 0x0321,
-	0xC2DC, 0x0567,
-	0xC2DE, 0xBA97,
-	0xC2E0, 0x2389,
-	0xC2E2, 0x07B6,
-	0xC2E4, 0xC5BF,
-	0xC2E6, 0x0100,
-	0xC2E8, 0x9147,
-	0xC2EA, 0x6303,
-	0xC2EC, 0xF500,
-	0xC2EE, 0x8280,
-	0xC2F0, 0x1733,
-	0xC2F2, 0x02FC,
-	0xC2F4, 0xE702,
-	0xC2F6, 0x031D,
-	0xC2F8, 0x9750,
-	0xC2FA, 0xFFFB,
-	0xC2FC, 0xE780,
-	0xC2FE, 0xC063,
-	0xC300, 0x09C5,
-	0xC302, 0x1733,
-	0xC304, 0x02FC,
-	0xC306, 0x6700,
-	0xC308, 0x231E,
-	0xC30A, 0x9750,
-	0xC30C, 0xFFFB,
-	0xC30E, 0xE780,
-	0xC310, 0xE05D,
-	0xC312, 0x65F9,
-	0xC314, 0xB7C7,
-	0xC316, 0x0224,
-	0xC318, 0x03D7,
-	0xC31A, 0x67B8,
-	0xC31C, 0xB7F7,
-	0xC31E, 0x0040,
-	0xC320, 0x2390,
-	0xC322, 0xE73E,
-	0xC324, 0xF9BF,
-	0xC326, 0x0100,
-	0xC328, 0x37C7,
-	0xC32A, 0x0224,
-	0xC32C, 0x1307,
-	0xC32E, 0x47B8,
-	0xC330, 0x8345,
-	0xC332, 0x0700,
-	0xC334, 0xB7A7,
-	0xC336, 0x0224,
-	0xC338, 0xB7D6,
-	0xC33A, 0x0124,
-	0xC33C, 0x03D6,
-	0xC33E, 0x4760,
-	0xC340, 0x23A8,
-	0xC342, 0xB6DA,
-	0xC344, 0xB767,
-	0xC346, 0x0124,
-	0xC348, 0xB7C6,
-	0xC34A, 0x0224,
-	0xC34C, 0x9387,
-	0xC34E, 0x0740,
-	0xC350, 0x9386,
-	0xC352, 0x86C9,
-	0xC354, 0xD4C7,
-	0xC356, 0x09CA,
-	0xC358, 0xB7B6,
-	0xC35A, 0x0224,
-	0xC35C, 0x3726,
-	0xC35E, 0x0024,
-	0xC360, 0x9386,
-	0xC362, 0x8668,
-	0xC364, 0x2320,
-	0xC366, 0xD6CE,
-	0xC368, 0x2319,
-	0xC36A, 0x0710,
-	0xC36C, 0x37C7,
-	0xC36E, 0x0224,
-	0xC370, 0x1307,
-	0xC372, 0x072A,
-	0xC374, 0xB7C6,
-	0xC376, 0x0224,
-	0xC378, 0x98D7,
-	0xC37A, 0x37C7,
-	0xC37C, 0x0224,
-	0xC37E, 0x9386,
-	0xC380, 0x4611,
-	0xC382, 0x1307,
-	0xC384, 0x872E,
-	0xC386, 0x23A4,
-	0xC388, 0xD1A4,
-	0xC38A, 0xD8C3,
-	0xC38C, 0x8280,
-	0xC38E, 0x0000,
-	0xC398, 0x29E1,
-	0xC39A, 0x1733,
-	0xC39C, 0x02FC,
-	0xC39E, 0xE702,
-	0xC3A0, 0x6312,
-	0xC3A2, 0xB797,
-	0xC3A4, 0x0124,
-	0xC3A6, 0x9387,
-	0xC3A8, 0x0753,
-	0xC3AA, 0x8564,
-	0xC3AC, 0xBE94,
-	0xC3AE, 0x03C7,
-	0xC3B0, 0xE4B6,
-	0xC3B2, 0x8D66,
-	0xC3B4, 0x3384,
-	0xC3B6, 0xD700,
-	0xC3B8, 0x8327,
-	0xC3BA, 0x846E,
-	0xC3BC, 0x05C3,
-	0xC3BE, 0x858B,
-	0xC3C0, 0x89CB,
-	0xC3C2, 0xB787,
-	0xC3C4, 0x0040,
-	0xC3C6, 0x83D7,
-	0xC3C8, 0x87F4,
-	0xC3CA, 0x2147,
-	0xC3CC, 0xE18B,
-	0xC3CE, 0x638B,
-	0xC3D0, 0xE702,
-	0xC3D2, 0x1733,
-	0xC3D4, 0x02FC,
-	0xC3D6, 0x6700,
-	0xC3D8, 0x2311,
-	0xC3DA, 0x8280,
-	0xC3DC, 0x1147,
-	0xC3DE, 0xE390,
-	0xC3E0, 0xE7FE,
-	0xC3E2, 0xB7D7,
-	0xC3E4, 0x0124,
-	0xC3E6, 0x83C7,
-	0xC3E8, 0x07FA,
-	0xC3EA, 0xE5D7,
-	0xC3EC, 0x97C0,
-	0xC3EE, 0x00FC,
-	0xC3F0, 0xE780,
-	0xC3F2, 0x401F,
-	0xC3F4, 0x3787,
-	0xC3F6, 0x0224,
-	0xC3F8, 0x8546,
-	0xC3FA, 0x8327,
-	0xC3FC, 0x846E,
-	0xC3FE, 0xA300,
-	0xC400, 0xD74E,
-	0xC402, 0x75BF,
-	0xC404, 0x2389,
-	0xC406, 0x04B6,
-	0xC408, 0xE9B7,
-	0xC40A, 0x0100,
-	0xC40C, 0x1733,
-	0xC40E, 0x02FC,
-	0xC410, 0xE702,
-	0xC412, 0xA309,
-	0xC414, 0x2A84,
-	0xC416, 0x2E8A,
-	0xC418, 0x9750,
-	0xC41A, 0xFFFB,
-	0xC41C, 0xE780,
-	0xC41E, 0x004D,
-	0xC420, 0x1DC5,
-	0xC422, 0xB797,
-	0xC424, 0x0124,
-	0xC426, 0x9387,
-	0xC428, 0x0753,
-	0xC42A, 0x0567,
-	0xC42C, 0x3E97,
-	0xC42E, 0x8346,
-	0xC430, 0x37B7,
-	0xC432, 0x0547,
-	0xC434, 0x6385,
-	0xC436, 0xE600,
-	0xC438, 0x83C7,
-	0xC43A, 0x2741,
-	0xC43C, 0x89CB,
-	0xC43E, 0xB787,
-	0xC440, 0x0224,
-	0xC442, 0x03C7,
-	0xC444, 0xB74A,
-	0xC446, 0x8547,
-	0xC448, 0xA284,
-	0xC44A, 0x630F,
-	0xC44C, 0xF702,
-	0xC44E, 0xB7E7,
-	0xC450, 0x0124,
-	0xC452, 0x9387,
-	0xC454, 0x0787,
-	0xC456, 0x83A9,
-	0xC458, 0x870A,
-	0xC45A, 0x03A9,
-	0xC45C, 0xC70A,
-	0xC45E, 0x0146,
-	0xC460, 0xCE85,
-	0xC462, 0x4A85,
-	0xC464, 0x9720,
-	0xC466, 0x01FC,
-	0xC468, 0xE780,
-	0xC46A, 0x005E,
-	0xC46C, 0xD285,
-	0xC46E, 0x2285,
-	0xC470, 0x9780,
-	0xC472, 0x01FC,
-	0xC474, 0xE780,
-	0xC476, 0x001B,
-	0xC478, 0xAA84,
-	0xC47A, 0x0546,
-	0xC47C, 0xCE85,
-	0xC47E, 0x4A85,
-	0xC480, 0x9720,
-	0xC482, 0x01FC,
-	0xC484, 0xE780,
-	0xC486, 0x405C,
-	0xC488, 0x2685,
-	0xC48A, 0x1733,
-	0xC48C, 0x02FC,
-	0xC48E, 0x6700,
-	0xC490, 0x0305,
-	0xC492, 0x0100,
-	0xC494, 0x1733,
-	0xC496, 0x02FC,
-	0xC498, 0xE702,
-	0xC49A, 0xC302,
-	0xC49C, 0x9750,
-	0xC49E, 0xFFFB,
-	0xC4A0, 0xE780,
-	0xC4A2, 0xC044,
-	0xC4A4, 0x09CD,
-	0xC4A6, 0x9750,
-	0xC4A8, 0xFFFB,
-	0xC4AA, 0xE780,
-	0xC4AC, 0x2047,
-	0xC4AE, 0x01E9,
-	0xC4B0, 0xB7A7,
-	0xC4B2, 0x0124,
-	0xC4B4, 0x9387,
-	0xC4B6, 0x0753,
-	0xC4B8, 0x83A7,
-	0xC4BA, 0x47B2,
-	0xC4BC, 0x95EF,
-	0xC4BE, 0x9750,
-	0xC4C0, 0xFFFB,
-	0xC4C2, 0xE780,
-	0xC4C4, 0xA042,
-	0xC4C6, 0x0DED,
-	0xC4C8, 0xB7E7,
-	0xC4CA, 0x0124,
-	0xC4CC, 0x9387,
-	0xC4CE, 0x0787,
-	0xC4D0, 0x8457,
-	0xC4D2, 0xC057,
-	0xC4D4, 0x0146,
-	0xC4D6, 0xA685,
-	0xC4D8, 0x2285,
-	0xC4DA, 0x9720,
-	0xC4DC, 0x01FC,
-	0xC4DE, 0xE780,
-	0xC4E0, 0xA056,
-	0xC4E2, 0x9750,
-	0xC4E4, 0x00FC,
-	0xC4E6, 0xE780,
-	0xC4E8, 0x60D8,
-	0xC4EA, 0x0546,
-	0xC4EC, 0xA685,
-	0xC4EE, 0x2285,
-	0xC4F0, 0x9720,
-	0xC4F2, 0x01FC,
-	0xC4F4, 0xE780,
-	0xC4F6, 0x4055,
-	0xC4F8, 0x1733,
-	0xC4FA, 0x02FC,
-	0xC4FC, 0x6700,
-	0xC4FE, 0xC3FE,
-	0xC500, 0x9750,
-	0xC502, 0xFFFB,
-	0xC504, 0xE780,
-	0xC506, 0x8041,
-	0xC508, 0x61F1,
-	0xC50A, 0x9760,
-	0xC50C, 0x01FC,
-	0xC50E, 0xE780,
-	0xC510, 0x20D8,
-	0xC512, 0xB7D7,
-	0xC514, 0x0124,
-	0xC516, 0x03D4,
-	0xC518, 0x07ED,
-	0xC51A, 0xAA84,
-	0xC51C, 0x97C0,
-	0xC51E, 0x01FC,
-	0xC520, 0xE780,
-	0xC522, 0xC051,
-	0xC524, 0x3314,
-	0xC526, 0xA400,
-	0xC528, 0x97C0,
-	0xC52A, 0x01FC,
-	0xC52C, 0xE780,
-	0xC52E, 0xC052,
-	0xC530, 0x3354,
-	0xC532, 0xA440,
-	0xC534, 0xE3FA,
-	0xC536, 0x84F8,
-	0xC538, 0xC1B7,
-	0xC53A, 0x0100,
-	0xC53C, 0xB7C7,
-	0xC53E, 0x0224,
-	0xC540, 0x03C7,
-	0xC542, 0x0739,
-	0xC544, 0xB7D7,
-	0xC546, 0x0124,
-	0xC548, 0x23A8,
-	0xC54A, 0xE7DA,
-	0xC54C, 0xB7C7,
-	0xC54E, 0x0224,
-	0xC550, 0x3767,
-	0xC552, 0x0124,
-	0xC554, 0x9387,
-	0xC556, 0x8739,
-	0xC558, 0x2324,
-	0xC55A, 0xF742,
-	0xC55C, 0x8280,
-	0xC55E, 0x0100,
-	0xC560, 0x1733,
-	0xC562, 0x02FC,
-	0xC564, 0xE702,
-	0xC566, 0x03F6,
-	0xC568, 0xB7C6,
-	0xC56A, 0x0224,
-	0xC56C, 0xB787,
-	0xC56E, 0x0324,
-	0xC570, 0x9386,
-	0xC572, 0x065C,
-	0xC574, 0x37A7,
-	0xC576, 0x0124,
-	0xC578, 0x9387,
-	0xC57A, 0x07FF,
-	0xC57C, 0x1307,
-	0xC57E, 0x0753,
-	0xC580, 0x958F,
-	0xC582, 0x232C,
-	0xC584, 0xD7B4,
-	0xC586, 0x232E,
-	0xC588, 0xF7B4,
-	0xC58A, 0x9720,
-	0xC58C, 0x01FC,
-	0xC58E, 0xE780,
-	0xC590, 0x60EF,
-	0xC592, 0x19C5,
-	0xC594, 0xEFD0,
-	0xC596, 0x1FE3,
-	0xC598, 0xEFF0,
-	0xC59A, 0x4FD3,
-	0xC59C, 0x7133,
-	0xC59E, 0x793F,
-	0xC5A0, 0x1733,
-	0xC5A2, 0x02FC,
-	0xC5A4, 0x6700,
-	0xC5A6, 0x43F4,
-	0xC5A8, 0x0000,
-	0xC5AA, 0x0000,
-	0xC5AC, 0x0000,
-	0xC5AE, 0x0000,
-	0xC5B0, 0xBD10,
-	0xC5B2, 0xE538,
-	0xC5B4, 0x0000,
-	0xC5B6, 0x0000,
-	0xC5B8, 0xBEFF,
-	0xC5BA, 0x0F00,
-	0xC5BC, 0x0000,
-	0xC5BE, 0x0000,
-	0xFCFC, 0x2000,
-	0x2366, 0x001C,
-	0x2368, 0x001C,
-	0x238E, 0x3F28,
-	0x2398, 0x5037,
-	0x24B8, 0x0101,
-	0x66E4, 0x1E8D,
-	0x66E6, 0x0000,
-	0x6874, 0x0000,
-	0x6876, 0x0000,
-	0x6878, 0x0000,
-	0x687A, 0x0000,
-	0x6884, 0x0100,
-	0x6886, 0x0100,
-	0x6888, 0x0100,
-	0x688A, 0x0100,
-	0x77D2, 0x0000,
-	0x780A, 0x0000,
-	0x793E, 0x0100,
-	0x7940, 0x7017,
-	0x795C, 0x0400,
-	0x795E, 0x0400,
-	0x7960, 0x0800,
-	0x7962, 0x1000,
-	0x7964, 0x0800,
-	0x7966, 0x1000,
-	0x7968, 0x0800,
-	0x796A, 0x0800,
-	0x796C, 0x0800,
-	0x796E, 0x0800,
-	0x7972, 0x0400,
-	0x7974, 0x0400,
-	0x7976, 0x0800,
-	0x7978, 0x1000,
-	0x797A, 0x0800,
-	0x797C, 0x1000,
-	0x797E, 0x0800,
-	0x7980, 0x0800,
-	0x7982, 0x0800,
-	0x7984, 0x0800,
-	0xB3AC, 0x4000,
-	0xB3B4, 0x2000,
-	0xB3B8, 0x1000,
-	0xB3F8, 0x8000,
-	0xB400, 0x4000,
-	0xB404, 0x2000,
-	0xBF70, 0x3A46,
-	0xBF7C, 0x0800,
-	0xC4A8, 0x0000,
-	0xC4F8, 0x00A8,
-	0xC4FA, 0x0000,
-	0xD3DA, 0x0D00,
-	0xD3E0, 0x0D00,
-	0xD3E2, 0x0D00,
-	0xD3E4, 0x0D00,
-	0xD3E6, 0x0D00,
-	0xD3EA, 0x0D00,
-	0xD3F4, 0x301C,
-	0xD3F8, 0x301C,
-	0xDD6C, 0xB47E,
-	0xDD6E, 0xB67E,
-	0xDE34, 0x0000,
-	0xDE36, 0x9231,
-	0xEC42, 0x0100,
-	0xEC44, 0x0100,
-	0xFCFC, 0x2001,
-	0x2542, 0x2020,
-	0x2544, 0x2018,
-	0x2554, 0x0000,
-	0x2556, 0x0000,
-	0x256E, 0x0000,
-	0x25D2, 0x0102,
-	0x2936, 0x4400,
-	0x2A14, 0x0002,
-	0x2A16, 0xDF03,
-	0x2A18, 0x0002,
-	0x2A1A, 0x0002,
-	0x3252, 0x8C00,
-	0x3254, 0x8C00,
-	0x3256, 0x8C00,
-	0x3258, 0x8700,
-	0x325A, 0x8200,
-	0x3E1C, 0x0200,
-	0x3E1E, 0x2000,
-	0x5ACC, 0x6505,
-	0xFCFC, 0x4000,
-	0x1858, 0x123F,
-	0xFCFC, 0x2001,
-	0x3EB8, 0x00FF,
-	0x3ECC, 0xFE03,
-	0x3F12, 0x9001,
-	0x33E0, 0x1E00,
-	0x33E2, 0x1E00,
-	0x33E4, 0x1E00,
-	0x33E6, 0x1E00,
-	0x33E8, 0x1E00,
-	0x33EA, 0x1E00,
-	0x3440, 0x0500,
-	0x3442, 0x0500,
-	0x3444, 0x0500,
-	0x3446, 0x0500,
-	0x3448, 0x0500,
-	0x344A, 0x0500,
-	0x3450, 0x0A00,
-	0x3452, 0x0A00,
-	0x3454, 0x0A00,
-	0x3456, 0x0A00,
-	0x3458, 0x0A00,
-	0x345A, 0x0A00,
-	0x34E0, 0x1400,
-	0x34E2, 0x1400,
-	0x34E4, 0x1400,
-	0x34E6, 0x1400,
-	0x34E8, 0x1400,
-	0x34EA, 0x1400,
-	0x3500, 0x1400,
-	0x3502, 0x1400,
-	0x3504, 0x1400,
-	0x3506, 0x1400,
-	0x3508, 0x1400,
-	0x350A, 0x1400,
-	0x3520, 0x1400,
-	0x3522, 0x1400,
-	0x3524, 0x1400,
-	0x3526, 0x1400,
-	0x3528, 0x1400,
-	0x352A, 0x1400,
-	0x3580, 0x2300,
-	0x3582, 0x2300,
-	0x3584, 0x2300,
-	0x3586, 0x2300,
-	0x3588, 0x2300,
-	0x358A, 0x2300,
-	0x35A0, 0x1900,
-	0x35A2, 0x1900,
-	0x35A4, 0x1900,
-	0x35A6, 0x1900,
-	0x35A8, 0x1900,
-	0x35AA, 0x1900,
-	0x35D0, 0x1E00,
-	0x35D2, 0x1E00,
-	0x35D4, 0x1E00,
-	0x35D6, 0x1E00,
-	0x35D8, 0x1E00,
-	0x35DA, 0x1E00,
-	0x35E0, 0x1E00,
-	0x35E2, 0x1E00,
-	0x35E4, 0x1E00,
-	0x35E6, 0x1E00,
-	0x35E8, 0x1E00,
-	0x35EA, 0x1E00,
-	0x35F0, 0x1E00,
-	0x35F2, 0x1E00,
-	0x35F4, 0x1E00,
-	0x35F6, 0x1E00,
-	0x35F8, 0x1E00,
-	0x35FA, 0x1E00,
-	0x3600, 0x1E00,
-	0x3602, 0x1E00,
-	0x3604, 0x1E00,
-	0x3606, 0x1E00,
-	0x3608, 0x1E00,
-	0x360A, 0x1E00,
-	0x3610, 0x1E00,
-	0x3612, 0x1E00,
-	0x3614, 0x1E00,
-	0x3616, 0x1E00,
-	0x3618, 0x1E00,
-	0x361A, 0x1E00,
-	0x3620, 0x0000,
-	0x3622, 0x0000,
-	0x3624, 0x0000,
-	0x3626, 0x0000,
-	0x3628, 0x0000,
-	0x362A, 0x0000,
-	0x3630, 0x0A00,
-	0x3632, 0x0A00,
-	0x3634, 0x0A00,
-	0x3636, 0x0A00,
-	0x3638, 0x0A00,
-	0x363A, 0x0A00,
-	0x3650, 0x1E00,
-	0x3652, 0x1E00,
-	0x3654, 0x1E00,
-	0x3656, 0x1E00,
-	0x3658, 0x1E00,
-	0x365A, 0x1E00,
-	0x3660, 0x1E00,
-	0x3662, 0x1E00,
-	0x3664, 0x1E00,
-	0x3666, 0x1E00,
-	0x3668, 0x1E00,
-	0x366A, 0x1E00,
-	0x36A0, 0x6400,
-	0x36A2, 0x6400,
-	0x36A4, 0x6400,
-	0x36A6, 0x6400,
-	0x36A8, 0x6400,
-	0x36AA, 0x6400,
-	0x36C0, 0x8C00,
-	0x36C2, 0x8C00,
-	0x36C4, 0x8C00,
-	0x36C6, 0x8C00,
-	0x36C8, 0x8C00,
-	0x36CA, 0x8C00,
-	0x36E0, 0x6400,
-	0x36E2, 0x6400,
-	0x36E4, 0x6400,
-	0x36E6, 0x6400,
-	0x36E8, 0x6400,
-	0x36EA, 0x6400,
-	0x36F0, 0x3200,
-	0x36F2, 0x3200,
-	0x36F4, 0x3200,
-	0x36F6, 0x3200,
-	0x36F8, 0x3200,
-	0x36FA, 0x3200,
-	0x3700, 0x3200,
-	0x3702, 0x3200,
-	0x3704, 0x3200,
-	0x3706, 0x3200,
-	0x3708, 0x3200,
-	0x370A, 0x3200,
-	0x3720, 0x3200,
-	0x3722, 0x3200,
-	0x3724, 0x3200,
-	0x3726, 0x3200,
-	0x3728, 0x3200,
-	0x372A, 0x3200,
-	0x3730, 0x3200,
-	0x3732, 0x3200,
-	0x3734, 0x3200,
-	0x3736, 0x3200,
-	0x3738, 0x3200,
-	0x373A, 0x3200,
-	0x3790, 0x3200,
-	0x3792, 0x3200,
-	0x3794, 0x3200,
-	0x3796, 0x3200,
-	0x3798, 0x3200,
-	0x379A, 0x3200,
-	0x37A0, 0x5000,
-	0x37A2, 0x5000,
-	0x37A4, 0x5000,
-	0x37A6, 0x5000,
-	0x37A8, 0x5000,
-	0x37AA, 0x5000,
-	0x37B0, 0x6400,
-	0x37B2, 0x6400,
-	0x37B4, 0x6400,
-	0x37B6, 0x6400,
-	0x37B8, 0x6400,
-	0x37BA, 0x6400,
-	0x37C0, 0x5000,
-	0x37C2, 0x5000,
-	0x37C4, 0x5000,
-	0x37C6, 0x5000,
-	0x37C8, 0x5000,
-	0x37CA, 0x5000,
-	0x37D0, 0x3200,
-	0x37D2, 0x3200,
-	0x37D4, 0x3200,
-	0x37D6, 0x3200,
-	0x37D8, 0x3200,
-	0x37DA, 0x3200,
-	0x37E0, 0x1E00,
-	0x37E2, 0x1E00,
-	0x37E4, 0x1E00,
-	0x37E6, 0x1E00,
-	0x37E8, 0x1E00,
-	0x37EA, 0x1E00,
-	0x37F0, 0x1E00,
-	0x37F2, 0x1E00,
-	0x37F4, 0x1E00,
-	0x37F6, 0x1E00,
-	0x37F8, 0x1E00,
-	0x37FA, 0x1E00,
-	0x3800, 0x1E00,
-	0x3802, 0x1E00,
-	0x3804, 0x1E00,
-	0x3806, 0x1E00,
-	0x3808, 0x1E00,
-	0x380A, 0x1E00,
-	0x3810, 0x1E00,
-	0x3812, 0x1E00,
-	0x3814, 0x1E00,
-	0x3816, 0x1E00,
-	0x3818, 0x1E00,
-	0x381A, 0x1E00,
-	0x3820, 0x1E00,
-	0x3822, 0x1E00,
-	0x3824, 0x1E00,
-	0x3826, 0x1E00,
-	0x3828, 0x1E00,
-	0x382A, 0x1E00,
-	0x3870, 0x3200,
-	0x3872, 0x3200,
-	0x3874, 0x3200,
-	0x3876, 0x3200,
-	0x3878, 0x3200,
-	0x387A, 0x3200,
-	0x3880, 0x3200,
-	0x3882, 0x3200,
-	0x3884, 0x3200,
-	0x3886, 0x3200,
-	0x3888, 0x3200,
-	0x388A, 0x3200,
-	0x3890, 0x3200,
-	0x3892, 0x3200,
-	0x3894, 0x3200,
-	0x3896, 0x3200,
-	0x3898, 0x3200,
-	0x389A, 0x3200,
-	0x38A0, 0x3200,
-	0x38A2, 0x3200,
-	0x38A4, 0x3200,
-	0x38A6, 0x3200,
-	0x38A8, 0x3200,
-	0x38AA, 0x3200,
-	0x38B0, 0x3200,
-	0x38B2, 0x3200,
-	0x38B4, 0x3200,
-	0x38B6, 0x3200,
-	0x38B8, 0x3200,
-	0x38BA, 0x3200,
-	0x320A, 0xFF03,
-	0x320C, 0x0700,
-	0x320E, 0xFF03,
-	0x3210, 0x0700,
-	0x321E, 0x0000,
-	0x31D4, 0x00FF,
-	0x321A, 0x0406,
-	0x3244, 0x0101,
-	0x3246, 0x0101,
-	0x3248, 0x0010,
-	0x3266, 0x0100,
-	0x3330, 0x0108,
-	0x3334, 0x0100,
-	0x3336, 0x0000,
-	0xFCFC, 0x2002,
-	0xBB8A, 0x0100,
-	0xBB8C, 0x0800,
-	0xBB8E, 0x1000,
-	0xBB90, 0x2000,
-	0xBB92, 0xC800,
-	0xBB94, 0xC800,
-	0xBB96, 0xC800,
-	0xBB98, 0xC800,
-	0xBB9A, 0xC400,
-	0xBB9C, 0xC400,
-	0xBB9E, 0xC400,
-	0xBBA0, 0xC400,
-	0xBBA2, 0xC200,
-	0xBBA4, 0xC200,
-	0xBBA6, 0xC200,
-	0xBBA8, 0xC200,
-	0xBBAA, 0xBE00,
-	0xBBAC, 0xBE00,
-	0xBBAE, 0xBE00,
-	0xBBB0, 0xBE00,
-	0xBBB2, 0xBC00,
-	0xBBB4, 0xBC00,
-	0xBBB6, 0xBC00,
-	0xBBB8, 0xBC00,
-	0xBBBA, 0x2000,
-	0xBBBC, 0x2000,
-	0xBBBE, 0x2000,
-	0xBBC0, 0x2000,
-	0xBBC2, 0x1600,
-	0xBBC4, 0x1600,
-	0xBBC6, 0x1600,
-	0xBBC8, 0x1600,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0000,
-	0xBBD2, 0x0A00,
-	0xBBD4, 0x0A00,
-	0xBBD6, 0x0A00,
-	0xBBD8, 0x0A00,
-	0xBBDA, 0x1400,
-	0xBBDC, 0x1400,
-	0xBBDE, 0x1400,
-	0xBBE0, 0x1400,
-	0xBBE2, 0x2A00,
-	0xBBE4, 0x2A00,
-	0xBBE6, 0x2A00,
-	0xBBE8, 0x2A00,
-	0xBBEA, 0x2A00,
-	0xBBEC, 0x2A00,
-	0xBBEE, 0x2A00,
-	0xBBF0, 0x2A00,
-	0xBBF2, 0x0100,
-	0xBBF4, 0x0100,
-	0xBBF6, 0x0100,
-	0xBBF8, 0x0100,
-	0xBBFA, 0x0F00,
-	0xBBFC, 0x0F00,
-	0xBBFE, 0x0F00,
-	0xBC00, 0x0F00,
-	0xBC02, 0x0400,
-	0xBC04, 0x0400,
-	0xBC06, 0x0400,
-	0xBC08, 0x0400,
-	0xBC0A, 0x1900,
-	0xBC0C, 0x1900,
-	0xBC0E, 0x1900,
-	0xBC10, 0x1900,
-	0xBC12, 0x1400,
-	0xBC14, 0x1400,
-	0xBC16, 0x1400,
-	0xBC18, 0x1400,
-	0xBC1A, 0x3A00,
-	0xBC1C, 0x3A00,
-	0xBC1E, 0x3A00,
-	0xBC20, 0x3A00,
-	0xBC22, 0x0A00,
-	0xBC24, 0x0A00,
-	0xBC26, 0x0A00,
-	0xBC28, 0x0A00,
-	0xBC2A, 0x4B00,
-	0xBC2C, 0x4B00,
-	0xBC2E, 0x4B00,
-	0xBC30, 0x4B00,
-	0xBC32, 0x0200,
-	0xBC34, 0x0600,
-	0xBC36, 0x0C00,
-	0xBC38, 0x0C00,
-	0xBC3A, 0x2A00,
-	0xBC3C, 0x2500,
-	0xBC3E, 0x2000,
-	0xBC40, 0x2000,
-	0xBC42, 0x0000,
-	0xBC44, 0x1000,
-	0xBC46, 0x2300,
-	0xBC48, 0x2300,
-	0xBC4A, 0x3F00,
-	0xBC4C, 0x3100,
-	0xBC4E, 0x2100,
-	0xBC50, 0x2100,
-	0xBC52, 0x0A00,
-	0xBC54, 0x1B00,
-	0xBC56, 0x3000,
-	0xBC58, 0x3000,
-	0xBC5A, 0x1900,
-	0xBC5C, 0x1500,
-	0xBC5E, 0x1100,
-	0xBC60, 0x1100,
-	0xBC62, 0x0F00,
-	0xBC64, 0x0F00,
-	0xBC66, 0x0F00,
-	0xBC68, 0x0F00,
-	0xBC6A, 0x1900,
-	0xBC6C, 0x1900,
-	0xBC6E, 0x1900,
-	0xBC70, 0x1900,
-	0xBC72, 0x0A00,
-	0xBC74, 0x0A00,
-	0xBC76, 0x0A00,
-	0xBC78, 0x0A00,
-	0xBC7A, 0x0B00,
-	0xBC7C, 0x0B00,
-	0xBC7E, 0x0B00,
-	0xBC80, 0x0B00,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x0000,
-	0xBC8A, 0x0800,
-	0xBC8C, 0x0800,
-	0xBC8E, 0x0800,
-	0xBC90, 0x0800,
-	0xFCFC, 0x4000,
-	0xFCFC, 0x2000,
-	0x68D8, 0x0100,
-	0xFCFC, 0x2002,
-	0xBC92, 0x0100,
-	0xFCFC, 0x4000,
-	0x0E04, 0x1C03,
-	0x0E10, 0x0100,
-	0x0E12, 0x00A0,
-	0x0E14, 0x0C84,
-	0x0E16, 0x002B,
-	0x0E18, 0x0300,
-	0x0E1A, 0x3000,
-	0x0E1C, 0x0100,
-	0x0E1E, 0x00A0,
-	0x0E20, 0x0C84,
-	0x0E22, 0x012B,
-	0x0E24, 0x0400,
-	0x0E26, 0x3000,
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0xFCFC, 0x2000,
-	0x3D44, 0x0000,
-	0x3D88, 0xFCFC,
-	0x3D8A, 0xFEFF,
-	0x3D8C, 0xFCFC,
-	0x3D8E, 0xFEFF,
-	0x3D90, 0xFCFC,
-	0x3D92, 0xFEFF,
-	0x3D94, 0xFCFC,
-	0x3D96, 0xFEFF,
-	0x3FE0, 0x0324,
-	0x3FE2, 0x3E8B,
-	0x3FE4, 0x0324,
-	0x3FE6, 0x0080,
-	0x4238, 0x0324,
-	0x423A, 0x3E8B,
-	0x423C, 0x0324,
-	0x423E, 0xA080,
-	0x4490, 0x0324,
-	0x4492, 0x3E8B,
-	0x4494, 0x0324,
-	0x4496, 0xEC80,
-	0x46E8, 0x0324,
-	0x46EA, 0x3E8B,
-	0x46EC, 0x0324,
-	0x46EE, 0x1281,
-	0x4940, 0x0324,
-	0x4942, 0x3E8B,
-	0x4944, 0x0324,
-	0x4946, 0x1884,
-	0x4B98, 0x0324,
-	0x4B9A, 0x3E8B,
-	0x4B9C, 0x0324,
-	0x4B9E, 0x1884,
-	0x4BA0, 0x0324,
-	0x4BA2, 0x0C87,
-	0x4DF0, 0x0324,
-	0x4DF2, 0x3E8B,
-	0x4DF4, 0x0324,
-	0x4DF6, 0xB487,
-	0x5048, 0x0324,
-	0x504A, 0x3E8B,
-	0x504C, 0x0324,
-	0x504E, 0x2088,
-	0x52A0, 0x0324,
-	0x52A2, 0x3E8B,
-	0x52A4, 0x0000,
-	0x52A6, 0x0000,
-	0xFCFC, 0x2003,
-	0x8000, 0xFFFE,
-	0x8002, 0x2400,
-	0x8004, 0xFFFD,
-	0x8006, 0xD49C,
-	0x8008, 0x0003,
-	0x800A, 0xD4A8,
-	0x800C, 0x0001,
-	0x800E, 0xD4AC,
-	0x8010, 0x037E,
-	0x8012, 0xD4D0,
-	0x8014, 0x0011,
-	0x8016, 0xD4DE,
-	0x8018, 0x0028,
-	0x801A, 0xD4EE,
-	0x801C, 0x00E6,
-	0x801E, 0xD4FA,
-	0x8020, 0x0218,
-	0x8022, 0xF3F4,
-	0x8024, 0x00C8,
-	0x8026, 0xFFFE,
-	0x8028, 0x2401,
-	0x802A, 0xFFFD,
-	0x802C, 0x1D72,
-	0x802E, 0x0003,
-	0x8030, 0x1D74,
-	0x8032, 0x0003,
-	0x8034, 0x1D82,
-	0x8036, 0x0003,
-	0x8038, 0x1D84,
-	0x803A, 0x0003,
-	0x803C, 0xFFFE,
-	0x803E, 0x2400,
-	0x8040, 0xFFFD,
-	0x8042, 0x0342,
-	0x8044, 0x2580,
-	0x8046, 0x0000,
-	0x8048, 0xFFFF,
-	0x804A, 0x0008,
-	0x804C, 0x2401,
-	0x804E, 0x1DF2,
-	0x8050, 0x0300,
-	0x8052, 0x0300,
-	0x8054, 0x0600,
-	0x8056, 0x0600,
-	0x8058, 0xFFFF,
-	0x805A, 0x0008,
-	0x805C, 0x2401,
-	0x805E, 0x1E02,
-	0x8060, 0x0300,
-	0x8062, 0x0300,
-	0x8064, 0x0600,
-	0x8066, 0x0600,
-	0x8068, 0xFFFF,
-	0x806A, 0x0008,
-	0x806C, 0x2401,
-	0x806E, 0x1E12,
-	0x8070, 0x0600,
-	0x8072, 0x0600,
-	0x8074, 0x0600,
-	0x8076, 0x0600,
-	0x8078, 0xFFFF,
-	0x807A, 0x0008,
-	0x807C, 0x2401,
-	0x807E, 0x1E22,
-	0x8080, 0x0600,
-	0x8082, 0x0600,
-	0x8084, 0x0600,
-	0x8086, 0x0600,
-	0x8088, 0xFFFF,
-	0x808A, 0x000C,
-	0x808C, 0x2400,
-	0x808E, 0x0344,
-	0x8090, 0x0000,
-	0x8092, 0x0000,
-	0x8094, 0x1F20,
-	0x8096, 0x1F18,
-	0x8098, 0x0020,
-	0x809A, 0x0018,
-	0x809C, 0x0000,
-	0x809E, 0x0000,
-	0x80A0, 0xFFFE,
-	0x80A2, 0x2400,
-	0x80A4, 0xFFFD,
-	0x80A6, 0xD4AC,
-	0x80A8, 0x0316,
-	0x80AA, 0xF3F4,
-	0x80AC, 0x00C8,
-	0x80AE, 0xFFFE,
-	0x80B0, 0x2401,
-	0x80B2, 0xFFFD,
-	0x80B4, 0x25E0,
-	0x80B6, 0x0001,
-	0x80B8, 0x25E2,
-	0x80BA, 0x00CD,
-	0x80BC, 0x31D0,
-	0x80BE, 0x0000,
-	0x80C0, 0x31FA,
-	0x80C2, 0x0400,
-	0x80C4, 0xFFFE,
-	0x80C6, 0x2400,
-	0x80C8, 0xFFFD,
-	0x80CA, 0x0B08,
-	0x80CC, 0x0001,
-	0x80CE, 0x0342,
-	0x80D0, 0x2580,
-	0x80D2, 0x0000,
-	0x80D4, 0xFFFF,
-	0x80D6, 0x000C,
-	0x80D8, 0x2400,
-	0x80DA, 0x0344,
-	0x80DC, 0x0000,
-	0x80DE, 0x0000,
-	0x80E0, 0x1F20,
-	0x80E2, 0x1F18,
-	0x80E4, 0x0020,
-	0x80E6, 0x0018,
-	0x80E8, 0x0000,
-	0x80EA, 0x0000,
-	0x80EC, 0xFFFE,
-	0x80EE, 0x2401,
-	0x80F0, 0xFFFD,
-	0x80F2, 0x25E0,
-	0x80F4, 0x0001,
-	0x80F6, 0x25E2,
-	0x80F8, 0x00CD,
-	0x80FA, 0x31D0,
-	0x80FC, 0x0000,
-	0x80FE, 0x31FA,
-	0x8100, 0x0400,
-	0x8102, 0xFFFE,
-	0x8104, 0x2400,
-	0x8106, 0xFFFD,
-	0x8108, 0x0B08,
-	0x810A, 0x0001,
-	0x810C, 0x0000,
-	0x810E, 0x0000,
-	0x8110, 0x0000,
-	0x8112, 0xFFFE,
-	0x8114, 0x2400,
-	0x8116, 0xFFFD,
-	0x8118, 0x703C,
-	0x811A, 0x0101,
-	0x811C, 0x703E,
-	0x811E, 0x0001,
-	0x8120, 0x7048,
-	0x8122, 0x021F,
-	0x8124, 0x704A,
-	0x8126, 0x0A00,
-	0x8128, 0x705A,
-	0x812A, 0x0220,
-	0x812C, 0x705C,
-	0x812E, 0x0A01,
-	0x8130, 0x7274,
-	0x8132, 0x000B,
-	0x8134, 0x7276,
-	0x8136, 0x000B,
-	0x8138, 0x7278,
-	0x813A, 0xD236,
-	0x813C, 0x795A,
-	0x813E, 0x0020,
-	0x8140, 0x7970,
-	0x8142, 0x0020,
-	0x8144, 0x7996,
-	0x8146, 0x0101,
-	0x8148, 0x7A0E,
-	0x814A, 0x000F,
-	0x814C, 0x7A6E,
-	0x814E, 0x0019,
-	0x8150, 0x7A86,
-	0x8152, 0x0019,
-	0x8154, 0x7BDA,
-	0x8156, 0x004C,
-	0x8158, 0x82A2,
-	0x815A, 0x0014,
-	0x815C, 0x82BA,
-	0x815E, 0x0033,
-	0x8160, 0x8C9E,
-	0x8162, 0x0035,
-	0x8164, 0x8CA2,
-	0x8166, 0x0070,
-	0x8168, 0x8CCE,
-	0x816A, 0x0096,
-	0x816C, 0x8CD2,
-	0x816E, 0x00BE,
-	0x8170, 0xB176,
-	0x8172, 0x0206,
-	0x8174, 0xB220,
-	0x8176, 0x0301,
-	0x8178, 0xB268,
-	0x817A, 0xF380,
-	0x817C, 0xC4E2,
-	0x817E, 0x0000,
-	0x8180, 0xC53C,
-	0x8182, 0x0005,
-	0x8184, 0xC554,
-	0x8186, 0x1000,
-	0x8188, 0xD326,
-	0x818A, 0x1001,
-	0x818C, 0xD3EC,
-	0x818E, 0x1CB0,
-	0x8190, 0xD4A8,
-	0x8192, 0x0000,
-	0x8194, 0xD4AC,
-	0x8196, 0x0001,
-	0x8198, 0xD4B0,
-	0x819A, 0x00BE,
-	0x819C, 0xD4B8,
-	0x819E, 0x0014,
-	0x81A0, 0xD4BC,
-	0x81A2, 0x0032,
-	0x81A4, 0xD4C4,
-	0x81A6, 0x0000,
-	0x81A8, 0xD4C8,
-	0x81AA, 0x0001,
-	0x81AC, 0xD4D0,
-	0x81AE, 0x000A,
-	0x81B0, 0xD4D2,
-	0x81B2, 0x0000,
-	0x81B4, 0xD4D6,
-	0x81B6, 0x001A,
-	0x81B8, 0xD4DE,
-	0x81BA, 0x0001,
-	0x81BC, 0xD4E2,
-	0x81BE, 0x0036,
-	0x81C0, 0xD4EC,
-	0x81C2, 0x0000,
-	0x81C4, 0xD4EE,
-	0x81C6, 0x0000,
-	0x81C8, 0xD4F8,
-	0x81CA, 0x0000,
-	0x81CC, 0xD4FA,
-	0x81CE, 0x0000,
-	0x81D0, 0xD554,
-	0x81D2, 0x00C4,
-	0x81D4, 0xD556,
-	0x81D6, 0x00FA,
-	0x81D8, 0xD560,
-	0x81DA, 0x0352,
-	0x81DC, 0xD562,
-	0x81DE, 0x0388,
-	0x81E0, 0xD684,
-	0x81E2, 0xF380,
-	0x81E4, 0xDADA,
-	0x81E6, 0x0100,
-	0x81E8, 0xDC8C,
-	0x81EA, 0x0B3F,
-	0x81EC, 0xDC94,
-	0x81EE, 0x0301,
-	0x81F0, 0xE980,
-	0x81F2, 0x049E,
-	0x81F4, 0xF014,
-	0x81F6, 0x0007,
-	0x81F8, 0xF3F4,
-	0x81FA, 0x00C8,
-	0x81FC, 0xF3F6,
-	0x81FE, 0x10D6,
-	0x8200, 0xFFFE,
-	0x8202, 0x2401,
-	0x8204, 0xFFFD,
-	0x8206, 0x1C28,
-	0x8208, 0x04F0,
-	0x820A, 0x1C50,
-	0x820C, 0x02FD,
-	0x820E, 0x1C78,
-	0x8210, 0x02FD,
-	0x8212, 0x1CA0,
-	0x8214, 0x04F0,
-	0x8216, 0x2540,
-	0x8218, 0x0000,
-	0x821A, 0x29A8,
-	0x821C, 0x0001,
-	0x821E, 0x29BA,
-	0x8220, 0x0020,
-	0x8222, 0x2A44,
-	0x8224, 0x0739,
-	0x8226, 0x2A56,
-	0x8228, 0x0004,
-	0x822A, 0x3132,
-	0x822C, 0x0002,
-	0x822E, 0x31D0,
-	0x8230, 0x0000,
-	0x8232, 0x31F8,
-	0x8234, 0x0000,
-	0x8236, 0x31FA,
-	0x8238, 0x0000,
-	0x823A, 0x437E,
-	0x823C, 0x00E4,
-	0x823E, 0x4396,
-	0x8240, 0x000B,
-	0x8242, 0x4398,
-	0x8244, 0x000B,
-	0x8246, 0x43C6,
-	0x8248, 0x1401,
-	0x824A, 0xFFFE,
-	0x824C, 0x2402,
-	0x824E, 0xFFFD,
-	0x8250, 0x84C4,
-	0x8252, 0x0001,
-	0x8254, 0xA598,
-	0x8256, 0x0032,
-	0x8258, 0xA59A,
-	0x825A, 0x0035,
-	0x825C, 0xFFFE,
-	0x825E, 0x2400,
-	0x8260, 0xFFFD,
-	0x8262, 0x0086,
-	0x8264, 0x1400,
-	0x8266, 0x0350,
-	0x8268, 0x0008,
-	0x826A, 0x0352,
-	0x826C, 0x0008,
-	0x826E, 0x0900,
-	0x8270, 0x2222,
-	0x8272, 0x0B02,
-	0x8274, 0x0201,
-	0x8276, 0x0B08,
-	0x8278, 0x0001,
-	0x827A, 0x0342,
-	0x827C, 0x12B0,
-	0x827E, 0x0000,
-	0x8280, 0xFFFF,
-	0x8282, 0x0008,
-	0x8284, 0x2400,
-	0x8286, 0x7314,
-	0x8288, 0x2E00,
-	0x828A, 0x3000,
-	0x828C, 0x9EFD,
-	0x828E, 0x0040,
-	0x8290, 0xFFFF,
-	0x8292, 0x0008,
-	0x8294, 0x2400,
-	0x8296, 0xDAE0,
-	0x8298, 0xA000,
-	0x829A, 0x0001,
-	0x829C, 0x0005,
-	0x829E, 0x4011,
-	0x82A0, 0xFFFF,
-	0x82A2, 0x000C,
-	0x82A4, 0x2400,
-	0x82A6, 0xDB0C,
-	0x82A8, 0x1F1F,
-	0x82AA, 0x0080,
-	0x82AC, 0x0040,
-	0x82AE, 0x0020,
-	0x82B0, 0x0040,
-	0x82B2, 0x0040,
-	0x82B4, 0xFFFF,
-	0x82B6, 0x000C,
-	0x82B8, 0x2400,
-	0x82BA, 0xDB3C,
-	0x82BC, 0xD2FD,
-	0x82BE, 0x12D2,
-	0x82C0, 0x12D2,
-	0x82C2, 0x12D2,
-	0x82C4, 0x12D2,
-	0x82C6, 0x12D2,
-	0x82C8, 0xFFFF,
-	0x82CA, 0x000A,
-	0x82CC, 0x2401,
-	0x82CE, 0x1C2C,
-	0x82D0, 0x2010,
-	0x82D2, 0x0005,
-	0x82D4, 0x00A0,
-	0x82D6, 0x5110,
-	0x82D8, 0x3510,
-	0x82DA, 0xFFFF,
-	0x82DC, 0x0012,
-	0x82DE, 0x2401,
-	0x82E0, 0x1C54,
-	0x82E2, 0x2810,
-	0x82E4, 0x0003,
-	0x82E6, 0xF004,
-	0x82E8, 0x0010,
-	0x82EA, 0x3110,
-	0x82EC, 0x0005,
-	0x82EE, 0x00A0,
-	0x82F0, 0x6E10,
-	0x82F2, 0x6E10,
-	0x82F4, 0xFFFF,
-	0x82F6, 0x0012,
-	0x82F8, 0x2401,
-	0x82FA, 0x1C7C,
-	0x82FC, 0x2810,
-	0x82FE, 0x0003,
-	0x8300, 0xF004,
-	0x8302, 0x0010,
-	0x8304, 0x3110,
-	0x8306, 0x0005,
-	0x8308, 0x00A0,
-	0x830A, 0x6610,
-	0x830C, 0x6610,
-	0x830E, 0xFFFF,
-	0x8310, 0x000A,
-	0x8312, 0x2401,
-	0x8314, 0x1CA4,
-	0x8316, 0x2010,
-	0x8318, 0x0005,
-	0x831A, 0x00A0,
-	0x831C, 0x5110,
-	0x831E, 0x3510,
-	0x8320, 0xFFFF,
-	0x8322, 0x0010,
-	0x8324, 0x2401,
-	0x8326, 0x1CC6,
-	0x8328, 0x0001,
-	0x832A, 0xF004,
-	0x832C, 0x0010,
-	0x832E, 0x2010,
-	0x8330, 0x0005,
-	0x8332, 0x00A0,
-	0x8334, 0x5110,
-	0x8336, 0x3510,
-	0x8338, 0xFFFF,
-	0x833A, 0x0018,
-	0x833C, 0x2401,
-	0x833E, 0x1CEE,
-	0x8340, 0x0001,
-	0x8342, 0xFD02,
-	0x8344, 0x0010,
-	0x8346, 0x2810,
-	0x8348, 0x0003,
-	0x834A, 0xF004,
-	0x834C, 0x0010,
-	0x834E, 0x3110,
-	0x8350, 0x0005,
-	0x8352, 0x00A0,
-	0x8354, 0x6E10,
-	0x8356, 0x6E10,
-	0x8358, 0xFFFF,
-	0x835A, 0x0018,
-	0x835C, 0x2401,
-	0x835E, 0x1D16,
-	0x8360, 0x0001,
-	0x8362, 0xFD02,
-	0x8364, 0x0010,
-	0x8366, 0x2810,
-	0x8368, 0x0003,
-	0x836A, 0xF004,
-	0x836C, 0x0010,
-	0x836E, 0x3110,
-	0x8370, 0x0005,
-	0x8372, 0x00A0,
-	0x8374, 0x6610,
-	0x8376, 0x6610,
-	0x8378, 0xFFFF,
-	0x837A, 0x0010,
-	0x837C, 0x2401,
-	0x837E, 0x1D3E,
-	0x8380, 0x0001,
-	0x8382, 0xF004,
-	0x8384, 0x0010,
-	0x8386, 0x2010,
-	0x8388, 0x0005,
-	0x838A, 0x00A0,
-	0x838C, 0x5110,
-	0x838E, 0x3510,
-	0x8390, 0xFFFF,
-	0x8392, 0x0008,
-	0x8394, 0x2401,
-	0x8396, 0x1DF2,
-	0x8398, 0x0600,
-	0x839A, 0x0600,
-	0x839C, 0x0600,
-	0x839E, 0x0600,
-	0x83A0, 0xFFFF,
-	0x83A2, 0x0008,
-	0x83A4, 0x2401,
-	0x83A6, 0x1E02,
-	0x83A8, 0x0600,
-	0x83AA, 0x0600,
-	0x83AC, 0x0600,
-	0x83AE, 0x0600,
-	0x83B0, 0xFFFF,
-	0x83B2, 0x0008,
-	0x83B4, 0x2401,
-	0x83B6, 0x1E12,
-	0x83B8, 0x0C00,
-	0x83BA, 0x0C00,
-	0x83BC, 0x0C00,
-	0x83BE, 0x0C00,
-	0x83C0, 0xFFFF,
-	0x83C2, 0x0008,
-	0x83C4, 0x2401,
-	0x83C6, 0x1E22,
-	0x83C8, 0x0C00,
-	0x83CA, 0x0C00,
-	0x83CC, 0x0C00,
-	0x83CE, 0x0C00,
-	0x83D0, 0xFFFF,
-	0x83D2, 0x001C,
-	0x83D4, 0x2402,
-	0x83D6, 0xA57A,
-	0x83D8, 0xA000,
-	0x83DA, 0x4001,
-	0x83DC, 0x8002,
-	0x83DE, 0x0005,
-	0x83E0, 0x000A,
-	0x83E2, 0xA00F,
-	0x83E4, 0x4011,
-	0x83E6, 0x0E00,
-	0x83E8, 0x2000,
-	0x83EA, 0x2800,
-	0x83EC, 0x1400,
-	0x83EE, 0x2200,
-	0x83F0, 0x2800,
-	0x83F2, 0x2C00,
-	0x83F4, 0xFFFF,
-	0x83F6, 0x0008,
-	0x83F8, 0x2400,
-	0x83FA, 0x0344,
-	0x83FC, 0x0000,
-	0x83FE, 0x0000,
-	0x8400, 0x1F20,
-	0x8402, 0x1F18,
-	0x8404, 0xFFFF,
-	0x8406, 0x0008,
-	0x8408, 0x2400,
-	0x840A, 0x0380,
-	0x840C, 0x0200,
-	0x840E, 0x0200,
-	0x8410, 0x0200,
-	0x8412, 0x0200,
-	0x8414, 0x0000,
-	0x8416, 0x0000,
-	0x8418, 0xFFFE,
-	0x841A, 0x2400,
-	0x841C, 0xFFFD,
-	0x841E, 0x703C,
-	0x8420, 0x0101,
-	0x8422, 0x703E,
-	0x8424, 0x0001,
-	0x8426, 0x7048,
-	0x8428, 0x021F,
-	0x842A, 0x704A,
-	0x842C, 0x0A00,
-	0x842E, 0x705A,
-	0x8430, 0x0220,
-	0x8432, 0x705C,
-	0x8434, 0x0A01,
-	0x8436, 0x7274,
-	0x8438, 0x000B,
-	0x843A, 0x7276,
-	0x843C, 0x000B,
-	0x843E, 0x7278,
-	0x8440, 0xD236,
-	0x8442, 0x795A,
-	0x8444, 0x0020,
-	0x8446, 0x7970,
-	0x8448, 0x0020,
-	0x844A, 0x7996,
-	0x844C, 0x0101,
-	0x844E, 0x7A0E,
-	0x8450, 0x000F,
-	0x8452, 0x7A6E,
-	0x8454, 0x0019,
-	0x8456, 0x7A86,
-	0x8458, 0x0019,
-	0x845A, 0x7BDA,
-	0x845C, 0x004C,
-	0x845E, 0x82A2,
-	0x8460, 0x0014,
-	0x8462, 0x82BA,
-	0x8464, 0x0033,
-	0x8466, 0x8C9E,
-	0x8468, 0x0035,
-	0x846A, 0x8CA2,
-	0x846C, 0x0070,
-	0x846E, 0x8CCE,
-	0x8470, 0x0096,
-	0x8472, 0x8CD2,
-	0x8474, 0x00BE,
-	0x8476, 0xB176,
-	0x8478, 0x0206,
-	0x847A, 0xB220,
-	0x847C, 0x0301,
-	0x847E, 0xB268,
-	0x8480, 0xF380,
-	0x8482, 0xC4E2,
-	0x8484, 0x0000,
-	0x8486, 0xC53C,
-	0x8488, 0x0005,
-	0x848A, 0xC554,
-	0x848C, 0x1000,
-	0x848E, 0xD326,
-	0x8490, 0x1001,
-	0x8492, 0xD3EC,
-	0x8494, 0x1CB0,
-	0x8496, 0xD4A8,
-	0x8498, 0x0000,
-	0x849A, 0xD4AC,
-	0x849C, 0x0001,
-	0x849E, 0xD4B0,
-	0x84A0, 0x00BE,
-	0x84A2, 0xD4B8,
-	0x84A4, 0x0014,
-	0x84A6, 0xD4BC,
-	0x84A8, 0x0032,
-	0x84AA, 0xD4C4,
-	0x84AC, 0x0000,
-	0x84AE, 0xD4C8,
-	0x84B0, 0x0001,
-	0x84B2, 0xD4D0,
-	0x84B4, 0x000A,
-	0x84B6, 0xD4D2,
-	0x84B8, 0x0000,
-	0x84BA, 0xD4D6,
-	0x84BC, 0x001A,
-	0x84BE, 0xD4DE,
-	0x84C0, 0x0001,
-	0x84C2, 0xD4E2,
-	0x84C4, 0x0036,
-	0x84C6, 0xD4EC,
-	0x84C8, 0x0000,
-	0x84CA, 0xD4EE,
-	0x84CC, 0x0000,
-	0x84CE, 0xD4F8,
-	0x84D0, 0x0000,
-	0x84D2, 0xD4FA,
-	0x84D4, 0x0000,
-	0x84D6, 0xD554,
-	0x84D8, 0x00C4,
-	0x84DA, 0xD556,
-	0x84DC, 0x00FA,
-	0x84DE, 0xD560,
-	0x84E0, 0x0352,
-	0x84E2, 0xD562,
-	0x84E4, 0x0388,
-	0x84E6, 0xD684,
-	0x84E8, 0xF380,
-	0x84EA, 0xDADA,
-	0x84EC, 0x0100,
-	0x84EE, 0xDC8C,
-	0x84F0, 0x0B3F,
-	0x84F2, 0xDC94,
-	0x84F4, 0x0301,
-	0x84F6, 0xE980,
-	0x84F8, 0x049E,
-	0x84FA, 0xF014,
-	0x84FC, 0x0007,
-	0x84FE, 0xF3F4,
-	0x8500, 0x00C8,
-	0x8502, 0xF3F6,
-	0x8504, 0x10D6,
-	0x8506, 0xFFFE,
-	0x8508, 0x2401,
-	0x850A, 0xFFFD,
-	0x850C, 0x1C4E,
-	0x850E, 0x0180,
-	0x8510, 0x1C50,
-	0x8512, 0x0480,
-	0x8514, 0x2540,
-	0x8516, 0x0000,
-	0x8518, 0x29A8,
-	0x851A, 0x0001,
-	0x851C, 0x29BA,
-	0x851E, 0x0020,
-	0x8520, 0x2A44,
-	0x8522, 0x0739,
-	0x8524, 0x2A56,
-	0x8526, 0x0004,
-	0x8528, 0x3132,
-	0x852A, 0x0002,
-	0x852C, 0x31D0,
-	0x852E, 0x0000,
-	0x8530, 0x31F8,
-	0x8532, 0x0000,
-	0x8534, 0x31FA,
-	0x8536, 0x0000,
-	0x8538, 0x437E,
-	0x853A, 0x00E4,
-	0x853C, 0x4396,
-	0x853E, 0x000B,
-	0x8540, 0x4398,
-	0x8542, 0x000B,
-	0x8544, 0x43C6,
-	0x8546, 0x1401,
-	0x8548, 0xFFFE,
-	0x854A, 0x2402,
-	0x854C, 0xFFFD,
-	0x854E, 0x84C4,
-	0x8550, 0x0001,
-	0x8552, 0xA598,
-	0x8554, 0x0032,
-	0x8556, 0xA59A,
-	0x8558, 0x0035,
-	0x855A, 0xFFFE,
-	0x855C, 0x2400,
-	0x855E, 0xFFFD,
-	0x8560, 0x0086,
-	0x8562, 0x1400,
-	0x8564, 0x0350,
-	0x8566, 0x0008,
-	0x8568, 0x0352,
-	0x856A, 0x0008,
-	0x856C, 0x0900,
-	0x856E, 0x2222,
-	0x8570, 0x0B02,
-	0x8572, 0x0201,
-	0x8574, 0x0B08,
-	0x8576, 0x0001,
-	0x8578, 0x0E00,
-	0x857A, 0x0302,
-	0x857C, 0x0342,
-	0x857E, 0x12B0,
-	0x8580, 0x0000,
-	0x8582, 0xFFFF,
-	0x8584, 0x0008,
-	0x8586, 0x2400,
-	0x8588, 0x7314,
-	0x858A, 0x2E00,
-	0x858C, 0x3000,
-	0x858E, 0x9EFD,
-	0x8590, 0x0040,
-	0x8592, 0xFFFF,
-	0x8594, 0x0008,
-	0x8596, 0x2400,
-	0x8598, 0xDAE0,
-	0x859A, 0xA000,
-	0x859C, 0x0001,
-	0x859E, 0x0005,
-	0x85A0, 0x4011,
-	0x85A2, 0xFFFF,
-	0x85A4, 0x000C,
-	0x85A6, 0x2400,
-	0x85A8, 0xDB0C,
-	0x85AA, 0x1F1F,
-	0x85AC, 0x0080,
-	0x85AE, 0x0040,
-	0x85B0, 0x0020,
-	0x85B2, 0x0040,
-	0x85B4, 0x0060,
-	0x85B6, 0xFFFF,
-	0x85B8, 0x000C,
-	0x85BA, 0x2400,
-	0x85BC, 0xDB3C,
-	0x85BE, 0xD2FD,
-	0x85C0, 0x12D2,
-	0x85C2, 0x12D2,
-	0x85C4, 0x12D2,
-	0x85C6, 0x12D2,
-	0x85C8, 0x12D2,
-	0x85CA, 0xFFFF,
-	0x85CC, 0x0010,
-	0x85CE, 0x2401,
-	0x85D0, 0x1C26,
-	0x85D2, 0x8001,
-	0x85D4, 0x8004,
-	0x85D6, 0x2010,
-	0x85D8, 0x0010,
-	0x85DA, 0x0005,
-	0x85DC, 0x00A0,
-	0x85DE, 0x5110,
-	0x85E0, 0x3510,
-	0x85E2, 0xFFFF,
-	0x85E4, 0x000A,
-	0x85E6, 0x2401,
-	0x85E8, 0x1C54,
-	0x85EA, 0x0010,
-	0x85EC, 0x0005,
-	0x85EE, 0x00A0,
-	0x85F0, 0x7210,
-	0x85F2, 0x7210,
-	0x85F4, 0xFFFF,
-	0x85F6, 0x0010,
-	0x85F8, 0x2401,
-	0x85FA, 0x1C76,
-	0x85FC, 0x8001,
-	0x85FE, 0x8004,
-	0x8600, 0x2010,
-	0x8602, 0x0010,
-	0x8604, 0x0005,
-	0x8606, 0x00A0,
-	0x8608, 0x6610,
-	0x860A, 0x6610,
-	0x860C, 0xFFFF,
-	0x860E, 0x0010,
-	0x8610, 0x2401,
-	0x8612, 0x1C9E,
-	0x8614, 0x8001,
-	0x8616, 0x8004,
-	0x8618, 0x2010,
-	0x861A, 0x2010,
-	0x861C, 0x0005,
-	0x861E, 0x00A0,
-	0x8620, 0x5110,
-	0x8622, 0x3510,
-	0x8624, 0xFFFF,
-	0x8626, 0x0010,
-	0x8628, 0x2401,
-	0x862A, 0x1CC6,
-	0x862C, 0x8001,
-	0x862E, 0x8004,
-	0x8630, 0x2010,
-	0x8632, 0x0010,
-	0x8634, 0x0005,
-	0x8636, 0x00A0,
-	0x8638, 0x5110,
-	0x863A, 0x3510,
-	0x863C, 0xFFFF,
-	0x863E, 0x0010,
-	0x8640, 0x2401,
-	0x8642, 0x1CEE,
-	0x8644, 0x8001,
-	0x8646, 0x8004,
-	0x8648, 0x0010,
-	0x864A, 0x0010,
-	0x864C, 0x0005,
-	0x864E, 0x00A0,
-	0x8650, 0x7210,
-	0x8652, 0x7210,
-	0x8654, 0xFFFF,
-	0x8656, 0x0010,
-	0x8658, 0x2401,
-	0x865A, 0x1D16,
-	0x865C, 0x8001,
-	0x865E, 0x8004,
-	0x8660, 0x2010,
-	0x8662, 0x0010,
-	0x8664, 0x0005,
-	0x8666, 0x00A0,
-	0x8668, 0x6610,
-	0x866A, 0x6610,
-	0x866C, 0xFFFF,
-	0x866E, 0x0010,
-	0x8670, 0x2401,
-	0x8672, 0x1D3E,
-	0x8674, 0x8001,
-	0x8676, 0x8004,
-	0x8678, 0x2010,
-	0x867A, 0x2010,
-	0x867C, 0x0005,
-	0x867E, 0x00A0,
-	0x8680, 0x5110,
-	0x8682, 0x3510,
-	0x8684, 0xFFFF,
-	0x8686, 0x0008,
-	0x8688, 0x2401,
-	0x868A, 0x1DF2,
-	0x868C, 0x0C00,
-	0x868E, 0x0C00,
-	0x8690, 0x0C00,
-	0x8692, 0x0C00,
-	0x8694, 0xFFFF,
-	0x8696, 0x0008,
-	0x8698, 0x2401,
-	0x869A, 0x1E02,
-	0x869C, 0x0C00,
-	0x869E, 0x0C00,
-	0x86A0, 0x0C00,
-	0x86A2, 0x0C00,
-	0x86A4, 0xFFFF,
-	0x86A6, 0x0008,
-	0x86A8, 0x2401,
-	0x86AA, 0x1E12,
-	0x86AC, 0x0C00,
-	0x86AE, 0x0C00,
-	0x86B0, 0x0C00,
-	0x86B2, 0x0C00,
-	0x86B4, 0xFFFF,
-	0x86B6, 0x0008,
-	0x86B8, 0x2401,
-	0x86BA, 0x1E22,
-	0x86BC, 0x0C00,
-	0x86BE, 0x0C00,
-	0x86C0, 0x0C00,
-	0x86C2, 0x0C00,
-	0x86C4, 0xFFFF,
-	0x86C6, 0x001C,
-	0x86C8, 0x2402,
-	0x86CA, 0xA57A,
-	0x86CC, 0xA000,
-	0x86CE, 0x4001,
-	0x86D0, 0x8002,
-	0x86D2, 0x0005,
-	0x86D4, 0x000A,
-	0x86D6, 0xA00F,
-	0x86D8, 0x4011,
-	0x86DA, 0x0E00,
-	0x86DC, 0x2000,
-	0x86DE, 0x2800,
-	0x86E0, 0x1400,
-	0x86E2, 0x2200,
-	0x86E4, 0x2800,
-	0x86E6, 0x2C00,
-	0x86E8, 0xFFFF,
-	0x86EA, 0x0008,
-	0x86EC, 0x2400,
-	0x86EE, 0x0344,
-	0x86F0, 0x0000,
-	0x86F2, 0x0000,
-	0x86F4, 0x1F20,
-	0x86F6, 0x1F18,
-	0x86F8, 0xFFFF,
-	0x86FA, 0x0008,
-	0x86FC, 0x2400,
-	0x86FE, 0x0380,
-	0x8700, 0x0200,
-	0x8702, 0x0200,
-	0x8704, 0x0200,
-	0x8706, 0x0200,
-	0x8708, 0x0000,
-	0x870A, 0x0000,
-	0x870C, 0xFFFE,
-	0x870E, 0x2400,
-	0x8710, 0xFFFD,
-	0x8712, 0xD4B0,
-	0x8714, 0x049E,
-	0x8716, 0xDB14,
-	0x8718, 0x2000,
-	0x871A, 0xDB16,
-	0x871C, 0x3000,
-	0x871E, 0xFFFE,
-	0x8720, 0x2401,
-	0x8722, 0xFFFD,
-	0x8724, 0x1C54,
-	0x8726, 0x1010,
-	0x8728, 0x1C5A,
-	0x872A, 0x1078,
-	0x872C, 0x1C5C,
-	0x872E, 0x1078,
-	0x8730, 0x1C7A,
-	0x8732, 0x1028,
-	0x8734, 0x1C7C,
-	0x8736, 0x0FFE,
-	0x8738, 0x1CA4,
-	0x873A, 0x1010,
-	0x873C, 0x1CF4,
-	0x873E, 0x1010,
-	0x8740, 0x1CFA,
-	0x8742, 0x1078,
-	0x8744, 0x1CFC,
-	0x8746, 0x1078,
-	0x8748, 0x1D1A,
-	0x874A, 0x1028,
-	0x874C, 0x1D1C,
-	0x874E, 0x0FFE,
-	0x8750, 0x1D44,
-	0x8752, 0x1010,
-	0x8754, 0x2A44,
-	0x8756, 0x0952,
-	0x8758, 0xFFFE,
-	0x875A, 0x2400,
-	0x875C, 0xFFFD,
-	0x875E, 0x0346,
-	0x8760, 0x0300,
-	0x8762, 0x034A,
-	0x8764, 0x151F,
-	0x8766, 0x034E,
-	0x8768, 0x0900,
-	0x876A, 0x0E00,
-	0x876C, 0x0300,
-	0x876E, 0x0000,
-	0x8770, 0xFFFF,
-	0x8772, 0x0008,
-	0x8774, 0x2401,
-	0x8776, 0x1DF2,
-	0x8778, 0x0600,
-	0x877A, 0x0600,
-	0x877C, 0x0600,
-	0x877E, 0x0600,
-	0x8780, 0xFFFF,
-	0x8782, 0x0008,
-	0x8784, 0x2401,
-	0x8786, 0x1E02,
-	0x8788, 0x0600,
-	0x878A, 0x0600,
-	0x878C, 0x0600,
-	0x878E, 0x0600,
-	0x8790, 0xFFFF,
-	0x8792, 0x0008,
-	0x8794, 0x2401,
-	0x8796, 0x1E12,
-	0x8798, 0x0000,
-	0x879A, 0x0000,
-	0x879C, 0x0000,
-	0x879E, 0x0000,
-	0x87A0, 0xFFFF,
-	0x87A2, 0x0008,
-	0x87A4, 0x2401,
-	0x87A6, 0x1E22,
-	0x87A8, 0x0000,
-	0x87AA, 0x0000,
-	0x87AC, 0x0000,
-	0x87AE, 0x0000,
-	0x87B0, 0x0000,
-	0x87B2, 0x0000,
-	0x87B4, 0xFFFE,
-	0x87B6, 0x2400,
-	0x87B8, 0xFFFD,
-	0x87BA, 0x7048,
-	0x87BC, 0x002F,
-	0x87BE, 0x705A,
-	0x87C0, 0x0030,
-	0x87C2, 0x7274,
-	0x87C4, 0x000D,
-	0x87C6, 0x7276,
-	0x87C8, 0x000C,
-	0x87CA, 0x7278,
-	0x87CC, 0xD236,
-	0x87CE, 0xD49C,
-	0x87D0, 0x0000,
-	0x87D2, 0xD4A8,
-	0x87D4, 0x0000,
-	0x87D6, 0xD4AC,
-	0x87D8, 0x0001,
-	0x87DA, 0xD4B8,
-	0x87DC, 0x0014,
-	0x87DE, 0xD4C4,
-	0x87E0, 0x0000,
-	0x87E2, 0xD4D0,
-	0x87E4, 0x000A,
-	0x87E6, 0xD4D2,
-	0x87E8, 0x0000,
-	0x87EA, 0xD4DE,
-	0x87EC, 0x0001,
-	0x87EE, 0xD4EC,
-	0x87F0, 0x0000,
-	0x87F2, 0xD4EE,
-	0x87F4, 0x0000,
-	0x87F6, 0xD4F8,
-	0x87F8, 0x0000,
-	0x87FA, 0xD4FA,
-	0x87FC, 0x0000,
-	0x87FE, 0xFFFE,
-	0x8800, 0x2401,
-	0x8802, 0xFFFD,
-	0x8804, 0x2A44,
-	0x8806, 0x047E,
-	0x8808, 0xFFFE,
-	0x880A, 0x2400,
-	0x880C, 0xFFFD,
-	0x880E, 0x0346,
-	0x8810, 0x0780,
-	0x8812, 0x034A,
-	0x8814, 0x109F,
-	0x8816, 0x034E,
-	0x8818, 0x0900,
-	0x881A, 0x0000,
-	0x881C, 0x0000,
-	0x881E, 0x0000,
-	0x8820, 0xFFFE,
-	0x8822, 0x2400,
-	0x8824, 0xFFFD,
-	0x8826, 0x703C,
-	0x8828, 0x0101,
-	0x882A, 0x7048,
-	0x882C, 0x009F,
-	0x882E, 0x705A,
-	0x8830, 0x00A0,
-	0x8832, 0x7274,
-	0x8834, 0xB000,
-	0x8836, 0x7806,
-	0x8838, 0x0101,
-	0x883A, 0x7808,
-	0x883C, 0x0C3F,
-	0x883E, 0x795A,
-	0x8840, 0x0020,
-	0x8842, 0x7970,
-	0x8844, 0x0020,
-	0x8846, 0x7A0E,
-	0x8848, 0x000F,
-	0x884A, 0x7A6E,
-	0x884C, 0x0019,
-	0x884E, 0x7A86,
-	0x8850, 0x0019,
-	0x8852, 0x82A2,
-	0x8854, 0x0014,
-	0x8856, 0x82BA,
-	0x8858, 0x0033,
-	0x885A, 0x8C9E,
-	0x885C, 0x0035,
-	0x885E, 0x8CA2,
-	0x8860, 0x0050,
-	0x8862, 0x8CCE,
-	0x8864, 0x0096,
-	0x8866, 0x8CD2,
-	0x8868, 0x00BE,
-	0x886A, 0xB176,
-	0x886C, 0x0206,
-	0x886E, 0xB220,
-	0x8870, 0x0301,
-	0x8872, 0xB268,
-	0x8874, 0xE380,
-	0x8876, 0xC4D8,
-	0x8878, 0x0010,
-	0x887A, 0xC4E2,
-	0x887C, 0x0000,
-	0x887E, 0xC53C,
-	0x8880, 0x0005,
-	0x8882, 0xC554,
-	0x8884, 0x1000,
-	0x8886, 0xD326,
-	0x8888, 0x1001,
-	0x888A, 0xD3EC,
-	0x888C, 0x1CB0,
-	0x888E, 0xD4A8,
-	0x8890, 0x0001,
-	0x8892, 0xD4AC,
-	0x8894, 0x0001,
-	0x8896, 0xD4B0,
-	0x8898, 0x037E,
-	0x889A, 0xD4B8,
-	0x889C, 0x0014,
-	0x889E, 0xD4BC,
-	0x88A0, 0x040B,
-	0x88A2, 0xD4C4,
-	0x88A4, 0x0000,
-	0x88A6, 0xD4C8,
-	0x88A8, 0x0001,
-	0x88AA, 0xD4D0,
-	0x88AC, 0x000A,
-	0x88AE, 0xD4D2,
-	0x88B0, 0x0000,
-	0x88B2, 0xD4D6,
-	0x88B4, 0x001A,
-	0x88B6, 0xD4DE,
-	0x88B8, 0x0001,
-	0x88BA, 0xD4E2,
-	0x88BC, 0x0036,
-	0x88BE, 0xD4EC,
-	0x88C0, 0x0000,
-	0x88C2, 0xD4EE,
-	0x88C4, 0x0000,
-	0x88C6, 0xD4F8,
-	0x88C8, 0x0000,
-	0x88CA, 0xD4FA,
-	0x88CC, 0x0000,
-	0x88CE, 0xD554,
-	0x88D0, 0x00C4,
-	0x88D2, 0xD556,
-	0x88D4, 0x00FA,
-	0x88D6, 0xD560,
-	0x88D8, 0x0352,
-	0x88DA, 0xD562,
-	0x88DC, 0x0388,
-	0x88DE, 0xD684,
-	0x88E0, 0xE380,
-	0x88E2, 0xD704,
-	0x88E4, 0x7800,
-	0x88E6, 0xDADA,
-	0x88E8, 0x0100,
-	0x88EA, 0xDADE,
-	0x88EC, 0x00A0,
-	0x88EE, 0xDAE0,
-	0x88F0, 0x0140,
-	0x88F2, 0xDB0C,
-	0x88F4, 0x000D,
-	0x88F6, 0xDB0E,
-	0x88F8, 0x000F,
-	0x88FA, 0xDB10,
-	0x88FC, 0x000D,
-	0x88FE, 0xDB3C,
-	0x8900, 0xD236,
-	0x8902, 0xDB3E,
-	0x8904, 0xD236,
-	0x8906, 0xDB40,
-	0x8908, 0xD236,
-	0x890A, 0xDC8C,
-	0x890C, 0x0B3F,
-	0x890E, 0xDC94,
-	0x8910, 0x0301,
-	0x8912, 0xE980,
-	0x8914, 0x049E,
-	0x8916, 0xF3F4,
-	0x8918, 0x00C8,
-	0x891A, 0xF3F6,
-	0x891C, 0x10D6,
-	0x891E, 0xFFFE,
-	0x8920, 0x2401,
-	0x8922, 0xFFFD,
-	0x8924, 0x195E,
-	0x8926, 0x0101,
-	0x8928, 0x1966,
-	0x892A, 0x0002,
-	0x892C, 0x2540,
-	0x892E, 0x0000,
-	0x8930, 0x29A8,
-	0x8932, 0x0001,
-	0x8934, 0x29BA,
-	0x8936, 0x0020,
-	0x8938, 0x2A44,
-	0x893A, 0x0739,
-	0x893C, 0x2A56,
-	0x893E, 0x0004,
-	0x8940, 0x3132,
-	0x8942, 0x0002,
-	0x8944, 0x31D0,
-	0x8946, 0x0000,
-	0x8948, 0x31F8,
-	0x894A, 0x0000,
-	0x894C, 0x31FA,
-	0x894E, 0x0000,
-	0x8950, 0x4396,
-	0x8952, 0x000D,
-	0x8954, 0x5A70,
-	0x8956, 0x0001,
-	0x8958, 0xFFFE,
-	0x895A, 0x2402,
-	0x895C, 0xFFFD,
-	0x895E, 0xA598,
-	0x8960, 0x0032,
-	0x8962, 0xA59A,
-	0x8964, 0x0035,
-	0x8966, 0xFFFE,
-	0x8968, 0x2400,
-	0x896A, 0xFFFD,
-	0x896C, 0x0086,
-	0x896E, 0x0280,
-	0x8970, 0x021E,
-	0x8972, 0x0006,
-	0x8974, 0x034E,
-	0x8976, 0x0900,
-	0x8978, 0x0350,
-	0x897A, 0x0008,
-	0x897C, 0x0352,
-	0x897E, 0x0008,
-	0x8980, 0x0722,
-	0x8982, 0x0020,
-	0x8984, 0x0900,
-	0x8986, 0x2222,
-	0x8988, 0x0B02,
-	0x898A, 0x0201,
-	0x898C, 0x0B08,
-	0x898E, 0x0001,
-	0x8990, 0x0342,
-	0x8992, 0x2560,
-	0x8994, 0x0000,
-	0x8996, 0xFFFF,
-	0x8998, 0x0010,
-	0x899A, 0x2401,
-	0x899C, 0x1C26,
-	0x899E, 0x8001,
-	0x89A0, 0xF004,
-	0x89A2, 0x2010,
-	0x89A4, 0x5610,
-	0x89A6, 0x0005,
-	0x89A8, 0x00A0,
-	0x89AA, 0xB610,
-	0x89AC, 0x7011,
-	0x89AE, 0xFFFF,
-	0x89B0, 0x0018,
-	0x89B2, 0x2401,
-	0x89B4, 0x1C4E,
-	0x89B6, 0x8001,
-	0x89B8, 0xF004,
-	0x89BA, 0x2810,
-	0x89BC, 0x5110,
-	0x89BE, 0x0005,
-	0x89C0, 0xF009,
-	0x89C2, 0x9710,
-	0x89C4, 0xDA10,
-	0x89C6, 0x000A,
-	0x89C8, 0x00A0,
-	0x89CA, 0xDA10,
-	0x89CC, 0x7011,
-	0x89CE, 0xFFFF,
-	0x89D0, 0x0018,
-	0x89D2, 0x2401,
-	0x89D4, 0x1C76,
-	0x89D6, 0x8001,
-	0x89D8, 0xF004,
-	0x89DA, 0x2810,
-	0x89DC, 0x6610,
-	0x89DE, 0x0005,
-	0x89E0, 0xF009,
-	0x89E2, 0x7210,
-	0x89E4, 0xDD10,
-	0x89E6, 0x000A,
-	0x89E8, 0x00A0,
-	0x89EA, 0xDD10,
-	0x89EC, 0x7011,
-	0x89EE, 0xFFFF,
-	0x89F0, 0x0010,
-	0x89F2, 0x2401,
-	0x89F4, 0x1C9E,
-	0x89F6, 0x8001,
-	0x89F8, 0xF004,
-	0x89FA, 0x2010,
-	0x89FC, 0x5610,
-	0x89FE, 0x0005,
-	0x8A00, 0x00A0,
-	0x8A02, 0xC410,
-	0x8A04, 0x7011,
-	0x8A06, 0xFFFF,
-	0x8A08, 0x0010,
-	0x8A0A, 0x2401,
-	0x8A0C, 0x1CC6,
-	0x8A0E, 0x8001,
-	0x8A10, 0xF004,
-	0x8A12, 0x2010,
-	0x8A14, 0x5610,
-	0x8A16, 0x0005,
-	0x8A18, 0x00A0,
-	0x8A1A, 0xB610,
-	0x8A1C, 0x7011,
-	0x8A1E, 0xFFFF,
-	0x8A20, 0x0018,
-	0x8A22, 0x2401,
-	0x8A24, 0x1CEE,
-	0x8A26, 0x8001,
-	0x8A28, 0xF004,
-	0x8A2A, 0x2810,
-	0x8A2C, 0x5110,
-	0x8A2E, 0x0005,
-	0x8A30, 0xF009,
-	0x8A32, 0x9710,
-	0x8A34, 0xDA10,
-	0x8A36, 0x000A,
-	0x8A38, 0x00A0,
-	0x8A3A, 0xDA10,
-	0x8A3C, 0x7011,
-	0x8A3E, 0xFFFF,
-	0x8A40, 0x0018,
-	0x8A42, 0x2401,
-	0x8A44, 0x1D16,
-	0x8A46, 0x8001,
-	0x8A48, 0xF004,
-	0x8A4A, 0x2810,
-	0x8A4C, 0x6610,
-	0x8A4E, 0x0005,
-	0x8A50, 0xF009,
-	0x8A52, 0x7210,
-	0x8A54, 0xDD10,
-	0x8A56, 0x000A,
-	0x8A58, 0x00A0,
-	0x8A5A, 0xDD10,
-	0x8A5C, 0x7011,
-	0x8A5E, 0xFFFF,
-	0x8A60, 0x0010,
-	0x8A62, 0x2401,
-	0x8A64, 0x1D3E,
-	0x8A66, 0x8001,
-	0x8A68, 0xF004,
-	0x8A6A, 0x2010,
-	0x8A6C, 0x5610,
-	0x8A6E, 0x0005,
-	0x8A70, 0x00A0,
-	0x8A72, 0xC410,
-	0x8A74, 0x7011,
-	0x8A76, 0xFFFF,
-	0x8A78, 0x0008,
-	0x8A7A, 0x2401,
-	0x8A7C, 0x1D72,
-	0x8A7E, 0x0600,
-	0x8A80, 0x0600,
-	0x8A82, 0x0600,
-	0x8A84, 0x0600,
-	0x8A86, 0xFFFF,
-	0x8A88, 0x0008,
-	0x8A8A, 0x2401,
-	0x8A8C, 0x1D82,
-	0x8A8E, 0x0600,
-	0x8A90, 0x0600,
-	0x8A92, 0x0600,
-	0x8A94, 0x0600,
-	0x8A96, 0xFFFF,
-	0x8A98, 0x0008,
-	0x8A9A, 0x2401,
-	0x8A9C, 0x1D92,
-	0x8A9E, 0x0600,
-	0x8AA0, 0x0600,
-	0x8AA2, 0x0600,
-	0x8AA4, 0x0600,
-	0x8AA6, 0xFFFF,
-	0x8AA8, 0x0008,
-	0x8AAA, 0x2401,
-	0x8AAC, 0x1DA2,
-	0x8AAE, 0x0600,
-	0x8AB0, 0x0600,
-	0x8AB2, 0x0600,
-	0x8AB4, 0x0600,
-	0x8AB6, 0xFFFF,
-	0x8AB8, 0x0008,
-	0x8ABA, 0x2401,
-	0x8ABC, 0x1DF2,
-	0x8ABE, 0xFAFF,
-	0x8AC0, 0xFAFF,
-	0x8AC2, 0x0600,
-	0x8AC4, 0x0600,
-	0x8AC6, 0xFFFF,
-	0x8AC8, 0x0008,
-	0x8ACA, 0x2401,
-	0x8ACC, 0x1E02,
-	0x8ACE, 0xFAFF,
-	0x8AD0, 0xFAFF,
-	0x8AD2, 0x0600,
-	0x8AD4, 0x0600,
-	0x8AD6, 0xFFFF,
-	0x8AD8, 0x0008,
-	0x8ADA, 0x2401,
-	0x8ADC, 0x1E12,
-	0x8ADE, 0x0600,
-	0x8AE0, 0x0600,
-	0x8AE2, 0xFAFF,
-	0x8AE4, 0xFAFF,
-	0x8AE6, 0xFFFF,
-	0x8AE8, 0x0008,
-	0x8AEA, 0x2401,
-	0x8AEC, 0x1E22,
-	0x8AEE, 0x0600,
-	0x8AF0, 0x0600,
-	0x8AF2, 0xFAFF,
-	0x8AF4, 0xFAFF,
-	0x8AF6, 0xFFFF,
-	0x8AF8, 0x001C,
-	0x8AFA, 0x2402,
-	0x8AFC, 0xA57A,
-	0x8AFE, 0xA000,
-	0x8B00, 0x4001,
-	0x8B02, 0x8002,
-	0x8B04, 0x0005,
-	0x8B06, 0x000A,
-	0x8B08, 0xA00F,
-	0x8B0A, 0x4011,
-	0x8B0C, 0x0E00,
-	0x8B0E, 0x2000,
-	0x8B10, 0x2800,
-	0x8B12, 0x1400,
-	0x8B14, 0x2200,
-	0x8B16, 0x2800,
-	0x8B18, 0x2C00,
-	0x8B1A, 0xFFFF,
-	0x8B1C, 0x0008,
-	0x8B1E, 0x2400,
-	0x8B20, 0x0344,
-	0x8B22, 0x0000,
-	0x8B24, 0x0003,
-	0x8B26, 0x1F20,
-	0x8B28, 0x1F15,
-	0x8B2A, 0xFFFF,
-	0x8B2C, 0x0008,
-	0x8B2E, 0x2400,
-	0x8B30, 0x0380,
-	0x8B32, 0x0200,
-	0x8B34, 0x0200,
-	0x8B36, 0x0200,
-	0x8B38, 0x0200,
-	0x8B3A, 0x0000,
-	0x8B3C, 0x0000,
-	0x8B3E, 0xFFFE,
-	0x8B40, 0x2400,
-	0x8B42, 0xFFFD,
-	0x8B44, 0x22C2,
-	0x8B46, 0x0006,
-	0x8B48, 0x22C4,
-	0x8B4A, 0x1FFF,
-	0x8B4C, 0x22EC,
-	0x8B4E, 0x001F,
-	0x8B50, 0x2306,
-	0x8B52, 0x3FFF,
-	0x8B54, 0x2314,
-	0x8B56, 0x00FF,
-	0x8B58, 0x2354,
-	0x8B5A, 0x0003,
-	0x8B5C, 0x23F0,
-	0x8B5E, 0x0100,
-	0x8B60, 0x68DE,
-	0x8B62, 0x0000,
-	0x8B64, 0x703C,
-	0x8B66, 0x0100,
-	0x8B68, 0x703E,
-	0x8B6A, 0x0000,
-	0x8B6C, 0x7046,
-	0x8B6E, 0x027F,
-	0x8B70, 0x7048,
-	0x8B72, 0x005F,
-	0x8B74, 0x704A,
-	0x8B76, 0x0400,
-	0x8B78, 0x7058,
-	0x8B7A, 0x0280,
-	0x8B7C, 0x705A,
-	0x8B7E, 0x0060,
-	0x8B80, 0x705C,
-	0x8B82, 0x0400,
-	0x8B84, 0x7806,
-	0x8B86, 0x0100,
-	0x8B88, 0x7808,
-	0x8B8A, 0x0824,
-	0x8B8C, 0x78C0,
-	0x8B8E, 0x0101,
-	0x8B90, 0x795A,
-	0x8B92, 0x0010,
-	0x8B94, 0x7970,
-	0x8B96, 0x0010,
-	0x8B98, 0x7994,
-	0x8B9A, 0x2020,
-	0x8B9C, 0x7996,
-	0x8B9E, 0x0001,
-	0x8BA0, 0x799A,
-	0x8BA2, 0x0000,
-	0x8BA4, 0x7BDA,
-	0x8BA6, 0x003C,
-	0x8BA8, 0x7EE6,
-	0x8BAA, 0x002C,
-	0x8BAC, 0x7EF2,
-	0x8BAE, 0x002C,
-	0x8BB0, 0x7EFE,
-	0x8BB2, 0x0064,
-	0x8BB4, 0x7F0A,
-	0x8BB6, 0x0058,
-	0x8BB8, 0x7F0E,
-	0x8BBA, 0x0058,
-	0x8BBC, 0x82A2,
-	0x8BBE, 0x0012,
-	0x8BC0, 0x82BA,
-	0x8BC2, 0x0036,
-	0x8BC4, 0x8CCE,
-	0x8BC6, 0x012C,
-	0x8BC8, 0x8CD0,
-	0x8BCA, 0x0096,
-	0x8BCC, 0x8CD2,
-	0x8BCE, 0x0096,
-	0x8BD0, 0x8CD6,
-	0x8BD2, 0x0096,
-	0x8BD4, 0x8D0E,
-	0x8BD6, 0x0000,
-	0x8BD8, 0x9032,
-	0x8BDA, 0x0000,
-	0x8BDC, 0x903E,
-	0x8BDE, 0x0000,
-	0x8BE0, 0xB176,
-	0x8BE2, 0x0006,
-	0x8BE4, 0xB178,
-	0x8BE6, 0x0000,
-	0x8BE8, 0xB20C,
-	0x8BEA, 0x002E,
-	0x8BEC, 0xB21A,
-	0x8BEE, 0x0204,
-	0x8BF0, 0xB23C,
-	0x8BF2, 0x6060,
-	0x8BF4, 0xB242,
-	0x8BF6, 0x6060,
-	0x8BF8, 0xB266,
-	0x8BFA, 0x04C0,
-	0x8BFC, 0xB268,
-	0x8BFE, 0x0440,
-	0x8C00, 0xB270,
-	0x8C02, 0x0887,
-	0x8C04, 0xB322,
-	0x8C06, 0x0101,
-	0x8C08, 0xB324,
-	0x8C0A, 0x0001,
-	0x8C0C, 0xB330,
-	0x8C0E, 0x2828,
-	0x8C10, 0xB34A,
-	0x8C12, 0x2828,
-	0x8C14, 0xB360,
-	0x8C16, 0x2828,
-	0x8C18, 0xB378,
-	0x8C1A, 0x0001,
-	0x8C1C, 0xBF16,
-	0x8C1E, 0xAA0B,
-	0x8C20, 0xBF30,
-	0x8C22, 0x0000,
-	0x8C24, 0xBF78,
-	0x8C26, 0x3353,
-	0x8C28, 0xC4D8,
-	0x8C2A, 0x0020,
-	0x8C2C, 0xC4E0,
-	0x8C2E, 0x0001,
-	0x8C30, 0xC4E2,
-	0x8C32, 0x0002,
-	0x8C34, 0xC4F6,
-	0x8C36, 0x0000,
-	0x8C38, 0xC53C,
-	0x8C3A, 0x0001,
-	0x8C3C, 0xC53E,
-	0x8C3E, 0x0000,
-	0x8C40, 0xC544,
-	0x8C42, 0x0500,
-	0x8C44, 0xC554,
-	0x8C46, 0x0D53,
-	0x8C48, 0xC556,
-	0x8C4A, 0x0000,
-	0x8C4C, 0xD1F6,
-	0x8C4E, 0x003A,
-	0x8C50, 0xD20C,
-	0x8C52, 0x0809,
-	0x8C54, 0xD27A,
-	0x8C56, 0x0005,
-	0x8C58, 0xD314,
-	0x8C5A, 0x0220,
-	0x8C5C, 0xD326,
-	0x8C5E, 0x2001,
-	0x8C60, 0xD3EC,
-	0x8C62, 0x1CB1,
-	0x8C64, 0xD3F0,
-	0x8C66, 0x1CB0,
-	0x8C68, 0xD410,
-	0x8C6A, 0x0248,
-	0x8C6C, 0xD412,
-	0x8C6E, 0x04D2,
-	0x8C70, 0xD426,
-	0x8C72, 0x04D2,
-	0x8C74, 0xD428,
-	0x8C76, 0x0AEA,
-	0x8C78, 0xD43C,
-	0x8C7A, 0x4001,
-	0x8C7C, 0xD43E,
-	0x8C7E, 0x4001,
-	0x8C80, 0xD49C,
-	0x8C82, 0x0021,
-	0x8C84, 0xD4A8,
-	0x8C86, 0x0003,
-	0x8C88, 0xD4AC,
-	0x8C8A, 0x003B,
-	0x8C8C, 0xD4B0,
-	0x8C8E, 0x0001,
-	0x8C90, 0xD4B4,
-	0x8C92, 0x0001,
-	0x8C94, 0xD4B8,
-	0x8C96, 0x0035,
-	0x8C98, 0xD4BC,
-	0x8C9A, 0x0014,
-	0x8C9C, 0xD4C0,
-	0x8C9E, 0x0014,
-	0x8CA0, 0xD4C4,
-	0x8CA2, 0x0001,
-	0x8CA4, 0xD4C8,
-	0x8CA6, 0x0000,
-	0x8CA8, 0xD4CC,
-	0x8CAA, 0x0000,
-	0x8CAC, 0xD4D0,
-	0x8CAE, 0x0016,
-	0x8CB0, 0xD4D2,
-	0x8CB2, 0x0020,
-	0x8CB4, 0xD4D6,
-	0x8CB6, 0x0000,
-	0x8CB8, 0xD4DA,
-	0x8CBA, 0x0000,
-	0x8CBC, 0xD4DE,
-	0x8CBE, 0x0000,
-	0x8CC0, 0xD4E2,
-	0x8CC2, 0x0001,
-	0x8CC4, 0xD4E6,
-	0x8CC6, 0x0001,
-	0x8CC8, 0xD4EA,
-	0x8CCA, 0x0001,
-	0x8CCC, 0xD4EC,
-	0x8CCE, 0x00BE,
-	0x8CD0, 0xD4EE,
-	0x8CD2, 0x00BE,
-	0x8CD4, 0xD4F8,
-	0x8CD6, 0x01F0,
-	0x8CD8, 0xD4FA,
-	0x8CDA, 0x01F0,
-	0x8CDC, 0xD554,
-	0x8CDE, 0x0000,
-	0x8CE0, 0xD556,
-	0x8CE2, 0x0000,
-	0x8CE4, 0xD560,
-	0x8CE6, 0x0000,
-	0x8CE8, 0xD562,
-	0x8CEA, 0x0000,
-	0x8CEC, 0xD5BC,
-	0x8CEE, 0x0000,
-	0x8CF0, 0xD5BE,
-	0x8CF2, 0x0000,
-	0x8CF4, 0xD5C8,
-	0x8CF6, 0x0000,
-	0x8CF8, 0xD5CA,
-	0x8CFA, 0x0000,
-	0x8CFC, 0xD624,
-	0x8CFE, 0x0000,
-	0x8D00, 0xD62E,
-	0x8D02, 0x0000,
-	0x8D04, 0xD638,
-	0x8D06, 0x0000,
-	0x8D08, 0xD682,
-	0x8D0A, 0x04C0,
-	0x8D0C, 0xD684,
-	0x8D0E, 0x0440,
-	0x8D10, 0xD6D4,
-	0x8D12, 0x0000,
-	0x8D14, 0xD704,
-	0x8D16, 0x7802,
-	0x8D18, 0xD718,
-	0x8D1A, 0x0200,
-	0x8D1C, 0xD856,
-	0x8D1E, 0x0705,
-	0x8D20, 0xD896,
-	0x8D22, 0x0000,
-	0x8D24, 0xD8A2,
-	0x8D26, 0x0001,
-	0x8D28, 0xDC8C,
-	0x8D2A, 0x2B3F,
-	0x8D2C, 0xDC94,
-	0x8D2E, 0x0001,
-	0x8D30, 0xDD70,
-	0x8D32, 0x0000,
-	0x8D34, 0xDE38,
-	0x8D36, 0x0000,
-	0x8D38, 0xE980,
-	0x8D3A, 0x0500,
-	0x8D3C, 0xEF80,
-	0x8D3E, 0x0000,
-	0x8D40, 0xF014,
-	0x8D42, 0x0006,
-	0x8D44, 0xF09A,
-	0x8D46, 0xFF00,
-	0x8D48, 0xF0AA,
-	0x8D4A, 0xFFFF,
-	0x8D4C, 0xF0AC,
-	0x8D4E, 0xFFFF,
-	0x8D50, 0xF288,
-	0x8D52, 0x0000,
-	0x8D54, 0xF2E0,
-	0x8D56, 0x0000,
-	0x8D58, 0xF2EA,
-	0x8D5A, 0x0040,
-	0x8D5C, 0xF370,
-	0x8D5E, 0x0302,
-	0x8D60, 0xF372,
-	0x8D62, 0x0000,
-	0x8D64, 0xF3E4,
-	0x8D66, 0x0103,
-	0x8D68, 0xF3F4,
-	0x8D6A, 0x08C8,
-	0x8D6C, 0xF3F6,
-	0x8D6E, 0x10D7,
-	0x8D70, 0xFFFE,
-	0x8D72, 0x2401,
-	0x8D74, 0xFFFD,
-	0x8D76, 0x195E,
-	0x8D78, 0x0001,
-	0x8D7A, 0x1966,
-	0x8D7C, 0x0000,
-	0x8D7E, 0x2540,
-	0x8D80, 0x0002,
-	0x8D82, 0x25E0,
-	0x8D84, 0x0000,
-	0x8D86, 0x25E2,
-	0x8D88, 0x0000,
-	0x8D8A, 0x2920,
-	0x8D8C, 0x0001,
-	0x8D8E, 0x29A8,
-	0x8D90, 0x0002,
-	0x8D92, 0x29BA,
-	0x8D94, 0x00FF,
-	0x8D96, 0x2A30,
-	0x8D98, 0xFF01,
-	0x8D9A, 0x2A42,
-	0x8D9C, 0x0001,
-	0x8D9E, 0x2A44,
-	0x8DA0, 0x04B0,
-	0x8DA2, 0x2A46,
-	0x8DA4, 0x0000,
-	0x8DA6, 0x2A54,
-	0x8DA8, 0x0000,
-	0x8DAA, 0x2A56,
-	0x8DAC, 0x0008,
-	0x8DAE, 0x2BB2,
-	0x8DB0, 0x0010,
-	0x8DB2, 0x2D32,
-	0x8DB4, 0x1000,
-	0x8DB6, 0x3132,
-	0x8DB8, 0x0001,
-	0x8DBA, 0x31D0,
-	0x8DBC, 0x0002,
-	0x8DBE, 0x31F8,
-	0x8DC0, 0x0001,
-	0x8DC2, 0x31FA,
-	0x8DC4, 0x04CD,
-	0x8DC6, 0x3C42,
-	0x8DC8, 0x0000,
-	0x8DCA, 0x3C46,
-	0x8DCC, 0x05EB,
-	0x8DCE, 0x3C52,
-	0x8DD0, 0x0640,
-	0x8DD2, 0x4270,
-	0x8DD4, 0x0000,
-	0x8DD6, 0x427C,
-	0x8DD8, 0x0020,
-	0x8DDA, 0x4280,
-	0x8DDC, 0x0010,
-	0x8DDE, 0x4290,
-	0x8DE0, 0x0001,
-	0x8DE2, 0x4292,
-	0x8DE4, 0x0000,
-	0x8DE6, 0x4362,
-	0x8DE8, 0x0001,
-	0x8DEA, 0x4364,
-	0x8DEC, 0x0000,
-	0x8DEE, 0x4366,
-	0x8DF0, 0x0000,
-	0x8DF2, 0x4370,
-	0x8DF4, 0x0000,
-	0x8DF6, 0x437E,
-	0x8DF8, 0x00A4,
-	0x8DFA, 0x4396,
-	0x8DFC, 0x000C,
-	0x8DFE, 0x4398,
-	0x8E00, 0x000E,
-	0x8E02, 0x43AA,
-	0x8E04, 0x0000,
-	0x8E06, 0x43AC,
-	0x8E08, 0x0000,
-	0x8E0A, 0x43B4,
-	0x8E0C, 0x0000,
-	0x8E0E, 0x43B6,
-	0x8E10, 0x0000,
-	0x8E12, 0x43C6,
-	0x8E14, 0x0A01,
-	0x8E16, 0x44C6,
-	0x8E18, 0x0000,
-	0x8E1A, 0x5A70,
-	0x8E1C, 0x0000,
-	0x8E1E, 0xFFFE,
-	0x8E20, 0x2402,
-	0x8E22, 0xFFFD,
-	0x8E24, 0x849E,
-	0x8E26, 0x0000,
-	0x8E28, 0x84A0,
-	0x8E2A, 0x0000,
-	0x8E2C, 0x84A2,
-	0x8E2E, 0x0500,
-	0x8E30, 0x84C4,
-	0x8E32, 0x0000,
-	0x8E34, 0xA570,
-	0x8E36, 0x0000,
-	0x8E38, 0xFFFE,
-	0x8E3A, 0x2400,
-	0x8E3C, 0xFFFD,
-	0x8E3E, 0x0086,
-	0x8E40, 0x0200,
-	0x8E42, 0x0112,
-	0x8E44, 0x0A0A,
-	0x8E46, 0x0114,
-	0x8E48, 0x0103,
-	0x8E4A, 0x0118,
-	0x8E4C, 0x0400,
-	0x8E4E, 0x011A,
-	0x8E50, 0x0100,
-	0x8E52, 0x011C,
-	0x8E54, 0x0001,
-	0x8E56, 0x0136,
-	0x8E58, 0x1800,
-	0x8E5A, 0x013E,
-	0x8E5C, 0x0000,
-	0x8E5E, 0x020A,
-	0x8E60, 0x0000,
-	0x8E62, 0x021E,
-	0x8E64, 0x0000,
-	0x8E66, 0x0228,
-	0x8E68, 0x0001,
-	0x8E6A, 0x0270,
-	0x8E6C, 0x2B2B,
-	0x8E6E, 0x0272,
-	0x8E70, 0x102B,
-	0x8E72, 0x0274,
-	0x8E74, 0x2B30,
-	0x8E76, 0x0304,
-	0x8E78, 0x0003,
-	0x8E7A, 0x0306,
-	0x8E7C, 0x00E6,
-	0x8E7E, 0x031A,
-	0x8E80, 0x0003,
-	0x8E82, 0x031C,
-	0x8E84, 0x0028,
-	0x8E86, 0x031E,
-	0x8E88, 0x0002,
-	0x8E8A, 0x0400,
-	0x8E8C, 0x1010,
-	0x8E8E, 0x0408,
-	0x8E90, 0x0100,
-	0x8E92, 0x040A,
-	0x8E94, 0x0100,
-	0x8E96, 0x040C,
-	0x8E98, 0x0000,
-	0x8E9A, 0x0702,
-	0x8E9C, 0x0000,
-	0x8E9E, 0x0704,
-	0x8EA0, 0x0000,
-	0x8EA2, 0x0720,
-	0x8EA4, 0x0001,
-	0x8EA6, 0x0722,
-	0x8EA8, 0x0008,
-	0x8EAA, 0x0724,
-	0x8EAC, 0x0000,
-	0x8EAE, 0x0808,
-	0x8EB0, 0x0102,
-	0x8EB2, 0x0900,
-	0x8EB4, 0x1100,
-	0x8EB6, 0x0936,
-	0x8EB8, 0x0000,
-	0x8EBA, 0x0C40,
-	0x8EBC, 0x0000,
-	0x8EBE, 0x0E00,
-	0x8EC0, 0x0300,
-	0x8EC2, 0x0342,
-	0x8EC4, 0x23F0,
-	0x8EC6, 0x0000,
-	0x8EC8, 0xFFFF,
-	0x8ECA, 0x0008,
-	0x8ECC, 0x2400,
-	0x8ECE, 0x71D4,
-	0x8ED0, 0x3F00,
-	0x8ED2, 0x3D00,
-	0x8ED4, 0x84F3,
-	0x8ED6, 0x0040,
-	0x8ED8, 0xFFFF,
-	0x8EDA, 0x0010,
-	0x8EDC, 0x2400,
-	0x8EDE, 0x7274,
-	0x8EE0, 0x0080,
-	0x8EE2, 0x0000,
-	0x8EE4, 0x12D2,
-	0x8EE6, 0x0040,
-	0x8EE8, 0x0000,
-	0x8EEA, 0x0000,
-	0x8EEC, 0x0000,
-	0x8EEE, 0x0000,
-	0x8EF0, 0xFFFF,
-	0x8EF2, 0x0008,
-	0x8EF4, 0x2400,
-	0x8EF6, 0x7314,
-	0x8EF8, 0x0000,
-	0x8EFA, 0x0000,
-	0x8EFC, 0x0000,
-	0x8EFE, 0x0000,
-	0x8F00, 0xFFFF,
-	0x8F02, 0x0008,
-	0x8F04, 0x2400,
-	0x8F06, 0x7A0E,
-	0x8F08, 0x1E00,
-	0x8F0A, 0x0F00,
-	0x8F0C, 0x0F00,
-	0x8F0E, 0x0F00,
-	0x8F10, 0xFFFF,
-	0x8F12, 0x0008,
-	0x8F14, 0x2400,
-	0x8F16, 0x7A6E,
-	0x8F18, 0x2800,
-	0x8F1A, 0x1900,
-	0x8F1C, 0x1900,
-	0x8F1E, 0x1900,
-	0x8F20, 0xFFFF,
-	0x8F22, 0x0008,
-	0x8F24, 0x2400,
-	0x8F26, 0x7A86,
-	0x8F28, 0x2800,
-	0x8F2A, 0x1900,
-	0x8F2C, 0x1900,
-	0x8F2E, 0x1900,
-	0x8F30, 0xFFFF,
-	0x8F32, 0x0008,
-	0x8F34, 0x2400,
-	0x8F36, 0x8C9E,
-	0x8F38, 0x5000,
-	0x8F3A, 0x3500,
-	0x8F3C, 0x3500,
-	0x8F3E, 0x3500,
-	0x8F40, 0xFFFF,
-	0x8F42, 0x000A,
-	0x8F44, 0x2400,
-	0x8F46, 0xB21E,
-	0x8F48, 0x0000,
-	0x8F4A, 0x0000,
-	0x8F4C, 0xC000,
-	0x8F4E, 0x0103,
-	0x8F50, 0x0000,
-	0x8F52, 0xFFFF,
-	0x8F54, 0x000C,
-	0x8F56, 0x2400,
-	0x8F58, 0xBEDC,
-	0x8F5A, 0xC526,
-	0x8F5C, 0x903E,
-	0x8F5E, 0xC00F,
-	0x8F60, 0x0008,
-	0x8F62, 0x0C00,
-	0x8F64, 0x8000,
-	0x8F66, 0xFFFF,
-	0x8F68, 0x000E,
-	0x8F6A, 0x2400,
-	0x8F6C, 0xDADA,
-	0x8F6E, 0x0000,
-	0x8F70, 0x0000,
-	0x8F72, 0x0000,
-	0x8F74, 0x0000,
-	0x8F76, 0x0000,
-	0x8F78, 0x0000,
-	0x8F7A, 0x0000,
-	0x8F7C, 0xFFFF,
-	0x8F7E, 0x000C,
-	0x8F80, 0x2400,
-	0x8F82, 0xDB0C,
-	0x8F84, 0x0000,
-	0x8F86, 0x0000,
-	0x8F88, 0x0000,
-	0x8F8A, 0x0000,
-	0x8F8C, 0x0000,
-	0x8F8E, 0x0000,
-	0x8F90, 0xFFFF,
-	0x8F92, 0x000C,
-	0x8F94, 0x2400,
-	0x8F96, 0xDB3C,
-	0x8F98, 0x0000,
-	0x8F9A, 0x0000,
-	0x8F9C, 0x0000,
-	0x8F9E, 0x0000,
-	0x8FA0, 0x0000,
-	0x8FA2, 0x0000,
-	0x8FA4, 0xFFFF,
-	0x8FA6, 0x000C,
-	0x8FA8, 0x2400,
-	0x8FAA, 0xDB6C,
-	0x8FAC, 0x0000,
-	0x8FAE, 0x0000,
-	0x8FB0, 0x0000,
-	0x8FB2, 0x0000,
-	0x8FB4, 0x0000,
-	0x8FB6, 0x0000,
-	0x8FB8, 0xFFFF,
-	0x8FBA, 0x000C,
-	0x8FBC, 0x2400,
-	0x8FBE, 0xDB9C,
-	0x8FC0, 0x0000,
-	0x8FC2, 0x0000,
-	0x8FC4, 0x0000,
-	0x8FC6, 0x0000,
-	0x8FC8, 0x0000,
-	0x8FCA, 0x0000,
-	0x8FCC, 0xFFFF,
-	0x8FCE, 0x000C,
-	0x8FD0, 0x2400,
-	0x8FD2, 0xDBCC,
-	0x8FD4, 0x0000,
-	0x8FD6, 0x0000,
-	0x8FD8, 0x0000,
-	0x8FDA, 0x0000,
-	0x8FDC, 0x0000,
-	0x8FDE, 0x0000,
-	0x8FE0, 0xFFFF,
-	0x8FE2, 0x0012,
-	0x8FE4, 0x2401,
-	0x8FE6, 0x1C24,
-	0x8FE8, 0x0002,
-	0x8FEA, 0x0001,
-	0x8FEC, 0xFF03,
-	0x8FEE, 0x0010,
-	0x8FF0, 0xD70F,
-	0x8FF2, 0x0004,
-	0x8FF4, 0x0010,
-	0x8FF6, 0xD70F,
-	0x8FF8, 0xC20F,
-	0x8FFA, 0xFFFF,
-	0x8FFC, 0x0020,
-	0x8FFE, 0x2401,
-	0x9000, 0x1C4E,
-	0x9002, 0x0001,
-	0x9004, 0xFF03,
-	0x9006, 0x0010,
-	0x9008, 0xD70F,
-	0x900A, 0x0004,
-	0x900C, 0x0010,
-	0x900E, 0xD70F,
-	0x9010, 0xC20F,
-	0x9012, 0x0000,
-	0x9014, 0x0000,
-	0x9016, 0x0000,
-	0x9018, 0x0000,
-	0x901A, 0x0000,
-	0x901C, 0x0000,
-	0x901E, 0x0000,
-	0x9020, 0x0000,
-	0x9022, 0xFFFF,
-	0x9024, 0x0020,
-	0x9026, 0x2401,
-	0x9028, 0x1C76,
-	0x902A, 0x0001,
-	0x902C, 0xFF03,
-	0x902E, 0x0010,
-	0x9030, 0xD70F,
-	0x9032, 0x0004,
-	0x9034, 0x0010,
-	0x9036, 0xD70F,
-	0x9038, 0xC20F,
-	0x903A, 0x0000,
-	0x903C, 0x0000,
-	0x903E, 0x0000,
-	0x9040, 0x0000,
-	0x9042, 0x0000,
-	0x9044, 0x0000,
-	0x9046, 0x0000,
-	0x9048, 0x0000,
-	0x904A, 0xFFFF,
-	0x904C, 0x0010,
-	0x904E, 0x2401,
-	0x9050, 0x1C9E,
-	0x9052, 0x0001,
-	0x9054, 0xFF03,
-	0x9056, 0x0010,
-	0x9058, 0xD70F,
-	0x905A, 0x0004,
-	0x905C, 0x0010,
-	0x905E, 0xD70F,
-	0x9060, 0xC20F,
-	0x9062, 0xFFFF,
-	0x9064, 0x0010,
-	0x9066, 0x2401,
-	0x9068, 0x1CC6,
-	0x906A, 0x0000,
-	0x906C, 0x0000,
-	0x906E, 0x0000,
-	0x9070, 0x0000,
-	0x9072, 0x0000,
-	0x9074, 0x0000,
-	0x9076, 0x0000,
-	0x9078, 0x0000,
-	0x907A, 0xFFFF,
-	0x907C, 0x0020,
-	0x907E, 0x2401,
-	0x9080, 0x1CEE,
-	0x9082, 0x0000,
-	0x9084, 0x0000,
-	0x9086, 0x0000,
-	0x9088, 0x0000,
-	0x908A, 0x0000,
-	0x908C, 0x0000,
-	0x908E, 0x0000,
-	0x9090, 0x0000,
-	0x9092, 0x0000,
-	0x9094, 0x0000,
-	0x9096, 0x0000,
-	0x9098, 0x0000,
-	0x909A, 0x0000,
-	0x909C, 0x0000,
-	0x909E, 0x0000,
-	0x90A0, 0x0000,
-	0x90A2, 0xFFFF,
-	0x90A4, 0x0020,
-	0x90A6, 0x2401,
-	0x90A8, 0x1D16,
-	0x90AA, 0x0000,
-	0x90AC, 0x0000,
-	0x90AE, 0x0000,
-	0x90B0, 0x0000,
-	0x90B2, 0x0000,
-	0x90B4, 0x0000,
-	0x90B6, 0x0000,
-	0x90B8, 0x0000,
-	0x90BA, 0x0000,
-	0x90BC, 0x0000,
-	0x90BE, 0x0000,
-	0x90C0, 0x0000,
-	0x90C2, 0x0000,
-	0x90C4, 0x0000,
-	0x90C6, 0x0000,
-	0x90C8, 0x0000,
-	0x90CA, 0xFFFF,
-	0x90CC, 0x0010,
-	0x90CE, 0x2401,
-	0x90D0, 0x1D3E,
-	0x90D2, 0x0000,
-	0x90D4, 0x0000,
-	0x90D6, 0x0000,
-	0x90D8, 0x0000,
-	0x90DA, 0x0000,
-	0x90DC, 0x0000,
-	0x90DE, 0x0000,
-	0x90E0, 0x0000,
-	0x90E2, 0xFFFF,
-	0x90E4, 0x0008,
-	0x90E6, 0x2401,
-	0x90E8, 0x1D72,
-	0x90EA, 0x0000,
-	0x90EC, 0x0000,
-	0x90EE, 0x0000,
-	0x90F0, 0x0000,
-	0x90F2, 0xFFFF,
-	0x90F4, 0x0008,
-	0x90F6, 0x2401,
-	0x90F8, 0x1D82,
-	0x90FA, 0x0000,
-	0x90FC, 0x0000,
-	0x90FE, 0x0000,
-	0x9100, 0x0000,
-	0x9102, 0xFFFF,
-	0x9104, 0x0008,
-	0x9106, 0x2401,
-	0x9108, 0x1D92,
-	0x910A, 0x0000,
-	0x910C, 0x0000,
-	0x910E, 0x0000,
-	0x9110, 0x0000,
-	0x9112, 0xFFFF,
-	0x9114, 0x0008,
-	0x9116, 0x2401,
-	0x9118, 0x1DA2,
-	0x911A, 0x0000,
-	0x911C, 0x0000,
-	0x911E, 0x0000,
-	0x9120, 0x0000,
-	0x9122, 0xFFFF,
-	0x9124, 0x0008,
-	0x9126, 0x2401,
-	0x9128, 0x1DF2,
-	0x912A, 0x0000,
-	0x912C, 0x0000,
-	0x912E, 0x0000,
-	0x9130, 0x0000,
-	0x9132, 0xFFFF,
-	0x9134, 0x0008,
-	0x9136, 0x2401,
-	0x9138, 0x1E02,
-	0x913A, 0x0000,
-	0x913C, 0x0000,
-	0x913E, 0x0000,
-	0x9140, 0x0000,
-	0x9142, 0xFFFF,
-	0x9144, 0x0008,
-	0x9146, 0x2401,
-	0x9148, 0x1E12,
-	0x914A, 0x0000,
-	0x914C, 0x0000,
-	0x914E, 0x0000,
-	0x9150, 0x0000,
-	0x9152, 0xFFFF,
-	0x9154, 0x0008,
-	0x9156, 0x2401,
-	0x9158, 0x1E22,
-	0x915A, 0x0000,
-	0x915C, 0x0000,
-	0x915E, 0x0000,
-	0x9160, 0x0000,
-	0x9162, 0xFFFF,
-	0x9164, 0x0010,
-	0x9166, 0x2402,
-	0x9168, 0xA548,
-	0x916A, 0x0000,
-	0x916C, 0x0000,
-	0x916E, 0x0000,
-	0x9170, 0x0000,
-	0x9172, 0x0000,
-	0x9174, 0x0000,
-	0x9176, 0x0000,
-	0x9178, 0x0000,
-	0x917A, 0xFFFF,
-	0x917C, 0x0010,
-	0x917E, 0x2402,
-	0x9180, 0xA55C,
-	0x9182, 0x0000,
-	0x9184, 0x0000,
-	0x9186, 0x0000,
-	0x9188, 0x0000,
-	0x918A, 0x0000,
-	0x918C, 0x0000,
-	0x918E, 0x0000,
-	0x9190, 0x0000,
-	0x9192, 0xFFFF,
-	0x9194, 0x002C,
-	0x9196, 0x2402,
-	0x9198, 0xA574,
-	0x919A, 0x0100,
-	0x919C, 0x4000,
-	0x919E, 0x8000,
-	0x91A0, 0x0001,
-	0x91A2, 0x0002,
-	0x91A4, 0x0002,
-	0x91A6, 0x0002,
-	0x91A8, 0x0002,
-	0x91AA, 0x0002,
-	0x91AC, 0x0002,
-	0x91AE, 0x0800,
-	0x91B0, 0x2100,
-	0x91B2, 0x2900,
-	0x91B4, 0x2E00,
-	0x91B6, 0x2E00,
-	0x91B8, 0x2E00,
-	0x91BA, 0x2E00,
-	0x91BC, 0x2E00,
-	0x91BE, 0x2E00,
-	0x91C0, 0x3000,
-	0x91C2, 0xA2FD,
-	0x91C4, 0xFEFE,
-	0x91C6, 0xFFFF,
-	0x91C8, 0x0008,
-	0x91CA, 0x2400,
-	0x91CC, 0x0260,
-	0x91CE, 0x0001,
-	0x91D0, 0x0000,
-	0x91D2, 0x0406,
-	0x91D4, 0x0700,
-	0x91D6, 0xFFFF,
-	0x91D8, 0x0008,
-	0x91DA, 0x2400,
-	0x91DC, 0x030C,
-	0x91DE, 0x0000,
-	0x91E0, 0x0300,
-	0x91E2, 0xBF00,
-	0x91E4, 0x0000,
-	0x91E6, 0xFFFF,
-	0x91E8, 0x0010,
-	0x91EA, 0x2400,
-	0x91EC, 0x0344,
-	0x91EE, 0x0008,
-	0x91F0, 0x0006,
-	0x91F2, 0x1F18,
-	0x91F4, 0x1F12,
-	0x91F6, 0x0010,
-	0x91F8, 0x000C,
-	0x91FA, 0x1000,
-	0x91FC, 0x1000,
-	0x91FE, 0xFFFF,
-	0x9200, 0x0008,
-	0x9202, 0x2400,
-	0x9204, 0x0380,
-	0x9206, 0x0100,
-	0x9208, 0x0100,
-	0x920A, 0x0100,
-	0x920C, 0x0100,
-	0x920E, 0xFFFF,
-	0x9210, 0x0008,
-	0x9212, 0x2400,
-	0x9214, 0x0728,
-	0x9216, 0x0000,
-	0x9218, 0x0000,
-	0x921A, 0x0000,
-	0x921C, 0x0000,
-	0x921E, 0xFFFF,
-	0x9220, 0x000C,
-	0x9222, 0x2400,
-	0x9224, 0x0B02,
-	0x9226, 0x0101,
-	0x9228, 0x0001,
-	0x922A, 0x0101,
-	0x922C, 0x0101,
-	0x922E, 0x0101,
-	0x9230, 0x0100,
-	0x9232, 0x0000,
-	0x9234, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-/*03_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_30fps_3056Msps*/
-static u16 kkthtele_preview_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x7000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x3200,
-    0xD4B0, 0xBE00,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x0010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFD02,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0003,
-    0x1C58, 0xF004,
-    0x1C5A, 0x0010,
-    0x1C5C, 0x3110,
-    0x1C5E, 0x0005,
-    0x1C60, 0x00A0,
-    0x1C62, 0x6E10,
-    0x1C64, 0x6E10,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFD02,
-    0x1C7A, 0x0010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0003,
-    0x1C80, 0xF004,
-    0x1C82, 0x0010,
-    0x1C84, 0x3110,
-    0x1C86, 0x0005,
-    0x1C88, 0x00A0,
-    0x1C8A, 0x6610,
-    0x1C8C, 0x6610,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x0010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x0001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x0010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x0001,
-    0x1CF0, 0xFD02,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0003,
-    0x1CF8, 0xF004,
-    0x1CFA, 0x0010,
-    0x1CFC, 0x3110,
-    0x1CFE, 0x0005,
-    0x1D00, 0x00A0,
-    0x1D02, 0x6E10,
-    0x1D04, 0x6E10,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0001,
-    0x1D18, 0xFD02,
-    0x1D1A, 0x0010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0003,
-    0x1D20, 0xF004,
-    0x1D22, 0x0010,
-    0x1D24, 0x3110,
-    0x1D26, 0x0005,
-    0x1D28, 0x00A0,
-    0x1D2A, 0x6610,
-    0x1D2C, 0x6610,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0001,
-    0x1D40, 0xF004,
-    0x1D42, 0x0010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0C00,
-    0x1E18, 0x0C00,
-    0x1E26, 0x0C00,
-    0x1E28, 0x0C00,
-    0x1DF2, 0x0600,
-    0x1DF4, 0x0600,
-    0x1E02, 0x0600,
-    0x1E04, 0x0600,
-    0x1E12, 0x0C00,
-    0x1E14, 0x0C00,
-    0x1E22, 0x0C00,
-    0x1E24, 0x0C00,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0040,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-    // add for vsync
-    0xFCFC, 0x2000,
-    0x24DE, 0x0001,
-    0xFCFC, 0x2001,
-    0x3BC2, 0x0001,
-    0xFCFC, 0x4000,
-    0x0A70, 0x0001,
-    0x0A72, 0x0100,
-    0x0A76, 0x0001,
-    0x0A7C, 0x0010,
-};
-
-/*03_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_30fps_3056Msps*/
-static u16 kkthtele_capture_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x7000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x3200,
-    0xD4B0, 0xBE00,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x0010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFD02,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0003,
-    0x1C58, 0xF004,
-    0x1C5A, 0x0010,
-    0x1C5C, 0x3110,
-    0x1C5E, 0x0005,
-    0x1C60, 0x00A0,
-    0x1C62, 0x6E10,
-    0x1C64, 0x6E10,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFD02,
-    0x1C7A, 0x0010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0003,
-    0x1C80, 0xF004,
-    0x1C82, 0x0010,
-    0x1C84, 0x3110,
-    0x1C86, 0x0005,
-    0x1C88, 0x00A0,
-    0x1C8A, 0x6610,
-    0x1C8C, 0x6610,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x0010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x0001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x0010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x0001,
-    0x1CF0, 0xFD02,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0003,
-    0x1CF8, 0xF004,
-    0x1CFA, 0x0010,
-    0x1CFC, 0x3110,
-    0x1CFE, 0x0005,
-    0x1D00, 0x00A0,
-    0x1D02, 0x6E10,
-    0x1D04, 0x6E10,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0001,
-    0x1D18, 0xFD02,
-    0x1D1A, 0x0010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0003,
-    0x1D20, 0xF004,
-    0x1D22, 0x0010,
-    0x1D24, 0x3110,
-    0x1D26, 0x0005,
-    0x1D28, 0x00A0,
-    0x1D2A, 0x6610,
-    0x1D2C, 0x6610,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0001,
-    0x1D40, 0xF004,
-    0x1D42, 0x0010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0C00,
-    0x1E18, 0x0C00,
-    0x1E26, 0x0C00,
-    0x1E28, 0x0C00,
-    0x1DF2, 0x0600,
-    0x1DF4, 0x0600,
-    0x1E02, 0x0600,
-    0x1E04, 0x0600,
-    0x1E12, 0x0C00,
-    0x1E14, 0x0C00,
-    0x1E22, 0x0C00,
-    0x1E24, 0x0C00,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0040,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/*05_Ocean_KekeTuoHai_09_JN5_Fdsum_4096x2304_30fps_3056Msps*/
-static u16 kkthtele_normal_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x5209,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x7000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x3200,
-    0xD4B0, 0x9E04,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x0010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x1010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x7810,
-    0x1C5C, 0x7810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2810,
-    0x1C7C, 0xFE0F,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x6610,
-    0x1C84, 0x6610,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x1010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x0010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x1010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x7810,
-    0x1CFC, 0x7810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2810,
-    0x1D1C, 0xFE0F,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x6610,
-    0x1D24, 0x6610,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x1010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0600,
-    0x1DF4, 0x0600,
-    0x1E02, 0x0600,
-    0x1E04, 0x0600,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0020,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0030,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/* 08_Ocean_KekeTuoHai_09_JN5_Fdsum_4K_4096x2304_60fps_3056Msps */
-static u16 kkthtele_hs_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x5209,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x7000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x3200,
-    0xD4B0, 0x9E04,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0600,
-    0x1DF4, 0x0600,
-    0x1E02, 0x0600,
-    0x1E04, 0x0600,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/* 08_Ocean_KekeTuoHai_09_JN5_Fdsum_4K_4096x2304_60fps_3056Msps */
-static u16 kkthtele_slim_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x5209,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x7000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x3200,
-    0xD4B0, 0x9E04,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0600,
-    0x1DF4, 0x0600,
-    0x1E02, 0x0600,
-    0x1E04, 0x0600,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/* 04_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_60fps_3056Msps */
-static u16 kkthtele_custom1_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x7000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x3200,
-    0xD4B0, 0xBE00,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x0010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x7210,
-    0x1C5C, 0x7210,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x0010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x6610,
-    0x1C84, 0x6610,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x0010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x7210,
-    0x1CFC, 0x7210,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x0010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x6610,
-    0x1D24, 0x6610,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0C00,
-    0x1E18, 0x0C00,
-    0x1E26, 0x0C00,
-    0x1E28, 0x0C00,
-    0x1DF2, 0x0C00,
-    0x1DF4, 0x0C00,
-    0x1E02, 0x0C00,
-    0x1E04, 0x0C00,
-    0x1E12, 0x0C00,
-    0x1E14, 0x0C00,
-    0x1E22, 0x0C00,
-    0x1E24, 0x0C00,
-    0x1DF6, 0x0C00,
-    0x1DF8, 0x0C00,
-    0x1E06, 0x0C00,
-    0x1E08, 0x0C00,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0203,
-    // add for vsync
-    0xFCFC, 0x2000,
-    0x24DE, 0x0001,
-    0xFCFC, 0x2001,
-    0x3BC2, 0x0001,
-    0xFCFC, 0x4000,
-    0x0A70, 0x0001,
-    0x0A72, 0x0100,
-    0x0A76, 0x0001,
-    0x0A7C, 0x0010,
-};
-
-/* 15_Ocean_KekeTuoHai_03_JN5_Full_RMSC_BYPS_4096x3072_30fps_3056Msps*/
-static u16 kkthtele_custom2_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0800,
-    0x0348, 0x181F,
-    0x0346, 0x0600,
-    0x034A, 0x121F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x0D04,
-    0x0342, 0x23F0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0x0004,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0100,
-    0x25E2, 0xCD00,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x3B00,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC808,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/* 01_Ocean_KekeTuoHai_01_WD4_JN5_Full__8192x6144_15.1fps_3056Msps*/
-static u16 kkthtele_custom3_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x2000,
-    0x034E, 0x1800,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x18CA,
-    0x0342, 0x2580,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0200,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0101,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0xCD04,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x0300,
-    0xD4D0, 0x1100,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x2800,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x7E03,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xE600,
-    0xD4F8, 0xF001,
-    0xD4FA, 0x1802,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0300,
-    0x1D74, 0x0300,
-    0x1D82, 0x0300,
-    0x1D84, 0x0300,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0600,
-    0x1E18, 0x0600,
-    0x1E26, 0x0600,
-    0x1E28, 0x0600,
-    0x1DF2, 0x0300,
-    0x1DF4, 0x0300,
-    0x1E02, 0x0300,
-    0x1E04, 0x0300,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/* 02_Ocean_KekeTuoHai_01_WD4_JN5_Full_BYPS_8192x6144_15.1fps_3056Msps*/
-static u16 kkthtele_custom4_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x2000,
-    0x034E, 0x1800,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x18CA,
-    0x0342, 0x2580,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0x0004,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0100,
-    0x25E2, 0xCD00,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x1603,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/*03_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_30fps_3056Msps*/
-static u16 kkthtele_custom5_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x7000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x3200,
-    0xD4B0, 0xBE00,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x0010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFD02,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0003,
-    0x1C58, 0xF004,
-    0x1C5A, 0x0010,
-    0x1C5C, 0x3110,
-    0x1C5E, 0x0005,
-    0x1C60, 0x00A0,
-    0x1C62, 0x6E10,
-    0x1C64, 0x6E10,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFD02,
-    0x1C7A, 0x0010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0003,
-    0x1C80, 0xF004,
-    0x1C82, 0x0010,
-    0x1C84, 0x3110,
-    0x1C86, 0x0005,
-    0x1C88, 0x00A0,
-    0x1C8A, 0x6610,
-    0x1C8C, 0x6610,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x0010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x0001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x0010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x0001,
-    0x1CF0, 0xFD02,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0003,
-    0x1CF8, 0xF004,
-    0x1CFA, 0x0010,
-    0x1CFC, 0x3110,
-    0x1CFE, 0x0005,
-    0x1D00, 0x00A0,
-    0x1D02, 0x6E10,
-    0x1D04, 0x6E10,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0001,
-    0x1D18, 0xFD02,
-    0x1D1A, 0x0010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0003,
-    0x1D20, 0xF004,
-    0x1D22, 0x0010,
-    0x1D24, 0x3110,
-    0x1D26, 0x0005,
-    0x1D28, 0x00A0,
-    0x1D2A, 0x6610,
-    0x1D2C, 0x6610,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0001,
-    0x1D40, 0xF004,
-    0x1D42, 0x0010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0C00,
-    0x1E18, 0x0C00,
-    0x1E26, 0x0C00,
-    0x1E28, 0x0C00,
-    0x1DF2, 0x0600,
-    0x1DF4, 0x0600,
-    0x1E02, 0x0600,
-    0x1E04, 0x0600,
-    0x1E12, 0x0C00,
-    0x1E14, 0x0C00,
-    0x1E22, 0x0C00,
-    0x1E24, 0x0C00,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0040,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/* 04_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_60fps_3056Msps */
-static u16 kkthtele_custom6_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x7000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x3200,
-    0xD4B0, 0xBE00,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x0010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x7210,
-    0x1C5C, 0x7210,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x0010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x6610,
-    0x1C84, 0x6610,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x0010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x7210,
-    0x1CFC, 0x7210,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x0010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x6610,
-    0x1D24, 0x6610,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0C00,
-    0x1E18, 0x0C00,
-    0x1E26, 0x0C00,
-    0x1E28, 0x0C00,
-    0x1DF2, 0x0C00,
-    0x1DF4, 0x0C00,
-    0x1E02, 0x0C00,
-    0x1E04, 0x0C00,
-    0x1E12, 0x0C00,
-    0x1E14, 0x0C00,
-    0x1E22, 0x0C00,
-    0x1E24, 0x0C00,
-    0x1DF6, 0x0C00,
-    0x1DF8, 0x0C00,
-    0x1E06, 0x0C00,
-    0x1E08, 0x0C00,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0203,
-};
-
-/* 07_Ocean_KekeTuoHai_10_0_JN5_Fdsum_DSG_split_4096x2304_30fps_3056Msps */
-static u16 kkthtele_custom7_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0101,
-    0x7808, 0x3F0C,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x2560,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x2000,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0600,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0100,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0101,
-    0x1966, 0x0200,
-    0xFCFC, 0x4000,
-    0x0086, 0x0280,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x1000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x9F00,
-    0x705A, 0xA000,
-    0x7274, 0x00B0,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0078,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x0B04,
-    0xD4B0, 0x7E03,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x5610,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0xB610,
-    0x1C34, 0x7011,
-    0x1C4E, 0x8001,
-    0x1C50, 0xF004,
-    0x1C52, 0x2810,
-    0x1C54, 0x5110,
-    0x1C56, 0x0005,
-    0x1C58, 0xF009,
-    0x1C5A, 0x9710,
-    0x1C5C, 0xDA10,
-    0x1C5E, 0x000A,
-    0x1C60, 0x00A0,
-    0x1C62, 0xDA10,
-    0x1C64, 0x7011,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0xF004,
-    0x1C7A, 0x2810,
-    0x1C7C, 0x6610,
-    0x1C7E, 0x0005,
-    0x1C80, 0xF009,
-    0x1C82, 0x7210,
-    0x1C84, 0xDD10,
-    0x1C86, 0x000A,
-    0x1C88, 0x00A0,
-    0x1C8A, 0xDD10,
-    0x1C8C, 0x7011,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x5610,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0xC410,
-    0x1CAC, 0x7011,
-    0x1CC6, 0x8001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x5610,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0xB610,
-    0x1CD4, 0x7011,
-    0x1CEE, 0x8001,
-    0x1CF0, 0xF004,
-    0x1CF2, 0x2810,
-    0x1CF4, 0x5110,
-    0x1CF6, 0x0005,
-    0x1CF8, 0xF009,
-    0x1CFA, 0x9710,
-    0x1CFC, 0xDA10,
-    0x1CFE, 0x000A,
-    0x1D00, 0x00A0,
-    0x1D02, 0xDA10,
-    0x1D04, 0x7011,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0xF004,
-    0x1D1A, 0x2810,
-    0x1D1C, 0x6610,
-    0x1D1E, 0x0005,
-    0x1D20, 0xF009,
-    0x1D22, 0x7210,
-    0x1D24, 0xDD10,
-    0x1D26, 0x000A,
-    0x1D28, 0x00A0,
-    0x1D2A, 0xDD10,
-    0x1D2C, 0x7011,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0xF004,
-    0x1D42, 0x2010,
-    0x1D44, 0x5610,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0xC410,
-    0x1D4C, 0x7011,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0600,
-    0x1D98, 0x0600,
-    0x1DA6, 0x0600,
-    0x1DA8, 0x0600,
-    0x1D72, 0x0600,
-    0x1D74, 0x0600,
-    0x1D82, 0x0600,
-    0x1D84, 0x0600,
-    0x1D92, 0x0600,
-    0x1D94, 0x0600,
-    0x1DA2, 0x0600,
-    0x1DA4, 0x0600,
-    0x1D76, 0x0600,
-    0x1D78, 0x0600,
-    0x1D86, 0x0600,
-    0x1D88, 0x0600,
-    0x1E16, 0xFAFF,
-    0x1E18, 0xFAFF,
-    0x1E26, 0xFAFF,
-    0x1E28, 0xFAFF,
-    0x1DF2, 0xFAFF,
-    0x1DF4, 0xFAFF,
-    0x1E02, 0xFAFF,
-    0x1E04, 0xFAFF,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0D00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x80E3,
-    0xB268, 0x80E3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0x36D2,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0D00,
-    0xDB3E, 0x36D2,
-    0xDADE, 0xA000,
-    0xDB0E, 0x0F00,
-    0xDB40, 0x36D2,
-    0xDAE0, 0x4001,
-    0xDB10, 0x0D00,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/* 03_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_60fps_3056Msps */
-static u16 kkthtele_custom8_setting[] = {
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0000,
-	0x034A, 0x181F,
-	0x034C, 0x1000,
-	0x034E, 0x0C00,
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x0C84,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00BF,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0406,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x7000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0000,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x3600,
-	0xD4BC, 0x3200,
-	0xD4B0, 0xBE00,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xFA00,
-	0xD560, 0x5203,
-	0xD562, 0x8803,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0001,
-	0x1C28, 0xF004,
-	0x1C2A, 0x0010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x5110,
-	0x1C34, 0x3510,
-	0x1C4E, 0x0001,
-	0x1C50, 0xFD02,
-	0x1C52, 0x0010,
-	0x1C54, 0x2810,
-	0x1C56, 0x0003,
-	0x1C58, 0xF004,
-	0x1C5A, 0x0010,
-	0x1C5C, 0x3110,
-	0x1C5E, 0x0005,
-	0x1C60, 0x00A0,
-	0x1C62, 0x6E10,
-	0x1C64, 0x6E10,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x0001,
-	0x1C78, 0xFD02,
-	0x1C7A, 0x0010,
-	0x1C7C, 0x2810,
-	0x1C7E, 0x0003,
-	0x1C80, 0xF004,
-	0x1C82, 0x0010,
-	0x1C84, 0x3110,
-	0x1C86, 0x0005,
-	0x1C88, 0x00A0,
-	0x1C8A, 0x6610,
-	0x1C8C, 0x6610,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x0001,
-	0x1CA0, 0xF004,
-	0x1CA2, 0x0010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x5110,
-	0x1CAC, 0x3510,
-	0x1CC6, 0x0001,
-	0x1CC8, 0xF004,
-	0x1CCA, 0x0010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x5110,
-	0x1CD4, 0x3510,
-	0x1CEE, 0x0001,
-	0x1CF0, 0xFD02,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x2810,
-	0x1CF6, 0x0003,
-	0x1CF8, 0xF004,
-	0x1CFA, 0x0010,
-	0x1CFC, 0x3110,
-	0x1CFE, 0x0005,
-	0x1D00, 0x00A0,
-	0x1D02, 0x6E10,
-	0x1D04, 0x6E10,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x0001,
-	0x1D18, 0xFD02,
-	0x1D1A, 0x0010,
-	0x1D1C, 0x2810,
-	0x1D1E, 0x0003,
-	0x1D20, 0xF004,
-	0x1D22, 0x0010,
-	0x1D24, 0x3110,
-	0x1D26, 0x0005,
-	0x1D28, 0x00A0,
-	0x1D2A, 0x6610,
-	0x1D2C, 0x6610,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x0001,
-	0x1D40, 0xF004,
-	0x1D42, 0x0010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x5110,
-	0x1D4C, 0x3510,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0C00,
-	0x1E18, 0x0C00,
-	0x1E26, 0x0C00,
-	0x1E28, 0x0C00,
-	0x1DF2, 0x0600,
-	0x1DF4, 0x0600,
-	0x1E02, 0x0600,
-	0x1E04, 0x0600,
-	0x1E12, 0x0C00,
-	0x1E14, 0x0C00,
-	0x1E22, 0x0C00,
-	0x1E24, 0x0C00,
-	0x1DF6, 0x0600,
-	0x1DF8, 0x0600,
-	0x1E06, 0x0600,
-	0x1E08, 0x0600,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0040,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-
-/*12_Ocean_KekeTuoHai_13_0_JN5_A2A2_noAF_2048x1152_240.4fps_1992Msp*/
-static u16 kkthtele_custom9_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0000,
-    0x7808, 0x0000,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x0800,
-    0x034E, 0x0480,
-    0x0350, 0x0004,
-    0x0352, 0x0004,
-    0x0340, 0x04DE,
-    0x0342, 0x0C00,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00F9,
-    0x0312, 0x0001,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0604,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x3344,
-    0x0380, 0x0002,
-    0x0382, 0x0006,
-    0x0384, 0x0002,
-    0x0386, 0x0006,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0xBA10,
-    0xD20C, 0x0908,
-    0xD314, 0x3003,
-    0xD27A, 0x0B00,
-    0xD3F0, 0x811C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001, // 0x0401
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0000,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0000,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0xDF01,
-    0x705A, 0xE001,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x907E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x2C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0000,
-    0x2A44, 0xE002,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5000,
-    0x8CD6, 0xBE00,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x1A00,
-    0xD4E6, 0x3600,
-    0xD4C0, 0x5400,
-    0xD4B4, 0xFE01,
-    0xD4CC, 0x0100,
-    0xD5BC, 0xC400,
-    0xD5BE, 0xFA00,
-    0xD5C8, 0x5203,
-    0xD5CA, 0x8803,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x1400,
-    0xA578, 0x8000,
-    0xA58A, 0x2200,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0000,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0010,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC801,
-    0xF3F6, 0xD210,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/* 03_WD4_Ocean_KekeTuoHai_JN5_Full_12.5Mp_4096x2304_30fps_3056Msps */
-static u16 kkthtele_custom10_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0800,
-    0x0348, 0x181F,
-    0x0346, 0x0780,
-    0x034A, 0x109F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x0D04,
-    0x0342, 0x23F0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0200,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0101,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0xCD04,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x2F00,
-    0x705A, 0x3000,
-    0x7274, 0x0D00,
-    0x7276, 0x0C00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0x7E04,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x0000,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC808,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-/* 15_Ocean_KekeTuoHai_03_JN5_Full_4096x3072_30fps_3056Msps*/
-static u16 kkthtele_custom11_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0800,
-    0x0348, 0x181F,
-    0x0346, 0x0600,
-    0x034A, 0x121F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x0D04,
-    0x0342, 0x23F0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0200,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0101,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0xCD04,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x3B00,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC808,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0E00, 0x0003,
-};
-
-static u16 kkthtele_seamless_preview[] = {
-	0xFCFC,	0x4000,
-	0x0B30,	0x0103,
-};
-
-static u16 kkthtele_seamless_vid[] = {
-	0xFCFC,	0x4000,
-	0x0B30,	0x0105,
-};
-
-static u16 kkthtele_seamless_custom1[] = {
-    0xFCFC,	0x4000,
-    0x0B30, 0x0104,
-};
-
-static u16 kkthtele_seamless_custom2[] = {
-    0xFCFC,	0x4000,
-    0x0B30, 0x0102,
-    //0x0340, 0x0D04,
-};
-
-static u16 kkthtele_seamless_custom3[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0100,
-};
-
-static u16 kkthtele_seamless_custom4[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0101,
-};
-
-static u16 kkthtele_seamless_custom5[] = {
-	0xFCFC,	0x4000,
-	0x0B30,	0x0103,
-};
-
-static u16 kkthtele_seamless_custom6[] = {
-    0xFCFC,	0x4000,
-    0x0B30, 0x0104,
-};
-
-static u16 kkthtele_seamless_custom7[] = {
-	0xFCFC,	0x4000,
-	0x0B30,	0x0107,
-};
-
-static u16 kkthtele_seamless_custom10[] = {
-	0xFCFC,	0x4000,
-	0x0B30,	0x0106,
-};
-static u16 kkthtele_seamless_custom11[] = {
-	0xFCFC,	0x4000,
-	0x0B30,	0x0108,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtele_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtele_ana_gain_table.h
deleted file mode 100755
index d8923717..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtele_ana_gain_table.h
+++ /dev/null
@@ -1,5100 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************/
-#ifndef __KKTHTELE_ANA_GAIN_TABLE_H__
-#define __KKTHTELE_ANA_GAIN_TABLE_H__ 
-static kal_uint32 kkthtele_ana_gain_table[] = {
-    1024,
-    1056,
-    1088,
-    1120,
-    1152,
-    1184,
-    1216,
-    1248,
-    1280,
-    1312,
-    1344,
-    1376,
-    1408,
-    1440,
-    1472,
-    1504,
-    1536,
-    1568,
-    1600,
-    1632,
-    1664,
-    1696,
-    1728,
-    1760,
-    1792,
-    1824,
-    1856,
-    1888,
-    1920,
-    1952,
-    1984,
-    2016,
-    2048,
-    2080,
-    2112,
-    2144,
-    2176,
-    2208,
-    2240,
-    2272,
-    2304,
-    2336,
-    2368,
-    2400,
-    2432,
-    2464,
-    2496,
-    2528,
-    2560,
-    2592,
-    2624,
-    2656,
-    2688,
-    2720,
-    2752,
-    2784,
-    2816,
-    2848,
-    2880,
-    2912,
-    2944,
-    2976,
-    3008,
-    3040,
-    3072,
-    3104,
-    3136,
-    3168,
-    3200,
-    3232,
-    3264,
-    3296,
-    3328,
-    3360,
-    3392,
-    3424,
-    3456,
-    3488,
-    3520,
-    3552,
-    3584,
-    3616,
-    3648,
-    3680,
-    3712,
-    3744,
-    3776,
-    3808,
-    3840,
-    3872,
-    3904,
-    3936,
-    3968,
-    4000,
-    4032,
-    4064,
-    4096,
-    4128,
-    4160,
-    4192,
-    4224,
-    4256,
-    4288,
-    4320,
-    4352,
-    4384,
-    4416,
-    4448,
-    4480,
-    4512,
-    4544,
-    4576,
-    4608,
-    4640,
-    4672,
-    4704,
-    4736,
-    4768,
-    4800,
-    4832,
-    4864,
-    4896,
-    4928,
-    4960,
-    4992,
-    5024,
-    5056,
-    5088,
-    5120,
-    5152,
-    5184,
-    5216,
-    5248,
-    5280,
-    5312,
-    5344,
-    5376,
-    5408,
-    5440,
-    5472,
-    5504,
-    5536,
-    5568,
-    5600,
-    5632,
-    5664,
-    5696,
-    5728,
-    5760,
-    5792,
-    5824,
-    5856,
-    5888,
-    5920,
-    5952,
-    5984,
-    6016,
-    6048,
-    6080,
-    6112,
-    6144,
-    6176,
-    6208,
-    6240,
-    6272,
-    6304,
-    6336,
-    6368,
-    6400,
-    6432,
-    6464,
-    6496,
-    6528,
-    6560,
-    6592,
-    6624,
-    6656,
-    6688,
-    6720,
-    6752,
-    6784,
-    6816,
-    6848,
-    6880,
-    6912,
-    6944,
-    6976,
-    7008,
-    7040,
-    7072,
-    7104,
-    7136,
-    7168,
-    7200,
-    7232,
-    7264,
-    7296,
-    7328,
-    7360,
-    7392,
-    7424,
-    7456,
-    7488,
-    7520,
-    7552,
-    7584,
-    7616,
-    7648,
-    7680,
-    7712,
-    7744,
-    7776,
-    7808,
-    7840,
-    7872,
-    7904,
-    7936,
-    7968,
-    8000,
-    8032,
-    8064,
-    8096,
-    8128,
-    8160,
-    8192,
-    8224,
-    8256,
-    8288,
-    8320,
-    8352,
-    8384,
-    8416,
-    8448,
-    8480,
-    8512,
-    8544,
-    8576,
-    8608,
-    8640,
-    8672,
-    8704,
-    8736,
-    8768,
-    8800,
-    8832,
-    8864,
-    8896,
-    8928,
-    8960,
-    8992,
-    9024,
-    9056,
-    9088,
-    9120,
-    9152,
-    9184,
-    9216,
-    9248,
-    9280,
-    9312,
-    9344,
-    9376,
-    9408,
-    9440,
-    9472,
-    9504,
-    9536,
-    9568,
-    9600,
-    9632,
-    9664,
-    9696,
-    9728,
-    9760,
-    9792,
-    9824,
-    9856,
-    9888,
-    9920,
-    9952,
-    9984,
-    10016,
-    10048,
-    10080,
-    10112,
-    10144,
-    10176,
-    10208,
-    10240,
-    10272,
-    10304,
-    10336,
-    10368,
-    10400,
-    10432,
-    10464,
-    10496,
-    10528,
-    10560,
-    10592,
-    10624,
-    10656,
-    10688,
-    10720,
-    10752,
-    10784,
-    10816,
-    10848,
-    10880,
-    10912,
-    10944,
-    10976,
-    11008,
-    11040,
-    11072,
-    11104,
-    11136,
-    11168,
-    11200,
-    11232,
-    11264,
-    11296,
-    11328,
-    11360,
-    11392,
-    11424,
-    11456,
-    11488,
-    11520,
-    11552,
-    11584,
-    11616,
-    11648,
-    11680,
-    11712,
-    11744,
-    11776,
-    11808,
-    11840,
-    11872,
-    11904,
-    11936,
-    11968,
-    12000,
-    12032,
-    12064,
-    12096,
-    12128,
-    12160,
-    12192,
-    12224,
-    12256,
-    12288,
-    12320,
-    12352,
-    12384,
-    12416,
-    12448,
-    12480,
-    12512,
-    12544,
-    12576,
-    12608,
-    12640,
-    12672,
-    12704,
-    12736,
-    12768,
-    12800,
-    12832,
-    12864,
-    12896,
-    12928,
-    12960,
-    12992,
-    13024,
-    13056,
-    13088,
-    13120,
-    13152,
-    13184,
-    13216,
-    13248,
-    13280,
-    13312,
-    13344,
-    13376,
-    13408,
-    13440,
-    13472,
-    13504,
-    13536,
-    13568,
-    13600,
-    13632,
-    13664,
-    13696,
-    13728,
-    13760,
-    13792,
-    13824,
-    13856,
-    13888,
-    13920,
-    13952,
-    13984,
-    14016,
-    14048,
-    14080,
-    14112,
-    14144,
-    14176,
-    14208,
-    14240,
-    14272,
-    14304,
-    14336,
-    14368,
-    14400,
-    14432,
-    14464,
-    14496,
-    14528,
-    14560,
-    14592,
-    14624,
-    14656,
-    14688,
-    14720,
-    14752,
-    14784,
-    14816,
-    14848,
-    14880,
-    14912,
-    14944,
-    14976,
-    15008,
-    15040,
-    15072,
-    15104,
-    15136,
-    15168,
-    15200,
-    15232,
-    15264,
-    15296,
-    15328,
-    15360,
-    15392,
-    15424,
-    15456,
-    15488,
-    15520,
-    15552,
-    15584,
-    15616,
-    15648,
-    15680,
-    15712,
-    15744,
-    15776,
-    15808,
-    15840,
-    15872,
-    15904,
-    15936,
-    15968,
-    16000,
-    16032,
-    16064,
-    16096,
-    16128,
-    16160,
-    16192,
-    16224,
-    16256,
-    16288,
-    16320,
-    16352,
-    16384,
-    16416,
-    16448,
-    16480,
-    16512,
-    16544,
-    16576,
-    16608,
-    16640,
-    16672,
-    16704,
-    16736,
-    16768,
-    16800,
-    16832,
-    16864,
-    16896,
-    16928,
-    16960,
-    16992,
-    17024,
-    17056,
-    17088,
-    17120,
-    17152,
-    17184,
-    17216,
-    17248,
-    17280,
-    17312,
-    17344,
-    17376,
-    17408,
-    17440,
-    17472,
-    17504,
-    17536,
-    17568,
-    17600,
-    17632,
-    17664,
-    17696,
-    17728,
-    17760,
-    17792,
-    17824,
-    17856,
-    17888,
-    17920,
-    17952,
-    17984,
-    18016,
-    18048,
-    18080,
-    18112,
-    18144,
-    18176,
-    18208,
-    18240,
-    18272,
-    18304,
-    18336,
-    18368,
-    18400,
-    18432,
-    18464,
-    18496,
-    18528,
-    18560,
-    18592,
-    18624,
-    18656,
-    18688,
-    18720,
-    18752,
-    18784,
-    18816,
-    18848,
-    18880,
-    18912,
-    18944,
-    18976,
-    19008,
-    19040,
-    19072,
-    19104,
-    19136,
-    19168,
-    19200,
-    19232,
-    19264,
-    19296,
-    19328,
-    19360,
-    19392,
-    19424,
-    19456,
-    19488,
-    19520,
-    19552,
-    19584,
-    19616,
-    19648,
-    19680,
-    19712,
-    19744,
-    19776,
-    19808,
-    19840,
-    19872,
-    19904,
-    19936,
-    19968,
-    20000,
-    20032,
-    20064,
-    20096,
-    20128,
-    20160,
-    20192,
-    20224,
-    20256,
-    20288,
-    20320,
-    20352,
-    20384,
-    20416,
-    20448,
-    20480,
-    20512,
-    20544,
-    20576,
-    20608,
-    20640,
-    20672,
-    20704,
-    20736,
-    20768,
-    20800,
-    20832,
-    20864,
-    20896,
-    20928,
-    20960,
-    20992,
-    21024,
-    21056,
-    21088,
-    21120,
-    21152,
-    21184,
-    21216,
-    21248,
-    21280,
-    21312,
-    21344,
-    21376,
-    21408,
-    21440,
-    21472,
-    21504,
-    21536,
-    21568,
-    21600,
-    21632,
-    21664,
-    21696,
-    21728,
-    21760,
-    21792,
-    21824,
-    21856,
-    21888,
-    21920,
-    21952,
-    21984,
-    22016,
-    22048,
-    22080,
-    22112,
-    22144,
-    22176,
-    22208,
-    22240,
-    22272,
-    22304,
-    22336,
-    22368,
-    22400,
-    22432,
-    22464,
-    22496,
-    22528,
-    22560,
-    22592,
-    22624,
-    22656,
-    22688,
-    22720,
-    22752,
-    22784,
-    22816,
-    22848,
-    22880,
-    22912,
-    22944,
-    22976,
-    23008,
-    23040,
-    23072,
-    23104,
-    23136,
-    23168,
-    23200,
-    23232,
-    23264,
-    23296,
-    23328,
-    23360,
-    23392,
-    23424,
-    23456,
-    23488,
-    23520,
-    23552,
-    23584,
-    23616,
-    23648,
-    23680,
-    23712,
-    23744,
-    23776,
-    23808,
-    23840,
-    23872,
-    23904,
-    23936,
-    23968,
-    24000,
-    24032,
-    24064,
-    24096,
-    24128,
-    24160,
-    24192,
-    24224,
-    24256,
-    24288,
-    24320,
-    24352,
-    24384,
-    24416,
-    24448,
-    24480,
-    24512,
-    24544,
-    24576,
-    24608,
-    24640,
-    24672,
-    24704,
-    24736,
-    24768,
-    24800,
-    24832,
-    24864,
-    24896,
-    24928,
-    24960,
-    24992,
-    25024,
-    25056,
-    25088,
-    25120,
-    25152,
-    25184,
-    25216,
-    25248,
-    25280,
-    25312,
-    25344,
-    25376,
-    25408,
-    25440,
-    25472,
-    25504,
-    25536,
-    25568,
-    25600,
-    25632,
-    25664,
-    25696,
-    25728,
-    25760,
-    25792,
-    25824,
-    25856,
-    25888,
-    25920,
-    25952,
-    25984,
-    26016,
-    26048,
-    26080,
-    26112,
-    26144,
-    26176,
-    26208,
-    26240,
-    26272,
-    26304,
-    26336,
-    26368,
-    26400,
-    26432,
-    26464,
-    26496,
-    26528,
-    26560,
-    26592,
-    26624,
-    26656,
-    26688,
-    26720,
-    26752,
-    26784,
-    26816,
-    26848,
-    26880,
-    26912,
-    26944,
-    26976,
-    27008,
-    27040,
-    27072,
-    27104,
-    27136,
-    27168,
-    27200,
-    27232,
-    27264,
-    27296,
-    27328,
-    27360,
-    27392,
-    27424,
-    27456,
-    27488,
-    27520,
-    27552,
-    27584,
-    27616,
-    27648,
-    27680,
-    27712,
-    27744,
-    27776,
-    27808,
-    27840,
-    27872,
-    27904,
-    27936,
-    27968,
-    28000,
-    28032,
-    28064,
-    28096,
-    28128,
-    28160,
-    28192,
-    28224,
-    28256,
-    28288,
-    28320,
-    28352,
-    28384,
-    28416,
-    28448,
-    28480,
-    28512,
-    28544,
-    28576,
-    28608,
-    28640,
-    28672,
-    28704,
-    28736,
-    28768,
-    28800,
-    28832,
-    28864,
-    28896,
-    28928,
-    28960,
-    28992,
-    29024,
-    29056,
-    29088,
-    29120,
-    29152,
-    29184,
-    29216,
-    29248,
-    29280,
-    29312,
-    29344,
-    29376,
-    29408,
-    29440,
-    29472,
-    29504,
-    29536,
-    29568,
-    29600,
-    29632,
-    29664,
-    29696,
-    29728,
-    29760,
-    29792,
-    29824,
-    29856,
-    29888,
-    29920,
-    29952,
-    29984,
-    30016,
-    30048,
-    30080,
-    30112,
-    30144,
-    30176,
-    30208,
-    30240,
-    30272,
-    30304,
-    30336,
-    30368,
-    30400,
-    30432,
-    30464,
-    30496,
-    30528,
-    30560,
-    30592,
-    30624,
-    30656,
-    30688,
-    30720,
-    30752,
-    30784,
-    30816,
-    30848,
-    30880,
-    30912,
-    30944,
-    30976,
-    31008,
-    31040,
-    31072,
-    31104,
-    31136,
-    31168,
-    31200,
-    31232,
-    31264,
-    31296,
-    31328,
-    31360,
-    31392,
-    31424,
-    31456,
-    31488,
-    31520,
-    31552,
-    31584,
-    31616,
-    31648,
-    31680,
-    31712,
-    31744,
-    31776,
-    31808,
-    31840,
-    31872,
-    31904,
-    31936,
-    31968,
-    32000,
-    32032,
-    32064,
-    32096,
-    32128,
-    32160,
-    32192,
-    32224,
-    32256,
-    32288,
-    32320,
-    32352,
-    32384,
-    32416,
-    32448,
-    32480,
-    32512,
-    32544,
-    32576,
-    32608,
-    32640,
-    32672,
-    32704,
-    32736,
-    32768,
-    32800,
-    32832,
-    32864,
-    32896,
-    32928,
-    32960,
-    32992,
-    33024,
-    33056,
-    33088,
-    33120,
-    33152,
-    33184,
-    33216,
-    33248,
-    33280,
-    33312,
-    33344,
-    33376,
-    33408,
-    33440,
-    33472,
-    33504,
-    33536,
-    33568,
-    33600,
-    33632,
-    33664,
-    33696,
-    33728,
-    33760,
-    33792,
-    33824,
-    33856,
-    33888,
-    33920,
-    33952,
-    33984,
-    34016,
-    34048,
-    34080,
-    34112,
-    34144,
-    34176,
-    34208,
-    34240,
-    34272,
-    34304,
-    34336,
-    34368,
-    34400,
-    34432,
-    34464,
-    34496,
-    34528,
-    34560,
-    34592,
-    34624,
-    34656,
-    34688,
-    34720,
-    34752,
-    34784,
-    34816,
-    34848,
-    34880,
-    34912,
-    34944,
-    34976,
-    35008,
-    35040,
-    35072,
-    35104,
-    35136,
-    35168,
-    35200,
-    35232,
-    35264,
-    35296,
-    35328,
-    35360,
-    35392,
-    35424,
-    35456,
-    35488,
-    35520,
-    35552,
-    35584,
-    35616,
-    35648,
-    35680,
-    35712,
-    35744,
-    35776,
-    35808,
-    35840,
-    35872,
-    35904,
-    35936,
-    35968,
-    36000,
-    36032,
-    36064,
-    36096,
-    36128,
-    36160,
-    36192,
-    36224,
-    36256,
-    36288,
-    36320,
-    36352,
-    36384,
-    36416,
-    36448,
-    36480,
-    36512,
-    36544,
-    36576,
-    36608,
-    36640,
-    36672,
-    36704,
-    36736,
-    36768,
-    36800,
-    36832,
-    36864,
-    36896,
-    36928,
-    36960,
-    36992,
-    37024,
-    37056,
-    37088,
-    37120,
-    37152,
-    37184,
-    37216,
-    37248,
-    37280,
-    37312,
-    37344,
-    37376,
-    37408,
-    37440,
-    37472,
-    37504,
-    37536,
-    37568,
-    37600,
-    37632,
-    37664,
-    37696,
-    37728,
-    37760,
-    37792,
-    37824,
-    37856,
-    37888,
-    37920,
-    37952,
-    37984,
-    38016,
-    38048,
-    38080,
-    38112,
-    38144,
-    38176,
-    38208,
-    38240,
-    38272,
-    38304,
-    38336,
-    38368,
-    38400,
-    38432,
-    38464,
-    38496,
-    38528,
-    38560,
-    38592,
-    38624,
-    38656,
-    38688,
-    38720,
-    38752,
-    38784,
-    38816,
-    38848,
-    38880,
-    38912,
-    38944,
-    38976,
-    39008,
-    39040,
-    39072,
-    39104,
-    39136,
-    39168,
-    39200,
-    39232,
-    39264,
-    39296,
-    39328,
-    39360,
-    39392,
-    39424,
-    39456,
-    39488,
-    39520,
-    39552,
-    39584,
-    39616,
-    39648,
-    39680,
-    39712,
-    39744,
-    39776,
-    39808,
-    39840,
-    39872,
-    39904,
-    39936,
-    39968,
-    40000,
-    40032,
-    40064,
-    40096,
-    40128,
-    40160,
-    40192,
-    40224,
-    40256,
-    40288,
-    40320,
-    40352,
-    40384,
-    40416,
-    40448,
-    40480,
-    40512,
-    40544,
-    40576,
-    40608,
-    40640,
-    40672,
-    40704,
-    40736,
-    40768,
-    40800,
-    40832,
-    40864,
-    40896,
-    40928,
-    40960,
-    40992,
-    41024,
-    41056,
-    41088,
-    41120,
-    41152,
-    41184,
-    41216,
-    41248,
-    41280,
-    41312,
-    41344,
-    41376,
-    41408,
-    41440,
-    41472,
-    41504,
-    41536,
-    41568,
-    41600,
-    41632,
-    41664,
-    41696,
-    41728,
-    41760,
-    41792,
-    41824,
-    41856,
-    41888,
-    41920,
-    41952,
-    41984,
-    42016,
-    42048,
-    42080,
-    42112,
-    42144,
-    42176,
-    42208,
-    42240,
-    42272,
-    42304,
-    42336,
-    42368,
-    42400,
-    42432,
-    42464,
-    42496,
-    42528,
-    42560,
-    42592,
-    42624,
-    42656,
-    42688,
-    42720,
-    42752,
-    42784,
-    42816,
-    42848,
-    42880,
-    42912,
-    42944,
-    42976,
-    43008,
-    43040,
-    43072,
-    43104,
-    43136,
-    43168,
-    43200,
-    43232,
-    43264,
-    43296,
-    43328,
-    43360,
-    43392,
-    43424,
-    43456,
-    43488,
-    43520,
-    43552,
-    43584,
-    43616,
-    43648,
-    43680,
-    43712,
-    43744,
-    43776,
-    43808,
-    43840,
-    43872,
-    43904,
-    43936,
-    43968,
-    44000,
-    44032,
-    44064,
-    44096,
-    44128,
-    44160,
-    44192,
-    44224,
-    44256,
-    44288,
-    44320,
-    44352,
-    44384,
-    44416,
-    44448,
-    44480,
-    44512,
-    44544,
-    44576,
-    44608,
-    44640,
-    44672,
-    44704,
-    44736,
-    44768,
-    44800,
-    44832,
-    44864,
-    44896,
-    44928,
-    44960,
-    44992,
-    45024,
-    45056,
-    45088,
-    45120,
-    45152,
-    45184,
-    45216,
-    45248,
-    45280,
-    45312,
-    45344,
-    45376,
-    45408,
-    45440,
-    45472,
-    45504,
-    45536,
-    45568,
-    45600,
-    45632,
-    45664,
-    45696,
-    45728,
-    45760,
-    45792,
-    45824,
-    45856,
-    45888,
-    45920,
-    45952,
-    45984,
-    46016,
-    46048,
-    46080,
-    46112,
-    46144,
-    46176,
-    46208,
-    46240,
-    46272,
-    46304,
-    46336,
-    46368,
-    46400,
-    46432,
-    46464,
-    46496,
-    46528,
-    46560,
-    46592,
-    46624,
-    46656,
-    46688,
-    46720,
-    46752,
-    46784,
-    46816,
-    46848,
-    46880,
-    46912,
-    46944,
-    46976,
-    47008,
-    47040,
-    47072,
-    47104,
-    47136,
-    47168,
-    47200,
-    47232,
-    47264,
-    47296,
-    47328,
-    47360,
-    47392,
-    47424,
-    47456,
-    47488,
-    47520,
-    47552,
-    47584,
-    47616,
-    47648,
-    47680,
-    47712,
-    47744,
-    47776,
-    47808,
-    47840,
-    47872,
-    47904,
-    47936,
-    47968,
-    48000,
-    48032,
-    48064,
-    48096,
-    48128,
-    48160,
-    48192,
-    48224,
-    48256,
-    48288,
-    48320,
-    48352,
-    48384,
-    48416,
-    48448,
-    48480,
-    48512,
-    48544,
-    48576,
-    48608,
-    48640,
-    48672,
-    48704,
-    48736,
-    48768,
-    48800,
-    48832,
-    48864,
-    48896,
-    48928,
-    48960,
-    48992,
-    49024,
-    49056,
-    49088,
-    49120,
-    49152,
-    49184,
-    49216,
-    49248,
-    49280,
-    49312,
-    49344,
-    49376,
-    49408,
-    49440,
-    49472,
-    49504,
-    49536,
-    49568,
-    49600,
-    49632,
-    49664,
-    49696,
-    49728,
-    49760,
-    49792,
-    49824,
-    49856,
-    49888,
-    49920,
-    49952,
-    49984,
-    50016,
-    50048,
-    50080,
-    50112,
-    50144,
-    50176,
-    50208,
-    50240,
-    50272,
-    50304,
-    50336,
-    50368,
-    50400,
-    50432,
-    50464,
-    50496,
-    50528,
-    50560,
-    50592,
-    50624,
-    50656,
-    50688,
-    50720,
-    50752,
-    50784,
-    50816,
-    50848,
-    50880,
-    50912,
-    50944,
-    50976,
-    51008,
-    51040,
-    51072,
-    51104,
-    51136,
-    51168,
-    51200,
-    51232,
-    51264,
-    51296,
-    51328,
-    51360,
-    51392,
-    51424,
-    51456,
-    51488,
-    51520,
-    51552,
-    51584,
-    51616,
-    51648,
-    51680,
-    51712,
-    51744,
-    51776,
-    51808,
-    51840,
-    51872,
-    51904,
-    51936,
-    51968,
-    52000,
-    52032,
-    52064,
-    52096,
-    52128,
-    52160,
-    52192,
-    52224,
-    52256,
-    52288,
-    52320,
-    52352,
-    52384,
-    52416,
-    52448,
-    52480,
-    52512,
-    52544,
-    52576,
-    52608,
-    52640,
-    52672,
-    52704,
-    52736,
-    52768,
-    52800,
-    52832,
-    52864,
-    52896,
-    52928,
-    52960,
-    52992,
-    53024,
-    53056,
-    53088,
-    53120,
-    53152,
-    53184,
-    53216,
-    53248,
-    53280,
-    53312,
-    53344,
-    53376,
-    53408,
-    53440,
-    53472,
-    53504,
-    53536,
-    53568,
-    53600,
-    53632,
-    53664,
-    53696,
-    53728,
-    53760,
-    53792,
-    53824,
-    53856,
-    53888,
-    53920,
-    53952,
-    53984,
-    54016,
-    54048,
-    54080,
-    54112,
-    54144,
-    54176,
-    54208,
-    54240,
-    54272,
-    54304,
-    54336,
-    54368,
-    54400,
-    54432,
-    54464,
-    54496,
-    54528,
-    54560,
-    54592,
-    54624,
-    54656,
-    54688,
-    54720,
-    54752,
-    54784,
-    54816,
-    54848,
-    54880,
-    54912,
-    54944,
-    54976,
-    55008,
-    55040,
-    55072,
-    55104,
-    55136,
-    55168,
-    55200,
-    55232,
-    55264,
-    55296,
-    55328,
-    55360,
-    55392,
-    55424,
-    55456,
-    55488,
-    55520,
-    55552,
-    55584,
-    55616,
-    55648,
-    55680,
-    55712,
-    55744,
-    55776,
-    55808,
-    55840,
-    55872,
-    55904,
-    55936,
-    55968,
-    56000,
-    56032,
-    56064,
-    56096,
-    56128,
-    56160,
-    56192,
-    56224,
-    56256,
-    56288,
-    56320,
-    56352,
-    56384,
-    56416,
-    56448,
-    56480,
-    56512,
-    56544,
-    56576,
-    56608,
-    56640,
-    56672,
-    56704,
-    56736,
-    56768,
-    56800,
-    56832,
-    56864,
-    56896,
-    56928,
-    56960,
-    56992,
-    57024,
-    57056,
-    57088,
-    57120,
-    57152,
-    57184,
-    57216,
-    57248,
-    57280,
-    57312,
-    57344,
-    57376,
-    57408,
-    57440,
-    57472,
-    57504,
-    57536,
-    57568,
-    57600,
-    57632,
-    57664,
-    57696,
-    57728,
-    57760,
-    57792,
-    57824,
-    57856,
-    57888,
-    57920,
-    57952,
-    57984,
-    58016,
-    58048,
-    58080,
-    58112,
-    58144,
-    58176,
-    58208,
-    58240,
-    58272,
-    58304,
-    58336,
-    58368,
-    58400,
-    58432,
-    58464,
-    58496,
-    58528,
-    58560,
-    58592,
-    58624,
-    58656,
-    58688,
-    58720,
-    58752,
-    58784,
-    58816,
-    58848,
-    58880,
-    58912,
-    58944,
-    58976,
-    59008,
-    59040,
-    59072,
-    59104,
-    59136,
-    59168,
-    59200,
-    59232,
-    59264,
-    59296,
-    59328,
-    59360,
-    59392,
-    59424,
-    59456,
-    59488,
-    59520,
-    59552,
-    59584,
-    59616,
-    59648,
-    59680,
-    59712,
-    59744,
-    59776,
-    59808,
-    59840,
-    59872,
-    59904,
-    59936,
-    59968,
-    60000,
-    60032,
-    60064,
-    60096,
-    60128,
-    60160,
-    60192,
-    60224,
-    60256,
-    60288,
-    60320,
-    60352,
-    60384,
-    60416,
-    60448,
-    60480,
-    60512,
-    60544,
-    60576,
-    60608,
-    60640,
-    60672,
-    60704,
-    60736,
-    60768,
-    60800,
-    60832,
-    60864,
-    60896,
-    60928,
-    60960,
-    60992,
-    61024,
-    61056,
-    61088,
-    61120,
-    61152,
-    61184,
-    61216,
-    61248,
-    61280,
-    61312,
-    61344,
-    61376,
-    61408,
-    61440,
-    61472,
-    61504,
-    61536,
-    61568,
-    61600,
-    61632,
-    61664,
-    61696,
-    61728,
-    61760,
-    61792,
-    61824,
-    61856,
-    61888,
-    61920,
-    61952,
-    61984,
-    62016,
-    62048,
-    62080,
-    62112,
-    62144,
-    62176,
-    62208,
-    62240,
-    62272,
-    62304,
-    62336,
-    62368,
-    62400,
-    62432,
-    62464,
-    62496,
-    62528,
-    62560,
-    62592,
-    62624,
-    62656,
-    62688,
-    62720,
-    62752,
-    62784,
-    62816,
-    62848,
-    62880,
-    62912,
-    62944,
-    62976,
-    63008,
-    63040,
-    63072,
-    63104,
-    63136,
-    63168,
-    63200,
-    63232,
-    63264,
-    63296,
-    63328,
-    63360,
-    63392,
-    63424,
-    63456,
-    63488,
-    63520,
-    63552,
-    63584,
-    63616,
-    63648,
-    63680,
-    63712,
-    63744,
-    63776,
-    63808,
-    63840,
-    63872,
-    63904,
-    63936,
-    63968,
-    64000,
-    64032,
-    64064,
-    64096,
-    64128,
-    64160,
-    64192,
-    64224,
-    64256,
-    64288,
-    64320,
-    64352,
-    64384,
-    64416,
-    64448,
-    64480,
-    64512,
-    64544,
-    64576,
-    64608,
-    64640,
-    64672,
-    64704,
-    64736,
-    64768,
-    64800,
-    64832,
-    64864,
-    64896,
-    64928,
-    64960,
-    64992,
-    65024,
-    65056,
-    65088,
-    65120,
-    65152,
-    65184,
-    65216,
-    65248,
-    65280,
-    65312,
-    65344,
-    65376,
-    65408,
-    65440,
-    65472,
-    65504,
-    65536,
-    65568,
-    65600,
-    65632,
-    65664,
-    65696,
-    65728,
-    65760,
-    65792,
-    65824,
-    65856,
-    65888,
-    65920,
-    65952,
-    65984,
-    66016,
-    66048,
-    66080,
-    66112,
-    66144,
-    66176,
-    66208,
-    66240,
-    66272,
-    66304,
-    66336,
-    66368,
-    66400,
-    66432,
-    66464,
-    66496,
-    66528,
-    66560,
-    66592,
-    66624,
-    66656,
-    66688,
-    66720,
-    66752,
-    66784,
-    66816,
-    66848,
-    66880,
-    66912,
-    66944,
-    66976,
-    67008,
-    67040,
-    67072,
-    67104,
-    67136,
-    67168,
-    67200,
-    67232,
-    67264,
-    67296,
-    67328,
-    67360,
-    67392,
-    67424,
-    67456,
-    67488,
-    67520,
-    67552,
-    67584,
-    67616,
-    67648,
-    67680,
-    67712,
-    67744,
-    67776,
-    67808,
-    67840,
-    67872,
-    67904,
-    67936,
-    67968,
-    68000,
-    68032,
-    68064,
-    68096,
-    68128,
-    68160,
-    68192,
-    68224,
-    68256,
-    68288,
-    68320,
-    68352,
-    68384,
-    68416,
-    68448,
-    68480,
-    68512,
-    68544,
-    68576,
-    68608,
-    68640,
-    68672,
-    68704,
-    68736,
-    68768,
-    68800,
-    68832,
-    68864,
-    68896,
-    68928,
-    68960,
-    68992,
-    69024,
-    69056,
-    69088,
-    69120,
-    69152,
-    69184,
-    69216,
-    69248,
-    69280,
-    69312,
-    69344,
-    69376,
-    69408,
-    69440,
-    69472,
-    69504,
-    69536,
-    69568,
-    69600,
-    69632,
-    69664,
-    69696,
-    69728,
-    69760,
-    69792,
-    69824,
-    69856,
-    69888,
-    69920,
-    69952,
-    69984,
-    70016,
-    70048,
-    70080,
-    70112,
-    70144,
-    70176,
-    70208,
-    70240,
-    70272,
-    70304,
-    70336,
-    70368,
-    70400,
-    70432,
-    70464,
-    70496,
-    70528,
-    70560,
-    70592,
-    70624,
-    70656,
-    70688,
-    70720,
-    70752,
-    70784,
-    70816,
-    70848,
-    70880,
-    70912,
-    70944,
-    70976,
-    71008,
-    71040,
-    71072,
-    71104,
-    71136,
-    71168,
-    71200,
-    71232,
-    71264,
-    71296,
-    71328,
-    71360,
-    71392,
-    71424,
-    71456,
-    71488,
-    71520,
-    71552,
-    71584,
-    71616,
-    71648,
-    71680,
-    71712,
-    71744,
-    71776,
-    71808,
-    71840,
-    71872,
-    71904,
-    71936,
-    71968,
-    72000,
-    72032,
-    72064,
-    72096,
-    72128,
-    72160,
-    72192,
-    72224,
-    72256,
-    72288,
-    72320,
-    72352,
-    72384,
-    72416,
-    72448,
-    72480,
-    72512,
-    72544,
-    72576,
-    72608,
-    72640,
-    72672,
-    72704,
-    72736,
-    72768,
-    72800,
-    72832,
-    72864,
-    72896,
-    72928,
-    72960,
-    72992,
-    73024,
-    73056,
-    73088,
-    73120,
-    73152,
-    73184,
-    73216,
-    73248,
-    73280,
-    73312,
-    73344,
-    73376,
-    73408,
-    73440,
-    73472,
-    73504,
-    73536,
-    73568,
-    73600,
-    73632,
-    73664,
-    73696,
-    73728,
-    73760,
-    73792,
-    73824,
-    73856,
-    73888,
-    73920,
-    73952,
-    73984,
-    74016,
-    74048,
-    74080,
-    74112,
-    74144,
-    74176,
-    74208,
-    74240,
-    74272,
-    74304,
-    74336,
-    74368,
-    74400,
-    74432,
-    74464,
-    74496,
-    74528,
-    74560,
-    74592,
-    74624,
-    74656,
-    74688,
-    74720,
-    74752,
-    74784,
-    74816,
-    74848,
-    74880,
-    74912,
-    74944,
-    74976,
-    75008,
-    75040,
-    75072,
-    75104,
-    75136,
-    75168,
-    75200,
-    75232,
-    75264,
-    75296,
-    75328,
-    75360,
-    75392,
-    75424,
-    75456,
-    75488,
-    75520,
-    75552,
-    75584,
-    75616,
-    75648,
-    75680,
-    75712,
-    75744,
-    75776,
-    75808,
-    75840,
-    75872,
-    75904,
-    75936,
-    75968,
-    76000,
-    76032,
-    76064,
-    76096,
-    76128,
-    76160,
-    76192,
-    76224,
-    76256,
-    76288,
-    76320,
-    76352,
-    76384,
-    76416,
-    76448,
-    76480,
-    76512,
-    76544,
-    76576,
-    76608,
-    76640,
-    76672,
-    76704,
-    76736,
-    76768,
-    76800,
-    76832,
-    76864,
-    76896,
-    76928,
-    76960,
-    76992,
-    77024,
-    77056,
-    77088,
-    77120,
-    77152,
-    77184,
-    77216,
-    77248,
-    77280,
-    77312,
-    77344,
-    77376,
-    77408,
-    77440,
-    77472,
-    77504,
-    77536,
-    77568,
-    77600,
-    77632,
-    77664,
-    77696,
-    77728,
-    77760,
-    77792,
-    77824,
-    77856,
-    77888,
-    77920,
-    77952,
-    77984,
-    78016,
-    78048,
-    78080,
-    78112,
-    78144,
-    78176,
-    78208,
-    78240,
-    78272,
-    78304,
-    78336,
-    78368,
-    78400,
-    78432,
-    78464,
-    78496,
-    78528,
-    78560,
-    78592,
-    78624,
-    78656,
-    78688,
-    78720,
-    78752,
-    78784,
-    78816,
-    78848,
-    78880,
-    78912,
-    78944,
-    78976,
-    79008,
-    79040,
-    79072,
-    79104,
-    79136,
-    79168,
-    79200,
-    79232,
-    79264,
-    79296,
-    79328,
-    79360,
-    79392,
-    79424,
-    79456,
-    79488,
-    79520,
-    79552,
-    79584,
-    79616,
-    79648,
-    79680,
-    79712,
-    79744,
-    79776,
-    79808,
-    79840,
-    79872,
-    79904,
-    79936,
-    79968,
-    80000,
-    80032,
-    80064,
-    80096,
-    80128,
-    80160,
-    80192,
-    80224,
-    80256,
-    80288,
-    80320,
-    80352,
-    80384,
-    80416,
-    80448,
-    80480,
-    80512,
-    80544,
-    80576,
-    80608,
-    80640,
-    80672,
-    80704,
-    80736,
-    80768,
-    80800,
-    80832,
-    80864,
-    80896,
-    80928,
-    80960,
-    80992,
-    81024,
-    81056,
-    81088,
-    81120,
-    81152,
-    81184,
-    81216,
-    81248,
-    81280,
-    81312,
-    81344,
-    81376,
-    81408,
-    81440,
-    81472,
-    81504,
-    81536,
-    81568,
-    81600,
-    81632,
-    81664,
-    81696,
-    81728,
-    81760,
-    81792,
-    81824,
-    81856,
-    81888,
-    81920,
-    81952,
-    81984,
-    82016,
-    82048,
-    82080,
-    82112,
-    82144,
-    82176,
-    82208,
-    82240,
-    82272,
-    82304,
-    82336,
-    82368,
-    82400,
-    82432,
-    82464,
-    82496,
-    82528,
-    82560,
-    82592,
-    82624,
-    82656,
-    82688,
-    82720,
-    82752,
-    82784,
-    82816,
-    82848,
-    82880,
-    82912,
-    82944,
-    82976,
-    83008,
-    83040,
-    83072,
-    83104,
-    83136,
-    83168,
-    83200,
-    83232,
-    83264,
-    83296,
-    83328,
-    83360,
-    83392,
-    83424,
-    83456,
-    83488,
-    83520,
-    83552,
-    83584,
-    83616,
-    83648,
-    83680,
-    83712,
-    83744,
-    83776,
-    83808,
-    83840,
-    83872,
-    83904,
-    83936,
-    83968,
-    84000,
-    84032,
-    84064,
-    84096,
-    84128,
-    84160,
-    84192,
-    84224,
-    84256,
-    84288,
-    84320,
-    84352,
-    84384,
-    84416,
-    84448,
-    84480,
-    84512,
-    84544,
-    84576,
-    84608,
-    84640,
-    84672,
-    84704,
-    84736,
-    84768,
-    84800,
-    84832,
-    84864,
-    84896,
-    84928,
-    84960,
-    84992,
-    85024,
-    85056,
-    85088,
-    85120,
-    85152,
-    85184,
-    85216,
-    85248,
-    85280,
-    85312,
-    85344,
-    85376,
-    85408,
-    85440,
-    85472,
-    85504,
-    85536,
-    85568,
-    85600,
-    85632,
-    85664,
-    85696,
-    85728,
-    85760,
-    85792,
-    85824,
-    85856,
-    85888,
-    85920,
-    85952,
-    85984,
-    86016,
-    86048,
-    86080,
-    86112,
-    86144,
-    86176,
-    86208,
-    86240,
-    86272,
-    86304,
-    86336,
-    86368,
-    86400,
-    86432,
-    86464,
-    86496,
-    86528,
-    86560,
-    86592,
-    86624,
-    86656,
-    86688,
-    86720,
-    86752,
-    86784,
-    86816,
-    86848,
-    86880,
-    86912,
-    86944,
-    86976,
-    87008,
-    87040,
-    87072,
-    87104,
-    87136,
-    87168,
-    87200,
-    87232,
-    87264,
-    87296,
-    87328,
-    87360,
-    87392,
-    87424,
-    87456,
-    87488,
-    87520,
-    87552,
-    87584,
-    87616,
-    87648,
-    87680,
-    87712,
-    87744,
-    87776,
-    87808,
-    87840,
-    87872,
-    87904,
-    87936,
-    87968,
-    88000,
-    88032,
-    88064,
-    88096,
-    88128,
-    88160,
-    88192,
-    88224,
-    88256,
-    88288,
-    88320,
-    88352,
-    88384,
-    88416,
-    88448,
-    88480,
-    88512,
-    88544,
-    88576,
-    88608,
-    88640,
-    88672,
-    88704,
-    88736,
-    88768,
-    88800,
-    88832,
-    88864,
-    88896,
-    88928,
-    88960,
-    88992,
-    89024,
-    89056,
-    89088,
-    89120,
-    89152,
-    89184,
-    89216,
-    89248,
-    89280,
-    89312,
-    89344,
-    89376,
-    89408,
-    89440,
-    89472,
-    89504,
-    89536,
-    89568,
-    89600,
-    89632,
-    89664,
-    89696,
-    89728,
-    89760,
-    89792,
-    89824,
-    89856,
-    89888,
-    89920,
-    89952,
-    89984,
-    90016,
-    90048,
-    90080,
-    90112,
-    90144,
-    90176,
-    90208,
-    90240,
-    90272,
-    90304,
-    90336,
-    90368,
-    90400,
-    90432,
-    90464,
-    90496,
-    90528,
-    90560,
-    90592,
-    90624,
-    90656,
-    90688,
-    90720,
-    90752,
-    90784,
-    90816,
-    90848,
-    90880,
-    90912,
-    90944,
-    90976,
-    91008,
-    91040,
-    91072,
-    91104,
-    91136,
-    91168,
-    91200,
-    91232,
-    91264,
-    91296,
-    91328,
-    91360,
-    91392,
-    91424,
-    91456,
-    91488,
-    91520,
-    91552,
-    91584,
-    91616,
-    91648,
-    91680,
-    91712,
-    91744,
-    91776,
-    91808,
-    91840,
-    91872,
-    91904,
-    91936,
-    91968,
-    92000,
-    92032,
-    92064,
-    92096,
-    92128,
-    92160,
-    92192,
-    92224,
-    92256,
-    92288,
-    92320,
-    92352,
-    92384,
-    92416,
-    92448,
-    92480,
-    92512,
-    92544,
-    92576,
-    92608,
-    92640,
-    92672,
-    92704,
-    92736,
-    92768,
-    92800,
-    92832,
-    92864,
-    92896,
-    92928,
-    92960,
-    92992,
-    93024,
-    93056,
-    93088,
-    93120,
-    93152,
-    93184,
-    93216,
-    93248,
-    93280,
-    93312,
-    93344,
-    93376,
-    93408,
-    93440,
-    93472,
-    93504,
-    93536,
-    93568,
-    93600,
-    93632,
-    93664,
-    93696,
-    93728,
-    93760,
-    93792,
-    93824,
-    93856,
-    93888,
-    93920,
-    93952,
-    93984,
-    94016,
-    94048,
-    94080,
-    94112,
-    94144,
-    94176,
-    94208,
-    94240,
-    94272,
-    94304,
-    94336,
-    94368,
-    94400,
-    94432,
-    94464,
-    94496,
-    94528,
-    94560,
-    94592,
-    94624,
-    94656,
-    94688,
-    94720,
-    94752,
-    94784,
-    94816,
-    94848,
-    94880,
-    94912,
-    94944,
-    94976,
-    95008,
-    95040,
-    95072,
-    95104,
-    95136,
-    95168,
-    95200,
-    95232,
-    95264,
-    95296,
-    95328,
-    95360,
-    95392,
-    95424,
-    95456,
-    95488,
-    95520,
-    95552,
-    95584,
-    95616,
-    95648,
-    95680,
-    95712,
-    95744,
-    95776,
-    95808,
-    95840,
-    95872,
-    95904,
-    95936,
-    95968,
-    96000,
-    96032,
-    96064,
-    96096,
-    96128,
-    96160,
-    96192,
-    96224,
-    96256,
-    96288,
-    96320,
-    96352,
-    96384,
-    96416,
-    96448,
-    96480,
-    96512,
-    96544,
-    96576,
-    96608,
-    96640,
-    96672,
-    96704,
-    96736,
-    96768,
-    96800,
-    96832,
-    96864,
-    96896,
-    96928,
-    96960,
-    96992,
-    97024,
-    97056,
-    97088,
-    97120,
-    97152,
-    97184,
-    97216,
-    97248,
-    97280,
-    97312,
-    97344,
-    97376,
-    97408,
-    97440,
-    97472,
-    97504,
-    97536,
-    97568,
-    97600,
-    97632,
-    97664,
-    97696,
-    97728,
-    97760,
-    97792,
-    97824,
-    97856,
-    97888,
-    97920,
-    97952,
-    97984,
-    98016,
-    98048,
-    98080,
-    98112,
-    98144,
-    98176,
-    98208,
-    98240,
-    98272,
-    98304,
-    98336,
-    98368,
-    98400,
-    98432,
-    98464,
-    98496,
-    98528,
-    98560,
-    98592,
-    98624,
-    98656,
-    98688,
-    98720,
-    98752,
-    98784,
-    98816,
-    98848,
-    98880,
-    98912,
-    98944,
-    98976,
-    99008,
-    99040,
-    99072,
-    99104,
-    99136,
-    99168,
-    99200,
-    99232,
-    99264,
-    99296,
-    99328,
-    99360,
-    99392,
-    99424,
-    99456,
-    99488,
-    99520,
-    99552,
-    99584,
-    99616,
-    99648,
-    99680,
-    99712,
-    99744,
-    99776,
-    99808,
-    99840,
-    99872,
-    99904,
-    99936,
-    99968,
-    100000,
-    100032,
-    100064,
-    100096,
-    100128,
-    100160,
-    100192,
-    100224,
-    100256,
-    100288,
-    100320,
-    100352,
-    100384,
-    100416,
-    100448,
-    100480,
-    100512,
-    100544,
-    100576,
-    100608,
-    100640,
-    100672,
-    100704,
-    100736,
-    100768,
-    100800,
-    100832,
-    100864,
-    100896,
-    100928,
-    100960,
-    100992,
-    101024,
-    101056,
-    101088,
-    101120,
-    101152,
-    101184,
-    101216,
-    101248,
-    101280,
-    101312,
-    101344,
-    101376,
-    101408,
-    101440,
-    101472,
-    101504,
-    101536,
-    101568,
-    101600,
-    101632,
-    101664,
-    101696,
-    101728,
-    101760,
-    101792,
-    101824,
-    101856,
-    101888,
-    101920,
-    101952,
-    101984,
-    102016,
-    102048,
-    102080,
-    102112,
-    102144,
-    102176,
-    102208,
-    102240,
-    102272,
-    102304,
-    102336,
-    102368,
-    102400,
-    102432,
-    102464,
-    102496,
-    102528,
-    102560,
-    102592,
-    102624,
-    102656,
-    102688,
-    102720,
-    102752,
-    102784,
-    102816,
-    102848,
-    102880,
-    102912,
-    102944,
-    102976,
-    103008,
-    103040,
-    103072,
-    103104,
-    103136,
-    103168,
-    103200,
-    103232,
-    103264,
-    103296,
-    103328,
-    103360,
-    103392,
-    103424,
-    103456,
-    103488,
-    103520,
-    103552,
-    103584,
-    103616,
-    103648,
-    103680,
-    103712,
-    103744,
-    103776,
-    103808,
-    103840,
-    103872,
-    103904,
-    103936,
-    103968,
-    104000,
-    104032,
-    104064,
-    104096,
-    104128,
-    104160,
-    104192,
-    104224,
-    104256,
-    104288,
-    104320,
-    104352,
-    104384,
-    104416,
-    104448,
-    104480,
-    104512,
-    104544,
-    104576,
-    104608,
-    104640,
-    104672,
-    104704,
-    104736,
-    104768,
-    104800,
-    104832,
-    104864,
-    104896,
-    104928,
-    104960,
-    104992,
-    105024,
-    105056,
-    105088,
-    105120,
-    105152,
-    105184,
-    105216,
-    105248,
-    105280,
-    105312,
-    105344,
-    105376,
-    105408,
-    105440,
-    105472,
-    105504,
-    105536,
-    105568,
-    105600,
-    105632,
-    105664,
-    105696,
-    105728,
-    105760,
-    105792,
-    105824,
-    105856,
-    105888,
-    105920,
-    105952,
-    105984,
-    106016,
-    106048,
-    106080,
-    106112,
-    106144,
-    106176,
-    106208,
-    106240,
-    106272,
-    106304,
-    106336,
-    106368,
-    106400,
-    106432,
-    106464,
-    106496,
-    106528,
-    106560,
-    106592,
-    106624,
-    106656,
-    106688,
-    106720,
-    106752,
-    106784,
-    106816,
-    106848,
-    106880,
-    106912,
-    106944,
-    106976,
-    107008,
-    107040,
-    107072,
-    107104,
-    107136,
-    107168,
-    107200,
-    107232,
-    107264,
-    107296,
-    107328,
-    107360,
-    107392,
-    107424,
-    107456,
-    107488,
-    107520,
-    107552,
-    107584,
-    107616,
-    107648,
-    107680,
-    107712,
-    107744,
-    107776,
-    107808,
-    107840,
-    107872,
-    107904,
-    107936,
-    107968,
-    108000,
-    108032,
-    108064,
-    108096,
-    108128,
-    108160,
-    108192,
-    108224,
-    108256,
-    108288,
-    108320,
-    108352,
-    108384,
-    108416,
-    108448,
-    108480,
-    108512,
-    108544,
-    108576,
-    108608,
-    108640,
-    108672,
-    108704,
-    108736,
-    108768,
-    108800,
-    108832,
-    108864,
-    108896,
-    108928,
-    108960,
-    108992,
-    109024,
-    109056,
-    109088,
-    109120,
-    109152,
-    109184,
-    109216,
-    109248,
-    109280,
-    109312,
-    109344,
-    109376,
-    109408,
-    109440,
-    109472,
-    109504,
-    109536,
-    109568,
-    109600,
-    109632,
-    109664,
-    109696,
-    109728,
-    109760,
-    109792,
-    109824,
-    109856,
-    109888,
-    109920,
-    109952,
-    109984,
-    110016,
-    110048,
-    110080,
-    110112,
-    110144,
-    110176,
-    110208,
-    110240,
-    110272,
-    110304,
-    110336,
-    110368,
-    110400,
-    110432,
-    110464,
-    110496,
-    110528,
-    110560,
-    110592,
-    110624,
-    110656,
-    110688,
-    110720,
-    110752,
-    110784,
-    110816,
-    110848,
-    110880,
-    110912,
-    110944,
-    110976,
-    111008,
-    111040,
-    111072,
-    111104,
-    111136,
-    111168,
-    111200,
-    111232,
-    111264,
-    111296,
-    111328,
-    111360,
-    111392,
-    111424,
-    111456,
-    111488,
-    111520,
-    111552,
-    111584,
-    111616,
-    111648,
-    111680,
-    111712,
-    111744,
-    111776,
-    111808,
-    111840,
-    111872,
-    111904,
-    111936,
-    111968,
-    112000,
-    112032,
-    112064,
-    112096,
-    112128,
-    112160,
-    112192,
-    112224,
-    112256,
-    112288,
-    112320,
-    112352,
-    112384,
-    112416,
-    112448,
-    112480,
-    112512,
-    112544,
-    112576,
-    112608,
-    112640,
-    112672,
-    112704,
-    112736,
-    112768,
-    112800,
-    112832,
-    112864,
-    112896,
-    112928,
-    112960,
-    112992,
-    113024,
-    113056,
-    113088,
-    113120,
-    113152,
-    113184,
-    113216,
-    113248,
-    113280,
-    113312,
-    113344,
-    113376,
-    113408,
-    113440,
-    113472,
-    113504,
-    113536,
-    113568,
-    113600,
-    113632,
-    113664,
-    113696,
-    113728,
-    113760,
-    113792,
-    113824,
-    113856,
-    113888,
-    113920,
-    113952,
-    113984,
-    114016,
-    114048,
-    114080,
-    114112,
-    114144,
-    114176,
-    114208,
-    114240,
-    114272,
-    114304,
-    114336,
-    114368,
-    114400,
-    114432,
-    114464,
-    114496,
-    114528,
-    114560,
-    114592,
-    114624,
-    114656,
-    114688,
-    114720,
-    114752,
-    114784,
-    114816,
-    114848,
-    114880,
-    114912,
-    114944,
-    114976,
-    115008,
-    115040,
-    115072,
-    115104,
-    115136,
-    115168,
-    115200,
-    115232,
-    115264,
-    115296,
-    115328,
-    115360,
-    115392,
-    115424,
-    115456,
-    115488,
-    115520,
-    115552,
-    115584,
-    115616,
-    115648,
-    115680,
-    115712,
-    115744,
-    115776,
-    115808,
-    115840,
-    115872,
-    115904,
-    115936,
-    115968,
-    116000,
-    116032,
-    116064,
-    116096,
-    116128,
-    116160,
-    116192,
-    116224,
-    116256,
-    116288,
-    116320,
-    116352,
-    116384,
-    116416,
-    116448,
-    116480,
-    116512,
-    116544,
-    116576,
-    116608,
-    116640,
-    116672,
-    116704,
-    116736,
-    116768,
-    116800,
-    116832,
-    116864,
-    116896,
-    116928,
-    116960,
-    116992,
-    117024,
-    117056,
-    117088,
-    117120,
-    117152,
-    117184,
-    117216,
-    117248,
-    117280,
-    117312,
-    117344,
-    117376,
-    117408,
-    117440,
-    117472,
-    117504,
-    117536,
-    117568,
-    117600,
-    117632,
-    117664,
-    117696,
-    117728,
-    117760,
-    117792,
-    117824,
-    117856,
-    117888,
-    117920,
-    117952,
-    117984,
-    118016,
-    118048,
-    118080,
-    118112,
-    118144,
-    118176,
-    118208,
-    118240,
-    118272,
-    118304,
-    118336,
-    118368,
-    118400,
-    118432,
-    118464,
-    118496,
-    118528,
-    118560,
-    118592,
-    118624,
-    118656,
-    118688,
-    118720,
-    118752,
-    118784,
-    118816,
-    118848,
-    118880,
-    118912,
-    118944,
-    118976,
-    119008,
-    119040,
-    119072,
-    119104,
-    119136,
-    119168,
-    119200,
-    119232,
-    119264,
-    119296,
-    119328,
-    119360,
-    119392,
-    119424,
-    119456,
-    119488,
-    119520,
-    119552,
-    119584,
-    119616,
-    119648,
-    119680,
-    119712,
-    119744,
-    119776,
-    119808,
-    119840,
-    119872,
-    119904,
-    119936,
-    119968,
-    120000,
-    120032,
-    120064,
-    120096,
-    120128,
-    120160,
-    120192,
-    120224,
-    120256,
-    120288,
-    120320,
-    120352,
-    120384,
-    120416,
-    120448,
-    120480,
-    120512,
-    120544,
-    120576,
-    120608,
-    120640,
-    120672,
-    120704,
-    120736,
-    120768,
-    120800,
-    120832,
-    120864,
-    120896,
-    120928,
-    120960,
-    120992,
-    121024,
-    121056,
-    121088,
-    121120,
-    121152,
-    121184,
-    121216,
-    121248,
-    121280,
-    121312,
-    121344,
-    121376,
-    121408,
-    121440,
-    121472,
-    121504,
-    121536,
-    121568,
-    121600,
-    121632,
-    121664,
-    121696,
-    121728,
-    121760,
-    121792,
-    121824,
-    121856,
-    121888,
-    121920,
-    121952,
-    121984,
-    122016,
-    122048,
-    122080,
-    122112,
-    122144,
-    122176,
-    122208,
-    122240,
-    122272,
-    122304,
-    122336,
-    122368,
-    122400,
-    122432,
-    122464,
-    122496,
-    122528,
-    122560,
-    122592,
-    122624,
-    122656,
-    122688,
-    122720,
-    122752,
-    122784,
-    122816,
-    122848,
-    122880,
-    122912,
-    122944,
-    122976,
-    123008,
-    123040,
-    123072,
-    123104,
-    123136,
-    123168,
-    123200,
-    123232,
-    123264,
-    123296,
-    123328,
-    123360,
-    123392,
-    123424,
-    123456,
-    123488,
-    123520,
-    123552,
-    123584,
-    123616,
-    123648,
-    123680,
-    123712,
-    123744,
-    123776,
-    123808,
-    123840,
-    123872,
-    123904,
-    123936,
-    123968,
-    124000,
-    124032,
-    124064,
-    124096,
-    124128,
-    124160,
-    124192,
-    124224,
-    124256,
-    124288,
-    124320,
-    124352,
-    124384,
-    124416,
-    124448,
-    124480,
-    124512,
-    124544,
-    124576,
-    124608,
-    124640,
-    124672,
-    124704,
-    124736,
-    124768,
-    124800,
-    124832,
-    124864,
-    124896,
-    124928,
-    124960,
-    124992,
-    125024,
-    125056,
-    125088,
-    125120,
-    125152,
-    125184,
-    125216,
-    125248,
-    125280,
-    125312,
-    125344,
-    125376,
-    125408,
-    125440,
-    125472,
-    125504,
-    125536,
-    125568,
-    125600,
-    125632,
-    125664,
-    125696,
-    125728,
-    125760,
-    125792,
-    125824,
-    125856,
-    125888,
-    125920,
-    125952,
-    125984,
-    126016,
-    126048,
-    126080,
-    126112,
-    126144,
-    126176,
-    126208,
-    126240,
-    126272,
-    126304,
-    126336,
-    126368,
-    126400,
-    126432,
-    126464,
-    126496,
-    126528,
-    126560,
-    126592,
-    126624,
-    126656,
-    126688,
-    126720,
-    126752,
-    126784,
-    126816,
-    126848,
-    126880,
-    126912,
-    126944,
-    126976,
-    127008,
-    127040,
-    127072,
-    127104,
-    127136,
-    127168,
-    127200,
-    127232,
-    127264,
-    127296,
-    127328,
-    127360,
-    127392,
-    127424,
-    127456,
-    127488,
-    127520,
-    127552,
-    127584,
-    127616,
-    127648,
-    127680,
-    127712,
-    127744,
-    127776,
-    127808,
-    127840,
-    127872,
-    127904,
-    127936,
-    127968,
-    128000,
-    128032,
-    128064,
-    128096,
-    128128,
-    128160,
-    128192,
-    128224,
-    128256,
-    128288,
-    128320,
-    128352,
-    128384,
-    128416,
-    128448,
-    128480,
-    128512,
-    128544,
-    128576,
-    128608,
-    128640,
-    128672,
-    128704,
-    128736,
-    128768,
-    128800,
-    128832,
-    128864,
-    128896,
-    128928,
-    128960,
-    128992,
-    129024,
-    129056,
-    129088,
-    129120,
-    129152,
-    129184,
-    129216,
-    129248,
-    129280,
-    129312,
-    129344,
-    129376,
-    129408,
-    129440,
-    129472,
-    129504,
-    129536,
-    129568,
-    129600,
-    129632,
-    129664,
-    129696,
-    129728,
-    129760,
-    129792,
-    129824,
-    129856,
-    129888,
-    129920,
-    129952,
-    129984,
-    130016,
-    130048,
-    130080,
-    130112,
-    130144,
-    130176,
-    130208,
-    130240,
-    130272,
-    130304,
-    130336,
-    130368,
-    130400,
-    130432,
-    130464,
-    130496,
-    130528,
-    130560,
-    130592,
-    130624,
-    130656,
-    130688,
-    130720,
-    130752,
-    130784,
-    130816,
-    130848,
-    130880,
-    130912,
-    130944,
-    130976,
-    131008,
-    131040,
-    131072,
-    131104,
-    131136,
-    131168,
-    131200,
-    131232,
-    131264,
-    131296,
-    131328,
-    131360,
-    131392,
-    131424,
-    131456,
-    131488,
-    131520,
-    131552,
-    131584,
-    131616,
-    131648,
-    131680,
-    131712,
-    131744,
-    131776,
-    131808,
-    131840,
-    131872,
-    131904,
-    131936,
-    131968,
-    132000,
-    132032,
-    132064,
-    132096,
-    132128,
-    132160,
-    132192,
-    132224,
-    132256,
-    132288,
-    132320,
-    132352,
-    132384,
-    132416,
-    132448,
-    132480,
-    132512,
-    132544,
-    132576,
-    132608,
-    132640,
-    132672,
-    132704,
-    132736,
-    132768,
-    132800,
-    132832,
-    132864,
-    132896,
-    132928,
-    132960,
-    132992,
-    133024,
-    133056,
-    133088,
-    133120,
-    133152,
-    133184,
-    133216,
-    133248,
-    133280,
-    133312,
-    133344,
-    133376,
-    133408,
-    133440,
-    133472,
-    133504,
-    133536,
-    133568,
-    133600,
-    133632,
-    133664,
-    133696,
-    133728,
-    133760,
-    133792,
-    133824,
-    133856,
-    133888,
-    133920,
-    133952,
-    133984,
-    134016,
-    134048,
-    134080,
-    134112,
-    134144,
-    134176,
-    134208,
-    134240,
-    134272,
-    134304,
-    134336,
-    134368,
-    134400,
-    134432,
-    134464,
-    134496,
-    134528,
-    134560,
-    134592,
-    134624,
-    134656,
-    134688,
-    134720,
-    134752,
-    134784,
-    134816,
-    134848,
-    134880,
-    134912,
-    134944,
-    134976,
-    135008,
-    135040,
-    135072,
-    135104,
-    135136,
-    135168,
-    135200,
-    135232,
-    135264,
-    135296,
-    135328,
-    135360,
-    135392,
-    135424,
-    135456,
-    135488,
-    135520,
-    135552,
-    135584,
-    135616,
-    135648,
-    135680,
-    135712,
-    135744,
-    135776,
-    135808,
-    135840,
-    135872,
-    135904,
-    135936,
-    135968,
-    136000,
-    136032,
-    136064,
-    136096,
-    136128,
-    136160,
-    136192,
-    136224,
-    136256,
-    136288,
-    136320,
-    136352,
-    136384,
-    136416,
-    136448,
-    136480,
-    136512,
-    136544,
-    136576,
-    136608,
-    136640,
-    136672,
-    136704,
-    136736,
-    136768,
-    136800,
-    136832,
-    136864,
-    136896,
-    136928,
-    136960,
-    136992,
-    137024,
-    137056,
-    137088,
-    137120,
-    137152,
-    137184,
-    137216,
-    137248,
-    137280,
-    137312,
-    137344,
-    137376,
-    137408,
-    137440,
-    137472,
-    137504,
-    137536,
-    137568,
-    137600,
-    137632,
-    137664,
-    137696,
-    137728,
-    137760,
-    137792,
-    137824,
-    137856,
-    137888,
-    137920,
-    137952,
-    137984,
-    138016,
-    138048,
-    138080,
-    138112,
-    138144,
-    138176,
-    138208,
-    138240,
-    138272,
-    138304,
-    138336,
-    138368,
-    138400,
-    138432,
-    138464,
-    138496,
-    138528,
-    138560,
-    138592,
-    138624,
-    138656,
-    138688,
-    138720,
-    138752,
-    138784,
-    138816,
-    138848,
-    138880,
-    138912,
-    138944,
-    138976,
-    139008,
-    139040,
-    139072,
-    139104,
-    139136,
-    139168,
-    139200,
-    139232,
-    139264,
-    139296,
-    139328,
-    139360,
-    139392,
-    139424,
-    139456,
-    139488,
-    139520,
-    139552,
-    139584,
-    139616,
-    139648,
-    139680,
-    139712,
-    139744,
-    139776,
-    139808,
-    139840,
-    139872,
-    139904,
-    139936,
-    139968,
-    140000,
-    140032,
-    140064,
-    140096,
-    140128,
-    140160,
-    140192,
-    140224,
-    140256,
-    140288,
-    140320,
-    140352,
-    140384,
-    140416,
-    140448,
-    140480,
-    140512,
-    140544,
-    140576,
-    140608,
-    140640,
-    140672,
-    140704,
-    140736,
-    140768,
-    140800,
-    140832,
-    140864,
-    140896,
-    140928,
-    140960,
-    140992,
-    141024,
-    141056,
-    141088,
-    141120,
-    141152,
-    141184,
-    141216,
-    141248,
-    141280,
-    141312,
-    141344,
-    141376,
-    141408,
-    141440,
-    141472,
-    141504,
-    141536,
-    141568,
-    141600,
-    141632,
-    141664,
-    141696,
-    141728,
-    141760,
-    141792,
-    141824,
-    141856,
-    141888,
-    141920,
-    141952,
-    141984,
-    142016,
-    142048,
-    142080,
-    142112,
-    142144,
-    142176,
-    142208,
-    142240,
-    142272,
-    142304,
-    142336,
-    142368,
-    142400,
-    142432,
-    142464,
-    142496,
-    142528,
-    142560,
-    142592,
-    142624,
-    142656,
-    142688,
-    142720,
-    142752,
-    142784,
-    142816,
-    142848,
-    142880,
-    142912,
-    142944,
-    142976,
-    143008,
-    143040,
-    143072,
-    143104,
-    143136,
-    143168,
-    143200,
-    143232,
-    143264,
-    143296,
-    143328,
-    143360,
-    143392,
-    143424,
-    143456,
-    143488,
-    143520,
-    143552,
-    143584,
-    143616,
-    143648,
-    143680,
-    143712,
-    143744,
-    143776,
-    143808,
-    143840,
-    143872,
-    143904,
-    143936,
-    143968,
-    144000,
-    144032,
-    144064,
-    144096,
-    144128,
-    144160,
-    144192,
-    144224,
-    144256,
-    144288,
-    144320,
-    144352,
-    144384,
-    144416,
-    144448,
-    144480,
-    144512,
-    144544,
-    144576,
-    144608,
-    144640,
-    144672,
-    144704,
-    144736,
-    144768,
-    144800,
-    144832,
-    144864,
-    144896,
-    144928,
-    144960,
-    144992,
-    145024,
-    145056,
-    145088,
-    145120,
-    145152,
-    145184,
-    145216,
-    145248,
-    145280,
-    145312,
-    145344,
-    145376,
-    145408,
-    145440,
-    145472,
-    145504,
-    145536,
-    145568,
-    145600,
-    145632,
-    145664,
-    145696,
-    145728,
-    145760,
-    145792,
-    145824,
-    145856,
-    145888,
-    145920,
-    145952,
-    145984,
-    146016,
-    146048,
-    146080,
-    146112,
-    146144,
-    146176,
-    146208,
-    146240,
-    146272,
-    146304,
-    146336,
-    146368,
-    146400,
-    146432,
-    146464,
-    146496,
-    146528,
-    146560,
-    146592,
-    146624,
-    146656,
-    146688,
-    146720,
-    146752,
-    146784,
-    146816,
-    146848,
-    146880,
-    146912,
-    146944,
-    146976,
-    147008,
-    147040,
-    147072,
-    147104,
-    147136,
-    147168,
-    147200,
-    147232,
-    147264,
-    147296,
-    147328,
-    147360,
-    147392,
-    147424,
-    147456,
-    147488,
-    147520,
-    147552,
-    147584,
-    147616,
-    147648,
-    147680,
-    147712,
-    147744,
-    147776,
-    147808,
-    147840,
-    147872,
-    147904,
-    147936,
-    147968,
-    148000,
-    148032,
-    148064,
-    148096,
-    148128,
-    148160,
-    148192,
-    148224,
-    148256,
-    148288,
-    148320,
-    148352,
-    148384,
-    148416,
-    148448,
-    148480,
-    148512,
-    148544,
-    148576,
-    148608,
-    148640,
-    148672,
-    148704,
-    148736,
-    148768,
-    148800,
-    148832,
-    148864,
-    148896,
-    148928,
-    148960,
-    148992,
-    149024,
-    149056,
-    149088,
-    149120,
-    149152,
-    149184,
-    149216,
-    149248,
-    149280,
-    149312,
-    149344,
-    149376,
-    149408,
-    149440,
-    149472,
-    149504,
-    149536,
-    149568,
-    149600,
-    149632,
-    149664,
-    149696,
-    149728,
-    149760,
-    149792,
-    149824,
-    149856,
-    149888,
-    149920,
-    149952,
-    149984,
-    150016,
-    150048,
-    150080,
-    150112,
-    150144,
-    150176,
-    150208,
-    150240,
-    150272,
-    150304,
-    150336,
-    150368,
-    150400,
-    150432,
-    150464,
-    150496,
-    150528,
-    150560,
-    150592,
-    150624,
-    150656,
-    150688,
-    150720,
-    150752,
-    150784,
-    150816,
-    150848,
-    150880,
-    150912,
-    150944,
-    150976,
-    151008,
-    151040,
-    151072,
-    151104,
-    151136,
-    151168,
-    151200,
-    151232,
-    151264,
-    151296,
-    151328,
-    151360,
-    151392,
-    151424,
-    151456,
-    151488,
-    151520,
-    151552,
-    151584,
-    151616,
-    151648,
-    151680,
-    151712,
-    151744,
-    151776,
-    151808,
-    151840,
-    151872,
-    151904,
-    151936,
-    151968,
-    152000,
-    152032,
-    152064,
-    152096,
-    152128,
-    152160,
-    152192,
-    152224,
-    152256,
-    152288,
-    152320,
-    152352,
-    152384,
-    152416,
-    152448,
-    152480,
-    152512,
-    152544,
-    152576,
-    152608,
-    152640,
-    152672,
-    152704,
-    152736,
-    152768,
-    152800,
-    152832,
-    152864,
-    152896,
-    152928,
-    152960,
-    152992,
-    153024,
-    153056,
-    153088,
-    153120,
-    153152,
-    153184,
-    153216,
-    153248,
-    153280,
-    153312,
-    153344,
-    153376,
-    153408,
-    153440,
-    153472,
-    153504,
-    153536,
-    153568,
-    153600,
-    153632,
-    153664,
-    153696,
-    153728,
-    153760,
-    153792,
-    153824,
-    153856,
-    153888,
-    153920,
-    153952,
-    153984,
-    154016,
-    154048,
-    154080,
-    154112,
-    154144,
-    154176,
-    154208,
-    154240,
-    154272,
-    154304,
-    154336,
-    154368,
-    154400,
-    154432,
-    154464,
-    154496,
-    154528,
-    154560,
-    154592,
-    154624,
-    154656,
-    154688,
-    154720,
-    154752,
-    154784,
-    154816,
-    154848,
-    154880,
-    154912,
-    154944,
-    154976,
-    155008,
-    155040,
-    155072,
-    155104,
-    155136,
-    155168,
-    155200,
-    155232,
-    155264,
-    155296,
-    155328,
-    155360,
-    155392,
-    155424,
-    155456,
-    155488,
-    155520,
-    155552,
-    155584,
-    155616,
-    155648,
-    155680,
-    155712,
-    155744,
-    155776,
-    155808,
-    155840,
-    155872,
-    155904,
-    155936,
-    155968,
-    156000,
-    156032,
-    156064,
-    156096,
-    156128,
-    156160,
-    156192,
-    156224,
-    156256,
-    156288,
-    156320,
-    156352,
-    156384,
-    156416,
-    156448,
-    156480,
-    156512,
-    156544,
-    156576,
-    156608,
-    156640,
-    156672,
-    156704,
-    156736,
-    156768,
-    156800,
-    156832,
-    156864,
-    156896,
-    156928,
-    156960,
-    156992,
-    157024,
-    157056,
-    157088,
-    157120,
-    157152,
-    157184,
-    157216,
-    157248,
-    157280,
-    157312,
-    157344,
-    157376,
-    157408,
-    157440,
-    157472,
-    157504,
-    157536,
-    157568,
-    157600,
-    157632,
-    157664,
-    157696,
-    157728,
-    157760,
-    157792,
-    157824,
-    157856,
-    157888,
-    157920,
-    157952,
-    157984,
-    158016,
-    158048,
-    158080,
-    158112,
-    158144,
-    158176,
-    158208,
-    158240,
-    158272,
-    158304,
-    158336,
-    158368,
-    158400,
-    158432,
-    158464,
-    158496,
-    158528,
-    158560,
-    158592,
-    158624,
-    158656,
-    158688,
-    158720,
-    158752,
-    158784,
-    158816,
-    158848,
-    158880,
-    158912,
-    158944,
-    158976,
-    159008,
-    159040,
-    159072,
-    159104,
-    159136,
-    159168,
-    159200,
-    159232,
-    159264,
-    159296,
-    159328,
-    159360,
-    159392,
-    159424,
-    159456,
-    159488,
-    159520,
-    159552,
-    159584,
-    159616,
-    159648,
-    159680,
-    159712,
-    159744,
-    159776,
-    159808,
-    159840,
-    159872,
-    159904,
-    159936,
-    159968,
-    160000,
-    160032,
-    160064,
-    160096,
-    160128,
-    160160,
-    160192,
-    160224,
-    160256,
-    160288,
-    160320,
-    160352,
-    160384,
-    160416,
-    160448,
-    160480,
-    160512,
-    160544,
-    160576,
-    160608,
-    160640,
-    160672,
-    160704,
-    160736,
-    160768,
-    160800,
-    160832,
-    160864,
-    160896,
-    160928,
-    160960,
-    160992,
-    161024,
-    161056,
-    161088,
-    161120,
-    161152,
-    161184,
-    161216,
-    161248,
-    161280,
-    161312,
-    161344,
-    161376,
-    161408,
-    161440,
-    161472,
-    161504,
-    161536,
-    161568,
-    161600,
-    161632,
-    161664,
-    161696,
-    161728,
-    161760,
-    161792,
-    161824,
-    161856,
-    161888,
-    161920,
-    161952,
-    161984,
-    162016,
-    162048,
-    162080,
-    162112,
-    162144,
-    162176,
-    162208,
-    162240,
-    162272,
-    162304,
-    162336,
-    162368,
-    162400,
-    162432,
-    162464,
-    162496,
-    162528,
-    162560,
-    162592,
-    162624,
-    162656,
-    162688,
-    162720,
-    162752,
-    162784,
-    162816,
-    162848,
-    162880,
-    162912,
-    162944,
-    162976,
-    163008,
-    163040,
-    163072,
-    163104,
-    163136,
-    163168,
-    163200,
-    163232,
-    163264,
-    163296,
-    163328,
-    163360,
-    163392,
-    163424,
-    163456,
-    163488,
-    163520,
-    163552,
-    163584,
-    163616,
-    163648,
-    163680,
-    163712,
-    163744,
-    163776,
-    163808,
-    163840,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtelemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtelemipiraw_Sensor.c
deleted file mode 100755
index 69d9f9f1..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtelemipiraw_Sensor.c
+++ /dev/null
@@ -1,3776 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 kkthtelemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "kkthtelemipiraw_Sensor.h"
-
-#define KKTHTELE_EEPROM_READ_ID	0xA1
-#define KKTHTELE_EEPROM_WRITE_ID   0xA0
-#define KKTHTELE_MAX_OFFSET		0x4000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "kkthtele_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x4000
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x468
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x600
-#define AF_CODE_SIZE 6
-#define GET_SENSOR_ID_RETRY_CNT    5
-
-static bool module_flag = FALSE;
-static bool bNeedSetNormalMode = FALSE;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-#define MAX_BURST_LEN  2048
-static u8 * msg_buf = NULL;
-
-static int seamless_sof = 0;
-
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int kkthtele_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void kkthtele_set_shutter_convert(struct subdrv_ctx *ctx, u32 shutter);
-static int kkthtele_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int get_sensor_temperature(void *arg);
-static void get_sensor_cali(void* arg);
-static void set_sensor_cali(void *arg);
-static int kkthtele_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_set_gain_convert(struct subdrv_ctx *ctx, u32 gain);
-static int kkthtele_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_set_multi_shutter_frame_length_in_lut(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void kkthtele_set_multi_shutter_frame_length_in_lut_convert(struct subdrv_ctx *ctx,
-	u64 *shutters, u16 exp_cnt, u32 frame_length, u32 *frame_length_in_lut);
-static void kkthtele_write_frame_length_in_lut(struct subdrv_ctx *ctx, u32 fll, u32 *fll_in_lut);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int kkthtele_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthtele_i2c_burst_wr_regs_u16(struct subdrv_ctx *ctx, u16 * list, u32 len);
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx,
-		u16 addr, u16 *list, u32 len);
-static void kkthtele_lens_pos_writeback(struct subdrv_ctx *ctx);
-static int kkthtele_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void kkthtele_set_max_framerate_in_lut_by_scenario(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id, u32 framerate);
-/* STRUCT */
-
-static kal_uint16 g_af_code_macro    = 0;
-static kal_uint16 g_af_code_infinity = 0;
-
-// C1
-#define C1TELE_STEREO_MT_START_ADDR  (0x22C0)
-#define C1TELE_STEREO_MT105_START_ADDR  (0x2640)
-static struct eeprom_map_info kkthtele_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0, 0, 0, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0, 0, 0, 0, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, C1TELE_STEREO_MT_START_ADDR, 0, 0, CALI_DATA_SLAVE_TELE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, C1TELE_STEREO_MT105_START_ADDR, 0, 0, CALI_DATA_SLAVE_TELE_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, kkthtele_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, kkthtele_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, kkthtele_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, kkthtele_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, kkthtele_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, kkthtele_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, kkthtele_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, kkthtele_streaming_resume},
-	{SENSOR_FEATURE_SET_ESHUTTER, kkthtele_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, kkthtele_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_GAIN, kkthtele_set_gain},
-	{SENSOR_FEATURE_SET_HDR_SHUTTER, kkthtele_set_hdr_tri_shutter2},
-	{SENSOR_FEATURE_SET_HDR_TRI_SHUTTER, kkthtele_set_hdr_tri_shutter3},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, kkthtele_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, kkthtele_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_SET_AWB_GAIN, kkthtele_set_awb_gain},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME_IN_LUT, kkthtele_set_multi_shutter_frame_length_in_lut},
-	{SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO, kkthtele_set_max_framerate_by_scenario},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-    {
-        .header_id = 0x01AE010D,
-        .addr_header_id = 0x00000006,
-        .i2c_write_id = 0xA0,
-    },
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_H_MIRROR,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 384}, {0, 0},
-		/*     */
-		{0, 0}, {0, 384}, {0, 0}, {0, 0}, {0, 0},
-		/*  */
-		{0, 0}, {416, 312},
-	},
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_H_MIRROR,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 384}, {2048, 1536}, {0, 0}, {3280, 2460}, {3168, 3276},
-		/*      */
-		{0, 0}, {0, 384}, {0, 384}, {0, 0}, {2048, 1920}, {2048, 1536},
-	},
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 8,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info = {
-	.gain_ratio = 1000,
-	.OB_pedestal = 64,
-	.saturation_level = 1023,
-};
-
-/*static struct mtk_sensor_saturation_info imgsensor_saturation_info_12bit = {
-	.gain_ratio = 4000,
-	.OB_pedestal = 256,
-	.saturation_level = 4095,
-};*/
-
-static u32 kkthtele_dcg_ratio_table_10bit[] = {4000};
-//static u32 kkthtele_dcg_ratio_table_12bit[] = {4000};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,//MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,//0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,//MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,//0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 4096*3072 izoom QBC mode 6*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 8192x6144 Fullsize bayer mode mode 7*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-/* 8192x6144 Fullsize QBC mode 8*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-/* 1856x1392 24fps subsample*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 4096x2304@30fps portrait mode LBMF */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 4096x3072 60fps binning*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST, // MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,//0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/*4sum2bin_240FPS_2048x1152*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_4096x2304_30fps_3056Msps izoom */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_Bypass_4096x3072_30fps_3056Msps izoom bayer*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{ /*03_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_30fps_3056Msps*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = kkthtele_preview_setting, // kkthtele_preview_setting
-		.mode_setting_len = ARRAY_SIZE(kkthtele_preview_setting), // kkthtele_preview_setting
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 78,
-			.need_bw_change = 1,
-		},
-	},
-	{  /*03_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_30fps_3056Msps*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = kkthtele_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 78,
-			.need_bw_change = 1,
-		},
-	},
-	{  /*05_Ocean_KekeTuoHai_09_JN5_Fdsum_4096x2304_30fps_3056Msps*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = kkthtele_normal_video_setting, // kkthtele_normal_video_setting
-		.mode_setting_len = ARRAY_SIZE(kkthtele_normal_video_setting), // kkthtele_normal_video_setting
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_vid,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_vid),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608 ,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 78,
-			.need_bw_change = 1,
-		},
-	},
-	{ /* 08_Ocean_KekeTuoHai_09_JN5_Fdsum_4K_4096x2304_60fps_3056Msps */
-		.frame_desc = frame_desc_hs_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_hs_vid),
-		.mode_setting_table = kkthtele_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 73,
-			.need_bw_change = 1,
-		},
-	},
-	{ /*08_Ocean_KekeTuoHai_09_JN5_Fdsum_4K_4096x2304_60fps_3056Msps*/
-		.frame_desc = frame_desc_slim_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_slim_vid),
-		.mode_setting_table = kkthtele_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 73,
-			.need_bw_change = 1,
-		},
-	},
-	{ /* 04_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_60fps_3056Msps */
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = kkthtele_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom1_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_custom1,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_custom1),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204 * 2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFF,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFF,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 3,
-		.csi_param = {
-			.dphy_trail = 79,
-			.need_bw_change = 1,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 80,
-	},
-	{  /* 15_Ocean_KekeTuoHai_03_JN5_Full_RMSC_BYPS_4096x3072_30fps_3056Msps */
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = kkthtele_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1536,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 78,
-			.need_bw_change = 1,
-		},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{  /* 01_Ocean_KekeTuoHai_01_WD4_JN5_Full__8192x6144_15.1fps_3056Msps*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = kkthtele_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9600,
-		.framelength = 6346,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 79,
-			.need_bw_change = 1,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{ /* 02_Ocean_KekeTuoHai_01_WD4_JN5_Full_BYPS_8192x6144_15.1fps_3056Msps */
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = kkthtele_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_custom4,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_custom4),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9600,
-		.framelength = 6346,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 79,
-			.need_bw_change = 1,
-		},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{ /*03_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_30fps_3056Msps*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = kkthtele_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom5_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_custom5,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_custom5),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 78,
-			.need_bw_change = 1,
-		},
-	},
-	{ /* 04_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_60fps_3056Msps */
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = kkthtele_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom6_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_custom6,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_custom6),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204 * 2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFF,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFF,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 3,
-		.csi_param = {
-			.dphy_trail = 79,
-			.need_bw_change = 1,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 80,
-	},
-	{  /* 07_Ocean_KekeTuoHai_10_0_JN5_Fdsum_DSG_split_4096x2304_30fps_3056Msps*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = kkthtele_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom7_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_custom7,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_custom7),
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 9568,
-		.framelength = 3204,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.saturation_info = &imgsensor_saturation_info,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_LCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = kkthtele_dcg_ratio_table_10bit,
-			.dcg_gain_table_size = sizeof(kkthtele_dcg_ratio_table_10bit),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 20,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 78,
-			.need_bw_change = 1,
-		},
-	},
-	{ /* 04_Ocean_KekeTuoHai_05_JN5_Fdsum_4096x3072_60fps_3056Msps*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = kkthtele_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 78,
-			.need_bw_change = 1,
-		},
-	},
-	{ /*12_Ocean_KekeTuoHai_13_0_JN5_A2A2_noAF_2048x1152_240.4fps_1992Msp*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = kkthtele_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 3072, // 2944,
-		.framelength = 1246, //1302,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 796800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 88,
-			.need_bw_change = 1,
-		},
-	},
-	{ /* 03_WD4_Ocean_KekeTuoHai_JN5_Full_12.5Mp_4096x2304_30fps_3056Msps */
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = kkthtele_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom10_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_custom10,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_custom10),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1920,
-			.w0_size = 4096,
-			.h0_size = 2304,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 80,
-			.need_bw_change = 1,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{  /* 15_Ocean_KekeTuoHai_03_JN5_Full_4096x3072_30fps_3056Msps*/
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = kkthtele_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthtele_custom11_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthtele_seamless_custom11,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthtele_seamless_custom11),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1536,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0,
-			.need_bw_change = 1,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KKTHTELE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0000, 0x0001},
-	.i2c_addr_table = {0x5a, 0xff},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_16,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_H_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2, // MIPI_OPHY_NCSI2
-	.mipi_lane_num = SENSOR_MIPI_4_LANE, // SENSOR_MIPI_4_LANE
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_R,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 160,
-	.ana_gain_type = 2, //0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC
-	.ana_gain_step = 2,
-	.ana_gain_table = kkthtele_ana_gain_table,
-	.ana_gain_table_size = sizeof(kkthtele_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max = 0xffff * 256,
-	.exposure_step = 1,
-	.exposure_margin = 24, /*tentative*/
-	.frame_length_max = 0xffff,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 1616100,
-	.line_interleave_num = 1,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_DCG|HDR_SUPPORT_LBMF,
-	.saturation_info = &imgsensor_saturation_info,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure ={
-			{0x0202, 0x0203}, //Short exposure
-			{0x0202, 0x0203},
-			{0x0226, 0x0227}, //Long exposure
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x0704,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, //Short Gain
-			{0x0204, 0x0205},
-			{0x0206, 0x0207}, //Long Gain
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E14, 0x0E15},  /* LUT_A_FRM_LENGTH_LINES */
-			{0x0E20, 0x0E21},  /* LUT_B_FRM_LENGTH_LINES */
-	},
-	.reg_addr_temp_en = PARAM_UNDEFINED,
-	.reg_addr_temp_read = 0x0020,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_exposure_in_lut = {
-			{0x0E10, 0x0E11}, //LUT_A_COARSE_INTEG_TIME
-			{0x0E1C, 0x0E1D}, //LUT_B_COARSE_INTEG_TIME
-	},
-
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E12, 0x0E13}, //LUT_A_ANA_GAIN_GLOBAL
-			{0x0E1E, 0x0E1F}, //LUT_B_ANA_GAIN_GLOBAL
-	},
-	// .init_setting_table = kkthtele_sensor_init_setting,
-	// .init_setting_len =  ARRAY_SIZE(kkthtele_sensor_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0x350174bc,
-
-	.oplus_notify_chg_flag = true,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-/*
-	{HW_ID_MCLK, {24}, 2000},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_AVDD, {2204000, 2204000}, 1000},
-	{HW_ID_DVDD, {1000000, 1000000}, 0},
-	{HW_ID_AFVDD, {2804000, 2804000}, 0},
-	{HW_ID_RST, {1}, 2000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 10000},
-*/
-	{HW_ID_MCLK, {24}, 2000},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_AVDD, {2204000, 2204000}, 1000},
-	{HW_ID_DVDD, {1008000, 1008000}, 0},
-	{HW_ID_AFVDD, {3300000, 3300000}, 0},
-	{HW_ID_RST, {1}, 2000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 10000},
-};
-
-const struct subdrv_entry kkthtele_mipi_raw_entry = {
-	.name = "kkthtele_mipi_raw",
-	.id = KKTHTELE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature >= 0x0 && temperature <= 0x78)
-		temperature_convert = temperature;
-	else
-		temperature_convert = -1;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void kkthtele_set_dummy(struct subdrv_ctx *ctx)
-{
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF)
-		kkthtele_write_frame_length_in_lut(ctx, ctx->frame_length, ctx->frame_length_in_lut);
-	else
-		write_frame_length(ctx, ctx->frame_length);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-
-	commit_i2c_buffer(ctx);
-}
-
-static void kkthtele_set_max_framerate(struct subdrv_ctx *ctx, UINT16 framerate,
-			kal_bool min_framelength_en)
-{
-
-	kal_uint32 frame_length = ctx->frame_length;
-
-	DRV_LOG(ctx, "framerate = %d, min framelength should enable %d\n",
-		framerate, min_framelength_en);
-
-	frame_length = ctx->pclk / framerate * 10 / ctx->line_length;
-
-	if (frame_length >= ctx->min_frame_length)
-		ctx->frame_length = frame_length;
-	else
-		ctx->frame_length = ctx->min_frame_length;
-
-	ctx->dummy_line =
-		ctx->frame_length - ctx->min_frame_length;
-
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-
-		ctx->dummy_line =
-			ctx->frame_length - ctx->min_frame_length;
-	}
-	if (min_framelength_en)
-		ctx->min_frame_length = ctx->frame_length;
-
-	kkthtele_set_dummy(ctx);
-}
-
-static void kkthtele_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u32 *shutter, u32 frame_length, bool auto_extend_en)
-{
-	kal_uint16 realtime_fps = 0;
-	kal_int32 dummy_line = 0;
-	u32 l_shutter = 0;
-	u16 l_shift = 0;
-	u32 fll = 0;
-
-	ctx->exposure[0] = *shutter;
-
-	/* Change frame time */
-	if (frame_length > 1)
-		dummy_line = frame_length - ctx->frame_length;
-
-	ctx->frame_length = ctx->frame_length + dummy_line;
-
-	if (ctx->exposure[0] > ctx->frame_length - ctx->s_ctx.exposure_margin)
-		ctx->frame_length = ctx->exposure[0] + ctx->s_ctx.exposure_margin;
-
-	if (ctx->frame_length > ctx->max_frame_length)
-		ctx->frame_length = ctx->max_frame_length;
-
-	ctx->exposure[0] = (ctx->exposure[0] < ctx->s_ctx.exposure_min)
-			? ctx->s_ctx.exposure_min : ctx->exposure[0];
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps > 592 && realtime_fps <= 607) {
-			kkthtele_set_max_framerate(ctx, 592, 0);
-		} else if (realtime_fps > 296 && realtime_fps <= 305) {
-			kkthtele_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps > 246 && realtime_fps <= 253) {
-			kkthtele_set_max_framerate(ctx, 246, 0);
-		} else if (realtime_fps > 236 && realtime_fps <= 243) {
-			kkthtele_set_max_framerate(ctx, 236, 0);
-		} else if (realtime_fps > 146 && realtime_fps <= 153) {
-			kkthtele_set_max_framerate(ctx, 146, 0);
-		} else {
-			/* Extend frame length */
-			subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		}
-	} else {
-		/* Extend frame length */
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-	}
-
-	if (ctx->exposure[0] >= 0xFFF0) {  // need to modify line_length & PCLK
-		bNeedSetNormalMode = TRUE;
-
-		if (ctx->exposure[0] > ctx->s_ctx.exposure_max) {
-			DRV_LOG(ctx, "shutter(%d) > exposure_max(%d), set shutter = exposure_max\n",
-				ctx->exposure[0], ctx->s_ctx.exposure_max);
-			ctx->exposure[0] = ctx->s_ctx.exposure_max;
-		}
-
-		for (l_shift = 1; l_shift <= 10; l_shift++) {
-			l_shutter = ((ctx->exposure[0] - 1) >> l_shift) + 1;
-			if (l_shutter
-				< (ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin))
-				break;
-		}
-
-		fll = l_shutter + 0x0002;  // 1st framelength
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, fll & 0xFFFF);  // Framelength
-		subdrv_i2c_wr_u16(ctx, 0x0202, l_shutter & 0xFFFF);  //shutter
-		subdrv_i2c_wr_u16(ctx, 0x0702, l_shift << 8);
-		subdrv_i2c_wr_u16(ctx, 0x0704, l_shift << 8);
-		DRV_LOG(ctx, "set long time exposure shutter(%d), frame_length(%d) l_shutter(%d) l_shift(%d)\n",
-			ctx->exposure[0], fll, l_shutter, l_shift);
-	} else {
-		if (bNeedSetNormalMode) {
-			DRV_LOG(ctx, "exit long shutter\n");
-			subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-			subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-			bNeedSetNormalMode = FALSE;
-		}
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		subdrv_i2c_wr_u16(ctx, 0x0202, ctx->exposure[0]);
-	}
-
-	DRV_LOG(ctx, "Exit! shutter =%d, framelength =%d/%d, dummy_line=%d, auto_extend=%d\n",
-		ctx->exposure[0], ctx->frame_length, frame_length, dummy_line, subdrv_i2c_rd_u16(ctx, 0x0350));
-}	/* set_shutter_frame_length */
-
-static int kkthtele_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "shutter:%u, frame_length:%u\n", (u32)(*para), (u32) (*(para + 1)));
-	kkthtele_lens_pos_writeback(ctx);
-	kkthtele_set_shutter_frame_length_convert(ctx, (u32 *)para, (u32) (*(para + 1)), (u16) (*(para + 2)));
-	return 0;
-}
-
-static void kkthtele_write_shutter(struct subdrv_ctx *ctx)
-{
-	kal_uint16 realtime_fps = 0;
-
-	u32 l_shutter = 0;
-	u16 l_shift = 0;
-	u32 fll = 0;
-
-	DRV_LOG(ctx, "===brad shutter:%d\n", ctx->exposure[0]);
-
-	if (ctx->exposure[0] > ctx->min_frame_length - ctx->s_ctx.exposure_margin) {
-		ctx->frame_length = ctx->exposure[0] + ctx->s_ctx.exposure_margin;
-	} else {
-		ctx->frame_length = ctx->min_frame_length;
-	}
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-	}
-
-	if (ctx->exposure[0] < ctx->s_ctx.exposure_min) {
-		ctx->exposure[0] = ctx->s_ctx.exposure_min;
-	}
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps > 592 && realtime_fps <= 607) {
-			kkthtele_set_max_framerate(ctx, 592, 0);
-		} else if (realtime_fps > 296 && realtime_fps <= 305) {
-			kkthtele_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps > 246 && realtime_fps <= 253) {
-			kkthtele_set_max_framerate(ctx, 246, 0);
-		} else if (realtime_fps > 236 && realtime_fps <= 243) {
-			kkthtele_set_max_framerate(ctx, 236, 0);
-		} else if (realtime_fps > 146 && realtime_fps <= 153) {
-			kkthtele_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-	}
-
-	if (ctx->exposure[0] >= 0xFFF0) {  // need to modify line_length & PCLK
-		bNeedSetNormalMode = TRUE;
-
-		if (ctx->exposure[0] >= ctx->s_ctx.exposure_max) {
-			DRV_LOG(ctx, "shutter(%d) > exposure_max(%d), set shutter = exposure_max\n",
-				ctx->exposure[0], ctx->s_ctx.exposure_max);
-			ctx->exposure[0] = ctx->s_ctx.exposure_max;
-		}
-
-		for (l_shift = 1; l_shift <= 10; l_shift++) {
-			l_shutter = ((ctx->exposure[0] - 1) >> l_shift) + 1;
-			if (l_shutter
-				< (ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin))
-				break;
-		}
-
-		fll = l_shutter + 0x0002;  // 1st framelength
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, fll & 0xFFFF);  // Framelength
-		subdrv_i2c_wr_u16(ctx, 0x0202, l_shutter & 0xFFFF);  //shutter
-		subdrv_i2c_wr_u16(ctx, 0x0702, l_shift << 8);
-		subdrv_i2c_wr_u16(ctx, 0x0704, l_shift << 8);
-		DRV_LOG(ctx, "set long time exposure shutter(%d), frame_length(%d) l_shutter(%d) l_shift(%d)\n",
-			ctx->exposure[0], fll, l_shutter, l_shift);
-	} else {
-		if (bNeedSetNormalMode) {
-			DRV_LOG(ctx, "exit long shutter\n");
-			subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-			subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-			bNeedSetNormalMode = FALSE;
-		}
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		subdrv_i2c_wr_u16(ctx, 0x0202, ctx->exposure[0]);
-	}
-	DRV_LOG(ctx, "shutter =%d, framelength =%d\n", ctx->exposure[0], ctx->frame_length);
-}	/*	write_shutter  */
-
-static void kkthtele_set_shutter_convert(struct subdrv_ctx *ctx, u32 shutter)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", shutter);
-	ctx->exposure[0] = shutter;
-
-	kkthtele_write_shutter(ctx);
-}
-
-static int kkthtele_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32* feature_data = (u32*)para;
-	u32 shutter = *feature_data;
-
-	DRV_LOG(ctx, "set_shutter shutter =0x%x\n", shutter);
-	kkthtele_set_shutter_convert(ctx, shutter);
-	return 0;
-}
-
-
-static int get_sof_timeout(struct adaptor_ctx *ctx, const struct sensor_mode *mode)
-{
-	int timeout = 0;
-	u64 tmp = 0;
-
-	if (ctx->shutter_for_timeout > 0) {
-		tmp = mode->linetime_in_ns * ctx->shutter_for_timeout;
-		timeout = tmp / 1000;
-	}
-	if (ctx->framelength_for_timeout > 0) {
-		tmp = mode->linetime_in_ns * ctx->framelength_for_timeout / 1000;
-		timeout = (timeout < tmp) ? tmp : timeout;
-	}
-	if (ctx->subctx.current_fps > 0) {
-		tmp = 10000000 / ctx->subctx.current_fps;
-		timeout = (timeout < tmp) ? tmp : timeout;
-	}
-	if (timeout < 0)
-		timeout = 0;
-
-	DRV_LOG(ctx,
-		"X! sof timeout value in us %llu|%llu|%llu|%d|%d\n",
-		ctx->shutter_for_timeout,
-		ctx->framelength_for_timeout,
-		mode->linetime_in_ns,
-		timeout,
-		ctx->subctx.current_fps > 0 ? 10000000 / ctx->subctx.current_fps : 0);
-
-	return timeout;
-}
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	u64 stream_ctrl_delay_timing = 0;
-	u64 stream_ctrl_delay = 0;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	DRV_LOG(ctx, "E! enable:%u\n", enable);
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (ctx->ixc_client.protocol)
-		sd = adaptor_ixc_get_clientdata(&ctx->ixc_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx) {
-		DRV_LOGE(ctx, "null _adaptor_ctx\n");
-		return;
-	}
-
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.aov_sensor_support && ctx->s_ctx.streaming_ctrl_imp) {
-		if (ctx->s_ctx.s_streaming_control != NULL)
-			ctx->s_ctx.s_streaming_control((void *) ctx, enable);
-		else
-			DRV_LOG_MUST(ctx,
-				"please implement drive own streaming control!(sid:%u)\n",
-				ctx->current_scenario_id);
-		ctx->is_streaming = enable;
-		DRV_LOG_MUST(ctx, "enable:%u\n", enable);
-		return;
-	}
-	if (ctx->s_ctx.aov_sensor_support && ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG_MUST(ctx,
-			"stream ctrl implement on scp side!(sid:%u)\n",
-			ctx->current_scenario_id);
-		ctx->is_streaming = enable;
-		DRV_LOG_MUST(ctx, "enable:%u\n", enable);
-		return;
-	}
-
-	if (enable) {
-		/* MCSS low power mode update para */
-		if (ctx->s_ctx.mcss_update_subdrv_para != NULL)
-			ctx->s_ctx.mcss_update_subdrv_para((void *) ctx, ctx->current_scenario_id);
-		/* MCSS register init */
-		if (ctx->s_ctx.mcss_init != NULL)
-			ctx->s_ctx.mcss_init((void *) ctx);
-
-		if (ctx->s_ctx.chk_s_off_sta) {
-			DRV_LOG(ctx, "check_stream_off before stream on");
-			check_stream_off(ctx);
-		}
-		kkthtele_set_dummy(ctx);
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-		ctx->stream_ctrl_start_time = ktime_get_boottime_ns();
-		ctx->stream_ctrl_start_time_mono = ktime_get_ns();
-	} else {
-		ctx->stream_ctrl_end_time = ktime_get_boottime_ns();
-		if (ctx->s_ctx.custom_stream_ctrl_delay &&
-			ctx->stream_ctrl_start_time && ctx->stream_ctrl_end_time) {
-			stream_ctrl_delay_timing =
-				(ctx->stream_ctrl_end_time - ctx->stream_ctrl_start_time) / 1000000;
-			stream_ctrl_delay = (u64)get_sof_timeout(_adaptor_ctx, _adaptor_ctx->cur_mode) / 1000;
-			DRV_LOG_MUST(ctx,
-				"stream_ctrl_delay(sof)/stream_ctrl_delay_timing(end-start):%llums/%llums\n",
-				stream_ctrl_delay,
-				stream_ctrl_delay_timing);
-			if (stream_ctrl_delay_timing < stream_ctrl_delay)
-				mdelay(stream_ctrl_delay - stream_ctrl_delay_timing);
-		}
-		check_stream_on(ctx);
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-		if (ctx->s_ctx.reg_addr_fast_mode && ctx->fast_mode_on) {
-			ctx->fast_mode_on = FALSE;
-			ctx->ref_sof_cnt = 0;
-			DRV_LOG(ctx, "seamless_switch disabled.");
-			set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-			commit_i2c_buffer(ctx);
-		}
-		memset(ctx->exposure, 0, sizeof(ctx->exposure));
-		memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-		ctx->autoflicker_en = FALSE;
-		ctx->extend_frame_length_en = 0;
-		ctx->is_seamless = 0;
-		if (ctx->s_ctx.chk_s_off_end)
-			check_stream_off(ctx);
-		ctx->stream_ctrl_start_time = 0;
-		ctx->stream_ctrl_end_time = 0;
-		ctx->stream_ctrl_start_time_mono = 0;
-
-		ctx->mcss_init_info.enable_mcss = 0;
-		if (ctx->s_ctx.mcss_init != NULL)
-			ctx->s_ctx.mcss_init((void *) ctx); // disable MCSS
-	}
-	ctx->sof_no = 0;
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int kkthtele_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-	if (*(u32 *)para)
-	kkthtele_set_shutter_convert(ctx, *(u32 *)para);
-	streaming_ctrl(ctx, true);
-	return 0;
-}
-
-static int kkthtele_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "streaming control para:%d\n", *para);
-	streaming_ctrl(ctx, false);
-	return 0;
-}
-
-static unsigned int read_kkthtele_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != kkthtele_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != kkthtele_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = kkthtele_eeprom_info[meta_id].start;
-	readsize = kkthtele_eeprom_info[meta_id].size;
-
-	if (!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct oplus_eeprom_info_struct* infoPtr;
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-	DRV_LOGE(ctx, "moduleInfo: %s\n", oplus_eeprom_info.moduleInfo);
-	DRV_LOGE(ctx, "qrcodeInfo: %s\n", oplus_eeprom_info.qrcodeInfo);
-	DRV_LOGE(ctx, "#org#infoPtr->afInfo[0]~[5]: [%d, %d, %d, %d, %d,  %d]\n",
-        infoPtr->afInfo[0],
-        infoPtr->afInfo[1],
-        infoPtr->afInfo[2],
-        infoPtr->afInfo[3],
-        infoPtr->afInfo[4],
-        infoPtr->afInfo[5]);
-	infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 6) | (infoPtr->afInfo[0] >> 2));
-	infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 2);
-	infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 6) | (infoPtr->afInfo[2] >> 2));
-	infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 2);
-	infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 6) | (infoPtr->afInfo[4] >> 2));
-	infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 2);
-	DRV_LOGE(ctx, "#adjust#infoPtr->afInfo[0]~[5]: [%d, %d, %d, %d, %d,  %d]\n",
-        infoPtr->afInfo[0],
-        infoPtr->afInfo[1],
-        infoPtr->afInfo[2],
-        infoPtr->afInfo[3],
-        infoPtr->afInfo[4],
-        infoPtr->afInfo[5]);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-    kal_uint16 get_byte = 0;
-
-    adaptor_i2c_rd_u8(ctx->i2c_client, KKTHTELE_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-    return get_byte;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, KKTHTELE_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xA000;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KKTHTELE_EEPROM_WRITE_ID >> 1, reg, 0x0E);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KKTHTELE_EEPROM_WRITE_ID >> 1, reg, 0x00);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    kal_uint32 checksum = 0;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        for(i = 0; i < pStereodata->dataLength; i++) {
-            checksum += pData[i];
-        }
-        pData[data_length] = 0x01;
-        pData[data_length + 1] = checksum % 255;
-        data_length = data_length + 2;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == KKTHTELE_SENSOR_ID) && (data_length - 2 == CALI_DATA_SLAVE_TELE_LENGTH)
-            && ((data_base == KKTHTELE_STEREO_START_ADDR) || (data_base == KKTHTELE_STEREO_105CM_START_ADDR))) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[892]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+892));
-            LOG_INF("write_Module_data Write end\n");
-        } else if ((pStereodata->uSensorId == KKTHTELE_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == KKTHTELE_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, KKTHTELE_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, KKTHTELE_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, KKTHTELE_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, KKTHTELE_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, KKTHTELE_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, KKTHTELE_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, KKTHTELE_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, KKTHTELE_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("kkthtele write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int kkthtele_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        *len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-    return 0;
-}
-
-static int kkthtele_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-
-	if(*len > CALI_DATA_SLAVE_TELE_LENGTH) {
-		*len = CALI_DATA_SLAVE_TELE_LENGTH;
-	}
-	LOG_INF("feature_data mode:%d  lens:%d", *feature_data_16, *len);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_kkthtele_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_kkthtele_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	default:
-		break;
-	}
-
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KKTHTELE_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static int kkthtele_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "+\n");
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-	DRV_LOGE(ctx, "-\n");
-
-	return 0;
-}
-
-static int kkthtele_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D82, awb_gain->ABS_GAIN_R * 2); //red 1024(1x)
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D86, awb_gain->ABS_GAIN_B * 2); //blue
-
-	LOG_INF("[test] ABS_GAIN_GR(%d) ABS_GAIN_R(%d) ABS_GAIN_B(%d) ABS_GAIN_GB(%d)", awb_gain->ABS_GAIN_GR, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B, awb_gain->ABS_GAIN_GB);
-	LOG_INF("[test] 0x0D82(red) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D82));
-	LOG_INF("[test] 0x0D84(green) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D84));
-	LOG_INF("[test] 0x0D86(blue) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D86));
-	return 0;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "jn1 read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "jn1 read_otp_info end\n");
-}
-
-static int kkthtele_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (TRUE) { //(otp_data_checksum[0] == 0) { // FIXME
-		read_otp_info(ctx);
-	} else {
-		DRV_LOGE(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int kkthtele_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = GET_SENSOR_ID_RETRY_CNT;
-	static bool first_read = TRUE;
-	u32 eeprom_time_year = 0, eeprom_time_m_d = 0;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	DRV_LOGE(ctx, "+\n");
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOGE(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x38E5) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-
-					u8 af_code[AF_CODE_SIZE] = {0};
-					read_kkthtele_eeprom_info(ctx, EEPROM_META_AF_CODE, (BYTE *)af_code, AF_CODE_SIZE);
-					g_af_code_macro = af_code[0] | ((u16)af_code[1] << 8);
-					g_af_code_infinity = af_code[2] | ((u16)af_code[3] << 8);
-					// FIXME:C1
-					g_af_code_macro =    ((((kal_uint16)oplus_eeprom_info.afInfo[1] << 8) & 0xFF00) | ((kal_uint16)oplus_eeprom_info.afInfo[0] & 0x00FF)) >> 2;
-					g_af_code_infinity = ((((kal_uint16)oplus_eeprom_info.afInfo[3] << 8) & 0xFF00) | (kal_uint16)(oplus_eeprom_info.afInfo[2] & 0x00FF)) >> 2;
-
-					first_read = FALSE;
-
-					msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-					if(!msg_buf) {
-						LOG_INF("boot stage, malloc msg_buf error");
-					}
-				}
-				eeprom_time_year = (read_cmos_eeprom_8(ctx, 0x0004) << 8) | read_cmos_eeprom_8(ctx, 0x0005);
-				eeprom_time_m_d = (read_cmos_eeprom_8(ctx, 0x0003) << 8) | read_cmos_eeprom_8(ctx, 0x0002);
-				// sensor with eeprom data since 2024/01/27
-				module_flag = (eeprom_time_year > 0x1814) || ((eeprom_time_year == 0x1814) && (eeprom_time_m_d >= 0x11B));
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOGE(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = GET_SENSOR_ID_RETRY_CNT;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-	u32 module_info = 0;
-	u64 time_boot_begin = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-	mdelay(10);
-	DRV_LOG_MUST(ctx, "open delay 10ms");
-	subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-	module_info = subdrv_i2c_rd_u16(ctx, 0x0010);
-	DRV_LOG(ctx, "write init setting +");
-	if ((ctx->power_on_profile_en != NULL) && (*ctx->power_on_profile_en))
-		time_boot_begin = ktime_get_boottime_ns();
-
-
-	if ((module_info & 0xFF00) == 0x0300){
-		subdrv_i2c_wr_regs_u16(ctx, kkthtele_sensor_init_pre_setting_short, ARRAY_SIZE(kkthtele_sensor_init_pre_setting_short));
-		mdelay(5);
-		kkthtele_i2c_burst_wr_regs_u16(ctx, kkthtele_sensor_init_setting_short, ARRAY_SIZE(kkthtele_sensor_init_setting_short));
-		DRV_LOG(ctx, "write init setting (short)-");
-		ctx->s_ctx.init_setting_len = ARRAY_SIZE(kkthtele_sensor_init_pre_setting_short) + ARRAY_SIZE(kkthtele_sensor_init_setting_short);
-	} else {
-		subdrv_i2c_wr_regs_u16(ctx, kkthtele_sensor_init_pre_setting, ARRAY_SIZE(kkthtele_sensor_init_pre_setting));
-		mdelay(5);
-		kkthtele_i2c_burst_wr_regs_u16(ctx, kkthtele_sensor_init_setting, ARRAY_SIZE(kkthtele_sensor_init_setting));
-		ctx->s_ctx.init_setting_len = ARRAY_SIZE(kkthtele_sensor_init_pre_setting) + ARRAY_SIZE(kkthtele_sensor_init_setting);
-		DRV_LOG(ctx, "write init setting (long)-");
-	}
-
-
-	if ((ctx->power_on_profile_en != NULL) && (*ctx->power_on_profile_en)) {
-		ctx->sensor_pw_on_profile.i2c_init_period = ktime_get_boottime_ns() - time_boot_begin - 5000;
-
-		ctx->sensor_pw_on_profile.i2c_init_table_len =
-			ARRAY_SIZE(kkthtele_sensor_init_pre_setting) + ARRAY_SIZE(kkthtele_sensor_init_setting);
-	}
-	DRV_LOG_MUST(ctx, "X: size:%u, time(us):%lld\n", ctx->sensor_pw_on_profile.i2c_init_table_len,
-		ctx->sensor_pw_on_profile.i2c_init_period);
-
-	if (ctx->s_ctx.temperature_support && ctx->s_ctx.reg_addr_temp_en)
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_temp_en, 0x01);
-	/* enable mirror or flip */
-	set_mirror_flip(ctx, ctx->mirror);
-
-	/* HW GGC*/
-	set_sensor_cali(ctx);
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	if ((ctx->sof_cnt != 0) && (ctx->sof_cnt < (seamless_sof + 1))) {
-		DRV_LOG(ctx, "ctx->sof_cnt %d seamless_sof %d\n", ctx->sof_cnt, seamless_sof);
-		return;
-	} else {
-		seamless_sof = 0;
-	}
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return gain * 32 / BASEGAIN;
-}
-
-static int kkthtele_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		(ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF ||
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF))
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x4);
-
-	update_mode_info(ctx, scenario_id);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			kkthtele_set_multi_shutter_frame_length_in_lut_convert(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			kkthtele_set_shutter_convert(ctx, (u32)ae_ctrl->exposure.me_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				kkthtele_set_gain_convert(ctx, ae_ctrl->gain.me_gain);
-			break;
-		default:
-			kkthtele_set_shutter_convert(ctx, (u32)ae_ctrl->exposure.le_exposure);
-			kkthtele_set_gain_convert(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	// ctx->fast_mode_on = TRUE;
-	seamless_sof = ctx->sof_cnt;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int kkthtele_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	if (mode) {
-		if (mode == 5) {
-			subdrv_i2c_wr_u16(ctx, 0x0600, 0x0001); /*black*/
-		} else {
-			subdrv_i2c_wr_u16(ctx, 0x0600, mode); /*100% Color bar*/
-		}
-	}
-	else if (ctx->test_pattern)
-		subdrv_i2c_wr_u16(ctx, 0x0600, 0x0000); /*No pattern*/
-
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-void get_sensor_cali(void* arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	// struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	//struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	return;
-}
-
-static int kkthtele_set_gain_convert(struct subdrv_ctx *ctx, u32 gain) {
-	u16 rg_gain;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain, ctx->s_ctx.ana_gain_min);
-	gain = min(gain, ctx->s_ctx.ana_gain_max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-
-	return ERROR_NONE;
-}
-
-int kkthtele_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-
-	kkthtele_set_gain_convert(ctx, gain);
-
-	return 0;
-}
-
-static void kkthtele_set_multi_shutter_frame_length(struct subdrv_ctx *ctx,
-		u64 *shutters, u16 exp_cnt,	u16 frame_length)
-{
-	int i = 0;
-	u32 fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[3] = {0};
-	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max(shutters[i], ctx->s_ctx.exposure_min);
-		shutters[i] = min(shutters[i], ctx->s_ctx.exposure_max);
-		if (cit_step)
-			shutters[i] = round_up(shutters[i], cit_step);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */
-	calc_fl[0] = shutters[0];
-	for (i = 1; i < last_exp_cnt; i++)
-		calc_fl[0] += ctx->exposure[i];
-	calc_fl[0] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (2) current se + current me + current le */
-	calc_fl[1] = shutters[0];
-	for (i = 1; i < exp_cnt; i++)
-		calc_fl[1] += shutters[i];
-	calc_fl[1] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (3) readout time cannot be overlapped */
-	calc_fl[2] =
-		(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-		ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-	if (last_exp_cnt == exp_cnt)
-		for (i = 1; i < exp_cnt; i++) {
-			readout_diff = ctx->exposure[i] - shutters[i];
-			calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-		}
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		ctx->frame_length = max(ctx->frame_length, calc_fl[i]);
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = shutters[i];
-	/* exit long exposure if necessary */
-	if ((ctx->exposure[0] < 0xFFF0) && bNeedSetNormalMode) {
-		DRV_LOG(ctx, "exit long shutter\n");
-		subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-		subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-		bNeedSetNormalMode = FALSE;
-	}
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		break;
-	case 2:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[2] = shutters[1] / exp_cnt;
-		break;
-	case 3:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[1] = shutters[1] / exp_cnt;
-		rg_shutters[2] = shutters[2] / exp_cnt;
-		break;
-	default:
-		break;
-	}
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[2],
-					rg_shutters[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					rg_shutters[i] & 0xFF);
-			}
-		}
-	}
-	DRV_LOG(ctx, "exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static void kkthtele_write_frame_length_in_lut(struct subdrv_ctx *ctx, u32 fll, u32 *fll_in_lut)
-{
-	int i = 0;
-	u32 frame_length_buf;
-	u32 fll_step = 0;
-	u32 min_fll = 0;
-
-	check_current_scenario_id_bound(ctx);
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	// manual mode
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt) {
-	case 2:
-		if (fll_step) {
-			fll_in_lut[0] =
-				roundup(fll_in_lut[0], fll_step);
-			fll_in_lut[1] =
-				roundup(fll_in_lut[1], fll_step);
-		}
-		min_fll = ctx->s_ctx.mode[ctx->current_scenario_id].framelength / 2;
-
-		if (fll_in_lut[0] < fll_in_lut[1]) {
-			if (fll_in_lut[0] < min_fll) {
-				fll_in_lut[1] -= min_fll - fll_in_lut[0];
-				fll_in_lut[0] = min_fll;
-			}
-		} else {
-			if (fll_in_lut[1] < min_fll) {
-				fll_in_lut[0] -= min_fll - fll_in_lut[1];
-				fll_in_lut[1] = min_fll;
-			}
-		}
-		fll_in_lut[2] = 0;
-		fll_in_lut[3] = 0;
-		fll_in_lut[4] = 0;
-		ctx->frame_length_in_lut[0] = fll_in_lut[0];
-		ctx->frame_length_in_lut[1] = fll_in_lut[1];
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1];
-		break;
-	case 3:
-		if (fll_step) {
-			fll_in_lut[0] =
-				roundup(fll_in_lut[0], fll_step);
-			fll_in_lut[1] =
-				roundup(fll_in_lut[1], fll_step);
-			fll_in_lut[2] =
-				roundup(fll_in_lut[2], fll_step);
-		}
-		fll_in_lut[3] = 0;
-		fll_in_lut[4] = 0;
-		ctx->frame_length_in_lut[0] = fll_in_lut[0];
-		ctx->frame_length_in_lut[1] = fll_in_lut[1];
-		ctx->frame_length_in_lut[2] = fll_in_lut[2];
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] +
-			ctx->frame_length_in_lut[1] +
-			ctx->frame_length_in_lut[2];
-		break;
-	default:
-		break;
-	}
-
-	if (ctx->extend_frame_length_en == FALSE) {
-		frame_length_buf = 0;
-		for (i = 0; i < 3; i++) {
-			if (fll_in_lut[i]) {
-				if (ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[2]) {
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[0],
-						(fll_in_lut[i] >> 16) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[1],
-						(fll_in_lut[i] >> 8) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[2],
-						fll_in_lut[i] & 0xFF);
-				} else {
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[0],
-						(fll_in_lut[i] >> 8) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[1],
-						fll_in_lut[i] & 0xFF);
-				}
-				/* update FL_lut RG value after setting buffer for writing RG */
-				ctx->frame_length_in_lut_rg[i] = fll_in_lut[i];
-				frame_length_buf +=
-					ctx->frame_length_in_lut_rg[i];
-			}
-		}
-		/* update FL RG value simultaneously */
-		ctx->frame_length_rg = frame_length_buf;
-
-		DRV_LOG(ctx,
-			"ctx:(fl(RG):%u,%u/%u/%u/%u/%u), scen_id:%u,fll(input/ctx/output_a/b/c/d/e):0x%x/%x/%x/%x/%x/%x/%x,fll_step:%u\n",
-			ctx->frame_length_rg,
-			ctx->frame_length_in_lut_rg[0],
-			ctx->frame_length_in_lut_rg[1],
-			ctx->frame_length_in_lut_rg[2],
-			ctx->frame_length_in_lut_rg[3],
-			ctx->frame_length_in_lut_rg[4],
-			ctx->current_scenario_id,
-			fll,
-			ctx->frame_length,
-			fll_in_lut[0],
-			fll_in_lut[1],
-			fll_in_lut[2],
-			fll_in_lut[3],
-			fll_in_lut[4],
-			fll_step);
-	} else {
-		DRV_LOG(ctx,
-			"sid:%u,extend_frame_length_en:%u,default won't write fll!\n",
-			ctx->current_scenario_id, ctx->extend_frame_length_en);
-		return;
-	}
-}
-
-
-static int kkthtele_set_multi_shutter_frame_length_in_lut(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	kkthtele_set_multi_shutter_frame_length_in_lut_convert(ctx,
-		(u64 *)(*feature_data),
-		(u16) (*(feature_data + 1)),
-		(u32) (*(feature_data + 2)),
-		(u32 *) (*(feature_data + 3)));
-	return 0;
-}
-
-static void kkthtele_set_multi_shutter_frame_length_in_lut_convert(struct subdrv_ctx *ctx,
-	u64 *shutters, u16 exp_cnt, u32 frame_length, u32 *frame_length_in_lut)
-{
-	int i = 0;
-	u16 last_exp_cnt = 1;
-	int fine_integ_line = 0;
-	u32 frame_length_step;
-	u32 cit_step = 0;
-	u32 cit_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 calc_fl_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->min_frame_length;
-
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	frame_length_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	/* manual mode */
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].min);
-		shutters[i] = min_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].max);
-		if (cit_step)
-			shutters[i] = roundup(shutters[i], cit_step);
-
-		/* update frame_length_in_lut */
-		ctx->frame_length_in_lut[i] = frame_length_in_lut[i] ?
-			frame_length_in_lut[i] : 0;
-		/* check boundary of framelength in lut */
-		ctx->frame_length_in_lut[i] =
-			min(ctx->frame_length_in_lut[i], ctx->s_ctx.frame_length_max);
-	}
-
-	for (i = 0; i < exp_cnt; i++) {
-		/* update cit_in_lut depends on exposure_order_in_lbmf */
-		if (ctx->s_ctx.mode[ctx->current_scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-			/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-			cit_in_lut[i] = shutters[exp_cnt - 1 - i];
-		} else if (ctx->s_ctx.mode[ctx->current_scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-			/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-			cit_in_lut[i] = shutters[i];
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-	}
-
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt) {
-	case 2:
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_a = max(readout, current shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_b = max(readout, current shutter_a) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-
-		/* fll_a = max(fll_a, userInput_fll_a) */
-		ctx->frame_length_in_lut[0] =
-			max(ctx->frame_length_in_lut[0], calc_fl_in_lut[0]);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(ctx->frame_length_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b = max(fll_b, userInput_fll_b) */
-		ctx->frame_length_in_lut[1] =
-			max(ctx->frame_length_in_lut[1], calc_fl_in_lut[1]);
-
-		if (ctx->frame_length >= ctx->frame_length_in_lut[0]) {
-			/* fll_b = max(fll_b, fll-fll_a) */
-			ctx->frame_length_in_lut[1] =
-				max(ctx->frame_length_in_lut[1],
-					ctx->frame_length - ctx->frame_length_in_lut[0]);
-		}
-
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(ctx->frame_length_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* lut[2] no use, and assign zero */
-		ctx->frame_length_in_lut[2] = 0;
-		/* lut[3] no use, and assign zero */
-		ctx->frame_length_in_lut[3] = 0;
-		/* lut[4] no use, and assign zero */
-		ctx->frame_length_in_lut[4] = 0;
-		break;
-	case 3:
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_a = max(readout, current shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_b = max(readout, current shutter_c) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[2] + ctx->s_ctx.exposure_margin);
-		/* fll_c_min = readout + xx lines(margin) */
-		calc_fl_in_lut[2] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_c = max(readout, current shutter_a) */
-		calc_fl_in_lut[2] =
-			max(calc_fl_in_lut[2], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-
-		/* fll_a = max(fll_a, userInput_fll_a) */
-		ctx->frame_length_in_lut[0] =
-			max(ctx->frame_length_in_lut[0], calc_fl_in_lut[0]);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(ctx->frame_length_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b = max(fll_b, userInput_fll_b) */
-		ctx->frame_length_in_lut[1] =
-			max(ctx->frame_length_in_lut[1], calc_fl_in_lut[1]);
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(ctx->frame_length_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* fll_c = max(fll_c, userInput_fll_c) */
-		ctx->frame_length_in_lut[2] =
-			max(ctx->frame_length_in_lut[2], calc_fl_in_lut[2]);
-
-		if (ctx->frame_length >=
-			(ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1])) {
-			/* fll_c = max(fll_c, fll-fll_b-fll_a) */
-			ctx->frame_length_in_lut[2] =
-				max(ctx->frame_length_in_lut[2],
-					(ctx->frame_length - ctx->frame_length_in_lut[1] -
-					ctx->frame_length_in_lut[0]));
-		}
-
-		/* fll_c = min(fll_c, fll_max) */
-		ctx->frame_length_in_lut[2] =
-			min(ctx->frame_length_in_lut[2], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[2] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[2], frame_length_step) :
-			ctx->frame_length_in_lut[2];
-		/* lut[3] no use, and assign zero */
-		ctx->frame_length_in_lut[3] = 0;
-		/* lut[4] no use, and assign zero */
-		ctx->frame_length_in_lut[4] = 0;
-		break;
-	default:
-		break;
-	}
-
-	/* restore shutter & update framelength */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->frame_length = 0;
-	for (i = 0; i < exp_cnt; i++) {
-		ctx->exposure[i] = shutters[i];
-		ctx->frame_length += ctx->frame_length_in_lut[i];
-	}
-	/* check boundary of framelength */
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	set_auto_flicker(ctx, 0);
-
-	kkthtele_write_frame_length_in_lut(ctx, ctx->frame_length, ctx->frame_length_in_lut);
-
-	/* write shutter: LUT register differs from DOL */
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED) {
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-		ctx->l_shift = 0;
-	}
-	for (i = 0; i < 3; i++) {
-		if (cit_in_lut[i]) {
-			if (ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[2]) {
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[0],
-					(cit_in_lut[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[1],
-					(cit_in_lut[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[2],
-					cit_in_lut[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[0],
-					(cit_in_lut[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[1],
-					cit_in_lut[i] & 0xFF);
-			}
-		}
-	}
-
-	DRV_LOG(ctx,
-		"sid:%u,shutter(input/lut):0x%llx/%llx/%llx,%x/%x/%x,flInLUT(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%u,flick_en:%d\n",
-		ctx->current_scenario_id,
-		shutters[0], shutters[1], shutters[2],
-		cit_in_lut[0], cit_in_lut[1], cit_in_lut[2],
-		frame_length, ctx->frame_length,
-		ctx->frame_length_in_lut[0],
-		ctx->frame_length_in_lut[1],
-		ctx->frame_length_in_lut[2],
-		ctx->frame_length_in_lut[3],
-		ctx->frame_length_in_lut[4],
-		ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static int kkthtele_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	kkthtele_lens_pos_writeback(ctx);
-	kkthtele_set_multi_shutter_frame_length(ctx, (u64 *)(*feature_data),
-		(u16) (*(feature_data + 1)), (u16) (*(feature_data + 2)));
-	return 0;
-}
-
-static void kkthtele_set_hdr_tri_shutter(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt)
-{
-	int i = 0;
-	u64 values[3] = {0};
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-
-	if (shutters != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u64) *(shutters + i);
-	}
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		kkthtele_set_multi_shutter_frame_length_in_lut_convert(ctx,
-			values, exp_cnt, 0, frame_length_in_lut);
-		return;
-	}
-	kkthtele_set_multi_shutter_frame_length(ctx, values, exp_cnt, 0);
-}
-
-static int kkthtele_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	kkthtele_set_hdr_tri_shutter(ctx, feature_data, 2);
-	return 0;
-}
-
-static int kkthtele_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	kkthtele_set_hdr_tri_shutter(ctx, feature_data, 3);
-	return 0;
-}
-
-static bool dump_i2c_enable = false;
-
-static void dump_i2c_buf(struct subdrv_ctx *ctx, u8 * buf, u32 length)
-{
-	int i;
-	char *out_str = NULL;
-	char *strptr = NULL;
-	size_t buf_size = SUBDRV_I2C_BUF_SIZE * sizeof(char);
-	size_t remind = buf_size;
-	int num = 0;
-
-	out_str = kzalloc(buf_size + 1, GFP_KERNEL);
-	if (!out_str)
-		return;
-
-	strptr = out_str;
-	memset(out_str, 0, buf_size + 1);
-
-	num = snprintf(strptr, remind,"[ ");
-	remind -= num;
-	strptr += num;
-
-	for (i = 0 ; i < length; i ++) {
-		num = snprintf(strptr, remind,"0x%02x, ", buf[i]);
-
-		if (num <= 0) {
-			DRV_LOG(ctx, "snprintf return negative at line %d\n", __LINE__);
-			kfree(out_str);
-			return;
-		}
-
-		remind -= num;
-		strptr += num;
-
-		if (remind <= 20) {
-			DRV_LOG(ctx, " write %s\n", out_str);
-			memset(out_str, 0, buf_size + 1);
-			strptr = out_str;
-			remind = buf_size;
-		}
-	}
-
-	num = snprintf(strptr, remind," ]");
-	remind -= num;
-	strptr += num;
-
-	DRV_LOG(ctx, " write %s\n", out_str);
-	strptr = out_str;
-	remind = buf_size;
-
-	kfree(out_str);
-}
-
-static int kkthtele_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx, u16 * list, u32 len)
-{
-	adapter_i2c_burst_wr_regs_u16(ctx, ctx->i2c_write_id >> 1, list, len);
-	return 	0;
-}
-
-#define MAX_BUF_SIZE  4096
-#define MAX_MSG_NUM_U16  MAX_BUF_SIZE/4
-
-struct cache_wr_regs_u16 {
-	struct i2c_msg msg[MAX_MSG_NUM_U16];
-};
-
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx ,
-		u16 addr, u16 *list, u32 len)
-{
-	struct i2c_client *i2c_client = ctx->i2c_client;
-	struct i2c_msg  msg;
-	struct i2c_msg *pmsg = &msg;
-
-	u8 *pbuf = NULL;
-	u16 *plist = NULL;
-	u16 *plist_end = NULL;
-
-	u32 sent = 0;
-	u32 total = 0;
-	u32 per_sent = 0;
-	int ret, i;
-
-	if(!msg_buf) {
-		LOG_INF("malloc msg_buf retry");
-		msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-		if(!msg_buf) {
-			LOG_INF("malloc error");
-			return -ENOMEM;
-		}
-	}
-
-	/* each msg contains addr(u16) + val(u16 *) */
-	sent = 0;
-	total = len / 2;
-	plist = list;
-	plist_end = list + len - 2;
-
-	DRV_LOG(ctx, "len(%u)  total(%u)", len, total);
-
-	while (sent < total) {
-
-		per_sent = 0;
-		pmsg = &msg;
-		pbuf = msg_buf;
-
-		pmsg->addr = addr;
-		pmsg->flags = i2c_client->flags;
-		pmsg->buf = pbuf;
-
-		pbuf[0] = plist[0] >> 8;    //address
-		pbuf[1] = plist[0] & 0xff;
-
-		pbuf[2] = plist[1] >> 8;  //data 1
-		pbuf[3] = plist[1] & 0xff;
-
-		pbuf += 4;
-		pmsg->len = 4;
-		per_sent += 1;
-
-		for (i = 0; i < total - sent - 1; i++) {  //Maximum number of remaining cycles - 1
-			if(plist[0] + 2 == plist[2] ) {  //Addresses are consecutive
-				pbuf[0] = plist[3] >> 8;
-				pbuf[1] = plist[3] & 0xff;
-
-				pbuf += 2;
-				pmsg->len += 2;
-				per_sent += 1;
-				plist += 2;
-
-				if(pmsg->len >= MAX_BURST_LEN) {
-					break;
-				}
-			}
-		}
-		plist += 2;
-
-		if(dump_i2c_enable) {
-			DRV_LOG(ctx, "pmsg->len(%d) buff: ", pmsg->len);
-			dump_i2c_buf(ctx, msg_buf, pmsg->len);
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmsg, 1);
-
-		if (ret < 0) {
-			dev_info(&i2c_client->dev,
-				"i2c transfer failed (%d)\n", ret);
-			return -EIO;
-		}
-
-		sent += per_sent;
-
-		DRV_LOG(ctx, "sent(%u)  total(%u)  per_sent(%u)", sent, total, per_sent);
-	}
-
-	return 0;
-}
-
-#define kkthtele_AF_READ_ID  (0x1F) // 0x18
-#define kkthtele_AF_POSITON_ADD  (0x00) // 0x03
-// #define MILKYWAYC1TELE_AF_READ_ID  (0x1F)
-// #define MILKYWAYC1TELE_AF_POSITON_ADD  (0x00)
-
-static bool read_af_pos(struct subdrv_ctx *ctx, u16 *positon)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-	struct i2c_client *i2c_client = ctx->i2c_client;
-
-	buf[0] = kkthtele_AF_POSITON_ADD;
-
-	msg[0].addr = kkthtele_AF_READ_ID >> 1;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = 1;
-
-	msg[1].addr  = kkthtele_AF_READ_ID >> 1;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 2;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return false;
-	}
-
-	*positon = ((u16)buf[0] << 8) | buf[1];
-
-	return true;
-}
-
-static u16 lens_position_setting[] = {
-	0xFCFC, 0x2001,
-	0x2566, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static void kkthtele_lens_pos_writeback(struct subdrv_ctx *ctx)
-{
-	kal_uint16 af_pos = 0;
-	kal_uint16 write_pos = 0;
-	kal_uint16 write_pos_cover = 0;
-
-	bool ret;
-
-	DRV_LOG(ctx,"%s g_af_code_macro(%d), g_af_code_infinity(%d)",
-		__func__, g_af_code_macro, g_af_code_infinity);
-
-	if (ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-
-		ret = read_af_pos(ctx, &af_pos);
-		if(ret == false || g_af_code_macro == 0 || g_af_code_infinity == 0 || g_af_code_macro == g_af_code_infinity) {
-			pr_err("%s ret(%d) ",__func__, ret);
-			return ;
-		}
-		if(af_pos < g_af_code_infinity) {
-			af_pos = g_af_code_infinity;
-		}
-		if(af_pos > g_af_code_macro) {
-			af_pos = g_af_code_macro;
-		}
-
-		write_pos = (u32)(af_pos - g_af_code_infinity) * 1023 / (g_af_code_macro - g_af_code_infinity);
-
-		write_pos_cover = ((write_pos >> 8) & 0xff) | ((write_pos << 8) & 0xff00);
-
-		lens_position_setting[3] = write_pos_cover;
-
-		DRV_LOG(ctx,"%s af_pos(%d), g_af_code_infinity(%d), g_af_code_macro(%d), write_pos(0x%x) write_pos_cover(0x%x)",
-			__func__, af_pos, g_af_code_infinity, g_af_code_macro, write_pos, write_pos_cover);
-
-		subdrv_i2c_wr_regs_u16(ctx, lens_position_setting, ARRAY_SIZE(lens_position_setting));
-	}
-}
-
-static int kkthtele_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *)para;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = (enum SENSOR_SCENARIO_ID_ENUM)*feature_data;
-	u32 framerate = *(feature_data + 1);
-	u32 frame_length;
-	u32 frame_length_step;
-	u32 frame_length_min;
-	u32 frame_length_max;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-	}
-	if (!framerate) {
-		DRV_LOGE(ctx, "framerate (%u) is invalid\n", framerate);
-		return ERROR_NONE;
-	}
-	if (!ctx->s_ctx.mode[scenario_id].linelength) {
-		DRV_LOGE(ctx, "linelength (%u) is invalid\n",
-			ctx->s_ctx.mode[scenario_id].linelength);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		kkthtele_set_max_framerate_in_lut_by_scenario(ctx, scenario_id, framerate);
-		return ERROR_NONE;
-	}
-
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	/* set on the step of frame length */
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	frame_length_min = ctx->s_ctx.mode[scenario_id].framelength;
-	frame_length_max = ctx->s_ctx.frame_length_max;
-	frame_length_max = frame_length_step ?
-		(frame_length_max - (frame_length_max % frame_length_step)) : frame_length_max;
-
-
-	/* set in the range of frame length */
-	ctx->frame_length = max(frame_length, frame_length_min);
-	ctx->frame_length = min(ctx->frame_length, frame_length_max);
-	ctx->frame_length = frame_length_step ?
-		roundup(ctx->frame_length,frame_length_step) : ctx->frame_length;
-
-	/* set default frame length if given default framerate */
-	if (framerate == ctx->s_ctx.mode[scenario_id].max_framerate)
-		ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-
-	ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	ctx->min_frame_length = ctx->frame_length;
-	DRV_LOG(ctx, "max_fps(input/output):%u/%u(sid:%u), min_fl_en:1, ctx->frame_length:%u\n",
-		framerate, ctx->current_fps, scenario_id, ctx->frame_length);
-	if (ctx->s_ctx.reg_addr_auto_extend ||
-			(ctx->frame_length > (ctx->exposure[0] + ctx->s_ctx.exposure_margin))) {
-		if (ctx->s_ctx.aov_sensor_support &&
-			ctx->s_ctx.mode[scenario_id].aov_mode &&
-			!ctx->s_ctx.mode[scenario_id].s_dummy_support)
-			DRV_LOG_MUST(ctx, "AOV mode not support set_dummy!\n");
-		else
-			kkthtele_set_dummy(ctx);
-	}
-	return ERROR_NONE;
-}
-/**
- * @brief: This api is used to assign FLL_A/FLL_B in lut for manual mode.
- * It should refer to previous shutter because per-frame multi shutter framelength
- * might not be called.
- * @param ctx: subdrv_ctx
- * @param scenario_id: current scenario id
- * @param framerate: input framerate
- */
-static void kkthtele_set_max_framerate_in_lut_by_scenario(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id, u32 framerate)
-{
-	u32 frame_length = 0;
-	u32 frame_length_step = 0;
-	u16 exp_cnt = 0;
-	u32 cit_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 calc_fl_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	int i;
-
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	ctx->frame_length =
-		max(frame_length, ctx->s_ctx.mode[scenario_id].framelength);
-
-	/* set default frame length if given default framerate */
-	if (framerate ==  ctx->s_ctx.mode[scenario_id].max_framerate)
-		ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-
-	// manual mode
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	switch (exp_cnt) {
-	case 2:
-		for (i = 0; i < exp_cnt; i++) {
-			/*  update cit_in_lut depends on exposure_order_in_lbmf */
-			if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-				/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-				/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-				cit_in_lut[i] = ctx->exposure[exp_cnt - 1 - i];
-			} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-				/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-				/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-				cit_in_lut[i] = ctx->exposure[i];
-			} else {
-				DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-				return;
-			}
-		}
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_a = max(readout, previous shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(calc_fl_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_b = max(readout, previous shutter_a) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-		if (ctx->frame_length >= ctx->frame_length_in_lut[0]) {
-			/* fll_b = max(fll_b, fll_mode_max-fll_a) */
-			calc_fl_in_lut[1] =
-				max(calc_fl_in_lut[1],
-					ctx->frame_length - ctx->frame_length_in_lut[0]);
-		}
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(calc_fl_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		ctx->frame_length_in_lut[2] = 0;
-		ctx->frame_length_in_lut[3] = 0;
-		ctx->frame_length_in_lut[4] = 0;
-		/* update framelength */
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1];
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-		ctx->min_frame_length = ctx->frame_length;
-		DRV_LOG(ctx,
-			"sid:%u,max_fps(input/output):%u/%u,min_fl_en:1,lut order:%u,fll(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%un",
-			scenario_id,
-			framerate, ctx->current_fps,
-			ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf,
-			frame_length,
-			ctx->frame_length,
-			ctx->frame_length_in_lut[0],
-			ctx->frame_length_in_lut[1],
-			ctx->frame_length_in_lut[2],
-			ctx->frame_length_in_lut[3],
-			ctx->frame_length_in_lut[4]);
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				kkthtele_set_dummy(ctx);
-		} else {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				kkthtele_set_dummy(ctx);
-		}
-		break;
-	case 3:
-		for (i = 0; i < exp_cnt; i++) {
-			/*  update cit_in_lut depends on exposure_order_in_lbmf */
-			if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-				/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-				/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-				cit_in_lut[i] = ctx->exposure[exp_cnt - 1 - i];
-			} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-				/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-				/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-				cit_in_lut[i] = ctx->exposure[i];
-			} else {
-				DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-				return;
-			}
-		}
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_a = max(readout, previous shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(calc_fl_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_b = max(readout, previous shutter_c) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[2] + ctx->s_ctx.exposure_margin);
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(calc_fl_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* fll_c_min = readout + xx lines(margin) */
-		calc_fl_in_lut[2] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_c = max(readout, previous shutter_a) */
-		calc_fl_in_lut[2] =
-			max(calc_fl_in_lut[2], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-		if (ctx->frame_length >=
-			(ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1])) {
-			/* fll_c = max(fll_c, fll_mode_max-fll_b-fll_a) */
-			calc_fl_in_lut[2] =
-				max(calc_fl_in_lut[2],
-					(ctx->frame_length - ctx->frame_length_in_lut[1] -
-					ctx->frame_length_in_lut[0]));
-		}
-		/* fll_c = min(fll_c, fll_max) */
-		ctx->frame_length_in_lut[2] =
-			min(calc_fl_in_lut[2], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[2] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[2], frame_length_step) :
-			ctx->frame_length_in_lut[2];
-		ctx->frame_length_in_lut[3] = 0;
-		ctx->frame_length_in_lut[4] = 0;
-		/* update framelength */
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] +
-			ctx->frame_length_in_lut[1] +
-			ctx->frame_length_in_lut[2];
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-		ctx->min_frame_length = ctx->frame_length;
-		DRV_LOG(ctx,
-			"sid:%u,max_fps(input/output):%u/%u,min_fl_en:1,lut order:%u,fll(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%u\n",
-			scenario_id,
-			framerate, ctx->current_fps,
-			ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf,
-			frame_length,
-			ctx->frame_length,
-			ctx->frame_length_in_lut[0],
-			ctx->frame_length_in_lut[1],
-			ctx->frame_length_in_lut[2],
-			ctx->frame_length_in_lut[3],
-			ctx->frame_length_in_lut[4]);
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[2] >
-				(ctx->exposure[2] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				kkthtele_set_dummy(ctx);
-		} else {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[2] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[2] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				kkthtele_set_dummy(ctx);
-		}
-		break;
-	default:
-		break;
-	}
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtelemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtelemipiraw_Sensor.h
deleted file mode 100755
index 2ebe56db..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthtele_mipi_raw/kkthtelemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     KKTHTELEmipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KKTHTELEMIPI_SENSOR_H
-#define _KKTHTELEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "kkthtele_ana_gain_table.h"
-#include "kkthtele_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/Makefile
deleted file mode 100755
index e1233723..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/kkthuwidemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwide_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwide_Sensor_setting.h
deleted file mode 100755
index 7e775fc5..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwide_Sensor_setting.h
+++ /dev/null
@@ -1,21872 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 kkthuwide_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KKTHUWIDEMIPI_SENSOR_SETTING_H
-#define _KKTHUWIDEMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 kkthuwide_sensor_init_pre_setting[] = {
-    0xFCFC, 0x4000,
-    0x0000, 0x000D,
-    0x0000, 0x38E5,
-    0x6018, 0x0001,
-    0x7002, 0x0408,
-    0x6014, 0x0001,
-    0xFCFC, 0x2002,
-    0x1E92, 0x8000,
-    0x1E84, 0x282B,
-    0x1E86, 0x0320,
-    0xFCFC, 0x4000,
-    0x7002, 0x0008,
-};
-
-static u16 kkthuwide_sensor_init_setting[] = {
-    0xFCFC, 0x2000,
-    0xDCF0, 0x0101,
-    0xFCFC, 0x2001,
-    0x3C60, 0x0000,
-    0xFCFC, 0x4000,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2002,
-    0xA614, 0x8280,
-    0xA616, 0x0100,
-    0xA618, 0x1753,
-    0xA61A, 0x02FC,
-    0xA61C, 0xE702,
-    0xA61E, 0x83EA,
-    0xA620, 0xB7E7,
-    0xA622, 0x0124,
-    0xA624, 0x9387,
-    0xA626, 0x0787,
-    0xA628, 0x83A4,
-    0xA62A, 0x870D,
-    0xA62C, 0x03A4,
-    0xA62E, 0xC70D,
-    0xA630, 0x0146,
-    0xA632, 0xA685,
-    0xA634, 0x2285,
-    0xA636, 0x9740,
-    0xA638, 0x01FC,
-    0xA63A, 0xE780,
-    0xA63C, 0xE040,
-    0xA63E, 0x97B0,
-    0xA640, 0xFEFB,
-    0xA642, 0xE780,
-    0xA644, 0x60DC,
-    0xA646, 0x0546,
-    0xA648, 0xA685,
-    0xA64A, 0x2285,
-    0xA64C, 0x9740,
-    0xA64E, 0x01FC,
-    0xA650, 0xE780,
-    0xA652, 0x803F,
-    0xA654, 0x37A7,
-    0xA656, 0x0224,
-    0xA658, 0x9307,
-    0xA65A, 0x8754,
-    0xA65C, 0x03C6,
-    0xA65E, 0xC702,
-    0xA660, 0x8546,
-    0xA662, 0x6301,
-    0xA664, 0xD602,
-    0xA666, 0x83C6,
-    0xA668, 0x0700,
-    0xA66A, 0x0947,
-    0xA66C, 0x6384,
-    0xA66E, 0xE608,
-    0xA670, 0xB7C7,
-    0xA672, 0x0224,
-    0xA674, 0x83A7,
-    0xA676, 0x07B7,
-    0xA678, 0x0545,
-    0xA67A, 0x8297,
-    0xA67C, 0x1753,
-    0xA67E, 0x02FC,
-    0xA680, 0x6700,
-    0xA682, 0x83E6,
-    0xA684, 0x03D5,
-    0xA686, 0x4705,
-    0xA688, 0x05C9,
-    0xA68A, 0x83D8,
-    0xA68C, 0x2705,
-    0xA68E, 0xB7E6,
-    0xA690, 0x0124,
-    0xA692, 0x83D5,
-    0xA694, 0x665F,
-    0xA696, 0x1307,
-    0xA698, 0x8754,
-    0xA69A, 0x8146,
-    0xA69C, 0x2548,
-    0xA69E, 0x0356,
-    0xA6A0, 0xE702,
-    0xA6A2, 0x0907,
-    0xA6A4, 0x63E0,
-    0xA6A6, 0xC50E,
-    0xA6A8, 0x8506,
-    0xA6AA, 0xE39A,
-    0xA6AC, 0x06FF,
-    0xA6AE, 0x3707,
-    0xA6B0, 0x0040,
-    0xA6B2, 0x3A95,
-    0xA6B4, 0x2310,
-    0xA6B6, 0x1501,
-    0xA6B8, 0x03D5,
-    0xA6BA, 0x6705,
-    0xA6BC, 0x4DD5,
-    0xA6BE, 0x83D8,
-    0xA6C0, 0x2705,
-    0xA6C2, 0x37E7,
-    0xA6C4, 0x0124,
-    0xA6C6, 0x8355,
-    0xA6C8, 0x675F,
-    0xA6CA, 0xBE86,
-    0xA6CC, 0x0147,
-    0xA6CE, 0x2548,
-    0xA6D0, 0x03D6,
-    0xA6D2, 0xE602,
-    0xA6D4, 0x8906,
-    0xA6D6, 0x63EE,
-    0xA6D8, 0xC50A,
-    0xA6DA, 0x0507,
-    0xA6DC, 0xE31A,
-    0xA6DE, 0x07FF,
-    0xA6E0, 0x3707,
-    0xA6E2, 0x0040,
-    0xA6E4, 0x3A95,
-    0xA6E6, 0x2310,
-    0xA6E8, 0x1501,
-    0xA6EA, 0x83C6,
-    0xA6EC, 0x0700,
-    0xA6EE, 0x0947,
-    0xA6F0, 0xE390,
-    0xA6F2, 0xE6F8,
-    0xA6F4, 0x03D5,
-    0xA6F6, 0x8702,
-    0xA6F8, 0x1DC5,
-    0xA6FA, 0x83D8,
-    0xA6FC, 0x6702,
-    0xA6FE, 0x37F7,
-    0xA700, 0x0124,
-    0xA702, 0x8355,
-    0xA704, 0xA781,
-    0xA706, 0xBE86,
-    0xA708, 0x0147,
-    0xA70A, 0x2548,
-    0xA70C, 0x03D6,
-    0xA70E, 0x2600,
-    0xA710, 0x8906,
-    0xA712, 0x63E3,
-    0xA714, 0xC506,
-    0xA716, 0x0507,
-    0xA718, 0xE31A,
-    0xA71A, 0x07FF,
-    0xA71C, 0x3707,
-    0xA71E, 0x0040,
-    0xA720, 0x3A95,
-    0xA722, 0x2310,
-    0xA724, 0x1501,
-    0xA726, 0x03D5,
-    0xA728, 0xA702,
-    0xA72A, 0x39D1,
-    0xA72C, 0x83D8,
-    0xA72E, 0x6702,
-    0xA730, 0x37F7,
-    0xA732, 0x0124,
-    0xA734, 0x8355,
-    0xA736, 0xA781,
-    0xA738, 0xBE86,
-    0xA73A, 0x0147,
-    0xA73C, 0x2548,
-    0xA73E, 0x03D6,
-    0xA740, 0x2600,
-    0xA742, 0x8906,
-    0xA744, 0x63E4,
-    0xA746, 0xC502,
-    0xA748, 0x0507,
-    0xA74A, 0xE31A,
-    0xA74C, 0x07FF,
-    0xA74E, 0xB707,
-    0xA750, 0x0040,
-    0xA752, 0x3E95,
-    0xA754, 0xB7C7,
-    0xA756, 0x0224,
-    0xA758, 0x83A7,
-    0xA75A, 0x07B7,
-    0xA75C, 0x2310,
-    0xA75E, 0x1501,
-    0xA760, 0x0545,
-    0xA762, 0x8297,
-    0xA764, 0x1753,
-    0xA766, 0x02FC,
-    0xA768, 0x6700,
-    0xA76A, 0x03D8,
-    0xA76C, 0x2107,
-    0xA76E, 0x0607,
-    0xA770, 0xBA97,
-    0xA772, 0x83D8,
-    0xA774, 0x4700,
-    0xA776, 0xE1BF,
-    0xA778, 0x2107,
-    0xA77A, 0x0607,
-    0xA77C, 0x3E97,
-    0xA77E, 0x8358,
-    0xA780, 0x4700,
-    0xA782, 0x69BF,
-    0xA784, 0x1387,
-    0xA786, 0x0602,
-    0xA788, 0x0607,
-    0xA78A, 0x3E97,
-    0xA78C, 0x8358,
-    0xA78E, 0x0700,
-    0xA790, 0x39BF,
-    0xA792, 0x1307,
-    0xA794, 0x0702,
-    0xA796, 0x0607,
-    0xA798, 0x3E97,
-    0xA79A, 0x8358,
-    0xA79C, 0x0700,
-    0xA79E, 0x89B7,
-    0xA7A0, 0x1753,
-    0xA7A2, 0x02FC,
-    0xA7A4, 0xE702,
-    0xA7A6, 0x83CF,
-    0xA7A8, 0x3284,
-    0xA7AA, 0xB7E7,
-    0xA7AC, 0x0124,
-    0xA7AE, 0x032B,
-    0xA7B0, 0x4600,
-    0xA7B2, 0x832A,
-    0xA7B4, 0x4609,
-    0xA7B6, 0x032A,
-    0xA7B8, 0xC604,
-    0xA7BA, 0x0348,
-    0xA7BC, 0x8600,
-    0xA7BE, 0x9387,
-    0xA7C0, 0x0787,
-    0xA7C2, 0x0346,
-    0xA7C4, 0x8609,
-    0xA7C6, 0x0347,
-    0xA7C8, 0x0405,
-    0xA7CA, 0x83AB,
-    0xA7CC, 0x070E,
-    0xA7CE, 0x03AC,
-    0xA7D0, 0x470E,
-    0xA7D2, 0x3318,
-    0xA7D4, 0x0B01,
-    0xA7D6, 0x3317,
-    0xA7D8, 0xEA00,
-    0xA7DA, 0x3396,
-    0xA7DC, 0xCA00,
-    0xA7DE, 0x2322,
-    0xA7E0, 0x0401,
-    0xA7E2, 0x78C4,
-    0xA7E4, 0xAA84,
-    0xA7E6, 0x2E89,
-    0xA7E8, 0x232A,
-    0xA7EA, 0xC408,
-    0xA7EC, 0xDE85,
-    0xA7EE, 0x6285,
-    0xA7F0, 0x0146,
-    0xA7F2, 0xB689,
-    0xA7F4, 0x9740,
-    0xA7F6, 0x01FC,
-    0xA7F8, 0xE780,
-    0xA7FA, 0x0025,
-    0xA7FC, 0xCE86,
-    0xA7FE, 0x2286,
-    0xA800, 0xCA85,
-    0xA802, 0x2685,
-    0xA804, 0x97B0,
-    0xA806, 0xFDFB,
-    0xA808, 0xE780,
-    0xA80A, 0x00B0,
-    0xA80C, 0x6285,
-    0xA80E, 0x0546,
-    0xA810, 0xDE85,
-    0xA812, 0x9740,
-    0xA814, 0x01FC,
-    0xA816, 0xE780,
-    0xA818, 0x2023,
-    0xA81A, 0xB7C7,
-    0xA81C, 0x0224,
-    0xA81E, 0x83A7,
-    0xA820, 0x07B7,
-    0xA822, 0x2322,
-    0xA824, 0x6401,
-    0xA826, 0x232A,
-    0xA828, 0x5409,
-    0xA82A, 0x2326,
-    0xA82C, 0x4405,
-    0xA82E, 0x0145,
-    0xA830, 0x8297,
-    0xA832, 0x1753,
-    0xA834, 0x02FC,
-    0xA836, 0x6700,
-    0xA838, 0xE3C9,
-    0xA83A, 0x0100,
-    0xA83C, 0x1753,
-    0xA83E, 0x02FC,
-    0xA840, 0xE702,
-    0xA842, 0x43C8,
-    0xA844, 0x2A84,
-    0xA846, 0xEFE0,
-    0xA848, 0xEFA9,
-    0xA84A, 0xA147,
-    0xA84C, 0x6306,
-    0xA84E, 0xF400,
-    0xA850, 0x1753,
-    0xA852, 0x02FC,
-    0xA854, 0x6700,
-    0xA856, 0x43C9,
-    0xA858, 0x9770,
-    0xA85A, 0xFFFB,
-    0xA85C, 0xE780,
-    0xA85E, 0x000C,
-    0xA860, 0x39C5,
-    0xA862, 0xB737,
-    0xA864, 0x0124,
-    0xA866, 0x83C7,
-    0xA868, 0x271A,
-    0xA86A, 0xFDD3,
-    0xA86C, 0x3784,
-    0xA86E, 0x0040,
-    0xA870, 0x8355,
-    0xA872, 0xE4F3,
-    0xA874, 0x0D45,
-    0xA876, 0x93E5,
-    0xA878, 0x0524,
-    0xA87A, 0x97D0,
-    0xA87C, 0xFFFB,
-    0xA87E, 0xE780,
-    0xA880, 0xA00A,
-    0xA882, 0x8355,
-    0xA884, 0x24F7,
-    0xA886, 0xB7A7,
-    0xA888, 0x0124,
-    0xA88A, 0x9387,
-    0xA88C, 0x0753,
-    0xA88E, 0x03D7,
-    0xA890, 0x47B6,
-    0xA892, 0xC205,
-    0xA894, 0xC181,
-    0xA896, 0x1377,
-    0xA898, 0xF7DB,
-    0xA89A, 0x93F5,
-    0xA89C, 0xF5DB,
-    0xA89E, 0x4145,
-    0xA8A0, 0x2392,
-    0xA8A2, 0xE7B6,
-    0xA8A4, 0x97D0,
-    0xA8A6, 0xFFFB,
-    0xA8A8, 0xE780,
-    0xA8AA, 0x0008,
-    0xA8AC, 0x55B7,
-    0xA8AE, 0x9770,
-    0xA8B0, 0xFFFB,
-    0xA8B2, 0xE780,
-    0xA8B4, 0xA003,
-    0xA8B6, 0x55D5,
-    0xA8B8, 0x9770,
-    0xA8BA, 0xFFFB,
-    0xA8BC, 0xE780,
-    0xA8BE, 0x807D,
-    0xA8C0, 0x19C9,
-    0xA8C2, 0xB797,
-    0xA8C4, 0x0124,
-    0xA8C6, 0x9387,
-    0xA8C8, 0x07D7,
-    0xA8CA, 0x03C7,
-    0xA8CC, 0x8703,
-    0xA8CE, 0x83C7,
-    0xA8D0, 0x2706,
-    0xA8D2, 0x6306,
-    0xA8D4, 0xF706,
-    0xA8D6, 0x9770,
-    0xA8D8, 0xFFFB,
-    0xA8DA, 0xE780,
-    0xA8DC, 0xA07B,
-    0xA8DE, 0x51D1,
-    0xA8E0, 0xB797,
-    0xA8E2, 0x0124,
-    0xA8E4, 0x9387,
-    0xA8E6, 0x07D7,
-    0xA8E8, 0x03C7,
-    0xA8EA, 0xC701,
-    0xA8EC, 0x83C7,
-    0xA8EE, 0x2706,
-    0xA8F0, 0xE319,
-    0xA8F2, 0xF7F6,
-    0xA8F4, 0xB727,
-    0xA8F6, 0x0224,
-    0xA8F8, 0x0564,
-    0xA8FA, 0x9387,
-    0xA8FC, 0x076B,
-    0xA8FE, 0xA297,
-    0xA900, 0x03C7,
-    0xA902, 0xF780,
-    0xA904, 0x8547,
-    0xA906, 0x6317,
-    0xA908, 0xF700,
-    0xA90A, 0xB737,
-    0xA90C, 0x0124,
-    0xA90E, 0x83C7,
-    0xA910, 0x57A5,
-    0xA912, 0xB1C3,
-    0xA914, 0xB787,
-    0xA916, 0x0040,
-    0xA918, 0x83D5,
-    0xA91A, 0xE7F3,
-    0xA91C, 0x0D45,
-    0xA91E, 0x93E5,
-    0xA920, 0x0501,
-    0xA922, 0x97D0,
-    0xA924, 0xFFFB,
-    0xA926, 0xE780,
-    0xA928, 0x2000,
-    0xA92A, 0xB7A7,
-    0xA92C, 0x0124,
-    0xA92E, 0x9387,
-    0xA930, 0x0753,
-    0xA932, 0x03D7,
-    0xA934, 0x47B6,
-    0xA936, 0x3D9B,
-    0xA938, 0x2392,
-    0xA93A, 0xE7B6,
-    0xA93C, 0x1DB7,
-    0xA93E, 0xB727,
-    0xA940, 0x0224,
-    0xA942, 0x0564,
-    0xA944, 0x9387,
-    0xA946, 0x076B,
-    0xA948, 0xA297,
-    0xA94A, 0x03C7,
-    0xA94C, 0xF780,
-    0xA94E, 0x9147,
-    0xA950, 0xE30D,
-    0xA952, 0xF7FA,
-    0xA954, 0xC1B7,
-    0xA956, 0xB787,
-    0xA958, 0x0040,
-    0xA95A, 0x83D5,
-    0xA95C, 0xE7F3,
-    0xA95E, 0x0D45,
-    0xA960, 0x93E5,
-    0xA962, 0x0504,
-    0xA964, 0x97D0,
-    0xA966, 0xFFFB,
-    0xA968, 0xE780,
-    0xA96A, 0x00FC,
-    0xA96C, 0xB797,
-    0xA96E, 0x0124,
-    0xA970, 0x9387,
-    0xA972, 0x0753,
-    0xA974, 0xA297,
-    0xA976, 0x03D7,
-    0xA978, 0x47B6,
-    0xA97A, 0x1377,
-    0xA97C, 0xF7FB,
-    0xA97E, 0x2392,
-    0xA980, 0xE7B6,
-    0xA982, 0xC5B5,
-    0xA984, 0x3571,
-    0xA986, 0x22CF,
-    0xA988, 0x26CD,
-    0xA98A, 0x7324,
-    0xA98C, 0x2034,
-    0xA98E, 0xF324,
-    0xA990, 0x1034,
-    0xA992, 0x7360,
-    0xA994, 0x0430,
-    0xA996, 0x06CB,
-    0xA998, 0x16C9,
-    0xA99A, 0x1AC7,
-    0xA99C, 0x1EC5,
-    0xA99E, 0x2AC3,
-    0xA9A0, 0x2EC1,
-    0xA9A2, 0xB2DE,
-    0xA9A4, 0xB6DC,
-    0xA9A6, 0xBADA,
-    0xA9A8, 0xBED8,
-    0xA9AA, 0xC2D6,
-    0xA9AC, 0xC6D4,
-    0xA9AE, 0xF2D2,
-    0xA9B0, 0xF6D0,
-    0xA9B2, 0xFACE,
-    0xA9B4, 0xFECC,
-    0xA9B6, 0x82E2,
-    0xA9B8, 0x86E0,
-    0xA9BA, 0x0AFE,
-    0xA9BC, 0x0EFC,
-    0xA9BE, 0x12FA,
-    0xA9C0, 0x16F8,
-    0xA9C2, 0x1AF6,
-    0xA9C4, 0x1EF4,
-    0xA9C6, 0x2AF2,
-    0xA9C8, 0x2EF0,
-    0xA9CA, 0x32EE,
-    0xA9CC, 0x36EC,
-    0xA9CE, 0x3AEA,
-    0xA9D0, 0x3EE8,
-    0xA9D2, 0x42E6,
-    0xA9D4, 0x46E4,
-    0xA9D6, 0x72E2,
-    0xA9D8, 0x76E0,
-    0xA9DA, 0x272E,
-    0xA9DC, 0xE1FF,
-    0xA9DE, 0x272C,
-    0xA9E0, 0xF1FF,
-    0xA9E2, 0x9770,
-    0xA9E4, 0xFFFB,
-    0xA9E6, 0xE780,
-    0xA9E8, 0x60F3,
-    0xA9EA, 0x19C5,
-    0xA9EC, 0x9770,
-    0xA9EE, 0xFFFB,
-    0xA9F0, 0xE780,
-    0xA9F2, 0xC0EF,
-    0xA9F4, 0x631C,
-    0xA9F6, 0x0512,
-    0xA9F8, 0x9305,
-    0xA9FA, 0x0024,
-    0xA9FC, 0x4145,
-    0xA9FE, 0x97D0,
-    0xAA00, 0xFFFB,
-    0xAA02, 0xE780,
-    0xAA04, 0x60F9,
-    0xAA06, 0x8145,
-    0xAA08, 0x9377,
-    0xAA0A, 0x1500,
-    0xAA0C, 0x85C7,
-    0xAA0E, 0x37D7,
-    0xAA10, 0x0124,
-    0xAA12, 0xB7A7,
-    0xAA14, 0x0124,
-    0xAA16, 0x1307,
-    0xAA18, 0x07C4,
-    0xAA1A, 0x9387,
-    0xAA1C, 0x0753,
-    0xAA1E, 0x0356,
-    0xAA20, 0x4707,
-    0xAA22, 0x83D6,
-    0xAA24, 0xA7B6,
-    0xAA26, 0x0506,
-    0xAA28, 0x93E6,
-    0xAA2A, 0x1600,
-    0xAA2C, 0x231A,
-    0xAA2E, 0xC706,
-    0xAA30, 0x2395,
-    0xAA32, 0xD7B6,
-    0xAA34, 0x9377,
-    0xAA36, 0x2500,
-    0xAA38, 0x85C7,
-    0xAA3A, 0x37D7,
-    0xAA3C, 0x0124,
-    0xAA3E, 0xB7A7,
-    0xAA40, 0x0124,
-    0xAA42, 0x1307,
-    0xAA44, 0x07C4,
-    0xAA46, 0x9387,
-    0xAA48, 0x0753,
-    0xAA4A, 0x0356,
-    0xAA4C, 0xC70C,
-    0xAA4E, 0x83D6,
-    0xAA50, 0xA7B6,
-    0xAA52, 0x0506,
-    0xAA54, 0x93E6,
-    0xAA56, 0x2600,
-    0xAA58, 0x2316,
-    0xAA5A, 0xC70C,
-    0xAA5C, 0x2395,
-    0xAA5E, 0xD7B6,
-    0xAA60, 0x9377,
-    0xAA62, 0x0520,
-    0xAA64, 0x1375,
-    0xAA66, 0x0504,
-    0xAA68, 0xC5C3,
-    0xAA6A, 0xB7D7,
-    0xAA6C, 0x0124,
-    0xAA6E, 0x9387,
-    0xAA70, 0x07C4,
-    0xAA72, 0x03D7,
-    0xAA74, 0x6708,
-    0xAA76, 0x0507,
-    0xAA78, 0x2393,
-    0xAA7A, 0xE708,
-    0xAA7C, 0xD1C5,
-    0xAA7E, 0x37A7,
-    0xAA80, 0x0124,
-    0xAA82, 0x1307,
-    0xAA84, 0x0753,
-    0xAA86, 0x8356,
-    0xAA88, 0xA7B6,
-    0xAA8A, 0x93E6,
-    0xAA8C, 0x0620,
-    0xAA8E, 0x2315,
-    0xAA90, 0xD7B6,
-    0xAA92, 0x11C9,
-    0xAA94, 0x03D6,
-    0xAA96, 0xA708,
-    0xAA98, 0x0506,
-    0xAA9A, 0x2395,
-    0xAA9C, 0xC708,
-    0xAA9E, 0x93E6,
-    0xAAA0, 0x0604,
-    0xAAA2, 0x2315,
-    0xAAA4, 0xD7B6,
-    0xAAA6, 0xDA40,
-    0xAAA8, 0xCA42,
-    0xAAAA, 0x3A43,
-    0xAAAC, 0xAA43,
-    0xAAAE, 0x1A45,
-    0xAAB0, 0x8A45,
-    0xAAB2, 0x7656,
-    0xAAB4, 0xE656,
-    0xAAB6, 0x5657,
-    0xAAB8, 0xC657,
-    0xAABA, 0x3658,
-    0xAABC, 0xA658,
-    0xAABE, 0x165E,
-    0xAAC0, 0x865E,
-    0xAAC2, 0x764F,
-    0xAAC4, 0xE64F,
-    0xAAC6, 0x1660,
-    0xAAC8, 0x8660,
-    0xAACA, 0x7271,
-    0xAACC, 0xE271,
-    0xAACE, 0x5272,
-    0xAAD0, 0xC272,
-    0xAAD2, 0x3273,
-    0xAAD4, 0xA273,
-    0xAAD6, 0x1275,
-    0xAAD8, 0x8275,
-    0xAADA, 0x7266,
-    0xAADC, 0xE266,
-    0xAADE, 0x5267,
-    0xAAE0, 0xC267,
-    0xAAE2, 0x3268,
-    0xAAE4, 0xA268,
-    0xAAE6, 0x126E,
-    0xAAE8, 0x826E,
-    0xAAEA, 0x072F,
-    0xAAEC, 0xC1FF,
-    0xAAEE, 0x872F,
-    0xAAF0, 0x81FF,
-    0xAAF2, 0x7370,
-    0xAAF4, 0x0430,
-    0xAAF6, 0x7390,
-    0xAAF8, 0x1434,
-    0xAAFA, 0x7310,
-    0xAAFC, 0x2434,
-    0xAAFE, 0x7A44,
-    0xAB00, 0xEA44,
-    0xAB02, 0x0D61,
-    0xAB04, 0x7300,
-    0xAB06, 0x2030,
-    0xAB08, 0x59DD,
-    0xAB0A, 0xB7D7,
-    0xAB0C, 0x0124,
-    0xAB0E, 0x9387,
-    0xAB10, 0x07C4,
-    0xAB12, 0x03D7,
-    0xAB14, 0xA708,
-    0xAB16, 0x0507,
-    0xAB18, 0x2395,
-    0xAB1A, 0xE708,
-    0xAB1C, 0xC9D5,
-    0xAB1E, 0x37A7,
-    0xAB20, 0x0124,
-    0xAB22, 0x1307,
-    0xAB24, 0x0753,
-    0xAB26, 0x8356,
-    0xAB28, 0xA7B6,
-    0xAB2A, 0x95BF,
-    0xAB2C, 0xB7A7,
-    0xAB2E, 0x0124,
-    0xAB30, 0x83D5,
-    0xAB32, 0x8709,
-    0xAB34, 0x4145,
-    0xAB36, 0x97D0,
-    0xAB38, 0xFFFB,
-    0xAB3A, 0xE780,
-    0xAB3C, 0xE0E5,
-    0xAB3E, 0x8545,
-    0xAB40, 0xE1B5,
-    0xAB42, 0x0100,
-    0xAB44, 0x8280,
-    0xAB46, 0x0100,
-    0xAB48, 0x1753,
-    0xAB4A, 0x02FC,
-    0xAB4C, 0xE702,
-    0xAB4E, 0x8397,
-    0xAB50, 0x37E4,
-    0xAB52, 0x0124,
-    0xAB54, 0x1304,
-    0xAB56, 0x044C,
-    0xAB58, 0x8344,
-    0xAB5A, 0xE40A,
-    0xAB5C, 0x8547,
-    0xAB5E, 0x2307,
-    0xAB60, 0xF40A,
-    0xAB62, 0x97A0,
-    0xAB64, 0xFDFB,
-    0xAB66, 0xE780,
-    0xAB68, 0x20E3,
-    0xAB6A, 0x2307,
-    0xAB6C, 0x940A,
-    0xAB6E, 0x1753,
-    0xAB70, 0x02FC,
-    0xAB72, 0x6700,
-    0xAB74, 0x6397,
-    0xAB76, 0x0100,
-    0xAB78, 0xB7A7,
-    0xAB7A, 0x0224,
-    0xAB7C, 0x83C7,
-    0xAB7E, 0x075A,
-    0xAB80, 0x0547,
-    0xAB82, 0x6383,
-    0xAB84, 0xE700,
-    0xAB86, 0x8280,
-    0xAB88, 0x1753,
-    0xAB8A, 0x02FC,
-    0xAB8C, 0xE702,
-    0xAB8E, 0xE391,
-    0xAB90, 0x3794,
-    0xAB92, 0x0124,
-    0xAB94, 0x1304,
-    0xAB96, 0x0453,
-    0xAB98, 0x0347,
-    0xAB9A, 0x041B,
-    0xAB9C, 0x4111,
-    0xAB9E, 0x6307,
-    0xABA0, 0xF700,
-    0xABA2, 0x4101,
-    0xABA4, 0x1753,
-    0xABA6, 0x02FC,
-    0xABA8, 0x6700,
-    0xABAA, 0x6393,
-    0xABAC, 0x8947,
-    0xABAE, 0xE31A,
-    0xABB0, 0xF5FE,
-    0xABB2, 0x8347,
-    0xABB4, 0x3441,
-    0xABB6, 0xADC3,
-    0xABB8, 0x83A9,
-    0xABBA, 0x0500,
-    0xABBC, 0x2EC6,
-    0xABBE, 0x97C0,
-    0xABC0, 0x01FC,
-    0xABC2, 0xE780,
-    0xABC4, 0x20B8,
-    0xABC6, 0xAA84,
-    0xABC8, 0x9780,
-    0xABCA, 0x01FC,
-    0xABCC, 0xE780,
-    0xABCE, 0x80C7,
-    0xABD0, 0xB245,
-    0xABD2, 0x2A89,
-    0xABD4, 0x9C41,
-    0xABD6, 0x63F3,
-    0xABD8, 0x9700,
-    0xABDA, 0xA687,
-    0xABDC, 0x8851,
-    0xABDE, 0x9CC1,
-    0xABE0, 0x2EC6,
-    0xABE2, 0x4A95,
-    0xABE4, 0x97B0,
-    0xABE6, 0x00FC,
-    0xABE8, 0xE780,
-    0xABEA, 0x00C5,
-    0xABEC, 0xB245,
-    0xABEE, 0xAA84,
-    0xABF0, 0xE8C9,
-    0xABF2, 0x3385,
-    0xABF4, 0x2901,
-    0xABF6, 0x97B0,
-    0xABF8, 0x00FC,
-    0xABFA, 0xE780,
-    0xABFC, 0xE0C3,
-    0xABFE, 0x8567,
-    0xAC00, 0x3E94,
-    0xAC02, 0x8327,
-    0xAC04, 0xC483,
-    0xAC06, 0x2695,
-    0xAC08, 0xB245,
-    0xAC0A, 0x63F3,
-    0xAC0C, 0xA700,
-    0xAC0E, 0xAA87,
-    0xAC10, 0x2322,
-    0xAC12, 0xF498,
-    0xAC14, 0xE8C5,
-    0xAC16, 0x71B7,
-    0xAC18, 0x0145,
-    0xAC1A, 0x2EC6,
-    0xAC1C, 0x97B0,
-    0xAC1E, 0x01FC,
-    0xAC20, 0xE780,
-    0xAC22, 0x8035,
-    0xAC24, 0xB245,
-    0xAC26, 0xAA89,
-    0xAC28, 0x51BF,
-    0xAC2A, 0x0100,
-    0xAC2C, 0x1753,
-    0xAC2E, 0x02FC,
-    0xAC30, 0xE702,
-    0xAC32, 0x4389,
-    0xAC34, 0x2A84,
-    0xAC36, 0xEFE0,
-    0xAC38, 0xAFFC,
-    0xAC3A, 0x01E8,
-    0xAC3C, 0xB7D7,
-    0xAC3E, 0x0124,
-    0xAC40, 0x03A7,
-    0xAC42, 0x87C1,
-    0xAC44, 0x9147,
-    0xAC46, 0x6306,
-    0xAC48, 0xF700,
-    0xAC4A, 0x1753,
-    0xAC4C, 0x02FC,
-    0xAC4E, 0x6700,
-    0xAC50, 0xA389,
-    0xAC52, 0xB7D7,
-    0xAC54, 0x0124,
-    0xAC56, 0x83C7,
-    0xAC58, 0x07FA,
-    0xAC5A, 0xE5DB,
-    0xAC5C, 0xB747,
-    0xAC5E, 0x0124,
-    0xAC60, 0x83C7,
-    0xAC62, 0x27C4,
-    0xAC64, 0xFDF3,
-    0xAC66, 0x97E0,
-    0xAC68, 0x00FC,
-    0xAC6A, 0xE780,
-    0xAC6C, 0xA097,
-    0xAC6E, 0xB787,
-    0xAC70, 0x0224,
-    0xAC72, 0x0547,
-    0xAC74, 0xA380,
-    0xAC76, 0xE74E,
-    0xAC78, 0xC9BF,
-    0xAC7A, 0x0100,
-    0xAC7C, 0x1753,
-    0xAC7E, 0x02FC,
-    0xAC80, 0xE702,
-    0xAC82, 0x4384,
-    0xAC84, 0x3784,
-    0xAC86, 0x0224,
-    0xAC88, 0x1304,
-    0xAC8A, 0xC449,
-    0xAC8C, 0x8347,
-    0xAC8E, 0x5404,
-    0xAC90, 0x99E7,
-    0xAC92, 0xEFE0,
-    0xAC94, 0x7F82,
-    0xAC96, 0x1753,
-    0xAC98, 0x02FC,
-    0xAC9A, 0x6700,
-    0xAC9C, 0xE384,
-    0xAC9E, 0x97E0,
-    0xACA0, 0x00FC,
-    0xACA2, 0xE780,
-    0xACA4, 0x20AF,
-    0xACA6, 0xA302,
-    0xACA8, 0x0404,
-    0xACAA, 0xEFE0,
-    0xACAC, 0xFF80,
-    0xACAE, 0x1753,
-    0xACB0, 0x02FC,
-    0xACB2, 0x6700,
-    0xACB4, 0x6383,
-    0xACB6, 0x0100,
-    0xACB8, 0x1753,
-    0xACBA, 0x02FC,
-    0xACBC, 0xE702,
-    0xACBE, 0x8380,
-    0xACC0, 0xB7E7,
-    0xACC2, 0x0124,
-    0xACC4, 0x9387,
-    0xACC6, 0x0787,
-    0xACC8, 0x03A9,
-    0xACCA, 0x870E,
-    0xACCC, 0x83A4,
-    0xACCE, 0xC70E,
-    0xACD0, 0x0146,
-    0xACD2, 0xCA85,
-    0xACD4, 0x2A84,
-    0xACD6, 0x2685,
-    0xACD8, 0x9740,
-    0xACDA, 0x01FC,
-    0xACDC, 0xE780,
-    0xACDE, 0xC0D6,
-    0xACE0, 0x2285,
-    0xACE2, 0x97A0,
-    0xACE4, 0xFFFB,
-    0xACE6, 0xE780,
-    0xACE8, 0x603E,
-    0xACEA, 0x0546,
-    0xACEC, 0xCA85,
-    0xACEE, 0x2685,
-    0xACF0, 0x9740,
-    0xACF2, 0x01FC,
-    0xACF4, 0xE780,
-    0xACF6, 0x40D5,
-    0xACF8, 0x8547,
-    0xACFA, 0x630F,
-    0xACFC, 0xF400,
-    0xACFE, 0x9147,
-    0xAD00, 0x630C,
-    0xAD02, 0xF400,
-    0xAD04, 0xB7C7,
-    0xAD06, 0x0224,
-    0xAD08, 0x83A7,
-    0xAD0A, 0x07B7,
-    0xAD0C, 0x0945,
-    0xAD0E, 0x8297,
-    0xAD10, 0x1743,
-    0xAD12, 0x02FC,
-    0xAD14, 0x6700,
-    0xAD16, 0x437D,
-    0xAD18, 0x9770,
-    0xAD1A, 0xFFFB,
-    0xAD1C, 0xE780,
-    0xAD1E, 0x00C0,
-    0xAD20, 0x75F1,
-    0xAD22, 0x9770,
-    0xAD24, 0xFFFB,
-    0xAD26, 0xE780,
-    0xAD28, 0x60BC,
-    0xAD2A, 0x69DD,
-    0xAD2C, 0x9770,
-    0xAD2E, 0xFFFB,
-    0xAD30, 0xE780,
-    0xAD32, 0x4036,
-    0xAD34, 0x19C9,
-    0xAD36, 0xB797,
-    0xAD38, 0x0124,
-    0xAD3A, 0x9387,
-    0xAD3C, 0x07D7,
-    0xAD3E, 0x03C7,
-    0xAD40, 0x8703,
-    0xAD42, 0x83C7,
-    0xAD44, 0x2706,
-    0xAD46, 0x6306,
-    0xAD48, 0xF706,
-    0xAD4A, 0x9770,
-    0xAD4C, 0xFFFB,
-    0xAD4E, 0xE780,
-    0xAD50, 0x6034,
-    0xAD52, 0x4DD9,
-    0xAD54, 0xB797,
-    0xAD56, 0x0124,
-    0xAD58, 0x9387,
-    0xAD5A, 0x07D7,
-    0xAD5C, 0x03C7,
-    0xAD5E, 0xC701,
-    0xAD60, 0x83C7,
-    0xAD62, 0x2706,
-    0xAD64, 0xE310,
-    0xAD66, 0xF7FA,
-    0xAD68, 0xB7C7,
-    0xAD6A, 0x0224,
-    0xAD6C, 0x83A7,
-    0xAD6E, 0x47B7,
-    0xAD70, 0xB706,
-    0xAD72, 0x0040,
-    0xAD74, 0x1386,
-    0xAD76, 0x4606,
-    0xAD78, 0x8965,
-    0xAD7A, 0x3E96,
-    0xAD7C, 0x1387,
-    0xAD7E, 0x061F,
-    0xAD80, 0x9385,
-    0xAD82, 0xF5F1,
-    0xAD84, 0x2310,
-    0xAD86, 0xB600,
-    0xAD88, 0x3E97,
-    0xAD8A, 0x7D56,
-    0xAD8C, 0x2310,
-    0xAD8E, 0xC700,
-    0xAD90, 0x37D6,
-    0xAD92, 0x0124,
-    0xAD94, 0x1306,
-    0xAD96, 0x06E7,
-    0xAD98, 0x0357,
-    0xAD9A, 0xC605,
-    0xAD9C, 0x0356,
-    0xAD9E, 0x6606,
-    0xADA0, 0x9386,
-    0xADA2, 0x861D,
-    0xADA4, 0x3297,
-    0xADA6, 0x4207,
-    0xADA8, 0xB697,
-    0xADAA, 0x4183,
-    0xADAC, 0x2390,
-    0xADAE, 0xE700,
-    0xADB0, 0x91BF,
-    0xADB2, 0xB7C7,
-    0xADB4, 0x0224,
-    0xADB6, 0x83A7,
-    0xADB8, 0x47B7,
-    0xADBA, 0xB706,
-    0xADBC, 0x0040,
-    0xADBE, 0x1386,
-    0xADC0, 0x4606,
-    0xADC2, 0x8965,
-    0xADC4, 0x3E96,
-    0xADC6, 0x1387,
-    0xADC8, 0x061F,
-    0xADCA, 0x9385,
-    0xADCC, 0xF5F1,
-    0xADCE, 0x2310,
-    0xADD0, 0xB600,
-    0xADD2, 0x3E97,
-    0xADD4, 0x7D56,
-    0xADD6, 0x2310,
-    0xADD8, 0xC700,
-    0xADDA, 0x37D6,
-    0xADDC, 0x0124,
-    0xADDE, 0x1306,
-    0xADE0, 0x06E7,
-    0xADE2, 0x0357,
-    0xADE4, 0x0606,
-    0xADE6, 0x9386,
-    0xADE8, 0xA61D,
-    0xADEA, 0x0356,
-    0xADEC, 0x6606,
-    0xADEE, 0x5DBF,
-    0xADF0, 0x1743,
-    0xADF2, 0x02FC,
-    0xADF4, 0xE702,
-    0xADF6, 0x036D,
-    0xADF8, 0xB7D7,
-    0xADFA, 0x0024,
-    0xADFC, 0x83C7,
-    0xADFE, 0x476D,
-    0xAE00, 0x8544,
-    0xAE02, 0x6380,
-    0xAE04, 0x9714,
-    0xAE06, 0xB7E7,
-    0xAE08, 0x0024,
-    0xAE0A, 0x03C4,
-    0xAE0C, 0xC784,
-    0xAE0E, 0xB7A7,
-    0xAE10, 0x0124,
-    0xAE12, 0x83C7,
-    0xAE14, 0x6792,
-    0xAE16, 0x3334,
-    0xAE18, 0x8000,
-    0xAE1A, 0x3304,
-    0xAE1C, 0x8040,
-    0xAE1E, 0x7998,
-    0xAE20, 0x1304,
-    0xAE22, 0x6402,
-    0xAE24, 0xEDE7,
-    0xAE26, 0xB767,
-    0xAE28, 0x0024,
-    0xAE2A, 0x9387,
-    0xAE2C, 0x0733,
-    0xAE2E, 0x03D7,
-    0xAE30, 0xE75B,
-    0xAE32, 0x19C7,
-    0xAE34, 0x1347,
-    0xAE36, 0xF7FF,
-    0xAE38, 0x618F,
-    0xAE3A, 0x1314,
-    0xAE3C, 0x0701,
-    0xAE3E, 0x4180,
-    0xAE40, 0x83D7,
-    0xAE42, 0x075C,
-    0xAE44, 0x0D45,
-    0xAE46, 0x5D8C,
-    0xAE48, 0x4204,
-    0xAE4A, 0x4180,
-    0xAE4C, 0xA285,
-    0xAE4E, 0x97D0,
-    0xAE50, 0xFFFB,
-    0xAE52, 0xE780,
-    0xAE54, 0xA0BB,
-    0xAE56, 0x9315,
-    0xAE58, 0x0501,
-    0xAE5A, 0xC181,
-    0xAE5C, 0xAA84,
-    0xAE5E, 0x6309,
-    0xAE60, 0xB400,
-    0xAE62, 0x0565,
-    0xAE64, 0xA18D,
-    0xAE66, 0x2D05,
-    0xAE68, 0x97A0,
-    0xAE6A, 0xFFFB,
-    0xAE6C, 0xE780,
-    0xAE6E, 0x8046,
-    0xAE70, 0x1395,
-    0xAE72, 0x0401,
-    0xAE74, 0x93F7,
-    0xAE76, 0x1400,
-    0xAE78, 0x4181,
-    0xAE7A, 0x91CB,
-    0xAE7C, 0xB7D7,
-    0xAE7E, 0x0124,
-    0xAE80, 0x9387,
-    0xAE82, 0x07C4,
-    0xAE84, 0x03D7,
-    0xAE86, 0x4707,
-    0xAE88, 0x0507,
-    0xAE8A, 0x239A,
-    0xAE8C, 0xE706,
-    0xAE8E, 0x9377,
-    0xAE90, 0x2500,
-    0xAE92, 0x91CB,
-    0xAE94, 0xB7D7,
-    0xAE96, 0x0124,
-    0xAE98, 0x9387,
-    0xAE9A, 0x07C4,
-    0xAE9C, 0x03D7,
-    0xAE9E, 0xC70C,
-    0xAEA0, 0x0507,
-    0xAEA2, 0x2396,
-    0xAEA4, 0xE70C,
-    0xAEA6, 0x9377,
-    0xAEA8, 0x4500,
-    0xAEAA, 0x91CB,
-    0xAEAC, 0xB7D7,
-    0xAEAE, 0x0124,
-    0xAEB0, 0x9387,
-    0xAEB2, 0x07C4,
-    0xAEB4, 0x03D7,
-    0xAEB6, 0xE70C,
-    0xAEB8, 0x0507,
-    0xAEBA, 0x2397,
-    0xAEBC, 0xE70C,
-    0xAEBE, 0x9377,
-    0xAEC0, 0x0502,
-    0xAEC2, 0x91CB,
-    0xAEC4, 0xB7D7,
-    0xAEC6, 0x0124,
-    0xAEC8, 0x9387,
-    0xAECA, 0x07C4,
-    0xAECC, 0x03D7,
-    0xAECE, 0x070F,
-    0xAED0, 0x0507,
-    0xAED2, 0x2398,
-    0xAED4, 0xE70E,
-    0xAED6, 0x9377,
-    0xAED8, 0x0520,
-    0xAEDA, 0x91CB,
-    0xAEDC, 0xB7D7,
-    0xAEDE, 0x0124,
-    0xAEE0, 0x9387,
-    0xAEE2, 0x07C4,
-    0xAEE4, 0x03D7,
-    0xAEE6, 0x6708,
-    0xAEE8, 0x0507,
-    0xAEEA, 0x2393,
-    0xAEEC, 0xE708,
-    0xAEEE, 0x1375,
-    0xAEF0, 0x0504,
-    0xAEF2, 0x11C9,
-    0xAEF4, 0xB7D7,
-    0xAEF6, 0x0124,
-    0xAEF8, 0x9387,
-    0xAEFA, 0x07C4,
-    0xAEFC, 0x03D7,
-    0xAEFE, 0xA708,
-    0xAF00, 0x0507,
-    0xAF02, 0x2395,
-    0xAF04, 0xE708,
-    0xAF06, 0x1743,
-    0xAF08, 0x02FC,
-    0xAF0A, 0x6700,
-    0xAF0C, 0xE35D,
-    0xAF0E, 0xB7D7,
-    0xAF10, 0x0124,
-    0xAF12, 0x83D7,
-    0xAF14, 0xA7E7,
-    0xAF16, 0x81DB,
-    0xAF18, 0x9760,
-    0xAF1A, 0xFEFB,
-    0xAF1C, 0xE780,
-    0xAF1E, 0x8068,
-    0xAF20, 0x6311,
-    0xAF22, 0x9506,
-    0xAF24, 0xB797,
-    0xAF26, 0x0124,
-    0xAF28, 0x9387,
-    0xAF2A, 0x07D7,
-    0xAF2C, 0x03C7,
-    0xAF2E, 0xC701,
-    0xAF30, 0x83C7,
-    0xAF32, 0x2706,
-    0xAF34, 0x6307,
-    0xAF36, 0xF704,
-    0xAF38, 0x1364,
-    0xAF3A, 0x0424,
-    0xAF3C, 0x4204,
-    0xAF3E, 0x4180,
-    0xAF40, 0x11A0,
-    0xAF42, 0x0144,
-    0xAF44, 0xB767,
-    0xAF46, 0x0024,
-    0xAF48, 0x9387,
-    0xAF4A, 0x0733,
-    0xAF4C, 0x03C7,
-    0xAF4E, 0x273B,
-    0xAF50, 0xE30F,
-    0xAF52, 0x07EC,
-    0xAF54, 0x37A7,
-    0xAF56, 0x0124,
-    0xAF58, 0x0347,
-    0xAF5A, 0x6792,
-    0xAF5C, 0xE309,
-    0xAF5E, 0x07EC,
-    0xAF60, 0x37D7,
-    0xAF62, 0x0124,
-    0xAF64, 0x0357,
-    0xAF66, 0xA7E7,
-    0xAF68, 0xE303,
-    0xAF6A, 0x07EC,
-    0xAF6C, 0x3797,
-    0xAF6E, 0x0124,
-    0xAF70, 0x0347,
-    0xAF72, 0x1700,
-    0xAF74, 0xE30D,
-    0xAF76, 0x07EA,
-    0xAF78, 0x1374,
-    0xAF7A, 0xF4DF,
-    0xAF7C, 0x4204,
-    0xAF7E, 0x4180,
-    0xAF80, 0x7DB5,
-    0xAF82, 0x9760,
-    0xAF84, 0xFEFB,
-    0xAF86, 0xE780,
-    0xAF88, 0xE061,
-    0xAF8A, 0x8547,
-    0xAF8C, 0xE31C,
-    0xAF8E, 0xF5FA,
-    0xAF90, 0xB797,
-    0xAF92, 0x0124,
-    0xAF94, 0x9387,
-    0xAF96, 0x07D7,
-    0xAF98, 0x03C7,
-    0xAF9A, 0xC701,
-    0xAF9C, 0x83C7,
-    0xAF9E, 0x2706,
-    0xAFA0, 0xE312,
-    0xAFA2, 0xF7FA,
-    0xAFA4, 0x1364,
-    0xAFA6, 0x0420,
-    0xAFA8, 0x4204,
-    0xAFAA, 0x4180,
-    0xAFAC, 0x61BF,
-    0xAFAE, 0x0100,
-    0xAFB0, 0x7171,
-    0xAFB2, 0x22D7,
-    0xAFB4, 0x26D5,
-    0xAFB6, 0x7324,
-    0xAFB8, 0x2034,
-    0xAFBA, 0xF324,
-    0xAFBC, 0x1034,
-    0xAFBE, 0x7360,
-    0xAFC0, 0x0430,
-    0xAFC2, 0x2EC5,
-    0xAFC4, 0xA565,
-    0xAFC6, 0xBEDC,
-    0xAFC8, 0x06D3,
-    0xAFCA, 0x16D1,
-    0xAFCC, 0x1ACF,
-    0xAFCE, 0x1ECD,
-    0xAFD0, 0x22CB,
-    0xAFD2, 0x2AC7,
-    0xAFD4, 0x32C3,
-    0xAFD6, 0x36C1,
-    0xAFD8, 0xBADE,
-    0xAFDA, 0xC2DA,
-    0xAFDC, 0xC6D8,
-    0xAFDE, 0xF2D0,
-    0xAFE0, 0xF6CE,
-    0xAFE2, 0xFACC,
-    0xAFE4, 0xFECA,
-    0xAFE6, 0x82E2,
-    0xAFE8, 0x86E0,
-    0xAFEA, 0x0AFE,
-    0xAFEC, 0x0EFC,
-    0xAFEE, 0x12FA,
-    0xAFF0, 0x16F8,
-    0xAFF2, 0x1AF6,
-    0xAFF4, 0x1EF4,
-    0xAFF6, 0x2AF2,
-    0xAFF8, 0x2EF0,
-    0xAFFA, 0x32EE,
-    0xAFFC, 0x26C9,
-    0xAFFE, 0xCAD6,
-    0xB000, 0xCED4,
-    0xB002, 0xD2D2,
-    0xB004, 0x9385,
-    0xB006, 0x0540,
-    0xB008, 0x0545,
-    0xB00A, 0x36EC,
-    0xB00C, 0x3AEA,
-    0xB00E, 0x3EE8,
-    0xB010, 0x42E6,
-    0xB012, 0x46E4,
-    0xB014, 0x72E2,
-    0xB016, 0x76E0,
-    0xB018, 0x272E,
-    0xB01A, 0xE1FF,
-    0xB01C, 0x272C,
-    0xB01E, 0xF1FF,
-    0xB020, 0x97D0,
-    0xB022, 0xFFFB,
-    0xB024, 0xE780,
-    0xB026, 0x4097,
-    0xB028, 0xA167,
-    0xB02A, 0xE98F,
-    0xB02C, 0x2A84,
-    0xB02E, 0x6394,
-    0xB030, 0x0718,
-    0xB032, 0xB764,
-    0xB034, 0x0124,
-    0xB036, 0x9384,
-    0xB038, 0x0440,
-    0xB03A, 0x8567,
-    0xB03C, 0xE18F,
-    0xB03E, 0xCDCF,
-    0xB040, 0x37D7,
-    0xB042, 0x0124,
-    0xB044, 0x3789,
-    0xB046, 0x0224,
-    0xB048, 0x1307,
-    0xB04A, 0x07C4,
-    0xB04C, 0x1309,
-    0xB04E, 0xC949,
-    0xB050, 0x8356,
-    0xB052, 0x670E,
-    0xB054, 0x8327,
-    0xB056, 0x0905,
-    0xB058, 0x8506,
-    0xB05A, 0x8507,
-    0xB05C, 0x2328,
-    0xB05E, 0xF904,
-    0xB060, 0x2313,
-    0xB062, 0xD70E,
-    0xB064, 0x858B,
-    0xB066, 0x639F,
-    0xB068, 0x071A,
-    0xB06A, 0x8547,
-    0xB06C, 0xA30A,
-    0xB06E, 0xF904,
-    0xB070, 0x9770,
-    0xB072, 0xFFFB,
-    0xB074, 0xE780,
-    0xB076, 0x00FF,
-    0xB078, 0x19C5,
-    0xB07A, 0x0357,
-    0xB07C, 0x4905,
-    0xB07E, 0x9307,
-    0xB080, 0x1010,
-    0xB082, 0x6306,
-    0xB084, 0xF724,
-    0xB086, 0xDC50,
-    0xB088, 0x0945,
-    0xB08A, 0x8297,
-    0xB08C, 0x9770,
-    0xB08E, 0xFFFB,
-    0xB090, 0xE780,
-    0xB092, 0xC085,
-    0xB094, 0x11C5,
-    0xB096, 0x9770,
-    0xB098, 0xFFFB,
-    0xB09A, 0xE780,
-    0xB09C, 0x2088,
-    0xB09E, 0x55C5,
-    0xB0A0, 0x9760,
-    0xB0A2, 0x00FC,
-    0xB0A4, 0xE780,
-    0xB0A6, 0x405A,
-    0xB0A8, 0xB787,
-    0xB0AA, 0x0024,
-    0xB0AC, 0x83C7,
-    0xB0AE, 0x078C,
-    0xB0B0, 0xAA89,
-    0xB0B2, 0x6392,
-    0xB0B4, 0x071C,
-    0xB0B6, 0xB7D7,
-    0xB0B8, 0x0124,
-    0xB0BA, 0x9387,
-    0xB0BC, 0x07E7,
-    0xB0BE, 0xBC5F,
-    0xB0C0, 0x639A,
-    0xB0C2, 0x0716,
-    0xB0C4, 0x3799,
-    0xB0C6, 0x0124,
-    0xB0C8, 0x1309,
-    0xB0CA, 0x0953,
-    0xB0CC, 0xB727,
-    0xB0CE, 0x0024,
-    0xB0D0, 0x83C7,
-    0xB0D2, 0x7752,
-    0xB0D4, 0x6396,
-    0xB0D6, 0x071E,
-    0xB0D8, 0x0345,
-    0xB0DA, 0xC918,
-    0xB0DC, 0x631D,
-    0xB0DE, 0x051C,
-    0xB0E0, 0xDC50,
-    0xB0E2, 0x0D45,
-    0xB0E4, 0x8297,
-    0xB0E6, 0x4E85,
-    0xB0E8, 0x9760,
-    0xB0EA, 0x00FC,
-    0xB0EC, 0xE780,
-    0xB0EE, 0x005A,
-    0xB0F0, 0x8567,
-    0xB0F2, 0x3E99,
-    0xB0F4, 0x2320,
-    0xB0F6, 0xA9A2,
-    0xB0F8, 0x1374,
-    0xB0FA, 0x0440,
-    0xB0FC, 0x21C4,
-    0xB0FE, 0xB7D7,
-    0xB100, 0x0124,
-    0xB102, 0x9387,
-    0xB104, 0x07C4,
-    0xB106, 0x37A7,
-    0xB108, 0x0124,
-    0xB10A, 0x83D6,
-    0xB10C, 0x670E,
-    0xB10E, 0x1307,
-    0xB110, 0x0753,
-    0xB112, 0x0347,
-    0xB114, 0x179B,
-    0xB116, 0x8506,
-    0xB118, 0x3784,
-    0xB11A, 0x0224,
-    0xB11C, 0x1304,
-    0xB11E, 0xC449,
-    0xB120, 0x1337,
-    0xB122, 0x1700,
-    0xB124, 0x2393,
-    0xB126, 0xD70E,
-    0xB128, 0x230A,
-    0xB12A, 0xE404,
-    0xB12C, 0x9770,
-    0xB12E, 0xFFFB,
-    0xB130, 0xE780,
-    0xB132, 0x40F3,
-    0xB134, 0x6306,
-    0xB136, 0x0510,
-    0xB138, 0x0357,
-    0xB13A, 0x4405,
-    0xB13C, 0x9307,
-    0xB13E, 0x1010,
-    0xB140, 0x6300,
-    0xB142, 0xF710,
-    0xB144, 0xDC50,
-    0xB146, 0x1D45,
-    0xB148, 0x8297,
-    0xB14A, 0x9A50,
-    0xB14C, 0x8A52,
-    0xB14E, 0x7A43,
-    0xB150, 0xEA43,
-    0xB152, 0x5A44,
-    0xB154, 0xCA44,
-    0xB156, 0x3A45,
-    0xB158, 0xAA45,
-    0xB15A, 0x1A46,
-    0xB15C, 0x8A46,
-    0xB15E, 0x7657,
-    0xB160, 0xE657,
-    0xB162, 0x5658,
-    0xB164, 0xC658,
-    0xB166, 0x3659,
-    0xB168, 0xA659,
-    0xB16A, 0x165A,
-    0xB16C, 0x065E,
-    0xB16E, 0xF64E,
-    0xB170, 0x664F,
-    0xB172, 0xD64F,
-    0xB174, 0x1660,
-    0xB176, 0x8660,
-    0xB178, 0x7271,
-    0xB17A, 0xE271,
-    0xB17C, 0x5272,
-    0xB17E, 0xC272,
-    0xB180, 0x3273,
-    0xB182, 0xA273,
-    0xB184, 0x1275,
-    0xB186, 0x8275,
-    0xB188, 0x7266,
-    0xB18A, 0xE266,
-    0xB18C, 0x5267,
-    0xB18E, 0xC267,
-    0xB190, 0x3268,
-    0xB192, 0xA268,
-    0xB194, 0x126E,
-    0xB196, 0x826E,
-    0xB198, 0x072F,
-    0xB19A, 0xC1FF,
-    0xB19C, 0x872F,
-    0xB19E, 0x81FF,
-    0xB1A0, 0x7370,
-    0xB1A2, 0x0430,
-    0xB1A4, 0x7390,
-    0xB1A6, 0x1434,
-    0xB1A8, 0x7310,
-    0xB1AA, 0x2434,
-    0xB1AC, 0x3A54,
-    0xB1AE, 0xAA54,
-    0xB1B0, 0x4D61,
-    0xB1B2, 0x7300,
-    0xB1B4, 0x2030,
-    0xB1B6, 0x37D9,
-    0xB1B8, 0x0124,
-    0xB1BA, 0x1309,
-    0xB1BC, 0x09C4,
-    0xB1BE, 0x8357,
-    0xB1C0, 0x490E,
-    0xB1C2, 0xB764,
-    0xB1C4, 0x0124,
-    0xB1C6, 0x9384,
-    0xB1C8, 0x0440,
-    0xB1CA, 0xD850,
-    0xB1CC, 0x8507,
-    0xB1CE, 0x0145,
-    0xB1D0, 0x2312,
-    0xB1D2, 0xF90E,
-    0xB1D4, 0x0297,
-    0xB1D6, 0x9760,
-    0xB1D8, 0xFFFB,
-    0xB1DA, 0xE780,
-    0xB1DC, 0x2071,
-    0xB1DE, 0x25E5,
-    0xB1E0, 0xB729,
-    0xB1E2, 0x0024,
-    0xB1E4, 0x3799,
-    0xB1E6, 0x0124,
-    0xB1E8, 0x9389,
-    0xB1EA, 0x0933,
-    0xB1EC, 0x1309,
-    0xB1EE, 0x0953,
-    0xB1F0, 0x056A,
-    0xB1F2, 0x83C7,
-    0xB1F4, 0x791F,
-    0xB1F6, 0x4A9A,
-    0xB1F8, 0x2320,
-    0xB1FA, 0x0AA2,
-    0xB1FC, 0xB9EF,
-    0xB1FE, 0x0345,
-    0xB200, 0xC918,
-    0xB202, 0x2DE5,
-    0xB204, 0x83C7,
-    0xB206, 0x0920,
-    0xB208, 0x89C7,
-    0xB20A, 0x0327,
-    0xB20C, 0x4AB3,
-    0xB20E, 0x630A,
-    0xB210, 0xF700,
-    0xB212, 0x97E0,
-    0xB214, 0x00FC,
-    0xB216, 0xE780,
-    0xB218, 0xE0D2,
-    0xB21A, 0xDC50,
-    0xB21C, 0x0545,
-    0xB21E, 0x8297,
-    0xB220, 0x29BD,
-    0xB222, 0x01A0,
-    0xB224, 0x8547,
-    0xB226, 0x230A,
-    0xB228, 0x0904,
-    0xB22A, 0xA30A,
-    0xB22C, 0x0904,
-    0xB22E, 0x2328,
-    0xB230, 0xF904,
-    0xB232, 0x3DBD,
-    0xB234, 0x7D55,
-    0xB236, 0x9770,
-    0xB238, 0x01FC,
-    0xB23A, 0xE780,
-    0xB23C, 0xA004,
-    0xB23E, 0x59B5,
-    0xB240, 0xEFE0,
-    0xB242, 0x5FD9,
-    0xB244, 0x01B7,
-    0xB246, 0x9760,
-    0xB248, 0xFFFB,
-    0xB24A, 0xE780,
-    0xB24C, 0x206D,
-    0xB24E, 0x49F9,
-    0xB250, 0x8357,
-    0xB252, 0x490E,
-    0xB254, 0x858B,
-    0xB256, 0xC9F7,
-    0xB258, 0xCDBD,
-    0xB25A, 0x9770,
-    0xB25C, 0x01FC,
-    0xB25E, 0xE780,
-    0xB260, 0x2003,
-    0xB262, 0x2311,
-    0xB264, 0xA94E,
-    0xB266, 0x0345,
-    0xB268, 0xC918,
-    0xB26A, 0x49DD,
-    0xB26C, 0x97C0,
-    0xB26E, 0xFFFB,
-    0xB270, 0xE780,
-    0xB272, 0x40B4,
-    0xB274, 0x41BF,
-    0xB276, 0x9770,
-    0xB278, 0x01FC,
-    0xB27A, 0xE780,
-    0xB27C, 0x6001,
-    0xB27E, 0x3799,
-    0xB280, 0x0124,
-    0xB282, 0x1309,
-    0xB284, 0x0953,
-    0xB286, 0x8D67,
-    0xB288, 0xCA97,
-    0xB28A, 0x03C7,
-    0xB28C, 0xD76F,
-    0xB28E, 0x232E,
-    0xB290, 0xA94E,
-    0xB292, 0x8547,
-    0xB294, 0x6306,
-    0xB296, 0xF700,
-    0xB298, 0x8327,
-    0xB29A, 0x094F,
-    0xB29C, 0xE377,
-    0xB29E, 0xF5EA,
-    0xB2A0, 0x9760,
-    0xB2A2, 0x00FC,
-    0xB2A4, 0xE780,
-    0xB2A6, 0x80FC,
-    0xB2A8, 0x9770,
-    0xB2AA, 0x01FC,
-    0xB2AC, 0xE780,
-    0xB2AE, 0x40FE,
-    0xB2B0, 0x2320,
-    0xB2B2, 0xA950,
-    0xB2B4, 0x21BD,
-    0xB2B6, 0x97C0,
-    0xB2B8, 0xFFFB,
-    0xB2BA, 0xE780,
-    0xB2BC, 0xA0B2,
-    0xB2BE, 0x0DB5,
-    0xB2C0, 0x9770,
-    0xB2C2, 0x01FC,
-    0xB2C4, 0xE780,
-    0xB2C6, 0xC0FC,
-    0xB2C8, 0x2312,
-    0xB2CA, 0xA94E,
-    0xB2CC, 0x31B5,
-    0xB2CE, 0xEFE0,
-    0xB2D0, 0x7FD0,
-    0xB2D2, 0x55BB,
-    0xB2D4, 0x1743,
-    0xB2D6, 0x02FC,
-    0xB2D8, 0xE702,
-    0xB2DA, 0xC31E,
-    0xB2DC, 0x2A84,
-    0xB2DE, 0xEFD0,
-    0xB2E0, 0xBFA7,
-    0xB2E2, 0x8947,
-    0xB2E4, 0x6306,
-    0xB2E6, 0xF400,
-    0xB2E8, 0x1743,
-    0xB2EA, 0x02FC,
-    0xB2EC, 0x6700,
-    0xB2EE, 0xC31F,
-    0xB2F0, 0xB7E7,
-    0xB2F2, 0x0024,
-    0xB2F4, 0x03D7,
-    0xB2F6, 0xC7C8,
-    0xB2F8, 0x8564,
-    0xB2FA, 0x9387,
-    0xB2FC, 0xF4B3,
-    0xB2FE, 0xE315,
-    0xB300, 0xF7FE,
-    0xB302, 0x37A9,
-    0xB304, 0x0224,
-    0xB306, 0x1309,
-    0xB308, 0x8954,
-    0xB30A, 0x8347,
-    0xB30C, 0x190C,
-    0xB30E, 0xE9FF,
-    0xB310, 0x9770,
-    0xB312, 0xFFFB,
-    0xB314, 0xE780,
-    0xB316, 0x00E3,
-    0xB318, 0x61F9,
-    0xB31A, 0x9770,
-    0xB31C, 0xFFFB,
-    0xB31E, 0xE780,
-    0xB320, 0xA0E3,
-    0xB322, 0x79F1,
-    0xB324, 0x3725,
-    0xB326, 0x0224,
-    0xB328, 0x1305,
-    0xB32A, 0x05ED,
-    0xB32C, 0x9700,
-    0xB32E, 0xFFFB,
-    0xB330, 0xE780,
-    0xB332, 0x80FA,
-    0xB334, 0xB797,
-    0xB336, 0x0124,
-    0xB338, 0x3767,
-    0xB33A, 0x0124,
-    0xB33C, 0x0327,
-    0xB33E, 0x0740,
-    0xB340, 0x9387,
-    0xB342, 0x0753,
-    0xB344, 0xA697,
-    0xB346, 0x8544,
-    0xB348, 0x1D45,
-    0xB34A, 0x238D,
-    0xB34C, 0x97CE,
-    0xB34E, 0x0297,
-    0xB350, 0xA300,
-    0xB352, 0x990C,
-    0xB354, 0x9780,
-    0xB356, 0x01FC,
-    0xB358, 0xE780,
-    0xB35A, 0x0083,
-    0xB35C, 0x51F5,
-    0xB35E, 0xB727,
-    0xB360, 0x0124,
-    0xB362, 0x2380,
-    0xB364, 0x8754,
-    0xB366, 0x97B0,
-    0xB368, 0xFEFB,
-    0xB36A, 0xE780,
-    0xB36C, 0x6002,
-    0xB36E, 0x2301,
-    0xB370, 0x990C,
-    0xB372, 0x9DBF,
-    0xB374, 0x1743,
-    0xB376, 0x02FC,
-    0xB378, 0xE702,
-    0xB37A, 0xC314,
-    0xB37C, 0x37A4,
-    0xB37E, 0x0224,
-    0xB380, 0x1304,
-    0xB382, 0x8454,
-    0xB384, 0x0347,
-    0xB386, 0x240C,
-    0xB388, 0x8547,
-    0xB38A, 0x630A,
-    0xB38C, 0xF700,
-    0xB38E, 0x97B0,
-    0xB390, 0xFEFB,
-    0xB392, 0xE780,
-    0xB394, 0xE069,
-    0xB396, 0x1743,
-    0xB398, 0x02FC,
-    0xB39A, 0x6700,
-    0xB39C, 0xE314,
-    0xB39E, 0x9770,
-    0xB3A0, 0x01FC,
-    0xB3A2, 0xE780,
-    0xB3A4, 0x607E,
-    0xB3A6, 0x65F5,
-    0xB3A8, 0x97B0,
-    0xB3AA, 0xFEFB,
-    0xB3AC, 0xE780,
-    0xB3AE, 0x800F,
-    0xB3B0, 0x2301,
-    0xB3B2, 0x040C,
-    0xB3B4, 0xE9BF,
-    0xB3B6, 0x0100,
-    0xB3B8, 0x1743,
-    0xB3BA, 0x02FC,
-    0xB3BC, 0xE702,
-    0xB3BE, 0x8310,
-    0xB3C0, 0x9D47,
-    0xB3C2, 0x631F,
-    0xB3C4, 0xF500,
-    0xB3C6, 0x3794,
-    0xB3C8, 0x0124,
-    0xB3CA, 0x1304,
-    0xB3CC, 0x0453,
-    0xB3CE, 0x8567,
-    0xB3D0, 0xA297,
-    0xB3D2, 0x83C7,
-    0xB3D4, 0xA7CF,
-    0xB3D6, 0x9DE7,
-    0xB3D8, 0x1743,
-    0xB3DA, 0x02FC,
-    0xB3DC, 0x6700,
-    0xB3DE, 0xC310,
-    0xB3E0, 0x2A84,
-    0xB3E2, 0xEFD0,
-    0xB3E4, 0x7FDD,
-    0xB3E6, 0x8547,
-    0xB3E8, 0xE318,
-    0xB3EA, 0xF4FE,
-    0xB3EC, 0xB7E7,
-    0xB3EE, 0x0124,
-    0xB3F0, 0x9387,
-    0xB3F2, 0x074C,
-    0xB3F4, 0x23AE,
-    0xB3F6, 0x0710,
-    0xB3F8, 0x23A4,
-    0xB3FA, 0x077E,
-    0xB3FC, 0x1743,
-    0xB3FE, 0x02FC,
-    0xB400, 0x6700,
-    0xB402, 0x830E,
-    0xB404, 0x9770,
-    0xB406, 0xFFFB,
-    0xB408, 0xE780,
-    0xB40A, 0xC0D3,
-    0xB40C, 0x71F5,
-    0xB40E, 0x9770,
-    0xB410, 0xFFFB,
-    0xB412, 0xE780,
-    0xB414, 0x60D4,
-    0xB416, 0x69F1,
-    0xB418, 0x8D67,
-    0xB41A, 0x3E94,
-    0xB41C, 0x8327,
-    0xB41E, 0x846D,
-    0xB420, 0xB724,
-    0xB422, 0x0124,
-    0xB424, 0x9384,
-    0xB426, 0x045F,
-    0xB428, 0x91EF,
-    0xB42A, 0x83A7,
-    0xB42C, 0x440E,
-    0xB42E, 0x99CB,
-    0xB430, 0xB7D7,
-    0xB432, 0x0124,
-    0xB434, 0x83C7,
-    0xB436, 0x07FA,
-    0xB438, 0xC5D3,
-    0xB43A, 0x9700,
-    0xB43C, 0xFFFB,
-    0xB43E, 0xE780,
-    0xB440, 0x20E3,
-    0xB442, 0x59BF,
-    0xB444, 0x83A7,
-    0xB446, 0xC40A,
-    0xB448, 0xC1DB,
-    0xB44A, 0x0545,
-    0xB44C, 0x9730,
-    0xB44E, 0xFEFB,
-    0xB450, 0xE780,
-    0xB452, 0x8051,
-    0xB454, 0xB735,
-    0xB456, 0x202D,
-    0xB458, 0x7578,
-    0xB45A, 0x37F5,
-    0xB45C, 0x202D,
-    0xB45E, 0x9385,
-    0xB460, 0x0560,
-    0xB462, 0x1308,
-    0xB464, 0x08A0,
-    0xB466, 0x9168,
-    0xB468, 0x1305,
-    0xB46A, 0x0560,
-    0xB46C, 0xB387,
-    0xB46E, 0x0501,
-    0xB470, 0x03C7,
-    0xB472, 0x0700,
-    0xB474, 0x9306,
-    0xB476, 0xF00F,
-    0xB478, 0x1316,
-    0xB47A, 0x8701,
-    0xB47C, 0x6186,
-    0xB47E, 0x0607,
-    0xB480, 0x6344,
-    0xB482, 0x0600,
-    0xB484, 0x9376,
-    0xB486, 0xF70F,
-    0xB488, 0x2380,
-    0xB48A, 0xD700,
-    0xB48C, 0x8507,
-    0xB48E, 0xE391,
-    0xB490, 0xB7FE,
-    0xB492, 0xB385,
-    0xB494, 0x1701,
-    0xB496, 0xE39B,
-    0xB498, 0xA5FC,
-    0xB49A, 0xB7A7,
-    0xB49C, 0x0224,
-    0xB49E, 0x0547,
-    0xB4A0, 0x0145,
-    0xB4A2, 0xA384,
-    0xB4A4, 0xE760,
-    0xB4A6, 0x9730,
-    0xB4A8, 0xFEFB,
-    0xB4AA, 0xE780,
-    0xB4AC, 0xE04B,
-    0xB4AE, 0xB7D7,
-    0xB4B0, 0x0124,
-    0xB4B2, 0x83C7,
-    0xB4B4, 0x07FA,
-    0xB4B6, 0x8DD3,
-    0xB4B8, 0x8327,
-    0xB4BA, 0x846D,
-    0xB4BC, 0x91FF,
-    0xB4BE, 0x83A7,
-    0xB4C0, 0x440E,
-    0xB4C2, 0x99DB,
-    0xB4C4, 0x9DBF,
-    0xB4C6, 0x0100,
-    0xB4C8, 0x1743,
-    0xB4CA, 0x02FC,
-    0xB4CC, 0xE702,
-    0xB4CE, 0x83FF,
-    0xB4D0, 0xB7D7,
-    0xB4D2, 0x0124,
-    0xB4D4, 0x9387,
-    0xB4D6, 0x07F4,
-    0xB4D8, 0x03C7,
-    0xB4DA, 0x1705,
-    0xB4DC, 0x2A84,
-    0xB4DE, 0x11C7,
-    0xB4E0, 0x03C7,
-    0xB4E2, 0x1700,
-    0xB4E4, 0x8947,
-    0xB4E6, 0x6307,
-    0xB4E8, 0xF704,
-    0xB4EA, 0xB7E7,
-    0xB4EC, 0x0124,
-    0xB4EE, 0x9387,
-    0xB4F0, 0x0787,
-    0xB4F2, 0x83A4,
-    0xB4F4, 0x870F,
-    0xB4F6, 0x03A9,
-    0xB4F8, 0xC70F,
-    0xB4FA, 0x0146,
-    0xB4FC, 0xA685,
-    0xB4FE, 0x4A85,
-    0xB500, 0x9730,
-    0xB502, 0x01FC,
-    0xB504, 0xE780,
-    0xB506, 0x4054,
-    0xB508, 0x2285,
-    0xB50A, 0x97D0,
-    0xB50C, 0xFEFB,
-    0xB50E, 0xE780,
-    0xB510, 0x20D7,
-    0xB512, 0x4A85,
-    0xB514, 0x0546,
-    0xB516, 0xA685,
-    0xB518, 0x9730,
-    0xB51A, 0x01FC,
-    0xB51C, 0xE780,
-    0xB51E, 0xC052,
-    0xB520, 0xB7C7,
-    0xB522, 0x0224,
-    0xB524, 0x83A7,
-    0xB526, 0x07B7,
-    0xB528, 0x1145,
-    0xB52A, 0x8297,
-    0xB52C, 0x1743,
-    0xB52E, 0x02FC,
-    0xB530, 0x6700,
-    0xB532, 0x83FB,
-    0xB534, 0xB7E7,
-    0xB536, 0x0024,
-    0xB538, 0x83D6,
-    0xB53A, 0xC7C8,
-    0xB53C, 0x8567,
-    0xB53E, 0x1387,
-    0xB540, 0xF7B3,
-    0xB542, 0xE394,
-    0xB544, 0xE6FA,
-    0xB546, 0x3797,
-    0xB548, 0x0124,
-    0xB54A, 0x1307,
-    0xB54C, 0x0753,
-    0xB54E, 0xBA97,
-    0xB550, 0x03A5,
-    0xB552, 0x07B2,
-    0xB554, 0x8145,
-    0xB556, 0x3325,
-    0xB558, 0xA000,
-    0xB55A, 0x97D0,
-    0xB55C, 0x00FC,
-    0xB55E, 0xE780,
-    0xB560, 0x60BB,
-    0xB562, 0x61B7,
-    0xB564, 0x1743,
-    0xB566, 0x02FC,
-    0xB568, 0xE702,
-    0xB56A, 0xC3F5,
-    0xB56C, 0x9760,
-    0xB56E, 0xFFFB,
-    0xB570, 0xE780,
-    0xB572, 0xC037,
-    0xB574, 0x11C5,
-    0xB576, 0xB7E7,
-    0xB578, 0x0024,
-    0xB57A, 0x83C7,
-    0xB57C, 0xC784,
-    0xB57E, 0xBDEF,
-    0xB580, 0x1384,
-    0xB582, 0x81E7,
-    0xB584, 0x0347,
-    0xB586, 0x8400,
-    0xB588, 0x8547,
-    0xB58A, 0x6303,
-    0xB58C, 0xF706,
-    0xB58E, 0x0357,
-    0xB590, 0x2403,
-    0xB592, 0xB767,
-    0xB594, 0x0040,
-    0xB596, 0x2398,
-    0xB598, 0xE718,
-    0xB59A, 0x8357,
-    0xB59C, 0x4403,
-    0xB59E, 0x3767,
-    0xB5A0, 0x0040,
-    0xB5A2, 0x2314,
-    0xB5A4, 0xF720,
-    0xB5A6, 0x9760,
-    0xB5A8, 0xFFFB,
-    0xB5AA, 0xE780,
-    0xB5AC, 0x2034,
-    0xB5AE, 0x19C5,
-    0xB5B0, 0xB7E7,
-    0xB5B2, 0x0024,
-    0xB5B4, 0x03C7,
-    0xB5B6, 0xC784,
-    0xB5B8, 0x8147,
-    0xB5BA, 0x09EB,
-    0xB5BC, 0x8346,
-    0xB5BE, 0x8400,
-    0xB5C0, 0x0547,
-    0xB5C2, 0x8147,
-    0xB5C4, 0x6384,
-    0xB5C6, 0xE600,
-    0xB5C8, 0x8357,
-    0xB5CA, 0xC405,
-    0xB5CC, 0x37A7,
-    0xB5CE, 0x0040,
-    0xB5D0, 0x2312,
-    0xB5D2, 0xF710,
-    0xB5D4, 0x9770,
-    0xB5D6, 0xFFFB,
-    0xB5D8, 0xE780,
-    0xB5DA, 0xC0B6,
-    0xB5DC, 0x35C1,
-    0xB5DE, 0x9770,
-    0xB5E0, 0xFFFB,
-    0xB5E2, 0xE780,
-    0xB5E4, 0x60B7,
-    0xB5E6, 0x05C9,
-    0xB5E8, 0x1743,
-    0xB5EA, 0x02FC,
-    0xB5EC, 0x6700,
-    0xB5EE, 0xC3EF,
-    0xB5F0, 0xB767,
-    0xB5F2, 0x0040,
-    0xB5F4, 0x2398,
-    0xB5F6, 0x0718,
-    0xB5F8, 0x8147,
-    0xB5FA, 0x55B7,
-    0xB5FC, 0xB767,
-    0xB5FE, 0x0040,
-    0xB600, 0x2398,
-    0xB602, 0x0718,
-    0xB604, 0x1384,
-    0xB606, 0x81E7,
-    0xB608, 0x8346,
-    0xB60A, 0x8400,
-    0xB60C, 0x0547,
-    0xB60E, 0x8147,
-    0xB610, 0xE395,
-    0xB612, 0xE6F8,
-    0xB614, 0x69B7,
-    0xB616, 0x9760,
-    0xB618, 0xFFFB,
-    0xB61A, 0xE780,
-    0xB61C, 0x202D,
-    0xB61E, 0x31ED,
-    0xB620, 0x8346,
-    0xB622, 0x8400,
-    0xB624, 0x0547,
-    0xB626, 0x8147,
-    0xB628, 0x6384,
-    0xB62A, 0xE600,
-    0xB62C, 0x8357,
-    0xB62E, 0x4408,
-    0xB630, 0x3787,
-    0xB632, 0x0040,
-    0xB634, 0x2314,
-    0xB636, 0xF710,
-    0xB638, 0x1743,
-    0xB63A, 0x02FC,
-    0xB63C, 0x6700,
-    0xB63E, 0xC3EA,
-    0xB640, 0x9770,
-    0xB642, 0xFFFB,
-    0xB644, 0xE780,
-    0xB646, 0x40B1,
-    0xB648, 0x59F9,
-    0xB64A, 0x9760,
-    0xB64C, 0xFFFB,
-    0xB64E, 0xE780,
-    0xB650, 0xE029,
-    0xB652, 0x19C5,
-    0xB654, 0xB7E7,
-    0xB656, 0x0024,
-    0xB658, 0x03C7,
-    0xB65A, 0xC784,
-    0xB65C, 0x8147,
-    0xB65E, 0x09EB,
-    0xB660, 0x8346,
-    0xB662, 0x8400,
-    0xB664, 0x0547,
-    0xB666, 0x8147,
-    0xB668, 0x6384,
-    0xB66A, 0xE600,
-    0xB66C, 0x8357,
-    0xB66E, 0x6407,
-    0xB670, 0x3707,
-    0xB672, 0x0140,
-    0xB674, 0x2314,
-    0xB676, 0xF710,
-    0xB678, 0x9DB7,
-    0xB67A, 0xB7E7,
-    0xB67C, 0x0024,
-    0xB67E, 0x03C7,
-    0xB680, 0xC784,
-    0xB682, 0x8147,
-    0xB684, 0x55F7,
-    0xB686, 0x69BF,
-    0xB688, 0x1743,
-    0xB68A, 0x02FC,
-    0xB68C, 0xE702,
-    0xB68E, 0x03E1,
-    0xB690, 0x4111,
-    0xB692, 0x3A84,
-    0xB694, 0x22E6,
-    0xB696, 0x26E4,
-    0xB698, 0x4AE2,
-    0xB69A, 0x4EE0,
-    0xB69C, 0xAA84,
-    0xB69E, 0x3689,
-    0xB6A0, 0x97A0,
-    0xB6A2, 0xFEFB,
-    0xB6A4, 0xE780,
-    0xB6A6, 0x8066,
-    0xB6A8, 0xB727,
-    0xB6AA, 0x0224,
-    0xB6AC, 0x9387,
-    0xB6AE, 0x076B,
-    0xB6B0, 0xA297,
-    0xB6B2, 0x0567,
-    0xB6B4, 0xBA97,
-    0xB6B6, 0x83C7,
-    0xB6B8, 0x078D,
-    0xB6BA, 0x639D,
-    0xB6BC, 0x0718,
-    0xB6BE, 0x83C7,
-    0xB6C0, 0x0400,
-    0xB6C2, 0x6399,
-    0xB6C4, 0x0718,
-    0xB6C6, 0xB7A7,
-    0xB6C8, 0x0224,
-    0xB6CA, 0x9389,
-    0xB6CC, 0x8754,
-    0xB6CE, 0x03C7,
-    0xB6D0, 0x9905,
-    0xB6D2, 0x6301,
-    0xB6D4, 0x0718,
-    0xB6D6, 0x03CA,
-    0xB6D8, 0xA905,
-    0xB6DA, 0x03D6,
-    0xB6DC, 0xA90B,
-    0xB6DE, 0x37E7,
-    0xB6E0, 0x0124,
-    0xB6E2, 0x0355,
-    0xB6E4, 0x675F,
-    0xB6E6, 0x9387,
-    0xB6E8, 0x8754,
-    0xB6EA, 0x0147,
-    0xB6EC, 0xA145,
-    0xB6EE, 0x6369,
-    0xB6F0, 0xA622,
-    0xB6F2, 0x83D6,
-    0xB6F4, 0xC70A,
-    0xB6F6, 0x8907,
-    0xB6F8, 0x63F1,
-    0xB6FA, 0xA626,
-    0xB6FC, 0x0507,
-    0xB6FE, 0xE318,
-    0xB700, 0xB7FE,
-    0xB702, 0x37CB,
-    0xB704, 0x0224,
-    0xB706, 0x5309,
-    0xB708, 0x00F0,
-    0xB70A, 0x8727,
-    0xB70C, 0x8BB7,
-    0xB70E, 0x9D46,
-    0xB710, 0x4379,
-    0xB712, 0xF990,
-    0xB714, 0x1307,
-    0xB716, 0x0705,
-    0xB718, 0x0607,
-    0xB71A, 0x4E97,
-    0xB71C, 0x8357,
-    0xB71E, 0xC700,
-    0xB720, 0x118D,
-    0xB722, 0x5377,
-    0xB724, 0x05D0,
-    0xB726, 0x918F,
-    0xB728, 0xD3F7,
-    0xB72A, 0x07D0,
-    0xB72C, 0x9317,
-    0xB72E, 0x3A00,
-    0xB730, 0xB697,
-    0xB732, 0x5377,
-    0xB734, 0xF718,
-    0xB736, 0x9387,
-    0xB738, 0x8702,
-    0xB73A, 0x8607,
-    0xB73C, 0xCE97,
-    0xB73E, 0x83D7,
-    0xB740, 0xC700,
-    0xB742, 0x0726,
-    0xB744, 0x8BB7,
-    0xB746, 0x13F7,
-    0xB748, 0xF70F,
-    0xB74A, 0xA183,
-    0xB74C, 0xD377,
-    0xB74E, 0x07D0,
-    0xB750, 0xD3F6,
-    0xB752, 0x07D0,
-    0xB754, 0xC3F7,
-    0xB756, 0xC768,
-    0xB758, 0x5379,
-    0xB75A, 0xF908,
-    0xB75C, 0x4379,
-    0xB75E, 0xE978,
-    0xB760, 0x9770,
-    0xB762, 0xFFFB,
-    0xB764, 0xE780,
-    0xB766, 0xC08A,
-    0xB768, 0xAA8A,
-    0xB76A, 0x93DA,
-    0xB76C, 0x8A40,
-    0xB76E, 0x9770,
-    0xB770, 0xFFFB,
-    0xB772, 0xE780,
-    0xB774, 0xE089,
-    0xB776, 0xC20A,
-    0xB778, 0x9307,
-    0xB77A, 0x8A04,
-    0xB77C, 0x1375,
-    0xB77E, 0xF50F,
-    0xB780, 0x93DA,
-    0xB782, 0x0A41,
-    0xB784, 0xD3F7,
-    0xB786, 0x0AD0,
-    0xB788, 0xD374,
-    0xB78A, 0x05D0,
-    0xB78C, 0x0727,
-    0xB78E, 0x8BB7,
-    0xB790, 0x8607,
-    0xB792, 0xCE97,
-    0xB794, 0x03DC,
-    0xB796, 0xC700,
-    0xB798, 0xC3F4,
-    0xB79A, 0xE478,
-    0xB79C, 0xDC4C,
-    0xB79E, 0x5374,
-    0xB7A0, 0x0CD0,
-    0xB7A2, 0xD307,
-    0xB7A4, 0x00F0,
-    0xB7A6, 0x83D4,
-    0xB7A8, 0xC700,
-    0xB7AA, 0x53F4,
-    0xB7AC, 0x8408,
-    0xB7AE, 0x130A,
-    0xB7B0, 0x0A05,
-    0xB7B2, 0x060A,
-    0xB7B4, 0x4E9A,
-    0xB7B6, 0x035A,
-    0xB7B8, 0x4A00,
-    0xB7BA, 0xD317,
-    0xB7BC, 0xF4A0,
-    0xB7BE, 0x99C3,
-    0xB7C0, 0x5314,
-    0xB7C2, 0x8420,
-    0xB7C4, 0xB7CB,
-    0xB7C6, 0x0224,
-    0xB7C8, 0x83A7,
-    0xB7CA, 0x0BB7,
-    0xB7CC, 0x0D45,
-    0xB7CE, 0x8297,
-    0xB7D0, 0xD397,
-    0xB7D2, 0x14C0,
-    0xB7D4, 0xC207,
-    0xB7D6, 0xC183,
-    0xB7D8, 0x6395,
-    0xB7DA, 0x870B,
-    0xB7DC, 0xB747,
-    0xB7DE, 0x0124,
-    0xB7E0, 0x9387,
-    0xB7E2, 0x0727,
-    0xB7E4, 0x03D7,
-    0xB7E6, 0x6712,
-    0xB7E8, 0x83D6,
-    0xB7EA, 0xE710,
-    0xB7EC, 0x8947,
-    0xB7EE, 0x7D17,
-    0xB7F0, 0xB397,
-    0xB7F2, 0xE700,
-    0xB7F4, 0xD3F7,
-    0xB7F6, 0x07D0,
-    0xB7F8, 0x53F7,
-    0xB7FA, 0x16D0,
-    0xB7FC, 0x5304,
-    0xB7FE, 0x00F0,
-    0xB800, 0xD3F7,
-    0xB802, 0x2711,
-    0xB804, 0x37CA,
-    0xB806, 0x0224,
-    0xB808, 0xD3F7,
-    0xB80A, 0xE718,
-    0xB80C, 0xB7C7,
-    0xB80E, 0x0224,
-    0xB810, 0x07A7,
-    0xB812, 0xC7B7,
-    0xB814, 0x83A7,
-    0xB816, 0x0BB7,
-    0xB818, 0x2545,
-    0xB81A, 0xD3F7,
-    0xB81C, 0xE700,
-    0xB81E, 0xD39A,
-    0xB820, 0x17C0,
-    0xB822, 0x8297,
-    0xB824, 0x8727,
-    0xB826, 0x0AB8,
-    0xB828, 0xC20A,
-    0xB82A, 0x93DA,
-    0xB82C, 0x0A01,
-    0xB82E, 0x5374,
-    0xB830, 0xF410,
-    0xB832, 0xD694,
-    0xB834, 0xC204,
-    0xB836, 0x2393,
-    0xB838, 0x590D,
-    0xB83A, 0xC180,
-    0xB83C, 0xD317,
-    0xB83E, 0x14C0,
-    0xB840, 0x2392,
-    0xB842, 0xF90C,
-    0xB844, 0xB707,
-    0xB846, 0x0040,
-    0xB848, 0x19EC,
-    0xB84A, 0x9387,
-    0xB84C, 0xE703,
-    0xB84E, 0xCA97,
-    0xB850, 0x2390,
-    0xB852, 0x9700,
-    0xB854, 0x3264,
-    0xB856, 0xA264,
-    0xB858, 0x1269,
-    0xB85A, 0x8269,
-    0xB85C, 0x4101,
-    0xB85E, 0x1743,
-    0xB860, 0x02FC,
-    0xB862, 0x6700,
-    0xB864, 0x23C7,
-    0xB866, 0x9387,
-    0xB868, 0x0704,
-    0xB86A, 0x3264,
-    0xB86C, 0xA264,
-    0xB86E, 0x1269,
-    0xB870, 0x8269,
-    0xB872, 0xCA97,
-    0xB874, 0x2390,
-    0xB876, 0x9700,
-    0xB878, 0x4101,
-    0xB87A, 0x1743,
-    0xB87C, 0x02FC,
-    0xB87E, 0x6700,
-    0xB880, 0x63C5,
-    0xB882, 0x9377,
-    0xB884, 0xFA0F,
-    0xB886, 0x135A,
-    0xB888, 0x8A00,
-    0xB88A, 0x8729,
-    0xB88C, 0x8BB7,
-    0xB88E, 0xD3F7,
-    0xB890, 0x07D0,
-    0xB892, 0xD376,
-    0xB894, 0x0AD0,
-    0xB896, 0x37CA,
-    0xB898, 0x0224,
-    0xB89A, 0x0727,
-    0xB89C, 0x0AB8,
-    0xB89E, 0xC3F7,
-    0xB8A0, 0x3769,
-    0xB8A2, 0x5374,
-    0xB8A4, 0xF418,
-    0xB8A6, 0x5374,
-    0xB8A8, 0xE410,
-    0xB8AA, 0x531B,
-    0xB8AC, 0x14C0,
-    0xB8AE, 0x420B,
-    0xB8B0, 0x135B,
-    0xB8B2, 0x0B01,
-    0xB8B4, 0x5A85,
-    0xB8B6, 0x9760,
-    0xB8B8, 0x00FC,
-    0xB8BA, 0xE780,
-    0xB8BC, 0xA01A,
-    0xB8BE, 0xAA8A,
-    0xB8C0, 0x5A85,
-    0xB8C2, 0x9760,
-    0xB8C4, 0x00FC,
-    0xB8C6, 0xE780,
-    0xB8C8, 0xE019,
-    0xB8CA, 0x93DA,
-    0xB8CC, 0x8A00,
-    0xB8CE, 0xD397,
-    0xB8D0, 0x04C0,
-    0xB8D2, 0xC20A,
-    0xB8D4, 0x1375,
-    0xB8D6, 0xF50F,
-    0xB8D8, 0x93DA,
-    0xB8DA, 0x0A01,
-    0xB8DC, 0x5374,
-    0xB8DE, 0x05D0,
-    0xB8E0, 0xD3F7,
-    0xB8E2, 0x0AD0,
-    0xB8E4, 0xC207,
-    0xB8E6, 0xC187,
-    0xB8E8, 0x4374,
-    0xB8EA, 0x3479,
-    0xB8EC, 0x63D7,
-    0xB8EE, 0x8703,
-    0xB8F0, 0x5374,
-    0xB8F2, 0x8918,
-    0xB8F4, 0xB747,
-    0xB8F6, 0x0124,
-    0xB8F8, 0x9387,
-    0xB8FA, 0x0727,
-    0xB8FC, 0x03D7,
-    0xB8FE, 0x6712,
-    0xB900, 0x83D6,
-    0xB902, 0xE710,
-    0xB904, 0x8947,
-    0xB906, 0x7D17,
-    0xB908, 0xB397,
-    0xB90A, 0xE700,
-    0xB90C, 0xD3F7,
-    0xB90E, 0x07D0,
-    0xB910, 0x53F7,
-    0xB912, 0x16D0,
-    0xB914, 0xD3F7,
-    0xB916, 0x8710,
-    0xB918, 0xC5BD,
-    0xB91A, 0x5374,
-    0xB91C, 0x8910,
-    0xB91E, 0xD9BF,
-    0xB920, 0x9317,
-    0xB922, 0x4A00,
-    0xB924, 0xCE97,
-    0xB926, 0x83D7,
-    0xB928, 0xA706,
-    0xB92A, 0x93F6,
-    0xB92C, 0xF70F,
-    0xB92E, 0x37CB,
-    0xB930, 0x0224,
-    0xB932, 0xA183,
-    0xB934, 0x53F9,
-    0xB936, 0x06D0,
-    0xB938, 0xD3F7,
-    0xB93A, 0x07D0,
-    0xB93C, 0x0727,
-    0xB93E, 0x8BB7,
-    0xB940, 0x4379,
-    0xB942, 0xE978,
-    0xB944, 0xE30E,
-    0xB946, 0x07E0,
-    0xB948, 0x9307,
-    0xB94A, 0xF704,
-    0xB94C, 0x8607,
-    0xB94E, 0xCE97,
-    0xB950, 0x03D6,
-    0xB952, 0xC700,
-    0xB954, 0x9306,
-    0xB956, 0xF7FF,
-    0xB958, 0x75BB,
-    0xB95A, 0x9317,
-    0xB95C, 0x3A00,
-    0xB95E, 0xBA97,
-    0xB960, 0x9387,
-    0xB962, 0x8702,
-    0xB964, 0x8607,
-    0xB966, 0xCE97,
-    0xB968, 0x83D7,
-    0xB96A, 0xC700,
-    0xB96C, 0x7DBF,
-    0xB96E, 0x0100,
-    0xB970, 0x1743,
-    0xB972, 0x02FC,
-    0xB974, 0xE702,
-    0xB976, 0x63B3,
-    0xB978, 0xB747,
-    0xB97A, 0x0124,
-    0xB97C, 0x03D7,
-    0xB97E, 0xC7E1,
-    0xB980, 0x8947,
-    0xB982, 0x2A84,
-    0xB984, 0xAE84,
-    0xB986, 0x6319,
-    0xB988, 0xF700,
-    0xB98A, 0xB7A7,
-    0xB98C, 0x0124,
-    0xB98E, 0x03A7,
-    0xB990, 0x4706,
-    0xB992, 0xFD57,
-    0xB994, 0x6304,
-    0xB996, 0xF704,
-    0xB998, 0xB7E7,
-    0xB99A, 0x0124,
-    0xB99C, 0x9387,
-    0xB99E, 0x0787,
-    0xB9A0, 0x03A9,
-    0xB9A2, 0x8710,
-    0xB9A4, 0x83A9,
-    0xB9A6, 0xC710,
-    0xB9A8, 0x0146,
-    0xB9AA, 0xCA85,
-    0xB9AC, 0x4E85,
-    0xB9AE, 0x9730,
-    0xB9B0, 0x01FC,
-    0xB9B2, 0xE780,
-    0xB9B4, 0x6009,
-    0xB9B6, 0xA685,
-    0xB9B8, 0x2285,
-    0xB9BA, 0x97C0,
-    0xB9BC, 0x00FC,
-    0xB9BE, 0xE780,
-    0xB9C0, 0x6075,
-    0xB9C2, 0x4E85,
-    0xB9C4, 0x0546,
-    0xB9C6, 0xCA85,
-    0xB9C8, 0x9730,
-    0xB9CA, 0x01FC,
-    0xB9CC, 0xE780,
-    0xB9CE, 0xC007,
-    0xB9D0, 0xB7C7,
-    0xB9D2, 0x0224,
-    0xB9D4, 0x83A7,
-    0xB9D6, 0x07B7,
-    0xB9D8, 0x1545,
-    0xB9DA, 0x8297,
-    0xB9DC, 0x1743,
-    0xB9DE, 0x02FC,
-    0xB9E0, 0x6700,
-    0xB9E2, 0xE3AF,
-    0xB9E4, 0xB7C7,
-    0xB9E6, 0x0224,
-    0xB9E8, 0x03A6,
-    0xB9EA, 0x47B7,
-    0xB9EC, 0xB707,
-    0xB9EE, 0x0040,
-    0xB9F0, 0x9387,
-    0xB9F2, 0x0706,
-    0xB9F4, 0x3E96,
-    0xB9F6, 0x0967,
-    0xB9F8, 0x1308,
-    0xB9FA, 0x0502,
-    0xB9FC, 0xAA87,
-    0xB9FE, 0x098E,
-    0xBA00, 0x1307,
-    0xBA02, 0xF7F1,
-    0xBA04, 0x2390,
-    0xBA06, 0xE700,
-    0xBA08, 0xB306,
-    0xBA0A, 0xF600,
-    0xBA0C, 0x2390,
-    0xBA0E, 0xE600,
-    0xBA10, 0x8907,
-    0xBA12, 0xE399,
-    0xBA14, 0x07FF,
-    0xBA16, 0x83C7,
-    0xBA18, 0xC500,
-    0xBA1A, 0xB1CB,
-    0xBA1C, 0x83AF,
-    0xBA1E, 0x0500,
-    0xBA20, 0x0963,
-    0xBA22, 0x1388,
-    0xBA24, 0xE500,
-    0xBA26, 0x8147,
-    0xBA28, 0x0D4F,
-    0xBA2A, 0x854E,
-    0xBA2C, 0x094E,
-    0xBA2E, 0x1303,
-    0xBA30, 0x03F0,
-    0xBA32, 0x3317,
-    0xBA34, 0xFF00,
-    0xBA36, 0x3377,
-    0xBA38, 0xF701,
-    0xBA3A, 0x3396,
-    0xBA3C, 0xFE00,
-    0xBA3E, 0xB316,
-    0xBA40, 0xFE00,
-    0xBA42, 0x798E,
-    0xBA44, 0xB308,
-    0xBA46, 0xF500,
-    0xBA48, 0xF98E,
-    0xBA4A, 0x8907,
-    0xBA4C, 0x7D47,
-    0xBA4E, 0x19C2,
-    0xBA50, 0x0347,
-    0xBA52, 0x0800,
-    0xBA54, 0x1A86,
-    0xBA56, 0x81C6,
-    0xBA58, 0x0346,
-    0xBA5A, 0x1800,
-    0xBA5C, 0x2206,
-    0xBA5E, 0x518F,
-    0xBA60, 0x2390,
-    0xBA62, 0xE800,
-    0xBA64, 0x03C7,
-    0xBA66, 0xC500,
-    0xBA68, 0x0908,
-    0xBA6A, 0xE3C4,
-    0xBA6C, 0xE7FC,
-    0xBA6E, 0xB7C7,
-    0xBA70, 0x0224,
-    0xBA72, 0x83A7,
-    0xBA74, 0x07B7,
-    0xBA76, 0x1D45,
-    0xBA78, 0x8287,
-    0xBA7A, 0x0100,
-    0xBA7C, 0x1743,
-    0xBA7E, 0x02FC,
-    0xBA80, 0xE702,
-    0xBA82, 0x43A4,
-    0xBA84, 0xB7A7,
-    0xBA86, 0x0224,
-    0xBA88, 0x03C7,
-    0xBA8A, 0x6760,
-    0xBA8C, 0x8547,
-    0xBA8E, 0x630C,
-    0xBA90, 0xF700,
-    0xBA92, 0xB7C7,
-    0xBA94, 0x0224,
-    0xBA96, 0x83A7,
-    0xBA98, 0x07B7,
-    0xBA9A, 0x2145,
-    0xBA9C, 0x8297,
-    0xBA9E, 0x1743,
-    0xBAA0, 0x02FC,
-    0xBAA2, 0x6700,
-    0xBAA4, 0x63A4,
-    0xBAA6, 0x9760,
-    0xBAA8, 0xFFFB,
-    0xBAAA, 0xE780,
-    0xBAAC, 0xE0E8,
-    0xBAAE, 0x75D1,
-    0xBAB0, 0xB7E7,
-    0xBAB2, 0x0024,
-    0xBAB4, 0x83C7,
-    0xBAB6, 0xB7AD,
-    0xBAB8, 0xE9FF,
-    0xBABA, 0xB7B7,
-    0xBABC, 0x0024,
-    0xBABE, 0x03D7,
-    0xBAC0, 0x4733,
-    0xBAC2, 0xB707,
-    0xBAC4, 0x0140,
-    0xBAC6, 0x2399,
-    0xBAC8, 0xE7DC,
-    0xBACA, 0xE1B7,
-    0xBACC, 0x1743,
-    0xBACE, 0x02FC,
-    0xBAD0, 0xE702,
-    0xBAD2, 0x439F,
-    0xBAD4, 0xB7B7,
-    0xBAD6, 0x0224,
-    0xBAD8, 0x9387,
-    0xBADA, 0x87B4,
-    0xBADC, 0x23AE,
-    0xBADE, 0xF194,
-    0xBAE0, 0x3764,
-    0xBAE2, 0x0124,
-    0xBAE4, 0x9D66,
-    0xBAE6, 0xB7B5,
-    0xBAE8, 0x0224,
-    0xBAEA, 0xB7B7,
-    0xBAEC, 0x0224,
-    0xBAEE, 0x1304,
-    0xBAF0, 0x0440,
-    0xBAF2, 0x9387,
-    0xBAF4, 0xC783,
-    0xBAF6, 0x9386,
-    0xBAF8, 0xF6BF,
-    0xBAFA, 0x1146,
-    0xBAFC, 0x9385,
-    0xBAFE, 0x05FB,
-    0xBB00, 0x0545,
-    0xBB02, 0x5CC4,
-    0xBB04, 0x97E0,
-    0xBB06, 0xFFFB,
-    0xBB08, 0xE780,
-    0xBB0A, 0xC0E8,
-    0xBB0C, 0xC166,
-    0xBB0E, 0xB7B5,
-    0xBB10, 0x0224,
-    0xBB12, 0xFD16,
-    0xBB14, 0x3146,
-    0xBB16, 0x9385,
-    0xBB18, 0x4598,
-    0xBB1A, 0x4145,
-    0xBB1C, 0x97E0,
-    0xBB1E, 0xFFFB,
-    0xBB20, 0xE780,
-    0xBB22, 0x40E7,
-    0xBB24, 0x37B7,
-    0xBB26, 0x0224,
-    0xBB28, 0x1307,
-    0xBB2A, 0x87B7,
-    0xBB2C, 0xB7A7,
-    0xBB2E, 0x0224,
-    0xBB30, 0x9387,
-    0xBB32, 0x8754,
-    0xBB34, 0x78C8,
-    0xBB36, 0x37B7,
-    0xBB38, 0x0224,
-    0xBB3A, 0xA380,
-    0xBB3C, 0x070C,
-    0xBB3E, 0x2381,
-    0xBB40, 0x070C,
-    0xBB42, 0x1307,
-    0xBB44, 0xC7C2,
-    0xBB46, 0xB7B7,
-    0xBB48, 0x0224,
-    0xBB4A, 0x18D4,
-    0xBB4C, 0x9387,
-    0xBB4E, 0x472D,
-    0xBB50, 0x37B7,
-    0xBB52, 0x0224,
-    0xBB54, 0x7CC4,
-    0xBB56, 0x1307,
-    0xBB58, 0x873B,
-    0xBB5A, 0xB7B7,
-    0xBB5C, 0x0224,
-    0xBB5E, 0x18C0,
-    0xBB60, 0x9387,
-    0xBB62, 0x4737,
-    0xBB64, 0x23AA,
-    0xBB66, 0xF1A4,
-    0xBB68, 0x1743,
-    0xBB6A, 0x02FC,
-    0xBB6C, 0x6700,
-    0xBB6E, 0xC397,
-    0xBB70, 0x14A6,
-    0xBB72, 0x0224,
-    0xBB74, 0x008D,
-    0xBB76, 0x0000,
-    0xBB78, 0x0000,
-    0xBB7A, 0x803B,
-    0xBB7C, 0x0000,
-    0xBB7E, 0x003F,
-    0xBB80, 0x0000,
-    0xBB82, 0x8043,
-    0xBC98, 0x1743,
-    0xBC9A, 0x02FC,
-    0xBC9C, 0xE702,
-    0xBC9E, 0x8382,
-    0xBCA0, 0x2A84,
-    0xBCA2, 0xEFE0,
-    0xBCA4, 0xBFB9,
-    0xBCA6, 0xA147,
-    0xBCA8, 0x6306,
-    0xBCAA, 0xF400,
-    0xBCAC, 0x1743,
-    0xBCAE, 0x02FC,
-    0xBCB0, 0x6700,
-    0xBCB2, 0x8383,
-    0xBCB4, 0xB7C7,
-    0xBCB6, 0x0224,
-    0xBCB8, 0x83C7,
-    0xBCBA, 0x87B8,
-    0xBCBC, 0xE5DB,
-    0xBCBE, 0xB797,
-    0xBCC0, 0x0124,
-    0xBCC2, 0x9387,
-    0xBCC4, 0x0753,
-    0xBCC6, 0x0567,
-    0xBCC8, 0x3E97,
-    0xBCCA, 0x8346,
-    0xBCCC, 0x07B9,
-    0xBCCE, 0xF9DE,
-    0xBCD0, 0x83C7,
-    0xBCD2, 0x673F,
-    0xBCD4, 0xE1DF,
-    0xBCD6, 0x8357,
-    0xBCD8, 0x47B6,
-    0xBCDA, 0x93E7,
-    0xBCDC, 0x0720,
-    0xBCDE, 0x2312,
-    0xBCE0, 0xF7B6,
-    0xBCE2, 0xE9B7,
-    0xBCE4, 0x1733,
-    0xBCE6, 0x02FC,
-    0xBCE8, 0xE702,
-    0xBCEA, 0x437B,
-    0xBCEC, 0x37C8,
-    0xBCEE, 0x0224,
-    0xBCF0, 0x1308,
-    0xBCF2, 0x48B8,
-    0xBCF4, 0x8348,
-    0xBCF6, 0x4800,
-    0xBCF8, 0x2A8B,
-    0xBCFA, 0xAE8B,
-    0xBCFC, 0x3284,
-    0xBCFE, 0xB684,
-    0xBD00, 0x3A89,
-    0xBD02, 0xBE89,
-    0xBD04, 0x6380,
-    0xBD06, 0x0802,
-    0xBD08, 0xB7A7,
-    0xBD0A, 0x0124,
-    0xBD0C, 0x9387,
-    0xBD0E, 0x0753,
-    0xBD10, 0x03C7,
-    0xBD12, 0x07B9,
-    0xBD14, 0x83C7,
-    0xBD16, 0xB792,
-    0xBD18, 0x11C7,
-    0xBD1A, 0x0347,
-    0xBD1C, 0x5800,
-    0xBD1E, 0xBD8B,
-    0xBD20, 0x6306,
-    0xBD22, 0xF704,
-    0xBD24, 0x37E8,
-    0xBD26, 0x0124,
-    0xBD28, 0x1308,
-    0xBD2A, 0x0887,
-    0xBD2C, 0x832A,
-    0xBD2E, 0x0812,
-    0xBD30, 0x032A,
-    0xBD32, 0x4812,
-    0xBD34, 0x0146,
-    0xBD36, 0xD685,
-    0xBD38, 0x5285,
-    0xBD3A, 0x9730,
-    0xBD3C, 0x01FC,
-    0xBD3E, 0xE780,
-    0xBD40, 0xA0D0,
-    0xBD42, 0xCE87,
-    0xBD44, 0x4A87,
-    0xBD46, 0xA686,
-    0xBD48, 0x2286,
-    0xBD4A, 0xDE85,
-    0xBD4C, 0x5A85,
-    0xBD4E, 0x9740,
-    0xBD50, 0x00FC,
-    0xBD52, 0xE780,
-    0xBD54, 0xA066,
-    0xBD56, 0x0546,
-    0xBD58, 0xD685,
-    0xBD5A, 0x5285,
-    0xBD5C, 0x9730,
-    0xBD5E, 0x01FC,
-    0xBD60, 0xE780,
-    0xBD62, 0x80CE,
-    0xBD64, 0x1733,
-    0xBD66, 0x02FC,
-    0xBD68, 0x6700,
-    0xBD6A, 0xC376,
-    0xBD6C, 0x2315,
-    0xBD6E, 0x0600,
-    0xBD70, 0x9760,
-    0xBD72, 0xFFFB,
-    0xBD74, 0xE780,
-    0xBD76, 0x80BA,
-    0xBD78, 0x01CD,
-    0xBD7A, 0xB797,
-    0xBD7C, 0x0124,
-    0xBD7E, 0x9387,
-    0xBD80, 0x07D7,
-    0xBD82, 0x03C7,
-    0xBD84, 0xC700,
-    0xBD86, 0x59DF,
-    0xBD88, 0x7D17,
-    0xBD8A, 0x2386,
-    0xBD8C, 0xE700,
-    0xBD8E, 0x59BF,
-    0xBD90, 0x9760,
-    0xBD92, 0xFFFB,
-    0xBD94, 0xE780,
-    0xBD96, 0x80B5,
-    0xBD98, 0x6DD1,
-    0xBD9A, 0xB797,
-    0xBD9C, 0x0124,
-    0xBD9E, 0x9387,
-    0xBDA0, 0x07D7,
-    0xBDA2, 0x03C7,
-    0xBDA4, 0xD700,
-    0xBDA6, 0x3DDF,
-    0xBDA8, 0x7D17,
-    0xBDAA, 0xA386,
-    0xBDAC, 0xE700,
-    0xBDAE, 0x9DBF,
-    0xBDB0, 0x1733,
-    0xBDB2, 0x02FC,
-    0xBDB4, 0xE702,
-    0xBDB6, 0x636F,
-    0xBDB8, 0xB7E7,
-    0xBDBA, 0x0124,
-    0xBDBC, 0x9387,
-    0xBDBE, 0x0787,
-    0xBDC0, 0x03AA,
-    0xBDC2, 0x8712,
-    0xBDC4, 0x83A9,
-    0xBDC6, 0xC712,
-    0xBDC8, 0xAE84,
-    0xBDCA, 0x2A84,
-    0xBDCC, 0x3289,
-    0xBDCE, 0xD285,
-    0xBDD0, 0x0146,
-    0xBDD2, 0x4E85,
-    0xBDD4, 0x9730,
-    0xBDD6, 0x01FC,
-    0xBDD8, 0xE780,
-    0xBDDA, 0x00C7,
-    0xBDDC, 0xA685,
-    0xBDDE, 0x4A86,
-    0xBDE0, 0x2285,
-    0xBDE2, 0x9760,
-    0xBDE4, 0xFFFB,
-    0xBDE6, 0xE780,
-    0xBDE8, 0x206A,
-    0xBDEA, 0xAA84,
-    0xBDEC, 0x0546,
-    0xBDEE, 0xD285,
-    0xBDF0, 0x4E85,
-    0xBDF2, 0x9730,
-    0xBDF4, 0x01FC,
-    0xBDF6, 0xE780,
-    0xBDF8, 0x20C5,
-    0xBDFA, 0xB7C7,
-    0xBDFC, 0x0224,
-    0xBDFE, 0x9387,
-    0xBE00, 0x47B8,
-    0xBE02, 0x03C7,
-    0xBE04, 0xE710,
-    0xBE06, 0x15C3,
-    0xBE08, 0x37A7,
-    0xBE0A, 0x0124,
-    0xBE0C, 0x1307,
-    0xBE0E, 0x0753,
-    0xBE10, 0x0346,
-    0xBE12, 0x37B9,
-    0xBE14, 0x8946,
-    0xBE16, 0x631A,
-    0xBE18, 0xD600,
-    0xBE1A, 0x8356,
-    0xBE1C, 0x87BA,
-    0xBE1E, 0xE18E,
-    0xBE20, 0x89C6,
-    0xBE22, 0x9306,
-    0xBE24, 0x0040,
-    0xBE26, 0x6307,
-    0xBE28, 0xD400,
-    0xBE2A, 0x2685,
-    0xBE2C, 0x1733,
-    0xBE2E, 0x02FC,
-    0xBE30, 0x6700,
-    0xBE32, 0xE36A,
-    0xBE34, 0x8326,
-    0xBE36, 0x47B3,
-    0xBE38, 0x7D57,
-    0xBE3A, 0xE388,
-    0xBE3C, 0xE6FE,
-    0xBE3E, 0x03D7,
-    0xBE40, 0x2711,
-    0xBE42, 0x9396,
-    0xBE44, 0x0401,
-    0xBE46, 0xC182,
-    0xBE48, 0x11E3,
-    0xBE4A, 0x3687,
-    0xBE4C, 0xBA84,
-    0xBE4E, 0x2399,
-    0xBE50, 0xD710,
-    0xBE52, 0xE1BF,
-    0xBE54, 0x1733,
-    0xBE56, 0x02FC,
-    0xBE58, 0xE702,
-    0xBE5A, 0x2365,
-    0xBE5C, 0x3729,
-    0xBE5E, 0x0024,
-    0xBE60, 0xB7A4,
-    0xBE62, 0x0124,
-    0xBE64, 0x1309,
-    0xBE66, 0x0933,
-    0xBE68, 0x9384,
-    0xBE6A, 0x0453,
-    0xBE6C, 0x8347,
-    0xBE6E, 0x491A,
-    0xBE70, 0x03C7,
-    0xBE72, 0x24B7,
-    0xBE74, 0x2A84,
-    0xBE76, 0xD98F,
-    0xBE78, 0x6382,
-    0xBE7A, 0x0714,
-    0xBE7C, 0x8347,
-    0xBE7E, 0xE400,
-    0xBE80, 0x0547,
-    0xBE82, 0x2305,
-    0xBE84, 0xE400,
-    0xBE86, 0x99E7,
-    0xBE88, 0x8347,
-    0xBE8A, 0xC400,
-    0xBE8C, 0xD1CF,
-    0xBE8E, 0x83C7,
-    0xBE90, 0x24B7,
-    0xBE92, 0xC5CB,
-    0xBE94, 0xB76A,
-    0xBE96, 0x0124,
-    0xBE98, 0x130A,
-    0xBE9A, 0x0403,
-    0xBE9C, 0x0347,
-    0xBE9E, 0x0400,
-    0xBEA0, 0xA169,
-    0xBEA2, 0xFD19,
-    0xBEA4, 0xA301,
-    0xBEA6, 0xE400,
-    0xBEA8, 0x83A7,
-    0xBEAA, 0x0A4B,
-    0xBEAC, 0x2302,
-    0xBEAE, 0xE400,
-    0xBEB0, 0x0567,
-    0xBEB2, 0xBA97,
-    0xBEB4, 0x83D7,
-    0xBEB6, 0x47E0,
-    0xBEB8, 0x2303,
-    0xBEBA, 0x0400,
-    0xBEBC, 0xB3F7,
-    0xBEBE, 0x3701,
-    0xBEC0, 0x231C,
-    0xBEC2, 0xF400,
-    0xBEC4, 0x9740,
-    0xBEC6, 0xFDFB,
-    0xBEC8, 0xE780,
-    0xBECA, 0x0067,
-    0xBECC, 0x0358,
-    0xBECE, 0x8401,
-    0xBED0, 0xA308,
-    0xBED2, 0xA400,
-    0xBED4, 0x6301,
-    0xBED6, 0x0806,
-    0xBED8, 0x3736,
-    0xBEDA, 0x0520,
-    0xBEDC, 0x1306,
-    0xBEDE, 0x06C8,
-    0xBEE0, 0x8146,
-    0xBEE2, 0x8147,
-    0xBEE4, 0x4145,
-    0xBEE6, 0xB305,
-    0xBEE8, 0xF400,
-    0xBEEA, 0x3357,
-    0xBEEC, 0xF840,
-    0xBEEE, 0x2380,
-    0xBEF0, 0xD502,
-    0xBEF2, 0x058B,
-    0xBEF4, 0x8507,
-    0xBEF6, 0x11C7,
-    0xBEF8, 0x0347,
-    0xBEFA, 0x0600,
-    0xBEFC, 0xBA96,
-    0xBEFE, 0x93F6,
-    0xBF00, 0xF60F,
-    0xBF02, 0x0506,
-    0xBF04, 0xE391,
-    0xBF06, 0xA7FE,
-    0xBF08, 0x2308,
-    0xBF0A, 0xD400,
-    0xBF0C, 0x8347,
-    0xBF0E, 0x491A,
-    0xBF10, 0x03C7,
-    0xBF12, 0x24B7,
-    0xBF14, 0xD98F,
-    0xBF16, 0xC9C3,
-    0xBF18, 0x2307,
-    0xBF1A, 0x0400,
-    0xBF1C, 0x232E,
-    0xBF1E, 0x4401,
-    0xBF20, 0x1733,
-    0xBF22, 0x02FC,
-    0xBF24, 0x6700,
-    0xBF26, 0xA35B,
-    0xBF28, 0x8347,
-    0xBF2A, 0xB400,
-    0xBF2C, 0xA5D7,
-    0xBF2E, 0x83C7,
-    0xBF30, 0x24B7,
-    0xBF32, 0xADF3,
-    0xBF34, 0x39A0,
-    0xBF36, 0x0148,
-    0xBF38, 0x45F1,
-    0xBF3A, 0x231C,
-    0xBF3C, 0x3401,
-    0xBF3E, 0x4E88,
-    0xBF40, 0x61BF,
-    0xBF42, 0xB76A,
-    0xBF44, 0x0124,
-    0xBF46, 0x83A5,
-    0xBF48, 0x0A4B,
-    0xBF4A, 0x8567,
-    0xBF4C, 0x130A,
-    0xBF4E, 0x0403,
-    0xBF50, 0x9387,
-    0xBF52, 0x07E1,
-    0xBF54, 0x1306,
-    0xBF56, 0x8007,
-    0xBF58, 0xBE95,
-    0xBF5A, 0x5285,
-    0xBF5C, 0x9760,
-    0xBF5E, 0x00FC,
-    0xBF60, 0xE780,
-    0xBF62, 0x400A,
-    0xBF64, 0x21C9,
-    0xBF66, 0x2305,
-    0xBF68, 0x0400,
-    0xBF6A, 0x0347,
-    0xBF6C, 0x2401,
-    0xBF6E, 0x8347,
-    0xBF70, 0x6400,
-    0xBF72, 0x8356,
-    0xBF74, 0x4401,
-    0xBF76, 0xA308,
-    0xBF78, 0xE400,
-    0xBF7A, 0x0547,
-    0xBF7C, 0x231C,
-    0xBF7E, 0xD400,
-    0xBF80, 0x2307,
-    0xBF82, 0xE400,
-    0xBF84, 0xA301,
-    0xBF86, 0xF400,
-    0xBF88, 0x2303,
-    0xBF8A, 0x0400,
-    0xBF8C, 0x232E,
-    0xBF8E, 0x4401,
-    0xBF90, 0x1733,
-    0xBF92, 0x02FC,
-    0xBF94, 0x6700,
-    0xBF96, 0xA354,
-    0xBF98, 0x83A5,
-    0xBF9A, 0x0A4B,
-    0xBF9C, 0x8567,
-    0xBF9E, 0x9387,
-    0xBFA0, 0x07E1,
-    0xBFA2, 0x1306,
-    0xBFA4, 0x000F,
-    0xBFA6, 0xBE95,
-    0xBFA8, 0x5285,
-    0xBFAA, 0x9760,
-    0xBFAC, 0x00FC,
-    0xBFAE, 0xE780,
-    0xBFB0, 0x2005,
-    0xBFB2, 0x9DB7,
-    0xBFB4, 0x8347,
-    0xBFB6, 0xA400,
-    0xBFB8, 0xCDDB,
-    0xBFBA, 0xCDB5,
-    0xBFBC, 0x37A5,
-    0xBFBE, 0x0124,
-    0xBFC0, 0x1305,
-    0xBFC2, 0x050C,
-    0xBFC4, 0x9760,
-    0xBFC6, 0xFFFB,
-    0xBFC8, 0xE780,
-    0xBFCA, 0x8043,
-    0xBFCC, 0x45BD,
-    0xBFCE, 0x0100,
-    0xBFD0, 0x1733,
-    0xBFD2, 0x02FC,
-    0xBFD4, 0xE702,
-    0xBFD6, 0x034F,
-    0xBFD8, 0x8347,
-    0xBFDA, 0x1501,
-    0xBFDC, 0xA304,
-    0xBFDE, 0x0500,
-    0xBFE0, 0x2A84,
-    0xBFE2, 0x91EF,
-    0xBFE4, 0x8357,
-    0xBFE6, 0x8501,
-    0xBFE8, 0x99EB,
-    0xBFEA, 0x8347,
-    0xBFEC, 0xF500,
-    0xBFEE, 0xA307,
-    0xBFF0, 0x0500,
-    0xBFF2, 0xA304,
-    0xBFF4, 0xF500,
-    0xBFF6, 0x1733,
-    0xBFF8, 0x02FC,
-    0xBFFA, 0x6700,
-    0xBFFC, 0xE34E,
-    0xBFFE, 0x2285,
-    0xC000, 0x9790,
-    0xC002, 0xFFFB,
-    0xC004, 0xE780,
-    0xC006, 0xC0C4,
-    0xC008, 0x8347,
-    0xC00A, 0x3400,
-    0xC00C, 0x0347,
-    0xC00E, 0x6400,
-    0xC010, 0x8346,
-    0xC012, 0x7400,
-    0xC014, 0xFD17,
-    0xC016, 0x0507,
-    0xC018, 0x93F7,
-    0xC01A, 0xF70F,
-    0xC01C, 0x2303,
-    0xC01E, 0xE400,
-    0xC020, 0xA301,
-    0xC022, 0xF400,
-    0xC024, 0x99C2,
-    0xC026, 0xA303,
-    0xC028, 0x0400,
-    0xC02A, 0xB1EF,
-    0xC02C, 0x0347,
-    0xC02E, 0x1401,
-    0xC030, 0x8356,
-    0xC032, 0x8401,
-    0xC034, 0x8347,
-    0xC036, 0x5400,
-    0xC038, 0x2309,
-    0xC03A, 0xE400,
-    0xC03C, 0x0547,
-    0xC03E, 0x231A,
-    0xC040, 0xD400,
-    0xC042, 0x2304,
-    0xC044, 0xE400,
-    0xC046, 0x231C,
-    0xC048, 0x0400,
-    0xC04A, 0xA308,
-    0xC04C, 0x0400,
-    0xC04E, 0xC5E3,
-    0xC050, 0x8347,
-    0xC052, 0x1400,
-    0xC054, 0x13F7,
-    0xC056, 0x2700,
-    0xC058, 0x19C7,
-    0xC05A, 0x0347,
-    0xC05C, 0x0400,
-    0xC05E, 0x01C7,
-    0xC060, 0x0347,
-    0xC062, 0x2400,
-    0xC064, 0x4DC3,
-    0xC066, 0x858B,
-    0xC068, 0xA5CF,
-    0xC06A, 0xB727,
-    0xC06C, 0x0024,
-    0xC06E, 0x83C7,
-    0xC070, 0x274D,
-    0xC072, 0xD1D3,
-    0xC074, 0xB767,
-    0xC076, 0x0124,
-    0xC078, 0x83A7,
-    0xC07A, 0x074B,
-    0xC07C, 0x0567,
-    0xC07E, 0xBA97,
-    0xC080, 0x2380,
-    0xC082, 0x07E0,
-    0xC084, 0x8DBF,
-    0xC086, 0x0347,
-    0xC088, 0x0401,
-    0xC08A, 0x5C4C,
-    0xC08C, 0x9316,
-    0xC08E, 0x1700,
-    0xC090, 0xB697,
-    0xC092, 0x5CCC,
-    0xC094, 0xB727,
-    0xC096, 0x0024,
-    0xC098, 0x9387,
-    0xC09A, 0x0733,
-    0xC09C, 0x83C6,
-    0xC09E, 0x371A,
-    0xC0A0, 0x89EA,
-    0xC0A2, 0x8346,
-    0xC0A4, 0x6401,
-    0xC0A6, 0xA1DA,
-    0xC0A8, 0xB7A6,
-    0xC0AA, 0x0124,
-    0xC0AC, 0x83C6,
-    0xC0AE, 0x260A,
-    0xC0B0, 0xB9F2,
-    0xC0B2, 0x83C7,
-    0xC0B4, 0x471A,
-    0xC0B6, 0xA1F3,
-    0xC0B8, 0x0346,
-    0xC0BA, 0x0400,
-    0xC0BC, 0xB767,
-    0xC0BE, 0x0124,
-    0xC0C0, 0x83A5,
-    0xC0C2, 0x074B,
-    0xC0C4, 0x3306,
-    0xC0C6, 0xE602,
-    0xC0C8, 0x8567,
-    0xC0CA, 0x9387,
-    0xC0CC, 0x07E1,
-    0xC0CE, 0xBE95,
-    0xC0D0, 0x1305,
-    0xC0D2, 0x0403,
-    0xC0D4, 0x0606,
-    0xC0D6, 0x9760,
-    0xC0D8, 0x00FC,
-    0xC0DA, 0xE780,
-    0xC0DC, 0x60F2,
-    0xC0DE, 0x21BF,
-    0xC0E0, 0x8547,
-    0xC0E2, 0xA304,
-    0xC0E4, 0xF400,
-    0xC0E6, 0x1733,
-    0xC0E8, 0x02FC,
-    0xC0EA, 0x6700,
-    0xC0EC, 0xE33F,
-    0xC0EE, 0xFD17,
-    0xC0F0, 0xA302,
-    0xC0F2, 0xF400,
-    0xC0F4, 0x2285,
-    0xC0F6, 0x9760,
-    0xC0F8, 0xFFFB,
-    0xC0FA, 0xE780,
-    0xC0FC, 0x6011,
-    0xC0FE, 0x1733,
-    0xC100, 0x02FC,
-    0xC102, 0x6700,
-    0xC104, 0x633E,
-    0xC106, 0x2285,
-    0xC108, 0x9760,
-    0xC10A, 0xFFFB,
-    0xC10C, 0xE780,
-    0xC10E, 0x4010,
-    0xC110, 0xDDB5,
-    0xC112, 0x0100,
-    0xC114, 0x8947,
-    0xC116, 0x6303,
-    0xC118, 0xF500,
-    0xC11A, 0x8280,
-    0xC11C, 0x1733,
-    0xC11E, 0x02FC,
-    0xC120, 0xE702,
-    0xC122, 0xA338,
-    0xC124, 0xB784,
-    0xC126, 0x0124,
-    0xC128, 0x9384,
-    0xC12A, 0x04AA,
-    0xC12C, 0x87A7,
-    0xC12E, 0x040A,
-    0xC130, 0x4111,
-    0xC132, 0x37C5,
-    0xC134, 0x0224,
-    0xC136, 0x5396,
-    0xC138, 0x17C0,
-    0xC13A, 0x7400,
-    0xC13C, 0x9145,
-    0xC13E, 0x1305,
-    0xC140, 0xA5B8,
-    0xC142, 0x9750,
-    0xC144, 0xFFFB,
-    0xC146, 0xE780,
-    0xC148, 0x60C3,
-    0xC14A, 0x3719,
-    0xC14C, 0x0140,
-    0xC14E, 0x4205,
-    0xC150, 0x4181,
-    0xC152, 0x130A,
-    0xC154, 0x4924,
-    0xC156, 0xB789,
-    0xC158, 0x0124,
-    0xC15A, 0x37C4,
-    0xC15C, 0x0224,
-    0xC15E, 0xB7CA,
-    0xC160, 0x0224,
-    0xC162, 0x2317,
-    0xC164, 0xA100,
-    0xC166, 0x9389,
-    0xC168, 0x89B1,
-    0xC16A, 0x1304,
-    0xC16C, 0x24B9,
-    0xC16E, 0x938A,
-    0xC170, 0xAABB,
-    0xC172, 0x330A,
-    0xC174, 0x9A40,
-    0xC176, 0x0605,
-    0xC178, 0x2295,
-    0xC17A, 0x8355,
-    0xC17C, 0x2500,
-    0xC17E, 0x0356,
-    0xC180, 0xC100,
-    0xC182, 0x0355,
-    0xC184, 0x0500,
-    0xC186, 0x2104,
-    0xC188, 0x9760,
-    0xC18A, 0x00FC,
-    0xC18C, 0xE780,
-    0xC18E, 0x8082,
-    0xC190, 0x4205,
-    0xC192, 0x4181,
-    0xC194, 0x2390,
-    0xC196, 0xA900,
-    0xC198, 0xB387,
-    0xC19A, 0x4901,
-    0xC19C, 0x2390,
-    0xC19E, 0xA700,
-    0xC1A0, 0x8909,
-    0xC1A2, 0x6305,
-    0xC1A4, 0x5401,
-    0xC1A6, 0x0355,
-    0xC1A8, 0xE100,
-    0xC1AA, 0xF1B7,
-    0xC1AC, 0xB789,
-    0xC1AE, 0x0124,
-    0xC1B0, 0x37CA,
-    0xC1B2, 0x0224,
-    0xC1B4, 0x1309,
-    0xC1B6, 0x0926,
-    0xC1B8, 0x9389,
-    0xC1BA, 0xA9AF,
-    0xC1BC, 0x130A,
-    0xC1BE, 0x2AC3,
-    0xC1C0, 0x8357,
-    0xC1C2, 0xE100,
-    0xC1C4, 0x0356,
-    0xC1C6, 0xC100,
-    0xC1C8, 0x8509,
-    0xC1CA, 0x8607,
-    0xC1CC, 0xA297,
-    0xC1CE, 0x83D5,
-    0xC1D0, 0x2700,
-    0xC1D2, 0x03D5,
-    0xC1D4, 0x0700,
-    0xC1D6, 0x0909,
-    0xC1D8, 0x2104,
-    0xC1DA, 0x9750,
-    0xC1DC, 0x00FC,
-    0xC1DE, 0xE780,
-    0xC1E0, 0x607D,
-    0xC1E2, 0x1375,
-    0xC1E4, 0xF50F,
-    0xC1E6, 0xA38F,
-    0xC1E8, 0xA9FE,
-    0xC1EA, 0x4205,
-    0xC1EC, 0x4181,
-    0xC1EE, 0x231F,
-    0xC1F0, 0xA9FE,
-    0xC1F2, 0xE317,
-    0xC1F4, 0x44FD,
-    0xC1F6, 0xB719,
-    0xC1F8, 0x0140,
-    0xC1FA, 0x3789,
-    0xC1FC, 0x0124,
-    0xC1FE, 0x37CA,
-    0xC200, 0x0224,
-    0xC202, 0x9389,
-    0xC204, 0x291F,
-    0xC206, 0x1309,
-    0xC208, 0xC9B2,
-    0xC20A, 0x130A,
-    0xC20C, 0x2AC6,
-    0xC20E, 0xB389,
-    0xC210, 0x9940,
-    0xC212, 0x8357,
-    0xC214, 0xE100,
-    0xC216, 0x0356,
-    0xC218, 0xC100,
-    0xC21A, 0x8607,
-    0xC21C, 0xA297,
-    0xC21E, 0x83D5,
-    0xC220, 0x2700,
-    0xC222, 0x03D5,
-    0xC224, 0x0700,
-    0xC226, 0x2104,
-    0xC228, 0x9750,
-    0xC22A, 0x00FC,
-    0xC22C, 0xE780,
-    0xC22E, 0x8078,
-    0xC230, 0x4205,
-    0xC232, 0x4181,
-    0xC234, 0x2310,
-    0xC236, 0xA900,
-    0xC238, 0xB307,
-    0xC23A, 0x3901,
-    0xC23C, 0x2390,
-    0xC23E, 0xA700,
-    0xC240, 0x0909,
-    0xC242, 0xE318,
-    0xC244, 0x44FD,
-    0xC246, 0xB717,
-    0xC248, 0x0140,
-    0xC24A, 0x3789,
-    0xC24C, 0x0124,
-    0xC24E, 0xB7C9,
-    0xC250, 0x0224,
-    0xC252, 0x9387,
-    0xC254, 0xA720,
-    0xC256, 0x1309,
-    0xC258, 0x69B4,
-    0xC25A, 0x9389,
-    0xC25C, 0x29C9,
-    0xC25E, 0xB384,
-    0xC260, 0x9740,
-    0xC262, 0x8357,
-    0xC264, 0xE100,
-    0xC266, 0x0356,
-    0xC268, 0xC100,
-    0xC26A, 0x8607,
-    0xC26C, 0xA297,
-    0xC26E, 0x83D5,
-    0xC270, 0x2700,
-    0xC272, 0x03D5,
-    0xC274, 0x0700,
-    0xC276, 0x2104,
-    0xC278, 0x9750,
-    0xC27A, 0x00FC,
-    0xC27C, 0xE780,
-    0xC27E, 0x8073,
-    0xC280, 0x4205,
-    0xC282, 0x4181,
-    0xC284, 0x2310,
-    0xC286, 0xA900,
-    0xC288, 0xB307,
-    0xC28A, 0x9900,
-    0xC28C, 0x2390,
-    0xC28E, 0xA700,
-    0xC290, 0x0909,
-    0xC292, 0xE318,
-    0xC294, 0x34FD,
-    0xC296, 0x4101,
-    0xC298, 0x1733,
-    0xC29A, 0x02FC,
-    0xC29C, 0x6700,
-    0xC29E, 0x2324,
-    0xC2A0, 0x1733,
-    0xC2A2, 0x02FC,
-    0xC2A4, 0xE702,
-    0xC2A6, 0x0322,
-    0xC2A8, 0x2A84,
-    0xC2AA, 0xEFE0,
-    0xC2AC, 0x3F98,
-    0xC2AE, 0x1DE0,
-    0xC2B0, 0xB797,
-    0xC2B2, 0x0124,
-    0xC2B4, 0x9387,
-    0xC2B6, 0x0753,
-    0xC2B8, 0x0D67,
-    0xC2BA, 0x3E97,
-    0xC2BC, 0x0327,
-    0xC2BE, 0x876E,
-    0xC2C0, 0x058B,
-    0xC2C2, 0x09CB,
-    0xC2C4, 0x3787,
-    0xC2C6, 0x0040,
-    0xC2C8, 0x0357,
-    0xC2CA, 0x87F4,
-    0xC2CC, 0xA146,
-    0xC2CE, 0x618B,
-    0xC2D0, 0x6306,
-    0xC2D2, 0xD700,
-    0xC2D4, 0x1733,
-    0xC2D6, 0x02FC,
-    0xC2D8, 0x6700,
-    0xC2DA, 0x0321,
-    0xC2DC, 0x0567,
-    0xC2DE, 0xBA97,
-    0xC2E0, 0x2389,
-    0xC2E2, 0x07B6,
-    0xC2E4, 0xC5BF,
-    0xC2E6, 0x0100,
-    0xC2E8, 0x9147,
-    0xC2EA, 0x6303,
-    0xC2EC, 0xF500,
-    0xC2EE, 0x8280,
-    0xC2F0, 0x1733,
-    0xC2F2, 0x02FC,
-    0xC2F4, 0xE702,
-    0xC2F6, 0x031D,
-    0xC2F8, 0x9750,
-    0xC2FA, 0xFFFB,
-    0xC2FC, 0xE780,
-    0xC2FE, 0xC063,
-    0xC300, 0x09C5,
-    0xC302, 0x1733,
-    0xC304, 0x02FC,
-    0xC306, 0x6700,
-    0xC308, 0x231E,
-    0xC30A, 0x9750,
-    0xC30C, 0xFFFB,
-    0xC30E, 0xE780,
-    0xC310, 0xE05D,
-    0xC312, 0x65F9,
-    0xC314, 0xB7C7,
-    0xC316, 0x0224,
-    0xC318, 0x03D7,
-    0xC31A, 0x67B8,
-    0xC31C, 0xB7F7,
-    0xC31E, 0x0040,
-    0xC320, 0x2390,
-    0xC322, 0xE73E,
-    0xC324, 0xF9BF,
-    0xC326, 0x0100,
-    0xC328, 0x37C7,
-    0xC32A, 0x0224,
-    0xC32C, 0x1307,
-    0xC32E, 0x47B8,
-    0xC330, 0x8345,
-    0xC332, 0x0700,
-    0xC334, 0xB7A7,
-    0xC336, 0x0224,
-    0xC338, 0xB7D6,
-    0xC33A, 0x0124,
-    0xC33C, 0x03D6,
-    0xC33E, 0x4760,
-    0xC340, 0x23A8,
-    0xC342, 0xB6DA,
-    0xC344, 0xB767,
-    0xC346, 0x0124,
-    0xC348, 0xB7C6,
-    0xC34A, 0x0224,
-    0xC34C, 0x9387,
-    0xC34E, 0x0740,
-    0xC350, 0x9386,
-    0xC352, 0x86C9,
-    0xC354, 0xD4C7,
-    0xC356, 0x09CA,
-    0xC358, 0xB7B6,
-    0xC35A, 0x0224,
-    0xC35C, 0x3726,
-    0xC35E, 0x0024,
-    0xC360, 0x9386,
-    0xC362, 0x8668,
-    0xC364, 0x2320,
-    0xC366, 0xD6CE,
-    0xC368, 0x2319,
-    0xC36A, 0x0710,
-    0xC36C, 0x37C7,
-    0xC36E, 0x0224,
-    0xC370, 0x1307,
-    0xC372, 0x072A,
-    0xC374, 0xB7C6,
-    0xC376, 0x0224,
-    0xC378, 0x98D7,
-    0xC37A, 0x37C7,
-    0xC37C, 0x0224,
-    0xC37E, 0x9386,
-    0xC380, 0x4611,
-    0xC382, 0x1307,
-    0xC384, 0x872E,
-    0xC386, 0x23A4,
-    0xC388, 0xD1A4,
-    0xC38A, 0xD8C3,
-    0xC38C, 0x8280,
-    0xC38E, 0x0100,
-    0xC390, 0x1733,
-    0xC392, 0x02FC,
-    0xC394, 0xE702,
-    0xC396, 0x0313,
-    0xC398, 0xB7C6,
-    0xC39A, 0x0224,
-    0xC39C, 0xB787,
-    0xC39E, 0x0324,
-    0xC3A0, 0x9386,
-    0xC3A2, 0x863E,
-    0xC3A4, 0x37A7,
-    0xC3A6, 0x0124,
-    0xC3A8, 0x9387,
-    0xC3AA, 0x07FF,
-    0xC3AC, 0x1307,
-    0xC3AE, 0x0753,
-    0xC3B0, 0x958F,
-    0xC3B2, 0x232C,
-    0xC3B4, 0xD7B4,
-    0xC3B6, 0x232E,
-    0xC3B8, 0xF7B4,
-    0xC3BA, 0x9720,
-    0xC3BC, 0x01FC,
-    0xC3BE, 0xE780,
-    0xC3C0, 0x600C,
-    0xC3C2, 0x11C5,
-    0xC3C4, 0xEFE0,
-    0xC3C6, 0x0F80,
-    0xC3C8, 0xEFF0,
-    0xC3CA, 0x4FF0,
-    0xC3CC, 0xB13F,
-    0xC3CE, 0x1733,
-    0xC3D0, 0x02FC,
-    0xC3D2, 0x6700,
-    0xC3D4, 0x6311,
-    0xC3D6, 0x0000,
-    0xC3D8, 0xA310,
-    0xC3DA, 0xE538,
-    0xC3DC, 0x0000,
-    0xC3DE, 0x0000,
-    0xC3E0, 0xBEFF,
-    0xC3E2, 0x0F00,
-    0xC3E4, 0x0000,
-    0xC3E6, 0x0000,
-    0xFCFC, 0x2002,
-    0x849C, 0x0100,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0x84A4, 0x0000,
-    0x84A6, 0x0000,
-    0x84A8, 0x0000,
-    0x84AA, 0x0001,
-    0x84AC, 0x01FF,
-    0x84B0, 0x8089,
-    0x84B2, 0x0000,
-    0x84B4, 0x8889,
-    0x84B6, 0x0000,
-    0x84B8, 0xC097,
-    0x84BA, 0x0000,
-    0x84BC, 0xA60E,
-    0x84BE, 0x0000,
-    0x84C0, 0x2206,
-    0x84C2, 0x0000,
-    0x84C4, 0x0010,
-    0x84C8, 0x90C3,
-    0x84CA, 0x0224,
-    0x84CC, 0x44AB,
-    0x84CE, 0x0224,
-    0x84D0, 0x44AB,
-    0x84D2, 0x0224,
-    0x84D4, 0x44AB,
-    0x84D6, 0x0224,
-    0x84D8, 0x44AB,
-    0x84DA, 0x0224,
-    0x84DC, 0x44AB,
-    0x84DE, 0x0224,
-    0xA548, 0x001D,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA558, 0x0000,
-    0xA55A, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xA56C, 0x0000,
-    0xA56E, 0x0000,
-    0xA570, 0x0000,
-    0xA572, 0x0000,
-    0xA574, 0x00D5,
-    0xA576, 0x0000,
-    0xA578, 0x0000,
-    0xA57A, 0x0000,
-    0xA57C, 0x0000,
-    0xA57E, 0x0000,
-    0xA580, 0x0000,
-    0xA582, 0x0000,
-    0xA584, 0x0000,
-    0xA586, 0x0000,
-    0xA588, 0x0000,
-    0xA58A, 0x0000,
-    0xA58C, 0x0000,
-    0xA58E, 0x0000,
-    0xA590, 0x0000,
-    0xA592, 0x0000,
-    0xA594, 0x0000,
-    0xA596, 0x0000,
-    0xA598, 0x0000,
-    0xA59A, 0x0000,
-    0xA59C, 0x0000,
-    0xA59E, 0x0000,
-    0xA5A0, 0x0100,
-    0xA5A2, 0x0036,
-    0xA5A4, 0x0000,
-    0xA5A6, 0x0000,
-    0xA5A8, 0x0000,
-    0xA5AA, 0x0000,
-    0xA5AC, 0x0000,
-    0xA5AE, 0x0000,
-    0xA5B0, 0x0000,
-    0xA5B2, 0x0000,
-    0xA5B4, 0x0000,
-    0xA5B6, 0x0000,
-    0xA5B8, 0x0000,
-    0xA5BA, 0x0000,
-    0xA5BC, 0x0000,
-    0xA5BE, 0x0000,
-    0xA5C0, 0x0000,
-    0xA5C2, 0x0000,
-    0xA5C4, 0x0000,
-    0xA5C6, 0x0000,
-    0xA5C8, 0x0000,
-    0xA5CA, 0x0000,
-    0xA5CC, 0x0000,
-    0xA5CE, 0x0000,
-    0xA5D0, 0x0000,
-    0xA5D2, 0x0000,
-    0xA5D4, 0x0000,
-    0xA5D6, 0x0000,
-    0xA5D8, 0x0000,
-    0xA5DA, 0x0000,
-    0xA5DC, 0x0000,
-    0xA5DE, 0x0000,
-    0xA5E0, 0x0000,
-    0xA5E2, 0x0000,
-    0xA5E4, 0x0000,
-    0xA5E6, 0x0000,
-    0xA5E8, 0x0000,
-    0xA5EA, 0x0000,
-    0xA5EC, 0x000F,
-    0xA5EE, 0x000F,
-    0xA5F0, 0x000F,
-    0xA5F2, 0x000F,
-    0xA5F4, 0x0000,
-    0xA5F6, 0x0000,
-    0xA5F8, 0x0000,
-    0xA5FA, 0x0000,
-    0xA5FC, 0x0000,
-    0xA5FE, 0x0000,
-    0xA600, 0x0000,
-    0xA602, 0x0000,
-    0xA604, 0x0000,
-    0xA606, 0x00C6,
-    0xBB84, 0x0001,
-    0xBB86, 0x0000,
-    0xBB88, 0x0000,
-    0xBB8A, 0x0100,
-    0xBB8C, 0x0800,
-    0xBB8E, 0x1000,
-    0xBB90, 0x2000,
-    0xBB92, 0x9A00,
-    0xBB94, 0x9A00,
-    0xBB96, 0x9A00,
-    0xBB98, 0x9A00,
-    0xBB9A, 0x9600,
-    0xBB9C, 0x9600,
-    0xBB9E, 0x9600,
-    0xBBA0, 0x9600,
-    0xBBA2, 0x9300,
-    0xBBA4, 0x9300,
-    0xBBA6, 0x9300,
-    0xBBA8, 0x9300,
-    0xBBAA, 0x9000,
-    0xBBAC, 0x9000,
-    0xBBAE, 0x9000,
-    0xBBB0, 0x9000,
-    0xBBB2, 0x8D00,
-    0xBBB4, 0x8D00,
-    0xBBB6, 0x8D00,
-    0xBBB8, 0x8D00,
-    0xBBBA, 0x3F00,
-    0xBBBC, 0x3F00,
-    0xBBBE, 0x3F00,
-    0xBBC0, 0x3F00,
-    0xBBC2, 0x1E00,
-    0xBBC4, 0x1E00,
-    0xBBC6, 0x1E00,
-    0xBBC8, 0x1E00,
-    0xBBCA, 0x0000,
-    0xBBCC, 0x0000,
-    0xBBCE, 0x0000,
-    0xBBD0, 0x0000,
-    0xBBD2, 0x0800,
-    0xBBD4, 0x0800,
-    0xBBD6, 0x0800,
-    0xBBD8, 0x0800,
-    0xBBDA, 0x0000,
-    0xBBDC, 0x0000,
-    0xBBDE, 0x0000,
-    0xBBE0, 0x0000,
-    0xBBE2, 0x3F00,
-    0xBBE4, 0x3F00,
-    0xBBE6, 0x3F00,
-    0xBBE8, 0x3F00,
-    0xBBEA, 0x3400,
-    0xBBEC, 0x3400,
-    0xBBEE, 0x3400,
-    0xBBF0, 0x3400,
-    0xBBF2, 0x0A00,
-    0xBBF4, 0x0A00,
-    0xBBF6, 0x0A00,
-    0xBBF8, 0x0A00,
-    0xBBFA, 0x1000,
-    0xBBFC, 0x1000,
-    0xBBFE, 0x1000,
-    0xBC00, 0x1000,
-    0xBC02, 0x0600,
-    0xBC04, 0x0600,
-    0xBC06, 0x0600,
-    0xBC08, 0x0600,
-    0xBC0A, 0x0C00,
-    0xBC0C, 0x0C00,
-    0xBC0E, 0x0C00,
-    0xBC10, 0x0C00,
-    0xBC12, 0x0000,
-    0xBC14, 0x0000,
-    0xBC16, 0x0000,
-    0xBC18, 0x0000,
-    0xBC1A, 0x1000,
-    0xBC1C, 0x1000,
-    0xBC1E, 0x1000,
-    0xBC20, 0x1000,
-    0xBC22, 0x1000,
-    0xBC24, 0x1000,
-    0xBC26, 0x1000,
-    0xBC28, 0x1000,
-    0xBC2A, 0x2000,
-    0xBC2C, 0x1000,
-    0xBC2E, 0x1000,
-    0xBC30, 0x1000,
-    0xBC32, 0x0600,
-    0xBC34, 0x0600,
-    0xBC36, 0x0600,
-    0xBC38, 0x0600,
-    0xBC3A, 0x1C00,
-    0xBC3C, 0x1C00,
-    0xBC3E, 0x1C00,
-    0xBC40, 0x1C00,
-    0xBC42, 0x0600,
-    0xBC44, 0x0600,
-    0xBC46, 0x0600,
-    0xBC48, 0x0600,
-    0xBC4A, 0x2A00,
-    0xBC4C, 0x2A00,
-    0xBC4E, 0x2A00,
-    0xBC50, 0x2A00,
-    0xBC52, 0x0200,
-    0xBC54, 0x0200,
-    0xBC56, 0x0200,
-    0xBC58, 0x0200,
-    0xBC5A, 0x1000,
-    0xBC5C, 0x1000,
-    0xBC5E, 0x1000,
-    0xBC60, 0x1000,
-    0xBC62, 0x0E00,
-    0xBC64, 0x0E00,
-    0xBC66, 0x0E00,
-    0xBC68, 0x0E00,
-    0xBC6A, 0x2800,
-    0xBC6C, 0x2800,
-    0xBC6E, 0x2800,
-    0xBC70, 0x2800,
-    0xBC72, 0x1800,
-    0xBC74, 0x1800,
-    0xBC76, 0x1800,
-    0xBC78, 0x1800,
-    0xBC7A, 0x0800,
-    0xBC7C, 0x0800,
-    0xBC7E, 0x0800,
-    0xBC80, 0x0800,
-    0xBC82, 0x0000,
-    0xBC84, 0x0000,
-    0xBC86, 0x0000,
-    0xBC88, 0x0000,
-    0xBC8A, 0x2400,
-    0xBC8C, 0x2400,
-    0xBC8E, 0x2400,
-    0xBC90, 0x2400,
-    0xBC92, 0x0088,
-    0xFCFC, 0x2001,
-    0x5634, 0x041D,
-    0x5636, 0x0420,
-    0x5638, 0x3C85,
-    0x563A, 0x0224,
-    0x563C, 0x3CE6,
-    0x563E, 0x0320,
-    0x5640, 0xD885,
-    0x5642, 0x0224,
-    0x5644, 0xD06E,
-    0x5646, 0x0320,
-    0x5648, 0xC48D,
-    0x564A, 0x0224,
-    0x564C, 0x4877,
-    0x564E, 0x0320,
-    0x5650, 0xCC90,
-    0x5652, 0x0224,
-    0x5654, 0x6812,
-    0x5656, 0x0320,
-    0x5658, 0xB88F,
-    0x565A, 0x0224,
-    0x565C, 0xE8FE,
-    0x565E, 0x0220,
-    0x5660, 0x5491,
-    0x5662, 0x0224,
-    0x5664, 0xA462,
-    0x5666, 0x0320,
-    0x5668, 0x9C95,
-    0x566A, 0x0224,
-    0x566C, 0x901B,
-    0x566E, 0x0020,
-    0x5670, 0x2896,
-    0x5672, 0x0224,
-    0x5674, 0xC446,
-    0x5676, 0x0320,
-    0x5678, 0xE896,
-    0x567A, 0x0224,
-    0x567C, 0x1427,
-    0x567E, 0x0320,
-    0x5680, 0xC498,
-    0x5682, 0x0224,
-    0x5684, 0x304C,
-    0x5686, 0x0220,
-    0x5688, 0x749B,
-    0x568A, 0x0224,
-    0x568C, 0xC82C,
-    0x568E, 0x0220,
-    0x5690, 0xD09B,
-    0x5692, 0x0224,
-    0x5694, 0x484F,
-    0x5696, 0x0220,
-    0x5698, 0x289C,
-    0x569A, 0x0224,
-    0x569C, 0xB041,
-    0x569E, 0x0220,
-    0x56A0, 0x3C9A,
-    0x56A2, 0x0224,
-    0x56A4, 0xC81D,
-    0x56A6, 0x0420,
-    0x56A8, 0xFC9A,
-    0x56AA, 0x0224,
-    0x56AC, 0xAC7F,
-    0x56AE, 0x0420,
-    0x56B0, 0x8C86,
-    0x56B2, 0x0224,
-    0x56B4, 0x7C80,
-    0x56B6, 0x0420,
-    0x56B8, 0x1086,
-    0x56BA, 0x0224,
-    0x56BC, 0xF887,
-    0x56BE, 0x0320,
-    0x56C0, 0x7CAC,
-    0x56C2, 0x0224,
-    0x56C4, 0x1007,
-    0x56C6, 0x0320,
-    0x56C8, 0xE08E,
-    0x56CA, 0x0224,
-    0x56CC, 0x1409,
-    0x56CE, 0x0020,
-    0x56D0, 0x2495,
-    0x56D2, 0x0224,
-    0x56D4, 0x2046,
-    0x56D6, 0x0420,
-    0x56D8, 0xC087,
-    0x56DA, 0x0224,
-    0x56DC, 0xB05B,
-    0x56DE, 0x0420,
-    0x56E0, 0x4088,
-    0x56E2, 0x0224,
-    0x56E4, 0x505C,
-    0x56E6, 0x0320,
-    0x56E8, 0x448A,
-    0x56EA, 0x0224,
-    0x56EC, 0xA45B,
-    0x56EE, 0x0320,
-    0x56F0, 0x5089,
-    0x56F2, 0x0224,
-    0x56F4, 0x306A,
-    0x56F6, 0x0420,
-    0x56F8, 0x1485,
-    0x56FA, 0x0224,
-    0x56FC, 0x90F8,
-    0x56FE, 0x0220,
-    0x5700, 0x44A1,
-    0x5702, 0x0224,
-    0x5704, 0x0454,
-    0x5706, 0x0120,
-    0x5708, 0x18A6,
-    0x570A, 0x0224,
-    0x570C, 0x0453,
-    0x570E, 0x0020,
-    0x5710, 0xA0A7,
-    0x5712, 0x0224,
-    0x5714, 0xC850,
-    0x5716, 0x0220,
-    0x5718, 0xB8AC,
-    0x571A, 0x0224,
-    0x571C, 0x2C88,
-    0x571E, 0x0220,
-    0x5720, 0xF0AD,
-    0x5722, 0x0224,
-    0x5724, 0x7C82,
-    0x5726, 0x0120,
-    0x5728, 0xC8B4,
-    0x572A, 0x0224,
-    0x572C, 0xACF3,
-    0x572E, 0x0320,
-    0x5730, 0x64B5,
-    0x5732, 0x0224,
-    0x5734, 0x1081,
-    0x5736, 0x0320,
-    0x5738, 0x70B9,
-    0x573A, 0x0224,
-    0x573C, 0xBCFD,
-    0x573E, 0x0220,
-    0x5740, 0xE4B9,
-    0x5742, 0x0224,
-    0x5744, 0xBCA5,
-    0x5746, 0x0420,
-    0x5748, 0x7CBA,
-    0x574A, 0x0224,
-    0x574C, 0xB803,
-    0x574E, 0x0320,
-    0x5750, 0xE4BC,
-    0x5752, 0x0224,
-    0x5754, 0x8424,
-    0x5756, 0x0220,
-    0x5758, 0xB0BD,
-    0x575A, 0x0224,
-    0x575C, 0x9C4C,
-    0x575E, 0x0220,
-    0x5760, 0xD0BF,
-    0x5762, 0x0224,
-    0x5764, 0x0C22,
-    0x5766, 0x0220,
-    0x5768, 0x54BE,
-    0x576A, 0x0224,
-    0xFCFC, 0x2000,
-    0x68D8, 0x0100,
-    0xFCFC, 0x2002,
-    0xBC92, 0x0100,
-    0xFCFC, 0x4000,
-    0x0E04, 0x1C03,
-    0x0E10, 0x0100,
-    0x0E12, 0x00A0,
-    0x0E14, 0x0C84,
-    0x0E16, 0x002B,
-    0x0E18, 0x0300,
-    0x0E1A, 0x3000,
-    0x0E1C, 0x0100,
-    0x0E1E, 0x00A0,
-    0x0E20, 0x0C84,
-    0x0E22, 0x012B,
-    0x0E24, 0x0400,
-    0x0E26, 0x3000,
-    0xFCFC, 0x2000,
-    0x22E4, 0x0300,
-    0x2338, 0x0101,
-    0xFCFC, 0x2000,
-    0xDD6C, 0xB47E,
-    0xDD6E, 0xB67E,
-    0xDE34, 0x0000,
-    0xDE36, 0x9231,
-    0xFCFC, 0x2006,
-    0x0000, 0x535A,
-    0x0002, 0x0100,
-    0x0004, 0x11C3,
-    0x0006, 0x5A00,
-    0x0008, 0x0001,
-    0x000A, 0x0064,
-    0x000C, 0x2400,
-    0x000E, 0x0000,
-    0x0010, 0x0000,
-    0x0012, 0x0000,
-    0x0014, 0x7FBF,
-    0x0016, 0x624E,
-    0x0018, 0x20FF,
-    0x001A, 0x1F7C,
-    0x001C, 0x2C23,
-    0x001E, 0x23E8,
-    0x0020, 0xE28B,
-    0x0022, 0x1547,
-    0x0024, 0x9DF4,
-    0x0026, 0xE7D7,
-    0x0028, 0xAFCB,
-    0x002A, 0xE85F,
-    0x002C, 0x4B74,
-    0x002E, 0xA863,
-    0x0030, 0xC002,
-    0x0032, 0xB199,
-    0x0034, 0x6AB9,
-    0x0036, 0xFC3D,
-    0x0038, 0x8930,
-    0x003A, 0xA51A,
-    0x003C, 0xECF6,
-    0x003E, 0x90E5,
-    0x0040, 0x706E,
-    0x0042, 0x4787,
-    0x0044, 0xF3B3,
-    0x0046, 0x3541,
-    0x0048, 0x2641,
-    0x004A, 0x4671,
-    0x004C, 0x52C7,
-    0x004E, 0xF3DE,
-    0x0050, 0x17ED,
-    0x0052, 0x5F95,
-    0x0054, 0x2A7C,
-    0x0056, 0x1E02,
-    0x0058, 0x6C56,
-    0x005A, 0x0FC4,
-    0x005C, 0x0101,
-    0x005E, 0x7D9A,
-    0x0060, 0xE5A4,
-    0x0062, 0x4D4B,
-    0x0064, 0x1C93,
-    0x0066, 0x3300,
-    0x0068, 0x7B68,
-    0x006A, 0xA445,
-    0x006C, 0x6F14,
-    0x006E, 0x59E1,
-    0x0070, 0xEC78,
-    0x0072, 0xCCFF,
-    0x0074, 0x4DE7,
-    0x0076, 0x1555,
-    0x0078, 0x4D81,
-    0x007A, 0x5FC2,
-    0x007C, 0xDCF5,
-    0x007E, 0xF141,
-    0x0080, 0x1924,
-    0x0082, 0x3846,
-    0x0084, 0x4608,
-    0x0086, 0x7700,
-    0x0088, 0x1268,
-    0x008A, 0xF048,
-    0x008C, 0x3E6C,
-    0x008E, 0x7AE4,
-    0x0090, 0x369B,
-    0x0092, 0x2C80,
-    0x0094, 0x0D92,
-    0x0096, 0x7048,
-    0x0098, 0x97DE,
-    0x009A, 0x2493,
-    0x009C, 0x02D1,
-    0x009E, 0x9C2E,
-    0x00A0, 0xD51B,
-    0x00A2, 0xCC3A,
-    0x00A4, 0x5508,
-    0x00A6, 0x73D5,
-    0x00A8, 0x0DC3,
-    0x00AA, 0xD2AC,
-    0x00AC, 0x8FE6,
-    0x00AE, 0xA96A,
-    0x00B0, 0x07D5,
-    0x00B2, 0xD4A4,
-    0x00B4, 0x04AD,
-    0x00B6, 0xD5AE,
-    0x00B8, 0x893F,
-    0x00BA, 0x2218,
-    0x00BC, 0xA2EB,
-    0x00BE, 0x0AF5,
-    0x00C0, 0x1957,
-    0x00C2, 0xA8C2,
-    0x00C4, 0x926B,
-    0x00C6, 0x28E3,
-    0x00C8, 0x2B23,
-    0x00CA, 0x7ECB,
-    0x00CC, 0x13B7,
-    0x00CE, 0x5D45,
-    0x00D0, 0x3B29,
-    0x00D2, 0xA785,
-    0x00D4, 0xFEB1,
-    0x00D6, 0x9EE3,
-    0x00D8, 0x557A,
-    0x00DA, 0x77AF,
-    0x00DC, 0x2B1A,
-    0x00DE, 0x01E0,
-    0x00E0, 0x58C0,
-    0x00E2, 0xC43C,
-    0x00E4, 0xDFC3,
-    0x00E6, 0xF236,
-    0x00E8, 0x00D4,
-    0x00EA, 0x3CCA,
-    0x00EC, 0x1FF0,
-    0x00EE, 0x88BC,
-    0x00F0, 0x91B3,
-    0x00F2, 0x725E,
-    0x00F4, 0x6D46,
-    0x00F6, 0x3345,
-    0x00F8, 0x83AD,
-    0x00FA, 0x3812,
-    0x00FC, 0xA11C,
-    0x00FE, 0x0179,
-    0x0100, 0x999B,
-    0x0102, 0x0026,
-    0x0104, 0x0255,
-    0x0106, 0xA060,
-    0x0108, 0x72F1,
-    0x010A, 0xB03D,
-    0x010C, 0x25B6,
-    0x010E, 0x1CBC,
-    0x0110, 0x7EDC,
-    0x0112, 0x6286,
-    0x0114, 0x3CEB,
-    0x0116, 0xF0EA,
-    0x0118, 0xD157,
-    0x011A, 0x3A4B,
-    0x011C, 0x7820,
-    0x011E, 0x69FF,
-    0x0120, 0x1657,
-    0x0122, 0x0CEB,
-    0x0124, 0xDFFF,
-    0x0126, 0xFCD7,
-    0x0128, 0x5875,
-    0x012A, 0xE105,
-    0x012C, 0x5218,
-    0x012E, 0xFDE1,
-    0x0130, 0x6952,
-    0x0132, 0x9EB5,
-    0x0134, 0x6AB2,
-    0x0136, 0x7EBB,
-    0x0138, 0x7397,
-    0x013A, 0x994E,
-    0x013C, 0x3998,
-    0x013E, 0xD789,
-    0x0140, 0xE6C8,
-    0x0142, 0xCC63,
-    0x0144, 0xA29E,
-    0x0146, 0xB35D,
-    0x0148, 0xF93C,
-    0x014A, 0x47CA,
-    0x014C, 0x124F,
-    0x014E, 0x8CA5,
-    0x0150, 0xB90A,
-    0x0152, 0x9928,
-    0x0154, 0x02E8,
-    0x0156, 0x9F83,
-    0x0158, 0xCEDC,
-    0x015A, 0x3E54,
-    0x015C, 0xCDC6,
-    0x015E, 0x53A8,
-    0x0160, 0x4271,
-    0x0162, 0x1246,
-    0x0164, 0x549F,
-    0x0166, 0xE2AB,
-    0x0168, 0xB271,
-    0x016A, 0xD099,
-    0x016C, 0xEC28,
-    0x016E, 0x535C,
-    0x0170, 0xEDC5,
-    0x0172, 0x497A,
-    0x0174, 0xDB7C,
-    0x0176, 0xE3F0,
-    0x0178, 0xD72E,
-    0x017A, 0xA1CA,
-    0x017C, 0xC481,
-    0x017E, 0x28BE,
-    0x0180, 0xA228,
-    0x0182, 0x3A4D,
-    0x0184, 0xBAA0,
-    0x0186, 0xD8A3,
-    0x0188, 0x7C88,
-    0x018A, 0xEE98,
-    0x018C, 0x9851,
-    0x018E, 0x1DC8,
-    0x0190, 0x2E07,
-    0x0192, 0x540A,
-    0x0194, 0x35F4,
-    0x0196, 0xEC0F,
-    0x0198, 0x9113,
-    0x019A, 0xEDDE,
-    0x019C, 0xEAF7,
-    0x019E, 0x0900,
-    0x01A0, 0x09F3,
-    0x01A2, 0x0573,
-    0x01A4, 0xFA81,
-    0x01A6, 0x2104,
-    0x01A8, 0x2590,
-    0x01AA, 0xCC5F,
-    0x01AC, 0x6B0B,
-    0x01AE, 0x3EB7,
-    0x01B0, 0x3389,
-    0x01B2, 0x2D3C,
-    0x01B4, 0x0E0B,
-    0x01B6, 0xD103,
-    0x01B8, 0xB92F,
-    0x01BA, 0x0064,
-    0x01BC, 0x7BB7,
-    0x01BE, 0x3D07,
-    0x01C0, 0xF56E,
-    0x01C2, 0xB180,
-    0x01C4, 0xF8F2,
-    0x01C6, 0x5CCC,
-    0x01C8, 0xD8B4,
-    0x01CA, 0x7706,
-    0x01CC, 0xD573,
-    0x01CE, 0x4A32,
-    0x01D0, 0x659D,
-    0x01D2, 0x2538,
-    0x01D4, 0x1BE3,
-    0x01D6, 0xCD15,
-    0x01D8, 0x50C9,
-    0x01DA, 0x6AE2,
-    0x01DC, 0xA842,
-    0x01DE, 0x05A4,
-    0x01E0, 0x919B,
-    0x01E2, 0xDBEE,
-    0x01E4, 0xB1B8,
-    0x01E6, 0x1072,
-    0x01E8, 0x6516,
-    0x01EA, 0x0124,
-    0x01EC, 0x0E18,
-    0x01EE, 0xF58E,
-    0x01F0, 0x9C7A,
-    0x01F2, 0x3CF0,
-    0x01F4, 0xE339,
-    0x01F6, 0xF030,
-    0x01F8, 0xA3B2,
-    0x01FA, 0xC513,
-    0x01FC, 0x46A5,
-    0x01FE, 0x33FC,
-    0x0200, 0x42B0,
-    0x0202, 0xD05F,
-    0x0204, 0x8050,
-    0x0206, 0x4CEC,
-    0x0208, 0x2F40,
-    0x020A, 0x3833,
-    0x020C, 0x6A1B,
-    0x020E, 0xEFC5,
-    0x0210, 0xDB88,
-    0x0212, 0xD33F,
-    0x0214, 0x83B8,
-    0x0216, 0x65D1,
-    0x0218, 0xED9D,
-    0x021A, 0x442B,
-    0x021C, 0x23FA,
-    0x021E, 0x8B25,
-    0x0220, 0x8759,
-    0x0222, 0x8009,
-    0x0224, 0x8838,
-    0x0226, 0xEC29,
-    0x0228, 0xC4ED,
-    0x022A, 0xF174,
-    0x022C, 0xC483,
-    0x022E, 0x0160,
-    0x0230, 0x33EB,
-    0x0232, 0x7518,
-    0x0234, 0xBD81,
-    0x0236, 0x96F7,
-    0x0238, 0x1CCC,
-    0x023A, 0x41B0,
-    0x023C, 0x96C2,
-    0x023E, 0x6557,
-    0x0240, 0x3398,
-    0x0242, 0xB585,
-    0x0244, 0xA7B6,
-    0x0246, 0xDDF7,
-    0x0248, 0x6305,
-    0x024A, 0x118C,
-    0x024C, 0xC08D,
-    0x024E, 0x97A8,
-    0x0250, 0x09E5,
-    0x0252, 0xA23B,
-    0x0254, 0xFAE7,
-    0x0256, 0xF7AE,
-    0x0258, 0xFA3F,
-    0x025A, 0x8FDC,
-    0x025C, 0x1CB8,
-    0x025E, 0xF80C,
-    0x0260, 0x5240,
-    0x0262, 0x0BB2,
-    0x0264, 0x865B,
-    0x0266, 0xF59D,
-    0x0268, 0x7A2E,
-    0x026A, 0xE946,
-    0x026C, 0xEE5E,
-    0x026E, 0xDAED,
-    0x0270, 0xE083,
-    0x0272, 0x0369,
-    0x0274, 0x5C86,
-    0x0276, 0x052B,
-    0x0278, 0xAC3A,
-    0x027A, 0xE121,
-    0x027C, 0x0B2C,
-    0x027E, 0xD5F9,
-    0x0280, 0x8055,
-    0x0282, 0x2B71,
-    0x0284, 0xCA9B,
-    0x0286, 0x3C38,
-    0x0288, 0xD51D,
-    0x028A, 0xAA2C,
-    0x028C, 0x6638,
-    0x028E, 0xD97B,
-    0x0290, 0xD81E,
-    0x0292, 0x64C6,
-    0x0294, 0x23E5,
-    0x0296, 0xC55A,
-    0x0298, 0x519A,
-    0x029A, 0xB1A7,
-    0x029C, 0x8769,
-    0x029E, 0xF87A,
-    0x02A0, 0x772A,
-    0x02A2, 0x4996,
-    0x02A4, 0x1427,
-    0x02A6, 0xB0B3,
-    0x02A8, 0x5396,
-    0x02AA, 0x6710,
-    0x02AC, 0x154F,
-    0x02AE, 0xC084,
-    0x02B0, 0x0671,
-    0x02B2, 0x6218,
-    0x02B4, 0xFA55,
-    0x02B6, 0x737B,
-    0x02B8, 0x1B09,
-    0x02BA, 0x6DFE,
-    0x02BC, 0x5C31,
-    0x02BE, 0xAD90,
-    0x02C0, 0xD027,
-    0x02C2, 0x4F88,
-    0x02C4, 0xF8D4,
-    0x02C6, 0x3984,
-    0x02C8, 0x6E39,
-    0x02CA, 0x8A3B,
-    0x02CC, 0x1008,
-    0x02CE, 0xB808,
-    0x02D0, 0x7E69,
-    0x02D2, 0x0428,
-    0x02D4, 0x6E99,
-    0x02D6, 0x7F9C,
-    0x02D8, 0x6AD6,
-    0x02DA, 0x42C7,
-    0x02DC, 0x12D0,
-    0x02DE, 0x9785,
-    0x02E0, 0x2300,
-    0x02E2, 0x5FEE,
-    0x02E4, 0x6A49,
-    0x02E6, 0x3EBB,
-    0x02E8, 0x1C38,
-    0x02EA, 0x231D,
-    0x02EC, 0x53C3,
-    0x02EE, 0x4FE7,
-    0x02F0, 0x274C,
-    0x02F2, 0xA33A,
-    0x02F4, 0x939E,
-    0x02F6, 0x4BDF,
-    0x02F8, 0xD243,
-    0x02FA, 0x2AA1,
-    0x02FC, 0x4490,
-    0x02FE, 0x4EAB,
-    0x0300, 0xE2DA,
-    0x0302, 0xF516,
-    0x0304, 0xFC24,
-    0x0306, 0x876C,
-    0x0308, 0x7395,
-    0x030A, 0x1CDB,
-    0x030C, 0x9887,
-    0x030E, 0x5DD4,
-    0x0310, 0x5408,
-    0x0312, 0x87AD,
-    0x0314, 0xFA9A,
-    0x0316, 0xCF5A,
-    0x0318, 0x9045,
-    0x031A, 0x3AF0,
-    0x031C, 0x4FC4,
-    0x031E, 0xD580,
-    0x0320, 0x804D,
-    0x0322, 0x780B,
-    0x0324, 0x4E21,
-    0x0326, 0x7B1A,
-    0x0328, 0x00A9,
-    0x032A, 0x5C1E,
-    0x032C, 0x7ECC,
-    0x032E, 0x4378,
-    0x0330, 0x50FF,
-    0x0332, 0x6CC6,
-    0x0334, 0x1CE9,
-    0x0336, 0xEBD6,
-    0x0338, 0xED90,
-    0x033A, 0xE0CC,
-    0x033C, 0xC568,
-    0x033E, 0x6E51,
-    0x0340, 0x67F4,
-    0x0342, 0x3FC2,
-    0x0344, 0x18AC,
-    0x0346, 0x803D,
-    0x0348, 0xFFEA,
-    0x034A, 0x5AED,
-    0x034C, 0x0ED2,
-    0x034E, 0x01C7,
-    0x0350, 0x1D85,
-    0x0352, 0xF24D,
-    0x0354, 0x64CF,
-    0x0356, 0x401D,
-    0x0358, 0xC221,
-    0x035A, 0x7F36,
-    0x035C, 0x6C78,
-    0x035E, 0xCFBB,
-    0x0360, 0x59BB,
-    0x0362, 0xA749,
-    0x0364, 0x73BD,
-    0x0366, 0x5F16,
-    0x0368, 0xA8FF,
-    0x036A, 0x400D,
-    0x036C, 0x1D09,
-    0x036E, 0xA032,
-    0x0370, 0x149C,
-    0x0372, 0x5E78,
-    0x0374, 0xB484,
-    0x0376, 0x1296,
-    0x0378, 0xEA61,
-    0x037A, 0xF1C8,
-    0x037C, 0xC708,
-    0x037E, 0x591F,
-    0x0380, 0x03AA,
-    0x0382, 0xA2EA,
-    0x0384, 0x5361,
-    0x0386, 0xA649,
-    0x0388, 0xFA7C,
-    0x038A, 0x4032,
-    0x038C, 0x6538,
-    0x038E, 0xA99D,
-    0x0390, 0x4D75,
-    0x0392, 0x68F0,
-    0x0394, 0x783C,
-    0x0396, 0xC6BB,
-    0x0398, 0x56AD,
-    0x039A, 0x58A2,
-    0x039C, 0x6821,
-    0x039E, 0xF155,
-    0x03A0, 0x96A7,
-    0x03A2, 0x906D,
-    0x03A4, 0x4A4D,
-    0x03A6, 0x8394,
-    0x03A8, 0x5D89,
-    0x03AA, 0xC4DE,
-    0x03AC, 0x1224,
-    0x03AE, 0x2EBC,
-    0x03B0, 0xC2C5,
-    0x03B2, 0x1E85,
-    0x03B4, 0xCB26,
-    0x03B6, 0xC969,
-    0x03B8, 0x6897,
-    0x03BA, 0x699A,
-    0x03BC, 0xC337,
-    0x03BE, 0xA20D,
-    0x03C0, 0x0688,
-    0x03C2, 0x93AF,
-    0x03C4, 0xB5EE,
-    0x03C6, 0xB64B,
-    0x03C8, 0x07D1,
-    0x03CA, 0x7B43,
-    0x03CC, 0x1ECD,
-    0x03CE, 0x03F4,
-    0x03D0, 0x5A81,
-    0x03D2, 0x076A,
-    0x03D4, 0x7A52,
-    0x03D6, 0x6779,
-    0x03D8, 0x4688,
-    0x03DA, 0x7EA9,
-    0x03DC, 0x13E5,
-    0x03DE, 0x1F4F,
-    0x03E0, 0x9630,
-    0x03E2, 0x87CA,
-    0x03E4, 0xFE1D,
-    0x03E6, 0x256F,
-    0x03E8, 0xE66D,
-    0x03EA, 0x7FAD,
-    0x03EC, 0xFCFF,
-    0x03EE, 0x468D,
-    0x03F0, 0x722B,
-    0x03F2, 0xEEF7,
-    0x03F4, 0x9C48,
-    0x03F6, 0xC2B0,
-    0x03F8, 0x9A27,
-    0x03FA, 0x18D6,
-    0x03FC, 0x39B9,
-    0x03FE, 0xC176,
-    0x0400, 0x3AE4,
-    0x0402, 0x61D9,
-    0x0404, 0x0988,
-    0x0406, 0xEC5A,
-    0x0408, 0xBA4C,
-    0x040A, 0xD689,
-    0x040C, 0x421B,
-    0x040E, 0xAADD,
-    0x0410, 0x5882,
-    0x0412, 0x15CC,
-    0x0414, 0xC02A,
-    0x0416, 0x91B0,
-    0x0418, 0xB779,
-    0x041A, 0x203D,
-    0x041C, 0x2570,
-    0x041E, 0x5145,
-    0x0420, 0xBE00,
-    0x0422, 0x9396,
-    0x0424, 0x2E02,
-    0x0426, 0x2809,
-    0x0428, 0xC521,
-    0x042A, 0x615A,
-    0x042C, 0xA0CF,
-    0x042E, 0xE28E,
-    0x0430, 0x5258,
-    0x0432, 0xC6A6,
-    0x0434, 0x044E,
-    0x0436, 0x1B2B,
-    0x0438, 0x0F2B,
-    0x043A, 0x3542,
-    0x043C, 0x95DE,
-    0x043E, 0x9A99,
-    0x0440, 0x4774,
-    0x0442, 0xBE43,
-    0x0444, 0x9A35,
-    0x0446, 0x68EA,
-    0x0448, 0xE89A,
-    0x044A, 0xC206,
-    0x044C, 0x6C87,
-    0x044E, 0xCE50,
-    0x0450, 0x9F8B,
-    0x0452, 0x5526,
-    0x0454, 0x3F76,
-    0x0456, 0x2539,
-    0x0458, 0x8D33,
-    0x045A, 0x1DD3,
-    0x045C, 0x6260,
-    0x045E, 0x2E4D,
-    0x0460, 0x8019,
-    0x0462, 0x7EA0,
-    0x0464, 0x494A,
-    0x0466, 0x3C0E,
-    0x0468, 0x0259,
-    0x046A, 0x9811,
-    0x046C, 0x9459,
-    0x046E, 0x304E,
-    0x0470, 0x0922,
-    0x0472, 0x802D,
-    0x0474, 0xDC20,
-    0x0476, 0x6A9D,
-    0x0478, 0x7176,
-    0x047A, 0xA96B,
-    0x047C, 0x5814,
-    0x047E, 0x78F0,
-    0x0480, 0x74F9,
-    0x0482, 0x26CD,
-    0x0484, 0x3325,
-    0x0486, 0x6DF0,
-    0x0488, 0x1CA0,
-    0x048A, 0x8669,
-    0x048C, 0x9C58,
-    0x048E, 0xD04F,
-    0x0490, 0xB481,
-    0x0492, 0x7DA8,
-    0x0494, 0x1665,
-    0x0496, 0xEA44,
-    0x0498, 0x641F,
-    0x049A, 0x552B,
-    0x049C, 0xBC6D,
-    0x049E, 0xD290,
-    0x04A0, 0x0FFD,
-    0x04A2, 0x3C1A,
-    0x04A4, 0x7F34,
-    0x04A6, 0xBFB6,
-    0x04A8, 0xF538,
-    0x04AA, 0x10E9,
-    0x04AC, 0x3A6C,
-    0x04AE, 0x0FDA,
-    0x04B0, 0x16EA,
-    0x04B2, 0xD25E,
-    0x04B4, 0x0239,
-    0x04B6, 0xFD5E,
-    0x04B8, 0xDB1B,
-    0x04BA, 0xF0CC,
-    0x04BC, 0x99F5,
-    0x04BE, 0xCBEC,
-    0x04C0, 0x9997,
-    0x04C2, 0x483C,
-    0x04C4, 0x20B5,
-    0x04C6, 0xB406,
-    0x04C8, 0x5F41,
-    0x04CA, 0x8ACB,
-    0x04CC, 0x55F7,
-    0x04CE, 0x2D67,
-    0x04D0, 0x0C1A,
-    0x04D2, 0x37D3,
-    0x04D4, 0x8ED8,
-    0x04D6, 0x2DAF,
-    0x04D8, 0x26E6,
-    0x04DA, 0x2EDB,
-    0x04DC, 0xB8D6,
-    0x04DE, 0x891E,
-    0x04E0, 0xBAD1,
-    0x04E2, 0xE130,
-    0x04E4, 0x64C5,
-    0x04E6, 0xBC5E,
-    0x04E8, 0x5BA4,
-    0x04EA, 0xB879,
-    0x04EC, 0x31F8,
-    0x04EE, 0xA441,
-    0x04F0, 0x974D,
-    0x04F2, 0xD714,
-    0x04F4, 0xC091,
-    0x04F6, 0xD3EA,
-    0x04F8, 0x640E,
-    0x04FA, 0xEB2D,
-    0x04FC, 0xC4AA,
-    0x04FE, 0x6B5C,
-    0x0500, 0xE026,
-    0x0502, 0x8C8D,
-    0x0504, 0x1B9D,
-    0x0506, 0x75C0,
-    0x0508, 0x934C,
-    0x050A, 0x541A,
-    0x050C, 0x7935,
-    0x050E, 0x93CA,
-    0x0510, 0x8C29,
-    0x0512, 0x3974,
-    0x0514, 0x1C57,
-    0x0516, 0x4438,
-    0x0518, 0xD9E1,
-    0x051A, 0xC0E8,
-    0x051C, 0x8C85,
-    0x051E, 0x62B6,
-    0x0520, 0xD016,
-    0x0522, 0x0C61,
-    0x0524, 0x69F9,
-    0x0526, 0x087F,
-    0x0528, 0xC10A,
-    0x052A, 0xE420,
-    0x052C, 0x28DF,
-    0x052E, 0xF336,
-    0x0530, 0xC6E0,
-    0x0532, 0x0C30,
-    0x0534, 0xA8C6,
-    0x0536, 0x80C9,
-    0x0538, 0x9DAC,
-    0x053A, 0xBF25,
-    0x053C, 0xE036,
-    0x053E, 0x01ED,
-    0x0540, 0x8130,
-    0x0542, 0x7150,
-    0x0544, 0xC212,
-    0x0546, 0xC122,
-    0x0548, 0x11C5,
-    0x054A, 0x0AEB,
-    0x054C, 0xF495,
-    0x054E, 0x2514,
-    0x0550, 0xC95C,
-    0x0552, 0x56CB,
-    0x0554, 0xEE5E,
-    0x0556, 0xC09B,
-    0x0558, 0xD133,
-    0x055A, 0x12C9,
-    0x055C, 0x3096,
-    0x055E, 0xA20D,
-    0x0560, 0x0292,
-    0x0562, 0xC8DE,
-    0x0564, 0x9227,
-    0x0566, 0xBDF8,
-    0x0568, 0xDCFD,
-    0x056A, 0x3DB7,
-    0x056C, 0xF0A1,
-    0x056E, 0xF85E,
-    0x0570, 0x2FAC,
-    0x0572, 0x9DE7,
-    0x0574, 0xC134,
-    0x0576, 0xB205,
-    0x0578, 0xDDF8,
-    0x057A, 0x6D17,
-    0x057C, 0x3BED,
-    0x057E, 0x8DD8,
-    0x0580, 0xB263,
-    0x0582, 0x5A9E,
-    0x0584, 0x67EE,
-    0x0586, 0x7770,
-    0x0588, 0x58FE,
-    0x058A, 0x8810,
-    0x058C, 0xFBBB,
-    0x058E, 0xEFE3,
-    0x0590, 0x2BFF,
-    0x0592, 0x9A56,
-    0x0594, 0x9886,
-    0x0596, 0xCA7A,
-    0x0598, 0xA206,
-    0x059A, 0xE1E9,
-    0x059C, 0x766A,
-    0x059E, 0x28DA,
-    0x05A0, 0x4898,
-    0x05A2, 0x3AB9,
-    0x05A4, 0xD0EE,
-    0x05A6, 0x7E5C,
-    0x05A8, 0x9BA7,
-    0x05AA, 0x9A33,
-    0x05AC, 0x1670,
-    0x05AE, 0xF092,
-    0x05B0, 0xA74A,
-    0x05B2, 0x275A,
-    0x05B4, 0x232A,
-    0x05B6, 0x1249,
-    0x05B8, 0xC350,
-    0x05BA, 0x1145,
-    0x05BC, 0xED0F,
-    0x05BE, 0x19B6,
-    0x05C0, 0x0D35,
-    0x05C2, 0xCC8B,
-    0x05C4, 0x78A5,
-    0x05C6, 0xCA4B,
-    0x05C8, 0x933E,
-    0x05CA, 0x6E54,
-    0x05CC, 0x1BF7,
-    0x05CE, 0x6BB9,
-    0x05D0, 0x058C,
-    0x05D2, 0xBAD2,
-    0x05D4, 0x28D4,
-    0x05D6, 0x79E0,
-    0x05D8, 0xBCA0,
-    0x05DA, 0x02D3,
-    0x05DC, 0xC4C4,
-    0x05DE, 0xCAC7,
-    0x05E0, 0x01E2,
-    0x05E2, 0x1305,
-    0x05E4, 0x39FC,
-    0x05E6, 0x5AC3,
-    0x05E8, 0x6176,
-    0x05EA, 0xDC30,
-    0x05EC, 0xF24C,
-    0x05EE, 0xB4C0,
-    0x05F0, 0x1CEB,
-    0x05F2, 0x49B1,
-    0x05F4, 0x9CFA,
-    0x05F6, 0x6B04,
-    0x05F8, 0xF51C,
-    0x05FA, 0xAC09,
-    0x05FC, 0xD193,
-    0x05FE, 0x4BC4,
-    0x0600, 0x2AEF,
-    0x0602, 0xFC02,
-    0x0604, 0x8E9F,
-    0x0606, 0x6DE5,
-    0x0608, 0xFAF0,
-    0x060A, 0xD3D4,
-    0x060C, 0x8A2E,
-    0x060E, 0xB0B7,
-    0x0610, 0x3574,
-    0x0612, 0x0B14,
-    0x0614, 0xD1A2,
-    0x0616, 0xB6E5,
-    0x0618, 0xB90A,
-    0x061A, 0xCD8D,
-    0x061C, 0x4CB1,
-    0x061E, 0xC6ED,
-    0x0620, 0x994E,
-    0x0622, 0xCA09,
-    0x0624, 0xAA89,
-    0x0626, 0xE1E2,
-    0x0628, 0xE019,
-    0x062A, 0x1B4C,
-    0x062C, 0xDD5F,
-    0x062E, 0x33F5,
-    0x0630, 0xC409,
-    0x0632, 0xC994,
-    0x0634, 0xD231,
-    0x0636, 0x9F08,
-    0x0638, 0xECAD,
-    0x063A, 0xD54E,
-    0x063C, 0x6D45,
-    0x063E, 0x2B30,
-    0x0640, 0xECC0,
-    0x0642, 0xD5ED,
-    0x0644, 0xA0D1,
-    0x0646, 0x4B6F,
-    0x0648, 0x2042,
-    0x064A, 0xF720,
-    0x064C, 0x8202,
-    0x064E, 0x15F6,
-    0x0650, 0x8F0C,
-    0x0652, 0x48E7,
-    0x0654, 0xF956,
-    0x0656, 0x4683,
-    0x0658, 0xC789,
-    0x065A, 0xACBD,
-    0x065C, 0x2DB1,
-    0x065E, 0xCF0B,
-    0x0660, 0xC74B,
-    0x0662, 0x2BA9,
-    0x0664, 0x61A2,
-    0x0666, 0xD057,
-    0x0668, 0xA27B,
-    0x066A, 0x8C3A,
-    0x066C, 0x264A,
-    0x066E, 0x035B,
-    0x0670, 0x8039,
-    0x0672, 0x8D29,
-    0x0674, 0xB89B,
-    0x0676, 0x22D9,
-    0x0678, 0x26B0,
-    0x067A, 0xC9F6,
-    0x067C, 0xCA5D,
-    0x067E, 0x8F8B,
-    0x0680, 0xDBCE,
-    0x0682, 0xB380,
-    0x0684, 0x2B06,
-    0x0686, 0x4D7F,
-    0x0688, 0x9580,
-    0x068A, 0xE4B6,
-    0x068C, 0x8B9F,
-    0x068E, 0xC198,
-    0x0690, 0x6F72,
-    0x0692, 0x3157,
-    0x0694, 0x5D64,
-    0x0696, 0x07A0,
-    0x0698, 0xE198,
-    0x069A, 0x1B0F,
-    0x069C, 0x6E8F,
-    0x069E, 0xA5EE,
-    0x06A0, 0x6BF1,
-    0x06A2, 0x0386,
-    0x06A4, 0x00B9,
-    0x06A6, 0xE6AA,
-    0x06A8, 0xBE32,
-    0x06AA, 0x7F0C,
-    0x06AC, 0x1F88,
-    0x06AE, 0xAF5A,
-    0x06B0, 0xF38F,
-    0x06B2, 0x23DD,
-    0x06B4, 0x81AE,
-    0x06B6, 0x7F97,
-    0x06B8, 0x3ED6,
-    0x06BA, 0xCA0D,
-    0x06BC, 0xD71A,
-    0x06BE, 0x1355,
-    0x06C0, 0x5DC2,
-    0x06C2, 0x820B,
-    0x06C4, 0xEE33,
-    0x06C6, 0x7911,
-    0x06C8, 0x027A,
-    0x06CA, 0xE598,
-    0x06CC, 0x90CD,
-    0x06CE, 0x31F6,
-    0x06D0, 0x201B,
-    0x06D2, 0x254B,
-    0x06D4, 0x889B,
-    0x06D6, 0x81ED,
-    0x06D8, 0x7EB4,
-    0x06DA, 0x5AC9,
-    0x06DC, 0x7366,
-    0x06DE, 0x99BA,
-    0x06E0, 0x21ED,
-    0x06E2, 0x0155,
-    0x06E4, 0x4B3A,
-    0x06E6, 0xF2AD,
-    0x06E8, 0x4D1D,
-    0x06EA, 0x85E2,
-    0x06EC, 0xFCCD,
-    0x06EE, 0x3AE7,
-    0x06F0, 0x2B8D,
-    0x06F2, 0x2E43,
-    0x06F4, 0x128C,
-    0x06F6, 0x46EE,
-    0x06F8, 0x9732,
-    0x06FA, 0xDDDE,
-    0x06FC, 0x1F7B,
-    0x06FE, 0xC0E6,
-    0x0700, 0x4977,
-    0x0702, 0x6386,
-    0x0704, 0xF483,
-    0x0706, 0xEC05,
-    0x0708, 0x3957,
-    0x070A, 0x5B2E,
-    0x070C, 0x5E48,
-    0x070E, 0x56CE,
-    0x0710, 0x4BF1,
-    0x0712, 0xD19F,
-    0x0714, 0x2657,
-    0x0716, 0x2484,
-    0x0718, 0x3B0A,
-    0x071A, 0x7C70,
-    0x071C, 0xF884,
-    0x071E, 0x184B,
-    0x0720, 0xE7CC,
-    0x0722, 0x135B,
-    0x0724, 0x6571,
-    0x0726, 0x4A10,
-    0x0728, 0x0377,
-    0x072A, 0x0EB4,
-    0x072C, 0x518D,
-    0x072E, 0x9A47,
-    0x0730, 0x0304,
-    0x0732, 0x3BCB,
-    0x0734, 0x8226,
-    0x0736, 0x1931,
-    0x0738, 0xBD07,
-    0x073A, 0x25BE,
-    0x073C, 0x558B,
-    0x073E, 0x30AF,
-    0x0740, 0xF681,
-    0x0742, 0x3EF0,
-    0x0744, 0x0494,
-    0x0746, 0x4311,
-    0x0748, 0x77B5,
-    0x074A, 0x307A,
-    0x074C, 0x90F4,
-    0x074E, 0xEEAD,
-    0x0750, 0xE429,
-    0x0752, 0x5593,
-    0x0754, 0x4974,
-    0x0756, 0x1BAE,
-    0x0758, 0xF955,
-    0x075A, 0x677B,
-    0x075C, 0xB653,
-    0x075E, 0xD3B0,
-    0x0760, 0x7B2E,
-    0x0762, 0x12A1,
-    0x0764, 0xD02E,
-    0x0766, 0x9C5D,
-    0x0768, 0x8F60,
-    0x076A, 0x2F69,
-    0x076C, 0x5076,
-    0x076E, 0xCA89,
-    0x0770, 0x5036,
-    0x0772, 0xBE4C,
-    0x0774, 0x5996,
-    0x0776, 0xCCEA,
-    0x0778, 0x3D2F,
-    0x077A, 0x51C5,
-    0x077C, 0xBC8C,
-    0x077E, 0x5374,
-    0x0780, 0x5B83,
-    0x0782, 0x4006,
-    0x0784, 0x2CBB,
-    0x0786, 0xE4D9,
-    0x0788, 0xA555,
-    0x078A, 0xCD05,
-    0x078C, 0x7BBC,
-    0x078E, 0xF47A,
-    0x0790, 0xACA0,
-    0x0792, 0x9E19,
-    0x0794, 0xBA1F,
-    0x0796, 0x6CC0,
-    0x0798, 0x4115,
-    0x079A, 0x8EDF,
-    0x079C, 0x4BAA,
-    0x079E, 0x75B1,
-    0x07A0, 0x8576,
-    0x07A2, 0x3798,
-    0x07A4, 0x0041,
-    0x07A6, 0x357E,
-    0x07A8, 0x1759,
-    0x07AA, 0xC6B4,
-    0x07AC, 0x28D5,
-    0x07AE, 0x8D4B,
-    0x07B0, 0xE8B8,
-    0x07B2, 0x1DDA,
-    0x07B4, 0x3AD5,
-    0x07B6, 0x5356,
-    0x07B8, 0xA937,
-    0x07BA, 0xF1BE,
-    0x07BC, 0xB42C,
-    0x07BE, 0x51C8,
-    0x07C0, 0x9BFA,
-    0x07C2, 0xC1D5,
-    0x07C4, 0xC769,
-    0x07C6, 0xAD84,
-    0x07C8, 0x9143,
-    0x07CA, 0x619C,
-    0x07CC, 0x99BD,
-    0x07CE, 0x850A,
-    0x07D0, 0xA58F,
-    0x07D2, 0x1EF5,
-    0x07D4, 0x045C,
-    0x07D6, 0xBB50,
-    0x07D8, 0x4DCF,
-    0x07DA, 0x995C,
-    0x07DC, 0x1508,
-    0x07DE, 0x040A,
-    0x07E0, 0x8C3E,
-    0x07E2, 0x5DB2,
-    0x07E4, 0x8770,
-    0x07E6, 0x9226,
-    0x07E8, 0x82D0,
-    0x07EA, 0x48D2,
-    0x07EC, 0x9BB1,
-    0x07EE, 0x3A74,
-    0x07F0, 0xB306,
-    0x07F2, 0xAE52,
-    0x07F4, 0x094C,
-    0x07F6, 0xFB47,
-    0x07F8, 0xCEE9,
-    0x07FA, 0xEC43,
-    0x07FC, 0x9693,
-    0x07FE, 0x7471,
-    0x0800, 0xEAFE,
-    0x0802, 0x8B1D,
-    0x0804, 0x3919,
-    0x0806, 0x62E3,
-    0x0808, 0x76E0,
-    0x080A, 0x1BEE,
-    0x080C, 0x014D,
-    0x080E, 0xBF76,
-    0x0810, 0x18CB,
-    0x0812, 0x0024,
-    0x0814, 0x37EE,
-    0x0816, 0xE64F,
-    0x0818, 0x9AAF,
-    0x081A, 0xDBD9,
-    0x081C, 0xA12D,
-    0x081E, 0x428A,
-    0x0820, 0xCD29,
-    0x0822, 0x6F55,
-    0x0824, 0x25B2,
-    0x0826, 0x599D,
-    0x0828, 0x9200,
-    0x082A, 0xD75E,
-    0x082C, 0x993B,
-    0x082E, 0x3B01,
-    0x0830, 0x756E,
-    0x0832, 0x60DC,
-    0x0834, 0x6722,
-    0x0836, 0x1454,
-    0x0838, 0xD3A6,
-    0x083A, 0xB19B,
-    0x083C, 0x5518,
-    0x083E, 0x3780,
-    0x0840, 0x9A97,
-    0x0842, 0xCB93,
-    0x0844, 0xFC66,
-    0x0846, 0x3A1E,
-    0x0848, 0x61E4,
-    0x084A, 0x33F0,
-    0x084C, 0xBA46,
-    0x084E, 0xA5C7,
-    0x0850, 0xAE6B,
-    0x0852, 0x3F59,
-    0x0854, 0x215A,
-    0x0856, 0x3908,
-    0x0858, 0x3994,
-    0x085A, 0x40BA,
-    0x085C, 0x115D,
-    0x085E, 0x3F5A,
-    0x0860, 0xCED7,
-    0x0862, 0xFE54,
-    0x0864, 0x0300,
-    0x0866, 0xE9DF,
-    0x0868, 0x0B70,
-    0x086A, 0xC433,
-    0x086C, 0x7CDF,
-    0x086E, 0xF44F,
-    0x0870, 0x8A67,
-    0x0872, 0x1DC4,
-    0x0874, 0xA5DA,
-    0x0876, 0x6754,
-    0x0878, 0xC6B0,
-    0x087A, 0x5675,
-    0x087C, 0x41C6,
-    0x087E, 0x3FAC,
-    0x0880, 0xCB67,
-    0x0882, 0x83B5,
-    0x0884, 0xCC94,
-    0x0886, 0xE348,
-    0x0888, 0x3AE3,
-    0x088A, 0xBA32,
-    0x088C, 0xA441,
-    0x088E, 0x80A4,
-    0x0890, 0x4833,
-    0x0892, 0xC910,
-    0x0894, 0xE680,
-    0x0896, 0x1CF5,
-    0x0898, 0x0B9B,
-    0x089A, 0x4D94,
-    0x089C, 0x08B2,
-    0x089E, 0xD16A,
-    0x08A0, 0x7024,
-    0x08A2, 0x11ED,
-    0x08A4, 0xB03A,
-    0x08A6, 0x3CC3,
-    0x08A8, 0x2FAE,
-    0x08AA, 0xD96D,
-    0x08AC, 0x9705,
-    0x08AE, 0x183F,
-    0x08B0, 0xC5F2,
-    0x08B2, 0xF3E8,
-    0x08B4, 0xC2EC,
-    0x08B6, 0xD52F,
-    0x08B8, 0x0DEA,
-    0x08BA, 0x4C5E,
-    0x08BC, 0xE80D,
-    0x08BE, 0x831D,
-    0x08C0, 0xB4D6,
-    0x08C2, 0x788C,
-    0x08C4, 0xC7F2,
-    0x08C6, 0x3C9E,
-    0x08C8, 0x0142,
-    0x08CA, 0x1D16,
-    0x08CC, 0x00FB,
-    0x08CE, 0x7AC0,
-    0x08D0, 0x183F,
-    0x08D2, 0xA48F,
-    0x08D4, 0xBC43,
-    0x08D6, 0x5D3F,
-    0x08D8, 0x18B8,
-    0x08DA, 0xD665,
-    0x08DC, 0x5173,
-    0x08DE, 0x6EF5,
-    0x08E0, 0x0C72,
-    0x08E2, 0x8D21,
-    0x08E4, 0xDC55,
-    0x08E6, 0x224B,
-    0x08E8, 0x860D,
-    0x08EA, 0xCB81,
-    0x08EC, 0x0F2A,
-    0x08EE, 0x7047,
-    0x08F0, 0x58E8,
-    0x08F2, 0x1422,
-    0x08F4, 0x5EC8,
-    0x08F6, 0xE6F2,
-    0x08F8, 0x2DF4,
-    0x08FA, 0x8371,
-    0x08FC, 0x1155,
-    0x08FE, 0x4B8D,
-    0x0900, 0xE031,
-    0x0902, 0x176F,
-    0x0904, 0xACFB,
-    0x0906, 0x3623,
-    0x0908, 0x3354,
-    0x090A, 0xC87A,
-    0x090C, 0xB016,
-    0x090E, 0x4E54,
-    0x0910, 0xE73A,
-    0x0912, 0x43C5,
-    0x0914, 0x619B,
-    0x0916, 0x6610,
-    0x0918, 0xBEBB,
-    0x091A, 0x5F15,
-    0x091C, 0xF875,
-    0x091E, 0xD605,
-    0x0920, 0x39C0,
-    0x0922, 0xE289,
-    0x0924, 0xFD9C,
-    0x0926, 0x7536,
-    0x0928, 0x584E,
-    0x092A, 0xFFFD,
-    0x092C, 0x4BB9,
-    0x092E, 0xF9AB,
-    0x0930, 0xB2F3,
-    0x0932, 0x2DEE,
-    0x0934, 0x7E8C,
-    0x0936, 0x13B5,
-    0x0938, 0xF87A,
-    0x093A, 0x9196,
-    0x093C, 0x65E3,
-    0x093E, 0x6095,
-    0x0940, 0x4AC8,
-    0x0942, 0x1053,
-    0x0944, 0x5C29,
-    0x0946, 0xEFA4,
-    0x0948, 0xB54E,
-    0x094A, 0x5B72,
-    0x094C, 0x8028,
-    0x094E, 0x38BB,
-    0x0950, 0x586F,
-    0x0952, 0x25A4,
-    0x0954, 0x1287,
-    0x0956, 0x3934,
-    0x0958, 0xC4ED,
-    0x095A, 0x51D7,
-    0x095C, 0x5A55,
-    0x095E, 0xBE16,
-    0x0960, 0x94A2,
-    0x0962, 0xD9BB,
-    0x0964, 0xF6F5,
-    0x0966, 0x7DDD,
-    0x0968, 0x46E0,
-    0x096A, 0x5C6E,
-    0x096C, 0x43D1,
-    0x096E, 0xB205,
-    0x0970, 0x1542,
-    0x0972, 0x8517,
-    0x0974, 0xEE63,
-    0x0976, 0xC284,
-    0x0978, 0xDB43,
-    0x097A, 0x4994,
-    0x097C, 0xB650,
-    0x097E, 0x34E3,
-    0x0980, 0x6A7E,
-    0x0982, 0x1BC4,
-    0x0984, 0x4366,
-    0x0986, 0x15CD,
-    0x0988, 0xAC53,
-    0x098A, 0xF0DB,
-    0x098C, 0xACAB,
-    0x098E, 0xD429,
-    0x0990, 0x0B3D,
-    0x0992, 0x3084,
-    0x0994, 0x860B,
-    0x0996, 0x7F90,
-    0x0998, 0x0F73,
-    0x099A, 0x2B62,
-    0x099C, 0x0F63,
-    0x099E, 0xB517,
-    0x09A0, 0xC60E,
-    0x09A2, 0x1CCF,
-    0x09A4, 0x5573,
-    0x09A6, 0x6A14,
-    0x09A8, 0x4BC6,
-    0x09AA, 0x19E5,
-    0x09AC, 0x07F1,
-    0x09AE, 0x5706,
-    0x09B0, 0xDD1E,
-    0x09B2, 0x2463,
-    0x09B4, 0x7810,
-    0x09B6, 0xFBBE,
-    0x09B8, 0xF5B4,
-    0x09BA, 0x9628,
-    0x09BC, 0xDB1D,
-    0x09BE, 0x2A74,
-    0x09C0, 0xEF6B,
-    0x09C2, 0x1289,
-    0x09C4, 0x40FA,
-    0x09C6, 0x9C38,
-    0x09C8, 0x1535,
-    0x09CA, 0xD047,
-    0x09CC, 0x69BB,
-    0x09CE, 0xB14D,
-    0x09D0, 0x6D39,
-    0x09D2, 0x7173,
-    0x09D4, 0x0088,
-    0x09D6, 0xC315,
-    0x09D8, 0xB611,
-    0x09DA, 0x8E4F,
-    0x09DC, 0xABFF,
-    0x09DE, 0x0D2D,
-    0x09E0, 0x8094,
-    0x09E2, 0xD989,
-    0x09E4, 0x340F,
-    0x09E6, 0xA76E,
-    0x09E8, 0xD1F4,
-    0x09EA, 0xA50F,
-    0x09EC, 0x1EF0,
-    0x09EE, 0xFFB5,
-    0x09F0, 0x4CBB,
-    0x09F2, 0xB60A,
-    0x09F4, 0xC75B,
-    0x09F6, 0x445D,
-    0x09F8, 0x8570,
-    0x09FA, 0xD57A,
-    0x09FC, 0x745C,
-    0x09FE, 0xE984,
-    0x0A00, 0x99AA,
-    0x0A02, 0x7633,
-    0x0A04, 0x7EAF,
-    0x0A06, 0x8FB2,
-    0x0A08, 0x5222,
-    0x0A0A, 0xD0F7,
-    0x0A0C, 0x2CC1,
-    0x0A0E, 0xFABF,
-    0x0A10, 0x9074,
-    0x0A12, 0xA45C,
-    0x0A14, 0x6FD2,
-    0x0A16, 0xB308,
-    0x0A18, 0x9B0C,
-    0x0A1A, 0x1675,
-    0x0A1C, 0xB43B,
-    0x0A1E, 0xD281,
-    0x0A20, 0x5958,
-    0x0A22, 0x818B,
-    0x0A24, 0x528E,
-    0x0A26, 0xB94C,
-    0x0A28, 0xF60D,
-    0x0A2A, 0x9C62,
-    0x0A2C, 0x4621,
-    0x0A2E, 0xDF64,
-    0x0A30, 0x5F07,
-    0x0A32, 0x7F6B,
-    0x0A34, 0x3236,
-    0x0A36, 0xFFE1,
-    0x0A38, 0x6DB9,
-    0x0A3A, 0xDA02,
-    0x0A3C, 0x918E,
-    0x0A3E, 0x12FE,
-    0x0A40, 0x13BB,
-    0x0A42, 0x7441,
-    0x0A44, 0x4CFA,
-    0x0A46, 0xA455,
-    0x0A48, 0x467D,
-    0x0A4A, 0x87CD,
-    0x0A4C, 0x9D74,
-    0x0A4E, 0x6160,
-    0x0A50, 0xC477,
-    0x0A52, 0x0879,
-    0x0A54, 0xC6D1,
-    0x0A56, 0xCD76,
-    0x0A58, 0x8786,
-    0x0A5A, 0xD9E4,
-    0x0A5C, 0xDBCD,
-    0x0A5E, 0x178C,
-    0x0A60, 0x9C5B,
-    0x0A62, 0xE0EF,
-    0x0A64, 0xDFCF,
-    0x0A66, 0xC3D7,
-    0x0A68, 0xAA64,
-    0x0A6A, 0x84E4,
-    0x0A6C, 0x00C7,
-    0x0A6E, 0x4D39,
-    0x0A70, 0x895A,
-    0x0A72, 0xCF71,
-    0x0A74, 0xCE0D,
-    0x0A76, 0x68EE,
-    0x0A78, 0xE58C,
-    0x0A7A, 0xCADF,
-    0x0A7C, 0x64CA,
-    0x0A7E, 0xE43F,
-    0x0A80, 0x3809,
-    0x0A82, 0xCA64,
-    0x0A84, 0x807A,
-    0x0A86, 0x5235,
-    0x0A88, 0x6BD2,
-    0x0A8A, 0x9D45,
-    0x0A8C, 0x2420,
-    0x0A8E, 0x6B6B,
-    0x0A90, 0x8BD1,
-    0x0A92, 0x9B90,
-    0x0A94, 0x8F01,
-    0x0A96, 0xCE41,
-    0x0A98, 0x3DBE,
-    0x0A9A, 0x98B1,
-    0x0A9C, 0x3794,
-    0x0A9E, 0x12DA,
-    0x0AA0, 0xD298,
-    0x0AA2, 0x3CFC,
-    0x0AA4, 0x2464,
-    0x0AA6, 0x08AC,
-    0x0AA8, 0x7D26,
-    0x0AAA, 0x9108,
-    0x0AAC, 0xB101,
-    0x0AAE, 0x2978,
-    0x0AB0, 0x3738,
-    0x0AB2, 0x0E08,
-    0x0AB4, 0x3732,
-    0x0AB6, 0xE50A,
-    0x0AB8, 0xCE62,
-    0x0ABA, 0x55C0,
-    0x0ABC, 0x08DD,
-    0x0ABE, 0xE874,
-    0x0AC0, 0x5AF6,
-    0x0AC2, 0x5433,
-    0x0AC4, 0x335F,
-    0x0AC6, 0x052E,
-    0x0AC8, 0xB6E9,
-    0x0ACA, 0x0CE8,
-    0x0ACC, 0x749D,
-    0x0ACE, 0x5637,
-    0x0AD0, 0x9AF3,
-    0x0AD2, 0x848B,
-    0x0AD4, 0x9001,
-    0x0AD6, 0xFDA1,
-    0x0AD8, 0x3035,
-    0x0ADA, 0x1205,
-    0x0ADC, 0x128C,
-    0x0ADE, 0x97EA,
-    0x0AE0, 0xE40E,
-    0x0AE2, 0xF8EA,
-    0x0AE4, 0x3D95,
-    0x0AE6, 0xAE42,
-    0x0AE8, 0xA932,
-    0x0AEA, 0x87FF,
-    0x0AEC, 0x0C5E,
-    0x0AEE, 0x0EA8,
-    0x0AF0, 0x7E33,
-    0x0AF2, 0x0D13,
-    0x0AF4, 0xCB1C,
-    0x0AF6, 0x9FAF,
-    0x0AF8, 0xEA36,
-    0x0AFA, 0x8F20,
-    0x0AFC, 0xCE97,
-    0x0AFE, 0x6F00,
-    0x0B00, 0xB847,
-    0x0B02, 0x4CB9,
-    0x0B04, 0xA902,
-    0x0B06, 0x67F3,
-    0x0B08, 0x3217,
-    0x0B0A, 0x9A2B,
-    0x0B0C, 0xD195,
-    0x0B0E, 0xDA84,
-    0x0B10, 0x16CA,
-    0x0B12, 0x51F1,
-    0x0B14, 0x0A4A,
-    0x0B16, 0x063E,
-    0x0B18, 0x7620,
-    0x0B1A, 0x1116,
-    0x0B1C, 0x207B,
-    0x0B1E, 0x5A91,
-    0x0B20, 0x44EA,
-    0x0B22, 0xAE6A,
-    0x0B24, 0xD318,
-    0x0B26, 0x2BDB,
-    0x0B28, 0x1015,
-    0x0B2A, 0x29F0,
-    0x0B2C, 0x2A02,
-    0x0B2E, 0x2633,
-    0x0B30, 0x54C5,
-    0x0B32, 0x0797,
-    0x0B34, 0x2109,
-    0x0B36, 0xBA8B,
-    0x0B38, 0x39E5,
-    0x0B3A, 0x601A,
-    0x0B3C, 0x6918,
-    0x0B3E, 0x1BCB,
-    0x0B40, 0xBCEF,
-    0x0B42, 0x51D1,
-    0x0B44, 0x376E,
-    0x0B46, 0xAD2C,
-    0x0B48, 0x1603,
-    0x0B4A, 0xD7BB,
-    0x0B4C, 0x7810,
-    0x0B4E, 0xED0B,
-    0x0B50, 0x13DB,
-    0x0B52, 0x9C7E,
-    0x0B54, 0x3DB8,
-    0x0B56, 0x327A,
-    0x0B58, 0xBFC1,
-    0x0B5A, 0xD26D,
-    0x0B5C, 0xCA73,
-    0x0B5E, 0x9BFE,
-    0x0B60, 0xFD47,
-    0x0B62, 0x921A,
-    0x0B64, 0x5365,
-    0x0B66, 0xE6DF,
-    0x0B68, 0x69C4,
-    0x0B6A, 0x03D2,
-    0x0B6C, 0xCB09,
-    0x0B6E, 0x5C1F,
-    0x0B70, 0x9D06,
-    0x0B72, 0x26B4,
-    0x0B74, 0xA2BE,
-    0x0B76, 0x04AF,
-    0x0B78, 0x3FD8,
-    0x0B7A, 0x5636,
-    0x0B7C, 0x1C9B,
-    0x0B7E, 0x7897,
-    0x0B80, 0xA732,
-    0x0B82, 0x79C3,
-    0x0B84, 0x0AF9,
-    0x0B86, 0x8E98,
-    0x0B88, 0x34FB,
-    0x0B8A, 0xCBFB,
-    0x0B8C, 0x6EF6,
-    0x0B8E, 0xEBAC,
-    0x0B90, 0x99C9,
-    0x0B92, 0x54C2,
-    0x0B94, 0x4BA5,
-    0x0B96, 0x8219,
-    0x0B98, 0xAC76,
-    0x0B9A, 0xCD1F,
-    0x0B9C, 0xB43D,
-    0x0B9E, 0x27A3,
-    0x0BA0, 0xD3FE,
-    0x0BA2, 0xF219,
-    0x0BA4, 0x4AE5,
-    0x0BA6, 0x189B,
-    0x0BA8, 0xBDDA,
-    0x0BAA, 0x1F9B,
-    0x0BAC, 0x384C,
-    0x0BAE, 0xEEA8,
-    0x0BB0, 0x5D6B,
-    0x0BB2, 0x1412,
-    0x0BB4, 0xB9C9,
-    0x0BB6, 0x1532,
-    0x0BB8, 0x07FC,
-    0x0BBA, 0x250F,
-    0x0BBC, 0xE0D5,
-    0x0BBE, 0x21B9,
-    0x0BC0, 0x29C1,
-    0x0BC2, 0xB54A,
-    0x0BC4, 0x4329,
-    0x0BC6, 0x457C,
-    0x0BC8, 0xF6AF,
-    0x0BCA, 0x5AC3,
-    0x0BCC, 0xE876,
-    0x0BCE, 0xB481,
-    0x0BD0, 0xFB92,
-    0x0BD2, 0x73DD,
-    0x0BD4, 0x0E5B,
-    0x0BD6, 0xD923,
-    0x0BD8, 0x98F0,
-    0x0BDA, 0x8C83,
-    0x0BDC, 0x98BE,
-    0x0BDE, 0x4EA8,
-    0x0BE0, 0x93E6,
-    0x0BE2, 0x2C7A,
-    0x0BE4, 0xC91B,
-    0x0BE6, 0x61AA,
-    0x0BE8, 0x4F03,
-    0x0BEA, 0x540A,
-    0x0BEC, 0xB0AB,
-    0x0BEE, 0x8E91,
-    0x0BF0, 0x4C67,
-    0x0BF2, 0x2CF7,
-    0x0BF4, 0xEE69,
-    0x0BF6, 0x2C93,
-    0x0BF8, 0xD2B7,
-    0x0BFA, 0x512D,
-    0x0BFC, 0x104E,
-    0x0BFE, 0xE5C8,
-    0x0C00, 0x6827,
-    0x0C02, 0xC82F,
-    0x0C04, 0x8F88,
-    0x0C06, 0xB487,
-    0x0C08, 0x066B,
-    0x0C0A, 0x9668,
-    0x0C0C, 0x6D2D,
-    0x0C0E, 0x0E72,
-    0x0C10, 0x0DEE,
-    0x0C12, 0xDB72,
-    0x0C14, 0x9425,
-    0x0C16, 0x6CF0,
-    0x0C18, 0xAE4E,
-    0x0C1A, 0x99EF,
-    0x0C1C, 0x4D17,
-    0x0C1E, 0xC9DA,
-    0x0C20, 0x0265,
-    0x0C22, 0x9D64,
-    0x0C24, 0x973F,
-    0x0C26, 0x06F2,
-    0x0C28, 0x5FEA,
-    0x0C2A, 0xB583,
-    0x0C2C, 0xEA27,
-    0x0C2E, 0x16B2,
-    0x0C30, 0x8769,
-    0x0C32, 0xD6CD,
-    0x0C34, 0xF0E9,
-    0x0C36, 0xCF91,
-    0x0C38, 0xB241,
-    0x0C3A, 0x9E74,
-    0x0C3C, 0x353F,
-    0x0C3E, 0x4E26,
-    0x0C40, 0x9159,
-    0x0C42, 0x390E,
-    0x0C44, 0x3A25,
-    0x0C46, 0x79DE,
-    0x0C48, 0x8643,
-    0x0C4A, 0xCA74,
-    0x0C4C, 0x6F07,
-    0x0C4E, 0x2BC9,
-    0x0C50, 0x042C,
-    0x0C52, 0xE6D6,
-    0x0C54, 0x2720,
-    0x0C56, 0x6774,
-    0x0C58, 0x377E,
-    0x0C5A, 0x51FC,
-    0x0C5C, 0x3651,
-    0x0C5E, 0x2C6E,
-    0x0C60, 0x85B6,
-    0x0C62, 0xCEBB,
-    0x0C64, 0xC198,
-    0x0C66, 0x9DC9,
-    0x0C68, 0x2CF7,
-    0x0C6A, 0x2DB4,
-    0x0C6C, 0x462C,
-    0x0C6E, 0x29CD,
-    0x0C70, 0x2742,
-    0x0C72, 0xE006,
-    0x0C74, 0x45C4,
-    0x0C76, 0x73BA,
-    0x0C78, 0x25B5,
-    0x0C7A, 0x8E1E,
-    0x0C7C, 0x3556,
-    0x0C7E, 0x1622,
-    0x0C80, 0xEBCC,
-    0x0C82, 0xF7F5,
-    0x0C84, 0x090A,
-    0x0C86, 0xC07B,
-    0x0C88, 0x8312,
-    0x0C8A, 0xE095,
-    0x0C8C, 0x79C9,
-    0x0C8E, 0x7D9A,
-    0x0C90, 0x74B0,
-    0x0C92, 0xE92C,
-    0x0C94, 0xE746,
-    0x0C96, 0x71E4,
-    0x0C98, 0xDFFC,
-    0x0C9A, 0x7849,
-    0x0C9C, 0xA02C,
-    0x0C9E, 0x53D6,
-    0x0CA0, 0xD2CF,
-    0x0CA2, 0x6BEA,
-    0x0CA4, 0xB8FE,
-    0x0CA6, 0x7432,
-    0x0CA8, 0x00D1,
-    0x0CAA, 0x08AE,
-    0x0CAC, 0x8B75,
-    0x0CAE, 0xBC80,
-    0x0CB0, 0x549F,
-    0x0CB2, 0x54D8,
-    0x0CB4, 0xB2B1,
-    0x0CB6, 0x2144,
-    0x0CB8, 0xBEA7,
-    0x0CBA, 0xF6EB,
-    0x0CBC, 0x1CCD,
-    0x0CBE, 0x00B2,
-    0x0CC0, 0x328A,
-    0x0CC2, 0x5A1B,
-    0x0CC4, 0xA27B,
-    0x0CC6, 0xA1B3,
-    0x0CC8, 0xA571,
-    0x0CCA, 0x0645,
-    0x0CCC, 0x420E,
-    0x0CCE, 0xC4E2,
-    0x0CD0, 0xAA4E,
-    0x0CD2, 0x0C86,
-    0x0CD4, 0xC630,
-    0x0CD6, 0x44D8,
-    0x0CD8, 0x6DD0,
-    0x0CDA, 0xDFCE,
-    0x0CDC, 0xB4E7,
-    0x0CDE, 0xC405,
-    0x0CE0, 0x991E,
-    0x0CE2, 0xCC13,
-    0x0CE4, 0x04CE,
-    0x0CE6, 0x5874,
-    0x0CE8, 0x8294,
-    0x0CEA, 0x79FF,
-    0x0CEC, 0x36EA,
-    0x0CEE, 0x7F7D,
-    0x0CF0, 0x8C2E,
-    0x0CF2, 0x8B31,
-    0x0CF4, 0xC62E,
-    0x0CF6, 0xCA8F,
-    0x0CF8, 0x1711,
-    0x0CFA, 0xE49B,
-    0x0CFC, 0xEFEF,
-    0x0CFE, 0x7E3E,
-    0x0D00, 0x7FCA,
-    0x0D02, 0xA310,
-    0x0D04, 0x7282,
-    0x0D06, 0x8185,
-    0x0D08, 0x583E,
-    0x0D0A, 0x8C1A,
-    0x0D0C, 0x8B86,
-    0x0D0E, 0x4BBB,
-    0x0D10, 0xA752,
-    0x0D12, 0x03DE,
-    0x0D14, 0x271D,
-    0x0D16, 0x79BC,
-    0x0D18, 0x58B1,
-    0x0D1A, 0xE5B3,
-    0x0D1C, 0xB501,
-    0x0D1E, 0x3FDB,
-    0x0D20, 0xCDB0,
-    0x0D22, 0x6302,
-    0x0D24, 0xDED0,
-    0x0D26, 0xC7D6,
-    0x0D28, 0x921C,
-    0x0D2A, 0x90E7,
-    0x0D2C, 0xB9FF,
-    0x0D2E, 0x688E,
-    0x0D30, 0x4974,
-    0x0D32, 0x5783,
-    0x0D34, 0x2262,
-    0x0D36, 0xAAEB,
-    0x0D38, 0xD355,
-    0x0D3A, 0x89A1,
-    0x0D3C, 0x2532,
-    0x0D3E, 0xD8B0,
-    0x0D40, 0xD2CC,
-    0x0D42, 0x31A3,
-    0x0D44, 0x623C,
-    0x0D46, 0xBAB9,
-    0x0D48, 0xB2CF,
-    0x0D4A, 0xAD11,
-    0x0D4C, 0x18E1,
-    0x0D4E, 0x472B,
-    0x0D50, 0xCAD4,
-    0x0D52, 0xA1D9,
-    0x0D54, 0xA2A2,
-    0x0D56, 0xE25A,
-    0x0D58, 0x6ACE,
-    0x0D5A, 0x2BC1,
-    0x0D5C, 0xD094,
-    0x0D5E, 0x87E0,
-    0x0D60, 0x859D,
-    0x0D62, 0x8AA9,
-    0x0D64, 0x2F22,
-    0x0D66, 0x7FEB,
-    0x0D68, 0x0D44,
-    0x0D6A, 0x98CA,
-    0x0D6C, 0x8848,
-    0x0D6E, 0x8867,
-    0x0D70, 0xFAFF,
-    0x0D72, 0xAC5C,
-    0x0D74, 0x0A7F,
-    0x0D76, 0x40F2,
-    0x0D78, 0x9FA8,
-    0x0D7A, 0x437C,
-    0x0D7C, 0xCD21,
-    0x0D7E, 0x6DB5,
-    0x0D80, 0x0C1C,
-    0x0D82, 0xB90C,
-    0x0D84, 0x38B0,
-    0x0D86, 0xA28C,
-    0x0D88, 0x7506,
-    0x0D8A, 0x1DAA,
-    0x0D8C, 0xAC97,
-    0x0D8E, 0x80F0,
-    0x0D90, 0x93D9,
-    0x0D92, 0xC540,
-    0x0D94, 0x9DD5,
-    0x0D96, 0xCF91,
-    0x0D98, 0x43EE,
-    0x0D9A, 0x2F21,
-    0x0D9C, 0xF470,
-    0x0D9E, 0xB006,
-    0x0DA0, 0xF3FE,
-    0x0DA2, 0xAA68,
-    0x0DA4, 0x6B8D,
-    0x0DA6, 0x6162,
-    0x0DA8, 0xC310,
-    0x0DAA, 0xD526,
-    0x0DAC, 0xB301,
-    0x0DAE, 0x6669,
-    0x0DB0, 0x6EDD,
-    0x0DB2, 0xF5C0,
-    0x0DB4, 0xF3A9,
-    0x0DB6, 0x081B,
-    0x0DB8, 0xA04D,
-    0x0DBA, 0x17D1,
-    0x0DBC, 0x4C3E,
-    0x0DBE, 0xDC31,
-    0x0DC0, 0xE71C,
-    0x0DC2, 0xFD81,
-    0x0DC4, 0x7525,
-    0x0DC6, 0xAF0F,
-    0x0DC8, 0x23C2,
-    0x0DCA, 0x556F,
-    0x0DCC, 0x2B1D,
-    0x0DCE, 0x3F33,
-    0x0DD0, 0xF3DC,
-    0x0DD2, 0x8D28,
-    0x0DD4, 0x7A78,
-    0x0DD6, 0x1847,
-    0x0DD8, 0x74A3,
-    0x0DDA, 0x702A,
-    0x0DDC, 0xA3F7,
-    0x0DDE, 0x5E13,
-    0x0DE0, 0xB976,
-    0x0DE2, 0x434F,
-    0x0DE4, 0xEB3A,
-    0x0DE6, 0xCDFB,
-    0x0DE8, 0x28CC,
-    0x0DEA, 0x7A96,
-    0x0DEC, 0x636D,
-    0x0DEE, 0x9449,
-    0x0DF0, 0x247F,
-    0x0DF2, 0x219F,
-    0x0DF4, 0x6A61,
-    0x0DF6, 0x63F9,
-    0x0DF8, 0xF656,
-    0x0DFA, 0x131B,
-    0x0DFC, 0xC91B,
-    0x0DFE, 0x564A,
-    0x0E00, 0xEE1F,
-    0x0E02, 0xCAE8,
-    0x0E04, 0x930E,
-    0x0E06, 0x1275,
-    0x0E08, 0xC1F1,
-    0x0E0A, 0x2DD1,
-    0x0E0C, 0x7F86,
-    0x0E0E, 0xE58D,
-    0x0E10, 0xB3A7,
-    0x0E12, 0x42BD,
-    0x0E14, 0x568B,
-    0x0E16, 0xC7BD,
-    0x0E18, 0xDA46,
-    0x0E1A, 0x5DD1,
-    0x0E1C, 0x2E61,
-    0x0E1E, 0xFBB3,
-    0x0E20, 0x9D11,
-    0x0E22, 0xC609,
-    0x0E24, 0xC843,
-    0x0E26, 0x757F,
-    0x0E28, 0x6CEE,
-    0x0E2A, 0x0B41,
-    0x0E2C, 0xED81,
-    0x0E2E, 0x4EA7,
-    0x0E30, 0xD5C9,
-    0x0E32, 0x4FB1,
-    0x0E34, 0x6020,
-    0x0E36, 0xFB8D,
-    0x0E38, 0x9002,
-    0x0E3A, 0x9F01,
-    0x0E3C, 0x145D,
-    0x0E3E, 0xD0D9,
-    0x0E40, 0x708C,
-    0x0E42, 0x4E5C,
-    0x0E44, 0x3D97,
-    0x0E46, 0x214D,
-    0x0E48, 0x0D0B,
-    0x0E4A, 0x55E1,
-    0x0E4C, 0x3356,
-    0x0E4E, 0x48D7,
-    0x0E50, 0x81F9,
-    0x0E52, 0xDD48,
-    0x0E54, 0x69A9,
-    0x0E56, 0x575B,
-    0x0E58, 0xA1DC,
-    0x0E5A, 0x9F4D,
-    0x0E5C, 0x4590,
-    0x0E5E, 0x0A24,
-    0x0E60, 0x39E5,
-    0x0E62, 0x5130,
-    0x0E64, 0x0361,
-    0x0E66, 0x67DD,
-    0x0E68, 0xD9CF,
-    0x0E6A, 0x1938,
-    0x0E6C, 0x56AC,
-    0x0E6E, 0xD1A3,
-    0x0E70, 0xDEB5,
-    0x0E72, 0xFD36,
-    0x0E74, 0x8818,
-    0x0E76, 0xB87E,
-    0x0E78, 0xB2A0,
-    0x0E7A, 0x07BD,
-    0x0E7C, 0x1F65,
-    0x0E7E, 0x72A6,
-    0x0E80, 0x24A3,
-    0x0E82, 0x6763,
-    0x0E84, 0xDDD8,
-    0x0E86, 0x3A57,
-    0x0E88, 0x6269,
-    0x0E8A, 0x661C,
-    0x0E8C, 0xC948,
-    0x0E8E, 0x9BAD,
-    0x0E90, 0xB31A,
-    0x0E92, 0xBA45,
-    0x0E94, 0x17A8,
-    0x0E96, 0x6C14,
-    0x0E98, 0xCE2B,
-    0x0E9A, 0x6C46,
-    0x0E9C, 0x74DD,
-    0x0E9E, 0x8FF7,
-    0x0EA0, 0x6D3F,
-    0x0EA2, 0xE6B4,
-    0x0EA4, 0x01E0,
-    0x0EA6, 0xD215,
-    0x0EA8, 0x8F82,
-    0x0EAA, 0x153F,
-    0x0EAC, 0xD51F,
-    0x0EAE, 0x81A5,
-    0x0EB0, 0x6F10,
-    0x0EB2, 0x992E,
-    0x0EB4, 0x374B,
-    0x0EB6, 0x7DC0,
-    0x0EB8, 0x36B6,
-    0x0EBA, 0x0774,
-    0x0EBC, 0xD451,
-    0x0EBE, 0x0D84,
-    0x0EC0, 0xE9F6,
-    0x0EC2, 0x0BC3,
-    0x0EC4, 0xC93B,
-    0x0EC6, 0x3FA9,
-    0x0EC8, 0xAB4F,
-    0x0ECA, 0xCA75,
-    0x0ECC, 0x8091,
-    0x0ECE, 0x944B,
-    0x0ED0, 0xA32C,
-    0x0ED2, 0xE277,
-    0x0ED4, 0x03DB,
-    0x0ED6, 0x31A0,
-    0x0ED8, 0x6250,
-    0x0EDA, 0x8F4C,
-    0x0EDC, 0xB736,
-    0x0EDE, 0x054A,
-    0x0EE0, 0x187A,
-    0x0EE2, 0x040A,
-    0x0EE4, 0x1705,
-    0x0EE6, 0x4908,
-    0x0EE8, 0x4BB3,
-    0x0EEA, 0xCD17,
-    0x0EEC, 0x24AE,
-    0x0EEE, 0x9713,
-    0x0EF0, 0x4CDF,
-    0x0EF2, 0x737E,
-    0x0EF4, 0x20EC,
-    0x0EF6, 0xA9D0,
-    0x0EF8, 0xD5A5,
-    0x0EFA, 0x1D2A,
-    0x0EFC, 0x430E,
-    0x0EFE, 0xDBCD,
-    0x0F00, 0x817C,
-    0x0F02, 0xC8C1,
-    0x0F04, 0x7404,
-    0x0F06, 0x7D6C,
-    0x0F08, 0x995D,
-    0x0F0A, 0xE04D,
-    0x0F0C, 0xFE0F,
-    0x0F0E, 0x5A53,
-    0x0F10, 0x66FB,
-    0x0F12, 0xA44F,
-    0x0F14, 0x974C,
-    0x0F16, 0xFC9C,
-    0x0F18, 0x8094,
-    0x0F1A, 0x8336,
-    0x0F1C, 0x7A9F,
-    0x0F1E, 0xF001,
-    0x0F20, 0x12F4,
-    0x0F22, 0x8229,
-    0x0F24, 0x72AC,
-    0x0F26, 0x7325,
-    0x0F28, 0x7B83,
-    0x0F2A, 0xA7B6,
-    0x0F2C, 0xA321,
-    0x0F2E, 0x06BF,
-    0x0F30, 0x619A,
-    0x0F32, 0xF447,
-    0x0F34, 0x2D75,
-    0x0F36, 0xED14,
-    0x0F38, 0xD7CB,
-    0x0F3A, 0xE23F,
-    0x0F3C, 0x09E5,
-    0x0F3E, 0xA197,
-    0x0F40, 0xD4CE,
-    0x0F42, 0xCC6B,
-    0x0F44, 0x2131,
-    0x0F46, 0x7D66,
-    0x0F48, 0x9365,
-    0x0F4A, 0x69F1,
-    0x0F4C, 0x83B0,
-    0x0F4E, 0x079B,
-    0x0F50, 0x686C,
-    0x0F52, 0x3CC6,
-    0x0F54, 0x1B13,
-    0x0F56, 0xA9B4,
-    0x0F58, 0x9D80,
-    0x0F5A, 0xC254,
-    0x0F5C, 0x33AA,
-    0x0F5E, 0xBF70,
-    0x0F60, 0x24CF,
-    0x0F62, 0xBE2E,
-    0x0F64, 0x08DB,
-    0x0F66, 0x64FB,
-    0x0F68, 0xDB86,
-    0x0F6A, 0xCB96,
-    0x0F6C, 0xFD4A,
-    0x0F6E, 0x8BBE,
-    0x0F70, 0xF49A,
-    0x0F72, 0x19F3,
-    0x0F74, 0x37EE,
-    0x0F76, 0x2357,
-    0x0F78, 0xEF2F,
-    0x0F7A, 0x96AF,
-    0x0F7C, 0x9F88,
-    0x0F7E, 0x18CC,
-    0x0F80, 0xC716,
-    0x0F82, 0xA30C,
-    0x0F84, 0x218B,
-    0x0F86, 0x2351,
-    0x0F88, 0xF723,
-    0x0F8A, 0xCED1,
-    0x0F8C, 0xC632,
-    0x0F8E, 0x32D1,
-    0x0F90, 0xEBF0,
-    0x0F92, 0xE1A5,
-    0x0F94, 0x2E18,
-    0x0F96, 0xB357,
-    0x0F98, 0x9893,
-    0x0F9A, 0xF00F,
-    0x0F9C, 0x917A,
-    0x0F9E, 0x84F3,
-    0x0FA0, 0x6CF5,
-    0x0FA2, 0x8667,
-    0x0FA4, 0x1DBE,
-    0x0FA6, 0xE993,
-    0x0FA8, 0x4B9F,
-    0x0FAA, 0xD5FC,
-    0x0FAC, 0xF07A,
-    0x0FAE, 0x884D,
-    0x0FB0, 0xF19D,
-    0x0FB2, 0x8CA2,
-    0x0FB4, 0x62D3,
-    0x0FB6, 0x1849,
-    0x0FB8, 0x7C2D,
-    0x0FBA, 0x83DF,
-    0x0FBC, 0xD127,
-    0x0FBE, 0x497F,
-    0x0FC0, 0x7695,
-    0x0FC2, 0x93E7,
-    0x0FC4, 0x4247,
-    0x0FC6, 0x2DC3,
-    0x0FC8, 0xAFC3,
-    0x0FCA, 0x6A4A,
-    0x0FCC, 0x7DDB,
-    0x0FCE, 0x7A43,
-    0x0FD0, 0x0DF5,
-    0x0FD2, 0x01A0,
-    0x0FD4, 0x0C9F,
-    0x0FD6, 0x3ADE,
-    0x0FD8, 0xAADA,
-    0x0FDA, 0x41F1,
-    0x0FDC, 0x40F7,
-    0x0FDE, 0x9E9D,
-    0x0FE0, 0xBB33,
-    0x0FE2, 0x5392,
-    0x0FE4, 0x0403,
-    0x0FE6, 0x09EB,
-    0x0FE8, 0x9482,
-    0x0FEA, 0x0E93,
-    0x0FEC, 0x7B69,
-    0x0FEE, 0xE45A,
-    0x0FF0, 0x22C4,
-    0x0FF2, 0xEE57,
-    0x0FF4, 0x21CD,
-    0x0FF6, 0x4AAE,
-    0x0FF8, 0x716F,
-    0x0FFA, 0x97ED,
-    0x0FFC, 0xB468,
-    0x0FFE, 0x92F0,
-    0x1000, 0x191C,
-    0x1002, 0xFDB4,
-    0x1004, 0x4B3E,
-    0x1006, 0xD331,
-    0x1008, 0x52DD,
-    0x100A, 0x1A41,
-    0x100C, 0xBE19,
-    0x100E, 0xBBDE,
-    0x1010, 0xC01D,
-    0x1012, 0xE2F9,
-    0x1014, 0x1E75,
-    0x1016, 0xCCBE,
-    0x1018, 0xDE75,
-    0x101A, 0xB9C3,
-    0x101C, 0x3C7D,
-    0x101E, 0x087F,
-    0x1020, 0x7EA8,
-    0x1022, 0x9F0D,
-    0x1024, 0x1F22,
-    0x1026, 0x1DF5,
-    0x1028, 0x6C54,
-    0x102A, 0xBCB2,
-    0x102C, 0x4A67,
-    0x102E, 0xC913,
-    0x1030, 0x00B4,
-    0x1032, 0xC532,
-    0x1034, 0xDFD6,
-    0x1036, 0x1A59,
-    0x1038, 0x2A39,
-    0x103A, 0x5F66,
-    0x103C, 0xA849,
-    0x103E, 0x8566,
-    0x1040, 0xD52A,
-    0x1042, 0xFB09,
-    0x1044, 0x53AA,
-    0x1046, 0xCD37,
-    0x1048, 0x7893,
-    0x104A, 0xEB40,
-    0x104C, 0x4DD5,
-    0x104E, 0x25C6,
-    0x1050, 0x9B9F,
-    0x1052, 0x34DC,
-    0x1054, 0xA6D6,
-    0x1056, 0x338A,
-    0x1058, 0x3767,
-    0x105A, 0x5CB3,
-    0x105C, 0x2409,
-    0x105E, 0x0556,
-    0x1060, 0x1DF4,
-    0x1062, 0xBB6D,
-    0x1064, 0xD7EB,
-    0x1066, 0x3F9C,
-    0x1068, 0xAE67,
-    0x106A, 0x6F8C,
-    0x106C, 0x0F60,
-    0x106E, 0xEBB1,
-    0x1070, 0x76F3,
-    0x1072, 0x100B,
-    0x1074, 0xCC3E,
-    0x1076, 0xC963,
-    0x1078, 0x57EC,
-    0x107A, 0xB0CF,
-    0x107C, 0x3724,
-    0x107E, 0xBE70,
-    0x1080, 0x9153,
-    0x1082, 0x0F48,
-    0x1084, 0x365D,
-    0x1086, 0xBFA4,
-    0x1088, 0x2029,
-    0x108A, 0x45CA,
-    0x108C, 0x595C,
-    0x108E, 0x8CF7,
-    0x1090, 0x7ACF,
-    0x1092, 0xB231,
-    0x1094, 0x4C9B,
-    0x1096, 0x53B8,
-    0x1098, 0x74F2,
-    0x109A, 0x1969,
-    0x109C, 0x0D8E,
-    0x109E, 0xC423,
-    0x10A0, 0xE5A9,
-    0x10A2, 0xB7C3,
-    0x10A4, 0x0ED4,
-    0x10A6, 0xDB9D,
-    0x10A8, 0xE8F6,
-    0x10AA, 0x91A3,
-    0x10AC, 0xFF96,
-    0x10AE, 0xE8E0,
-    0x10B0, 0xC3C1,
-    0x10B2, 0xE0F7,
-    0x10B4, 0x9E36,
-    0x10B6, 0x5985,
-    0x10B8, 0x9FA0,
-    0x10BA, 0x01D7,
-    0x10BC, 0x454B,
-    0x10BE, 0x524E,
-    0x10C0, 0xE5ED,
-    0x10C2, 0xCC42,
-    0x10C4, 0xEB0A,
-    0x10C6, 0x6833,
-    0x10C8, 0x23F8,
-    0x10CA, 0xA152,
-    0x10CC, 0xB153,
-    0x10CE, 0x54F6,
-    0x10D0, 0xCE7C,
-    0x10D2, 0x8FCC,
-    0x10D4, 0x8185,
-    0x10D6, 0xFD5C,
-    0x10D8, 0x1892,
-    0x10DA, 0xD6A4,
-    0x10DC, 0x4635,
-    0x10DE, 0x9ECD,
-    0x10E0, 0x4844,
-    0x10E2, 0x243F,
-    0x10E4, 0xDDCE,
-    0x10E6, 0xBD84,
-    0x10E8, 0x2370,
-    0x10EA, 0x69FA,
-    0x10EC, 0x939E,
-    0x10EE, 0x6D16,
-    0x10F0, 0x35AF,
-    0x10F2, 0x054B,
-    0x10F4, 0x4E51,
-    0x10F6, 0xED90,
-    0x10F8, 0x64FB,
-    0x10FA, 0xB9BD,
-    0x10FC, 0x73FF,
-    0x10FE, 0x3CCE,
-    0x1100, 0x3378,
-    0x1102, 0xEFBB,
-    0x1104, 0x306F,
-    0x1106, 0x5E46,
-    0x1108, 0x62F6,
-    0x110A, 0x41C9,
-    0x110C, 0xD184,
-    0x110E, 0xCA57,
-    0x1110, 0x01FF,
-    0x1112, 0x63C7,
-    0x1114, 0xE97C,
-    0x1116, 0x3F87,
-    0x1118, 0x3F32,
-    0x111A, 0x1947,
-    0x111C, 0x6E53,
-    0x111E, 0x9460,
-    0x1120, 0xD02D,
-    0x1122, 0x47D1,
-    0x1124, 0x7855,
-    0x1126, 0xD96B,
-    0x1128, 0xCC29,
-    0x112A, 0x2118,
-    0x112C, 0x433F,
-    0x112E, 0xBBFD,
-    0x1130, 0xBC6C,
-    0x1132, 0x1C87,
-    0x1134, 0x1DBE,
-    0x1136, 0xE6B0,
-    0x1138, 0x7D65,
-    0x113A, 0xE509,
-    0x113C, 0x9162,
-    0x113E, 0xBC19,
-    0x1140, 0x5B33,
-    0x1142, 0x7C47,
-    0x1144, 0x6CBC,
-    0x1146, 0x4F34,
-    0x1148, 0xDD7C,
-    0x114A, 0x7799,
-    0x114C, 0xB943,
-    0x114E, 0x424A,
-    0x1150, 0xE94B,
-    0x1152, 0xC8E4,
-    0x1154, 0xBE5C,
-    0x1156, 0x54C9,
-    0x1158, 0x43AD,
-    0x115A, 0x602A,
-    0x115C, 0x3CC7,
-    0x115E, 0xFF9B,
-    0x1160, 0x14D2,
-    0x1162, 0x0773,
-    0x1164, 0xD8F9,
-    0x1166, 0xCE7E,
-    0x1168, 0x91B3,
-    0x116A, 0xA609,
-    0x116C, 0x4FF4,
-    0x116E, 0xC155,
-    0x1170, 0x022C,
-    0x1172, 0x4B95,
-    0x1174, 0xB17B,
-    0x1176, 0xBF8D,
-    0x1178, 0x2A3E,
-    0x117A, 0xE7D5,
-    0x117C, 0xEAB8,
-    0x117E, 0xB7A1,
-    0x1180, 0x54CA,
-    0x1182, 0x89F8,
-    0x1184, 0x892A,
-    0x1186, 0xE229,
-    0x1188, 0x0440,
-    0x118A, 0x8568,
-    0x118C, 0x48E6,
-    0x118E, 0x9459,
-    0x1190, 0xBC85,
-    0x1192, 0xC3B5,
-    0x1194, 0xEDFC,
-    0x1196, 0x74E4,
-    0x1198, 0x3501,
-    0x119A, 0xA871,
-    0x119C, 0x2371,
-    0x119E, 0xA419,
-    0x11A0, 0x8A29,
-    0x11A2, 0x34D8,
-    0x11A4, 0x1EE5,
-    0x11A6, 0xC56A,
-    0x11A8, 0xB7BE,
-    0x11AA, 0x1CAE,
-    0x11AC, 0xDBC0,
-    0x11AE, 0x7CB4,
-    0x11B0, 0xDDBD,
-    0x11B2, 0x19C3,
-    0x11B4, 0xA114,
-    0x11B6, 0x43FB,
-    0x11B8, 0x0E23,
-    0x11BA, 0x1395,
-    0x11BC, 0xED60,
-    0x11BE, 0x2C7C,
-    0x11C0, 0xCEC7,
-    0x11C2, 0x21E4,
-    0x11C4, 0xFBFE,
-    0x11C6, 0x3D09,
-    0x11C8, 0x0000,
-    0xFCFC, 0x4000,
-};
-
-static u16 kkthuwide_sensor_init_pre_setting_short[] = {
-    0xFCFC, 0x4000,
-    0x0000, 0x000D,
-    0x0000, 0x38E5,
-    0x6018, 0x0001,
-    0x7002, 0x0408,
-    0x6014, 0x0001,
-    0xFCFC, 0x2002,
-    0x1E92, 0x8000,
-    0x1E84, 0x282B,
-    0x1E86, 0x0320,
-    0xFCFC, 0x4000,
-    0x7002, 0x0008,
-};
-
-static u16 kkthuwide_sensor_init_setting_short[] = {
-    0xFCFC, 0x2000,
-    0xDCF0, 0x0101,
-    0xFCFC, 0x2001,
-    0x3C60, 0x0000,
-    0xFCFC, 0x4000,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2002,
-    0x849C, 0x0100,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0x84A4, 0x0000,
-    0x84A6, 0x0000,
-    0x84A8, 0x0000,
-    0x84AA, 0x0001,
-    0x84AC, 0x01FF,
-    0x84B0, 0x8089,
-    0x84B2, 0x0000,
-    0x84B4, 0x8889,
-    0x84B6, 0x0000,
-    0x84B8, 0xC097,
-    0x84BA, 0x0000,
-    0x84BC, 0xA60E,
-    0x84BE, 0x0000,
-    0x84C0, 0x2206,
-    0x84C2, 0x0000,
-    0x84C4, 0x0010,
-    0x84C8, 0x90C3,
-    0x84CA, 0x0224,
-    0x84CC, 0x44AB,
-    0x84CE, 0x0224,
-    0x84D0, 0x44AB,
-    0x84D2, 0x0224,
-    0x84D4, 0x44AB,
-    0x84D6, 0x0224,
-    0x84D8, 0x44AB,
-    0x84DA, 0x0224,
-    0x84DC, 0x44AB,
-    0x84DE, 0x0224,
-    0xA548, 0x001D,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA558, 0x0000,
-    0xA55A, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xA56C, 0x0000,
-    0xA56E, 0x0000,
-    0xA570, 0x0000,
-    0xA572, 0x0000,
-    0xA574, 0x00D5,
-    0xA576, 0x0000,
-    0xA578, 0x0000,
-    0xA57A, 0x0000,
-    0xA57C, 0x0000,
-    0xA57E, 0x0000,
-    0xA580, 0x0000,
-    0xA582, 0x0000,
-    0xA584, 0x0000,
-    0xA586, 0x0000,
-    0xA588, 0x0000,
-    0xA58A, 0x0000,
-    0xA58C, 0x0000,
-    0xA58E, 0x0000,
-    0xA590, 0x0000,
-    0xA592, 0x0000,
-    0xA594, 0x0000,
-    0xA596, 0x0000,
-    0xA598, 0x0000,
-    0xA59A, 0x0000,
-    0xA59C, 0x0000,
-    0xA59E, 0x0000,
-    0xA5A0, 0x0100,
-    0xA5A2, 0x0036,
-    0xA5A4, 0x0000,
-    0xA5A6, 0x0000,
-    0xA5A8, 0x0000,
-    0xA5AA, 0x0000,
-    0xA5AC, 0x0000,
-    0xA5AE, 0x0000,
-    0xA5B0, 0x0000,
-    0xA5B2, 0x0000,
-    0xA5B4, 0x0000,
-    0xA5B6, 0x0000,
-    0xA5B8, 0x0000,
-    0xA5BA, 0x0000,
-    0xA5BC, 0x0000,
-    0xA5BE, 0x0000,
-    0xA5C0, 0x0000,
-    0xA5C2, 0x0000,
-    0xA5C4, 0x0000,
-    0xA5C6, 0x0000,
-    0xA5C8, 0x0000,
-    0xA5CA, 0x0000,
-    0xA5CC, 0x0000,
-    0xA5CE, 0x0000,
-    0xA5D0, 0x0000,
-    0xA5D2, 0x0000,
-    0xA5D4, 0x0000,
-    0xA5D6, 0x0000,
-    0xA5D8, 0x0000,
-    0xA5DA, 0x0000,
-    0xA5DC, 0x0000,
-    0xA5DE, 0x0000,
-    0xA5E0, 0x0000,
-    0xA5E2, 0x0000,
-    0xA5E4, 0x0000,
-    0xA5E6, 0x0000,
-    0xA5E8, 0x0000,
-    0xA5EA, 0x0000,
-    0xA5EC, 0x000F,
-    0xA5EE, 0x000F,
-    0xA5F0, 0x000F,
-    0xA5F2, 0x000F,
-    0xA5F4, 0x0000,
-    0xA5F6, 0x0000,
-    0xA5F8, 0x0000,
-    0xA5FA, 0x0000,
-    0xA5FC, 0x0000,
-    0xA5FE, 0x0000,
-    0xA600, 0x0000,
-    0xA602, 0x0000,
-    0xA604, 0x0000,
-    0xA606, 0x00C6,
-    0xBB84, 0x0001,
-    0xBB86, 0x0000,
-    0xBB88, 0x0000,
-    0xBB8A, 0x0100,
-    0xBB8C, 0x0800,
-    0xBB8E, 0x1000,
-    0xBB90, 0x2000,
-    0xBB92, 0x9A00,
-    0xBB94, 0x9A00,
-    0xBB96, 0x9A00,
-    0xBB98, 0x9A00,
-    0xBB9A, 0x9600,
-    0xBB9C, 0x9600,
-    0xBB9E, 0x9600,
-    0xBBA0, 0x9600,
-    0xBBA2, 0x9300,
-    0xBBA4, 0x9300,
-    0xBBA6, 0x9300,
-    0xBBA8, 0x9300,
-    0xBBAA, 0x9000,
-    0xBBAC, 0x9000,
-    0xBBAE, 0x9000,
-    0xBBB0, 0x9000,
-    0xBBB2, 0x8D00,
-    0xBBB4, 0x8D00,
-    0xBBB6, 0x8D00,
-    0xBBB8, 0x8D00,
-    0xBBBA, 0x3F00,
-    0xBBBC, 0x3F00,
-    0xBBBE, 0x3F00,
-    0xBBC0, 0x3F00,
-    0xBBC2, 0x1E00,
-    0xBBC4, 0x1E00,
-    0xBBC6, 0x1E00,
-    0xBBC8, 0x1E00,
-    0xBBCA, 0x0000,
-    0xBBCC, 0x0000,
-    0xBBCE, 0x0000,
-    0xBBD0, 0x0000,
-    0xBBD2, 0x0800,
-    0xBBD4, 0x0800,
-    0xBBD6, 0x0800,
-    0xBBD8, 0x0800,
-    0xBBDA, 0x0000,
-    0xBBDC, 0x0000,
-    0xBBDE, 0x0000,
-    0xBBE0, 0x0000,
-    0xBBE2, 0x3F00,
-    0xBBE4, 0x3F00,
-    0xBBE6, 0x3F00,
-    0xBBE8, 0x3F00,
-    0xBBEA, 0x3400,
-    0xBBEC, 0x3400,
-    0xBBEE, 0x3400,
-    0xBBF0, 0x3400,
-    0xBBF2, 0x0A00,
-    0xBBF4, 0x0A00,
-    0xBBF6, 0x0A00,
-    0xBBF8, 0x0A00,
-    0xBBFA, 0x1000,
-    0xBBFC, 0x1000,
-    0xBBFE, 0x1000,
-    0xBC00, 0x1000,
-    0xBC02, 0x0600,
-    0xBC04, 0x0600,
-    0xBC06, 0x0600,
-    0xBC08, 0x0600,
-    0xBC0A, 0x0C00,
-    0xBC0C, 0x0C00,
-    0xBC0E, 0x0C00,
-    0xBC10, 0x0C00,
-    0xBC12, 0x0000,
-    0xBC14, 0x0000,
-    0xBC16, 0x0000,
-    0xBC18, 0x0000,
-    0xBC1A, 0x1000,
-    0xBC1C, 0x1000,
-    0xBC1E, 0x1000,
-    0xBC20, 0x1000,
-    0xBC22, 0x1000,
-    0xBC24, 0x1000,
-    0xBC26, 0x1000,
-    0xBC28, 0x1000,
-    0xBC2A, 0x2000,
-    0xBC2C, 0x1000,
-    0xBC2E, 0x1000,
-    0xBC30, 0x1000,
-    0xBC32, 0x0600,
-    0xBC34, 0x0600,
-    0xBC36, 0x0600,
-    0xBC38, 0x0600,
-    0xBC3A, 0x1C00,
-    0xBC3C, 0x1C00,
-    0xBC3E, 0x1C00,
-    0xBC40, 0x1C00,
-    0xBC42, 0x0600,
-    0xBC44, 0x0600,
-    0xBC46, 0x0600,
-    0xBC48, 0x0600,
-    0xBC4A, 0x2A00,
-    0xBC4C, 0x2A00,
-    0xBC4E, 0x2A00,
-    0xBC50, 0x2A00,
-    0xBC52, 0x0200,
-    0xBC54, 0x0200,
-    0xBC56, 0x0200,
-    0xBC58, 0x0200,
-    0xBC5A, 0x1000,
-    0xBC5C, 0x1000,
-    0xBC5E, 0x1000,
-    0xBC60, 0x1000,
-    0xBC62, 0x0E00,
-    0xBC64, 0x0E00,
-    0xBC66, 0x0E00,
-    0xBC68, 0x0E00,
-    0xBC6A, 0x2800,
-    0xBC6C, 0x2800,
-    0xBC6E, 0x2800,
-    0xBC70, 0x2800,
-    0xBC72, 0x1800,
-    0xBC74, 0x1800,
-    0xBC76, 0x1800,
-    0xBC78, 0x1800,
-    0xBC7A, 0x0800,
-    0xBC7C, 0x0800,
-    0xBC7E, 0x0800,
-    0xBC80, 0x0800,
-    0xBC82, 0x0000,
-    0xBC84, 0x0000,
-    0xBC86, 0x0000,
-    0xBC88, 0x0000,
-    0xBC8A, 0x2400,
-    0xBC8C, 0x2400,
-    0xBC8E, 0x2400,
-    0xBC90, 0x2400,
-    0xBC92, 0x0088,
-    0xFCFC, 0x2000,
-    0x68D8, 0x0100,
-    0xFCFC, 0x2002,
-    0xBC92, 0x0100,
-    0xFCFC, 0x4000,
-    0x0E04, 0x1C03,
-    0x0E10, 0x0100,
-    0x0E12, 0x00A0,
-    0x0E14, 0x0C84,
-    0x0E16, 0x002B,
-    0x0E18, 0x0300,
-    0x0E1A, 0x3000,
-    0x0E1C, 0x0100,
-    0x0E1E, 0x00A0,
-    0x0E20, 0x0C84,
-    0x0E22, 0x012B,
-    0x0E24, 0x0400,
-    0x0E26, 0x3000,
-    0xFCFC, 0x2000,
-    0x22E4, 0x0300,
-    0x2338, 0x0101,
-    0xFCFC, 0x2000,
-    0xDD6C, 0xB47E,
-    0xDD6E, 0xB67E,
-    0xDE34, 0x0000,
-    0xDE36, 0x9231,
-    0xFCFC, 0x2006,
-    0x0000, 0x535A,
-    0x0002, 0x0100,
-    0x0004, 0x11C3,
-    0x0006, 0x5A00,
-    0x0008, 0x0001,
-    0x000A, 0x0064,
-    0x000C, 0x2400,
-    0x000E, 0x0000,
-    0x0010, 0x0000,
-    0x0012, 0x0000,
-    0x0014, 0x7FBF,
-    0x0016, 0x624E,
-    0x0018, 0x20FF,
-    0x001A, 0x1F7C,
-    0x001C, 0x2C23,
-    0x001E, 0x23E8,
-    0x0020, 0xE28B,
-    0x0022, 0x1547,
-    0x0024, 0x9DF4,
-    0x0026, 0xE7D7,
-    0x0028, 0xAFCB,
-    0x002A, 0xE85F,
-    0x002C, 0x4B74,
-    0x002E, 0xA863,
-    0x0030, 0xC002,
-    0x0032, 0xB199,
-    0x0034, 0x6AB9,
-    0x0036, 0xFC3D,
-    0x0038, 0x8930,
-    0x003A, 0xA51A,
-    0x003C, 0xECF6,
-    0x003E, 0x90E5,
-    0x0040, 0x706E,
-    0x0042, 0x4787,
-    0x0044, 0xF3B3,
-    0x0046, 0x3541,
-    0x0048, 0x2641,
-    0x004A, 0x4671,
-    0x004C, 0x52C7,
-    0x004E, 0xF3DE,
-    0x0050, 0x17ED,
-    0x0052, 0x5F95,
-    0x0054, 0x2A7C,
-    0x0056, 0x1E02,
-    0x0058, 0x6C56,
-    0x005A, 0x0FC4,
-    0x005C, 0x0101,
-    0x005E, 0x7D9A,
-    0x0060, 0xE5A4,
-    0x0062, 0x4D4B,
-    0x0064, 0x1C93,
-    0x0066, 0x3300,
-    0x0068, 0x7B68,
-    0x006A, 0xA445,
-    0x006C, 0x6F14,
-    0x006E, 0x59E1,
-    0x0070, 0xEC78,
-    0x0072, 0xCCFF,
-    0x0074, 0x4DE7,
-    0x0076, 0x1555,
-    0x0078, 0x4D81,
-    0x007A, 0x5FC2,
-    0x007C, 0xDCF5,
-    0x007E, 0xF141,
-    0x0080, 0x1924,
-    0x0082, 0x3846,
-    0x0084, 0x4608,
-    0x0086, 0x7700,
-    0x0088, 0x1268,
-    0x008A, 0xF048,
-    0x008C, 0x3E6C,
-    0x008E, 0x7AE4,
-    0x0090, 0x369B,
-    0x0092, 0x2C80,
-    0x0094, 0x0D92,
-    0x0096, 0x7048,
-    0x0098, 0x97DE,
-    0x009A, 0x2493,
-    0x009C, 0x02D1,
-    0x009E, 0x9C2E,
-    0x00A0, 0xD51B,
-    0x00A2, 0xCC3A,
-    0x00A4, 0x5508,
-    0x00A6, 0x73D5,
-    0x00A8, 0x0DC3,
-    0x00AA, 0xD2AC,
-    0x00AC, 0x8FE6,
-    0x00AE, 0xA96A,
-    0x00B0, 0x07D5,
-    0x00B2, 0xD4A4,
-    0x00B4, 0x04AD,
-    0x00B6, 0xD5AE,
-    0x00B8, 0x893F,
-    0x00BA, 0x2218,
-    0x00BC, 0xA2EB,
-    0x00BE, 0x0AF5,
-    0x00C0, 0x1957,
-    0x00C2, 0xA8C2,
-    0x00C4, 0x926B,
-    0x00C6, 0x28E3,
-    0x00C8, 0x2B23,
-    0x00CA, 0x7ECB,
-    0x00CC, 0x13B7,
-    0x00CE, 0x5D45,
-    0x00D0, 0x3B29,
-    0x00D2, 0xA785,
-    0x00D4, 0xFEB1,
-    0x00D6, 0x9EE3,
-    0x00D8, 0x557A,
-    0x00DA, 0x77AF,
-    0x00DC, 0x2B1A,
-    0x00DE, 0x01E0,
-    0x00E0, 0x58C0,
-    0x00E2, 0xC43C,
-    0x00E4, 0xDFC3,
-    0x00E6, 0xF236,
-    0x00E8, 0x00D4,
-    0x00EA, 0x3CCA,
-    0x00EC, 0x1FF0,
-    0x00EE, 0x88BC,
-    0x00F0, 0x91B3,
-    0x00F2, 0x725E,
-    0x00F4, 0x6D46,
-    0x00F6, 0x3345,
-    0x00F8, 0x83AD,
-    0x00FA, 0x3812,
-    0x00FC, 0xA11C,
-    0x00FE, 0x0179,
-    0x0100, 0x999B,
-    0x0102, 0x0026,
-    0x0104, 0x0255,
-    0x0106, 0xA060,
-    0x0108, 0x72F1,
-    0x010A, 0xB03D,
-    0x010C, 0x25B6,
-    0x010E, 0x1CBC,
-    0x0110, 0x7EDC,
-    0x0112, 0x6286,
-    0x0114, 0x3CEB,
-    0x0116, 0xF0EA,
-    0x0118, 0xD157,
-    0x011A, 0x3A4B,
-    0x011C, 0x7820,
-    0x011E, 0x69FF,
-    0x0120, 0x1657,
-    0x0122, 0x0CEB,
-    0x0124, 0xDFFF,
-    0x0126, 0xFCD7,
-    0x0128, 0x5875,
-    0x012A, 0xE105,
-    0x012C, 0x5218,
-    0x012E, 0xFDE1,
-    0x0130, 0x6952,
-    0x0132, 0x9EB5,
-    0x0134, 0x6AB2,
-    0x0136, 0x7EBB,
-    0x0138, 0x7397,
-    0x013A, 0x994E,
-    0x013C, 0x3998,
-    0x013E, 0xD789,
-    0x0140, 0xE6C8,
-    0x0142, 0xCC63,
-    0x0144, 0xA29E,
-    0x0146, 0xB35D,
-    0x0148, 0xF93C,
-    0x014A, 0x47CA,
-    0x014C, 0x124F,
-    0x014E, 0x8CA5,
-    0x0150, 0xB90A,
-    0x0152, 0x9928,
-    0x0154, 0x02E8,
-    0x0156, 0x9F83,
-    0x0158, 0xCEDC,
-    0x015A, 0x3E54,
-    0x015C, 0xCDC6,
-    0x015E, 0x53A8,
-    0x0160, 0x4271,
-    0x0162, 0x1246,
-    0x0164, 0x549F,
-    0x0166, 0xE2AB,
-    0x0168, 0xB271,
-    0x016A, 0xD099,
-    0x016C, 0xEC28,
-    0x016E, 0x535C,
-    0x0170, 0xEDC5,
-    0x0172, 0x497A,
-    0x0174, 0xDB7C,
-    0x0176, 0xE3F0,
-    0x0178, 0xD72E,
-    0x017A, 0xA1CA,
-    0x017C, 0xC481,
-    0x017E, 0x28BE,
-    0x0180, 0xA228,
-    0x0182, 0x3A4D,
-    0x0184, 0xBAA0,
-    0x0186, 0xD8A3,
-    0x0188, 0x7C88,
-    0x018A, 0xEE98,
-    0x018C, 0x9851,
-    0x018E, 0x1DC8,
-    0x0190, 0x2E07,
-    0x0192, 0x540A,
-    0x0194, 0x35F4,
-    0x0196, 0xEC0F,
-    0x0198, 0x9113,
-    0x019A, 0xEDDE,
-    0x019C, 0xEAF7,
-    0x019E, 0x0900,
-    0x01A0, 0x09F3,
-    0x01A2, 0x0573,
-    0x01A4, 0xFA81,
-    0x01A6, 0x2104,
-    0x01A8, 0x2590,
-    0x01AA, 0xCC5F,
-    0x01AC, 0x6B0B,
-    0x01AE, 0x3EB7,
-    0x01B0, 0x3389,
-    0x01B2, 0x2D3C,
-    0x01B4, 0x0E0B,
-    0x01B6, 0xD103,
-    0x01B8, 0xB92F,
-    0x01BA, 0x0064,
-    0x01BC, 0x7BB7,
-    0x01BE, 0x3D07,
-    0x01C0, 0xF56E,
-    0x01C2, 0xB180,
-    0x01C4, 0xF8F2,
-    0x01C6, 0x5CCC,
-    0x01C8, 0xD8B4,
-    0x01CA, 0x7706,
-    0x01CC, 0xD573,
-    0x01CE, 0x4A32,
-    0x01D0, 0x659D,
-    0x01D2, 0x2538,
-    0x01D4, 0x1BE3,
-    0x01D6, 0xCD15,
-    0x01D8, 0x50C9,
-    0x01DA, 0x6AE2,
-    0x01DC, 0xA842,
-    0x01DE, 0x05A4,
-    0x01E0, 0x919B,
-    0x01E2, 0xDBEE,
-    0x01E4, 0xB1B8,
-    0x01E6, 0x1072,
-    0x01E8, 0x6516,
-    0x01EA, 0x0124,
-    0x01EC, 0x0E18,
-    0x01EE, 0xF58E,
-    0x01F0, 0x9C7A,
-    0x01F2, 0x3CF0,
-    0x01F4, 0xE339,
-    0x01F6, 0xF030,
-    0x01F8, 0xA3B2,
-    0x01FA, 0xC513,
-    0x01FC, 0x46A5,
-    0x01FE, 0x33FC,
-    0x0200, 0x42B0,
-    0x0202, 0xD05F,
-    0x0204, 0x8050,
-    0x0206, 0x4CEC,
-    0x0208, 0x2F40,
-    0x020A, 0x3833,
-    0x020C, 0x6A1B,
-    0x020E, 0xEFC5,
-    0x0210, 0xDB88,
-    0x0212, 0xD33F,
-    0x0214, 0x83B8,
-    0x0216, 0x65D1,
-    0x0218, 0xED9D,
-    0x021A, 0x442B,
-    0x021C, 0x23FA,
-    0x021E, 0x8B25,
-    0x0220, 0x8759,
-    0x0222, 0x8009,
-    0x0224, 0x8838,
-    0x0226, 0xEC29,
-    0x0228, 0xC4ED,
-    0x022A, 0xF174,
-    0x022C, 0xC483,
-    0x022E, 0x0160,
-    0x0230, 0x33EB,
-    0x0232, 0x7518,
-    0x0234, 0xBD81,
-    0x0236, 0x96F7,
-    0x0238, 0x1CCC,
-    0x023A, 0x41B0,
-    0x023C, 0x96C2,
-    0x023E, 0x6557,
-    0x0240, 0x3398,
-    0x0242, 0xB585,
-    0x0244, 0xA7B6,
-    0x0246, 0xDDF7,
-    0x0248, 0x6305,
-    0x024A, 0x118C,
-    0x024C, 0xC08D,
-    0x024E, 0x97A8,
-    0x0250, 0x09E5,
-    0x0252, 0xA23B,
-    0x0254, 0xFAE7,
-    0x0256, 0xF7AE,
-    0x0258, 0xFA3F,
-    0x025A, 0x8FDC,
-    0x025C, 0x1CB8,
-    0x025E, 0xF80C,
-    0x0260, 0x5240,
-    0x0262, 0x0BB2,
-    0x0264, 0x865B,
-    0x0266, 0xF59D,
-    0x0268, 0x7A2E,
-    0x026A, 0xE946,
-    0x026C, 0xEE5E,
-    0x026E, 0xDAED,
-    0x0270, 0xE083,
-    0x0272, 0x0369,
-    0x0274, 0x5C86,
-    0x0276, 0x052B,
-    0x0278, 0xAC3A,
-    0x027A, 0xE121,
-    0x027C, 0x0B2C,
-    0x027E, 0xD5F9,
-    0x0280, 0x8055,
-    0x0282, 0x2B71,
-    0x0284, 0xCA9B,
-    0x0286, 0x3C38,
-    0x0288, 0xD51D,
-    0x028A, 0xAA2C,
-    0x028C, 0x6638,
-    0x028E, 0xD97B,
-    0x0290, 0xD81E,
-    0x0292, 0x64C6,
-    0x0294, 0x23E5,
-    0x0296, 0xC55A,
-    0x0298, 0x519A,
-    0x029A, 0xB1A7,
-    0x029C, 0x8769,
-    0x029E, 0xF87A,
-    0x02A0, 0x772A,
-    0x02A2, 0x4996,
-    0x02A4, 0x1427,
-    0x02A6, 0xB0B3,
-    0x02A8, 0x5396,
-    0x02AA, 0x6710,
-    0x02AC, 0x154F,
-    0x02AE, 0xC084,
-    0x02B0, 0x0671,
-    0x02B2, 0x6218,
-    0x02B4, 0xFA55,
-    0x02B6, 0x737B,
-    0x02B8, 0x1B09,
-    0x02BA, 0x6DFE,
-    0x02BC, 0x5C31,
-    0x02BE, 0xAD90,
-    0x02C0, 0xD027,
-    0x02C2, 0x4F88,
-    0x02C4, 0xF8D4,
-    0x02C6, 0x3984,
-    0x02C8, 0x6E39,
-    0x02CA, 0x8A3B,
-    0x02CC, 0x1008,
-    0x02CE, 0xB808,
-    0x02D0, 0x7E69,
-    0x02D2, 0x0428,
-    0x02D4, 0x6E99,
-    0x02D6, 0x7F9C,
-    0x02D8, 0x6AD6,
-    0x02DA, 0x42C7,
-    0x02DC, 0x12D0,
-    0x02DE, 0x9785,
-    0x02E0, 0x2300,
-    0x02E2, 0x5FEE,
-    0x02E4, 0x6A49,
-    0x02E6, 0x3EBB,
-    0x02E8, 0x1C38,
-    0x02EA, 0x231D,
-    0x02EC, 0x53C3,
-    0x02EE, 0x4FE7,
-    0x02F0, 0x274C,
-    0x02F2, 0xA33A,
-    0x02F4, 0x939E,
-    0x02F6, 0x4BDF,
-    0x02F8, 0xD243,
-    0x02FA, 0x2AA1,
-    0x02FC, 0x4490,
-    0x02FE, 0x4EAB,
-    0x0300, 0xE2DA,
-    0x0302, 0xF516,
-    0x0304, 0xFC24,
-    0x0306, 0x876C,
-    0x0308, 0x7395,
-    0x030A, 0x1CDB,
-    0x030C, 0x9887,
-    0x030E, 0x5DD4,
-    0x0310, 0x5408,
-    0x0312, 0x87AD,
-    0x0314, 0xFA9A,
-    0x0316, 0xCF5A,
-    0x0318, 0x9045,
-    0x031A, 0x3AF0,
-    0x031C, 0x4FC4,
-    0x031E, 0xD580,
-    0x0320, 0x804D,
-    0x0322, 0x780B,
-    0x0324, 0x4E21,
-    0x0326, 0x7B1A,
-    0x0328, 0x00A9,
-    0x032A, 0x5C1E,
-    0x032C, 0x7ECC,
-    0x032E, 0x4378,
-    0x0330, 0x50FF,
-    0x0332, 0x6CC6,
-    0x0334, 0x1CE9,
-    0x0336, 0xEBD6,
-    0x0338, 0xED90,
-    0x033A, 0xE0CC,
-    0x033C, 0xC568,
-    0x033E, 0x6E51,
-    0x0340, 0x67F4,
-    0x0342, 0x3FC2,
-    0x0344, 0x18AC,
-    0x0346, 0x803D,
-    0x0348, 0xFFEA,
-    0x034A, 0x5AED,
-    0x034C, 0x0ED2,
-    0x034E, 0x01C7,
-    0x0350, 0x1D85,
-    0x0352, 0xF24D,
-    0x0354, 0x64CF,
-    0x0356, 0x401D,
-    0x0358, 0xC221,
-    0x035A, 0x7F36,
-    0x035C, 0x6C78,
-    0x035E, 0xCFBB,
-    0x0360, 0x59BB,
-    0x0362, 0xA749,
-    0x0364, 0x73BD,
-    0x0366, 0x5F16,
-    0x0368, 0xA8FF,
-    0x036A, 0x400D,
-    0x036C, 0x1D09,
-    0x036E, 0xA032,
-    0x0370, 0x149C,
-    0x0372, 0x5E78,
-    0x0374, 0xB484,
-    0x0376, 0x1296,
-    0x0378, 0xEA61,
-    0x037A, 0xF1C8,
-    0x037C, 0xC708,
-    0x037E, 0x591F,
-    0x0380, 0x03AA,
-    0x0382, 0xA2EA,
-    0x0384, 0x5361,
-    0x0386, 0xA649,
-    0x0388, 0xFA7C,
-    0x038A, 0x4032,
-    0x038C, 0x6538,
-    0x038E, 0xA99D,
-    0x0390, 0x4D75,
-    0x0392, 0x68F0,
-    0x0394, 0x783C,
-    0x0396, 0xC6BB,
-    0x0398, 0x56AD,
-    0x039A, 0x58A2,
-    0x039C, 0x6821,
-    0x039E, 0xF155,
-    0x03A0, 0x96A7,
-    0x03A2, 0x906D,
-    0x03A4, 0x4A4D,
-    0x03A6, 0x8394,
-    0x03A8, 0x5D89,
-    0x03AA, 0xC4DE,
-    0x03AC, 0x1224,
-    0x03AE, 0x2EBC,
-    0x03B0, 0xC2C5,
-    0x03B2, 0x1E85,
-    0x03B4, 0xCB26,
-    0x03B6, 0xC969,
-    0x03B8, 0x6897,
-    0x03BA, 0x699A,
-    0x03BC, 0xC337,
-    0x03BE, 0xA20D,
-    0x03C0, 0x0688,
-    0x03C2, 0x93AF,
-    0x03C4, 0xB5EE,
-    0x03C6, 0xB64B,
-    0x03C8, 0x07D1,
-    0x03CA, 0x7B43,
-    0x03CC, 0x1ECD,
-    0x03CE, 0x03F4,
-    0x03D0, 0x5A81,
-    0x03D2, 0x076A,
-    0x03D4, 0x7A52,
-    0x03D6, 0x6779,
-    0x03D8, 0x4688,
-    0x03DA, 0x7EA9,
-    0x03DC, 0x13E5,
-    0x03DE, 0x1F4F,
-    0x03E0, 0x9630,
-    0x03E2, 0x87CA,
-    0x03E4, 0xFE1D,
-    0x03E6, 0x256F,
-    0x03E8, 0xE66D,
-    0x03EA, 0x7FAD,
-    0x03EC, 0xFCFF,
-    0x03EE, 0x468D,
-    0x03F0, 0x722B,
-    0x03F2, 0xEEF7,
-    0x03F4, 0x9C48,
-    0x03F6, 0xC2B0,
-    0x03F8, 0x9A27,
-    0x03FA, 0x18D6,
-    0x03FC, 0x39B9,
-    0x03FE, 0xC176,
-    0x0400, 0x3AE4,
-    0x0402, 0x61D9,
-    0x0404, 0x0988,
-    0x0406, 0xEC5A,
-    0x0408, 0xBA4C,
-    0x040A, 0xD689,
-    0x040C, 0x421B,
-    0x040E, 0xAADD,
-    0x0410, 0x5882,
-    0x0412, 0x15CC,
-    0x0414, 0xC02A,
-    0x0416, 0x91B0,
-    0x0418, 0xB779,
-    0x041A, 0x203D,
-    0x041C, 0x2570,
-    0x041E, 0x5145,
-    0x0420, 0xBE00,
-    0x0422, 0x9396,
-    0x0424, 0x2E02,
-    0x0426, 0x2809,
-    0x0428, 0xC521,
-    0x042A, 0x615A,
-    0x042C, 0xA0CF,
-    0x042E, 0xE28E,
-    0x0430, 0x5258,
-    0x0432, 0xC6A6,
-    0x0434, 0x044E,
-    0x0436, 0x1B2B,
-    0x0438, 0x0F2B,
-    0x043A, 0x3542,
-    0x043C, 0x95DE,
-    0x043E, 0x9A99,
-    0x0440, 0x4774,
-    0x0442, 0xBE43,
-    0x0444, 0x9A35,
-    0x0446, 0x68EA,
-    0x0448, 0xE89A,
-    0x044A, 0xC206,
-    0x044C, 0x6C87,
-    0x044E, 0xCE50,
-    0x0450, 0x9F8B,
-    0x0452, 0x5526,
-    0x0454, 0x3F76,
-    0x0456, 0x2539,
-    0x0458, 0x8D33,
-    0x045A, 0x1DD3,
-    0x045C, 0x6260,
-    0x045E, 0x2E4D,
-    0x0460, 0x8019,
-    0x0462, 0x7EA0,
-    0x0464, 0x494A,
-    0x0466, 0x3C0E,
-    0x0468, 0x0259,
-    0x046A, 0x9811,
-    0x046C, 0x9459,
-    0x046E, 0x304E,
-    0x0470, 0x0922,
-    0x0472, 0x802D,
-    0x0474, 0xDC20,
-    0x0476, 0x6A9D,
-    0x0478, 0x7176,
-    0x047A, 0xA96B,
-    0x047C, 0x5814,
-    0x047E, 0x78F0,
-    0x0480, 0x74F9,
-    0x0482, 0x26CD,
-    0x0484, 0x3325,
-    0x0486, 0x6DF0,
-    0x0488, 0x1CA0,
-    0x048A, 0x8669,
-    0x048C, 0x9C58,
-    0x048E, 0xD04F,
-    0x0490, 0xB481,
-    0x0492, 0x7DA8,
-    0x0494, 0x1665,
-    0x0496, 0xEA44,
-    0x0498, 0x641F,
-    0x049A, 0x552B,
-    0x049C, 0xBC6D,
-    0x049E, 0xD290,
-    0x04A0, 0x0FFD,
-    0x04A2, 0x3C1A,
-    0x04A4, 0x7F34,
-    0x04A6, 0xBFB6,
-    0x04A8, 0xF538,
-    0x04AA, 0x10E9,
-    0x04AC, 0x3A6C,
-    0x04AE, 0x0FDA,
-    0x04B0, 0x16EA,
-    0x04B2, 0xD25E,
-    0x04B4, 0x0239,
-    0x04B6, 0xFD5E,
-    0x04B8, 0xDB1B,
-    0x04BA, 0xF0CC,
-    0x04BC, 0x99F5,
-    0x04BE, 0xCBEC,
-    0x04C0, 0x9997,
-    0x04C2, 0x483C,
-    0x04C4, 0x20B5,
-    0x04C6, 0xB406,
-    0x04C8, 0x5F41,
-    0x04CA, 0x8ACB,
-    0x04CC, 0x55F7,
-    0x04CE, 0x2D67,
-    0x04D0, 0x0C1A,
-    0x04D2, 0x37D3,
-    0x04D4, 0x8ED8,
-    0x04D6, 0x2DAF,
-    0x04D8, 0x26E6,
-    0x04DA, 0x2EDB,
-    0x04DC, 0xB8D6,
-    0x04DE, 0x891E,
-    0x04E0, 0xBAD1,
-    0x04E2, 0xE130,
-    0x04E4, 0x64C5,
-    0x04E6, 0xBC5E,
-    0x04E8, 0x5BA4,
-    0x04EA, 0xB879,
-    0x04EC, 0x31F8,
-    0x04EE, 0xA441,
-    0x04F0, 0x974D,
-    0x04F2, 0xD714,
-    0x04F4, 0xC091,
-    0x04F6, 0xD3EA,
-    0x04F8, 0x640E,
-    0x04FA, 0xEB2D,
-    0x04FC, 0xC4AA,
-    0x04FE, 0x6B5C,
-    0x0500, 0xE026,
-    0x0502, 0x8C8D,
-    0x0504, 0x1B9D,
-    0x0506, 0x75C0,
-    0x0508, 0x934C,
-    0x050A, 0x541A,
-    0x050C, 0x7935,
-    0x050E, 0x93CA,
-    0x0510, 0x8C29,
-    0x0512, 0x3974,
-    0x0514, 0x1C57,
-    0x0516, 0x4438,
-    0x0518, 0xD9E1,
-    0x051A, 0xC0E8,
-    0x051C, 0x8C85,
-    0x051E, 0x62B6,
-    0x0520, 0xD016,
-    0x0522, 0x0C61,
-    0x0524, 0x69F9,
-    0x0526, 0x087F,
-    0x0528, 0xC10A,
-    0x052A, 0xE420,
-    0x052C, 0x28DF,
-    0x052E, 0xF336,
-    0x0530, 0xC6E0,
-    0x0532, 0x0C30,
-    0x0534, 0xA8C6,
-    0x0536, 0x80C9,
-    0x0538, 0x9DAC,
-    0x053A, 0xBF25,
-    0x053C, 0xE036,
-    0x053E, 0x01ED,
-    0x0540, 0x8130,
-    0x0542, 0x7150,
-    0x0544, 0xC212,
-    0x0546, 0xC122,
-    0x0548, 0x11C5,
-    0x054A, 0x0AEB,
-    0x054C, 0xF495,
-    0x054E, 0x2514,
-    0x0550, 0xC95C,
-    0x0552, 0x56CB,
-    0x0554, 0xEE5E,
-    0x0556, 0xC09B,
-    0x0558, 0xD133,
-    0x055A, 0x12C9,
-    0x055C, 0x3096,
-    0x055E, 0xA20D,
-    0x0560, 0x0292,
-    0x0562, 0xC8DE,
-    0x0564, 0x9227,
-    0x0566, 0xBDF8,
-    0x0568, 0xDCFD,
-    0x056A, 0x3DB7,
-    0x056C, 0xF0A1,
-    0x056E, 0xF85E,
-    0x0570, 0x2FAC,
-    0x0572, 0x9DE7,
-    0x0574, 0xC134,
-    0x0576, 0xB205,
-    0x0578, 0xDDF8,
-    0x057A, 0x6D17,
-    0x057C, 0x3BED,
-    0x057E, 0x8DD8,
-    0x0580, 0xB263,
-    0x0582, 0x5A9E,
-    0x0584, 0x67EE,
-    0x0586, 0x7770,
-    0x0588, 0x58FE,
-    0x058A, 0x8810,
-    0x058C, 0xFBBB,
-    0x058E, 0xEFE3,
-    0x0590, 0x2BFF,
-    0x0592, 0x9A56,
-    0x0594, 0x9886,
-    0x0596, 0xCA7A,
-    0x0598, 0xA206,
-    0x059A, 0xE1E9,
-    0x059C, 0x766A,
-    0x059E, 0x28DA,
-    0x05A0, 0x4898,
-    0x05A2, 0x3AB9,
-    0x05A4, 0xD0EE,
-    0x05A6, 0x7E5C,
-    0x05A8, 0x9BA7,
-    0x05AA, 0x9A33,
-    0x05AC, 0x1670,
-    0x05AE, 0xF092,
-    0x05B0, 0xA74A,
-    0x05B2, 0x275A,
-    0x05B4, 0x232A,
-    0x05B6, 0x1249,
-    0x05B8, 0xC350,
-    0x05BA, 0x1145,
-    0x05BC, 0xED0F,
-    0x05BE, 0x19B6,
-    0x05C0, 0x0D35,
-    0x05C2, 0xCC8B,
-    0x05C4, 0x78A5,
-    0x05C6, 0xCA4B,
-    0x05C8, 0x933E,
-    0x05CA, 0x6E54,
-    0x05CC, 0x1BF7,
-    0x05CE, 0x6BB9,
-    0x05D0, 0x058C,
-    0x05D2, 0xBAD2,
-    0x05D4, 0x28D4,
-    0x05D6, 0x79E0,
-    0x05D8, 0xBCA0,
-    0x05DA, 0x02D3,
-    0x05DC, 0xC4C4,
-    0x05DE, 0xCAC7,
-    0x05E0, 0x01E2,
-    0x05E2, 0x1305,
-    0x05E4, 0x39FC,
-    0x05E6, 0x5AC3,
-    0x05E8, 0x6176,
-    0x05EA, 0xDC30,
-    0x05EC, 0xF24C,
-    0x05EE, 0xB4C0,
-    0x05F0, 0x1CEB,
-    0x05F2, 0x49B1,
-    0x05F4, 0x9CFA,
-    0x05F6, 0x6B04,
-    0x05F8, 0xF51C,
-    0x05FA, 0xAC09,
-    0x05FC, 0xD193,
-    0x05FE, 0x4BC4,
-    0x0600, 0x2AEF,
-    0x0602, 0xFC02,
-    0x0604, 0x8E9F,
-    0x0606, 0x6DE5,
-    0x0608, 0xFAF0,
-    0x060A, 0xD3D4,
-    0x060C, 0x8A2E,
-    0x060E, 0xB0B7,
-    0x0610, 0x3574,
-    0x0612, 0x0B14,
-    0x0614, 0xD1A2,
-    0x0616, 0xB6E5,
-    0x0618, 0xB90A,
-    0x061A, 0xCD8D,
-    0x061C, 0x4CB1,
-    0x061E, 0xC6ED,
-    0x0620, 0x994E,
-    0x0622, 0xCA09,
-    0x0624, 0xAA89,
-    0x0626, 0xE1E2,
-    0x0628, 0xE019,
-    0x062A, 0x1B4C,
-    0x062C, 0xDD5F,
-    0x062E, 0x33F5,
-    0x0630, 0xC409,
-    0x0632, 0xC994,
-    0x0634, 0xD231,
-    0x0636, 0x9F08,
-    0x0638, 0xECAD,
-    0x063A, 0xD54E,
-    0x063C, 0x6D45,
-    0x063E, 0x2B30,
-    0x0640, 0xECC0,
-    0x0642, 0xD5ED,
-    0x0644, 0xA0D1,
-    0x0646, 0x4B6F,
-    0x0648, 0x2042,
-    0x064A, 0xF720,
-    0x064C, 0x8202,
-    0x064E, 0x15F6,
-    0x0650, 0x8F0C,
-    0x0652, 0x48E7,
-    0x0654, 0xF956,
-    0x0656, 0x4683,
-    0x0658, 0xC789,
-    0x065A, 0xACBD,
-    0x065C, 0x2DB1,
-    0x065E, 0xCF0B,
-    0x0660, 0xC74B,
-    0x0662, 0x2BA9,
-    0x0664, 0x61A2,
-    0x0666, 0xD057,
-    0x0668, 0xA27B,
-    0x066A, 0x8C3A,
-    0x066C, 0x264A,
-    0x066E, 0x035B,
-    0x0670, 0x8039,
-    0x0672, 0x8D29,
-    0x0674, 0xB89B,
-    0x0676, 0x22D9,
-    0x0678, 0x26B0,
-    0x067A, 0xC9F6,
-    0x067C, 0xCA5D,
-    0x067E, 0x8F8B,
-    0x0680, 0xDBCE,
-    0x0682, 0xB380,
-    0x0684, 0x2B06,
-    0x0686, 0x4D7F,
-    0x0688, 0x9580,
-    0x068A, 0xE4B6,
-    0x068C, 0x8B9F,
-    0x068E, 0xC198,
-    0x0690, 0x6F72,
-    0x0692, 0x3157,
-    0x0694, 0x5D64,
-    0x0696, 0x07A0,
-    0x0698, 0xE198,
-    0x069A, 0x1B0F,
-    0x069C, 0x6E8F,
-    0x069E, 0xA5EE,
-    0x06A0, 0x6BF1,
-    0x06A2, 0x0386,
-    0x06A4, 0x00B9,
-    0x06A6, 0xE6AA,
-    0x06A8, 0xBE32,
-    0x06AA, 0x7F0C,
-    0x06AC, 0x1F88,
-    0x06AE, 0xAF5A,
-    0x06B0, 0xF38F,
-    0x06B2, 0x23DD,
-    0x06B4, 0x81AE,
-    0x06B6, 0x7F97,
-    0x06B8, 0x3ED6,
-    0x06BA, 0xCA0D,
-    0x06BC, 0xD71A,
-    0x06BE, 0x1355,
-    0x06C0, 0x5DC2,
-    0x06C2, 0x820B,
-    0x06C4, 0xEE33,
-    0x06C6, 0x7911,
-    0x06C8, 0x027A,
-    0x06CA, 0xE598,
-    0x06CC, 0x90CD,
-    0x06CE, 0x31F6,
-    0x06D0, 0x201B,
-    0x06D2, 0x254B,
-    0x06D4, 0x889B,
-    0x06D6, 0x81ED,
-    0x06D8, 0x7EB4,
-    0x06DA, 0x5AC9,
-    0x06DC, 0x7366,
-    0x06DE, 0x99BA,
-    0x06E0, 0x21ED,
-    0x06E2, 0x0155,
-    0x06E4, 0x4B3A,
-    0x06E6, 0xF2AD,
-    0x06E8, 0x4D1D,
-    0x06EA, 0x85E2,
-    0x06EC, 0xFCCD,
-    0x06EE, 0x3AE7,
-    0x06F0, 0x2B8D,
-    0x06F2, 0x2E43,
-    0x06F4, 0x128C,
-    0x06F6, 0x46EE,
-    0x06F8, 0x9732,
-    0x06FA, 0xDDDE,
-    0x06FC, 0x1F7B,
-    0x06FE, 0xC0E6,
-    0x0700, 0x4977,
-    0x0702, 0x6386,
-    0x0704, 0xF483,
-    0x0706, 0xEC05,
-    0x0708, 0x3957,
-    0x070A, 0x5B2E,
-    0x070C, 0x5E48,
-    0x070E, 0x56CE,
-    0x0710, 0x4BF1,
-    0x0712, 0xD19F,
-    0x0714, 0x2657,
-    0x0716, 0x2484,
-    0x0718, 0x3B0A,
-    0x071A, 0x7C70,
-    0x071C, 0xF884,
-    0x071E, 0x184B,
-    0x0720, 0xE7CC,
-    0x0722, 0x135B,
-    0x0724, 0x6571,
-    0x0726, 0x4A10,
-    0x0728, 0x0377,
-    0x072A, 0x0EB4,
-    0x072C, 0x518D,
-    0x072E, 0x9A47,
-    0x0730, 0x0304,
-    0x0732, 0x3BCB,
-    0x0734, 0x8226,
-    0x0736, 0x1931,
-    0x0738, 0xBD07,
-    0x073A, 0x25BE,
-    0x073C, 0x558B,
-    0x073E, 0x30AF,
-    0x0740, 0xF681,
-    0x0742, 0x3EF0,
-    0x0744, 0x0494,
-    0x0746, 0x4311,
-    0x0748, 0x77B5,
-    0x074A, 0x307A,
-    0x074C, 0x90F4,
-    0x074E, 0xEEAD,
-    0x0750, 0xE429,
-    0x0752, 0x5593,
-    0x0754, 0x4974,
-    0x0756, 0x1BAE,
-    0x0758, 0xF955,
-    0x075A, 0x677B,
-    0x075C, 0xB653,
-    0x075E, 0xD3B0,
-    0x0760, 0x7B2E,
-    0x0762, 0x12A1,
-    0x0764, 0xD02E,
-    0x0766, 0x9C5D,
-    0x0768, 0x8F60,
-    0x076A, 0x2F69,
-    0x076C, 0x5076,
-    0x076E, 0xCA89,
-    0x0770, 0x5036,
-    0x0772, 0xBE4C,
-    0x0774, 0x5996,
-    0x0776, 0xCCEA,
-    0x0778, 0x3D2F,
-    0x077A, 0x51C5,
-    0x077C, 0xBC8C,
-    0x077E, 0x5374,
-    0x0780, 0x5B83,
-    0x0782, 0x4006,
-    0x0784, 0x2CBB,
-    0x0786, 0xE4D9,
-    0x0788, 0xA555,
-    0x078A, 0xCD05,
-    0x078C, 0x7BBC,
-    0x078E, 0xF47A,
-    0x0790, 0xACA0,
-    0x0792, 0x9E19,
-    0x0794, 0xBA1F,
-    0x0796, 0x6CC0,
-    0x0798, 0x4115,
-    0x079A, 0x8EDF,
-    0x079C, 0x4BAA,
-    0x079E, 0x75B1,
-    0x07A0, 0x8576,
-    0x07A2, 0x3798,
-    0x07A4, 0x0041,
-    0x07A6, 0x357E,
-    0x07A8, 0x1759,
-    0x07AA, 0xC6B4,
-    0x07AC, 0x28D5,
-    0x07AE, 0x8D4B,
-    0x07B0, 0xE8B8,
-    0x07B2, 0x1DDA,
-    0x07B4, 0x3AD5,
-    0x07B6, 0x5356,
-    0x07B8, 0xA937,
-    0x07BA, 0xF1BE,
-    0x07BC, 0xB42C,
-    0x07BE, 0x51C8,
-    0x07C0, 0x9BFA,
-    0x07C2, 0xC1D5,
-    0x07C4, 0xC769,
-    0x07C6, 0xAD84,
-    0x07C8, 0x9143,
-    0x07CA, 0x619C,
-    0x07CC, 0x99BD,
-    0x07CE, 0x850A,
-    0x07D0, 0xA58F,
-    0x07D2, 0x1EF5,
-    0x07D4, 0x045C,
-    0x07D6, 0xBB50,
-    0x07D8, 0x4DCF,
-    0x07DA, 0x995C,
-    0x07DC, 0x1508,
-    0x07DE, 0x040A,
-    0x07E0, 0x8C3E,
-    0x07E2, 0x5DB2,
-    0x07E4, 0x8770,
-    0x07E6, 0x9226,
-    0x07E8, 0x82D0,
-    0x07EA, 0x48D2,
-    0x07EC, 0x9BB1,
-    0x07EE, 0x3A74,
-    0x07F0, 0xB306,
-    0x07F2, 0xAE52,
-    0x07F4, 0x094C,
-    0x07F6, 0xFB47,
-    0x07F8, 0xCEE9,
-    0x07FA, 0xEC43,
-    0x07FC, 0x9693,
-    0x07FE, 0x7471,
-    0x0800, 0xEAFE,
-    0x0802, 0x8B1D,
-    0x0804, 0x3919,
-    0x0806, 0x62E3,
-    0x0808, 0x76E0,
-    0x080A, 0x1BEE,
-    0x080C, 0x014D,
-    0x080E, 0xBF76,
-    0x0810, 0x18CB,
-    0x0812, 0x0024,
-    0x0814, 0x37EE,
-    0x0816, 0xE64F,
-    0x0818, 0x9AAF,
-    0x081A, 0xDBD9,
-    0x081C, 0xA12D,
-    0x081E, 0x428A,
-    0x0820, 0xCD29,
-    0x0822, 0x6F55,
-    0x0824, 0x25B2,
-    0x0826, 0x599D,
-    0x0828, 0x9200,
-    0x082A, 0xD75E,
-    0x082C, 0x993B,
-    0x082E, 0x3B01,
-    0x0830, 0x756E,
-    0x0832, 0x60DC,
-    0x0834, 0x6722,
-    0x0836, 0x1454,
-    0x0838, 0xD3A6,
-    0x083A, 0xB19B,
-    0x083C, 0x5518,
-    0x083E, 0x3780,
-    0x0840, 0x9A97,
-    0x0842, 0xCB93,
-    0x0844, 0xFC66,
-    0x0846, 0x3A1E,
-    0x0848, 0x61E4,
-    0x084A, 0x33F0,
-    0x084C, 0xBA46,
-    0x084E, 0xA5C7,
-    0x0850, 0xAE6B,
-    0x0852, 0x3F59,
-    0x0854, 0x215A,
-    0x0856, 0x3908,
-    0x0858, 0x3994,
-    0x085A, 0x40BA,
-    0x085C, 0x115D,
-    0x085E, 0x3F5A,
-    0x0860, 0xCED7,
-    0x0862, 0xFE54,
-    0x0864, 0x0300,
-    0x0866, 0xE9DF,
-    0x0868, 0x0B70,
-    0x086A, 0xC433,
-    0x086C, 0x7CDF,
-    0x086E, 0xF44F,
-    0x0870, 0x8A67,
-    0x0872, 0x1DC4,
-    0x0874, 0xA5DA,
-    0x0876, 0x6754,
-    0x0878, 0xC6B0,
-    0x087A, 0x5675,
-    0x087C, 0x41C6,
-    0x087E, 0x3FAC,
-    0x0880, 0xCB67,
-    0x0882, 0x83B5,
-    0x0884, 0xCC94,
-    0x0886, 0xE348,
-    0x0888, 0x3AE3,
-    0x088A, 0xBA32,
-    0x088C, 0xA441,
-    0x088E, 0x80A4,
-    0x0890, 0x4833,
-    0x0892, 0xC910,
-    0x0894, 0xE680,
-    0x0896, 0x1CF5,
-    0x0898, 0x0B9B,
-    0x089A, 0x4D94,
-    0x089C, 0x08B2,
-    0x089E, 0xD16A,
-    0x08A0, 0x7024,
-    0x08A2, 0x11ED,
-    0x08A4, 0xB03A,
-    0x08A6, 0x3CC3,
-    0x08A8, 0x2FAE,
-    0x08AA, 0xD96D,
-    0x08AC, 0x9705,
-    0x08AE, 0x183F,
-    0x08B0, 0xC5F2,
-    0x08B2, 0xF3E8,
-    0x08B4, 0xC2EC,
-    0x08B6, 0xD52F,
-    0x08B8, 0x0DEA,
-    0x08BA, 0x4C5E,
-    0x08BC, 0xE80D,
-    0x08BE, 0x831D,
-    0x08C0, 0xB4D6,
-    0x08C2, 0x788C,
-    0x08C4, 0xC7F2,
-    0x08C6, 0x3C9E,
-    0x08C8, 0x0142,
-    0x08CA, 0x1D16,
-    0x08CC, 0x00FB,
-    0x08CE, 0x7AC0,
-    0x08D0, 0x183F,
-    0x08D2, 0xA48F,
-    0x08D4, 0xBC43,
-    0x08D6, 0x5D3F,
-    0x08D8, 0x18B8,
-    0x08DA, 0xD665,
-    0x08DC, 0x5173,
-    0x08DE, 0x6EF5,
-    0x08E0, 0x0C72,
-    0x08E2, 0x8D21,
-    0x08E4, 0xDC55,
-    0x08E6, 0x224B,
-    0x08E8, 0x860D,
-    0x08EA, 0xCB81,
-    0x08EC, 0x0F2A,
-    0x08EE, 0x7047,
-    0x08F0, 0x58E8,
-    0x08F2, 0x1422,
-    0x08F4, 0x5EC8,
-    0x08F6, 0xE6F2,
-    0x08F8, 0x2DF4,
-    0x08FA, 0x8371,
-    0x08FC, 0x1155,
-    0x08FE, 0x4B8D,
-    0x0900, 0xE031,
-    0x0902, 0x176F,
-    0x0904, 0xACFB,
-    0x0906, 0x3623,
-    0x0908, 0x3354,
-    0x090A, 0xC87A,
-    0x090C, 0xB016,
-    0x090E, 0x4E54,
-    0x0910, 0xE73A,
-    0x0912, 0x43C5,
-    0x0914, 0x619B,
-    0x0916, 0x6610,
-    0x0918, 0xBEBB,
-    0x091A, 0x5F15,
-    0x091C, 0xF875,
-    0x091E, 0xD605,
-    0x0920, 0x39C0,
-    0x0922, 0xE289,
-    0x0924, 0xFD9C,
-    0x0926, 0x7536,
-    0x0928, 0x584E,
-    0x092A, 0xFFFD,
-    0x092C, 0x4BB9,
-    0x092E, 0xF9AB,
-    0x0930, 0xB2F3,
-    0x0932, 0x2DEE,
-    0x0934, 0x7E8C,
-    0x0936, 0x13B5,
-    0x0938, 0xF87A,
-    0x093A, 0x9196,
-    0x093C, 0x65E3,
-    0x093E, 0x6095,
-    0x0940, 0x4AC8,
-    0x0942, 0x1053,
-    0x0944, 0x5C29,
-    0x0946, 0xEFA4,
-    0x0948, 0xB54E,
-    0x094A, 0x5B72,
-    0x094C, 0x8028,
-    0x094E, 0x38BB,
-    0x0950, 0x586F,
-    0x0952, 0x25A4,
-    0x0954, 0x1287,
-    0x0956, 0x3934,
-    0x0958, 0xC4ED,
-    0x095A, 0x51D7,
-    0x095C, 0x5A55,
-    0x095E, 0xBE16,
-    0x0960, 0x94A2,
-    0x0962, 0xD9BB,
-    0x0964, 0xF6F5,
-    0x0966, 0x7DDD,
-    0x0968, 0x46E0,
-    0x096A, 0x5C6E,
-    0x096C, 0x43D1,
-    0x096E, 0xB205,
-    0x0970, 0x1542,
-    0x0972, 0x8517,
-    0x0974, 0xEE63,
-    0x0976, 0xC284,
-    0x0978, 0xDB43,
-    0x097A, 0x4994,
-    0x097C, 0xB650,
-    0x097E, 0x34E3,
-    0x0980, 0x6A7E,
-    0x0982, 0x1BC4,
-    0x0984, 0x4366,
-    0x0986, 0x15CD,
-    0x0988, 0xAC53,
-    0x098A, 0xF0DB,
-    0x098C, 0xACAB,
-    0x098E, 0xD429,
-    0x0990, 0x0B3D,
-    0x0992, 0x3084,
-    0x0994, 0x860B,
-    0x0996, 0x7F90,
-    0x0998, 0x0F73,
-    0x099A, 0x2B62,
-    0x099C, 0x0F63,
-    0x099E, 0xB517,
-    0x09A0, 0xC60E,
-    0x09A2, 0x1CCF,
-    0x09A4, 0x5573,
-    0x09A6, 0x6A14,
-    0x09A8, 0x4BC6,
-    0x09AA, 0x19E5,
-    0x09AC, 0x07F1,
-    0x09AE, 0x5706,
-    0x09B0, 0xDD1E,
-    0x09B2, 0x2463,
-    0x09B4, 0x7810,
-    0x09B6, 0xFBBE,
-    0x09B8, 0xF5B4,
-    0x09BA, 0x9628,
-    0x09BC, 0xDB1D,
-    0x09BE, 0x2A74,
-    0x09C0, 0xEF6B,
-    0x09C2, 0x1289,
-    0x09C4, 0x40FA,
-    0x09C6, 0x9C38,
-    0x09C8, 0x1535,
-    0x09CA, 0xD047,
-    0x09CC, 0x69BB,
-    0x09CE, 0xB14D,
-    0x09D0, 0x6D39,
-    0x09D2, 0x7173,
-    0x09D4, 0x0088,
-    0x09D6, 0xC315,
-    0x09D8, 0xB611,
-    0x09DA, 0x8E4F,
-    0x09DC, 0xABFF,
-    0x09DE, 0x0D2D,
-    0x09E0, 0x8094,
-    0x09E2, 0xD989,
-    0x09E4, 0x340F,
-    0x09E6, 0xA76E,
-    0x09E8, 0xD1F4,
-    0x09EA, 0xA50F,
-    0x09EC, 0x1EF0,
-    0x09EE, 0xFFB5,
-    0x09F0, 0x4CBB,
-    0x09F2, 0xB60A,
-    0x09F4, 0xC75B,
-    0x09F6, 0x445D,
-    0x09F8, 0x8570,
-    0x09FA, 0xD57A,
-    0x09FC, 0x745C,
-    0x09FE, 0xE984,
-    0x0A00, 0x99AA,
-    0x0A02, 0x7633,
-    0x0A04, 0x7EAF,
-    0x0A06, 0x8FB2,
-    0x0A08, 0x5222,
-    0x0A0A, 0xD0F7,
-    0x0A0C, 0x2CC1,
-    0x0A0E, 0xFABF,
-    0x0A10, 0x9074,
-    0x0A12, 0xA45C,
-    0x0A14, 0x6FD2,
-    0x0A16, 0xB308,
-    0x0A18, 0x9B0C,
-    0x0A1A, 0x1675,
-    0x0A1C, 0xB43B,
-    0x0A1E, 0xD281,
-    0x0A20, 0x5958,
-    0x0A22, 0x818B,
-    0x0A24, 0x528E,
-    0x0A26, 0xB94C,
-    0x0A28, 0xF60D,
-    0x0A2A, 0x9C62,
-    0x0A2C, 0x4621,
-    0x0A2E, 0xDF64,
-    0x0A30, 0x5F07,
-    0x0A32, 0x7F6B,
-    0x0A34, 0x3236,
-    0x0A36, 0xFFE1,
-    0x0A38, 0x6DB9,
-    0x0A3A, 0xDA02,
-    0x0A3C, 0x918E,
-    0x0A3E, 0x12FE,
-    0x0A40, 0x13BB,
-    0x0A42, 0x7441,
-    0x0A44, 0x4CFA,
-    0x0A46, 0xA455,
-    0x0A48, 0x467D,
-    0x0A4A, 0x87CD,
-    0x0A4C, 0x9D74,
-    0x0A4E, 0x6160,
-    0x0A50, 0xC477,
-    0x0A52, 0x0879,
-    0x0A54, 0xC6D1,
-    0x0A56, 0xCD76,
-    0x0A58, 0x8786,
-    0x0A5A, 0xD9E4,
-    0x0A5C, 0xDBCD,
-    0x0A5E, 0x178C,
-    0x0A60, 0x9C5B,
-    0x0A62, 0xE0EF,
-    0x0A64, 0xDFCF,
-    0x0A66, 0xC3D7,
-    0x0A68, 0xAA64,
-    0x0A6A, 0x84E4,
-    0x0A6C, 0x00C7,
-    0x0A6E, 0x4D39,
-    0x0A70, 0x895A,
-    0x0A72, 0xCF71,
-    0x0A74, 0xCE0D,
-    0x0A76, 0x68EE,
-    0x0A78, 0xE58C,
-    0x0A7A, 0xCADF,
-    0x0A7C, 0x64CA,
-    0x0A7E, 0xE43F,
-    0x0A80, 0x3809,
-    0x0A82, 0xCA64,
-    0x0A84, 0x807A,
-    0x0A86, 0x5235,
-    0x0A88, 0x6BD2,
-    0x0A8A, 0x9D45,
-    0x0A8C, 0x2420,
-    0x0A8E, 0x6B6B,
-    0x0A90, 0x8BD1,
-    0x0A92, 0x9B90,
-    0x0A94, 0x8F01,
-    0x0A96, 0xCE41,
-    0x0A98, 0x3DBE,
-    0x0A9A, 0x98B1,
-    0x0A9C, 0x3794,
-    0x0A9E, 0x12DA,
-    0x0AA0, 0xD298,
-    0x0AA2, 0x3CFC,
-    0x0AA4, 0x2464,
-    0x0AA6, 0x08AC,
-    0x0AA8, 0x7D26,
-    0x0AAA, 0x9108,
-    0x0AAC, 0xB101,
-    0x0AAE, 0x2978,
-    0x0AB0, 0x3738,
-    0x0AB2, 0x0E08,
-    0x0AB4, 0x3732,
-    0x0AB6, 0xE50A,
-    0x0AB8, 0xCE62,
-    0x0ABA, 0x55C0,
-    0x0ABC, 0x08DD,
-    0x0ABE, 0xE874,
-    0x0AC0, 0x5AF6,
-    0x0AC2, 0x5433,
-    0x0AC4, 0x335F,
-    0x0AC6, 0x052E,
-    0x0AC8, 0xB6E9,
-    0x0ACA, 0x0CE8,
-    0x0ACC, 0x749D,
-    0x0ACE, 0x5637,
-    0x0AD0, 0x9AF3,
-    0x0AD2, 0x848B,
-    0x0AD4, 0x9001,
-    0x0AD6, 0xFDA1,
-    0x0AD8, 0x3035,
-    0x0ADA, 0x1205,
-    0x0ADC, 0x128C,
-    0x0ADE, 0x97EA,
-    0x0AE0, 0xE40E,
-    0x0AE2, 0xF8EA,
-    0x0AE4, 0x3D95,
-    0x0AE6, 0xAE42,
-    0x0AE8, 0xA932,
-    0x0AEA, 0x87FF,
-    0x0AEC, 0x0C5E,
-    0x0AEE, 0x0EA8,
-    0x0AF0, 0x7E33,
-    0x0AF2, 0x0D13,
-    0x0AF4, 0xCB1C,
-    0x0AF6, 0x9FAF,
-    0x0AF8, 0xEA36,
-    0x0AFA, 0x8F20,
-    0x0AFC, 0xCE97,
-    0x0AFE, 0x6F00,
-    0x0B00, 0xB847,
-    0x0B02, 0x4CB9,
-    0x0B04, 0xA902,
-    0x0B06, 0x67F3,
-    0x0B08, 0x3217,
-    0x0B0A, 0x9A2B,
-    0x0B0C, 0xD195,
-    0x0B0E, 0xDA84,
-    0x0B10, 0x16CA,
-    0x0B12, 0x51F1,
-    0x0B14, 0x0A4A,
-    0x0B16, 0x063E,
-    0x0B18, 0x7620,
-    0x0B1A, 0x1116,
-    0x0B1C, 0x207B,
-    0x0B1E, 0x5A91,
-    0x0B20, 0x44EA,
-    0x0B22, 0xAE6A,
-    0x0B24, 0xD318,
-    0x0B26, 0x2BDB,
-    0x0B28, 0x1015,
-    0x0B2A, 0x29F0,
-    0x0B2C, 0x2A02,
-    0x0B2E, 0x2633,
-    0x0B30, 0x54C5,
-    0x0B32, 0x0797,
-    0x0B34, 0x2109,
-    0x0B36, 0xBA8B,
-    0x0B38, 0x39E5,
-    0x0B3A, 0x601A,
-    0x0B3C, 0x6918,
-    0x0B3E, 0x1BCB,
-    0x0B40, 0xBCEF,
-    0x0B42, 0x51D1,
-    0x0B44, 0x376E,
-    0x0B46, 0xAD2C,
-    0x0B48, 0x1603,
-    0x0B4A, 0xD7BB,
-    0x0B4C, 0x7810,
-    0x0B4E, 0xED0B,
-    0x0B50, 0x13DB,
-    0x0B52, 0x9C7E,
-    0x0B54, 0x3DB8,
-    0x0B56, 0x327A,
-    0x0B58, 0xBFC1,
-    0x0B5A, 0xD26D,
-    0x0B5C, 0xCA73,
-    0x0B5E, 0x9BFE,
-    0x0B60, 0xFD47,
-    0x0B62, 0x921A,
-    0x0B64, 0x5365,
-    0x0B66, 0xE6DF,
-    0x0B68, 0x69C4,
-    0x0B6A, 0x03D2,
-    0x0B6C, 0xCB09,
-    0x0B6E, 0x5C1F,
-    0x0B70, 0x9D06,
-    0x0B72, 0x26B4,
-    0x0B74, 0xA2BE,
-    0x0B76, 0x04AF,
-    0x0B78, 0x3FD8,
-    0x0B7A, 0x5636,
-    0x0B7C, 0x1C9B,
-    0x0B7E, 0x7897,
-    0x0B80, 0xA732,
-    0x0B82, 0x79C3,
-    0x0B84, 0x0AF9,
-    0x0B86, 0x8E98,
-    0x0B88, 0x34FB,
-    0x0B8A, 0xCBFB,
-    0x0B8C, 0x6EF6,
-    0x0B8E, 0xEBAC,
-    0x0B90, 0x99C9,
-    0x0B92, 0x54C2,
-    0x0B94, 0x4BA5,
-    0x0B96, 0x8219,
-    0x0B98, 0xAC76,
-    0x0B9A, 0xCD1F,
-    0x0B9C, 0xB43D,
-    0x0B9E, 0x27A3,
-    0x0BA0, 0xD3FE,
-    0x0BA2, 0xF219,
-    0x0BA4, 0x4AE5,
-    0x0BA6, 0x189B,
-    0x0BA8, 0xBDDA,
-    0x0BAA, 0x1F9B,
-    0x0BAC, 0x384C,
-    0x0BAE, 0xEEA8,
-    0x0BB0, 0x5D6B,
-    0x0BB2, 0x1412,
-    0x0BB4, 0xB9C9,
-    0x0BB6, 0x1532,
-    0x0BB8, 0x07FC,
-    0x0BBA, 0x250F,
-    0x0BBC, 0xE0D5,
-    0x0BBE, 0x21B9,
-    0x0BC0, 0x29C1,
-    0x0BC2, 0xB54A,
-    0x0BC4, 0x4329,
-    0x0BC6, 0x457C,
-    0x0BC8, 0xF6AF,
-    0x0BCA, 0x5AC3,
-    0x0BCC, 0xE876,
-    0x0BCE, 0xB481,
-    0x0BD0, 0xFB92,
-    0x0BD2, 0x73DD,
-    0x0BD4, 0x0E5B,
-    0x0BD6, 0xD923,
-    0x0BD8, 0x98F0,
-    0x0BDA, 0x8C83,
-    0x0BDC, 0x98BE,
-    0x0BDE, 0x4EA8,
-    0x0BE0, 0x93E6,
-    0x0BE2, 0x2C7A,
-    0x0BE4, 0xC91B,
-    0x0BE6, 0x61AA,
-    0x0BE8, 0x4F03,
-    0x0BEA, 0x540A,
-    0x0BEC, 0xB0AB,
-    0x0BEE, 0x8E91,
-    0x0BF0, 0x4C67,
-    0x0BF2, 0x2CF7,
-    0x0BF4, 0xEE69,
-    0x0BF6, 0x2C93,
-    0x0BF8, 0xD2B7,
-    0x0BFA, 0x512D,
-    0x0BFC, 0x104E,
-    0x0BFE, 0xE5C8,
-    0x0C00, 0x6827,
-    0x0C02, 0xC82F,
-    0x0C04, 0x8F88,
-    0x0C06, 0xB487,
-    0x0C08, 0x066B,
-    0x0C0A, 0x9668,
-    0x0C0C, 0x6D2D,
-    0x0C0E, 0x0E72,
-    0x0C10, 0x0DEE,
-    0x0C12, 0xDB72,
-    0x0C14, 0x9425,
-    0x0C16, 0x6CF0,
-    0x0C18, 0xAE4E,
-    0x0C1A, 0x99EF,
-    0x0C1C, 0x4D17,
-    0x0C1E, 0xC9DA,
-    0x0C20, 0x0265,
-    0x0C22, 0x9D64,
-    0x0C24, 0x973F,
-    0x0C26, 0x06F2,
-    0x0C28, 0x5FEA,
-    0x0C2A, 0xB583,
-    0x0C2C, 0xEA27,
-    0x0C2E, 0x16B2,
-    0x0C30, 0x8769,
-    0x0C32, 0xD6CD,
-    0x0C34, 0xF0E9,
-    0x0C36, 0xCF91,
-    0x0C38, 0xB241,
-    0x0C3A, 0x9E74,
-    0x0C3C, 0x353F,
-    0x0C3E, 0x4E26,
-    0x0C40, 0x9159,
-    0x0C42, 0x390E,
-    0x0C44, 0x3A25,
-    0x0C46, 0x79DE,
-    0x0C48, 0x8643,
-    0x0C4A, 0xCA74,
-    0x0C4C, 0x6F07,
-    0x0C4E, 0x2BC9,
-    0x0C50, 0x042C,
-    0x0C52, 0xE6D6,
-    0x0C54, 0x2720,
-    0x0C56, 0x6774,
-    0x0C58, 0x377E,
-    0x0C5A, 0x51FC,
-    0x0C5C, 0x3651,
-    0x0C5E, 0x2C6E,
-    0x0C60, 0x85B6,
-    0x0C62, 0xCEBB,
-    0x0C64, 0xC198,
-    0x0C66, 0x9DC9,
-    0x0C68, 0x2CF7,
-    0x0C6A, 0x2DB4,
-    0x0C6C, 0x462C,
-    0x0C6E, 0x29CD,
-    0x0C70, 0x2742,
-    0x0C72, 0xE006,
-    0x0C74, 0x45C4,
-    0x0C76, 0x73BA,
-    0x0C78, 0x25B5,
-    0x0C7A, 0x8E1E,
-    0x0C7C, 0x3556,
-    0x0C7E, 0x1622,
-    0x0C80, 0xEBCC,
-    0x0C82, 0xF7F5,
-    0x0C84, 0x090A,
-    0x0C86, 0xC07B,
-    0x0C88, 0x8312,
-    0x0C8A, 0xE095,
-    0x0C8C, 0x79C9,
-    0x0C8E, 0x7D9A,
-    0x0C90, 0x74B0,
-    0x0C92, 0xE92C,
-    0x0C94, 0xE746,
-    0x0C96, 0x71E4,
-    0x0C98, 0xDFFC,
-    0x0C9A, 0x7849,
-    0x0C9C, 0xA02C,
-    0x0C9E, 0x53D6,
-    0x0CA0, 0xD2CF,
-    0x0CA2, 0x6BEA,
-    0x0CA4, 0xB8FE,
-    0x0CA6, 0x7432,
-    0x0CA8, 0x00D1,
-    0x0CAA, 0x08AE,
-    0x0CAC, 0x8B75,
-    0x0CAE, 0xBC80,
-    0x0CB0, 0x549F,
-    0x0CB2, 0x54D8,
-    0x0CB4, 0xB2B1,
-    0x0CB6, 0x2144,
-    0x0CB8, 0xBEA7,
-    0x0CBA, 0xF6EB,
-    0x0CBC, 0x1CCD,
-    0x0CBE, 0x00B2,
-    0x0CC0, 0x328A,
-    0x0CC2, 0x5A1B,
-    0x0CC4, 0xA27B,
-    0x0CC6, 0xA1B3,
-    0x0CC8, 0xA571,
-    0x0CCA, 0x0645,
-    0x0CCC, 0x420E,
-    0x0CCE, 0xC4E2,
-    0x0CD0, 0xAA4E,
-    0x0CD2, 0x0C86,
-    0x0CD4, 0xC630,
-    0x0CD6, 0x44D8,
-    0x0CD8, 0x6DD0,
-    0x0CDA, 0xDFCE,
-    0x0CDC, 0xB4E7,
-    0x0CDE, 0xC405,
-    0x0CE0, 0x991E,
-    0x0CE2, 0xCC13,
-    0x0CE4, 0x04CE,
-    0x0CE6, 0x5874,
-    0x0CE8, 0x8294,
-    0x0CEA, 0x79FF,
-    0x0CEC, 0x36EA,
-    0x0CEE, 0x7F7D,
-    0x0CF0, 0x8C2E,
-    0x0CF2, 0x8B31,
-    0x0CF4, 0xC62E,
-    0x0CF6, 0xCA8F,
-    0x0CF8, 0x1711,
-    0x0CFA, 0xE49B,
-    0x0CFC, 0xEFEF,
-    0x0CFE, 0x7E3E,
-    0x0D00, 0x7FCA,
-    0x0D02, 0xA310,
-    0x0D04, 0x7282,
-    0x0D06, 0x8185,
-    0x0D08, 0x583E,
-    0x0D0A, 0x8C1A,
-    0x0D0C, 0x8B86,
-    0x0D0E, 0x4BBB,
-    0x0D10, 0xA752,
-    0x0D12, 0x03DE,
-    0x0D14, 0x271D,
-    0x0D16, 0x79BC,
-    0x0D18, 0x58B1,
-    0x0D1A, 0xE5B3,
-    0x0D1C, 0xB501,
-    0x0D1E, 0x3FDB,
-    0x0D20, 0xCDB0,
-    0x0D22, 0x6302,
-    0x0D24, 0xDED0,
-    0x0D26, 0xC7D6,
-    0x0D28, 0x921C,
-    0x0D2A, 0x90E7,
-    0x0D2C, 0xB9FF,
-    0x0D2E, 0x688E,
-    0x0D30, 0x4974,
-    0x0D32, 0x5783,
-    0x0D34, 0x2262,
-    0x0D36, 0xAAEB,
-    0x0D38, 0xD355,
-    0x0D3A, 0x89A1,
-    0x0D3C, 0x2532,
-    0x0D3E, 0xD8B0,
-    0x0D40, 0xD2CC,
-    0x0D42, 0x31A3,
-    0x0D44, 0x623C,
-    0x0D46, 0xBAB9,
-    0x0D48, 0xB2CF,
-    0x0D4A, 0xAD11,
-    0x0D4C, 0x18E1,
-    0x0D4E, 0x472B,
-    0x0D50, 0xCAD4,
-    0x0D52, 0xA1D9,
-    0x0D54, 0xA2A2,
-    0x0D56, 0xE25A,
-    0x0D58, 0x6ACE,
-    0x0D5A, 0x2BC1,
-    0x0D5C, 0xD094,
-    0x0D5E, 0x87E0,
-    0x0D60, 0x859D,
-    0x0D62, 0x8AA9,
-    0x0D64, 0x2F22,
-    0x0D66, 0x7FEB,
-    0x0D68, 0x0D44,
-    0x0D6A, 0x98CA,
-    0x0D6C, 0x8848,
-    0x0D6E, 0x8867,
-    0x0D70, 0xFAFF,
-    0x0D72, 0xAC5C,
-    0x0D74, 0x0A7F,
-    0x0D76, 0x40F2,
-    0x0D78, 0x9FA8,
-    0x0D7A, 0x437C,
-    0x0D7C, 0xCD21,
-    0x0D7E, 0x6DB5,
-    0x0D80, 0x0C1C,
-    0x0D82, 0xB90C,
-    0x0D84, 0x38B0,
-    0x0D86, 0xA28C,
-    0x0D88, 0x7506,
-    0x0D8A, 0x1DAA,
-    0x0D8C, 0xAC97,
-    0x0D8E, 0x80F0,
-    0x0D90, 0x93D9,
-    0x0D92, 0xC540,
-    0x0D94, 0x9DD5,
-    0x0D96, 0xCF91,
-    0x0D98, 0x43EE,
-    0x0D9A, 0x2F21,
-    0x0D9C, 0xF470,
-    0x0D9E, 0xB006,
-    0x0DA0, 0xF3FE,
-    0x0DA2, 0xAA68,
-    0x0DA4, 0x6B8D,
-    0x0DA6, 0x6162,
-    0x0DA8, 0xC310,
-    0x0DAA, 0xD526,
-    0x0DAC, 0xB301,
-    0x0DAE, 0x6669,
-    0x0DB0, 0x6EDD,
-    0x0DB2, 0xF5C0,
-    0x0DB4, 0xF3A9,
-    0x0DB6, 0x081B,
-    0x0DB8, 0xA04D,
-    0x0DBA, 0x17D1,
-    0x0DBC, 0x4C3E,
-    0x0DBE, 0xDC31,
-    0x0DC0, 0xE71C,
-    0x0DC2, 0xFD81,
-    0x0DC4, 0x7525,
-    0x0DC6, 0xAF0F,
-    0x0DC8, 0x23C2,
-    0x0DCA, 0x556F,
-    0x0DCC, 0x2B1D,
-    0x0DCE, 0x3F33,
-    0x0DD0, 0xF3DC,
-    0x0DD2, 0x8D28,
-    0x0DD4, 0x7A78,
-    0x0DD6, 0x1847,
-    0x0DD8, 0x74A3,
-    0x0DDA, 0x702A,
-    0x0DDC, 0xA3F7,
-    0x0DDE, 0x5E13,
-    0x0DE0, 0xB976,
-    0x0DE2, 0x434F,
-    0x0DE4, 0xEB3A,
-    0x0DE6, 0xCDFB,
-    0x0DE8, 0x28CC,
-    0x0DEA, 0x7A96,
-    0x0DEC, 0x636D,
-    0x0DEE, 0x9449,
-    0x0DF0, 0x247F,
-    0x0DF2, 0x219F,
-    0x0DF4, 0x6A61,
-    0x0DF6, 0x63F9,
-    0x0DF8, 0xF656,
-    0x0DFA, 0x131B,
-    0x0DFC, 0xC91B,
-    0x0DFE, 0x564A,
-    0x0E00, 0xEE1F,
-    0x0E02, 0xCAE8,
-    0x0E04, 0x930E,
-    0x0E06, 0x1275,
-    0x0E08, 0xC1F1,
-    0x0E0A, 0x2DD1,
-    0x0E0C, 0x7F86,
-    0x0E0E, 0xE58D,
-    0x0E10, 0xB3A7,
-    0x0E12, 0x42BD,
-    0x0E14, 0x568B,
-    0x0E16, 0xC7BD,
-    0x0E18, 0xDA46,
-    0x0E1A, 0x5DD1,
-    0x0E1C, 0x2E61,
-    0x0E1E, 0xFBB3,
-    0x0E20, 0x9D11,
-    0x0E22, 0xC609,
-    0x0E24, 0xC843,
-    0x0E26, 0x757F,
-    0x0E28, 0x6CEE,
-    0x0E2A, 0x0B41,
-    0x0E2C, 0xED81,
-    0x0E2E, 0x4EA7,
-    0x0E30, 0xD5C9,
-    0x0E32, 0x4FB1,
-    0x0E34, 0x6020,
-    0x0E36, 0xFB8D,
-    0x0E38, 0x9002,
-    0x0E3A, 0x9F01,
-    0x0E3C, 0x145D,
-    0x0E3E, 0xD0D9,
-    0x0E40, 0x708C,
-    0x0E42, 0x4E5C,
-    0x0E44, 0x3D97,
-    0x0E46, 0x214D,
-    0x0E48, 0x0D0B,
-    0x0E4A, 0x55E1,
-    0x0E4C, 0x3356,
-    0x0E4E, 0x48D7,
-    0x0E50, 0x81F9,
-    0x0E52, 0xDD48,
-    0x0E54, 0x69A9,
-    0x0E56, 0x575B,
-    0x0E58, 0xA1DC,
-    0x0E5A, 0x9F4D,
-    0x0E5C, 0x4590,
-    0x0E5E, 0x0A24,
-    0x0E60, 0x39E5,
-    0x0E62, 0x5130,
-    0x0E64, 0x0361,
-    0x0E66, 0x67DD,
-    0x0E68, 0xD9CF,
-    0x0E6A, 0x1938,
-    0x0E6C, 0x56AC,
-    0x0E6E, 0xD1A3,
-    0x0E70, 0xDEB5,
-    0x0E72, 0xFD36,
-    0x0E74, 0x8818,
-    0x0E76, 0xB87E,
-    0x0E78, 0xB2A0,
-    0x0E7A, 0x07BD,
-    0x0E7C, 0x1F65,
-    0x0E7E, 0x72A6,
-    0x0E80, 0x24A3,
-    0x0E82, 0x6763,
-    0x0E84, 0xDDD8,
-    0x0E86, 0x3A57,
-    0x0E88, 0x6269,
-    0x0E8A, 0x661C,
-    0x0E8C, 0xC948,
-    0x0E8E, 0x9BAD,
-    0x0E90, 0xB31A,
-    0x0E92, 0xBA45,
-    0x0E94, 0x17A8,
-    0x0E96, 0x6C14,
-    0x0E98, 0xCE2B,
-    0x0E9A, 0x6C46,
-    0x0E9C, 0x74DD,
-    0x0E9E, 0x8FF7,
-    0x0EA0, 0x6D3F,
-    0x0EA2, 0xE6B4,
-    0x0EA4, 0x01E0,
-    0x0EA6, 0xD215,
-    0x0EA8, 0x8F82,
-    0x0EAA, 0x153F,
-    0x0EAC, 0xD51F,
-    0x0EAE, 0x81A5,
-    0x0EB0, 0x6F10,
-    0x0EB2, 0x992E,
-    0x0EB4, 0x374B,
-    0x0EB6, 0x7DC0,
-    0x0EB8, 0x36B6,
-    0x0EBA, 0x0774,
-    0x0EBC, 0xD451,
-    0x0EBE, 0x0D84,
-    0x0EC0, 0xE9F6,
-    0x0EC2, 0x0BC3,
-    0x0EC4, 0xC93B,
-    0x0EC6, 0x3FA9,
-    0x0EC8, 0xAB4F,
-    0x0ECA, 0xCA75,
-    0x0ECC, 0x8091,
-    0x0ECE, 0x944B,
-    0x0ED0, 0xA32C,
-    0x0ED2, 0xE277,
-    0x0ED4, 0x03DB,
-    0x0ED6, 0x31A0,
-    0x0ED8, 0x6250,
-    0x0EDA, 0x8F4C,
-    0x0EDC, 0xB736,
-    0x0EDE, 0x054A,
-    0x0EE0, 0x187A,
-    0x0EE2, 0x040A,
-    0x0EE4, 0x1705,
-    0x0EE6, 0x4908,
-    0x0EE8, 0x4BB3,
-    0x0EEA, 0xCD17,
-    0x0EEC, 0x24AE,
-    0x0EEE, 0x9713,
-    0x0EF0, 0x4CDF,
-    0x0EF2, 0x737E,
-    0x0EF4, 0x20EC,
-    0x0EF6, 0xA9D0,
-    0x0EF8, 0xD5A5,
-    0x0EFA, 0x1D2A,
-    0x0EFC, 0x430E,
-    0x0EFE, 0xDBCD,
-    0x0F00, 0x817C,
-    0x0F02, 0xC8C1,
-    0x0F04, 0x7404,
-    0x0F06, 0x7D6C,
-    0x0F08, 0x995D,
-    0x0F0A, 0xE04D,
-    0x0F0C, 0xFE0F,
-    0x0F0E, 0x5A53,
-    0x0F10, 0x66FB,
-    0x0F12, 0xA44F,
-    0x0F14, 0x974C,
-    0x0F16, 0xFC9C,
-    0x0F18, 0x8094,
-    0x0F1A, 0x8336,
-    0x0F1C, 0x7A9F,
-    0x0F1E, 0xF001,
-    0x0F20, 0x12F4,
-    0x0F22, 0x8229,
-    0x0F24, 0x72AC,
-    0x0F26, 0x7325,
-    0x0F28, 0x7B83,
-    0x0F2A, 0xA7B6,
-    0x0F2C, 0xA321,
-    0x0F2E, 0x06BF,
-    0x0F30, 0x619A,
-    0x0F32, 0xF447,
-    0x0F34, 0x2D75,
-    0x0F36, 0xED14,
-    0x0F38, 0xD7CB,
-    0x0F3A, 0xE23F,
-    0x0F3C, 0x09E5,
-    0x0F3E, 0xA197,
-    0x0F40, 0xD4CE,
-    0x0F42, 0xCC6B,
-    0x0F44, 0x2131,
-    0x0F46, 0x7D66,
-    0x0F48, 0x9365,
-    0x0F4A, 0x69F1,
-    0x0F4C, 0x83B0,
-    0x0F4E, 0x079B,
-    0x0F50, 0x686C,
-    0x0F52, 0x3CC6,
-    0x0F54, 0x1B13,
-    0x0F56, 0xA9B4,
-    0x0F58, 0x9D80,
-    0x0F5A, 0xC254,
-    0x0F5C, 0x33AA,
-    0x0F5E, 0xBF70,
-    0x0F60, 0x24CF,
-    0x0F62, 0xBE2E,
-    0x0F64, 0x08DB,
-    0x0F66, 0x64FB,
-    0x0F68, 0xDB86,
-    0x0F6A, 0xCB96,
-    0x0F6C, 0xFD4A,
-    0x0F6E, 0x8BBE,
-    0x0F70, 0xF49A,
-    0x0F72, 0x19F3,
-    0x0F74, 0x37EE,
-    0x0F76, 0x2357,
-    0x0F78, 0xEF2F,
-    0x0F7A, 0x96AF,
-    0x0F7C, 0x9F88,
-    0x0F7E, 0x18CC,
-    0x0F80, 0xC716,
-    0x0F82, 0xA30C,
-    0x0F84, 0x218B,
-    0x0F86, 0x2351,
-    0x0F88, 0xF723,
-    0x0F8A, 0xCED1,
-    0x0F8C, 0xC632,
-    0x0F8E, 0x32D1,
-    0x0F90, 0xEBF0,
-    0x0F92, 0xE1A5,
-    0x0F94, 0x2E18,
-    0x0F96, 0xB357,
-    0x0F98, 0x9893,
-    0x0F9A, 0xF00F,
-    0x0F9C, 0x917A,
-    0x0F9E, 0x84F3,
-    0x0FA0, 0x6CF5,
-    0x0FA2, 0x8667,
-    0x0FA4, 0x1DBE,
-    0x0FA6, 0xE993,
-    0x0FA8, 0x4B9F,
-    0x0FAA, 0xD5FC,
-    0x0FAC, 0xF07A,
-    0x0FAE, 0x884D,
-    0x0FB0, 0xF19D,
-    0x0FB2, 0x8CA2,
-    0x0FB4, 0x62D3,
-    0x0FB6, 0x1849,
-    0x0FB8, 0x7C2D,
-    0x0FBA, 0x83DF,
-    0x0FBC, 0xD127,
-    0x0FBE, 0x497F,
-    0x0FC0, 0x7695,
-    0x0FC2, 0x93E7,
-    0x0FC4, 0x4247,
-    0x0FC6, 0x2DC3,
-    0x0FC8, 0xAFC3,
-    0x0FCA, 0x6A4A,
-    0x0FCC, 0x7DDB,
-    0x0FCE, 0x7A43,
-    0x0FD0, 0x0DF5,
-    0x0FD2, 0x01A0,
-    0x0FD4, 0x0C9F,
-    0x0FD6, 0x3ADE,
-    0x0FD8, 0xAADA,
-    0x0FDA, 0x41F1,
-    0x0FDC, 0x40F7,
-    0x0FDE, 0x9E9D,
-    0x0FE0, 0xBB33,
-    0x0FE2, 0x5392,
-    0x0FE4, 0x0403,
-    0x0FE6, 0x09EB,
-    0x0FE8, 0x9482,
-    0x0FEA, 0x0E93,
-    0x0FEC, 0x7B69,
-    0x0FEE, 0xE45A,
-    0x0FF0, 0x22C4,
-    0x0FF2, 0xEE57,
-    0x0FF4, 0x21CD,
-    0x0FF6, 0x4AAE,
-    0x0FF8, 0x716F,
-    0x0FFA, 0x97ED,
-    0x0FFC, 0xB468,
-    0x0FFE, 0x92F0,
-    0x1000, 0x191C,
-    0x1002, 0xFDB4,
-    0x1004, 0x4B3E,
-    0x1006, 0xD331,
-    0x1008, 0x52DD,
-    0x100A, 0x1A41,
-    0x100C, 0xBE19,
-    0x100E, 0xBBDE,
-    0x1010, 0xC01D,
-    0x1012, 0xE2F9,
-    0x1014, 0x1E75,
-    0x1016, 0xCCBE,
-    0x1018, 0xDE75,
-    0x101A, 0xB9C3,
-    0x101C, 0x3C7D,
-    0x101E, 0x087F,
-    0x1020, 0x7EA8,
-    0x1022, 0x9F0D,
-    0x1024, 0x1F22,
-    0x1026, 0x1DF5,
-    0x1028, 0x6C54,
-    0x102A, 0xBCB2,
-    0x102C, 0x4A67,
-    0x102E, 0xC913,
-    0x1030, 0x00B4,
-    0x1032, 0xC532,
-    0x1034, 0xDFD6,
-    0x1036, 0x1A59,
-    0x1038, 0x2A39,
-    0x103A, 0x5F66,
-    0x103C, 0xA849,
-    0x103E, 0x8566,
-    0x1040, 0xD52A,
-    0x1042, 0xFB09,
-    0x1044, 0x53AA,
-    0x1046, 0xCD37,
-    0x1048, 0x7893,
-    0x104A, 0xEB40,
-    0x104C, 0x4DD5,
-    0x104E, 0x25C6,
-    0x1050, 0x9B9F,
-    0x1052, 0x34DC,
-    0x1054, 0xA6D6,
-    0x1056, 0x338A,
-    0x1058, 0x3767,
-    0x105A, 0x5CB3,
-    0x105C, 0x2409,
-    0x105E, 0x0556,
-    0x1060, 0x1DF4,
-    0x1062, 0xBB6D,
-    0x1064, 0xD7EB,
-    0x1066, 0x3F9C,
-    0x1068, 0xAE67,
-    0x106A, 0x6F8C,
-    0x106C, 0x0F60,
-    0x106E, 0xEBB1,
-    0x1070, 0x76F3,
-    0x1072, 0x100B,
-    0x1074, 0xCC3E,
-    0x1076, 0xC963,
-    0x1078, 0x57EC,
-    0x107A, 0xB0CF,
-    0x107C, 0x3724,
-    0x107E, 0xBE70,
-    0x1080, 0x9153,
-    0x1082, 0x0F48,
-    0x1084, 0x365D,
-    0x1086, 0xBFA4,
-    0x1088, 0x2029,
-    0x108A, 0x45CA,
-    0x108C, 0x595C,
-    0x108E, 0x8CF7,
-    0x1090, 0x7ACF,
-    0x1092, 0xB231,
-    0x1094, 0x4C9B,
-    0x1096, 0x53B8,
-    0x1098, 0x74F2,
-    0x109A, 0x1969,
-    0x109C, 0x0D8E,
-    0x109E, 0xC423,
-    0x10A0, 0xE5A9,
-    0x10A2, 0xB7C3,
-    0x10A4, 0x0ED4,
-    0x10A6, 0xDB9D,
-    0x10A8, 0xE8F6,
-    0x10AA, 0x91A3,
-    0x10AC, 0xFF96,
-    0x10AE, 0xE8E0,
-    0x10B0, 0xC3C1,
-    0x10B2, 0xE0F7,
-    0x10B4, 0x9E36,
-    0x10B6, 0x5985,
-    0x10B8, 0x9FA0,
-    0x10BA, 0x01D7,
-    0x10BC, 0x454B,
-    0x10BE, 0x524E,
-    0x10C0, 0xE5ED,
-    0x10C2, 0xCC42,
-    0x10C4, 0xEB0A,
-    0x10C6, 0x6833,
-    0x10C8, 0x23F8,
-    0x10CA, 0xA152,
-    0x10CC, 0xB153,
-    0x10CE, 0x54F6,
-    0x10D0, 0xCE7C,
-    0x10D2, 0x8FCC,
-    0x10D4, 0x8185,
-    0x10D6, 0xFD5C,
-    0x10D8, 0x1892,
-    0x10DA, 0xD6A4,
-    0x10DC, 0x4635,
-    0x10DE, 0x9ECD,
-    0x10E0, 0x4844,
-    0x10E2, 0x243F,
-    0x10E4, 0xDDCE,
-    0x10E6, 0xBD84,
-    0x10E8, 0x2370,
-    0x10EA, 0x69FA,
-    0x10EC, 0x939E,
-    0x10EE, 0x6D16,
-    0x10F0, 0x35AF,
-    0x10F2, 0x054B,
-    0x10F4, 0x4E51,
-    0x10F6, 0xED90,
-    0x10F8, 0x64FB,
-    0x10FA, 0xB9BD,
-    0x10FC, 0x73FF,
-    0x10FE, 0x3CCE,
-    0x1100, 0x3378,
-    0x1102, 0xEFBB,
-    0x1104, 0x306F,
-    0x1106, 0x5E46,
-    0x1108, 0x62F6,
-    0x110A, 0x41C9,
-    0x110C, 0xD184,
-    0x110E, 0xCA57,
-    0x1110, 0x01FF,
-    0x1112, 0x63C7,
-    0x1114, 0xE97C,
-    0x1116, 0x3F87,
-    0x1118, 0x3F32,
-    0x111A, 0x1947,
-    0x111C, 0x6E53,
-    0x111E, 0x9460,
-    0x1120, 0xD02D,
-    0x1122, 0x47D1,
-    0x1124, 0x7855,
-    0x1126, 0xD96B,
-    0x1128, 0xCC29,
-    0x112A, 0x2118,
-    0x112C, 0x433F,
-    0x112E, 0xBBFD,
-    0x1130, 0xBC6C,
-    0x1132, 0x1C87,
-    0x1134, 0x1DBE,
-    0x1136, 0xE6B0,
-    0x1138, 0x7D65,
-    0x113A, 0xE509,
-    0x113C, 0x9162,
-    0x113E, 0xBC19,
-    0x1140, 0x5B33,
-    0x1142, 0x7C47,
-    0x1144, 0x6CBC,
-    0x1146, 0x4F34,
-    0x1148, 0xDD7C,
-    0x114A, 0x7799,
-    0x114C, 0xB943,
-    0x114E, 0x424A,
-    0x1150, 0xE94B,
-    0x1152, 0xC8E4,
-    0x1154, 0xBE5C,
-    0x1156, 0x54C9,
-    0x1158, 0x43AD,
-    0x115A, 0x602A,
-    0x115C, 0x3CC7,
-    0x115E, 0xFF9B,
-    0x1160, 0x14D2,
-    0x1162, 0x0773,
-    0x1164, 0xD8F9,
-    0x1166, 0xCE7E,
-    0x1168, 0x91B3,
-    0x116A, 0xA609,
-    0x116C, 0x4FF4,
-    0x116E, 0xC155,
-    0x1170, 0x022C,
-    0x1172, 0x4B95,
-    0x1174, 0xB17B,
-    0x1176, 0xBF8D,
-    0x1178, 0x2A3E,
-    0x117A, 0xE7D5,
-    0x117C, 0xEAB8,
-    0x117E, 0xB7A1,
-    0x1180, 0x54CA,
-    0x1182, 0x89F8,
-    0x1184, 0x892A,
-    0x1186, 0xE229,
-    0x1188, 0x0440,
-    0x118A, 0x8568,
-    0x118C, 0x48E6,
-    0x118E, 0x9459,
-    0x1190, 0xBC85,
-    0x1192, 0xC3B5,
-    0x1194, 0xEDFC,
-    0x1196, 0x74E4,
-    0x1198, 0x3501,
-    0x119A, 0xA871,
-    0x119C, 0x2371,
-    0x119E, 0xA419,
-    0x11A0, 0x8A29,
-    0x11A2, 0x34D8,
-    0x11A4, 0x1EE5,
-    0x11A6, 0xC56A,
-    0x11A8, 0xB7BE,
-    0x11AA, 0x1CAE,
-    0x11AC, 0xDBC0,
-    0x11AE, 0x7CB4,
-    0x11B0, 0xDDBD,
-    0x11B2, 0x19C3,
-    0x11B4, 0xA114,
-    0x11B6, 0x43FB,
-    0x11B8, 0x0E23,
-    0x11BA, 0x1395,
-    0x11BC, 0xED60,
-    0x11BE, 0x2C7C,
-    0x11C0, 0xCEC7,
-    0x11C2, 0x21E4,
-    0x11C4, 0xFBFE,
-    0x11C6, 0x3D09,
-    0x11C8, 0x0000,
-    0xFCFC, 0x4000,
-};
-
-/*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-static u16 kkthuwide_preview_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x5804,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x0010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFD02,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0003,
-    0x1C58, 0xF004,
-    0x1C5A, 0x0010,
-    0x1C5C, 0x3110,
-    0x1C5E, 0x0005,
-    0x1C60, 0x00A0,
-    0x1C62, 0x6E10,
-    0x1C64, 0x6E10,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFD02,
-    0x1C7A, 0x0010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0003,
-    0x1C80, 0xF004,
-    0x1C82, 0x0010,
-    0x1C84, 0x3110,
-    0x1C86, 0x0005,
-    0x1C88, 0x00A0,
-    0x1C8A, 0x6610,
-    0x1C8C, 0x6610,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x0010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x0001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x0010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x0001,
-    0x1CF0, 0xFD02,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0003,
-    0x1CF8, 0xF004,
-    0x1CFA, 0x0010,
-    0x1CFC, 0x3110,
-    0x1CFE, 0x0005,
-    0x1D00, 0x00A0,
-    0x1D02, 0x6E10,
-    0x1D04, 0x6E10,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0001,
-    0x1D18, 0xFD02,
-    0x1D1A, 0x0010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0003,
-    0x1D20, 0xF004,
-    0x1D22, 0x0010,
-    0x1D24, 0x3110,
-    0x1D26, 0x0005,
-    0x1D28, 0x00A0,
-    0x1D2A, 0x6610,
-    0x1D2C, 0x6610,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0001,
-    0x1D40, 0xF004,
-    0x1D42, 0x0010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0A00,
-    0x1E18, 0x0A00,
-    0x1E26, 0x0A00,
-    0x1E28, 0x0A00,
-    0x1DF2, 0x1600,
-    0x1DF4, 0x1600,
-    0x1E02, 0x1600,
-    0x1E04, 0x1600,
-    0x1E12, 0x0800,
-    0x1E14, 0x0800,
-    0x1E22, 0x0800,
-    0x1E24, 0x0800,
-    0x1DF6, 0x1100,
-    0x1DF8, 0x1100,
-    0x1E06, 0x1100,
-    0x1E08, 0x1100,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0040,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0101,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-static u16 kkthuwide_capture_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x5804,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x0010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFD02,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0003,
-    0x1C58, 0xF004,
-    0x1C5A, 0x0010,
-    0x1C5C, 0x3110,
-    0x1C5E, 0x0005,
-    0x1C60, 0x00A0,
-    0x1C62, 0x6E10,
-    0x1C64, 0x6E10,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFD02,
-    0x1C7A, 0x0010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0003,
-    0x1C80, 0xF004,
-    0x1C82, 0x0010,
-    0x1C84, 0x3110,
-    0x1C86, 0x0005,
-    0x1C88, 0x00A0,
-    0x1C8A, 0x6610,
-    0x1C8C, 0x6610,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x0010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x0001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x0010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x0001,
-    0x1CF0, 0xFD02,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0003,
-    0x1CF8, 0xF004,
-    0x1CFA, 0x0010,
-    0x1CFC, 0x3110,
-    0x1CFE, 0x0005,
-    0x1D00, 0x00A0,
-    0x1D02, 0x6E10,
-    0x1D04, 0x6E10,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0001,
-    0x1D18, 0xFD02,
-    0x1D1A, 0x0010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0003,
-    0x1D20, 0xF004,
-    0x1D22, 0x0010,
-    0x1D24, 0x3110,
-    0x1D26, 0x0005,
-    0x1D28, 0x00A0,
-    0x1D2A, 0x6610,
-    0x1D2C, 0x6610,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0001,
-    0x1D40, 0xF004,
-    0x1D42, 0x0010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0A00,
-    0x1E18, 0x0A00,
-    0x1E26, 0x0A00,
-    0x1E28, 0x0A00,
-    0x1DF2, 0x1600,
-    0x1DF4, 0x1600,
-    0x1E02, 0x1600,
-    0x1E04, 0x1600,
-    0x1E12, 0x0800,
-    0x1E14, 0x0800,
-    0x1E22, 0x0800,
-    0x1E24, 0x0800,
-    0x1DF6, 0x1100,
-    0x1DF8, 0x1100,
-    0x1E06, 0x1100,
-    0x1E08, 0x1100,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0040,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0101,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/*05_OceanDX4_09_JN5_Fdsum_4K_4096x2304_30fps_3056Msps*/
-static u16 kkthuwide_normal_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x5209,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x4A00,
-    0xD4B0, 0x9A01,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x0010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x1010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x7810,
-    0x1C5C, 0x7810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2810,
-    0x1C7C, 0xFE0F,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x6610,
-    0x1C84, 0x6610,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x1010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x0010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x1010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x7810,
-    0x1CFC, 0x7810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2810,
-    0x1D1C, 0xFE0F,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x6610,
-    0x1D24, 0x6610,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x1010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x1300,
-    0x1E18, 0x1300,
-    0x1E26, 0x1300,
-    0x1E28, 0x1300,
-    0x1DF2, 0x0A00,
-    0x1DF4, 0x0A00,
-    0x1E02, 0x0A00,
-    0x1E04, 0x0A00,
-    0x1E12, 0x0F00,
-    0x1E14, 0x0F00,
-    0x1E22, 0x0F00,
-    0x1E24, 0x0F00,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0020,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0030,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0101,
-    0xF6F2, 0x000B,
-    0xF6F4, 0x0014,
-    0xF6F6, 0x0012,
-    0xF6F8, 0x0010,
-    0xF6FA, 0x000B,
-    0xF6FC, 0x0006,
-    0xF6FE, 0x0001,
-    0xF700, 0xFFF6,
-    0xF702, 0xFFEF,
-    0xF704, 0xFFE3,
-    0xF706, 0xFFD9,
-    0xF708, 0xFFCD,
-    0xF70A, 0xFFC3,
-    0xF70C, 0xFFB8,
-    0xF70E, 0xFFA9,
-    0xF710, 0xFF9B,
-    0xF712, 0xFF93,
-    0xF714, 0x0015,
-    0xF716, 0x0022,
-    0xF718, 0x0026,
-    0xF71A, 0x0020,
-    0xF71C, 0x001D,
-    0xF71E, 0x0016,
-    0xF720, 0x0011,
-    0xF722, 0x0009,
-    0xF724, 0xFFFF,
-    0xF726, 0xFFF5,
-    0xF728, 0xFFEB,
-    0xF72A, 0xFFE0,
-    0xF72C, 0xFFD2,
-    0xF72E, 0xFFC3,
-    0xF730, 0xFFB4,
-    0xF732, 0xFFA4,
-    0xF734, 0xFF9A,
-    0xF736, 0x0011,
-    0xF738, 0x0024,
-    0xF73A, 0x0024,
-    0xF73C, 0x0022,
-    0xF73E, 0x001E,
-    0xF740, 0x001B,
-    0xF742, 0x0014,
-    0xF744, 0x000D,
-    0xF746, 0x0004,
-    0xF748, 0xFFFA,
-    0xF74A, 0xFFEF,
-    0xF74C, 0xFFE0,
-    0xF74E, 0xFFD6,
-    0xF750, 0xFFC4,
-    0xF752, 0xFFB4,
-    0xF754, 0xFFA1,
-    0xF756, 0xFF96,
-    0xF758, 0x0016,
-    0xF75A, 0x0021,
-    0xF75C, 0x0026,
-    0xF75E, 0x0025,
-    0xF760, 0x001E,
-    0xF762, 0x001C,
-    0xF764, 0x0019,
-    0xF766, 0x000F,
-    0xF768, 0x0007,
-    0xF76A, 0xFFFD,
-    0xF76C, 0xFFF3,
-    0xF76E, 0xFFE4,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC7,
-    0xF774, 0xFFB5,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF97,
-    0xF77A, 0x0013,
-    0xF77C, 0x0025,
-    0xF77E, 0x0027,
-    0xF780, 0x0028,
-    0xF782, 0x0024,
-    0xF784, 0x0021,
-    0xF786, 0x001D,
-    0xF788, 0x0015,
-    0xF78A, 0x000B,
-    0xF78C, 0x0000,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE9,
-    0xF792, 0xFFDA,
-    0xF794, 0xFFCB,
-    0xF796, 0xFFB5,
-    0xF798, 0xFFA3,
-    0xF79A, 0xFF94,
-    0xF79C, 0x0012,
-    0xF79E, 0x0025,
-    0xF7A0, 0x0026,
-    0xF7A2, 0x0028,
-    0xF7A4, 0x0029,
-    0xF7A6, 0x0028,
-    0xF7A8, 0x0022,
-    0xF7AA, 0x0018,
-    0xF7AC, 0x0010,
-    0xF7AE, 0x0004,
-    0xF7B0, 0xFFFA,
-    0xF7B2, 0xFFE9,
-    0xF7B4, 0xFFDE,
-    0xF7B6, 0xFFCB,
-    0xF7B8, 0xFFB8,
-    0xF7BA, 0xFFA2,
-    0xF7BC, 0xFF93,
-    0xF7BE, 0x0013,
-    0xF7C0, 0x0025,
-    0xF7C2, 0x0029,
-    0xF7C4, 0x002D,
-    0xF7C6, 0x0031,
-    0xF7C8, 0x002E,
-    0xF7CA, 0x0027,
-    0xF7CC, 0x001F,
-    0xF7CE, 0x0012,
-    0xF7D0, 0x000D,
-    0xF7D2, 0xFFFF,
-    0xF7D4, 0xFFF4,
-    0xF7D6, 0xFFDF,
-    0xF7D8, 0xFFCF,
-    0xF7DA, 0xFFB8,
-    0xF7DC, 0xFFA4,
-    0xF7DE, 0xFF96,
-    0xF7E0, 0x0016,
-    0xF7E2, 0x0025,
-    0xF7E4, 0x0028,
-    0xF7E6, 0x002E,
-    0xF7E8, 0x0034,
-    0xF7EA, 0x002F,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001E,
-    0xF7F0, 0x0016,
-    0xF7F2, 0x000C,
-    0xF7F4, 0x0002,
-    0xF7F6, 0xFFF0,
-    0xF7F8, 0xFFE1,
-    0xF7FA, 0xFFCB,
-    0xF7FC, 0xFFB5,
-    0xF7FE, 0xFF9F,
-    0xF800, 0xFF95,
-    0xF802, 0x001A,
-    0xF804, 0x002A,
-    0xF806, 0x002F,
-    0xF808, 0x0035,
-    0xF80A, 0x003F,
-    0xF80C, 0x0037,
-    0xF80E, 0x002F,
-    0xF810, 0x0021,
-    0xF812, 0x001B,
-    0xF814, 0x0015,
-    0xF816, 0x000A,
-    0xF818, 0xFFF9,
-    0xF81A, 0xFFE7,
-    0xF81C, 0xFFCE,
-    0xF81E, 0xFFB7,
-    0xF820, 0xFFA2,
-    0xF822, 0xFF8F,
-    0xF824, 0x0020,
-    0xF826, 0x002E,
-    0xF828, 0x0036,
-    0xF82A, 0x0040,
-    0xF82C, 0x0045,
-    0xF82E, 0x003C,
-    0xF830, 0x0030,
-    0xF832, 0x0027,
-    0xF834, 0x0020,
-    0xF836, 0x0019,
-    0xF838, 0x0012,
-    0xF83A, 0x0002,
-    0xF83C, 0xFFEA,
-    0xF83E, 0xFFD5,
-    0xF840, 0xFFBA,
-    0xF842, 0xFFA1,
-    0xF844, 0xFF93,
-    0xF846, 0x001F,
-    0xF848, 0x0030,
-    0xF84A, 0x0035,
-    0xF84C, 0x003D,
-    0xF84E, 0x0049,
-    0xF850, 0x003D,
-    0xF852, 0x0030,
-    0xF854, 0x0025,
-    0xF856, 0x0020,
-    0xF858, 0x001A,
-    0xF85A, 0x0019,
-    0xF85C, 0x0006,
-    0xF85E, 0xFFED,
-    0xF860, 0xFFD3,
-    0xF862, 0xFFBA,
-    0xF864, 0xFFA0,
-    0xF866, 0xFF96,
-    0xF868, 0x0024,
-    0xF86A, 0x002E,
-    0xF86C, 0x0033,
-    0xF86E, 0x0040,
-    0xF870, 0x004C,
-    0xF872, 0x003D,
-    0xF874, 0x002E,
-    0xF876, 0x0023,
-    0xF878, 0x001D,
-    0xF87A, 0x001C,
-    0xF87C, 0x001B,
-    0xF87E, 0x0012,
-    0xF880, 0xFFF0,
-    0xF882, 0xFFD8,
-    0xF884, 0xFFBC,
-    0xF886, 0xFFA1,
-    0xF888, 0xFF8E,
-    0xF88A, 0x0017,
-    0xF88C, 0x0029,
-    0xF88E, 0x0028,
-    0xF890, 0x0037,
-    0xF892, 0x004A,
-    0xF894, 0x0032,
-    0xF896, 0x0024,
-    0xF898, 0x001A,
-    0xF89A, 0x0016,
-    0xF89C, 0x0013,
-    0xF89E, 0x001B,
-    0xF8A0, 0x0012,
-    0xF8A2, 0xFFF0,
-    0xF8A4, 0xFFD2,
-    0xF8A6, 0xFFB8,
-    0xF8A8, 0xFF9B,
-    0xF8AA, 0xFF90,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 08_OceanDX4_09_JN5_Fdsum_4K_4096x2304_60fps_3056Msps */
-static u16 kkthuwide_hs_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x5209,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1400,
-    0xD4A8, 0x0200,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x0000,
-    0xD4BC, 0x6200,
-    0xD4B0, 0xD602,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0600,
-    0x1E18, 0x0600,
-    0x1E26, 0x0600,
-    0x1E28, 0x0600,
-    0x1DF2, 0x0C00,
-    0x1DF4, 0x0C00,
-    0x1E02, 0x0C00,
-    0x1E04, 0x0C00,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0C00,
-    0x1DF8, 0x0C00,
-    0x1E06, 0x0C00,
-    0x1E08, 0x0C00,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x000B,
-    0xF6F4, 0x0014,
-    0xF6F6, 0x0012,
-    0xF6F8, 0x0010,
-    0xF6FA, 0x000B,
-    0xF6FC, 0x0006,
-    0xF6FE, 0x0001,
-    0xF700, 0xFFF6,
-    0xF702, 0xFFEF,
-    0xF704, 0xFFE3,
-    0xF706, 0xFFD9,
-    0xF708, 0xFFCD,
-    0xF70A, 0xFFC3,
-    0xF70C, 0xFFB8,
-    0xF70E, 0xFFA9,
-    0xF710, 0xFF9B,
-    0xF712, 0xFF93,
-    0xF714, 0x0015,
-    0xF716, 0x0022,
-    0xF718, 0x0026,
-    0xF71A, 0x0020,
-    0xF71C, 0x001D,
-    0xF71E, 0x0016,
-    0xF720, 0x0011,
-    0xF722, 0x0009,
-    0xF724, 0xFFFF,
-    0xF726, 0xFFF5,
-    0xF728, 0xFFEB,
-    0xF72A, 0xFFE0,
-    0xF72C, 0xFFD2,
-    0xF72E, 0xFFC3,
-    0xF730, 0xFFB4,
-    0xF732, 0xFFA4,
-    0xF734, 0xFF9A,
-    0xF736, 0x0011,
-    0xF738, 0x0024,
-    0xF73A, 0x0024,
-    0xF73C, 0x0022,
-    0xF73E, 0x001E,
-    0xF740, 0x001B,
-    0xF742, 0x0014,
-    0xF744, 0x000D,
-    0xF746, 0x0004,
-    0xF748, 0xFFFA,
-    0xF74A, 0xFFEF,
-    0xF74C, 0xFFE0,
-    0xF74E, 0xFFD6,
-    0xF750, 0xFFC4,
-    0xF752, 0xFFB4,
-    0xF754, 0xFFA1,
-    0xF756, 0xFF96,
-    0xF758, 0x0016,
-    0xF75A, 0x0021,
-    0xF75C, 0x0026,
-    0xF75E, 0x0025,
-    0xF760, 0x001E,
-    0xF762, 0x001C,
-    0xF764, 0x0019,
-    0xF766, 0x000F,
-    0xF768, 0x0007,
-    0xF76A, 0xFFFD,
-    0xF76C, 0xFFF3,
-    0xF76E, 0xFFE4,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC7,
-    0xF774, 0xFFB5,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF97,
-    0xF77A, 0x0013,
-    0xF77C, 0x0025,
-    0xF77E, 0x0027,
-    0xF780, 0x0028,
-    0xF782, 0x0024,
-    0xF784, 0x0021,
-    0xF786, 0x001D,
-    0xF788, 0x0015,
-    0xF78A, 0x000B,
-    0xF78C, 0x0000,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE9,
-    0xF792, 0xFFDA,
-    0xF794, 0xFFCB,
-    0xF796, 0xFFB5,
-    0xF798, 0xFFA3,
-    0xF79A, 0xFF94,
-    0xF79C, 0x0012,
-    0xF79E, 0x0025,
-    0xF7A0, 0x0026,
-    0xF7A2, 0x0028,
-    0xF7A4, 0x0029,
-    0xF7A6, 0x0028,
-    0xF7A8, 0x0022,
-    0xF7AA, 0x0018,
-    0xF7AC, 0x0010,
-    0xF7AE, 0x0004,
-    0xF7B0, 0xFFFA,
-    0xF7B2, 0xFFE9,
-    0xF7B4, 0xFFDE,
-    0xF7B6, 0xFFCB,
-    0xF7B8, 0xFFB8,
-    0xF7BA, 0xFFA2,
-    0xF7BC, 0xFF93,
-    0xF7BE, 0x0013,
-    0xF7C0, 0x0025,
-    0xF7C2, 0x0029,
-    0xF7C4, 0x002D,
-    0xF7C6, 0x0031,
-    0xF7C8, 0x002E,
-    0xF7CA, 0x0027,
-    0xF7CC, 0x001F,
-    0xF7CE, 0x0012,
-    0xF7D0, 0x000D,
-    0xF7D2, 0xFFFF,
-    0xF7D4, 0xFFF4,
-    0xF7D6, 0xFFDF,
-    0xF7D8, 0xFFCF,
-    0xF7DA, 0xFFB8,
-    0xF7DC, 0xFFA4,
-    0xF7DE, 0xFF96,
-    0xF7E0, 0x0016,
-    0xF7E2, 0x0025,
-    0xF7E4, 0x0028,
-    0xF7E6, 0x002E,
-    0xF7E8, 0x0034,
-    0xF7EA, 0x002F,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001E,
-    0xF7F0, 0x0016,
-    0xF7F2, 0x000C,
-    0xF7F4, 0x0002,
-    0xF7F6, 0xFFF0,
-    0xF7F8, 0xFFE1,
-    0xF7FA, 0xFFCB,
-    0xF7FC, 0xFFB5,
-    0xF7FE, 0xFF9F,
-    0xF800, 0xFF95,
-    0xF802, 0x001A,
-    0xF804, 0x002A,
-    0xF806, 0x002F,
-    0xF808, 0x0035,
-    0xF80A, 0x003F,
-    0xF80C, 0x0037,
-    0xF80E, 0x002F,
-    0xF810, 0x0021,
-    0xF812, 0x001B,
-    0xF814, 0x0015,
-    0xF816, 0x000A,
-    0xF818, 0xFFF9,
-    0xF81A, 0xFFE7,
-    0xF81C, 0xFFCE,
-    0xF81E, 0xFFB7,
-    0xF820, 0xFFA2,
-    0xF822, 0xFF8F,
-    0xF824, 0x0020,
-    0xF826, 0x002E,
-    0xF828, 0x0036,
-    0xF82A, 0x0040,
-    0xF82C, 0x0045,
-    0xF82E, 0x003C,
-    0xF830, 0x0030,
-    0xF832, 0x0027,
-    0xF834, 0x0020,
-    0xF836, 0x0019,
-    0xF838, 0x0012,
-    0xF83A, 0x0002,
-    0xF83C, 0xFFEA,
-    0xF83E, 0xFFD5,
-    0xF840, 0xFFBA,
-    0xF842, 0xFFA1,
-    0xF844, 0xFF93,
-    0xF846, 0x001F,
-    0xF848, 0x0030,
-    0xF84A, 0x0035,
-    0xF84C, 0x003D,
-    0xF84E, 0x0049,
-    0xF850, 0x003D,
-    0xF852, 0x0030,
-    0xF854, 0x0025,
-    0xF856, 0x0020,
-    0xF858, 0x001A,
-    0xF85A, 0x0019,
-    0xF85C, 0x0006,
-    0xF85E, 0xFFED,
-    0xF860, 0xFFD3,
-    0xF862, 0xFFBA,
-    0xF864, 0xFFA0,
-    0xF866, 0xFF96,
-    0xF868, 0x0024,
-    0xF86A, 0x002E,
-    0xF86C, 0x0033,
-    0xF86E, 0x0040,
-    0xF870, 0x004C,
-    0xF872, 0x003D,
-    0xF874, 0x002E,
-    0xF876, 0x0023,
-    0xF878, 0x001D,
-    0xF87A, 0x001C,
-    0xF87C, 0x001B,
-    0xF87E, 0x0012,
-    0xF880, 0xFFF0,
-    0xF882, 0xFFD8,
-    0xF884, 0xFFBC,
-    0xF886, 0xFFA1,
-    0xF888, 0xFF8E,
-    0xF88A, 0x0017,
-    0xF88C, 0x0029,
-    0xF88E, 0x0028,
-    0xF890, 0x0037,
-    0xF892, 0x004A,
-    0xF894, 0x0032,
-    0xF896, 0x0024,
-    0xF898, 0x001A,
-    0xF89A, 0x0016,
-    0xF89C, 0x0013,
-    0xF89E, 0x001B,
-    0xF8A0, 0x0012,
-    0xF8A2, 0xFFF0,
-    0xF8A4, 0xFFD2,
-    0xF8A6, 0xFFB8,
-    0xF8A8, 0xFF9B,
-    0xF8AA, 0xFF90,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/*12_OceanDX4_13_0_JN5_A2A2_FHD_2048x1152_240.4fps_1992Msps*/
-static u16 kkthuwide_slim_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0000,
-    0x7808, 0x0000,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x0800,
-    0x034E, 0x0480,
-    0x0350, 0x0004,
-    0x0352, 0x0004,
-    0x0340, 0x04DE,
-    0x0342, 0x0C00,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00F9,
-    0x0312, 0x0001,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0604,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x3344,
-    0x0380, 0x0002,
-    0x0382, 0x0006,
-    0x0384, 0x0002,
-    0x0386, 0x0006,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0xBA10,
-    0xD20C, 0x0908,
-    0xD314, 0x3003,
-    0xD27A, 0x0B00,
-    0xD3F0, 0x811C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0000,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0000,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0xDF01,
-    0x705A, 0xE001,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x907E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x2C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0000,
-    0x2A44, 0xE002,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5000,
-    0x8CD6, 0xBE00,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x1A00,
-    0xD4E6, 0x0000,
-    0xD4C0, 0x3800,
-    0xD4B4, 0x6D00,
-    0xD4CC, 0x0100,
-    0xD5BC, 0xC400,
-    0xD5BE, 0xC400,
-    0xD5C8, 0x5203,
-    0xD5CA, 0x5203,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x1400,
-    0xA578, 0x8000,
-    0xA58A, 0x2200,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0C00,
-    0x1DF4, 0x0C00,
-    0x1E02, 0x0C00,
-    0x1E04, 0x0C00,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0000,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0010,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC801,
-    0xF3F6, 0xD210,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 04_OceanDX4_05_JN5_Fdsum_12.5Mp_AEB_4096x3072_60fps_3056Msps */
-static u16 kkthuwide_custom1_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x5804,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x0010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x7210,
-    0x1C5C, 0x7210,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x0010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x6610,
-    0x1C84, 0x6610,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x0010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x7210,
-    0x1CFC, 0x7210,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x0010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x6610,
-    0x1D24, 0x6610,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0xFDFF,
-    0x1D98, 0xFDFF,
-    0x1DA6, 0xFDFF,
-    0x1DA8, 0xFDFF,
-    0x1D72, 0xFDFF,
-    0x1D74, 0xFDFF,
-    0x1D82, 0xFDFF,
-    0x1D84, 0xFDFF,
-    0x1D92, 0xFDFF,
-    0x1D94, 0xFDFF,
-    0x1DA2, 0xFDFF,
-    0x1DA4, 0xFDFF,
-    0x1D76, 0xFDFF,
-    0x1D78, 0xFDFF,
-    0x1D86, 0xFDFF,
-    0x1D88, 0xFDFF,
-    0x1E16, 0x0A00,
-    0x1E18, 0x0A00,
-    0x1E26, 0x0A00,
-    0x1E28, 0x0A00,
-    0x1DF2, 0x1600,
-    0x1DF4, 0x1600,
-    0x1E02, 0x1600,
-    0x1E04, 0x1600,
-    0x1E12, 0x0700,
-    0x1E14, 0x0700,
-    0x1E22, 0x0700,
-    0x1E24, 0x0700,
-    0x1DF6, 0x1100,
-    0x1DF8, 0x1100,
-    0x1E06, 0x1100,
-    0x1E08, 0x1100,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0203,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 8192x6144 Fullsize bayer mode 6*/
-static u16 kkthuwide_custom2_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x2000,
-    0x034E, 0x1800,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x18CA,
-    0x0342, 0x2580,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0200,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0101,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0xCD04,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x0300,
-    0xD4D0, 0x1100,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x2800,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x7E03,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xE600,
-    0xD4F8, 0xF001,
-    0xD4FA, 0x1802,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0300,
-    0x1D74, 0x0300,
-    0x1D82, 0x0300,
-    0x1D84, 0x0300,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0600,
-    0x1E18, 0x0600,
-    0x1E26, 0x0600,
-    0x1E28, 0x0600,
-    0x1DF2, 0x0300,
-    0x1DF4, 0x0300,
-    0x1E02, 0x0300,
-    0x1E04, 0x0300,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 8192x6144 Fullsize QBC mode 7*/
-static u16 kkthuwide_custom3_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x2000,
-    0x034E, 0x1800,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x18CA,
-    0x0342, 0x2580,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0x0004,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0100,
-    0x25E2, 0xCD00,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x1603,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 09_OceanDX4_13_1_JN5_A2A2_1632x1224_24fps_1672Msps */
-static u16 kkthuwide_custom4_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0340,
-    0x0348, 0x1CDF,
-    0x0346, 0x0270,
-    0x034A, 0x15AF,
-    0x034C, 0x0660,
-    0x034E, 0x04C8,
-    0x0350, 0x0004,
-    0x0352, 0x0004,
-    0x0340, 0x0D88, // 0x10E8
-    0x0342, 0x2290,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00D1,
-    0x0312, 0x0001,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x3344,
-    0x0380, 0x0002,
-    0x0382, 0x0006,
-    0x0384, 0x0002,
-    0x0386, 0x0006,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0910,
-    0xD314, 0x2002,
-    0xD27A, 0x0700,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x3F01,
-    0x705A, 0x4001,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x00D0,
-    0x7280, 0x12D2,
-    0x7282, 0x0040,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x907E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x2C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x7901,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0600,
-    0xD4A8, 0x0700,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x0000,
-    0xD4BC, 0x4000,
-    0xD4B0, 0x7901,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xC400,
-    0xD560, 0x5203,
-    0xD562, 0x5203,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0x0804,
-    0xF3F6, 0xD210,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 10_OceanDX4_13_1_JN5_A2A2_1856x1392_24fps_1672Msps */
-static u16 kkthuwide_custom5_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x08C0,
-    0x0348, 0x175F,
-    0x0346, 0x0690,
-    0x034A, 0x118F,
-    0x034C, 0x0740,
-    0x034E, 0x0570,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0D8A, // 0x10E0
-    0x0342, 0x228C,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00D1,
-    0x0312, 0x0001,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x0000,
-    0xD4BC, 0x3700,
-    0xD4B0, 0x8603,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xC400,
-    0xD560, 0x5203,
-    0xD562, 0x5203,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0x8809,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 06_OceanDX4_10_0_JN5_Fdsum_DSG_4096x2304_30fps_3056Msps */
-static u16 kkthuwide_custom6_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x3608,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x2560,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0C,
-    0x0270, 0x2B2B,
-    0x0272, 0x2C10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x2000,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0600,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x00FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0101,
-    0x1966, 0x0200,
-    0xFCFC, 0x4000,
-    0x0086, 0x0280,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x1000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x9F00,
-    0x705A, 0xA000,
-    0x7274, 0x00B0,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0078,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x0B04,
-    0xD4B0, 0x7E03,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x3D10,
-    0x1C34, 0x3D10,
-    0x1C4E, 0x8001,
-    0x1C50, 0xF004,
-    0x1C52, 0x3D10,
-    0x1C54, 0x5110,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0xCC10,
-    0x1C5C, 0x2010,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0xF004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x5110,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0xA310,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x3D10,
-    0x1CAC, 0x3D10,
-    0x1CC6, 0x8001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x3D10,
-    0x1CD4, 0x3D10,
-    0x1CEE, 0x8001,
-    0x1CF0, 0xF004,
-    0x1CF2, 0x3D10,
-    0x1CF4, 0x5110,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0xCC10,
-    0x1CFC, 0x2010,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0xF004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x5110,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0xA310,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0xF004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x3D10,
-    0x1D4C, 0x3D10,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0xF4FF,
-    0x1D98, 0xF4FF,
-    0x1DA6, 0xF4FF,
-    0x1DA8, 0xF4FF,
-    0x1D72, 0xF4FF,
-    0x1D74, 0xF4FF,
-    0x1D82, 0xF4FF,
-    0x1D84, 0xF4FF,
-    0x1D92, 0xF4FF,
-    0x1D94, 0xF4FF,
-    0x1DA2, 0xF4FF,
-    0x1DA4, 0xF4FF,
-    0x1D76, 0xE2FF,
-    0x1D78, 0xE2FF,
-    0x1D86, 0xE2FF,
-    0x1D88, 0xE2FF,
-    0x1E16, 0xEBFF,
-    0x1E18, 0xEBFF,
-    0x1E26, 0xEBFF,
-    0x1E28, 0xEBFF,
-    0x1DF2, 0xE9FF,
-    0x1DF4, 0xE9FF,
-    0x1E02, 0xE9FF,
-    0x1E04, 0xE9FF,
-    0x1E12, 0xE9FF,
-    0x1E14, 0xE9FF,
-    0x1E22, 0xE9FF,
-    0x1E24, 0xE9FF,
-    0x1DF6, 0xEEFF,
-    0x1DF8, 0xEEFF,
-    0x1E06, 0xEEFF,
-    0x1E08, 0xEEFF,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0D00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x80E3,
-    0xB268, 0x80E3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0x36D2,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0D00,
-    0xDB3E, 0x36D2,
-    0xDADE, 0xA000,
-    0xDB0E, 0x0F00,
-    0xDB40, 0x36D2,
-    0xDAE0, 0x4001,
-    0xDB10, 0x0D00,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 07_OceanDX4_10_0_JN5_Fdsum_DSG_split_4096x2304_30fps_3056Msps */
-static u16 kkthuwide_custom7_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0101,
-    0x7808, 0x3F0C,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x2560,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x2000,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0600,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0100,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0101,
-    0x1966, 0x0200,
-    0xFCFC, 0x4000,
-    0x0086, 0x0280,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x1000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x9F00,
-    0x705A, 0xA000,
-    0x7274, 0x00B0,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0078,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x0B04,
-    0xD4B0, 0x7E03,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x5610,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0xB610,
-    0x1C34, 0x7011,
-    0x1C4E, 0x8001,
-    0x1C50, 0xF004,
-    0x1C52, 0x2810,
-    0x1C54, 0x5110,
-    0x1C56, 0x0005,
-    0x1C58, 0xF009,
-    0x1C5A, 0x9710,
-    0x1C5C, 0xDA10,
-    0x1C5E, 0x000A,
-    0x1C60, 0x00A0,
-    0x1C62, 0xDA10,
-    0x1C64, 0x7011,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0xF004,
-    0x1C7A, 0x2810,
-    0x1C7C, 0x6610,
-    0x1C7E, 0x0005,
-    0x1C80, 0xF009,
-    0x1C82, 0x7210,
-    0x1C84, 0xDD10,
-    0x1C86, 0x000A,
-    0x1C88, 0x00A0,
-    0x1C8A, 0xDD10,
-    0x1C8C, 0x7011,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x5610,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0xC410,
-    0x1CAC, 0x7011,
-    0x1CC6, 0x8001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x5610,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0xB610,
-    0x1CD4, 0x7011,
-    0x1CEE, 0x8001,
-    0x1CF0, 0xF004,
-    0x1CF2, 0x2810,
-    0x1CF4, 0x5110,
-    0x1CF6, 0x0005,
-    0x1CF8, 0xF009,
-    0x1CFA, 0x9710,
-    0x1CFC, 0xDA10,
-    0x1CFE, 0x000A,
-    0x1D00, 0x00A0,
-    0x1D02, 0xDA10,
-    0x1D04, 0x7011,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0xF004,
-    0x1D1A, 0x2810,
-    0x1D1C, 0x6610,
-    0x1D1E, 0x0005,
-    0x1D20, 0xF009,
-    0x1D22, 0x7210,
-    0x1D24, 0xDD10,
-    0x1D26, 0x000A,
-    0x1D28, 0x00A0,
-    0x1D2A, 0xDD10,
-    0x1D2C, 0x7011,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0xF004,
-    0x1D42, 0x2010,
-    0x1D44, 0x5610,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0xC410,
-    0x1D4C, 0x7011,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0600,
-    0x1D98, 0x0600,
-    0x1DA6, 0x0600,
-    0x1DA8, 0x0600,
-    0x1D72, 0x0600,
-    0x1D74, 0x0600,
-    0x1D82, 0x0600,
-    0x1D84, 0x0600,
-    0x1D92, 0x0600,
-    0x1D94, 0x0600,
-    0x1DA2, 0x0600,
-    0x1DA4, 0x0600,
-    0x1D76, 0x0600,
-    0x1D78, 0x0600,
-    0x1D86, 0x0600,
-    0x1D88, 0x0600,
-    0x1E16, 0xFAFF,
-    0x1E18, 0xFAFF,
-    0x1E26, 0xFAFF,
-    0x1E28, 0xFAFF,
-    0x1DF2, 0xFAFF,
-    0x1DF4, 0xFAFF,
-    0x1E02, 0xFAFF,
-    0x1E04, 0xFAFF,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0D00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x80E3,
-    0xB268, 0x80E3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0x36D2,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0D00,
-    0xDB3E, 0x36D2,
-    0xDADE, 0xA000,
-    0xDB0E, 0x0F00,
-    0xDB40, 0x36D2,
-    0xDAE0, 0x4001,
-    0xDB10, 0x0D00,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 11_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_60fps_3056Msps 4096x3072 60fps binning */
-static u16 kkthuwide_custom8_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x4600,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-
-/* 13_OceanDX4_06_0_JN5_Fdsum_DSG_4096x3072_30fps_3056Msps 4096x3072 30fps, DAG sensor merge 12bit */
-static u16 kkthuwide_custom9_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x3608,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x2560,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0C,
-    0x0270, 0x2B2B,
-    0x0272, 0x2C10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x2000,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0600,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x00FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0101,
-    0x1966, 0x0200,
-    0xFCFC, 0x4000,
-    0x0086, 0x0280,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x1000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x9F00,
-    0x705A, 0xA000,
-    0x7274, 0x00B0,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0078,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x4700,
-    0xD4BC, 0x3700,
-    0xD4B0, 0x1E01,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xC400,
-    0xD560, 0x5203,
-    0xD562, 0x5203,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2810,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0xF004,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0xF004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2810,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2810,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0xF004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0xF004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0xF004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2810,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0D00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x80E3,
-    0xB268, 0x80E3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0x36D2,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0D00,
-    0xDB3E, 0x36D2,
-    0xDADE, 0xA000,
-    0xDB0E, 0x0F00,
-    0xDB40, 0x36D2,
-    0xDAE0, 0x4001,
-    0xDB10, 0x0D00,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_4096x3072_30fps_3056Msps izoom */
-static u16 kkthuwide_custom10_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0800,
-    0x0348, 0x181F,
-    0x0346, 0x0600,
-    0x034A, 0x121F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x0D04,
-    0x0342, 0x23F0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0200,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0101,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0xCD04,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x3B00,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC808,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_Bypass_4096x3072_30fps_3056Msps QBC*/
-static u16 kkthuwide_custom11_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0800,
-    0x0348, 0x181F,
-    0x0346, 0x0600,
-    0x034A, 0x121F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x0D04,
-    0x0342, 0x23F0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0x0004,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0100,
-    0x25E2, 0xCD00,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x3B00,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC808,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-static u16 kkthuwide_seamless_preview[] = {
-    0x0B30, 0x0102,
-    0x0340, 0x1908,
-};
-
-static u16 kkthuwide_seamless_vid[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0104,
-	0x0340,	0x13F7,
-};
-
-static u16 kkthuwide_seamless_custom1[] = {
-    0x0B30, 0x0103,
-    0x0340, 0x0C84,
-};
-
-static u16 kkthuwide_seamless_custom2[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0100,
-	0x0340,	0x18CA,
-};
-
-static u16 kkthuwide_seamless_custom3[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0101,
-	0x0340,	0x18CA,
-};
-
-static u16 kkthuwide_seamless_custom7[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0106,
-	0x0340,	0x0C84,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwide_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwide_ana_gain_table.h
deleted file mode 100755
index 20f95ed6..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwide_ana_gain_table.h
+++ /dev/null
@@ -1,5100 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************/
-#ifndef __KKTHUWIDE_ANA_GAIN_TABLE_H__
-#define __KKTHUWIDE_ANA_GAIN_TABLE_H__
-static kal_uint32 kkthuwide_ana_gain_table[] = {
-    1024,
-    1056,
-    1088,
-    1120,
-    1152,
-    1184,
-    1216,
-    1248,
-    1280,
-    1312,
-    1344,
-    1376,
-    1408,
-    1440,
-    1472,
-    1504,
-    1536,
-    1568,
-    1600,
-    1632,
-    1664,
-    1696,
-    1728,
-    1760,
-    1792,
-    1824,
-    1856,
-    1888,
-    1920,
-    1952,
-    1984,
-    2016,
-    2048,
-    2080,
-    2112,
-    2144,
-    2176,
-    2208,
-    2240,
-    2272,
-    2304,
-    2336,
-    2368,
-    2400,
-    2432,
-    2464,
-    2496,
-    2528,
-    2560,
-    2592,
-    2624,
-    2656,
-    2688,
-    2720,
-    2752,
-    2784,
-    2816,
-    2848,
-    2880,
-    2912,
-    2944,
-    2976,
-    3008,
-    3040,
-    3072,
-    3104,
-    3136,
-    3168,
-    3200,
-    3232,
-    3264,
-    3296,
-    3328,
-    3360,
-    3392,
-    3424,
-    3456,
-    3488,
-    3520,
-    3552,
-    3584,
-    3616,
-    3648,
-    3680,
-    3712,
-    3744,
-    3776,
-    3808,
-    3840,
-    3872,
-    3904,
-    3936,
-    3968,
-    4000,
-    4032,
-    4064,
-    4096,
-    4128,
-    4160,
-    4192,
-    4224,
-    4256,
-    4288,
-    4320,
-    4352,
-    4384,
-    4416,
-    4448,
-    4480,
-    4512,
-    4544,
-    4576,
-    4608,
-    4640,
-    4672,
-    4704,
-    4736,
-    4768,
-    4800,
-    4832,
-    4864,
-    4896,
-    4928,
-    4960,
-    4992,
-    5024,
-    5056,
-    5088,
-    5120,
-    5152,
-    5184,
-    5216,
-    5248,
-    5280,
-    5312,
-    5344,
-    5376,
-    5408,
-    5440,
-    5472,
-    5504,
-    5536,
-    5568,
-    5600,
-    5632,
-    5664,
-    5696,
-    5728,
-    5760,
-    5792,
-    5824,
-    5856,
-    5888,
-    5920,
-    5952,
-    5984,
-    6016,
-    6048,
-    6080,
-    6112,
-    6144,
-    6176,
-    6208,
-    6240,
-    6272,
-    6304,
-    6336,
-    6368,
-    6400,
-    6432,
-    6464,
-    6496,
-    6528,
-    6560,
-    6592,
-    6624,
-    6656,
-    6688,
-    6720,
-    6752,
-    6784,
-    6816,
-    6848,
-    6880,
-    6912,
-    6944,
-    6976,
-    7008,
-    7040,
-    7072,
-    7104,
-    7136,
-    7168,
-    7200,
-    7232,
-    7264,
-    7296,
-    7328,
-    7360,
-    7392,
-    7424,
-    7456,
-    7488,
-    7520,
-    7552,
-    7584,
-    7616,
-    7648,
-    7680,
-    7712,
-    7744,
-    7776,
-    7808,
-    7840,
-    7872,
-    7904,
-    7936,
-    7968,
-    8000,
-    8032,
-    8064,
-    8096,
-    8128,
-    8160,
-    8192,
-    8224,
-    8256,
-    8288,
-    8320,
-    8352,
-    8384,
-    8416,
-    8448,
-    8480,
-    8512,
-    8544,
-    8576,
-    8608,
-    8640,
-    8672,
-    8704,
-    8736,
-    8768,
-    8800,
-    8832,
-    8864,
-    8896,
-    8928,
-    8960,
-    8992,
-    9024,
-    9056,
-    9088,
-    9120,
-    9152,
-    9184,
-    9216,
-    9248,
-    9280,
-    9312,
-    9344,
-    9376,
-    9408,
-    9440,
-    9472,
-    9504,
-    9536,
-    9568,
-    9600,
-    9632,
-    9664,
-    9696,
-    9728,
-    9760,
-    9792,
-    9824,
-    9856,
-    9888,
-    9920,
-    9952,
-    9984,
-    10016,
-    10048,
-    10080,
-    10112,
-    10144,
-    10176,
-    10208,
-    10240,
-    10272,
-    10304,
-    10336,
-    10368,
-    10400,
-    10432,
-    10464,
-    10496,
-    10528,
-    10560,
-    10592,
-    10624,
-    10656,
-    10688,
-    10720,
-    10752,
-    10784,
-    10816,
-    10848,
-    10880,
-    10912,
-    10944,
-    10976,
-    11008,
-    11040,
-    11072,
-    11104,
-    11136,
-    11168,
-    11200,
-    11232,
-    11264,
-    11296,
-    11328,
-    11360,
-    11392,
-    11424,
-    11456,
-    11488,
-    11520,
-    11552,
-    11584,
-    11616,
-    11648,
-    11680,
-    11712,
-    11744,
-    11776,
-    11808,
-    11840,
-    11872,
-    11904,
-    11936,
-    11968,
-    12000,
-    12032,
-    12064,
-    12096,
-    12128,
-    12160,
-    12192,
-    12224,
-    12256,
-    12288,
-    12320,
-    12352,
-    12384,
-    12416,
-    12448,
-    12480,
-    12512,
-    12544,
-    12576,
-    12608,
-    12640,
-    12672,
-    12704,
-    12736,
-    12768,
-    12800,
-    12832,
-    12864,
-    12896,
-    12928,
-    12960,
-    12992,
-    13024,
-    13056,
-    13088,
-    13120,
-    13152,
-    13184,
-    13216,
-    13248,
-    13280,
-    13312,
-    13344,
-    13376,
-    13408,
-    13440,
-    13472,
-    13504,
-    13536,
-    13568,
-    13600,
-    13632,
-    13664,
-    13696,
-    13728,
-    13760,
-    13792,
-    13824,
-    13856,
-    13888,
-    13920,
-    13952,
-    13984,
-    14016,
-    14048,
-    14080,
-    14112,
-    14144,
-    14176,
-    14208,
-    14240,
-    14272,
-    14304,
-    14336,
-    14368,
-    14400,
-    14432,
-    14464,
-    14496,
-    14528,
-    14560,
-    14592,
-    14624,
-    14656,
-    14688,
-    14720,
-    14752,
-    14784,
-    14816,
-    14848,
-    14880,
-    14912,
-    14944,
-    14976,
-    15008,
-    15040,
-    15072,
-    15104,
-    15136,
-    15168,
-    15200,
-    15232,
-    15264,
-    15296,
-    15328,
-    15360,
-    15392,
-    15424,
-    15456,
-    15488,
-    15520,
-    15552,
-    15584,
-    15616,
-    15648,
-    15680,
-    15712,
-    15744,
-    15776,
-    15808,
-    15840,
-    15872,
-    15904,
-    15936,
-    15968,
-    16000,
-    16032,
-    16064,
-    16096,
-    16128,
-    16160,
-    16192,
-    16224,
-    16256,
-    16288,
-    16320,
-    16352,
-    16384,
-    16416,
-    16448,
-    16480,
-    16512,
-    16544,
-    16576,
-    16608,
-    16640,
-    16672,
-    16704,
-    16736,
-    16768,
-    16800,
-    16832,
-    16864,
-    16896,
-    16928,
-    16960,
-    16992,
-    17024,
-    17056,
-    17088,
-    17120,
-    17152,
-    17184,
-    17216,
-    17248,
-    17280,
-    17312,
-    17344,
-    17376,
-    17408,
-    17440,
-    17472,
-    17504,
-    17536,
-    17568,
-    17600,
-    17632,
-    17664,
-    17696,
-    17728,
-    17760,
-    17792,
-    17824,
-    17856,
-    17888,
-    17920,
-    17952,
-    17984,
-    18016,
-    18048,
-    18080,
-    18112,
-    18144,
-    18176,
-    18208,
-    18240,
-    18272,
-    18304,
-    18336,
-    18368,
-    18400,
-    18432,
-    18464,
-    18496,
-    18528,
-    18560,
-    18592,
-    18624,
-    18656,
-    18688,
-    18720,
-    18752,
-    18784,
-    18816,
-    18848,
-    18880,
-    18912,
-    18944,
-    18976,
-    19008,
-    19040,
-    19072,
-    19104,
-    19136,
-    19168,
-    19200,
-    19232,
-    19264,
-    19296,
-    19328,
-    19360,
-    19392,
-    19424,
-    19456,
-    19488,
-    19520,
-    19552,
-    19584,
-    19616,
-    19648,
-    19680,
-    19712,
-    19744,
-    19776,
-    19808,
-    19840,
-    19872,
-    19904,
-    19936,
-    19968,
-    20000,
-    20032,
-    20064,
-    20096,
-    20128,
-    20160,
-    20192,
-    20224,
-    20256,
-    20288,
-    20320,
-    20352,
-    20384,
-    20416,
-    20448,
-    20480,
-    20512,
-    20544,
-    20576,
-    20608,
-    20640,
-    20672,
-    20704,
-    20736,
-    20768,
-    20800,
-    20832,
-    20864,
-    20896,
-    20928,
-    20960,
-    20992,
-    21024,
-    21056,
-    21088,
-    21120,
-    21152,
-    21184,
-    21216,
-    21248,
-    21280,
-    21312,
-    21344,
-    21376,
-    21408,
-    21440,
-    21472,
-    21504,
-    21536,
-    21568,
-    21600,
-    21632,
-    21664,
-    21696,
-    21728,
-    21760,
-    21792,
-    21824,
-    21856,
-    21888,
-    21920,
-    21952,
-    21984,
-    22016,
-    22048,
-    22080,
-    22112,
-    22144,
-    22176,
-    22208,
-    22240,
-    22272,
-    22304,
-    22336,
-    22368,
-    22400,
-    22432,
-    22464,
-    22496,
-    22528,
-    22560,
-    22592,
-    22624,
-    22656,
-    22688,
-    22720,
-    22752,
-    22784,
-    22816,
-    22848,
-    22880,
-    22912,
-    22944,
-    22976,
-    23008,
-    23040,
-    23072,
-    23104,
-    23136,
-    23168,
-    23200,
-    23232,
-    23264,
-    23296,
-    23328,
-    23360,
-    23392,
-    23424,
-    23456,
-    23488,
-    23520,
-    23552,
-    23584,
-    23616,
-    23648,
-    23680,
-    23712,
-    23744,
-    23776,
-    23808,
-    23840,
-    23872,
-    23904,
-    23936,
-    23968,
-    24000,
-    24032,
-    24064,
-    24096,
-    24128,
-    24160,
-    24192,
-    24224,
-    24256,
-    24288,
-    24320,
-    24352,
-    24384,
-    24416,
-    24448,
-    24480,
-    24512,
-    24544,
-    24576,
-    24608,
-    24640,
-    24672,
-    24704,
-    24736,
-    24768,
-    24800,
-    24832,
-    24864,
-    24896,
-    24928,
-    24960,
-    24992,
-    25024,
-    25056,
-    25088,
-    25120,
-    25152,
-    25184,
-    25216,
-    25248,
-    25280,
-    25312,
-    25344,
-    25376,
-    25408,
-    25440,
-    25472,
-    25504,
-    25536,
-    25568,
-    25600,
-    25632,
-    25664,
-    25696,
-    25728,
-    25760,
-    25792,
-    25824,
-    25856,
-    25888,
-    25920,
-    25952,
-    25984,
-    26016,
-    26048,
-    26080,
-    26112,
-    26144,
-    26176,
-    26208,
-    26240,
-    26272,
-    26304,
-    26336,
-    26368,
-    26400,
-    26432,
-    26464,
-    26496,
-    26528,
-    26560,
-    26592,
-    26624,
-    26656,
-    26688,
-    26720,
-    26752,
-    26784,
-    26816,
-    26848,
-    26880,
-    26912,
-    26944,
-    26976,
-    27008,
-    27040,
-    27072,
-    27104,
-    27136,
-    27168,
-    27200,
-    27232,
-    27264,
-    27296,
-    27328,
-    27360,
-    27392,
-    27424,
-    27456,
-    27488,
-    27520,
-    27552,
-    27584,
-    27616,
-    27648,
-    27680,
-    27712,
-    27744,
-    27776,
-    27808,
-    27840,
-    27872,
-    27904,
-    27936,
-    27968,
-    28000,
-    28032,
-    28064,
-    28096,
-    28128,
-    28160,
-    28192,
-    28224,
-    28256,
-    28288,
-    28320,
-    28352,
-    28384,
-    28416,
-    28448,
-    28480,
-    28512,
-    28544,
-    28576,
-    28608,
-    28640,
-    28672,
-    28704,
-    28736,
-    28768,
-    28800,
-    28832,
-    28864,
-    28896,
-    28928,
-    28960,
-    28992,
-    29024,
-    29056,
-    29088,
-    29120,
-    29152,
-    29184,
-    29216,
-    29248,
-    29280,
-    29312,
-    29344,
-    29376,
-    29408,
-    29440,
-    29472,
-    29504,
-    29536,
-    29568,
-    29600,
-    29632,
-    29664,
-    29696,
-    29728,
-    29760,
-    29792,
-    29824,
-    29856,
-    29888,
-    29920,
-    29952,
-    29984,
-    30016,
-    30048,
-    30080,
-    30112,
-    30144,
-    30176,
-    30208,
-    30240,
-    30272,
-    30304,
-    30336,
-    30368,
-    30400,
-    30432,
-    30464,
-    30496,
-    30528,
-    30560,
-    30592,
-    30624,
-    30656,
-    30688,
-    30720,
-    30752,
-    30784,
-    30816,
-    30848,
-    30880,
-    30912,
-    30944,
-    30976,
-    31008,
-    31040,
-    31072,
-    31104,
-    31136,
-    31168,
-    31200,
-    31232,
-    31264,
-    31296,
-    31328,
-    31360,
-    31392,
-    31424,
-    31456,
-    31488,
-    31520,
-    31552,
-    31584,
-    31616,
-    31648,
-    31680,
-    31712,
-    31744,
-    31776,
-    31808,
-    31840,
-    31872,
-    31904,
-    31936,
-    31968,
-    32000,
-    32032,
-    32064,
-    32096,
-    32128,
-    32160,
-    32192,
-    32224,
-    32256,
-    32288,
-    32320,
-    32352,
-    32384,
-    32416,
-    32448,
-    32480,
-    32512,
-    32544,
-    32576,
-    32608,
-    32640,
-    32672,
-    32704,
-    32736,
-    32768,
-    32800,
-    32832,
-    32864,
-    32896,
-    32928,
-    32960,
-    32992,
-    33024,
-    33056,
-    33088,
-    33120,
-    33152,
-    33184,
-    33216,
-    33248,
-    33280,
-    33312,
-    33344,
-    33376,
-    33408,
-    33440,
-    33472,
-    33504,
-    33536,
-    33568,
-    33600,
-    33632,
-    33664,
-    33696,
-    33728,
-    33760,
-    33792,
-    33824,
-    33856,
-    33888,
-    33920,
-    33952,
-    33984,
-    34016,
-    34048,
-    34080,
-    34112,
-    34144,
-    34176,
-    34208,
-    34240,
-    34272,
-    34304,
-    34336,
-    34368,
-    34400,
-    34432,
-    34464,
-    34496,
-    34528,
-    34560,
-    34592,
-    34624,
-    34656,
-    34688,
-    34720,
-    34752,
-    34784,
-    34816,
-    34848,
-    34880,
-    34912,
-    34944,
-    34976,
-    35008,
-    35040,
-    35072,
-    35104,
-    35136,
-    35168,
-    35200,
-    35232,
-    35264,
-    35296,
-    35328,
-    35360,
-    35392,
-    35424,
-    35456,
-    35488,
-    35520,
-    35552,
-    35584,
-    35616,
-    35648,
-    35680,
-    35712,
-    35744,
-    35776,
-    35808,
-    35840,
-    35872,
-    35904,
-    35936,
-    35968,
-    36000,
-    36032,
-    36064,
-    36096,
-    36128,
-    36160,
-    36192,
-    36224,
-    36256,
-    36288,
-    36320,
-    36352,
-    36384,
-    36416,
-    36448,
-    36480,
-    36512,
-    36544,
-    36576,
-    36608,
-    36640,
-    36672,
-    36704,
-    36736,
-    36768,
-    36800,
-    36832,
-    36864,
-    36896,
-    36928,
-    36960,
-    36992,
-    37024,
-    37056,
-    37088,
-    37120,
-    37152,
-    37184,
-    37216,
-    37248,
-    37280,
-    37312,
-    37344,
-    37376,
-    37408,
-    37440,
-    37472,
-    37504,
-    37536,
-    37568,
-    37600,
-    37632,
-    37664,
-    37696,
-    37728,
-    37760,
-    37792,
-    37824,
-    37856,
-    37888,
-    37920,
-    37952,
-    37984,
-    38016,
-    38048,
-    38080,
-    38112,
-    38144,
-    38176,
-    38208,
-    38240,
-    38272,
-    38304,
-    38336,
-    38368,
-    38400,
-    38432,
-    38464,
-    38496,
-    38528,
-    38560,
-    38592,
-    38624,
-    38656,
-    38688,
-    38720,
-    38752,
-    38784,
-    38816,
-    38848,
-    38880,
-    38912,
-    38944,
-    38976,
-    39008,
-    39040,
-    39072,
-    39104,
-    39136,
-    39168,
-    39200,
-    39232,
-    39264,
-    39296,
-    39328,
-    39360,
-    39392,
-    39424,
-    39456,
-    39488,
-    39520,
-    39552,
-    39584,
-    39616,
-    39648,
-    39680,
-    39712,
-    39744,
-    39776,
-    39808,
-    39840,
-    39872,
-    39904,
-    39936,
-    39968,
-    40000,
-    40032,
-    40064,
-    40096,
-    40128,
-    40160,
-    40192,
-    40224,
-    40256,
-    40288,
-    40320,
-    40352,
-    40384,
-    40416,
-    40448,
-    40480,
-    40512,
-    40544,
-    40576,
-    40608,
-    40640,
-    40672,
-    40704,
-    40736,
-    40768,
-    40800,
-    40832,
-    40864,
-    40896,
-    40928,
-    40960,
-    40992,
-    41024,
-    41056,
-    41088,
-    41120,
-    41152,
-    41184,
-    41216,
-    41248,
-    41280,
-    41312,
-    41344,
-    41376,
-    41408,
-    41440,
-    41472,
-    41504,
-    41536,
-    41568,
-    41600,
-    41632,
-    41664,
-    41696,
-    41728,
-    41760,
-    41792,
-    41824,
-    41856,
-    41888,
-    41920,
-    41952,
-    41984,
-    42016,
-    42048,
-    42080,
-    42112,
-    42144,
-    42176,
-    42208,
-    42240,
-    42272,
-    42304,
-    42336,
-    42368,
-    42400,
-    42432,
-    42464,
-    42496,
-    42528,
-    42560,
-    42592,
-    42624,
-    42656,
-    42688,
-    42720,
-    42752,
-    42784,
-    42816,
-    42848,
-    42880,
-    42912,
-    42944,
-    42976,
-    43008,
-    43040,
-    43072,
-    43104,
-    43136,
-    43168,
-    43200,
-    43232,
-    43264,
-    43296,
-    43328,
-    43360,
-    43392,
-    43424,
-    43456,
-    43488,
-    43520,
-    43552,
-    43584,
-    43616,
-    43648,
-    43680,
-    43712,
-    43744,
-    43776,
-    43808,
-    43840,
-    43872,
-    43904,
-    43936,
-    43968,
-    44000,
-    44032,
-    44064,
-    44096,
-    44128,
-    44160,
-    44192,
-    44224,
-    44256,
-    44288,
-    44320,
-    44352,
-    44384,
-    44416,
-    44448,
-    44480,
-    44512,
-    44544,
-    44576,
-    44608,
-    44640,
-    44672,
-    44704,
-    44736,
-    44768,
-    44800,
-    44832,
-    44864,
-    44896,
-    44928,
-    44960,
-    44992,
-    45024,
-    45056,
-    45088,
-    45120,
-    45152,
-    45184,
-    45216,
-    45248,
-    45280,
-    45312,
-    45344,
-    45376,
-    45408,
-    45440,
-    45472,
-    45504,
-    45536,
-    45568,
-    45600,
-    45632,
-    45664,
-    45696,
-    45728,
-    45760,
-    45792,
-    45824,
-    45856,
-    45888,
-    45920,
-    45952,
-    45984,
-    46016,
-    46048,
-    46080,
-    46112,
-    46144,
-    46176,
-    46208,
-    46240,
-    46272,
-    46304,
-    46336,
-    46368,
-    46400,
-    46432,
-    46464,
-    46496,
-    46528,
-    46560,
-    46592,
-    46624,
-    46656,
-    46688,
-    46720,
-    46752,
-    46784,
-    46816,
-    46848,
-    46880,
-    46912,
-    46944,
-    46976,
-    47008,
-    47040,
-    47072,
-    47104,
-    47136,
-    47168,
-    47200,
-    47232,
-    47264,
-    47296,
-    47328,
-    47360,
-    47392,
-    47424,
-    47456,
-    47488,
-    47520,
-    47552,
-    47584,
-    47616,
-    47648,
-    47680,
-    47712,
-    47744,
-    47776,
-    47808,
-    47840,
-    47872,
-    47904,
-    47936,
-    47968,
-    48000,
-    48032,
-    48064,
-    48096,
-    48128,
-    48160,
-    48192,
-    48224,
-    48256,
-    48288,
-    48320,
-    48352,
-    48384,
-    48416,
-    48448,
-    48480,
-    48512,
-    48544,
-    48576,
-    48608,
-    48640,
-    48672,
-    48704,
-    48736,
-    48768,
-    48800,
-    48832,
-    48864,
-    48896,
-    48928,
-    48960,
-    48992,
-    49024,
-    49056,
-    49088,
-    49120,
-    49152,
-    49184,
-    49216,
-    49248,
-    49280,
-    49312,
-    49344,
-    49376,
-    49408,
-    49440,
-    49472,
-    49504,
-    49536,
-    49568,
-    49600,
-    49632,
-    49664,
-    49696,
-    49728,
-    49760,
-    49792,
-    49824,
-    49856,
-    49888,
-    49920,
-    49952,
-    49984,
-    50016,
-    50048,
-    50080,
-    50112,
-    50144,
-    50176,
-    50208,
-    50240,
-    50272,
-    50304,
-    50336,
-    50368,
-    50400,
-    50432,
-    50464,
-    50496,
-    50528,
-    50560,
-    50592,
-    50624,
-    50656,
-    50688,
-    50720,
-    50752,
-    50784,
-    50816,
-    50848,
-    50880,
-    50912,
-    50944,
-    50976,
-    51008,
-    51040,
-    51072,
-    51104,
-    51136,
-    51168,
-    51200,
-    51232,
-    51264,
-    51296,
-    51328,
-    51360,
-    51392,
-    51424,
-    51456,
-    51488,
-    51520,
-    51552,
-    51584,
-    51616,
-    51648,
-    51680,
-    51712,
-    51744,
-    51776,
-    51808,
-    51840,
-    51872,
-    51904,
-    51936,
-    51968,
-    52000,
-    52032,
-    52064,
-    52096,
-    52128,
-    52160,
-    52192,
-    52224,
-    52256,
-    52288,
-    52320,
-    52352,
-    52384,
-    52416,
-    52448,
-    52480,
-    52512,
-    52544,
-    52576,
-    52608,
-    52640,
-    52672,
-    52704,
-    52736,
-    52768,
-    52800,
-    52832,
-    52864,
-    52896,
-    52928,
-    52960,
-    52992,
-    53024,
-    53056,
-    53088,
-    53120,
-    53152,
-    53184,
-    53216,
-    53248,
-    53280,
-    53312,
-    53344,
-    53376,
-    53408,
-    53440,
-    53472,
-    53504,
-    53536,
-    53568,
-    53600,
-    53632,
-    53664,
-    53696,
-    53728,
-    53760,
-    53792,
-    53824,
-    53856,
-    53888,
-    53920,
-    53952,
-    53984,
-    54016,
-    54048,
-    54080,
-    54112,
-    54144,
-    54176,
-    54208,
-    54240,
-    54272,
-    54304,
-    54336,
-    54368,
-    54400,
-    54432,
-    54464,
-    54496,
-    54528,
-    54560,
-    54592,
-    54624,
-    54656,
-    54688,
-    54720,
-    54752,
-    54784,
-    54816,
-    54848,
-    54880,
-    54912,
-    54944,
-    54976,
-    55008,
-    55040,
-    55072,
-    55104,
-    55136,
-    55168,
-    55200,
-    55232,
-    55264,
-    55296,
-    55328,
-    55360,
-    55392,
-    55424,
-    55456,
-    55488,
-    55520,
-    55552,
-    55584,
-    55616,
-    55648,
-    55680,
-    55712,
-    55744,
-    55776,
-    55808,
-    55840,
-    55872,
-    55904,
-    55936,
-    55968,
-    56000,
-    56032,
-    56064,
-    56096,
-    56128,
-    56160,
-    56192,
-    56224,
-    56256,
-    56288,
-    56320,
-    56352,
-    56384,
-    56416,
-    56448,
-    56480,
-    56512,
-    56544,
-    56576,
-    56608,
-    56640,
-    56672,
-    56704,
-    56736,
-    56768,
-    56800,
-    56832,
-    56864,
-    56896,
-    56928,
-    56960,
-    56992,
-    57024,
-    57056,
-    57088,
-    57120,
-    57152,
-    57184,
-    57216,
-    57248,
-    57280,
-    57312,
-    57344,
-    57376,
-    57408,
-    57440,
-    57472,
-    57504,
-    57536,
-    57568,
-    57600,
-    57632,
-    57664,
-    57696,
-    57728,
-    57760,
-    57792,
-    57824,
-    57856,
-    57888,
-    57920,
-    57952,
-    57984,
-    58016,
-    58048,
-    58080,
-    58112,
-    58144,
-    58176,
-    58208,
-    58240,
-    58272,
-    58304,
-    58336,
-    58368,
-    58400,
-    58432,
-    58464,
-    58496,
-    58528,
-    58560,
-    58592,
-    58624,
-    58656,
-    58688,
-    58720,
-    58752,
-    58784,
-    58816,
-    58848,
-    58880,
-    58912,
-    58944,
-    58976,
-    59008,
-    59040,
-    59072,
-    59104,
-    59136,
-    59168,
-    59200,
-    59232,
-    59264,
-    59296,
-    59328,
-    59360,
-    59392,
-    59424,
-    59456,
-    59488,
-    59520,
-    59552,
-    59584,
-    59616,
-    59648,
-    59680,
-    59712,
-    59744,
-    59776,
-    59808,
-    59840,
-    59872,
-    59904,
-    59936,
-    59968,
-    60000,
-    60032,
-    60064,
-    60096,
-    60128,
-    60160,
-    60192,
-    60224,
-    60256,
-    60288,
-    60320,
-    60352,
-    60384,
-    60416,
-    60448,
-    60480,
-    60512,
-    60544,
-    60576,
-    60608,
-    60640,
-    60672,
-    60704,
-    60736,
-    60768,
-    60800,
-    60832,
-    60864,
-    60896,
-    60928,
-    60960,
-    60992,
-    61024,
-    61056,
-    61088,
-    61120,
-    61152,
-    61184,
-    61216,
-    61248,
-    61280,
-    61312,
-    61344,
-    61376,
-    61408,
-    61440,
-    61472,
-    61504,
-    61536,
-    61568,
-    61600,
-    61632,
-    61664,
-    61696,
-    61728,
-    61760,
-    61792,
-    61824,
-    61856,
-    61888,
-    61920,
-    61952,
-    61984,
-    62016,
-    62048,
-    62080,
-    62112,
-    62144,
-    62176,
-    62208,
-    62240,
-    62272,
-    62304,
-    62336,
-    62368,
-    62400,
-    62432,
-    62464,
-    62496,
-    62528,
-    62560,
-    62592,
-    62624,
-    62656,
-    62688,
-    62720,
-    62752,
-    62784,
-    62816,
-    62848,
-    62880,
-    62912,
-    62944,
-    62976,
-    63008,
-    63040,
-    63072,
-    63104,
-    63136,
-    63168,
-    63200,
-    63232,
-    63264,
-    63296,
-    63328,
-    63360,
-    63392,
-    63424,
-    63456,
-    63488,
-    63520,
-    63552,
-    63584,
-    63616,
-    63648,
-    63680,
-    63712,
-    63744,
-    63776,
-    63808,
-    63840,
-    63872,
-    63904,
-    63936,
-    63968,
-    64000,
-    64032,
-    64064,
-    64096,
-    64128,
-    64160,
-    64192,
-    64224,
-    64256,
-    64288,
-    64320,
-    64352,
-    64384,
-    64416,
-    64448,
-    64480,
-    64512,
-    64544,
-    64576,
-    64608,
-    64640,
-    64672,
-    64704,
-    64736,
-    64768,
-    64800,
-    64832,
-    64864,
-    64896,
-    64928,
-    64960,
-    64992,
-    65024,
-    65056,
-    65088,
-    65120,
-    65152,
-    65184,
-    65216,
-    65248,
-    65280,
-    65312,
-    65344,
-    65376,
-    65408,
-    65440,
-    65472,
-    65504,
-    65536,
-    65568,
-    65600,
-    65632,
-    65664,
-    65696,
-    65728,
-    65760,
-    65792,
-    65824,
-    65856,
-    65888,
-    65920,
-    65952,
-    65984,
-    66016,
-    66048,
-    66080,
-    66112,
-    66144,
-    66176,
-    66208,
-    66240,
-    66272,
-    66304,
-    66336,
-    66368,
-    66400,
-    66432,
-    66464,
-    66496,
-    66528,
-    66560,
-    66592,
-    66624,
-    66656,
-    66688,
-    66720,
-    66752,
-    66784,
-    66816,
-    66848,
-    66880,
-    66912,
-    66944,
-    66976,
-    67008,
-    67040,
-    67072,
-    67104,
-    67136,
-    67168,
-    67200,
-    67232,
-    67264,
-    67296,
-    67328,
-    67360,
-    67392,
-    67424,
-    67456,
-    67488,
-    67520,
-    67552,
-    67584,
-    67616,
-    67648,
-    67680,
-    67712,
-    67744,
-    67776,
-    67808,
-    67840,
-    67872,
-    67904,
-    67936,
-    67968,
-    68000,
-    68032,
-    68064,
-    68096,
-    68128,
-    68160,
-    68192,
-    68224,
-    68256,
-    68288,
-    68320,
-    68352,
-    68384,
-    68416,
-    68448,
-    68480,
-    68512,
-    68544,
-    68576,
-    68608,
-    68640,
-    68672,
-    68704,
-    68736,
-    68768,
-    68800,
-    68832,
-    68864,
-    68896,
-    68928,
-    68960,
-    68992,
-    69024,
-    69056,
-    69088,
-    69120,
-    69152,
-    69184,
-    69216,
-    69248,
-    69280,
-    69312,
-    69344,
-    69376,
-    69408,
-    69440,
-    69472,
-    69504,
-    69536,
-    69568,
-    69600,
-    69632,
-    69664,
-    69696,
-    69728,
-    69760,
-    69792,
-    69824,
-    69856,
-    69888,
-    69920,
-    69952,
-    69984,
-    70016,
-    70048,
-    70080,
-    70112,
-    70144,
-    70176,
-    70208,
-    70240,
-    70272,
-    70304,
-    70336,
-    70368,
-    70400,
-    70432,
-    70464,
-    70496,
-    70528,
-    70560,
-    70592,
-    70624,
-    70656,
-    70688,
-    70720,
-    70752,
-    70784,
-    70816,
-    70848,
-    70880,
-    70912,
-    70944,
-    70976,
-    71008,
-    71040,
-    71072,
-    71104,
-    71136,
-    71168,
-    71200,
-    71232,
-    71264,
-    71296,
-    71328,
-    71360,
-    71392,
-    71424,
-    71456,
-    71488,
-    71520,
-    71552,
-    71584,
-    71616,
-    71648,
-    71680,
-    71712,
-    71744,
-    71776,
-    71808,
-    71840,
-    71872,
-    71904,
-    71936,
-    71968,
-    72000,
-    72032,
-    72064,
-    72096,
-    72128,
-    72160,
-    72192,
-    72224,
-    72256,
-    72288,
-    72320,
-    72352,
-    72384,
-    72416,
-    72448,
-    72480,
-    72512,
-    72544,
-    72576,
-    72608,
-    72640,
-    72672,
-    72704,
-    72736,
-    72768,
-    72800,
-    72832,
-    72864,
-    72896,
-    72928,
-    72960,
-    72992,
-    73024,
-    73056,
-    73088,
-    73120,
-    73152,
-    73184,
-    73216,
-    73248,
-    73280,
-    73312,
-    73344,
-    73376,
-    73408,
-    73440,
-    73472,
-    73504,
-    73536,
-    73568,
-    73600,
-    73632,
-    73664,
-    73696,
-    73728,
-    73760,
-    73792,
-    73824,
-    73856,
-    73888,
-    73920,
-    73952,
-    73984,
-    74016,
-    74048,
-    74080,
-    74112,
-    74144,
-    74176,
-    74208,
-    74240,
-    74272,
-    74304,
-    74336,
-    74368,
-    74400,
-    74432,
-    74464,
-    74496,
-    74528,
-    74560,
-    74592,
-    74624,
-    74656,
-    74688,
-    74720,
-    74752,
-    74784,
-    74816,
-    74848,
-    74880,
-    74912,
-    74944,
-    74976,
-    75008,
-    75040,
-    75072,
-    75104,
-    75136,
-    75168,
-    75200,
-    75232,
-    75264,
-    75296,
-    75328,
-    75360,
-    75392,
-    75424,
-    75456,
-    75488,
-    75520,
-    75552,
-    75584,
-    75616,
-    75648,
-    75680,
-    75712,
-    75744,
-    75776,
-    75808,
-    75840,
-    75872,
-    75904,
-    75936,
-    75968,
-    76000,
-    76032,
-    76064,
-    76096,
-    76128,
-    76160,
-    76192,
-    76224,
-    76256,
-    76288,
-    76320,
-    76352,
-    76384,
-    76416,
-    76448,
-    76480,
-    76512,
-    76544,
-    76576,
-    76608,
-    76640,
-    76672,
-    76704,
-    76736,
-    76768,
-    76800,
-    76832,
-    76864,
-    76896,
-    76928,
-    76960,
-    76992,
-    77024,
-    77056,
-    77088,
-    77120,
-    77152,
-    77184,
-    77216,
-    77248,
-    77280,
-    77312,
-    77344,
-    77376,
-    77408,
-    77440,
-    77472,
-    77504,
-    77536,
-    77568,
-    77600,
-    77632,
-    77664,
-    77696,
-    77728,
-    77760,
-    77792,
-    77824,
-    77856,
-    77888,
-    77920,
-    77952,
-    77984,
-    78016,
-    78048,
-    78080,
-    78112,
-    78144,
-    78176,
-    78208,
-    78240,
-    78272,
-    78304,
-    78336,
-    78368,
-    78400,
-    78432,
-    78464,
-    78496,
-    78528,
-    78560,
-    78592,
-    78624,
-    78656,
-    78688,
-    78720,
-    78752,
-    78784,
-    78816,
-    78848,
-    78880,
-    78912,
-    78944,
-    78976,
-    79008,
-    79040,
-    79072,
-    79104,
-    79136,
-    79168,
-    79200,
-    79232,
-    79264,
-    79296,
-    79328,
-    79360,
-    79392,
-    79424,
-    79456,
-    79488,
-    79520,
-    79552,
-    79584,
-    79616,
-    79648,
-    79680,
-    79712,
-    79744,
-    79776,
-    79808,
-    79840,
-    79872,
-    79904,
-    79936,
-    79968,
-    80000,
-    80032,
-    80064,
-    80096,
-    80128,
-    80160,
-    80192,
-    80224,
-    80256,
-    80288,
-    80320,
-    80352,
-    80384,
-    80416,
-    80448,
-    80480,
-    80512,
-    80544,
-    80576,
-    80608,
-    80640,
-    80672,
-    80704,
-    80736,
-    80768,
-    80800,
-    80832,
-    80864,
-    80896,
-    80928,
-    80960,
-    80992,
-    81024,
-    81056,
-    81088,
-    81120,
-    81152,
-    81184,
-    81216,
-    81248,
-    81280,
-    81312,
-    81344,
-    81376,
-    81408,
-    81440,
-    81472,
-    81504,
-    81536,
-    81568,
-    81600,
-    81632,
-    81664,
-    81696,
-    81728,
-    81760,
-    81792,
-    81824,
-    81856,
-    81888,
-    81920,
-    81952,
-    81984,
-    82016,
-    82048,
-    82080,
-    82112,
-    82144,
-    82176,
-    82208,
-    82240,
-    82272,
-    82304,
-    82336,
-    82368,
-    82400,
-    82432,
-    82464,
-    82496,
-    82528,
-    82560,
-    82592,
-    82624,
-    82656,
-    82688,
-    82720,
-    82752,
-    82784,
-    82816,
-    82848,
-    82880,
-    82912,
-    82944,
-    82976,
-    83008,
-    83040,
-    83072,
-    83104,
-    83136,
-    83168,
-    83200,
-    83232,
-    83264,
-    83296,
-    83328,
-    83360,
-    83392,
-    83424,
-    83456,
-    83488,
-    83520,
-    83552,
-    83584,
-    83616,
-    83648,
-    83680,
-    83712,
-    83744,
-    83776,
-    83808,
-    83840,
-    83872,
-    83904,
-    83936,
-    83968,
-    84000,
-    84032,
-    84064,
-    84096,
-    84128,
-    84160,
-    84192,
-    84224,
-    84256,
-    84288,
-    84320,
-    84352,
-    84384,
-    84416,
-    84448,
-    84480,
-    84512,
-    84544,
-    84576,
-    84608,
-    84640,
-    84672,
-    84704,
-    84736,
-    84768,
-    84800,
-    84832,
-    84864,
-    84896,
-    84928,
-    84960,
-    84992,
-    85024,
-    85056,
-    85088,
-    85120,
-    85152,
-    85184,
-    85216,
-    85248,
-    85280,
-    85312,
-    85344,
-    85376,
-    85408,
-    85440,
-    85472,
-    85504,
-    85536,
-    85568,
-    85600,
-    85632,
-    85664,
-    85696,
-    85728,
-    85760,
-    85792,
-    85824,
-    85856,
-    85888,
-    85920,
-    85952,
-    85984,
-    86016,
-    86048,
-    86080,
-    86112,
-    86144,
-    86176,
-    86208,
-    86240,
-    86272,
-    86304,
-    86336,
-    86368,
-    86400,
-    86432,
-    86464,
-    86496,
-    86528,
-    86560,
-    86592,
-    86624,
-    86656,
-    86688,
-    86720,
-    86752,
-    86784,
-    86816,
-    86848,
-    86880,
-    86912,
-    86944,
-    86976,
-    87008,
-    87040,
-    87072,
-    87104,
-    87136,
-    87168,
-    87200,
-    87232,
-    87264,
-    87296,
-    87328,
-    87360,
-    87392,
-    87424,
-    87456,
-    87488,
-    87520,
-    87552,
-    87584,
-    87616,
-    87648,
-    87680,
-    87712,
-    87744,
-    87776,
-    87808,
-    87840,
-    87872,
-    87904,
-    87936,
-    87968,
-    88000,
-    88032,
-    88064,
-    88096,
-    88128,
-    88160,
-    88192,
-    88224,
-    88256,
-    88288,
-    88320,
-    88352,
-    88384,
-    88416,
-    88448,
-    88480,
-    88512,
-    88544,
-    88576,
-    88608,
-    88640,
-    88672,
-    88704,
-    88736,
-    88768,
-    88800,
-    88832,
-    88864,
-    88896,
-    88928,
-    88960,
-    88992,
-    89024,
-    89056,
-    89088,
-    89120,
-    89152,
-    89184,
-    89216,
-    89248,
-    89280,
-    89312,
-    89344,
-    89376,
-    89408,
-    89440,
-    89472,
-    89504,
-    89536,
-    89568,
-    89600,
-    89632,
-    89664,
-    89696,
-    89728,
-    89760,
-    89792,
-    89824,
-    89856,
-    89888,
-    89920,
-    89952,
-    89984,
-    90016,
-    90048,
-    90080,
-    90112,
-    90144,
-    90176,
-    90208,
-    90240,
-    90272,
-    90304,
-    90336,
-    90368,
-    90400,
-    90432,
-    90464,
-    90496,
-    90528,
-    90560,
-    90592,
-    90624,
-    90656,
-    90688,
-    90720,
-    90752,
-    90784,
-    90816,
-    90848,
-    90880,
-    90912,
-    90944,
-    90976,
-    91008,
-    91040,
-    91072,
-    91104,
-    91136,
-    91168,
-    91200,
-    91232,
-    91264,
-    91296,
-    91328,
-    91360,
-    91392,
-    91424,
-    91456,
-    91488,
-    91520,
-    91552,
-    91584,
-    91616,
-    91648,
-    91680,
-    91712,
-    91744,
-    91776,
-    91808,
-    91840,
-    91872,
-    91904,
-    91936,
-    91968,
-    92000,
-    92032,
-    92064,
-    92096,
-    92128,
-    92160,
-    92192,
-    92224,
-    92256,
-    92288,
-    92320,
-    92352,
-    92384,
-    92416,
-    92448,
-    92480,
-    92512,
-    92544,
-    92576,
-    92608,
-    92640,
-    92672,
-    92704,
-    92736,
-    92768,
-    92800,
-    92832,
-    92864,
-    92896,
-    92928,
-    92960,
-    92992,
-    93024,
-    93056,
-    93088,
-    93120,
-    93152,
-    93184,
-    93216,
-    93248,
-    93280,
-    93312,
-    93344,
-    93376,
-    93408,
-    93440,
-    93472,
-    93504,
-    93536,
-    93568,
-    93600,
-    93632,
-    93664,
-    93696,
-    93728,
-    93760,
-    93792,
-    93824,
-    93856,
-    93888,
-    93920,
-    93952,
-    93984,
-    94016,
-    94048,
-    94080,
-    94112,
-    94144,
-    94176,
-    94208,
-    94240,
-    94272,
-    94304,
-    94336,
-    94368,
-    94400,
-    94432,
-    94464,
-    94496,
-    94528,
-    94560,
-    94592,
-    94624,
-    94656,
-    94688,
-    94720,
-    94752,
-    94784,
-    94816,
-    94848,
-    94880,
-    94912,
-    94944,
-    94976,
-    95008,
-    95040,
-    95072,
-    95104,
-    95136,
-    95168,
-    95200,
-    95232,
-    95264,
-    95296,
-    95328,
-    95360,
-    95392,
-    95424,
-    95456,
-    95488,
-    95520,
-    95552,
-    95584,
-    95616,
-    95648,
-    95680,
-    95712,
-    95744,
-    95776,
-    95808,
-    95840,
-    95872,
-    95904,
-    95936,
-    95968,
-    96000,
-    96032,
-    96064,
-    96096,
-    96128,
-    96160,
-    96192,
-    96224,
-    96256,
-    96288,
-    96320,
-    96352,
-    96384,
-    96416,
-    96448,
-    96480,
-    96512,
-    96544,
-    96576,
-    96608,
-    96640,
-    96672,
-    96704,
-    96736,
-    96768,
-    96800,
-    96832,
-    96864,
-    96896,
-    96928,
-    96960,
-    96992,
-    97024,
-    97056,
-    97088,
-    97120,
-    97152,
-    97184,
-    97216,
-    97248,
-    97280,
-    97312,
-    97344,
-    97376,
-    97408,
-    97440,
-    97472,
-    97504,
-    97536,
-    97568,
-    97600,
-    97632,
-    97664,
-    97696,
-    97728,
-    97760,
-    97792,
-    97824,
-    97856,
-    97888,
-    97920,
-    97952,
-    97984,
-    98016,
-    98048,
-    98080,
-    98112,
-    98144,
-    98176,
-    98208,
-    98240,
-    98272,
-    98304,
-    98336,
-    98368,
-    98400,
-    98432,
-    98464,
-    98496,
-    98528,
-    98560,
-    98592,
-    98624,
-    98656,
-    98688,
-    98720,
-    98752,
-    98784,
-    98816,
-    98848,
-    98880,
-    98912,
-    98944,
-    98976,
-    99008,
-    99040,
-    99072,
-    99104,
-    99136,
-    99168,
-    99200,
-    99232,
-    99264,
-    99296,
-    99328,
-    99360,
-    99392,
-    99424,
-    99456,
-    99488,
-    99520,
-    99552,
-    99584,
-    99616,
-    99648,
-    99680,
-    99712,
-    99744,
-    99776,
-    99808,
-    99840,
-    99872,
-    99904,
-    99936,
-    99968,
-    100000,
-    100032,
-    100064,
-    100096,
-    100128,
-    100160,
-    100192,
-    100224,
-    100256,
-    100288,
-    100320,
-    100352,
-    100384,
-    100416,
-    100448,
-    100480,
-    100512,
-    100544,
-    100576,
-    100608,
-    100640,
-    100672,
-    100704,
-    100736,
-    100768,
-    100800,
-    100832,
-    100864,
-    100896,
-    100928,
-    100960,
-    100992,
-    101024,
-    101056,
-    101088,
-    101120,
-    101152,
-    101184,
-    101216,
-    101248,
-    101280,
-    101312,
-    101344,
-    101376,
-    101408,
-    101440,
-    101472,
-    101504,
-    101536,
-    101568,
-    101600,
-    101632,
-    101664,
-    101696,
-    101728,
-    101760,
-    101792,
-    101824,
-    101856,
-    101888,
-    101920,
-    101952,
-    101984,
-    102016,
-    102048,
-    102080,
-    102112,
-    102144,
-    102176,
-    102208,
-    102240,
-    102272,
-    102304,
-    102336,
-    102368,
-    102400,
-    102432,
-    102464,
-    102496,
-    102528,
-    102560,
-    102592,
-    102624,
-    102656,
-    102688,
-    102720,
-    102752,
-    102784,
-    102816,
-    102848,
-    102880,
-    102912,
-    102944,
-    102976,
-    103008,
-    103040,
-    103072,
-    103104,
-    103136,
-    103168,
-    103200,
-    103232,
-    103264,
-    103296,
-    103328,
-    103360,
-    103392,
-    103424,
-    103456,
-    103488,
-    103520,
-    103552,
-    103584,
-    103616,
-    103648,
-    103680,
-    103712,
-    103744,
-    103776,
-    103808,
-    103840,
-    103872,
-    103904,
-    103936,
-    103968,
-    104000,
-    104032,
-    104064,
-    104096,
-    104128,
-    104160,
-    104192,
-    104224,
-    104256,
-    104288,
-    104320,
-    104352,
-    104384,
-    104416,
-    104448,
-    104480,
-    104512,
-    104544,
-    104576,
-    104608,
-    104640,
-    104672,
-    104704,
-    104736,
-    104768,
-    104800,
-    104832,
-    104864,
-    104896,
-    104928,
-    104960,
-    104992,
-    105024,
-    105056,
-    105088,
-    105120,
-    105152,
-    105184,
-    105216,
-    105248,
-    105280,
-    105312,
-    105344,
-    105376,
-    105408,
-    105440,
-    105472,
-    105504,
-    105536,
-    105568,
-    105600,
-    105632,
-    105664,
-    105696,
-    105728,
-    105760,
-    105792,
-    105824,
-    105856,
-    105888,
-    105920,
-    105952,
-    105984,
-    106016,
-    106048,
-    106080,
-    106112,
-    106144,
-    106176,
-    106208,
-    106240,
-    106272,
-    106304,
-    106336,
-    106368,
-    106400,
-    106432,
-    106464,
-    106496,
-    106528,
-    106560,
-    106592,
-    106624,
-    106656,
-    106688,
-    106720,
-    106752,
-    106784,
-    106816,
-    106848,
-    106880,
-    106912,
-    106944,
-    106976,
-    107008,
-    107040,
-    107072,
-    107104,
-    107136,
-    107168,
-    107200,
-    107232,
-    107264,
-    107296,
-    107328,
-    107360,
-    107392,
-    107424,
-    107456,
-    107488,
-    107520,
-    107552,
-    107584,
-    107616,
-    107648,
-    107680,
-    107712,
-    107744,
-    107776,
-    107808,
-    107840,
-    107872,
-    107904,
-    107936,
-    107968,
-    108000,
-    108032,
-    108064,
-    108096,
-    108128,
-    108160,
-    108192,
-    108224,
-    108256,
-    108288,
-    108320,
-    108352,
-    108384,
-    108416,
-    108448,
-    108480,
-    108512,
-    108544,
-    108576,
-    108608,
-    108640,
-    108672,
-    108704,
-    108736,
-    108768,
-    108800,
-    108832,
-    108864,
-    108896,
-    108928,
-    108960,
-    108992,
-    109024,
-    109056,
-    109088,
-    109120,
-    109152,
-    109184,
-    109216,
-    109248,
-    109280,
-    109312,
-    109344,
-    109376,
-    109408,
-    109440,
-    109472,
-    109504,
-    109536,
-    109568,
-    109600,
-    109632,
-    109664,
-    109696,
-    109728,
-    109760,
-    109792,
-    109824,
-    109856,
-    109888,
-    109920,
-    109952,
-    109984,
-    110016,
-    110048,
-    110080,
-    110112,
-    110144,
-    110176,
-    110208,
-    110240,
-    110272,
-    110304,
-    110336,
-    110368,
-    110400,
-    110432,
-    110464,
-    110496,
-    110528,
-    110560,
-    110592,
-    110624,
-    110656,
-    110688,
-    110720,
-    110752,
-    110784,
-    110816,
-    110848,
-    110880,
-    110912,
-    110944,
-    110976,
-    111008,
-    111040,
-    111072,
-    111104,
-    111136,
-    111168,
-    111200,
-    111232,
-    111264,
-    111296,
-    111328,
-    111360,
-    111392,
-    111424,
-    111456,
-    111488,
-    111520,
-    111552,
-    111584,
-    111616,
-    111648,
-    111680,
-    111712,
-    111744,
-    111776,
-    111808,
-    111840,
-    111872,
-    111904,
-    111936,
-    111968,
-    112000,
-    112032,
-    112064,
-    112096,
-    112128,
-    112160,
-    112192,
-    112224,
-    112256,
-    112288,
-    112320,
-    112352,
-    112384,
-    112416,
-    112448,
-    112480,
-    112512,
-    112544,
-    112576,
-    112608,
-    112640,
-    112672,
-    112704,
-    112736,
-    112768,
-    112800,
-    112832,
-    112864,
-    112896,
-    112928,
-    112960,
-    112992,
-    113024,
-    113056,
-    113088,
-    113120,
-    113152,
-    113184,
-    113216,
-    113248,
-    113280,
-    113312,
-    113344,
-    113376,
-    113408,
-    113440,
-    113472,
-    113504,
-    113536,
-    113568,
-    113600,
-    113632,
-    113664,
-    113696,
-    113728,
-    113760,
-    113792,
-    113824,
-    113856,
-    113888,
-    113920,
-    113952,
-    113984,
-    114016,
-    114048,
-    114080,
-    114112,
-    114144,
-    114176,
-    114208,
-    114240,
-    114272,
-    114304,
-    114336,
-    114368,
-    114400,
-    114432,
-    114464,
-    114496,
-    114528,
-    114560,
-    114592,
-    114624,
-    114656,
-    114688,
-    114720,
-    114752,
-    114784,
-    114816,
-    114848,
-    114880,
-    114912,
-    114944,
-    114976,
-    115008,
-    115040,
-    115072,
-    115104,
-    115136,
-    115168,
-    115200,
-    115232,
-    115264,
-    115296,
-    115328,
-    115360,
-    115392,
-    115424,
-    115456,
-    115488,
-    115520,
-    115552,
-    115584,
-    115616,
-    115648,
-    115680,
-    115712,
-    115744,
-    115776,
-    115808,
-    115840,
-    115872,
-    115904,
-    115936,
-    115968,
-    116000,
-    116032,
-    116064,
-    116096,
-    116128,
-    116160,
-    116192,
-    116224,
-    116256,
-    116288,
-    116320,
-    116352,
-    116384,
-    116416,
-    116448,
-    116480,
-    116512,
-    116544,
-    116576,
-    116608,
-    116640,
-    116672,
-    116704,
-    116736,
-    116768,
-    116800,
-    116832,
-    116864,
-    116896,
-    116928,
-    116960,
-    116992,
-    117024,
-    117056,
-    117088,
-    117120,
-    117152,
-    117184,
-    117216,
-    117248,
-    117280,
-    117312,
-    117344,
-    117376,
-    117408,
-    117440,
-    117472,
-    117504,
-    117536,
-    117568,
-    117600,
-    117632,
-    117664,
-    117696,
-    117728,
-    117760,
-    117792,
-    117824,
-    117856,
-    117888,
-    117920,
-    117952,
-    117984,
-    118016,
-    118048,
-    118080,
-    118112,
-    118144,
-    118176,
-    118208,
-    118240,
-    118272,
-    118304,
-    118336,
-    118368,
-    118400,
-    118432,
-    118464,
-    118496,
-    118528,
-    118560,
-    118592,
-    118624,
-    118656,
-    118688,
-    118720,
-    118752,
-    118784,
-    118816,
-    118848,
-    118880,
-    118912,
-    118944,
-    118976,
-    119008,
-    119040,
-    119072,
-    119104,
-    119136,
-    119168,
-    119200,
-    119232,
-    119264,
-    119296,
-    119328,
-    119360,
-    119392,
-    119424,
-    119456,
-    119488,
-    119520,
-    119552,
-    119584,
-    119616,
-    119648,
-    119680,
-    119712,
-    119744,
-    119776,
-    119808,
-    119840,
-    119872,
-    119904,
-    119936,
-    119968,
-    120000,
-    120032,
-    120064,
-    120096,
-    120128,
-    120160,
-    120192,
-    120224,
-    120256,
-    120288,
-    120320,
-    120352,
-    120384,
-    120416,
-    120448,
-    120480,
-    120512,
-    120544,
-    120576,
-    120608,
-    120640,
-    120672,
-    120704,
-    120736,
-    120768,
-    120800,
-    120832,
-    120864,
-    120896,
-    120928,
-    120960,
-    120992,
-    121024,
-    121056,
-    121088,
-    121120,
-    121152,
-    121184,
-    121216,
-    121248,
-    121280,
-    121312,
-    121344,
-    121376,
-    121408,
-    121440,
-    121472,
-    121504,
-    121536,
-    121568,
-    121600,
-    121632,
-    121664,
-    121696,
-    121728,
-    121760,
-    121792,
-    121824,
-    121856,
-    121888,
-    121920,
-    121952,
-    121984,
-    122016,
-    122048,
-    122080,
-    122112,
-    122144,
-    122176,
-    122208,
-    122240,
-    122272,
-    122304,
-    122336,
-    122368,
-    122400,
-    122432,
-    122464,
-    122496,
-    122528,
-    122560,
-    122592,
-    122624,
-    122656,
-    122688,
-    122720,
-    122752,
-    122784,
-    122816,
-    122848,
-    122880,
-    122912,
-    122944,
-    122976,
-    123008,
-    123040,
-    123072,
-    123104,
-    123136,
-    123168,
-    123200,
-    123232,
-    123264,
-    123296,
-    123328,
-    123360,
-    123392,
-    123424,
-    123456,
-    123488,
-    123520,
-    123552,
-    123584,
-    123616,
-    123648,
-    123680,
-    123712,
-    123744,
-    123776,
-    123808,
-    123840,
-    123872,
-    123904,
-    123936,
-    123968,
-    124000,
-    124032,
-    124064,
-    124096,
-    124128,
-    124160,
-    124192,
-    124224,
-    124256,
-    124288,
-    124320,
-    124352,
-    124384,
-    124416,
-    124448,
-    124480,
-    124512,
-    124544,
-    124576,
-    124608,
-    124640,
-    124672,
-    124704,
-    124736,
-    124768,
-    124800,
-    124832,
-    124864,
-    124896,
-    124928,
-    124960,
-    124992,
-    125024,
-    125056,
-    125088,
-    125120,
-    125152,
-    125184,
-    125216,
-    125248,
-    125280,
-    125312,
-    125344,
-    125376,
-    125408,
-    125440,
-    125472,
-    125504,
-    125536,
-    125568,
-    125600,
-    125632,
-    125664,
-    125696,
-    125728,
-    125760,
-    125792,
-    125824,
-    125856,
-    125888,
-    125920,
-    125952,
-    125984,
-    126016,
-    126048,
-    126080,
-    126112,
-    126144,
-    126176,
-    126208,
-    126240,
-    126272,
-    126304,
-    126336,
-    126368,
-    126400,
-    126432,
-    126464,
-    126496,
-    126528,
-    126560,
-    126592,
-    126624,
-    126656,
-    126688,
-    126720,
-    126752,
-    126784,
-    126816,
-    126848,
-    126880,
-    126912,
-    126944,
-    126976,
-    127008,
-    127040,
-    127072,
-    127104,
-    127136,
-    127168,
-    127200,
-    127232,
-    127264,
-    127296,
-    127328,
-    127360,
-    127392,
-    127424,
-    127456,
-    127488,
-    127520,
-    127552,
-    127584,
-    127616,
-    127648,
-    127680,
-    127712,
-    127744,
-    127776,
-    127808,
-    127840,
-    127872,
-    127904,
-    127936,
-    127968,
-    128000,
-    128032,
-    128064,
-    128096,
-    128128,
-    128160,
-    128192,
-    128224,
-    128256,
-    128288,
-    128320,
-    128352,
-    128384,
-    128416,
-    128448,
-    128480,
-    128512,
-    128544,
-    128576,
-    128608,
-    128640,
-    128672,
-    128704,
-    128736,
-    128768,
-    128800,
-    128832,
-    128864,
-    128896,
-    128928,
-    128960,
-    128992,
-    129024,
-    129056,
-    129088,
-    129120,
-    129152,
-    129184,
-    129216,
-    129248,
-    129280,
-    129312,
-    129344,
-    129376,
-    129408,
-    129440,
-    129472,
-    129504,
-    129536,
-    129568,
-    129600,
-    129632,
-    129664,
-    129696,
-    129728,
-    129760,
-    129792,
-    129824,
-    129856,
-    129888,
-    129920,
-    129952,
-    129984,
-    130016,
-    130048,
-    130080,
-    130112,
-    130144,
-    130176,
-    130208,
-    130240,
-    130272,
-    130304,
-    130336,
-    130368,
-    130400,
-    130432,
-    130464,
-    130496,
-    130528,
-    130560,
-    130592,
-    130624,
-    130656,
-    130688,
-    130720,
-    130752,
-    130784,
-    130816,
-    130848,
-    130880,
-    130912,
-    130944,
-    130976,
-    131008,
-    131040,
-    131072,
-    131104,
-    131136,
-    131168,
-    131200,
-    131232,
-    131264,
-    131296,
-    131328,
-    131360,
-    131392,
-    131424,
-    131456,
-    131488,
-    131520,
-    131552,
-    131584,
-    131616,
-    131648,
-    131680,
-    131712,
-    131744,
-    131776,
-    131808,
-    131840,
-    131872,
-    131904,
-    131936,
-    131968,
-    132000,
-    132032,
-    132064,
-    132096,
-    132128,
-    132160,
-    132192,
-    132224,
-    132256,
-    132288,
-    132320,
-    132352,
-    132384,
-    132416,
-    132448,
-    132480,
-    132512,
-    132544,
-    132576,
-    132608,
-    132640,
-    132672,
-    132704,
-    132736,
-    132768,
-    132800,
-    132832,
-    132864,
-    132896,
-    132928,
-    132960,
-    132992,
-    133024,
-    133056,
-    133088,
-    133120,
-    133152,
-    133184,
-    133216,
-    133248,
-    133280,
-    133312,
-    133344,
-    133376,
-    133408,
-    133440,
-    133472,
-    133504,
-    133536,
-    133568,
-    133600,
-    133632,
-    133664,
-    133696,
-    133728,
-    133760,
-    133792,
-    133824,
-    133856,
-    133888,
-    133920,
-    133952,
-    133984,
-    134016,
-    134048,
-    134080,
-    134112,
-    134144,
-    134176,
-    134208,
-    134240,
-    134272,
-    134304,
-    134336,
-    134368,
-    134400,
-    134432,
-    134464,
-    134496,
-    134528,
-    134560,
-    134592,
-    134624,
-    134656,
-    134688,
-    134720,
-    134752,
-    134784,
-    134816,
-    134848,
-    134880,
-    134912,
-    134944,
-    134976,
-    135008,
-    135040,
-    135072,
-    135104,
-    135136,
-    135168,
-    135200,
-    135232,
-    135264,
-    135296,
-    135328,
-    135360,
-    135392,
-    135424,
-    135456,
-    135488,
-    135520,
-    135552,
-    135584,
-    135616,
-    135648,
-    135680,
-    135712,
-    135744,
-    135776,
-    135808,
-    135840,
-    135872,
-    135904,
-    135936,
-    135968,
-    136000,
-    136032,
-    136064,
-    136096,
-    136128,
-    136160,
-    136192,
-    136224,
-    136256,
-    136288,
-    136320,
-    136352,
-    136384,
-    136416,
-    136448,
-    136480,
-    136512,
-    136544,
-    136576,
-    136608,
-    136640,
-    136672,
-    136704,
-    136736,
-    136768,
-    136800,
-    136832,
-    136864,
-    136896,
-    136928,
-    136960,
-    136992,
-    137024,
-    137056,
-    137088,
-    137120,
-    137152,
-    137184,
-    137216,
-    137248,
-    137280,
-    137312,
-    137344,
-    137376,
-    137408,
-    137440,
-    137472,
-    137504,
-    137536,
-    137568,
-    137600,
-    137632,
-    137664,
-    137696,
-    137728,
-    137760,
-    137792,
-    137824,
-    137856,
-    137888,
-    137920,
-    137952,
-    137984,
-    138016,
-    138048,
-    138080,
-    138112,
-    138144,
-    138176,
-    138208,
-    138240,
-    138272,
-    138304,
-    138336,
-    138368,
-    138400,
-    138432,
-    138464,
-    138496,
-    138528,
-    138560,
-    138592,
-    138624,
-    138656,
-    138688,
-    138720,
-    138752,
-    138784,
-    138816,
-    138848,
-    138880,
-    138912,
-    138944,
-    138976,
-    139008,
-    139040,
-    139072,
-    139104,
-    139136,
-    139168,
-    139200,
-    139232,
-    139264,
-    139296,
-    139328,
-    139360,
-    139392,
-    139424,
-    139456,
-    139488,
-    139520,
-    139552,
-    139584,
-    139616,
-    139648,
-    139680,
-    139712,
-    139744,
-    139776,
-    139808,
-    139840,
-    139872,
-    139904,
-    139936,
-    139968,
-    140000,
-    140032,
-    140064,
-    140096,
-    140128,
-    140160,
-    140192,
-    140224,
-    140256,
-    140288,
-    140320,
-    140352,
-    140384,
-    140416,
-    140448,
-    140480,
-    140512,
-    140544,
-    140576,
-    140608,
-    140640,
-    140672,
-    140704,
-    140736,
-    140768,
-    140800,
-    140832,
-    140864,
-    140896,
-    140928,
-    140960,
-    140992,
-    141024,
-    141056,
-    141088,
-    141120,
-    141152,
-    141184,
-    141216,
-    141248,
-    141280,
-    141312,
-    141344,
-    141376,
-    141408,
-    141440,
-    141472,
-    141504,
-    141536,
-    141568,
-    141600,
-    141632,
-    141664,
-    141696,
-    141728,
-    141760,
-    141792,
-    141824,
-    141856,
-    141888,
-    141920,
-    141952,
-    141984,
-    142016,
-    142048,
-    142080,
-    142112,
-    142144,
-    142176,
-    142208,
-    142240,
-    142272,
-    142304,
-    142336,
-    142368,
-    142400,
-    142432,
-    142464,
-    142496,
-    142528,
-    142560,
-    142592,
-    142624,
-    142656,
-    142688,
-    142720,
-    142752,
-    142784,
-    142816,
-    142848,
-    142880,
-    142912,
-    142944,
-    142976,
-    143008,
-    143040,
-    143072,
-    143104,
-    143136,
-    143168,
-    143200,
-    143232,
-    143264,
-    143296,
-    143328,
-    143360,
-    143392,
-    143424,
-    143456,
-    143488,
-    143520,
-    143552,
-    143584,
-    143616,
-    143648,
-    143680,
-    143712,
-    143744,
-    143776,
-    143808,
-    143840,
-    143872,
-    143904,
-    143936,
-    143968,
-    144000,
-    144032,
-    144064,
-    144096,
-    144128,
-    144160,
-    144192,
-    144224,
-    144256,
-    144288,
-    144320,
-    144352,
-    144384,
-    144416,
-    144448,
-    144480,
-    144512,
-    144544,
-    144576,
-    144608,
-    144640,
-    144672,
-    144704,
-    144736,
-    144768,
-    144800,
-    144832,
-    144864,
-    144896,
-    144928,
-    144960,
-    144992,
-    145024,
-    145056,
-    145088,
-    145120,
-    145152,
-    145184,
-    145216,
-    145248,
-    145280,
-    145312,
-    145344,
-    145376,
-    145408,
-    145440,
-    145472,
-    145504,
-    145536,
-    145568,
-    145600,
-    145632,
-    145664,
-    145696,
-    145728,
-    145760,
-    145792,
-    145824,
-    145856,
-    145888,
-    145920,
-    145952,
-    145984,
-    146016,
-    146048,
-    146080,
-    146112,
-    146144,
-    146176,
-    146208,
-    146240,
-    146272,
-    146304,
-    146336,
-    146368,
-    146400,
-    146432,
-    146464,
-    146496,
-    146528,
-    146560,
-    146592,
-    146624,
-    146656,
-    146688,
-    146720,
-    146752,
-    146784,
-    146816,
-    146848,
-    146880,
-    146912,
-    146944,
-    146976,
-    147008,
-    147040,
-    147072,
-    147104,
-    147136,
-    147168,
-    147200,
-    147232,
-    147264,
-    147296,
-    147328,
-    147360,
-    147392,
-    147424,
-    147456,
-    147488,
-    147520,
-    147552,
-    147584,
-    147616,
-    147648,
-    147680,
-    147712,
-    147744,
-    147776,
-    147808,
-    147840,
-    147872,
-    147904,
-    147936,
-    147968,
-    148000,
-    148032,
-    148064,
-    148096,
-    148128,
-    148160,
-    148192,
-    148224,
-    148256,
-    148288,
-    148320,
-    148352,
-    148384,
-    148416,
-    148448,
-    148480,
-    148512,
-    148544,
-    148576,
-    148608,
-    148640,
-    148672,
-    148704,
-    148736,
-    148768,
-    148800,
-    148832,
-    148864,
-    148896,
-    148928,
-    148960,
-    148992,
-    149024,
-    149056,
-    149088,
-    149120,
-    149152,
-    149184,
-    149216,
-    149248,
-    149280,
-    149312,
-    149344,
-    149376,
-    149408,
-    149440,
-    149472,
-    149504,
-    149536,
-    149568,
-    149600,
-    149632,
-    149664,
-    149696,
-    149728,
-    149760,
-    149792,
-    149824,
-    149856,
-    149888,
-    149920,
-    149952,
-    149984,
-    150016,
-    150048,
-    150080,
-    150112,
-    150144,
-    150176,
-    150208,
-    150240,
-    150272,
-    150304,
-    150336,
-    150368,
-    150400,
-    150432,
-    150464,
-    150496,
-    150528,
-    150560,
-    150592,
-    150624,
-    150656,
-    150688,
-    150720,
-    150752,
-    150784,
-    150816,
-    150848,
-    150880,
-    150912,
-    150944,
-    150976,
-    151008,
-    151040,
-    151072,
-    151104,
-    151136,
-    151168,
-    151200,
-    151232,
-    151264,
-    151296,
-    151328,
-    151360,
-    151392,
-    151424,
-    151456,
-    151488,
-    151520,
-    151552,
-    151584,
-    151616,
-    151648,
-    151680,
-    151712,
-    151744,
-    151776,
-    151808,
-    151840,
-    151872,
-    151904,
-    151936,
-    151968,
-    152000,
-    152032,
-    152064,
-    152096,
-    152128,
-    152160,
-    152192,
-    152224,
-    152256,
-    152288,
-    152320,
-    152352,
-    152384,
-    152416,
-    152448,
-    152480,
-    152512,
-    152544,
-    152576,
-    152608,
-    152640,
-    152672,
-    152704,
-    152736,
-    152768,
-    152800,
-    152832,
-    152864,
-    152896,
-    152928,
-    152960,
-    152992,
-    153024,
-    153056,
-    153088,
-    153120,
-    153152,
-    153184,
-    153216,
-    153248,
-    153280,
-    153312,
-    153344,
-    153376,
-    153408,
-    153440,
-    153472,
-    153504,
-    153536,
-    153568,
-    153600,
-    153632,
-    153664,
-    153696,
-    153728,
-    153760,
-    153792,
-    153824,
-    153856,
-    153888,
-    153920,
-    153952,
-    153984,
-    154016,
-    154048,
-    154080,
-    154112,
-    154144,
-    154176,
-    154208,
-    154240,
-    154272,
-    154304,
-    154336,
-    154368,
-    154400,
-    154432,
-    154464,
-    154496,
-    154528,
-    154560,
-    154592,
-    154624,
-    154656,
-    154688,
-    154720,
-    154752,
-    154784,
-    154816,
-    154848,
-    154880,
-    154912,
-    154944,
-    154976,
-    155008,
-    155040,
-    155072,
-    155104,
-    155136,
-    155168,
-    155200,
-    155232,
-    155264,
-    155296,
-    155328,
-    155360,
-    155392,
-    155424,
-    155456,
-    155488,
-    155520,
-    155552,
-    155584,
-    155616,
-    155648,
-    155680,
-    155712,
-    155744,
-    155776,
-    155808,
-    155840,
-    155872,
-    155904,
-    155936,
-    155968,
-    156000,
-    156032,
-    156064,
-    156096,
-    156128,
-    156160,
-    156192,
-    156224,
-    156256,
-    156288,
-    156320,
-    156352,
-    156384,
-    156416,
-    156448,
-    156480,
-    156512,
-    156544,
-    156576,
-    156608,
-    156640,
-    156672,
-    156704,
-    156736,
-    156768,
-    156800,
-    156832,
-    156864,
-    156896,
-    156928,
-    156960,
-    156992,
-    157024,
-    157056,
-    157088,
-    157120,
-    157152,
-    157184,
-    157216,
-    157248,
-    157280,
-    157312,
-    157344,
-    157376,
-    157408,
-    157440,
-    157472,
-    157504,
-    157536,
-    157568,
-    157600,
-    157632,
-    157664,
-    157696,
-    157728,
-    157760,
-    157792,
-    157824,
-    157856,
-    157888,
-    157920,
-    157952,
-    157984,
-    158016,
-    158048,
-    158080,
-    158112,
-    158144,
-    158176,
-    158208,
-    158240,
-    158272,
-    158304,
-    158336,
-    158368,
-    158400,
-    158432,
-    158464,
-    158496,
-    158528,
-    158560,
-    158592,
-    158624,
-    158656,
-    158688,
-    158720,
-    158752,
-    158784,
-    158816,
-    158848,
-    158880,
-    158912,
-    158944,
-    158976,
-    159008,
-    159040,
-    159072,
-    159104,
-    159136,
-    159168,
-    159200,
-    159232,
-    159264,
-    159296,
-    159328,
-    159360,
-    159392,
-    159424,
-    159456,
-    159488,
-    159520,
-    159552,
-    159584,
-    159616,
-    159648,
-    159680,
-    159712,
-    159744,
-    159776,
-    159808,
-    159840,
-    159872,
-    159904,
-    159936,
-    159968,
-    160000,
-    160032,
-    160064,
-    160096,
-    160128,
-    160160,
-    160192,
-    160224,
-    160256,
-    160288,
-    160320,
-    160352,
-    160384,
-    160416,
-    160448,
-    160480,
-    160512,
-    160544,
-    160576,
-    160608,
-    160640,
-    160672,
-    160704,
-    160736,
-    160768,
-    160800,
-    160832,
-    160864,
-    160896,
-    160928,
-    160960,
-    160992,
-    161024,
-    161056,
-    161088,
-    161120,
-    161152,
-    161184,
-    161216,
-    161248,
-    161280,
-    161312,
-    161344,
-    161376,
-    161408,
-    161440,
-    161472,
-    161504,
-    161536,
-    161568,
-    161600,
-    161632,
-    161664,
-    161696,
-    161728,
-    161760,
-    161792,
-    161824,
-    161856,
-    161888,
-    161920,
-    161952,
-    161984,
-    162016,
-    162048,
-    162080,
-    162112,
-    162144,
-    162176,
-    162208,
-    162240,
-    162272,
-    162304,
-    162336,
-    162368,
-    162400,
-    162432,
-    162464,
-    162496,
-    162528,
-    162560,
-    162592,
-    162624,
-    162656,
-    162688,
-    162720,
-    162752,
-    162784,
-    162816,
-    162848,
-    162880,
-    162912,
-    162944,
-    162976,
-    163008,
-    163040,
-    163072,
-    163104,
-    163136,
-    163168,
-    163200,
-    163232,
-    163264,
-    163296,
-    163328,
-    163360,
-    163392,
-    163424,
-    163456,
-    163488,
-    163520,
-    163552,
-    163584,
-    163616,
-    163648,
-    163680,
-    163712,
-    163744,
-    163776,
-    163808,
-    163840,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwidemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwidemipiraw_Sensor.c
deleted file mode 100755
index fc46ffb8..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwidemipiraw_Sensor.c
+++ /dev/null
@@ -1,3708 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 kkthuwidemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "kkthuwidemipiraw_Sensor.h"
-
-#define KKTHUWIDE_EEPROM_READ_ID	0xA1
-#define KKTHUWIDE_EEPROM_WRITE_ID   0xA0
-#define KKTHUWIDE_MAX_OFFSET		0x4000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "kkthuwide_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x4000
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x468
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x600
-#define AF_CODE_SIZE 6
-#define GET_SENSOR_ID_RETRY_CNT    5
-
-static bool module_flag = FALSE;
-static bool bNeedSetNormalMode = FALSE;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-#define MAX_BURST_LEN  2048
-static u8 * msg_buf = NULL;
-
-static int group_hold_frame_count = 0;
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int kkthuwide_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void kkthuwide_set_shutter_convert(struct subdrv_ctx *ctx, u32 shutter);
-static int kkthuwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int get_sensor_temperature(void *arg);
-static void get_sensor_cali(void* arg);
-static void set_sensor_cali(void *arg);
-static int kkthuwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain);
-static int kkthuwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_set_multi_shutter_frame_length_in_lut(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void kkthuwide_set_multi_shutter_frame_length_in_lut_convert(struct subdrv_ctx *ctx,
-	u64 *shutters, u16 exp_cnt, u32 frame_length, u32 *frame_length_in_lut);
-static void kkthuwide_write_frame_length_in_lut(struct subdrv_ctx *ctx, u32 fll, u32 *fll_in_lut);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int kkthuwide_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int kkthuwide_i2c_burst_wr_regs_u16(struct subdrv_ctx *ctx, u16 * list, u32 len);
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx,
-		u16 addr, u16 *list, u32 len);
-static void kkthuwide_lens_pos_writeback(struct subdrv_ctx *ctx);
-static int kkthuwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void kkthuwide_set_max_framerate_in_lut_by_scenario(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id, u32 framerate);
-/* STRUCT */
-
-static kal_uint16 g_af_code_macro    = 0;
-static kal_uint16 g_af_code_infinity = 0;
-
-static struct eeprom_map_info kkthuwide_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x000F, 0x0010, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x51F0, 0x0000, 0x0000, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x2780, 0x2D89, 0x2D8A, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x31C0, 0x3859, 0x385A, CALI_DATA_MASTER_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, kkthuwide_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, kkthuwide_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, kkthuwide_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, kkthuwide_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, kkthuwide_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, kkthuwide_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, kkthuwide_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, kkthuwide_streaming_resume},
-	{SENSOR_FEATURE_SET_ESHUTTER, kkthuwide_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, kkthuwide_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_GAIN, kkthuwide_set_gain},
-	{SENSOR_FEATURE_SET_HDR_SHUTTER, kkthuwide_set_hdr_tri_shutter2},
-	{SENSOR_FEATURE_SET_HDR_TRI_SHUTTER, kkthuwide_set_hdr_tri_shutter3},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, kkthuwide_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, kkthuwide_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_SET_AWB_GAIN, kkthuwide_set_awb_gain},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME_IN_LUT, kkthuwide_set_multi_shutter_frame_length_in_lut},
-	{SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO, kkthuwide_set_max_framerate_by_scenario},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01AB010A,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA0,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 384}, {0, 0},
-		/*     */
-		{0, 384}, {0, 384}, {0, 0}, {0, 0}, {0, 0},
-		/*  */
-		{0, 0}, {416, 312},
-	},
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 384}, {0, 0}, {0, 0}, {208, 156}, {96, 72},
-		/*     */
-		{0, 192}, {0, 192}, {0, 0}, {0, 192}, {0, 0},
-	},
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 384}, {0, 0}, {0, 0}, {3280, 2460}, {3168, 3276},
-		/*      */
-		{0, 0}, {0, 384}, {0, 384}, {0, 0}, {2048, 1536}, {2048, 1536},
-	},
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 8,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info = {
-	.gain_ratio = 1000,
-	.OB_pedestal = 64,
-	.saturation_level = 1023,
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_12bit = {
-	.gain_ratio = 4000,
-	.OB_pedestal = 256,
-	.saturation_level = 4095,
-};
-
-static u32 kkthuwide_dcg_ratio_table_10bit[] = {4000};
-static u32 kkthuwide_dcg_ratio_table_12bit[] = {4000};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 8192x6144 Fullsize bayer mode 6*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-/* 8192x6144 Fullsize QBC mode 7*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-/* 1632X1224 24fps subsample */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1224,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 1632,
-			.vsize = 306,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 1856x1392 24fps subsample*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1856,
-			.vsize = 1392,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 1856,
-			.vsize = 348,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 4096x2304@30fps DSG sensor merge raw12 */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2C,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 4096x3072 60fps binning*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 4096x3072 30fps, DAG sensor merge 12bit */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2C,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_4096x3072_30fps_3056Msps izoom */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_Bypass_4096x3072_30fps_3056Msps QBC*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{ /*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = kkthuwide_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthuwide_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthuwide_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{  /*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = kkthuwide_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{  /*05_OceanDX4_09_JN5_Fdsum_4K_4096x2304_30fps_3056Msps*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = kkthuwide_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_normal_video_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = kkthuwide_seamless_vid,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthuwide_seamless_vid),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608 ,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 08_OceanDX4_09_JN5_Fdsum_4K_4096x2304_60fps_3056Msps */
-		.frame_desc = frame_desc_hs_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_hs_vid),
-		.mode_setting_table = kkthuwide_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {73},
-	},
-	{ /*12_OceanDX4_13_0_JN5_A2A2_FHD_2048x1152_240.4fps_1992Msps*/
-		.frame_desc = frame_desc_slim_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_slim_vid),
-		.mode_setting_table = kkthuwide_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 3072,
-		.framelength = 1246,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 796800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {87},
-	},
-	{ /* 04_OceanDX4_05_JN5_Fdsum_12.5Mp_AEB_4096x3072_60fps_3056Msps */
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = kkthuwide_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom1_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthuwide_seamless_custom1,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthuwide_seamless_custom1),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204 * 2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFF,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFF,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 3,
-		.csi_param = {79},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 80,
-	},
-	{  /* 8192x6144 Fullsize bayer mode 6*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = kkthuwide_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthuwide_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthuwide_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9600,
-		.framelength = 6346,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {79},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{  /* 8192x6144 Fullsize QBC mode 7*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = kkthuwide_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = kkthuwide_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthuwide_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9600,
-		.framelength = 6346,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {79},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gb,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{ /* 1632X1224 24fps subsample */
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = kkthuwide_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 8848,
-		.framelength = 3464, // 4328
-		.max_framerate = 300,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 832,
-			.y0_offset = 624,
-			.w0_size = 6528,
-			.h0_size = 4896,
-			.scale_w = 1632,
-			.scale_h = 1224,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1224,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1224,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {74},
-	},
-	{ /* 1856x1392 24fps subsample*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = kkthuwide_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom5_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 8844,
-		.framelength = 3466, // 4320
-		.max_framerate = 300,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 1120,
-			.y1_offset = 840,
-			.w1_size = 1856,
-			.h1_size = 1392,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1856,
-			.h2_tg_size = 1392,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {84},
-	},
-	{ /* 06_OceanDX4_10_0_JN5_Fdsum_DSG_4096x2304_30fps_3056Msps sensor merge 12bit*/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = kkthuwide_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom6_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_Gb,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 9568,
-		.framelength = 3204,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_LCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = kkthuwide_dcg_ratio_table_12bit,
-			.dcg_gain_table_size = sizeof(kkthuwide_dcg_ratio_table_12bit),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 20,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{  /* 07_OceanDX4_10_0_JN5_Fdsum_DSG_split_4096x2304_30fps_3056Msps AP merge*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = kkthuwide_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom7_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = kkthuwide_seamless_custom7,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(kkthuwide_seamless_custom7),
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 9568,
-		.framelength = 3204,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.saturation_info = &imgsensor_saturation_info,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_LCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = kkthuwide_dcg_ratio_table_10bit,
-			.dcg_gain_table_size = sizeof(kkthuwide_dcg_ratio_table_10bit),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 20,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 4096x3072 60fps binning*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = kkthuwide_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 4096x3072 30fps, DAG sensor merge 12bit */
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = kkthuwide_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_Gb,
-		.pclk = 920000000,
-		.linelength = 9568,
-		.framelength = 3204,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,  // temp setting no pd
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_LCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = kkthuwide_dcg_ratio_table_12bit,
-			.dcg_gain_table_size = sizeof(kkthuwide_dcg_ratio_table_12bit),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 20,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 14_OceanDX4_03_JN5_Full_12.5Mp_4096x3072_30fps_3056Msps izoom */
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = kkthuwide_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom10_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1536,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {87},
-	},
-	{  /* 14_OceanDX4_03_JN5_Full_12.5Mp_Bypass_4096x3072_30fps_3056Msps QBC*/
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = kkthuwide_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(kkthuwide_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1536,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gb,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KKTHUWIDE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0000, 0x0001},
-	.i2c_addr_table = {0x5a, 0xff},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_16,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_HV_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_Gb,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 160,
-	.ana_gain_type = 2, //0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC
-	.ana_gain_step = 2,
-	.ana_gain_table = kkthuwide_ana_gain_table,
-	.ana_gain_table_size = sizeof(kkthuwide_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max = 0xffff * 256,
-	.exposure_step = 1,
-	.exposure_margin = 24, /*tentative*/
-	.frame_length_max = 0xffff,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 1616100,
-	.line_interleave_num = 1,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_DCG|HDR_SUPPORT_LBMF,
-	.saturation_info = &imgsensor_saturation_info,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure ={
-			{0x0202, 0x0203}, //Short exposure
-			{0x0202, 0x0203},
-			{0x0226, 0x0227}, //Long exposure
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x0704,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, //Short Gain
-			{0x0204, 0x0205},
-			{0x0206, 0x0207}, //Long Gain
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E14, 0x0E15},  /* LUT_A_FRM_LENGTH_LINES */
-			{0x0E20, 0x0E21},  /* LUT_B_FRM_LENGTH_LINES */
-	},
-	.reg_addr_temp_en = PARAM_UNDEFINED,
-	.reg_addr_temp_read = 0x0020,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_exposure_in_lut = {
-			{0x0E10, 0x0E11}, //LUT_A_COARSE_INTEG_TIME
-			{0x0E1C, 0x0E1D}, //LUT_B_COARSE_INTEG_TIME
-	},
-
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E12, 0x0E13}, //LUT_A_ANA_GAIN_GLOBAL
-			{0x0E1E, 0x0E1F}, //LUT_B_ANA_GAIN_GLOBAL
-	},
-	// .init_setting_table = kkthuwide_sensor_init_setting,
-	// .init_setting_len =  ARRAY_SIZE(kkthuwide_sensor_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0x350174bc,
-
-	.oplus_notify_chg_flag = false,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 2000},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_AVDD, {2204000, 2204000}, 1000},
-	{HW_ID_DVDD, {1000000, 1000000}, 0},
-	{HW_ID_AFVDD, {2800000, 2800000}, 0},
-	{HW_ID_RST, {1}, 2000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 10000},
-};
-
-const struct subdrv_entry kkthuwide_mipi_raw_entry = {
-	.name = "kkthuwide_mipi_raw",
-	.id = KKTHUWIDE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x50)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 80;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void kkthuwide_set_dummy(struct subdrv_ctx *ctx)
-{
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF)
-		kkthuwide_write_frame_length_in_lut(ctx, ctx->frame_length, ctx->frame_length_in_lut);
-	else
-		write_frame_length(ctx, ctx->frame_length);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-
-	commit_i2c_buffer(ctx);
-}
-
-static void kkthuwide_set_max_framerate(struct subdrv_ctx *ctx, UINT16 framerate,
-			kal_bool min_framelength_en)
-{
-
-	kal_uint32 frame_length = ctx->frame_length;
-
-	DRV_LOG(ctx, "framerate = %d, min framelength should enable %d\n",
-		framerate, min_framelength_en);
-
-	frame_length = ctx->pclk / framerate * 10 / ctx->line_length;
-
-	if (frame_length >= ctx->min_frame_length)
-		ctx->frame_length = frame_length;
-	else
-		ctx->frame_length = ctx->min_frame_length;
-
-	ctx->dummy_line =
-		ctx->frame_length - ctx->min_frame_length;
-
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-
-		ctx->dummy_line =
-			ctx->frame_length - ctx->min_frame_length;
-	}
-	if (min_framelength_en)
-		ctx->min_frame_length = ctx->frame_length;
-
-	kkthuwide_set_dummy(ctx);
-}
-
-static void kkthuwide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u32 *shutter, u32 frame_length, bool auto_extend_en)
-{
-	kal_uint16 realtime_fps = 0;
-	kal_int32 dummy_line = 0;
-	u32 l_shutter = 0;
-	u16 l_shift = 0;
-	u32 fll = 0;
-
-	ctx->exposure[0] = *shutter;
-
-	/* Change frame time */
-	if (frame_length > 1)
-		dummy_line = frame_length - ctx->frame_length;
-
-	ctx->frame_length = ctx->frame_length + dummy_line;
-
-	if (ctx->exposure[0] > ctx->frame_length - ctx->s_ctx.exposure_margin)
-		ctx->frame_length = ctx->exposure[0] + ctx->s_ctx.exposure_margin;
-
-	if (ctx->frame_length > ctx->max_frame_length)
-		ctx->frame_length = ctx->max_frame_length;
-
-	ctx->exposure[0] = (ctx->exposure[0] < ctx->s_ctx.exposure_min)
-			? ctx->s_ctx.exposure_min : ctx->exposure[0];
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps > 592 && realtime_fps <= 607) {
-			kkthuwide_set_max_framerate(ctx, 592, 0);
-		} else if (realtime_fps > 296 && realtime_fps <= 305) {
-			kkthuwide_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps > 246 && realtime_fps <= 253) {
-			kkthuwide_set_max_framerate(ctx, 246, 0);
-		} else if (realtime_fps > 236 && realtime_fps <= 243) {
-			kkthuwide_set_max_framerate(ctx, 236, 0);
-		} else if (realtime_fps > 146 && realtime_fps <= 153) {
-			kkthuwide_set_max_framerate(ctx, 146, 0);
-		} else {
-			/* Extend frame length */
-			subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		}
-	} else {
-		/* Extend frame length */
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-	}
-
-	if (ctx->exposure[0] >= 0xFFF0) {  // need to modify line_length & PCLK
-		bNeedSetNormalMode = TRUE;
-
-		if (ctx->exposure[0] > ctx->s_ctx.exposure_max) {
-			DRV_LOG(ctx, "shutter(%d) > exposure_max(%d), set shutter = exposure_max\n",
-				ctx->exposure[0], ctx->s_ctx.exposure_max);
-			ctx->exposure[0] = ctx->s_ctx.exposure_max;
-		}
-
-		for (l_shift = 1; l_shift <= 10; l_shift++) {
-			l_shutter = ((ctx->exposure[0] - 1) >> l_shift) + 1;
-			if (l_shutter
-				< (ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin))
-				break;
-		}
-
-		fll = l_shutter + 0x0002;  // 1st framelength
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, fll & 0xFFFF);  // Framelength
-		subdrv_i2c_wr_u16(ctx, 0x0202, l_shutter & 0xFFFF);  //shutter
-		subdrv_i2c_wr_u16(ctx, 0x0702, l_shift << 8);
-		subdrv_i2c_wr_u16(ctx, 0x0704, l_shift << 8);
-		DRV_LOG(ctx, "set long time exposure shutter(%d), frame_length(%d) l_shutter(%d) l_shift(%d)\n",
-			ctx->exposure[0], fll, l_shutter, l_shift);
-	} else {
-		if (bNeedSetNormalMode) {
-			DRV_LOG(ctx, "exit long shutter\n");
-			subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-			subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-			bNeedSetNormalMode = FALSE;
-		}
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		subdrv_i2c_wr_u16(ctx, 0x0202, ctx->exposure[0]);
-	}
-
-	DRV_LOG(ctx, "Exit! shutter =%d, framelength =%d/%d, dummy_line=%d, auto_extend=%d\n",
-		ctx->exposure[0], ctx->frame_length, frame_length, dummy_line, subdrv_i2c_rd_u16(ctx, 0x0350));
-}	/* set_shutter_frame_length */
-
-static int kkthuwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "shutter:%u, frame_length:%u\n", (u32)(*para), (u32) (*(para + 1)));
-	kkthuwide_lens_pos_writeback(ctx);
-	kkthuwide_set_shutter_frame_length_convert(ctx, (u32 *)para, (u32) (*(para + 1)), (u16) (*(para + 2)));
-	return 0;
-}
-
-static void kkthuwide_write_shutter(struct subdrv_ctx *ctx)
-{
-	kal_uint16 realtime_fps = 0;
-
-	u32 l_shutter = 0;
-	u16 l_shift = 0;
-	u32 fll = 0;
-
-	DRV_LOG(ctx, "===brad shutter:%d\n", ctx->exposure[0]);
-
-	if (ctx->exposure[0] > ctx->min_frame_length - ctx->s_ctx.exposure_margin) {
-		ctx->frame_length = ctx->exposure[0] + ctx->s_ctx.exposure_margin;
-	} else {
-		ctx->frame_length = ctx->min_frame_length;
-	}
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-	}
-
-	if (ctx->exposure[0] < ctx->s_ctx.exposure_min) {
-		ctx->exposure[0] = ctx->s_ctx.exposure_min;
-	}
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps > 592 && realtime_fps <= 607) {
-			kkthuwide_set_max_framerate(ctx, 592, 0);
-		} else if (realtime_fps > 296 && realtime_fps <= 305) {
-			kkthuwide_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps > 246 && realtime_fps <= 253) {
-			kkthuwide_set_max_framerate(ctx, 246, 0);
-		} else if (realtime_fps > 236 && realtime_fps <= 243) {
-			kkthuwide_set_max_framerate(ctx, 236, 0);
-		} else if (realtime_fps > 146 && realtime_fps <= 153) {
-			kkthuwide_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-	}
-
-	if (ctx->exposure[0] >= 0xFFF0) {  // need to modify line_length & PCLK
-		bNeedSetNormalMode = TRUE;
-
-		if (ctx->exposure[0] >= ctx->s_ctx.exposure_max) {
-			DRV_LOG(ctx, "shutter(%d) > exposure_max(%d), set shutter = exposure_max\n",
-				ctx->exposure[0], ctx->s_ctx.exposure_max);
-			ctx->exposure[0] = ctx->s_ctx.exposure_max;
-		}
-
-		for (l_shift = 1; l_shift <= 10; l_shift++) {
-			l_shutter = ((ctx->exposure[0] - 1) >> l_shift) + 1;
-			if (l_shutter
-				< (ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin))
-				break;
-		}
-
-		fll = l_shutter + 0x0002;  // 1st framelength
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, fll & 0xFFFF);  // Framelength
-		subdrv_i2c_wr_u16(ctx, 0x0202, l_shutter & 0xFFFF);  //shutter
-		subdrv_i2c_wr_u16(ctx, 0x0702, l_shift << 8);
-		subdrv_i2c_wr_u16(ctx, 0x0704, l_shift << 8);
-		DRV_LOG(ctx, "set long time exposure shutter(%d), frame_length(%d) l_shutter(%d) l_shift(%d)\n",
-			ctx->exposure[0], fll, l_shutter, l_shift);
-	} else {
-		if (bNeedSetNormalMode) {
-			DRV_LOG(ctx, "exit long shutter\n");
-			subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-			subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-			bNeedSetNormalMode = FALSE;
-		}
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		subdrv_i2c_wr_u16(ctx, 0x0202, ctx->exposure[0]);
-	}
-	DRV_LOG(ctx, "shutter =%d, framelength =%d\n", ctx->exposure[0], ctx->frame_length);
-}	/*	write_shutter  */
-
-static void kkthuwide_set_shutter_convert(struct subdrv_ctx *ctx, u32 shutter)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", shutter);
-	ctx->exposure[0] = shutter;
-
-	kkthuwide_write_shutter(ctx);
-}
-
-static int kkthuwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32* feature_data = (u32*)para;
-	u32 shutter = *feature_data;
-
-	DRV_LOG(ctx, "set_shutter shutter =0x%x\n", shutter);
-	kkthuwide_set_shutter_convert(ctx, shutter);
-	return 0;
-}
-
-static int get_sof_timeout(struct adaptor_ctx *ctx, const struct sensor_mode *mode)
-{
-	int timeout = 0;
-	u64 tmp = 0;
-
-	if (ctx->shutter_for_timeout > 0) {
-		tmp = mode->linetime_in_ns * ctx->shutter_for_timeout;
-		timeout = tmp / 1000;
-	}
-	if (ctx->framelength_for_timeout > 0) {
-		tmp = mode->linetime_in_ns * ctx->framelength_for_timeout / 1000;
-		timeout = (timeout < tmp) ? tmp : timeout;
-	}
-	if (ctx->subctx.current_fps > 0) {
-		tmp = 10000000 / ctx->subctx.current_fps;
-		timeout = (timeout < tmp) ? tmp : timeout;
-	}
-	if (timeout < 0)
-		timeout = 0;
-
-	DRV_LOG(ctx,
-		"X! sof timeout value in us %llu|%llu|%llu|%d|%d\n",
-		ctx->shutter_for_timeout,
-		ctx->framelength_for_timeout,
-		mode->linetime_in_ns,
-		timeout,
-		ctx->subctx.current_fps > 0 ? 10000000 / ctx->subctx.current_fps : 0);
-
-	return timeout;
-}
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	u64 stream_ctrl_delay_timing = 0;
-	u64 stream_ctrl_delay = 0;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	DRV_LOG(ctx, "E! enable:%u\n", enable);
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (ctx->ixc_client.protocol)
-		sd = adaptor_ixc_get_clientdata(&ctx->ixc_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx) {
-		DRV_LOGE(ctx, "null _adaptor_ctx\n");
-		return;
-	}
-
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.aov_sensor_support && ctx->s_ctx.streaming_ctrl_imp) {
-		if (ctx->s_ctx.s_streaming_control != NULL)
-			ctx->s_ctx.s_streaming_control((void *) ctx, enable);
-		else
-			DRV_LOG_MUST(ctx,
-				"please implement drive own streaming control!(sid:%u)\n",
-				ctx->current_scenario_id);
-		ctx->is_streaming = enable;
-		DRV_LOG_MUST(ctx, "enable:%u\n", enable);
-		return;
-	}
-	if (ctx->s_ctx.aov_sensor_support && ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG_MUST(ctx,
-			"stream ctrl implement on scp side!(sid:%u)\n",
-			ctx->current_scenario_id);
-		ctx->is_streaming = enable;
-		DRV_LOG_MUST(ctx, "enable:%u\n", enable);
-		return;
-	}
-
-	if (enable) {
-		/* MCSS low power mode update para */
-		if (ctx->s_ctx.mcss_update_subdrv_para != NULL)
-			ctx->s_ctx.mcss_update_subdrv_para((void *) ctx, ctx->current_scenario_id);
-		/* MCSS register init */
-		if (ctx->s_ctx.mcss_init != NULL)
-			ctx->s_ctx.mcss_init((void *) ctx);
-
-		if (ctx->s_ctx.chk_s_off_sta) {
-			DRV_LOG(ctx, "check_stream_off before stream on");
-			check_stream_off(ctx);
-		}
-		kkthuwide_set_dummy(ctx);
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-		ctx->stream_ctrl_start_time = ktime_get_boottime_ns();
-		ctx->stream_ctrl_start_time_mono = ktime_get_ns();
-	} else {
-		ctx->stream_ctrl_end_time = ktime_get_boottime_ns();
-		if (ctx->s_ctx.custom_stream_ctrl_delay &&
-			ctx->stream_ctrl_start_time && ctx->stream_ctrl_end_time) {
-			stream_ctrl_delay_timing =
-				(ctx->stream_ctrl_end_time - ctx->stream_ctrl_start_time) / 1000000;
-			stream_ctrl_delay = (u64)get_sof_timeout(_adaptor_ctx, _adaptor_ctx->cur_mode) / 1000;
-			DRV_LOG_MUST(ctx,
-				"stream_ctrl_delay(sof)/stream_ctrl_delay_timing(end-start):%llums/%llums\n",
-				stream_ctrl_delay,
-				stream_ctrl_delay_timing);
-			if (stream_ctrl_delay_timing < stream_ctrl_delay)
-				mdelay(stream_ctrl_delay - stream_ctrl_delay_timing);
-		}
-		check_stream_on(ctx);
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-		if (ctx->s_ctx.reg_addr_fast_mode && ctx->fast_mode_on) {
-			ctx->fast_mode_on = FALSE;
-			ctx->ref_sof_cnt = 0;
-			DRV_LOG(ctx, "seamless_switch disabled.");
-			set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-			commit_i2c_buffer(ctx);
-		}
-		memset(ctx->exposure, 0, sizeof(ctx->exposure));
-		memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-		ctx->autoflicker_en = FALSE;
-		ctx->extend_frame_length_en = 0;
-		ctx->is_seamless = 0;
-		if (ctx->s_ctx.chk_s_off_end)
-			check_stream_off(ctx);
-		ctx->stream_ctrl_start_time = 0;
-		ctx->stream_ctrl_end_time = 0;
-		ctx->stream_ctrl_start_time_mono = 0;
-
-		ctx->mcss_init_info.enable_mcss = 0;
-		if (ctx->s_ctx.mcss_init != NULL)
-			ctx->s_ctx.mcss_init((void *) ctx); // disable MCSS
-	}
-	ctx->sof_no = 0;
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int kkthuwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-	if (*(u32 *)para)
-	kkthuwide_set_shutter_convert(ctx, *(u32 *)para);
-	streaming_ctrl(ctx, true);
-	return 0;
-}
-
-static int kkthuwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "streaming control para:%d\n", *para);
-	streaming_ctrl(ctx, false);
-	return 0;
-}
-
-static unsigned int read_kkthuwide_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != kkthuwide_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != kkthuwide_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = kkthuwide_eeprom_info[meta_id].start;
-	readsize = kkthuwide_eeprom_info[meta_id].size;
-
-	if (!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	DRV_LOGE(ctx, "moduleInfo: %s\n", oplus_eeprom_info.moduleInfo);
-	DRV_LOGE(ctx, "qrcodeInfo: %s\n", oplus_eeprom_info.qrcodeInfo);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-    kal_uint16 get_byte = 0;
-
-    adaptor_i2c_rd_u8(ctx->i2c_client, KKTHUWIDE_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-    return get_byte;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, KKTHUWIDE_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xE000;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KKTHUWIDE_EEPROM_WRITE_ID >> 1, reg, 0xA1);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KKTHUWIDE_EEPROM_WRITE_ID >> 1, reg, 0xA0);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    kal_uint32 checksum = 0;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        for(i = 0; i < pStereodata->dataLength; i++) {
-            checksum += pData[i];
-        }
-        pData[data_length] = 0x01;
-        pData[data_length + 1] = checksum % 255;
-        data_length = data_length + 2;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == KKTHUWIDE_SENSOR_ID) && (data_length - 2 == CALI_DATA_SLAVE_LENGTH)
-            && (data_base == KKTHUWIDE_STEREO_START_ADDR)) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-        } else if ((pStereodata->uSensorId == KKTHUWIDE_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == KKTHUWIDE_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, KKTHUWIDE_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, KKTHUWIDE_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, KKTHUWIDE_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, KKTHUWIDE_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, KKTHUWIDE_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, KKTHUWIDE_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, KKTHUWIDE_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, KKTHUWIDE_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("kkthuwide write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int kkthuwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        *len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-    return 0;
-}
-
-static int kkthuwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	if(*len > CALI_DATA_SLAVE_LENGTH) {
-		*len = CALI_DATA_SLAVE_LENGTH;
-	}
-	read_kkthuwide_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-			(BYTE *)para, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KKTHUWIDE_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static int kkthuwide_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int kkthuwide_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D82, awb_gain->ABS_GAIN_R * 2); //red 1024(1x)
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D86, awb_gain->ABS_GAIN_B * 2); //blue
-
-	LOG_INF("[test] ABS_GAIN_GR(%d) ABS_GAIN_R(%d) ABS_GAIN_B(%d) ABS_GAIN_GB(%d)", awb_gain->ABS_GAIN_GR, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B, awb_gain->ABS_GAIN_GB);
-	LOG_INF("[test] 0x0D82(red) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D82));
-	LOG_INF("[test] 0x0D84(green) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D84));
-	LOG_INF("[test] 0x0D86(blue) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D86));
-	return 0;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "jn1 read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "jn1 read_otp_info end\n");
-}
-
-static int kkthuwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int kkthuwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = GET_SENSOR_ID_RETRY_CNT;
-	static bool first_read = TRUE;
-	u32 eeprom_time_year = 0, eeprom_time_m_d = 0;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	DRV_LOGE(ctx, "+\n");
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOGE(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x38E5) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-
-					u8 af_code[AF_CODE_SIZE] = {0};
-					read_kkthuwide_eeprom_info(ctx, EEPROM_META_AF_CODE, (BYTE *)af_code, AF_CODE_SIZE);
-					g_af_code_macro = af_code[0] | ((u16)af_code[1] << 8);
-					g_af_code_infinity = af_code[2] | ((u16)af_code[3] << 8);
-
-					first_read = FALSE;
-
-					msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-					if(!msg_buf) {
-						LOG_INF("boot stage, malloc msg_buf error");
-					}
-				}
-				eeprom_time_year = (read_cmos_eeprom_8(ctx, 0x0004) << 8) | read_cmos_eeprom_8(ctx, 0x0005);
-				eeprom_time_m_d = (read_cmos_eeprom_8(ctx, 0x0003) << 8) | read_cmos_eeprom_8(ctx, 0x0002);
-				// sensor with eeprom data since 2024/01/27
-				module_flag = (eeprom_time_year > 0x1814) || ((eeprom_time_year == 0x1814) && (eeprom_time_m_d >= 0x11B));
-				return ERROR_NONE;
-			}
-			DRV_LOG(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = GET_SENSOR_ID_RETRY_CNT;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-	u32 module_info = 0;
-	u64 time_boot_begin = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-	subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-	module_info = subdrv_i2c_rd_u16(ctx, 0x0010);
-	DRV_LOG(ctx, "write init setting +");
-	if ((ctx->power_on_profile_en != NULL) && (*ctx->power_on_profile_en))
-		time_boot_begin = ktime_get_boottime_ns();
-
-
-	if ((module_info | 0x00FF) == 0x06FF){
-		subdrv_i2c_wr_regs_u16(ctx, kkthuwide_sensor_init_pre_setting_short, ARRAY_SIZE(kkthuwide_sensor_init_pre_setting_short));
-		mdelay(5);
-		kkthuwide_i2c_burst_wr_regs_u16(ctx, kkthuwide_sensor_init_setting_short, ARRAY_SIZE(kkthuwide_sensor_init_setting_short));
-		DRV_LOG(ctx, "write init setting (short)-");
-		ctx->s_ctx.init_setting_len = ARRAY_SIZE(kkthuwide_sensor_init_pre_setting_short) + ARRAY_SIZE(kkthuwide_sensor_init_setting_short);
-	} else {
-		subdrv_i2c_wr_regs_u16(ctx, kkthuwide_sensor_init_pre_setting, ARRAY_SIZE(kkthuwide_sensor_init_pre_setting));
-		mdelay(5);
-		kkthuwide_i2c_burst_wr_regs_u16(ctx, kkthuwide_sensor_init_setting, ARRAY_SIZE(kkthuwide_sensor_init_setting));
-		ctx->s_ctx.init_setting_len = ARRAY_SIZE(kkthuwide_sensor_init_pre_setting) + ARRAY_SIZE(kkthuwide_sensor_init_setting);
-		DRV_LOG(ctx, "write init setting (long)-");
-	}
-
-
-	if ((ctx->power_on_profile_en != NULL) && (*ctx->power_on_profile_en)) {
-		ctx->sensor_pw_on_profile.i2c_init_period = ktime_get_boottime_ns() - time_boot_begin - 5000;
-
-		ctx->sensor_pw_on_profile.i2c_init_table_len =
-			ARRAY_SIZE(kkthuwide_sensor_init_pre_setting) + ARRAY_SIZE(kkthuwide_sensor_init_setting);
-	}
-	DRV_LOG_MUST(ctx, "X: size:%u, time(us):%lld\n", ctx->sensor_pw_on_profile.i2c_init_table_len,
-		ctx->sensor_pw_on_profile.i2c_init_period);
-
-	if (ctx->s_ctx.temperature_support && ctx->s_ctx.reg_addr_temp_en)
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_temp_en, 0x01);
-	/* enable mirror or flip */
-	set_mirror_flip(ctx, ctx->mirror);
-
-	/* HW GGC*/
-	set_sensor_cali(ctx);
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	if (group_hold_frame_count < 2) {
-		DRV_LOGE(ctx, "group_hold_frame_count: %d", group_hold_frame_count);
-		group_hold_frame_count++;
-		return;
-	}
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return gain * 32 / BASEGAIN;
-}
-
-static int kkthuwide_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	group_hold_frame_count = 0;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		(ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF ||
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF))
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x4);
-
-	update_mode_info(ctx, scenario_id);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			kkthuwide_set_multi_shutter_frame_length_in_lut_convert(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			kkthuwide_set_shutter_convert(ctx, (u32)ae_ctrl->exposure.me_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				kkthuwide_set_gain_convert(ctx, ae_ctrl->gain.me_gain);
-			break;
-		default:
-			kkthuwide_set_shutter_convert(ctx, (u32)ae_ctrl->exposure.le_exposure);
-			kkthuwide_set_gain_convert(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	// ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int kkthuwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	if (mode) {
-		if (mode == 5) {
-			subdrv_i2c_wr_u16(ctx, 0x0600, 0x0001); /*black*/
-		} else {
-			subdrv_i2c_wr_u16(ctx, 0x0600, mode); /*100% Color bar*/
-		}
-	}
-	else if (ctx->test_pattern)
-		subdrv_i2c_wr_u16(ctx, 0x0600, 0x0000); /*No pattern*/
-
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-void get_sensor_cali(void* arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	// struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	//struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	return;
-}
-
-static int kkthuwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain) {
-	u16 rg_gain;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain, ctx->s_ctx.ana_gain_min);
-	gain = min(gain, ctx->s_ctx.ana_gain_max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-
-	return ERROR_NONE;
-}
-
-int kkthuwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-
-	kkthuwide_set_gain_convert(ctx, gain);
-
-	return 0;
-}
-
-static void kkthuwide_set_multi_shutter_frame_length(struct subdrv_ctx *ctx,
-		u64 *shutters, u16 exp_cnt,	u16 frame_length)
-{
-	int i = 0;
-	u32 fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[3] = {0};
-	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max(shutters[i], ctx->s_ctx.exposure_min);
-		shutters[i] = min(shutters[i], ctx->s_ctx.exposure_max);
-		if (cit_step)
-			shutters[i] = round_up(shutters[i], cit_step);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */
-	calc_fl[0] = shutters[0];
-	for (i = 1; i < last_exp_cnt; i++)
-		calc_fl[0] += ctx->exposure[i];
-	calc_fl[0] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (2) current se + current me + current le */
-	calc_fl[1] = shutters[0];
-	for (i = 1; i < exp_cnt; i++)
-		calc_fl[1] += shutters[i];
-	calc_fl[1] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (3) readout time cannot be overlapped */
-	calc_fl[2] =
-		(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-		ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-	if (last_exp_cnt == exp_cnt)
-		for (i = 1; i < exp_cnt; i++) {
-			readout_diff = ctx->exposure[i] - shutters[i];
-			calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-		}
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		ctx->frame_length = max(ctx->frame_length, calc_fl[i]);
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = shutters[i];
-	/* exit long exposure if necessary */
-	if ((ctx->exposure[0] < 0xFFF0) && bNeedSetNormalMode) {
-		DRV_LOG(ctx, "exit long shutter\n");
-		subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-		subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-		bNeedSetNormalMode = FALSE;
-	}
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		break;
-	case 2:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[2] = shutters[1] / exp_cnt;
-		break;
-	case 3:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[1] = shutters[1] / exp_cnt;
-		rg_shutters[2] = shutters[2] / exp_cnt;
-		break;
-	default:
-		break;
-	}
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[2],
-					rg_shutters[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					rg_shutters[i] & 0xFF);
-			}
-		}
-	}
-	DRV_LOG(ctx, "exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static void kkthuwide_write_frame_length_in_lut(struct subdrv_ctx *ctx, u32 fll, u32 *fll_in_lut)
-{
-	int i = 0;
-	u32 frame_length_buf;
-	u32 fll_step = 0;
-	u32 min_fll = 0;
-
-	check_current_scenario_id_bound(ctx);
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	// manual mode
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt) {
-	case 2:
-		if (fll_step) {
-			fll_in_lut[0] =
-				roundup(fll_in_lut[0], fll_step);
-			fll_in_lut[1] =
-				roundup(fll_in_lut[1], fll_step);
-		}
-		min_fll = ctx->s_ctx.mode[ctx->current_scenario_id].framelength / 2;
-
-		if (fll_in_lut[0] < fll_in_lut[1]) {
-			if (fll_in_lut[0] < min_fll) {
-				fll_in_lut[1] -= min_fll - fll_in_lut[0];
-				fll_in_lut[0] = min_fll;
-			}
-		} else {
-			if (fll_in_lut[1] < min_fll) {
-				fll_in_lut[0] -= min_fll - fll_in_lut[1];
-				fll_in_lut[1] = min_fll;
-			}
-		}
-		fll_in_lut[2] = 0;
-		fll_in_lut[3] = 0;
-		fll_in_lut[4] = 0;
-		ctx->frame_length_in_lut[0] = fll_in_lut[0];
-		ctx->frame_length_in_lut[1] = fll_in_lut[1];
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1];
-		break;
-	case 3:
-		if (fll_step) {
-			fll_in_lut[0] =
-				roundup(fll_in_lut[0], fll_step);
-			fll_in_lut[1] =
-				roundup(fll_in_lut[1], fll_step);
-			fll_in_lut[2] =
-				roundup(fll_in_lut[2], fll_step);
-		}
-		fll_in_lut[3] = 0;
-		fll_in_lut[4] = 0;
-		ctx->frame_length_in_lut[0] = fll_in_lut[0];
-		ctx->frame_length_in_lut[1] = fll_in_lut[1];
-		ctx->frame_length_in_lut[2] = fll_in_lut[2];
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] +
-			ctx->frame_length_in_lut[1] +
-			ctx->frame_length_in_lut[2];
-		break;
-	default:
-		break;
-	}
-
-	if (ctx->extend_frame_length_en == FALSE) {
-		frame_length_buf = 0;
-		for (i = 0; i < 3; i++) {
-			if (fll_in_lut[i]) {
-				if (ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[2]) {
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[0],
-						(fll_in_lut[i] >> 16) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[1],
-						(fll_in_lut[i] >> 8) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[2],
-						fll_in_lut[i] & 0xFF);
-				} else {
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[0],
-						(fll_in_lut[i] >> 8) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[1],
-						fll_in_lut[i] & 0xFF);
-				}
-				/* update FL_lut RG value after setting buffer for writing RG */
-				ctx->frame_length_in_lut_rg[i] = fll_in_lut[i];
-				frame_length_buf +=
-					ctx->frame_length_in_lut_rg[i];
-			}
-		}
-		/* update FL RG value simultaneously */
-		ctx->frame_length_rg = frame_length_buf;
-
-		DRV_LOG(ctx,
-			"ctx:(fl(RG):%u,%u/%u/%u/%u/%u), scen_id:%u,fll(input/ctx/output_a/b/c/d/e):0x%x/%x/%x/%x/%x/%x/%x,fll_step:%u\n",
-			ctx->frame_length_rg,
-			ctx->frame_length_in_lut_rg[0],
-			ctx->frame_length_in_lut_rg[1],
-			ctx->frame_length_in_lut_rg[2],
-			ctx->frame_length_in_lut_rg[3],
-			ctx->frame_length_in_lut_rg[4],
-			ctx->current_scenario_id,
-			fll,
-			ctx->frame_length,
-			fll_in_lut[0],
-			fll_in_lut[1],
-			fll_in_lut[2],
-			fll_in_lut[3],
-			fll_in_lut[4],
-			fll_step);
-	} else {
-		DRV_LOG(ctx,
-			"sid:%u,extend_frame_length_en:%u,default won't write fll!\n",
-			ctx->current_scenario_id, ctx->extend_frame_length_en);
-		return;
-	}
-}
-
-
-static int kkthuwide_set_multi_shutter_frame_length_in_lut(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	kkthuwide_set_multi_shutter_frame_length_in_lut_convert(ctx,
-		(u64 *)(*feature_data),
-		(u16) (*(feature_data + 1)),
-		(u32) (*(feature_data + 2)),
-		(u32 *) (*(feature_data + 3)));
-	return 0;
-}
-
-static void kkthuwide_set_multi_shutter_frame_length_in_lut_convert(struct subdrv_ctx *ctx,
-	u64 *shutters, u16 exp_cnt, u32 frame_length, u32 *frame_length_in_lut)
-{
-	int i = 0;
-	u16 last_exp_cnt = 1;
-	int fine_integ_line = 0;
-	u32 frame_length_step;
-	u32 cit_step = 0;
-	u32 cit_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 calc_fl_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->min_frame_length;
-
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	frame_length_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	/* manual mode */
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].min);
-		shutters[i] = min_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].max);
-		if (cit_step)
-			shutters[i] = roundup(shutters[i], cit_step);
-
-		/* update frame_length_in_lut */
-		ctx->frame_length_in_lut[i] = frame_length_in_lut[i] ?
-			frame_length_in_lut[i] : 0;
-		/* check boundary of framelength in lut */
-		ctx->frame_length_in_lut[i] =
-			min(ctx->frame_length_in_lut[i], ctx->s_ctx.frame_length_max);
-	}
-
-	for (i = 0; i < exp_cnt; i++) {
-		/* update cit_in_lut depends on exposure_order_in_lbmf */
-		if (ctx->s_ctx.mode[ctx->current_scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-			/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-			cit_in_lut[i] = shutters[exp_cnt - 1 - i];
-		} else if (ctx->s_ctx.mode[ctx->current_scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-			/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-			cit_in_lut[i] = shutters[i];
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-	}
-
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt) {
-	case 2:
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_a = max(readout, current shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_b = max(readout, current shutter_a) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-
-		/* fll_a = max(fll_a, userInput_fll_a) */
-		ctx->frame_length_in_lut[0] =
-			max(ctx->frame_length_in_lut[0], calc_fl_in_lut[0]);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(ctx->frame_length_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b = max(fll_b, userInput_fll_b) */
-		ctx->frame_length_in_lut[1] =
-			max(ctx->frame_length_in_lut[1], calc_fl_in_lut[1]);
-
-		if (ctx->frame_length >= ctx->frame_length_in_lut[0]) {
-			/* fll_b = max(fll_b, fll-fll_a) */
-			ctx->frame_length_in_lut[1] =
-				max(ctx->frame_length_in_lut[1],
-					ctx->frame_length - ctx->frame_length_in_lut[0]);
-		}
-
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(ctx->frame_length_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* lut[2] no use, and assign zero */
-		ctx->frame_length_in_lut[2] = 0;
-		/* lut[3] no use, and assign zero */
-		ctx->frame_length_in_lut[3] = 0;
-		/* lut[4] no use, and assign zero */
-		ctx->frame_length_in_lut[4] = 0;
-		break;
-	case 3:
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_a = max(readout, current shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_b = max(readout, current shutter_c) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[2] + ctx->s_ctx.exposure_margin);
-		/* fll_c_min = readout + xx lines(margin) */
-		calc_fl_in_lut[2] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_c = max(readout, current shutter_a) */
-		calc_fl_in_lut[2] =
-			max(calc_fl_in_lut[2], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-
-		/* fll_a = max(fll_a, userInput_fll_a) */
-		ctx->frame_length_in_lut[0] =
-			max(ctx->frame_length_in_lut[0], calc_fl_in_lut[0]);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(ctx->frame_length_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b = max(fll_b, userInput_fll_b) */
-		ctx->frame_length_in_lut[1] =
-			max(ctx->frame_length_in_lut[1], calc_fl_in_lut[1]);
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(ctx->frame_length_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* fll_c = max(fll_c, userInput_fll_c) */
-		ctx->frame_length_in_lut[2] =
-			max(ctx->frame_length_in_lut[2], calc_fl_in_lut[2]);
-
-		if (ctx->frame_length >=
-			(ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1])) {
-			/* fll_c = max(fll_c, fll-fll_b-fll_a) */
-			ctx->frame_length_in_lut[2] =
-				max(ctx->frame_length_in_lut[2],
-					(ctx->frame_length - ctx->frame_length_in_lut[1] -
-					ctx->frame_length_in_lut[0]));
-		}
-
-		/* fll_c = min(fll_c, fll_max) */
-		ctx->frame_length_in_lut[2] =
-			min(ctx->frame_length_in_lut[2], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[2] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[2], frame_length_step) :
-			ctx->frame_length_in_lut[2];
-		/* lut[3] no use, and assign zero */
-		ctx->frame_length_in_lut[3] = 0;
-		/* lut[4] no use, and assign zero */
-		ctx->frame_length_in_lut[4] = 0;
-		break;
-	default:
-		break;
-	}
-
-	/* restore shutter & update framelength */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->frame_length = 0;
-	for (i = 0; i < exp_cnt; i++) {
-		ctx->exposure[i] = shutters[i];
-		ctx->frame_length += ctx->frame_length_in_lut[i];
-	}
-	/* check boundary of framelength */
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	set_auto_flicker(ctx, 0);
-
-	kkthuwide_write_frame_length_in_lut(ctx, ctx->frame_length, ctx->frame_length_in_lut);
-
-	/* write shutter: LUT register differs from DOL */
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED) {
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-		ctx->l_shift = 0;
-	}
-	for (i = 0; i < 3; i++) {
-		if (cit_in_lut[i]) {
-			if (ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[2]) {
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[0],
-					(cit_in_lut[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[1],
-					(cit_in_lut[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[2],
-					cit_in_lut[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[0],
-					(cit_in_lut[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[1],
-					cit_in_lut[i] & 0xFF);
-			}
-		}
-	}
-
-	DRV_LOG(ctx,
-		"sid:%u,shutter(input/lut):0x%llx/%llx/%llx,%x/%x/%x,flInLUT(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%u,flick_en:%d\n",
-		ctx->current_scenario_id,
-		shutters[0], shutters[1], shutters[2],
-		cit_in_lut[0], cit_in_lut[1], cit_in_lut[2],
-		frame_length, ctx->frame_length,
-		ctx->frame_length_in_lut[0],
-		ctx->frame_length_in_lut[1],
-		ctx->frame_length_in_lut[2],
-		ctx->frame_length_in_lut[3],
-		ctx->frame_length_in_lut[4],
-		ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static int kkthuwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	kkthuwide_lens_pos_writeback(ctx);
-	kkthuwide_set_multi_shutter_frame_length(ctx, (u64 *)(*feature_data),
-		(u16) (*(feature_data + 1)), (u16) (*(feature_data + 2)));
-	return 0;
-}
-
-static void kkthuwide_set_hdr_tri_shutter(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt)
-{
-	int i = 0;
-	u64 values[3] = {0};
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-
-	if (shutters != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u64) *(shutters + i);
-	}
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		kkthuwide_set_multi_shutter_frame_length_in_lut_convert(ctx,
-			values, exp_cnt, 0, frame_length_in_lut);
-		return;
-	}
-	kkthuwide_set_multi_shutter_frame_length(ctx, values, exp_cnt, 0);
-}
-
-static int kkthuwide_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	kkthuwide_set_hdr_tri_shutter(ctx, feature_data, 2);
-	return 0;
-}
-
-static int kkthuwide_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	kkthuwide_set_hdr_tri_shutter(ctx, feature_data, 3);
-	return 0;
-}
-
-static bool dump_i2c_enable = false;
-
-static void dump_i2c_buf(struct subdrv_ctx *ctx, u8 * buf, u32 length)
-{
-	int i;
-	char *out_str = NULL;
-	char *strptr = NULL;
-	size_t buf_size = SUBDRV_I2C_BUF_SIZE * sizeof(char);
-	size_t remind = buf_size;
-	int num = 0;
-
-	out_str = kzalloc(buf_size + 1, GFP_KERNEL);
-	if (!out_str)
-		return;
-
-	strptr = out_str;
-	memset(out_str, 0, buf_size + 1);
-
-	num = snprintf(strptr, remind,"[ ");
-	remind -= num;
-	strptr += num;
-
-	for (i = 0 ; i < length; i ++) {
-		num = snprintf(strptr, remind,"0x%02x, ", buf[i]);
-
-		if (num <= 0) {
-			DRV_LOG(ctx, "snprintf return negative at line %d\n", __LINE__);
-			kfree(out_str);
-			return;
-		}
-
-		remind -= num;
-		strptr += num;
-
-		if (remind <= 20) {
-			DRV_LOG(ctx, " write %s\n", out_str);
-			memset(out_str, 0, buf_size + 1);
-			strptr = out_str;
-			remind = buf_size;
-		}
-	}
-
-	num = snprintf(strptr, remind," ]");
-	remind -= num;
-	strptr += num;
-
-	DRV_LOG(ctx, " write %s\n", out_str);
-	strptr = out_str;
-	remind = buf_size;
-
-	kfree(out_str);
-}
-
-static int kkthuwide_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx, u16 * list, u32 len)
-{
-	adapter_i2c_burst_wr_regs_u16(ctx, ctx->i2c_write_id >> 1, list, len);
-	return 	0;
-}
-
-#define MAX_BUF_SIZE  4096
-#define MAX_MSG_NUM_U16  MAX_BUF_SIZE/4
-
-struct cache_wr_regs_u16 {
-	struct i2c_msg msg[MAX_MSG_NUM_U16];
-};
-
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx ,
-		u16 addr, u16 *list, u32 len)
-{
-	struct i2c_client *i2c_client = ctx->i2c_client;
-	struct i2c_msg  msg;
-	struct i2c_msg *pmsg = &msg;
-
-	u8 *pbuf = NULL;
-	u16 *plist = NULL;
-	u16 *plist_end = NULL;
-
-	u32 sent = 0;
-	u32 total = 0;
-	u32 per_sent = 0;
-	int ret, i;
-
-	if(!msg_buf) {
-		LOG_INF("malloc msg_buf retry");
-		msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-		if(!msg_buf) {
-			LOG_INF("malloc error");
-			return -ENOMEM;
-		}
-	}
-
-	/* each msg contains addr(u16) + val(u16 *) */
-	sent = 0;
-	total = len / 2;
-	plist = list;
-	plist_end = list + len - 2;
-
-	DRV_LOG(ctx, "len(%u)  total(%u)", len, total);
-
-	while (sent < total) {
-
-		per_sent = 0;
-		pmsg = &msg;
-		pbuf = msg_buf;
-
-		pmsg->addr = addr;
-		pmsg->flags = i2c_client->flags;
-		pmsg->buf = pbuf;
-
-		pbuf[0] = plist[0] >> 8;    //address
-		pbuf[1] = plist[0] & 0xff;
-
-		pbuf[2] = plist[1] >> 8;  //data 1
-		pbuf[3] = plist[1] & 0xff;
-
-		pbuf += 4;
-		pmsg->len = 4;
-		per_sent += 1;
-
-		for (i = 0; i < total - sent - 1; i++) {  //Maximum number of remaining cycles - 1
-			if(plist[0] + 2 == plist[2] ) {  //Addresses are consecutive
-				pbuf[0] = plist[3] >> 8;
-				pbuf[1] = plist[3] & 0xff;
-
-				pbuf += 2;
-				pmsg->len += 2;
-				per_sent += 1;
-				plist += 2;
-
-				if(pmsg->len >= MAX_BURST_LEN) {
-					break;
-				}
-			}
-		}
-		plist += 2;
-
-		if(dump_i2c_enable) {
-			DRV_LOG(ctx, "pmsg->len(%d) buff: ", pmsg->len);
-			dump_i2c_buf(ctx, msg_buf, pmsg->len);
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmsg, 1);
-
-		if (ret < 0) {
-			dev_info(&i2c_client->dev,
-				"i2c transfer failed (%d)\n", ret);
-			return -EIO;
-		}
-
-		sent += per_sent;
-
-		DRV_LOG(ctx, "sent(%u)  total(%u)  per_sent(%u)", sent, total, per_sent);
-	}
-
-	return 0;
-}
-
-#define kkthuwide_AF_READ_ID  (0x18)
-#define kkthuwide_AF_POSITON_ADD  (0x03)
-
-static bool read_af_pos(struct subdrv_ctx *ctx, u16 *positon)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-	struct i2c_client *i2c_client = ctx->i2c_client;
-
-	buf[0] = kkthuwide_AF_POSITON_ADD;
-
-	msg[0].addr = kkthuwide_AF_READ_ID >> 1;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = 1;
-
-	msg[1].addr  = kkthuwide_AF_READ_ID >> 1;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 2;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return false;
-	}
-
-	*positon = ((u16)buf[0] << 8) | buf[1];
-
-	return true;
-}
-
-static u16 lens_position_setting[] = {
-	0xFCFC, 0x2001,
-	0x2566, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static void kkthuwide_lens_pos_writeback(struct subdrv_ctx *ctx)
-{
-	kal_uint16 af_pos = 0;
-	kal_uint16 write_pos = 0;
-	kal_uint16 write_pos_cover = 0;
-
-	bool ret;
-
-	DRV_LOG(ctx,"%s g_af_code_macro(%d), g_af_code_infinity(%d)",
-		__func__, g_af_code_macro, g_af_code_infinity);
-
-	if (ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-
-		ret = read_af_pos(ctx, &af_pos);
-		if(ret == false || g_af_code_macro == 0 || g_af_code_infinity == 0 || g_af_code_macro == g_af_code_infinity) {
-			pr_err("%s ret(%d) ",__func__, ret);
-			return ;
-		}
-		if(af_pos < g_af_code_infinity) {
-			af_pos = g_af_code_infinity;
-		}
-		if(af_pos > g_af_code_macro) {
-			af_pos = g_af_code_macro;
-		}
-
-		write_pos = (u32)(af_pos - g_af_code_infinity) * 1023 / (g_af_code_macro - g_af_code_infinity);
-
-		write_pos_cover = ((write_pos >> 8) & 0xff) | ((write_pos << 8) & 0xff00);
-
-		lens_position_setting[3] = write_pos_cover;
-
-		DRV_LOG(ctx,"%s af_pos(%d), g_af_code_infinity(%d), g_af_code_macro(%d), write_pos(0x%x) write_pos_cover(0x%x)",
-			__func__, af_pos, g_af_code_infinity, g_af_code_macro, write_pos, write_pos_cover);
-
-		subdrv_i2c_wr_regs_u16(ctx, lens_position_setting, ARRAY_SIZE(lens_position_setting));
-	}
-}
-
-static int kkthuwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *)para;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = (enum SENSOR_SCENARIO_ID_ENUM)*feature_data;
-	u32 framerate = *(feature_data + 1);
-	u32 frame_length;
-	u32 frame_length_step;
-	u32 frame_length_min;
-	u32 frame_length_max;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-	}
-	if (!framerate) {
-		DRV_LOGE(ctx, "framerate (%u) is invalid\n", framerate);
-		return ERROR_NONE;
-	}
-	if (!ctx->s_ctx.mode[scenario_id].linelength) {
-		DRV_LOGE(ctx, "linelength (%u) is invalid\n",
-			ctx->s_ctx.mode[scenario_id].linelength);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		kkthuwide_set_max_framerate_in_lut_by_scenario(ctx, scenario_id, framerate);
-		return ERROR_NONE;
-	}
-
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	/* set on the step of frame length */
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	frame_length_min = ctx->s_ctx.mode[scenario_id].framelength;
-	frame_length_max = ctx->s_ctx.frame_length_max;
-	frame_length_max = frame_length_step ?
-		(frame_length_max - (frame_length_max % frame_length_step)) : frame_length_max;
-
-
-	/* set in the range of frame length */
-	ctx->frame_length = max(frame_length, frame_length_min);
-	ctx->frame_length = min(ctx->frame_length, frame_length_max);
-	ctx->frame_length = frame_length_step ?
-		roundup(ctx->frame_length,frame_length_step) : ctx->frame_length;
-
-	/* set default frame length if given default framerate */
-	if (framerate == ctx->s_ctx.mode[scenario_id].max_framerate)
-		ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-
-	ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	ctx->min_frame_length = ctx->frame_length;
-	DRV_LOG(ctx, "max_fps(input/output):%u/%u(sid:%u), min_fl_en:1, ctx->frame_length:%u\n",
-		framerate, ctx->current_fps, scenario_id, ctx->frame_length);
-	if (ctx->s_ctx.reg_addr_auto_extend ||
-			(ctx->frame_length > (ctx->exposure[0] + ctx->s_ctx.exposure_margin))) {
-		if (ctx->s_ctx.aov_sensor_support &&
-			ctx->s_ctx.mode[scenario_id].aov_mode &&
-			!ctx->s_ctx.mode[scenario_id].s_dummy_support)
-			DRV_LOG_MUST(ctx, "AOV mode not support set_dummy!\n");
-		else
-			kkthuwide_set_dummy(ctx);
-	}
-	return ERROR_NONE;
-}
-/**
- * @brief: This api is used to assign FLL_A/FLL_B in lut for manual mode.
- * It should refer to previous shutter because per-frame multi shutter framelength
- * might not be called.
- * @param ctx: subdrv_ctx
- * @param scenario_id: current scenario id
- * @param framerate: input framerate
- */
-static void kkthuwide_set_max_framerate_in_lut_by_scenario(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id, u32 framerate)
-{
-	u32 frame_length = 0;
-	u32 frame_length_step = 0;
-	u16 exp_cnt = 0;
-	u32 cit_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 calc_fl_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	int i;
-
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	ctx->frame_length =
-		max(frame_length, ctx->s_ctx.mode[scenario_id].framelength);
-
-	/* set default frame length if given default framerate */
-	if (framerate ==  ctx->s_ctx.mode[scenario_id].max_framerate)
-		ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-
-	// manual mode
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	switch (exp_cnt) {
-	case 2:
-		for (i = 0; i < exp_cnt; i++) {
-			/*  update cit_in_lut depends on exposure_order_in_lbmf */
-			if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-				/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-				/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-				cit_in_lut[i] = ctx->exposure[exp_cnt - 1 - i];
-			} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-				/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-				/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-				cit_in_lut[i] = ctx->exposure[i];
-			} else {
-				DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-				return;
-			}
-		}
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_a = max(readout, previous shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(calc_fl_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_b = max(readout, previous shutter_a) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-		if (ctx->frame_length >= ctx->frame_length_in_lut[0]) {
-			/* fll_b = max(fll_b, fll_mode_max-fll_a) */
-			calc_fl_in_lut[1] =
-				max(calc_fl_in_lut[1],
-					ctx->frame_length - ctx->frame_length_in_lut[0]);
-		}
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(calc_fl_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		ctx->frame_length_in_lut[2] = 0;
-		ctx->frame_length_in_lut[3] = 0;
-		ctx->frame_length_in_lut[4] = 0;
-		/* update framelength */
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1];
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-		ctx->min_frame_length = ctx->frame_length;
-		DRV_LOG(ctx,
-			"sid:%u,max_fps(input/output):%u/%u,min_fl_en:1,lut order:%u,fll(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%un",
-			scenario_id,
-			framerate, ctx->current_fps,
-			ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf,
-			frame_length,
-			ctx->frame_length,
-			ctx->frame_length_in_lut[0],
-			ctx->frame_length_in_lut[1],
-			ctx->frame_length_in_lut[2],
-			ctx->frame_length_in_lut[3],
-			ctx->frame_length_in_lut[4]);
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				kkthuwide_set_dummy(ctx);
-		} else {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				kkthuwide_set_dummy(ctx);
-		}
-		break;
-	case 3:
-		for (i = 0; i < exp_cnt; i++) {
-			/*  update cit_in_lut depends on exposure_order_in_lbmf */
-			if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-				/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-				/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-				cit_in_lut[i] = ctx->exposure[exp_cnt - 1 - i];
-			} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-				/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-				/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-				cit_in_lut[i] = ctx->exposure[i];
-			} else {
-				DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-				return;
-			}
-		}
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_a = max(readout, previous shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(calc_fl_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_b = max(readout, previous shutter_c) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[2] + ctx->s_ctx.exposure_margin);
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(calc_fl_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* fll_c_min = readout + xx lines(margin) */
-		calc_fl_in_lut[2] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_c = max(readout, previous shutter_a) */
-		calc_fl_in_lut[2] =
-			max(calc_fl_in_lut[2], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-		if (ctx->frame_length >=
-			(ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1])) {
-			/* fll_c = max(fll_c, fll_mode_max-fll_b-fll_a) */
-			calc_fl_in_lut[2] =
-				max(calc_fl_in_lut[2],
-					(ctx->frame_length - ctx->frame_length_in_lut[1] -
-					ctx->frame_length_in_lut[0]));
-		}
-		/* fll_c = min(fll_c, fll_max) */
-		ctx->frame_length_in_lut[2] =
-			min(calc_fl_in_lut[2], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[2] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[2], frame_length_step) :
-			ctx->frame_length_in_lut[2];
-		ctx->frame_length_in_lut[3] = 0;
-		ctx->frame_length_in_lut[4] = 0;
-		/* update framelength */
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] +
-			ctx->frame_length_in_lut[1] +
-			ctx->frame_length_in_lut[2];
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-		ctx->min_frame_length = ctx->frame_length;
-		DRV_LOG(ctx,
-			"sid:%u,max_fps(input/output):%u/%u,min_fl_en:1,lut order:%u,fll(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%u\n",
-			scenario_id,
-			framerate, ctx->current_fps,
-			ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf,
-			frame_length,
-			ctx->frame_length,
-			ctx->frame_length_in_lut[0],
-			ctx->frame_length_in_lut[1],
-			ctx->frame_length_in_lut[2],
-			ctx->frame_length_in_lut[3],
-			ctx->frame_length_in_lut[4]);
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[2] >
-				(ctx->exposure[2] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				kkthuwide_set_dummy(ctx);
-		} else {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[2] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[2] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				kkthuwide_set_dummy(ctx);
-		}
-		break;
-	default:
-		break;
-	}
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwidemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwidemipiraw_Sensor.h
deleted file mode 100755
index 33fdc5d8..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/kkthuwide_mipi_raw/kkthuwidemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     KKTHUWIDEmipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KKTHUWIDEMIPI_SENSOR_H
-#define _KKTHUWIDEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "kkthuwide_ana_gain_table.h"
-#include "kkthuwide_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/Makefile
deleted file mode 100755
index d877d1c6..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/knightmfrontmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfront_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfront_Sensor_setting.h
deleted file mode 100755
index 48a8e27a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfront_Sensor_setting.h
+++ /dev/null
@@ -1,764 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 knightmfront_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KNIGHTMFRONTMIPI_SENSOR_SETTING_H
-#define _KNIGHTMFRONTMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 knightmfront_sensor_init_setting[] = {
-	0x0136, 0x18,
-	0x0137, 0x00,
-	0x3C7E, 0x03,
-	0x3C7F, 0x05,
-	0x3E35, 0x00,
-	0x3E36, 0x00,
-	0x3E37, 0x00,
-	0x3F7F, 0x01,
-	0x4431, 0x04,
-	0x531C, 0x01,
-	0x531D, 0x02,
-	0x531E, 0x04,
-	0x5928, 0x00,
-	0x5929, 0x2F,
-	0x592A, 0x00,
-	0x592B, 0x85,
-	0x592C, 0x00,
-	0x592D, 0x32,
-	0x592E, 0x00,
-	0x592F, 0x88,
-	0x5930, 0x00,
-	0x5931, 0x3D,
-	0x5932, 0x00,
-	0x5933, 0x93,
-	0x5938, 0x00,
-	0x5939, 0x24,
-	0x593A, 0x00,
-	0x593B, 0x7A,
-	0x593C, 0x00,
-	0x593D, 0x24,
-	0x593E, 0x00,
-	0x593F, 0x7A,
-	0x5940, 0x00,
-	0x5941, 0x2F,
-	0x5942, 0x00,
-	0x5943, 0x85,
-	0x5F0E, 0x6E,
-	0x5F11, 0xC6,
-	0x5F17, 0x5E,
-	0x7990, 0x01,
-	0x7993, 0x5D,
-	0x7994, 0x5D,
-	0x7995, 0xA1,
-	0x799A, 0x01,
-	0x799D, 0x00,
-	0x8169, 0x01,
-	0x8359, 0x01,
-	0x9302, 0x1E,
-	0x9306, 0x1F,
-	0x930A, 0x26,
-	0x930E, 0x23,
-	0x9312, 0x23,
-	0x9316, 0x2C,
-	0x9317, 0x19,
-	0xB046, 0x01,
-	0xB048, 0x01,
-	0x0100, 0x00,
-};
-
-static u16 knightmfront_preview_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x1D,
-	0x0341, 0x80,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xF7,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x1D,
-	0x0203, 0x6E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xAF,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x5F,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x97,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xEB,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 knightmfront_capture_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x1D,
-	0x0341, 0x80,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xF7,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x1D,
-	0x0203, 0x6E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xAF,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x5F,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x97,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xEB,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 knightmfront_normal_video_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x0A,
-	0x0341, 0xE2,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x01,
-	0x0347, 0xC4,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0B,
-	0x034B, 0xE3,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x05,
-	0x040F, 0x10,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x05,
-	0x034F, 0x10,
-	0x0301, 0x06,
-	0x0303, 0x04,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0xD6,
-	0x030B, 0x01,
-	0x030D, 0x06,
-	0x030E, 0x00,
-	0x030F, 0xC8,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x0A,
-	0x0203, 0xD0,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x37,
-	0x080E, 0x00,
-	0x080F, 0x67,
-	0x0810, 0x00,
-	0x0811, 0x37,
-	0x0812, 0x00,
-	0x0813, 0x37,
-	0x0814, 0x00,
-	0x0815, 0x37,
-	0x0816, 0x00,
-	0x0817, 0xDF,
-	0x0818, 0x00,
-	0x0819, 0x2F,
-	0x0824, 0x00,
-	0x0825, 0xE3,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 knightmfront_hs_video_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x05,
-	0x0341, 0x70,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x01,
-	0x0347, 0xC4,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0B,
-	0x034B, 0xE3,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x05,
-	0x040F, 0x10,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x05,
-	0x034F, 0x10,
-	0x0301, 0x06,
-	0x0303, 0x04,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0xD6,
-	0x030B, 0x01,
-	0x030D, 0x06,
-	0x030E, 0x00,
-	0x030F, 0xC8,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x05,
-	0x0203, 0x5E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x37,
-	0x080E, 0x00,
-	0x080F, 0x67,
-	0x0810, 0x00,
-	0x0811, 0x37,
-	0x0812, 0x00,
-	0x0813, 0x37,
-	0x0814, 0x00,
-	0x0815, 0x37,
-	0x0816, 0x00,
-	0x0817, 0xDF,
-	0x0818, 0x00,
-	0x0819, 0x2F,
-	0x0824, 0x00,
-	0x0825, 0xE3,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 knightmfront_slim_video_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x05,
-	0x0341, 0xE6,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x01,
-	0x0347, 0xBC,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0B,
-	0x034B, 0xEB,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x04,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x05,
-	0x040F, 0x10,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x05,
-	0x034F, 0x10,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0x3A,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0x8B,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x05,
-	0x0203, 0xD4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-};
-
-static u16 knightmfront_custom1_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x07,
-	0x0341, 0x1E,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0xA7,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x0A,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0x46,
-	0x030B, 0x01,
-	0x030D, 0x02,
-	0x030E, 0x00,
-	0x030F, 0x1E,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x07,
-	0x0203, 0x0C,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-};
-
-static u16 knightmfront_custom2_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x1D,
-	0x0341, 0x80,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xF7,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x1D,
-	0x0203, 0x6E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xAF,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x5F,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x97,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xEB,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 knightmfront_custom3_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x14,
-	0x0343, 0x00,
-	0x0340, 0x0E,
-	0x0341, 0xC0,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x0A,
-	0x3F4C, 0x01,
-	0x3F4D, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x18,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x12,
-	0x040D, 0x00,
-	0x040E, 0x0D,
-	0x040F, 0x80,
-	0x034C, 0x12,
-	0x034D, 0x00,
-	0x034E, 0x0D,
-	0x034F, 0x80,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xE8,
-	0x0310, 0x01,
-	0x3F78, 0x02,
-	0x3F79, 0x0A,
-	0x3FFE, 0x00,
-	0x3FFF, 0x18,
-	0x5F0A, 0xB2,
-	0x0202, 0x0E,
-	0x0203, 0xAE,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0x9F,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xA7,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x57,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x87,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xE7,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 knightmfront_custom4_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x1D,
-	0x0341, 0x80,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x01,
-	0x0347, 0xF8,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0B,
-	0x034B, 0xAF,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x01,
-	0x0409, 0x5C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x06,
-	0x040D, 0x60,
-	0x040E, 0x04,
-	0x040F, 0xDC,
-	0x034C, 0x06,
-	0x034D, 0x60,
-	0x034E, 0x04,
-	0x034F, 0xDC,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x02,
-	0x030F, 0x19,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x1D,
-	0x0203, 0x6E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfront_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfront_ana_gain_table.h
deleted file mode 100755
index 0dbf254a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfront_ana_gain_table.h
+++ /dev/null
@@ -1,492 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************/
-#ifndef __KNIGHTMFRONT_ANA_GAIN_TABLE_H__
-#define __KNIGHTMFRONT_ANA_GAIN_TABLE_H__
-static kal_uint32 knightmfront_ana_gain_table[] = {
-	1024,
-	1056,
-	1088,
-	1120,
-	1152,
-	1184,
-	1216,
-	1248,
-	1280,
-	1312,
-	1344,
-	1376,
-	1408,
-	1440,
-	1472,
-	1504,
-	1536,
-	1568,
-	1600,
-	1632,
-	1664,
-	1696,
-	1728,
-	1760,
-	1792,
-	1824,
-	1856,
-	1888,
-	1920,
-	1952,
-	1984,
-	2016,
-	2048,
-	2080,
-	2112,
-	2144,
-	2176,
-	2208,
-	2240,
-	2272,
-	2304,
-	2336,
-	2368,
-	2400,
-	2432,
-	2464,
-	2496,
-	2528,
-	2560,
-	2592,
-	2624,
-	2656,
-	2688,
-	2720,
-	2752,
-	2784,
-	2816,
-	2848,
-	2880,
-	2912,
-	2944,
-	2976,
-	3008,
-	3040,
-	3072,
-	3104,
-	3136,
-	3168,
-	3200,
-	3232,
-	3264,
-	3296,
-	3328,
-	3360,
-	3392,
-	3424,
-	3456,
-	3488,
-	3520,
-	3552,
-	3584,
-	3616,
-	3648,
-	3680,
-	3712,
-	3744,
-	3776,
-	3808,
-	3840,
-	3872,
-	3904,
-	3936,
-	3968,
-	4000,
-	4032,
-	4064,
-	4096,
-	4128,
-	4160,
-	4192,
-	4224,
-	4256,
-	4288,
-	4320,
-	4352,
-	4384,
-	4416,
-	4448,
-	4480,
-	4512,
-	4544,
-	4576,
-	4608,
-	4640,
-	4672,
-	4704,
-	4736,
-	4768,
-	4800,
-	4832,
-	4864,
-	4896,
-	4928,
-	4960,
-	4992,
-	5024,
-	5056,
-	5088,
-	5120,
-	5152,
-	5184,
-	5216,
-	5248,
-	5280,
-	5312,
-	5344,
-	5376,
-	5408,
-	5440,
-	5472,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6080,
-	6112,
-	6144,
-	6176,
-	6208,
-	6240,
-	6272,
-	6304,
-	6336,
-	6368,
-	6400,
-	6432,
-	6464,
-	6496,
-	6528,
-	6560,
-	6592,
-	6624,
-	6656,
-	6688,
-	6720,
-	6752,
-	6784,
-	6816,
-	6848,
-	6880,
-	6912,
-	6944,
-	6976,
-	7008,
-	7040,
-	7072,
-	7104,
-	7136,
-	7168,
-	7200,
-	7232,
-	7264,
-	7296,
-	7328,
-	7360,
-	7392,
-	7424,
-	7456,
-	7488,
-	7520,
-	7552,
-	7584,
-	7616,
-	7648,
-	7680,
-	7712,
-	7744,
-	7776,
-	7808,
-	7840,
-	7872,
-	7904,
-	7936,
-	7968,
-	8000,
-	8032,
-	8064,
-	8096,
-	8128,
-	8160,
-	8192,
-	8224,
-	8256,
-	8288,
-	8320,
-	8352,
-	8384,
-	8416,
-	8448,
-	8480,
-	8512,
-	8544,
-	8576,
-	8608,
-	8640,
-	8672,
-	8704,
-	8736,
-	8768,
-	8800,
-	8832,
-	8864,
-	8896,
-	8928,
-	8960,
-	8992,
-	9024,
-	9056,
-	9088,
-	9120,
-	9152,
-	9184,
-	9216,
-	9248,
-	9280,
-	9312,
-	9344,
-	9376,
-	9408,
-	9440,
-	9472,
-	9504,
-	9536,
-	9568,
-	9600,
-	9632,
-	9664,
-	9696,
-	9728,
-	9760,
-	9792,
-	9824,
-	9856,
-	9888,
-	9920,
-	9952,
-	9984,
-	10016,
-	10048,
-	10080,
-	10112,
-	10144,
-	10176,
-	10208,
-	10240,
-	10272,
-	10304,
-	10336,
-	10368,
-	10400,
-	10432,
-	10464,
-	10496,
-	10528,
-	10560,
-	10592,
-	10624,
-	10656,
-	10688,
-	10720,
-	10752,
-	10784,
-	10816,
-	10848,
-	10880,
-	10912,
-	10944,
-	10976,
-	11008,
-	11040,
-	11072,
-	11104,
-	11136,
-	11168,
-	11200,
-	11232,
-	11264,
-	11296,
-	11328,
-	11360,
-	11392,
-	11424,
-	11456,
-	11488,
-	11520,
-	11552,
-	11584,
-	11616,
-	11648,
-	11680,
-	11712,
-	11744,
-	11776,
-	11808,
-	11840,
-	11872,
-	11904,
-	11936,
-	11968,
-	12000,
-	12032,
-	12064,
-	12096,
-	12128,
-	12160,
-	12192,
-	12224,
-	12256,
-	12288,
-	12320,
-	12352,
-	12384,
-	12416,
-	12448,
-	12480,
-	12512,
-	12544,
-	12576,
-	12608,
-	12640,
-	12672,
-	12704,
-	12736,
-	12768,
-	12800,
-	12832,
-	12864,
-	12896,
-	12928,
-	12960,
-	12992,
-	13024,
-	13056,
-	13088,
-	13120,
-	13152,
-	13184,
-	13216,
-	13248,
-	13280,
-	13312,
-	13344,
-	13376,
-	13408,
-	13440,
-	13472,
-	13504,
-	13536,
-	13568,
-	13600,
-	13632,
-	13664,
-	13696,
-	13728,
-	13760,
-	13792,
-	13824,
-	13856,
-	13888,
-	13920,
-	13952,
-	13984,
-	14016,
-	14048,
-	14080,
-	14112,
-	14144,
-	14176,
-	14208,
-	14240,
-	14272,
-	14304,
-	14336,
-	14368,
-	14400,
-	14432,
-	14464,
-	14496,
-	14528,
-	14560,
-	14592,
-	14624,
-	14656,
-	14688,
-	14720,
-	14752,
-	14784,
-	14816,
-	14848,
-	14880,
-	14912,
-	14944,
-	14976,
-	15008,
-	15040,
-	15072,
-	15104,
-	15136,
-	15168,
-	15200,
-	15232,
-	15264,
-	15296,
-	15328,
-	15360,
-	15392,
-	15424,
-	15456,
-	15488,
-	15520,
-	15552,
-	15584,
-	15616,
-	15648,
-	15680,
-	15712,
-	15744,
-	15776,
-	15808,
-	15840,
-	15872,
-	15904,
-	15936,
-	15968,
-	16000,
-	16032,
-	16064,
-	16096,
-	16128,
-	16160,
-	16192,
-	16224,
-	16256,
-	16288,
-	16320,
-	16352,
-	16384,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfrontmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfrontmipiraw_Sensor.c
deleted file mode 100755
index 66121c62..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfrontmipiraw_Sensor.c
+++ /dev/null
@@ -1,1635 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 brzafrontmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "knightmfrontmipiraw_Sensor.h"
-
-#define PFX "knightmfront_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-
-#define KNIGHTMFRONT_EEPROM_READ_ID			0xA9
-#define KNIGHTMFRONT_EEPROM_WRITE_ID			0xA8
-#define KNIGHTMFRONT_MAX_OFFSET				0x4000
-#define OTP_SIZE							0x2000
-#define OTP_QSC_VALID_ADDR    				0x0EC0
-#define QSC_IS_VALID_VAL      				0x01
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH		40
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int knightmfront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmfront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmfront_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmfront_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmfront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmfront_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmfront_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmfront_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmfront_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmfront_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static void get_sensor_cali(void* arg);
-static void set_sensor_cali(void *arg);
-static int knightmfront_get_eeprom_4cell_info(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmfront_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int power_off(struct subdrv_ctx *ctx, void *data);
-
-/* STRUCT */
-
-static struct eeprom_map_info knightmfront_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000C, 0x000D, 0x000E, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, knightmfront_set_test_pattern},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, knightmfront_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, knightmfront_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, knightmfront_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, knightmfront_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, knightmfront_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, knightmfront_streaming_resume},
-	{SENSOR_FEATURE_SET_ESHUTTER, knightmfront_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, knightmfront_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, knightmfront_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_SET_GAIN, knightmfront_set_gain},
-	{SENSOR_FEATURE_GET_4CELL_DATA, knightmfront_get_eeprom_4cell_info},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01c40055,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA8,
-
-		.qsc_support = TRUE,
-		.qsc_size = 560,
-		.addr_qsc = 0x1300, //QSC_EEPROM_ADDR
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1296,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1296,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1296,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4608,
-			.vsize = 3456,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1244,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = knightmfront_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmfront_preview_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-//		.raw_cnt = 1,
-//		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 2560,
-		.framelength = 7552,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 592800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x41,
-		},
-//		.sensor_setting_info = {
-//		 	.sensor_scenario_usage = NORMAL_MASK,
-//		 	.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = knightmfront_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmfront_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-//		.raw_cnt = 1,
-//		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 2560,
-		.framelength = 7552,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 592800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x41,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = UNUSE_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = knightmfront_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmfront_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 214000000,
-		.linelength = 2560,
-		.framelength = 2786,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 320000000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 444,
-			.w0_size = 4608,
-			.h0_size = 2608 ,
-			.scale_w = 2304,
-			.scale_h = 1304,
-			.x1_offset = 0,
-			.y1_offset = 4,
-			.w1_size = 2304,
-			.h1_size = 1296,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1296,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x4B,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_hs_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_hs_vid),
-		.mode_setting_table = knightmfront_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmfront_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 214000000,
-		.linelength = 2560,
-		.framelength = 1392,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 320000000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 452,
-			.w0_size = 4608,
-			.h0_size = 2592 ,
-			.scale_w = 2304,
-			.scale_h = 1296,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1296,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1296,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x4B,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 60,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_slim_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_slim_vid),
-		.mode_setting_table = knightmfront_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmfront_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 216000000,
-		.linelength = 2560,
-		.framelength = 1406,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 259200000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 444,
-			.w0_size = 4608,
-			.h0_size = 2608,
-			.scale_w = 2304,
-			.scale_h = 1304,
-			.x1_offset = 0,
-			.y1_offset = 4,
-			.w1_size = 2304,
-			.h1_size = 1296,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1296,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 120,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = knightmfront_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmfront_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 124000000,
-		.linelength = 2560,
-		.framelength = 2018,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 139200000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 24,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = knightmfront_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmfront_custom2_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 2560,
-		.framelength = 7552,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 592800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x41,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = knightmfront_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmfront_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 5120,
-		.framelength = 3776,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 556800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 4608,
-			.scale_h = 3456,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4608,
-			.h1_size = 3456,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4608,
-			.h2_tg_size = 3456,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 2,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {.dphy_trail = 0x45,},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = RMSC_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = knightmfront_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmfront_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 2560,
-		.framelength = 7552,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 430000000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 696,
-			.y0_offset = 504,
-			.w0_size = 3264,
-			.h0_size = 2488,
-			.scale_w = 1632,
-			.scale_h = 1244,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1244,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1244,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 3,
-		.csi_param = {0},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = HDR_RAW_STAGGER_2EXP_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KNIGHTMFRONT_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0A22, 0x0A23},
-	.i2c_addr_table = {0x20, 0xff},
-	.i2c_burst_write_support = FALSE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {4656, 3496},
-	.mirror = IMAGE_HV_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_6MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_BAYER_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 16,
-	.ana_gain_type = 0, //0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC
-	.ana_gain_step = 1,
-	.ana_gain_table = knightmfront_ana_gain_table,
-	.ana_gain_table_size = sizeof(knightmfront_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max = (0xffff * 128) - 18,
-	.exposure_step = 1,
-	.exposure_margin = 18,
-
-	.frame_length_max = 0xffff,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1891000,
-
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.hdr_type = HDR_SUPPORT_NA,
-	.seamless_switch_support = FALSE,
-	.temperature_support = FALSE,
-	.g_temp = PARAM_UNDEFINED,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {{0x0202, 0x0203},},
-	.long_exposure_support = FALSE,
-	.reg_addr_exposure_lshift = PARAM_UNDEFINED,
-	.reg_addr_ana_gain = {{0x0204, 0x0205},},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = PARAM_UNDEFINED,
-	.reg_addr_temp_read = 0x0020,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = 0x0005,
-
-	.init_setting_table = knightmfront_sensor_init_setting,
-	.init_setting_len =  ARRAY_SIZE(knightmfront_sensor_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xb1893b4f,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.update_sof_cnt = common_update_sof_cnt,
-	.power_off = power_off,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-    {HW_ID_MCLK, {24}, 0},
-    {HW_ID_DVDD1, {1}, 2000},
-    {HW_ID_RST, {0}, 2000},
-    {HW_ID_AVDD, {2800000,2800000}, 3000},
-    {HW_ID_DVDD, {1050000,1050000}, 4000},
-    {HW_ID_DOVDD, {1800000,1800000}, 3000},
-    {HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-    {HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry knightmfront_mipi_raw_entry = {
-	.name = "knightmfront_mipi_raw",
-	.id = KNIGHTMFRONT_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static void knightmfront_set_dummy(struct subdrv_ctx *ctx)
-{
-	DRV_LOG(ctx, "dummyline = %d, dummypixels = %d\n",
-		ctx->dummy_line, ctx->dummy_pixel);
-
-	subdrv_i2c_wr_u8(ctx, 0x0350, 0x00); /* Disable auto extend */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-
-	subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-	subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0342, ctx->line_length >> 8);
-	subdrv_i2c_wr_u8(ctx, 0x0343, ctx->line_length & 0xFF);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-}				/*      set_dummy  */
-
-static void knightmfront_set_max_framerate(struct subdrv_ctx *ctx, UINT16 framerate,
-			kal_bool min_framelength_en)
-{
-
-	kal_uint32 frame_length = ctx->frame_length;
-
-	DRV_LOG(ctx, "framerate = %d, min framelength should enable %d\n",
-		framerate, min_framelength_en);
-
-	frame_length = ctx->pclk / framerate * 10 / ctx->line_length;
-
-	if (frame_length >= ctx->min_frame_length)
-		ctx->frame_length = frame_length;
-	else
-		ctx->frame_length = ctx->min_frame_length;
-
-	ctx->dummy_line =
-		ctx->frame_length - ctx->min_frame_length;
-
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-
-		ctx->dummy_line =
-			ctx->frame_length - ctx->min_frame_length;
-	}
-	if (min_framelength_en)
-		ctx->min_frame_length = ctx->frame_length;
-	knightmfront_set_dummy(ctx);
-}
-
-static void knightmfront_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u32 *shutter, u32 frame_length, bool auto_extend_en)
-{
-	kal_uint16 realtime_fps = 0;
-	kal_int32 dummy_line = 0;
-	u8 exposure_margin = ctx->s_ctx.exposure_margin;
-	ctx->exposure[0] = *shutter;
-	/* Change frame time */
-	if (frame_length > 1)
-		dummy_line = frame_length - ctx->frame_length;
-
-	ctx->frame_length = ctx->frame_length + dummy_line;
-
-	if (ctx->exposure[0] > ctx->frame_length - exposure_margin)
-		ctx->frame_length = ctx->exposure[0] + exposure_margin;
-
-	if (ctx->frame_length > ctx->max_frame_length)
-		ctx->frame_length = ctx->max_frame_length;
-
-	ctx->exposure[0] = (ctx->exposure[0] < ctx->s_ctx.exposure_min)
-			? ctx->s_ctx.exposure_min : ctx->exposure[0];
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps >= 297 && realtime_fps <= 305) {
-			knightmfront_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps >= 147 && realtime_fps <= 150) {
-			knightmfront_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-			subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);	
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-		subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	}
-	/* Update Shutter */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	if (auto_extend_en)
-		subdrv_i2c_wr_u8(ctx, 0x0350, 0x01); /* Enable auto extend */
-	else
-		subdrv_i2c_wr_u8(ctx, 0x0350, 0x00); /* Disable auto extend */
-
-	subdrv_i2c_wr_u8(ctx, 0x0202, (ctx->exposure[0] >> 8) & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0203, ctx->exposure[0] & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	DRV_LOG(ctx, "Exit! shutter =%d, framelength =%d/%d, dummy_line=%d, auto_extend=%d\n",
-		ctx->exposure[0], ctx->frame_length, frame_length, dummy_line, subdrv_i2c_rd_u16(ctx, 0x0350));
-}	/* set_shutter_frame_length */
-
-static int knightmfront_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "shutter:%u, frame_length:%u\n", (u32)(*para), (u32) (*(para + 1)));
-	knightmfront_set_shutter_frame_length_convert(ctx, (u32 *)para, (u32) (*(para + 1)), (u16) (*(para + 2)));
-	return 0;
-}
-
-static void knightmfront_write_shutter(struct subdrv_ctx *ctx)
-{
-	kal_uint16 realtime_fps = 0;
-	u8 exposure_margin = 0;
-	DRV_LOG(ctx, "===brad shutter:%d\n", ctx->exposure[0]);
-	exposure_margin = ctx->s_ctx.exposure_margin;
-	LOG_INF("exposure_margin:%d\n", exposure_margin);
-	if (ctx->exposure[0] > ctx->min_frame_length - exposure_margin) {
-		ctx->frame_length = ctx->exposure[0] + exposure_margin;
-	} else {
-		ctx->frame_length = ctx->min_frame_length;
-	}
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-	}
-
-	if (ctx->exposure[0] < ctx->s_ctx.exposure_min) {
-		ctx->exposure[0] = ctx->s_ctx.exposure_min;
-	}
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps >= 297 && realtime_fps <= 305) {
-			knightmfront_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps >= 147 && realtime_fps <= 150) {
-			knightmfront_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-			subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-		subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	}
-	/* Update Shutter */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, 0x0350, 0x01); /* Enable auto extend */
-	subdrv_i2c_wr_u8(ctx, 0x0202, (ctx->exposure[0] >> 8) & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0203, ctx->exposure[0] & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	DRV_LOG(ctx, "shutter =%d, framelength =%d\n", ctx->exposure[0], ctx->frame_length);
-}	/*	write_shutter  */
-
-static void knightmfront_set_shutter_convert(struct subdrv_ctx *ctx, u32 *shutter)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", *shutter);
-	ctx->exposure[0] = *shutter;
-
-	knightmfront_write_shutter(ctx);
-}
-
-static int knightmfront_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", *para);
-	knightmfront_set_shutter_convert(ctx, (u32 *)para);
-	return 0;
-}
-
-static void knightmfront_set_multi_shutter_frame_length(struct subdrv_ctx *ctx,
-		u32 *shutters, u16 exp_cnt,	u16 frame_length)
-{
-	int i = 0;
-	u32 fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[3] = {0};
-	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max(shutters[i], ctx->s_ctx.exposure_min);
-		shutters[i] = min(shutters[i], ctx->s_ctx.exposure_max);
-		if (cit_step)
-			shutters[i] = round_up(shutters[i], cit_step);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */
-	calc_fl[0] = shutters[0];
-	for (i = 1; i < last_exp_cnt; i++)
-		calc_fl[0] += ctx->exposure[i];
-	calc_fl[0] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (2) current se + current me + current le */
-	calc_fl[1] = shutters[0];
-	for (i = 1; i < exp_cnt; i++)
-		calc_fl[1] += shutters[i];
-	calc_fl[1] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (3) readout time cannot be overlapped */
-	calc_fl[2] =
-		(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-		ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-	if (last_exp_cnt == exp_cnt)
-		for (i = 1; i < exp_cnt; i++) {
-			readout_diff = ctx->exposure[i] - shutters[i];
-			calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-		}
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		ctx->frame_length = max(ctx->frame_length, calc_fl[i]);
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = shutters[i];
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		break;
-	case 2:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[2] = shutters[1] / exp_cnt;
-		break;
-	case 3:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[1] = shutters[1] / exp_cnt;
-		rg_shutters[2] = shutters[2] / exp_cnt;
-		break;
-	default:
-		break;
-	}
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[2],
-					rg_shutters[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					rg_shutters[i] & 0xFF);
-			}
-		}
-	}
-	DRV_LOG(ctx, "exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-
-	DRV_LOG(ctx, "yuan brz out");
-	/* group hold end */
-}
-
-static int knightmfront_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	knightmfront_set_multi_shutter_frame_length(ctx, (u32 *)(*feature_data),
-		(u16) (*(feature_data + 1)), (u16) (*(feature_data + 2)));
-	return 0;
-}
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG(ctx, "AOV mode set stream in SCP side! (sid:%u)\n",
-			ctx->current_scenario_id);
-		return;
-	}
-
-	if (enable) {
-		if (ctx->s_ctx.chk_s_off_sta) {
-			DRV_LOG(ctx, "check_stream_off before stream on");
-			check_stream_off(ctx);
-		}
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-	} else {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-		if (ctx->s_ctx.reg_addr_fast_mode && ctx->fast_mode_on) {
-			ctx->fast_mode_on = FALSE;
-			ctx->ref_sof_cnt = 0;
-			DRV_LOG(ctx, "seamless_switch disabled.");
-			set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-			commit_i2c_buffer(ctx);
-		}
-	}
-	mdelay(10);
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int knightmfront_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-		if (*(u32 *)para)
-			knightmfront_set_shutter_convert(ctx, (u32 *)para);
-		streaming_ctrl(ctx, true);
-		return 0;
-}
-
-static int knightmfront_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-		return 0;
-}
-
-static unsigned int read_knightmfront_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != knightmfront_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != knightmfront_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = knightmfront_eeprom_info[meta_id].start;
-	readsize = knightmfront_eeprom_info[meta_id].size;
-
-	if (!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA9,
-	.i2c_write_id = 0xA8,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x000D,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-    kal_uint16 get_byte = 0;
-
-    adaptor_i2c_rd_u8(ctx->i2c_client, KNIGHTMFRONT_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-    return get_byte;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, KNIGHTMFRONT_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xE000;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KNIGHTMFRONT_EEPROM_WRITE_ID >> 1, reg, 0xA1);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KNIGHTMFRONT_EEPROM_WRITE_ID >> 1, reg, 0xA0);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == KNIGHTMFRONT_SENSOR_ID) && (data_length == CALI_DATA_SLAVE_LENGTH)
-            && (data_base == KNIGHTMFRONT_STEREO_START_ADDR)) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-        } else if ((pStereodata->uSensorId == KNIGHTMFRONT_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == KNIGHTMFRONT_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, KNIGHTMFRONT_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, KNIGHTMFRONT_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, KNIGHTMFRONT_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, KNIGHTMFRONT_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, KNIGHTMFRONT_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, KNIGHTMFRONT_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, KNIGHTMFRONT_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, KNIGHTMFRONT_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("knightmfront write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int knightmfront_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        *len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-    return 0;
-}
-
-static int knightmfront_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	if(*len > CALI_DATA_SLAVE_LENGTH) {
-		*len = CALI_DATA_SLAVE_LENGTH;
-	}
-	read_knightmfront_eeprom_info(ctx, EEPROM_META_STEREO_DATA,
-			(BYTE *)para, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KNIGHTMFRONT_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "knightmfront read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "knightmfront read_otp_info end\n");
-}
-
-static int knightmfront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int knightmfront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	ctx->i2c_write_id = 0x20;
-	LOG_INF("dbgmsg - reg(0x300a) = 0x%x, reg(0x300b) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x300a), subdrv_i2c_rd_u8(ctx, 0x300b));
-	LOG_INF("dbgmsg - reg(0x0A22) = 0x%x, reg(0x0A23) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x0A22), subdrv_i2c_rd_u8(ctx, 0x0A23));
-	LOG_INF("dbgmsg - reg(0x0136) = 0x%x, reg(0x0137) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x0136), subdrv_i2c_rd_u8(ctx, 0x0137));
-
-	subdrv_i2c_wr_u8(ctx, 0x0A02, 0x1B);
-	subdrv_i2c_wr_u8(ctx, 0x0A00, 0x01);
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			*sensor_id = (*sensor_id >> 4) & 0xFFFF;
-			LOG_INF("i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x0471) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					mdelay(4);
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = FALSE;
-				}
-				return ERROR_NONE;
-			}
-			LOG_INF("Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			LOG_INF("sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-	sensor_init(ctx);
-
-	/* HW GGC*/
-	set_sensor_cali(ctx);
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	else
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	u16 reg_gain = 0x0;
-	reg_gain = 1024 - (1024 * BASEGAIN) / gain;
-	return reg_gain;
-}
-
-static int knightmfront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	if (mode) {
-		if (mode == 5) {
-			subdrv_i2c_wr_u8(ctx, 0x0600, mode >> 4); /*black*/
-			subdrv_i2c_wr_u8(ctx, 0x0601, mode); /*black*/
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x0600, mode); /*100% Color bar*/
-		}
-	}
-	else if (ctx->test_pattern)
-		subdrv_i2c_wr_u8(ctx, 0x0600, 0x0000); /*No pattern*/
-
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-void get_sensor_cali(void* arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u8 qsc_is_valid = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		// Check QSC validation
-		qsc_is_valid = QSC_IS_VALID_VAL; // i2c_read_eeprom(ctx, OTP_QSC_VALID_ADDR);
-		if (qsc_is_valid != QSC_IS_VALID_VAL) {
-			DRV_LOGE(ctx, "QSC data is invalid, flag(%02x)", qsc_is_valid);
-		} else if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	//struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	return;
-}
-
-int knightmfront_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-	u16 rg_gain;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain, ctx->s_ctx.ana_gain_min);
-	gain = min(gain, ctx->s_ctx.ana_gain_max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	/* group hold end */
-	return 0;
-}
-
-static int power_off(struct subdrv_ctx *ctx, void *data)
-{
-	LOG_INF("dbgmsg - func: %s, line: %d\n", __FUNCTION__, __LINE__);
-	mdelay(2);
-	return 0;
-}
-
-static int knightmfront_get_eeprom_4cell_info(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 * feature_data = (u64 *) para;
-	u8 * data = (char *)(uintptr_t)(*(feature_data + 1));
-	u16 type = (u16)(*feature_data);
-
-	if (type  == FOUR_CELL_CAL_TYPE_XTALK_CAL){
-		*len = ctx->s_ctx.eeprom_info->qsc_size;
-		data[0] = *len & 0xFF;
-		data[1] = (*len >> 8) & 0xFF;
-		memcpy(data + 2, (u8*)(ctx->s_ctx.eeprom_info->preload_qsc_table), ctx->s_ctx.eeprom_info->qsc_size);
-	}
-
-	return 0;
-}
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfrontmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfrontmipiraw_Sensor.h
deleted file mode 100755
index 52a10933..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmfront_mipi_raw/knightmfrontmipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     knightmfrontmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KNIGHTMFRONTMIPI_SENSOR_H
-#define _KNIGHTMFRONTMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "knightmfront_ana_gain_table.h"
-#include "knightmfront_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/Makefile
deleted file mode 100755
index 36eb4222..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/knightmmainmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmain_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmain_Sensor_setting.h
deleted file mode 100755
index d6bd3d22..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmain_Sensor_setting.h
+++ /dev/null
@@ -1,3804 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     knightmmain_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KNIGHTMMAIN_SENSOR_SETTING_H
-#define _KNIGHTMMAIN_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static kal_uint16 knightmmain_soft_reset[] = {
-	0x0103, 0x01,
-};
-
-static kal_uint16 knightmmain_init_setting[] = {
-//@@init
-//@@ 0 100 Res 4096x3072_PD_992x760 HighGin 30fps
-//Mirror_Normal/Flip_Normal
-
-	0x0103, 0x01,
-	0x0102, 0x01,
-	0x0301, 0xc8,
-	0x0304, 0x01,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x0326, 0xcb,
-	0x0360, 0x01,
-	0x3001, 0x00,
-	0x300f, 0xf8,
-	0x3012, 0x41,
-	0x3014, 0xe1,
-	0x3015, 0x00,
-	0x3016, 0x78,
-	0x3017, 0xf0,
-	0x3018, 0x78,
-	0x3019, 0xd2,
-	0x301a, 0xd0,
-	0x301b, 0xf0,
-	0x301e, 0x88,
-	0x3021, 0x0f,
-	0x3022, 0x88,
-	0x3025, 0x89,
-	0x3027, 0x0c,
-	0x3044, 0x02,
-	0x3103, 0x00,
-	0x3106, 0x00,
-	0x3218, 0x00,
-	0x3400, 0x0c,
-	0x3401, 0x46,
-	0x3402, 0x02,
-	0x3403, 0x02,
-	0x3404, 0x03,
-	0x3405, 0x03,
-	0x3406, 0x0b,
-	0x3407, 0x0c,
-	0x3408, 0x04,
-	0x3409, 0x06,
-	0x340a, 0x04,
-	0x340b, 0x04,
-	0x340e, 0xff,
-	0x340f, 0x06,
-	0x3423, 0x00,
-	0x3424, 0x00,
-	0x3425, 0x14,
-	0x3426, 0x40,
-	0x3427, 0x04,
-	0x3428, 0x40,
-	0x3429, 0x00,
-	0x342a, 0x00,
-	0x342b, 0x00,
-	0x342c, 0x00,
-	0x3420, 0x00,
-	0x3421, 0x80,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x90,
-	0x3504, 0x4c,
-	0x3506, 0x38,
-	0x3507, 0x00,
-	0x3508, 0x03,
-	0x3509, 0x00,
-	0x350a, 0x01,
-	0x350b, 0x00,
-	0x350c, 0x00,
-	0x3540, 0x00,
-	0x3541, 0x00,
-	0x3542, 0x20,
-	0x3544, 0x4c,
-	0x3546, 0x38,
-	0x3548, 0x04,
-	0x3549, 0x00,
-	0x354a, 0x01,
-	0x354b, 0x00,
-	0x3600, 0x01,
-	0x3601, 0x20,
-	0x3602, 0x14,
-	0x3603, 0x00,
-	0x3604, 0x08,
-	0x3605, 0x10,
-	0x3606, 0x10,
-	0x3607, 0x24,
-	0x3608, 0x24,
-	0x3609, 0x09,
-	0x360a, 0x24,
-	0x3610, 0x40,
-	0x3611, 0xe0,
-	0x3612, 0x00,
-	0x3613, 0x90,
-	0x3614, 0x28,
-	0x3615, 0x19,
-	0x3616, 0xc1,
-	0x3617, 0x00,
-	0x3618, 0x80,
-	0x3619, 0x08,
-	0x361a, 0x0f,
-	0x361b, 0x33,
-	0x361c, 0x88,
-	0x361d, 0x88,
-	0x361e, 0x30,
-	0x3620, 0x55,
-	0x3621, 0xac,
-	0x3622, 0x10,
-	0x3623, 0x86,
-	0x3624, 0x01,
-	0x3625, 0x70,
-	0x3626, 0x46,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3630, 0x00,
-	0x3631, 0x60,
-	0x3632, 0x60,
-	0x3633, 0x00,
-	0x3634, 0x00,
-	0x3635, 0x00,
-	0x3636, 0x00,
-	0x3637, 0x00,
-	0x3638, 0x00,
-	0x3639, 0x02,
-	0x363a, 0x02,
-	0x363b, 0x99,
-	0x363c, 0x3f,
-	0x363d, 0x40,
-	0x363e, 0x10,
-	0x363f, 0x08,
-	0x3640, 0x00,
-	0x3641, 0x0c,
-	0x3642, 0x29,
-	0x3643, 0x7e,
-	0x3644, 0x07,
-	0x3645, 0x01,
-	0x3646, 0xbb,
-	0x3683, 0x00,
-	0x3684, 0x01,
-	0x3685, 0x00,
-	0x3686, 0x40,
-	0x3687, 0x80,
-	0x3688, 0x00,
-	0x3689, 0x88,
-	0x368a, 0x2e,
-	0x368e, 0x70,
-	0x3694, 0x6f,
-	0x3695, 0x80,
-	0x3696, 0x51,
-	0x369a, 0x00,
-	0x369b, 0x00,
-	0x369c, 0x00,
-	0x369d, 0x14,
-	0x369e, 0x00,
-	0x369f, 0x00,
-	0x36a2, 0x00,
-	0x36a3, 0x00,
-	0x36a4, 0x00,
-	0x36a6, 0x00,
-	0x36a7, 0x00,
-	0x36a8, 0x00,
-	0x3700, 0x2e,
-	0x3701, 0x06,
-	0x3702, 0x46,
-	0x3703, 0x28,
-	0x3706, 0x2d,
-	0x3708, 0x3a,
-	0x3709, 0x57,
-	0x370b, 0x54,
-	0x3711, 0x00,
-	0x3712, 0x50,
-	0x3713, 0x00,
-	0x3714, 0x62,
-	0x3716, 0x40,
-	0x3717, 0x02,
-	0x371d, 0x24,
-	0x371e, 0x13,
-	0x371f, 0x0c,
-	0x3720, 0x08,
-	0x3721, 0x15,
-	0x3725, 0x32,
-	0x3728, 0x01,
-	0x3729, 0x00,
-	0x3730, 0x04,
-	0x3731, 0x00,
-	0x3732, 0x80,
-	0x3734, 0x80,
-	0x3736, 0x80,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x373e, 0x08,
-	0x3740, 0x05,
-	0x3743, 0x00,
-	0x3745, 0x0f,
-	0x3746, 0x03,
-	0x3747, 0x00,
-	0x374d, 0x3f,
-	0x374e, 0x03,
-	0x374f, 0x00,
-	0x3753, 0x01,
-	0x3754, 0x14,
-	0x3755, 0x00,
-	0x3756, 0x16,
-	0x3757, 0x3f,
-	0x3758, 0x0e,
-	0x3759, 0x01,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3760, 0x10,
-	0x3761, 0x10,
-	0x3762, 0x10,
-	0x3763, 0x10,
-	0x3764, 0x10,
-	0x3765, 0x10,
-	0x3766, 0x20,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x376b, 0x00,
-	0x376c, 0x00,
-	0x376f, 0x02,
-	0x3770, 0x01,
-	0x3793, 0x00,
-	0x3795, 0x00,
-	0x3799, 0x82,
-	0x379b, 0x82,
-	0x37a2, 0x15,
-	0x37a5, 0x00,
-	0x37a6, 0x00,
-	0x37ff, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x18,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x1e,
-	0x380f, 0xa0,
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x0f,
-	0x381b, 0x48,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3823, 0x04,
-	0x3828, 0x02,
-	0x3829, 0x01,
-	0x382e, 0x41,
-	0x3830, 0x05,
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x383e, 0x00,
-	0x383f, 0x04,
-	0x3840, 0x00,
-	0x3841, 0x00,
-	0x3847, 0x00,
-	0x384a, 0x00,
-	0x384b, 0x10,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3856, 0x00,
-	0x3858, 0x00,
-	0x3859, 0x00,
-	0x3864, 0x02,
-	0x3867, 0x08,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x20,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x0b,
-	0x388f, 0xe0,
-	0x3894, 0x00,
-	0x3896, 0x60,
-	0x3899, 0x20,
-	0x38a0, 0x02,
-	0x38a6, 0xb0,
-	0x38a7, 0x84,
-	0x3900, 0x00,
-	0x3901, 0x00,
-	0x3902, 0x00,
-	0x3903, 0x00,
-	0x3904, 0x00,
-	0x3905, 0x00,
-	0x3906, 0x00,
-	0x3907, 0x00,
-	0x3908, 0x00,
-	0x3909, 0x00,
-	0x390a, 0x00,
-	0x390b, 0x0d,
-	0x390c, 0x0d,
-	0x390d, 0x0d,
-	0x390e, 0x14,
-	0x390f, 0x14,
-	0x3910, 0x14,
-	0x3911, 0x02,
-	0x3912, 0x04,
-	0x3913, 0x07,
-	0x3914, 0x0e,
-	0x3915, 0x0e,
-	0x3916, 0x0e,
-	0x3917, 0x77,
-	0x3918, 0x77,
-	0x3919, 0x77,
-	0x391a, 0x00,
-	0x391b, 0x00,
-	0x391c, 0x00,
-	0x391d, 0x00,
-	0x391e, 0x00,
-	0x391f, 0x3c,
-	0x3920, 0x0e,
-	0x3921, 0x0e,
-	0x3922, 0x0e,
-	0x3923, 0x0e,
-	0x3924, 0x12,
-	0x3925, 0x12,
-	0x3926, 0x12,
-	0x3927, 0x12,
-	0x3928, 0x00,
-	0x3929, 0x04,
-	0x392a, 0x00,
-	0x392b, 0x00,
-	0x392c, 0x00,
-	0x392d, 0xff,
-	0x392e, 0x7a,
-	0x392f, 0x7a,
-	0x3930, 0x9a,
-	0x3931, 0x9a,
-	0x3932, 0xc0,
-	0x3933, 0x44,
-	0x3934, 0x44,
-	0x3958, 0x04,
-	0x3959, 0x08,
-	0x395a, 0x0c,
-	0x395b, 0x10,
-	0x396b, 0x60,
-	0x396f, 0x9f,
-	0x3971, 0x01,
-	0x3973, 0x10,
-	0x3977, 0x14,
-	0x397a, 0x0f,
-	0x3987, 0x03,
-	0x8093, 0x02,
-	0x3d85, 0x0b,
-	0x3d8c, 0x77,
-	0x3d8d, 0xa0,
-	0x3daa, 0x00,
-	0x3dab, 0x14,
-	0x3dac, 0x00,
-	0x3dad, 0x00,
-	0x3dae, 0x07,
-	0x3daf, 0x8f,
-	0x4300, 0x00,
-	0x4301, 0x00,
-	0x4308, 0x00,
-	0x430b, 0x03,
-	0x430c, 0xff,
-	0x3f00, 0x10,
-	0x4500, 0x08,
-	0x4501, 0x00,
-	0x4502, 0x00,
-	0x4504, 0x80,
-	0x4505, 0x00,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x20,
-	0x450e, 0x00,
-	0x450f, 0x00,
-	0x4510, 0x00,
-	0x4523, 0x00,
-	0x4526, 0x00,
-	0x4542, 0x00,
-	0x4543, 0x00,
-	0x4544, 0x00,
-	0x4545, 0x00,
-	0x4546, 0x00,
-	0x4547, 0x10,
-	0x4550, 0x00,
-	0x4c00, 0x00,
-	0x4c0a, 0x40,
-	0x4c10, 0x02,
-	0x4c11, 0x06,
-	0x4c12, 0x02,
-	0x4c13, 0x06,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c5c, 0x00,
-	0x4c5d, 0x00,
-	0x4c5e, 0x00,
-	0x4c5f, 0x00,
-	0x4c60, 0x00,
-	0x4c61, 0x00,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4c6c, 0x00,
-	0x4c6d, 0x00,
-	0x4c6e, 0x00,
-	0x4c6f, 0x00,
-	0x4c70, 0x00,
-	0x4c71, 0x00,
-	0x4c72, 0x00,
-	0x4c73, 0x00,
-	0x4c74, 0x00,
-	0x4c75, 0x00,
-	0x4c76, 0x00,
-	0x4c77, 0x00,
-	0x4c7c, 0x00,
-	0x4c7d, 0x00,
-	0x4c7e, 0x00,
-	0x4c7f, 0x00,
-	0x4c80, 0x00,
-	0x4c81, 0x00,
-	0x4c82, 0x00,
-	0x4c83, 0x00,
-	0x4c84, 0x00,
-	0x4c85, 0x00,
-	0x4c86, 0x00,
-	0x4c87, 0x00,
-	0x4e01, 0x00,
-	0x4e02, 0x40,
-	0x4e08, 0x01,
-	0x4e09, 0x00,
-	0x3023, 0x01,
-	0x4009, 0x01,
-	0x400e, 0xc6,
-	0x400f, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x401a, 0x40,
-	0x401b, 0x04,
-	0x401e, 0x01,
-	0x401f, 0x30,
-	0x4020, 0x04,
-	0x4021, 0x00,
-	0x4022, 0x04,
-	0x4023, 0x00,
-	0x4024, 0x04,
-	0x4025, 0x00,
-	0x4026, 0x04,
-	0x4027, 0x00,
-	0x4028, 0x01,
-	0x4029, 0x00,
-	0x402a, 0x78,
-	0x402b, 0x78,
-	0x402c, 0x78,
-	0x402d, 0x78,
-	0x402e, 0x00,
-	0x4030, 0x00,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x3023, 0x00,
-	0x4100, 0x00,
-	0x4101, 0x00,
-	0x4103, 0x00,
-	0x4105, 0x00,
-	0x4288, 0x07,
-	0x428e, 0x00,
-	0x4580, 0x01,
-	0x4581, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x45c0, 0x61,
-	0x45c2, 0x04,
-	0x45cb, 0x30,
-	0x4602, 0x00,
-	0x4603, 0x15,
-	0x4609, 0x20,
-	0x460b, 0x07,
-	0x4640, 0x00,
-	0x4641, 0x1f,
-	0x4643, 0x0c,
-	0x4644, 0xc0,
-	0x4645, 0xb3,
-	0x464a, 0x00,
-	0x464b, 0x00,
-	0x464c, 0x01,
-	0x4680, 0x19,
-	0x4681, 0x81,
-	0x4683, 0x2b,
-	0x4686, 0x00,
-	0x4687, 0x00,
-	0x4688, 0x00,
-	0x4800, 0x04,
-	0x4802, 0x00,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x481b, 0x3c,
-	0x4829, 0x64,
-	0x4837, 0x08,
-	0x484a, 0x3f,
-	0x484b, 0x27,
-	0x4850, 0x47,
-	0x4853, 0x10,
-	0x4860, 0x00,
-	0x4861, 0xec,
-	0x4862, 0x04,
-	0x4872, 0x00,
-	0x4883, 0x00,
-	0x4884, 0x09,
-	0x4885, 0x1b,
-	0x4888, 0x90,
-	0x4889, 0x02,
-	0x488a, 0x00,
-	0x48c0, 0x00,
-	0x48c4, 0x00,
-	0x48c5, 0x00,
-	0x4910, 0xc8,
-	0x4911, 0x01,
-	0x4912, 0x0c,
-	0x491a, 0x40,
-	0x4920, 0x04,
-	0x4921, 0x00,
-	0x4922, 0x04,
-	0x4923, 0x00,
-	0x4924, 0x04,
-	0x4925, 0x00,
-	0x4926, 0x04,
-	0x4927, 0x00,
-	0x4930, 0x00,
-	0x4931, 0x10,
-	0x4932, 0x00,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x4a0c, 0x34,
-	0x4d00, 0x03,
-	0x4d01, 0x81, //;ca
-	0x4d02, 0xbf, //;bb
-	0x4d03, 0x58, //;c2
-	0x4d04, 0x04,
-	0x4d05, 0xf4, //;35
-	0x50c1, 0x00,
-	0x53c1, 0x00,
-	0x6c00, 0x00,
-	0x6c02, 0x00,
-	0x6c06, 0x00,
-	0x6c07, 0x00,
-	0x6c09, 0x06,
-	0x5000, 0xf7,
-	0x5001, 0x01,
-	0x5002, 0x17,
-	0x5003, 0x80,
-	0x5004, 0x80,
-	0x5005, 0x02,
-	0x5006, 0x80,
-	0x5007, 0x1e,
-	0x504f, 0x02,
-	0x5060, 0x00,
-	0x5061, 0x00,
-	0x5062, 0x00,
-	0x5063, 0x00,
-	0x5064, 0x20,
-	0x5065, 0x40,
-	0x5066, 0x18,
-	0x5067, 0x40,
-	0x5068, 0x02,
-	0x5069, 0x10,
-	0x506a, 0x10,
-	0x506b, 0x04,
-	0x506c, 0x06,
-	0x506d, 0x0c,
-	0x506e, 0x0e,
-	0x506f, 0x04,
-	0x5070, 0x04,
-	0x5071, 0x0c,
-	0x5072, 0x0c,
-	0x5073, 0x01,
-	0x5074, 0x01,
-	0x5075, 0xbb,
-	0x5076, 0x20,
-	0x5077, 0x40,
-	0x5078, 0x18,
-	0x5079, 0x40,
-	0x50c1, 0x00,
-	0x5110, 0x00,
-	0x5111, 0x14,
-	0x5112, 0x07,
-	0x5113, 0x8f,
-	0x5152, 0xa3,
-	0x5154, 0x0c,
-	0x5155, 0x0c,
-	0x5156, 0x0c,
-	0x5157, 0x0c,
-	0x5158, 0x0c,
-	0x5159, 0x0c,
-	0x515a, 0x0c,
-	0x515b, 0x0c,
-	0x5180, 0x81,
-	0x5181, 0x10,
-	0x5182, 0x10,
-	0x5183, 0x10,
-	0x5184, 0x10,
-	0x5185, 0x10,
-	0x5186, 0x10,
-	0x5187, 0x10,
-	0x518e, 0x04,
-	0x51b0, 0x30,
-	0x51d0, 0xf2,
-	0x51d1, 0x20,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51d9, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51de, 0x00,
-	0x51df, 0x00,
-	0x51e0, 0x02,
-	0x51e1, 0x02,
-	0x51e2, 0x00,
-	0x51e3, 0x00,
-	0x51f4, 0xbb,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x51fa, 0x06,
-	0x51fb, 0x10,
-	0x51fc, 0x00,
-	0x51fd, 0x00,
-	0x51fe, 0x00,
-	0x51ff, 0x00,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5202, 0x06,
-	0x5203, 0x10,
-	0x5205, 0x08,
-	0x5250, 0x14,
-	0x5251, 0x00,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5258, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527a, 0x00,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x5290, 0x01,
-	0x5291, 0x00,
-	0x5292, 0x01,
-	0x5293, 0x00,
-	0x5294, 0x00,
-	0x5295, 0x50,
-	0x5296, 0x00,
-	0x5297, 0x50,
-	0x5298, 0x00,
-	0x5299, 0x50,
-	0x529a, 0x00,
-	0x529b, 0x50,
-	0x529c, 0x00,
-	0x529d, 0x50,
-	0x529e, 0x00,
-	0x529f, 0x50,
-	0x52a0, 0x00,
-	0x52a1, 0x50,
-	0x52a2, 0x00,
-	0x52a3, 0x50,
-	0x52f0, 0x02,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f5, 0x01,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x5331, 0x02,
-	0x5332, 0x42,
-	0x5333, 0x24,
-	0x53c1, 0x00,
-	0x5410, 0x00,
-	0x5411, 0x14,
-	0x5412, 0x07,
-	0x5413, 0x8f,
-	0x54d0, 0x32,
-	0x54d1, 0x20,
-	0x54d2, 0x84,
-	0x54d3, 0x00,
-	0x5550, 0x14,
-	0x5553, 0x00,
-	0x55f0, 0x01,
-	0x55f1, 0x02,
-	0x55f2, 0x03,
-	0x55f3, 0x04,
-	0x55f4, 0x05,
-	0x55f5, 0x06,
-	0x55f6, 0x07,
-	0x55f7, 0x08,
-	0x55f8, 0x09,
-	0x55f9, 0x0a,
-	0x59f0, 0x40,
-	0x59f1, 0x40,
-	0x59f2, 0x40,
-	0x59f3, 0x40,
-	0x59f4, 0x40,
-	0x59f5, 0x40,
-	0x59f6, 0x40,
-	0x59f7, 0x40,
-	0x59f8, 0x40,
-	0x59f9, 0x40,
-	0x59fa, 0x40,
-	0x59fb, 0x40,
-	0x59fc, 0x40,
-	0x59fd, 0x40,
-	0x59fe, 0x40,
-	0x59ff, 0x40,
-	0x5a00, 0x40,
-	0x5a01, 0x40,
-	0x5a02, 0x40,
-	0x5a03, 0x40,
-	0x5a04, 0x40,
-	0x5a05, 0x40,
-	0x5a06, 0x40,
-	0x5a07, 0x40,
-	0x5a08, 0x40,
-	0x5a09, 0x40,
-	0x5a0a, 0x40,
-	0x5a0b, 0x40,
-	0x5a0c, 0x40,
-	0x5a0d, 0x40,
-	0x5a0e, 0x40,
-	0x5a0f, 0x40,
-	0x5a10, 0x40,
-	0x5a11, 0x40,
-	0x5a12, 0x40,
-	0x5a13, 0x40,
-	0x5a14, 0x40,
-	0x5a15, 0x40,
-	0x5a16, 0x40,
-	0x5a17, 0x40,
-	0x5a18, 0x40,
-	0x5a19, 0x40,
-	0x5a1a, 0x40,
-	0x5a1b, 0x40,
-	0x5a1c, 0x40,
-	0x5a1d, 0x40,
-	0x5a1e, 0x40,
-	0x5a1f, 0x40,
-	0x5a20, 0x40,
-	0x5a21, 0x40,
-	0x5a22, 0x40,
-	0x5a23, 0x40,
-	0x5a24, 0x40,
-	0x5a25, 0x40,
-	0x5a26, 0x40,
-	0x5a27, 0x40,
-	0x5a28, 0x40,
-	0x5a29, 0x40,
-	0x5a2a, 0x40,
-	0x5a2b, 0x40,
-	0x5a2c, 0x40,
-	0x5a2d, 0x40,
-	0x5a2e, 0x40,
-	0x5a2f, 0x40,
-	0x5a30, 0x40,
-	0x5a31, 0x40,
-	0x5a32, 0x40,
-	0x5a33, 0x40,
-	0x5a34, 0x40,
-	0x5a35, 0x40,
-	0x5a36, 0x40,
-	0x5a37, 0x40,
-	0x5a38, 0x40,
-	0x5a39, 0x40,
-	0x5a3a, 0x40,
-	0x5a3b, 0x40,
-	0x5a3c, 0x40,
-	0x5a3d, 0x40,
-	0x5a3e, 0x40,
-	0x5a3f, 0x40,
-	0x5a40, 0x40,
-	0x5a41, 0x40,
-	0x5a42, 0x40,
-	0x5a43, 0x40,
-	0x5a44, 0x40,
-	0x5a45, 0x40,
-	0x5a46, 0x40,
-	0x5a47, 0x40,
-	0x5a48, 0x40,
-	0x5a49, 0x40,
-	0x5a4a, 0xcd,
-	0x5a4b, 0xcd,
-	0x5a4c, 0xcd,
-	0x5a4d, 0xcd,
-	0x5a4e, 0xcd,
-	0x5a4f, 0xcd,
-	0x5a50, 0xcd,
-	0x5a51, 0xcd,
-	0x5a52, 0xcd,
-	0x5a53, 0xcd,
-	0x5a54, 0xcd,
-	0x5a55, 0xcd,
-	0x5a56, 0xcd,
-	0x5a57, 0xcd,
-	0x5a58, 0xcd,
-	0x5a59, 0xcd,
-	0x5a5a, 0xcd,
-	0x5a5b, 0xcd,
-	0x5a5c, 0xcd,
-	0x5a5d, 0xcd,
-	0x5a5e, 0xcd,
-	0x5a5f, 0xcd,
-	0x5a60, 0xcd,
-	0x5a61, 0xcd,
-	0x5a62, 0xcd,
-	0x5a63, 0xcd,
-	0x5a64, 0xcd,
-	0x5a65, 0xcd,
-	0x5a66, 0xcd,
-	0x5a67, 0xcd,
-	0x5a68, 0xcd,
-	0x5a69, 0xcd,
-	0x5a6a, 0xcd,
-	0x5a6b, 0xcd,
-	0x5a6c, 0xcd,
-	0x5a6d, 0xcd,
-	0x5a6e, 0xcd,
-	0x5a6f, 0xcd,
-	0x5a70, 0xcd,
-	0x5a71, 0xcd,
-	0x5a72, 0xcd,
-	0x5a73, 0xcd,
-	0x5a74, 0xcd,
-	0x5a75, 0xcd,
-	0x5a76, 0xcd,
-	0x5a77, 0xcd,
-	0x5a78, 0xcd,
-	0x5a79, 0xcd,
-	0x5a7a, 0xcd,
-	0x5a7b, 0xcd,
-	0x5a7c, 0xcd,
-	0x5a7d, 0xcd,
-	0x5a7e, 0xcd,
-	0x5a7f, 0xcd,
-	0x5a80, 0xcd,
-	0x5a81, 0xcd,
-	0x5a82, 0xcd,
-	0x5a83, 0xcd,
-	0x5a84, 0xcd,
-	0x5a85, 0xcd,
-	0x5a86, 0xcd,
-	0x5a87, 0xcd,
-	0x5a88, 0xcd,
-	0x5a89, 0xcd,
-	0x5a8a, 0xcd,
-	0x5a8b, 0xcd,
-	0x5a8c, 0xcd,
-	0x5a8d, 0xcd,
-	0x5a8e, 0xcd,
-	0x5a8f, 0xcd,
-	0x5a90, 0xcd,
-	0x5a91, 0xcd,
-	0x5a92, 0xcd,
-	0x5a93, 0xcd,
-	0x5a94, 0xcd,
-	0x5a95, 0xcd,
-	0x5a96, 0xcd,
-	0x5a97, 0xcd,
-	0x5a98, 0xcd,
-	0x5a99, 0xcd,
-	0x5a9a, 0xcd,
-	0x5a9b, 0xcd,
-	0x5a9c, 0xcd,
-	0x5a9d, 0xcd,
-	0x5a9e, 0xcd,
-	0x5a9f, 0xcd,
-	0x5aa0, 0xcd,
-	0x5aa1, 0xcd,
-	0x5aa2, 0xcd,
-	0x5aa3, 0xcd,
-	0x5aa4, 0xcd,
-	0x5aa5, 0xcd,
-	0x5aa6, 0xcd,
-	0x5aa7, 0xcd,
-	0x5aa8, 0xcd,
-	0x5aa9, 0xcd,
-	0x5aaa, 0xcd,
-	0x5aab, 0xcd,
-	0x5aac, 0xcd,
-	0x5aad, 0xcd,
-	0x5aae, 0xcd,
-	0x5aaf, 0xcd,
-	0x5ab0, 0xcd,
-	0x5ab1, 0xcd,
-	0x5ab2, 0xcd,
-	0x5ab3, 0xcd,
-	0x5ab4, 0xcd,
-	0x5ab5, 0xcd,
-	0x5ab6, 0xcd,
-	0x5ab7, 0xcd,
-	0x5ab8, 0xcd,
-	0x5ab9, 0xcd,
-	0x5aba, 0xcd,
-	0x5abb, 0xcd,
-	0x5abc, 0xcd,
-	0x5abd, 0xcd,
-	0x5abe, 0xcd,
-	0x5abf, 0xcd,
-	0x5ac0, 0xcd,
-	0x5ac1, 0xcd,
-	0x5ac2, 0xcd,
-	0x5ac3, 0xcd,
-	0x5ac4, 0xcd,
-	0x5ac5, 0xcd,
-	0x5ac6, 0xcd,
-	0x5ac7, 0xcd,
-	0x5ac8, 0xcd,
-	0x5ac9, 0xcd,
-	0x5aca, 0xcd,
-	0x5acb, 0xcd,
-	0x5acc, 0xcd,
-	0x5acd, 0xcd,
-	0x5ace, 0xcd,
-	0x5acf, 0xcd,
-	0x5ad0, 0xcd,
-	0x5ad1, 0xcd,
-	0x5ad2, 0xcd,
-	0x5ad3, 0xcd,
-	0x5ad4, 0xcd,
-	0x5ad5, 0xcd,
-	0x5ad6, 0xcd,
-	0x5ad7, 0xcd,
-	0x5ad8, 0xcd,
-	0x5ad9, 0xcd,
-	0x5ada, 0xcd,
-	0x5adb, 0xcd,
-	0x5adc, 0xcd,
-	0x5add, 0xcd,
-	0x5ade, 0xcd,
-	0x5adf, 0xcd,
-	0x5ae0, 0xcd,
-	0x5ae1, 0xcd,
-	0x5ae2, 0xcd,
-	0x5ae3, 0xcd,
-	0x5ae4, 0xcd,
-	0x5ae5, 0xcd,
-	0x5ae6, 0xcd,
-	0x5ae7, 0xcd,
-	0x5ae8, 0xcd,
-	0x5ae9, 0xcd,
-	0x5aea, 0xcd,
-	0x5aeb, 0xcd,
-	0x5aec, 0xcd,
-	0x5aed, 0xcd,
-	0x5aee, 0xcd,
-	0x5aef, 0xcd,
-	0x5af0, 0xcd,
-	0x5af1, 0xcd,
-	0x5af2, 0xcd,
-	0x5af3, 0xcd,
-	0x5af4, 0xcd,
-	0x5af5, 0xcd,
-	0x5af6, 0xcd,
-	0x5af7, 0xcd,
-	0x5af8, 0xcd,
-	0x5af9, 0xcd,
-	0x5afa, 0xcd,
-	0x5afb, 0xcd,
-	0x5afc, 0xcd,
-	0x5afd, 0xcd,
-	0x5afe, 0xcd,
-	0x5aff, 0xcd,
-	0x5b00, 0xcd,
-	0x5b01, 0xcd,
-	0x5b02, 0xcd,
-	0x5b03, 0xcd,
-	0x5b04, 0xcd,
-	0x5b05, 0xcd,
-	0x5b06, 0xcd,
-	0x5b07, 0xcd,
-	0x5b08, 0xcd,
-	0x5b09, 0xcd,
-	0x5b0a, 0xcd,
-	0x5b0b, 0xcd,
-	0x5b0c, 0xcd,
-	0x5b0d, 0xcd,
-	0x5b0e, 0xcd,
-	0x5b0f, 0xcd,
-	0x5b10, 0xcd,
-	0x5b11, 0xcd,
-	0x5b12, 0xcd,
-	0x5b13, 0xcd,
-	0x5b14, 0xcd,
-	0x5b15, 0xcd,
-	0x5b16, 0xcd,
-	0x5b17, 0xcd,
-	0x5b18, 0xcd,
-	0x5b19, 0xcd,
-	0x5b1a, 0xcd,
-	0x5b1b, 0xcd,
-	0x5b1c, 0xcd,
-	0x5b1d, 0xcd,
-	0x5b1e, 0xcd,
-	0x5b1f, 0xcd,
-	0x5b20, 0xcd,
-	0x5b21, 0xcd,
-	0x5b22, 0xcd,
-	0x5b23, 0xcd,
-	0x5b24, 0xcd,
-	0x5b25, 0xcd,
-	0x5b26, 0xcd,
-	0x5b27, 0xcd,
-	0x5b28, 0xcd,
-	0x5b29, 0xcd,
-	0x5b2a, 0xcd,
-	0x5b2b, 0xcd,
-	0x5b2c, 0xcd,
-	0x5b2d, 0xcd,
-	0x5b2e, 0xcd,
-	0x5b2f, 0xcd,
-	0x5b30, 0xcd,
-	0x5b31, 0xcd,
-	0x5b32, 0xcd,
-	0x5b33, 0xcd,
-	0x5b34, 0xcd,
-	0x5b35, 0xcd,
-	0x5b36, 0xcd,
-	0x5b37, 0xcd,
-	0x5b38, 0xcd,
-	0x5b39, 0xcd,
-	0x5b3a, 0xcd,
-	0x5b3b, 0xcd,
-	0x5b3c, 0xcd,
-	0x5b3d, 0xcd,
-	0x5b3e, 0xcd,
-	0x5b3f, 0xcd,
-	0x5b40, 0xcd,
-	0x5b41, 0xcd,
-	0x5b42, 0xcd,
-	0x5b43, 0xcd,
-	0x5b44, 0xcd,
-	0x5b45, 0xcd,
-	0x5b46, 0xcd,
-	0x5b47, 0xcd,
-	0x5b48, 0xcd,
-	0x5b49, 0xcd,
-	0x5b4a, 0xcd,
-	0x5b4b, 0xcd,
-	0x5b4c, 0xcd,
-	0x5b4d, 0xcd,
-	0x5b4e, 0xcd,
-	0x5b4f, 0xcd,
-	0x5b50, 0xcd,
-	0x5b51, 0xcd,
-	0x5b52, 0xcd,
-	0x5b53, 0xcd,
-	0x5b54, 0xcd,
-	0x5b55, 0xcd,
-	0x5b56, 0xcd,
-	0x5b57, 0xcd,
-	0x5b58, 0xcd,
-	0x5b59, 0xcd,
-	0x5b5a, 0xcd,
-	0x5b5b, 0xcd,
-	0x5b5c, 0xcd,
-	0x5b5d, 0xcd,
-	0x5b5e, 0xcd,
-	0x5b5f, 0xcd,
-	0x5b60, 0xcd,
-	0x5b61, 0xcd,
-	0x5b62, 0xcd,
-	0x5b63, 0xcd,
-	0x5b64, 0xcd,
-	0x5b65, 0xcd,
-	0x5b66, 0xcd,
-	0x5b67, 0xcd,
-	0x5b68, 0xcd,
-	0x5b69, 0xcd,
-	0x5b6a, 0xcd,
-	0x5b6b, 0xcd,
-	0x5b6c, 0xcd,
-	0x5b6d, 0xcd,
-	0x5b6e, 0xcd,
-	0x5b6f, 0xcd,
-	0x5b70, 0xcd,
-	0x5b71, 0xcd,
-	0x5b72, 0xcd,
-	0x5b73, 0xcd,
-	0x5b74, 0xcd,
-	0x5b75, 0xcd,
-	0x5b76, 0xcd,
-	0x5b77, 0xcd,
-	0x5b78, 0xcd,
-	0x5b79, 0xcd,
-	0x5b7a, 0xcd,
-	0x5b7b, 0xcd,
-	0x5b7c, 0xcd,
-	0x5b7d, 0xcd,
-	0x5b7e, 0xcd,
-	0x5b7f, 0xcd,
-	0x5b80, 0xcd,
-	0x5b81, 0xcd,
-	0x5b82, 0xcd,
-	0x5b83, 0xcd,
-	0x5b84, 0xcd,
-	0x5b85, 0xcd,
-	0x5b86, 0xcd,
-	0x5b87, 0xcd,
-	0x5b88, 0xcd,
-	0x5b89, 0xcd,
-	0x5b8a, 0xcd,
-	0x5b8b, 0xcd,
-	0x5b8c, 0xcd,
-	0x5b8d, 0xcd,
-	0x5b8e, 0xcd,
-	0x5b8f, 0xcd,
-	0x5b90, 0xcd,
-	0x5b91, 0xcd,
-	0x5b92, 0xcd,
-	0x5b93, 0xcd,
-	0x5b94, 0xcd,
-	0x5b95, 0xcd,
-	0x5b96, 0xcd,
-	0x5b97, 0xcd,
-	0x5b98, 0xcd,
-	0x5b99, 0xcd,
-	0x5b9a, 0xcd,
-	0x5b9b, 0xcd,
-	0x5b9c, 0xcd,
-	0x5b9d, 0xcd,
-	0x5b9e, 0xcd,
-	0x5b9f, 0xcd,
-	0x5ba0, 0xcd,
-	0x5ba1, 0xcd,
-	0x5ba2, 0xcd,
-	0x5ba3, 0xcd,
-	0x5ba4, 0xcd,
-	0x5ba5, 0xcd,
-	0x5ba6, 0xcd,
-	0x5ba7, 0xcd,
-	0x5ba8, 0xcd,
-	0x5ba9, 0xcd,
-	0x5baa, 0xcd,
-	0x5bab, 0xcd,
-	0x5bac, 0xcd,
-	0x5bad, 0xcd,
-	0x5bae, 0xcd,
-	0x5baf, 0xcd,
-	0x5bb0, 0xcd,
-	0x5bb1, 0xcd,
-	0x8000, 0x00,
-	0x8001, 0x08,
-	0x8002, 0x0a,
-	0x8003, 0x00,
-	0x8004, 0x25,
-	0x8005, 0x0f,
-	0x8006, 0x00,
-	0x8007, 0x3a,
-	0x8008, 0x16,
-	0x8009, 0x00,
-	0x800a, 0x51,
-	0x800b, 0x1d,
-	0x800c, 0x00,
-	0x800d, 0x52,
-	0x800e, 0x12,
-	0x800f, 0x00,
-	0x8010, 0x6a,
-	0x8011, 0x0f,
-	0x8012, 0x00,
-	0x8013, 0x81,
-	0x8015, 0x00,
-	0x8016, 0x9f,
-	0x8017, 0x23,
-	0x8018, 0x00,
-	0x8019, 0xcb,
-	0x801a, 0x6a,
-	0x801b, 0x00,
-	0x801c, 0xe1,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-	0x801e, 0x00,
-	0x801f, 0x00,
-	0x8020, 0x00,
-	0x8021, 0x00,
-	0x8022, 0x00,
-	0x8023, 0x00,
-	0x8024, 0x00,
-	0x8025, 0x00,
-	0x8026, 0x00,
-	0x8027, 0x00,
-	0x8028, 0x00,
-	0x8029, 0x00,
-	0x802a, 0x00,
-	0x802b, 0x00,
-	0x802c, 0x00,
-	0x802d, 0xc5,
-	0x802e, 0xe3,
-	0x802f, 0x97,
-	0x8030, 0xe3,
-	0x8031, 0xe3,
-	0x8032, 0x08,
-	0x8033, 0x00,
-	0x8034, 0x00,
-	0x8035, 0x08,
-	0x8036, 0xe7,
-	0x8037, 0x00,
-	0x8038, 0x00,
-	0x8039, 0xe5,
-	0x803a, 0x02,
-	0x803b, 0xe5,
-	0x803c, 0x02,
-	0x803d, 0xe5,
-	0x803e, 0x02,
-	0x803f, 0xe5,
-	0x8040, 0x02,
-	0x8041, 0xe5,
-	0x8042, 0x02,
-	0x8043, 0xe5,
-	0x8044, 0x02,
-	0x8045, 0xe5,
-	0x8046, 0x02,
-	0x8047, 0x00,
-	0x8048, 0x00,
-	0x8049, 0x00,
-	0x804a, 0x00,
-	0x804b, 0x00,
-	0x804c, 0x00,
-	0x804d, 0x00,
-	0x804e, 0x00,
-	0x804f, 0x08,
-	0x8050, 0x2b,
-	0x8051, 0x2f,
-	0x8052, 0xeb,
-	0x8053, 0x00,
-	0x8054, 0x00,
-	0x8055, 0x6f,
-	0x8056, 0x97,
-	0x8057, 0xe1,
-	0x8058, 0xe5,
-	0x8059, 0x6f,
-	0x805a, 0x97,
-	0x805b, 0xe1,
-	0x805c, 0xe5,
-	0x805d, 0x00,
-	0x805e, 0x00,
-	0x805f, 0x56,
-	0x8060, 0x60,
-	0x8061, 0x99,
-	0x8062, 0xc9,
-	0x8063, 0x00,
-	0x8064, 0x00,
-	0x8065, 0xeb,
-	0x8066, 0x1a,
-	0x8067, 0xeb,
-	0x8068, 0x1a,
-	0x8069, 0xeb,
-	0x806a, 0x1a,
-	0x806b, 0xeb,
-	0x806c, 0x5e,
-	0x806d, 0xeb,
-	0x806e, 0x5e,
-	0x806f, 0x1a,
-	0x8070, 0xe3,
-	0x8071, 0x00,
-	0x8072, 0x00,
-	0x8073, 0x54,
-	0x8074, 0x06,
-	0x8075, 0x00,
-	0x8076, 0x00,
-	0x8077, 0x54,
-	0x8078, 0x06,
-	0x8079, 0x00,
-	0x807a, 0x00,
-	0x807b, 0x54,
-	0x807c, 0x06,
-	0x807d, 0x00,
-	0x807e, 0x00,
-	0x807f, 0x00,
-	0x8080, 0x00,
-	0x8081, 0x00,
-	0x8082, 0x00,
-	0x8083, 0x00,
-	0x8084, 0x00,
-	0x8085, 0x00,
-	0x8086, 0x00,
-	0x8087, 0x00,
-	0x8088, 0x00,
-	0x8089, 0x00,
-	0x808a, 0x00,
-	0x808b, 0x00,
-	0x808c, 0x00,
-	0x808d, 0xe7,
-	0x808e, 0x00,
-	0x808f, 0xe7,
-	0x8090, 0x12,
-	0x8091, 0x56,
-	0x8092, 0xe5,
-	0x8093, 0x01,
-	0x8094, 0x00,
-	0x8095, 0xe7,
-	0x8096, 0x12,
-	0x8097, 0xe7,
-	0x8098, 0x17,
-	0x8099, 0xe7,
-	0x809a, 0x12,
-	0x809b, 0xe7,
-	0x809c, 0x12,
-	0x809d, 0x08,
-	0x809e, 0x97,
-	0x809f, 0xe3,
-	0x80a0, 0x08,
-	0x80a1, 0x08,
-	0x80a2, 0xe3,
-	0x80a3, 0x01,
-	0x80a4, 0xe9,
-	0x80a5, 0x00,
-	0x80a6, 0x00,
-	0x80a7, 0x98,
-	0x80a8, 0xb9,
-	0x80a9, 0x99,
-	0x80aa, 0xb7,
-	0x80ab, 0x00,
-	0x80ac, 0x00,
-	0x80ad, 0x02,
-	0x80ae, 0x24,
-	0x80af, 0x00,
-	0x80b0, 0x00,
-	0x80b1, 0x00,
-	0x80b2, 0x00,
-	0x80b3, 0xe5,
-	0x80b4, 0xe6,
-	0x80b5, 0x00,
-	0x80b6, 0x00,
-	0x80b7, 0x00,
-	0x80b8, 0x00,
-	0x80b9, 0x00,
-	0x80ba, 0x00,
-	0x80bb, 0x00,
-	0x80bc, 0x00,
-	0x80bd, 0x00,
-	0x80be, 0x00,
-	0x80bf, 0x06,
-	0x80c0, 0xe5,
-	0x80c1, 0x3b,
-	0x80c2, 0x3d,
-	0x80c3, 0x00,
-	0x80c4, 0x00,
-	0x80c5, 0x3d,
-	0x80c6, 0x47,
-	0x80c7, 0xd0,
-	0x80c8, 0xda,
-	0x80c9, 0x00,
-	0x80ca, 0x00,
-	0x80cb, 0x99,
-	0x80cc, 0x9d,
-	0x80cd, 0x00,
-	0x80ce, 0x00,
-	0x80cf, 0x00,
-	0x80d0, 0x00,
-	0x80d1, 0x00,
-	0x80d2, 0x00,
-	0x80d3, 0x00,
-	0x80d4, 0x00,
-	0x80d5, 0x00,
-	0x80d6, 0x00,
-	0x80d7, 0x00,
-	0x80d8, 0x00,
-	0x80d9, 0x00,
-	0x80da, 0x00,
-	0x80db, 0xe9,
-	0x80dc, 0xeb,
-	0x80dd, 0x00,
-	0x80de, 0x00,
-	0x80df, 0xe4,
-	0x80e0, 0xe6,
-	0x80e1, 0x00,
-	0x80e2, 0x00,
-	0x80e5, 0x00,
-	0x80e6, 0x00,
-	0x80e7, 0x00,
-	0x80e8, 0x00,
-	0x80e9, 0x02,
-	0x80e3, 0x08,
-	0x80e4, 0x50,
-	0x80ea, 0x00,
-	0x80eb, 0x00,
-	0x80ec, 0x00,
-	0x80ed, 0x00,
-	0x80ee, 0x00,
-	0x80ef, 0x00,
-	0x80f0, 0x00,
-	0x80f1, 0x00,
-	0x80f2, 0x00,
-	0x80f3, 0x00,
-	0x80f4, 0x00,
-	0x80f5, 0x00,
-	0x80f6, 0x00,
-	0x80f7, 0x00,
-	0x80f8, 0x00,
-	0x80f9, 0x00,
-	0x80fa, 0x00,
-	0x80fb, 0x00,
-	0x80fc, 0x00,
-	0x80fd, 0x00,
-	0x80fe, 0x00,
-	0x80ff, 0x00,
-	0x8100, 0x00,
-	0x8101, 0x00,
-	0x8102, 0x00,
-	0x8103, 0x00,
-	0x8104, 0x00,
-	0x8105, 0x00,
-	0x8106, 0x00,
-	0x8107, 0x00,
-	0x8108, 0x00,
-	0x8109, 0x00,
-	0x810a, 0x00,
-	0x810b, 0x00,
-	0x810c, 0x00,
-	0x810d, 0x00,
-	0x810e, 0x00,
-	0x810f, 0xee,
-	0x8110, 0xef,
-	0x8111, 0xa1,
-	0x8112, 0xa6,
-	0x8113, 0xf4,
-	0x8114, 0xf9,
-	0x8115, 0xdd,
-	0x8116, 0xe5,
-	0x8117, 0x6b,
-	0x8118, 0x97,
-	0x8119, 0x08,
-	0x811b, 0x08,
-	0x811c, 0x52,
-	0x811d, 0x08,
-	0x811e, 0x52,
-	0x811f, 0x08,
-	0x8120, 0x52,
-	0x8121, 0x08,
-	0x8123, 0x08,
-	0x8124, 0x52,
-	0x8125, 0x08,
-	0x8126, 0x52,
-	0x8127, 0x08,
-	0x8128, 0x52,
-	0x811a, 0x51,
-	0x8122, 0x52,
-	0x8129, 0x08,
-	0x812a, 0x54,
-	0x812b, 0x00,
-	0x812c, 0x00,
-	0x812d, 0x08,
-	0x812e, 0x54,
-	0x812f, 0x00,
-	0x8130, 0x00,
-	0x8131, 0x08,
-	0x8132, 0x54,
-	0x8133, 0x00,
-	0x8134, 0x00,
-	0x8135, 0x08,
-	0x8136, 0x54,
-	0x8137, 0x00,
-	0x8138, 0x00,
-	0x8139, 0x08,
-	0x813a, 0x54,
-	0x813b, 0x00,
-	0x813c, 0x00,
-	0x813d, 0x08,
-	0x813e, 0x54,
-	0x813f, 0x00,
-	0x8140, 0x00,
-	0x8141, 0x08,
-	0x8142, 0x54,
-	0x8143, 0x00,
-	0x8144, 0x00,
-	0x8145, 0x08,
-	0x8146, 0x54,
-	0x8147, 0x00,
-	0x8148, 0x00,
-	0x8149, 0x6d,
-	0x814a, 0x95,
-	0x814b, 0xdf,
-	0x814c, 0xe3,
-	0x814d, 0x6d,
-	0x814e, 0x95,
-	0x814f, 0xdf,
-	0x8150, 0xe3,
-	0x8151, 0x6d,
-	0x8152, 0x95,
-	0x8153, 0xdf,
-	0x8154, 0xe3,
-	0x8155, 0x6d,
-	0x8156, 0x95,
-	0x8157, 0xdf,
-	0x8158, 0xe3,
-	0x8159, 0x95,
-	0x815a, 0x6d,
-	0x815b, 0xe3,
-	0x815c, 0xdf,
-	0x815d, 0x00,
-	0x815e, 0x00,
-	0x815f, 0x95,
-	0x8160, 0x6d,
-	0x8161, 0xe3,
-	0x8162, 0xdf,
-	0x8163, 0x00,
-	0x8164, 0x00,
-	0x8165, 0x95,
-	0x8166, 0x6d,
-	0x8167, 0xe3,
-	0x8168, 0xdf,
-	0x8169, 0x00,
-	0x816a, 0x00,
-	0x816b, 0x95,
-	0x816c, 0x6d,
-	0x816d, 0xe3,
-	0x816e, 0xdf,
-	0x816f, 0x00,
-	0x8170, 0x00,
-	0x8171, 0x6d,
-	0x8172, 0x95,
-	0x8173, 0xdf,
-	0x8174, 0xe3,
-	0x8175, 0x6d,
-	0x8176, 0x95,
-	0x8177, 0xdf,
-	0x8178, 0xe3,
-	0x8179, 0x6d,
-	0x817a, 0x95,
-	0x817b, 0xdf,
-	0x817c, 0xe3,
-	0x817d, 0x6d,
-	0x817e, 0x95,
-	0x817f, 0xdf,
-	0x8180, 0xe3,
-	0x8056, 0x00,
-	0x8057, 0x00,
-	0x8058, 0x00,
-	0x8059, 0x00,
-	0x805a, 0x00,
-	0x805b, 0x00,
-	0x805c, 0x00,
-	0x802f, 0x08,
-	0x806b, 0x00,
-	0x3047, 0x07,
-	0x3200, 0x00,
-	0x3201, 0x10,
-	0x3202, 0x20,
-	0x382a, 0x81,
-	0x382b, 0x08,
-	0x0361, 0x00,
-	0x370b, 0x54,
-	0x450d, 0x00,
-	0x4509, 0x00,
-	0x4511, 0x02,
-	0x484f, 0x20,
-};
-
-static kal_uint16 knightmmain_preview_setting[] = {
-//@@M07-4096x3072-PD-992x760-HighGain-30fps
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x90,
-	0x3508, 0x03,
-	0x3509, 0x00,
-	0x3606, 0x10,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3684, 0x01,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x18,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x1e,
-	0x380f, 0xa0,
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x0f,
-	0x381b, 0x48,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x20,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x0b,
-	0x388f, 0xe0,
-	0x396b, 0x60,
-	0x4505, 0x00,
-	0x45c0, 0x61,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5000, 0xf7,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5205, 0x08,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-};
-
-static kal_uint16 knightmmain_capture_setting[] = {
-//@@M07-4096x3072-PD-992x760-HighGain-30fps
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x90,
-	0x3508, 0x03,
-	0x3509, 0x00,
-	0x3606, 0x10,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3684, 0x01,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x18,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x1e,
-	0x380f, 0xa0,
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x0f,
-	0x381b, 0x48,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x20,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x0b,
-	0x388f, 0xe0,
-	0x396b, 0x60,
-	0x4505, 0x00,
-	0x45c0, 0x61,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5000, 0xf7,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5205, 0x08,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-};
-
-static kal_uint16 knightmmain_normal_video_setting[] = {
-//@@M08-4096x2304-PD-992x576-HighGain-30fps
-
-	0x0100, 0x00,
-	0x0305, 0x18,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x90,
-	0x3508, 0x03,
-	0x3509, 0x00,
-	0x3606, 0x10,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3684, 0x01,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x03,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x15,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x09,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x1e,
-	0x380f, 0xa0,
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x09,
-	0x381b, 0xfc,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x09,
-	0x388f, 0x00,
-	0x396b, 0x60,
-	0x4505, 0x00,
-	0x45c0, 0x61,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,
-	0x4684, 0x13,
-	0x4837, 0x09,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5000, 0xf7,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5205, 0x08,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-};
-
-static kal_uint16 knightmmain_hs_video_setting[] = {
-//@@M09-4096x2304-PD-992x576-NormGain-60fps
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x13,
-	0x3502, 0x90,
-	0x3508, 0x03,
-	0x3509, 0x00,
-	0x3606, 0x10,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3684, 0x01,
-	0x3738, 0x60,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x40,
-	0x373d, 0x12,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x03,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x15,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x09,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x45,
-	0x380e, 0x14,
-	0x380f, 0x08,
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x0a,
-	0x381b, 0x04,
-	0x381c, 0x01,
-	0x381d, 0x45,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0x45,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x09,
-	0x388f, 0x00,
-	0x396b, 0x60,
-	0x4505, 0x00,
-	0x45c0, 0x61,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5000, 0xf7,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5205, 0x08,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x14,
-	0x801d, 0x6a,
-	0x801a, 0x6a,
-};
-
-static kal_uint16 knightmmain_slim_video_setting[] = {
-//@@M04-1920x1080-PD-960x540-NormGain-120fps
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x09,
-	0x3502, 0xc4,
-	0x3508, 0x0f,
-	0x3509, 0x80,
-	0x3606, 0x10,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3684, 0x01,
-	0x3738, 0x60,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x40,
-	0x373d, 0x12,
-	0x3761, 0x18,
-	0x3767, 0x38,
-	0x3768, 0x48,
-	0x3769, 0x58,
-	0x3800, 0x00,
-	0x3801, 0xe0,
-	0x3802, 0x03,
-	0x3803, 0x70,
-	0x3804, 0x1f,
-	0x3805, 0x5f,
-	0x3806, 0x14,
-	0x3807, 0xcf,
-	0x3808, 0x07,
-	0x3809, 0x80,
-	0x380a, 0x04,
-	0x380b, 0x38,
-	0x380c, 0x01,
-	0x380d, 0x45,
-	0x380e, 0x0a,
-	0x380f, 0x04,
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x31,
-	0x381a, 0x04,
-	0x381b, 0x90,
-	0x381c, 0x01,
-	0x381d, 0x45,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x01,
-	0x3831, 0x04,
-	0x3837, 0x04,
-	0x384c, 0x01,
-	0x384d, 0x45,
-	0x3888, 0x00,
-	0x3889, 0x20,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x0f,
-	0x388d, 0x00,
-	0x388e, 0x04,
-	0x388f, 0x38,
-	0x396b, 0x60,
-	0x4505, 0x00,
-	0x45c0, 0x61,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x4c00, 0xc2,
-	0x4c14, 0x00,
-	0x4c15, 0x02,
-	0x4c16, 0x04,
-	0x4c17, 0x06,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x08,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x00,
-	0x4c35, 0x02,
-	0x4c36, 0x04,
-	0x4c37, 0x06,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x08,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x00,
-	0x4c55, 0x02,
-	0x4c56, 0x04,
-	0x4c57, 0x06,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x08,
-	0x4c62, 0x07,
-	0x4c63, 0x80,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x04,
-	0x4c67, 0x38,
-	0x4c68, 0x07,
-	0x4c69, 0x80,
-	0x4c6a, 0x04,
-	0x4c6b, 0x38,
-	0x4010, 0xf8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x05,
-	0x4017, 0x02,
-	0x4018, 0x05,
-	0x4031, 0x08,
-	0x4032, 0x00,
-	0x4033, 0x08,
-	0x4034, 0x00,
-	0x4035, 0x00,
-	0x4036, 0x00,
-	0x4037, 0x00,
-	0x4040, 0x00,
-	0x4041, 0x00,
-	0x4042, 0x00,
-	0x4043, 0x00,
-	0x4044, 0x00,
-	0x4045, 0x00,
-	0x4046, 0x00,
-	0x4047, 0x00,
-	0x4583, 0x07,
-	0x4584, 0xa0,
-	0x4641, 0x3c,
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x08,
-	0x4933, 0x08,
-	0x4934, 0x00,
-	0x4935, 0x08,
-	0x4936, 0x00,
-	0x4937, 0x08,
-	0x4940, 0x00,
-	0x4941, 0x0c,
-	0x4942, 0x00,
-	0x4943, 0x0c,
-	0x4944, 0x0f,
-	0x4945, 0xe0,
-	0x4946, 0x0f,
-	0x4947, 0xe0,
-	0x5000, 0xf7,
-	0x5001, 0x81,
-	0x5005, 0x42,
-	0x5007, 0x0e,
-	0x5180, 0x81,
-	0x51d2, 0x84,
-	0x51d3, 0x00,
-	0x51d8, 0x08,
-	0x51da, 0x02,
-	0x51db, 0x03,
-	0x51dc, 0x06,
-	0x51dd, 0x07,
-	0x51f8, 0x10,
-	0x51f9, 0x20,
-	0x5200, 0x10,
-	0x5201, 0x20,
-	0x5205, 0x0c,
-	0x5252, 0x20,
-	0x5253, 0x03,
-	0x5259, 0xdc,
-	0x525e, 0x10,
-	0x525f, 0x20,
-	0x5260, 0x06,
-	0x5261, 0x10,
-	0x526a, 0x08,
-	0x526b, 0x04,
-	0x526c, 0x00,
-	0x526d, 0x00,
-	0x526e, 0x02,
-	0x526f, 0x03,
-	0x5270, 0x06,
-	0x5271, 0x07,
-	0x5272, 0x00,
-	0x5273, 0x00,
-	0x5274, 0x02,
-	0x5275, 0x02,
-	0x5277, 0x03,
-	0x5279, 0x03,
-	0x527b, 0x80,
-	0x527c, 0x01,
-	0x527d, 0x55,
-	0x52f1, 0x00,
-	0x52f2, 0x00,
-	0x52f3, 0x00,
-	0x52f4, 0x00,
-	0x52f6, 0x00,
-	0x52f7, 0x00,
-	0x52f8, 0x00,
-	0x52f9, 0x00,
-	0x8014, 0x14,
-	0x801d, 0x6a,
-	0x801a, 0x6a,
-};
-
-static kal_uint16 knightmmain_custom1_setting[] = {
-//@@M05-1920x1080-noPD-NormGain-240fps
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x04,
-	0x3502, 0xc4,
-	0x3508, 0x0f,
-	0x3509, 0x80,
-	0x3606, 0x00,
-	0x3627, 0x81,
-	0x3628, 0xc8,
-	0x3684, 0x00,
-	0x3738, 0x60,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x40,
-	0x373d, 0x12,
-	0x3761, 0x18,
-	0x3767, 0x38,
-	0x3768, 0x48,
-	0x3769, 0x58,
-	0x3800, 0x00,
-	0x3801, 0xe0,
-	0x3802, 0x03,
-	0x3803, 0x70,
-	0x3804, 0x1f,
-	0x3805, 0x5f,
-	0x3806, 0x14,
-	0x3807, 0xcf,
-	0x3808, 0x07,
-	0x3809, 0x80,
-	0x380a, 0x04,
-	0x380b, 0x38,
-	0x380c, 0x01,
-	0x380d, 0x45,
-	0x380e, 0x05,
-	0x380f, 0x00,
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x31,
-	0x3815, 0x31,
-	0x381a, 0x02,
-	0x381b, 0x78,
-	0x381c, 0x01,
-	0x381d, 0x45,
-	0x381f, 0x02,
-	0x3820, 0x43,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3831, 0x00,
-	0x3837, 0x04,
-	0x384c, 0x01,
-	0x384d, 0x45,
-	0x3888, 0x00,
-	0x3889, 0x00,
-	0x388a, 0x00,
-	0x388b, 0x00,
-	0x388c, 0x00,
-	0x388d, 0x00,
-	0x388e, 0x00,
-	0x388f, 0x00,
-	0x396b, 0x62,
-	0x4505, 0x01,
-	0x45c0, 0x60,
-	0x480e, 0x00,
-	0x4813, 0x00,
-	0x4c00, 0xc2,
-	0x4c14, 0x00,
-	0x4c15, 0x02,
-	0x4c16, 0x04,
-	0x4c17, 0x06,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x08,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x00,
-	0x4c35, 0x02,
-	0x4c36, 0x04,
-	0x4c37, 0x06,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x08,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x00,
-	0x4c55, 0x02,
-	0x4c56, 0x04,
-	0x4c57, 0x06,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x08,
-	0x4c62, 0x07,
-	0x4c63, 0x80,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x04,
-	0x4c67, 0x38,
-	0x4c68, 0x07,
-	0x4c69, 0x80,
-	0x4c6a, 0x04,
-	0x4c6b, 0x38,
-	0x4010, 0xf8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x05,
-	0x4017, 0x02,
-	0x4018, 0x05,
-	0x4031, 0x05,
-	0x4032, 0x00,
-	0x4033, 0x05,
-	0x4034, 0x00,
-	0x4035, 0x00,
-	0x4036, 0x00,
-	0x4037, 0x00,
-	0x4040, 0x00,
-	0x4041, 0x00,
-	0x4042, 0x00,
-	0x4043, 0x00,
-	0x4044, 0x00,
-	0x4045, 0x00,
-	0x4046, 0x00,
-	0x4047, 0x00,
-	0x4583, 0x07,
-	0x4584, 0xa0,
-	0x4641, 0x00,
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x04,
-	0x4933, 0x04,
-	0x4934, 0x00,
-	0x4935, 0x01,
-	0x4936, 0x00,
-	0x4937, 0x01,
-	0x4940, 0x00,
-	0x4941, 0x0c,
-	0x4942, 0x00,
-	0x4943, 0x0c,
-	0x4944, 0x0f,
-	0x4945, 0xe0,
-	0x4946, 0x0f,
-	0x4947, 0xe0,
-	0x5000, 0x55,
-	0x5001, 0x00,
-	0x5005, 0x02,
-	0x5007, 0x0e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5205, 0x08,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x14,
-	0x801d, 0x6a,
-	0x801a, 0x6a,
-};
-
-static kal_uint16 knightmmain_custom2_setting[] = {
-//@@M01-4096x3072-PD-992x760-HighGain-24fps
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x90,
-	0x3508, 0x03,
-	0x3509, 0x00,
-	0x3606, 0x10,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3684, 0x01,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x18,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x26, //;1e
-	0x380f, 0x48, //;a0
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x0f,
-	0x381b, 0x48,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x20,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x0b,
-	0x388f, 0xe0,
-	0x396b, 0x60,
-	0x4505, 0x00,
-	0x45c0, 0x61,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5000, 0xf7,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5205, 0x08,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-};
-
-static kal_uint16 knightmmain_custom3_setting[] = {
-//@@ M02-2048x1536-PD-992-760-HighGain-30fps
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x90,
-	0x3508, 0x04,
-	0x3509, 0x00,
-	0x3606, 0x10,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3684, 0x01,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x18,
-	0x3807, 0x3f,
-	0x3808, 0x08,
-	0x3809, 0x00,
-	0x380a, 0x06,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x1e,
-	0x380f, 0xa2,
-	0x3810, 0x00,
-	0x3811, 0x09,
-	0x3812, 0x00,
-	0x3813, 0x08,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x0f,
-	0x381b, 0x48,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x20,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x0b,
-	0x388f, 0xe0,
-	0x396b, 0x60,
-	0x4505, 0x00,
-	0x45c0, 0x61,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x04,
-	0x4032, 0x00,
-	0x4033, 0x04,
-	0x4034, 0x00,
-	0x4035, 0x00,
-	0x4036, 0x00,
-	0x4037, 0x00,
-	0x4040, 0x00,
-	0x4041, 0x2c,
-	0x4042, 0x00,
-	0x4043, 0x2c,
-	0x4044, 0x00,
-	0x4045, 0x00,
-	0x4046, 0x00,
-	0x4047, 0x00,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,
-	0x4684, 0x19,
-	0x4837, 0x08,
-	0x4850, 0x42,
-	0x4931, 0x04,
-	0x4933, 0x04,
-	0x4934, 0x00,
-	0x4935, 0x00,
-	0x4936, 0x00,
-	0x4937, 0x00,
-	0x4940, 0x00,
-	0x4941, 0x2c,
-	0x4942, 0x00,
-	0x4943, 0x2c,
-	0x4944, 0x00,
-	0x4945, 0x00,
-	0x4946, 0x00,
-	0x4947, 0x00,
-	0x5000, 0xf7,
-	0x5001, 0x81,
-	0x5005, 0x42,
-	0x5007, 0x1e,
-	0x5180, 0x83,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5205, 0x08,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-};
-
-static kal_uint16 knightmmain_custom4_setting[] = {
-//@@M03-4096x2048-PD-992x512-HighGain-30fps
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x13,
-	0x3502, 0xf8,
-	0x3508, 0x04,
-	0x3509, 0x00,
-	0x3606, 0x10,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3684, 0x01,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x04,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x14,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x08,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x1e,
-	0x380f, 0xa0,
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x09,
-	0x381b, 0xfc,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x08,
-	0x388f, 0x00,
-	0x396b, 0x60,
-	0x4505, 0x00,
-	0x45c0, 0x61,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5000, 0xf7,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5205, 0x08,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-};
-
-static kal_uint16 knightmmain_custom5_setting[] = {
-//@@M06-2048x1152-PD-992x576-HighGain-30fps
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x80,
-	0x3508, 0x04,
-	0x3509, 0x00,
-	0x3606, 0x10,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3684, 0x01,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x03,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x15,
-	0x3807, 0x3f,
-	0x3808, 0x08,
-	0x3809, 0x00,
-	0x380a, 0x04,
-	0x380b, 0x80,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x1e,
-	0x380f, 0xa0,
-	0x3810, 0x00,
-	0x3811, 0x09,
-	0x3812, 0x00,
-	0x3813, 0x08,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x09,
-	0x381b, 0xfc,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x09,
-	0x388f, 0x00,
-	0x396b, 0x60,
-	0x4505, 0x00,
-	0x45c0, 0x61,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xf8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x01,
-	0x4032, 0x00,
-	0x4033, 0x01,
-	0x4034, 0x00,
-	0x4035, 0x02,
-	0x4036, 0x00,
-	0x4037, 0x02,
-	0x4040, 0x00,
-	0x4041, 0x00,
-	0x4042, 0x00,
-	0x4043, 0x00,
-	0x4044, 0x00,
-	0x4045, 0x00,
-	0x4046, 0x00,
-	0x4047, 0x00,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x04,
-	0x4933, 0x04,
-	0x4934, 0x00,
-	0x4935, 0x00,
-	0x4936, 0x00,
-	0x4937, 0x00,
-	0x4940, 0x00,
-	0x4941, 0x2c,
-	0x4942, 0x00,
-	0x4943, 0x2c,
-	0x4944, 0x00,
-	0x4945, 0x00,
-	0x4946, 0x00,
-	0x4947, 0x00,
-	0x5000, 0xf7,
-	0x5001, 0x81,
-	0x5005, 0x42,
-	0x5007, 0x1e,
-	0x5180, 0x83,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5205, 0x08,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmain_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmain_ana_gain_table.h
deleted file mode 100755
index bb0514a9..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmain_ana_gain_table.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 knightmmain_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __KNIGHTMMAIN_ANA_GAIN_TABLE_H__
-#define __KNIGHTMMAIN_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 knightmmain_ana_gain_table[] = {
-	1024,
-	1088,
-	1152,
-	1216,
-	1280,
-	1344,
-	1408,
-	1472,
-	1536,
-	1600,
-	1664,
-	1728,
-	1792,
-	1856,
-	1920,
-	1984,
-	2048,
-	2176,
-	2304,
-	2432,
-	2560,
-	2688,
-	2816,
-	2944,
-	3072,
-	3200,
-	3328,
-	3456,
-	3584,
-	3712,
-	3840,
-	3968,
-	4096,
-	4352,
-	4608,
-	4864,
-	5120,
-	5376,
-	5632,
-	5888,
-	6144,
-	6400,
-	6656,
-	6912,
-	7168,
-	7424,
-	7680,
-	7936,
-	8192,
-	8704,
-	9216,
-	9728,
-	10240,
-	10752,
-	11264,
-	11776,
-	12288,
-	12800,
-	13312,
-	13824,
-	14336,
-	14848,
-	15360,
-	15872,
-	16384,
-	17408,
-	18432,
-	19456,
-	20480,
-	21504,
-	22528,
-	23552,
-	24576,
-	25600,
-	26624,
-	27648,
-	28672,
-	29696,
-	30720,
-	31744,
-	32768,
-	34816,
-	36864,
-	38912,
-	40960,
-	43008,
-	45056,
-	47104,
-	49152,
-	51200,
-	53248,
-	55296,
-	57344,
-	59392,
-	61440,
-	63488,
-};
-
-#endif
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmainmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmainmipiraw_Sensor.c
deleted file mode 100755
index 867ec7e8..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmainmipiraw_Sensor.c
+++ /dev/null
@@ -1,2069 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 knightmmainmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "knightmmainmipiraw_Sensor.h"
-//OV50D40
-#define SENSOR_NAME  SENSOR_DRVNAME_KNIGHTMMAIN_MIPI_RAW
-
-//eeprom ic2 addr, max size
-#define KNIGHTMMAIN_EEPROM_ADDR        (0xA0)
-#define KNIGHTMMAIN_EERPOM_MAX_OFFSET  (0x4000)
-//#define OPLUS_CAMERA_COMMON_DATA_LENGTH (40)
-
-#define PFX "knightmmain_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-
-
-#ifdef  EEPROM_WRITE_DATA_MAX_LENGTH
-#undef  EEPROM_WRITE_DATA_MAX_LENGTH
-#endif
-//eeprom write Dual camera calibration, aec write back
-#define EEPROM_WRITE_DATA_MAX_LENGTH       (64)
-#define KNIGHTMMAIN_STEREO_MW_START_ADDR  (0x2980)
-#define KNIGHTMMAIN_AESYNC_START_ADDR     (0x2F90)
-
-#define KNIGHTMMAIN_IMGSENSOR_ID   (0x565044)//need modify
-
-//cloud write
-#define KNIGHTMMAIN_UNIQUE_SENSOR_ID_ADDR    (0x7000)  //?????
-#define KNIGHTMMAIN_UNIQUE_SENSOR_ID_LENGTH  (16)
-// static BYTE knightmmain_unique_id[KNIGHTMMAIN_UNIQUE_SENSOR_ID_LENGTH] = { 0 };
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static kal_uint8 otp_data_checksum[KNIGHTMMAIN_EERPOM_MAX_OFFSET] = {0};
-static int get_sensor_temperature(void *arg);
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int knightmmain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_get_eeprom_comdata(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_set_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void knightmmain_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length);
-static int knightmmain_get_readout_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmain_get_pdafblock_info(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static bool g_id_from_dts_flag = false;
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id);
-//static int knightmmain_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-//static int knightmmain_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-//static int knightmmain_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-//static int knightmmain_get_cloud_otp_info(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-//static int knightmmain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-/* STRUCT */
-
-static struct eeprom_map_info knightmmain_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008,0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8,23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0x0000, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, KNIGHTMMAIN_STEREO_MW_START_ADDR, 0xFFFF, 0xFFFF, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0, 0, 0, 0, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0, 0, 0, 0, false },
-	{ EEPROM_META_DISTORTION_DATA, 0, 0, 0, 0, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, knightmmain_set_test_pattern},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, knightmmain_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, knightmmain_get_eeprom_comdata},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, knightmmain_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, knightmmain_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, knightmmain_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, knightmmain_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_FRAMELENGTH, knightmmain_set_frame_length},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, knightmmain_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_ESHUTTER, knightmmain_set_shutter},
-	{SENSOR_FEATURE_SET_GAIN, knightmmain_set_gain},
-	{SENSOR_FEATURE_GET_PDAF_INFO, knightmmain_get_pdafblock_info},
-	{SENSOR_FEATURE_GET_READOUT_BY_SCENARIO, knightmmain_get_readout_by_scenario},
-	//{SENSOR_FEATURE_SET_STREAMING_SUSPEND, knightmmain_streaming_suspend},
-	//{SENSOR_FEATURE_SET_STREAMING_RESUME, knightmmain_streaming_resume},
-	//{SENSOR_FEATURE_GET_UNIQUE_SENSORID, knightmmain_get_unique_sensorid},
-	//{SENSOR_FEATURE_GET_CLOUD_OTP_INFO, knightmmain_get_cloud_otp_info},
-	//{SENSOR_FEATURE_SEAMLESS_SWITCH, knightmmain_seamless_switch},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01A30115,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = KNIGHTMMAIN_EEPROM_ADDR,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {  //partial PD
-	.i4OffsetX = 64,
-	.i4OffsetY = 16,
-	.i4PitchX = 16,
-	.i4PitchY = 16,
-	.i4PairNum = 8,
-	.i4SubBlkW = 8,
-	.i4SubBlkH = 4,
-	.i4PosL = {{70, 18}, {78, 18}, {66, 22}, {74, 22}, {70, 26}, {78, 26}, {66, 30}, {74, 30}},
-	.i4PosR = {{69, 18}, {77, 18}, {65, 22}, {73, 22}, {69, 26}, {77, 26}, {65, 30}, {73, 30}},
-	.i4BlockNumX = 248,
-	.i4BlockNumY = 190,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {1088, 996},
-		/*      */
-		{0, 384}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*     */
-		{0, 0}, {0, 384}, {0, 384}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 0,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	.i4ModeIndex = 0x0,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 2,//all-pd
-		//.i4BinFacX = 2,
-		//.i4BinFacY = 4,
-		.i4PDRepetition = 2,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-//static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-//	.i4OffsetX = 0,
-//	.i4OffsetY = 0,
-//	.i4PitchX = 0,
-//	.i4PitchY = 0,
-//	.i4PairNum = 0,
-//	.i4SubBlkW = 0,
-//	.i4SubBlkH = 0,
-//	.i4PosL = {{0, 0} },
-//	.i4PosR = {{0, 0} },
-//	.i4BlockNumX = 0,
-//	.i4BlockNumY = 0,
-//	.i4LeFirst = 0,
-//	.i4Crop = {
-//		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-//		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 384},
-//		{320, 240}, {0, 384}, {0, 0},{0, 0},{0, 0},{0, 0},{0, 192},
-//	},
-//	.iMirrorFlip = IMAGE_NORMAL,
-//	.i4FullRawW = 2048,
-//	.i4FullRawH = 1536,
-//	.i4VCPackNum = 1,
-//	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-//	.i4ModeIndex = 0x2,
-//	.sPDMapInfo[0] = {
-//		.i4PDPattern = 1,//all-pd
-//		.i4BinFacX = 2,
-//		.i4BinFacY = 4,
-//		.i4PDRepetition = 0,
-//		.i4PDOrder = {1}, //R=1, L=0
-//	},
-//};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 760,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-
-	},
-
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,//4096
-			.vsize = 3072,//3072
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 760,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-    // partial pd
-	{
-	    .bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1920,
-			.vsize = 1080,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 960,
-			.vsize = 540,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1920,
-			.vsize = 1080,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	/*{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},*/
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 760,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 760,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2048,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 512,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-    {/*Reg_B_4096x3072_30FPS**/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = knightmmain_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmain_preview_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 7840,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 760800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-		    .sensor_scenario_usage = NORMAL_MASK,
-		    .equivalent_fps = 30,
-		},
-	},
-	{/*Reg_A_QBIN(VBIN)_4096x3072_30FPS with PDAF VB_max*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = knightmmain_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmain_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 7840,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 760800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,//cc
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 30,
-		},
-	},
-	{/*Reg_B_4096x2304_30FPS**/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = knightmmain_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmain_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 7840,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 760800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-		},
-	},
-    {/*Reg_B_4096x2304_60FPS**/
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = knightmmain_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmain_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 325,
-		.framelength = 5128,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 760800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.5,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.5,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 60,
-		},
-	},
-    {/*Reg_B_1920x1080_120FPS**/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = knightmmain_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmain_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 325,
-		.framelength = 2564,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 760800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 256,
-			.y0_offset = 912,
-			.w0_size = 7680,
-			.h0_size = 4320,
-			.scale_w = 1920,
-			.scale_h = 1080,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1920,
-			.h1_size = 1080,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1920,
-			.h2_tg_size = 1080,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.5,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.5,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 120,
-		},
-	},
-    {/*Reg_B_1920x1080_240FPS**/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = knightmmain_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmain_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 325,
-		.framelength = 1280,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 760800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 256,
-			.y0_offset = 912,
-			.w0_size = 7680,
-			.h0_size = 4320,
-			.scale_w = 1920,
-			.scale_h = 1080,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1920,
-			.h1_size = 1080,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1920,
-			.h2_tg_size = 1080,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.5,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.5,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 240,
-		},
-	},
-    {/*Reg_A-1_QBIN(VBIN)_4096x3072_24FPS with PDAF VB_max**/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = knightmmain_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmain_custom2_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 9800,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 760800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		},
-	},
-    {/*Reg_B_2048x1536_30FPS**/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = knightmmain_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmain_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 7842,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 760800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 30,
-		},
-	},
-    {/*Reg_B_4096x2048_30FPS**/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = knightmmain_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmain_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 7840,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 760800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 512,
-			.w1_size = 4096,
-			.h1_size = 2048,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2048,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-		},
-	},
-    {/*Reg_B_2048x1152_30FPS**/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = knightmmain_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmain_custom5_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 7840,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 760800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 192,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 30,
-		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KNIGHTMMAIN_SENSOR_ID,
-	.reg_addr_sensor_id = {0x300a, 0x300b, 0x300c},
-	.i2c_addr_table = {0x20, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 62,
-	.ana_gain_type = 1,
-	.ana_gain_step = 1,
-	.ana_gain_table = knightmmain_ana_gain_table,
-	.ana_gain_table_size = sizeof(knightmmain_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 20,
-	.exposure_max = (0xFFFFFF - 32),
-	.exposure_step = 2,
-	.exposure_margin = 31,
-
-	.frame_length_max = 0x7FFFFFFF,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 2293000,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV,
-	.hdr_type = HDR_SUPPORT_NA,
-	.seamless_switch_support = FALSE,
-	.temperature_support = FALSE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-//	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-//	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = PARAM_UNDEFINED, //0x3821  0x3820
-	.reg_addr_exposure = {
-			{0x3500, 0x3501, 0x3502},//Long exposure
-//			{0x3540, 0x3541, 0x3542},//Medium exposure
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = PARAM_UNDEFINED,
-	.reg_addr_ana_gain = {
-			{0x3508, 0x3509},//Long gain
-//			{0x3548, 0x3549},//Medium gain
-	},
-	.reg_addr_frame_length = {0x3840, 0x380e, 0x380f},
- 	.reg_addr_temp_en = true,
-	.reg_addr_temp_read = 0x4D13,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = PARAM_UNDEFINED,
-	.reg_addr_fast_mode = PARAM_UNDEFINED,
-
-	.init_setting_table = knightmmain_init_setting,
-	.init_setting_len = ARRAY_SIZE(knightmmain_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 0,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xcd9966da,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 1000},
-	{HW_ID_AVDD, {2800000, 2800000}, 0},
-	{HW_ID_DOVDD, {1800000, 1800000}, 0},
-	{HW_ID_DVDD, {1200000, 1200000}, 1000},
-	{HW_ID_RST, {1}, 5000},
-	{HW_ID_AFVDD, {2800000, 2800000}, 0},
-};
-
-struct subdrv_entry knightmmain_mipi_raw_entry = {
-	.name = "knightmmain_mipi_raw",
-	.id = KNIGHTMMAIN_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-
-/* FUNCTION */
-
-static unsigned int read_knightmmain_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != knightmmain_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != knightmmain_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = knightmmain_eeprom_info[meta_id].start;
-	readsize = knightmmain_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-// static struct SENSOR_OTP_INFO_STRUCT cloud_otp_info[OPLUS_CAM_CAL_DATA_MAX] = {
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 17}}, /*{addr_modinfo, addr_modinfolen}*/
-// 	}, /*OPLUS_CAM_CAL_DATA_MODULE_VERSION*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 17}}, /*{addr_modinfo, addr_modinfolen}*/
-// 	}, /*OPLUS_CAM_CAL_DATA_PART_NUMBER*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x1d60, 1868}},
-// 	}, /*OPLUS_CAM_CAL_DATA_SHADING_TABLE--LSC*/
-// 	{
-// 		.OtpInfoLen = 5,
-// 		.OtpInfo = {{0x0020, 16}, {0x0044, 16}, {0x0060, 4}, {0x006c, 4}, {0x0092, 6}},
-// 		.isAFCodeOffset = KAL_FALSE,
-// 	}, /*OPLUS_CAM_CAL_DATA_3A_GAIN-awb5000\awb2850\awb5000Light\awb2850light\af*/
-// 	{
-// 		.OtpInfoLen = 2,
-// 		.OtpInfo = {{0x1300, 496}, {0x1500, 1004}},
-// 	}, /*OPLUS_CAM_CAL_DATA_PDAF*/
-// 	{
-// 		.OtpInfoLen = 8,
-// 		.OtpInfo = {{0x0000, 17}, {0x0006, 2}, {0x0008, 2}, {0x000a, 2}, {0x0092, 7}, {0x0092, 2}, {0x0094, 2}, {0x00b0, 24}},
-// 		.isAFCodeOffset = KAL_FALSE,
-// 	}, /*OPLUS_CAM_CAL_DATA_CAMERA_INFO-modid\sensor\lens\vcmid\af\macpos\infpos\qrcode\*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0008, 2}},
-// 	}, /*OPLUS_CAM_CAL_DATA_DUMP*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0008, 2}},
-// 	}, /*OPLUS_CAM_CAL_DATA_LENS_ID*/
-// 	{
-// 		.OtpInfoLen = 0,
-// 	}, /*OPLUS_CAM_CAL_DATA_QSC*/
-// 	{
-// 		.OtpInfoLen = 0,
-// 	}, /*OPLUS_CAM_CAL_DATA_LRC*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 16384}},
-// 	}, /*OPLUS_CAM_CAL_DATA_ALL*/
-// };
-
-// static int knightmmain_get_cloud_otp_info(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u64 *feature_data = (u64 *)para;
-// 	struct SENSOR_OTP_INFO_STRUCT *cloudinfo;
-// 	LOG_INF("SENSOR_FEATURE_GET_CLOUD_OTP_INFO otp_type:%d", (UINT32)(*feature_data));
-// 	cloudinfo = (struct SENSOR_OTP_INFO_STRUCT *)(uintptr_t)(*(feature_data + 1));
-// 	switch (*feature_data) {
-// 	case OPLUS_CAM_CAL_DATA_MODULE_VERSION:
-// 	case OPLUS_CAM_CAL_DATA_PART_NUMBER:
-// 	case OPLUS_CAM_CAL_DATA_SHADING_TABLE:
-// 	case OPLUS_CAM_CAL_DATA_3A_GAIN:
-// 	case OPLUS_CAM_CAL_DATA_PDAF:
-// 	case OPLUS_CAM_CAL_DATA_CAMERA_INFO:
-// 	case OPLUS_CAM_CAL_DATA_DUMP:
-// 	case OPLUS_CAM_CAL_DATA_LENS_ID:
-// 	case OPLUS_CAM_CAL_DATA_QSC:
-// 	case OPLUS_CAM_CAL_DATA_LRC:
-// 	case OPLUS_CAM_CAL_DATA_ALL:
-// 		memcpy((void *)cloudinfo, (void *)&cloud_otp_info[*feature_data], sizeof(struct SENSOR_OTP_INFO_STRUCT));
-// 		break;
-// 	default:
-// 		break;
-// 	}
-// 	return 0;
-// }
-
-// static void read_unique_sensorid(struct subdrv_ctx *ctx)
-// {
-// 	u8 i = 0;
-// 	LOG_INF("read sensor unique sensorid");
-// 	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-// 		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-// 		subdrv_i2c_wr_u8(ctx, 0x0103, 0x01);
-// 		subdrv_i2c_wr_u8(ctx, 0x3d84, 0x00);
-// 		subdrv_i2c_wr_u8(ctx, 0x3d85, 0x1b);
-// 		subdrv_i2c_wr_u8(ctx, 0x0100, 0x01);
-// 		msleep(5);
-// 		if (adaptor_i2c_rd_p8(ctx->i2c_client, ctx->i2c_write_id >> 1, KNIGHTMMAIN_UNIQUE_SENSOR_ID_ADDR,
-// 			&(knightmmain_unique_id[0]), KNIGHTMMAIN_UNIQUE_SENSOR_ID_LENGTH) < 0) {
-// 			LOG_INF("Read sensor unique sensorid fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-// 		}
-// 		i++;
-// 	}
-// }
-
-// static int knightmmain_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u32 *feature_return_para_32 = (u32 *)para;
-// 	*len = KNIGHTMMAIN_UNIQUE_SENSOR_ID_LENGTH;
-// 	memcpy(feature_return_para_32, knightmmain_unique_id,
-// 		KNIGHTMMAIN_UNIQUE_SENSOR_ID_LENGTH);
-// 	LOG_INF("para :%x, get unique sensorid", *para);
-// 	return 0;
-// }
-
-static int knightmmain_get_eeprom_comdata(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	LOG_INF("+");
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, KNIGHTMMAIN_EEPROM_ADDR >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static kal_int32 table_write_eeprom_one_packet(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-    kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, KNIGHTMMAIN_EEPROM_ADDR >> 1,
-            addr, para, len);
-
-    return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xE000;
-
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KNIGHTMMAIN_EEPROM_ADDR >> 1, reg, (KNIGHTMMAIN_EEPROM_ADDR & 0xFE) | 0x01);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KNIGHTMMAIN_EEPROM_ADDR >> 1, reg, KNIGHTMMAIN_EEPROM_ADDR & 0xFE);
-    }
-
-    return ret;
-}
-
-static kal_uint16 get_64align_addr(kal_uint16 data_base) {
-
-	kal_uint16 multiple = 0;
-	kal_uint16 surplus = 0;
-	kal_uint16 addr_64align = 0;
-
-	multiple = data_base / 64;
-	surplus = data_base % 64;
-	if(surplus) {
-		addr_64align = (multiple + 1) * 64;
-	} else {
-		addr_64align = multiple * 64;
-	}
-	//LOG_INF("data_base(0x%x), multiple(%d), surplus(%d), addr_64align(0x%x)", data_base, multiple, surplus, addr_64align);
-	return addr_64align;
-}
-
-static kal_int32 eeprom_table_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-
-	kal_uint16 idx;
-	kal_uint16 idy;
-	kal_int32 ret = ERROR_NONE;
-	UINT32 i = 0;
-
-	idx = data_length / EEPROM_WRITE_DATA_MAX_LENGTH;
-	idy = data_length % EEPROM_WRITE_DATA_MAX_LENGTH;
-
-    LOG_INF("data_base(0x%x) data_length(%d) idx(%d) idy(%d)\n", data_base, data_length, idx, idy);
-
-	for (i = 0; i < idx; i++ ) {
-		ret = table_write_eeprom_one_packet(ctx, (data_base + EEPROM_WRITE_DATA_MAX_LENGTH * i),
-				&pData[EEPROM_WRITE_DATA_MAX_LENGTH*i], EEPROM_WRITE_DATA_MAX_LENGTH);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: i=%d\n", i);
-			return -1;
-		}
-		msleep(6);
-	}
-
-	msleep(6);
-	if(idy) {
-		ret = table_write_eeprom_one_packet(ctx, (data_base + EEPROM_WRITE_DATA_MAX_LENGTH*idx),
-				&pData[EEPROM_WRITE_DATA_MAX_LENGTH*idx], idy);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-			return -1;
-		}
-	}
-	return 0;
-}
-
-static kal_int32 eeprom_64align_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-
-	kal_uint16 addr_64align = 0;
-	kal_uint16 part1_length = 0;
-	kal_uint16 part2_length = 0;
-	kal_int32 ret = ERROR_NONE;
-
-    addr_64align = get_64align_addr(data_base);
-
-	part1_length = addr_64align - data_base;
-	if(part1_length > data_length) {
-		part1_length = data_length;
-	}
-	part2_length = data_length - part1_length;
-
-	write_eeprom_protect(ctx, 0);
-	msleep(6);
-
-	if (part1_length) {
-		ret = eeprom_table_write(ctx, data_base, pData, part1_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part1\n");
-			msleep(6);
-			return -1;
-		}
-	}
-
-	msleep(6);
-	if (part2_length) {
-		ret = eeprom_table_write(ctx, addr_64align, pData + part1_length, part2_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part2\n");
-			msleep(6);
-			return -1;
-		}
-	}
-	msleep(6);
-	write_eeprom_protect(ctx, 1);
-	msleep(6);
-
-	return 0;
-}
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint8 *pData;
-
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-                       pStereodata->uSensorId,
-                       pStereodata->uDeviceId,
-                       pStereodata->baseAddr,
-                       pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        if ((pStereodata->uSensorId == KNIGHTMMAIN_SENSOR_ID)
-            && (data_length == CALI_DATA_SLAVE_LENGTH)
-            && (data_base == KNIGHTMMAIN_STEREO_MW_START_ADDR)) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-
-            eeprom_64align_write(ctx, data_base, pData, data_length);
-
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-
-        } else if ((pStereodata->uSensorId == KNIGHTMMAIN_SENSOR_ID)
-            && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == KNIGHTMMAIN_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-
-            eeprom_64align_write(ctx, data_base, pData, data_length);
-
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                    read_cmos_eeprom_8(ctx, KNIGHTMMAIN_AESYNC_START_ADDR),
-                    read_cmos_eeprom_8(ctx, KNIGHTMMAIN_AESYNC_START_ADDR+1),
-                    read_cmos_eeprom_8(ctx, KNIGHTMMAIN_AESYNC_START_ADDR+2),
-                    read_cmos_eeprom_8(ctx, KNIGHTMMAIN_AESYNC_START_ADDR+3),
-                    read_cmos_eeprom_8(ctx, KNIGHTMMAIN_AESYNC_START_ADDR+4),
-                    read_cmos_eeprom_8(ctx, KNIGHTMMAIN_AESYNC_START_ADDR+5),
-                    read_cmos_eeprom_8(ctx, KNIGHTMMAIN_AESYNC_START_ADDR+6),
-                    read_cmos_eeprom_8(ctx, KNIGHTMMAIN_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("knightmmain write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int knightmmain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        LOG_INF("ret=%d\n", ret);
-    }
-	return 0;
-}
-
-static int knightmmain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_SLAVE_LENGTH)
-		*len = CALI_DATA_SLAVE_LENGTH;
-	LOG_INF("feature_data mode:%d  lens:%d", *feature_data_16, *len);
-	read_knightmmain_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-			(BYTE *)feature_return_para_32, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KNIGHTMMAIN_EEPROM_ADDR >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "knightmmain read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, sizeof(otp_data_checksum));
-	DRV_LOGE(ctx, "knightmmain read_otp_info end\n");
-}
-
-static int knightmmain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	u32 length = sizeof(otp_data_checksum);
-
-	if(*len < sizeof(otp_data_checksum)) {
-		length = *len;
-	}
-
-	DRV_LOGE(ctx, "get otp data length:0x%x", length);
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, length);
-
-	return 0;
-}
-
-static int knightmmain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	LOG_INF("rst delay = %d, func: %s, line: %d\n", pw_seq[1].delay, __FUNCTION__, __LINE__);
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			LOG_INF("i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == KNIGHTMMAIN_IMGSENSOR_ID) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				get_imgsensor_id_from_dts(ctx, sensor_id);
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					//read_unique_sensorid(ctx);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			LOG_INF("Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			LOG_INF("sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return gain * (0x100) / BASEGAIN;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	// software reset
-	subdrv_i2c_wr_regs_u8(ctx, knightmmain_soft_reset, ARRAY_SIZE(knightmmain_soft_reset));
-	msleep(1);
-	sensor_init(ctx);
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-	if (ctx->s_ctx.reg_addr_temp_read) {
-		temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-	}
-	if (temperature < 0xC0) {
-		temperature_convert = temperature;
-	} else {
-		temperature_convert = ((char)temperature) | 0xFFFFF00;	
-	}
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	if (en) {
-		set_i2c_buffer(ctx, 0x3208, 0x01);
-	} else {
-		set_i2c_buffer(ctx, 0x3208, 0x11);
-		set_i2c_buffer(ctx, 0x3208, 0xa1);
-	}
-}
-
-void knightmmain_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	u32 exp_cnt = 0;
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	check_current_scenario_id_bound(ctx);
-	LOG_INF("sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-			case HDR_RAW_STAGGER:
-				*exposure_step = ctx->s_ctx.exposure_step * exp_cnt;
-				*min_shutter = ctx->s_ctx.exposure_min * exp_cnt;
-				break;
-			case HDR_NONE:
-				if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-					ctx->s_ctx.mode[scenario_id].min_exposure_line) {
-					*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-					*min_shutter = ctx->s_ctx.mode[scenario_id].min_exposure_line;
-				} else {
-					*exposure_step = ctx->s_ctx.exposure_step;
-					*min_shutter = ctx->s_ctx.exposure_min;
-				}
-				break;
-			default:
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-				break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-static int knightmmain_set_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u16 *feature_data = (u16*)para;
-	u16 frame_length = *feature_data;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	if (frame_length)
-		ctx->frame_length = frame_length;
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	write_frame_length(ctx, ctx->frame_length);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-
-	DRV_LOG(ctx, "fll(input/output/min):%u/%u/%u\n",
-		frame_length, ctx->frame_length, ctx->min_frame_length);
-
-	return 0;
-}
-
-void knightmmain_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length)
-{
-	static u32 lastshutter = 0;
-	int fine_integ_line = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->min_frame_length;
-	check_current_scenario_id_bound(ctx);
-	/* check boundary of shutter */
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	shutter = FINE_INTEG_CONVERT(shutter, fine_integ_line);
-	shutter = max_t(u64, shutter,
-		(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[0].min);
-	shutter = min_t(u64, shutter,
-		(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[0].max);
-	/* check boundary of framelength */
-	ctx->frame_length = max((u32)shutter + ctx->s_ctx.exposure_margin, ctx->min_frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->exposure[0] = (u32) shutter;
-
-	if ((lastshutter <= ctx->frame_length) && (ctx->frame_length <= (lastshutter + 6))) {
-		ctx->frame_length = lastshutter + 8;
-	} // binning
-	if (ctx->exposure[0] > ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin) {
-		ctx->exposure[0] = ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin;
-	}
-
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-
-	if (ctx->s_ctx.reg_addr_exposure[0].addr[2]) {
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0],
-			(ctx->exposure[0] >> 16) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],
-			(ctx->exposure[0] >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[2],
-			ctx->exposure[0] & 0xFF);
-	} else {
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0],
-			(ctx->exposure[0] >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],
-			ctx->exposure[0] & 0xFF);
-	}
-	DRV_LOG(ctx, "exp[0x%x], fll(input/output):%u/%u, flick_en:%d  lastshutter:%d\n",
-		ctx->exposure[0], frame_length, ctx->frame_length, ctx->autoflicker_en, lastshutter);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-	lastshutter = ctx->exposure[0];
-}
-
-static int knightmmain_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	knightmmain_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], ((u64*)para)[1]);
-	return 0;
-}
-
-static int knightmmain_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	knightmmain_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], 0);
-	return 0;
-}
-
-int knightmmain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	knightmmain_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static int knightmmain_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 gain = *((u32 *)para);
-	u32 rg_gain;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain,
-		ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_ana_gain_range[0].min);
-	gain = min(gain,
-		ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_ana_gain_range[0].max);
-
-	if (gain > ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max) {
-		gain = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max;
-	}
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = (16384 - (16384 * BASEGAIN) / gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-
-	return ERROR_NONE;
-}
-
-/*
-static int knightmmain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-	update_mode_info(ctx, scenario_id);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		(ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF ||
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF))
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x4);
-
-	update_mode_info(ctx, scenario_id);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	DRV_LOG(ctx, "write seamless switch setting done\n");
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	common_get_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id, scenario_id);
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8)  & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-*/
-
-static int knightmmain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode) {
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-		LOG_INF("mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-		switch (mode) {
-		case 5:
-			subdrv_i2c_wr_u8(ctx, 0x50C1, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x50C2, 0x04);
-			break;
-		default:
-			subdrv_i2c_wr_u8(ctx, 0x50C1, mode);
-			break;
-		}
-	} else if (ctx->test_pattern) {
-		LOG_INF("mode(%u->%u)\n", ctx->test_pattern, mode);
-		subdrv_i2c_wr_u8(ctx, 0x50C1, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x50C2, 0x00);
-	}
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, 0x3010, 0x00);
-		set_i2c_buffer(ctx, 0x3036, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id) {
-	struct subdrv_entry *m_subdrv_entry = &knightmmain_mipi_raw_entry;
-	u32 final_sensor_id = 0xFFFFFFFF;
-	const char *of_sensor_names[OF_SENSOR_NAMES_MAXCNT];
-	const char *of_sensor_hal_names[OF_SENSOR_NAMES_MAXCNT];
-	u32   of_sensor_ids[OF_SENSOR_NAMES_MAXCNT] = {0};
-	int i, index, of_sensor_names_cnt, of_sensor_hal_names_cnt, of_sensor_ids_ret;
-	struct device *dev = &ctx->i2c_client->dev;
-
-	memset(&of_sensor_ids, 0xFF, sizeof(of_sensor_ids));
-
-	if(g_id_from_dts_flag == false) {
-		of_sensor_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-names", of_sensor_names, ARRAY_SIZE(of_sensor_names));
-
-		of_sensor_hal_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-hal-names", of_sensor_hal_names, ARRAY_SIZE(of_sensor_hal_names));
-
-		of_sensor_ids_ret = of_property_read_u32_array(dev->of_node,
-				"sensor-ids", of_sensor_ids, of_sensor_names_cnt);
-
-		pr_err("%s of_sensor_names_cnt(%d), of_sensor_ids_ret(%d)",
-			__func__, of_sensor_names_cnt, of_sensor_ids_ret);
-		for(i = 0 ;i < of_sensor_names_cnt; i++) {
-				pr_err("%s of_sensor_names[%d] = %s  of_sensor_ids[%d] = %d",
-				__func__, i, of_sensor_names[i], i, of_sensor_ids[i]);
-		}
-		for(i = 0 ;i < of_sensor_hal_names_cnt; i++) {
-			pr_err("%s of_sensor_hal_names_cnt[%d] = %s",
-				__func__, i, of_sensor_hal_names[i]);
-		}
-
-		if (of_sensor_names_cnt && (of_sensor_ids_ret == 0)) {
-			for(index = 0; index < of_sensor_names_cnt; index++) {
-				if (strncmp(SENSOR_NAME, of_sensor_names[index], strlen(SENSOR_NAME)) == 0) {
-					final_sensor_id = of_sensor_ids[index];
-					break;
-				}
-			}
-		} else {
-			pr_err("%s sensor-ids error in dts", __func__);
-		}
-		g_id_from_dts_flag = true;
-	}
-
-	if(final_sensor_id != 0xFFFFFFFF) {
-		*sensor_id = final_sensor_id;
-		ctx->s_ctx.sensor_id = final_sensor_id;
-
-		m_subdrv_entry->id = final_sensor_id;
-		if(of_sensor_hal_names_cnt == of_sensor_names_cnt) {
-			m_subdrv_entry->name = of_sensor_hal_names[index];
-		}
-
-		pr_err("%s final index(%d), id(%d) name(%s)",
-			__func__, index, m_subdrv_entry->id, m_subdrv_entry->name);
-	} else {
-		*sensor_id = ctx->s_ctx.sensor_id;
-	}
-
-	return;
-}
-
-static int knightmmain_get_pdafblock_info(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *)para;
-	struct SET_PD_BLOCK_INFO_T *PDAFinfo;
-
-	PDAFinfo = (struct SET_PD_BLOCK_INFO_T *)(uintptr_t)(*(feature_data+1));
-	switch (*feature_data) {
-		case SENSOR_SCENARIO_ID_NORMAL_PREVIEW:
-		case SENSOR_SCENARIO_ID_NORMAL_CAPTURE:
-		case SENSOR_SCENARIO_ID_CUSTOM2:
-		case SENSOR_SCENARIO_ID_CUSTOM3:
-			imgsensor_pd_info.i4BlockNumX = 248;
-			imgsensor_pd_info.i4BlockNumY = 190;
-			memcpy((void *)PDAFinfo,
-				(void *)&imgsensor_pd_info,
-				sizeof(struct SET_PD_BLOCK_INFO_T));
-			break;
-		case SENSOR_SCENARIO_ID_NORMAL_VIDEO:
-		case SENSOR_SCENARIO_ID_HIGHSPEED_VIDEO:
-		case SENSOR_SCENARIO_ID_CUSTOM5:
-			imgsensor_pd_info.i4BlockNumX = 248;
-			imgsensor_pd_info.i4BlockNumY = 144;
-			memcpy((void *)PDAFinfo,
-				(void *)&imgsensor_pd_info,
-				sizeof(struct SET_PD_BLOCK_INFO_T));
-			break;
-		case SENSOR_SCENARIO_ID_SLIM_VIDEO:
-			imgsensor_pd_info.i4BlockNumX = 240;
-			imgsensor_pd_info.i4BlockNumY = 135;
-			memcpy((void *)PDAFinfo,
-				(void *)&imgsensor_pd_info,
-				sizeof(struct SET_PD_BLOCK_INFO_T));
-			break;
-		case SENSOR_SCENARIO_ID_CUSTOM4:
-			imgsensor_pd_info.i4BlockNumX = 248;
-			imgsensor_pd_info.i4BlockNumY = 128;
-			memcpy((void *)PDAFinfo,
-				(void *)&imgsensor_pd_info,
-				sizeof(struct SET_PD_BLOCK_INFO_T));
-			break;
-		default:
-			break;
-	}
-	return 0;
-}
-
-static int knightmmain_get_readout_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *)para;
-	u64 scenario_id = *feature_data;
-
-	u64 pclk;
-	u64 linelength;
-	u64 readout = 0;
-	MUINT16 h2_tg_size;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%llu, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return 0;
-	}
-
-	pclk       = ctx->s_ctx.mode[scenario_id].pclk;
-	pclk       = max_t(u64, (u64)1, pclk);
-	linelength = ctx->s_ctx.mode[scenario_id].linelength;
-	h2_tg_size = ctx->s_ctx.mode[scenario_id].imgsensor_winsize_info.h2_tg_size;
-
-	readout = (linelength * h2_tg_size * 1000000000 / pclk) * 2; /* unit: ns */
-
-	feature_data[1] = readout;
-
-	DRV_LOG(ctx, "%s scenario_id(%llu)  pclk(%llu) linelength(%llu) h2_tg_size(%u) readout(%llu)",
-		__func__, scenario_id, pclk, linelength, h2_tg_size, readout);
-
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmainmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmainmipiraw_Sensor.h
deleted file mode 100755
index eee12723..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/knightmmainmipiraw_Sensor.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     knightmmainmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KNIGHTMMAINMIPI_SENSOR_H
-#define _KNIGHTMMAINMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "knightmmain_ana_gain_table.h"
-#include "knightmmain_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M01-4096x3072-PD-992x760-HighGain-24fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M01-4096x3072-PD-992x760-HighGain-24fps.txt
deleted file mode 100755
index cae7b149..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M01-4096x3072-PD-992x760-HighGain-24fps.txt
+++ /dev/null
@@ -1,211 +0,0 @@
-@@M01-4096x3072-PD-992x760-HighGain-24fps
-
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 1e
-6c 3502 90
-6c 3508 03
-6c 3509 00
-6c 3606 10 ;
-6c 3627 01 ;
-6c 3628 48 ;
-6c 3684 01 ;
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 18
-6c 3807 3f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d a9
-6c 380e 26 ;1e
-6c 380f 48 ;a0
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 0f
-6c 381b 48
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 20
-6c 388c 0f
-6c 388d 80
-6c 388e 0b
-6c 388f e0
-6c 396b 60 ;
-6c 4505 00 ;
-6c 45c0 61 ;
-6c 480e 04 ;
-6c 4813 e4 ;
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 3e  ;;1f
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5000 f7 ;
-6c 5001 01
-6c 5005 02
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5205 08
-6c 5252 00
-6c 5253 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M02-2048x1536-PD-992x760-HighGain-30fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M02-2048x1536-PD-992x760-HighGain-30fps.txt
deleted file mode 100755
index a95ab3fa..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M02-2048x1536-PD-992x760-HighGain-30fps.txt
+++ /dev/null
@@ -1,211 +0,0 @@
-@@ M02-2048x1536-PD-992-760-HighGain-30fps
-
-
-6c 0100 00
-6c 0305 3d  ;;c2
-6c 0306 04
-6c 0307 00  ;;01
-6c 3500 00
-6c 3501 1e
-6c 3502 90
-6c 3508 04
-6c 3509 00
-6c 3606 10 ;
-6c 3627 01 ;
-6c 3628 48 ;
-6c 3684 01 ;
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 18
-6c 3807 3f
-6c 3808 08
-6c 3809 00
-6c 380a 06
-6c 380b 00
-6c 380c 01
-6c 380d a9
-6c 380e 1e
-6c 380f a2
-6c 3810 00
-6c 3811 09
-6c 3812 00
-6c 3813 08
-6c 3814 11
-6c 3815 11
-6c 381a 0f
-6c 381b 48
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 20
-6c 388c 0f
-6c 388d 80
-6c 388e 0b
-6c 388f e0
-6c 396b 60 ;
-6c 4505 00 ;
-6c 45c0 61 ;
-6c 480e 04 ;
-6c 4813 e4 ;
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 04
-6c 4032 00
-6c 4033 04
-6c 4034 00
-6c 4035 00
-6c 4036 00
-6c 4037 00
-6c 4040 00
-6c 4041 2c
-6c 4042 00
-6c 4043 2c
-6c 4044 00
-6c 4045 00
-6c 4046 00
-6c 4047 00
-6c 4583 08
-6c 4584 10
-6c 4641 3e  ;;1f
-6c 4684 19
-6c 4837 08   ;;0b
-6c 4850 42
-6c 4931 04
-6c 4933 04
-6c 4934 00
-6c 4935 00
-6c 4936 00
-6c 4937 00
-6c 4940 00
-6c 4941 2c
-6c 4942 00
-6c 4943 2c
-6c 4944 00
-6c 4945 00
-6c 4946 00
-6c 4947 00
-6c 5000 f7 ;
-6c 5001 81
-6c 5005 42
-6c 5007 1e
-6c 5180 83
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5205 08
-6c 5252 00
-6c 5253 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M03-4096x2048-PD-992x512-HighGain-30fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M03-4096x2048-PD-992x512-HighGain-30fps.txt
deleted file mode 100755
index 532b30b6..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M03-4096x2048-PD-992x512-HighGain-30fps.txt
+++ /dev/null
@@ -1,212 +0,0 @@
-@@M03-4096x2048-PD-992x512-HighGain-30fps
-
-
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 13
-6c 3502 f8
-6c 3508 04
-6c 3509 00
-6c 3606 10 ;
-6c 3627 01 ;
-6c 3628 48 ;
-6c 3684 01 ;
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 04
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 14
-6c 3807 3f
-6c 3808 10
-6c 3809 00
-6c 380a 08  ;;09
-6c 380b 00
-6c 380c 01
-6c 380d a9
-6c 380e 1e
-6c 380f a0
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 09
-6c 381b fc
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 10
-6c 388c 0f
-6c 388d 80
-6c 388e 08
-6c 388f 00
-6c 396b 60 ;
-6c 4505 00 ;
-6c 45c0 61 ;
-6c 480e 04 ;
-6c 4813 e4 ;
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 3e  ;;1f
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5000 f7 ;
-6c 5001 01
-6c 5005 02
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5205 08
-6c 5252 00
-6c 5253 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M04-1920x1080-PD-960x540-NormGain-120fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M04-1920x1080-PD-960x540-NormGain-120fps.txt
deleted file mode 100755
index cb40b150..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M04-1920x1080-PD-960x540-NormGain-120fps.txt
+++ /dev/null
@@ -1,211 +0,0 @@
-@@M04-1920x1080-PD-960x540-NormGain-120fps
-
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 09
-6c 3502 c4
-6c 3508 0f
-6c 3509 80
-6c 3606 10 ;
-6c 3627 01 ;
-6c 3628 48 ;
-6c 3684 01 ;
-6c 3738 60
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 40
-6c 373d 12
-6c 3761 18
-6c 3767 38
-6c 3768 48
-6c 3769 58
-6c 3800 00
-6c 3801 e0
-6c 3802 03
-6c 3803 70
-6c 3804 1f
-6c 3805 5f
-6c 3806 14
-6c 3807 cf
-6c 3808 07
-6c 3809 80
-6c 380a 04
-6c 380b 38
-6c 380c 01
-6c 380d 45
-6c 380e 0a
-6c 380f 04
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 31
-6c 381a 04
-6c 381b 90
-6c 381c 01
-6c 381d 45
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 01  ;
-6c 3831 04
-6c 3837 04
-6c 384c 01
-6c 384d 45
-6c 3888 00
-6c 3889 20
-6c 388a 00
-6c 388b 10
-6c 388c 0f
-6c 388d 00
-6c 388e 04
-6c 388f 38
-6c 396b 60 ;
-6c 4505 00 ;
-6c 45c0 61 ;
-6c 480e 04 ;
-6c 4813 e4 ;
-6c 4c00 c2
-6c 4c14 00
-6c 4c15 02
-6c 4c16 04
-6c 4c17 06
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 08
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 00
-6c 4c35 02
-6c 4c36 04
-6c 4c37 06
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 08
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 00
-6c 4c55 02
-6c 4c56 04
-6c 4c57 06
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 08
-6c 4c62 07
-6c 4c63 80
-6c 4c64 00
-6c 4c65 00
-6c 4c66 04
-6c 4c67 38
-6c 4c68 07
-6c 4c69 80
-6c 4c6a 04
-6c 4c6b 38
-6c 4010 f8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 05
-6c 4017 02
-6c 4018 05
-6c 4031 08
-6c 4032 00
-6c 4033 08
-6c 4034 00
-6c 4035 00
-6c 4036 00
-6c 4037 00
-6c 4040 00
-6c 4041 00
-6c 4042 00
-6c 4043 00
-6c 4044 00
-6c 4045 00
-6c 4046 00
-6c 4047 00
-6c 4583 07
-6c 4584 a0
-6c 4641 3c  ;;1e
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 08
-6c 4933 08
-6c 4934 00
-6c 4935 08
-6c 4936 00
-6c 4937 08
-6c 4940 00
-6c 4941 0c
-6c 4942 00
-6c 4943 0c
-6c 4944 0f
-6c 4945 e0
-6c 4946 0f
-6c 4947 e0
-6c 5000 f7 ;
-6c 5001 81
-6c 5005 42
-6c 5007 0e
-6c 5180 81
-6c 51d2 84
-6c 51d3 00
-6c 51d8 08
-6c 51da 02
-6c 51db 03
-6c 51dc 06
-6c 51dd 07
-6c 51f8 10
-6c 51f9 20
-6c 5200 10
-6c 5201 20
-6c 5205 0c
-6c 5252 20
-6c 5253 03
-6c 5259 dc
-6c 525e 10
-6c 525f 20
-6c 5260 06
-6c 5261 10
-6c 526a 08
-6c 526b 04
-6c 526c 00
-6c 526d 00
-6c 526e 02
-6c 526f 03
-6c 5270 06
-6c 5271 07
-6c 5272 00
-6c 5273 00
-6c 5274 02
-6c 5275 02
-6c 5277 03
-6c 5279 03
-6c 527b 80
-6c 527c 01
-6c 527d 55
-6c 52f1 00
-6c 52f2 00
-6c 52f3 00
-6c 52f4 00
-6c 52f6 00
-6c 52f7 00
-6c 52f8 00
-6c 52f9 00
-6c 8014 14
-6c 801d 6a
-6c 801a 6a
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M05-1920x1080-noPD-NormGain-240fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M05-1920x1080-noPD-NormGain-240fps.txt
deleted file mode 100755
index 85da1ab3..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M05-1920x1080-noPD-NormGain-240fps.txt
+++ /dev/null
@@ -1,211 +0,0 @@
-@@M05-1920x1080-noPD-NormGain-240fps
-
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 04
-6c 3502 c4
-6c 3508 0f
-6c 3509 80
-6c 3606 00 ;
-6c 3627 81 ;
-6c 3628 c8 ;
-6c 3684 00 ;
-6c 3738 60
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 40
-6c 373d 12
-6c 3761 18
-6c 3767 38
-6c 3768 48
-6c 3769 58
-6c 3800 00
-6c 3801 e0
-6c 3802 03
-6c 3803 70
-6c 3804 1f
-6c 3805 5f
-6c 3806 14
-6c 3807 cf
-6c 3808 07
-6c 3809 80
-6c 380a 04
-6c 380b 38
-6c 380c 01
-6c 380d 45
-6c 380e 05
-6c 380f 00
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 31
-6c 3815 31
-6c 381a 02
-6c 381b 78
-6c 381c 01
-6c 381d 45
-6c 381f 02
-6c 3820 43
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 04
-6c 384c 01
-6c 384d 45
-6c 3888 00
-6c 3889 00
-6c 388a 00
-6c 388b 00
-6c 388c 00
-6c 388d 00
-6c 388e 00
-6c 388f 00
-6c 396b 62 ;
-6c 4505 01 ;
-6c 45c0 60 ;
-6c 480e 00 ;
-6c 4813 00 ;
-6c 4c00 c2
-6c 4c14 00
-6c 4c15 02
-6c 4c16 04
-6c 4c17 06
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 08
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 00
-6c 4c35 02
-6c 4c36 04
-6c 4c37 06
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 08
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 00
-6c 4c55 02
-6c 4c56 04
-6c 4c57 06
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 08
-6c 4c62 07
-6c 4c63 80
-6c 4c64 00
-6c 4c65 00
-6c 4c66 04
-6c 4c67 38
-6c 4c68 07
-6c 4c69 80
-6c 4c6a 04
-6c 4c6b 38
-6c 4010 f8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 05
-6c 4017 02
-6c 4018 05
-6c 4031 05
-6c 4032 00
-6c 4033 05
-6c 4034 00
-6c 4035 00
-6c 4036 00
-6c 4037 00
-6c 4040 00
-6c 4041 00
-6c 4042 00
-6c 4043 00
-6c 4044 00
-6c 4045 00
-6c 4046 00
-6c 4047 00
-6c 4583 07
-6c 4584 a0
-6c 4641 00
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 04
-6c 4933 04
-6c 4934 00
-6c 4935 01
-6c 4936 00
-6c 4937 01
-6c 4940 00
-6c 4941 0c
-6c 4942 00
-6c 4943 0c
-6c 4944 0f
-6c 4945 e0
-6c 4946 0f
-6c 4947 e0
-6c 5000 55 ;
-6c 5001 00
-6c 5005 02
-6c 5007 0e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5205 08
-6c 5252 00
-6c 5253 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 14
-6c 801d 6a
-6c 801a 6a
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M06-2048x1152-PD-992x576-HighGain-30fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M06-2048x1152-PD-992x576-HighGain-30fps.txt
deleted file mode 100755
index 1c8ba075..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M06-2048x1152-PD-992x576-HighGain-30fps.txt
+++ /dev/null
@@ -1,211 +0,0 @@
-@@M06-2048x1152-PD-992x576-HighGain-30fps
-
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 1e
-6c 3502 80
-6c 3508 04
-6c 3509 00
-6c 3606 10 ;
-6c 3627 01 ;
-6c 3628 48 ;
-6c 3684 01 ;
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 03
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 15
-6c 3807 3f
-6c 3808 08
-6c 3809 00
-6c 380a 04
-6c 380b 80
-6c 380c 01
-6c 380d a9
-6c 380e 1e
-6c 380f a0
-6c 3810 00
-6c 3811 09
-6c 3812 00
-6c 3813 08
-6c 3814 11
-6c 3815 11
-6c 381a 09
-6c 381b fc
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 10
-6c 388c 0f
-6c 388d 80
-6c 388e 09
-6c 388f 00
-6c 396b 60 ;
-6c 4505 00 ;
-6c 45c0 61 ;
-6c 480e 04 ;
-6c 4813 e4 ;
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 f8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 01
-6c 4032 00
-6c 4033 01
-6c 4034 00
-6c 4035 02
-6c 4036 00
-6c 4037 02
-6c 4040 00
-6c 4041 00
-6c 4042 00
-6c 4043 00
-6c 4044 00
-6c 4045 00
-6c 4046 00
-6c 4047 00
-6c 4583 08
-6c 4584 10
-6c 4641 3e  ;;1f
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 04
-6c 4933 04
-6c 4934 00
-6c 4935 00
-6c 4936 00
-6c 4937 00
-6c 4940 00
-6c 4941 2c
-6c 4942 00
-6c 4943 2c
-6c 4944 00
-6c 4945 00
-6c 4946 00
-6c 4947 00
-6c 5000 f7 ;
-6c 5001 81
-6c 5005 42
-6c 5007 1e
-6c 5180 83
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5205 08
-6c 5252 00
-6c 5253 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M07-4096x3072-PD-992x760-HighGain-30fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M07-4096x3072-PD-992x760-HighGain-30fps.txt
deleted file mode 100755
index c425df99..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M07-4096x3072-PD-992x760-HighGain-30fps.txt
+++ /dev/null
@@ -1,211 +0,0 @@
-@@M07-4096x3072-PD-992x760-HighGain-30fps
-
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 1e
-6c 3502 90
-6c 3508 03
-6c 3509 00
-6c 3606 10 ;
-6c 3627 01 ;
-6c 3628 48 ;
-6c 3684 01 ;
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 18
-6c 3807 3f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d a9
-6c 380e 1e
-6c 380f a0
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 0f
-6c 381b 48
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 20
-6c 388c 0f
-6c 388d 80
-6c 388e 0b
-6c 388f e0
-6c 396b 60 ;
-6c 4505 00 ;
-6c 45c0 61 ;
-6c 480e 04 ;
-6c 4813 e4 ;
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 3e  ;;1f
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5000 f7 ;
-6c 5001 01
-6c 5005 02
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5205 08
-6c 5252 00
-6c 5253 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M08-4096x2304-PD-992x576-HighGain-30fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M08-4096x2304-PD-992x576-HighGain-30fps.txt
deleted file mode 100755
index 70bd3430..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M08-4096x2304-PD-992x576-HighGain-30fps.txt
+++ /dev/null
@@ -1,211 +0,0 @@
-@@M08-4096x2304-PD-992x576-HighGain-30fps
-
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 1e
-6c 3502 90
-6c 3508 03
-6c 3509 00
-6c 3606 10 ;
-6c 3627 01 ;
-6c 3628 48 ;
-6c 3684 01 ;
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 03
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 15
-6c 3807 3f
-6c 3808 10
-6c 3809 00
-6c 380a 09
-6c 380b 00
-6c 380c 01
-6c 380d a9
-6c 380e 1e
-6c 380f a0
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 09
-6c 381b fc
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 10
-6c 388c 0f
-6c 388d 80
-6c 388e 09
-6c 388f 00
-6c 396b 60 ;
-6c 4505 00 ;
-6c 45c0 61 ;
-6c 480e 04 ;
-6c 4813 e4 ;
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 3e  ;;1f
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5000 f7 ;
-6c 5001 01
-6c 5005 02
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5205 08
-6c 5252 00
-6c 5253 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M09-4096x2304-PD-992x576-NormGain-60fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M09-4096x2304-PD-992x576-NormGain-60fps.txt
deleted file mode 100755
index ab704c6d..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/M09-4096x2304-PD-992x576-NormGain-60fps.txt
+++ /dev/null
@@ -1,211 +0,0 @@
-@@M09-4096x2304-PD-992x576-NormGain-60fps
-
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 13
-6c 3502 90
-6c 3508 03
-6c 3509 00
-6c 3606 10 ;
-6c 3627 01 ;
-6c 3628 48 ;
-6c 3684 01 ;
-6c 3738 60
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 40
-6c 373d 12
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 03
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 15
-6c 3807 3f
-6c 3808 10
-6c 3809 00
-6c 380a 09
-6c 380b 00
-6c 380c 01
-6c 380d 45
-6c 380e 14
-6c 380f 08
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 0a
-6c 381b 04
-6c 381c 01
-6c 381d 45
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d 45
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 10
-6c 388c 0f
-6c 388d 80
-6c 388e 09
-6c 388f 00
-6c 396b 60 ;
-6c 4505 00 ;
-6c 45c0 61 ;
-6c 480e 04 ;
-6c 4813 e4 ;
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 3e  ;;1f
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5000 f7 ;
-6c 5001 01
-6c 5005 02
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5205 08
-6c 5252 00
-6c 5253 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 14
-6c 801d 6a
-6c 801a 6a
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/OV50D40-outputinfo--20250407.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/OV50D40-outputinfo--20250407.xlsx
deleted file mode 100755
index ce2edd38..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/OV50D40-outputinfo--20250407.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/init-24MHz-Dphy--20250214.txt b/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/init-24MHz-Dphy--20250214.txt
deleted file mode 100755
index cbd77b96..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmain_mipi_raw/setting_excel/OPLUS_KNIGHTM_OV50D40-24MHz-NormalNormal-1902Mbps/init-24MHz-Dphy--20250214.txt
+++ /dev/null
@@ -1,1656 +0,0 @@
-;@@init
-;;@@ 0 100 Res 4096x3072_PD_992x760 HighGin 30fps
-;;Mirror_Normal/Flip_Normal
-
-
-
-6c 0103 01
-6c 0102 01
-6c 0301 c8
-6c 0304 01
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 0326 cb
-6c 0360 01
-6c 3001 00
-6c 300f f8
-6c 3012 41
-6c 3014 e1
-6c 3015 00
-6c 3016 78
-6c 3017 f0
-6c 3018 78
-6c 3019 d2
-6c 301a d0
-6c 301b f0
-6c 301e 88
-6c 3021 0f
-6c 3022 88
-6c 3025 89
-6c 3027 0c
-6c 3044 02
-6c 3103 00
-6c 3106 00
-6c 3218 00
-6c 3400 0c
-6c 3401 46
-6c 3402 02
-6c 3403 02
-6c 3404 03
-6c 3405 03
-6c 3406 0b
-6c 3407 0c
-6c 3408 04
-6c 3409 06
-6c 340a 04
-6c 340b 04
-6c 340e ff
-6c 340f 06
-6c 3423 00
-6c 3424 00
-6c 3425 14
-6c 3426 40
-6c 3427 04
-6c 3428 40
-6c 3429 00
-6c 342a 00
-6c 342b 00
-6c 342c 00
-6c 3420 00
-6c 3421 80
-6c 3500 00
-6c 3501 1e
-6c 3502 90
-6c 3504 4c
-6c 3506 38
-6c 3507 00
-6c 3508 03
-6c 3509 00
-6c 350a 01
-6c 350b 00
-6c 350c 00
-6c 3540 00
-6c 3541 00
-6c 3542 20
-6c 3544 4c
-6c 3546 38
-6c 3548 04
-6c 3549 00
-6c 354a 01
-6c 354b 00
-6c 3600 01
-6c 3601 20
-6c 3602 14
-6c 3603 00
-6c 3604 08
-6c 3605 10
-6c 3606 10
-6c 3607 24
-6c 3608 24
-6c 3609 09
-6c 360a 24
-6c 3610 40
-6c 3611 e0
-6c 3612 00
-6c 3613 90
-6c 3614 28
-6c 3615 19
-6c 3616 c1
-6c 3617 00
-6c 3618 80
-6c 3619 08
-6c 361a 0f
-6c 361b 33
-6c 361c 88
-6c 361d 88
-6c 361e 30
-6c 3620 55
-6c 3621 ac
-6c 3622 10
-6c 3623 86
-6c 3624 01
-6c 3625 70
-6c 3626 46
-6c 3627 01
-6c 3628 48
-6c 3630 00
-6c 3631 60
-6c 3632 60
-6c 3633 00
-6c 3634 00
-6c 3635 00
-6c 3636 00
-6c 3637 00
-6c 3638 00
-6c 3639 02
-6c 363a 02
-6c 363b 99
-6c 363c 3f
-6c 363d 40
-6c 363e 10
-6c 363f 08
-6c 3640 00
-6c 3641 0c
-6c 3642 29
-6c 3643 7e
-6c 3644 07
-6c 3645 01
-6c 3646 bb
-6c 3683 00
-6c 3684 01
-6c 3685 00
-6c 3686 40
-6c 3687 80
-6c 3688 00
-6c 3689 88
-6c 368a 2e
-6c 368e 70
-6c 3694 6f
-6c 3695 80
-6c 3696 51
-6c 369a 00
-6c 369b 00
-6c 369c 00
-6c 369d 14
-6c 369e 00
-6c 369f 00
-6c 36a2 00
-6c 36a3 00
-6c 36a4 00
-6c 36a6 00
-6c 36a7 00
-6c 36a8 00
-6c 3700 2e
-6c 3701 06
-6c 3702 46
-6c 3703 28
-6c 3706 2d
-6c 3708 3a
-6c 3709 57
-6c 370b 54
-6c 3711 00
-6c 3712 50
-6c 3713 00
-6c 3714 62
-6c 3716 40
-6c 3717 02
-6c 371d 24
-6c 371e 13
-6c 371f 0c
-6c 3720 08
-6c 3721 15
-6c 3725 32
-6c 3728 01
-6c 3729 00
-6c 3730 04
-6c 3731 00
-6c 3732 80
-6c 3734 80
-6c 3736 80
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 373e 08
-6c 3740 05
-6c 3743 00
-6c 3745 0f
-6c 3746 03
-6c 3747 00
-6c 374d 3f
-6c 374e 03
-6c 374f 00
-6c 3753 01
-6c 3754 14
-6c 3755 00
-6c 3756 16
-6c 3757 3f
-6c 3758 0e
-6c 3759 01
-6c 375e 00
-6c 375f 02
-6c 3760 10
-6c 3761 10
-6c 3762 10
-6c 3763 10
-6c 3764 10
-6c 3765 10
-6c 3766 20
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 376b 00
-6c 376c 00
-6c 376f 02
-6c 3770 01
-6c 3793 00
-6c 3795 00
-6c 3799 82
-6c 379b 82
-6c 37a2 15
-6c 37a5 00
-6c 37a6 00
-6c 37ff 00
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 18
-6c 3807 3f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d a9
-6c 380e 1e
-6c 380f a0
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 0f
-6c 381b 48
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00
-6c 3823 04
-6c 3828 02
-6c 3829 01
-6c 382e 41
-6c 3830 05
-6c 3831 00
-6c 3837 06
-6c 383e 00
-6c 383f 04
-6c 3840 00
-6c 3841 00
-6c 3847 00
-6c 384a 00
-6c 384b 10
-6c 384c 01
-6c 384d a9
-6c 3856 00
-6c 3858 00
-6c 3859 00
-6c 3864 02
-6c 3867 08
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 20
-6c 388c 0f
-6c 388d 80
-6c 388e 0b
-6c 388f e0
-6c 3894 00
-6c 3896 60
-6c 3899 20
-6c 38a0 02
-6c 38a6 b0
-6c 38a7 84
-6c 3900 00
-6c 3901 00
-6c 3902 00
-6c 3903 00
-6c 3904 00
-6c 3905 00
-6c 3906 00
-6c 3907 00
-6c 3908 00
-6c 3909 00
-6c 390a 00
-6c 390b 0d
-6c 390c 0d
-6c 390d 0d
-6c 390e 14
-6c 390f 14
-6c 3910 14
-6c 3911 02
-6c 3912 04
-6c 3913 07
-6c 3914 0e
-6c 3915 0e
-6c 3916 0e
-6c 3917 77
-6c 3918 77
-6c 3919 77
-6c 391a 00
-6c 391b 00
-6c 391c 00
-6c 391d 00
-6c 391e 00
-6c 391f 3c
-6c 3920 0e
-6c 3921 0e
-6c 3922 0e
-6c 3923 0e
-6c 3924 12
-6c 3925 12
-6c 3926 12
-6c 3927 12
-6c 3928 00
-6c 3929 04
-6c 392a 00
-6c 392b 00
-6c 392c 00
-6c 392d ff
-6c 392e 7a
-6c 392f 7a
-6c 3930 9a
-6c 3931 9a
-6c 3932 c0
-6c 3933 44
-6c 3934 44
-6c 3958 04
-6c 3959 08
-6c 395a 0c
-6c 395b 10
-6c 396b 60
-6c 396f 9f
-6c 3971 01
-6c 3973 10
-6c 3977 14
-6c 397a 0f
-6c 3987 03
-6c 8093 02
-6c 3d85 0b
-6c 3d8c 77
-6c 3d8d a0
-6c 3daa 00
-6c 3dab 14
-6c 3dac 00
-6c 3dad 00
-6c 3dae 07
-6c 3daf 8f
-6c 4300 00
-6c 4301 00
-6c 4308 00
-6c 430b 03
-6c 430c ff
-6c 3f00 10
-6c 4500 08
-6c 4501 00
-6c 4502 00
-6c 4504 80
-6c 4505 00
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 20
-6c 450e 00
-6c 450f 00
-6c 4510 00
-6c 4523 00
-6c 4526 00
-6c 4542 00
-6c 4543 00
-6c 4544 00
-6c 4545 00
-6c 4546 00
-6c 4547 10
-6c 4550 00
-6c 4c00 00
-6c 4c0a 40
-6c 4c10 02
-6c 4c11 06
-6c 4c12 02
-6c 4c13 06
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c5c 00
-6c 4c5d 00
-6c 4c5e 00
-6c 4c5f 00
-6c 4c60 00
-6c 4c61 00
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4c6c 00
-6c 4c6d 00
-6c 4c6e 00
-6c 4c6f 00
-6c 4c70 00
-6c 4c71 00
-6c 4c72 00
-6c 4c73 00
-6c 4c74 00
-6c 4c75 00
-6c 4c76 00
-6c 4c77 00
-6c 4c7c 00
-6c 4c7d 00
-6c 4c7e 00
-6c 4c7f 00
-6c 4c80 00
-6c 4c81 00
-6c 4c82 00
-6c 4c83 00
-6c 4c84 00
-6c 4c85 00
-6c 4c86 00
-6c 4c87 00
-6c 4e01 00
-6c 4e02 40
-6c 4e08 01
-6c 4e09 00
-6c 3023 01
-6c 4009 01
-6c 400e c6
-6c 400f 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 401a 40
-6c 401b 04
-6c 401e 01
-6c 401f 30
-6c 4020 04
-6c 4021 00
-6c 4022 04
-6c 4023 00
-6c 4024 04
-6c 4025 00
-6c 4026 04
-6c 4027 00
-6c 4028 01
-6c 4029 00
-6c 402a 78
-6c 402b 78
-6c 402c 78
-6c 402d 78
-6c 402e 00
-6c 4030 00
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 3023 00
-6c 4100 00
-6c 4101 00
-6c 4103 00
-6c 4105 00
-6c 4288 07
-6c 428e 00
-6c 4580 01
-6c 4581 10
-6c 4583 08
-6c 4584 10
-6c 45c0 61
-6c 45c2 04
-6c 45cb 30
-6c 4602 00
-6c 4603 15
-6c 4609 20
-6c 460b 07
-6c 4640 00
-6c 4641 1f
-6c 4643 0c
-6c 4644 c0
-6c 4645 b3
-6c 464a 00
-6c 464b 00
-6c 464c 01
-6c 4680 19
-6c 4681 81
-6c 4683 2b
-6c 4686 00
-6c 4687 00
-6c 4688 00
-6c 4800 04
-6c 4802 00
-6c 480e 04
-6c 4813 e4
-6c 481b 3c
-6c 4829 64
-6c 4837 08
-6c 484a 3f
-6c 484b 27
-6c 4850 47
-6c 4853 10
-6c 4860 00
-6c 4861 ec
-6c 4862 04
-6c 4872 00
-6c 4883 00
-6c 4884 09
-6c 4885 1b
-6c 4888 90
-6c 4889 02
-6c 488a 00
-6c 48c0 00
-6c 48c4 00
-6c 48c5 00
-6c 4910 c8
-6c 4911 01
-6c 4912 0c
-6c 491a 40
-6c 4920 04
-6c 4921 00
-6c 4922 04
-6c 4923 00
-6c 4924 04
-6c 4925 00
-6c 4926 04
-6c 4927 00
-6c 4930 00
-6c 4931 10
-6c 4932 00
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 4a0c 34
-6c 4d00 03
-6c 4d01 81 ;ca
-6c 4d02 bf ;bb
-6c 4d03 58 ;c2
-6c 4d04 04
-6c 4d05 f4 ;35
-6c 50c1 00
-6c 53c1 00
-6c 6c00 00
-6c 6c02 00
-6c 6c06 00
-6c 6c07 00
-6c 6c09 06
-6c 5000 f7
-6c 5001 01
-6c 5002 17
-6c 5003 80
-6c 5004 80
-6c 5005 02
-6c 5006 80
-6c 5007 1e
-6c 504f 02
-6c 5060 00
-6c 5061 00
-6c 5062 00
-6c 5063 00
-6c 5064 20
-6c 5065 40
-6c 5066 18
-6c 5067 40
-6c 5068 02
-6c 5069 10
-6c 506a 10
-6c 506b 04
-6c 506c 06
-6c 506d 0c
-6c 506e 0e
-6c 506f 04
-6c 5070 04
-6c 5071 0c
-6c 5072 0c
-6c 5073 01
-6c 5074 01
-6c 5075 bb
-6c 5076 20
-6c 5077 40
-6c 5078 18
-6c 5079 40
-6c 50c1 00
-6c 5110 00
-6c 5111 14
-6c 5112 07
-6c 5113 8f
-6c 5152 a3
-6c 5154 0c
-6c 5155 0c
-6c 5156 0c
-6c 5157 0c
-6c 5158 0c
-6c 5159 0c
-6c 515a 0c
-6c 515b 0c
-6c 5180 81
-6c 5181 10
-6c 5182 10
-6c 5183 10
-6c 5184 10
-6c 5185 10
-6c 5186 10
-6c 5187 10
-6c 518e 04
-6c 51b0 30
-6c 51d0 f2
-6c 51d1 20
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51d9 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51de 00
-6c 51df 00
-6c 51e0 02
-6c 51e1 02
-6c 51e2 00
-6c 51e3 00
-6c 51f4 bb
-6c 51f8 08
-6c 51f9 10
-6c 51fa 06
-6c 51fb 10
-6c 51fc 00
-6c 51fd 00
-6c 51fe 00
-6c 51ff 00
-6c 5200 08
-6c 5201 10
-6c 5202 06
-6c 5203 10
-6c 5205 08
-6c 5250 14
-6c 5251 00
-6c 5252 00
-6c 5253 00
-6c 5258 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527a 00
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 5290 01
-6c 5291 00
-6c 5292 01
-6c 5293 00
-6c 5294 00
-6c 5295 50
-6c 5296 00
-6c 5297 50
-6c 5298 00
-6c 5299 50
-6c 529a 00
-6c 529b 50
-6c 529c 00
-6c 529d 50
-6c 529e 00
-6c 529f 50
-6c 52a0 00
-6c 52a1 50
-6c 52a2 00
-6c 52a3 50
-6c 52f0 02
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f5 01
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 5331 02
-6c 5332 42
-6c 5333 24
-6c 53c1 00
-6c 5410 00
-6c 5411 14
-6c 5412 07
-6c 5413 8f
-6c 54d0 32
-6c 54d1 20
-6c 54d2 84
-6c 54d3 00
-6c 5550 14
-6c 5553 00
-6c 55f0 01
-6c 55f1 02
-6c 55f2 03
-6c 55f3 04
-6c 55f4 05
-6c 55f5 06
-6c 55f6 07
-6c 55f7 08
-6c 55f8 09
-6c 55f9 0a
-6c 59f0 40
-6c 59f1 40
-6c 59f2 40
-6c 59f3 40
-6c 59f4 40
-6c 59f5 40
-6c 59f6 40
-6c 59f7 40
-6c 59f8 40
-6c 59f9 40
-6c 59fa 40
-6c 59fb 40
-6c 59fc 40
-6c 59fd 40
-6c 59fe 40
-6c 59ff 40
-6c 5a00 40
-6c 5a01 40
-6c 5a02 40
-6c 5a03 40
-6c 5a04 40
-6c 5a05 40
-6c 5a06 40
-6c 5a07 40
-6c 5a08 40
-6c 5a09 40
-6c 5a0a 40
-6c 5a0b 40
-6c 5a0c 40
-6c 5a0d 40
-6c 5a0e 40
-6c 5a0f 40
-6c 5a10 40
-6c 5a11 40
-6c 5a12 40
-6c 5a13 40
-6c 5a14 40
-6c 5a15 40
-6c 5a16 40
-6c 5a17 40
-6c 5a18 40
-6c 5a19 40
-6c 5a1a 40
-6c 5a1b 40
-6c 5a1c 40
-6c 5a1d 40
-6c 5a1e 40
-6c 5a1f 40
-6c 5a20 40
-6c 5a21 40
-6c 5a22 40
-6c 5a23 40
-6c 5a24 40
-6c 5a25 40
-6c 5a26 40
-6c 5a27 40
-6c 5a28 40
-6c 5a29 40
-6c 5a2a 40
-6c 5a2b 40
-6c 5a2c 40
-6c 5a2d 40
-6c 5a2e 40
-6c 5a2f 40
-6c 5a30 40
-6c 5a31 40
-6c 5a32 40
-6c 5a33 40
-6c 5a34 40
-6c 5a35 40
-6c 5a36 40
-6c 5a37 40
-6c 5a38 40
-6c 5a39 40
-6c 5a3a 40
-6c 5a3b 40
-6c 5a3c 40
-6c 5a3d 40
-6c 5a3e 40
-6c 5a3f 40
-6c 5a40 40
-6c 5a41 40
-6c 5a42 40
-6c 5a43 40
-6c 5a44 40
-6c 5a45 40
-6c 5a46 40
-6c 5a47 40
-6c 5a48 40
-6c 5a49 40
-6c 5a4a cd
-6c 5a4b cd
-6c 5a4c cd
-6c 5a4d cd
-6c 5a4e cd
-6c 5a4f cd
-6c 5a50 cd
-6c 5a51 cd
-6c 5a52 cd
-6c 5a53 cd
-6c 5a54 cd
-6c 5a55 cd
-6c 5a56 cd
-6c 5a57 cd
-6c 5a58 cd
-6c 5a59 cd
-6c 5a5a cd
-6c 5a5b cd
-6c 5a5c cd
-6c 5a5d cd
-6c 5a5e cd
-6c 5a5f cd
-6c 5a60 cd
-6c 5a61 cd
-6c 5a62 cd
-6c 5a63 cd
-6c 5a64 cd
-6c 5a65 cd
-6c 5a66 cd
-6c 5a67 cd
-6c 5a68 cd
-6c 5a69 cd
-6c 5a6a cd
-6c 5a6b cd
-6c 5a6c cd
-6c 5a6d cd
-6c 5a6e cd
-6c 5a6f cd
-6c 5a70 cd
-6c 5a71 cd
-6c 5a72 cd
-6c 5a73 cd
-6c 5a74 cd
-6c 5a75 cd
-6c 5a76 cd
-6c 5a77 cd
-6c 5a78 cd
-6c 5a79 cd
-6c 5a7a cd
-6c 5a7b cd
-6c 5a7c cd
-6c 5a7d cd
-6c 5a7e cd
-6c 5a7f cd
-6c 5a80 cd
-6c 5a81 cd
-6c 5a82 cd
-6c 5a83 cd
-6c 5a84 cd
-6c 5a85 cd
-6c 5a86 cd
-6c 5a87 cd
-6c 5a88 cd
-6c 5a89 cd
-6c 5a8a cd
-6c 5a8b cd
-6c 5a8c cd
-6c 5a8d cd
-6c 5a8e cd
-6c 5a8f cd
-6c 5a90 cd
-6c 5a91 cd
-6c 5a92 cd
-6c 5a93 cd
-6c 5a94 cd
-6c 5a95 cd
-6c 5a96 cd
-6c 5a97 cd
-6c 5a98 cd
-6c 5a99 cd
-6c 5a9a cd
-6c 5a9b cd
-6c 5a9c cd
-6c 5a9d cd
-6c 5a9e cd
-6c 5a9f cd
-6c 5aa0 cd
-6c 5aa1 cd
-6c 5aa2 cd
-6c 5aa3 cd
-6c 5aa4 cd
-6c 5aa5 cd
-6c 5aa6 cd
-6c 5aa7 cd
-6c 5aa8 cd
-6c 5aa9 cd
-6c 5aaa cd
-6c 5aab cd
-6c 5aac cd
-6c 5aad cd
-6c 5aae cd
-6c 5aaf cd
-6c 5ab0 cd
-6c 5ab1 cd
-6c 5ab2 cd
-6c 5ab3 cd
-6c 5ab4 cd
-6c 5ab5 cd
-6c 5ab6 cd
-6c 5ab7 cd
-6c 5ab8 cd
-6c 5ab9 cd
-6c 5aba cd
-6c 5abb cd
-6c 5abc cd
-6c 5abd cd
-6c 5abe cd
-6c 5abf cd
-6c 5ac0 cd
-6c 5ac1 cd
-6c 5ac2 cd
-6c 5ac3 cd
-6c 5ac4 cd
-6c 5ac5 cd
-6c 5ac6 cd
-6c 5ac7 cd
-6c 5ac8 cd
-6c 5ac9 cd
-6c 5aca cd
-6c 5acb cd
-6c 5acc cd
-6c 5acd cd
-6c 5ace cd
-6c 5acf cd
-6c 5ad0 cd
-6c 5ad1 cd
-6c 5ad2 cd
-6c 5ad3 cd
-6c 5ad4 cd
-6c 5ad5 cd
-6c 5ad6 cd
-6c 5ad7 cd
-6c 5ad8 cd
-6c 5ad9 cd
-6c 5ada cd
-6c 5adb cd
-6c 5adc cd
-6c 5add cd
-6c 5ade cd
-6c 5adf cd
-6c 5ae0 cd
-6c 5ae1 cd
-6c 5ae2 cd
-6c 5ae3 cd
-6c 5ae4 cd
-6c 5ae5 cd
-6c 5ae6 cd
-6c 5ae7 cd
-6c 5ae8 cd
-6c 5ae9 cd
-6c 5aea cd
-6c 5aeb cd
-6c 5aec cd
-6c 5aed cd
-6c 5aee cd
-6c 5aef cd
-6c 5af0 cd
-6c 5af1 cd
-6c 5af2 cd
-6c 5af3 cd
-6c 5af4 cd
-6c 5af5 cd
-6c 5af6 cd
-6c 5af7 cd
-6c 5af8 cd
-6c 5af9 cd
-6c 5afa cd
-6c 5afb cd
-6c 5afc cd
-6c 5afd cd
-6c 5afe cd
-6c 5aff cd
-6c 5b00 cd
-6c 5b01 cd
-6c 5b02 cd
-6c 5b03 cd
-6c 5b04 cd
-6c 5b05 cd
-6c 5b06 cd
-6c 5b07 cd
-6c 5b08 cd
-6c 5b09 cd
-6c 5b0a cd
-6c 5b0b cd
-6c 5b0c cd
-6c 5b0d cd
-6c 5b0e cd
-6c 5b0f cd
-6c 5b10 cd
-6c 5b11 cd
-6c 5b12 cd
-6c 5b13 cd
-6c 5b14 cd
-6c 5b15 cd
-6c 5b16 cd
-6c 5b17 cd
-6c 5b18 cd
-6c 5b19 cd
-6c 5b1a cd
-6c 5b1b cd
-6c 5b1c cd
-6c 5b1d cd
-6c 5b1e cd
-6c 5b1f cd
-6c 5b20 cd
-6c 5b21 cd
-6c 5b22 cd
-6c 5b23 cd
-6c 5b24 cd
-6c 5b25 cd
-6c 5b26 cd
-6c 5b27 cd
-6c 5b28 cd
-6c 5b29 cd
-6c 5b2a cd
-6c 5b2b cd
-6c 5b2c cd
-6c 5b2d cd
-6c 5b2e cd
-6c 5b2f cd
-6c 5b30 cd
-6c 5b31 cd
-6c 5b32 cd
-6c 5b33 cd
-6c 5b34 cd
-6c 5b35 cd
-6c 5b36 cd
-6c 5b37 cd
-6c 5b38 cd
-6c 5b39 cd
-6c 5b3a cd
-6c 5b3b cd
-6c 5b3c cd
-6c 5b3d cd
-6c 5b3e cd
-6c 5b3f cd
-6c 5b40 cd
-6c 5b41 cd
-6c 5b42 cd
-6c 5b43 cd
-6c 5b44 cd
-6c 5b45 cd
-6c 5b46 cd
-6c 5b47 cd
-6c 5b48 cd
-6c 5b49 cd
-6c 5b4a cd
-6c 5b4b cd
-6c 5b4c cd
-6c 5b4d cd
-6c 5b4e cd
-6c 5b4f cd
-6c 5b50 cd
-6c 5b51 cd
-6c 5b52 cd
-6c 5b53 cd
-6c 5b54 cd
-6c 5b55 cd
-6c 5b56 cd
-6c 5b57 cd
-6c 5b58 cd
-6c 5b59 cd
-6c 5b5a cd
-6c 5b5b cd
-6c 5b5c cd
-6c 5b5d cd
-6c 5b5e cd
-6c 5b5f cd
-6c 5b60 cd
-6c 5b61 cd
-6c 5b62 cd
-6c 5b63 cd
-6c 5b64 cd
-6c 5b65 cd
-6c 5b66 cd
-6c 5b67 cd
-6c 5b68 cd
-6c 5b69 cd
-6c 5b6a cd
-6c 5b6b cd
-6c 5b6c cd
-6c 5b6d cd
-6c 5b6e cd
-6c 5b6f cd
-6c 5b70 cd
-6c 5b71 cd
-6c 5b72 cd
-6c 5b73 cd
-6c 5b74 cd
-6c 5b75 cd
-6c 5b76 cd
-6c 5b77 cd
-6c 5b78 cd
-6c 5b79 cd
-6c 5b7a cd
-6c 5b7b cd
-6c 5b7c cd
-6c 5b7d cd
-6c 5b7e cd
-6c 5b7f cd
-6c 5b80 cd
-6c 5b81 cd
-6c 5b82 cd
-6c 5b83 cd
-6c 5b84 cd
-6c 5b85 cd
-6c 5b86 cd
-6c 5b87 cd
-6c 5b88 cd
-6c 5b89 cd
-6c 5b8a cd
-6c 5b8b cd
-6c 5b8c cd
-6c 5b8d cd
-6c 5b8e cd
-6c 5b8f cd
-6c 5b90 cd
-6c 5b91 cd
-6c 5b92 cd
-6c 5b93 cd
-6c 5b94 cd
-6c 5b95 cd
-6c 5b96 cd
-6c 5b97 cd
-6c 5b98 cd
-6c 5b99 cd
-6c 5b9a cd
-6c 5b9b cd
-6c 5b9c cd
-6c 5b9d cd
-6c 5b9e cd
-6c 5b9f cd
-6c 5ba0 cd
-6c 5ba1 cd
-6c 5ba2 cd
-6c 5ba3 cd
-6c 5ba4 cd
-6c 5ba5 cd
-6c 5ba6 cd
-6c 5ba7 cd
-6c 5ba8 cd
-6c 5ba9 cd
-6c 5baa cd
-6c 5bab cd
-6c 5bac cd
-6c 5bad cd
-6c 5bae cd
-6c 5baf cd
-6c 5bb0 cd
-6c 5bb1 cd
-6c 8000 00
-6c 8001 08
-6c 8002 0a
-6c 8003 00
-6c 8004 25
-6c 8005 0f
-6c 8006 00
-6c 8007 3a
-6c 8008 16
-6c 8009 00
-6c 800a 51
-6c 800b 1d
-6c 800c 00
-6c 800d 52
-6c 800e 12
-6c 800f 00
-6c 8010 6a
-6c 8011 0f
-6c 8012 00
-6c 8013 81
-6c 8015 00
-6c 8016 9f
-6c 8017 23
-6c 8018 00
-6c 8019 cb
-6c 801a 6a
-6c 801b 00
-6c 801c e1
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-6c 801e 00
-6c 801f 00
-6c 8020 00
-6c 8021 00
-6c 8022 00
-6c 8023 00
-6c 8024 00
-6c 8025 00
-6c 8026 00
-6c 8027 00
-6c 8028 00
-6c 8029 00
-6c 802a 00
-6c 802b 00
-6c 802c 00
-6c 802d c5
-6c 802e e3
-6c 802f 97
-6c 8030 e3
-6c 8031 e3
-6c 8032 08
-6c 8033 00
-6c 8034 00
-6c 8035 08
-6c 8036 e7
-6c 8037 00
-6c 8038 00
-6c 8039 e5
-6c 803a 02
-6c 803b e5
-6c 803c 02
-6c 803d e5
-6c 803e 02
-6c 803f e5
-6c 8040 02
-6c 8041 e5
-6c 8042 02
-6c 8043 e5
-6c 8044 02
-6c 8045 e5
-6c 8046 02
-6c 8047 00
-6c 8048 00
-6c 8049 00
-6c 804a 00
-6c 804b 00
-6c 804c 00
-6c 804d 00
-6c 804e 00
-6c 804f 08
-6c 8050 2b
-6c 8051 2f
-6c 8052 eb
-6c 8053 00
-6c 8054 00
-6c 8055 6f
-6c 8056 97
-6c 8057 e1
-6c 8058 e5
-6c 8059 6f
-6c 805a 97
-6c 805b e1
-6c 805c e5
-6c 805d 00
-6c 805e 00
-6c 805f 56
-6c 8060 60
-6c 8061 99
-6c 8062 c9
-6c 8063 00
-6c 8064 00
-6c 8065 eb
-6c 8066 1a
-6c 8067 eb
-6c 8068 1a
-6c 8069 eb
-6c 806a 1a
-6c 806b eb
-6c 806c 5e
-6c 806d eb
-6c 806e 5e
-6c 806f 1a
-6c 8070 e3
-6c 8071 00
-6c 8072 00
-6c 8073 54
-6c 8074 06
-6c 8075 00
-6c 8076 00
-6c 8077 54
-6c 8078 06
-6c 8079 00
-6c 807a 00
-6c 807b 54
-6c 807c 06
-6c 807d 00
-6c 807e 00
-6c 807f 00
-6c 8080 00
-6c 8081 00
-6c 8082 00
-6c 8083 00
-6c 8084 00
-6c 8085 00
-6c 8086 00
-6c 8087 00
-6c 8088 00
-6c 8089 00
-6c 808a 00
-6c 808b 00
-6c 808c 00
-6c 808d e7
-6c 808e 00
-6c 808f e7
-6c 8090 12
-6c 8091 56
-6c 8092 e5
-6c 8093 01
-6c 8094 00
-6c 8095 e7
-6c 8096 12
-6c 8097 e7
-6c 8098 17
-6c 8099 e7
-6c 809a 12
-6c 809b e7
-6c 809c 12
-6c 809d 08
-6c 809e 97
-6c 809f e3
-6c 80a0 08
-6c 80a1 08
-6c 80a2 e3
-6c 80a3 01
-6c 80a4 e9
-6c 80a5 00
-6c 80a6 00
-6c 80a7 98
-6c 80a8 b9
-6c 80a9 99
-6c 80aa b7
-6c 80ab 00
-6c 80ac 00
-6c 80ad 02
-6c 80ae 24
-6c 80af 00
-6c 80b0 00
-6c 80b1 00
-6c 80b2 00
-6c 80b3 e5
-6c 80b4 e6
-6c 80b5 00
-6c 80b6 00
-6c 80b7 00
-6c 80b8 00
-6c 80b9 00
-6c 80ba 00
-6c 80bb 00
-6c 80bc 00
-6c 80bd 00
-6c 80be 00
-6c 80bf 06
-6c 80c0 e5
-6c 80c1 3b
-6c 80c2 3d
-6c 80c3 00
-6c 80c4 00
-6c 80c5 3d
-6c 80c6 47
-6c 80c7 d0
-6c 80c8 da
-6c 80c9 00
-6c 80ca 00
-6c 80cb 99
-6c 80cc 9d
-6c 80cd 00
-6c 80ce 00
-6c 80cf 00
-6c 80d0 00
-6c 80d1 00
-6c 80d2 00
-6c 80d3 00
-6c 80d4 00
-6c 80d5 00
-6c 80d6 00
-6c 80d7 00
-6c 80d8 00
-6c 80d9 00
-6c 80da 00
-6c 80db e9
-6c 80dc eb
-6c 80dd 00
-6c 80de 00
-6c 80df e4
-6c 80e0 e6
-6c 80e1 00
-6c 80e2 00
-6c 80e5 00
-6c 80e6 00
-6c 80e7 00
-6c 80e8 00
-6c 80e9 02
-6c 80e3 08
-6c 80e4 50
-6c 80ea 00
-6c 80eb 00
-6c 80ec 00
-6c 80ed 00
-6c 80ee 00
-6c 80ef 00
-6c 80f0 00
-6c 80f1 00
-6c 80f2 00
-6c 80f3 00
-6c 80f4 00
-6c 80f5 00
-6c 80f6 00
-6c 80f7 00
-6c 80f8 00
-6c 80f9 00
-6c 80fa 00
-6c 80fb 00
-6c 80fc 00
-6c 80fd 00
-6c 80fe 00
-6c 80ff 00
-6c 8100 00
-6c 8101 00
-6c 8102 00
-6c 8103 00
-6c 8104 00
-6c 8105 00
-6c 8106 00
-6c 8107 00
-6c 8108 00
-6c 8109 00
-6c 810a 00
-6c 810b 00
-6c 810c 00
-6c 810d 00
-6c 810e 00
-6c 810f ee
-6c 8110 ef
-6c 8111 a1
-6c 8112 a6
-6c 8113 f4
-6c 8114 f9
-6c 8115 dd
-6c 8116 e5
-6c 8117 6b
-6c 8118 97
-6c 8119 08
-6c 811b 08
-6c 811c 52
-6c 811d 08
-6c 811e 52
-6c 811f 08
-6c 8120 52
-6c 8121 08
-6c 8123 08
-6c 8124 52
-6c 8125 08
-6c 8126 52
-6c 8127 08
-6c 8128 52
-6c 811a 51
-6c 8122 52
-6c 8129 08
-6c 812a 54
-6c 812b 00
-6c 812c 00
-6c 812d 08
-6c 812e 54
-6c 812f 00
-6c 8130 00
-6c 8131 08
-6c 8132 54
-6c 8133 00
-6c 8134 00
-6c 8135 08
-6c 8136 54
-6c 8137 00
-6c 8138 00
-6c 8139 08
-6c 813a 54
-6c 813b 00
-6c 813c 00
-6c 813d 08
-6c 813e 54
-6c 813f 00
-6c 8140 00
-6c 8141 08
-6c 8142 54
-6c 8143 00
-6c 8144 00
-6c 8145 08
-6c 8146 54
-6c 8147 00
-6c 8148 00
-6c 8149 6d
-6c 814a 95
-6c 814b df
-6c 814c e3
-6c 814d 6d
-6c 814e 95
-6c 814f df
-6c 8150 e3
-6c 8151 6d
-6c 8152 95
-6c 8153 df
-6c 8154 e3
-6c 8155 6d
-6c 8156 95
-6c 8157 df
-6c 8158 e3
-6c 8159 95
-6c 815a 6d
-6c 815b e3
-6c 815c df
-6c 815d 00
-6c 815e 00
-6c 815f 95
-6c 8160 6d
-6c 8161 e3
-6c 8162 df
-6c 8163 00
-6c 8164 00
-6c 8165 95
-6c 8166 6d
-6c 8167 e3
-6c 8168 df
-6c 8169 00
-6c 816a 00
-6c 816b 95
-6c 816c 6d
-6c 816d e3
-6c 816e df
-6c 816f 00
-6c 8170 00
-6c 8171 6d
-6c 8172 95
-6c 8173 df
-6c 8174 e3
-6c 8175 6d
-6c 8176 95
-6c 8177 df
-6c 8178 e3
-6c 8179 6d
-6c 817a 95
-6c 817b df
-6c 817c e3
-6c 817d 6d
-6c 817e 95
-6c 817f df
-6c 8180 e3
-6c 8056 00
-6c 8057 00
-6c 8058 00
-6c 8059 00
-6c 805a 00
-6c 805b 00
-6c 805c 00
-6c 802f 08
-6c 806b 00
-6c 3047 07
-6c 3200 00
-6c 3201 10
-6c 3202 20
-6c 382a 81
-6c 382b 08
-6c 0361 00
-6c 370b 54
-6c 450d 00
-6c 4509 00
-6c 4511 02
-6c 484f 20
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/Makefile
deleted file mode 100755
index d9802cf5..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/knightmmonomipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmono_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmono_Sensor_setting.h
deleted file mode 100755
index 93863ed6..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmono_Sensor_setting.h
+++ /dev/null
@@ -1,798 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 knightmmono_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KNIGHTMMONOMIPI_SENSOR_SETTING_H
-#define _KNIGHTMMONOMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static kal_uint16 knightmmono_soft_reset[] = {
-/* @@ init */
-    0xfc, 0x01,
-/* sl 5 5 ; sleep time */
-};
-
-static kal_uint16 knightmmono_sensor_init_setting[] = {
-    0xfd, 0x00,
-    0xfd, 0x00,
-    0x24, 0x01,
-    0x25, 0x04,
-    0x29, 0x01,
-    0x2a, 0x1b,
-    0x1e, 0x17,
-    0x33, 0x07,
-    0x35, 0x07,
-    0x4a, 0x0c,
-    0x3a, 0x05,
-    0x3b, 0x02,
-    0x3e, 0x00,
-    0x46, 0x01,
-    0x6d, 0x05,
-    0x7a, 0x00,
-    0x64, 0x00,
-    0x5b, 0x08,
-    0x61, 0x18,
-    0xfd, 0x01,
-    0x0e, 0x02,
-    0x0f, 0x1a,
-    0x18, 0x00,
-    0x22, 0xff,
-    0x23, 0x02,
-    0x17, 0x2d,
-    0x19, 0x20,
-    0x1b, 0x07,
-    0x1c, 0x04,
-    0x20, 0x03,
-    0x30, 0x01,
-    0x33, 0x01,
-    0x31, 0x0a,
-    0x32, 0x09,
-    0x38, 0x01,
-    0x39, 0x01,
-    0x3a, 0x01,
-    0x3b, 0x01,
-    0x4f, 0x04,
-    0x4e, 0x05,
-    0x50, 0x01,
-    0x35, 0x0c,
-    0x45, 0x2a,
-    0x46, 0x2a,
-    0x47, 0x2a,
-    0x48, 0x2a,
-    0x4a, 0x2c,
-    0x4b, 0x2c,
-    0x4c, 0x2c,
-    0x4d, 0x2c,
-    0x56, 0x30,
-    0x57, 0x07,
-    0x58, 0x27,
-    0x59, 0x20,
-    0x5a, 0x07,
-    0x5b, 0xf4,
-    0x37, 0x0a,
-    0x42, 0x0e,
-    0x68, 0x90,
-    0x69, 0xcd,
-    0x6a, 0x8f,
-    0x7c, 0x0a,
-    0x7d, 0x09,
-    0x7e, 0x09,
-    0x7f, 0x08,
-    0x83, 0x14,
-    0x84, 0x14,
-    0x86, 0x14,
-    0x87, 0x07,
-    0x88, 0x0f,
-    0x94, 0x02,
-    0x98, 0xd1,
-    0xfe, 0x02,
-    0xfd, 0x03,
-    0x97, 0x6c,
-    0x98, 0x60,
-    0x99, 0x60,
-    0x9a, 0x6c,
-    0xa1, 0x40,
-    0xaf, 0x04,
-    0xb1, 0x40,
-    0xae, 0x0d,
-    0x88, 0x5b,
-    0x89, 0x7c,
-    0xb4, 0x05,
-    0x8c, 0x40,
-    0x8e, 0x40,
-    0x90, 0x40,
-    0x92, 0x40,
-    0x9b, 0x46,
-    0xac, 0x40,
-    0xfd, 0x00,
-    0x5a, 0x15,
-    0x74, 0x01,
-    0xfd, 0x00,
-    0x50, 0x40,
-    0x52, 0xb0,
-    0xfd, 0x01,
-    0x03, 0x70,
-    0x05, 0x10,
-    0x07, 0x20,
-    0x09, 0xb0,
-    0xfb, 0x01,
-    0xfd, 0x01,
-    0x14, 0x00,
-    0x15, 0xbf,
-    0xfe, 0x02,
-};
-
-static kal_uint16 knightmmono_preview_setting[] = {
-    0xfd, 0x00,
-    0xfd, 0x00,
-    0x24, 0x01,
-    0x25, 0x04,
-    0x29, 0x01,
-    0x2a, 0x1b,
-    0x1e, 0x17,
-    0x33, 0x07,
-    0x35, 0x07,
-    0x4a, 0x0c,
-    0x3a, 0x05,
-    0x3b, 0x02,
-    0x3e, 0x00,
-    0x46, 0x01,
-    0x6d, 0x05,
-    0x7a, 0x00,
-    0x64, 0x00,
-    0x5b, 0x08,
-    0x61, 0x18,
-    0xfd, 0x01,
-    0x0e, 0x02,
-    0x0f, 0x1a,
-    0x18, 0x00,
-    0x22, 0xff,
-    0x23, 0x02,
-    0x17, 0x2d,
-    0x19, 0x20,
-    0x1b, 0x07,
-    0x1c, 0x04,
-    0x20, 0x03,
-    0x30, 0x01,
-    0x33, 0x01,
-    0x31, 0x0a,
-    0x32, 0x09,
-    0x38, 0x01,
-    0x39, 0x01,
-    0x3a, 0x01,
-    0x3b, 0x01,
-    0x4f, 0x04,
-    0x4e, 0x05,
-    0x50, 0x01,
-    0x35, 0x0c,
-    0x45, 0x2a,
-    0x46, 0x2a,
-    0x47, 0x2a,
-    0x48, 0x2a,
-    0x4a, 0x2c,
-    0x4b, 0x2c,
-    0x4c, 0x2c,
-    0x4d, 0x2c,
-    0x56, 0x30,
-    0x57, 0x07,
-    0x58, 0x27,
-    0x59, 0x20,
-    0x5a, 0x07,
-    0x5b, 0xf4,
-    0x37, 0x0a,
-    0x42, 0x0e,
-    0x68, 0x90,
-    0x69, 0xcd,
-    0x6a, 0x8f,
-    0x7c, 0x0a,
-    0x7d, 0x09,
-    0x7e, 0x09,
-    0x7f, 0x08,
-    0x83, 0x14,
-    0x84, 0x14,
-    0x86, 0x14,
-    0x87, 0x07,
-    0x88, 0x0f,
-    0x94, 0x02,
-    0x98, 0xd1,
-    0xfe, 0x02,
-    0xfd, 0x03,
-    0x97, 0x6c,
-    0x98, 0x60,
-    0x99, 0x60,
-    0x9a, 0x6c,
-    0xa1, 0x40,
-    0xaf, 0x04,
-    0xb1, 0x40,
-    0xae, 0x0d,
-    0x88, 0x5b,
-    0x89, 0x7c,
-    0xb4, 0x05,
-    0x8c, 0x40,
-    0x8e, 0x40,
-    0x90, 0x40,
-    0x92, 0x40,
-    0x9b, 0x46,
-    0xac, 0x40,
-    0xfd, 0x00,
-    0x5a, 0x15,
-    0x74, 0x01,
-    0xfd, 0x00,
-    0x50, 0x40,
-    0x52, 0xb0,
-    0xfd, 0x01,
-    0x03, 0x70,
-    0x05, 0x10,
-    0x07, 0x20,
-    0x09, 0xb0,
-    0xfb, 0x01,
-    0xfd, 0x01,
-    0x14, 0x00,
-    0x15, 0xbf,
-    0xfe, 0x02,
-};
-
-static kal_uint16 knightmmono_capture_setting[] = {
-    0xfd, 0x00,
-    0xfd, 0x00,
-    0x24, 0x01,
-    0x25, 0x04,
-    0x29, 0x01,
-    0x2a, 0x1b,
-    0x1e, 0x17,
-    0x33, 0x07,
-    0x35, 0x07,
-    0x4a, 0x0c,
-    0x3a, 0x05,
-    0x3b, 0x02,
-    0x3e, 0x00,
-    0x46, 0x01,
-    0x6d, 0x05,
-    0x7a, 0x00,
-    0x64, 0x00,
-    0x5b, 0x08,
-    0x61, 0x18,
-    0xfd, 0x01,
-    0x0e, 0x02,
-    0x0f, 0x1a,
-    0x18, 0x00,
-    0x22, 0xff,
-    0x23, 0x02,
-    0x17, 0x2d,
-    0x19, 0x20,
-    0x1b, 0x07,
-    0x1c, 0x04,
-    0x20, 0x03,
-    0x30, 0x01,
-    0x33, 0x01,
-    0x31, 0x0a,
-    0x32, 0x09,
-    0x38, 0x01,
-    0x39, 0x01,
-    0x3a, 0x01,
-    0x3b, 0x01,
-    0x4f, 0x04,
-    0x4e, 0x05,
-    0x50, 0x01,
-    0x35, 0x0c,
-    0x45, 0x2a,
-    0x46, 0x2a,
-    0x47, 0x2a,
-    0x48, 0x2a,
-    0x4a, 0x2c,
-    0x4b, 0x2c,
-    0x4c, 0x2c,
-    0x4d, 0x2c,
-    0x56, 0x30,
-    0x57, 0x07,
-    0x58, 0x27,
-    0x59, 0x20,
-    0x5a, 0x07,
-    0x5b, 0xf4,
-    0x37, 0x0a,
-    0x42, 0x0e,
-    0x68, 0x90,
-    0x69, 0xcd,
-    0x6a, 0x8f,
-    0x7c, 0x0a,
-    0x7d, 0x09,
-    0x7e, 0x09,
-    0x7f, 0x08,
-    0x83, 0x14,
-    0x84, 0x14,
-    0x86, 0x14,
-    0x87, 0x07,
-    0x88, 0x0f,
-    0x94, 0x02,
-    0x98, 0xd1,
-    0xfe, 0x02,
-    0xfd, 0x03,
-    0x97, 0x6c,
-    0x98, 0x60,
-    0x99, 0x60,
-    0x9a, 0x6c,
-    0xa1, 0x40,
-    0xaf, 0x04,
-    0xb1, 0x40,
-    0xae, 0x0d,
-    0x88, 0x5b,
-    0x89, 0x7c,
-    0xb4, 0x05,
-    0x8c, 0x40,
-    0x8e, 0x40,
-    0x90, 0x40,
-    0x92, 0x40,
-    0x9b, 0x46,
-    0xac, 0x40,
-    0xfd, 0x00,
-    0x5a, 0x15,
-    0x74, 0x01,
-    0xfd, 0x00,
-    0x50, 0x40,
-    0x52, 0xb0,
-    0xfd, 0x01,
-    0x03, 0x70,
-    0x05, 0x10,
-    0x07, 0x20,
-    0x09, 0xb0,
-    0xfb, 0x01,
-    0xfd, 0x01,
-    0x14, 0x00,
-    0x15, 0xbf,
-    0xfe, 0x02,
-};
-
-static kal_uint16 knightmmono_normal_video_setting[] = {
-    0xfd, 0x00,
-    0xfd, 0x00,
-    0x24, 0x01,
-    0x25, 0x04,
-    0x29, 0x01,
-    0x2a, 0x1b,
-    0x1e, 0x17,
-    0x33, 0x07,
-    0x35, 0x07,
-    0x4a, 0x0c,
-    0x3a, 0x05,
-    0x3b, 0x02,
-    0x3e, 0x00,
-    0x46, 0x01,
-    0x6d, 0x05,
-    0x7a, 0x00,
-    0x64, 0x00,
-    0x5b, 0x08,
-    0x61, 0x18,
-    0xfd, 0x01,
-    0x0e, 0x02,
-    0x0f, 0x1a,
-    0x18, 0x00,
-    0x22, 0xff,
-    0x23, 0x02,
-    0x17, 0x2d,
-    0x19, 0x20,
-    0x1b, 0x07,
-    0x1c, 0x04,
-    0x20, 0x03,
-    0x30, 0x01,
-    0x33, 0x01,
-    0x31, 0x0a,
-    0x32, 0x09,
-    0x38, 0x01,
-    0x39, 0x01,
-    0x3a, 0x01,
-    0x3b, 0x01,
-    0x4f, 0x04,
-    0x4e, 0x05,
-    0x50, 0x01,
-    0x35, 0x0c,
-    0x45, 0x2a,
-    0x46, 0x2a,
-    0x47, 0x2a,
-    0x48, 0x2a,
-    0x4a, 0x2c,
-    0x4b, 0x2c,
-    0x4c, 0x2c,
-    0x4d, 0x2c,
-    0x56, 0x30,
-    0x57, 0x07,
-    0x58, 0x27,
-    0x59, 0x20,
-    0x5a, 0x07,
-    0x5b, 0xf4,
-    0x37, 0x0a,
-    0x42, 0x0e,
-    0x68, 0x90,
-    0x69, 0xcd,
-    0x6a, 0x8f,
-    0x7c, 0x0a,
-    0x7d, 0x09,
-    0x7e, 0x09,
-    0x7f, 0x08,
-    0x83, 0x14,
-    0x84, 0x14,
-    0x86, 0x14,
-    0x87, 0x07,
-    0x88, 0x0f,
-    0x94, 0x02,
-    0x98, 0xd1,
-    0xfe, 0x02,
-    0xfd, 0x03,
-    0x97, 0x6c,
-    0x98, 0x60,
-    0x99, 0x60,
-    0x9a, 0x6c,
-    0xa1, 0x40,
-    0xaf, 0x04,
-    0xb1, 0x40,
-    0xae, 0x0d,
-    0x88, 0x5b,
-    0x89, 0x7c,
-    0xb4, 0x05,
-    0x8c, 0x40,
-    0x8e, 0x40,
-    0x90, 0x40,
-    0x92, 0x40,
-    0x9b, 0x46,
-    0xac, 0x40,
-    0xfd, 0x00,
-    0x5a, 0x15,
-    0x74, 0x01,
-    0xfd, 0x00,
-    0x50, 0x40,
-    0x52, 0xb0,
-    0xfd, 0x01,
-    0x03, 0x70,
-    0x05, 0x10,
-    0x07, 0x20,
-    0x09, 0xb0,
-    0xfb, 0x01,
-    0xfd, 0x01,
-    0x14, 0x00,
-    0x15, 0xbf,
-    0xfe, 0x02,
-};
-
-static kal_uint16 knightmmono_hs_video_setting[] = {
-    0xfd, 0x00,
-    0xfd, 0x00,
-    0x24, 0x01,
-    0x25, 0x04,
-    0x29, 0x01,
-    0x2a, 0x1b,
-    0x1e, 0x17,
-    0x33, 0x07,
-    0x35, 0x07,
-    0x4a, 0x0c,
-    0x3a, 0x05,
-    0x3b, 0x02,
-    0x3e, 0x00,
-    0x46, 0x01,
-    0x6d, 0x05,
-    0x7a, 0x00,
-    0x64, 0x00,
-    0x5b, 0x08,
-    0x61, 0x18,
-    0xfd, 0x01,
-    0x0e, 0x02,
-    0x0f, 0x1a,
-    0x18, 0x00,
-    0x22, 0xff,
-    0x23, 0x02,
-    0x17, 0x2d,
-    0x19, 0x20,
-    0x1b, 0x07,
-    0x1c, 0x04,
-    0x20, 0x03,
-    0x30, 0x01,
-    0x33, 0x01,
-    0x31, 0x0a,
-    0x32, 0x09,
-    0x38, 0x01,
-    0x39, 0x01,
-    0x3a, 0x01,
-    0x3b, 0x01,
-    0x4f, 0x04,
-    0x4e, 0x05,
-    0x50, 0x01,
-    0x35, 0x0c,
-    0x45, 0x2a,
-    0x46, 0x2a,
-    0x47, 0x2a,
-    0x48, 0x2a,
-    0x4a, 0x2c,
-    0x4b, 0x2c,
-    0x4c, 0x2c,
-    0x4d, 0x2c,
-    0x56, 0x30,
-    0x57, 0x07,
-    0x58, 0x27,
-    0x59, 0x20,
-    0x5a, 0x07,
-    0x5b, 0xf4,
-    0x37, 0x0a,
-    0x42, 0x0e,
-    0x68, 0x90,
-    0x69, 0xcd,
-    0x6a, 0x8f,
-    0x7c, 0x0a,
-    0x7d, 0x09,
-    0x7e, 0x09,
-    0x7f, 0x08,
-    0x83, 0x14,
-    0x84, 0x14,
-    0x86, 0x14,
-    0x87, 0x07,
-    0x88, 0x0f,
-    0x94, 0x02,
-    0x98, 0xd1,
-    0xfe, 0x02,
-    0xfd, 0x03,
-    0x97, 0x6c,
-    0x98, 0x60,
-    0x99, 0x60,
-    0x9a, 0x6c,
-    0xa1, 0x40,
-    0xaf, 0x04,
-    0xb1, 0x40,
-    0xae, 0x0d,
-    0x88, 0x5b,
-    0x89, 0x7c,
-    0xb4, 0x05,
-    0x8c, 0x40,
-    0x8e, 0x40,
-    0x90, 0x40,
-    0x92, 0x40,
-    0x9b, 0x46,
-    0xac, 0x40,
-    0xfd, 0x00,
-    0x5a, 0x15,
-    0x74, 0x01,
-    0xfd, 0x00,
-    0x50, 0x40,
-    0x52, 0xb0,
-    0xfd, 0x01,
-    0x03, 0x70,
-    0x05, 0x10,
-    0x07, 0x20,
-    0x09, 0xb0,
-    0xfb, 0x01,
-    0xfd, 0x01,
-    0x14, 0x00,
-    0x15, 0xbf,
-    0xfe, 0x02,
-};
-
-static kal_uint16 knightmmono_slim_video_setting[] = {
-    0xfd, 0x00,
-    0xfd, 0x00,
-    0x24, 0x01,
-    0x25, 0x04,
-    0x29, 0x01,
-    0x2a, 0x1b,
-    0x1e, 0x17,
-    0x33, 0x07,
-    0x35, 0x07,
-    0x4a, 0x0c,
-    0x3a, 0x05,
-    0x3b, 0x02,
-    0x3e, 0x00,
-    0x46, 0x01,
-    0x6d, 0x05,
-    0x7a, 0x00,
-    0x64, 0x00,
-    0x5b, 0x08,
-    0x61, 0x18,
-    0xfd, 0x01,
-    0x0e, 0x02,
-    0x0f, 0x1a,
-    0x18, 0x00,
-    0x22, 0xff,
-    0x23, 0x02,
-    0x17, 0x2d,
-    0x19, 0x20,
-    0x1b, 0x07,
-    0x1c, 0x04,
-    0x20, 0x03,
-    0x30, 0x01,
-    0x33, 0x01,
-    0x31, 0x0a,
-    0x32, 0x09,
-    0x38, 0x01,
-    0x39, 0x01,
-    0x3a, 0x01,
-    0x3b, 0x01,
-    0x4f, 0x04,
-    0x4e, 0x05,
-    0x50, 0x01,
-    0x35, 0x0c,
-    0x45, 0x2a,
-    0x46, 0x2a,
-    0x47, 0x2a,
-    0x48, 0x2a,
-    0x4a, 0x2c,
-    0x4b, 0x2c,
-    0x4c, 0x2c,
-    0x4d, 0x2c,
-    0x56, 0x30,
-    0x57, 0x07,
-    0x58, 0x27,
-    0x59, 0x20,
-    0x5a, 0x07,
-    0x5b, 0xf4,
-    0x37, 0x0a,
-    0x42, 0x0e,
-    0x68, 0x90,
-    0x69, 0xcd,
-    0x6a, 0x8f,
-    0x7c, 0x0a,
-    0x7d, 0x09,
-    0x7e, 0x09,
-    0x7f, 0x08,
-    0x83, 0x14,
-    0x84, 0x14,
-    0x86, 0x14,
-    0x87, 0x07,
-    0x88, 0x0f,
-    0x94, 0x02,
-    0x98, 0xd1,
-    0xfe, 0x02,
-    0xfd, 0x03,
-    0x97, 0x6c,
-    0x98, 0x60,
-    0x99, 0x60,
-    0x9a, 0x6c,
-    0xa1, 0x40,
-    0xaf, 0x04,
-    0xb1, 0x40,
-    0xae, 0x0d,
-    0x88, 0x5b,
-    0x89, 0x7c,
-    0xb4, 0x05,
-    0x8c, 0x40,
-    0x8e, 0x40,
-    0x90, 0x40,
-    0x92, 0x40,
-    0x9b, 0x46,
-    0xac, 0x40,
-    0xfd, 0x00,
-    0x5a, 0x15,
-    0x74, 0x01,
-    0xfd, 0x00,
-    0x50, 0x40,
-    0x52, 0xb0,
-    0xfd, 0x01,
-    0x03, 0x70,
-    0x05, 0x10,
-    0x07, 0x20,
-    0x09, 0xb0,
-    0xfb, 0x01,
-    0xfd, 0x01,
-    0x14, 0x00,
-    0x15, 0xbf,
-    0xfe, 0x02,
-};
-
-static kal_uint16 knightmmono_custom1_setting[] = {
-    0xfd, 0x00,
-    0xfd, 0x00,
-    0x24, 0x01,
-    0x25, 0x04,
-    0x29, 0x01,
-    0x2a, 0x1b,
-    0x1e, 0x17,
-    0x33, 0x07,
-    0x35, 0x07,
-    0x4a, 0x0c,
-    0x3a, 0x05,
-    0x3b, 0x02,
-    0x3e, 0x00,
-    0x46, 0x01,
-    0x6d, 0x05,
-    0x7a, 0x00,
-    0x64, 0x00,
-    0x5b, 0x08,
-    0x61, 0x18,
-    0xfd, 0x01,
-    0x0e, 0x02,
-    0x0f, 0x1a,
-    0x18, 0x00,
-    0x22, 0xff,
-    0x23, 0x02,
-    0x17, 0x2d,
-    0x19, 0x20,
-    0x1b, 0x07,
-    0x1c, 0x04,
-    0x20, 0x03,
-    0x30, 0x01,
-    0x33, 0x01,
-    0x31, 0x0a,
-    0x32, 0x09,
-    0x38, 0x01,
-    0x39, 0x01,
-    0x3a, 0x01,
-    0x3b, 0x01,
-    0x4f, 0x04,
-    0x4e, 0x05,
-    0x50, 0x01,
-    0x35, 0x0c,
-    0x45, 0x2a,
-    0x46, 0x2a,
-    0x47, 0x2a,
-    0x48, 0x2a,
-    0x4a, 0x2c,
-    0x4b, 0x2c,
-    0x4c, 0x2c,
-    0x4d, 0x2c,
-    0x56, 0x30,
-    0x57, 0x07,
-    0x58, 0x27,
-    0x59, 0x20,
-    0x5a, 0x07,
-    0x5b, 0xf4,
-    0x37, 0x0a,
-    0x42, 0x0e,
-    0x68, 0x90,
-    0x69, 0xcd,
-    0x6a, 0x8f,
-    0x7c, 0x0a,
-    0x7d, 0x09,
-    0x7e, 0x09,
-    0x7f, 0x08,
-    0x83, 0x14,
-    0x84, 0x14,
-    0x86, 0x14,
-    0x87, 0x07,
-    0x88, 0x0f,
-    0x94, 0x02,
-    0x98, 0xd1,
-    0xfe, 0x02,
-    0xfd, 0x03,
-    0x97, 0x6c,
-    0x98, 0x60,
-    0x99, 0x60,
-    0x9a, 0x6c,
-    0xa1, 0x40,
-    0xaf, 0x04,
-    0xb1, 0x40,
-    0xae, 0x0d,
-    0x88, 0x5b,
-    0x89, 0x7c,
-    0xb4, 0x05,
-    0x8c, 0x40,
-    0x8e, 0x40,
-    0x90, 0x40,
-    0x92, 0x40,
-    0x9b, 0x46,
-    0xac, 0x40,
-    0xfd, 0x00,
-    0x5a, 0x15,
-    0x74, 0x01,
-    0xfd, 0x00,
-    0x50, 0x40,
-    0x52, 0xb0,
-    0xfd, 0x01,
-    0x03, 0x70,
-    0x05, 0x10,
-    0x07, 0x20,
-    0x09, 0xb0,
-    0xfb, 0x01,
-    0xfd, 0x01,
-    0x14, 0x02,
-    0x15, 0x20,
-    0xfe, 0x02,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmono_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmono_ana_gain_table.h
deleted file mode 100755
index 06922371..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmono_ana_gain_table.h
+++ /dev/null
@@ -1,254 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************/
-#ifndef __KNIGHTMMONO_ANA_GAIN_TABLE_H__
-#define __KNIGHTMMONO_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 knightmmono_ana_gain_table[] = {
-    1024,
-    1088,
-    1152,
-    1216,
-    1280,
-    1344,
-    1408,
-    1472,
-    1536,
-    1600,
-    1664,
-    1728,
-    1792,
-    1856,
-    1920,
-    1984,
-    2048,
-    2048,
-    2176,
-    2176,
-    2304,
-    2304,
-    2432,
-    2432,
-    2560,
-    2560,
-    2688,
-    2688,
-    2816,
-    2816,
-    2944,
-    2944,
-    3072,
-    3072,
-    3200,
-    3200,
-    3328,
-    3328,
-    3456,
-    3456,
-    3584,
-    3584,
-    3712,
-    3712,
-    3840,
-    3840,
-    3968,
-    3968,
-    4096,
-    4096,
-    4096,
-    4096,
-    4352,
-    4352,
-    4352,
-    4352,
-    4608,
-    4608,
-    4608,
-    4608,
-    4864,
-    4864,
-    4864,
-    4864,
-    5120,
-    5120,
-    5120,
-    5120,
-    5376,
-    5376,
-    5376,
-    5376,
-    5632,
-    5632,
-    5632,
-    5632,
-    5888,
-    5888,
-    5888,
-    5888,
-    6144,
-    6144,
-    6144,
-    6144,
-    6400,
-    6400,
-    6400,
-    6400,
-    6656,
-    6656,
-    6656,
-    6656,
-    6912,
-    6912,
-    6912,
-    6912,
-    7168,
-    7168,
-    7168,
-    7168,
-    7424,
-    7424,
-    7424,
-    7424,
-    7680,
-    7680,
-    7680,
-    7680,
-    7936,
-    7936,
-    7936,
-    7936,
-    8192,
-    8192,
-    8192,
-    8192,
-    8192,
-    8192,
-    8192,
-    8192,
-    8704,
-    8704,
-    8704,
-    8704,
-    8704,
-    8704,
-    8704,
-    8704,
-    9216,
-    9216,
-    9216,
-    9216,
-    9216,
-    9216,
-    9216,
-    9216,
-    9728,
-    9728,
-    9728,
-    9728,
-    9728,
-    9728,
-    9728,
-    9728,
-    10240,
-    10240,
-    10240,
-    10240,
-    10240,
-    10240,
-    10240,
-    10240,
-    10752,
-    10752,
-    10752,
-    10752,
-    10752,
-    10752,
-    10752,
-    10752,
-    11264,
-    11264,
-    11264,
-    11264,
-    11264,
-    11264,
-    11264,
-    11264,
-    11776,
-    11776,
-    11776,
-    11776,
-    11776,
-    11776,
-    11776,
-    11776,
-    12288,
-    12288,
-    12288,
-    12288,
-    12288,
-    12288,
-    12288,
-    12288,
-    12800,
-    12800,
-    12800,
-    12800,
-    12800,
-    12800,
-    12800,
-    12800,
-    13312,
-    13312,
-    13312,
-    13312,
-    13312,
-    13312,
-    13312,
-    13312,
-    13824,
-    13824,
-    13824,
-    13824,
-    13824,
-    13824,
-    13824,
-    13824,
-    14336,
-    14336,
-    14336,
-    14336,
-    14336,
-    14336,
-    14336,
-    14336,
-    14848,
-    14848,
-    14848,
-    14848,
-    14848,
-    14848,
-    14848,
-    14848,
-    15360,
-    15360,
-    15360,
-    15360,
-    15360,
-    15360,
-    15360,
-    15360,
-    15872,
-    15872,
-    15872,
-    15872,
-    15872,
-    15872,
-    15872,
-    15872
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmonomipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmonomipiraw_Sensor.c
deleted file mode 100755
index e3299dde..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmonomipiraw_Sensor.c
+++ /dev/null
@@ -1,1371 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 knightmmonomipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "knightmmonomipiraw_Sensor.h"
-
-// #define KNIGHTMMONO_EEPROM_READ_ID	0xA5
-// #define KNIGHTMMONO_EEPROM_WRITE_ID   0xA4
-#define KNIGHTMMONO_MAX_OFFSET		0x1400
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "knightmmono_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x1400
-
-// static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static struct subdrv_ctx *g_ctx = NULL;
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int knightmmono_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmono_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-// static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-// static int knightmmono_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int close(struct subdrv_ctx *ctx);
-static int knightmmono_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int get_sensor_temperature(void *arg);
-static void get_sensor_cali(void* arg);
-static void set_sensor_cali(void *arg);
-// static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-//                     BYTE *data, int size);
-static int knightmmono_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmono_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmono_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmono_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmono_set_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmono_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmono_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmono_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmono_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int knightmmono_set_mirror_filp(struct subdrv_ctx *ctx, u8 image_mirror);
-static void milkywayc2mono_write_frame_length(struct subdrv_ctx *ctx, u32 fll);
-/* STRUCT */
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, knightmmono_set_test_pattern},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, knightmmono_check_sensor_id},
-	// {SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	// {SENSOR_FEATURE_GET_SENSOR_OTP_ALL, knightmmono_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_ESHUTTER, knightmmono_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, knightmmono_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, knightmmono_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, knightmmono_streaming_resume},
-	{SENSOR_FEATURE_SET_GAIN, knightmmono_set_gain},
-	{SENSOR_FEATURE_SET_FRAMELENGTH, knightmmono_set_frame_length},
-	{SENSOR_FEATURE_SET_HDR_SHUTTER, knightmmono_set_hdr_tri_shutter2},
-	{SENSOR_FEATURE_SET_HDR_TRI_SHUTTER, knightmmono_set_hdr_tri_shutter3},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, knightmmono_set_multi_shutter_frame_length_ctrl},
-};
-
-// static struct eeprom_info_struct eeprom_info[] = {
-// 	{
-// 		.header_id = 0x0000CA99,
-// 		.addr_header_id = 0x00000005,
-// 		.i2c_write_id = 0xA4,
-// 	},
-// };
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1600,
-			.vsize = 1200,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1600,
-			.vsize = 1200,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1600,
-			.vsize = 1200,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1600,
-			.vsize = 1200,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1600,
-			.vsize = 1200,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1600,
-			.vsize = 1200,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = knightmmono_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmono_preview_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 18000000,
-		.linelength = 425,
-		.framelength = 1411,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 72000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 1600,
-			.full_h = 1200,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 1600,
-			.h0_size = 1200,
-			.scale_w = 1600,
-			.scale_h = 1200,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1600,
-			.h1_size = 1200,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1600,
-			.h2_tg_size = 1200,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x5C,
-		},
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-		},
-	},
-	{
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = knightmmono_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmono_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 18000000,
-		.linelength = 425,
-		.framelength = 1411,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 72000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 1600,
-			.full_h = 1200,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 1600,
-			.h0_size = 1200,
-			.scale_w = 1600,
-			.scale_h = 1200,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1600,
-			.h1_size = 1200,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1600,
-			.h2_tg_size = 1200,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x5C,
-		},
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		},
-	},
-	{
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = knightmmono_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmono_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 18000000,
-		.linelength = 425,
-		.framelength = 1411,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 72000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 1600,
-			.full_h = 1200,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 1600,
-			.h0_size = 1200,
-			.scale_w = 1600,
-			.scale_h = 1200,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1600,
-			.h1_size = 1200,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1600,
-			.h2_tg_size = 1200,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x5C,
-		},
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		},
-	},
-	{
-		.frame_desc = frame_desc_hs_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_hs_vid),
-		.mode_setting_table = knightmmono_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmono_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 18000000,
-		.linelength = 425,
-		.framelength = 1411,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 72000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 1600,
-			.full_h = 1200,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 1600,
-			.h0_size = 1200,
-			.scale_w = 1600,
-			.scale_h = 1200,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1600,
-			.h1_size = 1200,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1600,
-			.h2_tg_size = 1200,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x5C,
-		},
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		},
-	},
-	{
-		.frame_desc = frame_desc_slim_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_slim_vid),
-		.mode_setting_table = knightmmono_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmono_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 18000000,
-		.linelength = 425,
-		.framelength = 1411,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 72000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 1600,
-			.full_h = 1200,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 1600,
-			.h0_size = 1200,
-			.scale_w = 1600,
-			.scale_h = 1200,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1600,
-			.h1_size = 1200,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1600,
-			.h2_tg_size = 1200,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x5C,
-		},
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		},
-	},
-	{
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = knightmmono_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(knightmmono_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 18000000,
-		.linelength = 425,
-		.framelength = 1764,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 72000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 1600,
-			.full_h = 1200,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 1600,
-			.h0_size = 1200,
-			.scale_w = 1600,
-			.scale_h = 1200,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1600,
-			.h1_size = 1200,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1600,
-			.h2_tg_size = 1200,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x5C,
-		},
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KNIGHTMMONO_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0200, 0x0300},
-	.i2c_addr_table = {0x7a, 0xff},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_8_DATA_8,
-	// .eeprom_info = eeprom_info,
-	// .eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {1600, 1200},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_6MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_1_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_MONO,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 15.5,
-	.ana_gain_type = 1, // 0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC
-	.ana_gain_step = 2,
-	.ana_gain_table = knightmmono_ana_gain_table,
-	.ana_gain_table_size = sizeof(knightmmono_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max = (0xffff * 128) - 4,
-	.exposure_step = 1,
-	.exposure_margin = 7,
-
-	.frame_length_max = 0x7fff,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 929000,
-
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.hdr_type = HDR_SUPPORT_NA,
-	.seamless_switch_support = FALSE,
-	.temperature_support = TRUE,
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = PARAM_UNDEFINED,
-	//.reg_addr_exposure = {{0x0202, 0x0203},},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = PARAM_UNDEFINED,
-	//.reg_addr_ana_gain = {{0x0204, 0x0205},},
-	//.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = PARAM_UNDEFINED,
-	.reg_addr_temp_read = 0x0020,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = PARAM_UNDEFINED,
-
-	// .init_setting_table = knightmmono_sensor_init_setting,
-	// .init_setting_len =  ARRAY_SIZE(knightmmono_sensor_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-	.chk_s_off_sta = 0,
-	.chk_s_off_end = 0,
-	.checksum_value = 0x350174bc,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = knightmmono_control,
-	.feature_control = common_feature_control,
-	.close = close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-    {HW_ID_RST, {0}, 6000},
-    {HW_ID_DOVDD, {1800000, 1800000}, 1000},
-    {HW_ID_AVDD, {2800000, 2800000}, 8000},
-    {HW_ID_MCLK, {24}, 7000},
-    {HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-    {HW_ID_RST, {1}, 10000},
-};
-
-static struct subdrv_pw_seq_entry oplus_pw_seq[] = {
-    {HW_ID_RST, {0}, 1000},
-    {HW_ID_DOVDD, {1800000, 1800000}, 1000},
-    {HW_ID_AVDD, {2800000, 2800000}, 8000},
-    {HW_ID_MCLK, {24}, 7000},
-    {HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-    {HW_ID_RST, {1}, 10000},
-};
-
-const struct subdrv_entry knightmmono_mipi_raw_entry = {
-	.name = "knightmmono_mipi_raw",
-	.id = KNIGHTMMONO_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature >= 0x0 && temperature <= 0x78)
-		temperature_convert = temperature;
-	else
-		temperature_convert = -1;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void knightmmono_set_dummy(struct subdrv_ctx *ctx)
-{
-	DRV_LOG(ctx, "dummyline = %d, dummypixels = %d\n",
-		ctx->dummy_line, ctx->dummy_pixel);
-
-	/* return; //for test */
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-	subdrv_i2c_wr_u8_u8(ctx, 0x14, (ctx->frame_length - 1220) >> 8);
-	subdrv_i2c_wr_u8_u8(ctx, 0x15, (ctx->frame_length - 1220) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-}				/*      set_dummy  */
-
-static void knightmmono_set_max_framerate(struct subdrv_ctx *ctx, UINT16 framerate,
-			kal_bool min_framelength_en)
-{
-
-	kal_uint32 frame_length = ctx->frame_length;
-
-	DRV_LOG(ctx, "framerate = %d, min framelength should enable %d\n",
-		framerate, min_framelength_en);
-
-	frame_length = ctx->pclk / framerate * 10 / ctx->line_length;
-
-	if (frame_length >= ctx->min_frame_length)
-		ctx->frame_length = frame_length;
-	else
-		ctx->frame_length = ctx->min_frame_length;
-
-	ctx->dummy_line =
-		ctx->frame_length - ctx->min_frame_length;
-
-	if (ctx->frame_length > ctx->s_ctx.frame_length_max) {
-		ctx->frame_length = ctx->s_ctx.frame_length_max;
-
-		ctx->dummy_line =
-			ctx->frame_length - ctx->min_frame_length;
-	}
-	if (min_framelength_en)
-		ctx->min_frame_length = ctx->frame_length;
-
-	knightmmono_set_dummy(ctx);
-}
-
-static void knightmmono_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u32 *shutter, u32 frame_length, bool auto_extend_en)
-{
-	kal_uint16 realtime_fps = 0;
-	kal_int32 dummy_line = 0;
-
-	ctx->exposure[0] = *shutter;
-
-	/* Change frame time */
-	if (frame_length > 1)
-		dummy_line = frame_length - ctx->frame_length;
-
-	ctx->frame_length = ctx->frame_length + dummy_line;
-
-	if (ctx->exposure[0] > ctx->frame_length - ctx->s_ctx.exposure_margin)
-		ctx->frame_length = ctx->exposure[0] + ctx->s_ctx.exposure_margin;
-
-	if (ctx->frame_length > ctx->s_ctx.frame_length_max)
-		ctx->frame_length = ctx->s_ctx.frame_length_max;
-
-	ctx->exposure[0] = (ctx->exposure[0] < ctx->s_ctx.exposure_min)
-			? ctx->s_ctx.exposure_min : ctx->exposure[0];
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps > 592 && realtime_fps <= 607) {
-			knightmmono_set_max_framerate(ctx, 592, 0);
-		} else if (realtime_fps > 296 && realtime_fps <= 305) {
-			knightmmono_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps > 246 && realtime_fps <= 253) {
-			knightmmono_set_max_framerate(ctx, 246, 0);
-		} else if (realtime_fps > 236 && realtime_fps <= 243) {
-			knightmmono_set_max_framerate(ctx, 236, 0);
-		} else if (realtime_fps > 146 && realtime_fps <= 153) {
-			knightmmono_set_max_framerate(ctx, 146, 0);
-		} else {
-			/* Extend frame length */
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x14, (ctx->frame_length - 1220) >> 8);
-			subdrv_i2c_wr_u8_u8(ctx, 0x15, (ctx->frame_length - 1220) & 0xFF);
-			subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-		}
-	} else {
-		/* Extend frame length */
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x14, (ctx->frame_length - 1220) >> 8);
-		subdrv_i2c_wr_u8_u8(ctx, 0x15, (ctx->frame_length - 1220) & 0xFF);
-		subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-	}
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-	subdrv_i2c_wr_u8_u8(ctx, 0x0f, (ctx->exposure[0]) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0x0e, (ctx->exposure[0] >> 8) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-
-	DRV_LOG(ctx, "Exit! shutter =%d, framelength =%d/%d, dummy_line=%d, \n",
-		ctx->exposure[0], ctx->frame_length, frame_length, dummy_line);
-}	/* set_shutter_frame_length */
-
-static void set_group_hold(void *arg, u8 en)
-{
-	if(!en) {  /*fresh*/
-		subdrv_i2c_wr_u8_u8(g_ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(g_ctx, 0xfe, 0x02);
-	}
-}
-
-static int knightmmono_set_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u16 frame_length = (u16) (*para);
-	if (frame_length)
-		ctx->frame_length = frame_length;
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	milkywayc2mono_write_frame_length(ctx, ctx->frame_length);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	// commit_i2c_buffer(ctx);
-
-	DRV_LOG(ctx, "fll(input/output/min):%u/%u/%u\n",
-		frame_length, ctx->frame_length, ctx->min_frame_length);
-	return 0;
-}
-
-static int knightmmono_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "shutter:%u, frame_length:%u\n", (u32)(*para), (u32) (*(para + 1)));
-	knightmmono_set_shutter_frame_length_convert(ctx, (u32 *)para, (u32) (*(para + 1)), (u16) (*(para + 2)));
-	return 0;
-}
-
-static void knightmmono_write_shutter(struct subdrv_ctx *ctx)
-{
-	kal_uint16 realtime_fps = 0;
-	DRV_LOG(ctx, "===brad shutter:%d\n", ctx->exposure[0]);
-
-	if (ctx->exposure[0] > ctx->min_frame_length - ctx->s_ctx.exposure_margin) {
-		ctx->frame_length = ctx->exposure[0] + ctx->s_ctx.exposure_margin;
-	} else {
-		ctx->frame_length = ctx->min_frame_length;
-	}
-	if (ctx->frame_length > ctx->s_ctx.frame_length_max) {
-		ctx->frame_length = ctx->s_ctx.frame_length_max;
-	}
-
-	if (ctx->exposure[0] < ctx->s_ctx.exposure_min) {
-		ctx->exposure[0] = ctx->s_ctx.exposure_min;
-	}
-	if (ctx->exposure[0] > (ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin)) {
-		ctx->exposure[0] = ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin;
-	}
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps > 592 && realtime_fps <= 607) {
-			knightmmono_set_max_framerate(ctx, 592, 0);
-		} else if (realtime_fps > 296 && realtime_fps <= 305) {
-			knightmmono_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps > 246 && realtime_fps <= 253) {
-			knightmmono_set_max_framerate(ctx, 246, 0);
-		} else if (realtime_fps > 236 && realtime_fps <= 243) {
-			knightmmono_set_max_framerate(ctx, 236, 0);
-		} else if (realtime_fps > 146 && realtime_fps <= 153) {
-			knightmmono_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x14, (ctx->frame_length - 1220) >> 8);
-			subdrv_i2c_wr_u8_u8(ctx, 0x15, (ctx->frame_length - 1220) & 0xFF);
-			subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x14, (ctx->frame_length - 1220) >> 8);
-		subdrv_i2c_wr_u8_u8(ctx, 0x15, (ctx->frame_length - 1220) & 0xFF);
-		subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-	}
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-	subdrv_i2c_wr_u8_u8(ctx, 0x0f, (ctx->exposure[0]) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0x0e, (ctx->exposure[0] >> 8) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-	DRV_LOG(ctx, "shutter =%d, framelength =%d\n", ctx->exposure[0], ctx->frame_length);
-}	/*	write_shutter  */
-
-static void knightmmono_set_shutter_convert(struct subdrv_ctx *ctx, u32 *shutter)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", *shutter);
-	ctx->exposure[0] = *shutter;
-
-	knightmmono_write_shutter(ctx);
-}
-
-static int knightmmono_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", *para);
-	knightmmono_set_shutter_convert(ctx, (u32 *)para);
-	return 0;
-}
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG(ctx, "AOV mode set stream in SCP side! (sid:%u)\n",
-			ctx->current_scenario_id);
-		return;
-	}
-
-	if (enable) {
-		if (ctx->s_ctx.chk_s_off_sta) {
-			DRV_LOG(ctx, "check_stream_off before stream on");
-			check_stream_off(ctx);
-		}
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0X03);
-		subdrv_i2c_wr_u8_u8(ctx, 0xc2, 0X01);
-	} else {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0X03);
-		subdrv_i2c_wr_u8_u8(ctx, 0xc2, 0X00);
-	}
-	mdelay(70);
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int knightmmono_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-		if (*(u32 *)para)
-			knightmmono_set_shutter_convert(ctx, (u32 *)para);
-		streaming_ctrl(ctx, true);
-		return 0;
-}
-
-static int knightmmono_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-		return 0;
-}
-
-// static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-// 	.i2c_read_id = 0xA5,
-// 	.i2c_write_id = 0xA4,
-
-// 	.addr_modinfo = 0x0000,
-// 	.addr_sensorid = 0x0005,
-// 	.addr_lens = 0x0006,
-// 	.addr_modinfoflag = 0x000A,
-// 	.addr_qrcode = 0x00E0,
-// 	.addr_qrcodeflag = 0x00F1,
-// };
-
-// static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-// static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-// 	*len = sizeof(oplus_eeprom_info);
-// 	return 0;
-// }
-
-// static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-//                     BYTE *data, int size)
-// {
-// 	if (adaptor_i2c_rd_p8(ctx->i2c_client, KNIGHTMMONO_EEPROM_READ_ID >> 1,
-// 			addr, data, size) < 0) {
-// 		return false;
-// 	}
-// 	return true;
-// }
-
-// static void read_otp_info(struct subdrv_ctx *ctx)
-// {
-// 	DRV_LOGE(ctx, "jn1 read_otp_info begin\n");
-// 	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-// 	DRV_LOGE(ctx, "jn1 read_otp_info end\n");
-// }
-
-// static int knightmmono_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u32 *feature_return_para_32 = (u32 *)para;
-// 	DRV_LOGE(ctx, "get otp data");
-// 	if (otp_data_checksum[0] == 0) {
-// 		read_otp_info(ctx);
-// 	} else {
-// 		DRV_LOG(ctx, "otp data has already read");
-// 	}
-// 	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-// 	*len = sizeof(otp_data_checksum);
-// 	return 0;
-// }
-
-static int knightmmono_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static kal_uint32 return_sensor_id(struct subdrv_ctx *ctx)
-{
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x00);
-
-	return ((subdrv_i2c_rd_u8_u8(ctx, 0x02) << 8)  |  subdrv_i2c_rd_u8_u8(ctx, 0x03));
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = TRUE;
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = return_sensor_id(ctx);
-			LOG_INF("i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x002B) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					// read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					memcpy(&pw_seq, &oplus_pw_seq, sizeof(oplus_pw_seq));
-					LOG_INF("rst delay = %d, func: %s, line: %d\n", pw_seq[1].delay, __FUNCTION__, __LINE__);
-					first_read = FALSE;
-				}
-				return ERROR_NONE;
-			}
-			LOG_INF("Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			LOG_INF("sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	mdelay(9);
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-	//sensor_init(ctx);
-	/* initail setting */
-	subdrv_i2c_wr_regs_u8_u8(ctx, knightmmono_soft_reset, ARRAY_SIZE(knightmmono_soft_reset));
-	mdelay(5);
-	subdrv_i2c_wr_regs_u8_u8(ctx, knightmmono_sensor_init_setting, ARRAY_SIZE(knightmmono_sensor_init_setting));
-
-	knightmmono_set_mirror_filp(ctx, ctx->s_ctx.mirror);
-
-	/* HW GGC*/
-	set_sensor_cali(ctx);
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static int close(struct subdrv_ctx *ctx)
-{
-	streaming_ctrl(ctx, false);
-	DRV_LOG(ctx, "subdrv closed\n");
-	return ERROR_NONE;
-}
-
-static int knightmmono_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data)
-{
-	int ret = ERROR_NONE;
-	u64 time_boot_begin = 0;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOG(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-		ret = ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.chk_s_off_sta)
-		check_stream_off(ctx);
-	update_mode_info(ctx, scenario_id);
-
-	if (ctx->s_ctx.mode[scenario_id].mode_setting_table != NULL) {
-		DRV_LOG_MUST(ctx, "E: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		if (ctx->power_on_profile_en)
-			time_boot_begin = ktime_get_boottime_ns();
-		/* mode setting */
-
-		#ifndef OPLUS_FEATURE_CAMERA_COMMON
-			subdrv_i2c_wr_regs_u8_u8(ctx, knightmmono_soft_reset, ARRAY_SIZE(knightmmono_soft_reset));
-			mdelay(5);
-			i2c_table_write(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table,
-				ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		#else /*OPLUS_FEATURE_CAMERA_COMMON*/
-			subdrv_i2c_wr_regs_u8_u8(ctx, knightmmono_soft_reset, ARRAY_SIZE(knightmmono_soft_reset));
-			mdelay(5);
-			i2c_table_rewrite(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table,
-				ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		#endif /*OPLUS_FEATURE_CAMERA_COMMON*/
-
-		if (ctx->power_on_profile_en) {
-			ctx->sensor_pw_on_profile.i2c_cfg_period =
-					ktime_get_boottime_ns() - time_boot_begin;
-
-			ctx->sensor_pw_on_profile.i2c_cfg_table_len =
-					ctx->s_ctx.mode[scenario_id].mode_setting_len;
-		}
-		DRV_LOG(ctx, "X: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-	} else {
-		DRV_LOGE(ctx, "please implement mode setting(sid:%u)!\n", scenario_id);
-	}
-
-	knightmmono_set_mirror_filp(ctx, ctx->s_ctx.mirror);
-	mdelay(10);
-	return ret;
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return gain * 16 / BASEGAIN;
-}
-
-static int knightmmono_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-	if (mode != ctx->test_pattern)
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	if (mode) {
-		switch(mode) {
-		case 5:
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x03);
-			subdrv_i2c_wr_u8_u8(ctx, 0x8c, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x8e, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x90, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x92, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x9b, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-			break;
-		default:
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x03);
-			subdrv_i2c_wr_u8_u8(ctx, 0x81, 0x01);
-		}
-	} else if (ctx->test_pattern) {
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x03);
-			subdrv_i2c_wr_u8_u8(ctx, 0x81, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x8c, 0x40);
-			subdrv_i2c_wr_u8_u8(ctx, 0x8e, 0x40);
-			subdrv_i2c_wr_u8_u8(ctx, 0x90, 0x40);
-			subdrv_i2c_wr_u8_u8(ctx, 0x92, 0x40);
-			subdrv_i2c_wr_u8_u8(ctx, 0x9b, 0x46);
-			subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-	}
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int knightmmono_set_mirror_filp(struct subdrv_ctx *ctx, u8 image_mirror)
-{
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "set image_mirror %d\n", image_mirror);
-	switch (image_mirror) {
-		case IMAGE_NORMAL:
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x12, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);
-			break;
-		case IMAGE_H_MIRROR:
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x12, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);
-			break;
-		case IMAGE_V_MIRROR:
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x12, 0x02);
-			subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);
-			break;
-		case IMAGE_HV_MIRROR:
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x12, 0x03);
-			subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);
-			break;
-		default:
-			DRV_LOG(ctx, "Error image_mirror setting\n");
-	}
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	g_ctx = ctx;
-	return 0;
-}
-
-void get_sensor_cali(void* arg)
-{
-	// struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	// // struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	// /* Probe EEPROM device */
-	// if (!probe_eeprom(ctx))
-	// 	return;
-
-	// ctx->is_read_preload_eeprom = 1;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	//struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	return;
-}
-
-int knightmmono_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-	u16 rg_gain;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain, ctx->s_ctx.ana_gain_min);
-	gain = min(gain, ctx->s_ctx.ana_gain_max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0X01);
-	subdrv_i2c_wr_u8_u8(ctx, 0x22, (rg_gain & 0xFF));
-	subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0X02);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	/* group hold end */
-	return 0;
-}
-
-static void milkywayc2mono_write_frame_length(struct subdrv_ctx *ctx, u32 fll)
-{
-	u32 fll_step = 0;
-	u32 dol_cnt = 1;
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_STAGGER)
-  		dol_cnt = ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt;
-	fll = fll / dol_cnt;
-
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-	if (fll_step)
-		fll = round_up(fll, fll_step);
-	ctx->frame_length = fll;
-	if (ctx->extend_frame_length_en == FALSE) {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x14, (fll - 1220) >> 8);
-		subdrv_i2c_wr_u8_u8(ctx, 0x15, (fll - 1220) & 0xFF);
-		// subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-	}
-
-	/* update FL RG value after setting buffer for writting RG */
-	ctx->frame_length_rg = ctx->frame_length;
-
-	DRV_LOG(ctx, "ctx->frame_length(%d), fll(%d), fll_step(%d), ctx->extend_frame_length_en(%d)\n",
-		ctx->frame_length, fll, fll_step, ctx->extend_frame_length_en);
-}
-
-static void knightmmono_set_multi_shutter_frame_length(struct subdrv_ctx *ctx,
-		u32 *shutters, u16 exp_cnt,	u16 frame_length)
-{
-	int i = 0;
-	u32 fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[3] = {0};
-	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max(shutters[i], ctx->s_ctx.exposure_min);
-		shutters[i] = min(shutters[i], ctx->s_ctx.exposure_max);
-		if (cit_step)
-			shutters[i] = round_up(shutters[i], cit_step);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */
-	calc_fl[0] = shutters[0];
-	for (i = 1; i < last_exp_cnt; i++)
-		calc_fl[0] += ctx->exposure[i];
-	calc_fl[0] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (2) current se + current me + current le */
-	calc_fl[1] = shutters[0];
-	for (i = 1; i < exp_cnt; i++)
-		calc_fl[1] += shutters[i];
-	calc_fl[1] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (3) readout time cannot be overlapped */
-	calc_fl[2] =
-		(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-		ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-	if (last_exp_cnt == exp_cnt)
-		for (i = 1; i < exp_cnt; i++) {
-			readout_diff = ctx->exposure[i] - shutters[i];
-			calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-		}
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		ctx->frame_length = max(ctx->frame_length, calc_fl[i]);
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = shutters[i];
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		milkywayc2mono_write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		break;
-	case 2:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[2] = shutters[1] / exp_cnt;
-		break;
-	case 3:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[1] = shutters[1] / exp_cnt;
-		rg_shutters[2] = shutters[2] / exp_cnt;
-		break;
-	default:
-		break;
-	}
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			/* write shutter */
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x0f, (rg_shutters[i]) & 0xFF);
-			subdrv_i2c_wr_u8_u8(ctx, 0x0e, (rg_shutters[i] >> 8) & 0xFF);
-			// subdrv_i2c_wr_u8_u8(ctx, 0xfe, 0x02);
-		}
-	}
-	DRV_LOG(ctx, "exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		// commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static int knightmmono_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	knightmmono_set_multi_shutter_frame_length(ctx, (u32 *)(*feature_data),
-		(u16) (*(feature_data + 1)), (u16) (*(feature_data + 2)));
-	return 0;
-}
-
-static void knightmmono_set_hdr_tri_shutter(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt)
-{
-	int i = 0;
-	u32 values[3] = {0};
-
-	if (shutters != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u32) *(shutters + i);
-	}
-	knightmmono_set_multi_shutter_frame_length(ctx, values, exp_cnt, 0);
-}
-
-static int knightmmono_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	knightmmono_set_hdr_tri_shutter(ctx, feature_data, 2);
-	return 0;
-}
-
-static int knightmmono_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	knightmmono_set_hdr_tri_shutter(ctx, feature_data, 3);
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmonomipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmonomipiraw_Sensor.h
deleted file mode 100755
index c9fa2f6a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/knightmmonomipiraw_Sensor.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     knightmmonomipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KNIGHTMMONOMIPI_SENSOR_H
-#define _KNIGHTMMONOMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "knightmmono_ana_gain_table.h"
-#include "knightmmono_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_24fps_v2.0.5_20240705.TXT b/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_24fps_v2.0.5_20240705.TXT
deleted file mode 100755
index 07eb714a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_24fps_v2.0.5_20240705.TXT
+++ /dev/null
@@ -1,119 +0,0 @@
-@@MIPI_1600X1200_24FPS_V2p0_5
-          
-100 99 1600 1200       
-102 80 1               
-102 81 0         
-     
-                       
-78 0xfc, 0x01,
-78 0xfd, 0x00,
-78 0xfd, 0x00,
-78 0x24, 0x01,
-78 0x25, 0x04,
-78 0x29, 0x01,
-78 0x2a, 0x1b,
-78 0x1e, 0x17,
-78 0x33, 0x07,
-78 0x35, 0x07,
-78 0x4a, 0x0c,
-78 0x3a, 0x05,
-78 0x3b, 0x02,
-78 0x3e, 0x00,
-78 0x46, 0x01,
-78 0x6d, 0x05,
-78 0x7a, 0x00,
-78 0x64, 0x00,
-78 0x5b, 0x08,
-78 0x61, 0x18,	;Tclk_post
-78 0xfd, 0x01,
-78 0x0e, 0x02,
-78 0x0f, 0x1a,
-78 0x18, 0x00,
-78 0x22, 0xff,
-78 0x23, 0x02,
-78 0x17, 0x2d,
-78 0x19, 0x20,
-78 0x1b, 0x07,
-78 0x1c, 0x04,
-78 0x20, 0x03,
-78 0x30, 0x01,
-78 0x33, 0x01,
-78 0x31, 0x0a,
-78 0x32, 0x09,
-78 0x38, 0x01,
-78 0x39, 0x01,
-78 0x3a, 0x01,
-78 0x3b, 0x01,
-78 0x4f, 0x04,
-78 0x4e, 0x05,
-78 0x50, 0x01,
-78 0x35, 0x0c,
-78 0x45, 0x2a,
-78 0x46, 0x2a,
-78 0x47, 0x2a,
-78 0x48, 0x2a,
-78 0x4a, 0x2c,
-78 0x4b, 0x2c,
-78 0x4c, 0x2c,
-78 0x4d, 0x2c,
-78 0x56, 0x30,
-78 0x57, 0x07,
-78 0x58, 0x27,
-78 0x59, 0x20,
-78 0x5a, 0x07,
-78 0x5b, 0xf4,
-78 0x37, 0x0a,
-78 0x42, 0x0e,
-78 0x68, 0x90,
-78 0x69, 0xcd,
-78 0x6a, 0x8f,
-78 0x7c, 0x0a,
-78 0x7d, 0x09,
-78 0x7e, 0x09,
-78 0x7f, 0x08,
-78 0x83, 0x14,
-78 0x84, 0x14,
-78 0x86, 0x14,
-78 0x87, 0x07,
-78 0x88, 0x0f,
-78 0x94, 0x02,
-78 0x98, 0xd1,
-78 0xfe, 0x02,
-78 0xfd, 0x03,
-78 0x97, 0x6c,
-78 0x98, 0x60,
-78 0x99, 0x60,
-78 0x9a, 0x6c,
-78 0xa1, 0x40,
-78 0xaf, 0x04,
-78 0xb1, 0x40,
-78 0xae, 0x0d,
-78 0x88, 0x5b,
-78 0x89, 0x7c,
-78 0xb4, 0x05,
-78 0x8c, 0x40,
-78 0x8e, 0x40,
-78 0x90, 0x40,
-78 0x92, 0x40,
-78 0x9b, 0x46,
-78 0xac, 0x40,
-78 0xfd, 0x00,
-78 0x5a, 0x15,
-78 0x74, 0x01,
-   0x  , 0x  ,
-78 0xfd, 0x00,
-78 0x50, 0x40,
-78 0x52, 0xb0,
-78 0xfd, 0x01,
-78 0x03, 0x70,
-78 0x05, 0x10,
-78 0x07, 0x20,
-78 0x09, 0xb0,
-   0x  , 0x  ,
-78 0xfd, 0x03,
-78 0xc2, 0x01,
-78 0xfb, 0x01,
-78 0xfd, 0x01,
-78 0x14, 0x02,
-78 0x15, 0x20,	;modify the Vblank for 24fps
-78 0xfe, 0x02,
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_24fps_v2.0.5_20240911.TXT b/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_24fps_v2.0.5_20240911.TXT
deleted file mode 100755
index 003cfa0f..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_24fps_v2.0.5_20240911.TXT
+++ /dev/null
@@ -1,123 +0,0 @@
-@@MIPI_1600X1200_24FPS_V2p0_5
-          
-100 99 1600 1200       
-102 80 1               
-102 81 0         
-     
-                       
-78 fc 01
-78 fd 00
-78 fd 00
-78 24 01
-78 25 04
-78 29 01
-78 2a 1b
-78 1e 17
-78 33 07
-78 35 07
-78 4a 0c
-78 3a 05
-78 3b 02
-78 3e 00
-78 46 01
-78 6d 05
-78 7a 00
-78 64 00
-78 5b 08
-78 61 18	;Tclk_post
-78 fd 01
-78 0e 02
-78 0f 1a
-78 18 00
-78 22 ff
-78 23 02
-78 17 2d
-78 19 20
-78 1b 07
-78 1c 04
-78 20 03
-78 30 01
-78 33 01
-78 31 0a
-78 32 09
-78 38 01
-78 39 01
-78 3a 01
-78 3b 01
-78 4f 04
-78 4e 05
-78 50 01
-78 35 0c
-78 45 2a
-78 46 2a
-78 47 2a
-78 48 2a
-78 4a 2c
-78 4b 2c
-78 4c 2c
-78 4d 2c
-78 56 30
-78 57 07
-78 58 27
-78 59 20
-78 5a 07
-78 5b f4
-78 37 0a
-78 42 0e
-78 68 90
-78 69 cd
-78 6a 8f
-78 7c 0a
-78 7d 09
-78 7e 09
-78 7f 08
-78 83 14
-78 84 14
-78 86 14
-78 87 07
-78 88 0f
-78 94 02
-78 98 d1
-78 fe 02
-78 fd 03
-78 97 6c
-78 98 60
-78 99 60
-78 9a 6c
-78 a1 40
-78 af 04
-78 b1 40
-78 ae 0d
-78 88 5b
-78 89 7c
-78 b4 05
-78 8c 40
-78 8e 40
-78 90 40
-78 92 40
-78 9b 46
-78 ac 40
-78 fd 00
-78 5a 15
-78 74 01
- 
-78 fd 00
-78 50 40
-78 52 b0
-78 fd 01
-78 03 70
-78 05 10
-78 07 20
-78 09 b0
-
-78 fb 01
-78 fd 01
-78 14 02
-78 15 20	;modify the Vblank for 24fps
-78 fe 02
-
-
-
-@@MIPI stream on
-78 fd 03
-78 c2 01
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_30fps_v2.0.5_20240705.TXT b/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_30fps_v2.0.5_20240705.TXT
deleted file mode 100755
index 90f3dac4..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_30fps_v2.0.5_20240705.TXT
+++ /dev/null
@@ -1,119 +0,0 @@
-@@MIPI_1600X1200_30FPS_V2p0_5
-          
-100 99 1600 1200       
-102 80 1               
-102 81 0         
-     
-                       
-78 0xfc, 0x01,
-78 0xfd, 0x00,
-78 0xfd, 0x00,
-78 0x24, 0x01,
-78 0x25, 0x04,
-78 0x29, 0x01,
-78 0x2a, 0x1b,
-78 0x1e, 0x17,
-78 0x33, 0x07,
-78 0x35, 0x07,
-78 0x4a, 0x0c,
-78 0x3a, 0x05,
-78 0x3b, 0x02,
-78 0x3e, 0x00,
-78 0x46, 0x01,
-78 0x6d, 0x05,
-78 0x7a, 0x00,
-78 0x64, 0x00,
-78 0x5b, 0x08,
-78 0x61, 0x18,	;Tclk_post
-78 0xfd, 0x01,
-78 0x0e, 0x02,
-78 0x0f, 0x1a,
-78 0x18, 0x00,
-78 0x22, 0xff,
-78 0x23, 0x02,
-78 0x17, 0x2d,
-78 0x19, 0x20,
-78 0x1b, 0x07,
-78 0x1c, 0x04,
-78 0x20, 0x03,
-78 0x30, 0x01,
-78 0x33, 0x01,
-78 0x31, 0x0a,
-78 0x32, 0x09,
-78 0x38, 0x01,
-78 0x39, 0x01,
-78 0x3a, 0x01,
-78 0x3b, 0x01,
-78 0x4f, 0x04,
-78 0x4e, 0x05,
-78 0x50, 0x01,
-78 0x35, 0x0c,
-78 0x45, 0x2a,
-78 0x46, 0x2a,
-78 0x47, 0x2a,
-78 0x48, 0x2a,
-78 0x4a, 0x2c,
-78 0x4b, 0x2c,
-78 0x4c, 0x2c,
-78 0x4d, 0x2c,
-78 0x56, 0x30,
-78 0x57, 0x07,
-78 0x58, 0x27,
-78 0x59, 0x20,
-78 0x5a, 0x07,
-78 0x5b, 0xf4,
-78 0x37, 0x0a,
-78 0x42, 0x0e,
-78 0x68, 0x90,
-78 0x69, 0xcd,
-78 0x6a, 0x8f,
-78 0x7c, 0x0a,
-78 0x7d, 0x09,
-78 0x7e, 0x09,
-78 0x7f, 0x08,
-78 0x83, 0x14,
-78 0x84, 0x14,
-78 0x86, 0x14,
-78 0x87, 0x07,
-78 0x88, 0x0f,
-78 0x94, 0x02,
-78 0x98, 0xd1,
-78 0xfe, 0x02,
-78 0xfd, 0x03,
-78 0x97, 0x6c,
-78 0x98, 0x60,
-78 0x99, 0x60,
-78 0x9a, 0x6c,
-78 0xa1, 0x40,
-78 0xaf, 0x04,
-78 0xb1, 0x40,
-78 0xae, 0x0d,
-78 0x88, 0x5b,
-78 0x89, 0x7c,
-78 0xb4, 0x05,
-78 0x8c, 0x40,
-78 0x8e, 0x40,
-78 0x90, 0x40,
-78 0x92, 0x40,
-78 0x9b, 0x46,
-78 0xac, 0x40,
-78 0xfd, 0x00,
-78 0x5a, 0x15,
-78 0x74, 0x01,
-   0x  , 0x  ,
-78 0xfd, 0x00,
-78 0x50, 0x40,
-78 0x52, 0xb0,
-78 0xfd, 0x01,
-78 0x03, 0x70,
-78 0x05, 0x10,
-78 0x07, 0x20,
-78 0x09, 0xb0,
-   0x  , 0x  ,
-78 0xfd, 0x03,
-78 0xc2, 0x01,
-78 0xfb, 0x01,
-78 0xfd, 0x01,
-78 0x14, 0x00,
-78 0x15, 0xbf,	;modify the Vblank for 30fps
-78 0xfe, 0x02,
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_30fps_v2.0.5_20240911.TXT b/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_30fps_v2.0.5_20240911.TXT
deleted file mode 100755
index 5a615b89..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/knightmmono_mipi_raw/setting_excel/OV02B_mipi_raw10_1600_1200_720M_1lane_30fps_v2.0.5_20240911.TXT
+++ /dev/null
@@ -1,122 +0,0 @@
-@@MIPI_1600X1200_30FPS_V2p0_5
-          
-100 99 1600 1200       
-102 80 1               
-102 81 0         
-     
-                       
-78 fc 01
-78 fd 00
-78 fd 00
-78 24 01
-78 25 04
-78 29 01
-78 2a 1b
-78 1e 17
-78 33 07
-78 35 07
-78 4a 0c
-78 3a 05
-78 3b 02
-78 3e 00
-78 46 01
-78 6d 05
-78 7a 00
-78 64 00
-78 5b 08
-78 61 18	;Tclk_post
-78 fd 01
-78 0e 02
-78 0f 1a
-78 18 00
-78 22 ff
-78 23 02
-78 17 2d
-78 19 20
-78 1b 07
-78 1c 04
-78 20 03
-78 30 01
-78 33 01
-78 31 0a
-78 32 09
-78 38 01
-78 39 01
-78 3a 01
-78 3b 01
-78 4f 04
-78 4e 05
-78 50 01
-78 35 0c
-78 45 2a
-78 46 2a
-78 47 2a
-78 48 2a
-78 4a 2c
-78 4b 2c
-78 4c 2c
-78 4d 2c
-78 56 30
-78 57 07
-78 58 27
-78 59 20
-78 5a 07
-78 5b f4
-78 37 0a
-78 42 0e
-78 68 90
-78 69 cd
-78 6a 8f
-78 7c 0a
-78 7d 09
-78 7e 09
-78 7f 08
-78 83 14
-78 84 14
-78 86 14
-78 87 07
-78 88 0f
-78 94 02
-78 98 d1
-78 fe 02
-78 fd 03
-78 97 6c
-78 98 60
-78 99 60
-78 9a 6c
-78 a1 40
-78 af 04
-78 b1 40
-78 ae 0d
-78 88 5b
-78 89 7c
-78 b4 05
-78 8c 40
-78 8e 40
-78 90 40
-78 92 40
-78 9b 46
-78 ac 40
-78 fd 00
-78 5a 15
-78 74 01
- 
-78 fd 00
-78 50 40
-78 52 b0
-78 fd 01
-78 03 70
-78 05 10
-78 07 20
-78 09 b0
-
-78 fb 01
-78 fd 01
-78 14 00
-78 15 bf	;modify the Vblank for 30fps
-78 fe 02
-
-
-@@MIPI stream on
-78 fd 03
-78 c2 01
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/Makefile
deleted file mode 100755
index 755f8399..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/konkafrontmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafront_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafront_Sensor_setting.h
deleted file mode 100644
index b9532edf..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafront_Sensor_setting.h
+++ /dev/null
@@ -1,1429 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkafront_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KONKAFRONGT_SENSOR_SETTING_H
-#define _KONKAFRONGT_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-
-static u16 konkafront_init_setting[] = {
-    //External Clock Setting
-    0x0136,0x18,
-    0x0137,0x00,
-    //Register version
-    0x3C7E,0x02,
-    0x3C7F,0x01,
-    //Signaling mode setting
-    0x0111,0x02,
-    //Global Setting
-    0x380C,0x00,
-    0x3C00,0x01,
-    0x3C01,0x00,
-    0x3C02,0x00,
-    0x3C03,0x03,
-    0x3C04,0xFF,
-    0x3C05,0x01,
-    0x3C06,0x00,
-    0x3C07,0x00,
-    0x3C08,0x03,
-    0x3C09,0xFF,
-    0x3C0A,0x00,
-    0x3C0B,0x00,
-    0x3C0C,0x10,
-    0x3C0D,0x10,
-    0x3C0E,0x10,
-    0x3C0F,0x10,
-    0x3C10,0x10,
-    0x3C11,0x20,
-    0x3C15,0x00,
-    0x3C16,0x00,
-    0x3C17,0x01,
-    0x3C18,0x00,
-    0x3C19,0x01,
-    0x3C1A,0x00,
-    0x3C1B,0x01,
-    0x3C1C,0x00,
-    0x3C1D,0x01,
-    0x3C1E,0x00,
-    0x3C1F,0x00,
-    0x3F89,0x01,
-    0x3F8F,0x01,
-    0x53B9,0x01,
-    0x62C4,0x04,
-    0x658F,0x07,
-    0x6590,0x05,
-    0x6591,0x07,
-    0x6592,0x05,
-    0x6593,0x07,
-    0x6594,0x05,
-    0x6595,0x07,
-    0x6596,0x05,
-    0x6597,0x05,
-    0x6598,0x05,
-    0x6599,0x05,
-    0x659A,0x05,
-    0x659B,0x05,
-    0x659C,0x05,
-    0x659D,0x05,
-    0x659E,0x07,
-    0x659F,0x05,
-    0x65A0,0x07,
-    0x65A1,0x05,
-    0x65A2,0x07,
-    0x65A3,0x05,
-    0x65A4,0x07,
-    0x65A5,0x05,
-    0x65A6,0x05,
-    0x65A7,0x05,
-    0x65A8,0x05,
-    0x65A9,0x05,
-    0x65AA,0x05,
-    0x65AB,0x05,
-    0x65AC,0x05,
-    0x65AD,0x07,
-    0x65AE,0x07,
-    0x65AF,0x07,
-    0x65B0,0x05,
-    0x65B1,0x05,
-    0x65B2,0x05,
-    0x65B3,0x05,
-    0x65B4,0x07,
-    0x65B5,0x07,
-    0x65B6,0x07,
-    0x65B7,0x07,
-    0x65B8,0x05,
-    0x65B9,0x05,
-    0x65BA,0x05,
-    0x65BB,0x05,
-    0x65BC,0x05,
-    0x65BD,0x05,
-    0x65BE,0x05,
-    0x65BF,0x05,
-    0x65C0,0x05,
-    0x65C1,0x05,
-    0x65C2,0x05,
-    0x65C3,0x05,
-    0x65C4,0x05,
-    0x65C5,0x05,
-    0x6E1C,0x00,
-    0x6E1D,0x00,
-    0x6E25,0x00,
-    0x6E38,0x03,
-    0x895C,0x01,
-    0x895D,0x00,
-    0x8966,0x00,
-    0x8967,0x4E,
-    0x896A,0x00,
-    0x896B,0x24,
-    0x896F,0x34,
-    0x8976,0x00,
-    0x8977,0x00,
-    0x9004,0x1F,
-    0x9200,0xB7,
-    0x9201,0x34,
-    0x9202,0xB7,
-    0x9203,0x36,
-    0x9204,0xB7,
-    0x9205,0x37,
-    0x9206,0xB7,
-    0x9207,0x38,
-    0x9208,0xB7,
-    0x9209,0x39,
-    0x920A,0xB7,
-    0x920B,0x3A,
-    0x920C,0xB7,
-    0x920D,0x3C,
-    0x920E,0xB7,
-    0x920F,0x3D,
-    0x9210,0xB7,
-    0x9211,0x3E,
-    0x9212,0xB7,
-    0x9213,0x3F,
-    0x9214,0xF6,
-    0x9215,0x13,
-    0x9216,0xF6,
-    0x9217,0x34,
-    0x9218,0xF4,
-    0x9219,0xA7,
-    0x921A,0xF4,
-    0x921B,0xAA,
-    0x921C,0xF4,
-    0x921D,0xAD,
-    0x921E,0xF4,
-    0x921F,0xB0,
-    0x9220,0xF4,
-    0x9221,0xB3,
-    0x9222,0x85,
-    0x9223,0x77,
-    0x9224,0xC4,
-    0x9225,0x4B,
-    0x9226,0xC4,
-    0x9227,0x4C,
-    0x9228,0xC4,
-    0x9229,0x4D,
-    0x922A,0xF5,
-    0x922B,0x5E,
-    0x922C,0xF5,
-    0x922D,0x5F,
-    0x922E,0xF5,
-    0x922F,0x64,
-    0x9230,0xF5,
-    0x9231,0x65,
-    0x9232,0xF5,
-    0x9233,0x6A,
-    0x9234,0xF5,
-    0x9235,0x6B,
-    0x9236,0xF5,
-    0x9237,0x70,
-    0x9238,0xF5,
-    0x9239,0x71,
-    0x923A,0xF5,
-    0x923B,0x76,
-    0x923C,0xF5,
-    0x923D,0x77,
-    0x9810,0x14,
-    0x9814,0x14,
-    0xC020,0x00,
-    0xC026,0x00,
-    0xC027,0x00,
-    0xC448,0x01,
-    0xC44F,0x01,
-    0xC450,0x00,
-    0xC451,0x00,
-    0xC452,0x01,
-    0xC455,0x00,
-    0xE186,0x36,
-    0xE206,0x35,
-    0xE226,0x33,
-    0xE266,0x34,
-    0xE2A6,0x31,
-    0xE2C6,0x37,
-    0xE2E6,0x32,
-    //Image Quality adjustment setting
-    0x88D6,0x60,
-    0x9852,0x00,
-    0xA569,0x06,
-    0xA56A,0x13,
-    0xA56B,0x13,
-    0xA56C,0x01,
-    0xA678,0x00,
-    0xA679,0x20,
-    0xA812,0x00,
-    0xA813,0x3F,
-    0xA814,0x3F,
-    0xA830,0x68,
-    0xA831,0x56,
-    0xA832,0x2B,
-    0xA833,0x55,
-    0xA834,0x55,
-    0xA835,0x16,
-    0xA837,0x51,
-    0xA838,0x34,
-    0xA854,0x4F,
-    0xA855,0x48,
-    0xA856,0x45,
-    0xA857,0x02,
-    0xA85A,0x23,
-    0xA85B,0x16,
-    0xA85C,0x12,
-    0xA85D,0x02,
-    0xAA55,0x00,
-    0xAA56,0x01,
-    0xAA57,0x30,
-    0xAA58,0x01,
-    0xAA59,0x30,
-    0xAC72,0x01,
-    0xAC73,0x26,
-    0xAC74,0x01,
-    0xAC75,0x26,
-    0xAC76,0x00,
-    0xAC77,0xC4,
-    0xAE09,0xFF,
-    0xAE0A,0xFF,
-    0xAE12,0x58,
-    0xAE13,0x58,
-    0xAE15,0x10,
-    0xAE16,0x10,
-    0xAF05,0x48,
-    0xB069,0x02,
-    0xEA4B,0x00,
-    0xEA4C,0x00,
-    0xEA4D,0x00,
-    0xEA4E,0x00,
-    0xBCF1,0x00,
-};
-
-/*Reg B1, 3264x2448,30fps,2X2Binning,w/o PD,For MaxVB*/
-// static u16 konkafront_preview_setting[] = {
-//     //MIPI output setting
-//     0x0112,0x0A,
-//     0x0113,0x0A,
-//     0x0114,0x03,
-//     //Line Length PCK Setting
-//     0x0342,0x0E,
-//     0x0343,0xB8,
-//     //Frame Length Lines Setting
-//     0x0340,0x1D,
-//     0x0341,0xDA,
-//     //ROI Setting
-//     0x0344,0x00,
-//     0x0345,0x00,
-//     0x0346,0x00,
-//     0x0347,0x10,
-//     0x0348,0x19,
-//     0x0349,0x9F,
-//     0x034A,0x13,
-//     0x034B,0x2F,
-//     //Mode Setting
-//     0x0900,0x01,
-//     0x0901,0x22,
-//     0x0902,0x08,
-//     0x3246,0x81,
-//     0x3247,0x81,
-//     //Digital Crop & Scaling
-//     0x0401,0x00,
-//     0x0404,0x00,
-//     0x0405,0x10,
-//     0x0408,0x00,
-//     0x0409,0x08,
-//     0x040A,0x00,
-//     0x040B,0x00,
-//     0x040C,0x0C,
-//     0x040D,0xC0,
-//     0x040E,0x09,
-//     0x040F,0x90,
-//     //Output Size Setting
-//     0x034C,0x0C,
-//     0x034D,0xC0,
-//     0x034E,0x09,
-//     0x034F,0x90,
-//     //Clock Setting
-//     0x0301,0x05,
-//     0x0303,0x02,
-//     0x0305,0x03,
-//     0x0306,0x01,
-//     0x0307,0x0E,
-//     0x030B,0x01,
-//     0x030D,0x02,
-//     0x030E,0x00,
-//     0x030F,0xB0,
-//     0x0310,0x01,
-//     //Other Setting
-//     0x3620,0x00,
-//     0x3621,0x00,
-//     0x3C12,0x56,
-//     0x3C13,0x52,
-//     0x3C14,0x3E,
-//     0x3F0C,0x00,
-//     0x3F14,0x01,
-//     0x3F80,0x00,
-//     0x3F81,0xA0,
-//     0x3F8C,0x00,
-//     0x3F8D,0x00,
-//     0x3FFC,0x00,
-//     0x3FFD,0x1E,
-//     0x3FFE,0x00,
-//     0x3FFF,0xDC,
-//     //Integration Setting
-//     0x0202,0x1D,
-//     0x0203,0xAA,
-//     //Gain Setting
-//     0x0204,0x00,
-//     0x0205,0x70,
-//     0x020E,0x01,
-//     0x020F,0x00,
-//     0x0210,0x01,
-//     0x0211,0x00,
-//     0x0212,0x01,
-//     0x0213,0x00,
-//     0x0214,0x01,
-//     0x0215,0x00,
-//     // mipi
-//     0x0808, 0x02,
-//     0x080A, 0x00,
-//     0x080B, 0xD7,
-//     0x080C, 0x00,
-//     0x080D, 0x87,
-//     0x080E, 0x00,
-//     0x080F, 0xF7,
-//     0x0810, 0x00,
-//     0x0811, 0x87,
-//     0x0812, 0x00,
-//     0x0813, 0x87,
-//     0x0814, 0x00,
-//     0x0815, 0x87,
-//     0x0816, 0x02,
-//     0x0817, 0x47,
-//     0x0818, 0x00,
-//     0x0819, 0x6F,
-//     0x0824, 0x00,
-//     0x0825, 0xF1,
-//     0x0826, 0x00,
-//     0x0827, 0x0F,
-// };
-
-/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-static u16 konkafront_preview_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x10,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x2F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-static kal_uint16 konkafront_capture_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x10,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x2F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B14, 3264x1836,30fps,2X2Binning,w/o PD,For(rst<21ms&cycle>1.5 s)*/
-static kal_uint16 konkafront_normal_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x0F,
-    0x0341, 0xEC,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x0F,
-    0x0203, 0xBC,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 konkafront_hs_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x07,
-    0x0341, 0xF6,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x07,
-    0x0203, 0xC6,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 konkafront_slim_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x07,
-    0x0341, 0xF6,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x07,
-    0x0203, 0xC6,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg V1-2 (26M MCLK) 1280x960,10fps,4x4Binning_Crop,w/o PD,For MIPI<1.5G(Skew off)&Hblank=2.4us*/
-static kal_uint16 konkafront_custom1_setting[] = {
-    //Reset MCLK
-    0x0136, 0x1A,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x08,
-    0x0343, 0xC8,
-    //Frame Length Lines Setting
-    0x0340, 0x53,
-    0x0341, 0x94,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x20,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x11,
-    0x034B, 0x1F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x08,
-    0x3246, 0x89,
-    0x3247, 0x89,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0xB4,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x05,
-    0x040D, 0x00,
-    0x040E, 0x03,
-    0x040F, 0xC0,
-    //Output Size Setting
-    0x034C, 0x05,
-    0x034D, 0x00,
-    0x034E, 0x03,
-    0x034F, 0xC0,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x00,
-    0x0307, 0xB9,
-    0x030B, 0x01,
-    0x030D, 0x04,
-    0x030E, 0x00,
-    0x030F, 0xD8,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x3E,
-    0x3C13, 0x3A,
-    0x3C14, 0x22,
-    0x3F0C, 0x00,
-    0x3F14, 0x00,
-    0x3F80, 0x00,
-    0x3F81, 0x00,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x55,
-    0x3FFE, 0x00,
-    0x3FFF, 0x78,
-    //Integration Setting
-    0x0202, 0x53,
-    0x0203, 0x64,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xA7,
-    0x080C, 0x00,
-    0x080D, 0x5F,
-    0x080E, 0x00,
-    0x080F, 0xAF,
-    0x0810, 0x00,
-    0x0811, 0x5F,
-    0x0812, 0x00,
-    0x0813, 0x5F,
-    0x0814, 0x00,
-    0x0815, 0x5F,
-    0x0816, 0x01,
-    0x0817, 0x97,
-    0x0818, 0x00,
-    0x0819, 0x4F,
-    0x0824, 0x00,
-    0x0825, 0xEB,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg F1-S7, 6560x4928,15fps,Full,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 konkafront_custom2_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x2C,
-    0x0343, 0xD8,
-    //Frame Length Lines Setting
-    0x0340, 0x13,
-    0x0341, 0x99,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x3F,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x0A,
-    0x3246, 0x01,
-    0x3247, 0x01,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x19,
-    0x040D, 0xA0,
-    0x040E, 0x13,
-    0x040F, 0x40,
-    //Output Size Setting
-    0x034C, 0x19,
-    0x034D, 0xA0,
-    0x034E, 0x13,
-    0x034F, 0x40,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x01,
-    0x3621, 0x01,
-    0x3C12, 0x62,
-    0x3C13, 0x32,
-    0x3C14, 0x20,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0x46,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x6E,
-    0x3FFE, 0x00,
-    0x3FFF, 0x64,
-    //Integration Setting
-    0x0202, 0x13,
-    0x0203, 0x69,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg_B8-3 3264x1856,15fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 konkafront_custom3_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x3B,
-    0x0341, 0xB6,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x60,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xDF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x40,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x40,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x3B,
-    0x0203, 0x86,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg V3 1640x1232,30fps,4x4Binning,w/o PD,For MaxVB&Binning-Ave*/
-static kal_uint16 konkafront_custom4_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x08,
-    0x0343, 0xC8,
-    //Frame Length Lines Setting
-    0x0340, 0x32,
-    0x0341, 0x0A,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x3F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x08,
-    0x3246, 0x89,
-    0x3247, 0x89,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x06,
-    0x040D, 0x68,
-    0x040E, 0x04,
-    0x040F, 0xD0,
-    //Output Size Setting
-    0x034C, 0x06,
-    0x034D, 0x68,
-    0x034E, 0x04,
-    0x034F, 0xD0,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x06,
-    0x030F, 0x59,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x3E,
-    0x3C13, 0x3A,
-    0x3C14, 0x22,
-    0x3F0C, 0x00,
-    0x3F14, 0x00,
-    0x3F80, 0x00,
-    0x3F81, 0x00,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x55,
-    0x3FFE, 0x00,
-    0x3FFF, 0x78,
-    //Integration Setting
-    0x0202, 0x31,
-    0x0203, 0xDA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xCF,
-    0x080C, 0x00,
-    0x080D, 0x7F,
-    0x080E, 0x00,
-    0x080F, 0xEF,
-    0x0810, 0x00,
-    0x0811, 0x7F,
-    0x0812, 0x00,
-    0x0813, 0x7F,
-    0x0814, 0x00,
-    0x0815, 0x7F,
-    0x0816, 0x02,
-    0x0817, 0x1F,
-    0x0818, 0x00,
-    0x0819, 0x67,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-static kal_uint16 konkafront_preview_seamless_setting[] = {
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    0x0347, 0x10,
-    0x034B, 0x2F,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    0x0409, 0x08,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F81, 0xA0,
-    0x3FFD, 0x1E,
-    0x3FFF, 0xDC,
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-};
-
-static kal_uint16 konkafront_custom2_seamless_setting[] = {
-    0x0342, 0x2C,
-    0x0343, 0xD8,
-    0x0340, 0x13,
-    0x0341, 0x99,
-    0x0347, 0x00,
-    0x034B, 0x3F,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x0A,
-    0x3246, 0x01,
-    0x3247, 0x01,
-    0x0409, 0x00,
-    0x040C, 0x19,
-    0x040D, 0xA0,
-    0x040E, 0x13,
-    0x040F, 0x40,
-    0x034C, 0x19,
-    0x034D, 0xA0,
-    0x034E, 0x13,
-    0x034F, 0x40,
-    0x3620, 0x01,
-    0x3621, 0x01,
-    0x3C12, 0x62,
-    0x3C13, 0x32,
-    0x3C14, 0x20,
-    0x3F81, 0x46,
-    0x3FFD, 0x6E,
-    0x3FFF, 0x64,
-    0x0202, 0x13,
-    0x0203, 0x69,
-};
-
-#endif /*_KONKAFRONGT_SENSOR_SETTING_H*/
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafront_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafront_ana_gain_table.h
deleted file mode 100644
index acb6986d..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafront_ana_gain_table.h
+++ /dev/null
@@ -1,1034 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkafront_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __KONKAFRONT_ANA_GAIN_TABLE_H__
-#define __KONKAFRONT_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 konkafront_ana_gain_table[] = {
-    1024,
-    1026,
-    1027,
-    1028,
-    1029,
-    1030,
-    1031,
-    1032,
-    1033,
-    1034,
-    1035,
-    1036,
-    1037,
-    1038,
-    1039,
-    1040,
-    1041,
-    1042,
-    1043,
-    1044,
-    1045,
-    1046,
-    1047,
-    1048,
-    1049,
-    1050,
-    1051,
-    1052,
-    1053,
-    1054,
-    1055,
-    1056,
-    1058,
-    1059,
-    1060,
-    1061,
-    1062,
-    1063,
-    1064,
-    1065,
-    1066,
-    1067,
-    1068,
-    1069,
-    1070,
-    1072,
-    1073,
-    1074,
-    1075,
-    1076,
-    1077,
-    1078,
-    1079,
-    1080,
-    1082,
-    1083,
-    1084,
-    1085,
-    1086,
-    1087,
-    1088,
-    1089,
-    1090,
-    1092,
-    1093,
-    1094,
-    1095,
-    1096,
-    1097,
-    1098,
-    1100,
-    1101,
-    1102,
-    1103,
-    1104,
-    1105,
-    1107,
-    1108,
-    1109,
-    1110,
-    1111,
-    1112,
-    1114,
-    1115,
-    1116,
-    1117,
-    1118,
-    1120,
-    1121,
-    1122,
-    1123,
-    1124,
-    1126,
-    1127,
-    1128,
-    1129,
-    1130,
-    1132,
-    1133,
-    1134,
-    1135,
-    1137,
-    1138,
-    1139,
-    1140,
-    1141,
-    1143,
-    1144,
-    1145,
-    1146,
-    1148,
-    1149,
-    1150,
-    1152,
-    1153,
-    1154,
-    1155,
-    1157,
-    1158,
-    1159,
-    1160,
-    1162,
-    1163,
-    1164,
-    1166,
-    1167,
-    1168,
-    1169,
-    1171,
-    1172,
-    1173,
-    1175,
-    1176,
-    1177,
-    1179,
-    1180,
-    1181,
-    1183,
-    1184,
-    1185,
-    1187,
-    1188,
-    1189,
-    1191,
-    1192,
-    1193,
-    1195,
-    1196,
-    1198,
-    1199,
-    1200,
-    1202,
-    1203,
-    1204,
-    1206,
-    1207,
-    1209,
-    1210,
-    1211,
-    1213,
-    1214,
-    1216,
-    1217,
-    1218,
-    1220,
-    1221,
-    1223,
-    1224,
-    1225,
-    1227,
-    1228,
-    1230,
-    1231,
-    1233,
-    1234,
-    1236,
-    1237,
-    1238,
-    1240,
-    1241,
-    1243,
-    1244,
-    1246,
-    1247,
-    1249,
-    1250,
-    1252,
-    1253,
-    1255,
-    1256,
-    1258,
-    1259,
-    1261,
-    1262,
-    1264,
-    1265,
-    1267,
-    1268,
-    1270,
-    1272,
-    1273,
-    1275,
-    1276,
-    1278,
-    1279,
-    1281,
-    1282,
-    1284,
-    1286,
-    1287,
-    1289,
-    1290,
-    1292,
-    1293,
-    1295,
-    1297,
-    1298,
-    1300,
-    1301,
-    1303,
-    1305,
-    1306,
-    1308,
-    1310,
-    1311,
-    1313,
-    1315,
-    1316,
-    1318,
-    1319,
-    1321,
-    1323,
-    1324,
-    1326,
-    1328,
-    1329,
-    1331,
-    1333,
-    1335,
-    1336,
-    1338,
-    1340,
-    1341,
-    1343,
-    1345,
-    1347,
-    1348,
-    1350,
-    1352,
-    1354,
-    1355,
-    1357,
-    1359,
-    1361,
-    1362,
-    1364,
-    1366,
-    1368,
-    1369,
-    1371,
-    1373,
-    1375,
-    1377,
-    1378,
-    1380,
-    1382,
-    1384,
-    1386,
-    1388,
-    1389,
-    1391,
-    1393,
-    1395,
-    1397,
-    1399,
-    1400,
-    1402,
-    1404,
-    1406,
-    1408,
-    1410,
-    1412,
-    1414,
-    1416,
-    1417,
-    1419,
-    1421,
-    1423,
-    1425,
-    1427,
-    1429,
-    1431,
-    1433,
-    1435,
-    1437,
-    1439,
-    1441,
-    1443,
-    1445,
-    1447,
-    1449,
-    1451,
-    1453,
-    1455,
-    1457,
-    1459,
-    1461,
-    1463,
-    1465,
-    1467,
-    1469,
-    1471,
-    1473,
-    1475,
-    1477,
-    1479,
-    1482,
-    1484,
-    1486,
-    1488,
-    1490,
-    1492,
-    1494,
-    1496,
-    1498,
-    1501,
-    1503,
-    1505,
-    1507,
-    1509,
-    1511,
-    1514,
-    1516,
-    1518,
-    1520,
-    1522,
-    1525,
-    1527,
-    1529,
-    1531,
-    1534,
-    1536,
-    1538,
-    1540,
-    1543,
-    1545,
-    1547,
-    1549,
-    1552,
-    1554,
-    1556,
-    1559,
-    1561,
-    1563,
-    1566,
-    1568,
-    1570,
-    1573,
-    1575,
-    1577,
-    1580,
-    1582,
-    1584,
-    1587,
-    1589,
-    1592,
-    1594,
-    1597,
-    1599,
-    1601,
-    1604,
-    1606,
-    1609,
-    1611,
-    1614,
-    1616,
-    1619,
-    1621,
-    1624,
-    1626,
-    1629,
-    1631,
-    1634,
-    1636,
-    1639,
-    1641,
-    1644,
-    1647,
-    1649,
-    1652,
-    1654,
-    1657,
-    1660,
-    1662,
-    1665,
-    1668,
-    1670,
-    1673,
-    1676,
-    1678,
-    1681,
-    1684,
-    1686,
-    1689,
-    1692,
-    1694,
-    1697,
-    1700,
-    1703,
-    1706,
-    1708,
-    1711,
-    1714,
-    1717,
-    1719,
-    1722,
-    1725,
-    1728,
-    1731,
-    1734,
-    1737,
-    1739,
-    1742,
-    1745,
-    1748,
-    1751,
-    1754,
-    1757,
-    1760,
-    1763,
-    1766,
-    1769,
-    1772,
-    1775,
-    1778,
-    1781,
-    1784,
-    1787,
-    1790,
-    1793,
-    1796,
-    1799,
-    1802,
-    1805,
-    1808,
-    1812,
-    1815,
-    1818,
-    1821,
-    1824,
-    1827,
-    1830,
-    1834,
-    1837,
-    1840,
-    1843,
-    1847,
-    1850,
-    1853,
-    1856,
-    1860,
-    1863,
-    1866,
-    1870,
-    1873,
-    1876,
-    1880,
-    1883,
-    1886,
-    1890,
-    1893,
-    1897,
-    1900,
-    1904,
-    1907,
-    1910,
-    1914,
-    1917,
-    1921,
-    1924,
-    1928,
-    1932,
-    1935,
-    1939,
-    1942,
-    1946,
-    1950,
-    1953,
-    1957,
-    1960,
-    1964,
-    1968,
-    1972,
-    1975,
-    1979,
-    1983,
-    1986,
-    1990,
-    1994,
-    1998,
-    2002,
-    2005,
-    2009,
-    2013,
-    2017,
-    2021,
-    2025,
-    2029,
-    2033,
-    2037,
-    2041,
-    2045,
-    2048,
-    2053,
-    2057,
-    2061,
-    2065,
-    2069,
-    2073,
-    2077,
-    2081,
-    2085,
-    2089,
-    2093,
-    2098,
-    2102,
-    2106,
-    2110,
-    2115,
-    2119,
-    2123,
-    2127,
-    2132,
-    2136,
-    2140,
-    2145,
-    2149,
-    2154,
-    2158,
-    2163,
-    2167,
-    2171,
-    2176,
-    2180,
-    2185,
-    2190,
-    2194,
-    2199,
-    2203,
-    2208,
-    2213,
-    2217,
-    2222,
-    2227,
-    2232,
-    2236,
-    2241,
-    2246,
-    2251,
-    2256,
-    2260,
-    2265,
-    2270,
-    2275,
-    2280,
-    2285,
-    2290,
-    2295,
-    2300,
-    2305,
-    2310,
-    2315,
-    2320,
-    2326,
-    2331,
-    2336,
-    2341,
-    2346,
-    2352,
-    2357,
-    2362,
-    2367,
-    2373,
-    2378,
-    2384,
-    2389,
-    2395,
-    2400,
-    2405,
-    2411,
-    2417,
-    2422,
-    2428,
-    2433,
-    2439,
-    2445,
-    2450,
-    2456,
-    2462,
-    2468,
-    2474,
-    2479,
-    2485,
-    2491,
-    2497,
-    2503,
-    2509,
-    2515,
-    2521,
-    2527,
-    2533,
-    2539,
-    2546,
-    2552,
-    2558,
-    2564,
-    2571,
-    2577,
-    2583,
-    2590,
-    2596,
-    2602,
-    2609,
-    2615,
-    2622,
-    2629,
-    2635,
-    2642,
-    2648,
-    2655,
-    2662,
-    2669,
-    2675,
-    2682,
-    2689,
-    2696,
-    2703,
-    2710,
-    2717,
-    2724,
-    2731,
-    2738,
-    2745,
-    2753,
-    2760,
-    2767,
-    2775,
-    2782,
-    2789,
-    2797,
-    2804,
-    2812,
-    2819,
-    2827,
-    2834,
-    2842,
-    2850,
-    2858,
-    2865,
-    2873,
-    2881,
-    2889,
-    2897,
-    2905,
-    2913,
-    2921,
-    2929,
-    2938,
-    2946,
-    2954,
-    2963,
-    2971,
-    2979,
-    2988,
-    2996,
-    3005,
-    3014,
-    3022,
-    3031,
-    3040,
-    3049,
-    3058,
-    3067,
-    3076,
-    3085,
-    3094,
-    3103,
-    3112,
-    3121,
-    3131,
-    3140,
-    3149,
-    3159,
-    3168,
-    3178,
-    3188,
-    3197,
-    3207,
-    3217,
-    3227,
-    3237,
-    3247,
-    3257,
-    3267,
-    3277,
-    3288,
-    3298,
-    3308,
-    3319,
-    3329,
-    3340,
-    3351,
-    3361,
-    3372,
-    3383,
-    3394,
-    3405,
-    3416,
-    3427,
-    3438,
-    3450,
-    3461,
-    3473,
-    3484,
-    3496,
-    3507,
-    3519,
-    3531,
-    3543,
-    3555,
-    3567,
-    3579,
-    3592,
-    3604,
-    3616,
-    3629,
-    3641,
-    3654,
-    3667,
-    3680,
-    3693,
-    3706,
-    3719,
-    3732,
-    3745,
-    3759,
-    3772,
-    3786,
-    3800,
-    3814,
-    3827,
-    3841,
-    3856,
-    3870,
-    3884,
-    3899,
-    3913,
-    3928,
-    3943,
-    3957,
-    3972,
-    3987,
-    4003,
-    4018,
-    4033,
-    4049,
-    4065,
-    4081,
-    4096,
-    4113,
-    4129,
-    4145,
-    4162,
-    4178,
-    4195,
-    4212,
-    4229,
-    4246,
-    4263,
-    4280,
-    4298,
-    4316,
-    4333,
-    4351,
-    4370,
-    4388,
-    4406,
-    4425,
-    4444,
-    4463,
-    4482,
-    4501,
-    4520,
-    4540,
-    4560,
-    4579,
-    4600,
-    4620,
-    4640,
-    4661,
-    4682,
-    4703,
-    4724,
-    4745,
-    4767,
-    4789,
-    4810,
-    4833,
-    4855,
-    4878,
-    4900,
-    4923,
-    4947,
-    4970,
-    4994,
-    5018,
-    5042,
-    5066,
-    5091,
-    5116,
-    5141,
-    5166,
-    5191,
-    5217,
-    5243,
-    5270,
-    5296,
-    5323,
-    5350,
-    5378,
-    5406,
-    5434,
-    5462,
-    5490,
-    5519,
-    5549,
-    5578,
-    5608,
-    5638,
-    5668,
-    5699,
-    5730,
-    5762,
-    5794,
-    5826,
-    5858,
-    5891,
-    5925,
-    5958,
-    5992,
-    6027,
-    6062,
-    6097,
-    6133,
-    6169,
-    6205,
-    6242,
-    6279,
-    6317,
-    6356,
-    6394,
-    6433,
-    6473,
-    6513,
-    6554,
-    6595,
-    6637,
-    6679,
-    6722,
-    6766,
-    6809,
-    6854,
-    6899,
-    6945,
-    6991,
-    7038,
-    7085,
-    7134,
-    7183,
-    7232,
-    7282,
-    7333,
-    7385,
-    7437,
-    7490,
-    7544,
-    7599,
-    7654,
-    7711,
-    7768,
-    7826,
-    7885,
-    7944,
-    8005,
-    8066,
-    8129,
-    8192,
-    8257,
-    8323,
-    8389,
-    8457,
-    8526,
-    8595,
-    8666,
-    8739,
-    8812,
-    8887,
-    8963,
-    9040,
-    9119,
-    9199,
-    9280,
-    9363,
-    9447,
-    9533,
-    9620,
-    9710,
-    9800,
-    9893,
-    9987,
-    10083,
-    10181,
-    10281,
-    10382,
-    10486,
-    10592,
-    10700,
-    10811,
-    10923,
-    11038,
-    11156,
-    11276,
-    11398,
-    11523,
-    11651,
-    11782,
-    11916,
-    12053,
-    12193,
-    12337,
-    12484,
-    12634,
-    12788,
-    12946,
-    13108,
-    13274,
-    13444,
-    13618,
-    13798,
-    13982,
-    14170,
-    14365,
-    14564,
-    14769,
-    14980,
-    15197,
-    15421,
-    15651,
-    15888,
-    16132,
-    16384,
-    16645,
-    16913,
-    17190,
-    17477,
-    17773,
-    18079,
-    18397,
-    18725,
-    19066,
-    19419,
-    19785,
-    20165,
-    20561,
-    20972,
-    21400,
-    21846,
-    22311,
-    22796,
-    23302,
-    23832,
-    24386,
-    24967,
-    25576,
-    26215,
-    26887,
-    27595,
-    28340,
-    29128,
-    29960,
-    30841,
-    31776,
-    32768,
-    33826,
-    34953,
-    36158,
-    37450,
-    38837,
-    40330,
-    41944,
-    43691,
-    45591,
-    47663,
-    49933,
-    52429,
-    55189,
-    58255,
-    61681,
-    65536,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafrontmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafrontmipiraw_Sensor.c
deleted file mode 100755
index d96ad868..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafrontmipiraw_Sensor.c
+++ /dev/null
@@ -1,1437 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     konkamipiraw_Sensor.c
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "konkafrontmipiraw_Sensor.h"
-
-
-#define KONKAFRONT_EEPROM_READ_ID	0xA9
-#define OTP_SIZE    0x2000  /* 8KB */
-#define LRC_L_REG   0x7A98  /* sensor reg */
-#define LRC_R_REG   0x7B1C
-#define SEAMLEES_GRP_HOLD 0x0104
-
-#define DEBUG_LOG_EN 0
-#define PFX "konkafront_camera_sensor"
-#define LOG_INF(format, args...) pr_info(PFX "I [%s] " format, __func__, ##args)
-#define LOG_ERR(format, args...) pr_err(PFX "E [%s] " format, __func__, ##args)
-#define LOG_DEBUG(...) do { if ((DEBUG_LOG_EN)) LOG_INF(__VA_ARGS__); } while (0)
-#define GET_SENSOR_ID_RETRY_CNT    5
-
-static const char * const clk_names[] = {
-	ADAPTOR_CLK_NAMES
-};
-
-static const char * const reg_names[] = {
-	ADAPTOR_REGULATOR_NAMES
-};
-
-static const char * const state_names[] = {
-	ADAPTOR_STATE_NAMES
-};
-
-static int stream_refcnt_for_aov = 0;
-
-static int init_ctx(
-	struct subdrv_ctx *ctx, struct i2c_client *i2c_client, u8 i2c_write_id);
-static int konkafront_open(struct subdrv_ctx *ctx);
-static int konkafront_get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-// static int get_csi_param(
-// 	struct subdrv_ctx *ctx,
-// 	enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-// 	struct mtk_csi_param *csi_param);
-static int get_sensor_temperature(void *arg);
-static u16 get_gain2reg(u32 gain);
-static void set_group_hold(void *arg, u8 en);
-
-#ifdef KONKAFRONT_AOV_MCLK_26M
-static int set_pwr_seq_reset_view_to_sensing(void *arg);
-#endif /* KONKAFRONT_AOV_MCLK_26M */
-
-static int konkafront_streaming_control(void *arg, bool enable);
-static int konkafront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkafront_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkafront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void Imx615_fab_read(struct subdrv_ctx *ctx);
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkafront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void set_sensor_cali(void *arg);
-static void get_sensor_cali(void* arg);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int konkafront_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-/* STRUCT */
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, konkafront_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, konkafront_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, konkafront_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, konkafront_get_otp_checksum_data},
-	// {SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, konkafront_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, konkafront_set_awb_gain},
-};
-
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA9,
-	.i2c_write_id = 0xA8,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x000F,
-
-	// .addr_af = 0x0092,
-	// .addr_afmacro = 0x0092,
-	// .addr_afinf = 0x0094,
-	// .addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01510008,  /* cal_layout_table */
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA8,
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0618,
-		.addr_qsc = 0x0C90, /* QSC_EEPROM_ADDR 0x0C90~0x12A7*/
-		.sensor_reg_addr_qsc = 0xC500, /*QSC_Sensor_ADDR*/
-
-		.lrc_support = TRUE,
-		.lrc_size = 0x0104,
-		.addr_lrc = 0x14B0, /* LRC_EEPROM_ADDR 0x14B0~0x15B3*/
-		.sensor_reg_addr_lrc = 0x7A98, /*useless, use LRC_L_REG and LRC_R_REG*/
-	},
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 2448,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 1280,
-            .vsize = 960,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 6560,
-            .vsize = 4928,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1856,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 1640,
-            .vsize = 1232,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-// static int stream_refcnt_for_aov;
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{  /* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = konkafront_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(konkafront_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkafront_preview_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkafront_preview_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 7642,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 16,
-			.w0_size = 6560,
-			.h0_size = 4896,
-			.scale_w = 3280,
-			.scale_h = 2448,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {.dphy_trail = 0x40,},
-	},
-	{	/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = konkafront_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(konkafront_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 7642,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 16,
-			.w0_size = 6560,
-			.h0_size = 4896,
-			.scale_w = 3280,
-			.scale_h = 2448,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {.dphy_trail = 0x40,},
-	},
-
-	{/*Reg B14, 3264x1836,30fps,2X2Binning,w/o PD,For(rst<21ms&cycle>1.5 s)*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = konkafront_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkafront_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 4076,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {.dphy_trail = 0x47,},
-	},
-	{/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For seamless2 group*/
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = konkafront_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkafront_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 2038,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {.dphy_trail = 0x47,},
-	},
-	{/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For seamless2 group*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = konkafront_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkafront_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 2038,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {.dphy_trail = 0x47,},
-	},
-	{/*Reg V2-4 1280x960,10fps,4x4Binning_Crop,w/o PD,For MIPI<1.5G(Skew off)&Hblank=2.4us*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = konkafront_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(konkafront_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 481000000,
-		.linelength = 2248,
-		.framelength = 21396,
-		.max_framerate = 100,
-		.mipi_pixel_rate = 561600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 544,
-			.w0_size = 6560,
-			.h0_size = 3840,
-			.scale_w = 1640,
-			.scale_h = 960,
-			.x1_offset = 180,
-			.y1_offset = 0,
-			.w1_size = 1280,
-			.h1_size = 960,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1280,
-			.h2_tg_size = 960,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 879,
-		.csi_param = {
-			.dphy_trail = 0x60,
-		},
-		.aov_mode = 1,
-		.s_dummy_support = 0,
-		.ae_ctrl_support = IMGSENSOR_AE_CONTROL_SUPPORT_VIEWING_MODE,
-	},
-	{/*Reg F1-S7, 6560x4928,15fps,Full,w/o PD,For seamless1 group*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = konkafront_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(konkafront_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkafront_custom2_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkafront_custom2_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 11480,
-		.framelength = 5017,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 6560,
-			.h0_size = 4928,
-			.scale_w = 6560,
-			.scale_h = 4928,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 6560,
-			.h1_size = 4928,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 6560,
-			.h2_tg_size = 4928,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 617,
-		.csi_param = {.dphy_trail = 0xB3,},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{/*Reg_B8-3 3264x1856,15fps,2X2Binning,w/o PD,For MaxVB*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = konkafront_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(konkafront_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 15286,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 608,
-			.w0_size = 6560,
-			.h0_size = 3712,
-			.scale_w = 3280,
-			.scale_h = 1856,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1856,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1856,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {.dphy_trail = 0xB3,},
-	},
-	{/*Reg V3 1640x1232,30fps,4x4Binning,w/o PD,For MaxVB&Binning-Ave*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = konkafront_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(konkafront_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 2248,
-		.framelength = 12810,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 780000000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 6560,
-			.h0_size = 4928,
-			.scale_w = 1640,
-			.scale_h = 1232,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1640,
-			.h1_size = 1232,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1640,
-			.h2_tg_size = 1232,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KONKAFRONT_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},  // todo
-	.i2c_addr_table = {0x20, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {6560, 4928},
-	.mirror = IMAGE_NORMAL,
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_6MA,  // todo
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_R,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,  // BASEGAIN * 1.123
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = konkafront_ana_gain_table,
-	.ana_gain_table_size = sizeof(konkafront_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 16,
-	.exposure_max =  128*(0xFFFF - 48),
-	.exposure_step = 1,
-	.exposure_margin = 48,
-
-	.frame_length_max = 0xffff-5,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1794700,
-
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.hdr_type = HDR_SUPPORT_NA,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.s_gph = set_group_hold,
-
-	.s_cali = set_sensor_cali,
-	.g_cali = get_sensor_cali,
-	// .s_data_rate_global_timing_phy_ctrl = set_data_rate_global_timing_phy_ctrl,
-#ifdef KONKAFRONT_AOV_MCLK_26M
-	.s_pwr_seq_reset_view_to_sensing = set_pwr_seq_reset_view_to_sensing,
-#endif
-	.s_streaming_control = konkafront_streaming_control,
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-
-	.reg_addr_exposure = {
-			{0x0202, 0x0203},
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3100,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205},
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = 0x0138,
-	.reg_addr_temp_read = 0x013A,
-	.reg_addr_auto_extend = 0x0350,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_fast_mode = 0x3020,
-
-	.init_setting_table = konkafront_init_setting,
-	.init_setting_len = ARRAY_SIZE(konkafront_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0x8ac2d94a,
-	.aov_sensor_support = TRUE,
-	.sensor_mode_ops = 0,  // debug
-	.sensor_debug_sensing_ut_on_scp = TRUE, // whether stream on scp
-	// .sensor_debug_dphy_global_timing_continuous_clk = TRUE,
-	.init_in_open = TRUE,
-	.streaming_ctrl_imp = TRUE,
-};
-
-static struct subdrv_ops ops = {
-	.init_ctx = init_ctx,
-	.open = konkafront_open,
-	.get_id = konkafront_get_imgsensor_id,
-	.vsync_notify = vsync_notify,
-	.get_csi_param = common_get_csi_param,
-	.get_temp = common_get_temp,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_SCL, {0}, 0},	/* default i2c bus scl 4 on apmcu side */
-	{HW_ID_SDA, {0}, 0},	/* default i2c bus sda 4 on apmcu side */
-	{HW_ID_RST, {0}, 0},
-	{HW_ID_AVDD, {2900000, 2900000}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_DVDD, {1104000, 1104000}, 1000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {6}, 1000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-static struct subdrv_pw_seq_entry aov_pw_seq[] = {
-	{HW_ID_MCLK, {26, MCLK_ULPOSC}, 0},
-	{HW_ID_SCL, {0}, 0},	/* default i2c bus scl 4 on apmcu side */
-	{HW_ID_SDA, {0}, 0},	/* default i2c bus sda 4 on apmcu side */
-	{HW_ID_RST, {0}, 0},
-	{HW_ID_AVDD, {2900000, 2900000}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_DVDD, {1104000, 1104000}, 1000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {6}, 1000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry konkafront_mipi_raw_entry = {
-	.name = "konkafront_mipi_raw",
-	.id = KONKAFRONT_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.aov_pw_seq = aov_pw_seq,
-	.aov_pw_seq_cnt = ARRAY_SIZE(aov_pw_seq),
-	.ops = &ops,
-};
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static void Imx615_fab_read(struct subdrv_ctx *ctx)
-{
-    kal_uint16 reg_0xa01 = 0;
-    kal_uint16 reg_0xa1f = 0;
-    kal_uint16 reg_0xa20 = 0;
-
-    subdrv_i2c_wr_u8(ctx, 0x0A02, 0x7F);
-    subdrv_i2c_wr_u8(ctx, 0x0A00, 0x01);
-    msleep(1);
-
-    reg_0xa01 = subdrv_i2c_rd_u8(ctx, 0x0A01);
-    reg_0xa1f = subdrv_i2c_rd_u8(ctx, 0x0A1F);
-    reg_0xa20 = subdrv_i2c_rd_u8(ctx, 0x0A20);
-
-    pr_info("Read fab2 reg table [0xa01->0x%x, 0xa1f->0x%x, 0xa20->0x%x]", reg_0xa01, reg_0xa1f, reg_0xa20);
-    if (reg_0xa01 == 0x01) {
-        if (reg_0xa1f == 0xB4 && reg_0xa20 == 0x01) {
-            msleep(2);
-            subdrv_i2c_wr_u8(ctx, 0x0A00, 0x00);
-            sensor_init(ctx);
-            subdrv_i2c_wr_u8(ctx, 0x574B, 0x01);
-            subdrv_i2c_wr_u8(ctx, 0x5765, 0x33);
-        }else if (reg_0xa20 != 0x01 || reg_0xa1f != 0xB4) {
-            subdrv_i2c_wr_u8(ctx, 0x0A00, 0x00);
-            sensor_init(ctx);
-        }
-
-    } else {
-        pr_info("Read 0xa01 vaule is 0x%x",reg_0xa01);
-        pr_info("IMX615 read reg_0xa01 failed,just write init setting");
-        sensor_init(ctx);
-    }
-}
-
-
-static int konkafront_open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	DRV_LOG_MUST(ctx, "for konkafront start\n");
-
-	/* initail setting */
-	// sensor_init(ctx);
-	Imx615_fab_read(ctx);
-
-	/* get sensor id */
-	if (konkafront_get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static int konkafront_get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = GET_SENSOR_ID_RETRY_CNT;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	static bool first_read = KAL_TRUE;
-
-	LOG_INF("for konkafront id\n");
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			LOG_INF("i2c_write_id:0x%x sensor_id(cur/exp):0x%x/0x%x\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x615) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					LOG_INF("first read eeprom +");
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-					LOG_INF("first read eeprom -");
-				}
-				return ERROR_NONE;
-			}
-			LOG_INF("Read sensor id fail, id(0x%x)\n",
-				ctx->i2c_write_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = GET_SENSOR_ID_RETRY_CNT;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		/* if Sensor ID is not correct,
-		 * Must set *sensor_id to 0xFFFFFFFF
-		 */
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-static int konkafront_streaming_control(void *arg, bool enable) {
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	int ret = 0;
-	DRV_LOG(ctx, "E!\n");
-
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	DRV_LOG_MUST(ctx,
-		"konkafront streaming_enable(0=Sw Standby,1=streaming):(%d)\n", enable);
-
-	if (enable) { // stream on
-		if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-			stream_refcnt_for_aov = 1;
-		}
-		subdrv_i2c_wr_u8(ctx, 0x0100, 0x01);
-	} else { // stream off
-		subdrv_i2c_wr_u8(ctx, 0x0100, 0x00);
-		if (stream_refcnt_for_aov) {
-			// i2c bus scl4 on apmcu side
-			ret = pinctrl_select_state(
-				_adaptor_ctx->pinctrl,
-				_adaptor_ctx->state[STATE_SCL_AP]);
-			if (ret < 0) {
-				DRV_LOG_MUST(ctx,
-					"konkafront select(%s)(fail),ret(%d)\n",
-					state_names[STATE_SCL_AP], ret);
-				return ret;
-			}
-			DRV_LOG(ctx, "konkafront select(%s)(correct)\n", state_names[STATE_SCL_AP]);
-
-			// i2c bus sda4 on apmcu side
-			ret = pinctrl_select_state(
-				_adaptor_ctx->pinctrl,
-				_adaptor_ctx->state[STATE_SDA_AP]);
-			if (ret < 0) {
-				DRV_LOG_MUST(ctx,
-					"konkafront select(%s)(fail),ret(%d)\n",
-					state_names[STATE_SDA_AP], ret);
-				return ret;
-			}
-			DRV_LOG(ctx, "konkafront select(%s)(correct)\n", state_names[STATE_SDA_AP]);
-			mdelay(1);
-		}
-		stream_refcnt_for_aov = 0;
-
-	}
-	return ret;
-}
-
-#ifdef KONKAFRONT_AOV_MCLK_26M
-static int set_pwr_seq_reset_view_to_sensing(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	DRV_LOGE(ctx, "konkafront set_pwr_seq_reset_view_to_sensing");
-
-	int ret = 0;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	/* switch viewing mode sw stand-by to hw stand-by */
-	// 1. set gpio
-	// xclr(reset) = 0
-	ret = pinctrl_select_state(
-		_adaptor_ctx->pinctrl,
-		_adaptor_ctx->state[STATE_RST_LOW]);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"select(%s)(fail),ret(%d)\n",
-			state_names[STATE_RST_LOW], ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "select(%s)(correct)\n", state_names[STATE_RST_LOW]);
-	mdelay(1);	// response time T4-T6 in datasheet
-
-#ifdef PWR_SEQ_ALL_USE_FOR_AOV_MODE_TRANSITION
-	ret = pwr_seq_common_disable_for_mode_transition(_adaptor_ctx);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"pwr_seq_common_disable_for_mode_transition(fail),ret(%d)\n",
-			ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "pwr_seq_common_disable_for_mode_transition(correct)\n");
-	// switch hw stand-by to sensing mode sw stand-by
-	ret = pwr_seq_common_enable_for_mode_transition(_adaptor_ctx);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"pwr_seq_common_enable_for_mode_transition(fail),ret(%d)\n",
-			ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "pwr_seq_common_enable_for_mode_transition)(correct)\n");
-#endif
-	// xclr(reset) = 1
-	ret = pinctrl_select_state(
-		_adaptor_ctx->pinctrl,
-		_adaptor_ctx->state[STATE_RST_HIGH]);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"select(%s)(fail),ret(%d)\n",
-			state_names[STATE_RST_HIGH], ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "select(%s)(correct)\n", state_names[STATE_RST_HIGH]);
-	mdelay(4);	// response time T7 in datasheet
-	return ret;
-
-}
-#endif /* KONKAFRONT_AOV_MCLK_26M */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x50)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 80;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG_MUST(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (1024 - (1024 * BASEGAIN) / gain);
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, SEAMLEES_GRP_HOLD, 0x01);
-	else
-		set_i2c_buffer(ctx, SEAMLEES_GRP_HOLD, 0x00);
-}
-
-
-
-static int konkafront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	return konkafront_get_imgsensor_id(ctx, (u32 *)para);
-}
-
-static int konkafront_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG_MUST(ctx,
-		"E: set seamless switch %u %u\n",
-		ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table
-		== NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	update_mode_info(ctx, scenario_id);
-
-	subdrv_i2c_wr_u8(ctx, SEAMLEES_GRP_HOLD, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	subdrv_i2c_wr_u8(ctx, SEAMLEES_GRP_HOLD, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG_MUST(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int konkafront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG_MUST(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	switch (mode) {
-	case 5:
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x00); /* dig_gain = 0 */
-		break;
-	default:
-		subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-		break;
-	}
-
-	if ((ctx->test_pattern) && (mode != ctx->test_pattern)) {
-		if (ctx->test_pattern == 5)
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-		else if (mode == 0)
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /* No pattern */
-	}
-
-	ctx->test_pattern = mode;
-	return ERROR_NONE;
-}
-
-
-// static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u32 addr_sensorver = 0x0018;
-// 	struct oplus_eeprom_info_struct* infoPtr;
-// 	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-// 	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-// 	*len = sizeof(oplus_eeprom_info);
-// 	if (subdrv_i2c_rd_u8(ctx, addr_sensorver) != 0x00) {
-// 		printk("need to convert to 10bit");
-// 		infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 4) | (infoPtr->afInfo[0] >> 4));
-// 		infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 4);
-// 		infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 4) | (infoPtr->afInfo[2] >> 4));
-// 		infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 4);
-// 		infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 4) | (infoPtr->afInfo[4] >> 4));
-// 		infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 4);
-// 	}
-// 	return 0;
-// }
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KONKAFRONT_EEPROM_READ_ID >> 1,
-		addr, data, size) < 0) {
-		DRV_LOGE(ctx, "konkafront read_cmos_eeprom_p8 failed\n");
-		return false;
-	}
-	DRV_LOGE(ctx, "konkafront read_cmos_eeprom_p8 success read size = %d\n", size);
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "konkafront read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "konkafront read_otp_info end\n");
-}
-
-static int konkafront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read read read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3621, 0x01);
-			LOG_INF("set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x32D2, 0x00);
-		}
-	}
-
-	/* SPC data */
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0xD200;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0xD300;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-
-	/* LRC data */
-	support = info[idx].lrc_support;
-	pbuf = info[idx].preload_lrc_table;
-	size = info[idx].lrc_size;
-	if (support) {
-		if (pbuf != NULL && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, LRC_L_REG, pbuf, size / 2); // L data
-			subdrv_i2c_wr_seq_p8(ctx, LRC_R_REG, pbuf + size / 2, size / 2); // R data
-			DRV_LOG(ctx, "set LRC calibration data done.");
-		} else {
-			DRV_LOGE(ctx, "LRC calibration data error");
-		}
-	}
-
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-
-	/* LRC data */
-	support = info[idx].lrc_support;
-	size = info[idx].lrc_size;
-	addr = info[idx].addr_lrc;
-	buf = info[idx].lrc_table;
-	if (support && size > 0) {
-		if (info[idx].preload_lrc_table == NULL) {
-			info[idx].preload_lrc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_lrc_table, size)) {
-					DRV_LOGE(ctx, "preload LRC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_lrc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload LRC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "LRC data is already preloaded %u bytes", size);
-		}
-	}
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static int konkafront_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-
-	set_group_hold((void *)ctx, 1);
-	subdrv_i2c_wr_u8(ctx, 0x0B8E, (u8)(awb_gain->ABS_GAIN_GR >> 8)); // GR
-	subdrv_i2c_wr_u8(ctx, 0x0B8F, (u8)(awb_gain->ABS_GAIN_GR & 0xFF)); // GR
-	subdrv_i2c_wr_u8(ctx, 0x0B90, (u8)(awb_gain->ABS_GAIN_R >> 8)); // R
-	subdrv_i2c_wr_u8(ctx, 0x0B91, (u8)(awb_gain->ABS_GAIN_R & 0xFF)); // R
-	subdrv_i2c_wr_u8(ctx, 0x0B92, (u8)(awb_gain->ABS_GAIN_B >> 8)); // B
-	subdrv_i2c_wr_u8(ctx, 0x0B93, (u8)(awb_gain->ABS_GAIN_B & 0xFF)); // B
-	subdrv_i2c_wr_u8(ctx, 0x0B94, (u8)(awb_gain->ABS_GAIN_GB >> 8)); // GB
-	subdrv_i2c_wr_u8(ctx, 0x0B95, (u8)(awb_gain->ABS_GAIN_GB & 0xFF)); // GB
-	set_group_hold((void *)ctx, 0);
-
-	DRV_LOG(ctx, "ABS_GAIN_GR(%d) ABS_GAIN_R(%d) ABS_GAIN_B(%d) ABS_GAIN_GB(%d)",
-		awb_gain->ABS_GAIN_GR, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B, awb_gain->ABS_GAIN_GB);
-
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafrontmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafrontmipiraw_Sensor.h
deleted file mode 100644
index 79003418..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkafront_mipi_raw/konkafrontmipiraw_Sensor.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     konkafrontmipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KONKAFRONTMIPI_SENSOR_H
-#define _KONKAFRONTMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-
-#include "konkafront_ana_gain_table.h"
-#include "konkafront_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#define EEPROM_READY 1	// #define it when eeprom ready
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/Makefile
deleted file mode 100755
index 7b39eefb..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/konkamainmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamain_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamain_Sensor_setting.h
deleted file mode 100755
index ad9a6681..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamain_Sensor_setting.h
+++ /dev/null
@@ -1,4251 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkamain_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KONKAMAIN_SENSOR_SETTING_H
-#define _KONKAMAIN_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-/* NOTE:
-for 2 exp setting, VCID of LE/SE should be 0x00 and 0x02
-which align 3 exp setting LE/NE/SE 0x00, 0x01, 0x02
-to seamless switch, VC ID of SE should remain the same
-SONY sensor: VCID of 2nd frame at 0x3070; VCID of 3rd frame at 0x3080
-must be two different value */
-
-static u16 konkamain_init_setting[] = {
-	0x0136, 0x18,
-	0x0137, 0x00,
-	0xF800, 0x19,
-	0xF801, 0x19,
-	0xF802, 0x92,
-	0xF803, 0xED,
-	0xF804, 0x55,
-	0xF805, 0x6C,
-	0xF806, 0x92,
-	0xF807, 0x00,
-	0xF808, 0x00,
-	0xF809, 0x00,
-	0xF80A, 0x10,
-	0xF80B, 0x08,
-	0xF80C, 0x55,
-	0xF80D, 0x70,
-	0xF80E, 0x92,
-	0xF80F, 0x00,
-	0xF810, 0xC6,
-	0xF811, 0x6E,
-	0xF812, 0x17,
-	0xF813, 0xFA,
-	0xF814, 0x55,
-	0xF815, 0x0C,
-	0xF816, 0x95,
-	0xF817, 0x00,
-	0xF818, 0x00,
-	0xF819, 0x00,
-	0xF81A, 0xBE,
-	0xF81B, 0x19,
-	0xF81C, 0x55,
-	0xF81D, 0x10,
-	0xF81E, 0x95,
-	0xF81F, 0x00,
-	0xF820, 0x17,
-	0xF821, 0xFA,
-	0xF822, 0x00,
-	0xF823, 0x00,
-	0xF824, 0x55,
-	0xF825, 0x14,
-	0xF826, 0x95,
-	0xF827, 0x00,
-	0xF828, 0x17,
-	0xF829, 0xA8,
-	0xF82A, 0x72,
-	0xF82B, 0x6B,
-	0xF82C, 0x55,
-	0xF82D, 0x7C,
-	0xF82E, 0x92,
-	0xF82F, 0x00,
-	0xF830, 0x60,
-	0xF831, 0x6F,
-	0xF832, 0x17,
-	0xF833, 0xFA,
-	0xF834, 0x55,
-	0xF835, 0x10,
-	0xF836, 0x94,
-	0xF837, 0x00,
-	0xF838, 0x17,
-	0xF839, 0xFA,
-	0xF83A, 0x17,
-	0xF83B, 0xAC,
-	0xF83C, 0x55,
-	0xF83D, 0x14,
-	0xF83E, 0x94,
-	0xF83F, 0x00,
-	0xF840, 0x17,
-	0xF841, 0xA8,
-	0xF842, 0xE0,
-	0xF843, 0x6D,
-	0xF884, 0x4F,
-	0xF885, 0x86,
-	0xF886, 0xAC,
-	0xF887, 0x17,
-	0xF888, 0xFA,
-	0xF889, 0xE8,
-	0xF88A, 0xAE,
-	0xF88B, 0x40,
-	0xF88C, 0xD1,
-	0xF88D, 0x18,
-	0xF88E, 0x08,
-	0xF88F, 0x00,
-	0xF890, 0xF7,
-	0xF891, 0x10,
-	0xF892, 0x07,
-	0xF893, 0x0E,
-	0xF894, 0xF0,
-	0xF895, 0x10,
-	0xF896, 0x06,
-	0xF897, 0xD8,
-	0xF898, 0xF4,
-	0xF899, 0x10,
-	0xF89A, 0x06,
-	0xF89B, 0xDC,
-	0xF89C, 0xA8,
-	0xF89D, 0x17,
-	0xF89E, 0xA0,
-	0xF89F, 0x05,
-	0xF8A0, 0x4F,
-	0xF8A1, 0x06,
-	0xF8A2, 0xAC,
-	0xF8A3, 0x27,
-	0xF8A4, 0xAC,
-	0xF8A5, 0x1D,
-	0xF8A6, 0xAC,
-	0xF8A7, 0x14,
-	0xF8A8, 0xA8,
-	0xF8A9, 0x35,
-	0xF8AA, 0xA8,
-	0xF8AB, 0x2C,
-	0xF8AC, 0x28,
-	0xF8AD, 0x04,
-	0xF8AE, 0x90,
-	0xF8AF, 0x14,
-	0xF8B0, 0x01,
-	0xF8B1, 0x20,
-	0xF8B2, 0x10,
-	0xF8B3, 0x11,
-	0xF8B4, 0x01,
-	0xF8B5, 0x01,
-	0xF8B6, 0x0F,
-	0xF8B7, 0x31,
-	0xF8B8, 0x00,
-	0xF8B9, 0x10,
-	0xF8BA, 0x00,
-	0xF8BB, 0x41,
-	0xF8BC, 0xFA,
-	0xF8BD, 0xE8,
-	0xF8BE, 0x09,
-	0xF8BF, 0x14,
-	0xF8C0, 0x80,
-	0xF8C1, 0x04,
-	0xF8C2, 0x5F,
-	0xF8C3, 0xF0,
-	0xF8C4, 0x01,
-	0xF8C5, 0x50,
-	0xF8C6, 0xFC,
-	0xF8C7, 0x41,
-	0xF8C8, 0x01,
-	0xF8C9, 0xFF,
-	0xF8CA, 0xFC,
-	0xF8CB, 0x31,
-	0xF8CC, 0xFF,
-	0xF8CD, 0xFC,
-	0xF8CE, 0x22,
-	0xF8CF, 0x01,
-	0xF8D0, 0xA5,
-	0xF8D1, 0x01,
-	0xF8D2, 0x40,
-	0xF8D3, 0x31,
-	0xF8D4, 0x5F,
-	0xF8D5, 0xC0,
-	0xF8D6, 0x04,
-	0xF8D7, 0x10,
-	0xF8D8, 0xA8,
-	0xF8D9, 0x14,
-	0xF8DA, 0xA8,
-	0xF8DB, 0x1D,
-	0xF8DC, 0xA8,
-	0xF8DD, 0x27,
-	0xF8DE, 0xA0,
-	0xF8DF, 0x09,
-	0xF8E0, 0x4F,
-	0xF8E1, 0x86,
-	0xF8E2, 0xAC,
-	0xF8E3, 0x14,
-	0xF8E4, 0xD0,
-	0xF8E5, 0x20,
-	0xF8E6, 0x44,
-	0xF8E7, 0x2C,
-	0xF8E8, 0x18,
-	0xF8E9, 0x01,
-	0xF8EA, 0xD2,
-	0xF8EB, 0x20,
-	0xF8EC, 0x4E,
-	0xF8ED, 0x78,
-	0xF8EE, 0x1E,
-	0xF8EF, 0x22,
-	0xF8F0, 0xBF,
-	0xF8F1, 0x20,
-	0xF8F2, 0xD2,
-	0xF8F3, 0x18,
-	0xF8F4, 0x08,
-	0xF8F5, 0x00,
-	0xF8F6, 0xF6,
-	0xF8F7, 0x23,
-	0xF8F8, 0x06,
-	0xF8F9, 0x9C,
-	0xF8FA, 0x6F,
-	0xF8FB, 0xF3,
-	0xF8FC, 0xBD,
-	0xF8FD, 0x9A,
-	0xF8FE, 0xF2,
-	0xF8FF, 0x23,
-	0xF900, 0x06,
-	0xF901, 0xD6,
-	0xF902, 0x00,
-	0xF903, 0x14,
-	0xF904, 0x4F,
-	0xF905, 0x04,
-	0xF906, 0x02,
-	0xF907, 0x34,
-	0xF908, 0xF0,
-	0xF909, 0x22,
-	0xF90A, 0x06,
-	0xF90B, 0xDC,
-	0xF90C, 0x25,
-	0xF90D, 0x42,
-	0xF90E, 0x90,
-	0xF90F, 0x22,
-	0xF910, 0x00,
-	0xF911, 0x34,
-	0xF912, 0x01,
-	0xF913, 0x14,
-	0xF914, 0x25,
-	0xF915, 0x24,
-	0xF916, 0x90,
-	0xF917, 0x1A,
-	0xF918, 0x01,
-	0xF919, 0x32,
-	0xF91A, 0x41,
-	0xF91B, 0x02,
-	0xF91C, 0xFC,
-	0xF91D, 0x41,
-	0xF91E, 0x01,
-	0xF91F, 0xFF,
-	0xF920, 0xFC,
-	0xF921, 0x31,
-	0xF922, 0xFF,
-	0xF923, 0xFC,
-	0xF924, 0x24,
-	0xF925, 0x21,
-	0xF926, 0xA4,
-	0xF927, 0x13,
-	0xF928, 0xA5,
-	0xF929, 0x23,
-	0xF92A, 0x40,
-	0xF92B, 0x33,
-	0xF92C, 0x5F,
-	0xF92D, 0xC1,
-	0xF92E, 0x04,
-	0xF92F, 0x31,
-	0xF930, 0x1C,
-	0xF931, 0x01,
-	0xF932, 0xA8,
-	0xF933, 0x14,
-	0xF934, 0xA0,
-	0xF935, 0x05,
-	0xF936, 0x4E,
-	0xF937, 0x06,
-	0xF938, 0xB0,
-	0xF939, 0xA1,
-	0xF93A, 0xB0,
-	0xF93B, 0x9C,
-	0xF93C, 0xAC,
-	0xF93D, 0x37,
-	0xF93E, 0xAC,
-	0xF93F, 0x2D,
-	0xF940, 0xAC,
-	0xF941, 0x24,
-	0xF942, 0x00,
-	0xF943, 0x04,
-	0xF944, 0xFA,
-	0xF945, 0xE8,
-	0xF946, 0xAD,
-	0xF947, 0x84,
-	0xF948, 0x6F,
-	0xF949, 0xF0,
-	0xF94A, 0x50,
-	0xF94B, 0x71,
-	0xF94C, 0x0F,
-	0xF94D, 0x01,
-	0xF94E, 0x10,
-	0xF94F, 0x21,
-	0xF950, 0xD0,
-	0xF951, 0x21,
-	0xF952, 0x40,
-	0xF953, 0x28,
-	0xF954, 0x1A,
-	0xF955, 0x05,
-	0xF956, 0xD8,
-	0xF957, 0x18,
-	0xF958, 0x08,
-	0xF959, 0x00,
-	0xF95A, 0xF0,
-	0xF95B, 0x82,
-	0xF95C, 0x06,
-	0xF95D, 0x88,
-	0xF95E, 0x01,
-	0xF95F, 0x12,
-	0xF960, 0x3C,
-	0xF961, 0x26,
-	0xF962, 0x1E,
-	0xF963, 0x01,
-	0xF964, 0x3C,
-	0xF965, 0x24,
-	0xF966, 0x1E,
-	0xF967, 0x03,
-	0xF968, 0x3C,
-	0xF969, 0x23,
-	0xF96A, 0x1E,
-	0xF96B, 0x00,
-	0xF96C, 0x3D,
-	0xF96D, 0x25,
-	0xF96E, 0x1E,
-	0xF96F, 0x27,
-	0xF970, 0xD2,
-	0xF971, 0x21,
-	0xF972, 0x40,
-	0xF973, 0x32,
-	0xF974, 0x1A,
-	0xF975, 0x22,
-	0xF976, 0xD9,
-	0xF977, 0x21,
-	0xF978, 0x40,
-	0xF979, 0x2E,
-	0xF97A, 0x1A,
-	0xF97B, 0x99,
-	0xF97C, 0xAC,
-	0xF97D, 0x14,
-	0xF97E, 0xAC,
-	0xF97F, 0x0F,
-	0xF980, 0x40,
-	0xF981, 0x12,
-	0xF982, 0x02,
-	0xF983, 0x92,
-	0xF984, 0xFA,
-	0xF985, 0xFF,
-	0xF986, 0xFF,
-	0xF987, 0x1C,
-	0xF988, 0xF4,
-	0xF989, 0x80,
-	0xF98A, 0x06,
-	0xF98B, 0xD8,
-	0xF98C, 0xD1,
-	0xF98D, 0x21,
-	0xF98E, 0x42,
-	0xF98F, 0x90,
-	0xF990, 0x1E,
-	0xF991, 0x11,
-	0xF992, 0xBE,
-	0xF993, 0x9C,
-	0xF994, 0xF6,
-	0xF995, 0x81,
-	0xF996, 0x06,
-	0xF997, 0x9C,
-	0xF998, 0x6F,
-	0xF999, 0xF1,
-	0xF99A, 0xBE,
-	0xF99B, 0x98,
-	0xF99C, 0xF2,
-	0xF99D, 0x81,
-	0xF99E, 0x06,
-	0xF99F, 0xD6,
-	0xF9A0, 0x00,
-	0xF9A1, 0x52,
-	0xF9A2, 0x4F,
-	0xF9A3, 0x02,
-	0xF9A4, 0x02,
-	0xF9A5, 0x12,
-	0xF9A6, 0x25,
-	0xF9A7, 0x20,
-	0xF9A8, 0x90,
-	0xF9A9, 0x22,
-	0xF9AA, 0x00,
-	0xF9AB, 0x12,
-	0xF9AC, 0x01,
-	0xF9AD, 0x52,
-	0xF9AE, 0x25,
-	0xF9AF, 0x02,
-	0xF9B0, 0x90,
-	0xF9B1, 0x1A,
-	0xF9B2, 0x01,
-	0xF9B3, 0x45,
-	0xF9B4, 0x02,
-	0xF9B5, 0x05,
-	0xF9B6, 0x01,
-	0xF9B7, 0x15,
-	0xF9B8, 0xFC,
-	0xF9B9, 0x40,
-	0xF9BA, 0x01,
-	0xF9BB, 0xFF,
-	0xF9BC, 0xFC,
-	0xF9BD, 0x30,
-	0xF9BE, 0xFF,
-	0xF9BF, 0xFC,
-	0xF9C0, 0x22,
-	0xF9C1, 0x50,
-	0xF9C2, 0xA5,
-	0xF9C3, 0x50,
-	0xF9C4, 0x40,
-	0xF9C5, 0x30,
-	0xF9C6, 0x5F,
-	0xF9C7, 0xC4,
-	0xF9C8, 0x04,
-	0xF9C9, 0x04,
-	0xF9CA, 0xD0,
-	0xF9CB, 0x20,
-	0xF9CC, 0x44,
-	0xF9CD, 0x34,
-	0xF9CE, 0x1C,
-	0xF9CF, 0x04,
-	0xF9D0, 0xA8,
-	0xF9D1, 0x24,
-	0xF9D2, 0xA8,
-	0xF9D3, 0x2D,
-	0xF9D4, 0xA8,
-	0xF9D5, 0x37,
-	0xF9D6, 0xB0,
-	0xF9D7, 0x1C,
-	0xF9D8, 0xB0,
-	0xF9D9, 0x21,
-	0xF9DA, 0xA0,
-	0xF9DB, 0x11,
-	0xF9DC, 0x4F,
-	0xF9DD, 0x86,
-	0xF9DE, 0xAC,
-	0xF9DF, 0x17,
-	0xF9E0, 0xD0,
-	0xF9E1, 0x18,
-	0xF9E2, 0x08,
-	0xF9E3, 0x00,
-	0xF9E4, 0xF0,
-	0xF9E5, 0x00,
-	0xF9E6, 0x06,
-	0xF9E7, 0xAC,
-	0xF9E8, 0xA1,
-	0xF9E9, 0x00,
-	0xF9EA, 0xFA,
-	0xF9EB, 0xFF,
-	0xF9EC, 0xFE,
-	0xF9ED, 0x9A,
-	0xF9EE, 0xA8,
-	0xF9EF, 0x17,
-	0xF9F0, 0xA0,
-	0xF9F1, 0x05,
-	0xF9F2, 0x4F,
-	0xF9F3, 0x86,
-	0xF9F4, 0xAC,
-	0xF9F5, 0x17,
-	0xF9F6, 0xD0,
-	0xF9F7, 0x18,
-	0xF9F8, 0x08,
-	0xF9F9, 0x00,
-	0xF9FA, 0xF0,
-	0xF9FB, 0x00,
-	0xF9FC, 0x06,
-	0xF9FD, 0xAC,
-	0xF9FE, 0xA1,
-	0xF9FF, 0x00,
-	0xFA00, 0xFA,
-	0xFA01, 0xFF,
-	0xFA02, 0xFE,
-	0xFA03, 0xE0,
-	0xFA04, 0xA8,
-	0xFA05, 0x17,
-	0xFA06, 0xA0,
-	0xFA07, 0x05,
-	0x97AC, 0x00,
-	0x97AD, 0x00,
-	0x97AE, 0x92,
-	0x97AF, 0x84,
-	0x9788, 0x00,
-	0x9789, 0x02,
-	0x978A, 0x57,
-	0x978B, 0x5C,
-	0xF802, 0x01,
-	0xF803, 0x40,
-	0xF844, 0x55,
-	0xF845, 0xF8,
-	0xF846, 0x46,
-	0xF847, 0x00,
-	0xF848, 0x10,
-	0xF849, 0xBB,
-	0xF84A, 0x17,
-	0xF84B, 0xFA,
-	0xFA08, 0x4F,
-	0xFA09, 0x06,
-	0xFA0A, 0xAC,
-	0xFA0B, 0x27,
-	0xFA0C, 0xAC,
-	0xFA0D, 0x1D,
-	0xFA0E, 0xAC,
-	0xFA0F, 0x14,
-	0xFA10, 0xFA,
-	0xFA11, 0xE9,
-	0xFA12, 0x0B,
-	0xFA13, 0xC6,
-	0xFA14, 0xD0,
-	0xFA15, 0x20,
-	0xFA16, 0x40,
-	0xFA17, 0x4F,
-	0xFA18, 0x1E,
-	0xFA19, 0x05,
-	0xFA1A, 0xD4,
-	0xFA1B, 0x18,
-	0xFA1C, 0x08,
-	0xFA1D, 0x00,
-	0xFA1E, 0xF6,
-	0xFA1F, 0x40,
-	0xFA20, 0x06,
-	0xFA21, 0xE7,
-	0xFA22, 0xBE,
-	0xFA23, 0x06,
-	0xFA24, 0xF0,
-	0xFA25, 0x40,
-	0xFA26, 0x06,
-	0xFA27, 0xE8,
-	0xFA28, 0x29,
-	0xFA29, 0x25,
-	0xFA2A, 0x90,
-	0xFA2B, 0x2C,
-	0xFA2C, 0x80,
-	0xFA2D, 0x22,
-	0xFA2E, 0xF6,
-	0xFA2F, 0x41,
-	0xFA30, 0x05,
-	0xFA31, 0x1C,
-	0xFA32, 0xB8,
-	0xFA33, 0x8B,
-	0xFA34, 0xD0,
-	0xFA35, 0x18,
-	0xFA36, 0x3A,
-	0xFA37, 0x18,
-	0xFA38, 0xF0,
-	0xFA39, 0x02,
-	0xFA3A, 0x02,
-	0xFA3B, 0x74,
-	0xFA3C, 0xF6,
-	0xFA3D, 0x40,
-	0xFA3E, 0x07,
-	0xFA3F, 0x10,
-	0xFA40, 0x0F,
-	0xFA41, 0x20,
-	0xFA42, 0xFA,
-	0xFA43, 0xE8,
-	0xFA44, 0x07,
-	0xFA45, 0x8E,
-	0xFA46, 0x80,
-	0xFA47, 0x04,
-	0xFA48, 0x5F,
-	0xFA49, 0xF0,
-	0xFA4A, 0x29,
-	0xFA4B, 0x25,
-	0xFA4C, 0x90,
-	0xFA4D, 0x0A,
-	0xFA4E, 0x50,
-	0xFA4F, 0x31,
-	0xFA50, 0xFA,
-	0xFA51, 0xE8,
-	0xFA52, 0x07,
-	0xFA53, 0x80,
-	0xFA54, 0x80,
-	0xFA55, 0x04,
-	0xFA56, 0x09,
-	0xFA57, 0x50,
-	0xFA58, 0xF4,
-	0xFA59, 0x40,
-	0xFA5A, 0x06,
-	0xFA5B, 0xEC,
-	0xFA5C, 0x50,
-	0xFA5D, 0xA1,
-	0xFA5E, 0xFA,
-	0xFA5F, 0xE8,
-	0xFA60, 0x07,
-	0xFA61, 0x72,
-	0xFA62, 0xFA,
-	0xFA63, 0xE8,
-	0xFA64, 0x06,
-	0xFA65, 0xA2,
-	0xFA66, 0xA8,
-	0xFA67, 0x14,
-	0xFA68, 0xA8,
-	0xFA69, 0x1D,
-	0xFA6A, 0xA8,
-	0xFA6B, 0x27,
-	0xFA6C, 0xA0,
-	0xFA6D, 0x09,
-	0xFA6E, 0x00,
-	0xFA6F, 0x00,
-	0x4331, 0x01,
-	0x2E1F, 0x00,
-	0x33F0, 0x1D,
-	0x33F1, 0x05,
-	0x0111, 0x03,
-	0x0808, 0x02,
-	0x3218, 0x01,
-	0x34E2, 0x07,
-	0x34E8, 0x01,
-	0x34EA, 0x07,
-	0x3953, 0x01,
-	0x3954, 0x01,
-	0x3955, 0x01,
-	0x3BC0, 0xE6,
-	0x3BC4, 0xE6,
-	0x3BC8, 0xE6,
-	0x3BCC, 0xE6,
-	0x5315, 0x0F,
-	0x571B, 0x2C,
-	0x5F63, 0xE7,
-	0x5F64, 0xE8,
-	0x6D2B, 0x01,
-	0x6D43, 0x01,
-	0x6D5B, 0x01,
-	0x6D73, 0x01,
-	0x6D8B, 0x01,
-	0x6DA3, 0x01,
-	0x6DBB, 0x01,
-	0x6DD3, 0x01,
-	0x6E1B, 0x01,
-	0x6E33, 0x01,
-	0x6E4B, 0x01,
-	0x767C, 0x0B,
-	0x7685, 0x01,
-	0x76A6, 0x08,
-	0x76A7, 0x08,
-	0x76A8, 0x08,
-	0x76A9, 0x08,
-	0x76AA, 0x08,
-	0x76AB, 0x08,
-	0x76AE, 0x08,
-	0x76AF, 0x08,
-	0x76B0, 0x08,
-	0x76B5, 0x08,
-	0x76B6, 0x08,
-	0x76B7, 0x08,
-	0x76B8, 0x08,
-	0x76B9, 0x08,
-	0x76BA, 0x08,
-	0x76BD, 0x08,
-	0x76BE, 0x08,
-	0x76BF, 0x08,
-	0x76CD, 0x02,
-	0x78A5, 0x04,
-	0x78A6, 0x04,
-	0x78A7, 0x04,
-	0x78A8, 0x04,
-	0x78A9, 0x04,
-	0x7A0C, 0x40,
-	0x7A0D, 0x40,
-	0x7A1A, 0x39,
-	0x7A1B, 0x39,
-	0x7A1C, 0x37,
-	0x7A1D, 0x37,
-	0x7A1E, 0x37,
-	0x7A1F, 0x37,
-	0x7A20, 0x37,
-	0x7A21, 0x37,
-	0x7A22, 0x37,
-	0x7A23, 0x37,
-	0x7A24, 0x37,
-	0x7A25, 0x37,
-	0x7A26, 0x37,
-	0x7A27, 0x37,
-	0x7A28, 0x39,
-	0x7A29, 0x39,
-	0x7A2A, 0x39,
-	0x7A2B, 0x39,
-	0x7A2C, 0x37,
-	0x7A2D, 0x37,
-	0x7A2E, 0x37,
-	0x7A2F, 0x37,
-	0x7A30, 0x37,
-	0x7A31, 0x37,
-	0x7A32, 0x37,
-	0x7A33, 0x37,
-	0x7A34, 0x37,
-	0x7A35, 0x37,
-	0x7A36, 0x37,
-	0x7A37, 0x37,
-	0x7A38, 0x37,
-	0x7A39, 0x37,
-	0x7A3A, 0x2D,
-	0x7A3B, 0x2D,
-	0x7A3C, 0x37,
-	0x7A3D, 0x37,
-	0x7A3E, 0x37,
-	0x7A3F, 0x2D,
-	0x7A5C, 0x78,
-	0x7A5D, 0x78,
-	0x7A6A, 0x78,
-	0x7A6B, 0x78,
-	0x7A6C, 0x7D,
-	0x7A6D, 0x7D,
-	0x7A6E, 0x7D,
-	0x7A6F, 0x7D,
-	0x7A70, 0x7D,
-	0x7A71, 0x7D,
-	0x7A72, 0x7D,
-	0x7A73, 0x7D,
-	0x7A74, 0x7D,
-	0x7A75, 0x7D,
-	0x7A76, 0x7D,
-	0x7A77, 0x7D,
-	0x7A78, 0x7D,
-	0x7A79, 0x7D,
-	0x7A7A, 0x7D,
-	0x7A7B, 0x7D,
-	0x7A7C, 0x7D,
-	0x7A7D, 0x7D,
-	0x7A7E, 0x7D,
-	0x7A7F, 0x7D,
-	0x7A80, 0x7C,
-	0x7A81, 0x7C,
-	0x7A82, 0x7C,
-	0x7A83, 0x7D,
-	0x7A84, 0x7D,
-	0x7A85, 0x7D,
-	0x7A86, 0x7D,
-	0x7A87, 0x7D,
-	0x7A88, 0x7D,
-	0x7A89, 0x7D,
-	0x7A8A, 0x7C,
-	0x7A8B, 0x7C,
-	0x7A8C, 0x7D,
-	0x7A8D, 0x7D,
-	0x7A8E, 0x7D,
-	0x7A8F, 0x7C,
-	0x7C08, 0x0A,
-	0x7C09, 0x0A,
-	0x7C0A, 0x0F,
-	0x7C0B, 0x0F,
-	0x7C0C, 0x0F,
-	0x7C0D, 0x0F,
-	0x7C0E, 0x0A,
-	0x7C0F, 0x0A,
-	0x7C10, 0x0A,
-	0x7C11, 0x0A,
-	0x7C12, 0x0A,
-	0x7C13, 0x0A,
-	0x7C14, 0x0A,
-	0x7C15, 0x0A,
-	0x7C16, 0x14,
-	0x7C17, 0x14,
-	0x7C18, 0x0F,
-	0x7C19, 0x0F,
-	0x7C1A, 0x0F,
-	0x7C1B, 0x0F,
-	0x7C1C, 0x0A,
-	0x7C1D, 0x0A,
-	0x7C1E, 0x0A,
-	0x7C1F, 0x0A,
-	0x7C20, 0x0A,
-	0x7C21, 0x0A,
-	0x7C22, 0x0A,
-	0x7C23, 0x0A,
-	0x7C26, 0x23,
-	0x7C27, 0x23,
-	0x7C28, 0x23,
-	0x7C29, 0x23,
-	0x7C2A, 0x23,
-	0x7C2B, 0x23,
-	0x7C2C, 0x0A,
-	0x7C2D, 0x0A,
-	0x7C2E, 0x23,
-	0x7C2F, 0x23,
-	0x7C30, 0x23,
-	0x7C31, 0x0A,
-	0x7C63, 0x2D,
-	0x7C64, 0x2D,
-	0x7C65, 0x2D,
-	0xAD0D, 0x3C,
-	0xAD0F, 0x3C,
-	0xAD11, 0x3C,
-	0xAE2F, 0x1A,
-	0xB101, 0x0A,
-	0xB102, 0x0A,
-	0xB104, 0x0A,
-	0xB105, 0x0A,
-	0xB10C, 0x02,
-	0xB10D, 0x02,
-	0xB10E, 0x02,
-	0xB10F, 0x02,
-	0xB110, 0x02,
-	0xB111, 0x02,
-	0xB227, 0x2E,
-	0xB229, 0x0B,
-	0xB22D, 0x2E,
-	0xB22F, 0x0B,
-	0xB233, 0x05,
-	0xB235, 0x05,
-	0xB239, 0x05,
-	0xB23B, 0x05,
-	0xB23D, 0x16,
-	0xB23F, 0x45,
-	0xB241, 0xFC,
-	0xB243, 0x16,
-	0xB245, 0x45,
-	0xB247, 0xFC,
-	0xB30F, 0x3C,
-	0xB311, 0x3C,
-	0xB315, 0x3C,
-	0xB317, 0x3C,
-	0xB31B, 0x07,
-	0xB31D, 0x07,
-	0xB321, 0x07,
-	0xB323, 0x07,
-	0xB325, 0x23,
-	0xB327, 0x56,
-	0xB328, 0x01,
-	0xB329, 0x4A,
-	0xB32B, 0x23,
-	0xB32D, 0x56,
-	0xB32E, 0x01,
-	0xB32F, 0x4A,
-	0xDDA9, 0x4E,
-	/*EBD Setting*/
-	0x3970, 0x00,
-	/* disable deep sleep */
-	0x306D, 0x00,
-	/* fast mode transition in lbmf */
-	0x31A7, 0x04,
-};
-
-/* Reg_B4-S4 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-static u16 konkamain_preview_setting[] = {
-	0x0110, 0x01,
-	0x30A2, 0x03,
-	0x30A4, 0x03,
-	0x30A6, 0x03,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x26,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x18,
-	0x38D2, 0x01,
-	0x38D3, 0x18,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/* Reg_B-1_QBIN(VBIN)_4096x3072_30fps */
-static u16 konkamain_capture_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x57,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x18,
-	0x38D2, 0x01,
-	0x38D3, 0x18,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* Reg_B7-S5_4096x2304_30FPS*/
-static u16 konkamain_normal_video_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x9F,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x18,
-	0x38D2, 0x01,
-	0x38D3, 0x18,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x17,
-	0x0850, 0x00,
-	0x0851, 0x13,
-	0x0852, 0x00,
-	0x0853, 0x27,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/* Reg_G-1_4096x2304_60FPS */
-static u16 konkamain_hs_video_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x6A,
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xD8,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x18,
-	0x38D2, 0x01,
-	0x38D3, 0x18,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x19,
-	0x0850, 0x00,
-	0x0851, 0x15,
-	0x0852, 0x00,
-	0x0853, 0x29,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* G7-S3 4096x2304 @60FPS QBIN DCG-HDR RAW12 w/ Partial-PD VB_max*/
-static u16 konkamain_slim_video_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0C,
-	0x0113, 0x0C,
-	0x0114, 0x02,
-	0x3239, 0x01,
-	0x0342, 0x32,
-	0x0343, 0x00,
-	0x3850, 0x00,
-	0x3851, 0x8C,
-	0x0340, 0x0B,
-	0x0341, 0x28,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x03,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x93,
-	0x1018, 0x00,
-	0x1019, 0x00,
-	0x101A, 0x00,
-	0x101B, 0x00,
-	0x1118, 0x00,
-	0x1119, 0x00,
-	0x111A, 0x00,
-	0x111B, 0x00,
-	0x1218, 0x00,
-	0x1219, 0x00,
-	0x121A, 0x00,
-	0x121B, 0x00,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xE1,
-	0x38D2, 0x00,
-	0x38D3, 0xE1,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x30,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x01,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x01,
-	0x3104, 0x00,
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x02,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x15,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x23,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* Reg_H-1 QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-static u16 konkamain_custom1_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x15,
-	0x0343, 0x70,
-	0x3850, 0x00,
-	0x3851, 0x52,
-	0x0340, 0x04,
-	0x0341, 0xC0,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x0C,
-	0x030B, 0x02,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xEA,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x2C,
-	0x38D2, 0x01,
-	0x38D3, 0x2C,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* Reg_B-2 QBIN(VBIN)_4096x3072 @24FPS */
-static u16 konkamain_custom2_setting[] = {
-	0x0110, 0x01,
-	0x30A2, 0x03,
-	0x30A4, 0x03,
-	0x30A6, 0x03,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x6A,
-	0x0340, 0x24,
-	0x0341, 0xD8,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x4E,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x18,
-	0x38D2, 0x01,
-	0x38D3, 0x18,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x11,
-	0x0850, 0x00,
-	0x0851, 0x0F,
-	0x0852, 0x00,
-	0x0853, 0x1D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* Reg_A-1 8192x6144_30FPS*/
-static u16 konkamain_custom3_setting[] = {
-	0x0110, 0x01,
-	0x30A2, 0x03,
-	0x30A4, 0x03,
-	0x30A6, 0x03,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3850, 0x00,
-	0x3851, 0x7C,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x26,
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x01,
-	0x38D0, 0x01,
-	0x38D1, 0x2C,
-	0x38D2, 0x01,
-	0x38D3, 0x2C,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/*Reg_L1-S4 QBIN(VBIN) 4096x3072_2-exp LBMF 30FPS with PDAF VB_ma*/
-static u16 konkamain_custom4_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x6A,
-	0x0340, 0x19,
-	0x0341, 0x11,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x26,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x18,
-	0x38D2, 0x01,
-	0x38D3, 0x18,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x33,
-	0x0E06, 0x03,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0E,
-	0x0E29, 0xBC,
-	0x0E2A, 0x01,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x04,
-	0x0E33, 0x30,
-	0x0E34, 0x04,
-	0x0E35, 0x30,
-	0x0E36, 0x04,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E60, 0x03,
-	0x0E61, 0xE8,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x00,
-	0x0E67, 0x00,
-	0x0E68, 0x0E,
-	0x0E69, 0xBC,
-	0x0E6A, 0x02,
-	0x0E6B, 0x2B,
-	0x0E6C, 0x00,
-	0x0E70, 0x01,
-	0x0E71, 0x12,
-	0x0E72, 0x03,
-	0x0E73, 0x30,
-	0x0E74, 0x03,
-	0x0E75, 0x30,
-	0x0E76, 0x03,
-	0x0E77, 0x30,
-	0x0E78, 0x00,
-	0x0E79, 0x00,
-	0x0E7C, 0x00,
-	0x0E7D, 0x00,
-	0x0E7E, 0x01,
-	0x0E7F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* Reg_F3-S2 QRMSC_4096x3072_30FPS insensor zoom--bayer*/
-static u16 konkamain_custom5_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3850, 0x00,
-	0x3851, 0x7C,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x57,
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x01,
-	0x38D0, 0x01,
-	0x38D1, 0x2C,
-	0x38D2, 0x01,
-	0x38D3, 0x2C,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* Reg_H-3_QBIN-V2H2 FHD 2048x1152_480FPS*/
-static u16 konkamain_custom6_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x0E,
-	0x0343, 0xA0,
-	0x3850, 0x00,
-	0x3851, 0x29,
-	0x0340, 0x04,
-	0x0341, 0xC0,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x9C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3211, 0x00,
-	0x3855, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xD2,
-	0x38D2, 0x00,
-	0x38D3, 0xD2,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x17,
-	0x0850, 0x00,
-	0x0851, 0x13,
-	0x0852, 0x00,
-	0x0853, 0x27,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/*Reg_L2-S4 Izoom 2exp-LBMF 4096x3072 @30FPS bayer w/ PDAF VB_max*/
-static u16 konkamain_custom7_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3850, 0x00,
-	0x3851, 0x7C,
-	0x0340, 0x19,
-	0x0341, 0x11,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x26,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x01,
-	0x38D0, 0x01,
-	0x38D1, 0x2C,
-	0x38D2, 0x01,
-	0x38D3, 0x2C,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x33,
-	0x0E06, 0x03,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0C,
-	0x0E29, 0x99,
-	0x0E2A, 0x01,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x04,
-	0x0E33, 0x30,
-	0x0E34, 0x04,
-	0x0E35, 0x30,
-	0x0E36, 0x04,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E60, 0x03,
-	0x0E61, 0xE8,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x00,
-	0x0E67, 0x00,
-	0x0E68, 0x0C,
-	0x0E69, 0x99,
-	0x0E6A, 0x02,
-	0x0E6B, 0x2B,
-	0x0E6C, 0x00,
-	0x0E70, 0x01,
-	0x0E71, 0x12,
-	0x0E72, 0x03,
-	0x0E73, 0x30,
-	0x0E74, 0x03,
-	0x0E75, 0x30,
-	0x0E76, 0x03,
-	0x0E77, 0x30,
-	0x0E78, 0x00,
-	0x0E79, 0x00,
-	0x0E7C, 0x00,
-	0x0E7D, 0x00,
-	0x0E7E, 0x01,
-	0x0E7F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/*reg_B5-S2 4096x3072 @60FPS QBIN(VBIN) with PDAF VB_max*/
-static u16 konkamain_custom8_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x6A,
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x4E,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x18,
-	0x38D2, 0x01,
-	0x38D3, 0x18,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x11,
-	0x0850, 0x00,
-	0x0851, 0x0F,
-	0x0852, 0x00,
-	0x0853, 0x1D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/*G2-S3 4096x2304 30FPS DCG AP Merge*/
-static u16 konkamain_custom9_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	0x0342, 0x3F,
-	0x0343, 0x90,
-	0x3850, 0x00,
-	0x3851, 0xB2,
-	0x0340, 0x11,
-	0x0341, 0x8E,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x04,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x9F,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x03,
-	0x38D1, 0x98,
-	0x38D2, 0x03,
-	0x38D3, 0x98,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x30,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x01,
-	0x3181, 0x01,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x03,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x17,
-	0x0850, 0x00,
-	0x0851, 0x13,
-	0x0852, 0x00,
-	0x0853, 0x27,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/* Reg_G3-S2 4096x2304 @60FPS QBIN DCG-HDR RAW10 w/ Partial-PD VB_max*/
-static u16 konkamain_custom10_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	0x0342, 0x32,
-	0x0343, 0x00,
-	0x3850, 0x00,
-	0x3851, 0x8C,
-	0x0340, 0x0B,
-	0x0341, 0x28,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x03,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xD8,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xE1,
-	0x38D2, 0x00,
-	0x38D3, 0xE1,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x30,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x01,
-	0x3181, 0x01,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x00,
-	0x3103, 0x03,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x19,
-	0x0850, 0x00,
-	0x0851, 0x15,
-	0x0852, 0x00,
-	0x0853, 0x29,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/*B20-S7 1856x1392 @30.1FPS QBIN(VBIN) Tline= 17.66us (RST= 24 ms)*/
-static u16 konkamain_custom11_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x4B,
-	0x0343, 0xC0,
-	0x3850, 0x01,
-	0x3851, 0xA8,
-	0x0340, 0x07,
-	0x0341, 0x58,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x90,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0x6F,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x04,
-	0x0409, 0x60,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x07,
-	0x040D, 0x40,
-	0x040E, 0x05,
-	0x040F, 0x70,
-	0x034C, 0x07,
-	0x034D, 0x40,
-	0x034E, 0x05,
-	0x034F, 0x70,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0xB7,
-	0x030B, 0x04,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x92,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x18,
-	0x38D2, 0x01,
-	0x38D3, 0x18,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x09,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x0F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* F9-S4 8192x6144 @30FPS Full-RAW w/ PD VB_max seamless reg_B4-S4 */
-static u16 konkamain_custom12_setting[] = {
-	0x0110, 0x01,
-	0x30A2, 0x03,
-	0x30A4, 0x03,
-	0x30A6, 0x03,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3850, 0x00,
-	0x3851, 0x7C,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x26,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x01,
-	0x38D0, 0x01,
-	0x38D1, 0x2C,
-	0x38D2, 0x01,
-	0x38D3, 0x2C,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* Reg_F-2-S1 QRMSC_4096x3072_24FPS--qbayer with 100%PDAF VB_max seamless reg_B-2 */
-static u16 konkamain_custom13_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3850, 0x00,
-	0x3851, 0x7C,
-	0x0340, 0x1F,
-	0x0341, 0x80,
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x4E,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x01,
-	0x38D0, 0x01,
-	0x38D1, 0x2C,
-	0x38D2, 0x01,
-	0x38D3, 0x2C,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x11,
-	0x0850, 0x00,
-	0x0851, 0x0F,
-	0x0852, 0x00,
-	0x0853, 0x1D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* Reg_V3 2048x1536 @30FPS QBIN(VBIN)-V2H2*/
-static u16 konkamain_custom14_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x15,
-	0x0343, 0x70,
-	0x3850, 0x00,
-	0x3851, 0x3C,
-	0x0340, 0x34,
-	0x0341, 0x14,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0x00,
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x57,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x2C,
-	0x38D2, 0x01,
-	0x38D3, 0x2C,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* Reg_V4 2048x1536 @15FPS QBIN(VBIN)-V2H2*/
-static u16 konkamain_custom15_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x15,
-	0x0343, 0x70,
-	0x3850, 0x00,
-	0x3851, 0x3C,
-	0x0340, 0x68,
-	0x0341, 0x28,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0x00,
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x57,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x2C,
-	0x38D2, 0x01,
-	0x38D3, 0x2C,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/* reg_B8 4096x2304 @120FPS QBIN Partial-PD VB_max*/
-static u16 konkamain_custom16_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x18,
-	0x0343, 0xA0,
-	0x3850, 0x00,
-	0x3851, 0x54,
-	0x0340, 0x09,
-	0x0341, 0x4C,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x2D,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x83,
-	0x1018, 0x00,
-	0x1019, 0x00,
-	0x101A, 0x00,
-	0x101B, 0x00,
-	0x1118, 0x00,
-	0x1119, 0x00,
-	0x111A, 0x00,
-	0x111B, 0x00,
-	0x1218, 0x00,
-	0x1219, 0x00,
-	0x121A, 0x00,
-	0x121B, 0x00,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x82,
-	0x38D2, 0x00,
-	0x38D3, 0x82,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x00,
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	0x084E, 0x00,
-	0x084F, 0x15,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x23,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/*G6-S3 4096x3072 30FPS DCG AP Merge*/
-static u16 konkamain_custom17_setting[] = {
-	0x0110, 0x00,
-	0x30A2, 0x00,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	/* MIPI output setting */
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	/* Line Length PCK Setting */
-	0x0342, 0x3F,
-	0x0343, 0x90,
-	0x3850, 0x00,
-	0x3851, 0xB2,
-	/* Frame Length Lines Setting */
-	0x0340, 0x11,
-	0x0341, 0x8E,
-	/* ROI Setting */
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/* Mode Setting */
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x04,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/* Digital Crop & Scaling */
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/* Output Size Setting */
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/* Clock Setting */
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x93,
-	/* Other Setting */
-	0x1018, 0x00,
-	0x1019, 0x00,
-	0x101A, 0x00,
-	0x101B, 0x00,
-	0x1118, 0x00,
-	0x1119, 0x00,
-	0x111A, 0x00,
-	0x111B, 0x00,
-	0x1218, 0x00,
-	0x1219, 0x00,
-	0x121A, 0x00,
-	0x121B, 0x00,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x03,
-	0x38D1, 0x98,
-	0x38D2, 0x03,
-	0x38D3, 0x98,
-	0x39AC, 0x01,
-	/* Integration Setting */
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	/* Gain Setting */
-	0x0204, 0x30,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	/* DCGHDR Setting */
-	0x0221, 0x11,
-	0x3180, 0x01,
-	0x3181, 0x01,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	/* GYRO Setting */
-	0x4200, 0x01,
-	0x4201, 0x01,
-	0x3108, 0x01,
-	/* PHASE PIX Setting */
-	0x3104, 0x03,
-	/* PDAF TYPE2 Setting */
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/* PDAF TYPE2 Output Data Setting */
-	0x3978, 0x00,
-	/* DOL Setting */
-	0x3190, 0x00,
-	0x3191, 0x00,
-	/* EAE-Bracketing Setting */
-	0x0E00, 0x00,
-	0x0E06, 0x03,
-	/* MIPI Global Timing Setting */
-	0x084E, 0x00,
-	0x084F, 0x15,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x23,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/*B-2-1 Izoom 2exp-LBMF 4096x3072 @24FPS w/ PDAF VB_max RST=13.56ms~15.88ms (seamless B-2)*/
-static u16 konkamain_custom18_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3850, 0x00,
-	0x3851, 0x7C,
-	0x0340, 0x19,
-	0x0341, 0x11,
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x4E,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x01,
-	0x38D0, 0x01,
-	0x38D1, 0x2C,
-	0x38D2, 0x01,
-	0x38D3, 0x2C,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x33,
-	0x0E06, 0x03,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0F,
-	0x0E29, 0xC0,
-	0x0E2A, 0x01,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x04,
-	0x0E33, 0x30,
-	0x0E34, 0x04,
-	0x0E35, 0x30,
-	0x0E36, 0x04,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E60, 0x03,
-	0x0E61, 0xE8,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x00,
-	0x0E67, 0x00,
-	0x0E68, 0x0F,
-	0x0E69, 0xC0,
-	0x0E6A, 0x02,
-	0x0E6B, 0x2B,
-	0x0E6C, 0x00,
-	0x0E70, 0x01,
-	0x0E71, 0x12,
-	0x0E72, 0x03,
-	0x0E73, 0x30,
-	0x0E74, 0x03,
-	0x0E75, 0x30,
-	0x0E76, 0x03,
-	0x0E77, 0x30,
-	0x0E78, 0x00,
-	0x0E79, 0x00,
-	0x0E7C, 0x00,
-	0x0E7D, 0x00,
-	0x0E7E, 0x01,
-	0x0E7F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x084E, 0x00,
-	0x084F, 0x11,
-	0x0850, 0x00,
-	0x0851, 0x0F,
-	0x0852, 0x00,
-	0x0853, 0x1D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/*B-2-2 QBIN(VBIN) 2exp-LBMF 4096x3072 @24FPS w/ PDAF VB_max RST=13.56m~15.88ms (seamless reg_B-2)*/
-static u16 konkamain_custom19_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x6A,
-	0x0340, 0x19,
-	0x0341, 0x11,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3146, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x4E,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3211, 0x01,
-	0x3855, 0x00,
-	0x38D0, 0x01,
-	0x38D1, 0x18,
-	0x38D2, 0x01,
-	0x38D3, 0x18,
-	0x39AC, 0x01,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0221, 0x11,
-	0x3180, 0x00,
-	0x3181, 0x00,
-	0x3182, 0x04,
-	0x320B, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x3190, 0x00,
-	0x3191, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x33,
-	0x0E06, 0x03,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x12,
-	0x0E29, 0x6C,
-	0x0E2A, 0x01,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x04,
-	0x0E33, 0x30,
-	0x0E34, 0x04,
-	0x0E35, 0x30,
-	0x0E36, 0x04,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E60, 0x03,
-	0x0E61, 0xE8,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x00,
-	0x0E67, 0x00,
-	0x0E68, 0x12,
-	0x0E69, 0x6C,
-	0x0E6A, 0x02,
-	0x0E6B, 0x2B,
-	0x0E6C, 0x00,
-	0x0E70, 0x01,
-	0x0E71, 0x12,
-	0x0E72, 0x03,
-	0x0E73, 0x30,
-	0x0E74, 0x03,
-	0x0E75, 0x30,
-	0x0E76, 0x03,
-	0x0E77, 0x30,
-	0x0E78, 0x00,
-	0x0E79, 0x00,
-	0x0E7C, 0x00,
-	0x0E7D, 0x00,
-	0x0E7E, 0x01,
-	0x0E7F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x084E, 0x00,
-	0x084F, 0x11,
-	0x0850, 0x00,
-	0x0851, 0x0F,
-	0x0852, 0x00,
-	0x0853, 0x1D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x01,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 konkamain_seamless_preview[] = {
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3851, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3855, 0x00,
-	0x38D1, 0x18,
-	0x38D3, 0x18,
-	0x0E00, 0x00,
-	0x0110, 0x01,
-	0x30A2, 0x03,
-	0x30A4, 0x03,
-	0x30A6, 0x03,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B-1/mode1 F3-S2/mode9*/
-static u16 konkamain_seamless_capture[] = {
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3851, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x3205, 0x00,
-	0x3855, 0x00,
-	0x38D1, 0x18,
-	0x38D3, 0x18,
-};
-
-/*B-3/mode2 G2-S3/mode13 */
-static u16 konkamain_seamless_normal_video[] = {
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x0342, 0x3F,
-	0x0343, 0x90,
-	0x3851, 0xB2,
-	0x0340, 0x11,
-	0x0341, 0x8E,
-	0x3006, 0x04,
-	0x030F, 0x93,
-	0x38D0, 0x03,
-	0x38D1, 0x98,
-	0x38D2, 0x03,
-	0x38D3, 0x98,
-	0x0204, 0x30,
-	0x3180, 0x01,
-	0x3104, 0x03,
-	0x084F, 0x15,
-	0x0851, 0x11,
-	0x0853, 0x23,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B-2/mode6 B-2-1/mode22 B-2-2/mode23*/
-static u16 konkamain_seamless_custom2[] = {
-	0x0110, 0x01,
-	0x30A2, 0x03,
-	0x30A4, 0x03,
-	0x30A6, 0x03,
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3851, 0x6A,
-	0x0340, 0x24,
-	0x0341, 0xD8,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x3855, 0x00,
-	0x38D1, 0x18,
-	0x38D3, 0x18,
-	0x0E00, 0x00,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 konkamain_seamless_custom3[] = {
-	0x0110, 0x01,
-	0x30A2, 0x03,
-	0x30A4, 0x03,
-	0x30A6, 0x03,
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3851, 0x7C,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x20,
-	0x040E, 0x18,
-	0x034C, 0x20,
-	0x034E, 0x18,
-	0x3205, 0x01,
-	0x3855, 0x01,
-	0x38D1, 0x2C,
-	0x38D3, 0x2C,
-	0x0E00, 0x00,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 konkamain_seamless_custom4[] = {
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3851, 0x6A,
-	0x0340, 0x19,
-	0x0341, 0x11,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3855, 0x00,
-	0x38D1, 0x18,
-	0x38D3, 0x18,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x33,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0E,
-	0x0E29, 0xBC,
-	0x0E2A, 0x01,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x04,
-	0x0E33, 0x30,
-	0x0E34, 0x04,
-	0x0E35, 0x30,
-	0x0E36, 0x04,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E60, 0x03,
-	0x0E61, 0xE8,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x00,
-	0x0E67, 0x00,
-	0x0E68, 0x0E,
-	0x0E69, 0xBC,
-	0x0E6A, 0x02,
-	0x0E6B, 0x2B,
-	0x0E6C, 0x00,
-	0x0E70, 0x01,
-	0x0E71, 0x12,
-	0x0E72, 0x03,
-	0x0E73, 0x30,
-	0x0E74, 0x03,
-	0x0E75, 0x30,
-	0x0E76, 0x03,
-	0x0E77, 0x30,
-	0x0E78, 0x00,
-	0x0E79, 0x00,
-	0x0E7C, 0x00,
-	0x0E7D, 0x00,
-	0x0E7E, 0x01,
-	0x0E7F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B-1/mode1 F3-S2/mode9*/
-static u16 konkamain_seamless_custom5[] = {
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3851, 0x7C,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0346, 0x06,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x3205, 0x01,
-	0x3855, 0x01,
-	0x38D1, 0x2C,
-	0x38D3, 0x2C,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 konkamain_seamless_custom7[] = {
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3851, 0x7C,
-	0x0340, 0x19,
-	0x0341, 0x11,
-	0x0346, 0x06,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3855, 0x01,
-	0x38D1, 0x2C,
-	0x38D3, 0x2C,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x33,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0C,
-	0x0E29, 0x99,
-	0x0E2A, 0x01,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x04,
-	0x0E33, 0x30,
-	0x0E34, 0x04,
-	0x0E35, 0x30,
-	0x0E36, 0x04,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E60, 0x03,
-	0x0E61, 0xE8,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x00,
-	0x0E67, 0x00,
-	0x0E68, 0x0C,
-	0x0E69, 0x99,
-	0x0E6A, 0x02,
-	0x0E6B, 0x2B,
-	0x0E6C, 0x00,
-	0x0E70, 0x01,
-	0x0E71, 0x12,
-	0x0E72, 0x03,
-	0x0E73, 0x30,
-	0x0E74, 0x03,
-	0x0E75, 0x30,
-	0x0E76, 0x03,
-	0x0E77, 0x30,
-	0x0E78, 0x00,
-	0x0E79, 0x00,
-	0x0E7C, 0x00,
-	0x0E7D, 0x00,
-	0x0E7E, 0x01,
-	0x0E7F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B-3/mode2 G2-S3/mode13 */
-static u16 konkamain_seamless_custom9[] = {
-	0x0342, 0x3F,
-	0x0343, 0x90,
-	0x3850, 0x00,
-	0x3851, 0xB2,
-	0x0340, 0x11,
-	0x0341, 0x8E,
-	0x3006, 0x04,
-	0x38D0, 0x03,
-	0x38D1, 0x98,
-	0x38D2, 0x03,
-	0x38D3, 0x98,
-	0x0204, 0x30,
-	0x0205, 0x00,
-	0x3180, 0x01,
-	0x3181, 0x01,
-	0x3104, 0x03,
-	0x3190, 0x00,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 konkamain_seamless_custom12[] = {
-	0x0110, 0x01,
-	0x30A2, 0x03,
-	0x30A4, 0x03,
-	0x30A6, 0x03,
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3851, 0x7C,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x20,
-	0x040E, 0x18,
-	0x034C, 0x20,
-	0x034E, 0x18,
-	0x3205, 0x00,
-	0x3855, 0x01,
-	0x38D1, 0x2C,
-	0x38D3, 0x2C,
-	0x0E00, 0x00,
-};
-
-/*B-2/mode6 B-2-1/mode22 B-2-2/mode23*/
-static u16 konkamain_seamless_custom18[] = {
-	0x0342, 0x2C,
-	0x0343, 0x50,
-	0x3851, 0x7C,
-	0x0340, 0x19,
-	0x0341, 0x11,
-	0x0344, 0x08,
-	0x0346, 0x06,
-	0x0348, 0x17,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x3855, 0x01,
-	0x38D1, 0x2C,
-	0x38D3, 0x2C,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x33,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0F,
-	0x0E29, 0xC0,
-	0x0E2A, 0x01,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x04,
-	0x0E33, 0x30,
-	0x0E34, 0x04,
-	0x0E35, 0x30,
-	0x0E36, 0x04,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E60, 0x03,
-	0x0E61, 0xE8,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x00,
-	0x0E67, 0x00,
-	0x0E68, 0x0F,
-	0x0E69, 0xC0,
-	0x0E6A, 0x02,
-	0x0E6B, 0x2B,
-	0x0E6C, 0x00,
-	0x0E70, 0x01,
-	0x0E71, 0x12,
-	0x0E72, 0x03,
-	0x0E73, 0x30,
-	0x0E74, 0x03,
-	0x0E75, 0x30,
-	0x0E76, 0x03,
-	0x0E77, 0x30,
-	0x0E78, 0x00,
-	0x0E79, 0x00,
-	0x0E7C, 0x00,
-	0x0E7D, 0x00,
-	0x0E7E, 0x01,
-	0x0E7F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B-2/mode6 B-2-1/mode22 B-2-2/mode23*/
-static u16 konkamain_seamless_custom19[] = {
-	0x0342, 0x25,
-	0x0343, 0xE0,
-	0x3851, 0x6A,
-	0x0340, 0x19,
-	0x0341, 0x11,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x3855, 0x00,
-	0x38D1, 0x18,
-	0x38D3, 0x18,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x33,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x12,
-	0x0E29, 0x6C,
-	0x0E2A, 0x01,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x04,
-	0x0E33, 0x30,
-	0x0E34, 0x04,
-	0x0E35, 0x30,
-	0x0E36, 0x04,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E60, 0x03,
-	0x0E61, 0xE8,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x00,
-	0x0E67, 0x00,
-	0x0E68, 0x12,
-	0x0E69, 0x6C,
-	0x0E6A, 0x02,
-	0x0E6B, 0x2B,
-	0x0E6C, 0x00,
-	0x0E70, 0x01,
-	0x0E71, 0x12,
-	0x0E72, 0x03,
-	0x0E73, 0x30,
-	0x0E74, 0x03,
-	0x0E75, 0x30,
-	0x0E76, 0x03,
-	0x0E77, 0x30,
-	0x0E78, 0x00,
-	0x0E79, 0x00,
-	0x0E7C, 0x00,
-	0x0E7D, 0x00,
-	0x0E7E, 0x01,
-	0x0E7F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-#endif /* _KONKAMAIN_SENSOR_SETTING_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamain_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamain_ana_gain_table.h
deleted file mode 100755
index 307239d0..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamain_ana_gain_table.h
+++ /dev/null
@@ -1,1907 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkamain_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __KONKAMAIN_ANA_GAIN_TABLE_H__
-#define __KONKAMAIN_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 konkamain_ana_gain_table[] = {
-	1024,
-	1025,
-	1026,
-	1027,
-	1028,
-	1029,
-	1030,
-	1031,
-	1032,
-	1033,
-	1034,
-	1035,
-	1036,
-	1037,
-	1038,
-	1039,
-	1040,
-	1041,
-	1042,
-	1043,
-	1044,
-	1045,
-	1046,
-	1047,
-	1048,
-	1049,
-	1050,
-	1051,
-	1052,
-	1053,
-	1054,
-	1055,
-	1057,
-	1058,
-	1059,
-	1060,
-	1061,
-	1062,
-	1063,
-	1064,
-	1065,
-	1066,
-	1067,
-	1068,
-	1069,
-	1071,
-	1072,
-	1073,
-	1074,
-	1075,
-	1076,
-	1077,
-	1078,
-	1079,
-	1081,
-	1082,
-	1083,
-	1084,
-	1085,
-	1086,
-	1087,
-	1088,
-	1089,
-	1091,
-	1092,
-	1093,
-	1094,
-	1095,
-	1096,
-	1097,
-	1099,
-	1100,
-	1101,
-	1102,
-	1103,
-	1104,
-	1106,
-	1107,
-	1108,
-	1109,
-	1110,
-	1111,
-	1113,
-	1114,
-	1115,
-	1116,
-	1117,
-	1119,
-	1120,
-	1121,
-	1122,
-	1123,
-	1125,
-	1126,
-	1127,
-	1128,
-	1129,
-	1131,
-	1132,
-	1133,
-	1134,
-	1136,
-	1137,
-	1138,
-	1139,
-	1140,
-	1142,
-	1143,
-	1144,
-	1145,
-	1147,
-	1148,
-	1149,
-	1151,
-	1152,
-	1153,
-	1154,
-	1156,
-	1157,
-	1158,
-	1159,
-	1161,
-	1162,
-	1163,
-	1165,
-	1166,
-	1167,
-	1168,
-	1170,
-	1171,
-	1172,
-	1174,
-	1175,
-	1176,
-	1178,
-	1179,
-	1180,
-	1182,
-	1183,
-	1184,
-	1186,
-	1187,
-	1188,
-	1190,
-	1191,
-	1192,
-	1194,
-	1195,
-	1197,
-	1198,
-	1199,
-	1201,
-	1202,
-	1203,
-	1205,
-	1206,
-	1208,
-	1209,
-	1210,
-	1212,
-	1213,
-	1215,
-	1216,
-	1217,
-	1219,
-	1220,
-	1222,
-	1223,
-	1224,
-	1226,
-	1227,
-	1229,
-	1230,
-	1232,
-	1233,
-	1235,
-	1236,
-	1237,
-	1239,
-	1240,
-	1242,
-	1243,
-	1245,
-	1246,
-	1248,
-	1249,
-	1251,
-	1252,
-	1254,
-	1255,
-	1257,
-	1258,
-	1260,
-	1261,
-	1263,
-	1264,
-	1266,
-	1267,
-	1269,
-	1270,
-	1272,
-	1274,
-	1275,
-	1277,
-	1278,
-	1280,
-	1281,
-	1283,
-	1285,
-	1286,
-	1288,
-	1289,
-	1291,
-	1292,
-	1294,
-	1296,
-	1297,
-	1299,
-	1300,
-	1302,
-	1304,
-	1305,
-	1307,
-	1309,
-	1310,
-	1312,
-	1314,
-	1315,
-	1317,
-	1318,
-	1320,
-	1322,
-	1323,
-	1325,
-	1327,
-	1328,
-	1330,
-	1332,
-	1334,
-	1335,
-	1337,
-	1339,
-	1340,
-	1342,
-	1344,
-	1346,
-	1347,
-	1349,
-	1351,
-	1353,
-	1354,
-	1356,
-	1358,
-	1360,
-	1361,
-	1363,
-	1365,
-	1367,
-	1368,
-	1370,
-	1372,
-	1374,
-	1376,
-	1377,
-	1379,
-	1381,
-	1383,
-	1385,
-	1387,
-	1388,
-	1390,
-	1392,
-	1394,
-	1396,
-	1398,
-	1399,
-	1401,
-	1403,
-	1405,
-	1407,
-	1409,
-	1411,
-	1413,
-	1415,
-	1416,
-	1418,
-	1420,
-	1422,
-	1424,
-	1426,
-	1428,
-	1430,
-	1432,
-	1434,
-	1436,
-	1438,
-	1440,
-	1442,
-	1444,
-	1446,
-	1448,
-	1450,
-	1452,
-	1454,
-	1456,
-	1458,
-	1460,
-	1462,
-	1464,
-	1466,
-	1468,
-	1470,
-	1472,
-	1474,
-	1476,
-	1478,
-	1481,
-	1483,
-	1485,
-	1487,
-	1489,
-	1491,
-	1493,
-	1495,
-	1497,
-	1500,
-	1502,
-	1504,
-	1506,
-	1508,
-	1510,
-	1513,
-	1515,
-	1517,
-	1519,
-	1521,
-	1524,
-	1526,
-	1528,
-	1530,
-	1533,
-	1535,
-	1537,
-	1539,
-	1542,
-	1544,
-	1546,
-	1548,
-	1551,
-	1553,
-	1555,
-	1558,
-	1560,
-	1562,
-	1565,
-	1567,
-	1569,
-	1572,
-	1574,
-	1576,
-	1579,
-	1581,
-	1583,
-	1586,
-	1588,
-	1591,
-	1593,
-	1596,
-	1598,
-	1600,
-	1603,
-	1605,
-	1608,
-	1610,
-	1613,
-	1615,
-	1618,
-	1620,
-	1623,
-	1625,
-	1628,
-	1630,
-	1633,
-	1635,
-	1638,
-	1640,
-	1643,
-	1646,
-	1648,
-	1651,
-	1653,
-	1656,
-	1659,
-	1661,
-	1664,
-	1667,
-	1669,
-	1672,
-	1675,
-	1677,
-	1680,
-	1683,
-	1685,
-	1688,
-	1691,
-	1693,
-	1696,
-	1699,
-	1702,
-	1705,
-	1707,
-	1710,
-	1713,
-	1716,
-	1718,
-	1721,
-	1724,
-	1727,
-	1730,
-	1733,
-	1736,
-	1738,
-	1741,
-	1744,
-	1747,
-	1750,
-	1753,
-	1756,
-	1759,
-	1762,
-	1765,
-	1768,
-	1771,
-	1774,
-	1777,
-	1780,
-	1783,
-	1786,
-	1789,
-	1792,
-	1795,
-	1798,
-	1801,
-	1804,
-	1807,
-	1811,
-	1814,
-	1817,
-	1820,
-	1823,
-	1826,
-	1829,
-	1833,
-	1836,
-	1839,
-	1842,
-	1846,
-	1849,
-	1852,
-	1855,
-	1859,
-	1862,
-	1865,
-	1869,
-	1872,
-	1875,
-	1879,
-	1882,
-	1885,
-	1889,
-	1892,
-	1896,
-	1899,
-	1903,
-	1906,
-	1909,
-	1913,
-	1916,
-	1920,
-	1923,
-	1927,
-	1931,
-	1934,
-	1938,
-	1941,
-	1945,
-	1949,
-	1952,
-	1956,
-	1959,
-	1963,
-	1967,
-	1971,
-	1974,
-	1978,
-	1982,
-	1985,
-	1989,
-	1993,
-	1997,
-	2001,
-	2004,
-	2008,
-	2012,
-	2016,
-	2020,
-	2024,
-	2028,
-	2032,
-	2036,
-	2040,
-	2044,
-	2048,
-	2052,
-	2056,
-	2060,
-	2064,
-	2068,
-	2072,
-	2076,
-	2080,
-	2084,
-	2088,
-	2092,
-	2097,
-	2101,
-	2105,
-	2109,
-	2114,
-	2118,
-	2122,
-	2126,
-	2131,
-	2135,
-	2139,
-	2144,
-	2148,
-	2153,
-	2157,
-	2162,
-	2166,
-	2170,
-	2175,
-	2179,
-	2184,
-	2189,
-	2193,
-	2198,
-	2202,
-	2207,
-	2212,
-	2216,
-	2221,
-	2226,
-	2231,
-	2235,
-	2240,
-	2245,
-	2250,
-	2255,
-	2259,
-	2264,
-	2269,
-	2274,
-	2279,
-	2284,
-	2289,
-	2294,
-	2299,
-	2304,
-	2309,
-	2314,
-	2319,
-	2325,
-	2330,
-	2335,
-	2340,
-	2345,
-	2351,
-	2356,
-	2361,
-	2366,
-	2372,
-	2377,
-	2383,
-	2388,
-	2394,
-	2399,
-	2404,
-	2410,
-	2416,
-	2421,
-	2427,
-	2432,
-	2438,
-	2444,
-	2449,
-	2455,
-	2461,
-	2467,
-	2473,
-	2478,
-	2484,
-	2490,
-	2496,
-	2502,
-	2508,
-	2514,
-	2520,
-	2526,
-	2532,
-	2538,
-	2545,
-	2551,
-	2557,
-	2563,
-	2570,
-	2576,
-	2582,
-	2589,
-	2595,
-	2601,
-	2608,
-	2614,
-	2621,
-	2628,
-	2634,
-	2641,
-	2647,
-	2654,
-	2661,
-	2668,
-	2674,
-	2681,
-	2688,
-	2695,
-	2702,
-	2709,
-	2716,
-	2723,
-	2730,
-	2737,
-	2744,
-	2752,
-	2759,
-	2766,
-	2774,
-	2781,
-	2788,
-	2796,
-	2803,
-	2811,
-	2818,
-	2826,
-	2833,
-	2841,
-	2849,
-	2857,
-	2864,
-	2872,
-	2880,
-	2888,
-	2896,
-	2904,
-	2912,
-	2920,
-	2928,
-	2937,
-	2945,
-	2953,
-	2962,
-	2970,
-	2978,
-	2987,
-	2995,
-	3004,
-	3013,
-	3021,
-	3030,
-	3039,
-	3048,
-	3057,
-	3066,
-	3075,
-	3084,
-	3093,
-	3102,
-	3111,
-	3120,
-	3130,
-	3139,
-	3148,
-	3158,
-	3167,
-	3177,
-	3187,
-	3196,
-	3206,
-	3216,
-	3226,
-	3236,
-	3246,
-	3256,
-	3266,
-	3276,
-	3287,
-	3297,
-	3307,
-	3318,
-	3328,
-	3339,
-	3350,
-	3360,
-	3371,
-	3382,
-	3393,
-	3404,
-	3415,
-	3426,
-	3437,
-	3449,
-	3460,
-	3472,
-	3483,
-	3495,
-	3506,
-	3518,
-	3530,
-	3542,
-	3554,
-	3566,
-	3578,
-	3591,
-	3603,
-	3615,
-	3628,
-	3640,
-	3653,
-	3666,
-	3679,
-	3692,
-	3705,
-	3718,
-	3731,
-	3744,
-	3758,
-	3771,
-	3785,
-	3799,
-	3813,
-	3826,
-	3840,
-	3855,
-	3869,
-	3883,
-	3898,
-	3912,
-	3927,
-	3942,
-	3956,
-	3971,
-	3986,
-	4002,
-	4017,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4161,
-	4177,
-	4194,
-	4211,
-	4228,
-	4245,
-	4262,
-	4279,
-	4297,
-	4315,
-	4332,
-	4350,
-	4369,
-	4387,
-	4405,
-	4424,
-	4443,
-	4462,
-	4481,
-	4500,
-	4519,
-	4539,
-	4559,
-	4578,
-	4599,
-	4619,
-	4639,
-	4660,
-	4681,
-	4702,
-	4723,
-	4744,
-	4766,
-	4788,
-	4809,
-	4832,
-	4854,
-	4877,
-	4899,
-	4922,
-	4946,
-	4969,
-	4993,
-	5017,
-	5041,
-	5065,
-	5090,
-	5115,
-	5140,
-	5165,
-	5190,
-	5216,
-	5242,
-	5269,
-	5295,
-	5322,
-	5349,
-	5377,
-	5405,
-	5433,
-	5461,
-	5489,
-	5518,
-	5548,
-	5577,
-	5607,
-	5637,
-	5667,
-	5698,
-	5729,
-	5761,
-	5793,
-	5825,
-	5857,
-	5890,
-	5924,
-	5957,
-	5991,
-	6026,
-	6061,
-	6096,
-	6132,
-	6168,
-	6204,
-	6241,
-	6278,
-	6316,
-	6355,
-	6393,
-	6432,
-	6472,
-	6512,
-	6553,
-	6594,
-	6636,
-	6678,
-	6721,
-	6765,
-	6808,
-	6853,
-	6898,
-	6944,
-	6990,
-	7037,
-	7084,
-	7133,
-	7182,
-	7231,
-	7281,
-	7332,
-	7384,
-	7436,
-	7489,
-	7543,
-	7598,
-	7653,
-	7710,
-	7767,
-	7825,
-	7884,
-	7943,
-	8004,
-	8065,
-	8128,
-	8192,
-	8256,
-	8322,
-	8388,
-	8456,
-	8525,
-	8594,
-	8665,
-	8738,
-	8811,
-	8886,
-	8962,
-	9039,
-	9118,
-	9198,
-	9279,
-	9362,
-	9446,
-	9532,
-	9619,
-	9709,
-	9799,
-	9892,
-	9986,
-	10082,
-	10180,
-	10280,
-	10381,
-	10485,
-	10591,
-	10699,
-	10810,
-	10922,
-	11037,
-	11155,
-	11275,
-	11397,
-	11522,
-	11650,
-	11781,
-	11915,
-	12052,
-	12192,
-	12336,
-	12483,
-	12633,
-	12787,
-	12945,
-	13107,
-	13273,
-	13443,
-	13617,
-	13797,
-	13981,
-	14169,
-	14364,
-	14563,
-	14768,
-	14979,
-	15196,
-	15420,
-	15650,
-	15887,
-	16131,
-	16384,
-	16644,
-	16912,
-	17189,
-	17476,
-	17772,
-	18078,
-	18396,
-	18724,
-	19065,
-	19418,
-	19784,
-	20164,
-	20560,
-	20971,
-	21399,
-	21845,
-	22310,
-	22795,
-	23301,
-	23831,
-	24385,
-	24966,
-	25575,
-	26214,
-	26886,
-	27594,
-	28339,
-	29127,
-	29959,
-	30840,
-	31775,
-	32768,
-	33825,
-	34952,
-	36157,
-	37449,
-	38836,
-	40329,
-	41943,
-	43690,
-	45590,
-	47662,
-	49932,
-	52428,
-	55188,
-	58254,
-	61680,
-	65536,
-	65536,
-};
-
-#define KONKAMAIN_GAIN_TABLE_SIZE 432
-static kal_uint32 konkamain_gain_table[KONKAMAIN_GAIN_TABLE_SIZE] = {
-	1024,
-	1040,
-	1056,
-	1072,
-	1088,
-	1104,
-	1120,
-	1136,
-	1152,
-	1168,
-	1184,
-	1200,
-	1216,
-	1232,
-	1248,
-	1264,
-	1280,
-	1296,
-	1312,
-	1328,
-	1344,
-	1360,
-	1376,
-	1392,
-	1408,
-	1424,
-	1440,
-	1456,
-	1472,
-	1488,
-	1504,
-	1520,
-	1536,
-	1552,
-	1568,
-	1584,
-	1600,
-	1616,
-	1632,
-	1648,
-	1664,
-	1680,
-	1696,
-	1712,
-	1728,
-	1744,
-	1760,
-	1776,
-	1792,
-	1808,
-	1824,
-	1840,
-	1856,
-	1872,
-	1888,
-	1904,
-	1920,
-	1936,
-	1952,
-	1968,
-	1984,
-	2000,
-	2016,
-	2032,
-	2048,
-	2064,
-	2080,
-	2096,
-	2112,
-	2128,
-	2144,
-	2160,
-	2176,
-	2192,
-	2208,
-	2224,
-	2240,
-	2256,
-	2272,
-	2288,
-	2304,
-	2320,
-	2336,
-	2352,
-	2368,
-	2384,
-	2400,
-	2416,
-	2432,
-	2448,
-	2464,
-	2480,
-	2496,
-	2512,
-	2528,
-	2544,
-	2560,
-	2576,
-	2592,
-	2608,
-	2624,
-	2640,
-	2656,
-	2672,
-	2688,
-	2704,
-	2720,
-	2736,
-	2752,
-	2768,
-	2784,
-	2800,
-	2816,
-	2832,
-	2848,
-	2864,
-	2880,
-	2896,
-	2912,
-	2928,
-	2944,
-	2960,
-	2976,
-	2992,
-	3008,
-	3024,
-	3040,
-	3056,
-	3072,
-	3088,
-	3104,
-	3120,
-	3136,
-	3152,
-	3168,
-	3184,
-	3200,
-	3216,
-	3232,
-	3248,
-	3264,
-	3280,
-	3296,
-	3312,
-	3328,
-	3344,
-	3360,
-	3376,
-	3392,
-	3408,
-	3424,
-	3440,
-	3456,
-	3472,
-	3488,
-	3504,
-	3520,
-	3536,
-	3552,
-	3568,
-	3584,
-	3600,
-	3616,
-	3632,
-	3648,
-	3664,
-	3680,
-	3696,
-	3712,
-	3728,
-	3744,
-	3760,
-	3776,
-	3792,
-	3808,
-	3824,
-	3840,
-	3856,
-	3872,
-	3888,
-	3904,
-	3920,
-	3936,
-	3952,
-	3968,
-	3984,
-	4000,
-	4016,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4160,
-	4176,
-	4192,
-	4208,
-	4224,
-	4240,
-	4256,
-	4272,
-	4288,
-	4304,
-	4320,
-	4336,
-	4368,
-	4384,
-	4400,
-	4416,
-	4432,
-	4448,
-	4480,
-	4496,
-	4512,
-	4528,
-	4544,
-	4576,
-	4592,
-	4608,
-	4624,
-	4656,
-	4672,
-	4688,
-	4720,
-	4736,
-	4752,
-	4784,
-	4800,
-	4832,
-	4848,
-	4864,
-	4896,
-	4912,
-	4944,
-	4960,
-	4992,
-	5008,
-	5040,
-	5088,
-	5104,
-	5136,
-	5152,
-	5184,
-	5216,
-	5232,
-	5264,
-	5280,
-	5312,
-	5344,
-	5376,
-	5392,
-	5424,
-	5456,
-	5488,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6096,
-	6128,
-	6160,
-	6192,
-	6240,
-	6272,
-	6304,
-	6352,
-	6384,
-	6432,
-	6464,
-	6512,
-	6544,
-	6592,
-	6624,
-	6672,
-	6720,
-	6752,
-	6800,
-	6848,
-	6896,
-	6944,
-	6976,
-	7024,
-	7072,
-	7120,
-	7168,
-	7216,
-	7280,
-	7328,
-	7376,
-	7424,
-	7488,
-	7536,
-	7584,
-	7648,
-	7696,
-	7760,
-	7824,
-	7872,
-	7936,
-	8000,
-	8064,
-	8128,
-	8192,
-	8256,
-	8320,
-	8384,
-	8448,
-	8512,
-	8592,
-	8656,
-	8736,
-	8800,
-	8880,
-	8960,
-	9024,
-	9104,
-	9184,
-	9264,
-	9360,
-	9440,
-	9520,
-	9616,
-	9696,
-	9792,
-	9888,
-	9984,
-	10080,
-	10176,
-	10272,
-	10368,
-	10480,
-	10576,
-	10688,
-	10800,
-	10912,
-	11024,
-	11152,
-	11264,
-	11392,
-	11520,
-	11648,
-	11776,
-	11904,
-	12048,
-	12192,
-	12336,
-	12480,
-	12624,
-	12784,
-	12944,
-	13104,
-	13264,
-	13440,
-	13616,
-	13792,
-	13968,
-	14160,
-	14352,
-	14560,
-	14768,
-	14976,
-	15184,
-	15408,
-	15648,
-	15872,
-	16128,
-	16384,
-	16640,
-	16912,
-	17184,
-	17472,
-	17760,
-	18064,
-	18384,
-	18720,
-	19056,
-	19408,
-	19776,
-	20160,
-	20560,
-	20960,
-	21392,
-	21840,
-	22304,
-	22784,
-	23296,
-	23824,
-	24384,
-	24960,
-	25568,
-	26208,
-	26880,
-	27584,
-	28336,
-	29120,
-	29952,
-	30832,
-	31760,
-	32768,
-	33824,
-	34944,
-	36144,
-	37440,
-	38832,
-	40320,
-	41936,
-	43680,
-	45584,
-	47648,
-	49920,
-	52416,
-	55184,
-	58240,
-	61680,
-	65536,
-};
-
-static kal_uint16 konkamain_gain_reg[KONKAMAIN_GAIN_TABLE_SIZE] = {
-	0,
-	240,
-	496,
-	720,
-	944,
-	1168,
-	1392,
-	1616,
-	1808,
-	2000,
-	2192,
-	2384,
-	2576,
-	2768,
-	2928,
-	3088,
-	3280,
-	3408,
-	3568,
-	3728,
-	3888,
-	4048,
-	4176,
-	4304,
-	4464,
-	4592,
-	4720,
-	4848,
-	4976,
-	5104,
-	5200,
-	5328,
-	5456,
-	5552,
-	5680,
-	5776,
-	5872,
-	6000,
-	6096,
-	6192,
-	6288,
-	6384,
-	6480,
-	6576,
-	6672,
-	6736,
-	6832,
-	6928,
-	7024,
-	7088,
-	7184,
-	7248,
-	7344,
-	7408,
-	7472,
-	7568,
-	7632,
-	7696,
-	7760,
-	7856,
-	7920,
-	7984,
-	8048,
-	8112,
-	8192,
-	8240,
-	8304,
-	8368,
-	8432,
-	8496,
-	8544,
-	8608,
-	8672,
-	8720,
-	8784,
-	8832,
-	8880,
-	8944,
-	8992,
-	9040,
-	9088,
-	9152,
-	9200,
-	9248,
-	9296,
-	9344,
-	9392,
-	9440,
-	9472,
-	9520,
-	9568,
-	9616,
-	9648,
-	9696,
-	9744,
-	9776,
-	9824,
-	9856,
-	9904,
-	9936,
-	9984,
-	10016,
-	10064,
-	10096,
-	10128,
-	10176,
-	10208,
-	10240,
-	10272,
-	10320,
-	10352,
-	10384,
-	10416,
-	10448,
-	10480,
-	10512,
-	10544,
-	10576,
-	10608,
-	10640,
-	10672,
-	10704,
-	10736,
-	10768,
-	10800,
-	10832,
-	10864,
-	10880,
-	10912,
-	10944,
-	10976,
-	10992,
-	11024,
-	11056,
-	11072,
-	11104,
-	11136,
-	11152,
-	11184,
-	11216,
-	11232,
-	11264,
-	11280,
-	11312,
-	11328,
-	11360,
-	11376,
-	11408,
-	11424,
-	11456,
-	11472,
-	11504,
-	11520,
-	11536,
-	11568,
-	11584,
-	11616,
-	11632,
-	11648,
-	11680,
-	11696,
-	11712,
-	11744,
-	11760,
-	11776,
-	11792,
-	11824,
-	11840,
-	11856,
-	11872,
-	11888,
-	11920,
-	11936,
-	11952,
-	11968,
-	11984,
-	12000,
-	12032,
-	12048,
-	12064,
-	12080,
-	12096,
-	12128,
-	12144,
-	12160,
-	12176,
-	12192,
-	12208,
-	12224,
-	12240,
-	12256,
-	12272,
-	12288,
-	12304,
-	12320,
-	12336,
-	12352,
-	12368,
-	12384,
-	12400,
-	12416,
-	12432,
-	12448,
-	12464,
-	12480,
-	12496,
-	12512,
-	12528,
-	12544,
-	12560,
-	12576,
-	12592,
-	12608,
-	12624,
-	12640,
-	12656,
-	12672,
-	12688,
-	12704,
-	12720,
-	12736,
-	12752,
-	12768,
-	12784,
-	12800,
-	12816,
-	12832,
-	12848,
-	12864,
-	12880,
-	12896,
-	12912,
-	12928,
-	12944,
-	12960,
-	12976,
-	12992,
-	13008,
-	13024,
-	13040,
-	13056,
-	13088,
-	13104,
-	13120,
-	13136,
-	13152,
-	13168,
-	13184,
-	13200,
-	13216,
-	13232,
-	13248,
-	13264,
-	13280,
-	13296,
-	13312,
-	13328,
-	13344,
-	13360,
-	13376,
-	13392,
-	13408,
-	13424,
-	13440,
-	13456,
-	13472,
-	13488,
-	13504,
-	13520,
-	13536,
-	13552,
-	13568,
-	13584,
-	13600,
-	13616,
-	13632,
-	13648,
-	13664,
-	13680,
-	13696,
-	13712,
-	13728,
-	13744,
-	13760,
-	13776,
-	13792,
-	13808,
-	13824,
-	13840,
-	13856,
-	13872,
-	13888,
-	13904,
-	13920,
-	13936,
-	13952,
-	13968,
-	13984,
-	14000,
-	14016,
-	14032,
-	14048,
-	14064,
-	14080,
-	14096,
-	14112,
-	14128,
-	14144,
-	14160,
-	14176,
-	14192,
-	14208,
-	14224,
-	14240,
-	14256,
-	14272,
-	14288,
-	14304,
-	14320,
-	14336,
-	14352,
-	14368,
-	14384,
-	14400,
-	14416,
-	14432,
-	14448,
-	14464,
-	14480,
-	14496,
-	14512,
-	14528,
-	14544,
-	14560,
-	14576,
-	14592,
-	14608,
-	14624,
-	14640,
-	14656,
-	14672,
-	14688,
-	14704,
-	14720,
-	14736,
-	14752,
-	14768,
-	14784,
-	14800,
-	14816,
-	14832,
-	14848,
-	14864,
-	14880,
-	14896,
-	14912,
-	14928,
-	14944,
-	14960,
-	14976,
-	14992,
-	15008,
-	15024,
-	15040,
-	15056,
-	15072,
-	15088,
-	15104,
-	15120,
-	15136,
-	15152,
-	15168,
-	15184,
-	15200,
-	15216,
-	15232,
-	15248,
-	15264,
-	15280,
-	15296,
-	15312,
-	15328,
-	15344,
-	15360,
-	15376,
-	15392,
-	15408,
-	15424,
-	15440,
-	15456,
-	15472,
-	15488,
-	15504,
-	15520,
-	15536,
-	15552,
-	15568,
-	15584,
-	15600,
-	15616,
-	15632,
-	15648,
-	15664,
-	15680,
-	15696,
-	15712,
-	15728,
-	15744,
-	15760,
-	15776,
-	15792,
-	15808,
-	15824,
-	15840,
-	15856,
-	15872,
-	15888,
-	15904,
-	15920,
-	15936,
-	15952,
-	15968,
-	15984,
-	16000,
-	16016,
-	16032,
-	16048,
-	16064,
-	16080,
-	16096,
-	16112,
-	16128,
-};
-
-#endif /* __KONKAMAIN_ANA_GAIN_TABLE_H__ */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamainmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamainmipiraw_Sensor.c
deleted file mode 100755
index a37fa604..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamainmipiraw_Sensor.c
+++ /dev/null
@@ -1,3223 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkamainmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "konkamainmipiraw_Sensor.h"
-
-#define KONKAMAIN_EEPROM_READ_ID	0xA0
-#define KONKAMAIN_EEPROM_WRITE_ID	0xA1
-#define KONKAMAIN_MAX_OFFSET		0x8000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "konkamain_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x8000
-#define OTP_QSC_VALID_ADDR 0x2A30
-#define OTP_PDC_VALID_ADDR 0x7DA0
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x1832
-#define OTP_QCOM_PDAF_OFFSET_DATA_LENGTH 0x650
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x5E4
-#define OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR 0x39b0
-#define GET_SENSOR_ID_RETRY_CNT    5
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-static kal_uint8 otp_qcom_pdaf_offset_data[OTP_QCOM_PDAF_OFFSET_DATA_LENGTH] = {0};
-static void set_sensor_cali(void *arg);
-static int get_sensor_temperature(void *arg);
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int konkamain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkamain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkamain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkamain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkamain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkamain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkamain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int konkamain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void get_sensor_cali(void *arg);
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int konkamain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static int konkamain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-/* STRUCT */
-
-static struct eeprom_map_info konkamain_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C1, 0x00C2, 17, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x009A, 0x009B, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0010, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x2B00, 0x3199, 0x319A, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x31C0, 0x3859, 0x385A, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0x6400, 0x0000, 0x0000, CALI_DATA_MASTER_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, konkamain_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, konkamain_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, konkamain_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, konkamain_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, konkamain_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, konkamain_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, konkamain_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, konkamain_set_awb_gain},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, konkamain_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_OFFSET_DATA, konkamain_get_otp_qcom_pdaf_offset_data},
-};
-
-static u32 konkamain_dcg_ratio_table_ratio4[] = {4000};
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_10bit = {
-	.gain_ratio = 1000,
-	.OB_pedestal = 64,
-	.saturation_level = 1023,
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_12bit = {
-	.gain_ratio = 4000,
-	.OB_pedestal = 64,
-	.saturation_level = 3900,
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x015E012C,/* cal_layout_table */
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA0,
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0C00,
-		.addr_qsc = 0x1E30,/* QSC_EEPROM_ADDR */
-		.sensor_reg_addr_qsc = 0xC000, /*QSC_OTP_ADDR*/
-
-		.pdc_support = TRUE,
-		.pdc_size = 0x180,
-		.addr_pdc = 0x7C20,
-		.sensor_reg_addr_pdc = 0xD200,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1120, 840}, {0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x4,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 4,
-		.i4BinFacY = 2,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_partial_pd_info = {
-	.i4OffsetX = 16,
-	.i4OffsetY = 32,
-	.i4PitchX = 8,
-	.i4PitchY = 16,
-	.i4PairNum = 4,
-	.i4SubBlkW = 8,
-	.i4SubBlkH = 4,
-	.i4PosL = {{16, 35}, {20, 37}, {19, 42}, {23, 44}},
-	.i4PosR = {{18, 33}, {22, 39}, {17, 40}, {21, 46}},
-	.i4BlockNumX = 496,
-	.i4BlockNumY = 144,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4ModeIndex = 0,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	/* VC's PD pattern description */
-	.sPDMapInfo[0] = {
-		.i4VCFeature = VC_PDAF_STATS_NE_PIX_1,
-		.i4PDPattern = 3,
-		.i4PDRepetition = 4,
-		.i4PDOrder = {1, 0, 0, 1}, /*R = 1, L = 0*/
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2c,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 0x480,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 2,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 2,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 0x480,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1856,
-			.vsize = 1392,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 1856,
-			.vsize = 348,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus12[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus13[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus14[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus15[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus16[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 1152,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus17[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus18[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 2,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus19[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 2,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{/* Reg_B4-S4 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = konkamain_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkamain_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkamain_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9696,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2262860000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-	},
-	{/* Reg_B-1_QBIN(VBIN)_4096x3072_30fps */
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = konkamain_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_capture_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = konkamain_seamless_capture,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkamain_seamless_capture),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9696,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1411200000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/*Reg_B7-S5_4096x2304_30FPS**/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = konkamain_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9696,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1707430000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/* Reg_G-1_4096x2304_60FPS */
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = konkamain_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9696,
-		.framelength = 3772,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1941940000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-	},
-	{   /* G7-S3 4096x2304 @60FPS QBIN DCG-HDR RAW12 w/ Partial-PD VB_max*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = konkamain_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 12800,
-		.framelength = 2856,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1381710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -447,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_R,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_HCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = konkamain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(konkamain_dcg_ratio_table_ratio4),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-	},
-	{/* Reg_H-1  QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = konkamain_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1608000000,
-		.linelength = 5488,
-		.framelength = 1216,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 1008000000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = 2469,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/* Reg_B-2 QBIN(VBIN)_4096x3072 24FPS */
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = konkamain_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom2_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = konkamain_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkamain_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9696,
-		.framelength = 9431,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1374170000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.csi_param = {
-			.cphy_settle = 56,
-		},
-		.dpc_enabled = true,
-	},
-	{/* Reg_A-1 8192x6144_30FPS remosaic*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = konkamain_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkamain_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkamain_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 11344,
-		.framelength = 6451,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2262860000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/* Reg-L1-S4 QBIN(VBIN) 4096x3072_2-exp LBMF 30FPS with PDAF VB_max */
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = konkamain_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkamain_seamless_custom4,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkamain_seamless_custom4),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 9696,
-		.framelength = 3772*2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2262860000,
-		.readout_length = 3092,
-		.read_margin = 36*2,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{/* Reg-F3-S2 QRMSC_4096x3072_30FPS for insensor zoom--bayer*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = konkamain_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom5_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = konkamain_seamless_custom5,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkamain_seamless_custom5),
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 11344,
-		.framelength = 6451,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1411200000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.csi_param = {},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.awb_enabled = true,
-	},
-	{/*Reg H-3_QBIN-V2H2 FHD 2048x1152_480FPS */
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = konkamain_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom6_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 3744,
-		.framelength = 1216,
-		.max_framerate = 4800,
-		.mipi_pixel_rate = 1695090000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = 1717,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/*L2-S4 4096x3072 @30FPS Izoom 2exp-LBMF Qbayer w/ PDAF  VB_max seamless reg_A-1*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = konkamain_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom7_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkamain_seamless_custom7,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkamain_seamless_custom7),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 11344,
-		.framelength = 3225*2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2262860000,
-		.readout_length = 3132,
-		.read_margin = 36*2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.awb_enabled = true,
-	},
-	{/*Reg_B5-S2 4096x3072 @60FPS QBIN(VBIN) with PDAF VB_max*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = konkamain_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9696,
-		.framelength = 3772,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1374170000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.csi_param = {
-			.cphy_settle = 56,
-		},
-		.dpc_enabled = true,
-	},
-	{/*G2-S3 4096x2304 30FPS DCG AP Merge*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = konkamain_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 16272,
-		.framelength = 4494,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1707430000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -352,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = konkamain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(konkamain_dcg_ratio_table_ratio4),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{/* Reg_G3-S2 4096x2304 @60FPS QBIN DCG-HDR RAW10 w/ Partial-PD VB_max*/
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = konkamain_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom10_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 12800,
-		.framelength = 2856,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1941940000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -447,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = konkamain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(konkamain_dcg_ratio_table_ratio4),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{   /*B20-S7 1856x1392 @30.1FPS QBIN(VBIN) Tline= 17.66us (RST= 24 ms)*/
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = konkamain_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1098000000,
-		.linelength = 19392,
-		.framelength = 1880,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 676800000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1680,
-			.w0_size = 8192,
-			.h0_size = 2784,
-			.scale_w = 4096,
-			.scale_h = 1392,
-			.x1_offset = 1120,
-			.y1_offset = 0,
-			.w1_size = 1856,
-			.h1_size = 1392,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1856,
-			.h2_tg_size = 1392,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -295,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/* F9-S4 8192x6144 @30FPS Full-RAW w/ PD VB_max seamless reg_B4-S4 */
-		.frame_desc = frame_desc_cus12,
-		.num_entries = ARRAY_SIZE(frame_desc_cus12),
-		.mode_setting_table = konkamain_custom12_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom12_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkamain_seamless_custom12,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkamain_seamless_custom12),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 11344,
-		.framelength = 6451,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2262860000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.awb_enabled = true,
-	},
-	{   /* Reg_F-2-S1 QRMSC_4096x3072_24FPS--qbayer with 100%PDAF VB_max seamless Reg_B-2 */
-		.frame_desc = frame_desc_cus13,
-		.num_entries = ARRAY_SIZE(frame_desc_cus13),
-		.mode_setting_table = konkamain_custom13_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom13_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 11344,
-		.framelength = 8064,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1374170000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.awb_enabled = true,
-	},
-	{/* Reg_V3  2048x1536 @30FPS QBIN(VBIN)-V2H2 VB_max*/
-		.frame_desc = frame_desc_cus14,
-		.num_entries = ARRAY_SIZE(frame_desc_cus14),
-		.mode_setting_table = konkamain_custom14_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom14_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5488,
-		.framelength = 13332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1411200000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = 2469,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/* Reg_V4 2048x1536 @15FPS QBIN(VBIN)-V2H2 w/ PD*/
-		.frame_desc = frame_desc_cus15,
-		.num_entries = ARRAY_SIZE(frame_desc_cus15),
-		.mode_setting_table = konkamain_custom15_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom15_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5488,
-		.framelength = 26664,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1411200000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = 2469,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/* reg_B8 4096x2304 @120FPS QBIN Partial-PD VB_max*/
-		.frame_desc = frame_desc_cus16,
-		.num_entries = ARRAY_SIZE(frame_desc_cus16),
-		.mode_setting_table = konkamain_custom16_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom16_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1806000000,
-		.linelength = 6304,
-		.framelength = 2380,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 1592230000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -908,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-		.dpc_enabled = true,
-	},
-	{/* G6-S3 4096x3072 30FPS DCG AP Merge */
-		.frame_desc = frame_desc_cus17,
-		.num_entries = ARRAY_SIZE(frame_desc_cus17),
-		.mode_setting_table = konkamain_custom17_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom17_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 16272,
-		.framelength = 4494,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1658060000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -352,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = konkamain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(konkamain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/*B-2-1 Izoom 2exp-LBMF 4096x3072 @24FPS w/ PDAF  VB_max RST=13.56ms~15.88ms (seamless  B-2)*/
-		.frame_desc = frame_desc_cus18,
-		.num_entries = ARRAY_SIZE(frame_desc_cus18),
-		.mode_setting_table = konkamain_custom18_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom18_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = konkamain_seamless_custom18,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkamain_seamless_custom18),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 11344,
-		.framelength = 4032*2,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1374170000,
-		.readout_length = 3132,
-		.read_margin = 36*2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.csi_param = {
-			.cphy_settle = 56,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.awb_enabled = true,
-	},
-	{/*B-2-2 QBIN(VBIN) 2exp-LBMF 4096x3072 @24FPS w/ PDAF  VB_max RST=13.56m~15.88ms (seamless reg_B-2)*/
-		.frame_desc = frame_desc_cus19,
-		.num_entries = ARRAY_SIZE(frame_desc_cus19),
-		.mode_setting_table = konkamain_custom19_setting,
-		.mode_setting_len = ARRAY_SIZE(konkamain_custom19_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = konkamain_seamless_custom19,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkamain_seamless_custom19),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 9696,
-		.framelength = 4716*2,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1374170000,
-		.readout_length = 3092,
-		.read_margin = 36*2,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.csi_param = {
-			.cphy_settle = 56,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KONKAMAIN_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},
-	.i2c_addr_table = {0x34, 0x35, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_R,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = konkamain_ana_gain_table,
-	.ana_gain_table_size = sizeof(konkamain_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 6,
-	.exposure_max = 128*(65532 - 48), /* exposure reg is limited to 4x. max = max - margin */
-	.exposure_step = 2,
-	.exposure_margin = 48,
-
-	.frame_length_max = 0xfffc,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1761400,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_DCG|HDR_SUPPORT_LBMF,
-	.seamless_switch_support = TRUE,
-	.seamless_switch_type = SEAMLESS_SWITCH_CUT_VB_INIT_SHUT,
-	.seamless_switch_hw_re_init_time_ns = 0,
-	.seamless_switch_prsh_hw_fixed_value = 32,
-	.seamless_switch_prsh_length_lc = 0,
-	.reg_addr_prsh_length_lines = {0x3058, 0x3059, 0x305A, 0x305B},
-	.reg_addr_prsh_mode = 0x3056,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0202, 0x0203}, /* COARSE_INTEG_TIME */
-			{0x0000, 0x0000}, /*not support*/
-			{0x0224, 0x0225}, /* ST_COARSE_INTEG_TIME */
-	},
-	.reg_addr_exposure_in_lut = {
-			{0x0E20, 0x0E21}, /* LUT_A_COARSE_INTEG_TIME */
-			{0x0E60, 0x0E61}, /* LUT_B_COARSE_INTEG_TIME */
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3160,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, /* ANA_GAIN_GLOBAL */
-			{0x0000, 0x0000}, /*not support*/
-			{0x0216, 0x0217}, /* ST_ANA_GAIN_GLOBAL */
-	},
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E22, 0x0E23}, /* LUT_A_ANA_GAIN_GLOBAL */
-			{0x0E62, 0x0E63}, /* LUT_B_ANA_GAIN_GLOBAL */
-	},
-	.reg_addr_dig_gain = {
-			{0x020E, 0x020F}, /* DIG_GAIN_GLOBAL */
-			{0x0000, 0x0000}, /*not support*/
-			{0x0218, 0x0219}, /* ST_DIG_GAIN_GLOBAL */
-	},
-	.reg_addr_dig_gain_in_lut = {
-			{0x0E24, 0x0E25}, /* LUT_A_DIG_GAIN_GLOBAL */
-			{0x0E64, 0x0E65}, /* LUT_B_DIG_GAIN_GLOBAL */
-	},
-	.reg_addr_dcg_ratio = 0x3182, /* DCGHDR_RATIO */
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E28, 0x0E29},  /* LUT_A_FRM_LENGTH_LINES */
-			{0x0E68, 0x0E69},  /*LUT_B_FRM_LENGTH_LINES*/
-	},
-	.reg_addr_temp_en = 0x0138, /* TEMP_SEN_CTL */
-	.reg_addr_temp_read = 0x013A, /* TEMP_SEN_OUT */
-	.reg_addr_auto_extend = 0x0350, /* FRM_LENGTH_CTL */
-	.reg_addr_frame_count = 0x0005, /* FRM_CNT */
-	.reg_addr_fast_mode = 0x3010, /* FAST_MODETRANSIT_CTL */
-	.reg_addr_fast_mode_in_lbmf = 0x31A7, /*EAEB_LUT_CONTROL */
-
-	.init_setting_table = konkamain_init_setting,
-	.init_setting_len = ARRAY_SIZE(konkamain_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xf10e5980,
-
-	.oplus_notify_chg_flag = false,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_AVDD, {2804000, 2804000}, 3000},
-	{HW_ID_AVDD1, {1804000, 1804000}, 3000},
-	{HW_ID_AFVDD, {3000000, 3000000}, 3000},
-	{HW_ID_DVDD, {1160000, 1160000}, 4000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 3000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry konkamain_mipi_raw_entry = {
-	.name = "konkamain_mipi_raw",
-	.id = KONKAMAIN_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static unsigned int read_konkamain_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != konkamain_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != konkamain_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = konkamain_eeprom_info[meta_id].start;
-	readsize = konkamain_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA0,
-	.i2c_write_id = 0xA1,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 addr_sensorver = 0x0018;
-	struct oplus_eeprom_info_struct* infoPtr;
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-	if (subdrv_i2c_rd_u8(ctx, addr_sensorver) != 0x00) {
-		printk("need to convert to 10bit");
-		infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 4) | (infoPtr->afInfo[0] >> 4));
-		infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 4);
-		infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 4) | (infoPtr->afInfo[2] >> 4));
-		infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 4);
-		infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 4) | (infoPtr->afInfo[4] >> 4));
-		infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 4);
-	}
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, KONKAMAIN_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static int konkamain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int konkamain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR, otp_qcom_pdaf_offset_data, OTP_QCOM_PDAF_OFFSET_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_offset_data, sizeof(otp_qcom_pdaf_offset_data));
-	*len = sizeof(otp_qcom_pdaf_offset_data);
-
-	return 0;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH	 (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-	ret = adaptor_i2c_wr_p8(ctx->i2c_client, KONKAMAIN_EEPROM_WRITE_ID >> 1,
-			addr, para, len);
-
-	return ret;
-}
-
-
-static kal_int32 write_1st_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xff35;
-	u8 flag = 0;
-
-	adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | KONKAMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-
-	reg = 0x06ca;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | KONKAMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x2);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | KONKAMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-	}
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, KONKAMAIN_EEPROM_WRITE_ID >> 1, reg, &flag);
-	LOG_INF("SET_SENSOR_OTP WRP: 0x%x\n", flag);
-
-	return ret;
-}
-
-static kal_int32 write_2nd_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xa000;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, KONKAMAIN_EEPROM_WRITE_ID >> 1, reg, 0x0E);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, KONKAMAIN_EEPROM_WRITE_ID >> 1, reg, 0x00);
-	}
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	u8 flag = 0;
-	int ret = 0;
-	adaptor_i2c_rd_u8(ctx->i2c_client, KONKAMAIN_EEPROM_READ_ID >> 1, 0x000D, &flag);
-	if (flag == 0x01) {
-		ret = write_1st_eeprom_protect(ctx, enable);
-	} else {
-		ret = write_2nd_eeprom_protect(ctx, enable);
-	}
-	return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-	ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-	kal_int32  ret = ERROR_NONE;
-	kal_uint16 data_base, data_length;
-	kal_uint32 idx, idy;
-	kal_uint8 *pData;
-	kal_uint32 checksum = 0;
-	UINT32 i = 0;
-	kal_uint16 offset = 0;
-	if(pStereodata != NULL) {
-		LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-			pStereodata->uSensorId,
-			pStereodata->uDeviceId,
-			pStereodata->baseAddr,
-			pStereodata->dataLength);
-
-		data_base = pStereodata->baseAddr;
-		data_length = pStereodata->dataLength;
-		pData = pStereodata->uData;
-		for(i = 0; i < pStereodata->dataLength; i++) {
-			checksum += pData[i];
-		}
-		pData[data_length] = 0x01;
-		pData[data_length + 1] = checksum % 255;
-		data_length = data_length + 2;
-		offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-		if (offset > data_length) {
-			offset = data_length;
-		}
-		if (((pStereodata->uSensorId == KONKAMAIN_SENSOR_ID) && ((data_length - 2) == CALI_DATA_MASTER_LENGTH))
-				&& (data_base == KONKAMAIN_STEREO_START_ADDR || data_base == KONKAMAIN_STEREO_MT_START_ADDR
-				|| data_base == KONKAMAIN_STEREO_MT_105CM_START_ADDR)) {
-			LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-			LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-			LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-			LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-			LOG_INF("write_Module_data Write end\n");
-		} else if ((pStereodata->uSensorId == KONKAMAIN_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-				&& (data_base == KONKAMAIN_AESYNC_START_ADDR)) {
-			LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-				pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-				read_cmos_eeprom_8(ctx, KONKAMAIN_AESYNC_START_ADDR),
-				read_cmos_eeprom_8(ctx, KONKAMAIN_AESYNC_START_ADDR+1),
-				read_cmos_eeprom_8(ctx, KONKAMAIN_AESYNC_START_ADDR+2),
-				read_cmos_eeprom_8(ctx, KONKAMAIN_AESYNC_START_ADDR+3),
-				read_cmos_eeprom_8(ctx, KONKAMAIN_AESYNC_START_ADDR+4),
-				read_cmos_eeprom_8(ctx, KONKAMAIN_AESYNC_START_ADDR+5),
-				read_cmos_eeprom_8(ctx, KONKAMAIN_AESYNC_START_ADDR+6),
-				read_cmos_eeprom_8(ctx, KONKAMAIN_AESYNC_START_ADDR+7));
-			LOG_INF("AESync write_Module_data Write end\n");
-		} else {
-			LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-			return -1;
-		}
-	} else {
-		LOG_INF("konkamain write_Module_data pStereodata is null\n");
-		return -1;
-	}
-	return ret;
-}
-
-static int konkamain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	int ret = ERROR_NONE;
-	ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-	if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-		LOG_INF("ret=%d\n", ret);
-	}
-	return 0;
-}
-
-static int konkamain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_MASTER_LENGTH)
-		*len = CALI_DATA_MASTER_LENGTH;
-	LOG_INF("feature_data mode: %d", *feature_data_16);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_konkamain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_konkamain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MW_MAIN:
-	default:
-		read_konkamain_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	}
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KONKAMAIN_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "konkamain read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "konkamain read_otp_info end\n");
-}
-
-static int konkamain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int konkamain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = GET_SENSOR_ID_RETRY_CNT;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x9186) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = GET_SENSOR_ID_RETRY_CNT;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 konkamain_feedback_awbgain[] = {
-	0x0B8E, 0x01,
-	0x0B8F, 0x00,
-	0x0B90, 0x02,
-	0x0B91, 0x28,
-	0x0B92, 0x01,
-	0x0B93, 0x77,
-	0x0B94, 0x01,
-	0x0B95, 0x00,
-};
-
-/*write AWB gain to sensor*/
-static void feedback_awbgain(struct subdrv_ctx *ctx, kal_uint32 r_gain, kal_uint32 b_gain)
-{
-	UINT32 r_gain_int = 0;
-	UINT32 b_gain_int = 0;
-
-	DRV_LOG(ctx, "feedback_awbgain r_gain: %d, b_gain: %d\n", r_gain, b_gain);
-	r_gain_int = r_gain / 512;
-	b_gain_int = b_gain / 512;
-	konkamain_feedback_awbgain[5] = r_gain_int;
-	konkamain_feedback_awbgain[7] = (r_gain - r_gain_int * 512) / 2;
-	konkamain_feedback_awbgain[9] = b_gain_int;
-	konkamain_feedback_awbgain[11] = (b_gain - b_gain_int * 512) / 2;
-	subdrv_i2c_wr_regs_u8(ctx, konkamain_feedback_awbgain,
-		ARRAY_SIZE(konkamain_feedback_awbgain));
-}
-
-static int konkamain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-	feedback_awbgain(ctx, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B);
-	return 0;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	sensor_init(ctx);
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_u8(ctx, 0x0101, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x0B06, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0xDDA9, 0x4E);
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x01);
-			DRV_LOG(ctx, "set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x00);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0xD200;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0xD300;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x55)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 85;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (16384 - (16384 * BASEGAIN) / gain);
-}
-
-void konkamain_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-		case HDR_NONE:
-		case HDR_RAW_LBMF:
-		case HDR_RAW_DCG_RAW:
-			if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-				ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min) {
-				*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-				*min_shutter = ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min;
-			} else {
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-			}
-			break;
-		default:
-			*exposure_step = ctx->s_ctx.exposure_step;
-			*min_shutter = ctx->s_ctx.exposure_min;
-			break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int konkamain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	konkamain_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static int konkamain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-
-	update_mode_info(ctx, scenario_id);
-
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-		calculate_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id);
-	}
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 24) & 0x07);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[3],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int konkamain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-	DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	if (mode) {
-	/* 1:Solid Color 2:Color Bar 5:Black */
-		switch (mode) {
-		case 5:
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x01);
-			break;
-		default:
-			subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-			break;
-		}
-	} else if (ctx->test_pattern) {
-		subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /*No pattern*/
-	}
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id)
-{
-	u32 ae_ctrl_cit;
-	u32 prsh_length_lc = 0;
-	u32 cit_step = 1;
-	u8 hw_fixed_value = ctx->s_ctx.seamless_switch_prsh_hw_fixed_value;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = ctx->current_scenario_id;
-	enum IMGSENSOR_HDR_MODE_ENUM hdr_mode;
-
-	if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM7) {
-		prsh_length_lc = 2000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM7 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM18) {
-		prsh_length_lc = 5000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM18 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 6000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM19) {
-		prsh_length_lc = 6000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM19 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 5000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 4400;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2265;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM12) {
-		prsh_length_lc = 2000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM12 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM3) {
-		prsh_length_lc = 3600;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM3 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_CAPTURE && scenario_id == SENSOR_SCENARIO_ID_CUSTOM5) {
-		prsh_length_lc = 3600;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM5 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_CAPTURE) {
-		prsh_length_lc = 3700;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM7) {
-		prsh_length_lc = 3600;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM7 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else {
-		prsh_length_lc = 0;
-	}
-
-	hdr_mode = ctx->s_ctx.mode[scenario_id].hdr_mode;
-	switch (hdr_mode) {
-	case HDR_RAW_LBMF:
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: dig_gain_lut_a = SE / dig_gain_lut_b = LE */
-			/* 3exp: dig_gain_lut_a = SE / dig_gain_lut_b = ME / dig_gain_lut_c = LE */
-			ae_ctrl_cit = ae_ctrl->exposure.me_exposure;
-			DRV_LOG_MUST(ctx, "debug se %llu le %llu, me %llu", ae_ctrl->exposure.se_exposure, ae_ctrl->exposure.le_exposure, ae_ctrl->exposure.me_exposure);
-		} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: dig_gain_lut_a = LE / dig_gain_lut_b = SE */
-			/* 3exp: dig_gain_lut_a = LE / dig_gain_lut_b = ME / dig_gain_lut_c = SE */
-			ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-			DRV_LOG_MUST(ctx, "debug le\n");
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-		break;
-	case HDR_NONE:
-	case HDR_RAW:
-	case HDR_CAMSV:
-	case HDR_RAW_ZHDR:
-	case HDR_MultiCAMSV:
-	case HDR_RAW_STAGGER:
-	case HDR_RAW_DCG_RAW:
-	case HDR_RAW_DCG_COMPOSE:
-	default:
-		ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-		break;
-	}
-	ae_ctrl_cit = max(ae_ctrl_cit, ctx->s_ctx.exposure_min);
-	ae_ctrl_cit = min(ae_ctrl_cit, ctx->s_ctx.exposure_max);
-	cit_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step ?: 1;
-	if (cit_step) {
-		ae_ctrl_cit = round_up(ae_ctrl_cit, cit_step);
-		prsh_length_lc = round_up(prsh_length_lc, cit_step);
-	}
-	DRV_LOG_MUST(ctx, "prsh_length_lc %u ae_ctrl_cit %u fine_integ_line %d\n",
-					prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.mode[scenario_id].fine_integ_line);
-	if(hdr_mode != HDR_RAW_LBMF && ctx->s_ctx.mode[scenario_id].fine_integ_line != 0) {
-		ae_ctrl_cit = ae_ctrl_cit / 1000;
-	}
-	prsh_length_lc = (prsh_length_lc > (ae_ctrl_cit + hw_fixed_value)) ? prsh_length_lc : 0;
-	if (prsh_length_lc < (ae_ctrl_cit + hw_fixed_value)) {
-		DRV_LOG_MUST(ctx,
-			"pre-shutter no need: prsh_length_lc(%u) < (ae_ctrl_cit(%u(max=%u,min=%u)) + hw_fixed_value(%u))\n",
-			prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.exposure_max, ctx->s_ctx.exposure_min, hw_fixed_value);
-		ctx->s_ctx.seamless_switch_prsh_length_lc = 0;
-		return;
-	}
-
-	ctx->s_ctx.seamless_switch_prsh_length_lc = prsh_length_lc;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamainmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamainmipiraw_Sensor.h
deleted file mode 100755
index 71451991..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkamain_mipi_raw/konkamainmipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     konkamainmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KONKAMAINMIPI_SENSOR_H
-#define _KONKAMAINMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "konkamain_ana_gain_table.h"
-#include "konkamain_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#endif /* _KONKAMAINMIPI_SENSOR_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/Makefile
deleted file mode 100644
index 5c588923..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/konkatelemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatele_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatele_Sensor_setting.h
deleted file mode 100755
index d815d79e..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatele_Sensor_setting.h
+++ /dev/null
@@ -1,3701 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkatele_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KONKATELEMIPI_SENSOR_SETTING_H
-#define _KONKATELEMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 konkatele_init_setting[] = {
-	0x0136,	0x18,
-	0x0137,	0x00,
-	0x961C,	0x04,
-	0xF800,	0x18,
-	0xF801,	0x18,
-	0xF802,	0xC5,
-	0xF803,	0x26,
-	0xF804,	0x55,
-	0xF805,	0xC4,
-	0xF806,	0x3F,
-	0xF807,	0x00,
-	0xF808,	0x17,
-	0xF809,	0xFA,
-	0xF80A,	0x84,
-	0xF80B,	0xBE,
-	0xF80C,	0x55,
-	0xF80D,	0xC8,
-	0xF80E,	0x3F,
-	0xF80F,	0x00,
-	0xF810,	0x40,
-	0xF811,	0x80,
-	0xF812,	0x3A,
-	0xF813,	0xC4,
-	0xFA00,	0x23,
-	0xFA01,	0x23,
-	0xFA02,	0xC5,
-	0xFA03,	0x2B,
-	0xFA04,	0x55,
-	0xFA05,	0xC4,
-	0xFA06,	0x3F,
-	0xFA07,	0x00,
-	0xFA08,	0x17,
-	0xFA09,	0xFA,
-	0xFA0A,	0x84,
-	0xFA0B,	0xBE,
-	0xFA0C,	0x55,
-	0xFA0D,	0xC8,
-	0xFA0E,	0x3F,
-	0xFA0F,	0x00,
-	0xFA10,	0x40,
-	0xFA11,	0x80,
-	0xFA12,	0x3A,
-	0xFA13,	0xC4,
-	0xFC00,	0x4F,
-	0xFC01,	0x06,
-	0xFC02,	0xAC,
-	0xFC03,	0x27,
-	0xFC04,	0xAC,
-	0xFC05,	0x1D,
-	0xFC06,	0xAC,
-	0xFC07,	0x14,
-	0xFC08,	0xFA,
-	0xFC09,	0xE8,
-	0xFC0A,	0xEB,
-	0xFC0B,	0x2E,
-	0xFC0C,	0xD0,
-	0xFC0D,	0x20,
-	0xFC0E,	0x40,
-	0xFC0F,	0x4F,
-	0xFC10,	0x1E,
-	0xFC11,	0x05,
-	0xFC12,	0xD4,
-	0xFC13,	0x18,
-	0xFC14,	0x08,
-	0xFC15,	0x00,
-	0xFC16,	0xF6,
-	0xFC17,	0x40,
-	0xFC18,	0x06,
-	0xFC19,	0xB7,
-	0xFC1A,	0xBE,
-	0xFC1B,	0x06,
-	0xFC1C,	0xF0,
-	0xFC1D,	0x40,
-	0xFC1E,	0x06,
-	0xFC1F,	0xB8,
-	0xFC20,	0x29,
-	0xFC21,	0x25,
-	0xFC22,	0x90,
-	0xFC23,	0x2C,
-	0xFC24,	0x80,
-	0xFC25,	0x22,
-	0xFC26,	0xF6,
-	0xFC27,	0x41,
-	0xFC28,	0x05,
-	0xFC29,	0x1C,
-	0xFC2A,	0xB8,
-	0xFC2B,	0x8B,
-	0xFC2C,	0xD0,
-	0xFC2D,	0x18,
-	0xFC2E,	0x27,
-	0xFC2F,	0x6C,
-	0xFC30,	0xF0,
-	0xFC31,	0x02,
-	0xFC32,	0x02,
-	0xFC33,	0x74,
-	0xFC34,	0xF6,
-	0xFC35,	0x40,
-	0xFC36,	0x07,
-	0xFC37,	0x10,
-	0xFC38,	0x0F,
-	0xFC39,	0x20,
-	0xFC3A,	0xFA,
-	0xFC3B,	0xE8,
-	0xFC3C,	0x03,
-	0xFC3D,	0x8A,
-	0xFC3E,	0x80,
-	0xFC3F,	0x04,
-	0xFC40,	0x5F,
-	0xFC41,	0xF0,
-	0xFC42,	0x29,
-	0xFC43,	0x25,
-	0xFC44,	0x90,
-	0xFC45,	0x0A,
-	0xFC46,	0x50,
-	0xFC47,	0x31,
-	0xFC48,	0xFA,
-	0xFC49,	0xE8,
-	0xFC4A,	0x03,
-	0xFC4B,	0x7C,
-	0xFC4C,	0x80,
-	0xFC4D,	0x04,
-	0xFC4E,	0x09,
-	0xFC4F,	0x50,
-	0xFC50,	0xF4,
-	0xFC51,	0x40,
-	0xFC52,	0x06,
-	0xFC53,	0xBC,
-	0xFC54,	0x50,
-	0xFC55,	0xA1,
-	0xFC56,	0xFA,
-	0xFC57,	0xE8,
-	0xFC58,	0x03,
-	0xFC59,	0x6E,
-	0xFC5A,	0xFA,
-	0xFC5B,	0xE8,
-	0xFC5C,	0x02,
-	0xFC5D,	0x9E,
-	0xFC5E,	0xA8,
-	0xFC5F,	0x14,
-	0xFC60,	0xA8,
-	0xFC61,	0x1D,
-	0xFC62,	0xA8,
-	0xFC63,	0x27,
-	0xFC64,	0xA0,
-	0xFC65,	0x09,
-	0xFC66,	0x00,
-	0xFC67,	0x00,
-	0x4331,	0x01,
-	0x3304,	0x00,
-	0x33F0,	0x0A,
-	0x33F1,	0x06,
-	0x0111,	0x03,
-	0x3855,	0x01,
-	0x0808,	0x02,
-	0x0D06,	0x82,
-	0x0D07,	0x02,
-	0x0D12,	0x78,
-	0x0D13,	0x01,
-	0x0D0D,	0x00,
-	0x0D08,	0x01,
-	0x1012,	0x00,
-	0x2EDF,	0x07,
-	0x3953,	0x01,
-	0x3954,	0x01,
-	0x3955,	0x01,
-	0x3B30,	0x01,
-	0x3B32,	0x12,
-	0x3B33,	0x04,
-	0x3B34,	0x0A,
-	0x3B36,	0xB2,
-	0x3B40,	0x00,
-	0x3B42,	0x0A,
-	0x3B43,	0x04,
-	0x3B45,	0x0D,
-	0x3B46,	0x40,
-	0x5A1D,	0x52,
-	0x5A27,	0x19,
-	0x5A37,	0xC8,
-	0x5A39,	0x25,
-	0x5A3D,	0x0E,
-	0x5A41,	0x19,
-	0x5A47,	0x62,
-	0x5A51,	0x52,
-	0x5A5B,	0x19,
-	0x5A69,	0xC8,
-	0x5A6B,	0x25,
-	0x5A6F,	0x11,
-	0x5A73,	0x19,
-	0x5A79,	0x8A,
-	0x5A83,	0x52,
-	0x5A8D,	0x19,
-	0x5A9B,	0xC8,
-	0x5A9D,	0x25,
-	0x5AA1,	0x52,
-	0x5AA5,	0x19,
-	0x5AAB,	0x93,
-	0x5AB5,	0x52,
-	0x5ABF,	0x19,
-	0x5ACD,	0xC8,
-	0x5ACF,	0x25,
-	0x5AD3,	0x11,
-	0x5AD7,	0x19,
-	0x5ADD,	0x4B,
-	0x5AE7,	0x52,
-	0x5AF1,	0x19,
-	0x5AF5,	0x2D,
-	0x5AFF,	0xC8,
-	0x5B01,	0x25,
-	0x5B05,	0x0E,
-	0x5B09,	0x19,
-	0x5B0D,	0x9E,
-	0x5B0F,	0x34,
-	0x5B21,	0x19,
-	0x5B27,	0x2D,
-	0x5B33,	0x19,
-	0x5B39,	0x9E,
-	0x5B3F,	0x52,
-	0x5B49,	0x19,
-	0x5B4D,	0x87,
-	0x5B57,	0xC8,
-	0x5B59,	0x25,
-	0x5B5D,	0x0E,
-	0x5B61,	0x19,
-	0x5B65,	0xDA,
-	0x5B6D,	0x52,
-	0x5B79,	0x19,
-	0x5B7F,	0x2D,
-	0x5B8B,	0x19,
-	0x5B91,	0x9E,
-	0x5B97,	0x52,
-	0x5BA1,	0x19,
-	0x5BA5,	0x2D,
-	0x5BAF,	0xC8,
-	0x5BB1,	0x25,
-	0x5BB5,	0x11,
-	0x5BB9,	0x19,
-	0x5BBD,	0x9E,
-	0x5BBF,	0x5C,
-	0x5BD1,	0x19,
-	0x5BD7,	0x2D,
-	0x5BE3,	0x19,
-	0x5BE9,	0x9E,
-	0x5BEF,	0x52,
-	0x5BF9,	0x19,
-	0x5BFD,	0x87,
-	0x5C07,	0xC8,
-	0x5C09,	0x25,
-	0x5C0D,	0x11,
-	0x5C11,	0x19,
-	0x5C15,	0xDA,
-	0x5C29,	0x19,
-	0x5C2F,	0x2D,
-	0x5C3B,	0x19,
-	0x5C41,	0x9E,
-	0x5C47,	0x52,
-	0x5C51,	0x19,
-	0x5C57,	0x41,
-	0x5C5F,	0xC8,
-	0x5C61,	0x25,
-	0x5C65,	0x11,
-	0x5C69,	0x19,
-	0x5C6E,	0x01,
-	0x5C6F,	0x13,
-	0x5C85,	0xC8,
-	0x5C87,	0x25,
-	0x5C8B,	0x1B,
-	0x5C8F,	0x19,
-	0x5C95,	0x41,
-	0x5C9B,	0x52,
-	0x5CA5,	0x19,
-	0x5CAA,	0x03,
-	0x5CAB,	0xDE,
-	0x5CB3,	0xC8,
-	0x5CB5,	0x25,
-	0x5CB9,	0x11,
-	0x5CBD,	0x19,
-	0x5CC3,	0xB8,
-	0x5CD9,	0xC8,
-	0x5CDB,	0x25,
-	0x5CDF,	0x1B,
-	0x5CE3,	0x19,
-	0x5CE8,	0x03,
-	0x5CE9,	0xDE,
-	0x5CEF,	0x52,
-	0x5CF9,	0x19,
-	0x5CFF,	0x79,
-	0x5D07,	0xC8,
-	0x5D09,	0x25,
-	0x5D0C,	0x00,
-	0x5D0D,	0x52,
-	0x5D11,	0x19,
-	0x5D16,	0x01,
-	0x5D17,	0x28,
-	0x5D2D,	0xC8,
-	0x5D2F,	0x25,
-	0x5D33,	0x53,
-	0x5D37,	0x19,
-	0x5D3D,	0x79,
-	0x5D43,	0x52,
-	0x5D4D,	0x19,
-	0x5D51,	0x2D,
-	0x5D53,	0x41,
-	0x5D55,	0x6B,
-	0x5D5B,	0xC8,
-	0x5D5D,	0x25,
-	0x5D61,	0x11,
-	0x5D65,	0x19,
-	0x5D69,	0x9E,
-	0x5D6B,	0xD0,
-	0x5D7D,	0x19,
-	0x5D83,	0x2D,
-	0x5D95,	0xC8,
-	0x5D97,	0x25,
-	0x5D9B,	0x1B,
-	0x5D9F,	0x19,
-	0x5DA5,	0x41,
-	0x5DB1,	0x19,
-	0x5DB7,	0x6B,
-	0x5DC3,	0x19,
-	0x5DC9,	0x9E,
-	0x5DCF,	0x52,
-	0x5DD9,	0x19,
-	0x5DDD,	0x87,
-	0x5DDF,	0x41,
-	0x5DE1,	0x41,
-	0x5DE7,	0xC8,
-	0x5DE9,	0x25,
-	0x5DED,	0x11,
-	0x5DF1,	0x19,
-	0x5DF5,	0xDA,
-	0x5DF7,	0x4A,
-	0x5E09,	0x19,
-	0x5E0F,	0x2D,
-	0x5E21,	0xC8,
-	0x5E23,	0x25,
-	0x5E27,	0x1B,
-	0x5E2B,	0x19,
-	0x5E31,	0x41,
-	0x5E3D,	0x19,
-	0x5E43,	0x6B,
-	0x5E4F,	0x19,
-	0x5E55,	0x9E,
-	0x5E5B,	0x52,
-	0x5E65,	0x19,
-	0x5E69,	0x2D,
-	0x5E6B,	0x41,
-	0x5E73,	0xC8,
-	0x5E75,	0x25,
-	0x5E79,	0x11,
-	0x5E7D,	0x19,
-	0x5E81,	0x9E,
-	0x5E83,	0xFB,
-	0x5E95,	0x19,
-	0x5E9B,	0x2D,
-	0x5EAD,	0xC8,
-	0x5EAF,	0x25,
-	0x5EB3,	0x1B,
-	0x5EB7,	0x19,
-	0x5EBD,	0x41,
-	0x5EC9,	0x19,
-	0x5ECF,	0x9E,
-	0x5ED5,	0x52,
-	0x5EDF,	0x19,
-	0x5EE3,	0x2D,
-	0x5EE5,	0x5A,
-	0x5EE7,	0x41,
-	0x5EEF,	0xC8,
-	0x5EF1,	0x25,
-	0x5EF5,	0x11,
-	0x5EF9,	0x19,
-	0x5EFD,	0xDA,
-	0x5EFF,	0xCB,
-	0x5F11,	0x19,
-	0x5F17,	0x2D,
-	0x5F23,	0x19,
-	0x5F29,	0x2D,
-	0x5F3B,	0xC8,
-	0x5F3D,	0x25,
-	0x5F41,	0x1B,
-	0x5F45,	0x19,
-	0x5F4B,	0x41,
-	0x5F57,	0x19,
-	0x5F5D,	0x9E,
-	0x5F63,	0x52,
-	0x5F6D,	0x19,
-	0x5F7F,	0x55,
-	0x5F83,	0x0E,
-	0x5F87,	0x19,
-	0x5F93,	0x12,
-	0x6C06,	0xFF,
-	0x6C07,	0xFF,
-	0x6C0E,	0x00,
-	0x6C0F,	0x02,
-	0x6C11,	0xD9,
-	0x6C12,	0xFF,
-	0x6C13,	0xFF,
-	0x6C1A,	0x00,
-	0x6C1B,	0x02,
-	0x6C1D,	0xD9,
-	0x6C1E,	0xFF,
-	0x6C1F,	0xFF,
-	0x6C26,	0x00,
-	0x6C27,	0x02,
-	0x6C29,	0xD9,
-	0x6C2A,	0xFF,
-	0x6C2B,	0xFF,
-	0x6C32,	0x00,
-	0x6C33,	0x02,
-	0x6C35,	0xD9,
-	0x6C36,	0xFF,
-	0x6C37,	0xFF,
-	0x6C3E,	0x00,
-	0x6C3F,	0x02,
-	0x6C41,	0xD9,
-	0x6C42,	0xFF,
-	0x6C43,	0xFF,
-	0x6C4A,	0x00,
-	0x6C4B,	0x02,
-	0x6C4D,	0xD9,
-	0x6C4E,	0xFF,
-	0x6C4F,	0xFF,
-	0x6C5A,	0xFF,
-	0x6C5B,	0xFF,
-	0x6C66,	0xFF,
-	0x6C67,	0xFF,
-	0x6C72,	0xFF,
-	0x6C73,	0xFF,
-	0x6C7E,	0xFF,
-	0x6C7F,	0xFF,
-	0x6CAA,	0x00,
-	0x6CAB,	0x02,
-	0x6CAD,	0xD9,
-	0x6CAE,	0x00,
-	0x6CAF,	0x02,
-	0x6CB1,	0xD9,
-	0x6CB2,	0x00,
-	0x6CB3,	0x02,
-	0x6CB5,	0xD9,
-	0x6CB6,	0x00,
-	0x6CB7,	0x02,
-	0x6CB9,	0xD9,
-	0x6CBA,	0x00,
-	0x6CBB,	0x02,
-	0x6CBD,	0xD9,
-	0x6E3F,	0xDE,
-	0x6E47,	0xDE,
-	0x6E4F,	0xDE,
-	0x6E57,	0xDE,
-	0x6E5F,	0xDE,
-	0x6E67,	0xDE,
-	0x6EB3,	0xDE,
-	0x6EB7,	0xDE,
-	0x6EBB,	0xDE,
-	0x6EBF,	0xDE,
-	0x6EC3,	0xDE,
-	0x7476,	0x00,
-	0x7477,	0x00,
-	0x7478,	0x00,
-	0x7509,	0x00,
-	0x750B,	0x00,
-	0x7516,	0x01,
-	0x7524,	0x0C,
-	0x7528,	0x02,
-	0x7530,	0x03,
-	0x7616,	0x0C,
-	0x7619,	0x0C,
-	0x761C,	0x0C,
-	0x761D,	0x0C,
-	0x761E,	0x0C,
-	0x761F,	0x0C,
-	0x7620,	0x00,
-	0x7623,	0x00,
-	0x7624,	0x00,
-	0x7625,	0x00,
-	0x7626,	0x00,
-	0x7627,	0x00,
-	0x7628,	0x00,
-	0x7629,	0x00,
-	0x762A,	0x00,
-	0x762B,	0x00,
-	0x762C,	0x00,
-	0x762D,	0x00,
-	0x762E,	0x00,
-	0x762F,	0x00,
-	0x7631,	0x07,
-	0x7632,	0x07,
-	0x7634,	0x07,
-	0x7635,	0x07,
-	0x76FC,	0x44,
-	0x76FD,	0x2A,
-	0x76FE,	0x2C,
-	0x76FF,	0x26,
-	0x7700,	0x43,
-	0x7701,	0x2A,
-	0x7702,	0x2A,
-	0x7703,	0x26,
-	0x7704,	0x2C,
-	0x7705,	0x2A,
-	0x7706,	0x2A,
-	0x7707,	0x65,
-	0x7708,	0x44,
-	0x7709,	0x48,
-	0x770A,	0x40,
-	0x770B,	0x64,
-	0x770C,	0x44,
-	0x770D,	0x44,
-	0x770E,	0x40,
-	0x770F,	0x48,
-	0x7710,	0x44,
-	0x7711,	0x44,
-	0x7712,	0x45,
-	0x7713,	0x43,
-	0x7714,	0x47,
-	0x7715,	0x40,
-	0x7716,	0x42,
-	0x7717,	0x43,
-	0x7718,	0x43,
-	0x7719,	0x40,
-	0x771A,	0x47,
-	0x771B,	0x43,
-	0x771C,	0x43,
-	0x771D,	0x5D,
-	0x771E,	0x43,
-	0x771F,	0x46,
-	0x7720,	0x40,
-	0x7721,	0x62,
-	0x7722,	0x43,
-	0x7723,	0x43,
-	0x7724,	0x40,
-	0x7725,	0x46,
-	0x7726,	0x43,
-	0x7727,	0x43,
-	0x7728,	0x41,
-	0x7729,	0x43,
-	0x772A,	0x3F,
-	0x772B,	0x41,
-	0x772C,	0x41,
-	0x772D,	0x3F,
-	0x772E,	0x43,
-	0x772F,	0x41,
-	0x7730,	0x41,
-	0x7731,	0x40,
-	0x7732,	0x42,
-	0x7733,	0x3F,
-	0x7734,	0x40,
-	0x7735,	0x40,
-	0x7736,	0x3F,
-	0x7737,	0x42,
-	0x7738,	0x40,
-	0x7739,	0x40,
-	0x773A,	0x40,
-	0x773B,	0x15,
-	0x773C,	0x16,
-	0x773D,	0x09,
-	0x773E,	0x3B,
-	0x773F,	0x15,
-	0x7740,	0x15,
-	0x7741,	0x09,
-	0x7742,	0x16,
-	0x7743,	0x15,
-	0x7744,	0x15,
-	0x7745,	0x63,
-	0x7746,	0x2F,
-	0x7747,	0x2F,
-	0x7748,	0x19,
-	0x7749,	0x5D,
-	0x774A,	0x2F,
-	0x774B,	0x2F,
-	0x774C,	0x19,
-	0x774D,	0x2F,
-	0x774E,	0x2F,
-	0x774F,	0x2F,
-	0x7750,	0x45,
-	0x7751,	0x2F,
-	0x7752,	0x2F,
-	0x7753,	0x24,
-	0x7754,	0x43,
-	0x7755,	0x2F,
-	0x7756,	0x2F,
-	0x7757,	0x24,
-	0x7758,	0x2F,
-	0x7759,	0x2F,
-	0x775A,	0x2F,
-	0x775B,	0x57,
-	0x775C,	0x39,
-	0x775D,	0x36,
-	0x775E,	0x32,
-	0x775F,	0x64,
-	0x7760,	0x39,
-	0x7761,	0x39,
-	0x7762,	0x32,
-	0x7763,	0x36,
-	0x7764,	0x39,
-	0x7765,	0x39,
-	0x7766,	0x3B,
-	0x7767,	0x3B,
-	0x7768,	0x3B,
-	0x7769,	0x3B,
-	0x776A,	0x3B,
-	0x776B,	0x3B,
-	0x776C,	0x3B,
-	0x776D,	0x3B,
-	0x776E,	0x3B,
-	0x776F,	0x41,
-	0x7770,	0x40,
-	0x7771,	0x3F,
-	0x7772,	0x41,
-	0x7773,	0x41,
-	0x7774,	0x3F,
-	0x7775,	0x40,
-	0x7776,	0x41,
-	0x7777,	0x41,
-	0x7778,	0x0F,
-	0x7779,	0x0A,
-	0x777A,	0x0A,
-	0x777B,	0x0A,
-	0x777C,	0x0F,
-	0x777D,	0x0A,
-	0x777E,	0x0A,
-	0x777F,	0x0A,
-	0x7780,	0x0A,
-	0x7781,	0x0A,
-	0x7782,	0x0A,
-	0x7783,	0x0F,
-	0x7784,	0x0A,
-	0x7785,	0x0A,
-	0x7786,	0x0A,
-	0x7787,	0x0F,
-	0x7788,	0x0A,
-	0x7789,	0x0A,
-	0x778A,	0x0A,
-	0x778B,	0x0A,
-	0x778C,	0x0A,
-	0x778D,	0x0A,
-	0x778E,	0x14,
-	0x778F,	0x0A,
-	0x7790,	0x0A,
-	0x7791,	0x0A,
-	0x7792,	0x0F,
-	0x7793,	0x0A,
-	0x7794,	0x0A,
-	0x7795,	0x0A,
-	0x7796,	0x0A,
-	0x7797,	0x0A,
-	0x7798,	0x0A,
-	0x7799,	0x14,
-	0x779A,	0x0A,
-	0x779B,	0x0A,
-	0x779C,	0x0A,
-	0x779D,	0x0F,
-	0x779E,	0x0A,
-	0x779F,	0x0A,
-	0x77A0,	0x0A,
-	0x77A1,	0x0A,
-	0x77A2,	0x0A,
-	0x77A3,	0x0A,
-	0x77A4,	0x0A,
-	0x77A5,	0x0A,
-	0x77A6,	0x0A,
-	0x77A7,	0x0A,
-	0x77A8,	0x0A,
-	0x77A9,	0x0A,
-	0x77AA,	0x0A,
-	0x77AB,	0x0A,
-	0x77AC,	0x0A,
-	0x77AD,	0x0B,
-	0x77AE,	0x0A,
-	0x77AF,	0x0A,
-	0x77B0,	0x0B,
-	0x77B1,	0x0B,
-	0x77B2,	0x0A,
-	0x77B3,	0x0A,
-	0x77B4,	0x0B,
-	0x77B5,	0x0B,
-	0x77F4,	0x01,
-	0x77F5,	0x01,
-	0x77F6,	0x01,
-	0x77F8,	0x01,
-	0x77F9,	0x01,
-	0x77FB,	0x01,
-	0x77FC,	0x01,
-	0x7814,	0x2A,
-	0x7815,	0x01,
-	0x7816,	0x01,
-	0x7818,	0x2A,
-	0x7819,	0x01,
-	0x781A,	0x01,
-	0x781C,	0x01,
-	0x781D,	0x01,
-	0x781E,	0x01,
-	0x781F,	0x2A,
-	0x7820,	0x01,
-	0x7821,	0x01,
-	0x7823,	0x2A,
-	0x7824,	0x01,
-	0x7825,	0x01,
-	0x7827,	0x01,
-	0x7828,	0x01,
-	0x7829,	0x01,
-	0x782A,	0x2A,
-	0x782B,	0x0A,
-	0x782C,	0x0A,
-	0x782E,	0x2A,
-	0x782F,	0x0A,
-	0x7830,	0x0A,
-	0x7832,	0x0A,
-	0x7833,	0x0A,
-	0x7834,	0x0A,
-	0x7835,	0x2A,
-	0x7836,	0x19,
-	0x7837,	0x19,
-	0x7838,	0x2A,
-	0x7839,	0x2A,
-	0x783A,	0x19,
-	0x783B,	0x19,
-	0x783C,	0x2A,
-	0x783D,	0x19,
-	0x783E,	0x19,
-	0x783F,	0x19,
-	0x7840,	0x1D,
-	0x7841,	0x1D,
-	0x7842,	0x2A,
-	0x7843,	0x1D,
-	0x7844,	0x1D,
-	0x7845,	0x2A,
-	0x7846,	0x1D,
-	0x7847,	0x1D,
-	0x7848,	0x1D,
-	0x7849,	0x2A,
-	0x784A,	0x2A,
-	0x784B,	0x2A,
-	0x784C,	0x2A,
-	0x784D,	0x2A,
-	0x784E,	0x2A,
-	0x784F,	0x2A,
-	0x7850,	0x2A,
-	0x7851,	0x2A,
-	0x7853,	0x50,
-	0x7856,	0x50,
-	0x7857,	0x50,
-	0x785A,	0x50,
-	0x785B,	0x50,
-	0x785D,	0x50,
-	0x7860,	0x50,
-	0x7861,	0x50,
-	0x7864,	0x50,
-	0x7865,	0x50,
-	0x7867,	0x50,
-	0x786A,	0x50,
-	0x786B,	0x50,
-	0x7902,	0x15,
-	0x7904,	0x13,
-	0x7905,	0x15,
-	0x7908,	0x13,
-	0x7909,	0x08,
-	0x790B,	0x11,
-	0x790D,	0x0C,
-	0x790E,	0x08,
-	0x790F,	0x08,
-	0x7912,	0x0B,
-	0x7919,	0x06,
-	0x791E,	0x06,
-	0x791F,	0x06,
-	0x7929,	0x00,
-	0x792E,	0x00,
-	0x792F,	0x00,
-	0x7A2A,	0x19,
-	0x7A2B,	0xF1,
-	0x7A2C,	0x0F,
-	0x7A48,	0x0F,
-	0x7A49,	0x01,
-	0x7A4A,	0x03,
-	0x7A51,	0x09,
-	0x7A58,	0x0F,
-	0x7A5D,	0x32,
-	0x7A63,	0x32,
-	0x7A6B,	0x3E,
-	0x7A71,	0x3E,
-	0x7AAD,	0x99,
-	0x7AB3,	0x99,
-	0x7ABB,	0xA5,
-	0x7AC1,	0xA5,
-	0x7AFD,	0x66,
-	0x7B05,	0x72,
-	0x7B26,	0x12,
-	0x7B27,	0x12,
-	0x7B28,	0x12,
-	0x7B29,	0x12,
-	0x7B2A,	0x12,
-	0x7B2B,	0x12,
-	0x7B2C,	0x12,
-	0x7B2D,	0x12,
-	0x7B2E,	0x12,
-	0x7B2F,	0x12,
-	0x7B30,	0x12,
-	0x7B31,	0x12,
-	0x7B32,	0x12,
-	0x7B33,	0x12,
-	0x7B34,	0x12,
-	0x7B35,	0x12,
-	0x7B36,	0x12,
-	0x7B37,	0x12,
-	0x7B38,	0x12,
-	0x7B39,	0x12,
-	0x7B3A,	0x12,
-	0x7B3B,	0x12,
-	0x7B3C,	0x12,
-	0x7B3D,	0x12,
-	0x7B3E,	0x12,
-	0x7B3F,	0x12,
-	0x7B40,	0x12,
-	0x7B41,	0x12,
-	0x7B42,	0x12,
-	0x7B43,	0x12,
-	0x7B44,	0x12,
-	0x7B45,	0x12,
-	0x7B46,	0x12,
-	0x7B47,	0x12,
-	0x7B48,	0x12,
-	0x7B49,	0x12,
-	0x7B4A,	0x12,
-	0x7B4B,	0x12,
-	0x7B4C,	0x12,
-	0x7B4D,	0x12,
-	0x7C73,	0x0B,
-	0x7C74,	0x0B,
-	0x7C75,	0x0B,
-	0x7C76,	0x0B,
-	0x7C77,	0x0B,
-	0x7C78,	0x0B,
-	0x7C79,	0x0B,
-	0x7C7C,	0x0B,
-	0x7C7D,	0x0B,
-	0x7C7E,	0x0B,
-	0x7C7F,	0x0B,
-	0x7C80,	0x0B,
-	0x7C81,	0x0B,
-	0x7C83,	0x0B,
-	0x7C84,	0x0B,
-	0x7C85,	0x0B,
-	0x7C86,	0x0B,
-	0x7C87,	0x0B,
-	0x7C88,	0x0B,
-	0x7CA5,	0x01,
-	0x7CAA,	0x01,
-	0x7CB0,	0x01,
-	0x7CB5,	0x01,
-	0x7CBB,	0x01,
-	0x7CC0,	0x01,
-	0x7CD1,	0x01,
-	0x7CD6,	0x01,
-	0x7CDC,	0x01,
-	0x7CE1,	0x01,
-	0x7CE7,	0x01,
-	0x7CEC,	0x01,
-	0x90B3,	0x80,
-	0x974A,	0x09,
-	0x974B,	0x08,
-	0x9752,	0x0E,
-	0x9753,	0xB4,
-	0x975B,	0x0C,
-	0x9762,	0x09,
-	0x9763,	0x08,
-	0x976A,	0x09,
-	0x976B,	0x08,
-	0x9772,	0x0F,
-	0x9773,	0x7C,
-	0x978A,	0x09,
-	0x978B,	0xE8,
-	0xDDA9,	0x4E,
-	0xDE8D,	0x01,
-	0xE24E,	0x00,
-	0x7854,	0x50,
-	0x7859,	0x50,
-	0x785E,	0x50,
-	0x7863,	0x50,
-	0x7869,	0x50,
-	0x7A5E,	0x00,
-	0x7A5F,	0x32,
-	0x7A66,	0x00,
-	0x7A67,	0x32,
-	0x7A6C,	0x00,
-	0x7A6D,	0x3E,
-	0x7A74,	0x00,
-	0x7A75,	0x3E,
-	0x7AAE,	0x00,
-	0x7AAF,	0x99,
-	0x7AB6,	0x00,
-	0x7AB7,	0x99,
-	0x7ABC,	0x00,
-	0x7ABD,	0xA5,
-	0x7AC4,	0x00,
-	0x7AC5,	0xA5,
-	0x7B00,	0x00,
-	0x7B01,	0x66,
-	0x7B08,	0x00,
-	0x7B09,	0x72,
-	0x7CA6,	0x01,
-	0x7CA9,	0x01,
-	0x7CAC,	0x01,
-	0x7CAD,	0x01,
-	0x7CAE,	0x01,
-	0x7CB1,	0x01,
-	0x7CB4,	0x01,
-	0x7CB7,	0x01,
-	0x7CB8,	0x01,
-	0x7CB9,	0x01,
-	0x7CBC,	0x01,
-	0x7CBF,	0x01,
-	0x7CC2,	0x01,
-	0x7CC3,	0x01,
-	0x7CC4,	0x01,
-	0x7CD2,	0x01,
-	0x7CD5,	0x01,
-	0x7CD8,	0x01,
-	0x7CD9,	0x01,
-	0x7CDA,	0x01,
-	0x7CDD,	0x01,
-	0x7CE0,	0x01,
-	0x7CE3,	0x01,
-	0x7CE4,	0x01,
-	0x7CE5,	0x01,
-	0x7CE8,	0x01,
-	0x7CEB,	0x01,
-	0x7CEE,	0x01,
-	0x7CEF,	0x01,
-	0x7CF0,	0x01,
-	0xAB30,	0x00,
-	0xAB31,	0x3C,
-	0xAB32,	0x00,
-	0xAB33,	0x3C,
-	0xAB34,	0x00,
-	0xAB35,	0x3C,
-	0xAE24,	0x01,
-	0xAE25,	0x61,
-	0xAE26,	0x01,
-	0xAE27,	0xDF,
-	0xAE28,	0x02,
-	0xAE29,	0xD0,
-	0xAB55,	0x23,
-	0xAB57,	0x23,
-	0xAB59,	0x23,
-	0xAB5B,	0x0A,
-	0xAB5D,	0x0A,
-	0xAB5F,	0x0A,
-	0xAB73,	0x23,
-	0xAB75,	0x23,
-	0xAB77,	0x23,
-	0xAB79,	0x0A,
-	0xAB7B,	0x0A,
-	0xAB7D,	0x0A,
-	0x0D08,	0x00,
-	/*EBD Settin,g*/
-	0x3970, 0x00,
-	//MCLP Clock Setting
-	0x306D,	0x00,
-	/* fast mode transition in lbmf */
-	0x31A7, 0x04,
-};
-
-/* B11-S3 4096x3072 @30.1FPS QBIN(VBIN) with All-PD VB_max seamless D*/
-static u16 konkatele_preview_setting[] = {
-	0x0110, 0x01,
-	//MIPI 	utput setting
-	0x0112,	0x0A,
-	0x0113,	0x0A,
-	0x0114,	0x02,
-	//Line 	ength PCK Setting
-	0x0342,	0x1D,
-	0x0343,	0x4C,
-	0x3850,	0x00,
-	0x3851,	0xCD,
-	//Frame	Length Lines Setting
-	0x0340,	0x0F,
-	0x0341,	0x30,
-	//ROI S	tting
-	0x0344,	0x00,
-	0x0345,	0x00,
-	0x0346,	0x00,
-	0x0347,	0x00,
-	0x0348,	0x1F,
-	0x0349,	0xFF,
-	0x034A,	0x17,
-	0x034B,	0xFF,
-	//Mode 	etting
-	0x0900,	0x01,
-	0x0901,	0x22,
-	0x0902,	0x00,
-	0x3005,	0x02,
-	0x3006,	0x02,
-	0x3140,	0x0A,
-	0x3144,	0x00,
-	0x3148,	0x04,
-	0x31C0,	0x41,
-	0x31C1,	0x41,
-	0x3205,	0x00,
-	0x323C,	0x01,
-	0x39AC,	0x01,
-	//Digit	l Crop & Scaling
-	0x0408,	0x00,
-	0x0409,	0x00,
-	0x040A,	0x00,
-	0x040B,	0x00,
-	0x040C,	0x10,
-	0x040D,	0x00,
-	0x040E,	0x0C,
-	0x040F,	0x00,
-	//Outpu	 Size Setting
-	0x034C,	0x10,
-	0x034D,	0x00,
-	0x034E,	0x0C,
-	0x034F,	0x00,
-	//Clock	Setting
-	0x0301,	0x05,
-	0x0303,	0x02,
-	0x0305,	0x04,
-	0x0306,	0x01,
-	0x0307,	0x6E,
-	0x030B,	0x01,
-	0x030D,	0x06,
-	0x030E,	0x01,
-	0x030F,	0x96,
-	//Other	Setting
-	0x3104,	0x01,
-	0x38A0,	0x00,
-	0x38A1,	0xB4,
-	0x38A2,	0x00,
-	0x38A3,	0xE8,
-	0x38A8,	0x00,
-	0x38A9,	0x38,
-	0x38AA,	0x00,
-	0x38AB,	0x6A,
-	0x38B0,	0x03,
-	0x38B1,	0xFF,
-	0x38B4,	0x03,
-	0x38B5,	0xFF,
-	0x38B8,	0x03,
-	0x38B9,	0xFF,
-	0x38BC,	0x03,
-	0x38BD,	0xFF,
-	0x38D0,	0x0B,
-	0x38D1,	0x04,
-	0x38D2,	0x08,
-	0x38D3,	0xB0,
-	0x38D8,	0x14,
-	0x38E0,	0x00,
-	0x38E1,	0x00,
-	0x38E2,	0x00,
-	0x38E3,	0x00,
-	0x38E4,	0x00,
-	0x38E5,	0x00,
-	0x38E6,	0x00,
-	0x38E7,	0x00,
-	0x3B00,	0x08,
-	0x3B01,	0x8E,
-	0x3B04,	0x00,
-	0x3B05,	0x88,
-	//Integ	ation Setting
-	0x0202,	0x03,
-	0x0203,	0xE8,
-	//Gain 	etting
-	0x0204,	0x13,
-	0x0205,	0x34,
-	0x020E,	0x01,
-	0x020F,	0x00,
-	//PDAF 	YPE2 Setting
-	0x3103,	0x00,
-	0x3422,	0x01,
-	0x3423,	0xFC,
-	//EAE-B	acketing Setting
-	0x0E00,	0x00,
-	//PHASE	PIX VCID Setting
-	0x30A4,	0x03,
-	0x30A6,	0x03,
-	0x30F2,	0x01,
-	0x30F3,	0x01,
-	//PHASE	PIX data type Setting
-	0x30A5,	0x30,
-	0x30A7,	0x30,
-	//PDAF 	YPE2 VCID Setting
-	0x30A2,	0x03,
-	0x30F1,	0x01,
-	//PDAF 	YPE2 data type Setting
-	0x30A3,	0x30,
-	//MIPI 	lobal Timing Setting
-	0x084E,	0x00,
-	0x084F,	0x0F,
-	0x0850,	0x00,
-	0x0851,	0x0D,
-	0x0852,	0x00,
-	0x0853,	0x19,
-	0x0854,	0x00,
-	0x0855,	0x29,
-	0x0858,	0x00,
-	0x0859,	0x1F,
-	0x4112, 0x00, // MON_SEL
-	0x4113, 0x00,
-	0x4048, 0x00, // GPIO_SEL
-	0x4049, 0x00,
-	0x3030, 0x01, // XVS_IO_CTRL
-	0x4101, 0xFF, // MON_XVS
-	0x402D, 0x00, // IO_CTRL_XVS
-	0x5048, 0x00, // MNTTEST1_SEL
-	0x5049, 0x0F,
-	0x520C, 0x00, // VSYNC_POL
-	0x520D, 0x00, // VSYNC_WID
-	0x3031, 0x00, // XVS_CTRL_SEL
-};
-
-/* Reg_B9-S1_QBIN(VBIN)_4096x3072_30.1FPS with PDAF VB_max*/
-static u16 konkatele_capture_setting[] = {
-	0x0110, 0x01,
-	//MIPI 	utput setting
-	0x0112,	0x0A,
-	0x0113,	0x0A,
-	0x0114,	0x02,
-	//Line 	ength PCK Setting
-	0x0342,	0x1D,
-	0x0343,	0x4C,
-	0x3850,	0x00,
-	0x3851,	0xCD,
-	//Frame	Length Lines Setting
-	0x0340,	0x0F,
-	0x0341,	0x30,
-	//ROI S	tting
-	0x0344,	0x00,
-	0x0345,	0x00,
-	0x0346,	0x00,
-	0x0347,	0x00,
-	0x0348,	0x1F,
-	0x0349,	0xFF,
-	0x034A,	0x17,
-	0x034B,	0xFF,
-	//Mode 	etting
-	0x0900,	0x01,
-	0x0901,	0x22,
-	0x0902,	0x00,
-	0x3005,	0x02,
-	0x3006,	0x02,
-	0x3140,	0x0A,
-	0x3144,	0x00,
-	0x3148,	0x04,
-	0x31C0,	0x41,
-	0x31C1,	0x41,
-	0x3205,	0x00,
-	0x323C,	0x01,
-	0x39AC,	0x01,
-	//Digit	l Crop & Scaling
-	0x0408,	0x00,
-	0x0409,	0x00,
-	0x040A,	0x00,
-	0x040B,	0x00,
-	0x040C,	0x10,
-	0x040D,	0x00,
-	0x040E,	0x0C,
-	0x040F,	0x00,
-	//Outpu	 Size Setting
-	0x034C,	0x10,
-	0x034D,	0x00,
-	0x034E,	0x0C,
-	0x034F,	0x00,
-	//Clock	Setting
-	0x0301,	0x05,
-	0x0303,	0x02,
-	0x0305,	0x04,
-	0x0306,	0x01,
-	0x0307,	0x6E,
-	0x030B,	0x01,
-	0x030D,	0x06,
-	0x030E,	0x01,
-	0x030F,	0x96,
-	//Other	Setting
-	0x3104,	0x01,
-	0x38A0,	0x00,
-	0x38A1,	0xB4,
-	0x38A2,	0x00,
-	0x38A3,	0xE8,
-	0x38A8,	0x00,
-	0x38A9,	0x38,
-	0x38AA,	0x00,
-	0x38AB,	0x6A,
-	0x38B0,	0x03,
-	0x38B1,	0xFF,
-	0x38B4,	0x03,
-	0x38B5,	0xFF,
-	0x38B8,	0x03,
-	0x38B9,	0xFF,
-	0x38BC,	0x03,
-	0x38BD,	0xFF,
-	0x38D0,	0x0B,
-	0x38D1,	0x04,
-	0x38D2,	0x08,
-	0x38D3,	0xB0,
-	0x38D8,	0x14,
-	0x38E0,	0x00,
-	0x38E1,	0x00,
-	0x38E2,	0x00,
-	0x38E3,	0x00,
-	0x38E4,	0x00,
-	0x38E5,	0x00,
-	0x38E6,	0x00,
-	0x38E7,	0x00,
-	0x3B00,	0x08,
-	0x3B01,	0x8E,
-	0x3B04,	0x00,
-	0x3B05,	0x88,
-	//Integ	ation Setting
-	0x0202,	0x03,
-	0x0203,	0xE8,
-	//Gain 	etting
-	0x0204,	0x13,
-	0x0205,	0x34,
-	0x020E,	0x01,
-	0x020F,	0x00,
-	//PDAF 	YPE2 Setting
-	0x3103,	0x00,
-	0x3422,	0x01,
-	0x3423,	0xFC,
-	//EAE-B	acketing Setting
-	0x0E00,	0x00,
-	//PHASE	PIX VCID Setting
-	0x30A4,	0x03,
-	0x30A6,	0x03,
-	0x30F2,	0x01,
-	0x30F3,	0x01,
-	//PHASE	PIX data type Setting
-	0x30A5,	0x30,
-	0x30A7,	0x30,
-	//PDAF 	YPE2 VCID Setting
-	0x30A2,	0x03,
-	0x30F1,	0x01,
-	//PDAF 	YPE2 data type Setting
-	0x30A3,	0x30,
-	//MIPI 	lobal Timing Setting
-	0x084E,	0x00,
-	0x084F,	0x0F,
-	0x0850,	0x00,
-	0x0851,	0x0D,
-	0x0852,	0x00,
-	0x0853,	0x19,
-	0x0854,	0x00,
-	0x0855,	0x29,
-	0x0858,	0x00,
-	0x0859,	0x1F,
-};
-
-/* Reg_B10-S5_QBIN(VBIN)_4096x2304_30.1FPS with PDAF VB_max*/
-static u16 konkatele_normal_video_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3850, 0x00,
-    0x3851, 0xCD,
-    //Frame Length Lines Setting
-    0x0340, 0x0F,
-    0x0341, 0x30,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x09,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x09,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x87,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0xB4,
-    0x38A2, 0x00,
-    0x38A3, 0xE8,
-    0x38A8, 0x00,
-    0x38A9, 0x38,
-    0x38AA, 0x00,
-    0x38AB, 0x6A,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x0B,
-    0x38D1, 0x04,
-    0x38D2, 0x08,
-    0x38D3, 0xB0,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x08,
-    0x3B01, 0x8E,
-    0x3B04, 0x00,
-    0x3B05, 0x88,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-
-/* B-1 QBIN_4096x2304 @60FPS with PDAF VB_max */
-static u16 konkatele_hs_video_setting[] = {
-    0x0110, 0x01,
-    /* MIPI output setting */
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    /* Line Length PCK Setting */
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3850, 0x00,
-    0x3851, 0x7F,
-    /* Frame Length Lines Setting */
-    0x0340, 0x0C,
-    0x0341, 0x63,
-    /* ROI Setting */
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    /* Mode Setting */
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x39AC, 0x01,
-    /* Digital Crop & Scaling */
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x09,
-    0x040F, 0x00,
-    /* Output Size Setting */
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x09,
-    0x034F, 0x00,
-    /* Clock Setting */
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x87,
-    /* Other Setting */
-    0x3104, 0x00,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    /* Integration Setting */
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    /* Gain Setting */
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    /* PDAF TYPE2 Setting */
-    0x3103, 0x01,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    /* EAE-Bracketing Setting */
-    0x0E00, 0x00,
-    /* PHASE PIX VCID Setting */
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    /* PHASE PIX data type Setting */
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    /* PDAF TYPE2 VCID Setting */
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    /* PDAF TYPE2 data type Setting */
-    0x30A3, 0x30,
-    /* MIPI Global Timing Setting */
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* B2 4096x3072 @60FPS QBIN(VBIN) with Partial-PD VB_max */
-static u16 konkatele_slim_video_setting[] = {
-    0x0110, 0x01,
-    /* MIPI output setting */
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    /* Line Length PCK Setting */
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3850, 0x00,
-    0x3851, 0x7F,
-    /* Frame Length Lines Setting */
-    0x0340, 0x0C,
-    0x0341, 0x63,
-    /* ROI Setting */
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    /* Mode Setting */
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x39AC, 0x01,
-    /* Digital Crop & Scaling */
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    /* Output Size Setting */
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    /* Clock Setting */
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x87,
-    /* Other Setting */
-    0x3104, 0x00,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    /* Integration Setting */
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    /* Gain Setting */
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    /* PDAF TYPE2 Setting */
-    0x3103, 0x01,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    /* EAE-Bracketing Setting */
-    0x0E00, 0x00,
-    /* PHASE PIX VCID Setting */
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    /* PHASE PIX data type Setting */
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    /* PDAF TYPE2 VCID Setting */
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    /* PDAF TYPE2 data type Setting */
-    0x30A3, 0x30,
-    /* MIPI Global Timing Setting */
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* L4-S3 4096x3072 @30.1FPS QBIN 2exp-LBMF with Partial-PD VB_max seamless D*/
-static u16 konkatele_custom1_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3850, 0x00,
-    0x3851, 0x7F,
-    //Frame Length Lines Setting
-    0x0340, 0x18,
-    0x0341, 0x86,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x00,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x01,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x02,
-    0x0E01, 0x03,
-    0x0E02, 0x08,
-    0x0E03, 0x00,
-    0x0E05, 0x03,
-    0x0E06, 0x30,
-    0x0E20, 0x0C,
-    0x0E21, 0x08,
-    0x0E22, 0x13,
-    0x0E23, 0x34,
-    0x0E24, 0x01,
-    0x0E25, 0x00,
-    0x0E27, 0x00,
-    0x0E28, 0x00,
-    0x0E29, 0x00,
-    0x0E2A, 0x01,
-    0x0E2B, 0x2B,
-    0x0E2C, 0x00,
-    0x0E30, 0x00,
-    0x0E31, 0x12,
-    0x0E32, 0x04,
-    0x0E33, 0x30,
-    0x0E34, 0x04,
-    0x0E35, 0x30,
-    0x0E36, 0x04,
-    0x0E37, 0x30,
-    0x0E3C, 0x00,
-    0x0E3D, 0x00,
-    0x0E40, 0x06,
-    0x0E41, 0x04,
-    0x0E42, 0x13,
-    0x0E43, 0x34,
-    0x0E44, 0x01,
-    0x0E45, 0x00,
-    0x0E47, 0x00,
-    0x0E48, 0x00,
-    0x0E49, 0x00,
-    0x0E4A, 0x02,
-    0x0E4B, 0x2B,
-    0x0E4C, 0x00,
-    0x0E50, 0x01,
-    0x0E51, 0x12,
-    0x0E52, 0x03,
-    0x0E53, 0x30,
-    0x0E54, 0x03,
-    0x0E55, 0x30,
-    0x0E56, 0x03,
-    0x0E57, 0x30,
-    0x0E5C, 0x00,
-    0x0E5D, 0x00,
-    0x301C, 0x01,
-    0x31A0, 0x00,
-    0x31A1, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-    0x4112, 0x00, // MON_SEL
-    0x4113, 0x00,
-    0x4048, 0x00, // GPIO_SEL
-    0x4049, 0x00,
-    0x3030, 0x01, // XVS_IO_CTRL
-    0x4101, 0xFF, // MON_XVS
-    0x402D, 0x00, // IO_CTRL_XVS
-    0x5048, 0x00, // MNTTEST1_SEL
-    0x5049, 0x0F,
-    0x520C, 0x00, // VSYNC_POL
-    0x520D, 0x00, // VSYNC_WID
-    0x3031, 0x00, // XVS_CTRL_SEL
-};
-
-/* F5-S3 4096x3072 @30.1FPS Full-RMSC-Crop Qbayer with PDAF VB_max */
-static u16 konkatele_custom2_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x00,
-    0x3851, 0xF6,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0xA8,
-    //ROI Setting
-    0x0344, 0x08,
-    0x0345, 0x00,
-    0x0346, 0x06,
-    0x0347, 0x00,
-    0x0348, 0x17,
-    0x0349, 0xFF,
-    0x034A, 0x11,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* D Full RMSC 15fps bayer with PDAF VB_max */
-static u16 konkatele_custom3_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x00,
-    0x3851, 0xF6,
-    //Frame Length Lines Setting
-    0x0340, 0x19,
-    0x0341, 0x68,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x20,
-    0x040D, 0x00,
-    0x040E, 0x18,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x20,
-    0x034D, 0x00,
-    0x034E, 0x18,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x03,
-    0x38D1, 0x20,
-    0x38D2, 0x03,
-    0x38D3, 0x20,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* D Full RMSC 15fps Qbayer with PDAF VB_max */
-static u16 konkatele_custom4_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x00,
-    0x3851, 0xF6,
-    //Frame Length Lines Setting
-    0x0340, 0x19,
-    0x0341, 0x68,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x20,
-    0x040D, 0x00,
-    0x040E, 0x18,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x20,
-    0x034D, 0x00,
-    0x034E, 0x18,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x03,
-    0x38D1, 0x20,
-    0x38D2, 0x03,
-    0x38D3, 0x20,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* B11-S3 4096x3072 @30.1FPS QBIN(VBIN) with All-PD VB_max seamless D*/
-static u16 konkatele_custom5_setting[] = {
-    0x0110, 0x01,
-    //MIPI  utput setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line  ength PCK Setting
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3850, 0x00,
-    0x3851, 0xCD,
-    //Frame Length Lines Setting
-    0x0340, 0x0F,
-    0x0341, 0x30,
-    //ROI S tting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode  etting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digit l Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Outpu  Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0xB4,
-    0x38A2, 0x00,
-    0x38A3, 0xE8,
-    0x38A8, 0x00,
-    0x38A9, 0x38,
-    0x38AA, 0x00,
-    0x38AB, 0x6A,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x0B,
-    0x38D1, 0x04,
-    0x38D2, 0x08,
-    0x38D3, 0xB0,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x08,
-    0x3B01, 0x8E,
-    0x3B04, 0x00,
-    0x3B05, 0x88,
-    //Integ ation Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain  etting
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF  YPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-B acketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF  YPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF  YPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI  lobal Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* L3-S5 4096x3072 @24FPS QBIN-LBMF w/ Partial PD VB_MAX seamless reg_A-1 and reg_B */
-static u16 konkatele_custom6_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3850, 0x00,
-    0x3851, 0x7F,
-    //Frame Length Lines Setting
-    0x0340, 0x18,
-    0x0341, 0x86,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x00,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x01,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x02,
-    0x0E01, 0x03,
-    0x0E02, 0x08,
-    0x0E03, 0x00,
-    0x0E05, 0x03,
-    0x0E06, 0x30,
-    0x0E20, 0x0C,
-    0x0E21, 0x08,
-    0x0E22, 0x13,
-    0x0E23, 0x34,
-    0x0E24, 0x01,
-    0x0E25, 0x00,
-    0x0E27, 0x00,
-    0x0E28, 0x00,
-    0x0E29, 0x00,
-    0x0E2A, 0x01,
-    0x0E2B, 0x2B,
-    0x0E2C, 0x00,
-    0x0E30, 0x00,
-    0x0E31, 0x12,
-    0x0E32, 0x04,
-    0x0E33, 0x30,
-    0x0E34, 0x04,
-    0x0E35, 0x30,
-    0x0E36, 0x04,
-    0x0E37, 0x30,
-    0x0E3C, 0x00,
-    0x0E3D, 0x00,
-    0x0E40, 0x06,
-    0x0E41, 0x04,
-    0x0E42, 0x13,
-    0x0E43, 0x34,
-    0x0E44, 0x01,
-    0x0E45, 0x00,
-    0x0E47, 0x00,
-    0x0E48, 0x00,
-    0x0E49, 0x00,
-    0x0E4A, 0x02,
-    0x0E4B, 0x2B,
-    0x0E4C, 0x00,
-    0x0E50, 0x01,
-    0x0E51, 0x12,
-    0x0E52, 0x03,
-    0x0E53, 0x30,
-    0x0E54, 0x03,
-    0x0E55, 0x30,
-    0x0E56, 0x03,
-    0x0E57, 0x30,
-    0x0E5C, 0x00,
-    0x0E5D, 0x00,
-    0x301C, 0x01,
-    0x31A0, 0x00,
-    0x31A1, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* V10 1664x1248 @30.1FPS QBIN(VBIN)-V2H2 */
-static u16 konkatele_custom7_setting[] = {
-    0x0110, 0x01,
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    /*Line Length PCK Setting*/
-    0x0342, 0x1F,
-    0x0343, 0x70,
-    0x3850, 0x01,
-    0x3851, 0xAA,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x07,
-    0x0341, 0x50,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x40,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x15,
-    0x034B, 0xBF,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x02,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x04,
-    0x31C0, 0x43,
-    0x31C1, 0x43,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    /*Digital Crop & Scaling*/
-    0x0408, 0x00,
-    0x0409, 0xC0,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x06,
-    0x040D, 0x80,
-    0x040E, 0x04,
-    0x040F, 0xE0,
-    /*Output Size Setting*/
-    0x034C, 0x06,
-    0x034D, 0x80,
-    0x034E, 0x04,
-    0x034F, 0xE0,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x00,
-    0x0307, 0xBD,
-    0x030B, 0x04,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x2C,
-    /*Other Setting*/
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x00,
-    0x38D1, 0x32,
-    0x38D2, 0x00,
-    0x38D3, 0x32,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    /*Integration Setting*/
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    /*Gain Setting*/
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    /*PDAF TYPE2 Setting*/
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    /*EAE-Bracketing Setting*/
-    0x0E00, 0x00,
-    /*PHASE PIX VCID Setting*/
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    /*PHASE PIX data type Setting*/
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    /*PDAF TYPE2 VCID Setting*/
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    /*PDAF TYPE2 data type Setting*/
-    0x30A3, 0x30,
-    /*MIPI Global Timing Setting*/
-    0x084E, 0x00,
-    0x084F, 0x03,
-    0x0850, 0x00,
-    0x0851, 0x03,
-    0x0852, 0x00,
-    0x0853, 0x07,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* F6-S5 4096x2304 @30.1FPS Full-RMSC_Crop w/ PD VB_MAX seamless reg_A-1/B */
-static u16 konkatele_custom8_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x00,
-    0x3851, 0xF6,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0xA8,
-    //ROI Setting
-    0x0344, 0x08,
-    0x0345, 0x00,
-    0x0346, 0x07,
-    0x0347, 0x80,
-    0x0348, 0x17,
-    0x0349, 0xFF,
-    0x034A, 0x10,
-    0x034B, 0x7F,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x09,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x09,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x87,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-static u16 konkatele_custom9_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x09,
-    0x0343, 0xA4,
-    0x3850, 0x00,
-    0x3851, 0x44,
-    //Frame Length Lines Setting
-    0x0340, 0x05,
-    0x0341, 0xBE,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x02,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x43,
-    0x31C1, 0x43,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x08,
-    0x040D, 0x00,
-    0x040E, 0x04,
-    0x040F, 0x80,
-    //Output Size Setting
-    0x034C, 0x08,
-    0x034D, 0x00,
-    0x034E, 0x04,
-    0x034F, 0x80,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x65,
-    //Other Setting
-    0x3104, 0x00,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x00,
-    0x38D1, 0x32,
-    0x38D2, 0x00,
-    0x38D3, 0x32,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    // //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* L4-S3 4096x3072 @30.1FPS QBIN 2exp-LBMF with Partial-PD VB_max seamless D*/
-static u16 konkatele_custom10_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x00,
-    0x3851, 0xF6,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0xA8,
-    //ROI Setting
-    0x0344, 0x08,
-    0x0345, 0x00,
-    0x0346, 0x06,
-    0x0347, 0x00,
-    0x0348, 0x17,
-    0x0349, 0xFF,
-    0x034A, 0x11,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 konkatele_seamless_preview[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3851, 0xCD,
-    0x0340, 0x0F,
-    0x0341, 0x30,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x01,
-    0x38A1, 0xB4,
-    0x38A3, 0xE8,
-    0x38A9, 0x38,
-    0x38AB, 0x6A,
-    0x38D0, 0x0B,
-    0x38D1, 0x04,
-    0x38D2, 0x08,
-    0x38D3, 0xB0,
-    0x3B00, 0x08,
-    0x3B01, 0x8E,
-    0x3B05, 0x88,
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-
-/*B/mode2 F4-S5/mode12*/
-static u16 konkatele_seamless_normal_video[] = {
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3851, 0xCD,
-    0x0340, 0x0F,
-    0x0341, 0x30,
-    0x0344, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x38A1, 0xB4,
-    0x38A3, 0xE8,
-    0x38A9, 0x38,
-    0x38AB, 0x6A,
-    0x38D0, 0x0B,
-    0x38D1, 0x04,
-    0x38D2, 0x08,
-    0x38D3, 0xB0,
-    0x3B00, 0x08,
-    0x3B01, 0x8E,
-    0x3B05, 0x88,
-    0x0204, 0x13,
-    0x0205, 0x34,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 konkatele_seamless_custom1[] = {
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3851, 0x7F,
-    0x0340, 0x18,
-    0x0341, 0x86,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x00,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x01,
-    0x0E00, 0x02,
-    0x0E01, 0x03,
-    0x0E02, 0x08,
-    0x0E03, 0x00,
-    0x0E05, 0x03,
-    0x0E06, 0x30,
-    0x0E20, 0x0C,
-    0x0E21, 0x08,
-    0x0E22, 0x13,
-    0x0E23, 0x34,
-    0x0E24, 0x01,
-    0x0E25, 0x00,
-    0x0E27, 0x00,
-    0x0E28, 0x00,
-    0x0E29, 0x00,
-    0x0E2A, 0x01,
-    0x0E2B, 0x2B,
-    0x0E2C, 0x00,
-    0x0E30, 0x00,
-    0x0E31, 0x12,
-    0x0E32, 0x04,
-    0x0E33, 0x30,
-    0x0E34, 0x04,
-    0x0E35, 0x30,
-    0x0E36, 0x04,
-    0x0E37, 0x30,
-    0x0E3C, 0x00,
-    0x0E3D, 0x00,
-    0x0E40, 0x06,
-    0x0E41, 0x04,
-    0x0E42, 0x13,
-    0x0E43, 0x34,
-    0x0E44, 0x01,
-    0x0E45, 0x00,
-    0x0E47, 0x00,
-    0x0E48, 0x00,
-    0x0E49, 0x00,
-    0x0E4A, 0x02,
-    0x0E4B, 0x2B,
-    0x0E4C, 0x00,
-    0x0E50, 0x01,
-    0x0E51, 0x12,
-    0x0E52, 0x03,
-    0x0E53, 0x30,
-    0x0E54, 0x03,
-    0x0E55, 0x30,
-    0x0E56, 0x03,
-    0x0E57, 0x30,
-    0x0E5C, 0x00,
-    0x0E5D, 0x00,
-    0x301C, 0x01,
-    0x31A0, 0x00,
-    0x31A1, 0x00,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 konkatele_seamless_custom2[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xF6,
-    0x0340, 0x0C,
-    0x0341, 0xA8,
-    0x0344, 0x08,
-    0x0346, 0x06,
-    0x0348, 0x17,
-    0x034A, 0x11,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x01,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 konkatele_seamless_custom3[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xF6,
-    0x0340, 0x19,
-    0x0341, 0x68,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x323C, 0x01,
-    0x040C, 0x20,
-    0x040E, 0x18,
-    0x034C, 0x20,
-    0x034E, 0x18,
-    0x3104, 0x01,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x20,
-    0x38D2, 0x03,
-    0x38D3, 0x20,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 konkatele_seamless_custom4[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xF6,
-    0x0340, 0x19,
-    0x0341, 0x68,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x040C, 0x20,
-    0x040E, 0x18,
-    0x034C, 0x20,
-    0x034E, 0x18,
-    0x3104, 0x01,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x20,
-    0x38D2, 0x03,
-    0x38D3, 0x20,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-
-/*B11-S3/mode9 L4-S3/mode10*/
-static u16 konkatele_seamless_custom5[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3851, 0xCD,
-    0x0340, 0x0F,
-    0x0341, 0x30,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x01,
-    0x38A1, 0xB4,
-    0x38A3, 0xE8,
-    0x38A9, 0x38,
-    0x38AB, 0x6A,
-    0x38D0, 0x0B,
-    0x38D1, 0x04,
-    0x38D2, 0x08,
-    0x38D3, 0xB0,
-    0x3B00, 0x08,
-    0x3B01, 0x8E,
-    0x3B05, 0x88,
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-
-/*B11-S3/mode9 L4-S3/mode10*/
-static u16 konkatele_seamless_custom6[] = {
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3851, 0x7F,
-    0x0340, 0x18,
-    0x0341, 0x86,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x00,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x01,
-    0x0E00, 0x02,
-    0x0E01, 0x03,
-    0x0E02, 0x08,
-    0x0E03, 0x00,
-    0x0E05, 0x03,
-    0x0E06, 0x30,
-    0x0E20, 0x0C,
-    0x0E21, 0x08,
-    0x0E22, 0x13,
-    0x0E23, 0x34,
-    0x0E24, 0x01,
-    0x0E25, 0x00,
-    0x0E27, 0x00,
-    0x0E28, 0x00,
-    0x0E29, 0x00,
-    0x0E2A, 0x01,
-    0x0E2B, 0x2B,
-    0x0E2C, 0x00,
-    0x0E30, 0x00,
-    0x0E31, 0x12,
-    0x0E32, 0x04,
-    0x0E33, 0x30,
-    0x0E34, 0x04,
-    0x0E35, 0x30,
-    0x0E36, 0x04,
-    0x0E37, 0x30,
-    0x0E3C, 0x00,
-    0x0E3D, 0x00,
-    0x0E40, 0x06,
-    0x0E41, 0x04,
-    0x0E42, 0x13,
-    0x0E43, 0x34,
-    0x0E44, 0x01,
-    0x0E45, 0x00,
-    0x0E47, 0x00,
-    0x0E48, 0x00,
-    0x0E49, 0x00,
-    0x0E4A, 0x02,
-    0x0E4B, 0x2B,
-    0x0E4C, 0x00,
-    0x0E50, 0x01,
-    0x0E51, 0x12,
-    0x0E52, 0x03,
-    0x0E53, 0x30,
-    0x0E54, 0x03,
-    0x0E55, 0x30,
-    0x0E56, 0x03,
-    0x0E57, 0x30,
-    0x0E5C, 0x00,
-    0x0E5D, 0x00,
-    0x301C, 0x01,
-    0x31A0, 0x00,
-    0x31A1, 0x00,
-};
-
-/*B/mode2 F4-S5/mode12*/
-static u16 konkatele_seamless_custom8[] = {
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xF6,
-    0x0340, 0x0C,
-    0x0341, 0xA8,
-    0x0344, 0x08,
-    0x0346, 0x07,
-    0x0347, 0x80,
-    0x0348, 0x17,
-    0x034A, 0x10,
-    0x034B, 0x7F,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 konkatele_seamless_custom10[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0341, 0xA8,
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xF6,
-    0x0340, 0x0C,
-    0x0341, 0xB4,
-    0x0344, 0x08,
-    0x0346, 0x06,
-    0x0348, 0x17,
-    0x034A, 0x11,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x323C, 0x01,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x01,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatele_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatele_ana_gain_table.h
deleted file mode 100644
index 8548477c..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatele_ana_gain_table.h
+++ /dev/null
@@ -1,1907 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkatele_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __KONKATELE_ANA_GAIN_TABLE_H__
-#define __KONKATELE_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 konkatele_ana_gain_table[] = {
-	1024,
-	1025,
-	1026,
-	1027,
-	1028,
-	1029,
-	1030,
-	1031,
-	1032,
-	1033,
-	1034,
-	1035,
-	1036,
-	1037,
-	1038,
-	1039,
-	1040,
-	1041,
-	1042,
-	1043,
-	1044,
-	1045,
-	1046,
-	1047,
-	1048,
-	1049,
-	1050,
-	1051,
-	1052,
-	1053,
-	1054,
-	1055,
-	1057,
-	1058,
-	1059,
-	1060,
-	1061,
-	1062,
-	1063,
-	1064,
-	1065,
-	1066,
-	1067,
-	1068,
-	1069,
-	1071,
-	1072,
-	1073,
-	1074,
-	1075,
-	1076,
-	1077,
-	1078,
-	1079,
-	1081,
-	1082,
-	1083,
-	1084,
-	1085,
-	1086,
-	1087,
-	1088,
-	1089,
-	1091,
-	1092,
-	1093,
-	1094,
-	1095,
-	1096,
-	1097,
-	1099,
-	1100,
-	1101,
-	1102,
-	1103,
-	1104,
-	1106,
-	1107,
-	1108,
-	1109,
-	1110,
-	1111,
-	1113,
-	1114,
-	1115,
-	1116,
-	1117,
-	1119,
-	1120,
-	1121,
-	1122,
-	1123,
-	1125,
-	1126,
-	1127,
-	1128,
-	1129,
-	1131,
-	1132,
-	1133,
-	1134,
-	1136,
-	1137,
-	1138,
-	1139,
-	1140,
-	1142,
-	1143,
-	1144,
-	1145,
-	1147,
-	1148,
-	1149,
-	1151,
-	1152,
-	1153,
-	1154,
-	1156,
-	1157,
-	1158,
-	1159,
-	1161,
-	1162,
-	1163,
-	1165,
-	1166,
-	1167,
-	1168,
-	1170,
-	1171,
-	1172,
-	1174,
-	1175,
-	1176,
-	1178,
-	1179,
-	1180,
-	1182,
-	1183,
-	1184,
-	1186,
-	1187,
-	1188,
-	1190,
-	1191,
-	1192,
-	1194,
-	1195,
-	1197,
-	1198,
-	1199,
-	1201,
-	1202,
-	1203,
-	1205,
-	1206,
-	1208,
-	1209,
-	1210,
-	1212,
-	1213,
-	1215,
-	1216,
-	1217,
-	1219,
-	1220,
-	1222,
-	1223,
-	1224,
-	1226,
-	1227,
-	1229,
-	1230,
-	1232,
-	1233,
-	1235,
-	1236,
-	1237,
-	1239,
-	1240,
-	1242,
-	1243,
-	1245,
-	1246,
-	1248,
-	1249,
-	1251,
-	1252,
-	1254,
-	1255,
-	1257,
-	1258,
-	1260,
-	1261,
-	1263,
-	1264,
-	1266,
-	1267,
-	1269,
-	1270,
-	1272,
-	1274,
-	1275,
-	1277,
-	1278,
-	1280,
-	1281,
-	1283,
-	1285,
-	1286,
-	1288,
-	1289,
-	1291,
-	1292,
-	1294,
-	1296,
-	1297,
-	1299,
-	1300,
-	1302,
-	1304,
-	1305,
-	1307,
-	1309,
-	1310,
-	1312,
-	1314,
-	1315,
-	1317,
-	1318,
-	1320,
-	1322,
-	1323,
-	1325,
-	1327,
-	1328,
-	1330,
-	1332,
-	1334,
-	1335,
-	1337,
-	1339,
-	1340,
-	1342,
-	1344,
-	1346,
-	1347,
-	1349,
-	1351,
-	1353,
-	1354,
-	1356,
-	1358,
-	1360,
-	1361,
-	1363,
-	1365,
-	1367,
-	1368,
-	1370,
-	1372,
-	1374,
-	1376,
-	1377,
-	1379,
-	1381,
-	1383,
-	1385,
-	1387,
-	1388,
-	1390,
-	1392,
-	1394,
-	1396,
-	1398,
-	1399,
-	1401,
-	1403,
-	1405,
-	1407,
-	1409,
-	1411,
-	1413,
-	1415,
-	1416,
-	1418,
-	1420,
-	1422,
-	1424,
-	1426,
-	1428,
-	1430,
-	1432,
-	1434,
-	1436,
-	1438,
-	1440,
-	1442,
-	1444,
-	1446,
-	1448,
-	1450,
-	1452,
-	1454,
-	1456,
-	1458,
-	1460,
-	1462,
-	1464,
-	1466,
-	1468,
-	1470,
-	1472,
-	1474,
-	1476,
-	1478,
-	1481,
-	1483,
-	1485,
-	1487,
-	1489,
-	1491,
-	1493,
-	1495,
-	1497,
-	1500,
-	1502,
-	1504,
-	1506,
-	1508,
-	1510,
-	1513,
-	1515,
-	1517,
-	1519,
-	1521,
-	1524,
-	1526,
-	1528,
-	1530,
-	1533,
-	1535,
-	1537,
-	1539,
-	1542,
-	1544,
-	1546,
-	1548,
-	1551,
-	1553,
-	1555,
-	1558,
-	1560,
-	1562,
-	1565,
-	1567,
-	1569,
-	1572,
-	1574,
-	1576,
-	1579,
-	1581,
-	1583,
-	1586,
-	1588,
-	1591,
-	1593,
-	1596,
-	1598,
-	1600,
-	1603,
-	1605,
-	1608,
-	1610,
-	1613,
-	1615,
-	1618,
-	1620,
-	1623,
-	1625,
-	1628,
-	1630,
-	1633,
-	1635,
-	1638,
-	1640,
-	1643,
-	1646,
-	1648,
-	1651,
-	1653,
-	1656,
-	1659,
-	1661,
-	1664,
-	1667,
-	1669,
-	1672,
-	1675,
-	1677,
-	1680,
-	1683,
-	1685,
-	1688,
-	1691,
-	1693,
-	1696,
-	1699,
-	1702,
-	1705,
-	1707,
-	1710,
-	1713,
-	1716,
-	1718,
-	1721,
-	1724,
-	1727,
-	1730,
-	1733,
-	1736,
-	1738,
-	1741,
-	1744,
-	1747,
-	1750,
-	1753,
-	1756,
-	1759,
-	1762,
-	1765,
-	1768,
-	1771,
-	1774,
-	1777,
-	1780,
-	1783,
-	1786,
-	1789,
-	1792,
-	1795,
-	1798,
-	1801,
-	1804,
-	1807,
-	1811,
-	1814,
-	1817,
-	1820,
-	1823,
-	1826,
-	1829,
-	1833,
-	1836,
-	1839,
-	1842,
-	1846,
-	1849,
-	1852,
-	1855,
-	1859,
-	1862,
-	1865,
-	1869,
-	1872,
-	1875,
-	1879,
-	1882,
-	1885,
-	1889,
-	1892,
-	1896,
-	1899,
-	1903,
-	1906,
-	1909,
-	1913,
-	1916,
-	1920,
-	1923,
-	1927,
-	1931,
-	1934,
-	1938,
-	1941,
-	1945,
-	1949,
-	1952,
-	1956,
-	1959,
-	1963,
-	1967,
-	1971,
-	1974,
-	1978,
-	1982,
-	1985,
-	1989,
-	1993,
-	1997,
-	2001,
-	2004,
-	2008,
-	2012,
-	2016,
-	2020,
-	2024,
-	2028,
-	2032,
-	2036,
-	2040,
-	2044,
-	2048,
-	2052,
-	2056,
-	2060,
-	2064,
-	2068,
-	2072,
-	2076,
-	2080,
-	2084,
-	2088,
-	2092,
-	2097,
-	2101,
-	2105,
-	2109,
-	2114,
-	2118,
-	2122,
-	2126,
-	2131,
-	2135,
-	2139,
-	2144,
-	2148,
-	2153,
-	2157,
-	2162,
-	2166,
-	2170,
-	2175,
-	2179,
-	2184,
-	2189,
-	2193,
-	2198,
-	2202,
-	2207,
-	2212,
-	2216,
-	2221,
-	2226,
-	2231,
-	2235,
-	2240,
-	2245,
-	2250,
-	2255,
-	2259,
-	2264,
-	2269,
-	2274,
-	2279,
-	2284,
-	2289,
-	2294,
-	2299,
-	2304,
-	2309,
-	2314,
-	2319,
-	2325,
-	2330,
-	2335,
-	2340,
-	2345,
-	2351,
-	2356,
-	2361,
-	2366,
-	2372,
-	2377,
-	2383,
-	2388,
-	2394,
-	2399,
-	2404,
-	2410,
-	2416,
-	2421,
-	2427,
-	2432,
-	2438,
-	2444,
-	2449,
-	2455,
-	2461,
-	2467,
-	2473,
-	2478,
-	2484,
-	2490,
-	2496,
-	2502,
-	2508,
-	2514,
-	2520,
-	2526,
-	2532,
-	2538,
-	2545,
-	2551,
-	2557,
-	2563,
-	2570,
-	2576,
-	2582,
-	2589,
-	2595,
-	2601,
-	2608,
-	2614,
-	2621,
-	2628,
-	2634,
-	2641,
-	2647,
-	2654,
-	2661,
-	2668,
-	2674,
-	2681,
-	2688,
-	2695,
-	2702,
-	2709,
-	2716,
-	2723,
-	2730,
-	2737,
-	2744,
-	2752,
-	2759,
-	2766,
-	2774,
-	2781,
-	2788,
-	2796,
-	2803,
-	2811,
-	2818,
-	2826,
-	2833,
-	2841,
-	2849,
-	2857,
-	2864,
-	2872,
-	2880,
-	2888,
-	2896,
-	2904,
-	2912,
-	2920,
-	2928,
-	2937,
-	2945,
-	2953,
-	2962,
-	2970,
-	2978,
-	2987,
-	2995,
-	3004,
-	3013,
-	3021,
-	3030,
-	3039,
-	3048,
-	3057,
-	3066,
-	3075,
-	3084,
-	3093,
-	3102,
-	3111,
-	3120,
-	3130,
-	3139,
-	3148,
-	3158,
-	3167,
-	3177,
-	3187,
-	3196,
-	3206,
-	3216,
-	3226,
-	3236,
-	3246,
-	3256,
-	3266,
-	3276,
-	3287,
-	3297,
-	3307,
-	3318,
-	3328,
-	3339,
-	3350,
-	3360,
-	3371,
-	3382,
-	3393,
-	3404,
-	3415,
-	3426,
-	3437,
-	3449,
-	3460,
-	3472,
-	3483,
-	3495,
-	3506,
-	3518,
-	3530,
-	3542,
-	3554,
-	3566,
-	3578,
-	3591,
-	3603,
-	3615,
-	3628,
-	3640,
-	3653,
-	3666,
-	3679,
-	3692,
-	3705,
-	3718,
-	3731,
-	3744,
-	3758,
-	3771,
-	3785,
-	3799,
-	3813,
-	3826,
-	3840,
-	3855,
-	3869,
-	3883,
-	3898,
-	3912,
-	3927,
-	3942,
-	3956,
-	3971,
-	3986,
-	4002,
-	4017,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4161,
-	4177,
-	4194,
-	4211,
-	4228,
-	4245,
-	4262,
-	4279,
-	4297,
-	4315,
-	4332,
-	4350,
-	4369,
-	4387,
-	4405,
-	4424,
-	4443,
-	4462,
-	4481,
-	4500,
-	4519,
-	4539,
-	4559,
-	4578,
-	4599,
-	4619,
-	4639,
-	4660,
-	4681,
-	4702,
-	4723,
-	4744,
-	4766,
-	4788,
-	4809,
-	4832,
-	4854,
-	4877,
-	4899,
-	4922,
-	4946,
-	4969,
-	4993,
-	5017,
-	5041,
-	5065,
-	5090,
-	5115,
-	5140,
-	5165,
-	5190,
-	5216,
-	5242,
-	5269,
-	5295,
-	5322,
-	5349,
-	5377,
-	5405,
-	5433,
-	5461,
-	5489,
-	5518,
-	5548,
-	5577,
-	5607,
-	5637,
-	5667,
-	5698,
-	5729,
-	5761,
-	5793,
-	5825,
-	5857,
-	5890,
-	5924,
-	5957,
-	5991,
-	6026,
-	6061,
-	6096,
-	6132,
-	6168,
-	6204,
-	6241,
-	6278,
-	6316,
-	6355,
-	6393,
-	6432,
-	6472,
-	6512,
-	6553,
-	6594,
-	6636,
-	6678,
-	6721,
-	6765,
-	6808,
-	6853,
-	6898,
-	6944,
-	6990,
-	7037,
-	7084,
-	7133,
-	7182,
-	7231,
-	7281,
-	7332,
-	7384,
-	7436,
-	7489,
-	7543,
-	7598,
-	7653,
-	7710,
-	7767,
-	7825,
-	7884,
-	7943,
-	8004,
-	8065,
-	8128,
-	8192,
-	8256,
-	8322,
-	8388,
-	8456,
-	8525,
-	8594,
-	8665,
-	8738,
-	8811,
-	8886,
-	8962,
-	9039,
-	9118,
-	9198,
-	9279,
-	9362,
-	9446,
-	9532,
-	9619,
-	9709,
-	9799,
-	9892,
-	9986,
-	10082,
-	10180,
-	10280,
-	10381,
-	10485,
-	10591,
-	10699,
-	10810,
-	10922,
-	11037,
-	11155,
-	11275,
-	11397,
-	11522,
-	11650,
-	11781,
-	11915,
-	12052,
-	12192,
-	12336,
-	12483,
-	12633,
-	12787,
-	12945,
-	13107,
-	13273,
-	13443,
-	13617,
-	13797,
-	13981,
-	14169,
-	14364,
-	14563,
-	14768,
-	14979,
-	15196,
-	15420,
-	15650,
-	15887,
-	16131,
-	16384,
-	16644,
-	16912,
-	17189,
-	17476,
-	17772,
-	18078,
-	18396,
-	18724,
-	19065,
-	19418,
-	19784,
-	20164,
-	20560,
-	20971,
-	21399,
-	21845,
-	22310,
-	22795,
-	23301,
-	23831,
-	24385,
-	24966,
-	25575,
-	26214,
-	26886,
-	27594,
-	28339,
-	29127,
-	29959,
-	30840,
-	31775,
-	32768,
-	33825,
-	34952,
-	36157,
-	37449,
-	38836,
-	40329,
-	41943,
-	43690,
-	45590,
-	47662,
-	49932,
-	52428,
-	55188,
-	58254,
-	61680,
-	65536,
-	65536,
-};
-
-#define KONKATELE_GAIN_TABLE_SIZE 432
-static kal_uint32 konkatele_gain_table[KONKATELE_GAIN_TABLE_SIZE] = {
-	1024,
-	1040,
-	1056,
-	1072,
-	1088,
-	1104,
-	1120,
-	1136,
-	1152,
-	1168,
-	1184,
-	1200,
-	1216,
-	1232,
-	1248,
-	1264,
-	1280,
-	1296,
-	1312,
-	1328,
-	1344,
-	1360,
-	1376,
-	1392,
-	1408,
-	1424,
-	1440,
-	1456,
-	1472,
-	1488,
-	1504,
-	1520,
-	1536,
-	1552,
-	1568,
-	1584,
-	1600,
-	1616,
-	1632,
-	1648,
-	1664,
-	1680,
-	1696,
-	1712,
-	1728,
-	1744,
-	1760,
-	1776,
-	1792,
-	1808,
-	1824,
-	1840,
-	1856,
-	1872,
-	1888,
-	1904,
-	1920,
-	1936,
-	1952,
-	1968,
-	1984,
-	2000,
-	2016,
-	2032,
-	2048,
-	2064,
-	2080,
-	2096,
-	2112,
-	2128,
-	2144,
-	2160,
-	2176,
-	2192,
-	2208,
-	2224,
-	2240,
-	2256,
-	2272,
-	2288,
-	2304,
-	2320,
-	2336,
-	2352,
-	2368,
-	2384,
-	2400,
-	2416,
-	2432,
-	2448,
-	2464,
-	2480,
-	2496,
-	2512,
-	2528,
-	2544,
-	2560,
-	2576,
-	2592,
-	2608,
-	2624,
-	2640,
-	2656,
-	2672,
-	2688,
-	2704,
-	2720,
-	2736,
-	2752,
-	2768,
-	2784,
-	2800,
-	2816,
-	2832,
-	2848,
-	2864,
-	2880,
-	2896,
-	2912,
-	2928,
-	2944,
-	2960,
-	2976,
-	2992,
-	3008,
-	3024,
-	3040,
-	3056,
-	3072,
-	3088,
-	3104,
-	3120,
-	3136,
-	3152,
-	3168,
-	3184,
-	3200,
-	3216,
-	3232,
-	3248,
-	3264,
-	3280,
-	3296,
-	3312,
-	3328,
-	3344,
-	3360,
-	3376,
-	3392,
-	3408,
-	3424,
-	3440,
-	3456,
-	3472,
-	3488,
-	3504,
-	3520,
-	3536,
-	3552,
-	3568,
-	3584,
-	3600,
-	3616,
-	3632,
-	3648,
-	3664,
-	3680,
-	3696,
-	3712,
-	3728,
-	3744,
-	3760,
-	3776,
-	3792,
-	3808,
-	3824,
-	3840,
-	3856,
-	3872,
-	3888,
-	3904,
-	3920,
-	3936,
-	3952,
-	3968,
-	3984,
-	4000,
-	4016,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4160,
-	4176,
-	4192,
-	4208,
-	4224,
-	4240,
-	4256,
-	4272,
-	4288,
-	4304,
-	4320,
-	4336,
-	4368,
-	4384,
-	4400,
-	4416,
-	4432,
-	4448,
-	4480,
-	4496,
-	4512,
-	4528,
-	4544,
-	4576,
-	4592,
-	4608,
-	4624,
-	4656,
-	4672,
-	4688,
-	4720,
-	4736,
-	4752,
-	4784,
-	4800,
-	4832,
-	4848,
-	4864,
-	4896,
-	4912,
-	4944,
-	4960,
-	4992,
-	5008,
-	5040,
-	5088,
-	5104,
-	5136,
-	5152,
-	5184,
-	5216,
-	5232,
-	5264,
-	5280,
-	5312,
-	5344,
-	5376,
-	5392,
-	5424,
-	5456,
-	5488,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6096,
-	6128,
-	6160,
-	6192,
-	6240,
-	6272,
-	6304,
-	6352,
-	6384,
-	6432,
-	6464,
-	6512,
-	6544,
-	6592,
-	6624,
-	6672,
-	6720,
-	6752,
-	6800,
-	6848,
-	6896,
-	6944,
-	6976,
-	7024,
-	7072,
-	7120,
-	7168,
-	7216,
-	7280,
-	7328,
-	7376,
-	7424,
-	7488,
-	7536,
-	7584,
-	7648,
-	7696,
-	7760,
-	7824,
-	7872,
-	7936,
-	8000,
-	8064,
-	8128,
-	8192,
-	8256,
-	8320,
-	8384,
-	8448,
-	8512,
-	8592,
-	8656,
-	8736,
-	8800,
-	8880,
-	8960,
-	9024,
-	9104,
-	9184,
-	9264,
-	9360,
-	9440,
-	9520,
-	9616,
-	9696,
-	9792,
-	9888,
-	9984,
-	10080,
-	10176,
-	10272,
-	10368,
-	10480,
-	10576,
-	10688,
-	10800,
-	10912,
-	11024,
-	11152,
-	11264,
-	11392,
-	11520,
-	11648,
-	11776,
-	11904,
-	12048,
-	12192,
-	12336,
-	12480,
-	12624,
-	12784,
-	12944,
-	13104,
-	13264,
-	13440,
-	13616,
-	13792,
-	13968,
-	14160,
-	14352,
-	14560,
-	14768,
-	14976,
-	15184,
-	15408,
-	15648,
-	15872,
-	16128,
-	16384,
-	16640,
-	16912,
-	17184,
-	17472,
-	17760,
-	18064,
-	18384,
-	18720,
-	19056,
-	19408,
-	19776,
-	20160,
-	20560,
-	20960,
-	21392,
-	21840,
-	22304,
-	22784,
-	23296,
-	23824,
-	24384,
-	24960,
-	25568,
-	26208,
-	26880,
-	27584,
-	28336,
-	29120,
-	29952,
-	30832,
-	31760,
-	32768,
-	33824,
-	34944,
-	36144,
-	37440,
-	38832,
-	40320,
-	41936,
-	43680,
-	45584,
-	47648,
-	49920,
-	52416,
-	55184,
-	58240,
-	61680,
-	65536,
-};
-
-static kal_uint16 konkatele_gain_reg[KONKATELE_GAIN_TABLE_SIZE] = {
-	0,
-	240,
-	496,
-	720,
-	944,
-	1168,
-	1392,
-	1616,
-	1808,
-	2000,
-	2192,
-	2384,
-	2576,
-	2768,
-	2928,
-	3088,
-	3280,
-	3408,
-	3568,
-	3728,
-	3888,
-	4048,
-	4176,
-	4304,
-	4464,
-	4592,
-	4720,
-	4848,
-	4976,
-	5104,
-	5200,
-	5328,
-	5456,
-	5552,
-	5680,
-	5776,
-	5872,
-	6000,
-	6096,
-	6192,
-	6288,
-	6384,
-	6480,
-	6576,
-	6672,
-	6736,
-	6832,
-	6928,
-	7024,
-	7088,
-	7184,
-	7248,
-	7344,
-	7408,
-	7472,
-	7568,
-	7632,
-	7696,
-	7760,
-	7856,
-	7920,
-	7984,
-	8048,
-	8112,
-	8192,
-	8240,
-	8304,
-	8368,
-	8432,
-	8496,
-	8544,
-	8608,
-	8672,
-	8720,
-	8784,
-	8832,
-	8880,
-	8944,
-	8992,
-	9040,
-	9088,
-	9152,
-	9200,
-	9248,
-	9296,
-	9344,
-	9392,
-	9440,
-	9472,
-	9520,
-	9568,
-	9616,
-	9648,
-	9696,
-	9744,
-	9776,
-	9824,
-	9856,
-	9904,
-	9936,
-	9984,
-	10016,
-	10064,
-	10096,
-	10128,
-	10176,
-	10208,
-	10240,
-	10272,
-	10320,
-	10352,
-	10384,
-	10416,
-	10448,
-	10480,
-	10512,
-	10544,
-	10576,
-	10608,
-	10640,
-	10672,
-	10704,
-	10736,
-	10768,
-	10800,
-	10832,
-	10864,
-	10880,
-	10912,
-	10944,
-	10976,
-	10992,
-	11024,
-	11056,
-	11072,
-	11104,
-	11136,
-	11152,
-	11184,
-	11216,
-	11232,
-	11264,
-	11280,
-	11312,
-	11328,
-	11360,
-	11376,
-	11408,
-	11424,
-	11456,
-	11472,
-	11504,
-	11520,
-	11536,
-	11568,
-	11584,
-	11616,
-	11632,
-	11648,
-	11680,
-	11696,
-	11712,
-	11744,
-	11760,
-	11776,
-	11792,
-	11824,
-	11840,
-	11856,
-	11872,
-	11888,
-	11920,
-	11936,
-	11952,
-	11968,
-	11984,
-	12000,
-	12032,
-	12048,
-	12064,
-	12080,
-	12096,
-	12128,
-	12144,
-	12160,
-	12176,
-	12192,
-	12208,
-	12224,
-	12240,
-	12256,
-	12272,
-	12288,
-	12304,
-	12320,
-	12336,
-	12352,
-	12368,
-	12384,
-	12400,
-	12416,
-	12432,
-	12448,
-	12464,
-	12480,
-	12496,
-	12512,
-	12528,
-	12544,
-	12560,
-	12576,
-	12592,
-	12608,
-	12624,
-	12640,
-	12656,
-	12672,
-	12688,
-	12704,
-	12720,
-	12736,
-	12752,
-	12768,
-	12784,
-	12800,
-	12816,
-	12832,
-	12848,
-	12864,
-	12880,
-	12896,
-	12912,
-	12928,
-	12944,
-	12960,
-	12976,
-	12992,
-	13008,
-	13024,
-	13040,
-	13056,
-	13088,
-	13104,
-	13120,
-	13136,
-	13152,
-	13168,
-	13184,
-	13200,
-	13216,
-	13232,
-	13248,
-	13264,
-	13280,
-	13296,
-	13312,
-	13328,
-	13344,
-	13360,
-	13376,
-	13392,
-	13408,
-	13424,
-	13440,
-	13456,
-	13472,
-	13488,
-	13504,
-	13520,
-	13536,
-	13552,
-	13568,
-	13584,
-	13600,
-	13616,
-	13632,
-	13648,
-	13664,
-	13680,
-	13696,
-	13712,
-	13728,
-	13744,
-	13760,
-	13776,
-	13792,
-	13808,
-	13824,
-	13840,
-	13856,
-	13872,
-	13888,
-	13904,
-	13920,
-	13936,
-	13952,
-	13968,
-	13984,
-	14000,
-	14016,
-	14032,
-	14048,
-	14064,
-	14080,
-	14096,
-	14112,
-	14128,
-	14144,
-	14160,
-	14176,
-	14192,
-	14208,
-	14224,
-	14240,
-	14256,
-	14272,
-	14288,
-	14304,
-	14320,
-	14336,
-	14352,
-	14368,
-	14384,
-	14400,
-	14416,
-	14432,
-	14448,
-	14464,
-	14480,
-	14496,
-	14512,
-	14528,
-	14544,
-	14560,
-	14576,
-	14592,
-	14608,
-	14624,
-	14640,
-	14656,
-	14672,
-	14688,
-	14704,
-	14720,
-	14736,
-	14752,
-	14768,
-	14784,
-	14800,
-	14816,
-	14832,
-	14848,
-	14864,
-	14880,
-	14896,
-	14912,
-	14928,
-	14944,
-	14960,
-	14976,
-	14992,
-	15008,
-	15024,
-	15040,
-	15056,
-	15072,
-	15088,
-	15104,
-	15120,
-	15136,
-	15152,
-	15168,
-	15184,
-	15200,
-	15216,
-	15232,
-	15248,
-	15264,
-	15280,
-	15296,
-	15312,
-	15328,
-	15344,
-	15360,
-	15376,
-	15392,
-	15408,
-	15424,
-	15440,
-	15456,
-	15472,
-	15488,
-	15504,
-	15520,
-	15536,
-	15552,
-	15568,
-	15584,
-	15600,
-	15616,
-	15632,
-	15648,
-	15664,
-	15680,
-	15696,
-	15712,
-	15728,
-	15744,
-	15760,
-	15776,
-	15792,
-	15808,
-	15824,
-	15840,
-	15856,
-	15872,
-	15888,
-	15904,
-	15920,
-	15936,
-	15952,
-	15968,
-	15984,
-	16000,
-	16016,
-	16032,
-	16048,
-	16064,
-	16080,
-	16096,
-	16112,
-	16128,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatelemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatelemipiraw_Sensor.c
deleted file mode 100755
index fef32c88..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatelemipiraw_Sensor.c
+++ /dev/null
@@ -1,2575 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkatelemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "konkatelemipiraw_Sensor.h"
-
-#define KONKATELE_EEPROM_READ_ID	0xA1
-#define KONKATELE_EEPROM_WRITE_ID	0xA0
-#define KONKATELE_MAX_OFFSET		0x4000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "konkatele_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x8000
-#define SENSOR_QSC_ENABLE_REG 0x3206
-#define SPC_OTP_ADDR_PART1    0xD200
-#define SPC_OTP_ADDR_PART2    0xD300
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x1832
-#define OTP_QCOM_PDAF_OFFSET_DATA_LENGTH 0x650
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x5E4
-#define OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR 0x39b0
-#define GET_SENSOR_ID_RETRY_CNT    5
-
-static int wr_ob_type = 0;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-static kal_uint8 otp_qcom_pdaf_offset_data[OTP_QCOM_PDAF_OFFSET_DATA_LENGTH] = {0};
-static void set_sensor_cali(void *arg);
-static int get_sensor_temperature(void *arg);
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int konkatele_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkatele_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkatele_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkatele_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkatele_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkatele_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkatele_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int konkatele_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void get_sensor_cali(void* arg);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int konkatele_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkatele_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkatele_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkatele_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data);
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id);
-/* STRUCT */
-
-static struct eeprom_map_info konkatele_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008,0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C1, 0x00C2, 17, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x3150, 0x37E9, 0x37EA, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x42C0, 0x0000, 0x0000, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x3BC0, 0x3F3D, 0x3F3E, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0x3F40, 0x42BD, 0x42BE, CALI_DATA_SLAVE_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, konkatele_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, konkatele_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, konkatele_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, konkatele_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, konkatele_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, konkatele_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, konkatele_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, konkatele_set_awb_gain},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, konkatele_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_OFFSET_DATA, konkatele_get_otp_qcom_pdaf_offset_data},
-	{SENSOR_FEATURE_SET_AWB_GAIN, konkatele_set_awb_gain},
-	{SENSOR_FEATURE_SET_GAIN, konkatele_set_gain},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01B1012F,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA0,
-
-		.qsc_support = true,
-		.qsc_size = 0x0C00,
-		.addr_qsc = 0x2210,
-		.sensor_reg_addr_qsc = 0xC000,
-
-		.pdc_support = true,
-		.pdc_size = 0x180,
-		.addr_pdc = 0x2E20,
-		.sensor_reg_addr_pdc = 0xD200,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {48, 36}, {2048, 1920}, {0, 0}, {2048, 1536},
-	},
-	.iMirrorFlip = IMAGE_H_MIRROR,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {192, 144}, {2048, 1920}, {0, 0}, {2048, 1536},
-	},
-	.iMirrorFlip = IMAGE_H_MIRROR,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {48, 36}, {2048, 1920}, {0, 0}, {2048, 1536},
-	},
-	.iMirrorFlip = IMAGE_H_MIRROR,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2, // QPD HVBIN
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,// all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 2,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_partial_pd_info = {
-	.i4OffsetX = 16,
-	.i4OffsetY = 32,
-	.i4PitchX = 8,
-	.i4PitchY = 16,
-	.i4PairNum = 4,
-	.i4SubBlkW = 8,
-	// .i4SubBlkH = 16,
-	.i4SubBlkH = 4,
-	.i4PosL = {{16, 35}, {20, 37}, {19, 42}, {23, 44}},
-	.i4PosR = {{18, 33}, {22, 39}, {17, 40}, {21, 46}},
-	.i4BlockNumX = 496,
-	.i4BlockNumY = 188,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {48, 36}, {2048, 1920}, {0, 0}, {2048, 1536},
-	},
-	.iMirrorFlip = IMAGE_H_MIRROR,//0:IMAGE_NORMAL,1:IMAGE_H_MIRROR,2:IMAGE_V_MIRROR,3:IMAGE_HV_MIRROR
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4ModeIndex = 0,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	/* VC's PD pattern description */
-	.sPDMapInfo[0] = {
-		.i4VCFeature = VC_PDAF_STATS_NE_PIX_1,
-		.i4PDPattern = 3,
-		// .i4PDRepetition = 8,
-		// .i4PDOrder = {1, 0, 0, 1, 1, 0, 0, 1},  /*R = 1, L = 0*/
-		.i4PDRepetition = 4,
-		.i4PDOrder = {1, 0, 0, 1},  /*R = 1, L = 0*/
-	},
-
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 1152,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 1504,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 2,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 1504,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 2,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 1504,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 1664,
-			.vsize = 1248,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 1664,
-			.vsize = 312,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{/* B11-S3 4096x3072 @30.1FPS QBIN(VBIN) with All-PD VB_max seamless D*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = konkatele_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkatele_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkatele_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 3888,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 308,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-	},
-	{/* Reg_B9-S1_QBIN(VBIN)_4096x3072_30.1FPS with PDAF VB_max */
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = konkatele_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 3888,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 308,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-	},
-	{/* Reg_B10-S5_QBIN(VBIN)_4096x2304_30.1FPS with PDAF VB_max*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = konkatele_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_normal_video_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = konkatele_seamless_normal_video,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkatele_seamless_normal_video),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 3888,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1072460000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 308,
-		.csi_param = {
-			.cphy_settle = 52,
-		},
-	},
-	{/* B-1 QBIN_4096x2304 @60FPS with PDAF VB_max */
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = konkatele_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 4616,
-		.framelength = 3171,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1072460000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 5,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 52,
-		},
-
-		.dpc_enabled = true,
-	},
-	{/* B2 4096x3072 @60FPS QBIN(VBIN) with Partial-PD VB_max */
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = konkatele_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 4616,
-		.framelength = 3171,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1072460000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 5,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 52,
-		},
-	},
-	{/* L4-S3 4096x3072 @30.1FPS QBIN 2exp-LBMF with Partial-PD VB_max seamless D*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = konkatele_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_custom1_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkatele_seamless_custom1,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkatele_seamless_custom1),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 878400000,
-		.linelength = 4616,
-		.framelength = 6278,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 3136,
-		.read_margin = 10 * 2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 5,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 5,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{/* F5-S3 4096x3072 @30.1FPS Full-RMSC-Crop QBC with PDAF VB_max */
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = konkatele_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkatele_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkatele_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 3240,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-		.awb_enabled = true,
-	},
-	{/* D Full RMSC 15fps bayer with PDAF VB_max */
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = konkatele_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkatele_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkatele_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 6504,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/* D Full RMSC 15fps Qbayer with PDAF VB_max */
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = konkatele_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkatele_seamless_custom4,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkatele_seamless_custom4),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 6504,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-		.awb_enabled = true,
-	},
-	{/* B11-S3 4096x3072 @30.1FPS QBIN(VBIN) with All-PD VB_max seamless D*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = konkatele_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_custom5_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = konkatele_seamless_custom5,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkatele_seamless_custom5),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 3888,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 308,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-		.dpc_enabled = true,
-	},
-	{/* L4-S3 4096x3072 @30.1FPS QBIN 2exp-LBMF with Partial-PD VB_max seamless D*/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = konkatele_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_custom6_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = konkatele_seamless_custom6,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkatele_seamless_custom6),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 878400000,
-		.linelength = 4616,
-		.framelength = 6278,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 3136,
-		.read_margin = 10 * 2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 5,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 5,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{/* V10 1664x1248 @30.1FPS QBIN(VBIN)-V2H2 */
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = konkatele_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_custom7_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 453600000,
-		.linelength = 8048,
-		.framelength = 1872,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 205710000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 8,
-		.coarse_integ_step = 8,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 576,
-			.w0_size = 8192,
-			.h0_size = 4992,
-			.scale_w = 2048,
-			.scale_h = 1248,
-			.x1_offset = 192,
-			.y1_offset = 0,
-			.w1_size = 1664,
-			.h1_size = 1248,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1664,
-			.h2_tg_size = 1248,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 315,
-		.csi_param = {
-			.cphy_settle = 83,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F6-S5 4096x2304 @30.1FPS Full-RMSC_Crop w/ PD VB_MAX seamless reg_A-1/B */
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = konkatele_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_custom8_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = konkatele_seamless_custom8,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkatele_seamless_custom8),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 3240,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1072460000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1920,
-			.w0_size = 8192,
-			.h0_size = 2304,
-			.scale_w = 8192,
-			.scale_h = 2304,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 52,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/*C-5 QBIN-V2H2 2048x1152_240FPS w/o PDAF VB_max*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = konkatele_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 2468,
-		.framelength = 1470,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 979200000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 8,
-		.coarse_integ_step = 8,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F5-S3 4096x3072 @30FPS Full-RMSC-Crop with PDAF VB_max */
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = konkatele_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(konkatele_custom10_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkatele_seamless_custom10,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkatele_seamless_custom10),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 3240,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-};
-
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KONKATELE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},
-	.i2c_addr_table = {0x34, 0x5a, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_H_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_Gr,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = konkatele_ana_gain_table,
-	.ana_gain_table_size = sizeof(konkatele_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 6,
-	.exposure_max = 128*(65532 - 56), /* exposure reg is limited to 4x. max = max - margin */
-	.exposure_step = 4,
-	.exposure_margin = 56,
-
-	.frame_length_max = 0xFFFC,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1789700,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_LBMF,
-	.seamless_switch_support = TRUE,
-	.seamless_switch_type = SEAMLESS_SWITCH_CUT_VB_INIT_SHUT,
-	.seamless_switch_hw_re_init_time_ns = 0,
-	.seamless_switch_prsh_hw_fixed_value = 56,
-	.seamless_switch_prsh_length_lc = 0,
-	.reg_addr_prsh_length_lines = {0x3058, 0x3059, 0x305A, 0x305B},
-	.reg_addr_prsh_mode = 0x3056,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0202, 0x0203}, //COARSE_INTEG_TIME
-			{0x0000, 0x0000}, /*not support*/
-			{0x0000, 0x0000}, //ST_COARSE_INTEG_TIME not support
-	},
-	.reg_addr_exposure_in_lut = {
-			{0x0E20, 0x0E21}, //LUT_A_COARSE_INTEG_TIME
-			{0x0E40, 0x0E41}, //LUT_B_COARSE_INTEG_TIME
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3160,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, //ANA_GAIN_GLOBAL
-			{0x0000, 0x0000}, /*not support*/
-			{0x0000, 0x0000}, //ST_ANA_GAIN_GLOBAL not support
-	},
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E22, 0x0E23}, //LUT_A_ANA_GAIN_GLOBAL
-			{0x0E42, 0x0E43}, //LUT_B_ANA_GAIN_GLOBAL
-	},
-	.reg_addr_dig_gain = {
-			{0x020E, 0x020F}, //DIG_GAIN_GLOBAL
-			{0x0000, 0x0000}, /*not support*/
-			{0x0000, 0x0000}, //ST_DIG_GAIN_GLOBAL not support
-	},
-	.reg_addr_dig_gain_in_lut = {
-			{0x0E24, 0x0E25}, //LUT_A_DIG_GAIN_GLOBAL
-			{0x0E44, 0x0E45}, //LUT_B_DIG_GAIN_GLOBAL
-	},
-	.reg_addr_dcg_ratio = 0x3182, /* DCGHDR_RATIO */
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E28, 0x0E29},  //LUT_A_FRM_LENGTH_LINES
-			{0x0E48, 0x0E49},  /*LUT_B_FRM_LENGTH_LINES*/
-	},
-	.reg_addr_temp_en = 0x0138, //TEMP_SEN_CTL
-	.reg_addr_temp_read = 0x013A, //TEMP_SEN_OUT
-	.reg_addr_auto_extend = 0x0350, //FRM_LENGTH_CTL
-	.reg_addr_frame_count = 0x0005, //FRM_CNT
-	.reg_addr_fast_mode = 0x3010, //FAST_MODETRANSIT_CTL
-	.reg_addr_fast_mode_in_lbmf = 0x31A7, //EAEB_LUT_CONTROL
-
-	.init_setting_table = konkatele_init_setting,
-	.init_setting_len = ARRAY_SIZE(konkatele_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xf10e5980,
-
-	.oplus_notify_chg_flag = false,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = konkatele_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_AVDD, {2804000, 2804000}, 3000},
-	{HW_ID_AFVDD, {3100000, 3100000}, 3000},
-	{HW_ID_DVDD, {1104000, 1104000}, 4000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 3000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-	{HW_ID_RST, {1}, 2000},
-};
-
-const struct subdrv_entry konkatele_mipi_raw_entry = {
-	.name = "konkatele_mipi_raw",
-	.id = KONKATELE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-static u16 konkatele_ob_optimize_30db[] = {
-	0x3B00, 0x08,
-	0x3B01, 0x8A,
-	0x38D0, 0x08,
-	0x38D1, 0x52,
-	0x38A0, 0x00,
-	0x38A1, 0x7C,
-	0x38A2, 0x00,
-	0x38A3, 0x08,
-};
-
-static u16 konkatele_ob_optimize_36db[] = {
-	0x3B00, 0x03,
-	0x3B01, 0xE1,
-	0x38D0, 0x00,
-	0x38D1, 0xE8,
-	0x38A0, 0x00,
-	0x38A1, 0x8E,
-	0x38A2, 0x01,
-	0x38A3, 0x80,
-};
-
-/* FUNCTION */
-
-static unsigned int read_konkatele_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != konkatele_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != konkatele_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = konkatele_eeprom_info[meta_id].start;
-	readsize = konkatele_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-
- static struct eeprom_addr_table_struct  oplus_eeprom_addr_table =
-{
-	.i2c_read_id = 0xA0,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct oplus_eeprom_info_struct* infoPtr;
-  	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-	infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 6) | (infoPtr->afInfo[0] >> 2));
-	infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 2);
-	infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 6) | (infoPtr->afInfo[2] >> 2));
-	infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 2);
-	infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 6) | (infoPtr->afInfo[4] >> 2));
-	infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 2);
-
-	return 0;
-}
-
-// static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-// 	*len = sizeof(oplus_eeprom_info);
-// 	return 0;
-// }
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, KONKATELE_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-static int konkatele_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int konkatele_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR, otp_qcom_pdaf_offset_data, OTP_QCOM_PDAF_OFFSET_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_offset_data, sizeof(otp_qcom_pdaf_offset_data));
-	*len = sizeof(otp_qcom_pdaf_offset_data);
-
-	return 0;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, KONKATELE_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xA000;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KONKATELE_EEPROM_READ_ID >> 1, reg, 0x0E);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KONKATELE_EEPROM_READ_ID >> 1, reg, 0x00);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    kal_uint32 checksum = 0;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        for(i = 0; i < pStereodata->dataLength; i++) {
-            checksum += pData[i];
-        }
-        pData[data_length] = 0x01;
-        pData[data_length + 1] = checksum % 255;
-        data_length = data_length + 2;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == KONKATELE_SENSOR_ID) && ((data_length - 2 == CALI_DATA_SLAVE_LENGTH)
-            ||(data_length - 2 == CALI_DATA_MASTER_LENGTH)||(data_length - 2 == CALI_DATA_SLAVE_TELE_LENGTH))
-            && ((data_base == KONKATELE_STEREO_START_ADDR)||(data_base == KONKATELE_STEREO_120CM_START_ADDR)
-            ||(data_base == KONKATELE_STEREO_105CM_START_ADDR))) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-        } else if ((pStereodata->uSensorId == KONKATELE_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == KONKATELE_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, KONKATELE_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, KONKATELE_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, KONKATELE_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, KONKATELE_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, KONKATELE_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, KONKATELE_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, KONKATELE_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, KONKATELE_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("konkatele write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int konkatele_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-	return 0;
-}
-
-static int konkatele_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_MASTER_LENGTH)
-		*len = CALI_DATA_MASTER_LENGTH;
-	LOG_INF("feature_data mode: %d", *feature_data_16);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_konkatele_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_konkatele_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_TT_MASETR_120CM:
-		read_konkatele_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	}
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KONKATELE_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "konkatele read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "konkatele read_otp_info end\n");
-}
-
-static int konkatele_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int konkatele_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = GET_SENSOR_ID_RETRY_CNT;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x8202) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOG(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = GET_SENSOR_ID_RETRY_CNT;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 konkatele_feedback_awbgain[] = {
-	0x0B8E, 0x01,
-	0x0B8F, 0x00,
-	0x0B90, 0x02,
-	0x0B91, 0x28,
-	0x0B92, 0x01,
-	0x0B93, 0x77,
-	0x0B94, 0x01,
-	0x0B95, 0x00,
-};
-
-/*write AWB gain to sensor*/
-static void feedback_awbgain(struct subdrv_ctx *ctx, kal_uint32 r_gain, kal_uint32 b_gain)
-{
-	UINT32 r_gain_int = 0;
-	UINT32 b_gain_int = 0;
-
-	DRV_LOG(ctx, "feedback_awbgain r_gain: %d, b_gain: %d\n", r_gain, b_gain);
-	r_gain_int = r_gain / 512;
-	b_gain_int = b_gain / 512;
-	konkatele_feedback_awbgain[5] = r_gain_int;
-	konkatele_feedback_awbgain[7] = (r_gain - r_gain_int * 512) / 2;
-	konkatele_feedback_awbgain[9] = b_gain_int;
-	konkatele_feedback_awbgain[11] = (b_gain - b_gain_int * 512) / 2;
-	subdrv_i2c_wr_regs_u8(ctx, konkatele_feedback_awbgain,
-		ARRAY_SIZE(konkatele_feedback_awbgain));
-}
-
-static int konkatele_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-	feedback_awbgain(ctx, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B);
-	return 0;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	wr_ob_type = 0;
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	sensor_init(ctx);
-
-	/*QSC&SPC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, SENSOR_QSC_ENABLE_REG, 0x01);
-			DRV_LOG(ctx, "set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, SENSOR_QSC_ENABLE_REG, 0x00);
-		}
-	}
-
-	/* SPC data */
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			addr = SPC_OTP_ADDR_PART1;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = SPC_OTP_ADDR_PART2;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x55)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 85;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (16384 - (16384 * BASEGAIN) / gain);
-}
-
-void konkatele_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-		case HDR_NONE:
-		case HDR_RAW_LBMF:
-		case HDR_RAW_DCG_RAW:
-				if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-					ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min) {
-					*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-					*min_shutter = ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min;
-				} else {
-					*exposure_step = ctx->s_ctx.exposure_step;
-					*min_shutter = ctx->s_ctx.exposure_min;
-				}
-				break;
-			default:
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-				break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int konkatele_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	konkatele_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static int konkatele_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-
-	update_mode_info(ctx, scenario_id);
-
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-		calculate_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id);
-	}
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 24) & 0x07);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[3],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int konkatele_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-	DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	if (mode) {
-	/* 1:Solid Color 2:Color Bar 5:Black */
-		switch (mode) {
-		case 5:
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x01);
-			break;
-		default:
-			subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-			break;
-		}
-	} else if (ctx->test_pattern) {
-		subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /*No pattern*/
-	}
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static int konkatele_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-
-	u16 rg_gain;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain,
-		ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_ana_gain_range[0].min);
-	gain = min(gain,
-		ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_ana_gain_range[0].max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-
-	if(ctx->current_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW ||
-		ctx->current_scenario_id == SENSOR_SCENARIO_ID_NORMAL_VIDEO) {
-		if (rg_gain > 0x3DF8) {
-			if(wr_ob_type != 1) {
-				wr_ob_type = 1;
-				subdrv_i2c_wr_regs_u8(ctx, konkatele_ob_optimize_36db,
-					ARRAY_SIZE(konkatele_ob_optimize_36db));
-			}
-		} else {
-			if(wr_ob_type != 2) {
-				wr_ob_type = 2;
-				subdrv_i2c_wr_regs_u8(ctx, konkatele_ob_optimize_30db,
-					ARRAY_SIZE(konkatele_ob_optimize_30db));
-			}
-		}
-	} else {
-		wr_ob_type = 0;
-	}
-	DRV_LOG(ctx, "- gain:%d  wr_ob_cn:%d\n", gain, wr_ob_type);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-	return 0;
-}
-
-int konkatele_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data)
-{
-	int ret = ERROR_NONE;
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u64 time_boot_begin = 0;
-	u64 ixc_time = 0;
-
-	wr_ob_type = 0;
-	DRV_LOG(ctx, "konkatele_control E");
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (ctx->ixc_client.protocol)
-		sd = adaptor_ixc_get_clientdata(&ctx->ixc_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-		ret = ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.chk_s_off_sta)
-		check_stream_off(ctx);
-	update_mode_info(ctx, scenario_id);
-
-	if (ctx->s_ctx.mode[scenario_id].mode_setting_table != NULL) {
-		DRV_LOG(ctx, "E: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		if ((ctx->power_on_profile_en != NULL) &&
-			(*ctx->power_on_profile_en))
-			time_boot_begin = ktime_get_boottime_ns();
-
-		/* initail setting */
-		ixc_time = ixc_table_rewrite(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-
-		if ((ctx->power_on_profile_en != NULL) &&
-			(*ctx->power_on_profile_en)) {
-			ctx->sensor_pw_on_profile.i2c_cfg_period =
-					ktime_get_boottime_ns() - time_boot_begin;
-
-			ctx->sensor_pw_on_profile.i2c_cfg_table_len =
-					ctx->s_ctx.mode[scenario_id].mode_setting_len;
-		}
-		DRV_LOG_MUST(ctx, "X: sid:%u size:%u, ixc_time(us): %lld\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len,
-			ixc_time);
-	} else {
-		DRV_LOGE(ctx, "please implement mode setting(sid:%u)!\n", scenario_id);
-	}
-
-	if (check_is_no_crop(ctx, scenario_id) && probe_eeprom(ctx)) {
-		idx = ctx->eeprom_index;
-		support = info[idx].xtalk_support;
-		pbuf = info[idx].preload_xtalk_table;
-		size = info[idx].xtalk_size;
-		addr = info[idx].sensor_reg_addr_xtalk;
-		if (support) {
-			if (pbuf != NULL && addr > 0 && size > 0) {
-				subdrv_ixc_wr_seq_p8(ctx, addr, pbuf, size);
-				DRV_LOG(ctx, "set XTALK calibration data done.");
-			}
-		}
-	}
-
-	set_mirror_flip(ctx, ctx->s_ctx.mirror);
-
-	return ret;
-}
-
-
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id)
-{
-	u32 ae_ctrl_cit;
-	u32 prsh_length_lc = 0;
-	u32 cit_step = 1;
-	u8 hw_fixed_value = ctx->s_ctx.seamless_switch_prsh_hw_fixed_value;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = ctx->current_scenario_id;
-	enum IMGSENSOR_HDR_MODE_ENUM hdr_mode;
-
-	if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM5 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM6) {
-		prsh_length_lc = 2800;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM6 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM5) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_VIDEO && scenario_id == SENSOR_SCENARIO_ID_CUSTOM8) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM8 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_VIDEO) {
-		prsh_length_lc = 1250;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM1) {
-		prsh_length_lc = 2000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM1 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 1000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM3) {
-		prsh_length_lc = 1000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM3 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM1 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 1000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM1) {
-		prsh_length_lc = 2000;
-	} else {
-		prsh_length_lc = 0;
-	}
-
-	hdr_mode = ctx->s_ctx.mode[scenario_id].hdr_mode;
-	switch (hdr_mode) {
-	case HDR_RAW_LBMF:
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: dig_gain_lut_a = SE / dig_gain_lut_b = LE */
-			/* 3exp: dig_gain_lut_a = SE / dig_gain_lut_b = ME / dig_gain_lut_c = LE */
-			ae_ctrl_cit = ae_ctrl->exposure.me_exposure;
-			DRV_LOG_MUST(ctx, "debug se %llu le %llu, me %llu", ae_ctrl->exposure.se_exposure, ae_ctrl->exposure.le_exposure, ae_ctrl->exposure.me_exposure);
-		} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: dig_gain_lut_a = LE / dig_gain_lut_b = SE */
-			/* 3exp: dig_gain_lut_a = LE / dig_gain_lut_b = ME / dig_gain_lut_c = SE */
-			ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-			DRV_LOG_MUST(ctx, "debug le\n");
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-		break;
-	case HDR_NONE:
-	case HDR_RAW:
-	case HDR_CAMSV:
-	case HDR_RAW_ZHDR:
-	case HDR_MultiCAMSV:
-	case HDR_RAW_STAGGER:
-	case HDR_RAW_DCG_RAW:
-	case HDR_RAW_DCG_COMPOSE:
-	default:
-		ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-		break;
-	}
-	ae_ctrl_cit = max(ae_ctrl_cit, ctx->s_ctx.exposure_min);
-	ae_ctrl_cit = min(ae_ctrl_cit, ctx->s_ctx.exposure_max);
-	cit_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step ?: 1;
-	if (cit_step) {
-		ae_ctrl_cit = round_up(ae_ctrl_cit, cit_step);
-		prsh_length_lc = round_up(prsh_length_lc, cit_step);
-	}
-	DRV_LOG_MUST(ctx, "prsh_length_lc %u ae_ctrl_cit %u fine_integ_line %d\n",
-					prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.mode[scenario_id].fine_integ_line);
-	if(hdr_mode != HDR_RAW_LBMF && ctx->s_ctx.mode[scenario_id].fine_integ_line != 0) {
-		ae_ctrl_cit = ae_ctrl_cit / 1000;
-	}
-	prsh_length_lc = (prsh_length_lc > (ae_ctrl_cit + hw_fixed_value)) ? prsh_length_lc : 0;
-	if (prsh_length_lc < (ae_ctrl_cit + hw_fixed_value)) {
-		DRV_LOG_MUST(ctx,
-			"pre-shutter no need: prsh_length_lc(%u) < (ae_ctrl_cit(%u(max=%u,min=%u)) + hw_fixed_value(%u))\n",
-			prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.exposure_max, ctx->s_ctx.exposure_min, hw_fixed_value);
-		ctx->s_ctx.seamless_switch_prsh_length_lc = 0;
-		return;
-	}
-
-	ctx->s_ctx.seamless_switch_prsh_length_lc = prsh_length_lc;
-}
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatelemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatelemipiraw_Sensor.h
deleted file mode 100644
index 2a380d81..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkatele_mipi_raw/konkatelemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     konkatelemipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KONKATELEMIPI_SENSOR_H
-#define _KONKATELEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "konkatele_ana_gain_table.h"
-#include "konkatele_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/Makefile
deleted file mode 100644
index 3c4d1b3c..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/konkautelemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautele_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautele_Sensor_setting.h
deleted file mode 100755
index f8d4e3c7..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautele_Sensor_setting.h
+++ /dev/null
@@ -1,2422 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     konkautele_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KONKAUTELEMIPI_SENSOR_SETTING_H
-#define _KONKAUTELEMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 konkautele_init_setting[] = {
-    /* External Clock Setting */
-    0x0136, 0x18,
-    0x0137, 0x00,
-    /* Global Setting1 */
-    0xF800, 0xF4,
-    0xF801, 0xF4,
-    0xF802, 0x29,
-    0xF803, 0xFA,
-    0xF804, 0x55,
-    0xF805, 0xD8,
-    0xF806, 0x35,
-    0xF807, 0x00,
-    0xF808, 0x17,
-    0xF809, 0xFA,
-    0xF80A, 0x84,
-    0xF80B, 0xBE,
-    0xF80C, 0x55,
-    0xF80D, 0xDC,
-    0xF80E, 0x35,
-    0xF80F, 0x00,
-    0xF810, 0x1A,
-    0xF811, 0x80,
-    0xF812, 0xAA,
-    0xF813, 0xCA,
-    0xF884, 0x4F,
-    0xF885, 0x06,
-    0xF886, 0xAC,
-    0xF887, 0x27,
-    0xF888, 0xAC,
-    0xF889, 0x1D,
-    0xF88A, 0xAC,
-    0xF88B, 0x14,
-    0xF88C, 0xFA,
-    0xF88D, 0xE8,
-    0xF88E, 0xF3,
-    0xF88F, 0x92,
-    0xF890, 0xD0,
-    0xF891, 0x20,
-    0xF892, 0x40,
-    0xF893, 0x4F,
-    0xF894, 0x1E,
-    0xF895, 0x05,
-    0xF896, 0xD4,
-    0xF897, 0x18,
-    0xF898, 0x08,
-    0xF899, 0x00,
-    0xF89A, 0xF6,
-    0xF89B, 0x40,
-    0xF89C, 0x06,
-    0xF89D, 0xD3,
-    0xF89E, 0xBE,
-    0xF89F, 0x06,
-    0xF8A0, 0xF0,
-    0xF8A1, 0x40,
-    0xF8A2, 0x06,
-    0xF8A3, 0xD4,
-    0xF8A4, 0x29,
-    0xF8A5, 0x25,
-    0xF8A6, 0x90,
-    0xF8A7, 0x2C,
-    0xF8A8, 0x80,
-    0xF8A9, 0x22,
-    0xF8AA, 0xF6,
-    0xF8AB, 0x41,
-    0xF8AC, 0x05,
-    0xF8AD, 0x1C,
-    0xF8AE, 0xB8,
-    0xF8AF, 0x8B,
-    0xF8B0, 0xD0,
-    0xF8B1, 0x18,
-    0xF8B2, 0x28,
-    0xF8B3, 0x7C,
-    0xF8B4, 0xF0,
-    0xF8B5, 0x02,
-    0xF8B6, 0x02,
-    0xF8B7, 0x74,
-    0xF8B8, 0xF6,
-    0xF8B9, 0x40,
-    0xF8BA, 0x07,
-    0xF8BB, 0x10,
-    0xF8BC, 0x0F,
-    0xF8BD, 0x20,
-    0xF8BE, 0xFA,
-    0xF8BF, 0xE8,
-    0xF8C0, 0x07,
-    0xF8C1, 0x06,
-    0xF8C2, 0x80,
-    0xF8C3, 0x04,
-    0xF8C4, 0x5F,
-    0xF8C5, 0xF0,
-    0xF8C6, 0x29,
-    0xF8C7, 0x25,
-    0xF8C8, 0x90,
-    0xF8C9, 0x0A,
-    0xF8CA, 0x50,
-    0xF8CB, 0x31,
-    0xF8CC, 0xFA,
-    0xF8CD, 0xE8,
-    0xF8CE, 0x06,
-    0xF8CF, 0xF8,
-    0xF8D0, 0x80,
-    0xF8D1, 0x04,
-    0xF8D2, 0x09,
-    0xF8D3, 0x50,
-    0xF8D4, 0xF4,
-    0xF8D5, 0x40,
-    0xF8D6, 0x06,
-    0xF8D7, 0xD8,
-    0xF8D8, 0x50,
-    0xF8D9, 0xA1,
-    0xF8DA, 0xFA,
-    0xF8DB, 0xE8,
-    0xF8DC, 0x06,
-    0xF8DD, 0xEA,
-    0xF8DE, 0xFA,
-    0xF8DF, 0xE8,
-    0xF8E0, 0x06,
-    0xF8E1, 0x1A,
-    0xF8E2, 0xA8,
-    0xF8E3, 0x14,
-    0xF8E4, 0xA8,
-    0xF8E5, 0x1D,
-    0xF8E6, 0xA8,
-    0xF8E7, 0x27,
-    0xF8E8, 0xA0,
-    0xF8E9, 0x09,
-    0xF8EA, 0x00,
-    0xF8EB, 0x00,
-    0x4513, 0x01,
-    0x4331, 0x01,
-    /* PHY_VIF Setting */
-    0x3304, 0x00,
-    /* Register version */
-    0x33F0, 0x01,
-    0x33F1, 0x09,
-    /* Signaling mode setting */
-    0x0111, 0x03,
-    /* MIPI Global Timing control Setting */
-    0x0808, 0x02,
-    /* Global Setting2 */
-    0x7795, 0x00,
-    0x7796, 0x00,
-    0x8315, 0x0F,
-    0x1200, 0x02,
-    0x1201, 0x02,
-    0x130B, 0x00,
-    0x1340, 0x00,
-    0x3BC0, 0xBF,
-    0x3BC4, 0xBF,
-    0x3BC8, 0xBF,
-    0x3BCC, 0xBF,
-    0x558F, 0x00,
-    0x61E8, 0x50,
-    0x61E9, 0x00,
-    0x61EA, 0x50,
-    0x61EB, 0x00,
-    0x7755, 0x09,
-    0x775B, 0x01,
-    0x7D5D, 0x19,
-    0x7D5E, 0x19,
-    0x7D5F, 0x19,
-    0x7D60, 0x19,
-    0x7D61, 0x19,
-    0x7D62, 0x19,
-    0x7D64, 0x19,
-    0x7D65, 0x19,
-    0x7D66, 0x19,
-    0x7D67, 0x19,
-    0x7D68, 0x19,
-    0x7D69, 0x19,
-    0x7D6B, 0x19,
-    0x7D6C, 0x19,
-    0x7D6D, 0x19,
-    0x7D6E, 0x19,
-    0x7D6F, 0x19,
-    0x7D70, 0x19,
-    0x7D72, 0x19,
-    0x7D73, 0x19,
-    0x7D74, 0x19,
-    0x7D75, 0x19,
-    0x7D76, 0x19,
-    0x7D77, 0x19,
-    0x7D79, 0x19,
-    0x7D7A, 0x19,
-    0x7D7B, 0x19,
-    0x7D7C, 0x19,
-    0x7D7D, 0x19,
-    0x7D7F, 0x19,
-    0x7D80, 0x19,
-    0x7D81, 0x19,
-    0x7D82, 0x19,
-    0x7D83, 0x19,
-    0x90E7, 0x01,
-    0x920C, 0x90,
-    0x920E, 0x53,
-    0x920F, 0x0C,
-    0x9210, 0xA0,
-    0x9212, 0xDD,
-    0x9213, 0xDA,
-    0x9214, 0xA0,
-    0x9216, 0xEB,
-    0x9217, 0x96,
-    0x9218, 0xA0,
-    0x921A, 0xDD,
-    0x921B, 0xD7,
-    0x5E2E, 0x00,
-    0x5E2F, 0x32,
-    0x5E32, 0x08,
-    0x5E33, 0xCD,
-    0x5E64, 0x00,
-    0x5E65, 0x32,
-    0x5E68, 0x0B,
-    0x5E69, 0x97,
-    0x7220, 0xFF,
-    0x7221, 0xFF,
-    0x7222, 0xFF,
-    0x7223, 0xFF,
-    0x7A28, 0x2D,
-    0x7A29, 0x30,
-    0x7A2A, 0x30,
-    0x7A2B, 0x0E,
-    0x7A2C, 0x10,
-    0x7A2D, 0x10,
-    0x7A2E, 0x0E,
-    0x7A2F, 0x0F,
-    0x7A30, 0x0F,
-    0x7A31, 0x10,
-    0x7A32, 0x10,
-    0x7A33, 0x10,
-    0x7A34, 0x0E,
-    0x7A35, 0x12,
-    0x7A36, 0x15,
-    0x7A3A, 0x2D,
-    0x7A3B, 0x30,
-    0x7A3C, 0x31,
-    0x7A3D, 0x2B,
-    0x7A3E, 0x2D,
-    0x7A3F, 0x2E,
-    0x7A40, 0x2E,
-    0x7A41, 0x2F,
-    0x7A42, 0x2F,
-    0x7A43, 0x2E,
-    0x7A44, 0x2F,
-    0x7A45, 0x2E,
-    0x7A46, 0x2F,
-    0x7A47, 0x31,
-    0x7A48, 0x34,
-    0x7A4C, 0x2F,
-    0x7A4D, 0x31,
-    0x7A4E, 0x31,
-    0x7A4F, 0x2D,
-    0x7A50, 0x2F,
-    0x7A51, 0x31,
-    0x7A52, 0x2F,
-    0x7A53, 0x31,
-    0x7A54, 0x31,
-    0x7A55, 0x2F,
-    0x7A56, 0x30,
-    0x7A57, 0x30,
-    0x7A58, 0x30,
-    0x7A59, 0x31,
-    0x7A5A, 0x36,
-    0x7A5B, 0x31,
-    0x7A5C, 0x33,
-    0x7A5E, 0x2F,
-    0x7A5F, 0x33,
-    0x7A60, 0x32,
-    0x7A61, 0x2D,
-    0x7A62, 0x30,
-    0x7A63, 0x31,
-    0x7A64, 0x30,
-    0x7A65, 0x30,
-    0x7A66, 0x30,
-    0x7A67, 0x30,
-    0x7A68, 0x31,
-    0x7A69, 0x31,
-    0x7A6A, 0x30,
-    0x7A6B, 0x30,
-    0x7A6C, 0x37,
-    0x7A6D, 0x32,
-    0x7A6E, 0x33,
-    0x7A70, 0x2F,
-    0x7A71, 0x30,
-    0x7A72, 0x31,
-    0x7A73, 0x31,
-    0x7A74, 0x32,
-    0x7A75, 0x32,
-    0x7A76, 0x31,
-    0x7A77, 0x31,
-    0x7A78, 0x32,
-    0x7A79, 0x32,
-    0x7A7A, 0x31,
-    0x7A7B, 0x33,
-    0x7A7C, 0x33,
-    0x7A7D, 0x34,
-    0x7A7F, 0x2F,
-    0x7A80, 0x31,
-    0x7A81, 0x32,
-    0x7A82, 0x31,
-    0x7A83, 0x31,
-    0x7A84, 0x31,
-    0x7A85, 0x31,
-    0x7A86, 0x32,
-    0x7A87, 0x31,
-    0x7A88, 0x31,
-    0x7A89, 0x32,
-    0x7A8A, 0x34,
-    0x7A8B, 0x33,
-    0x7A8C, 0x35,
-    0x7A90, 0x02,
-    0x7A92, 0x01,
-    0x7A95, 0x01,
-    0x7A98, 0x03,
-    0x7AA2, 0x02,
-    0x7AA5, 0x05,
-    0x7AAA, 0x08,
-    0x7AAB, 0x02,
-    0x7AB4, 0x18,
-    0x7AB7, 0x06,
-    0x7ABC, 0x03,
-    0x7ABD, 0x02,
-    0x7ACE, 0x06,
-    0x7ACF, 0x07,
-    0x7AEC, 0x01,
-    0x7B27, 0x09,
-    0x7B28, 0x08,
-    0x7B39, 0x06,
-    0x7B3A, 0x07,
-    0x7B48, 0x07,
-    0x7B49, 0x09,
-    0x7B57, 0x05,
-    0x7B58, 0x06,
-    0x7C18, 0x2D,
-    0x7C1E, 0x2D,
-    0x7C22, 0x23,
-    0x7C23, 0x1E,
-    0x90B4, 0x0B,
-    0x90B5, 0x2C,
-    0x90B8, 0x0C,
-    0x90B9, 0x3C,
-    0x9739, 0x00,
-    0x973A, 0x13,
-    0x973B, 0x04,
-    0x973D, 0x00,
-    0x973E, 0x1C,
-    0x973F, 0xF4,
-    0x9741, 0x00,
-    0x9742, 0x32,
-    0x9743, 0x48,
-    0xA2C3, 0x18,
-    0xA2F5, 0x04,
-    0xA722, 0x00,
-    0xDDA9, 0x4E,
-    0x9674, 0x21,
-    0x9675, 0x5C,
-    0x96AF, 0x01,
-    0xAD01, 0x0A,
-    0xAD02, 0x0A,
-    0xAD0E, 0x02,
-    /* disable deep sleep */
-    0x306D, 0x00,
-    /* disable EBD */
-    0x3970, 0x00,
-};
-
-/*B6-S1 4096x3072 @30.1FPS QBIN(VBIN) VB Max. seamless F1-S1&F2-RAW-S1&F3-RAW-S1*/
-static u16 konkautele_preview_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3850, 0x03,
-    0x3851, 0x38,
-    //Frame Length Lines Setting
-    0x0340, 0x0F,
-    0x0341, 0x1E,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x07,
-    0x030F, 0x23,
-    //Other Setting
-    0x3104, 0x01,
-    0x324C, 0x01,
-    0x3803, 0x01,
-    0x3804, 0x01,
-    0x3805, 0x01,
-    0x3806, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x51,
-    0x38A2, 0x00,
-    0x38A3, 0x51,
-    0x38A4, 0x00,
-    0x38A5, 0x51,
-    0x38A8, 0x01,
-    0x38A9, 0x56,
-    0x38AA, 0x01,
-    0x38AB, 0x56,
-    0x38AC, 0x01,
-    0x38AD, 0x56,
-    0x38D0, 0x02,
-    0x38D1, 0xB8,
-    0x38D2, 0x07,
-    0x38D3, 0xB4,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x01,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x11,
-    0x0850, 0x00,
-    0x0851, 0x0F,
-    0x0852, 0x00,
-    0x0853, 0x1D,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/*B6-S1 4096x3072 @30.1FPS QBIN(VBIN) VB Max. seamless F1-S1&F2-RAW-S1&F3-RAW-S1*/
-static u16 konkautele_capture_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3850, 0x03,
-    0x3851, 0x38,
-    //Frame Length Lines Setting
-    0x0340, 0x0F,
-    0x0341, 0x1E,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x07,
-    0x030F, 0x23,
-    //Other Setting
-    0x3104, 0x01,
-    0x324C, 0x01,
-    0x3803, 0x01,
-    0x3804, 0x01,
-    0x3805, 0x01,
-    0x3806, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x51,
-    0x38A2, 0x00,
-    0x38A3, 0x51,
-    0x38A4, 0x00,
-    0x38A5, 0x51,
-    0x38A8, 0x01,
-    0x38A9, 0x56,
-    0x38AA, 0x01,
-    0x38AB, 0x56,
-    0x38AC, 0x01,
-    0x38AD, 0x56,
-    0x38D0, 0x02,
-    0x38D1, 0xB8,
-    0x38D2, 0x07,
-    0x38D3, 0xB4,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x01,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x11,
-    0x0850, 0x00,
-    0x0851, 0x0F,
-    0x0852, 0x00,
-    0x0853, 0x1D,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/*B7-S2 4096x2304 @30.1FPS QBIN(VBIN) w/ All-PD VB Max. seamless F4-S2*/
-static u16 konkautele_normal_video_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3850, 0x03,
-    0x3851, 0x38,
-    //Frame Length Lines Setting
-    0x0340, 0x0F,
-    0x0341, 0x1E,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x09,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x09,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x05,
-    0x030F, 0xCC,
-    //Other Setting
-    0x3104, 0x01,
-    0x324C, 0x01,
-    0x3803, 0x01,
-    0x3804, 0x01,
-    0x3805, 0x01,
-    0x3806, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x51,
-    0x38A2, 0x00,
-    0x38A3, 0x51,
-    0x38A4, 0x00,
-    0x38A5, 0x51,
-    0x38A8, 0x01,
-    0x38A9, 0x56,
-    0x38AA, 0x01,
-    0x38AB, 0x56,
-    0x38AC, 0x01,
-    0x38AD, 0x56,
-    0x38D0, 0x02,
-    0x38D1, 0xB8,
-    0x38D2, 0x07,
-    0x38D3, 0xB4,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x01,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* B4 */
-static u16 konkautele_hs_video_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3850, 0x01,
-    0x3851, 0xFC,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0x4D,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x09,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x09,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x06,
-    0x030F, 0x16,
-    //Other Setting
-    0x3104, 0x00,
-    0x324C, 0x00,
-    0x3803, 0x01,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x00,
-    0x38A1, 0x30,
-    0x38A2, 0x00,
-    0x38A3, 0x30,
-    0x38A4, 0x00,
-    0x38A5, 0x30,
-    0x38A8, 0x02,
-    0x38A9, 0x94,
-    0x38AA, 0x02,
-    0x38AB, 0x94,
-    0x38AC, 0x02,
-    0x38AD, 0x94,
-    0x38D0, 0x06,
-    0x38D1, 0x40,
-    0x38D2, 0x00,
-    0x38D3, 0x64,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x01,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x01,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* B3 */
-static u16 konkautele_slim_video_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3850, 0x01,
-    0x3851, 0xFC,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0x4D,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x06,
-    0x030F, 0x16,
-    //Other Setting
-    0x3104, 0x00,
-    0x324C, 0x00,
-    0x3803, 0x01,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x00,
-    0x38A1, 0x30,
-    0x38A2, 0x00,
-    0x38A3, 0x30,
-    0x38A4, 0x00,
-    0x38A5, 0x30,
-    0x38A8, 0x02,
-    0x38A9, 0x94,
-    0x38AA, 0x02,
-    0x38AB, 0x94,
-    0x38AC, 0x02,
-    0x38AD, 0x94,
-    0x38D0, 0x06,
-    0x38D1, 0x40,
-    0x38D2, 0x00,
-    0x38D3, 0x64,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x01,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x01,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* Reg_F5-RAW-S1 4096x3072 @30FPS Full RAW Crop w/ All-PD F1-S1&B1-S1&F3-RAW-S1*/
-static u16 konkautele_custom1_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x03,
-    0x3851, 0xD8,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0xA9,
-    //ROI Setting
-    0x0344, 0x08,
-    0x0345, 0x00,
-    0x0346, 0x06,
-    0x0347, 0x00,
-    0x0348, 0x17,
-    0x0349, 0xFF,
-    0x034A, 0x11,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x07,
-    0x030F, 0x23,
-    //Other Setting
-    0x3104, 0x01,
-    0x324C, 0x00,
-    0x3803, 0x01,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x01,
-    0x38A1, 0x36,
-    0x38A2, 0x01,
-    0x38A3, 0x36,
-    0x38A4, 0x00,
-    0x38A5, 0x00,
-    0x38A8, 0x01,
-    0x38A9, 0x36,
-    0x38AA, 0x01,
-    0x38AB, 0x36,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x48,
-    0x38D2, 0x03,
-    0x38D3, 0x48,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x11,
-    0x0850, 0x00,
-    0x0851, 0x0F,
-    0x0852, 0x00,
-    0x0853, 0x1D,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* Reg_F3-RAW-S1 4912x3684 @24FPS Full RAW Crop w/ All-PD F1-S1&B1-S1&F2-RAW-S1 */
-static u16 konkautele_custom2_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x03,
-    0x3851, 0xD8,
-    //Frame Length Lines Setting
-    0x0340, 0x0F,
-    0x0341, 0xE1,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x04,
-    0x0347, 0xC0,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x13,
-    0x034B, 0x2F,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    //Digital Crop & Scaling
-    0x0408, 0x06,
-    0x0409, 0x68,
-    0x040A, 0x00,
-    0x040B, 0x0C,
-    0x040C, 0x13,
-    0x040D, 0x30,
-    0x040E, 0x0E,
-    0x040F, 0x64,
-    //Output Size Setting
-    0x034C, 0x13,
-    0x034D, 0x30,
-    0x034E, 0x0E,
-    0x034F, 0x64,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x07,
-    0x030F, 0x23,
-    //Other Setting
-    0x3104, 0x01,
-    0x324C, 0x00,
-    0x3803, 0x01,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A4, 0x00,
-    0x38A5, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x01,
-    0x38D1, 0x90,
-    0x38D2, 0x01,
-    0x38D3, 0x90,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x11,
-    0x0850, 0x00,
-    0x0851, 0x0F,
-    0x0852, 0x00,
-    0x0853, 0x1D,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* F1-S1 8192x6144 @15FPS Full RMSC bayer w/ All-PD seamless B1-S1&F2-RAW-S1&F3-RAW-S1 */
-static u16 konkautele_custom3_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x03,
-    0x3851, 0xD8,
-    //Frame Length Lines Setting
-    0x0340, 0x19,
-    0x0341, 0x68,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x20,
-    0x040D, 0x00,
-    0x040E, 0x18,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x20,
-    0x034D, 0x00,
-    0x034E, 0x18,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x07,
-    0x030F, 0x23,
-    //Other Setting
-    0x3104, 0x01,
-    0x324C, 0x00,
-    0x3803, 0x01,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A4, 0x00,
-    0x38A5, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x01,
-    0x38D1, 0x90,
-    0x38D2, 0x01,
-    0x38D3, 0x90,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x11,
-    0x0850, 0x00,
-    0x0851, 0x0F,
-    0x0852, 0x00,
-    0x0853, 0x1D,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* F1-S1 8192x6144 @15FPS Full RMSC  Qbayer w/ All-PD seamless B1-S1&F2-RAW-S1&F3-RAW-S1 */
-static u16 konkautele_custom4_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x03,
-    0x3851, 0xD8,
-    //Frame Length Lines Setting
-    0x0340, 0x19,
-    0x0341, 0x68,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x20,
-    0x040D, 0x00,
-    0x040E, 0x18,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x20,
-    0x034D, 0x00,
-    0x034E, 0x18,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x07,
-    0x030F, 0x23,
-    //Other Setting
-    0x3104, 0x01,
-    0x324C, 0x00,
-    0x3803, 0x01,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A4, 0x00,
-    0x38A5, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x01,
-    0x38D1, 0x90,
-    0x38D2, 0x01,
-    0x38D3, 0x90,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x11,
-    0x0850, 0x00,
-    0x0851, 0x0F,
-    0x0852, 0x00,
-    0x0853, 0x1D,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/*B6-S1 4096x3072 @30.1FPS QBIN(VBIN) VB Max. seamless F1-S1&F2-RAW-S1&F3-RAW-S1*/
-static u16 konkautele_custom5_setting[] = {
-    /* MIPI output setting */
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    /* Line Length PCK Setting */
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3850, 0x03,
-    0x3851, 0x38,
-    /* Frame Length Lines Setting */
-    0x0340, 0x0F,
-    0x0341, 0x1E,
-    /* ROI Setting */
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    /* Mode Setting */
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    /* Digital Crop & Scaling */
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    /* Output Size Setting */
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    /* Clock Setting */
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x07,
-    0x030F, 0x23,
-    /* Other Setting */
-    0x3104, 0x01,
-    0x324C, 0x01,
-    0x3803, 0x01,
-    0x3804, 0x01,
-    0x3805, 0x01,
-    0x3806, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x51,
-    0x38A2, 0x00,
-    0x38A3, 0x51,
-    0x38A4, 0x00,
-    0x38A5, 0x51,
-    0x38A8, 0x01,
-    0x38A9, 0x56,
-    0x38AA, 0x01,
-    0x38AB, 0x56,
-    0x38AC, 0x01,
-    0x38AD, 0x56,
-    0x38D0, 0x02,
-    0x38D1, 0xB8,
-    0x38D2, 0x07,
-    0x38D3, 0xB4,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    /* Integration Setting */
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    /* Gain Setting */
-    0x0204, 0x01,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    /* PDAF TYPE2 Setting */
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    /* PHASE PIX VCID Setting */
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    /* PHASE PIX data type Setting */
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    /* PDAF TYPE2 VCID Setting */
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    /* PDAF TYPE2 data type Setting */
-    0x30A3, 0x30,
-    /* MIPI Global Timing Setting */
-    0x084E, 0x00,
-    0x084F, 0x11,
-    0x0850, 0x00,
-    0x0851, 0x0F,
-    0x0852, 0x00,
-    0x0853, 0x1D,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/*F6-S2 4096x2304 @30.1FPS Full RMSC Crop w/ All-PD seamless B2-S2*/
-static u16 konkautele_custom6_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x03,
-    0x3851, 0xD8,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0xA9,
-    //ROI Setting
-    0x0344, 0x08,
-    0x0345, 0x00,
-    0x0346, 0x07,
-    0x0347, 0x80,
-    0x0348, 0x17,
-    0x0349, 0xFF,
-    0x034A, 0x10,
-    0x034B, 0x7F,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x09,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x09,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x05,
-    0x030F, 0xCC,
-    //Other Setting
-    0x3104, 0x01,
-    0x324C, 0x00,
-    0x3803, 0x01,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x01,
-    0x38A1, 0x36,
-    0x38A2, 0x01,
-    0x38A3, 0x36,
-    0x38A4, 0x00,
-    0x38A5, 0x00,
-    0x38A8, 0x01,
-    0x38A9, 0x36,
-    0x38AA, 0x01,
-    0x38AB, 0x36,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x48,
-    0x38D2, 0x03,
-    0x38D3, 0x48,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* Reg_F5-RAW-S1 4096x3072 @30FPS Full RAW Crop bayer(0x3205, 0x01) w/ All-PD F1-S1&B1-S1&F3-RAW-S1*/
-static u16 konkautele_custom7_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    0x3239, 0x00,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x03,
-    0x3851, 0xD8,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0xA9,
-    //ROI Setting
-    0x0344, 0x08,
-    0x0345, 0x00,
-    0x0346, 0x06,
-    0x0347, 0x00,
-    0x0348, 0x17,
-    0x0349, 0xFF,
-    0x034A, 0x11,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x12,
-    0x030B, 0x02,
-    0x030D, 0x0C,
-    0x030E, 0x07,
-    0x030F, 0x23,
-    //Other Setting
-    0x3104, 0x01,
-    0x324C, 0x00,
-    0x3803, 0x01,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x01,
-    0x38A1, 0x36,
-    0x38A2, 0x01,
-    0x38A3, 0x36,
-    0x38A4, 0x00,
-    0x38A5, 0x00,
-    0x38A8, 0x01,
-    0x38A9, 0x36,
-    0x38AA, 0x01,
-    0x38AB, 0x36,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x48,
-    0x38D2, 0x03,
-    0x38D3, 0x48,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    0x3B06, 0x00,
-    0x3B07, 0x00,
-    0x3B0A, 0x00,
-    0x3B0B, 0x00,
-    0x9674, 0x07,
-    0x9675, 0x4F,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x11,
-    0x0850, 0x00,
-    0x0851, 0x0F,
-    0x0852, 0x00,
-    0x0853, 0x1D,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/*B1-S1/mode0 F2-RAW-S1/mode5 F3-RAW-S1/mode6 F1-S1/mode7 F1-S1/mode8*/
-static u16 konkautele_seamless_preview[] = {
-    0x0342, 0x1D,
-    0x0112, 0x0A,
-    0x0343, 0x4C,
-    0x3851, 0x38,
-    0x0340, 0x0F,
-    0x0341, 0x1E,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    0x324C, 0x01,
-    0x3804, 0x01,
-    0x3805, 0x01,
-    0x3806, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x51,
-    0x38A2, 0x00,
-    0x38A3, 0x51,
-    0x38A5, 0x51,
-    0x38A8, 0x01,
-    0x38A9, 0x56,
-    0x38AA, 0x01,
-    0x38AB, 0x56,
-    0x38AC, 0x01,
-    0x38AD, 0x56,
-    0x38D0, 0x02,
-    0x38D1, 0xB8,
-    0x38D2, 0x07,
-    0x38D3, 0xB4,
-    0x0204, 0x01,
-    0x0205, 0x34,
-};
-
-/*B2-S2/mdoe2 F4-S2/mode10*/
-static u16 konkautele_seamless_normal_video[] = {
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3851, 0x38,
-    0x0340, 0x0F,
-    0x0341, 0x1E,
-    0x0344, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x324C, 0x01,
-    0x3804, 0x01,
-    0x3805, 0x01,
-    0x3806, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x51,
-    0x38A2, 0x00,
-    0x38A3, 0x51,
-    0x38A5, 0x51,
-    0x38A9, 0x56,
-    0x38AB, 0x56,
-    0x38AC, 0x01,
-    0x38AD, 0x56,
-    0x38D0, 0x02,
-    0x38D1, 0xB8,
-    0x38D2, 0x07,
-    0x38D3, 0xB4,
-    0x0204, 0x01,
-    0x0205, 0x34,
-};
-
-/*B1-S1/mode0 F2-RAW-S1/mode5 F3-RAW-S1/mode6 F1-S1/mode7 F1-S1/mode8*/
-static u16 konkautele_seamless_custom1[] = {
-    0x0342, 0x23,
-    0x0112, 0x0A,
-    0x0343, 0x00,
-    0x3851, 0xD8,
-    0x0340, 0x0C,
-    0x0341, 0xA9,
-    0x0344, 0x08,
-    0x0346, 0x06,
-    0x0347, 0x00,
-    0x0348, 0x17,
-    0x034A, 0x11,
-    0x034B, 0xFF,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    0x324C, 0x00,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x01,
-    0x38A1, 0x36,
-    0x38A2, 0x01,
-    0x38A3, 0x36,
-    0x38A5, 0x00,
-    0x38A8, 0x01,
-    0x38A9, 0x36,
-    0x38AA, 0x01,
-    0x38AB, 0x36,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x48,
-    0x38D2, 0x03,
-    0x38D3, 0x48,
-    0x0204, 0x00,
-    0x0205, 0x00,
-
-};
-
-/*B1-S1/mode0 F2-RAW-S1/mode5 F3-RAW-S1/mode6 F1-S1/mode7 F1-S1/mode8*/
-static u16 konkautele_seamless_custom2[] = {
-    0x0342, 0x23,
-    0x0112, 0x0A,
-    0x0343, 0x00,
-    0x3851, 0xD8,
-    0x0340, 0x0F,
-    0x0341, 0xE1,
-    0x0344, 0x00,
-    0x0346, 0x04,
-    0x0347, 0xC0,
-    0x0348, 0x1F,
-    0x034A, 0x13,
-    0x034B, 0x2F,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x0408, 0x06,
-    0x0409, 0x68,
-    0x040B, 0x0C,
-    0x040C, 0x13,
-    0x040D, 0x30,
-    0x040E, 0x0E,
-    0x040F, 0x64,
-    0x034C, 0x13,
-    0x034D, 0x30,
-    0x034E, 0x0E,
-    0x034F, 0x64,
-    0x324C, 0x00,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A5, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x01,
-    0x38D1, 0x90,
-    0x38D2, 0x01,
-    0x38D3, 0x90,
-    0x0204, 0x00,
-    0x0205, 0x00,
-};
-
-/*B1-S1/mode0 F2-RAW-S1/mode5 F3-RAW-S1/mode6 F1-S1/mode7 F1-S1/mode8*/
-static u16 konkautele_seamless_custom3[] = {
-    0x0342, 0x23,
-    0x0112, 0x0A,
-    0x0343, 0x00,
-    0x3851, 0xD8,
-    0x0340, 0x19,
-    0x0341, 0x68,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x20,
-    0x040D, 0x00,
-    0x040E, 0x18,
-    0x040F, 0x00,
-    0x034C, 0x20,
-    0x034D, 0x00,
-    0x034E, 0x18,
-    0x034F, 0x00,
-    0x324C, 0x00,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A5, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x01,
-    0x38D1, 0x90,
-    0x38D2, 0x01,
-    0x38D3, 0x90,
-    0x0204, 0x00,
-    0x0205, 0x00,
-};
-
-/*B1-S1/mode0 F2-RAW-S1/mode5 F3-RAW-S1/mode6 F1-S1/mode7 F1-S1/mode8*/
-static u16 konkautele_seamless_custom4[] = {
-    0x0342, 0x23,
-    0x0112, 0x0A,
-    0x0343, 0x00,
-    0x3851, 0xD8,
-    0x0340, 0x19,
-    0x0341, 0x68,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x20,
-    0x040D, 0x00,
-    0x040E, 0x18,
-    0x040F, 0x00,
-    0x034C, 0x20,
-    0x034D, 0x00,
-    0x034E, 0x18,
-    0x034F, 0x00,
-    0x324C, 0x00,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A5, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x01,
-    0x38D1, 0x90,
-    0x38D2, 0x01,
-    0x38D3, 0x90,
-    0x0204, 0x00,
-    0x0205, 0x00,
-};
-
-/*B2-S2/mdoe2 F4-S2/mode10*/
-static u16 konkautele_seamless_custom6[] = {
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xD8,
-    0x0340, 0x0C,
-    0x0341, 0xA9,
-    0x0344, 0x08,
-    0x0346, 0x07,
-    0x0347, 0x80,
-    0x0348, 0x17,
-    0x034A, 0x10,
-    0x034B, 0x7F,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x324C, 0x00,
-    0x3804, 0x00,
-    0x3805, 0x00,
-    0x3806, 0x02,
-    0x38A0, 0x01,
-    0x38A1, 0x36,
-    0x38A2, 0x01,
-    0x38A3, 0x36,
-    0x38A5, 0x00,
-    0x38A9, 0x36,
-    0x38AB, 0x36,
-    0x38AC, 0x00,
-    0x38AD, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x48,
-    0x38D2, 0x03,
-    0x38D3, 0x48,
-    0x0204, 0x00,
-    0x0205, 0x00,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautele_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautele_ana_gain_table.h
deleted file mode 100644
index 2940048c..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautele_ana_gain_table.h
+++ /dev/null
@@ -1,1024 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkautele_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __KONKAUTELE_ANA_GAIN_TABLE_H__
-#define __KONKAUTELE_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 konkautele_ana_gain_table[] = {
-	1024,
-	1025,
-	1026,
-	1027,
-	1028,
-	1029,
-	1030,
-	1031,
-	1032,
-	1033,
-	1034,
-	1035,
-	1036,
-	1037,
-	1038,
-	1039,
-	1040,
-	1041,
-	1042,
-	1043,
-	1044,
-	1045,
-	1046,
-	1047,
-	1048,
-	1049,
-	1050,
-	1051,
-	1052,
-	1053,
-	1054,
-	1055,
-	1057,
-	1058,
-	1059,
-	1060,
-	1061,
-	1062,
-	1063,
-	1064,
-	1065,
-	1066,
-	1067,
-	1068,
-	1069,
-	1071,
-	1072,
-	1073,
-	1074,
-	1075,
-	1076,
-	1077,
-	1078,
-	1079,
-	1081,
-	1082,
-	1083,
-	1084,
-	1085,
-	1086,
-	1087,
-	1088,
-	1089,
-	1091,
-	1092,
-	1093,
-	1094,
-	1095,
-	1096,
-	1097,
-	1099,
-	1100,
-	1101,
-	1102,
-	1103,
-	1104,
-	1106,
-	1107,
-	1108,
-	1109,
-	1110,
-	1111,
-	1113,
-	1114,
-	1115,
-	1116,
-	1117,
-	1119,
-	1120,
-	1121,
-	1122,
-	1123,
-	1125,
-	1126,
-	1127,
-	1128,
-	1129,
-	1131,
-	1132,
-	1133,
-	1134,
-	1136,
-	1137,
-	1138,
-	1139,
-	1140,
-	1142,
-	1143,
-	1144,
-	1145,
-	1147,
-	1148,
-	1149,
-	1151,
-	1152,
-	1153,
-	1154,
-	1156,
-	1157,
-	1158,
-	1159,
-	1161,
-	1162,
-	1163,
-	1165,
-	1166,
-	1167,
-	1168,
-	1170,
-	1171,
-	1172,
-	1174,
-	1175,
-	1176,
-	1178,
-	1179,
-	1180,
-	1182,
-	1183,
-	1184,
-	1186,
-	1187,
-	1188,
-	1190,
-	1191,
-	1192,
-	1194,
-	1195,
-	1197,
-	1198,
-	1199,
-	1201,
-	1202,
-	1203,
-	1205,
-	1206,
-	1208,
-	1209,
-	1210,
-	1212,
-	1213,
-	1215,
-	1216,
-	1217,
-	1219,
-	1220,
-	1222,
-	1223,
-	1224,
-	1226,
-	1227,
-	1229,
-	1230,
-	1232,
-	1233,
-	1235,
-	1236,
-	1237,
-	1239,
-	1240,
-	1242,
-	1243,
-	1245,
-	1246,
-	1248,
-	1249,
-	1251,
-	1252,
-	1254,
-	1255,
-	1257,
-	1258,
-	1260,
-	1261,
-	1263,
-	1264,
-	1266,
-	1267,
-	1269,
-	1271,
-	1272,
-	1274,
-	1275,
-	1277,
-	1278,
-	1280,
-	1281,
-	1283,
-	1285,
-	1286,
-	1288,
-	1289,
-	1291,
-	1292,
-	1294,
-	1296,
-	1297,
-	1299,
-	1300,
-	1302,
-	1304,
-	1305,
-	1307,
-	1309,
-	1310,
-	1312,
-	1314,
-	1315,
-	1317,
-	1318,
-	1320,
-	1322,
-	1323,
-	1325,
-	1327,
-	1328,
-	1330,
-	1332,
-	1334,
-	1335,
-	1337,
-	1339,
-	1340,
-	1342,
-	1344,
-	1346,
-	1347,
-	1349,
-	1351,
-	1353,
-	1354,
-	1356,
-	1358,
-	1360,
-	1361,
-	1363,
-	1365,
-	1367,
-	1368,
-	1370,
-	1372,
-	1374,
-	1376,
-	1377,
-	1379,
-	1381,
-	1383,
-	1385,
-	1387,
-	1388,
-	1390,
-	1392,
-	1394,
-	1396,
-	1398,
-	1399,
-	1401,
-	1403,
-	1405,
-	1407,
-	1409,
-	1411,
-	1413,
-	1415,
-	1416,
-	1418,
-	1420,
-	1422,
-	1424,
-	1426,
-	1428,
-	1430,
-	1432,
-	1434,
-	1436,
-	1438,
-	1440,
-	1442,
-	1444,
-	1446,
-	1448,
-	1450,
-	1452,
-	1454,
-	1456,
-	1458,
-	1460,
-	1462,
-	1464,
-	1466,
-	1468,
-	1470,
-	1472,
-	1474,
-	1476,
-	1478,
-	1481,
-	1483,
-	1485,
-	1487,
-	1489,
-	1491,
-	1493,
-	1495,
-	1497,
-	1500,
-	1502,
-	1504,
-	1506,
-	1508,
-	1510,
-	1513,
-	1515,
-	1517,
-	1519,
-	1521,
-	1524,
-	1526,
-	1528,
-	1530,
-	1533,
-	1535,
-	1537,
-	1539,
-	1542,
-	1544,
-	1546,
-	1548,
-	1551,
-	1553,
-	1555,
-	1558,
-	1560,
-	1562,
-	1565,
-	1567,
-	1569,
-	1572,
-	1574,
-	1576,
-	1579,
-	1581,
-	1583,
-	1586,
-	1588,
-	1591,
-	1593,
-	1596,
-	1598,
-	1600,
-	1603,
-	1605,
-	1608,
-	1610,
-	1613,
-	1615,
-	1618,
-	1620,
-	1623,
-	1625,
-	1628,
-	1630,
-	1633,
-	1635,
-	1638,
-	1640,
-	1643,
-	1646,
-	1648,
-	1651,
-	1653,
-	1656,
-	1659,
-	1661,
-	1664,
-	1667,
-	1669,
-	1672,
-	1675,
-	1677,
-	1680,
-	1683,
-	1685,
-	1688,
-	1691,
-	1693,
-	1696,
-	1699,
-	1702,
-	1705,
-	1707,
-	1710,
-	1713,
-	1716,
-	1718,
-	1721,
-	1724,
-	1727,
-	1730,
-	1733,
-	1736,
-	1738,
-	1741,
-	1744,
-	1747,
-	1750,
-	1753,
-	1756,
-	1759,
-	1762,
-	1765,
-	1768,
-	1771,
-	1774,
-	1777,
-	1780,
-	1783,
-	1786,
-	1789,
-	1792,
-	1795,
-	1798,
-	1801,
-	1804,
-	1807,
-	1811,
-	1814,
-	1817,
-	1820,
-	1823,
-	1826,
-	1829,
-	1833,
-	1836,
-	1839,
-	1842,
-	1846,
-	1849,
-	1852,
-	1855,
-	1859,
-	1862,
-	1865,
-	1869,
-	1872,
-	1875,
-	1879,
-	1882,
-	1885,
-	1889,
-	1892,
-	1896,
-	1899,
-	1903,
-	1906,
-	1909,
-	1913,
-	1916,
-	1920,
-	1923,
-	1927,
-	1931,
-	1934,
-	1938,
-	1941,
-	1945,
-	1949,
-	1952,
-	1956,
-	1959,
-	1963,
-	1967,
-	1971,
-	1974,
-	1978,
-	1982,
-	1985,
-	1989,
-	1993,
-	1997,
-	2001,
-	2004,
-	2008,
-	2012,
-	2016,
-	2020,
-	2024,
-	2028,
-	2032,
-	2036,
-	2040,
-	2044,
-	2048,
-	2052,
-	2056,
-	2060,
-	2064,
-	2068,
-	2072,
-	2076,
-	2080,
-	2084,
-	2088,
-	2092,
-	2097,
-	2101,
-	2105,
-	2109,
-	2114,
-	2118,
-	2122,
-	2126,
-	2131,
-	2135,
-	2139,
-	2144,
-	2148,
-	2153,
-	2157,
-	2162,
-	2166,
-	2170,
-	2175,
-	2179,
-	2184,
-	2189,
-	2193,
-	2198,
-	2202,
-	2207,
-	2212,
-	2216,
-	2221,
-	2226,
-	2231,
-	2235,
-	2240,
-	2245,
-	2250,
-	2255,
-	2259,
-	2264,
-	2269,
-	2274,
-	2279,
-	2284,
-	2289,
-	2294,
-	2299,
-	2304,
-	2309,
-	2314,
-	2319,
-	2325,
-	2330,
-	2335,
-	2340,
-	2345,
-	2351,
-	2356,
-	2361,
-	2366,
-	2372,
-	2377,
-	2383,
-	2388,
-	2394,
-	2399,
-	2404,
-	2410,
-	2416,
-	2421,
-	2427,
-	2432,
-	2438,
-	2444,
-	2449,
-	2455,
-	2461,
-	2467,
-	2473,
-	2478,
-	2484,
-	2490,
-	2496,
-	2502,
-	2508,
-	2514,
-	2520,
-	2526,
-	2532,
-	2538,
-	2545,
-	2551,
-	2557,
-	2563,
-	2570,
-	2576,
-	2582,
-	2589,
-	2595,
-	2601,
-	2608,
-	2614,
-	2621,
-	2628,
-	2634,
-	2641,
-	2647,
-	2654,
-	2661,
-	2668,
-	2674,
-	2681,
-	2688,
-	2695,
-	2702,
-	2709,
-	2716,
-	2723,
-	2730,
-	2737,
-	2744,
-	2752,
-	2759,
-	2766,
-	2774,
-	2781,
-	2788,
-	2796,
-	2803,
-	2811,
-	2818,
-	2826,
-	2833,
-	2841,
-	2849,
-	2857,
-	2864,
-	2872,
-	2880,
-	2888,
-	2896,
-	2904,
-	2912,
-	2920,
-	2928,
-	2937,
-	2945,
-	2953,
-	2962,
-	2970,
-	2978,
-	2987,
-	2995,
-	3004,
-	3013,
-	3021,
-	3030,
-	3039,
-	3048,
-	3057,
-	3066,
-	3075,
-	3084,
-	3093,
-	3102,
-	3111,
-	3120,
-	3130,
-	3139,
-	3148,
-	3158,
-	3167,
-	3177,
-	3187,
-	3196,
-	3206,
-	3216,
-	3226,
-	3236,
-	3246,
-	3256,
-	3266,
-	3276,
-	3287,
-	3297,
-	3307,
-	3318,
-	3328,
-	3339,
-	3350,
-	3360,
-	3371,
-	3382,
-	3393,
-	3404,
-	3415,
-	3426,
-	3437,
-	3449,
-	3460,
-	3472,
-	3483,
-	3495,
-	3506,
-	3518,
-	3530,
-	3542,
-	3554,
-	3566,
-	3578,
-	3591,
-	3603,
-	3615,
-	3628,
-	3640,
-	3653,
-	3666,
-	3679,
-	3692,
-	3705,
-	3718,
-	3731,
-	3744,
-	3758,
-	3771,
-	3785,
-	3799,
-	3813,
-	3826,
-	3840,
-	3855,
-	3869,
-	3883,
-	3898,
-	3912,
-	3927,
-	3942,
-	3956,
-	3971,
-	3986,
-	4002,
-	4017,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4161,
-	4177,
-	4194,
-	4211,
-	4228,
-	4245,
-	4262,
-	4279,
-	4297,
-	4315,
-	4332,
-	4350,
-	4369,
-	4387,
-	4405,
-	4424,
-	4443,
-	4462,
-	4481,
-	4500,
-	4519,
-	4539,
-	4559,
-	4578,
-	4599,
-	4619,
-	4639,
-	4660,
-	4681,
-	4702,
-	4723,
-	4744,
-	4766,
-	4788,
-	4809,
-	4832,
-	4854,
-	4877,
-	4899,
-	4922,
-	4946,
-	4969,
-	4993,
-	5017,
-	5041,
-	5065,
-	5090,
-	5115,
-	5140,
-	5165,
-	5190,
-	5216,
-	5242,
-	5269,
-	5295,
-	5322,
-	5349,
-	5377,
-	5405,
-	5433,
-	5461,
-	5489,
-	5518,
-	5548,
-	5577,
-	5607,
-	5637,
-	5667,
-	5698,
-	5729,
-	5761,
-	5793,
-	5825,
-	5857,
-	5890,
-	5924,
-	5957,
-	5991,
-	6026,
-	6061,
-	6096,
-	6132,
-	6168,
-	6204,
-	6241,
-	6278,
-	6316,
-	6355,
-	6393,
-	6432,
-	6472,
-	6512,
-	6553,
-	6594,
-	6636,
-	6678,
-	6721,
-	6765,
-	6808,
-	6853,
-	6898,
-	6944,
-	6990,
-	7037,
-	7084,
-	7133,
-	7182,
-	7231,
-	7281,
-	7332,
-	7384,
-	7436,
-	7489,
-	7543,
-	7598,
-	7653,
-	7710,
-	7767,
-	7825,
-	7884,
-	7943,
-	8004,
-	8065,
-	8128,
-	8192,
-	8256,
-	8322,
-	8388,
-	8456,
-	8525,
-	8594,
-	8665,
-	8738,
-	8811,
-	8886,
-	8962,
-	9039,
-	9118,
-	9198,
-	9279,
-	9362,
-	9446,
-	9532,
-	9619,
-	9709,
-	9799,
-	9892,
-	9986,
-	10082,
-	10180,
-	10280,
-	10381,
-	10485,
-	10591,
-	10699,
-	10810,
-	10922,
-	11037,
-	11155,
-	11275,
-	11397,
-	11522,
-	11650,
-	11781,
-	11915,
-	12052,
-	12192,
-	12336,
-	12483,
-	12633,
-	12787,
-	12945,
-	13107,
-	13273,
-	13443,
-	13617,
-	13797,
-	13981,
-	14169,
-	14364,
-	14563,
-	14768,
-	14979,
-	15196,
-	15420,
-	15650,
-	15887,
-	16131,
-	16384,
-	16644,
-	16912,
-	17189,
-	17476,
-	17772,
-	18078,
-	18396,
-	18724,
-	19065,
-	19418,
-	19784,
-	20164,
-	20560,
-	20971,
-	21399,
-	21845,
-	22310,
-	22795,
-	23301,
-	23831,
-	24385,
-	24966,
-	25575,
-	26214,
-	26886,
-	27594,
-	28339,
-	29127,
-	29959,
-	30840,
-	31775,
-	32768,
-};
-
-#define KONKAUTELE_GAIN_TABLE_SIZE 432
-static kal_uint32 konkautele_gain_table[KONKAUTELE_GAIN_TABLE_SIZE] = {};
-
-static kal_uint16 konkautele_gain_reg[KONKAUTELE_GAIN_TABLE_SIZE] = {};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautelemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautelemipiraw_Sensor.c
deleted file mode 100755
index 11bd2924..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautelemipiraw_Sensor.c
+++ /dev/null
@@ -1,2110 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkautelemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "konkautelemipiraw_Sensor.h"
-
-#define KONKAUTELE_AF_SLAVE_ID	0x32
-#define DW9786_CHIP_EN 0xE000
-#define KONKAUTELE_EEPROM_READ_ID	0x75
-#define KONKAUTELE_EEPROM_WRITE_ID	0x74
-#define KONKAUTELE_MAX_OFFSET		0x4000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "konkautele_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x4000
-#define OTP_QSC_VALID_ADDR 0x2200
-#define KONKAUTELE_UNIQUE_SENSOR_ID 0x0A1F
-#define KONKAUTELE_UNIQUE_SENSOR_ID_LENGHT 11
-#define OTP_PDC_VALID_ADDR 0x021A
-#define GET_SENSOR_ID_RETRY_CNT    5
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-extern struct mutex dw9786_mutex;
-static void set_sensor_cali(void *arg);
-static int get_sensor_temperature(void *arg);
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int konkautele_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkautele_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkautele_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkautele_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkautele_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkautele_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-//static void konkautele_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkautele_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int konkautele_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void get_sensor_cali(void* arg);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static void konkautele_read_eeprom_protect(struct subdrv_ctx *ctx);
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id);
-/* STRUCT */
-
-// static BYTE konkautele_common_data[OPLUS_CAMERA_COMMON_DATA_LENGTH] = { 0 };
-//static BYTE konkautele_unique_id[KONKAUTELE_UNIQUE_SENSOR_ID_LENGHT] = { 0 };
-
-/* Normal(Qbin) to Normal(Qbin) */
-/* Normal(Qbin) to 2DOL(Qbin) */
-static void comp_mode_tran_time_cal1(struct subdrv_ctx *ctx, u32 pre_scenario_id, u32* prsh);
-typedef void (*cal_comp_mode_tran_time)(struct subdrv_ctx *ctx, u32 pre_scenario_id, u32* prsh);
-struct comp_mode_tran_time_params {
-	u8 enable;
-	u32 clock_vtpxck;
-	cal_comp_mode_tran_time cal_fn;
-};
-static struct comp_mode_tran_time_params konkautele_comp_params[SENSOR_SCENARIO_ID_MAX] = {
-	{ .enable = 0, }, /*pre*/
-	{ .enable = 1, .clock_vtpxck = 1884, .cal_fn = comp_mode_tran_time_cal1, }, /*cap*/
-	{ .enable = 0, }, /*vid*/
-	{ .enable = 0, }, /*hvid*/
-	{ .enable = 0, }, /*svid*/
-	{ .enable = 0, }, /*cus1*/
-	{ .enable = 0, }, /*cus2*/
-	{ .enable = 0, }, /*csu3*/
-	{ .enable = 0, }, /*cus4*/
-	{ .enable = 0, }, /*cus5*/
-	{ .enable = 0, }, /*cus6*/
-	{ .enable = 1, .clock_vtpxck = 1404, .cal_fn = comp_mode_tran_time_cal1, }, /*cus7*/
-	{ .enable = 0, }, /*cus8*/
-	{ .enable = 0, }, /*cus9*/
-	{ .enable = 0, }, /*cus10*/
-	{ .enable = 0, }, /*cus11*/
-	{ .enable = 0, }, /*cus12*/
-	{ .enable = 0, }, /*cus13*/
-};
-
-static struct eeprom_map_info konkautele_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008,0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C1, 0x00C2, 17, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x009C, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x3C00, 0x0000, 0x0000, CALI_DATA_SLAVE_TELE_LENGTH, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x2B00, 0x3199, 0x319A, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x31C0, 0x3859, 0x385A, CALI_DATA_MASTER_LENGTH, false },
-};
-
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, konkautele_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, konkautele_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, konkautele_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, konkautele_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, konkautele_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, konkautele_get_otp_checksum_data},
-	//{SENSOR_FEATURE_GET_UNIQUE_SENSORID, konkautele_get_unique_sensorid},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, konkautele_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, konkautele_set_awb_gain},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x00EA0129,
-		.addr_header_id = 0x0000006,
-		.i2c_write_id = 0x74,
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0C00,
-		.addr_qsc = 0x24B8,/* QSC_EEPROM_ADDR */
-		.sensor_reg_addr_qsc = 0xC000, /*QSC_OTP_ADDR*/
-
-		.pdc_support = TRUE,
-		.pdc_size = 0x180,
-		.addr_pdc = 0x1E9A,
-		.sensor_reg_addr_pdc = 0xD200,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{2048, 1536}, {1640, 1230}, {0, 0}, {0, 0}, {0, 0},
-		/*  */
-		{2048, 1920},
-	},
-	.iMirrorFlip = IMAGE_H_MIRROR,//0:IMAGE_NORMAL,1:IMAGE_H_MIRROR,2:IMAGE_V_MIRROR,3:IMAGE_HV_MIRROR
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2, // Vbin
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{2048, 1536}, {1640, 1230}, {0, 0}, {0, 0}, {0, 0},
-		/*  */
-		{2048, 1920},
-	},
-	.iMirrorFlip = IMAGE_H_MIRROR,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,// all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 2,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_partial_pd_info = {
-	.i4OffsetX = 16,
-	.i4OffsetY = 32,
-	.i4PitchX = 8,
-	.i4PitchY = 32,
-	.i4PairNum = 4,
-	.i4SubBlkW = 8,
-	.i4SubBlkH = 16,
-	.i4PosL = {{20, 41}, {20, 43}, {19, 48}, {19, 50}},
-	.i4PosR = {{16, 33}, {16, 35}, {23, 56}, {23, 58}},
-	.i4BlockNumX = 496,
-	.i4BlockNumY = 72,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{2048, 1536}, {1640, 1230}, {0, 0}, {0, 0}, {0, 0},
-		/*  */
-		{2048, 1920},
-	},
-	.i4VolumeX = 1,
-	.i4VolumeY = 2,
-	.iMirrorFlip = IMAGE_H_MIRROR,//0:IMAGE_NORMAL,1:IMAGE_H_MIRROR,2:IMAGE_V_MIRROR,3:IMAGE_HV_MIRROR
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4ModeIndex = 0,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	/* VC's PD pattern description */
-	.sPDMapInfo[0] = {
-		.i4VCFeature = VC_PDAF_STATS_NE_PIX_1,
-		.i4PDPattern = 3,
-		.i4PDRepetition = 8,
-		.i4PDOrder = {1, 1, 0, 0, 0, 0, 1, 1}, /*R = 1, L = 0*/
-	},
-};
-
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 752,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4912,
-			.vsize = 3684,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2456,
-			.vsize = 1842,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{/*B6-S1 4096x3072 @30.1FPS QBIN(VBIN) VB Max. seamless F1-S1&F2-RAW-S1&F3-RAW-S1*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = konkautele_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkautele_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkautele_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 876800000,
-		.linelength = 7500,
-		.framelength = 3870,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1252800000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 388,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/*B6-S1 4096x3072 @30.1FPS QBIN(VBIN) VB Max. seamless F1-S1&F2-RAW-S1&F3-RAW-S1*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = konkautele_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 876800000,
-		.linelength = 7500,
-		.framelength = 3870,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1252800000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 388,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-		.dpc_enabled = true,
-	},
-	{/*B7-S2 4096x2304 @30.1FPS QBIN(VBIN) w/ All-PD VB Max. seamless F4-S2*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = konkautele_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_normal_video_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = konkautele_seamless_normal_video,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkautele_seamless_normal_video),
-		.hdr_mode = HDR_NONE,
-		.pclk = 876800000,
-		.linelength = 7500,
-		.framelength = 3870,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1017600000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 388,
-		.csi_param = {
-			.cphy_settle = 56,
-		},
-	},
-	{/* B4 4096x2304 @60FPS QBIN w/ Partial-PD VB_max */
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = konkautele_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 876800000,
-		.linelength = 4616,
-		.framelength = 3149,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1068340000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 12,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-	},
-	{   /*B3 4096x3072 @60FPS QBIN(VBIN) w/ Partial-PD VB Max.*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = konkautele_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 876800000,
-		.linelength = 4616,
-		.framelength = 3149,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1068340000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 12,
-		.csi_param = {},
-	},
-	{/* Reg_F5-RAW-S1 4096x3072 @30FPS Full RAW Crop w/ All-PD F1-S1&B1-S1&F3-RAW-S1*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = konkautele_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_custom1_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkautele_seamless_custom1,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkautele_seamless_custom1),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 876800000,
-		.linelength = 8960,
-		.framelength = 3241,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1252800000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1536,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 543,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 8,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-		.awb_enabled = true,
-	},
-	{/* Reg_F3-RAW-S1 4912x3684 @24FPS Full RAW Crop w/ All-PD F1-S1&B1-S1&F2-RAW-S1 */
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = konkautele_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkautele_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkautele_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 876800000,
-		.linelength = 8960,
-		.framelength = 4065,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1252800000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 1640,
-			.y0_offset = 1230,
-			.w0_size = 4912,
-			.h0_size = 3684,
-			.scale_w = 4912,
-			.scale_h = 3684,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4912,
-			.h1_size = 3684,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4912,
-			.h2_tg_size = 3684,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 543,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 8,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-		.awb_enabled = true,
-	},
-	{/* F1-S1 8192x6144 @15FPS Full RMSC bayer w/ All-PD seamless B1-S1&F2-RAW-S1&F3-RAW-S1 */
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = konkautele_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkautele_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkautele_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.pclk = 876800000,
-		.linelength = 8960,
-		.framelength = 6504,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1252800000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 543,
-		.csi_param = {0},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 8,
-	},
-	{/* F1-S1 8192x6144 @15FPS Full RMSC  Qbayer w/ All-PD seamless B1-S1&F2-RAW-S1&F3-RAW-S1 */
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = konkautele_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkautele_seamless_custom4,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkautele_seamless_custom4),
-		.hdr_mode = HDR_NONE,
-		.pclk = 876800000,
-		.linelength = 8960,
-		.framelength = 6504,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1252800000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 543,
-		.csi_param = {0},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 8,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-	},
-	{/*B6-S1 4096x3072 @30.1FPS QBIN(VBIN) VB Max. seamless F1-S1&F2-RAW-S1&F3-RAW-S1*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = konkautele_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_custom5_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 876800000,
-		.linelength = 7500,
-		.framelength = 3870,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1252800000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 388,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/*F6-S2 4096x2304 @30.1FPS Full RMSC Crop w/ All-PD seamless B2-S2*/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = konkautele_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_custom6_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = konkautele_seamless_custom6,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkautele_seamless_custom6),
-		.hdr_mode = HDR_NONE,
-		.pclk = 876800000,
-		.linelength = 8960,
-		.framelength = 3241,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1017600000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1920,
-			.w0_size = 4096,
-			.h0_size = 2304,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 543,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 8,
-		.awb_enabled = true,
-	},
-	{/* Reg_F5-RAW-S1 4096x3072 @30FPS Full RAW Crop bayer(0x3205, 0x01) w/ All-PD F1-S1&B1-S1&F3-RAW-S1*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = konkautele_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(konkautele_custom7_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 876800000,
-		.linelength = 8960,
-		.framelength = 3241,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1252800000,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1536,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 543,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 8,
-		.awb_enabled = true,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KONKAUTELE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},
-	.i2c_addr_table = {0x20, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_H_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_Gr,
-	.ana_gain_def = BASEGAIN * 4, // hardcode
-	.ana_gain_min = BASEGAIN * 1.43,
-	.ana_gain_max = BASEGAIN * 32,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = konkautele_ana_gain_table,
-	.ana_gain_table_size = sizeof(konkautele_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4, // Constraints of COARSE_INTEG_TIME
-	.exposure_max = 128 * (0xFFFC - 48), // Constraints of COARSE_INTEG_TIME
-	.exposure_step = 1, // Constraints of COARSE_INTEG_TIME
-	.exposure_margin = 48, // Constraints of COARSE_INTEG_TIME
-
-	.frame_length_max = 0xFFFC,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 500000, // tuning for sensor fusion
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL,
-	.seamless_switch_support = TRUE,
-	.seamless_switch_type = SEAMLESS_SWITCH_CUT_VB_INIT_SHUT,
-	.seamless_switch_hw_re_init_time_ns = 0,
-	.seamless_switch_prsh_hw_fixed_value = 48,
-	.seamless_switch_prsh_length_lc = 0,
-	.reg_addr_prsh_length_lines = {0x3058, 0x3059, 0x305A, 0x305B},
-	.reg_addr_prsh_mode = 0x3056,
-
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0202, 0x0203},
-			{0x0224, 0x0225},
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3160,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205},
-			{0x0216, 0x0217},
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = 0x0138,
-	.reg_addr_temp_read = 0x013A,
-	.reg_addr_auto_extend = 0x0350,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_fast_mode = 0x3010,
-
-	.init_setting_table = konkautele_init_setting,
-	.init_setting_len = ARRAY_SIZE(konkautele_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xf10e5980,
-
-	.oplus_notify_chg_flag = false,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	// {HW_ID_MCLK, 24, 0},
-	// {HW_ID_RST, 0, 1},
-	// {HW_ID_AVDD, 2804000, 3},
-	// {HW_ID_AVDD1, 2804000, 1},
-	// {HW_ID_DVDD, 1104000, 4},
-	// {HW_ID_DOVDD, 1804000, 3},
-	// {HW_ID_AFVDD, 2804000, 3},
-	// {HW_ID_MCLK_DRIVING_CURRENT, 4, 6},
-	// {HW_ID_RST, 1, 2},
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {0}, 0},
-	{HW_ID_MCLK_DRIVING_CURRENT, {8}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_DVDD, {1100000, 1100000}, 0},
-	{HW_ID_AVDD, {2800000, 2800000}, 0},
-	{HW_ID_OISVDD, {3100000, 3100000}, 2000},
-	{HW_ID_AFVDD, {3100000, 3100000}, 3000},
-	{HW_ID_RST, {1}, 5000}
-};
-
-const struct subdrv_entry konkautele_mipi_raw_entry = {
-	.name = "konkautele_mipi_raw",
-	.id = KONKAUTELE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-static unsigned int read_konkautele_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-	if (meta_id != konkautele_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != konkautele_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = konkautele_eeprom_info[meta_id].start;
-	readsize = konkautele_eeprom_info[meta_id].size;
-	konkautele_read_eeprom_protect(ctx);
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
- static struct eeprom_addr_table_struct  oplus_eeprom_addr_table =
-{
-	.i2c_read_id = 0x74,
-	.i2c_write_id = 0x74,
-
-	.addr_modinfo = 0x0000,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x009C,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, KONKAUTELE_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, KONKAUTELE_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0x97E6;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KONKAUTELE_EEPROM_READ_ID >> 1, reg, 0x00);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KONKAUTELE_EEPROM_READ_ID >> 1, reg, 0xEA);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    kal_uint32 checksum = 0;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        for(i = 0; i < pStereodata->dataLength; i++) {
-            checksum += pData[i];
-        }
-        pData[data_length] = 0x01;
-        pData[data_length + 1] = checksum % 255;
-        data_length = data_length + 2;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == KONKAUTELE_SENSOR_ID) && (data_length - 2 == CALI_DATA_SLAVE_LENGTH || data_length - 2 == CALI_DATA_SLAVE_TELE_LENGTH)
-            && (data_base == KONKAUTELE_STEREO_START_ADDR )) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-        } else if ((pStereodata->uSensorId == KONKAUTELE_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == KONKAUTELE_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, KONKAUTELE_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, KONKAUTELE_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, KONKAUTELE_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, KONKAUTELE_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, KONKAUTELE_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, KONKAUTELE_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, KONKAUTELE_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, KONKAUTELE_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("konkautele write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int konkautele_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        *len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-	return 0;
-}
-
-static int konkautele_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    if(*len > CALI_DATA_MASTER_LENGTH)
-        *len = CALI_DATA_MASTER_LENGTH;
-    read_konkautele_eeprom_info(ctx, EEPROM_META_STEREO_DATA,
-            (BYTE *)para, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KONKAUTELE_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void konkautele_read_eeprom_protect(struct subdrv_ctx *ctx) {
-	uint16_t chip_en;
-	int ret = 0;
-	unsigned short stdby[17] = {0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-								0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-								0x0000, 0x0000, 0x0000};
-
-	mutex_lock(&dw9786_mutex);
-	DRV_LOGE(ctx, "dw9786_mutex: %p\n", &dw9786_mutex);
-	ret = adaptor_i2c_rd_u16(ctx->i2c_client, KONKAUTELE_AF_SLAVE_ID>> 1, DW9786_CHIP_EN, &chip_en);
-	DRV_LOGE(ctx, "DW9786_CHIP_EN: 0x%x, ret: %d\n", chip_en, ret);
-	if(chip_en != 0x0001) {
-		adaptor_i2c_wr_u16(ctx->i2c_client, KONKAUTELE_AF_SLAVE_ID>> 1, DW9786_CHIP_EN, 0x0000);
-		mdelay(2);
-		adaptor_i2c_wr_p8(ctx->i2c_client, KONKAUTELE_AF_SLAVE_ID>> 1, DW9786_CHIP_EN, (unsigned char *)stdby, 34);
-		mdelay(5);
-		adaptor_i2c_wr_u16(ctx->i2c_client, KONKAUTELE_AF_SLAVE_ID>> 1, 0xE004, 0x0001);
-		mdelay(20);
-	}
-	mutex_unlock(&dw9786_mutex);
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	konkautele_read_eeprom_protect(ctx);
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "Module information flag:0x%x\n", read_cmos_eeprom_8(ctx, 0x0010));
-}
-
-static int konkautele_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[10] != 1) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-
-	DRV_LOGE(ctx, "cccccc Module information flag: %x", otp_data_checksum[16]);
-	return 0;
-}
-
-static int konkautele_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = GET_SENSOR_ID_RETRY_CNT;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			LOG_INF("i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x0858) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					konkautele_read_eeprom_protect(ctx);
-					LOG_INF("OTP 0x92:0x%x\n", read_cmos_eeprom_8(ctx, 0x0092));
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOGE(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = GET_SENSOR_ID_RETRY_CNT;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 konkautele_feedback_awbgain[] = {
-	0x0B8E, 0x01,
-	0x0B8F, 0x00,
-	0x0B90, 0x02,
-	0x0B91, 0x28,
-	0x0B92, 0x01,
-	0x0B93, 0x77,
-	0x0B94, 0x01,
-	0x0B95, 0x00,
-};
-
-/*write AWB gain to sensor*/
-static void feedback_awbgain(struct subdrv_ctx *ctx, kal_uint32 r_gain, kal_uint32 b_gain)
-{
-	UINT32 r_gain_int = 0;
-	UINT32 b_gain_int = 0;
-
-	DRV_LOG(ctx, "feedback_awbgain r_gain: %d, b_gain: %d\n", r_gain, b_gain);
-	r_gain_int = r_gain / 512;
-	b_gain_int = b_gain / 512;
-	konkautele_feedback_awbgain[5] = r_gain_int;
-	konkautele_feedback_awbgain[7] = (r_gain - r_gain_int * 512) / 2;
-	konkautele_feedback_awbgain[9] = b_gain_int;
-	konkautele_feedback_awbgain[11] = (b_gain - b_gain_int * 512) / 2;
-	subdrv_i2c_wr_regs_u8(ctx, konkautele_feedback_awbgain,
-		ARRAY_SIZE(konkautele_feedback_awbgain));
-
-}
-
-static int konkautele_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-	feedback_awbgain(ctx, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B);
-	return 0;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	sensor_init(ctx);
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_u8(ctx, 0x0101, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x0B06, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0xDDA9, 0x4E);
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x01);
-			DRV_LOG(ctx, "set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x00);
-		}
-	}
-
-	/* SPC data */
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0xD200;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0xD300;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x55)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 85;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (1024 - (1024 * BASEGAIN) / gain);
-}
-
-void konkautele_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	u32 exp_cnt = 0;
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-			case HDR_RAW_STAGGER:
-				*exposure_step = ctx->s_ctx.exposure_step * exp_cnt;
-				*min_shutter = ctx->s_ctx.exposure_min * exp_cnt;
-				break;
-			case HDR_NONE:
-				if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-					ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min) {
-					*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-					*min_shutter = ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min;
-				} else {
-					*exposure_step = ctx->s_ctx.exposure_step;
-					*min_shutter = ctx->s_ctx.exposure_min;
-				}
-				break;
-			default:
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-				break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int konkautele_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	konkautele_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static int konkautele_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-	update_mode_info(ctx, scenario_id);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-
-	update_mode_info(ctx, scenario_id);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	DRV_LOG(ctx, "write seamless switch setting done\n");
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-
-	calculate_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id);
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 24) & 0x07);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[3],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int konkautele_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	switch (mode) {
-	case 5:
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x00); /* dig_gain = 0 */
-		break;
-	default:
-		subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-		break;
-	}
-
-	if ((ctx->test_pattern) && (mode != ctx->test_pattern)) {
-		if (ctx->test_pattern == 5)
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-		else if (mode == 0)
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /* No pattern */
-	}
-
-	ctx->test_pattern = mode;
-	return ERROR_NONE;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, 0x3010, 0x00);
-		set_i2c_buffer(ctx, 0x3036, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void comp_mode_tran_time_cal1(struct subdrv_ctx *ctx, u32 scenario_id, u32* prsh) {
-	#define SYSTEM_USED_LINES1 (96UL)
-	#define SYSTEM_DELAY1      (189UL)
-	u64 frame_duration = 0;
-	u64 data_delay = 0;
-	u64 system_delay = 0;
-	u64 current_tline = 0;
-	u64 tline = 0;
-
-	if (!prsh) {
-		DRV_LOGE(ctx, "prsh param is NULL");
-		return;
-	}
-
-	*prsh = 0U;
-	if (konkautele_comp_params[ctx->current_scenario_id].clock_vtpxck == 0) {
-		DRV_LOG(ctx, "invalid params");
-		return;
-	}
-
-	frame_duration = 1000000000UL / ctx->current_fps * 10;
-	current_tline = 1000000000UL * ctx->s_ctx.mode[ctx->current_scenario_id].linelength /
-		ctx->s_ctx.mode[ctx->current_scenario_id].pclk;
-	tline = 1000000000UL * ctx->s_ctx.mode[scenario_id].linelength /
-		ctx->s_ctx.mode[scenario_id].pclk;
-	data_delay = (ctx->s_ctx.mode[ctx->current_scenario_id].imgsensor_winsize_info.h2_tg_size +
-		SYSTEM_USED_LINES1) * current_tline;
-	system_delay = SYSTEM_DELAY1 * 1000 * 1000 * 10 /
-		konkautele_comp_params[ctx->current_scenario_id].clock_vtpxck;
-	if (frame_duration <= data_delay + system_delay) {
-		DRV_LOGE(ctx, "invalid parameter");
-		return;
-	}
-
-	*prsh = (frame_duration - data_delay - system_delay) / tline;
-	if (ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_STAGGER) {
-		*prsh = *prsh / 2;
-	}
-
-	DRV_LOG(ctx, "frame_duration(%llu), current_tline(%llu), tline(%llu), "
-		"data_delay(%llu) system_delay(%llu) prsh(%u)\n", frame_duration,
-		current_tline, tline, data_delay, system_delay, *prsh);
-}
-
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id)
-{
-	u32 ae_ctrl_cit;
-	u32 prsh_length_lc = 0;
-	u32 cit_step = 1;
-	u8 hw_fixed_value = ctx->s_ctx.seamless_switch_prsh_hw_fixed_value;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = ctx->current_scenario_id;
-	enum IMGSENSOR_HDR_MODE_ENUM hdr_mode;
-
-	if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_VIDEO && scenario_id == SENSOR_SCENARIO_ID_CUSTOM6) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM6 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_VIDEO) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM1) {
-		prsh_length_lc = 1000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM1 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 1000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM3) {
-		prsh_length_lc = 1000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM3 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 1200;
-	} else {
-		prsh_length_lc = 0;
-	}
-
-	hdr_mode = ctx->s_ctx.mode[scenario_id].hdr_mode;
-	switch (hdr_mode) {
-	case HDR_RAW_LBMF:
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: dig_gain_lut_a = SE / dig_gain_lut_b = LE */
-			/* 3exp: dig_gain_lut_a = SE / dig_gain_lut_b = ME / dig_gain_lut_c = LE */
-			ae_ctrl_cit = ae_ctrl->exposure.me_exposure;
-			DRV_LOG_MUST(ctx, "debug se %llu le %llu, me %llu", ae_ctrl->exposure.se_exposure, ae_ctrl->exposure.le_exposure, ae_ctrl->exposure.me_exposure);
-		} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: dig_gain_lut_a = LE / dig_gain_lut_b = SE */
-			/* 3exp: dig_gain_lut_a = LE / dig_gain_lut_b = ME / dig_gain_lut_c = SE */
-			ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-			DRV_LOG_MUST(ctx, "debug le\n");
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-		break;
-	case HDR_NONE:
-	case HDR_RAW:
-	case HDR_CAMSV:
-	case HDR_RAW_ZHDR:
-	case HDR_MultiCAMSV:
-	case HDR_RAW_STAGGER:
-	case HDR_RAW_DCG_RAW:
-	case HDR_RAW_DCG_COMPOSE:
-	default:
-		ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-		break;
-	}
-	ae_ctrl_cit = max(ae_ctrl_cit, ctx->s_ctx.exposure_min);
-	ae_ctrl_cit = min(ae_ctrl_cit, ctx->s_ctx.exposure_max);
-	cit_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step ?: 1;
-	if (cit_step) {
-		ae_ctrl_cit = round_up(ae_ctrl_cit, cit_step);
-		prsh_length_lc = round_up(prsh_length_lc, cit_step);
-	}
-	DRV_LOG_MUST(ctx, "prsh_length_lc %u ae_ctrl_cit %u\n", prsh_length_lc, ae_ctrl_cit);
-	if(hdr_mode != HDR_RAW_LBMF) {
-		ae_ctrl_cit = ae_ctrl_cit / 1000;
-	}
-	prsh_length_lc = (prsh_length_lc > (ae_ctrl_cit + hw_fixed_value)) ? prsh_length_lc : 0;
-	if (prsh_length_lc < (ae_ctrl_cit + hw_fixed_value)) {
-		DRV_LOG_MUST(ctx,
-			"pre-shutter no need: prsh_length_lc(%u) < (ae_ctrl_cit(%u(max=%u,min=%u)) + hw_fixed_value(%u))\n",
-			prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.exposure_max, ctx->s_ctx.exposure_min, hw_fixed_value);
-		ctx->s_ctx.seamless_switch_prsh_length_lc = 0;
-		return;
-	}
-
-	ctx->s_ctx.seamless_switch_prsh_length_lc = prsh_length_lc;
-}
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautelemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautelemipiraw_Sensor.h
deleted file mode 100644
index 3dd8573f..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkautele_mipi_raw/konkautelemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     konkautelemipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KONKAUTELEMIPI_SENSOR_H
-#define _KONKAUTELEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "konkautele_ana_gain_table.h"
-#include "konkautele_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/Makefile
deleted file mode 100755
index add049e0..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/konkauwidemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwide_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwide_Sensor_setting.h
deleted file mode 100755
index 5ebb989b..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwide_Sensor_setting.h
+++ /dev/null
@@ -1,21872 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkauwide_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KONKAUWIDEMIPI_SENSOR_SETTING_H
-#define _KONKAUWIDEMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 konkauwide_sensor_init_pre_setting[] = {
-    0xFCFC, 0x4000,
-    0x0000, 0x000D,
-    0x0000, 0x38E5,
-    0x6018, 0x0001,
-    0x7002, 0x0408,
-    0x6014, 0x0001,
-    0xFCFC, 0x2002,
-    0x1E92, 0x8000,
-    0x1E84, 0x282B,
-    0x1E86, 0x0320,
-    0xFCFC, 0x4000,
-    0x7002, 0x0008,
-};
-
-static u16 konkauwide_sensor_init_setting[] = {
-    0xFCFC, 0x2000,
-    0xDCF0, 0x0101,
-    0xFCFC, 0x2001,
-    0x3C60, 0x0000,
-    0xFCFC, 0x4000,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2002,
-    0xA614, 0x8280,
-    0xA616, 0x0100,
-    0xA618, 0x1753,
-    0xA61A, 0x02FC,
-    0xA61C, 0xE702,
-    0xA61E, 0x83EA,
-    0xA620, 0xB7E7,
-    0xA622, 0x0124,
-    0xA624, 0x9387,
-    0xA626, 0x0787,
-    0xA628, 0x83A4,
-    0xA62A, 0x870D,
-    0xA62C, 0x03A4,
-    0xA62E, 0xC70D,
-    0xA630, 0x0146,
-    0xA632, 0xA685,
-    0xA634, 0x2285,
-    0xA636, 0x9740,
-    0xA638, 0x01FC,
-    0xA63A, 0xE780,
-    0xA63C, 0xE040,
-    0xA63E, 0x97B0,
-    0xA640, 0xFEFB,
-    0xA642, 0xE780,
-    0xA644, 0x60DC,
-    0xA646, 0x0546,
-    0xA648, 0xA685,
-    0xA64A, 0x2285,
-    0xA64C, 0x9740,
-    0xA64E, 0x01FC,
-    0xA650, 0xE780,
-    0xA652, 0x803F,
-    0xA654, 0x37A7,
-    0xA656, 0x0224,
-    0xA658, 0x9307,
-    0xA65A, 0x8754,
-    0xA65C, 0x03C6,
-    0xA65E, 0xC702,
-    0xA660, 0x8546,
-    0xA662, 0x6301,
-    0xA664, 0xD602,
-    0xA666, 0x83C6,
-    0xA668, 0x0700,
-    0xA66A, 0x0947,
-    0xA66C, 0x6384,
-    0xA66E, 0xE608,
-    0xA670, 0xB7C7,
-    0xA672, 0x0224,
-    0xA674, 0x83A7,
-    0xA676, 0x07B7,
-    0xA678, 0x0545,
-    0xA67A, 0x8297,
-    0xA67C, 0x1753,
-    0xA67E, 0x02FC,
-    0xA680, 0x6700,
-    0xA682, 0x83E6,
-    0xA684, 0x03D5,
-    0xA686, 0x4705,
-    0xA688, 0x05C9,
-    0xA68A, 0x83D8,
-    0xA68C, 0x2705,
-    0xA68E, 0xB7E6,
-    0xA690, 0x0124,
-    0xA692, 0x83D5,
-    0xA694, 0x665F,
-    0xA696, 0x1307,
-    0xA698, 0x8754,
-    0xA69A, 0x8146,
-    0xA69C, 0x2548,
-    0xA69E, 0x0356,
-    0xA6A0, 0xE702,
-    0xA6A2, 0x0907,
-    0xA6A4, 0x63E0,
-    0xA6A6, 0xC50E,
-    0xA6A8, 0x8506,
-    0xA6AA, 0xE39A,
-    0xA6AC, 0x06FF,
-    0xA6AE, 0x3707,
-    0xA6B0, 0x0040,
-    0xA6B2, 0x3A95,
-    0xA6B4, 0x2310,
-    0xA6B6, 0x1501,
-    0xA6B8, 0x03D5,
-    0xA6BA, 0x6705,
-    0xA6BC, 0x4DD5,
-    0xA6BE, 0x83D8,
-    0xA6C0, 0x2705,
-    0xA6C2, 0x37E7,
-    0xA6C4, 0x0124,
-    0xA6C6, 0x8355,
-    0xA6C8, 0x675F,
-    0xA6CA, 0xBE86,
-    0xA6CC, 0x0147,
-    0xA6CE, 0x2548,
-    0xA6D0, 0x03D6,
-    0xA6D2, 0xE602,
-    0xA6D4, 0x8906,
-    0xA6D6, 0x63EE,
-    0xA6D8, 0xC50A,
-    0xA6DA, 0x0507,
-    0xA6DC, 0xE31A,
-    0xA6DE, 0x07FF,
-    0xA6E0, 0x3707,
-    0xA6E2, 0x0040,
-    0xA6E4, 0x3A95,
-    0xA6E6, 0x2310,
-    0xA6E8, 0x1501,
-    0xA6EA, 0x83C6,
-    0xA6EC, 0x0700,
-    0xA6EE, 0x0947,
-    0xA6F0, 0xE390,
-    0xA6F2, 0xE6F8,
-    0xA6F4, 0x03D5,
-    0xA6F6, 0x8702,
-    0xA6F8, 0x1DC5,
-    0xA6FA, 0x83D8,
-    0xA6FC, 0x6702,
-    0xA6FE, 0x37F7,
-    0xA700, 0x0124,
-    0xA702, 0x8355,
-    0xA704, 0xA781,
-    0xA706, 0xBE86,
-    0xA708, 0x0147,
-    0xA70A, 0x2548,
-    0xA70C, 0x03D6,
-    0xA70E, 0x2600,
-    0xA710, 0x8906,
-    0xA712, 0x63E3,
-    0xA714, 0xC506,
-    0xA716, 0x0507,
-    0xA718, 0xE31A,
-    0xA71A, 0x07FF,
-    0xA71C, 0x3707,
-    0xA71E, 0x0040,
-    0xA720, 0x3A95,
-    0xA722, 0x2310,
-    0xA724, 0x1501,
-    0xA726, 0x03D5,
-    0xA728, 0xA702,
-    0xA72A, 0x39D1,
-    0xA72C, 0x83D8,
-    0xA72E, 0x6702,
-    0xA730, 0x37F7,
-    0xA732, 0x0124,
-    0xA734, 0x8355,
-    0xA736, 0xA781,
-    0xA738, 0xBE86,
-    0xA73A, 0x0147,
-    0xA73C, 0x2548,
-    0xA73E, 0x03D6,
-    0xA740, 0x2600,
-    0xA742, 0x8906,
-    0xA744, 0x63E4,
-    0xA746, 0xC502,
-    0xA748, 0x0507,
-    0xA74A, 0xE31A,
-    0xA74C, 0x07FF,
-    0xA74E, 0xB707,
-    0xA750, 0x0040,
-    0xA752, 0x3E95,
-    0xA754, 0xB7C7,
-    0xA756, 0x0224,
-    0xA758, 0x83A7,
-    0xA75A, 0x07B7,
-    0xA75C, 0x2310,
-    0xA75E, 0x1501,
-    0xA760, 0x0545,
-    0xA762, 0x8297,
-    0xA764, 0x1753,
-    0xA766, 0x02FC,
-    0xA768, 0x6700,
-    0xA76A, 0x03D8,
-    0xA76C, 0x2107,
-    0xA76E, 0x0607,
-    0xA770, 0xBA97,
-    0xA772, 0x83D8,
-    0xA774, 0x4700,
-    0xA776, 0xE1BF,
-    0xA778, 0x2107,
-    0xA77A, 0x0607,
-    0xA77C, 0x3E97,
-    0xA77E, 0x8358,
-    0xA780, 0x4700,
-    0xA782, 0x69BF,
-    0xA784, 0x1387,
-    0xA786, 0x0602,
-    0xA788, 0x0607,
-    0xA78A, 0x3E97,
-    0xA78C, 0x8358,
-    0xA78E, 0x0700,
-    0xA790, 0x39BF,
-    0xA792, 0x1307,
-    0xA794, 0x0702,
-    0xA796, 0x0607,
-    0xA798, 0x3E97,
-    0xA79A, 0x8358,
-    0xA79C, 0x0700,
-    0xA79E, 0x89B7,
-    0xA7A0, 0x1753,
-    0xA7A2, 0x02FC,
-    0xA7A4, 0xE702,
-    0xA7A6, 0x83CF,
-    0xA7A8, 0x3284,
-    0xA7AA, 0xB7E7,
-    0xA7AC, 0x0124,
-    0xA7AE, 0x032B,
-    0xA7B0, 0x4600,
-    0xA7B2, 0x832A,
-    0xA7B4, 0x4609,
-    0xA7B6, 0x032A,
-    0xA7B8, 0xC604,
-    0xA7BA, 0x0348,
-    0xA7BC, 0x8600,
-    0xA7BE, 0x9387,
-    0xA7C0, 0x0787,
-    0xA7C2, 0x0346,
-    0xA7C4, 0x8609,
-    0xA7C6, 0x0347,
-    0xA7C8, 0x0405,
-    0xA7CA, 0x83AB,
-    0xA7CC, 0x070E,
-    0xA7CE, 0x03AC,
-    0xA7D0, 0x470E,
-    0xA7D2, 0x3318,
-    0xA7D4, 0x0B01,
-    0xA7D6, 0x3317,
-    0xA7D8, 0xEA00,
-    0xA7DA, 0x3396,
-    0xA7DC, 0xCA00,
-    0xA7DE, 0x2322,
-    0xA7E0, 0x0401,
-    0xA7E2, 0x78C4,
-    0xA7E4, 0xAA84,
-    0xA7E6, 0x2E89,
-    0xA7E8, 0x232A,
-    0xA7EA, 0xC408,
-    0xA7EC, 0xDE85,
-    0xA7EE, 0x6285,
-    0xA7F0, 0x0146,
-    0xA7F2, 0xB689,
-    0xA7F4, 0x9740,
-    0xA7F6, 0x01FC,
-    0xA7F8, 0xE780,
-    0xA7FA, 0x0025,
-    0xA7FC, 0xCE86,
-    0xA7FE, 0x2286,
-    0xA800, 0xCA85,
-    0xA802, 0x2685,
-    0xA804, 0x97B0,
-    0xA806, 0xFDFB,
-    0xA808, 0xE780,
-    0xA80A, 0x00B0,
-    0xA80C, 0x6285,
-    0xA80E, 0x0546,
-    0xA810, 0xDE85,
-    0xA812, 0x9740,
-    0xA814, 0x01FC,
-    0xA816, 0xE780,
-    0xA818, 0x2023,
-    0xA81A, 0xB7C7,
-    0xA81C, 0x0224,
-    0xA81E, 0x83A7,
-    0xA820, 0x07B7,
-    0xA822, 0x2322,
-    0xA824, 0x6401,
-    0xA826, 0x232A,
-    0xA828, 0x5409,
-    0xA82A, 0x2326,
-    0xA82C, 0x4405,
-    0xA82E, 0x0145,
-    0xA830, 0x8297,
-    0xA832, 0x1753,
-    0xA834, 0x02FC,
-    0xA836, 0x6700,
-    0xA838, 0xE3C9,
-    0xA83A, 0x0100,
-    0xA83C, 0x1753,
-    0xA83E, 0x02FC,
-    0xA840, 0xE702,
-    0xA842, 0x43C8,
-    0xA844, 0x2A84,
-    0xA846, 0xEFE0,
-    0xA848, 0xEFA9,
-    0xA84A, 0xA147,
-    0xA84C, 0x6306,
-    0xA84E, 0xF400,
-    0xA850, 0x1753,
-    0xA852, 0x02FC,
-    0xA854, 0x6700,
-    0xA856, 0x43C9,
-    0xA858, 0x9770,
-    0xA85A, 0xFFFB,
-    0xA85C, 0xE780,
-    0xA85E, 0x000C,
-    0xA860, 0x39C5,
-    0xA862, 0xB737,
-    0xA864, 0x0124,
-    0xA866, 0x83C7,
-    0xA868, 0x271A,
-    0xA86A, 0xFDD3,
-    0xA86C, 0x3784,
-    0xA86E, 0x0040,
-    0xA870, 0x8355,
-    0xA872, 0xE4F3,
-    0xA874, 0x0D45,
-    0xA876, 0x93E5,
-    0xA878, 0x0524,
-    0xA87A, 0x97D0,
-    0xA87C, 0xFFFB,
-    0xA87E, 0xE780,
-    0xA880, 0xA00A,
-    0xA882, 0x8355,
-    0xA884, 0x24F7,
-    0xA886, 0xB7A7,
-    0xA888, 0x0124,
-    0xA88A, 0x9387,
-    0xA88C, 0x0753,
-    0xA88E, 0x03D7,
-    0xA890, 0x47B6,
-    0xA892, 0xC205,
-    0xA894, 0xC181,
-    0xA896, 0x1377,
-    0xA898, 0xF7DB,
-    0xA89A, 0x93F5,
-    0xA89C, 0xF5DB,
-    0xA89E, 0x4145,
-    0xA8A0, 0x2392,
-    0xA8A2, 0xE7B6,
-    0xA8A4, 0x97D0,
-    0xA8A6, 0xFFFB,
-    0xA8A8, 0xE780,
-    0xA8AA, 0x0008,
-    0xA8AC, 0x55B7,
-    0xA8AE, 0x9770,
-    0xA8B0, 0xFFFB,
-    0xA8B2, 0xE780,
-    0xA8B4, 0xA003,
-    0xA8B6, 0x55D5,
-    0xA8B8, 0x9770,
-    0xA8BA, 0xFFFB,
-    0xA8BC, 0xE780,
-    0xA8BE, 0x807D,
-    0xA8C0, 0x19C9,
-    0xA8C2, 0xB797,
-    0xA8C4, 0x0124,
-    0xA8C6, 0x9387,
-    0xA8C8, 0x07D7,
-    0xA8CA, 0x03C7,
-    0xA8CC, 0x8703,
-    0xA8CE, 0x83C7,
-    0xA8D0, 0x2706,
-    0xA8D2, 0x6306,
-    0xA8D4, 0xF706,
-    0xA8D6, 0x9770,
-    0xA8D8, 0xFFFB,
-    0xA8DA, 0xE780,
-    0xA8DC, 0xA07B,
-    0xA8DE, 0x51D1,
-    0xA8E0, 0xB797,
-    0xA8E2, 0x0124,
-    0xA8E4, 0x9387,
-    0xA8E6, 0x07D7,
-    0xA8E8, 0x03C7,
-    0xA8EA, 0xC701,
-    0xA8EC, 0x83C7,
-    0xA8EE, 0x2706,
-    0xA8F0, 0xE319,
-    0xA8F2, 0xF7F6,
-    0xA8F4, 0xB727,
-    0xA8F6, 0x0224,
-    0xA8F8, 0x0564,
-    0xA8FA, 0x9387,
-    0xA8FC, 0x076B,
-    0xA8FE, 0xA297,
-    0xA900, 0x03C7,
-    0xA902, 0xF780,
-    0xA904, 0x8547,
-    0xA906, 0x6317,
-    0xA908, 0xF700,
-    0xA90A, 0xB737,
-    0xA90C, 0x0124,
-    0xA90E, 0x83C7,
-    0xA910, 0x57A5,
-    0xA912, 0xB1C3,
-    0xA914, 0xB787,
-    0xA916, 0x0040,
-    0xA918, 0x83D5,
-    0xA91A, 0xE7F3,
-    0xA91C, 0x0D45,
-    0xA91E, 0x93E5,
-    0xA920, 0x0501,
-    0xA922, 0x97D0,
-    0xA924, 0xFFFB,
-    0xA926, 0xE780,
-    0xA928, 0x2000,
-    0xA92A, 0xB7A7,
-    0xA92C, 0x0124,
-    0xA92E, 0x9387,
-    0xA930, 0x0753,
-    0xA932, 0x03D7,
-    0xA934, 0x47B6,
-    0xA936, 0x3D9B,
-    0xA938, 0x2392,
-    0xA93A, 0xE7B6,
-    0xA93C, 0x1DB7,
-    0xA93E, 0xB727,
-    0xA940, 0x0224,
-    0xA942, 0x0564,
-    0xA944, 0x9387,
-    0xA946, 0x076B,
-    0xA948, 0xA297,
-    0xA94A, 0x03C7,
-    0xA94C, 0xF780,
-    0xA94E, 0x9147,
-    0xA950, 0xE30D,
-    0xA952, 0xF7FA,
-    0xA954, 0xC1B7,
-    0xA956, 0xB787,
-    0xA958, 0x0040,
-    0xA95A, 0x83D5,
-    0xA95C, 0xE7F3,
-    0xA95E, 0x0D45,
-    0xA960, 0x93E5,
-    0xA962, 0x0504,
-    0xA964, 0x97D0,
-    0xA966, 0xFFFB,
-    0xA968, 0xE780,
-    0xA96A, 0x00FC,
-    0xA96C, 0xB797,
-    0xA96E, 0x0124,
-    0xA970, 0x9387,
-    0xA972, 0x0753,
-    0xA974, 0xA297,
-    0xA976, 0x03D7,
-    0xA978, 0x47B6,
-    0xA97A, 0x1377,
-    0xA97C, 0xF7FB,
-    0xA97E, 0x2392,
-    0xA980, 0xE7B6,
-    0xA982, 0xC5B5,
-    0xA984, 0x3571,
-    0xA986, 0x22CF,
-    0xA988, 0x26CD,
-    0xA98A, 0x7324,
-    0xA98C, 0x2034,
-    0xA98E, 0xF324,
-    0xA990, 0x1034,
-    0xA992, 0x7360,
-    0xA994, 0x0430,
-    0xA996, 0x06CB,
-    0xA998, 0x16C9,
-    0xA99A, 0x1AC7,
-    0xA99C, 0x1EC5,
-    0xA99E, 0x2AC3,
-    0xA9A0, 0x2EC1,
-    0xA9A2, 0xB2DE,
-    0xA9A4, 0xB6DC,
-    0xA9A6, 0xBADA,
-    0xA9A8, 0xBED8,
-    0xA9AA, 0xC2D6,
-    0xA9AC, 0xC6D4,
-    0xA9AE, 0xF2D2,
-    0xA9B0, 0xF6D0,
-    0xA9B2, 0xFACE,
-    0xA9B4, 0xFECC,
-    0xA9B6, 0x82E2,
-    0xA9B8, 0x86E0,
-    0xA9BA, 0x0AFE,
-    0xA9BC, 0x0EFC,
-    0xA9BE, 0x12FA,
-    0xA9C0, 0x16F8,
-    0xA9C2, 0x1AF6,
-    0xA9C4, 0x1EF4,
-    0xA9C6, 0x2AF2,
-    0xA9C8, 0x2EF0,
-    0xA9CA, 0x32EE,
-    0xA9CC, 0x36EC,
-    0xA9CE, 0x3AEA,
-    0xA9D0, 0x3EE8,
-    0xA9D2, 0x42E6,
-    0xA9D4, 0x46E4,
-    0xA9D6, 0x72E2,
-    0xA9D8, 0x76E0,
-    0xA9DA, 0x272E,
-    0xA9DC, 0xE1FF,
-    0xA9DE, 0x272C,
-    0xA9E0, 0xF1FF,
-    0xA9E2, 0x9770,
-    0xA9E4, 0xFFFB,
-    0xA9E6, 0xE780,
-    0xA9E8, 0x60F3,
-    0xA9EA, 0x19C5,
-    0xA9EC, 0x9770,
-    0xA9EE, 0xFFFB,
-    0xA9F0, 0xE780,
-    0xA9F2, 0xC0EF,
-    0xA9F4, 0x631C,
-    0xA9F6, 0x0512,
-    0xA9F8, 0x9305,
-    0xA9FA, 0x0024,
-    0xA9FC, 0x4145,
-    0xA9FE, 0x97D0,
-    0xAA00, 0xFFFB,
-    0xAA02, 0xE780,
-    0xAA04, 0x60F9,
-    0xAA06, 0x8145,
-    0xAA08, 0x9377,
-    0xAA0A, 0x1500,
-    0xAA0C, 0x85C7,
-    0xAA0E, 0x37D7,
-    0xAA10, 0x0124,
-    0xAA12, 0xB7A7,
-    0xAA14, 0x0124,
-    0xAA16, 0x1307,
-    0xAA18, 0x07C4,
-    0xAA1A, 0x9387,
-    0xAA1C, 0x0753,
-    0xAA1E, 0x0356,
-    0xAA20, 0x4707,
-    0xAA22, 0x83D6,
-    0xAA24, 0xA7B6,
-    0xAA26, 0x0506,
-    0xAA28, 0x93E6,
-    0xAA2A, 0x1600,
-    0xAA2C, 0x231A,
-    0xAA2E, 0xC706,
-    0xAA30, 0x2395,
-    0xAA32, 0xD7B6,
-    0xAA34, 0x9377,
-    0xAA36, 0x2500,
-    0xAA38, 0x85C7,
-    0xAA3A, 0x37D7,
-    0xAA3C, 0x0124,
-    0xAA3E, 0xB7A7,
-    0xAA40, 0x0124,
-    0xAA42, 0x1307,
-    0xAA44, 0x07C4,
-    0xAA46, 0x9387,
-    0xAA48, 0x0753,
-    0xAA4A, 0x0356,
-    0xAA4C, 0xC70C,
-    0xAA4E, 0x83D6,
-    0xAA50, 0xA7B6,
-    0xAA52, 0x0506,
-    0xAA54, 0x93E6,
-    0xAA56, 0x2600,
-    0xAA58, 0x2316,
-    0xAA5A, 0xC70C,
-    0xAA5C, 0x2395,
-    0xAA5E, 0xD7B6,
-    0xAA60, 0x9377,
-    0xAA62, 0x0520,
-    0xAA64, 0x1375,
-    0xAA66, 0x0504,
-    0xAA68, 0xC5C3,
-    0xAA6A, 0xB7D7,
-    0xAA6C, 0x0124,
-    0xAA6E, 0x9387,
-    0xAA70, 0x07C4,
-    0xAA72, 0x03D7,
-    0xAA74, 0x6708,
-    0xAA76, 0x0507,
-    0xAA78, 0x2393,
-    0xAA7A, 0xE708,
-    0xAA7C, 0xD1C5,
-    0xAA7E, 0x37A7,
-    0xAA80, 0x0124,
-    0xAA82, 0x1307,
-    0xAA84, 0x0753,
-    0xAA86, 0x8356,
-    0xAA88, 0xA7B6,
-    0xAA8A, 0x93E6,
-    0xAA8C, 0x0620,
-    0xAA8E, 0x2315,
-    0xAA90, 0xD7B6,
-    0xAA92, 0x11C9,
-    0xAA94, 0x03D6,
-    0xAA96, 0xA708,
-    0xAA98, 0x0506,
-    0xAA9A, 0x2395,
-    0xAA9C, 0xC708,
-    0xAA9E, 0x93E6,
-    0xAAA0, 0x0604,
-    0xAAA2, 0x2315,
-    0xAAA4, 0xD7B6,
-    0xAAA6, 0xDA40,
-    0xAAA8, 0xCA42,
-    0xAAAA, 0x3A43,
-    0xAAAC, 0xAA43,
-    0xAAAE, 0x1A45,
-    0xAAB0, 0x8A45,
-    0xAAB2, 0x7656,
-    0xAAB4, 0xE656,
-    0xAAB6, 0x5657,
-    0xAAB8, 0xC657,
-    0xAABA, 0x3658,
-    0xAABC, 0xA658,
-    0xAABE, 0x165E,
-    0xAAC0, 0x865E,
-    0xAAC2, 0x764F,
-    0xAAC4, 0xE64F,
-    0xAAC6, 0x1660,
-    0xAAC8, 0x8660,
-    0xAACA, 0x7271,
-    0xAACC, 0xE271,
-    0xAACE, 0x5272,
-    0xAAD0, 0xC272,
-    0xAAD2, 0x3273,
-    0xAAD4, 0xA273,
-    0xAAD6, 0x1275,
-    0xAAD8, 0x8275,
-    0xAADA, 0x7266,
-    0xAADC, 0xE266,
-    0xAADE, 0x5267,
-    0xAAE0, 0xC267,
-    0xAAE2, 0x3268,
-    0xAAE4, 0xA268,
-    0xAAE6, 0x126E,
-    0xAAE8, 0x826E,
-    0xAAEA, 0x072F,
-    0xAAEC, 0xC1FF,
-    0xAAEE, 0x872F,
-    0xAAF0, 0x81FF,
-    0xAAF2, 0x7370,
-    0xAAF4, 0x0430,
-    0xAAF6, 0x7390,
-    0xAAF8, 0x1434,
-    0xAAFA, 0x7310,
-    0xAAFC, 0x2434,
-    0xAAFE, 0x7A44,
-    0xAB00, 0xEA44,
-    0xAB02, 0x0D61,
-    0xAB04, 0x7300,
-    0xAB06, 0x2030,
-    0xAB08, 0x59DD,
-    0xAB0A, 0xB7D7,
-    0xAB0C, 0x0124,
-    0xAB0E, 0x9387,
-    0xAB10, 0x07C4,
-    0xAB12, 0x03D7,
-    0xAB14, 0xA708,
-    0xAB16, 0x0507,
-    0xAB18, 0x2395,
-    0xAB1A, 0xE708,
-    0xAB1C, 0xC9D5,
-    0xAB1E, 0x37A7,
-    0xAB20, 0x0124,
-    0xAB22, 0x1307,
-    0xAB24, 0x0753,
-    0xAB26, 0x8356,
-    0xAB28, 0xA7B6,
-    0xAB2A, 0x95BF,
-    0xAB2C, 0xB7A7,
-    0xAB2E, 0x0124,
-    0xAB30, 0x83D5,
-    0xAB32, 0x8709,
-    0xAB34, 0x4145,
-    0xAB36, 0x97D0,
-    0xAB38, 0xFFFB,
-    0xAB3A, 0xE780,
-    0xAB3C, 0xE0E5,
-    0xAB3E, 0x8545,
-    0xAB40, 0xE1B5,
-    0xAB42, 0x0100,
-    0xAB44, 0x8280,
-    0xAB46, 0x0100,
-    0xAB48, 0x1753,
-    0xAB4A, 0x02FC,
-    0xAB4C, 0xE702,
-    0xAB4E, 0x8397,
-    0xAB50, 0x37E4,
-    0xAB52, 0x0124,
-    0xAB54, 0x1304,
-    0xAB56, 0x044C,
-    0xAB58, 0x8344,
-    0xAB5A, 0xE40A,
-    0xAB5C, 0x8547,
-    0xAB5E, 0x2307,
-    0xAB60, 0xF40A,
-    0xAB62, 0x97A0,
-    0xAB64, 0xFDFB,
-    0xAB66, 0xE780,
-    0xAB68, 0x20E3,
-    0xAB6A, 0x2307,
-    0xAB6C, 0x940A,
-    0xAB6E, 0x1753,
-    0xAB70, 0x02FC,
-    0xAB72, 0x6700,
-    0xAB74, 0x6397,
-    0xAB76, 0x0100,
-    0xAB78, 0xB7A7,
-    0xAB7A, 0x0224,
-    0xAB7C, 0x83C7,
-    0xAB7E, 0x075A,
-    0xAB80, 0x0547,
-    0xAB82, 0x6383,
-    0xAB84, 0xE700,
-    0xAB86, 0x8280,
-    0xAB88, 0x1753,
-    0xAB8A, 0x02FC,
-    0xAB8C, 0xE702,
-    0xAB8E, 0xE391,
-    0xAB90, 0x3794,
-    0xAB92, 0x0124,
-    0xAB94, 0x1304,
-    0xAB96, 0x0453,
-    0xAB98, 0x0347,
-    0xAB9A, 0x041B,
-    0xAB9C, 0x4111,
-    0xAB9E, 0x6307,
-    0xABA0, 0xF700,
-    0xABA2, 0x4101,
-    0xABA4, 0x1753,
-    0xABA6, 0x02FC,
-    0xABA8, 0x6700,
-    0xABAA, 0x6393,
-    0xABAC, 0x8947,
-    0xABAE, 0xE31A,
-    0xABB0, 0xF5FE,
-    0xABB2, 0x8347,
-    0xABB4, 0x3441,
-    0xABB6, 0xADC3,
-    0xABB8, 0x83A9,
-    0xABBA, 0x0500,
-    0xABBC, 0x2EC6,
-    0xABBE, 0x97C0,
-    0xABC0, 0x01FC,
-    0xABC2, 0xE780,
-    0xABC4, 0x20B8,
-    0xABC6, 0xAA84,
-    0xABC8, 0x9780,
-    0xABCA, 0x01FC,
-    0xABCC, 0xE780,
-    0xABCE, 0x80C7,
-    0xABD0, 0xB245,
-    0xABD2, 0x2A89,
-    0xABD4, 0x9C41,
-    0xABD6, 0x63F3,
-    0xABD8, 0x9700,
-    0xABDA, 0xA687,
-    0xABDC, 0x8851,
-    0xABDE, 0x9CC1,
-    0xABE0, 0x2EC6,
-    0xABE2, 0x4A95,
-    0xABE4, 0x97B0,
-    0xABE6, 0x00FC,
-    0xABE8, 0xE780,
-    0xABEA, 0x00C5,
-    0xABEC, 0xB245,
-    0xABEE, 0xAA84,
-    0xABF0, 0xE8C9,
-    0xABF2, 0x3385,
-    0xABF4, 0x2901,
-    0xABF6, 0x97B0,
-    0xABF8, 0x00FC,
-    0xABFA, 0xE780,
-    0xABFC, 0xE0C3,
-    0xABFE, 0x8567,
-    0xAC00, 0x3E94,
-    0xAC02, 0x8327,
-    0xAC04, 0xC483,
-    0xAC06, 0x2695,
-    0xAC08, 0xB245,
-    0xAC0A, 0x63F3,
-    0xAC0C, 0xA700,
-    0xAC0E, 0xAA87,
-    0xAC10, 0x2322,
-    0xAC12, 0xF498,
-    0xAC14, 0xE8C5,
-    0xAC16, 0x71B7,
-    0xAC18, 0x0145,
-    0xAC1A, 0x2EC6,
-    0xAC1C, 0x97B0,
-    0xAC1E, 0x01FC,
-    0xAC20, 0xE780,
-    0xAC22, 0x8035,
-    0xAC24, 0xB245,
-    0xAC26, 0xAA89,
-    0xAC28, 0x51BF,
-    0xAC2A, 0x0100,
-    0xAC2C, 0x1753,
-    0xAC2E, 0x02FC,
-    0xAC30, 0xE702,
-    0xAC32, 0x4389,
-    0xAC34, 0x2A84,
-    0xAC36, 0xEFE0,
-    0xAC38, 0xAFFC,
-    0xAC3A, 0x01E8,
-    0xAC3C, 0xB7D7,
-    0xAC3E, 0x0124,
-    0xAC40, 0x03A7,
-    0xAC42, 0x87C1,
-    0xAC44, 0x9147,
-    0xAC46, 0x6306,
-    0xAC48, 0xF700,
-    0xAC4A, 0x1753,
-    0xAC4C, 0x02FC,
-    0xAC4E, 0x6700,
-    0xAC50, 0xA389,
-    0xAC52, 0xB7D7,
-    0xAC54, 0x0124,
-    0xAC56, 0x83C7,
-    0xAC58, 0x07FA,
-    0xAC5A, 0xE5DB,
-    0xAC5C, 0xB747,
-    0xAC5E, 0x0124,
-    0xAC60, 0x83C7,
-    0xAC62, 0x27C4,
-    0xAC64, 0xFDF3,
-    0xAC66, 0x97E0,
-    0xAC68, 0x00FC,
-    0xAC6A, 0xE780,
-    0xAC6C, 0xA097,
-    0xAC6E, 0xB787,
-    0xAC70, 0x0224,
-    0xAC72, 0x0547,
-    0xAC74, 0xA380,
-    0xAC76, 0xE74E,
-    0xAC78, 0xC9BF,
-    0xAC7A, 0x0100,
-    0xAC7C, 0x1753,
-    0xAC7E, 0x02FC,
-    0xAC80, 0xE702,
-    0xAC82, 0x4384,
-    0xAC84, 0x3784,
-    0xAC86, 0x0224,
-    0xAC88, 0x1304,
-    0xAC8A, 0xC449,
-    0xAC8C, 0x8347,
-    0xAC8E, 0x5404,
-    0xAC90, 0x99E7,
-    0xAC92, 0xEFE0,
-    0xAC94, 0x7F82,
-    0xAC96, 0x1753,
-    0xAC98, 0x02FC,
-    0xAC9A, 0x6700,
-    0xAC9C, 0xE384,
-    0xAC9E, 0x97E0,
-    0xACA0, 0x00FC,
-    0xACA2, 0xE780,
-    0xACA4, 0x20AF,
-    0xACA6, 0xA302,
-    0xACA8, 0x0404,
-    0xACAA, 0xEFE0,
-    0xACAC, 0xFF80,
-    0xACAE, 0x1753,
-    0xACB0, 0x02FC,
-    0xACB2, 0x6700,
-    0xACB4, 0x6383,
-    0xACB6, 0x0100,
-    0xACB8, 0x1753,
-    0xACBA, 0x02FC,
-    0xACBC, 0xE702,
-    0xACBE, 0x8380,
-    0xACC0, 0xB7E7,
-    0xACC2, 0x0124,
-    0xACC4, 0x9387,
-    0xACC6, 0x0787,
-    0xACC8, 0x03A9,
-    0xACCA, 0x870E,
-    0xACCC, 0x83A4,
-    0xACCE, 0xC70E,
-    0xACD0, 0x0146,
-    0xACD2, 0xCA85,
-    0xACD4, 0x2A84,
-    0xACD6, 0x2685,
-    0xACD8, 0x9740,
-    0xACDA, 0x01FC,
-    0xACDC, 0xE780,
-    0xACDE, 0xC0D6,
-    0xACE0, 0x2285,
-    0xACE2, 0x97A0,
-    0xACE4, 0xFFFB,
-    0xACE6, 0xE780,
-    0xACE8, 0x603E,
-    0xACEA, 0x0546,
-    0xACEC, 0xCA85,
-    0xACEE, 0x2685,
-    0xACF0, 0x9740,
-    0xACF2, 0x01FC,
-    0xACF4, 0xE780,
-    0xACF6, 0x40D5,
-    0xACF8, 0x8547,
-    0xACFA, 0x630F,
-    0xACFC, 0xF400,
-    0xACFE, 0x9147,
-    0xAD00, 0x630C,
-    0xAD02, 0xF400,
-    0xAD04, 0xB7C7,
-    0xAD06, 0x0224,
-    0xAD08, 0x83A7,
-    0xAD0A, 0x07B7,
-    0xAD0C, 0x0945,
-    0xAD0E, 0x8297,
-    0xAD10, 0x1743,
-    0xAD12, 0x02FC,
-    0xAD14, 0x6700,
-    0xAD16, 0x437D,
-    0xAD18, 0x9770,
-    0xAD1A, 0xFFFB,
-    0xAD1C, 0xE780,
-    0xAD1E, 0x00C0,
-    0xAD20, 0x75F1,
-    0xAD22, 0x9770,
-    0xAD24, 0xFFFB,
-    0xAD26, 0xE780,
-    0xAD28, 0x60BC,
-    0xAD2A, 0x69DD,
-    0xAD2C, 0x9770,
-    0xAD2E, 0xFFFB,
-    0xAD30, 0xE780,
-    0xAD32, 0x4036,
-    0xAD34, 0x19C9,
-    0xAD36, 0xB797,
-    0xAD38, 0x0124,
-    0xAD3A, 0x9387,
-    0xAD3C, 0x07D7,
-    0xAD3E, 0x03C7,
-    0xAD40, 0x8703,
-    0xAD42, 0x83C7,
-    0xAD44, 0x2706,
-    0xAD46, 0x6306,
-    0xAD48, 0xF706,
-    0xAD4A, 0x9770,
-    0xAD4C, 0xFFFB,
-    0xAD4E, 0xE780,
-    0xAD50, 0x6034,
-    0xAD52, 0x4DD9,
-    0xAD54, 0xB797,
-    0xAD56, 0x0124,
-    0xAD58, 0x9387,
-    0xAD5A, 0x07D7,
-    0xAD5C, 0x03C7,
-    0xAD5E, 0xC701,
-    0xAD60, 0x83C7,
-    0xAD62, 0x2706,
-    0xAD64, 0xE310,
-    0xAD66, 0xF7FA,
-    0xAD68, 0xB7C7,
-    0xAD6A, 0x0224,
-    0xAD6C, 0x83A7,
-    0xAD6E, 0x47B7,
-    0xAD70, 0xB706,
-    0xAD72, 0x0040,
-    0xAD74, 0x1386,
-    0xAD76, 0x4606,
-    0xAD78, 0x8965,
-    0xAD7A, 0x3E96,
-    0xAD7C, 0x1387,
-    0xAD7E, 0x061F,
-    0xAD80, 0x9385,
-    0xAD82, 0xF5F1,
-    0xAD84, 0x2310,
-    0xAD86, 0xB600,
-    0xAD88, 0x3E97,
-    0xAD8A, 0x7D56,
-    0xAD8C, 0x2310,
-    0xAD8E, 0xC700,
-    0xAD90, 0x37D6,
-    0xAD92, 0x0124,
-    0xAD94, 0x1306,
-    0xAD96, 0x06E7,
-    0xAD98, 0x0357,
-    0xAD9A, 0xC605,
-    0xAD9C, 0x0356,
-    0xAD9E, 0x6606,
-    0xADA0, 0x9386,
-    0xADA2, 0x861D,
-    0xADA4, 0x3297,
-    0xADA6, 0x4207,
-    0xADA8, 0xB697,
-    0xADAA, 0x4183,
-    0xADAC, 0x2390,
-    0xADAE, 0xE700,
-    0xADB0, 0x91BF,
-    0xADB2, 0xB7C7,
-    0xADB4, 0x0224,
-    0xADB6, 0x83A7,
-    0xADB8, 0x47B7,
-    0xADBA, 0xB706,
-    0xADBC, 0x0040,
-    0xADBE, 0x1386,
-    0xADC0, 0x4606,
-    0xADC2, 0x8965,
-    0xADC4, 0x3E96,
-    0xADC6, 0x1387,
-    0xADC8, 0x061F,
-    0xADCA, 0x9385,
-    0xADCC, 0xF5F1,
-    0xADCE, 0x2310,
-    0xADD0, 0xB600,
-    0xADD2, 0x3E97,
-    0xADD4, 0x7D56,
-    0xADD6, 0x2310,
-    0xADD8, 0xC700,
-    0xADDA, 0x37D6,
-    0xADDC, 0x0124,
-    0xADDE, 0x1306,
-    0xADE0, 0x06E7,
-    0xADE2, 0x0357,
-    0xADE4, 0x0606,
-    0xADE6, 0x9386,
-    0xADE8, 0xA61D,
-    0xADEA, 0x0356,
-    0xADEC, 0x6606,
-    0xADEE, 0x5DBF,
-    0xADF0, 0x1743,
-    0xADF2, 0x02FC,
-    0xADF4, 0xE702,
-    0xADF6, 0x036D,
-    0xADF8, 0xB7D7,
-    0xADFA, 0x0024,
-    0xADFC, 0x83C7,
-    0xADFE, 0x476D,
-    0xAE00, 0x8544,
-    0xAE02, 0x6380,
-    0xAE04, 0x9714,
-    0xAE06, 0xB7E7,
-    0xAE08, 0x0024,
-    0xAE0A, 0x03C4,
-    0xAE0C, 0xC784,
-    0xAE0E, 0xB7A7,
-    0xAE10, 0x0124,
-    0xAE12, 0x83C7,
-    0xAE14, 0x6792,
-    0xAE16, 0x3334,
-    0xAE18, 0x8000,
-    0xAE1A, 0x3304,
-    0xAE1C, 0x8040,
-    0xAE1E, 0x7998,
-    0xAE20, 0x1304,
-    0xAE22, 0x6402,
-    0xAE24, 0xEDE7,
-    0xAE26, 0xB767,
-    0xAE28, 0x0024,
-    0xAE2A, 0x9387,
-    0xAE2C, 0x0733,
-    0xAE2E, 0x03D7,
-    0xAE30, 0xE75B,
-    0xAE32, 0x19C7,
-    0xAE34, 0x1347,
-    0xAE36, 0xF7FF,
-    0xAE38, 0x618F,
-    0xAE3A, 0x1314,
-    0xAE3C, 0x0701,
-    0xAE3E, 0x4180,
-    0xAE40, 0x83D7,
-    0xAE42, 0x075C,
-    0xAE44, 0x0D45,
-    0xAE46, 0x5D8C,
-    0xAE48, 0x4204,
-    0xAE4A, 0x4180,
-    0xAE4C, 0xA285,
-    0xAE4E, 0x97D0,
-    0xAE50, 0xFFFB,
-    0xAE52, 0xE780,
-    0xAE54, 0xA0BB,
-    0xAE56, 0x9315,
-    0xAE58, 0x0501,
-    0xAE5A, 0xC181,
-    0xAE5C, 0xAA84,
-    0xAE5E, 0x6309,
-    0xAE60, 0xB400,
-    0xAE62, 0x0565,
-    0xAE64, 0xA18D,
-    0xAE66, 0x2D05,
-    0xAE68, 0x97A0,
-    0xAE6A, 0xFFFB,
-    0xAE6C, 0xE780,
-    0xAE6E, 0x8046,
-    0xAE70, 0x1395,
-    0xAE72, 0x0401,
-    0xAE74, 0x93F7,
-    0xAE76, 0x1400,
-    0xAE78, 0x4181,
-    0xAE7A, 0x91CB,
-    0xAE7C, 0xB7D7,
-    0xAE7E, 0x0124,
-    0xAE80, 0x9387,
-    0xAE82, 0x07C4,
-    0xAE84, 0x03D7,
-    0xAE86, 0x4707,
-    0xAE88, 0x0507,
-    0xAE8A, 0x239A,
-    0xAE8C, 0xE706,
-    0xAE8E, 0x9377,
-    0xAE90, 0x2500,
-    0xAE92, 0x91CB,
-    0xAE94, 0xB7D7,
-    0xAE96, 0x0124,
-    0xAE98, 0x9387,
-    0xAE9A, 0x07C4,
-    0xAE9C, 0x03D7,
-    0xAE9E, 0xC70C,
-    0xAEA0, 0x0507,
-    0xAEA2, 0x2396,
-    0xAEA4, 0xE70C,
-    0xAEA6, 0x9377,
-    0xAEA8, 0x4500,
-    0xAEAA, 0x91CB,
-    0xAEAC, 0xB7D7,
-    0xAEAE, 0x0124,
-    0xAEB0, 0x9387,
-    0xAEB2, 0x07C4,
-    0xAEB4, 0x03D7,
-    0xAEB6, 0xE70C,
-    0xAEB8, 0x0507,
-    0xAEBA, 0x2397,
-    0xAEBC, 0xE70C,
-    0xAEBE, 0x9377,
-    0xAEC0, 0x0502,
-    0xAEC2, 0x91CB,
-    0xAEC4, 0xB7D7,
-    0xAEC6, 0x0124,
-    0xAEC8, 0x9387,
-    0xAECA, 0x07C4,
-    0xAECC, 0x03D7,
-    0xAECE, 0x070F,
-    0xAED0, 0x0507,
-    0xAED2, 0x2398,
-    0xAED4, 0xE70E,
-    0xAED6, 0x9377,
-    0xAED8, 0x0520,
-    0xAEDA, 0x91CB,
-    0xAEDC, 0xB7D7,
-    0xAEDE, 0x0124,
-    0xAEE0, 0x9387,
-    0xAEE2, 0x07C4,
-    0xAEE4, 0x03D7,
-    0xAEE6, 0x6708,
-    0xAEE8, 0x0507,
-    0xAEEA, 0x2393,
-    0xAEEC, 0xE708,
-    0xAEEE, 0x1375,
-    0xAEF0, 0x0504,
-    0xAEF2, 0x11C9,
-    0xAEF4, 0xB7D7,
-    0xAEF6, 0x0124,
-    0xAEF8, 0x9387,
-    0xAEFA, 0x07C4,
-    0xAEFC, 0x03D7,
-    0xAEFE, 0xA708,
-    0xAF00, 0x0507,
-    0xAF02, 0x2395,
-    0xAF04, 0xE708,
-    0xAF06, 0x1743,
-    0xAF08, 0x02FC,
-    0xAF0A, 0x6700,
-    0xAF0C, 0xE35D,
-    0xAF0E, 0xB7D7,
-    0xAF10, 0x0124,
-    0xAF12, 0x83D7,
-    0xAF14, 0xA7E7,
-    0xAF16, 0x81DB,
-    0xAF18, 0x9760,
-    0xAF1A, 0xFEFB,
-    0xAF1C, 0xE780,
-    0xAF1E, 0x8068,
-    0xAF20, 0x6311,
-    0xAF22, 0x9506,
-    0xAF24, 0xB797,
-    0xAF26, 0x0124,
-    0xAF28, 0x9387,
-    0xAF2A, 0x07D7,
-    0xAF2C, 0x03C7,
-    0xAF2E, 0xC701,
-    0xAF30, 0x83C7,
-    0xAF32, 0x2706,
-    0xAF34, 0x6307,
-    0xAF36, 0xF704,
-    0xAF38, 0x1364,
-    0xAF3A, 0x0424,
-    0xAF3C, 0x4204,
-    0xAF3E, 0x4180,
-    0xAF40, 0x11A0,
-    0xAF42, 0x0144,
-    0xAF44, 0xB767,
-    0xAF46, 0x0024,
-    0xAF48, 0x9387,
-    0xAF4A, 0x0733,
-    0xAF4C, 0x03C7,
-    0xAF4E, 0x273B,
-    0xAF50, 0xE30F,
-    0xAF52, 0x07EC,
-    0xAF54, 0x37A7,
-    0xAF56, 0x0124,
-    0xAF58, 0x0347,
-    0xAF5A, 0x6792,
-    0xAF5C, 0xE309,
-    0xAF5E, 0x07EC,
-    0xAF60, 0x37D7,
-    0xAF62, 0x0124,
-    0xAF64, 0x0357,
-    0xAF66, 0xA7E7,
-    0xAF68, 0xE303,
-    0xAF6A, 0x07EC,
-    0xAF6C, 0x3797,
-    0xAF6E, 0x0124,
-    0xAF70, 0x0347,
-    0xAF72, 0x1700,
-    0xAF74, 0xE30D,
-    0xAF76, 0x07EA,
-    0xAF78, 0x1374,
-    0xAF7A, 0xF4DF,
-    0xAF7C, 0x4204,
-    0xAF7E, 0x4180,
-    0xAF80, 0x7DB5,
-    0xAF82, 0x9760,
-    0xAF84, 0xFEFB,
-    0xAF86, 0xE780,
-    0xAF88, 0xE061,
-    0xAF8A, 0x8547,
-    0xAF8C, 0xE31C,
-    0xAF8E, 0xF5FA,
-    0xAF90, 0xB797,
-    0xAF92, 0x0124,
-    0xAF94, 0x9387,
-    0xAF96, 0x07D7,
-    0xAF98, 0x03C7,
-    0xAF9A, 0xC701,
-    0xAF9C, 0x83C7,
-    0xAF9E, 0x2706,
-    0xAFA0, 0xE312,
-    0xAFA2, 0xF7FA,
-    0xAFA4, 0x1364,
-    0xAFA6, 0x0420,
-    0xAFA8, 0x4204,
-    0xAFAA, 0x4180,
-    0xAFAC, 0x61BF,
-    0xAFAE, 0x0100,
-    0xAFB0, 0x7171,
-    0xAFB2, 0x22D7,
-    0xAFB4, 0x26D5,
-    0xAFB6, 0x7324,
-    0xAFB8, 0x2034,
-    0xAFBA, 0xF324,
-    0xAFBC, 0x1034,
-    0xAFBE, 0x7360,
-    0xAFC0, 0x0430,
-    0xAFC2, 0x2EC5,
-    0xAFC4, 0xA565,
-    0xAFC6, 0xBEDC,
-    0xAFC8, 0x06D3,
-    0xAFCA, 0x16D1,
-    0xAFCC, 0x1ACF,
-    0xAFCE, 0x1ECD,
-    0xAFD0, 0x22CB,
-    0xAFD2, 0x2AC7,
-    0xAFD4, 0x32C3,
-    0xAFD6, 0x36C1,
-    0xAFD8, 0xBADE,
-    0xAFDA, 0xC2DA,
-    0xAFDC, 0xC6D8,
-    0xAFDE, 0xF2D0,
-    0xAFE0, 0xF6CE,
-    0xAFE2, 0xFACC,
-    0xAFE4, 0xFECA,
-    0xAFE6, 0x82E2,
-    0xAFE8, 0x86E0,
-    0xAFEA, 0x0AFE,
-    0xAFEC, 0x0EFC,
-    0xAFEE, 0x12FA,
-    0xAFF0, 0x16F8,
-    0xAFF2, 0x1AF6,
-    0xAFF4, 0x1EF4,
-    0xAFF6, 0x2AF2,
-    0xAFF8, 0x2EF0,
-    0xAFFA, 0x32EE,
-    0xAFFC, 0x26C9,
-    0xAFFE, 0xCAD6,
-    0xB000, 0xCED4,
-    0xB002, 0xD2D2,
-    0xB004, 0x9385,
-    0xB006, 0x0540,
-    0xB008, 0x0545,
-    0xB00A, 0x36EC,
-    0xB00C, 0x3AEA,
-    0xB00E, 0x3EE8,
-    0xB010, 0x42E6,
-    0xB012, 0x46E4,
-    0xB014, 0x72E2,
-    0xB016, 0x76E0,
-    0xB018, 0x272E,
-    0xB01A, 0xE1FF,
-    0xB01C, 0x272C,
-    0xB01E, 0xF1FF,
-    0xB020, 0x97D0,
-    0xB022, 0xFFFB,
-    0xB024, 0xE780,
-    0xB026, 0x4097,
-    0xB028, 0xA167,
-    0xB02A, 0xE98F,
-    0xB02C, 0x2A84,
-    0xB02E, 0x6394,
-    0xB030, 0x0718,
-    0xB032, 0xB764,
-    0xB034, 0x0124,
-    0xB036, 0x9384,
-    0xB038, 0x0440,
-    0xB03A, 0x8567,
-    0xB03C, 0xE18F,
-    0xB03E, 0xCDCF,
-    0xB040, 0x37D7,
-    0xB042, 0x0124,
-    0xB044, 0x3789,
-    0xB046, 0x0224,
-    0xB048, 0x1307,
-    0xB04A, 0x07C4,
-    0xB04C, 0x1309,
-    0xB04E, 0xC949,
-    0xB050, 0x8356,
-    0xB052, 0x670E,
-    0xB054, 0x8327,
-    0xB056, 0x0905,
-    0xB058, 0x8506,
-    0xB05A, 0x8507,
-    0xB05C, 0x2328,
-    0xB05E, 0xF904,
-    0xB060, 0x2313,
-    0xB062, 0xD70E,
-    0xB064, 0x858B,
-    0xB066, 0x639F,
-    0xB068, 0x071A,
-    0xB06A, 0x8547,
-    0xB06C, 0xA30A,
-    0xB06E, 0xF904,
-    0xB070, 0x9770,
-    0xB072, 0xFFFB,
-    0xB074, 0xE780,
-    0xB076, 0x00FF,
-    0xB078, 0x19C5,
-    0xB07A, 0x0357,
-    0xB07C, 0x4905,
-    0xB07E, 0x9307,
-    0xB080, 0x1010,
-    0xB082, 0x6306,
-    0xB084, 0xF724,
-    0xB086, 0xDC50,
-    0xB088, 0x0945,
-    0xB08A, 0x8297,
-    0xB08C, 0x9770,
-    0xB08E, 0xFFFB,
-    0xB090, 0xE780,
-    0xB092, 0xC085,
-    0xB094, 0x11C5,
-    0xB096, 0x9770,
-    0xB098, 0xFFFB,
-    0xB09A, 0xE780,
-    0xB09C, 0x2088,
-    0xB09E, 0x55C5,
-    0xB0A0, 0x9760,
-    0xB0A2, 0x00FC,
-    0xB0A4, 0xE780,
-    0xB0A6, 0x405A,
-    0xB0A8, 0xB787,
-    0xB0AA, 0x0024,
-    0xB0AC, 0x83C7,
-    0xB0AE, 0x078C,
-    0xB0B0, 0xAA89,
-    0xB0B2, 0x6392,
-    0xB0B4, 0x071C,
-    0xB0B6, 0xB7D7,
-    0xB0B8, 0x0124,
-    0xB0BA, 0x9387,
-    0xB0BC, 0x07E7,
-    0xB0BE, 0xBC5F,
-    0xB0C0, 0x639A,
-    0xB0C2, 0x0716,
-    0xB0C4, 0x3799,
-    0xB0C6, 0x0124,
-    0xB0C8, 0x1309,
-    0xB0CA, 0x0953,
-    0xB0CC, 0xB727,
-    0xB0CE, 0x0024,
-    0xB0D0, 0x83C7,
-    0xB0D2, 0x7752,
-    0xB0D4, 0x6396,
-    0xB0D6, 0x071E,
-    0xB0D8, 0x0345,
-    0xB0DA, 0xC918,
-    0xB0DC, 0x631D,
-    0xB0DE, 0x051C,
-    0xB0E0, 0xDC50,
-    0xB0E2, 0x0D45,
-    0xB0E4, 0x8297,
-    0xB0E6, 0x4E85,
-    0xB0E8, 0x9760,
-    0xB0EA, 0x00FC,
-    0xB0EC, 0xE780,
-    0xB0EE, 0x005A,
-    0xB0F0, 0x8567,
-    0xB0F2, 0x3E99,
-    0xB0F4, 0x2320,
-    0xB0F6, 0xA9A2,
-    0xB0F8, 0x1374,
-    0xB0FA, 0x0440,
-    0xB0FC, 0x21C4,
-    0xB0FE, 0xB7D7,
-    0xB100, 0x0124,
-    0xB102, 0x9387,
-    0xB104, 0x07C4,
-    0xB106, 0x37A7,
-    0xB108, 0x0124,
-    0xB10A, 0x83D6,
-    0xB10C, 0x670E,
-    0xB10E, 0x1307,
-    0xB110, 0x0753,
-    0xB112, 0x0347,
-    0xB114, 0x179B,
-    0xB116, 0x8506,
-    0xB118, 0x3784,
-    0xB11A, 0x0224,
-    0xB11C, 0x1304,
-    0xB11E, 0xC449,
-    0xB120, 0x1337,
-    0xB122, 0x1700,
-    0xB124, 0x2393,
-    0xB126, 0xD70E,
-    0xB128, 0x230A,
-    0xB12A, 0xE404,
-    0xB12C, 0x9770,
-    0xB12E, 0xFFFB,
-    0xB130, 0xE780,
-    0xB132, 0x40F3,
-    0xB134, 0x6306,
-    0xB136, 0x0510,
-    0xB138, 0x0357,
-    0xB13A, 0x4405,
-    0xB13C, 0x9307,
-    0xB13E, 0x1010,
-    0xB140, 0x6300,
-    0xB142, 0xF710,
-    0xB144, 0xDC50,
-    0xB146, 0x1D45,
-    0xB148, 0x8297,
-    0xB14A, 0x9A50,
-    0xB14C, 0x8A52,
-    0xB14E, 0x7A43,
-    0xB150, 0xEA43,
-    0xB152, 0x5A44,
-    0xB154, 0xCA44,
-    0xB156, 0x3A45,
-    0xB158, 0xAA45,
-    0xB15A, 0x1A46,
-    0xB15C, 0x8A46,
-    0xB15E, 0x7657,
-    0xB160, 0xE657,
-    0xB162, 0x5658,
-    0xB164, 0xC658,
-    0xB166, 0x3659,
-    0xB168, 0xA659,
-    0xB16A, 0x165A,
-    0xB16C, 0x065E,
-    0xB16E, 0xF64E,
-    0xB170, 0x664F,
-    0xB172, 0xD64F,
-    0xB174, 0x1660,
-    0xB176, 0x8660,
-    0xB178, 0x7271,
-    0xB17A, 0xE271,
-    0xB17C, 0x5272,
-    0xB17E, 0xC272,
-    0xB180, 0x3273,
-    0xB182, 0xA273,
-    0xB184, 0x1275,
-    0xB186, 0x8275,
-    0xB188, 0x7266,
-    0xB18A, 0xE266,
-    0xB18C, 0x5267,
-    0xB18E, 0xC267,
-    0xB190, 0x3268,
-    0xB192, 0xA268,
-    0xB194, 0x126E,
-    0xB196, 0x826E,
-    0xB198, 0x072F,
-    0xB19A, 0xC1FF,
-    0xB19C, 0x872F,
-    0xB19E, 0x81FF,
-    0xB1A0, 0x7370,
-    0xB1A2, 0x0430,
-    0xB1A4, 0x7390,
-    0xB1A6, 0x1434,
-    0xB1A8, 0x7310,
-    0xB1AA, 0x2434,
-    0xB1AC, 0x3A54,
-    0xB1AE, 0xAA54,
-    0xB1B0, 0x4D61,
-    0xB1B2, 0x7300,
-    0xB1B4, 0x2030,
-    0xB1B6, 0x37D9,
-    0xB1B8, 0x0124,
-    0xB1BA, 0x1309,
-    0xB1BC, 0x09C4,
-    0xB1BE, 0x8357,
-    0xB1C0, 0x490E,
-    0xB1C2, 0xB764,
-    0xB1C4, 0x0124,
-    0xB1C6, 0x9384,
-    0xB1C8, 0x0440,
-    0xB1CA, 0xD850,
-    0xB1CC, 0x8507,
-    0xB1CE, 0x0145,
-    0xB1D0, 0x2312,
-    0xB1D2, 0xF90E,
-    0xB1D4, 0x0297,
-    0xB1D6, 0x9760,
-    0xB1D8, 0xFFFB,
-    0xB1DA, 0xE780,
-    0xB1DC, 0x2071,
-    0xB1DE, 0x25E5,
-    0xB1E0, 0xB729,
-    0xB1E2, 0x0024,
-    0xB1E4, 0x3799,
-    0xB1E6, 0x0124,
-    0xB1E8, 0x9389,
-    0xB1EA, 0x0933,
-    0xB1EC, 0x1309,
-    0xB1EE, 0x0953,
-    0xB1F0, 0x056A,
-    0xB1F2, 0x83C7,
-    0xB1F4, 0x791F,
-    0xB1F6, 0x4A9A,
-    0xB1F8, 0x2320,
-    0xB1FA, 0x0AA2,
-    0xB1FC, 0xB9EF,
-    0xB1FE, 0x0345,
-    0xB200, 0xC918,
-    0xB202, 0x2DE5,
-    0xB204, 0x83C7,
-    0xB206, 0x0920,
-    0xB208, 0x89C7,
-    0xB20A, 0x0327,
-    0xB20C, 0x4AB3,
-    0xB20E, 0x630A,
-    0xB210, 0xF700,
-    0xB212, 0x97E0,
-    0xB214, 0x00FC,
-    0xB216, 0xE780,
-    0xB218, 0xE0D2,
-    0xB21A, 0xDC50,
-    0xB21C, 0x0545,
-    0xB21E, 0x8297,
-    0xB220, 0x29BD,
-    0xB222, 0x01A0,
-    0xB224, 0x8547,
-    0xB226, 0x230A,
-    0xB228, 0x0904,
-    0xB22A, 0xA30A,
-    0xB22C, 0x0904,
-    0xB22E, 0x2328,
-    0xB230, 0xF904,
-    0xB232, 0x3DBD,
-    0xB234, 0x7D55,
-    0xB236, 0x9770,
-    0xB238, 0x01FC,
-    0xB23A, 0xE780,
-    0xB23C, 0xA004,
-    0xB23E, 0x59B5,
-    0xB240, 0xEFE0,
-    0xB242, 0x5FD9,
-    0xB244, 0x01B7,
-    0xB246, 0x9760,
-    0xB248, 0xFFFB,
-    0xB24A, 0xE780,
-    0xB24C, 0x206D,
-    0xB24E, 0x49F9,
-    0xB250, 0x8357,
-    0xB252, 0x490E,
-    0xB254, 0x858B,
-    0xB256, 0xC9F7,
-    0xB258, 0xCDBD,
-    0xB25A, 0x9770,
-    0xB25C, 0x01FC,
-    0xB25E, 0xE780,
-    0xB260, 0x2003,
-    0xB262, 0x2311,
-    0xB264, 0xA94E,
-    0xB266, 0x0345,
-    0xB268, 0xC918,
-    0xB26A, 0x49DD,
-    0xB26C, 0x97C0,
-    0xB26E, 0xFFFB,
-    0xB270, 0xE780,
-    0xB272, 0x40B4,
-    0xB274, 0x41BF,
-    0xB276, 0x9770,
-    0xB278, 0x01FC,
-    0xB27A, 0xE780,
-    0xB27C, 0x6001,
-    0xB27E, 0x3799,
-    0xB280, 0x0124,
-    0xB282, 0x1309,
-    0xB284, 0x0953,
-    0xB286, 0x8D67,
-    0xB288, 0xCA97,
-    0xB28A, 0x03C7,
-    0xB28C, 0xD76F,
-    0xB28E, 0x232E,
-    0xB290, 0xA94E,
-    0xB292, 0x8547,
-    0xB294, 0x6306,
-    0xB296, 0xF700,
-    0xB298, 0x8327,
-    0xB29A, 0x094F,
-    0xB29C, 0xE377,
-    0xB29E, 0xF5EA,
-    0xB2A0, 0x9760,
-    0xB2A2, 0x00FC,
-    0xB2A4, 0xE780,
-    0xB2A6, 0x80FC,
-    0xB2A8, 0x9770,
-    0xB2AA, 0x01FC,
-    0xB2AC, 0xE780,
-    0xB2AE, 0x40FE,
-    0xB2B0, 0x2320,
-    0xB2B2, 0xA950,
-    0xB2B4, 0x21BD,
-    0xB2B6, 0x97C0,
-    0xB2B8, 0xFFFB,
-    0xB2BA, 0xE780,
-    0xB2BC, 0xA0B2,
-    0xB2BE, 0x0DB5,
-    0xB2C0, 0x9770,
-    0xB2C2, 0x01FC,
-    0xB2C4, 0xE780,
-    0xB2C6, 0xC0FC,
-    0xB2C8, 0x2312,
-    0xB2CA, 0xA94E,
-    0xB2CC, 0x31B5,
-    0xB2CE, 0xEFE0,
-    0xB2D0, 0x7FD0,
-    0xB2D2, 0x55BB,
-    0xB2D4, 0x1743,
-    0xB2D6, 0x02FC,
-    0xB2D8, 0xE702,
-    0xB2DA, 0xC31E,
-    0xB2DC, 0x2A84,
-    0xB2DE, 0xEFD0,
-    0xB2E0, 0xBFA7,
-    0xB2E2, 0x8947,
-    0xB2E4, 0x6306,
-    0xB2E6, 0xF400,
-    0xB2E8, 0x1743,
-    0xB2EA, 0x02FC,
-    0xB2EC, 0x6700,
-    0xB2EE, 0xC31F,
-    0xB2F0, 0xB7E7,
-    0xB2F2, 0x0024,
-    0xB2F4, 0x03D7,
-    0xB2F6, 0xC7C8,
-    0xB2F8, 0x8564,
-    0xB2FA, 0x9387,
-    0xB2FC, 0xF4B3,
-    0xB2FE, 0xE315,
-    0xB300, 0xF7FE,
-    0xB302, 0x37A9,
-    0xB304, 0x0224,
-    0xB306, 0x1309,
-    0xB308, 0x8954,
-    0xB30A, 0x8347,
-    0xB30C, 0x190C,
-    0xB30E, 0xE9FF,
-    0xB310, 0x9770,
-    0xB312, 0xFFFB,
-    0xB314, 0xE780,
-    0xB316, 0x00E3,
-    0xB318, 0x61F9,
-    0xB31A, 0x9770,
-    0xB31C, 0xFFFB,
-    0xB31E, 0xE780,
-    0xB320, 0xA0E3,
-    0xB322, 0x79F1,
-    0xB324, 0x3725,
-    0xB326, 0x0224,
-    0xB328, 0x1305,
-    0xB32A, 0x05ED,
-    0xB32C, 0x9700,
-    0xB32E, 0xFFFB,
-    0xB330, 0xE780,
-    0xB332, 0x80FA,
-    0xB334, 0xB797,
-    0xB336, 0x0124,
-    0xB338, 0x3767,
-    0xB33A, 0x0124,
-    0xB33C, 0x0327,
-    0xB33E, 0x0740,
-    0xB340, 0x9387,
-    0xB342, 0x0753,
-    0xB344, 0xA697,
-    0xB346, 0x8544,
-    0xB348, 0x1D45,
-    0xB34A, 0x238D,
-    0xB34C, 0x97CE,
-    0xB34E, 0x0297,
-    0xB350, 0xA300,
-    0xB352, 0x990C,
-    0xB354, 0x9780,
-    0xB356, 0x01FC,
-    0xB358, 0xE780,
-    0xB35A, 0x0083,
-    0xB35C, 0x51F5,
-    0xB35E, 0xB727,
-    0xB360, 0x0124,
-    0xB362, 0x2380,
-    0xB364, 0x8754,
-    0xB366, 0x97B0,
-    0xB368, 0xFEFB,
-    0xB36A, 0xE780,
-    0xB36C, 0x6002,
-    0xB36E, 0x2301,
-    0xB370, 0x990C,
-    0xB372, 0x9DBF,
-    0xB374, 0x1743,
-    0xB376, 0x02FC,
-    0xB378, 0xE702,
-    0xB37A, 0xC314,
-    0xB37C, 0x37A4,
-    0xB37E, 0x0224,
-    0xB380, 0x1304,
-    0xB382, 0x8454,
-    0xB384, 0x0347,
-    0xB386, 0x240C,
-    0xB388, 0x8547,
-    0xB38A, 0x630A,
-    0xB38C, 0xF700,
-    0xB38E, 0x97B0,
-    0xB390, 0xFEFB,
-    0xB392, 0xE780,
-    0xB394, 0xE069,
-    0xB396, 0x1743,
-    0xB398, 0x02FC,
-    0xB39A, 0x6700,
-    0xB39C, 0xE314,
-    0xB39E, 0x9770,
-    0xB3A0, 0x01FC,
-    0xB3A2, 0xE780,
-    0xB3A4, 0x607E,
-    0xB3A6, 0x65F5,
-    0xB3A8, 0x97B0,
-    0xB3AA, 0xFEFB,
-    0xB3AC, 0xE780,
-    0xB3AE, 0x800F,
-    0xB3B0, 0x2301,
-    0xB3B2, 0x040C,
-    0xB3B4, 0xE9BF,
-    0xB3B6, 0x0100,
-    0xB3B8, 0x1743,
-    0xB3BA, 0x02FC,
-    0xB3BC, 0xE702,
-    0xB3BE, 0x8310,
-    0xB3C0, 0x9D47,
-    0xB3C2, 0x631F,
-    0xB3C4, 0xF500,
-    0xB3C6, 0x3794,
-    0xB3C8, 0x0124,
-    0xB3CA, 0x1304,
-    0xB3CC, 0x0453,
-    0xB3CE, 0x8567,
-    0xB3D0, 0xA297,
-    0xB3D2, 0x83C7,
-    0xB3D4, 0xA7CF,
-    0xB3D6, 0x9DE7,
-    0xB3D8, 0x1743,
-    0xB3DA, 0x02FC,
-    0xB3DC, 0x6700,
-    0xB3DE, 0xC310,
-    0xB3E0, 0x2A84,
-    0xB3E2, 0xEFD0,
-    0xB3E4, 0x7FDD,
-    0xB3E6, 0x8547,
-    0xB3E8, 0xE318,
-    0xB3EA, 0xF4FE,
-    0xB3EC, 0xB7E7,
-    0xB3EE, 0x0124,
-    0xB3F0, 0x9387,
-    0xB3F2, 0x074C,
-    0xB3F4, 0x23AE,
-    0xB3F6, 0x0710,
-    0xB3F8, 0x23A4,
-    0xB3FA, 0x077E,
-    0xB3FC, 0x1743,
-    0xB3FE, 0x02FC,
-    0xB400, 0x6700,
-    0xB402, 0x830E,
-    0xB404, 0x9770,
-    0xB406, 0xFFFB,
-    0xB408, 0xE780,
-    0xB40A, 0xC0D3,
-    0xB40C, 0x71F5,
-    0xB40E, 0x9770,
-    0xB410, 0xFFFB,
-    0xB412, 0xE780,
-    0xB414, 0x60D4,
-    0xB416, 0x69F1,
-    0xB418, 0x8D67,
-    0xB41A, 0x3E94,
-    0xB41C, 0x8327,
-    0xB41E, 0x846D,
-    0xB420, 0xB724,
-    0xB422, 0x0124,
-    0xB424, 0x9384,
-    0xB426, 0x045F,
-    0xB428, 0x91EF,
-    0xB42A, 0x83A7,
-    0xB42C, 0x440E,
-    0xB42E, 0x99CB,
-    0xB430, 0xB7D7,
-    0xB432, 0x0124,
-    0xB434, 0x83C7,
-    0xB436, 0x07FA,
-    0xB438, 0xC5D3,
-    0xB43A, 0x9700,
-    0xB43C, 0xFFFB,
-    0xB43E, 0xE780,
-    0xB440, 0x20E3,
-    0xB442, 0x59BF,
-    0xB444, 0x83A7,
-    0xB446, 0xC40A,
-    0xB448, 0xC1DB,
-    0xB44A, 0x0545,
-    0xB44C, 0x9730,
-    0xB44E, 0xFEFB,
-    0xB450, 0xE780,
-    0xB452, 0x8051,
-    0xB454, 0xB735,
-    0xB456, 0x202D,
-    0xB458, 0x7578,
-    0xB45A, 0x37F5,
-    0xB45C, 0x202D,
-    0xB45E, 0x9385,
-    0xB460, 0x0560,
-    0xB462, 0x1308,
-    0xB464, 0x08A0,
-    0xB466, 0x9168,
-    0xB468, 0x1305,
-    0xB46A, 0x0560,
-    0xB46C, 0xB387,
-    0xB46E, 0x0501,
-    0xB470, 0x03C7,
-    0xB472, 0x0700,
-    0xB474, 0x9306,
-    0xB476, 0xF00F,
-    0xB478, 0x1316,
-    0xB47A, 0x8701,
-    0xB47C, 0x6186,
-    0xB47E, 0x0607,
-    0xB480, 0x6344,
-    0xB482, 0x0600,
-    0xB484, 0x9376,
-    0xB486, 0xF70F,
-    0xB488, 0x2380,
-    0xB48A, 0xD700,
-    0xB48C, 0x8507,
-    0xB48E, 0xE391,
-    0xB490, 0xB7FE,
-    0xB492, 0xB385,
-    0xB494, 0x1701,
-    0xB496, 0xE39B,
-    0xB498, 0xA5FC,
-    0xB49A, 0xB7A7,
-    0xB49C, 0x0224,
-    0xB49E, 0x0547,
-    0xB4A0, 0x0145,
-    0xB4A2, 0xA384,
-    0xB4A4, 0xE760,
-    0xB4A6, 0x9730,
-    0xB4A8, 0xFEFB,
-    0xB4AA, 0xE780,
-    0xB4AC, 0xE04B,
-    0xB4AE, 0xB7D7,
-    0xB4B0, 0x0124,
-    0xB4B2, 0x83C7,
-    0xB4B4, 0x07FA,
-    0xB4B6, 0x8DD3,
-    0xB4B8, 0x8327,
-    0xB4BA, 0x846D,
-    0xB4BC, 0x91FF,
-    0xB4BE, 0x83A7,
-    0xB4C0, 0x440E,
-    0xB4C2, 0x99DB,
-    0xB4C4, 0x9DBF,
-    0xB4C6, 0x0100,
-    0xB4C8, 0x1743,
-    0xB4CA, 0x02FC,
-    0xB4CC, 0xE702,
-    0xB4CE, 0x83FF,
-    0xB4D0, 0xB7D7,
-    0xB4D2, 0x0124,
-    0xB4D4, 0x9387,
-    0xB4D6, 0x07F4,
-    0xB4D8, 0x03C7,
-    0xB4DA, 0x1705,
-    0xB4DC, 0x2A84,
-    0xB4DE, 0x11C7,
-    0xB4E0, 0x03C7,
-    0xB4E2, 0x1700,
-    0xB4E4, 0x8947,
-    0xB4E6, 0x6307,
-    0xB4E8, 0xF704,
-    0xB4EA, 0xB7E7,
-    0xB4EC, 0x0124,
-    0xB4EE, 0x9387,
-    0xB4F0, 0x0787,
-    0xB4F2, 0x83A4,
-    0xB4F4, 0x870F,
-    0xB4F6, 0x03A9,
-    0xB4F8, 0xC70F,
-    0xB4FA, 0x0146,
-    0xB4FC, 0xA685,
-    0xB4FE, 0x4A85,
-    0xB500, 0x9730,
-    0xB502, 0x01FC,
-    0xB504, 0xE780,
-    0xB506, 0x4054,
-    0xB508, 0x2285,
-    0xB50A, 0x97D0,
-    0xB50C, 0xFEFB,
-    0xB50E, 0xE780,
-    0xB510, 0x20D7,
-    0xB512, 0x4A85,
-    0xB514, 0x0546,
-    0xB516, 0xA685,
-    0xB518, 0x9730,
-    0xB51A, 0x01FC,
-    0xB51C, 0xE780,
-    0xB51E, 0xC052,
-    0xB520, 0xB7C7,
-    0xB522, 0x0224,
-    0xB524, 0x83A7,
-    0xB526, 0x07B7,
-    0xB528, 0x1145,
-    0xB52A, 0x8297,
-    0xB52C, 0x1743,
-    0xB52E, 0x02FC,
-    0xB530, 0x6700,
-    0xB532, 0x83FB,
-    0xB534, 0xB7E7,
-    0xB536, 0x0024,
-    0xB538, 0x83D6,
-    0xB53A, 0xC7C8,
-    0xB53C, 0x8567,
-    0xB53E, 0x1387,
-    0xB540, 0xF7B3,
-    0xB542, 0xE394,
-    0xB544, 0xE6FA,
-    0xB546, 0x3797,
-    0xB548, 0x0124,
-    0xB54A, 0x1307,
-    0xB54C, 0x0753,
-    0xB54E, 0xBA97,
-    0xB550, 0x03A5,
-    0xB552, 0x07B2,
-    0xB554, 0x8145,
-    0xB556, 0x3325,
-    0xB558, 0xA000,
-    0xB55A, 0x97D0,
-    0xB55C, 0x00FC,
-    0xB55E, 0xE780,
-    0xB560, 0x60BB,
-    0xB562, 0x61B7,
-    0xB564, 0x1743,
-    0xB566, 0x02FC,
-    0xB568, 0xE702,
-    0xB56A, 0xC3F5,
-    0xB56C, 0x9760,
-    0xB56E, 0xFFFB,
-    0xB570, 0xE780,
-    0xB572, 0xC037,
-    0xB574, 0x11C5,
-    0xB576, 0xB7E7,
-    0xB578, 0x0024,
-    0xB57A, 0x83C7,
-    0xB57C, 0xC784,
-    0xB57E, 0xBDEF,
-    0xB580, 0x1384,
-    0xB582, 0x81E7,
-    0xB584, 0x0347,
-    0xB586, 0x8400,
-    0xB588, 0x8547,
-    0xB58A, 0x6303,
-    0xB58C, 0xF706,
-    0xB58E, 0x0357,
-    0xB590, 0x2403,
-    0xB592, 0xB767,
-    0xB594, 0x0040,
-    0xB596, 0x2398,
-    0xB598, 0xE718,
-    0xB59A, 0x8357,
-    0xB59C, 0x4403,
-    0xB59E, 0x3767,
-    0xB5A0, 0x0040,
-    0xB5A2, 0x2314,
-    0xB5A4, 0xF720,
-    0xB5A6, 0x9760,
-    0xB5A8, 0xFFFB,
-    0xB5AA, 0xE780,
-    0xB5AC, 0x2034,
-    0xB5AE, 0x19C5,
-    0xB5B0, 0xB7E7,
-    0xB5B2, 0x0024,
-    0xB5B4, 0x03C7,
-    0xB5B6, 0xC784,
-    0xB5B8, 0x8147,
-    0xB5BA, 0x09EB,
-    0xB5BC, 0x8346,
-    0xB5BE, 0x8400,
-    0xB5C0, 0x0547,
-    0xB5C2, 0x8147,
-    0xB5C4, 0x6384,
-    0xB5C6, 0xE600,
-    0xB5C8, 0x8357,
-    0xB5CA, 0xC405,
-    0xB5CC, 0x37A7,
-    0xB5CE, 0x0040,
-    0xB5D0, 0x2312,
-    0xB5D2, 0xF710,
-    0xB5D4, 0x9770,
-    0xB5D6, 0xFFFB,
-    0xB5D8, 0xE780,
-    0xB5DA, 0xC0B6,
-    0xB5DC, 0x35C1,
-    0xB5DE, 0x9770,
-    0xB5E0, 0xFFFB,
-    0xB5E2, 0xE780,
-    0xB5E4, 0x60B7,
-    0xB5E6, 0x05C9,
-    0xB5E8, 0x1743,
-    0xB5EA, 0x02FC,
-    0xB5EC, 0x6700,
-    0xB5EE, 0xC3EF,
-    0xB5F0, 0xB767,
-    0xB5F2, 0x0040,
-    0xB5F4, 0x2398,
-    0xB5F6, 0x0718,
-    0xB5F8, 0x8147,
-    0xB5FA, 0x55B7,
-    0xB5FC, 0xB767,
-    0xB5FE, 0x0040,
-    0xB600, 0x2398,
-    0xB602, 0x0718,
-    0xB604, 0x1384,
-    0xB606, 0x81E7,
-    0xB608, 0x8346,
-    0xB60A, 0x8400,
-    0xB60C, 0x0547,
-    0xB60E, 0x8147,
-    0xB610, 0xE395,
-    0xB612, 0xE6F8,
-    0xB614, 0x69B7,
-    0xB616, 0x9760,
-    0xB618, 0xFFFB,
-    0xB61A, 0xE780,
-    0xB61C, 0x202D,
-    0xB61E, 0x31ED,
-    0xB620, 0x8346,
-    0xB622, 0x8400,
-    0xB624, 0x0547,
-    0xB626, 0x8147,
-    0xB628, 0x6384,
-    0xB62A, 0xE600,
-    0xB62C, 0x8357,
-    0xB62E, 0x4408,
-    0xB630, 0x3787,
-    0xB632, 0x0040,
-    0xB634, 0x2314,
-    0xB636, 0xF710,
-    0xB638, 0x1743,
-    0xB63A, 0x02FC,
-    0xB63C, 0x6700,
-    0xB63E, 0xC3EA,
-    0xB640, 0x9770,
-    0xB642, 0xFFFB,
-    0xB644, 0xE780,
-    0xB646, 0x40B1,
-    0xB648, 0x59F9,
-    0xB64A, 0x9760,
-    0xB64C, 0xFFFB,
-    0xB64E, 0xE780,
-    0xB650, 0xE029,
-    0xB652, 0x19C5,
-    0xB654, 0xB7E7,
-    0xB656, 0x0024,
-    0xB658, 0x03C7,
-    0xB65A, 0xC784,
-    0xB65C, 0x8147,
-    0xB65E, 0x09EB,
-    0xB660, 0x8346,
-    0xB662, 0x8400,
-    0xB664, 0x0547,
-    0xB666, 0x8147,
-    0xB668, 0x6384,
-    0xB66A, 0xE600,
-    0xB66C, 0x8357,
-    0xB66E, 0x6407,
-    0xB670, 0x3707,
-    0xB672, 0x0140,
-    0xB674, 0x2314,
-    0xB676, 0xF710,
-    0xB678, 0x9DB7,
-    0xB67A, 0xB7E7,
-    0xB67C, 0x0024,
-    0xB67E, 0x03C7,
-    0xB680, 0xC784,
-    0xB682, 0x8147,
-    0xB684, 0x55F7,
-    0xB686, 0x69BF,
-    0xB688, 0x1743,
-    0xB68A, 0x02FC,
-    0xB68C, 0xE702,
-    0xB68E, 0x03E1,
-    0xB690, 0x4111,
-    0xB692, 0x3A84,
-    0xB694, 0x22E6,
-    0xB696, 0x26E4,
-    0xB698, 0x4AE2,
-    0xB69A, 0x4EE0,
-    0xB69C, 0xAA84,
-    0xB69E, 0x3689,
-    0xB6A0, 0x97A0,
-    0xB6A2, 0xFEFB,
-    0xB6A4, 0xE780,
-    0xB6A6, 0x8066,
-    0xB6A8, 0xB727,
-    0xB6AA, 0x0224,
-    0xB6AC, 0x9387,
-    0xB6AE, 0x076B,
-    0xB6B0, 0xA297,
-    0xB6B2, 0x0567,
-    0xB6B4, 0xBA97,
-    0xB6B6, 0x83C7,
-    0xB6B8, 0x078D,
-    0xB6BA, 0x639D,
-    0xB6BC, 0x0718,
-    0xB6BE, 0x83C7,
-    0xB6C0, 0x0400,
-    0xB6C2, 0x6399,
-    0xB6C4, 0x0718,
-    0xB6C6, 0xB7A7,
-    0xB6C8, 0x0224,
-    0xB6CA, 0x9389,
-    0xB6CC, 0x8754,
-    0xB6CE, 0x03C7,
-    0xB6D0, 0x9905,
-    0xB6D2, 0x6301,
-    0xB6D4, 0x0718,
-    0xB6D6, 0x03CA,
-    0xB6D8, 0xA905,
-    0xB6DA, 0x03D6,
-    0xB6DC, 0xA90B,
-    0xB6DE, 0x37E7,
-    0xB6E0, 0x0124,
-    0xB6E2, 0x0355,
-    0xB6E4, 0x675F,
-    0xB6E6, 0x9387,
-    0xB6E8, 0x8754,
-    0xB6EA, 0x0147,
-    0xB6EC, 0xA145,
-    0xB6EE, 0x6369,
-    0xB6F0, 0xA622,
-    0xB6F2, 0x83D6,
-    0xB6F4, 0xC70A,
-    0xB6F6, 0x8907,
-    0xB6F8, 0x63F1,
-    0xB6FA, 0xA626,
-    0xB6FC, 0x0507,
-    0xB6FE, 0xE318,
-    0xB700, 0xB7FE,
-    0xB702, 0x37CB,
-    0xB704, 0x0224,
-    0xB706, 0x5309,
-    0xB708, 0x00F0,
-    0xB70A, 0x8727,
-    0xB70C, 0x8BB7,
-    0xB70E, 0x9D46,
-    0xB710, 0x4379,
-    0xB712, 0xF990,
-    0xB714, 0x1307,
-    0xB716, 0x0705,
-    0xB718, 0x0607,
-    0xB71A, 0x4E97,
-    0xB71C, 0x8357,
-    0xB71E, 0xC700,
-    0xB720, 0x118D,
-    0xB722, 0x5377,
-    0xB724, 0x05D0,
-    0xB726, 0x918F,
-    0xB728, 0xD3F7,
-    0xB72A, 0x07D0,
-    0xB72C, 0x9317,
-    0xB72E, 0x3A00,
-    0xB730, 0xB697,
-    0xB732, 0x5377,
-    0xB734, 0xF718,
-    0xB736, 0x9387,
-    0xB738, 0x8702,
-    0xB73A, 0x8607,
-    0xB73C, 0xCE97,
-    0xB73E, 0x83D7,
-    0xB740, 0xC700,
-    0xB742, 0x0726,
-    0xB744, 0x8BB7,
-    0xB746, 0x13F7,
-    0xB748, 0xF70F,
-    0xB74A, 0xA183,
-    0xB74C, 0xD377,
-    0xB74E, 0x07D0,
-    0xB750, 0xD3F6,
-    0xB752, 0x07D0,
-    0xB754, 0xC3F7,
-    0xB756, 0xC768,
-    0xB758, 0x5379,
-    0xB75A, 0xF908,
-    0xB75C, 0x4379,
-    0xB75E, 0xE978,
-    0xB760, 0x9770,
-    0xB762, 0xFFFB,
-    0xB764, 0xE780,
-    0xB766, 0xC08A,
-    0xB768, 0xAA8A,
-    0xB76A, 0x93DA,
-    0xB76C, 0x8A40,
-    0xB76E, 0x9770,
-    0xB770, 0xFFFB,
-    0xB772, 0xE780,
-    0xB774, 0xE089,
-    0xB776, 0xC20A,
-    0xB778, 0x9307,
-    0xB77A, 0x8A04,
-    0xB77C, 0x1375,
-    0xB77E, 0xF50F,
-    0xB780, 0x93DA,
-    0xB782, 0x0A41,
-    0xB784, 0xD3F7,
-    0xB786, 0x0AD0,
-    0xB788, 0xD374,
-    0xB78A, 0x05D0,
-    0xB78C, 0x0727,
-    0xB78E, 0x8BB7,
-    0xB790, 0x8607,
-    0xB792, 0xCE97,
-    0xB794, 0x03DC,
-    0xB796, 0xC700,
-    0xB798, 0xC3F4,
-    0xB79A, 0xE478,
-    0xB79C, 0xDC4C,
-    0xB79E, 0x5374,
-    0xB7A0, 0x0CD0,
-    0xB7A2, 0xD307,
-    0xB7A4, 0x00F0,
-    0xB7A6, 0x83D4,
-    0xB7A8, 0xC700,
-    0xB7AA, 0x53F4,
-    0xB7AC, 0x8408,
-    0xB7AE, 0x130A,
-    0xB7B0, 0x0A05,
-    0xB7B2, 0x060A,
-    0xB7B4, 0x4E9A,
-    0xB7B6, 0x035A,
-    0xB7B8, 0x4A00,
-    0xB7BA, 0xD317,
-    0xB7BC, 0xF4A0,
-    0xB7BE, 0x99C3,
-    0xB7C0, 0x5314,
-    0xB7C2, 0x8420,
-    0xB7C4, 0xB7CB,
-    0xB7C6, 0x0224,
-    0xB7C8, 0x83A7,
-    0xB7CA, 0x0BB7,
-    0xB7CC, 0x0D45,
-    0xB7CE, 0x8297,
-    0xB7D0, 0xD397,
-    0xB7D2, 0x14C0,
-    0xB7D4, 0xC207,
-    0xB7D6, 0xC183,
-    0xB7D8, 0x6395,
-    0xB7DA, 0x870B,
-    0xB7DC, 0xB747,
-    0xB7DE, 0x0124,
-    0xB7E0, 0x9387,
-    0xB7E2, 0x0727,
-    0xB7E4, 0x03D7,
-    0xB7E6, 0x6712,
-    0xB7E8, 0x83D6,
-    0xB7EA, 0xE710,
-    0xB7EC, 0x8947,
-    0xB7EE, 0x7D17,
-    0xB7F0, 0xB397,
-    0xB7F2, 0xE700,
-    0xB7F4, 0xD3F7,
-    0xB7F6, 0x07D0,
-    0xB7F8, 0x53F7,
-    0xB7FA, 0x16D0,
-    0xB7FC, 0x5304,
-    0xB7FE, 0x00F0,
-    0xB800, 0xD3F7,
-    0xB802, 0x2711,
-    0xB804, 0x37CA,
-    0xB806, 0x0224,
-    0xB808, 0xD3F7,
-    0xB80A, 0xE718,
-    0xB80C, 0xB7C7,
-    0xB80E, 0x0224,
-    0xB810, 0x07A7,
-    0xB812, 0xC7B7,
-    0xB814, 0x83A7,
-    0xB816, 0x0BB7,
-    0xB818, 0x2545,
-    0xB81A, 0xD3F7,
-    0xB81C, 0xE700,
-    0xB81E, 0xD39A,
-    0xB820, 0x17C0,
-    0xB822, 0x8297,
-    0xB824, 0x8727,
-    0xB826, 0x0AB8,
-    0xB828, 0xC20A,
-    0xB82A, 0x93DA,
-    0xB82C, 0x0A01,
-    0xB82E, 0x5374,
-    0xB830, 0xF410,
-    0xB832, 0xD694,
-    0xB834, 0xC204,
-    0xB836, 0x2393,
-    0xB838, 0x590D,
-    0xB83A, 0xC180,
-    0xB83C, 0xD317,
-    0xB83E, 0x14C0,
-    0xB840, 0x2392,
-    0xB842, 0xF90C,
-    0xB844, 0xB707,
-    0xB846, 0x0040,
-    0xB848, 0x19EC,
-    0xB84A, 0x9387,
-    0xB84C, 0xE703,
-    0xB84E, 0xCA97,
-    0xB850, 0x2390,
-    0xB852, 0x9700,
-    0xB854, 0x3264,
-    0xB856, 0xA264,
-    0xB858, 0x1269,
-    0xB85A, 0x8269,
-    0xB85C, 0x4101,
-    0xB85E, 0x1743,
-    0xB860, 0x02FC,
-    0xB862, 0x6700,
-    0xB864, 0x23C7,
-    0xB866, 0x9387,
-    0xB868, 0x0704,
-    0xB86A, 0x3264,
-    0xB86C, 0xA264,
-    0xB86E, 0x1269,
-    0xB870, 0x8269,
-    0xB872, 0xCA97,
-    0xB874, 0x2390,
-    0xB876, 0x9700,
-    0xB878, 0x4101,
-    0xB87A, 0x1743,
-    0xB87C, 0x02FC,
-    0xB87E, 0x6700,
-    0xB880, 0x63C5,
-    0xB882, 0x9377,
-    0xB884, 0xFA0F,
-    0xB886, 0x135A,
-    0xB888, 0x8A00,
-    0xB88A, 0x8729,
-    0xB88C, 0x8BB7,
-    0xB88E, 0xD3F7,
-    0xB890, 0x07D0,
-    0xB892, 0xD376,
-    0xB894, 0x0AD0,
-    0xB896, 0x37CA,
-    0xB898, 0x0224,
-    0xB89A, 0x0727,
-    0xB89C, 0x0AB8,
-    0xB89E, 0xC3F7,
-    0xB8A0, 0x3769,
-    0xB8A2, 0x5374,
-    0xB8A4, 0xF418,
-    0xB8A6, 0x5374,
-    0xB8A8, 0xE410,
-    0xB8AA, 0x531B,
-    0xB8AC, 0x14C0,
-    0xB8AE, 0x420B,
-    0xB8B0, 0x135B,
-    0xB8B2, 0x0B01,
-    0xB8B4, 0x5A85,
-    0xB8B6, 0x9760,
-    0xB8B8, 0x00FC,
-    0xB8BA, 0xE780,
-    0xB8BC, 0xA01A,
-    0xB8BE, 0xAA8A,
-    0xB8C0, 0x5A85,
-    0xB8C2, 0x9760,
-    0xB8C4, 0x00FC,
-    0xB8C6, 0xE780,
-    0xB8C8, 0xE019,
-    0xB8CA, 0x93DA,
-    0xB8CC, 0x8A00,
-    0xB8CE, 0xD397,
-    0xB8D0, 0x04C0,
-    0xB8D2, 0xC20A,
-    0xB8D4, 0x1375,
-    0xB8D6, 0xF50F,
-    0xB8D8, 0x93DA,
-    0xB8DA, 0x0A01,
-    0xB8DC, 0x5374,
-    0xB8DE, 0x05D0,
-    0xB8E0, 0xD3F7,
-    0xB8E2, 0x0AD0,
-    0xB8E4, 0xC207,
-    0xB8E6, 0xC187,
-    0xB8E8, 0x4374,
-    0xB8EA, 0x3479,
-    0xB8EC, 0x63D7,
-    0xB8EE, 0x8703,
-    0xB8F0, 0x5374,
-    0xB8F2, 0x8918,
-    0xB8F4, 0xB747,
-    0xB8F6, 0x0124,
-    0xB8F8, 0x9387,
-    0xB8FA, 0x0727,
-    0xB8FC, 0x03D7,
-    0xB8FE, 0x6712,
-    0xB900, 0x83D6,
-    0xB902, 0xE710,
-    0xB904, 0x8947,
-    0xB906, 0x7D17,
-    0xB908, 0xB397,
-    0xB90A, 0xE700,
-    0xB90C, 0xD3F7,
-    0xB90E, 0x07D0,
-    0xB910, 0x53F7,
-    0xB912, 0x16D0,
-    0xB914, 0xD3F7,
-    0xB916, 0x8710,
-    0xB918, 0xC5BD,
-    0xB91A, 0x5374,
-    0xB91C, 0x8910,
-    0xB91E, 0xD9BF,
-    0xB920, 0x9317,
-    0xB922, 0x4A00,
-    0xB924, 0xCE97,
-    0xB926, 0x83D7,
-    0xB928, 0xA706,
-    0xB92A, 0x93F6,
-    0xB92C, 0xF70F,
-    0xB92E, 0x37CB,
-    0xB930, 0x0224,
-    0xB932, 0xA183,
-    0xB934, 0x53F9,
-    0xB936, 0x06D0,
-    0xB938, 0xD3F7,
-    0xB93A, 0x07D0,
-    0xB93C, 0x0727,
-    0xB93E, 0x8BB7,
-    0xB940, 0x4379,
-    0xB942, 0xE978,
-    0xB944, 0xE30E,
-    0xB946, 0x07E0,
-    0xB948, 0x9307,
-    0xB94A, 0xF704,
-    0xB94C, 0x8607,
-    0xB94E, 0xCE97,
-    0xB950, 0x03D6,
-    0xB952, 0xC700,
-    0xB954, 0x9306,
-    0xB956, 0xF7FF,
-    0xB958, 0x75BB,
-    0xB95A, 0x9317,
-    0xB95C, 0x3A00,
-    0xB95E, 0xBA97,
-    0xB960, 0x9387,
-    0xB962, 0x8702,
-    0xB964, 0x8607,
-    0xB966, 0xCE97,
-    0xB968, 0x83D7,
-    0xB96A, 0xC700,
-    0xB96C, 0x7DBF,
-    0xB96E, 0x0100,
-    0xB970, 0x1743,
-    0xB972, 0x02FC,
-    0xB974, 0xE702,
-    0xB976, 0x63B3,
-    0xB978, 0xB747,
-    0xB97A, 0x0124,
-    0xB97C, 0x03D7,
-    0xB97E, 0xC7E1,
-    0xB980, 0x8947,
-    0xB982, 0x2A84,
-    0xB984, 0xAE84,
-    0xB986, 0x6319,
-    0xB988, 0xF700,
-    0xB98A, 0xB7A7,
-    0xB98C, 0x0124,
-    0xB98E, 0x03A7,
-    0xB990, 0x4706,
-    0xB992, 0xFD57,
-    0xB994, 0x6304,
-    0xB996, 0xF704,
-    0xB998, 0xB7E7,
-    0xB99A, 0x0124,
-    0xB99C, 0x9387,
-    0xB99E, 0x0787,
-    0xB9A0, 0x03A9,
-    0xB9A2, 0x8710,
-    0xB9A4, 0x83A9,
-    0xB9A6, 0xC710,
-    0xB9A8, 0x0146,
-    0xB9AA, 0xCA85,
-    0xB9AC, 0x4E85,
-    0xB9AE, 0x9730,
-    0xB9B0, 0x01FC,
-    0xB9B2, 0xE780,
-    0xB9B4, 0x6009,
-    0xB9B6, 0xA685,
-    0xB9B8, 0x2285,
-    0xB9BA, 0x97C0,
-    0xB9BC, 0x00FC,
-    0xB9BE, 0xE780,
-    0xB9C0, 0x6075,
-    0xB9C2, 0x4E85,
-    0xB9C4, 0x0546,
-    0xB9C6, 0xCA85,
-    0xB9C8, 0x9730,
-    0xB9CA, 0x01FC,
-    0xB9CC, 0xE780,
-    0xB9CE, 0xC007,
-    0xB9D0, 0xB7C7,
-    0xB9D2, 0x0224,
-    0xB9D4, 0x83A7,
-    0xB9D6, 0x07B7,
-    0xB9D8, 0x1545,
-    0xB9DA, 0x8297,
-    0xB9DC, 0x1743,
-    0xB9DE, 0x02FC,
-    0xB9E0, 0x6700,
-    0xB9E2, 0xE3AF,
-    0xB9E4, 0xB7C7,
-    0xB9E6, 0x0224,
-    0xB9E8, 0x03A6,
-    0xB9EA, 0x47B7,
-    0xB9EC, 0xB707,
-    0xB9EE, 0x0040,
-    0xB9F0, 0x9387,
-    0xB9F2, 0x0706,
-    0xB9F4, 0x3E96,
-    0xB9F6, 0x0967,
-    0xB9F8, 0x1308,
-    0xB9FA, 0x0502,
-    0xB9FC, 0xAA87,
-    0xB9FE, 0x098E,
-    0xBA00, 0x1307,
-    0xBA02, 0xF7F1,
-    0xBA04, 0x2390,
-    0xBA06, 0xE700,
-    0xBA08, 0xB306,
-    0xBA0A, 0xF600,
-    0xBA0C, 0x2390,
-    0xBA0E, 0xE600,
-    0xBA10, 0x8907,
-    0xBA12, 0xE399,
-    0xBA14, 0x07FF,
-    0xBA16, 0x83C7,
-    0xBA18, 0xC500,
-    0xBA1A, 0xB1CB,
-    0xBA1C, 0x83AF,
-    0xBA1E, 0x0500,
-    0xBA20, 0x0963,
-    0xBA22, 0x1388,
-    0xBA24, 0xE500,
-    0xBA26, 0x8147,
-    0xBA28, 0x0D4F,
-    0xBA2A, 0x854E,
-    0xBA2C, 0x094E,
-    0xBA2E, 0x1303,
-    0xBA30, 0x03F0,
-    0xBA32, 0x3317,
-    0xBA34, 0xFF00,
-    0xBA36, 0x3377,
-    0xBA38, 0xF701,
-    0xBA3A, 0x3396,
-    0xBA3C, 0xFE00,
-    0xBA3E, 0xB316,
-    0xBA40, 0xFE00,
-    0xBA42, 0x798E,
-    0xBA44, 0xB308,
-    0xBA46, 0xF500,
-    0xBA48, 0xF98E,
-    0xBA4A, 0x8907,
-    0xBA4C, 0x7D47,
-    0xBA4E, 0x19C2,
-    0xBA50, 0x0347,
-    0xBA52, 0x0800,
-    0xBA54, 0x1A86,
-    0xBA56, 0x81C6,
-    0xBA58, 0x0346,
-    0xBA5A, 0x1800,
-    0xBA5C, 0x2206,
-    0xBA5E, 0x518F,
-    0xBA60, 0x2390,
-    0xBA62, 0xE800,
-    0xBA64, 0x03C7,
-    0xBA66, 0xC500,
-    0xBA68, 0x0908,
-    0xBA6A, 0xE3C4,
-    0xBA6C, 0xE7FC,
-    0xBA6E, 0xB7C7,
-    0xBA70, 0x0224,
-    0xBA72, 0x83A7,
-    0xBA74, 0x07B7,
-    0xBA76, 0x1D45,
-    0xBA78, 0x8287,
-    0xBA7A, 0x0100,
-    0xBA7C, 0x1743,
-    0xBA7E, 0x02FC,
-    0xBA80, 0xE702,
-    0xBA82, 0x43A4,
-    0xBA84, 0xB7A7,
-    0xBA86, 0x0224,
-    0xBA88, 0x03C7,
-    0xBA8A, 0x6760,
-    0xBA8C, 0x8547,
-    0xBA8E, 0x630C,
-    0xBA90, 0xF700,
-    0xBA92, 0xB7C7,
-    0xBA94, 0x0224,
-    0xBA96, 0x83A7,
-    0xBA98, 0x07B7,
-    0xBA9A, 0x2145,
-    0xBA9C, 0x8297,
-    0xBA9E, 0x1743,
-    0xBAA0, 0x02FC,
-    0xBAA2, 0x6700,
-    0xBAA4, 0x63A4,
-    0xBAA6, 0x9760,
-    0xBAA8, 0xFFFB,
-    0xBAAA, 0xE780,
-    0xBAAC, 0xE0E8,
-    0xBAAE, 0x75D1,
-    0xBAB0, 0xB7E7,
-    0xBAB2, 0x0024,
-    0xBAB4, 0x83C7,
-    0xBAB6, 0xB7AD,
-    0xBAB8, 0xE9FF,
-    0xBABA, 0xB7B7,
-    0xBABC, 0x0024,
-    0xBABE, 0x03D7,
-    0xBAC0, 0x4733,
-    0xBAC2, 0xB707,
-    0xBAC4, 0x0140,
-    0xBAC6, 0x2399,
-    0xBAC8, 0xE7DC,
-    0xBACA, 0xE1B7,
-    0xBACC, 0x1743,
-    0xBACE, 0x02FC,
-    0xBAD0, 0xE702,
-    0xBAD2, 0x439F,
-    0xBAD4, 0xB7B7,
-    0xBAD6, 0x0224,
-    0xBAD8, 0x9387,
-    0xBADA, 0x87B4,
-    0xBADC, 0x23AE,
-    0xBADE, 0xF194,
-    0xBAE0, 0x3764,
-    0xBAE2, 0x0124,
-    0xBAE4, 0x9D66,
-    0xBAE6, 0xB7B5,
-    0xBAE8, 0x0224,
-    0xBAEA, 0xB7B7,
-    0xBAEC, 0x0224,
-    0xBAEE, 0x1304,
-    0xBAF0, 0x0440,
-    0xBAF2, 0x9387,
-    0xBAF4, 0xC783,
-    0xBAF6, 0x9386,
-    0xBAF8, 0xF6BF,
-    0xBAFA, 0x1146,
-    0xBAFC, 0x9385,
-    0xBAFE, 0x05FB,
-    0xBB00, 0x0545,
-    0xBB02, 0x5CC4,
-    0xBB04, 0x97E0,
-    0xBB06, 0xFFFB,
-    0xBB08, 0xE780,
-    0xBB0A, 0xC0E8,
-    0xBB0C, 0xC166,
-    0xBB0E, 0xB7B5,
-    0xBB10, 0x0224,
-    0xBB12, 0xFD16,
-    0xBB14, 0x3146,
-    0xBB16, 0x9385,
-    0xBB18, 0x4598,
-    0xBB1A, 0x4145,
-    0xBB1C, 0x97E0,
-    0xBB1E, 0xFFFB,
-    0xBB20, 0xE780,
-    0xBB22, 0x40E7,
-    0xBB24, 0x37B7,
-    0xBB26, 0x0224,
-    0xBB28, 0x1307,
-    0xBB2A, 0x87B7,
-    0xBB2C, 0xB7A7,
-    0xBB2E, 0x0224,
-    0xBB30, 0x9387,
-    0xBB32, 0x8754,
-    0xBB34, 0x78C8,
-    0xBB36, 0x37B7,
-    0xBB38, 0x0224,
-    0xBB3A, 0xA380,
-    0xBB3C, 0x070C,
-    0xBB3E, 0x2381,
-    0xBB40, 0x070C,
-    0xBB42, 0x1307,
-    0xBB44, 0xC7C2,
-    0xBB46, 0xB7B7,
-    0xBB48, 0x0224,
-    0xBB4A, 0x18D4,
-    0xBB4C, 0x9387,
-    0xBB4E, 0x472D,
-    0xBB50, 0x37B7,
-    0xBB52, 0x0224,
-    0xBB54, 0x7CC4,
-    0xBB56, 0x1307,
-    0xBB58, 0x873B,
-    0xBB5A, 0xB7B7,
-    0xBB5C, 0x0224,
-    0xBB5E, 0x18C0,
-    0xBB60, 0x9387,
-    0xBB62, 0x4737,
-    0xBB64, 0x23AA,
-    0xBB66, 0xF1A4,
-    0xBB68, 0x1743,
-    0xBB6A, 0x02FC,
-    0xBB6C, 0x6700,
-    0xBB6E, 0xC397,
-    0xBB70, 0x14A6,
-    0xBB72, 0x0224,
-    0xBB74, 0x008D,
-    0xBB76, 0x0000,
-    0xBB78, 0x0000,
-    0xBB7A, 0x803B,
-    0xBB7C, 0x0000,
-    0xBB7E, 0x003F,
-    0xBB80, 0x0000,
-    0xBB82, 0x8043,
-    0xBC98, 0x1743,
-    0xBC9A, 0x02FC,
-    0xBC9C, 0xE702,
-    0xBC9E, 0x8382,
-    0xBCA0, 0x2A84,
-    0xBCA2, 0xEFE0,
-    0xBCA4, 0xBFB9,
-    0xBCA6, 0xA147,
-    0xBCA8, 0x6306,
-    0xBCAA, 0xF400,
-    0xBCAC, 0x1743,
-    0xBCAE, 0x02FC,
-    0xBCB0, 0x6700,
-    0xBCB2, 0x8383,
-    0xBCB4, 0xB7C7,
-    0xBCB6, 0x0224,
-    0xBCB8, 0x83C7,
-    0xBCBA, 0x87B8,
-    0xBCBC, 0xE5DB,
-    0xBCBE, 0xB797,
-    0xBCC0, 0x0124,
-    0xBCC2, 0x9387,
-    0xBCC4, 0x0753,
-    0xBCC6, 0x0567,
-    0xBCC8, 0x3E97,
-    0xBCCA, 0x8346,
-    0xBCCC, 0x07B9,
-    0xBCCE, 0xF9DE,
-    0xBCD0, 0x83C7,
-    0xBCD2, 0x673F,
-    0xBCD4, 0xE1DF,
-    0xBCD6, 0x8357,
-    0xBCD8, 0x47B6,
-    0xBCDA, 0x93E7,
-    0xBCDC, 0x0720,
-    0xBCDE, 0x2312,
-    0xBCE0, 0xF7B6,
-    0xBCE2, 0xE9B7,
-    0xBCE4, 0x1733,
-    0xBCE6, 0x02FC,
-    0xBCE8, 0xE702,
-    0xBCEA, 0x437B,
-    0xBCEC, 0x37C8,
-    0xBCEE, 0x0224,
-    0xBCF0, 0x1308,
-    0xBCF2, 0x48B8,
-    0xBCF4, 0x8348,
-    0xBCF6, 0x4800,
-    0xBCF8, 0x2A8B,
-    0xBCFA, 0xAE8B,
-    0xBCFC, 0x3284,
-    0xBCFE, 0xB684,
-    0xBD00, 0x3A89,
-    0xBD02, 0xBE89,
-    0xBD04, 0x6380,
-    0xBD06, 0x0802,
-    0xBD08, 0xB7A7,
-    0xBD0A, 0x0124,
-    0xBD0C, 0x9387,
-    0xBD0E, 0x0753,
-    0xBD10, 0x03C7,
-    0xBD12, 0x07B9,
-    0xBD14, 0x83C7,
-    0xBD16, 0xB792,
-    0xBD18, 0x11C7,
-    0xBD1A, 0x0347,
-    0xBD1C, 0x5800,
-    0xBD1E, 0xBD8B,
-    0xBD20, 0x6306,
-    0xBD22, 0xF704,
-    0xBD24, 0x37E8,
-    0xBD26, 0x0124,
-    0xBD28, 0x1308,
-    0xBD2A, 0x0887,
-    0xBD2C, 0x832A,
-    0xBD2E, 0x0812,
-    0xBD30, 0x032A,
-    0xBD32, 0x4812,
-    0xBD34, 0x0146,
-    0xBD36, 0xD685,
-    0xBD38, 0x5285,
-    0xBD3A, 0x9730,
-    0xBD3C, 0x01FC,
-    0xBD3E, 0xE780,
-    0xBD40, 0xA0D0,
-    0xBD42, 0xCE87,
-    0xBD44, 0x4A87,
-    0xBD46, 0xA686,
-    0xBD48, 0x2286,
-    0xBD4A, 0xDE85,
-    0xBD4C, 0x5A85,
-    0xBD4E, 0x9740,
-    0xBD50, 0x00FC,
-    0xBD52, 0xE780,
-    0xBD54, 0xA066,
-    0xBD56, 0x0546,
-    0xBD58, 0xD685,
-    0xBD5A, 0x5285,
-    0xBD5C, 0x9730,
-    0xBD5E, 0x01FC,
-    0xBD60, 0xE780,
-    0xBD62, 0x80CE,
-    0xBD64, 0x1733,
-    0xBD66, 0x02FC,
-    0xBD68, 0x6700,
-    0xBD6A, 0xC376,
-    0xBD6C, 0x2315,
-    0xBD6E, 0x0600,
-    0xBD70, 0x9760,
-    0xBD72, 0xFFFB,
-    0xBD74, 0xE780,
-    0xBD76, 0x80BA,
-    0xBD78, 0x01CD,
-    0xBD7A, 0xB797,
-    0xBD7C, 0x0124,
-    0xBD7E, 0x9387,
-    0xBD80, 0x07D7,
-    0xBD82, 0x03C7,
-    0xBD84, 0xC700,
-    0xBD86, 0x59DF,
-    0xBD88, 0x7D17,
-    0xBD8A, 0x2386,
-    0xBD8C, 0xE700,
-    0xBD8E, 0x59BF,
-    0xBD90, 0x9760,
-    0xBD92, 0xFFFB,
-    0xBD94, 0xE780,
-    0xBD96, 0x80B5,
-    0xBD98, 0x6DD1,
-    0xBD9A, 0xB797,
-    0xBD9C, 0x0124,
-    0xBD9E, 0x9387,
-    0xBDA0, 0x07D7,
-    0xBDA2, 0x03C7,
-    0xBDA4, 0xD700,
-    0xBDA6, 0x3DDF,
-    0xBDA8, 0x7D17,
-    0xBDAA, 0xA386,
-    0xBDAC, 0xE700,
-    0xBDAE, 0x9DBF,
-    0xBDB0, 0x1733,
-    0xBDB2, 0x02FC,
-    0xBDB4, 0xE702,
-    0xBDB6, 0x636F,
-    0xBDB8, 0xB7E7,
-    0xBDBA, 0x0124,
-    0xBDBC, 0x9387,
-    0xBDBE, 0x0787,
-    0xBDC0, 0x03AA,
-    0xBDC2, 0x8712,
-    0xBDC4, 0x83A9,
-    0xBDC6, 0xC712,
-    0xBDC8, 0xAE84,
-    0xBDCA, 0x2A84,
-    0xBDCC, 0x3289,
-    0xBDCE, 0xD285,
-    0xBDD0, 0x0146,
-    0xBDD2, 0x4E85,
-    0xBDD4, 0x9730,
-    0xBDD6, 0x01FC,
-    0xBDD8, 0xE780,
-    0xBDDA, 0x00C7,
-    0xBDDC, 0xA685,
-    0xBDDE, 0x4A86,
-    0xBDE0, 0x2285,
-    0xBDE2, 0x9760,
-    0xBDE4, 0xFFFB,
-    0xBDE6, 0xE780,
-    0xBDE8, 0x206A,
-    0xBDEA, 0xAA84,
-    0xBDEC, 0x0546,
-    0xBDEE, 0xD285,
-    0xBDF0, 0x4E85,
-    0xBDF2, 0x9730,
-    0xBDF4, 0x01FC,
-    0xBDF6, 0xE780,
-    0xBDF8, 0x20C5,
-    0xBDFA, 0xB7C7,
-    0xBDFC, 0x0224,
-    0xBDFE, 0x9387,
-    0xBE00, 0x47B8,
-    0xBE02, 0x03C7,
-    0xBE04, 0xE710,
-    0xBE06, 0x15C3,
-    0xBE08, 0x37A7,
-    0xBE0A, 0x0124,
-    0xBE0C, 0x1307,
-    0xBE0E, 0x0753,
-    0xBE10, 0x0346,
-    0xBE12, 0x37B9,
-    0xBE14, 0x8946,
-    0xBE16, 0x631A,
-    0xBE18, 0xD600,
-    0xBE1A, 0x8356,
-    0xBE1C, 0x87BA,
-    0xBE1E, 0xE18E,
-    0xBE20, 0x89C6,
-    0xBE22, 0x9306,
-    0xBE24, 0x0040,
-    0xBE26, 0x6307,
-    0xBE28, 0xD400,
-    0xBE2A, 0x2685,
-    0xBE2C, 0x1733,
-    0xBE2E, 0x02FC,
-    0xBE30, 0x6700,
-    0xBE32, 0xE36A,
-    0xBE34, 0x8326,
-    0xBE36, 0x47B3,
-    0xBE38, 0x7D57,
-    0xBE3A, 0xE388,
-    0xBE3C, 0xE6FE,
-    0xBE3E, 0x03D7,
-    0xBE40, 0x2711,
-    0xBE42, 0x9396,
-    0xBE44, 0x0401,
-    0xBE46, 0xC182,
-    0xBE48, 0x11E3,
-    0xBE4A, 0x3687,
-    0xBE4C, 0xBA84,
-    0xBE4E, 0x2399,
-    0xBE50, 0xD710,
-    0xBE52, 0xE1BF,
-    0xBE54, 0x1733,
-    0xBE56, 0x02FC,
-    0xBE58, 0xE702,
-    0xBE5A, 0x2365,
-    0xBE5C, 0x3729,
-    0xBE5E, 0x0024,
-    0xBE60, 0xB7A4,
-    0xBE62, 0x0124,
-    0xBE64, 0x1309,
-    0xBE66, 0x0933,
-    0xBE68, 0x9384,
-    0xBE6A, 0x0453,
-    0xBE6C, 0x8347,
-    0xBE6E, 0x491A,
-    0xBE70, 0x03C7,
-    0xBE72, 0x24B7,
-    0xBE74, 0x2A84,
-    0xBE76, 0xD98F,
-    0xBE78, 0x6382,
-    0xBE7A, 0x0714,
-    0xBE7C, 0x8347,
-    0xBE7E, 0xE400,
-    0xBE80, 0x0547,
-    0xBE82, 0x2305,
-    0xBE84, 0xE400,
-    0xBE86, 0x99E7,
-    0xBE88, 0x8347,
-    0xBE8A, 0xC400,
-    0xBE8C, 0xD1CF,
-    0xBE8E, 0x83C7,
-    0xBE90, 0x24B7,
-    0xBE92, 0xC5CB,
-    0xBE94, 0xB76A,
-    0xBE96, 0x0124,
-    0xBE98, 0x130A,
-    0xBE9A, 0x0403,
-    0xBE9C, 0x0347,
-    0xBE9E, 0x0400,
-    0xBEA0, 0xA169,
-    0xBEA2, 0xFD19,
-    0xBEA4, 0xA301,
-    0xBEA6, 0xE400,
-    0xBEA8, 0x83A7,
-    0xBEAA, 0x0A4B,
-    0xBEAC, 0x2302,
-    0xBEAE, 0xE400,
-    0xBEB0, 0x0567,
-    0xBEB2, 0xBA97,
-    0xBEB4, 0x83D7,
-    0xBEB6, 0x47E0,
-    0xBEB8, 0x2303,
-    0xBEBA, 0x0400,
-    0xBEBC, 0xB3F7,
-    0xBEBE, 0x3701,
-    0xBEC0, 0x231C,
-    0xBEC2, 0xF400,
-    0xBEC4, 0x9740,
-    0xBEC6, 0xFDFB,
-    0xBEC8, 0xE780,
-    0xBECA, 0x0067,
-    0xBECC, 0x0358,
-    0xBECE, 0x8401,
-    0xBED0, 0xA308,
-    0xBED2, 0xA400,
-    0xBED4, 0x6301,
-    0xBED6, 0x0806,
-    0xBED8, 0x3736,
-    0xBEDA, 0x0520,
-    0xBEDC, 0x1306,
-    0xBEDE, 0x06C8,
-    0xBEE0, 0x8146,
-    0xBEE2, 0x8147,
-    0xBEE4, 0x4145,
-    0xBEE6, 0xB305,
-    0xBEE8, 0xF400,
-    0xBEEA, 0x3357,
-    0xBEEC, 0xF840,
-    0xBEEE, 0x2380,
-    0xBEF0, 0xD502,
-    0xBEF2, 0x058B,
-    0xBEF4, 0x8507,
-    0xBEF6, 0x11C7,
-    0xBEF8, 0x0347,
-    0xBEFA, 0x0600,
-    0xBEFC, 0xBA96,
-    0xBEFE, 0x93F6,
-    0xBF00, 0xF60F,
-    0xBF02, 0x0506,
-    0xBF04, 0xE391,
-    0xBF06, 0xA7FE,
-    0xBF08, 0x2308,
-    0xBF0A, 0xD400,
-    0xBF0C, 0x8347,
-    0xBF0E, 0x491A,
-    0xBF10, 0x03C7,
-    0xBF12, 0x24B7,
-    0xBF14, 0xD98F,
-    0xBF16, 0xC9C3,
-    0xBF18, 0x2307,
-    0xBF1A, 0x0400,
-    0xBF1C, 0x232E,
-    0xBF1E, 0x4401,
-    0xBF20, 0x1733,
-    0xBF22, 0x02FC,
-    0xBF24, 0x6700,
-    0xBF26, 0xA35B,
-    0xBF28, 0x8347,
-    0xBF2A, 0xB400,
-    0xBF2C, 0xA5D7,
-    0xBF2E, 0x83C7,
-    0xBF30, 0x24B7,
-    0xBF32, 0xADF3,
-    0xBF34, 0x39A0,
-    0xBF36, 0x0148,
-    0xBF38, 0x45F1,
-    0xBF3A, 0x231C,
-    0xBF3C, 0x3401,
-    0xBF3E, 0x4E88,
-    0xBF40, 0x61BF,
-    0xBF42, 0xB76A,
-    0xBF44, 0x0124,
-    0xBF46, 0x83A5,
-    0xBF48, 0x0A4B,
-    0xBF4A, 0x8567,
-    0xBF4C, 0x130A,
-    0xBF4E, 0x0403,
-    0xBF50, 0x9387,
-    0xBF52, 0x07E1,
-    0xBF54, 0x1306,
-    0xBF56, 0x8007,
-    0xBF58, 0xBE95,
-    0xBF5A, 0x5285,
-    0xBF5C, 0x9760,
-    0xBF5E, 0x00FC,
-    0xBF60, 0xE780,
-    0xBF62, 0x400A,
-    0xBF64, 0x21C9,
-    0xBF66, 0x2305,
-    0xBF68, 0x0400,
-    0xBF6A, 0x0347,
-    0xBF6C, 0x2401,
-    0xBF6E, 0x8347,
-    0xBF70, 0x6400,
-    0xBF72, 0x8356,
-    0xBF74, 0x4401,
-    0xBF76, 0xA308,
-    0xBF78, 0xE400,
-    0xBF7A, 0x0547,
-    0xBF7C, 0x231C,
-    0xBF7E, 0xD400,
-    0xBF80, 0x2307,
-    0xBF82, 0xE400,
-    0xBF84, 0xA301,
-    0xBF86, 0xF400,
-    0xBF88, 0x2303,
-    0xBF8A, 0x0400,
-    0xBF8C, 0x232E,
-    0xBF8E, 0x4401,
-    0xBF90, 0x1733,
-    0xBF92, 0x02FC,
-    0xBF94, 0x6700,
-    0xBF96, 0xA354,
-    0xBF98, 0x83A5,
-    0xBF9A, 0x0A4B,
-    0xBF9C, 0x8567,
-    0xBF9E, 0x9387,
-    0xBFA0, 0x07E1,
-    0xBFA2, 0x1306,
-    0xBFA4, 0x000F,
-    0xBFA6, 0xBE95,
-    0xBFA8, 0x5285,
-    0xBFAA, 0x9760,
-    0xBFAC, 0x00FC,
-    0xBFAE, 0xE780,
-    0xBFB0, 0x2005,
-    0xBFB2, 0x9DB7,
-    0xBFB4, 0x8347,
-    0xBFB6, 0xA400,
-    0xBFB8, 0xCDDB,
-    0xBFBA, 0xCDB5,
-    0xBFBC, 0x37A5,
-    0xBFBE, 0x0124,
-    0xBFC0, 0x1305,
-    0xBFC2, 0x050C,
-    0xBFC4, 0x9760,
-    0xBFC6, 0xFFFB,
-    0xBFC8, 0xE780,
-    0xBFCA, 0x8043,
-    0xBFCC, 0x45BD,
-    0xBFCE, 0x0100,
-    0xBFD0, 0x1733,
-    0xBFD2, 0x02FC,
-    0xBFD4, 0xE702,
-    0xBFD6, 0x034F,
-    0xBFD8, 0x8347,
-    0xBFDA, 0x1501,
-    0xBFDC, 0xA304,
-    0xBFDE, 0x0500,
-    0xBFE0, 0x2A84,
-    0xBFE2, 0x91EF,
-    0xBFE4, 0x8357,
-    0xBFE6, 0x8501,
-    0xBFE8, 0x99EB,
-    0xBFEA, 0x8347,
-    0xBFEC, 0xF500,
-    0xBFEE, 0xA307,
-    0xBFF0, 0x0500,
-    0xBFF2, 0xA304,
-    0xBFF4, 0xF500,
-    0xBFF6, 0x1733,
-    0xBFF8, 0x02FC,
-    0xBFFA, 0x6700,
-    0xBFFC, 0xE34E,
-    0xBFFE, 0x2285,
-    0xC000, 0x9790,
-    0xC002, 0xFFFB,
-    0xC004, 0xE780,
-    0xC006, 0xC0C4,
-    0xC008, 0x8347,
-    0xC00A, 0x3400,
-    0xC00C, 0x0347,
-    0xC00E, 0x6400,
-    0xC010, 0x8346,
-    0xC012, 0x7400,
-    0xC014, 0xFD17,
-    0xC016, 0x0507,
-    0xC018, 0x93F7,
-    0xC01A, 0xF70F,
-    0xC01C, 0x2303,
-    0xC01E, 0xE400,
-    0xC020, 0xA301,
-    0xC022, 0xF400,
-    0xC024, 0x99C2,
-    0xC026, 0xA303,
-    0xC028, 0x0400,
-    0xC02A, 0xB1EF,
-    0xC02C, 0x0347,
-    0xC02E, 0x1401,
-    0xC030, 0x8356,
-    0xC032, 0x8401,
-    0xC034, 0x8347,
-    0xC036, 0x5400,
-    0xC038, 0x2309,
-    0xC03A, 0xE400,
-    0xC03C, 0x0547,
-    0xC03E, 0x231A,
-    0xC040, 0xD400,
-    0xC042, 0x2304,
-    0xC044, 0xE400,
-    0xC046, 0x231C,
-    0xC048, 0x0400,
-    0xC04A, 0xA308,
-    0xC04C, 0x0400,
-    0xC04E, 0xC5E3,
-    0xC050, 0x8347,
-    0xC052, 0x1400,
-    0xC054, 0x13F7,
-    0xC056, 0x2700,
-    0xC058, 0x19C7,
-    0xC05A, 0x0347,
-    0xC05C, 0x0400,
-    0xC05E, 0x01C7,
-    0xC060, 0x0347,
-    0xC062, 0x2400,
-    0xC064, 0x4DC3,
-    0xC066, 0x858B,
-    0xC068, 0xA5CF,
-    0xC06A, 0xB727,
-    0xC06C, 0x0024,
-    0xC06E, 0x83C7,
-    0xC070, 0x274D,
-    0xC072, 0xD1D3,
-    0xC074, 0xB767,
-    0xC076, 0x0124,
-    0xC078, 0x83A7,
-    0xC07A, 0x074B,
-    0xC07C, 0x0567,
-    0xC07E, 0xBA97,
-    0xC080, 0x2380,
-    0xC082, 0x07E0,
-    0xC084, 0x8DBF,
-    0xC086, 0x0347,
-    0xC088, 0x0401,
-    0xC08A, 0x5C4C,
-    0xC08C, 0x9316,
-    0xC08E, 0x1700,
-    0xC090, 0xB697,
-    0xC092, 0x5CCC,
-    0xC094, 0xB727,
-    0xC096, 0x0024,
-    0xC098, 0x9387,
-    0xC09A, 0x0733,
-    0xC09C, 0x83C6,
-    0xC09E, 0x371A,
-    0xC0A0, 0x89EA,
-    0xC0A2, 0x8346,
-    0xC0A4, 0x6401,
-    0xC0A6, 0xA1DA,
-    0xC0A8, 0xB7A6,
-    0xC0AA, 0x0124,
-    0xC0AC, 0x83C6,
-    0xC0AE, 0x260A,
-    0xC0B0, 0xB9F2,
-    0xC0B2, 0x83C7,
-    0xC0B4, 0x471A,
-    0xC0B6, 0xA1F3,
-    0xC0B8, 0x0346,
-    0xC0BA, 0x0400,
-    0xC0BC, 0xB767,
-    0xC0BE, 0x0124,
-    0xC0C0, 0x83A5,
-    0xC0C2, 0x074B,
-    0xC0C4, 0x3306,
-    0xC0C6, 0xE602,
-    0xC0C8, 0x8567,
-    0xC0CA, 0x9387,
-    0xC0CC, 0x07E1,
-    0xC0CE, 0xBE95,
-    0xC0D0, 0x1305,
-    0xC0D2, 0x0403,
-    0xC0D4, 0x0606,
-    0xC0D6, 0x9760,
-    0xC0D8, 0x00FC,
-    0xC0DA, 0xE780,
-    0xC0DC, 0x60F2,
-    0xC0DE, 0x21BF,
-    0xC0E0, 0x8547,
-    0xC0E2, 0xA304,
-    0xC0E4, 0xF400,
-    0xC0E6, 0x1733,
-    0xC0E8, 0x02FC,
-    0xC0EA, 0x6700,
-    0xC0EC, 0xE33F,
-    0xC0EE, 0xFD17,
-    0xC0F0, 0xA302,
-    0xC0F2, 0xF400,
-    0xC0F4, 0x2285,
-    0xC0F6, 0x9760,
-    0xC0F8, 0xFFFB,
-    0xC0FA, 0xE780,
-    0xC0FC, 0x6011,
-    0xC0FE, 0x1733,
-    0xC100, 0x02FC,
-    0xC102, 0x6700,
-    0xC104, 0x633E,
-    0xC106, 0x2285,
-    0xC108, 0x9760,
-    0xC10A, 0xFFFB,
-    0xC10C, 0xE780,
-    0xC10E, 0x4010,
-    0xC110, 0xDDB5,
-    0xC112, 0x0100,
-    0xC114, 0x8947,
-    0xC116, 0x6303,
-    0xC118, 0xF500,
-    0xC11A, 0x8280,
-    0xC11C, 0x1733,
-    0xC11E, 0x02FC,
-    0xC120, 0xE702,
-    0xC122, 0xA338,
-    0xC124, 0xB784,
-    0xC126, 0x0124,
-    0xC128, 0x9384,
-    0xC12A, 0x04AA,
-    0xC12C, 0x87A7,
-    0xC12E, 0x040A,
-    0xC130, 0x4111,
-    0xC132, 0x37C5,
-    0xC134, 0x0224,
-    0xC136, 0x5396,
-    0xC138, 0x17C0,
-    0xC13A, 0x7400,
-    0xC13C, 0x9145,
-    0xC13E, 0x1305,
-    0xC140, 0xA5B8,
-    0xC142, 0x9750,
-    0xC144, 0xFFFB,
-    0xC146, 0xE780,
-    0xC148, 0x60C3,
-    0xC14A, 0x3719,
-    0xC14C, 0x0140,
-    0xC14E, 0x4205,
-    0xC150, 0x4181,
-    0xC152, 0x130A,
-    0xC154, 0x4924,
-    0xC156, 0xB789,
-    0xC158, 0x0124,
-    0xC15A, 0x37C4,
-    0xC15C, 0x0224,
-    0xC15E, 0xB7CA,
-    0xC160, 0x0224,
-    0xC162, 0x2317,
-    0xC164, 0xA100,
-    0xC166, 0x9389,
-    0xC168, 0x89B1,
-    0xC16A, 0x1304,
-    0xC16C, 0x24B9,
-    0xC16E, 0x938A,
-    0xC170, 0xAABB,
-    0xC172, 0x330A,
-    0xC174, 0x9A40,
-    0xC176, 0x0605,
-    0xC178, 0x2295,
-    0xC17A, 0x8355,
-    0xC17C, 0x2500,
-    0xC17E, 0x0356,
-    0xC180, 0xC100,
-    0xC182, 0x0355,
-    0xC184, 0x0500,
-    0xC186, 0x2104,
-    0xC188, 0x9760,
-    0xC18A, 0x00FC,
-    0xC18C, 0xE780,
-    0xC18E, 0x8082,
-    0xC190, 0x4205,
-    0xC192, 0x4181,
-    0xC194, 0x2390,
-    0xC196, 0xA900,
-    0xC198, 0xB387,
-    0xC19A, 0x4901,
-    0xC19C, 0x2390,
-    0xC19E, 0xA700,
-    0xC1A0, 0x8909,
-    0xC1A2, 0x6305,
-    0xC1A4, 0x5401,
-    0xC1A6, 0x0355,
-    0xC1A8, 0xE100,
-    0xC1AA, 0xF1B7,
-    0xC1AC, 0xB789,
-    0xC1AE, 0x0124,
-    0xC1B0, 0x37CA,
-    0xC1B2, 0x0224,
-    0xC1B4, 0x1309,
-    0xC1B6, 0x0926,
-    0xC1B8, 0x9389,
-    0xC1BA, 0xA9AF,
-    0xC1BC, 0x130A,
-    0xC1BE, 0x2AC3,
-    0xC1C0, 0x8357,
-    0xC1C2, 0xE100,
-    0xC1C4, 0x0356,
-    0xC1C6, 0xC100,
-    0xC1C8, 0x8509,
-    0xC1CA, 0x8607,
-    0xC1CC, 0xA297,
-    0xC1CE, 0x83D5,
-    0xC1D0, 0x2700,
-    0xC1D2, 0x03D5,
-    0xC1D4, 0x0700,
-    0xC1D6, 0x0909,
-    0xC1D8, 0x2104,
-    0xC1DA, 0x9750,
-    0xC1DC, 0x00FC,
-    0xC1DE, 0xE780,
-    0xC1E0, 0x607D,
-    0xC1E2, 0x1375,
-    0xC1E4, 0xF50F,
-    0xC1E6, 0xA38F,
-    0xC1E8, 0xA9FE,
-    0xC1EA, 0x4205,
-    0xC1EC, 0x4181,
-    0xC1EE, 0x231F,
-    0xC1F0, 0xA9FE,
-    0xC1F2, 0xE317,
-    0xC1F4, 0x44FD,
-    0xC1F6, 0xB719,
-    0xC1F8, 0x0140,
-    0xC1FA, 0x3789,
-    0xC1FC, 0x0124,
-    0xC1FE, 0x37CA,
-    0xC200, 0x0224,
-    0xC202, 0x9389,
-    0xC204, 0x291F,
-    0xC206, 0x1309,
-    0xC208, 0xC9B2,
-    0xC20A, 0x130A,
-    0xC20C, 0x2AC6,
-    0xC20E, 0xB389,
-    0xC210, 0x9940,
-    0xC212, 0x8357,
-    0xC214, 0xE100,
-    0xC216, 0x0356,
-    0xC218, 0xC100,
-    0xC21A, 0x8607,
-    0xC21C, 0xA297,
-    0xC21E, 0x83D5,
-    0xC220, 0x2700,
-    0xC222, 0x03D5,
-    0xC224, 0x0700,
-    0xC226, 0x2104,
-    0xC228, 0x9750,
-    0xC22A, 0x00FC,
-    0xC22C, 0xE780,
-    0xC22E, 0x8078,
-    0xC230, 0x4205,
-    0xC232, 0x4181,
-    0xC234, 0x2310,
-    0xC236, 0xA900,
-    0xC238, 0xB307,
-    0xC23A, 0x3901,
-    0xC23C, 0x2390,
-    0xC23E, 0xA700,
-    0xC240, 0x0909,
-    0xC242, 0xE318,
-    0xC244, 0x44FD,
-    0xC246, 0xB717,
-    0xC248, 0x0140,
-    0xC24A, 0x3789,
-    0xC24C, 0x0124,
-    0xC24E, 0xB7C9,
-    0xC250, 0x0224,
-    0xC252, 0x9387,
-    0xC254, 0xA720,
-    0xC256, 0x1309,
-    0xC258, 0x69B4,
-    0xC25A, 0x9389,
-    0xC25C, 0x29C9,
-    0xC25E, 0xB384,
-    0xC260, 0x9740,
-    0xC262, 0x8357,
-    0xC264, 0xE100,
-    0xC266, 0x0356,
-    0xC268, 0xC100,
-    0xC26A, 0x8607,
-    0xC26C, 0xA297,
-    0xC26E, 0x83D5,
-    0xC270, 0x2700,
-    0xC272, 0x03D5,
-    0xC274, 0x0700,
-    0xC276, 0x2104,
-    0xC278, 0x9750,
-    0xC27A, 0x00FC,
-    0xC27C, 0xE780,
-    0xC27E, 0x8073,
-    0xC280, 0x4205,
-    0xC282, 0x4181,
-    0xC284, 0x2310,
-    0xC286, 0xA900,
-    0xC288, 0xB307,
-    0xC28A, 0x9900,
-    0xC28C, 0x2390,
-    0xC28E, 0xA700,
-    0xC290, 0x0909,
-    0xC292, 0xE318,
-    0xC294, 0x34FD,
-    0xC296, 0x4101,
-    0xC298, 0x1733,
-    0xC29A, 0x02FC,
-    0xC29C, 0x6700,
-    0xC29E, 0x2324,
-    0xC2A0, 0x1733,
-    0xC2A2, 0x02FC,
-    0xC2A4, 0xE702,
-    0xC2A6, 0x0322,
-    0xC2A8, 0x2A84,
-    0xC2AA, 0xEFE0,
-    0xC2AC, 0x3F98,
-    0xC2AE, 0x1DE0,
-    0xC2B0, 0xB797,
-    0xC2B2, 0x0124,
-    0xC2B4, 0x9387,
-    0xC2B6, 0x0753,
-    0xC2B8, 0x0D67,
-    0xC2BA, 0x3E97,
-    0xC2BC, 0x0327,
-    0xC2BE, 0x876E,
-    0xC2C0, 0x058B,
-    0xC2C2, 0x09CB,
-    0xC2C4, 0x3787,
-    0xC2C6, 0x0040,
-    0xC2C8, 0x0357,
-    0xC2CA, 0x87F4,
-    0xC2CC, 0xA146,
-    0xC2CE, 0x618B,
-    0xC2D0, 0x6306,
-    0xC2D2, 0xD700,
-    0xC2D4, 0x1733,
-    0xC2D6, 0x02FC,
-    0xC2D8, 0x6700,
-    0xC2DA, 0x0321,
-    0xC2DC, 0x0567,
-    0xC2DE, 0xBA97,
-    0xC2E0, 0x2389,
-    0xC2E2, 0x07B6,
-    0xC2E4, 0xC5BF,
-    0xC2E6, 0x0100,
-    0xC2E8, 0x9147,
-    0xC2EA, 0x6303,
-    0xC2EC, 0xF500,
-    0xC2EE, 0x8280,
-    0xC2F0, 0x1733,
-    0xC2F2, 0x02FC,
-    0xC2F4, 0xE702,
-    0xC2F6, 0x031D,
-    0xC2F8, 0x9750,
-    0xC2FA, 0xFFFB,
-    0xC2FC, 0xE780,
-    0xC2FE, 0xC063,
-    0xC300, 0x09C5,
-    0xC302, 0x1733,
-    0xC304, 0x02FC,
-    0xC306, 0x6700,
-    0xC308, 0x231E,
-    0xC30A, 0x9750,
-    0xC30C, 0xFFFB,
-    0xC30E, 0xE780,
-    0xC310, 0xE05D,
-    0xC312, 0x65F9,
-    0xC314, 0xB7C7,
-    0xC316, 0x0224,
-    0xC318, 0x03D7,
-    0xC31A, 0x67B8,
-    0xC31C, 0xB7F7,
-    0xC31E, 0x0040,
-    0xC320, 0x2390,
-    0xC322, 0xE73E,
-    0xC324, 0xF9BF,
-    0xC326, 0x0100,
-    0xC328, 0x37C7,
-    0xC32A, 0x0224,
-    0xC32C, 0x1307,
-    0xC32E, 0x47B8,
-    0xC330, 0x8345,
-    0xC332, 0x0700,
-    0xC334, 0xB7A7,
-    0xC336, 0x0224,
-    0xC338, 0xB7D6,
-    0xC33A, 0x0124,
-    0xC33C, 0x03D6,
-    0xC33E, 0x4760,
-    0xC340, 0x23A8,
-    0xC342, 0xB6DA,
-    0xC344, 0xB767,
-    0xC346, 0x0124,
-    0xC348, 0xB7C6,
-    0xC34A, 0x0224,
-    0xC34C, 0x9387,
-    0xC34E, 0x0740,
-    0xC350, 0x9386,
-    0xC352, 0x86C9,
-    0xC354, 0xD4C7,
-    0xC356, 0x09CA,
-    0xC358, 0xB7B6,
-    0xC35A, 0x0224,
-    0xC35C, 0x3726,
-    0xC35E, 0x0024,
-    0xC360, 0x9386,
-    0xC362, 0x8668,
-    0xC364, 0x2320,
-    0xC366, 0xD6CE,
-    0xC368, 0x2319,
-    0xC36A, 0x0710,
-    0xC36C, 0x37C7,
-    0xC36E, 0x0224,
-    0xC370, 0x1307,
-    0xC372, 0x072A,
-    0xC374, 0xB7C6,
-    0xC376, 0x0224,
-    0xC378, 0x98D7,
-    0xC37A, 0x37C7,
-    0xC37C, 0x0224,
-    0xC37E, 0x9386,
-    0xC380, 0x4611,
-    0xC382, 0x1307,
-    0xC384, 0x872E,
-    0xC386, 0x23A4,
-    0xC388, 0xD1A4,
-    0xC38A, 0xD8C3,
-    0xC38C, 0x8280,
-    0xC38E, 0x0100,
-    0xC390, 0x1733,
-    0xC392, 0x02FC,
-    0xC394, 0xE702,
-    0xC396, 0x0313,
-    0xC398, 0xB7C6,
-    0xC39A, 0x0224,
-    0xC39C, 0xB787,
-    0xC39E, 0x0324,
-    0xC3A0, 0x9386,
-    0xC3A2, 0x863E,
-    0xC3A4, 0x37A7,
-    0xC3A6, 0x0124,
-    0xC3A8, 0x9387,
-    0xC3AA, 0x07FF,
-    0xC3AC, 0x1307,
-    0xC3AE, 0x0753,
-    0xC3B0, 0x958F,
-    0xC3B2, 0x232C,
-    0xC3B4, 0xD7B4,
-    0xC3B6, 0x232E,
-    0xC3B8, 0xF7B4,
-    0xC3BA, 0x9720,
-    0xC3BC, 0x01FC,
-    0xC3BE, 0xE780,
-    0xC3C0, 0x600C,
-    0xC3C2, 0x11C5,
-    0xC3C4, 0xEFE0,
-    0xC3C6, 0x0F80,
-    0xC3C8, 0xEFF0,
-    0xC3CA, 0x4FF0,
-    0xC3CC, 0xB13F,
-    0xC3CE, 0x1733,
-    0xC3D0, 0x02FC,
-    0xC3D2, 0x6700,
-    0xC3D4, 0x6311,
-    0xC3D6, 0x0000,
-    0xC3D8, 0xA310,
-    0xC3DA, 0xE538,
-    0xC3DC, 0x0000,
-    0xC3DE, 0x0000,
-    0xC3E0, 0xBEFF,
-    0xC3E2, 0x0F00,
-    0xC3E4, 0x0000,
-    0xC3E6, 0x0000,
-    0xFCFC, 0x2002,
-    0x849C, 0x0100,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0x84A4, 0x0000,
-    0x84A6, 0x0000,
-    0x84A8, 0x0000,
-    0x84AA, 0x0001,
-    0x84AC, 0x01FF,
-    0x84B0, 0x8089,
-    0x84B2, 0x0000,
-    0x84B4, 0x8889,
-    0x84B6, 0x0000,
-    0x84B8, 0xC097,
-    0x84BA, 0x0000,
-    0x84BC, 0xA60E,
-    0x84BE, 0x0000,
-    0x84C0, 0x2206,
-    0x84C2, 0x0000,
-    0x84C4, 0x0010,
-    0x84C8, 0x90C3,
-    0x84CA, 0x0224,
-    0x84CC, 0x44AB,
-    0x84CE, 0x0224,
-    0x84D0, 0x44AB,
-    0x84D2, 0x0224,
-    0x84D4, 0x44AB,
-    0x84D6, 0x0224,
-    0x84D8, 0x44AB,
-    0x84DA, 0x0224,
-    0x84DC, 0x44AB,
-    0x84DE, 0x0224,
-    0xA548, 0x001D,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA558, 0x0000,
-    0xA55A, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xA56C, 0x0000,
-    0xA56E, 0x0000,
-    0xA570, 0x0000,
-    0xA572, 0x0000,
-    0xA574, 0x00D5,
-    0xA576, 0x0000,
-    0xA578, 0x0000,
-    0xA57A, 0x0000,
-    0xA57C, 0x0000,
-    0xA57E, 0x0000,
-    0xA580, 0x0000,
-    0xA582, 0x0000,
-    0xA584, 0x0000,
-    0xA586, 0x0000,
-    0xA588, 0x0000,
-    0xA58A, 0x0000,
-    0xA58C, 0x0000,
-    0xA58E, 0x0000,
-    0xA590, 0x0000,
-    0xA592, 0x0000,
-    0xA594, 0x0000,
-    0xA596, 0x0000,
-    0xA598, 0x0000,
-    0xA59A, 0x0000,
-    0xA59C, 0x0000,
-    0xA59E, 0x0000,
-    0xA5A0, 0x0100,
-    0xA5A2, 0x0036,
-    0xA5A4, 0x0000,
-    0xA5A6, 0x0000,
-    0xA5A8, 0x0000,
-    0xA5AA, 0x0000,
-    0xA5AC, 0x0000,
-    0xA5AE, 0x0000,
-    0xA5B0, 0x0000,
-    0xA5B2, 0x0000,
-    0xA5B4, 0x0000,
-    0xA5B6, 0x0000,
-    0xA5B8, 0x0000,
-    0xA5BA, 0x0000,
-    0xA5BC, 0x0000,
-    0xA5BE, 0x0000,
-    0xA5C0, 0x0000,
-    0xA5C2, 0x0000,
-    0xA5C4, 0x0000,
-    0xA5C6, 0x0000,
-    0xA5C8, 0x0000,
-    0xA5CA, 0x0000,
-    0xA5CC, 0x0000,
-    0xA5CE, 0x0000,
-    0xA5D0, 0x0000,
-    0xA5D2, 0x0000,
-    0xA5D4, 0x0000,
-    0xA5D6, 0x0000,
-    0xA5D8, 0x0000,
-    0xA5DA, 0x0000,
-    0xA5DC, 0x0000,
-    0xA5DE, 0x0000,
-    0xA5E0, 0x0000,
-    0xA5E2, 0x0000,
-    0xA5E4, 0x0000,
-    0xA5E6, 0x0000,
-    0xA5E8, 0x0000,
-    0xA5EA, 0x0000,
-    0xA5EC, 0x000F,
-    0xA5EE, 0x000F,
-    0xA5F0, 0x000F,
-    0xA5F2, 0x000F,
-    0xA5F4, 0x0000,
-    0xA5F6, 0x0000,
-    0xA5F8, 0x0000,
-    0xA5FA, 0x0000,
-    0xA5FC, 0x0000,
-    0xA5FE, 0x0000,
-    0xA600, 0x0000,
-    0xA602, 0x0000,
-    0xA604, 0x0000,
-    0xA606, 0x00C6,
-    0xBB84, 0x0001,
-    0xBB86, 0x0000,
-    0xBB88, 0x0000,
-    0xBB8A, 0x0100,
-    0xBB8C, 0x0800,
-    0xBB8E, 0x1000,
-    0xBB90, 0x2000,
-    0xBB92, 0x9A00,
-    0xBB94, 0x9A00,
-    0xBB96, 0x9A00,
-    0xBB98, 0x9A00,
-    0xBB9A, 0x9600,
-    0xBB9C, 0x9600,
-    0xBB9E, 0x9600,
-    0xBBA0, 0x9600,
-    0xBBA2, 0x9300,
-    0xBBA4, 0x9300,
-    0xBBA6, 0x9300,
-    0xBBA8, 0x9300,
-    0xBBAA, 0x9000,
-    0xBBAC, 0x9000,
-    0xBBAE, 0x9000,
-    0xBBB0, 0x9000,
-    0xBBB2, 0x8D00,
-    0xBBB4, 0x8D00,
-    0xBBB6, 0x8D00,
-    0xBBB8, 0x8D00,
-    0xBBBA, 0x3F00,
-    0xBBBC, 0x3F00,
-    0xBBBE, 0x3F00,
-    0xBBC0, 0x3F00,
-    0xBBC2, 0x1E00,
-    0xBBC4, 0x1E00,
-    0xBBC6, 0x1E00,
-    0xBBC8, 0x1E00,
-    0xBBCA, 0x0000,
-    0xBBCC, 0x0000,
-    0xBBCE, 0x0000,
-    0xBBD0, 0x0000,
-    0xBBD2, 0x0800,
-    0xBBD4, 0x0800,
-    0xBBD6, 0x0800,
-    0xBBD8, 0x0800,
-    0xBBDA, 0x0000,
-    0xBBDC, 0x0000,
-    0xBBDE, 0x0000,
-    0xBBE0, 0x0000,
-    0xBBE2, 0x3F00,
-    0xBBE4, 0x3F00,
-    0xBBE6, 0x3F00,
-    0xBBE8, 0x3F00,
-    0xBBEA, 0x3400,
-    0xBBEC, 0x3400,
-    0xBBEE, 0x3400,
-    0xBBF0, 0x3400,
-    0xBBF2, 0x0A00,
-    0xBBF4, 0x0A00,
-    0xBBF6, 0x0A00,
-    0xBBF8, 0x0A00,
-    0xBBFA, 0x1000,
-    0xBBFC, 0x1000,
-    0xBBFE, 0x1000,
-    0xBC00, 0x1000,
-    0xBC02, 0x0600,
-    0xBC04, 0x0600,
-    0xBC06, 0x0600,
-    0xBC08, 0x0600,
-    0xBC0A, 0x0C00,
-    0xBC0C, 0x0C00,
-    0xBC0E, 0x0C00,
-    0xBC10, 0x0C00,
-    0xBC12, 0x0000,
-    0xBC14, 0x0000,
-    0xBC16, 0x0000,
-    0xBC18, 0x0000,
-    0xBC1A, 0x1000,
-    0xBC1C, 0x1000,
-    0xBC1E, 0x1000,
-    0xBC20, 0x1000,
-    0xBC22, 0x1000,
-    0xBC24, 0x1000,
-    0xBC26, 0x1000,
-    0xBC28, 0x1000,
-    0xBC2A, 0x2000,
-    0xBC2C, 0x1000,
-    0xBC2E, 0x1000,
-    0xBC30, 0x1000,
-    0xBC32, 0x0600,
-    0xBC34, 0x0600,
-    0xBC36, 0x0600,
-    0xBC38, 0x0600,
-    0xBC3A, 0x1C00,
-    0xBC3C, 0x1C00,
-    0xBC3E, 0x1C00,
-    0xBC40, 0x1C00,
-    0xBC42, 0x0600,
-    0xBC44, 0x0600,
-    0xBC46, 0x0600,
-    0xBC48, 0x0600,
-    0xBC4A, 0x2A00,
-    0xBC4C, 0x2A00,
-    0xBC4E, 0x2A00,
-    0xBC50, 0x2A00,
-    0xBC52, 0x0200,
-    0xBC54, 0x0200,
-    0xBC56, 0x0200,
-    0xBC58, 0x0200,
-    0xBC5A, 0x1000,
-    0xBC5C, 0x1000,
-    0xBC5E, 0x1000,
-    0xBC60, 0x1000,
-    0xBC62, 0x0E00,
-    0xBC64, 0x0E00,
-    0xBC66, 0x0E00,
-    0xBC68, 0x0E00,
-    0xBC6A, 0x2800,
-    0xBC6C, 0x2800,
-    0xBC6E, 0x2800,
-    0xBC70, 0x2800,
-    0xBC72, 0x1800,
-    0xBC74, 0x1800,
-    0xBC76, 0x1800,
-    0xBC78, 0x1800,
-    0xBC7A, 0x0800,
-    0xBC7C, 0x0800,
-    0xBC7E, 0x0800,
-    0xBC80, 0x0800,
-    0xBC82, 0x0000,
-    0xBC84, 0x0000,
-    0xBC86, 0x0000,
-    0xBC88, 0x0000,
-    0xBC8A, 0x2400,
-    0xBC8C, 0x2400,
-    0xBC8E, 0x2400,
-    0xBC90, 0x2400,
-    0xBC92, 0x0088,
-    0xFCFC, 0x2001,
-    0x5634, 0x041D,
-    0x5636, 0x0420,
-    0x5638, 0x3C85,
-    0x563A, 0x0224,
-    0x563C, 0x3CE6,
-    0x563E, 0x0320,
-    0x5640, 0xD885,
-    0x5642, 0x0224,
-    0x5644, 0xD06E,
-    0x5646, 0x0320,
-    0x5648, 0xC48D,
-    0x564A, 0x0224,
-    0x564C, 0x4877,
-    0x564E, 0x0320,
-    0x5650, 0xCC90,
-    0x5652, 0x0224,
-    0x5654, 0x6812,
-    0x5656, 0x0320,
-    0x5658, 0xB88F,
-    0x565A, 0x0224,
-    0x565C, 0xE8FE,
-    0x565E, 0x0220,
-    0x5660, 0x5491,
-    0x5662, 0x0224,
-    0x5664, 0xA462,
-    0x5666, 0x0320,
-    0x5668, 0x9C95,
-    0x566A, 0x0224,
-    0x566C, 0x901B,
-    0x566E, 0x0020,
-    0x5670, 0x2896,
-    0x5672, 0x0224,
-    0x5674, 0xC446,
-    0x5676, 0x0320,
-    0x5678, 0xE896,
-    0x567A, 0x0224,
-    0x567C, 0x1427,
-    0x567E, 0x0320,
-    0x5680, 0xC498,
-    0x5682, 0x0224,
-    0x5684, 0x304C,
-    0x5686, 0x0220,
-    0x5688, 0x749B,
-    0x568A, 0x0224,
-    0x568C, 0xC82C,
-    0x568E, 0x0220,
-    0x5690, 0xD09B,
-    0x5692, 0x0224,
-    0x5694, 0x484F,
-    0x5696, 0x0220,
-    0x5698, 0x289C,
-    0x569A, 0x0224,
-    0x569C, 0xB041,
-    0x569E, 0x0220,
-    0x56A0, 0x3C9A,
-    0x56A2, 0x0224,
-    0x56A4, 0xC81D,
-    0x56A6, 0x0420,
-    0x56A8, 0xFC9A,
-    0x56AA, 0x0224,
-    0x56AC, 0xAC7F,
-    0x56AE, 0x0420,
-    0x56B0, 0x8C86,
-    0x56B2, 0x0224,
-    0x56B4, 0x7C80,
-    0x56B6, 0x0420,
-    0x56B8, 0x1086,
-    0x56BA, 0x0224,
-    0x56BC, 0xF887,
-    0x56BE, 0x0320,
-    0x56C0, 0x7CAC,
-    0x56C2, 0x0224,
-    0x56C4, 0x1007,
-    0x56C6, 0x0320,
-    0x56C8, 0xE08E,
-    0x56CA, 0x0224,
-    0x56CC, 0x1409,
-    0x56CE, 0x0020,
-    0x56D0, 0x2495,
-    0x56D2, 0x0224,
-    0x56D4, 0x2046,
-    0x56D6, 0x0420,
-    0x56D8, 0xC087,
-    0x56DA, 0x0224,
-    0x56DC, 0xB05B,
-    0x56DE, 0x0420,
-    0x56E0, 0x4088,
-    0x56E2, 0x0224,
-    0x56E4, 0x505C,
-    0x56E6, 0x0320,
-    0x56E8, 0x448A,
-    0x56EA, 0x0224,
-    0x56EC, 0xA45B,
-    0x56EE, 0x0320,
-    0x56F0, 0x5089,
-    0x56F2, 0x0224,
-    0x56F4, 0x306A,
-    0x56F6, 0x0420,
-    0x56F8, 0x1485,
-    0x56FA, 0x0224,
-    0x56FC, 0x90F8,
-    0x56FE, 0x0220,
-    0x5700, 0x44A1,
-    0x5702, 0x0224,
-    0x5704, 0x0454,
-    0x5706, 0x0120,
-    0x5708, 0x18A6,
-    0x570A, 0x0224,
-    0x570C, 0x0453,
-    0x570E, 0x0020,
-    0x5710, 0xA0A7,
-    0x5712, 0x0224,
-    0x5714, 0xC850,
-    0x5716, 0x0220,
-    0x5718, 0xB8AC,
-    0x571A, 0x0224,
-    0x571C, 0x2C88,
-    0x571E, 0x0220,
-    0x5720, 0xF0AD,
-    0x5722, 0x0224,
-    0x5724, 0x7C82,
-    0x5726, 0x0120,
-    0x5728, 0xC8B4,
-    0x572A, 0x0224,
-    0x572C, 0xACF3,
-    0x572E, 0x0320,
-    0x5730, 0x64B5,
-    0x5732, 0x0224,
-    0x5734, 0x1081,
-    0x5736, 0x0320,
-    0x5738, 0x70B9,
-    0x573A, 0x0224,
-    0x573C, 0xBCFD,
-    0x573E, 0x0220,
-    0x5740, 0xE4B9,
-    0x5742, 0x0224,
-    0x5744, 0xBCA5,
-    0x5746, 0x0420,
-    0x5748, 0x7CBA,
-    0x574A, 0x0224,
-    0x574C, 0xB803,
-    0x574E, 0x0320,
-    0x5750, 0xE4BC,
-    0x5752, 0x0224,
-    0x5754, 0x8424,
-    0x5756, 0x0220,
-    0x5758, 0xB0BD,
-    0x575A, 0x0224,
-    0x575C, 0x9C4C,
-    0x575E, 0x0220,
-    0x5760, 0xD0BF,
-    0x5762, 0x0224,
-    0x5764, 0x0C22,
-    0x5766, 0x0220,
-    0x5768, 0x54BE,
-    0x576A, 0x0224,
-    0xFCFC, 0x2000,
-    0x68D8, 0x0100,
-    0xFCFC, 0x2002,
-    0xBC92, 0x0100,
-    0xFCFC, 0x4000,
-    0x0E04, 0x1C03,
-    0x0E10, 0x0100,
-    0x0E12, 0x00A0,
-    0x0E14, 0x0C84,
-    0x0E16, 0x002B,
-    0x0E18, 0x0300,
-    0x0E1A, 0x3000,
-    0x0E1C, 0x0100,
-    0x0E1E, 0x00A0,
-    0x0E20, 0x0C84,
-    0x0E22, 0x012B,
-    0x0E24, 0x0400,
-    0x0E26, 0x3000,
-    0xFCFC, 0x2000,
-    0x22E4, 0x0300,
-    0x2338, 0x0101,
-    0xFCFC, 0x2000,
-    0xDD6C, 0xB47E,
-    0xDD6E, 0xB67E,
-    0xDE34, 0x0000,
-    0xDE36, 0x9231,
-    0xFCFC, 0x2006,
-    0x0000, 0x535A,
-    0x0002, 0x0100,
-    0x0004, 0x11C3,
-    0x0006, 0x5A00,
-    0x0008, 0x0001,
-    0x000A, 0x0064,
-    0x000C, 0x2400,
-    0x000E, 0x0000,
-    0x0010, 0x0000,
-    0x0012, 0x0000,
-    0x0014, 0x7FBF,
-    0x0016, 0x624E,
-    0x0018, 0x20FF,
-    0x001A, 0x1F7C,
-    0x001C, 0x2C23,
-    0x001E, 0x23E8,
-    0x0020, 0xE28B,
-    0x0022, 0x1547,
-    0x0024, 0x9DF4,
-    0x0026, 0xE7D7,
-    0x0028, 0xAFCB,
-    0x002A, 0xE85F,
-    0x002C, 0x4B74,
-    0x002E, 0xA863,
-    0x0030, 0xC002,
-    0x0032, 0xB199,
-    0x0034, 0x6AB9,
-    0x0036, 0xFC3D,
-    0x0038, 0x8930,
-    0x003A, 0xA51A,
-    0x003C, 0xECF6,
-    0x003E, 0x90E5,
-    0x0040, 0x706E,
-    0x0042, 0x4787,
-    0x0044, 0xF3B3,
-    0x0046, 0x3541,
-    0x0048, 0x2641,
-    0x004A, 0x4671,
-    0x004C, 0x52C7,
-    0x004E, 0xF3DE,
-    0x0050, 0x17ED,
-    0x0052, 0x5F95,
-    0x0054, 0x2A7C,
-    0x0056, 0x1E02,
-    0x0058, 0x6C56,
-    0x005A, 0x0FC4,
-    0x005C, 0x0101,
-    0x005E, 0x7D9A,
-    0x0060, 0xE5A4,
-    0x0062, 0x4D4B,
-    0x0064, 0x1C93,
-    0x0066, 0x3300,
-    0x0068, 0x7B68,
-    0x006A, 0xA445,
-    0x006C, 0x6F14,
-    0x006E, 0x59E1,
-    0x0070, 0xEC78,
-    0x0072, 0xCCFF,
-    0x0074, 0x4DE7,
-    0x0076, 0x1555,
-    0x0078, 0x4D81,
-    0x007A, 0x5FC2,
-    0x007C, 0xDCF5,
-    0x007E, 0xF141,
-    0x0080, 0x1924,
-    0x0082, 0x3846,
-    0x0084, 0x4608,
-    0x0086, 0x7700,
-    0x0088, 0x1268,
-    0x008A, 0xF048,
-    0x008C, 0x3E6C,
-    0x008E, 0x7AE4,
-    0x0090, 0x369B,
-    0x0092, 0x2C80,
-    0x0094, 0x0D92,
-    0x0096, 0x7048,
-    0x0098, 0x97DE,
-    0x009A, 0x2493,
-    0x009C, 0x02D1,
-    0x009E, 0x9C2E,
-    0x00A0, 0xD51B,
-    0x00A2, 0xCC3A,
-    0x00A4, 0x5508,
-    0x00A6, 0x73D5,
-    0x00A8, 0x0DC3,
-    0x00AA, 0xD2AC,
-    0x00AC, 0x8FE6,
-    0x00AE, 0xA96A,
-    0x00B0, 0x07D5,
-    0x00B2, 0xD4A4,
-    0x00B4, 0x04AD,
-    0x00B6, 0xD5AE,
-    0x00B8, 0x893F,
-    0x00BA, 0x2218,
-    0x00BC, 0xA2EB,
-    0x00BE, 0x0AF5,
-    0x00C0, 0x1957,
-    0x00C2, 0xA8C2,
-    0x00C4, 0x926B,
-    0x00C6, 0x28E3,
-    0x00C8, 0x2B23,
-    0x00CA, 0x7ECB,
-    0x00CC, 0x13B7,
-    0x00CE, 0x5D45,
-    0x00D0, 0x3B29,
-    0x00D2, 0xA785,
-    0x00D4, 0xFEB1,
-    0x00D6, 0x9EE3,
-    0x00D8, 0x557A,
-    0x00DA, 0x77AF,
-    0x00DC, 0x2B1A,
-    0x00DE, 0x01E0,
-    0x00E0, 0x58C0,
-    0x00E2, 0xC43C,
-    0x00E4, 0xDFC3,
-    0x00E6, 0xF236,
-    0x00E8, 0x00D4,
-    0x00EA, 0x3CCA,
-    0x00EC, 0x1FF0,
-    0x00EE, 0x88BC,
-    0x00F0, 0x91B3,
-    0x00F2, 0x725E,
-    0x00F4, 0x6D46,
-    0x00F6, 0x3345,
-    0x00F8, 0x83AD,
-    0x00FA, 0x3812,
-    0x00FC, 0xA11C,
-    0x00FE, 0x0179,
-    0x0100, 0x999B,
-    0x0102, 0x0026,
-    0x0104, 0x0255,
-    0x0106, 0xA060,
-    0x0108, 0x72F1,
-    0x010A, 0xB03D,
-    0x010C, 0x25B6,
-    0x010E, 0x1CBC,
-    0x0110, 0x7EDC,
-    0x0112, 0x6286,
-    0x0114, 0x3CEB,
-    0x0116, 0xF0EA,
-    0x0118, 0xD157,
-    0x011A, 0x3A4B,
-    0x011C, 0x7820,
-    0x011E, 0x69FF,
-    0x0120, 0x1657,
-    0x0122, 0x0CEB,
-    0x0124, 0xDFFF,
-    0x0126, 0xFCD7,
-    0x0128, 0x5875,
-    0x012A, 0xE105,
-    0x012C, 0x5218,
-    0x012E, 0xFDE1,
-    0x0130, 0x6952,
-    0x0132, 0x9EB5,
-    0x0134, 0x6AB2,
-    0x0136, 0x7EBB,
-    0x0138, 0x7397,
-    0x013A, 0x994E,
-    0x013C, 0x3998,
-    0x013E, 0xD789,
-    0x0140, 0xE6C8,
-    0x0142, 0xCC63,
-    0x0144, 0xA29E,
-    0x0146, 0xB35D,
-    0x0148, 0xF93C,
-    0x014A, 0x47CA,
-    0x014C, 0x124F,
-    0x014E, 0x8CA5,
-    0x0150, 0xB90A,
-    0x0152, 0x9928,
-    0x0154, 0x02E8,
-    0x0156, 0x9F83,
-    0x0158, 0xCEDC,
-    0x015A, 0x3E54,
-    0x015C, 0xCDC6,
-    0x015E, 0x53A8,
-    0x0160, 0x4271,
-    0x0162, 0x1246,
-    0x0164, 0x549F,
-    0x0166, 0xE2AB,
-    0x0168, 0xB271,
-    0x016A, 0xD099,
-    0x016C, 0xEC28,
-    0x016E, 0x535C,
-    0x0170, 0xEDC5,
-    0x0172, 0x497A,
-    0x0174, 0xDB7C,
-    0x0176, 0xE3F0,
-    0x0178, 0xD72E,
-    0x017A, 0xA1CA,
-    0x017C, 0xC481,
-    0x017E, 0x28BE,
-    0x0180, 0xA228,
-    0x0182, 0x3A4D,
-    0x0184, 0xBAA0,
-    0x0186, 0xD8A3,
-    0x0188, 0x7C88,
-    0x018A, 0xEE98,
-    0x018C, 0x9851,
-    0x018E, 0x1DC8,
-    0x0190, 0x2E07,
-    0x0192, 0x540A,
-    0x0194, 0x35F4,
-    0x0196, 0xEC0F,
-    0x0198, 0x9113,
-    0x019A, 0xEDDE,
-    0x019C, 0xEAF7,
-    0x019E, 0x0900,
-    0x01A0, 0x09F3,
-    0x01A2, 0x0573,
-    0x01A4, 0xFA81,
-    0x01A6, 0x2104,
-    0x01A8, 0x2590,
-    0x01AA, 0xCC5F,
-    0x01AC, 0x6B0B,
-    0x01AE, 0x3EB7,
-    0x01B0, 0x3389,
-    0x01B2, 0x2D3C,
-    0x01B4, 0x0E0B,
-    0x01B6, 0xD103,
-    0x01B8, 0xB92F,
-    0x01BA, 0x0064,
-    0x01BC, 0x7BB7,
-    0x01BE, 0x3D07,
-    0x01C0, 0xF56E,
-    0x01C2, 0xB180,
-    0x01C4, 0xF8F2,
-    0x01C6, 0x5CCC,
-    0x01C8, 0xD8B4,
-    0x01CA, 0x7706,
-    0x01CC, 0xD573,
-    0x01CE, 0x4A32,
-    0x01D0, 0x659D,
-    0x01D2, 0x2538,
-    0x01D4, 0x1BE3,
-    0x01D6, 0xCD15,
-    0x01D8, 0x50C9,
-    0x01DA, 0x6AE2,
-    0x01DC, 0xA842,
-    0x01DE, 0x05A4,
-    0x01E0, 0x919B,
-    0x01E2, 0xDBEE,
-    0x01E4, 0xB1B8,
-    0x01E6, 0x1072,
-    0x01E8, 0x6516,
-    0x01EA, 0x0124,
-    0x01EC, 0x0E18,
-    0x01EE, 0xF58E,
-    0x01F0, 0x9C7A,
-    0x01F2, 0x3CF0,
-    0x01F4, 0xE339,
-    0x01F6, 0xF030,
-    0x01F8, 0xA3B2,
-    0x01FA, 0xC513,
-    0x01FC, 0x46A5,
-    0x01FE, 0x33FC,
-    0x0200, 0x42B0,
-    0x0202, 0xD05F,
-    0x0204, 0x8050,
-    0x0206, 0x4CEC,
-    0x0208, 0x2F40,
-    0x020A, 0x3833,
-    0x020C, 0x6A1B,
-    0x020E, 0xEFC5,
-    0x0210, 0xDB88,
-    0x0212, 0xD33F,
-    0x0214, 0x83B8,
-    0x0216, 0x65D1,
-    0x0218, 0xED9D,
-    0x021A, 0x442B,
-    0x021C, 0x23FA,
-    0x021E, 0x8B25,
-    0x0220, 0x8759,
-    0x0222, 0x8009,
-    0x0224, 0x8838,
-    0x0226, 0xEC29,
-    0x0228, 0xC4ED,
-    0x022A, 0xF174,
-    0x022C, 0xC483,
-    0x022E, 0x0160,
-    0x0230, 0x33EB,
-    0x0232, 0x7518,
-    0x0234, 0xBD81,
-    0x0236, 0x96F7,
-    0x0238, 0x1CCC,
-    0x023A, 0x41B0,
-    0x023C, 0x96C2,
-    0x023E, 0x6557,
-    0x0240, 0x3398,
-    0x0242, 0xB585,
-    0x0244, 0xA7B6,
-    0x0246, 0xDDF7,
-    0x0248, 0x6305,
-    0x024A, 0x118C,
-    0x024C, 0xC08D,
-    0x024E, 0x97A8,
-    0x0250, 0x09E5,
-    0x0252, 0xA23B,
-    0x0254, 0xFAE7,
-    0x0256, 0xF7AE,
-    0x0258, 0xFA3F,
-    0x025A, 0x8FDC,
-    0x025C, 0x1CB8,
-    0x025E, 0xF80C,
-    0x0260, 0x5240,
-    0x0262, 0x0BB2,
-    0x0264, 0x865B,
-    0x0266, 0xF59D,
-    0x0268, 0x7A2E,
-    0x026A, 0xE946,
-    0x026C, 0xEE5E,
-    0x026E, 0xDAED,
-    0x0270, 0xE083,
-    0x0272, 0x0369,
-    0x0274, 0x5C86,
-    0x0276, 0x052B,
-    0x0278, 0xAC3A,
-    0x027A, 0xE121,
-    0x027C, 0x0B2C,
-    0x027E, 0xD5F9,
-    0x0280, 0x8055,
-    0x0282, 0x2B71,
-    0x0284, 0xCA9B,
-    0x0286, 0x3C38,
-    0x0288, 0xD51D,
-    0x028A, 0xAA2C,
-    0x028C, 0x6638,
-    0x028E, 0xD97B,
-    0x0290, 0xD81E,
-    0x0292, 0x64C6,
-    0x0294, 0x23E5,
-    0x0296, 0xC55A,
-    0x0298, 0x519A,
-    0x029A, 0xB1A7,
-    0x029C, 0x8769,
-    0x029E, 0xF87A,
-    0x02A0, 0x772A,
-    0x02A2, 0x4996,
-    0x02A4, 0x1427,
-    0x02A6, 0xB0B3,
-    0x02A8, 0x5396,
-    0x02AA, 0x6710,
-    0x02AC, 0x154F,
-    0x02AE, 0xC084,
-    0x02B0, 0x0671,
-    0x02B2, 0x6218,
-    0x02B4, 0xFA55,
-    0x02B6, 0x737B,
-    0x02B8, 0x1B09,
-    0x02BA, 0x6DFE,
-    0x02BC, 0x5C31,
-    0x02BE, 0xAD90,
-    0x02C0, 0xD027,
-    0x02C2, 0x4F88,
-    0x02C4, 0xF8D4,
-    0x02C6, 0x3984,
-    0x02C8, 0x6E39,
-    0x02CA, 0x8A3B,
-    0x02CC, 0x1008,
-    0x02CE, 0xB808,
-    0x02D0, 0x7E69,
-    0x02D2, 0x0428,
-    0x02D4, 0x6E99,
-    0x02D6, 0x7F9C,
-    0x02D8, 0x6AD6,
-    0x02DA, 0x42C7,
-    0x02DC, 0x12D0,
-    0x02DE, 0x9785,
-    0x02E0, 0x2300,
-    0x02E2, 0x5FEE,
-    0x02E4, 0x6A49,
-    0x02E6, 0x3EBB,
-    0x02E8, 0x1C38,
-    0x02EA, 0x231D,
-    0x02EC, 0x53C3,
-    0x02EE, 0x4FE7,
-    0x02F0, 0x274C,
-    0x02F2, 0xA33A,
-    0x02F4, 0x939E,
-    0x02F6, 0x4BDF,
-    0x02F8, 0xD243,
-    0x02FA, 0x2AA1,
-    0x02FC, 0x4490,
-    0x02FE, 0x4EAB,
-    0x0300, 0xE2DA,
-    0x0302, 0xF516,
-    0x0304, 0xFC24,
-    0x0306, 0x876C,
-    0x0308, 0x7395,
-    0x030A, 0x1CDB,
-    0x030C, 0x9887,
-    0x030E, 0x5DD4,
-    0x0310, 0x5408,
-    0x0312, 0x87AD,
-    0x0314, 0xFA9A,
-    0x0316, 0xCF5A,
-    0x0318, 0x9045,
-    0x031A, 0x3AF0,
-    0x031C, 0x4FC4,
-    0x031E, 0xD580,
-    0x0320, 0x804D,
-    0x0322, 0x780B,
-    0x0324, 0x4E21,
-    0x0326, 0x7B1A,
-    0x0328, 0x00A9,
-    0x032A, 0x5C1E,
-    0x032C, 0x7ECC,
-    0x032E, 0x4378,
-    0x0330, 0x50FF,
-    0x0332, 0x6CC6,
-    0x0334, 0x1CE9,
-    0x0336, 0xEBD6,
-    0x0338, 0xED90,
-    0x033A, 0xE0CC,
-    0x033C, 0xC568,
-    0x033E, 0x6E51,
-    0x0340, 0x67F4,
-    0x0342, 0x3FC2,
-    0x0344, 0x18AC,
-    0x0346, 0x803D,
-    0x0348, 0xFFEA,
-    0x034A, 0x5AED,
-    0x034C, 0x0ED2,
-    0x034E, 0x01C7,
-    0x0350, 0x1D85,
-    0x0352, 0xF24D,
-    0x0354, 0x64CF,
-    0x0356, 0x401D,
-    0x0358, 0xC221,
-    0x035A, 0x7F36,
-    0x035C, 0x6C78,
-    0x035E, 0xCFBB,
-    0x0360, 0x59BB,
-    0x0362, 0xA749,
-    0x0364, 0x73BD,
-    0x0366, 0x5F16,
-    0x0368, 0xA8FF,
-    0x036A, 0x400D,
-    0x036C, 0x1D09,
-    0x036E, 0xA032,
-    0x0370, 0x149C,
-    0x0372, 0x5E78,
-    0x0374, 0xB484,
-    0x0376, 0x1296,
-    0x0378, 0xEA61,
-    0x037A, 0xF1C8,
-    0x037C, 0xC708,
-    0x037E, 0x591F,
-    0x0380, 0x03AA,
-    0x0382, 0xA2EA,
-    0x0384, 0x5361,
-    0x0386, 0xA649,
-    0x0388, 0xFA7C,
-    0x038A, 0x4032,
-    0x038C, 0x6538,
-    0x038E, 0xA99D,
-    0x0390, 0x4D75,
-    0x0392, 0x68F0,
-    0x0394, 0x783C,
-    0x0396, 0xC6BB,
-    0x0398, 0x56AD,
-    0x039A, 0x58A2,
-    0x039C, 0x6821,
-    0x039E, 0xF155,
-    0x03A0, 0x96A7,
-    0x03A2, 0x906D,
-    0x03A4, 0x4A4D,
-    0x03A6, 0x8394,
-    0x03A8, 0x5D89,
-    0x03AA, 0xC4DE,
-    0x03AC, 0x1224,
-    0x03AE, 0x2EBC,
-    0x03B0, 0xC2C5,
-    0x03B2, 0x1E85,
-    0x03B4, 0xCB26,
-    0x03B6, 0xC969,
-    0x03B8, 0x6897,
-    0x03BA, 0x699A,
-    0x03BC, 0xC337,
-    0x03BE, 0xA20D,
-    0x03C0, 0x0688,
-    0x03C2, 0x93AF,
-    0x03C4, 0xB5EE,
-    0x03C6, 0xB64B,
-    0x03C8, 0x07D1,
-    0x03CA, 0x7B43,
-    0x03CC, 0x1ECD,
-    0x03CE, 0x03F4,
-    0x03D0, 0x5A81,
-    0x03D2, 0x076A,
-    0x03D4, 0x7A52,
-    0x03D6, 0x6779,
-    0x03D8, 0x4688,
-    0x03DA, 0x7EA9,
-    0x03DC, 0x13E5,
-    0x03DE, 0x1F4F,
-    0x03E0, 0x9630,
-    0x03E2, 0x87CA,
-    0x03E4, 0xFE1D,
-    0x03E6, 0x256F,
-    0x03E8, 0xE66D,
-    0x03EA, 0x7FAD,
-    0x03EC, 0xFCFF,
-    0x03EE, 0x468D,
-    0x03F0, 0x722B,
-    0x03F2, 0xEEF7,
-    0x03F4, 0x9C48,
-    0x03F6, 0xC2B0,
-    0x03F8, 0x9A27,
-    0x03FA, 0x18D6,
-    0x03FC, 0x39B9,
-    0x03FE, 0xC176,
-    0x0400, 0x3AE4,
-    0x0402, 0x61D9,
-    0x0404, 0x0988,
-    0x0406, 0xEC5A,
-    0x0408, 0xBA4C,
-    0x040A, 0xD689,
-    0x040C, 0x421B,
-    0x040E, 0xAADD,
-    0x0410, 0x5882,
-    0x0412, 0x15CC,
-    0x0414, 0xC02A,
-    0x0416, 0x91B0,
-    0x0418, 0xB779,
-    0x041A, 0x203D,
-    0x041C, 0x2570,
-    0x041E, 0x5145,
-    0x0420, 0xBE00,
-    0x0422, 0x9396,
-    0x0424, 0x2E02,
-    0x0426, 0x2809,
-    0x0428, 0xC521,
-    0x042A, 0x615A,
-    0x042C, 0xA0CF,
-    0x042E, 0xE28E,
-    0x0430, 0x5258,
-    0x0432, 0xC6A6,
-    0x0434, 0x044E,
-    0x0436, 0x1B2B,
-    0x0438, 0x0F2B,
-    0x043A, 0x3542,
-    0x043C, 0x95DE,
-    0x043E, 0x9A99,
-    0x0440, 0x4774,
-    0x0442, 0xBE43,
-    0x0444, 0x9A35,
-    0x0446, 0x68EA,
-    0x0448, 0xE89A,
-    0x044A, 0xC206,
-    0x044C, 0x6C87,
-    0x044E, 0xCE50,
-    0x0450, 0x9F8B,
-    0x0452, 0x5526,
-    0x0454, 0x3F76,
-    0x0456, 0x2539,
-    0x0458, 0x8D33,
-    0x045A, 0x1DD3,
-    0x045C, 0x6260,
-    0x045E, 0x2E4D,
-    0x0460, 0x8019,
-    0x0462, 0x7EA0,
-    0x0464, 0x494A,
-    0x0466, 0x3C0E,
-    0x0468, 0x0259,
-    0x046A, 0x9811,
-    0x046C, 0x9459,
-    0x046E, 0x304E,
-    0x0470, 0x0922,
-    0x0472, 0x802D,
-    0x0474, 0xDC20,
-    0x0476, 0x6A9D,
-    0x0478, 0x7176,
-    0x047A, 0xA96B,
-    0x047C, 0x5814,
-    0x047E, 0x78F0,
-    0x0480, 0x74F9,
-    0x0482, 0x26CD,
-    0x0484, 0x3325,
-    0x0486, 0x6DF0,
-    0x0488, 0x1CA0,
-    0x048A, 0x8669,
-    0x048C, 0x9C58,
-    0x048E, 0xD04F,
-    0x0490, 0xB481,
-    0x0492, 0x7DA8,
-    0x0494, 0x1665,
-    0x0496, 0xEA44,
-    0x0498, 0x641F,
-    0x049A, 0x552B,
-    0x049C, 0xBC6D,
-    0x049E, 0xD290,
-    0x04A0, 0x0FFD,
-    0x04A2, 0x3C1A,
-    0x04A4, 0x7F34,
-    0x04A6, 0xBFB6,
-    0x04A8, 0xF538,
-    0x04AA, 0x10E9,
-    0x04AC, 0x3A6C,
-    0x04AE, 0x0FDA,
-    0x04B0, 0x16EA,
-    0x04B2, 0xD25E,
-    0x04B4, 0x0239,
-    0x04B6, 0xFD5E,
-    0x04B8, 0xDB1B,
-    0x04BA, 0xF0CC,
-    0x04BC, 0x99F5,
-    0x04BE, 0xCBEC,
-    0x04C0, 0x9997,
-    0x04C2, 0x483C,
-    0x04C4, 0x20B5,
-    0x04C6, 0xB406,
-    0x04C8, 0x5F41,
-    0x04CA, 0x8ACB,
-    0x04CC, 0x55F7,
-    0x04CE, 0x2D67,
-    0x04D0, 0x0C1A,
-    0x04D2, 0x37D3,
-    0x04D4, 0x8ED8,
-    0x04D6, 0x2DAF,
-    0x04D8, 0x26E6,
-    0x04DA, 0x2EDB,
-    0x04DC, 0xB8D6,
-    0x04DE, 0x891E,
-    0x04E0, 0xBAD1,
-    0x04E2, 0xE130,
-    0x04E4, 0x64C5,
-    0x04E6, 0xBC5E,
-    0x04E8, 0x5BA4,
-    0x04EA, 0xB879,
-    0x04EC, 0x31F8,
-    0x04EE, 0xA441,
-    0x04F0, 0x974D,
-    0x04F2, 0xD714,
-    0x04F4, 0xC091,
-    0x04F6, 0xD3EA,
-    0x04F8, 0x640E,
-    0x04FA, 0xEB2D,
-    0x04FC, 0xC4AA,
-    0x04FE, 0x6B5C,
-    0x0500, 0xE026,
-    0x0502, 0x8C8D,
-    0x0504, 0x1B9D,
-    0x0506, 0x75C0,
-    0x0508, 0x934C,
-    0x050A, 0x541A,
-    0x050C, 0x7935,
-    0x050E, 0x93CA,
-    0x0510, 0x8C29,
-    0x0512, 0x3974,
-    0x0514, 0x1C57,
-    0x0516, 0x4438,
-    0x0518, 0xD9E1,
-    0x051A, 0xC0E8,
-    0x051C, 0x8C85,
-    0x051E, 0x62B6,
-    0x0520, 0xD016,
-    0x0522, 0x0C61,
-    0x0524, 0x69F9,
-    0x0526, 0x087F,
-    0x0528, 0xC10A,
-    0x052A, 0xE420,
-    0x052C, 0x28DF,
-    0x052E, 0xF336,
-    0x0530, 0xC6E0,
-    0x0532, 0x0C30,
-    0x0534, 0xA8C6,
-    0x0536, 0x80C9,
-    0x0538, 0x9DAC,
-    0x053A, 0xBF25,
-    0x053C, 0xE036,
-    0x053E, 0x01ED,
-    0x0540, 0x8130,
-    0x0542, 0x7150,
-    0x0544, 0xC212,
-    0x0546, 0xC122,
-    0x0548, 0x11C5,
-    0x054A, 0x0AEB,
-    0x054C, 0xF495,
-    0x054E, 0x2514,
-    0x0550, 0xC95C,
-    0x0552, 0x56CB,
-    0x0554, 0xEE5E,
-    0x0556, 0xC09B,
-    0x0558, 0xD133,
-    0x055A, 0x12C9,
-    0x055C, 0x3096,
-    0x055E, 0xA20D,
-    0x0560, 0x0292,
-    0x0562, 0xC8DE,
-    0x0564, 0x9227,
-    0x0566, 0xBDF8,
-    0x0568, 0xDCFD,
-    0x056A, 0x3DB7,
-    0x056C, 0xF0A1,
-    0x056E, 0xF85E,
-    0x0570, 0x2FAC,
-    0x0572, 0x9DE7,
-    0x0574, 0xC134,
-    0x0576, 0xB205,
-    0x0578, 0xDDF8,
-    0x057A, 0x6D17,
-    0x057C, 0x3BED,
-    0x057E, 0x8DD8,
-    0x0580, 0xB263,
-    0x0582, 0x5A9E,
-    0x0584, 0x67EE,
-    0x0586, 0x7770,
-    0x0588, 0x58FE,
-    0x058A, 0x8810,
-    0x058C, 0xFBBB,
-    0x058E, 0xEFE3,
-    0x0590, 0x2BFF,
-    0x0592, 0x9A56,
-    0x0594, 0x9886,
-    0x0596, 0xCA7A,
-    0x0598, 0xA206,
-    0x059A, 0xE1E9,
-    0x059C, 0x766A,
-    0x059E, 0x28DA,
-    0x05A0, 0x4898,
-    0x05A2, 0x3AB9,
-    0x05A4, 0xD0EE,
-    0x05A6, 0x7E5C,
-    0x05A8, 0x9BA7,
-    0x05AA, 0x9A33,
-    0x05AC, 0x1670,
-    0x05AE, 0xF092,
-    0x05B0, 0xA74A,
-    0x05B2, 0x275A,
-    0x05B4, 0x232A,
-    0x05B6, 0x1249,
-    0x05B8, 0xC350,
-    0x05BA, 0x1145,
-    0x05BC, 0xED0F,
-    0x05BE, 0x19B6,
-    0x05C0, 0x0D35,
-    0x05C2, 0xCC8B,
-    0x05C4, 0x78A5,
-    0x05C6, 0xCA4B,
-    0x05C8, 0x933E,
-    0x05CA, 0x6E54,
-    0x05CC, 0x1BF7,
-    0x05CE, 0x6BB9,
-    0x05D0, 0x058C,
-    0x05D2, 0xBAD2,
-    0x05D4, 0x28D4,
-    0x05D6, 0x79E0,
-    0x05D8, 0xBCA0,
-    0x05DA, 0x02D3,
-    0x05DC, 0xC4C4,
-    0x05DE, 0xCAC7,
-    0x05E0, 0x01E2,
-    0x05E2, 0x1305,
-    0x05E4, 0x39FC,
-    0x05E6, 0x5AC3,
-    0x05E8, 0x6176,
-    0x05EA, 0xDC30,
-    0x05EC, 0xF24C,
-    0x05EE, 0xB4C0,
-    0x05F0, 0x1CEB,
-    0x05F2, 0x49B1,
-    0x05F4, 0x9CFA,
-    0x05F6, 0x6B04,
-    0x05F8, 0xF51C,
-    0x05FA, 0xAC09,
-    0x05FC, 0xD193,
-    0x05FE, 0x4BC4,
-    0x0600, 0x2AEF,
-    0x0602, 0xFC02,
-    0x0604, 0x8E9F,
-    0x0606, 0x6DE5,
-    0x0608, 0xFAF0,
-    0x060A, 0xD3D4,
-    0x060C, 0x8A2E,
-    0x060E, 0xB0B7,
-    0x0610, 0x3574,
-    0x0612, 0x0B14,
-    0x0614, 0xD1A2,
-    0x0616, 0xB6E5,
-    0x0618, 0xB90A,
-    0x061A, 0xCD8D,
-    0x061C, 0x4CB1,
-    0x061E, 0xC6ED,
-    0x0620, 0x994E,
-    0x0622, 0xCA09,
-    0x0624, 0xAA89,
-    0x0626, 0xE1E2,
-    0x0628, 0xE019,
-    0x062A, 0x1B4C,
-    0x062C, 0xDD5F,
-    0x062E, 0x33F5,
-    0x0630, 0xC409,
-    0x0632, 0xC994,
-    0x0634, 0xD231,
-    0x0636, 0x9F08,
-    0x0638, 0xECAD,
-    0x063A, 0xD54E,
-    0x063C, 0x6D45,
-    0x063E, 0x2B30,
-    0x0640, 0xECC0,
-    0x0642, 0xD5ED,
-    0x0644, 0xA0D1,
-    0x0646, 0x4B6F,
-    0x0648, 0x2042,
-    0x064A, 0xF720,
-    0x064C, 0x8202,
-    0x064E, 0x15F6,
-    0x0650, 0x8F0C,
-    0x0652, 0x48E7,
-    0x0654, 0xF956,
-    0x0656, 0x4683,
-    0x0658, 0xC789,
-    0x065A, 0xACBD,
-    0x065C, 0x2DB1,
-    0x065E, 0xCF0B,
-    0x0660, 0xC74B,
-    0x0662, 0x2BA9,
-    0x0664, 0x61A2,
-    0x0666, 0xD057,
-    0x0668, 0xA27B,
-    0x066A, 0x8C3A,
-    0x066C, 0x264A,
-    0x066E, 0x035B,
-    0x0670, 0x8039,
-    0x0672, 0x8D29,
-    0x0674, 0xB89B,
-    0x0676, 0x22D9,
-    0x0678, 0x26B0,
-    0x067A, 0xC9F6,
-    0x067C, 0xCA5D,
-    0x067E, 0x8F8B,
-    0x0680, 0xDBCE,
-    0x0682, 0xB380,
-    0x0684, 0x2B06,
-    0x0686, 0x4D7F,
-    0x0688, 0x9580,
-    0x068A, 0xE4B6,
-    0x068C, 0x8B9F,
-    0x068E, 0xC198,
-    0x0690, 0x6F72,
-    0x0692, 0x3157,
-    0x0694, 0x5D64,
-    0x0696, 0x07A0,
-    0x0698, 0xE198,
-    0x069A, 0x1B0F,
-    0x069C, 0x6E8F,
-    0x069E, 0xA5EE,
-    0x06A0, 0x6BF1,
-    0x06A2, 0x0386,
-    0x06A4, 0x00B9,
-    0x06A6, 0xE6AA,
-    0x06A8, 0xBE32,
-    0x06AA, 0x7F0C,
-    0x06AC, 0x1F88,
-    0x06AE, 0xAF5A,
-    0x06B0, 0xF38F,
-    0x06B2, 0x23DD,
-    0x06B4, 0x81AE,
-    0x06B6, 0x7F97,
-    0x06B8, 0x3ED6,
-    0x06BA, 0xCA0D,
-    0x06BC, 0xD71A,
-    0x06BE, 0x1355,
-    0x06C0, 0x5DC2,
-    0x06C2, 0x820B,
-    0x06C4, 0xEE33,
-    0x06C6, 0x7911,
-    0x06C8, 0x027A,
-    0x06CA, 0xE598,
-    0x06CC, 0x90CD,
-    0x06CE, 0x31F6,
-    0x06D0, 0x201B,
-    0x06D2, 0x254B,
-    0x06D4, 0x889B,
-    0x06D6, 0x81ED,
-    0x06D8, 0x7EB4,
-    0x06DA, 0x5AC9,
-    0x06DC, 0x7366,
-    0x06DE, 0x99BA,
-    0x06E0, 0x21ED,
-    0x06E2, 0x0155,
-    0x06E4, 0x4B3A,
-    0x06E6, 0xF2AD,
-    0x06E8, 0x4D1D,
-    0x06EA, 0x85E2,
-    0x06EC, 0xFCCD,
-    0x06EE, 0x3AE7,
-    0x06F0, 0x2B8D,
-    0x06F2, 0x2E43,
-    0x06F4, 0x128C,
-    0x06F6, 0x46EE,
-    0x06F8, 0x9732,
-    0x06FA, 0xDDDE,
-    0x06FC, 0x1F7B,
-    0x06FE, 0xC0E6,
-    0x0700, 0x4977,
-    0x0702, 0x6386,
-    0x0704, 0xF483,
-    0x0706, 0xEC05,
-    0x0708, 0x3957,
-    0x070A, 0x5B2E,
-    0x070C, 0x5E48,
-    0x070E, 0x56CE,
-    0x0710, 0x4BF1,
-    0x0712, 0xD19F,
-    0x0714, 0x2657,
-    0x0716, 0x2484,
-    0x0718, 0x3B0A,
-    0x071A, 0x7C70,
-    0x071C, 0xF884,
-    0x071E, 0x184B,
-    0x0720, 0xE7CC,
-    0x0722, 0x135B,
-    0x0724, 0x6571,
-    0x0726, 0x4A10,
-    0x0728, 0x0377,
-    0x072A, 0x0EB4,
-    0x072C, 0x518D,
-    0x072E, 0x9A47,
-    0x0730, 0x0304,
-    0x0732, 0x3BCB,
-    0x0734, 0x8226,
-    0x0736, 0x1931,
-    0x0738, 0xBD07,
-    0x073A, 0x25BE,
-    0x073C, 0x558B,
-    0x073E, 0x30AF,
-    0x0740, 0xF681,
-    0x0742, 0x3EF0,
-    0x0744, 0x0494,
-    0x0746, 0x4311,
-    0x0748, 0x77B5,
-    0x074A, 0x307A,
-    0x074C, 0x90F4,
-    0x074E, 0xEEAD,
-    0x0750, 0xE429,
-    0x0752, 0x5593,
-    0x0754, 0x4974,
-    0x0756, 0x1BAE,
-    0x0758, 0xF955,
-    0x075A, 0x677B,
-    0x075C, 0xB653,
-    0x075E, 0xD3B0,
-    0x0760, 0x7B2E,
-    0x0762, 0x12A1,
-    0x0764, 0xD02E,
-    0x0766, 0x9C5D,
-    0x0768, 0x8F60,
-    0x076A, 0x2F69,
-    0x076C, 0x5076,
-    0x076E, 0xCA89,
-    0x0770, 0x5036,
-    0x0772, 0xBE4C,
-    0x0774, 0x5996,
-    0x0776, 0xCCEA,
-    0x0778, 0x3D2F,
-    0x077A, 0x51C5,
-    0x077C, 0xBC8C,
-    0x077E, 0x5374,
-    0x0780, 0x5B83,
-    0x0782, 0x4006,
-    0x0784, 0x2CBB,
-    0x0786, 0xE4D9,
-    0x0788, 0xA555,
-    0x078A, 0xCD05,
-    0x078C, 0x7BBC,
-    0x078E, 0xF47A,
-    0x0790, 0xACA0,
-    0x0792, 0x9E19,
-    0x0794, 0xBA1F,
-    0x0796, 0x6CC0,
-    0x0798, 0x4115,
-    0x079A, 0x8EDF,
-    0x079C, 0x4BAA,
-    0x079E, 0x75B1,
-    0x07A0, 0x8576,
-    0x07A2, 0x3798,
-    0x07A4, 0x0041,
-    0x07A6, 0x357E,
-    0x07A8, 0x1759,
-    0x07AA, 0xC6B4,
-    0x07AC, 0x28D5,
-    0x07AE, 0x8D4B,
-    0x07B0, 0xE8B8,
-    0x07B2, 0x1DDA,
-    0x07B4, 0x3AD5,
-    0x07B6, 0x5356,
-    0x07B8, 0xA937,
-    0x07BA, 0xF1BE,
-    0x07BC, 0xB42C,
-    0x07BE, 0x51C8,
-    0x07C0, 0x9BFA,
-    0x07C2, 0xC1D5,
-    0x07C4, 0xC769,
-    0x07C6, 0xAD84,
-    0x07C8, 0x9143,
-    0x07CA, 0x619C,
-    0x07CC, 0x99BD,
-    0x07CE, 0x850A,
-    0x07D0, 0xA58F,
-    0x07D2, 0x1EF5,
-    0x07D4, 0x045C,
-    0x07D6, 0xBB50,
-    0x07D8, 0x4DCF,
-    0x07DA, 0x995C,
-    0x07DC, 0x1508,
-    0x07DE, 0x040A,
-    0x07E0, 0x8C3E,
-    0x07E2, 0x5DB2,
-    0x07E4, 0x8770,
-    0x07E6, 0x9226,
-    0x07E8, 0x82D0,
-    0x07EA, 0x48D2,
-    0x07EC, 0x9BB1,
-    0x07EE, 0x3A74,
-    0x07F0, 0xB306,
-    0x07F2, 0xAE52,
-    0x07F4, 0x094C,
-    0x07F6, 0xFB47,
-    0x07F8, 0xCEE9,
-    0x07FA, 0xEC43,
-    0x07FC, 0x9693,
-    0x07FE, 0x7471,
-    0x0800, 0xEAFE,
-    0x0802, 0x8B1D,
-    0x0804, 0x3919,
-    0x0806, 0x62E3,
-    0x0808, 0x76E0,
-    0x080A, 0x1BEE,
-    0x080C, 0x014D,
-    0x080E, 0xBF76,
-    0x0810, 0x18CB,
-    0x0812, 0x0024,
-    0x0814, 0x37EE,
-    0x0816, 0xE64F,
-    0x0818, 0x9AAF,
-    0x081A, 0xDBD9,
-    0x081C, 0xA12D,
-    0x081E, 0x428A,
-    0x0820, 0xCD29,
-    0x0822, 0x6F55,
-    0x0824, 0x25B2,
-    0x0826, 0x599D,
-    0x0828, 0x9200,
-    0x082A, 0xD75E,
-    0x082C, 0x993B,
-    0x082E, 0x3B01,
-    0x0830, 0x756E,
-    0x0832, 0x60DC,
-    0x0834, 0x6722,
-    0x0836, 0x1454,
-    0x0838, 0xD3A6,
-    0x083A, 0xB19B,
-    0x083C, 0x5518,
-    0x083E, 0x3780,
-    0x0840, 0x9A97,
-    0x0842, 0xCB93,
-    0x0844, 0xFC66,
-    0x0846, 0x3A1E,
-    0x0848, 0x61E4,
-    0x084A, 0x33F0,
-    0x084C, 0xBA46,
-    0x084E, 0xA5C7,
-    0x0850, 0xAE6B,
-    0x0852, 0x3F59,
-    0x0854, 0x215A,
-    0x0856, 0x3908,
-    0x0858, 0x3994,
-    0x085A, 0x40BA,
-    0x085C, 0x115D,
-    0x085E, 0x3F5A,
-    0x0860, 0xCED7,
-    0x0862, 0xFE54,
-    0x0864, 0x0300,
-    0x0866, 0xE9DF,
-    0x0868, 0x0B70,
-    0x086A, 0xC433,
-    0x086C, 0x7CDF,
-    0x086E, 0xF44F,
-    0x0870, 0x8A67,
-    0x0872, 0x1DC4,
-    0x0874, 0xA5DA,
-    0x0876, 0x6754,
-    0x0878, 0xC6B0,
-    0x087A, 0x5675,
-    0x087C, 0x41C6,
-    0x087E, 0x3FAC,
-    0x0880, 0xCB67,
-    0x0882, 0x83B5,
-    0x0884, 0xCC94,
-    0x0886, 0xE348,
-    0x0888, 0x3AE3,
-    0x088A, 0xBA32,
-    0x088C, 0xA441,
-    0x088E, 0x80A4,
-    0x0890, 0x4833,
-    0x0892, 0xC910,
-    0x0894, 0xE680,
-    0x0896, 0x1CF5,
-    0x0898, 0x0B9B,
-    0x089A, 0x4D94,
-    0x089C, 0x08B2,
-    0x089E, 0xD16A,
-    0x08A0, 0x7024,
-    0x08A2, 0x11ED,
-    0x08A4, 0xB03A,
-    0x08A6, 0x3CC3,
-    0x08A8, 0x2FAE,
-    0x08AA, 0xD96D,
-    0x08AC, 0x9705,
-    0x08AE, 0x183F,
-    0x08B0, 0xC5F2,
-    0x08B2, 0xF3E8,
-    0x08B4, 0xC2EC,
-    0x08B6, 0xD52F,
-    0x08B8, 0x0DEA,
-    0x08BA, 0x4C5E,
-    0x08BC, 0xE80D,
-    0x08BE, 0x831D,
-    0x08C0, 0xB4D6,
-    0x08C2, 0x788C,
-    0x08C4, 0xC7F2,
-    0x08C6, 0x3C9E,
-    0x08C8, 0x0142,
-    0x08CA, 0x1D16,
-    0x08CC, 0x00FB,
-    0x08CE, 0x7AC0,
-    0x08D0, 0x183F,
-    0x08D2, 0xA48F,
-    0x08D4, 0xBC43,
-    0x08D6, 0x5D3F,
-    0x08D8, 0x18B8,
-    0x08DA, 0xD665,
-    0x08DC, 0x5173,
-    0x08DE, 0x6EF5,
-    0x08E0, 0x0C72,
-    0x08E2, 0x8D21,
-    0x08E4, 0xDC55,
-    0x08E6, 0x224B,
-    0x08E8, 0x860D,
-    0x08EA, 0xCB81,
-    0x08EC, 0x0F2A,
-    0x08EE, 0x7047,
-    0x08F0, 0x58E8,
-    0x08F2, 0x1422,
-    0x08F4, 0x5EC8,
-    0x08F6, 0xE6F2,
-    0x08F8, 0x2DF4,
-    0x08FA, 0x8371,
-    0x08FC, 0x1155,
-    0x08FE, 0x4B8D,
-    0x0900, 0xE031,
-    0x0902, 0x176F,
-    0x0904, 0xACFB,
-    0x0906, 0x3623,
-    0x0908, 0x3354,
-    0x090A, 0xC87A,
-    0x090C, 0xB016,
-    0x090E, 0x4E54,
-    0x0910, 0xE73A,
-    0x0912, 0x43C5,
-    0x0914, 0x619B,
-    0x0916, 0x6610,
-    0x0918, 0xBEBB,
-    0x091A, 0x5F15,
-    0x091C, 0xF875,
-    0x091E, 0xD605,
-    0x0920, 0x39C0,
-    0x0922, 0xE289,
-    0x0924, 0xFD9C,
-    0x0926, 0x7536,
-    0x0928, 0x584E,
-    0x092A, 0xFFFD,
-    0x092C, 0x4BB9,
-    0x092E, 0xF9AB,
-    0x0930, 0xB2F3,
-    0x0932, 0x2DEE,
-    0x0934, 0x7E8C,
-    0x0936, 0x13B5,
-    0x0938, 0xF87A,
-    0x093A, 0x9196,
-    0x093C, 0x65E3,
-    0x093E, 0x6095,
-    0x0940, 0x4AC8,
-    0x0942, 0x1053,
-    0x0944, 0x5C29,
-    0x0946, 0xEFA4,
-    0x0948, 0xB54E,
-    0x094A, 0x5B72,
-    0x094C, 0x8028,
-    0x094E, 0x38BB,
-    0x0950, 0x586F,
-    0x0952, 0x25A4,
-    0x0954, 0x1287,
-    0x0956, 0x3934,
-    0x0958, 0xC4ED,
-    0x095A, 0x51D7,
-    0x095C, 0x5A55,
-    0x095E, 0xBE16,
-    0x0960, 0x94A2,
-    0x0962, 0xD9BB,
-    0x0964, 0xF6F5,
-    0x0966, 0x7DDD,
-    0x0968, 0x46E0,
-    0x096A, 0x5C6E,
-    0x096C, 0x43D1,
-    0x096E, 0xB205,
-    0x0970, 0x1542,
-    0x0972, 0x8517,
-    0x0974, 0xEE63,
-    0x0976, 0xC284,
-    0x0978, 0xDB43,
-    0x097A, 0x4994,
-    0x097C, 0xB650,
-    0x097E, 0x34E3,
-    0x0980, 0x6A7E,
-    0x0982, 0x1BC4,
-    0x0984, 0x4366,
-    0x0986, 0x15CD,
-    0x0988, 0xAC53,
-    0x098A, 0xF0DB,
-    0x098C, 0xACAB,
-    0x098E, 0xD429,
-    0x0990, 0x0B3D,
-    0x0992, 0x3084,
-    0x0994, 0x860B,
-    0x0996, 0x7F90,
-    0x0998, 0x0F73,
-    0x099A, 0x2B62,
-    0x099C, 0x0F63,
-    0x099E, 0xB517,
-    0x09A0, 0xC60E,
-    0x09A2, 0x1CCF,
-    0x09A4, 0x5573,
-    0x09A6, 0x6A14,
-    0x09A8, 0x4BC6,
-    0x09AA, 0x19E5,
-    0x09AC, 0x07F1,
-    0x09AE, 0x5706,
-    0x09B0, 0xDD1E,
-    0x09B2, 0x2463,
-    0x09B4, 0x7810,
-    0x09B6, 0xFBBE,
-    0x09B8, 0xF5B4,
-    0x09BA, 0x9628,
-    0x09BC, 0xDB1D,
-    0x09BE, 0x2A74,
-    0x09C0, 0xEF6B,
-    0x09C2, 0x1289,
-    0x09C4, 0x40FA,
-    0x09C6, 0x9C38,
-    0x09C8, 0x1535,
-    0x09CA, 0xD047,
-    0x09CC, 0x69BB,
-    0x09CE, 0xB14D,
-    0x09D0, 0x6D39,
-    0x09D2, 0x7173,
-    0x09D4, 0x0088,
-    0x09D6, 0xC315,
-    0x09D8, 0xB611,
-    0x09DA, 0x8E4F,
-    0x09DC, 0xABFF,
-    0x09DE, 0x0D2D,
-    0x09E0, 0x8094,
-    0x09E2, 0xD989,
-    0x09E4, 0x340F,
-    0x09E6, 0xA76E,
-    0x09E8, 0xD1F4,
-    0x09EA, 0xA50F,
-    0x09EC, 0x1EF0,
-    0x09EE, 0xFFB5,
-    0x09F0, 0x4CBB,
-    0x09F2, 0xB60A,
-    0x09F4, 0xC75B,
-    0x09F6, 0x445D,
-    0x09F8, 0x8570,
-    0x09FA, 0xD57A,
-    0x09FC, 0x745C,
-    0x09FE, 0xE984,
-    0x0A00, 0x99AA,
-    0x0A02, 0x7633,
-    0x0A04, 0x7EAF,
-    0x0A06, 0x8FB2,
-    0x0A08, 0x5222,
-    0x0A0A, 0xD0F7,
-    0x0A0C, 0x2CC1,
-    0x0A0E, 0xFABF,
-    0x0A10, 0x9074,
-    0x0A12, 0xA45C,
-    0x0A14, 0x6FD2,
-    0x0A16, 0xB308,
-    0x0A18, 0x9B0C,
-    0x0A1A, 0x1675,
-    0x0A1C, 0xB43B,
-    0x0A1E, 0xD281,
-    0x0A20, 0x5958,
-    0x0A22, 0x818B,
-    0x0A24, 0x528E,
-    0x0A26, 0xB94C,
-    0x0A28, 0xF60D,
-    0x0A2A, 0x9C62,
-    0x0A2C, 0x4621,
-    0x0A2E, 0xDF64,
-    0x0A30, 0x5F07,
-    0x0A32, 0x7F6B,
-    0x0A34, 0x3236,
-    0x0A36, 0xFFE1,
-    0x0A38, 0x6DB9,
-    0x0A3A, 0xDA02,
-    0x0A3C, 0x918E,
-    0x0A3E, 0x12FE,
-    0x0A40, 0x13BB,
-    0x0A42, 0x7441,
-    0x0A44, 0x4CFA,
-    0x0A46, 0xA455,
-    0x0A48, 0x467D,
-    0x0A4A, 0x87CD,
-    0x0A4C, 0x9D74,
-    0x0A4E, 0x6160,
-    0x0A50, 0xC477,
-    0x0A52, 0x0879,
-    0x0A54, 0xC6D1,
-    0x0A56, 0xCD76,
-    0x0A58, 0x8786,
-    0x0A5A, 0xD9E4,
-    0x0A5C, 0xDBCD,
-    0x0A5E, 0x178C,
-    0x0A60, 0x9C5B,
-    0x0A62, 0xE0EF,
-    0x0A64, 0xDFCF,
-    0x0A66, 0xC3D7,
-    0x0A68, 0xAA64,
-    0x0A6A, 0x84E4,
-    0x0A6C, 0x00C7,
-    0x0A6E, 0x4D39,
-    0x0A70, 0x895A,
-    0x0A72, 0xCF71,
-    0x0A74, 0xCE0D,
-    0x0A76, 0x68EE,
-    0x0A78, 0xE58C,
-    0x0A7A, 0xCADF,
-    0x0A7C, 0x64CA,
-    0x0A7E, 0xE43F,
-    0x0A80, 0x3809,
-    0x0A82, 0xCA64,
-    0x0A84, 0x807A,
-    0x0A86, 0x5235,
-    0x0A88, 0x6BD2,
-    0x0A8A, 0x9D45,
-    0x0A8C, 0x2420,
-    0x0A8E, 0x6B6B,
-    0x0A90, 0x8BD1,
-    0x0A92, 0x9B90,
-    0x0A94, 0x8F01,
-    0x0A96, 0xCE41,
-    0x0A98, 0x3DBE,
-    0x0A9A, 0x98B1,
-    0x0A9C, 0x3794,
-    0x0A9E, 0x12DA,
-    0x0AA0, 0xD298,
-    0x0AA2, 0x3CFC,
-    0x0AA4, 0x2464,
-    0x0AA6, 0x08AC,
-    0x0AA8, 0x7D26,
-    0x0AAA, 0x9108,
-    0x0AAC, 0xB101,
-    0x0AAE, 0x2978,
-    0x0AB0, 0x3738,
-    0x0AB2, 0x0E08,
-    0x0AB4, 0x3732,
-    0x0AB6, 0xE50A,
-    0x0AB8, 0xCE62,
-    0x0ABA, 0x55C0,
-    0x0ABC, 0x08DD,
-    0x0ABE, 0xE874,
-    0x0AC0, 0x5AF6,
-    0x0AC2, 0x5433,
-    0x0AC4, 0x335F,
-    0x0AC6, 0x052E,
-    0x0AC8, 0xB6E9,
-    0x0ACA, 0x0CE8,
-    0x0ACC, 0x749D,
-    0x0ACE, 0x5637,
-    0x0AD0, 0x9AF3,
-    0x0AD2, 0x848B,
-    0x0AD4, 0x9001,
-    0x0AD6, 0xFDA1,
-    0x0AD8, 0x3035,
-    0x0ADA, 0x1205,
-    0x0ADC, 0x128C,
-    0x0ADE, 0x97EA,
-    0x0AE0, 0xE40E,
-    0x0AE2, 0xF8EA,
-    0x0AE4, 0x3D95,
-    0x0AE6, 0xAE42,
-    0x0AE8, 0xA932,
-    0x0AEA, 0x87FF,
-    0x0AEC, 0x0C5E,
-    0x0AEE, 0x0EA8,
-    0x0AF0, 0x7E33,
-    0x0AF2, 0x0D13,
-    0x0AF4, 0xCB1C,
-    0x0AF6, 0x9FAF,
-    0x0AF8, 0xEA36,
-    0x0AFA, 0x8F20,
-    0x0AFC, 0xCE97,
-    0x0AFE, 0x6F00,
-    0x0B00, 0xB847,
-    0x0B02, 0x4CB9,
-    0x0B04, 0xA902,
-    0x0B06, 0x67F3,
-    0x0B08, 0x3217,
-    0x0B0A, 0x9A2B,
-    0x0B0C, 0xD195,
-    0x0B0E, 0xDA84,
-    0x0B10, 0x16CA,
-    0x0B12, 0x51F1,
-    0x0B14, 0x0A4A,
-    0x0B16, 0x063E,
-    0x0B18, 0x7620,
-    0x0B1A, 0x1116,
-    0x0B1C, 0x207B,
-    0x0B1E, 0x5A91,
-    0x0B20, 0x44EA,
-    0x0B22, 0xAE6A,
-    0x0B24, 0xD318,
-    0x0B26, 0x2BDB,
-    0x0B28, 0x1015,
-    0x0B2A, 0x29F0,
-    0x0B2C, 0x2A02,
-    0x0B2E, 0x2633,
-    0x0B30, 0x54C5,
-    0x0B32, 0x0797,
-    0x0B34, 0x2109,
-    0x0B36, 0xBA8B,
-    0x0B38, 0x39E5,
-    0x0B3A, 0x601A,
-    0x0B3C, 0x6918,
-    0x0B3E, 0x1BCB,
-    0x0B40, 0xBCEF,
-    0x0B42, 0x51D1,
-    0x0B44, 0x376E,
-    0x0B46, 0xAD2C,
-    0x0B48, 0x1603,
-    0x0B4A, 0xD7BB,
-    0x0B4C, 0x7810,
-    0x0B4E, 0xED0B,
-    0x0B50, 0x13DB,
-    0x0B52, 0x9C7E,
-    0x0B54, 0x3DB8,
-    0x0B56, 0x327A,
-    0x0B58, 0xBFC1,
-    0x0B5A, 0xD26D,
-    0x0B5C, 0xCA73,
-    0x0B5E, 0x9BFE,
-    0x0B60, 0xFD47,
-    0x0B62, 0x921A,
-    0x0B64, 0x5365,
-    0x0B66, 0xE6DF,
-    0x0B68, 0x69C4,
-    0x0B6A, 0x03D2,
-    0x0B6C, 0xCB09,
-    0x0B6E, 0x5C1F,
-    0x0B70, 0x9D06,
-    0x0B72, 0x26B4,
-    0x0B74, 0xA2BE,
-    0x0B76, 0x04AF,
-    0x0B78, 0x3FD8,
-    0x0B7A, 0x5636,
-    0x0B7C, 0x1C9B,
-    0x0B7E, 0x7897,
-    0x0B80, 0xA732,
-    0x0B82, 0x79C3,
-    0x0B84, 0x0AF9,
-    0x0B86, 0x8E98,
-    0x0B88, 0x34FB,
-    0x0B8A, 0xCBFB,
-    0x0B8C, 0x6EF6,
-    0x0B8E, 0xEBAC,
-    0x0B90, 0x99C9,
-    0x0B92, 0x54C2,
-    0x0B94, 0x4BA5,
-    0x0B96, 0x8219,
-    0x0B98, 0xAC76,
-    0x0B9A, 0xCD1F,
-    0x0B9C, 0xB43D,
-    0x0B9E, 0x27A3,
-    0x0BA0, 0xD3FE,
-    0x0BA2, 0xF219,
-    0x0BA4, 0x4AE5,
-    0x0BA6, 0x189B,
-    0x0BA8, 0xBDDA,
-    0x0BAA, 0x1F9B,
-    0x0BAC, 0x384C,
-    0x0BAE, 0xEEA8,
-    0x0BB0, 0x5D6B,
-    0x0BB2, 0x1412,
-    0x0BB4, 0xB9C9,
-    0x0BB6, 0x1532,
-    0x0BB8, 0x07FC,
-    0x0BBA, 0x250F,
-    0x0BBC, 0xE0D5,
-    0x0BBE, 0x21B9,
-    0x0BC0, 0x29C1,
-    0x0BC2, 0xB54A,
-    0x0BC4, 0x4329,
-    0x0BC6, 0x457C,
-    0x0BC8, 0xF6AF,
-    0x0BCA, 0x5AC3,
-    0x0BCC, 0xE876,
-    0x0BCE, 0xB481,
-    0x0BD0, 0xFB92,
-    0x0BD2, 0x73DD,
-    0x0BD4, 0x0E5B,
-    0x0BD6, 0xD923,
-    0x0BD8, 0x98F0,
-    0x0BDA, 0x8C83,
-    0x0BDC, 0x98BE,
-    0x0BDE, 0x4EA8,
-    0x0BE0, 0x93E6,
-    0x0BE2, 0x2C7A,
-    0x0BE4, 0xC91B,
-    0x0BE6, 0x61AA,
-    0x0BE8, 0x4F03,
-    0x0BEA, 0x540A,
-    0x0BEC, 0xB0AB,
-    0x0BEE, 0x8E91,
-    0x0BF0, 0x4C67,
-    0x0BF2, 0x2CF7,
-    0x0BF4, 0xEE69,
-    0x0BF6, 0x2C93,
-    0x0BF8, 0xD2B7,
-    0x0BFA, 0x512D,
-    0x0BFC, 0x104E,
-    0x0BFE, 0xE5C8,
-    0x0C00, 0x6827,
-    0x0C02, 0xC82F,
-    0x0C04, 0x8F88,
-    0x0C06, 0xB487,
-    0x0C08, 0x066B,
-    0x0C0A, 0x9668,
-    0x0C0C, 0x6D2D,
-    0x0C0E, 0x0E72,
-    0x0C10, 0x0DEE,
-    0x0C12, 0xDB72,
-    0x0C14, 0x9425,
-    0x0C16, 0x6CF0,
-    0x0C18, 0xAE4E,
-    0x0C1A, 0x99EF,
-    0x0C1C, 0x4D17,
-    0x0C1E, 0xC9DA,
-    0x0C20, 0x0265,
-    0x0C22, 0x9D64,
-    0x0C24, 0x973F,
-    0x0C26, 0x06F2,
-    0x0C28, 0x5FEA,
-    0x0C2A, 0xB583,
-    0x0C2C, 0xEA27,
-    0x0C2E, 0x16B2,
-    0x0C30, 0x8769,
-    0x0C32, 0xD6CD,
-    0x0C34, 0xF0E9,
-    0x0C36, 0xCF91,
-    0x0C38, 0xB241,
-    0x0C3A, 0x9E74,
-    0x0C3C, 0x353F,
-    0x0C3E, 0x4E26,
-    0x0C40, 0x9159,
-    0x0C42, 0x390E,
-    0x0C44, 0x3A25,
-    0x0C46, 0x79DE,
-    0x0C48, 0x8643,
-    0x0C4A, 0xCA74,
-    0x0C4C, 0x6F07,
-    0x0C4E, 0x2BC9,
-    0x0C50, 0x042C,
-    0x0C52, 0xE6D6,
-    0x0C54, 0x2720,
-    0x0C56, 0x6774,
-    0x0C58, 0x377E,
-    0x0C5A, 0x51FC,
-    0x0C5C, 0x3651,
-    0x0C5E, 0x2C6E,
-    0x0C60, 0x85B6,
-    0x0C62, 0xCEBB,
-    0x0C64, 0xC198,
-    0x0C66, 0x9DC9,
-    0x0C68, 0x2CF7,
-    0x0C6A, 0x2DB4,
-    0x0C6C, 0x462C,
-    0x0C6E, 0x29CD,
-    0x0C70, 0x2742,
-    0x0C72, 0xE006,
-    0x0C74, 0x45C4,
-    0x0C76, 0x73BA,
-    0x0C78, 0x25B5,
-    0x0C7A, 0x8E1E,
-    0x0C7C, 0x3556,
-    0x0C7E, 0x1622,
-    0x0C80, 0xEBCC,
-    0x0C82, 0xF7F5,
-    0x0C84, 0x090A,
-    0x0C86, 0xC07B,
-    0x0C88, 0x8312,
-    0x0C8A, 0xE095,
-    0x0C8C, 0x79C9,
-    0x0C8E, 0x7D9A,
-    0x0C90, 0x74B0,
-    0x0C92, 0xE92C,
-    0x0C94, 0xE746,
-    0x0C96, 0x71E4,
-    0x0C98, 0xDFFC,
-    0x0C9A, 0x7849,
-    0x0C9C, 0xA02C,
-    0x0C9E, 0x53D6,
-    0x0CA0, 0xD2CF,
-    0x0CA2, 0x6BEA,
-    0x0CA4, 0xB8FE,
-    0x0CA6, 0x7432,
-    0x0CA8, 0x00D1,
-    0x0CAA, 0x08AE,
-    0x0CAC, 0x8B75,
-    0x0CAE, 0xBC80,
-    0x0CB0, 0x549F,
-    0x0CB2, 0x54D8,
-    0x0CB4, 0xB2B1,
-    0x0CB6, 0x2144,
-    0x0CB8, 0xBEA7,
-    0x0CBA, 0xF6EB,
-    0x0CBC, 0x1CCD,
-    0x0CBE, 0x00B2,
-    0x0CC0, 0x328A,
-    0x0CC2, 0x5A1B,
-    0x0CC4, 0xA27B,
-    0x0CC6, 0xA1B3,
-    0x0CC8, 0xA571,
-    0x0CCA, 0x0645,
-    0x0CCC, 0x420E,
-    0x0CCE, 0xC4E2,
-    0x0CD0, 0xAA4E,
-    0x0CD2, 0x0C86,
-    0x0CD4, 0xC630,
-    0x0CD6, 0x44D8,
-    0x0CD8, 0x6DD0,
-    0x0CDA, 0xDFCE,
-    0x0CDC, 0xB4E7,
-    0x0CDE, 0xC405,
-    0x0CE0, 0x991E,
-    0x0CE2, 0xCC13,
-    0x0CE4, 0x04CE,
-    0x0CE6, 0x5874,
-    0x0CE8, 0x8294,
-    0x0CEA, 0x79FF,
-    0x0CEC, 0x36EA,
-    0x0CEE, 0x7F7D,
-    0x0CF0, 0x8C2E,
-    0x0CF2, 0x8B31,
-    0x0CF4, 0xC62E,
-    0x0CF6, 0xCA8F,
-    0x0CF8, 0x1711,
-    0x0CFA, 0xE49B,
-    0x0CFC, 0xEFEF,
-    0x0CFE, 0x7E3E,
-    0x0D00, 0x7FCA,
-    0x0D02, 0xA310,
-    0x0D04, 0x7282,
-    0x0D06, 0x8185,
-    0x0D08, 0x583E,
-    0x0D0A, 0x8C1A,
-    0x0D0C, 0x8B86,
-    0x0D0E, 0x4BBB,
-    0x0D10, 0xA752,
-    0x0D12, 0x03DE,
-    0x0D14, 0x271D,
-    0x0D16, 0x79BC,
-    0x0D18, 0x58B1,
-    0x0D1A, 0xE5B3,
-    0x0D1C, 0xB501,
-    0x0D1E, 0x3FDB,
-    0x0D20, 0xCDB0,
-    0x0D22, 0x6302,
-    0x0D24, 0xDED0,
-    0x0D26, 0xC7D6,
-    0x0D28, 0x921C,
-    0x0D2A, 0x90E7,
-    0x0D2C, 0xB9FF,
-    0x0D2E, 0x688E,
-    0x0D30, 0x4974,
-    0x0D32, 0x5783,
-    0x0D34, 0x2262,
-    0x0D36, 0xAAEB,
-    0x0D38, 0xD355,
-    0x0D3A, 0x89A1,
-    0x0D3C, 0x2532,
-    0x0D3E, 0xD8B0,
-    0x0D40, 0xD2CC,
-    0x0D42, 0x31A3,
-    0x0D44, 0x623C,
-    0x0D46, 0xBAB9,
-    0x0D48, 0xB2CF,
-    0x0D4A, 0xAD11,
-    0x0D4C, 0x18E1,
-    0x0D4E, 0x472B,
-    0x0D50, 0xCAD4,
-    0x0D52, 0xA1D9,
-    0x0D54, 0xA2A2,
-    0x0D56, 0xE25A,
-    0x0D58, 0x6ACE,
-    0x0D5A, 0x2BC1,
-    0x0D5C, 0xD094,
-    0x0D5E, 0x87E0,
-    0x0D60, 0x859D,
-    0x0D62, 0x8AA9,
-    0x0D64, 0x2F22,
-    0x0D66, 0x7FEB,
-    0x0D68, 0x0D44,
-    0x0D6A, 0x98CA,
-    0x0D6C, 0x8848,
-    0x0D6E, 0x8867,
-    0x0D70, 0xFAFF,
-    0x0D72, 0xAC5C,
-    0x0D74, 0x0A7F,
-    0x0D76, 0x40F2,
-    0x0D78, 0x9FA8,
-    0x0D7A, 0x437C,
-    0x0D7C, 0xCD21,
-    0x0D7E, 0x6DB5,
-    0x0D80, 0x0C1C,
-    0x0D82, 0xB90C,
-    0x0D84, 0x38B0,
-    0x0D86, 0xA28C,
-    0x0D88, 0x7506,
-    0x0D8A, 0x1DAA,
-    0x0D8C, 0xAC97,
-    0x0D8E, 0x80F0,
-    0x0D90, 0x93D9,
-    0x0D92, 0xC540,
-    0x0D94, 0x9DD5,
-    0x0D96, 0xCF91,
-    0x0D98, 0x43EE,
-    0x0D9A, 0x2F21,
-    0x0D9C, 0xF470,
-    0x0D9E, 0xB006,
-    0x0DA0, 0xF3FE,
-    0x0DA2, 0xAA68,
-    0x0DA4, 0x6B8D,
-    0x0DA6, 0x6162,
-    0x0DA8, 0xC310,
-    0x0DAA, 0xD526,
-    0x0DAC, 0xB301,
-    0x0DAE, 0x6669,
-    0x0DB0, 0x6EDD,
-    0x0DB2, 0xF5C0,
-    0x0DB4, 0xF3A9,
-    0x0DB6, 0x081B,
-    0x0DB8, 0xA04D,
-    0x0DBA, 0x17D1,
-    0x0DBC, 0x4C3E,
-    0x0DBE, 0xDC31,
-    0x0DC0, 0xE71C,
-    0x0DC2, 0xFD81,
-    0x0DC4, 0x7525,
-    0x0DC6, 0xAF0F,
-    0x0DC8, 0x23C2,
-    0x0DCA, 0x556F,
-    0x0DCC, 0x2B1D,
-    0x0DCE, 0x3F33,
-    0x0DD0, 0xF3DC,
-    0x0DD2, 0x8D28,
-    0x0DD4, 0x7A78,
-    0x0DD6, 0x1847,
-    0x0DD8, 0x74A3,
-    0x0DDA, 0x702A,
-    0x0DDC, 0xA3F7,
-    0x0DDE, 0x5E13,
-    0x0DE0, 0xB976,
-    0x0DE2, 0x434F,
-    0x0DE4, 0xEB3A,
-    0x0DE6, 0xCDFB,
-    0x0DE8, 0x28CC,
-    0x0DEA, 0x7A96,
-    0x0DEC, 0x636D,
-    0x0DEE, 0x9449,
-    0x0DF0, 0x247F,
-    0x0DF2, 0x219F,
-    0x0DF4, 0x6A61,
-    0x0DF6, 0x63F9,
-    0x0DF8, 0xF656,
-    0x0DFA, 0x131B,
-    0x0DFC, 0xC91B,
-    0x0DFE, 0x564A,
-    0x0E00, 0xEE1F,
-    0x0E02, 0xCAE8,
-    0x0E04, 0x930E,
-    0x0E06, 0x1275,
-    0x0E08, 0xC1F1,
-    0x0E0A, 0x2DD1,
-    0x0E0C, 0x7F86,
-    0x0E0E, 0xE58D,
-    0x0E10, 0xB3A7,
-    0x0E12, 0x42BD,
-    0x0E14, 0x568B,
-    0x0E16, 0xC7BD,
-    0x0E18, 0xDA46,
-    0x0E1A, 0x5DD1,
-    0x0E1C, 0x2E61,
-    0x0E1E, 0xFBB3,
-    0x0E20, 0x9D11,
-    0x0E22, 0xC609,
-    0x0E24, 0xC843,
-    0x0E26, 0x757F,
-    0x0E28, 0x6CEE,
-    0x0E2A, 0x0B41,
-    0x0E2C, 0xED81,
-    0x0E2E, 0x4EA7,
-    0x0E30, 0xD5C9,
-    0x0E32, 0x4FB1,
-    0x0E34, 0x6020,
-    0x0E36, 0xFB8D,
-    0x0E38, 0x9002,
-    0x0E3A, 0x9F01,
-    0x0E3C, 0x145D,
-    0x0E3E, 0xD0D9,
-    0x0E40, 0x708C,
-    0x0E42, 0x4E5C,
-    0x0E44, 0x3D97,
-    0x0E46, 0x214D,
-    0x0E48, 0x0D0B,
-    0x0E4A, 0x55E1,
-    0x0E4C, 0x3356,
-    0x0E4E, 0x48D7,
-    0x0E50, 0x81F9,
-    0x0E52, 0xDD48,
-    0x0E54, 0x69A9,
-    0x0E56, 0x575B,
-    0x0E58, 0xA1DC,
-    0x0E5A, 0x9F4D,
-    0x0E5C, 0x4590,
-    0x0E5E, 0x0A24,
-    0x0E60, 0x39E5,
-    0x0E62, 0x5130,
-    0x0E64, 0x0361,
-    0x0E66, 0x67DD,
-    0x0E68, 0xD9CF,
-    0x0E6A, 0x1938,
-    0x0E6C, 0x56AC,
-    0x0E6E, 0xD1A3,
-    0x0E70, 0xDEB5,
-    0x0E72, 0xFD36,
-    0x0E74, 0x8818,
-    0x0E76, 0xB87E,
-    0x0E78, 0xB2A0,
-    0x0E7A, 0x07BD,
-    0x0E7C, 0x1F65,
-    0x0E7E, 0x72A6,
-    0x0E80, 0x24A3,
-    0x0E82, 0x6763,
-    0x0E84, 0xDDD8,
-    0x0E86, 0x3A57,
-    0x0E88, 0x6269,
-    0x0E8A, 0x661C,
-    0x0E8C, 0xC948,
-    0x0E8E, 0x9BAD,
-    0x0E90, 0xB31A,
-    0x0E92, 0xBA45,
-    0x0E94, 0x17A8,
-    0x0E96, 0x6C14,
-    0x0E98, 0xCE2B,
-    0x0E9A, 0x6C46,
-    0x0E9C, 0x74DD,
-    0x0E9E, 0x8FF7,
-    0x0EA0, 0x6D3F,
-    0x0EA2, 0xE6B4,
-    0x0EA4, 0x01E0,
-    0x0EA6, 0xD215,
-    0x0EA8, 0x8F82,
-    0x0EAA, 0x153F,
-    0x0EAC, 0xD51F,
-    0x0EAE, 0x81A5,
-    0x0EB0, 0x6F10,
-    0x0EB2, 0x992E,
-    0x0EB4, 0x374B,
-    0x0EB6, 0x7DC0,
-    0x0EB8, 0x36B6,
-    0x0EBA, 0x0774,
-    0x0EBC, 0xD451,
-    0x0EBE, 0x0D84,
-    0x0EC0, 0xE9F6,
-    0x0EC2, 0x0BC3,
-    0x0EC4, 0xC93B,
-    0x0EC6, 0x3FA9,
-    0x0EC8, 0xAB4F,
-    0x0ECA, 0xCA75,
-    0x0ECC, 0x8091,
-    0x0ECE, 0x944B,
-    0x0ED0, 0xA32C,
-    0x0ED2, 0xE277,
-    0x0ED4, 0x03DB,
-    0x0ED6, 0x31A0,
-    0x0ED8, 0x6250,
-    0x0EDA, 0x8F4C,
-    0x0EDC, 0xB736,
-    0x0EDE, 0x054A,
-    0x0EE0, 0x187A,
-    0x0EE2, 0x040A,
-    0x0EE4, 0x1705,
-    0x0EE6, 0x4908,
-    0x0EE8, 0x4BB3,
-    0x0EEA, 0xCD17,
-    0x0EEC, 0x24AE,
-    0x0EEE, 0x9713,
-    0x0EF0, 0x4CDF,
-    0x0EF2, 0x737E,
-    0x0EF4, 0x20EC,
-    0x0EF6, 0xA9D0,
-    0x0EF8, 0xD5A5,
-    0x0EFA, 0x1D2A,
-    0x0EFC, 0x430E,
-    0x0EFE, 0xDBCD,
-    0x0F00, 0x817C,
-    0x0F02, 0xC8C1,
-    0x0F04, 0x7404,
-    0x0F06, 0x7D6C,
-    0x0F08, 0x995D,
-    0x0F0A, 0xE04D,
-    0x0F0C, 0xFE0F,
-    0x0F0E, 0x5A53,
-    0x0F10, 0x66FB,
-    0x0F12, 0xA44F,
-    0x0F14, 0x974C,
-    0x0F16, 0xFC9C,
-    0x0F18, 0x8094,
-    0x0F1A, 0x8336,
-    0x0F1C, 0x7A9F,
-    0x0F1E, 0xF001,
-    0x0F20, 0x12F4,
-    0x0F22, 0x8229,
-    0x0F24, 0x72AC,
-    0x0F26, 0x7325,
-    0x0F28, 0x7B83,
-    0x0F2A, 0xA7B6,
-    0x0F2C, 0xA321,
-    0x0F2E, 0x06BF,
-    0x0F30, 0x619A,
-    0x0F32, 0xF447,
-    0x0F34, 0x2D75,
-    0x0F36, 0xED14,
-    0x0F38, 0xD7CB,
-    0x0F3A, 0xE23F,
-    0x0F3C, 0x09E5,
-    0x0F3E, 0xA197,
-    0x0F40, 0xD4CE,
-    0x0F42, 0xCC6B,
-    0x0F44, 0x2131,
-    0x0F46, 0x7D66,
-    0x0F48, 0x9365,
-    0x0F4A, 0x69F1,
-    0x0F4C, 0x83B0,
-    0x0F4E, 0x079B,
-    0x0F50, 0x686C,
-    0x0F52, 0x3CC6,
-    0x0F54, 0x1B13,
-    0x0F56, 0xA9B4,
-    0x0F58, 0x9D80,
-    0x0F5A, 0xC254,
-    0x0F5C, 0x33AA,
-    0x0F5E, 0xBF70,
-    0x0F60, 0x24CF,
-    0x0F62, 0xBE2E,
-    0x0F64, 0x08DB,
-    0x0F66, 0x64FB,
-    0x0F68, 0xDB86,
-    0x0F6A, 0xCB96,
-    0x0F6C, 0xFD4A,
-    0x0F6E, 0x8BBE,
-    0x0F70, 0xF49A,
-    0x0F72, 0x19F3,
-    0x0F74, 0x37EE,
-    0x0F76, 0x2357,
-    0x0F78, 0xEF2F,
-    0x0F7A, 0x96AF,
-    0x0F7C, 0x9F88,
-    0x0F7E, 0x18CC,
-    0x0F80, 0xC716,
-    0x0F82, 0xA30C,
-    0x0F84, 0x218B,
-    0x0F86, 0x2351,
-    0x0F88, 0xF723,
-    0x0F8A, 0xCED1,
-    0x0F8C, 0xC632,
-    0x0F8E, 0x32D1,
-    0x0F90, 0xEBF0,
-    0x0F92, 0xE1A5,
-    0x0F94, 0x2E18,
-    0x0F96, 0xB357,
-    0x0F98, 0x9893,
-    0x0F9A, 0xF00F,
-    0x0F9C, 0x917A,
-    0x0F9E, 0x84F3,
-    0x0FA0, 0x6CF5,
-    0x0FA2, 0x8667,
-    0x0FA4, 0x1DBE,
-    0x0FA6, 0xE993,
-    0x0FA8, 0x4B9F,
-    0x0FAA, 0xD5FC,
-    0x0FAC, 0xF07A,
-    0x0FAE, 0x884D,
-    0x0FB0, 0xF19D,
-    0x0FB2, 0x8CA2,
-    0x0FB4, 0x62D3,
-    0x0FB6, 0x1849,
-    0x0FB8, 0x7C2D,
-    0x0FBA, 0x83DF,
-    0x0FBC, 0xD127,
-    0x0FBE, 0x497F,
-    0x0FC0, 0x7695,
-    0x0FC2, 0x93E7,
-    0x0FC4, 0x4247,
-    0x0FC6, 0x2DC3,
-    0x0FC8, 0xAFC3,
-    0x0FCA, 0x6A4A,
-    0x0FCC, 0x7DDB,
-    0x0FCE, 0x7A43,
-    0x0FD0, 0x0DF5,
-    0x0FD2, 0x01A0,
-    0x0FD4, 0x0C9F,
-    0x0FD6, 0x3ADE,
-    0x0FD8, 0xAADA,
-    0x0FDA, 0x41F1,
-    0x0FDC, 0x40F7,
-    0x0FDE, 0x9E9D,
-    0x0FE0, 0xBB33,
-    0x0FE2, 0x5392,
-    0x0FE4, 0x0403,
-    0x0FE6, 0x09EB,
-    0x0FE8, 0x9482,
-    0x0FEA, 0x0E93,
-    0x0FEC, 0x7B69,
-    0x0FEE, 0xE45A,
-    0x0FF0, 0x22C4,
-    0x0FF2, 0xEE57,
-    0x0FF4, 0x21CD,
-    0x0FF6, 0x4AAE,
-    0x0FF8, 0x716F,
-    0x0FFA, 0x97ED,
-    0x0FFC, 0xB468,
-    0x0FFE, 0x92F0,
-    0x1000, 0x191C,
-    0x1002, 0xFDB4,
-    0x1004, 0x4B3E,
-    0x1006, 0xD331,
-    0x1008, 0x52DD,
-    0x100A, 0x1A41,
-    0x100C, 0xBE19,
-    0x100E, 0xBBDE,
-    0x1010, 0xC01D,
-    0x1012, 0xE2F9,
-    0x1014, 0x1E75,
-    0x1016, 0xCCBE,
-    0x1018, 0xDE75,
-    0x101A, 0xB9C3,
-    0x101C, 0x3C7D,
-    0x101E, 0x087F,
-    0x1020, 0x7EA8,
-    0x1022, 0x9F0D,
-    0x1024, 0x1F22,
-    0x1026, 0x1DF5,
-    0x1028, 0x6C54,
-    0x102A, 0xBCB2,
-    0x102C, 0x4A67,
-    0x102E, 0xC913,
-    0x1030, 0x00B4,
-    0x1032, 0xC532,
-    0x1034, 0xDFD6,
-    0x1036, 0x1A59,
-    0x1038, 0x2A39,
-    0x103A, 0x5F66,
-    0x103C, 0xA849,
-    0x103E, 0x8566,
-    0x1040, 0xD52A,
-    0x1042, 0xFB09,
-    0x1044, 0x53AA,
-    0x1046, 0xCD37,
-    0x1048, 0x7893,
-    0x104A, 0xEB40,
-    0x104C, 0x4DD5,
-    0x104E, 0x25C6,
-    0x1050, 0x9B9F,
-    0x1052, 0x34DC,
-    0x1054, 0xA6D6,
-    0x1056, 0x338A,
-    0x1058, 0x3767,
-    0x105A, 0x5CB3,
-    0x105C, 0x2409,
-    0x105E, 0x0556,
-    0x1060, 0x1DF4,
-    0x1062, 0xBB6D,
-    0x1064, 0xD7EB,
-    0x1066, 0x3F9C,
-    0x1068, 0xAE67,
-    0x106A, 0x6F8C,
-    0x106C, 0x0F60,
-    0x106E, 0xEBB1,
-    0x1070, 0x76F3,
-    0x1072, 0x100B,
-    0x1074, 0xCC3E,
-    0x1076, 0xC963,
-    0x1078, 0x57EC,
-    0x107A, 0xB0CF,
-    0x107C, 0x3724,
-    0x107E, 0xBE70,
-    0x1080, 0x9153,
-    0x1082, 0x0F48,
-    0x1084, 0x365D,
-    0x1086, 0xBFA4,
-    0x1088, 0x2029,
-    0x108A, 0x45CA,
-    0x108C, 0x595C,
-    0x108E, 0x8CF7,
-    0x1090, 0x7ACF,
-    0x1092, 0xB231,
-    0x1094, 0x4C9B,
-    0x1096, 0x53B8,
-    0x1098, 0x74F2,
-    0x109A, 0x1969,
-    0x109C, 0x0D8E,
-    0x109E, 0xC423,
-    0x10A0, 0xE5A9,
-    0x10A2, 0xB7C3,
-    0x10A4, 0x0ED4,
-    0x10A6, 0xDB9D,
-    0x10A8, 0xE8F6,
-    0x10AA, 0x91A3,
-    0x10AC, 0xFF96,
-    0x10AE, 0xE8E0,
-    0x10B0, 0xC3C1,
-    0x10B2, 0xE0F7,
-    0x10B4, 0x9E36,
-    0x10B6, 0x5985,
-    0x10B8, 0x9FA0,
-    0x10BA, 0x01D7,
-    0x10BC, 0x454B,
-    0x10BE, 0x524E,
-    0x10C0, 0xE5ED,
-    0x10C2, 0xCC42,
-    0x10C4, 0xEB0A,
-    0x10C6, 0x6833,
-    0x10C8, 0x23F8,
-    0x10CA, 0xA152,
-    0x10CC, 0xB153,
-    0x10CE, 0x54F6,
-    0x10D0, 0xCE7C,
-    0x10D2, 0x8FCC,
-    0x10D4, 0x8185,
-    0x10D6, 0xFD5C,
-    0x10D8, 0x1892,
-    0x10DA, 0xD6A4,
-    0x10DC, 0x4635,
-    0x10DE, 0x9ECD,
-    0x10E0, 0x4844,
-    0x10E2, 0x243F,
-    0x10E4, 0xDDCE,
-    0x10E6, 0xBD84,
-    0x10E8, 0x2370,
-    0x10EA, 0x69FA,
-    0x10EC, 0x939E,
-    0x10EE, 0x6D16,
-    0x10F0, 0x35AF,
-    0x10F2, 0x054B,
-    0x10F4, 0x4E51,
-    0x10F6, 0xED90,
-    0x10F8, 0x64FB,
-    0x10FA, 0xB9BD,
-    0x10FC, 0x73FF,
-    0x10FE, 0x3CCE,
-    0x1100, 0x3378,
-    0x1102, 0xEFBB,
-    0x1104, 0x306F,
-    0x1106, 0x5E46,
-    0x1108, 0x62F6,
-    0x110A, 0x41C9,
-    0x110C, 0xD184,
-    0x110E, 0xCA57,
-    0x1110, 0x01FF,
-    0x1112, 0x63C7,
-    0x1114, 0xE97C,
-    0x1116, 0x3F87,
-    0x1118, 0x3F32,
-    0x111A, 0x1947,
-    0x111C, 0x6E53,
-    0x111E, 0x9460,
-    0x1120, 0xD02D,
-    0x1122, 0x47D1,
-    0x1124, 0x7855,
-    0x1126, 0xD96B,
-    0x1128, 0xCC29,
-    0x112A, 0x2118,
-    0x112C, 0x433F,
-    0x112E, 0xBBFD,
-    0x1130, 0xBC6C,
-    0x1132, 0x1C87,
-    0x1134, 0x1DBE,
-    0x1136, 0xE6B0,
-    0x1138, 0x7D65,
-    0x113A, 0xE509,
-    0x113C, 0x9162,
-    0x113E, 0xBC19,
-    0x1140, 0x5B33,
-    0x1142, 0x7C47,
-    0x1144, 0x6CBC,
-    0x1146, 0x4F34,
-    0x1148, 0xDD7C,
-    0x114A, 0x7799,
-    0x114C, 0xB943,
-    0x114E, 0x424A,
-    0x1150, 0xE94B,
-    0x1152, 0xC8E4,
-    0x1154, 0xBE5C,
-    0x1156, 0x54C9,
-    0x1158, 0x43AD,
-    0x115A, 0x602A,
-    0x115C, 0x3CC7,
-    0x115E, 0xFF9B,
-    0x1160, 0x14D2,
-    0x1162, 0x0773,
-    0x1164, 0xD8F9,
-    0x1166, 0xCE7E,
-    0x1168, 0x91B3,
-    0x116A, 0xA609,
-    0x116C, 0x4FF4,
-    0x116E, 0xC155,
-    0x1170, 0x022C,
-    0x1172, 0x4B95,
-    0x1174, 0xB17B,
-    0x1176, 0xBF8D,
-    0x1178, 0x2A3E,
-    0x117A, 0xE7D5,
-    0x117C, 0xEAB8,
-    0x117E, 0xB7A1,
-    0x1180, 0x54CA,
-    0x1182, 0x89F8,
-    0x1184, 0x892A,
-    0x1186, 0xE229,
-    0x1188, 0x0440,
-    0x118A, 0x8568,
-    0x118C, 0x48E6,
-    0x118E, 0x9459,
-    0x1190, 0xBC85,
-    0x1192, 0xC3B5,
-    0x1194, 0xEDFC,
-    0x1196, 0x74E4,
-    0x1198, 0x3501,
-    0x119A, 0xA871,
-    0x119C, 0x2371,
-    0x119E, 0xA419,
-    0x11A0, 0x8A29,
-    0x11A2, 0x34D8,
-    0x11A4, 0x1EE5,
-    0x11A6, 0xC56A,
-    0x11A8, 0xB7BE,
-    0x11AA, 0x1CAE,
-    0x11AC, 0xDBC0,
-    0x11AE, 0x7CB4,
-    0x11B0, 0xDDBD,
-    0x11B2, 0x19C3,
-    0x11B4, 0xA114,
-    0x11B6, 0x43FB,
-    0x11B8, 0x0E23,
-    0x11BA, 0x1395,
-    0x11BC, 0xED60,
-    0x11BE, 0x2C7C,
-    0x11C0, 0xCEC7,
-    0x11C2, 0x21E4,
-    0x11C4, 0xFBFE,
-    0x11C6, 0x3D09,
-    0x11C8, 0x0000,
-    0xFCFC, 0x4000,
-};
-
-static u16 konkauwide_sensor_init_pre_setting_short[] = {
-    0xFCFC, 0x4000,
-    0x0000, 0x000D,
-    0x0000, 0x38E5,
-    0x6018, 0x0001,
-    0x7002, 0x0408,
-    0x6014, 0x0001,
-    0xFCFC, 0x2002,
-    0x1E92, 0x8000,
-    0x1E84, 0x282B,
-    0x1E86, 0x0320,
-    0xFCFC, 0x4000,
-    0x7002, 0x0008,
-};
-
-static u16 konkauwide_sensor_init_setting_short[] = {
-    0xFCFC, 0x2000,
-    0xDCF0, 0x0101,
-    0xFCFC, 0x2001,
-    0x3C60, 0x0000,
-    0xFCFC, 0x4000,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2002,
-    0x849C, 0x0100,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0x84A4, 0x0000,
-    0x84A6, 0x0000,
-    0x84A8, 0x0000,
-    0x84AA, 0x0001,
-    0x84AC, 0x01FF,
-    0x84B0, 0x8089,
-    0x84B2, 0x0000,
-    0x84B4, 0x8889,
-    0x84B6, 0x0000,
-    0x84B8, 0xC097,
-    0x84BA, 0x0000,
-    0x84BC, 0xA60E,
-    0x84BE, 0x0000,
-    0x84C0, 0x2206,
-    0x84C2, 0x0000,
-    0x84C4, 0x0010,
-    0x84C8, 0x90C3,
-    0x84CA, 0x0224,
-    0x84CC, 0x44AB,
-    0x84CE, 0x0224,
-    0x84D0, 0x44AB,
-    0x84D2, 0x0224,
-    0x84D4, 0x44AB,
-    0x84D6, 0x0224,
-    0x84D8, 0x44AB,
-    0x84DA, 0x0224,
-    0x84DC, 0x44AB,
-    0x84DE, 0x0224,
-    0xA548, 0x001D,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA558, 0x0000,
-    0xA55A, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xA56C, 0x0000,
-    0xA56E, 0x0000,
-    0xA570, 0x0000,
-    0xA572, 0x0000,
-    0xA574, 0x00D5,
-    0xA576, 0x0000,
-    0xA578, 0x0000,
-    0xA57A, 0x0000,
-    0xA57C, 0x0000,
-    0xA57E, 0x0000,
-    0xA580, 0x0000,
-    0xA582, 0x0000,
-    0xA584, 0x0000,
-    0xA586, 0x0000,
-    0xA588, 0x0000,
-    0xA58A, 0x0000,
-    0xA58C, 0x0000,
-    0xA58E, 0x0000,
-    0xA590, 0x0000,
-    0xA592, 0x0000,
-    0xA594, 0x0000,
-    0xA596, 0x0000,
-    0xA598, 0x0000,
-    0xA59A, 0x0000,
-    0xA59C, 0x0000,
-    0xA59E, 0x0000,
-    0xA5A0, 0x0100,
-    0xA5A2, 0x0036,
-    0xA5A4, 0x0000,
-    0xA5A6, 0x0000,
-    0xA5A8, 0x0000,
-    0xA5AA, 0x0000,
-    0xA5AC, 0x0000,
-    0xA5AE, 0x0000,
-    0xA5B0, 0x0000,
-    0xA5B2, 0x0000,
-    0xA5B4, 0x0000,
-    0xA5B6, 0x0000,
-    0xA5B8, 0x0000,
-    0xA5BA, 0x0000,
-    0xA5BC, 0x0000,
-    0xA5BE, 0x0000,
-    0xA5C0, 0x0000,
-    0xA5C2, 0x0000,
-    0xA5C4, 0x0000,
-    0xA5C6, 0x0000,
-    0xA5C8, 0x0000,
-    0xA5CA, 0x0000,
-    0xA5CC, 0x0000,
-    0xA5CE, 0x0000,
-    0xA5D0, 0x0000,
-    0xA5D2, 0x0000,
-    0xA5D4, 0x0000,
-    0xA5D6, 0x0000,
-    0xA5D8, 0x0000,
-    0xA5DA, 0x0000,
-    0xA5DC, 0x0000,
-    0xA5DE, 0x0000,
-    0xA5E0, 0x0000,
-    0xA5E2, 0x0000,
-    0xA5E4, 0x0000,
-    0xA5E6, 0x0000,
-    0xA5E8, 0x0000,
-    0xA5EA, 0x0000,
-    0xA5EC, 0x000F,
-    0xA5EE, 0x000F,
-    0xA5F0, 0x000F,
-    0xA5F2, 0x000F,
-    0xA5F4, 0x0000,
-    0xA5F6, 0x0000,
-    0xA5F8, 0x0000,
-    0xA5FA, 0x0000,
-    0xA5FC, 0x0000,
-    0xA5FE, 0x0000,
-    0xA600, 0x0000,
-    0xA602, 0x0000,
-    0xA604, 0x0000,
-    0xA606, 0x00C6,
-    0xBB84, 0x0001,
-    0xBB86, 0x0000,
-    0xBB88, 0x0000,
-    0xBB8A, 0x0100,
-    0xBB8C, 0x0800,
-    0xBB8E, 0x1000,
-    0xBB90, 0x2000,
-    0xBB92, 0x9A00,
-    0xBB94, 0x9A00,
-    0xBB96, 0x9A00,
-    0xBB98, 0x9A00,
-    0xBB9A, 0x9600,
-    0xBB9C, 0x9600,
-    0xBB9E, 0x9600,
-    0xBBA0, 0x9600,
-    0xBBA2, 0x9300,
-    0xBBA4, 0x9300,
-    0xBBA6, 0x9300,
-    0xBBA8, 0x9300,
-    0xBBAA, 0x9000,
-    0xBBAC, 0x9000,
-    0xBBAE, 0x9000,
-    0xBBB0, 0x9000,
-    0xBBB2, 0x8D00,
-    0xBBB4, 0x8D00,
-    0xBBB6, 0x8D00,
-    0xBBB8, 0x8D00,
-    0xBBBA, 0x3F00,
-    0xBBBC, 0x3F00,
-    0xBBBE, 0x3F00,
-    0xBBC0, 0x3F00,
-    0xBBC2, 0x1E00,
-    0xBBC4, 0x1E00,
-    0xBBC6, 0x1E00,
-    0xBBC8, 0x1E00,
-    0xBBCA, 0x0000,
-    0xBBCC, 0x0000,
-    0xBBCE, 0x0000,
-    0xBBD0, 0x0000,
-    0xBBD2, 0x0800,
-    0xBBD4, 0x0800,
-    0xBBD6, 0x0800,
-    0xBBD8, 0x0800,
-    0xBBDA, 0x0000,
-    0xBBDC, 0x0000,
-    0xBBDE, 0x0000,
-    0xBBE0, 0x0000,
-    0xBBE2, 0x3F00,
-    0xBBE4, 0x3F00,
-    0xBBE6, 0x3F00,
-    0xBBE8, 0x3F00,
-    0xBBEA, 0x3400,
-    0xBBEC, 0x3400,
-    0xBBEE, 0x3400,
-    0xBBF0, 0x3400,
-    0xBBF2, 0x0A00,
-    0xBBF4, 0x0A00,
-    0xBBF6, 0x0A00,
-    0xBBF8, 0x0A00,
-    0xBBFA, 0x1000,
-    0xBBFC, 0x1000,
-    0xBBFE, 0x1000,
-    0xBC00, 0x1000,
-    0xBC02, 0x0600,
-    0xBC04, 0x0600,
-    0xBC06, 0x0600,
-    0xBC08, 0x0600,
-    0xBC0A, 0x0C00,
-    0xBC0C, 0x0C00,
-    0xBC0E, 0x0C00,
-    0xBC10, 0x0C00,
-    0xBC12, 0x0000,
-    0xBC14, 0x0000,
-    0xBC16, 0x0000,
-    0xBC18, 0x0000,
-    0xBC1A, 0x1000,
-    0xBC1C, 0x1000,
-    0xBC1E, 0x1000,
-    0xBC20, 0x1000,
-    0xBC22, 0x1000,
-    0xBC24, 0x1000,
-    0xBC26, 0x1000,
-    0xBC28, 0x1000,
-    0xBC2A, 0x2000,
-    0xBC2C, 0x1000,
-    0xBC2E, 0x1000,
-    0xBC30, 0x1000,
-    0xBC32, 0x0600,
-    0xBC34, 0x0600,
-    0xBC36, 0x0600,
-    0xBC38, 0x0600,
-    0xBC3A, 0x1C00,
-    0xBC3C, 0x1C00,
-    0xBC3E, 0x1C00,
-    0xBC40, 0x1C00,
-    0xBC42, 0x0600,
-    0xBC44, 0x0600,
-    0xBC46, 0x0600,
-    0xBC48, 0x0600,
-    0xBC4A, 0x2A00,
-    0xBC4C, 0x2A00,
-    0xBC4E, 0x2A00,
-    0xBC50, 0x2A00,
-    0xBC52, 0x0200,
-    0xBC54, 0x0200,
-    0xBC56, 0x0200,
-    0xBC58, 0x0200,
-    0xBC5A, 0x1000,
-    0xBC5C, 0x1000,
-    0xBC5E, 0x1000,
-    0xBC60, 0x1000,
-    0xBC62, 0x0E00,
-    0xBC64, 0x0E00,
-    0xBC66, 0x0E00,
-    0xBC68, 0x0E00,
-    0xBC6A, 0x2800,
-    0xBC6C, 0x2800,
-    0xBC6E, 0x2800,
-    0xBC70, 0x2800,
-    0xBC72, 0x1800,
-    0xBC74, 0x1800,
-    0xBC76, 0x1800,
-    0xBC78, 0x1800,
-    0xBC7A, 0x0800,
-    0xBC7C, 0x0800,
-    0xBC7E, 0x0800,
-    0xBC80, 0x0800,
-    0xBC82, 0x0000,
-    0xBC84, 0x0000,
-    0xBC86, 0x0000,
-    0xBC88, 0x0000,
-    0xBC8A, 0x2400,
-    0xBC8C, 0x2400,
-    0xBC8E, 0x2400,
-    0xBC90, 0x2400,
-    0xBC92, 0x0088,
-    0xFCFC, 0x2000,
-    0x68D8, 0x0100,
-    0xFCFC, 0x2002,
-    0xBC92, 0x0100,
-    0xFCFC, 0x4000,
-    0x0E04, 0x1C03,
-    0x0E10, 0x0100,
-    0x0E12, 0x00A0,
-    0x0E14, 0x0C84,
-    0x0E16, 0x002B,
-    0x0E18, 0x0300,
-    0x0E1A, 0x3000,
-    0x0E1C, 0x0100,
-    0x0E1E, 0x00A0,
-    0x0E20, 0x0C84,
-    0x0E22, 0x012B,
-    0x0E24, 0x0400,
-    0x0E26, 0x3000,
-    0xFCFC, 0x2000,
-    0x22E4, 0x0300,
-    0x2338, 0x0101,
-    0xFCFC, 0x2000,
-    0xDD6C, 0xB47E,
-    0xDD6E, 0xB67E,
-    0xDE34, 0x0000,
-    0xDE36, 0x9231,
-    0xFCFC, 0x2006,
-    0x0000, 0x535A,
-    0x0002, 0x0100,
-    0x0004, 0x11C3,
-    0x0006, 0x5A00,
-    0x0008, 0x0001,
-    0x000A, 0x0064,
-    0x000C, 0x2400,
-    0x000E, 0x0000,
-    0x0010, 0x0000,
-    0x0012, 0x0000,
-    0x0014, 0x7FBF,
-    0x0016, 0x624E,
-    0x0018, 0x20FF,
-    0x001A, 0x1F7C,
-    0x001C, 0x2C23,
-    0x001E, 0x23E8,
-    0x0020, 0xE28B,
-    0x0022, 0x1547,
-    0x0024, 0x9DF4,
-    0x0026, 0xE7D7,
-    0x0028, 0xAFCB,
-    0x002A, 0xE85F,
-    0x002C, 0x4B74,
-    0x002E, 0xA863,
-    0x0030, 0xC002,
-    0x0032, 0xB199,
-    0x0034, 0x6AB9,
-    0x0036, 0xFC3D,
-    0x0038, 0x8930,
-    0x003A, 0xA51A,
-    0x003C, 0xECF6,
-    0x003E, 0x90E5,
-    0x0040, 0x706E,
-    0x0042, 0x4787,
-    0x0044, 0xF3B3,
-    0x0046, 0x3541,
-    0x0048, 0x2641,
-    0x004A, 0x4671,
-    0x004C, 0x52C7,
-    0x004E, 0xF3DE,
-    0x0050, 0x17ED,
-    0x0052, 0x5F95,
-    0x0054, 0x2A7C,
-    0x0056, 0x1E02,
-    0x0058, 0x6C56,
-    0x005A, 0x0FC4,
-    0x005C, 0x0101,
-    0x005E, 0x7D9A,
-    0x0060, 0xE5A4,
-    0x0062, 0x4D4B,
-    0x0064, 0x1C93,
-    0x0066, 0x3300,
-    0x0068, 0x7B68,
-    0x006A, 0xA445,
-    0x006C, 0x6F14,
-    0x006E, 0x59E1,
-    0x0070, 0xEC78,
-    0x0072, 0xCCFF,
-    0x0074, 0x4DE7,
-    0x0076, 0x1555,
-    0x0078, 0x4D81,
-    0x007A, 0x5FC2,
-    0x007C, 0xDCF5,
-    0x007E, 0xF141,
-    0x0080, 0x1924,
-    0x0082, 0x3846,
-    0x0084, 0x4608,
-    0x0086, 0x7700,
-    0x0088, 0x1268,
-    0x008A, 0xF048,
-    0x008C, 0x3E6C,
-    0x008E, 0x7AE4,
-    0x0090, 0x369B,
-    0x0092, 0x2C80,
-    0x0094, 0x0D92,
-    0x0096, 0x7048,
-    0x0098, 0x97DE,
-    0x009A, 0x2493,
-    0x009C, 0x02D1,
-    0x009E, 0x9C2E,
-    0x00A0, 0xD51B,
-    0x00A2, 0xCC3A,
-    0x00A4, 0x5508,
-    0x00A6, 0x73D5,
-    0x00A8, 0x0DC3,
-    0x00AA, 0xD2AC,
-    0x00AC, 0x8FE6,
-    0x00AE, 0xA96A,
-    0x00B0, 0x07D5,
-    0x00B2, 0xD4A4,
-    0x00B4, 0x04AD,
-    0x00B6, 0xD5AE,
-    0x00B8, 0x893F,
-    0x00BA, 0x2218,
-    0x00BC, 0xA2EB,
-    0x00BE, 0x0AF5,
-    0x00C0, 0x1957,
-    0x00C2, 0xA8C2,
-    0x00C4, 0x926B,
-    0x00C6, 0x28E3,
-    0x00C8, 0x2B23,
-    0x00CA, 0x7ECB,
-    0x00CC, 0x13B7,
-    0x00CE, 0x5D45,
-    0x00D0, 0x3B29,
-    0x00D2, 0xA785,
-    0x00D4, 0xFEB1,
-    0x00D6, 0x9EE3,
-    0x00D8, 0x557A,
-    0x00DA, 0x77AF,
-    0x00DC, 0x2B1A,
-    0x00DE, 0x01E0,
-    0x00E0, 0x58C0,
-    0x00E2, 0xC43C,
-    0x00E4, 0xDFC3,
-    0x00E6, 0xF236,
-    0x00E8, 0x00D4,
-    0x00EA, 0x3CCA,
-    0x00EC, 0x1FF0,
-    0x00EE, 0x88BC,
-    0x00F0, 0x91B3,
-    0x00F2, 0x725E,
-    0x00F4, 0x6D46,
-    0x00F6, 0x3345,
-    0x00F8, 0x83AD,
-    0x00FA, 0x3812,
-    0x00FC, 0xA11C,
-    0x00FE, 0x0179,
-    0x0100, 0x999B,
-    0x0102, 0x0026,
-    0x0104, 0x0255,
-    0x0106, 0xA060,
-    0x0108, 0x72F1,
-    0x010A, 0xB03D,
-    0x010C, 0x25B6,
-    0x010E, 0x1CBC,
-    0x0110, 0x7EDC,
-    0x0112, 0x6286,
-    0x0114, 0x3CEB,
-    0x0116, 0xF0EA,
-    0x0118, 0xD157,
-    0x011A, 0x3A4B,
-    0x011C, 0x7820,
-    0x011E, 0x69FF,
-    0x0120, 0x1657,
-    0x0122, 0x0CEB,
-    0x0124, 0xDFFF,
-    0x0126, 0xFCD7,
-    0x0128, 0x5875,
-    0x012A, 0xE105,
-    0x012C, 0x5218,
-    0x012E, 0xFDE1,
-    0x0130, 0x6952,
-    0x0132, 0x9EB5,
-    0x0134, 0x6AB2,
-    0x0136, 0x7EBB,
-    0x0138, 0x7397,
-    0x013A, 0x994E,
-    0x013C, 0x3998,
-    0x013E, 0xD789,
-    0x0140, 0xE6C8,
-    0x0142, 0xCC63,
-    0x0144, 0xA29E,
-    0x0146, 0xB35D,
-    0x0148, 0xF93C,
-    0x014A, 0x47CA,
-    0x014C, 0x124F,
-    0x014E, 0x8CA5,
-    0x0150, 0xB90A,
-    0x0152, 0x9928,
-    0x0154, 0x02E8,
-    0x0156, 0x9F83,
-    0x0158, 0xCEDC,
-    0x015A, 0x3E54,
-    0x015C, 0xCDC6,
-    0x015E, 0x53A8,
-    0x0160, 0x4271,
-    0x0162, 0x1246,
-    0x0164, 0x549F,
-    0x0166, 0xE2AB,
-    0x0168, 0xB271,
-    0x016A, 0xD099,
-    0x016C, 0xEC28,
-    0x016E, 0x535C,
-    0x0170, 0xEDC5,
-    0x0172, 0x497A,
-    0x0174, 0xDB7C,
-    0x0176, 0xE3F0,
-    0x0178, 0xD72E,
-    0x017A, 0xA1CA,
-    0x017C, 0xC481,
-    0x017E, 0x28BE,
-    0x0180, 0xA228,
-    0x0182, 0x3A4D,
-    0x0184, 0xBAA0,
-    0x0186, 0xD8A3,
-    0x0188, 0x7C88,
-    0x018A, 0xEE98,
-    0x018C, 0x9851,
-    0x018E, 0x1DC8,
-    0x0190, 0x2E07,
-    0x0192, 0x540A,
-    0x0194, 0x35F4,
-    0x0196, 0xEC0F,
-    0x0198, 0x9113,
-    0x019A, 0xEDDE,
-    0x019C, 0xEAF7,
-    0x019E, 0x0900,
-    0x01A0, 0x09F3,
-    0x01A2, 0x0573,
-    0x01A4, 0xFA81,
-    0x01A6, 0x2104,
-    0x01A8, 0x2590,
-    0x01AA, 0xCC5F,
-    0x01AC, 0x6B0B,
-    0x01AE, 0x3EB7,
-    0x01B0, 0x3389,
-    0x01B2, 0x2D3C,
-    0x01B4, 0x0E0B,
-    0x01B6, 0xD103,
-    0x01B8, 0xB92F,
-    0x01BA, 0x0064,
-    0x01BC, 0x7BB7,
-    0x01BE, 0x3D07,
-    0x01C0, 0xF56E,
-    0x01C2, 0xB180,
-    0x01C4, 0xF8F2,
-    0x01C6, 0x5CCC,
-    0x01C8, 0xD8B4,
-    0x01CA, 0x7706,
-    0x01CC, 0xD573,
-    0x01CE, 0x4A32,
-    0x01D0, 0x659D,
-    0x01D2, 0x2538,
-    0x01D4, 0x1BE3,
-    0x01D6, 0xCD15,
-    0x01D8, 0x50C9,
-    0x01DA, 0x6AE2,
-    0x01DC, 0xA842,
-    0x01DE, 0x05A4,
-    0x01E0, 0x919B,
-    0x01E2, 0xDBEE,
-    0x01E4, 0xB1B8,
-    0x01E6, 0x1072,
-    0x01E8, 0x6516,
-    0x01EA, 0x0124,
-    0x01EC, 0x0E18,
-    0x01EE, 0xF58E,
-    0x01F0, 0x9C7A,
-    0x01F2, 0x3CF0,
-    0x01F4, 0xE339,
-    0x01F6, 0xF030,
-    0x01F8, 0xA3B2,
-    0x01FA, 0xC513,
-    0x01FC, 0x46A5,
-    0x01FE, 0x33FC,
-    0x0200, 0x42B0,
-    0x0202, 0xD05F,
-    0x0204, 0x8050,
-    0x0206, 0x4CEC,
-    0x0208, 0x2F40,
-    0x020A, 0x3833,
-    0x020C, 0x6A1B,
-    0x020E, 0xEFC5,
-    0x0210, 0xDB88,
-    0x0212, 0xD33F,
-    0x0214, 0x83B8,
-    0x0216, 0x65D1,
-    0x0218, 0xED9D,
-    0x021A, 0x442B,
-    0x021C, 0x23FA,
-    0x021E, 0x8B25,
-    0x0220, 0x8759,
-    0x0222, 0x8009,
-    0x0224, 0x8838,
-    0x0226, 0xEC29,
-    0x0228, 0xC4ED,
-    0x022A, 0xF174,
-    0x022C, 0xC483,
-    0x022E, 0x0160,
-    0x0230, 0x33EB,
-    0x0232, 0x7518,
-    0x0234, 0xBD81,
-    0x0236, 0x96F7,
-    0x0238, 0x1CCC,
-    0x023A, 0x41B0,
-    0x023C, 0x96C2,
-    0x023E, 0x6557,
-    0x0240, 0x3398,
-    0x0242, 0xB585,
-    0x0244, 0xA7B6,
-    0x0246, 0xDDF7,
-    0x0248, 0x6305,
-    0x024A, 0x118C,
-    0x024C, 0xC08D,
-    0x024E, 0x97A8,
-    0x0250, 0x09E5,
-    0x0252, 0xA23B,
-    0x0254, 0xFAE7,
-    0x0256, 0xF7AE,
-    0x0258, 0xFA3F,
-    0x025A, 0x8FDC,
-    0x025C, 0x1CB8,
-    0x025E, 0xF80C,
-    0x0260, 0x5240,
-    0x0262, 0x0BB2,
-    0x0264, 0x865B,
-    0x0266, 0xF59D,
-    0x0268, 0x7A2E,
-    0x026A, 0xE946,
-    0x026C, 0xEE5E,
-    0x026E, 0xDAED,
-    0x0270, 0xE083,
-    0x0272, 0x0369,
-    0x0274, 0x5C86,
-    0x0276, 0x052B,
-    0x0278, 0xAC3A,
-    0x027A, 0xE121,
-    0x027C, 0x0B2C,
-    0x027E, 0xD5F9,
-    0x0280, 0x8055,
-    0x0282, 0x2B71,
-    0x0284, 0xCA9B,
-    0x0286, 0x3C38,
-    0x0288, 0xD51D,
-    0x028A, 0xAA2C,
-    0x028C, 0x6638,
-    0x028E, 0xD97B,
-    0x0290, 0xD81E,
-    0x0292, 0x64C6,
-    0x0294, 0x23E5,
-    0x0296, 0xC55A,
-    0x0298, 0x519A,
-    0x029A, 0xB1A7,
-    0x029C, 0x8769,
-    0x029E, 0xF87A,
-    0x02A0, 0x772A,
-    0x02A2, 0x4996,
-    0x02A4, 0x1427,
-    0x02A6, 0xB0B3,
-    0x02A8, 0x5396,
-    0x02AA, 0x6710,
-    0x02AC, 0x154F,
-    0x02AE, 0xC084,
-    0x02B0, 0x0671,
-    0x02B2, 0x6218,
-    0x02B4, 0xFA55,
-    0x02B6, 0x737B,
-    0x02B8, 0x1B09,
-    0x02BA, 0x6DFE,
-    0x02BC, 0x5C31,
-    0x02BE, 0xAD90,
-    0x02C0, 0xD027,
-    0x02C2, 0x4F88,
-    0x02C4, 0xF8D4,
-    0x02C6, 0x3984,
-    0x02C8, 0x6E39,
-    0x02CA, 0x8A3B,
-    0x02CC, 0x1008,
-    0x02CE, 0xB808,
-    0x02D0, 0x7E69,
-    0x02D2, 0x0428,
-    0x02D4, 0x6E99,
-    0x02D6, 0x7F9C,
-    0x02D8, 0x6AD6,
-    0x02DA, 0x42C7,
-    0x02DC, 0x12D0,
-    0x02DE, 0x9785,
-    0x02E0, 0x2300,
-    0x02E2, 0x5FEE,
-    0x02E4, 0x6A49,
-    0x02E6, 0x3EBB,
-    0x02E8, 0x1C38,
-    0x02EA, 0x231D,
-    0x02EC, 0x53C3,
-    0x02EE, 0x4FE7,
-    0x02F0, 0x274C,
-    0x02F2, 0xA33A,
-    0x02F4, 0x939E,
-    0x02F6, 0x4BDF,
-    0x02F8, 0xD243,
-    0x02FA, 0x2AA1,
-    0x02FC, 0x4490,
-    0x02FE, 0x4EAB,
-    0x0300, 0xE2DA,
-    0x0302, 0xF516,
-    0x0304, 0xFC24,
-    0x0306, 0x876C,
-    0x0308, 0x7395,
-    0x030A, 0x1CDB,
-    0x030C, 0x9887,
-    0x030E, 0x5DD4,
-    0x0310, 0x5408,
-    0x0312, 0x87AD,
-    0x0314, 0xFA9A,
-    0x0316, 0xCF5A,
-    0x0318, 0x9045,
-    0x031A, 0x3AF0,
-    0x031C, 0x4FC4,
-    0x031E, 0xD580,
-    0x0320, 0x804D,
-    0x0322, 0x780B,
-    0x0324, 0x4E21,
-    0x0326, 0x7B1A,
-    0x0328, 0x00A9,
-    0x032A, 0x5C1E,
-    0x032C, 0x7ECC,
-    0x032E, 0x4378,
-    0x0330, 0x50FF,
-    0x0332, 0x6CC6,
-    0x0334, 0x1CE9,
-    0x0336, 0xEBD6,
-    0x0338, 0xED90,
-    0x033A, 0xE0CC,
-    0x033C, 0xC568,
-    0x033E, 0x6E51,
-    0x0340, 0x67F4,
-    0x0342, 0x3FC2,
-    0x0344, 0x18AC,
-    0x0346, 0x803D,
-    0x0348, 0xFFEA,
-    0x034A, 0x5AED,
-    0x034C, 0x0ED2,
-    0x034E, 0x01C7,
-    0x0350, 0x1D85,
-    0x0352, 0xF24D,
-    0x0354, 0x64CF,
-    0x0356, 0x401D,
-    0x0358, 0xC221,
-    0x035A, 0x7F36,
-    0x035C, 0x6C78,
-    0x035E, 0xCFBB,
-    0x0360, 0x59BB,
-    0x0362, 0xA749,
-    0x0364, 0x73BD,
-    0x0366, 0x5F16,
-    0x0368, 0xA8FF,
-    0x036A, 0x400D,
-    0x036C, 0x1D09,
-    0x036E, 0xA032,
-    0x0370, 0x149C,
-    0x0372, 0x5E78,
-    0x0374, 0xB484,
-    0x0376, 0x1296,
-    0x0378, 0xEA61,
-    0x037A, 0xF1C8,
-    0x037C, 0xC708,
-    0x037E, 0x591F,
-    0x0380, 0x03AA,
-    0x0382, 0xA2EA,
-    0x0384, 0x5361,
-    0x0386, 0xA649,
-    0x0388, 0xFA7C,
-    0x038A, 0x4032,
-    0x038C, 0x6538,
-    0x038E, 0xA99D,
-    0x0390, 0x4D75,
-    0x0392, 0x68F0,
-    0x0394, 0x783C,
-    0x0396, 0xC6BB,
-    0x0398, 0x56AD,
-    0x039A, 0x58A2,
-    0x039C, 0x6821,
-    0x039E, 0xF155,
-    0x03A0, 0x96A7,
-    0x03A2, 0x906D,
-    0x03A4, 0x4A4D,
-    0x03A6, 0x8394,
-    0x03A8, 0x5D89,
-    0x03AA, 0xC4DE,
-    0x03AC, 0x1224,
-    0x03AE, 0x2EBC,
-    0x03B0, 0xC2C5,
-    0x03B2, 0x1E85,
-    0x03B4, 0xCB26,
-    0x03B6, 0xC969,
-    0x03B8, 0x6897,
-    0x03BA, 0x699A,
-    0x03BC, 0xC337,
-    0x03BE, 0xA20D,
-    0x03C0, 0x0688,
-    0x03C2, 0x93AF,
-    0x03C4, 0xB5EE,
-    0x03C6, 0xB64B,
-    0x03C8, 0x07D1,
-    0x03CA, 0x7B43,
-    0x03CC, 0x1ECD,
-    0x03CE, 0x03F4,
-    0x03D0, 0x5A81,
-    0x03D2, 0x076A,
-    0x03D4, 0x7A52,
-    0x03D6, 0x6779,
-    0x03D8, 0x4688,
-    0x03DA, 0x7EA9,
-    0x03DC, 0x13E5,
-    0x03DE, 0x1F4F,
-    0x03E0, 0x9630,
-    0x03E2, 0x87CA,
-    0x03E4, 0xFE1D,
-    0x03E6, 0x256F,
-    0x03E8, 0xE66D,
-    0x03EA, 0x7FAD,
-    0x03EC, 0xFCFF,
-    0x03EE, 0x468D,
-    0x03F0, 0x722B,
-    0x03F2, 0xEEF7,
-    0x03F4, 0x9C48,
-    0x03F6, 0xC2B0,
-    0x03F8, 0x9A27,
-    0x03FA, 0x18D6,
-    0x03FC, 0x39B9,
-    0x03FE, 0xC176,
-    0x0400, 0x3AE4,
-    0x0402, 0x61D9,
-    0x0404, 0x0988,
-    0x0406, 0xEC5A,
-    0x0408, 0xBA4C,
-    0x040A, 0xD689,
-    0x040C, 0x421B,
-    0x040E, 0xAADD,
-    0x0410, 0x5882,
-    0x0412, 0x15CC,
-    0x0414, 0xC02A,
-    0x0416, 0x91B0,
-    0x0418, 0xB779,
-    0x041A, 0x203D,
-    0x041C, 0x2570,
-    0x041E, 0x5145,
-    0x0420, 0xBE00,
-    0x0422, 0x9396,
-    0x0424, 0x2E02,
-    0x0426, 0x2809,
-    0x0428, 0xC521,
-    0x042A, 0x615A,
-    0x042C, 0xA0CF,
-    0x042E, 0xE28E,
-    0x0430, 0x5258,
-    0x0432, 0xC6A6,
-    0x0434, 0x044E,
-    0x0436, 0x1B2B,
-    0x0438, 0x0F2B,
-    0x043A, 0x3542,
-    0x043C, 0x95DE,
-    0x043E, 0x9A99,
-    0x0440, 0x4774,
-    0x0442, 0xBE43,
-    0x0444, 0x9A35,
-    0x0446, 0x68EA,
-    0x0448, 0xE89A,
-    0x044A, 0xC206,
-    0x044C, 0x6C87,
-    0x044E, 0xCE50,
-    0x0450, 0x9F8B,
-    0x0452, 0x5526,
-    0x0454, 0x3F76,
-    0x0456, 0x2539,
-    0x0458, 0x8D33,
-    0x045A, 0x1DD3,
-    0x045C, 0x6260,
-    0x045E, 0x2E4D,
-    0x0460, 0x8019,
-    0x0462, 0x7EA0,
-    0x0464, 0x494A,
-    0x0466, 0x3C0E,
-    0x0468, 0x0259,
-    0x046A, 0x9811,
-    0x046C, 0x9459,
-    0x046E, 0x304E,
-    0x0470, 0x0922,
-    0x0472, 0x802D,
-    0x0474, 0xDC20,
-    0x0476, 0x6A9D,
-    0x0478, 0x7176,
-    0x047A, 0xA96B,
-    0x047C, 0x5814,
-    0x047E, 0x78F0,
-    0x0480, 0x74F9,
-    0x0482, 0x26CD,
-    0x0484, 0x3325,
-    0x0486, 0x6DF0,
-    0x0488, 0x1CA0,
-    0x048A, 0x8669,
-    0x048C, 0x9C58,
-    0x048E, 0xD04F,
-    0x0490, 0xB481,
-    0x0492, 0x7DA8,
-    0x0494, 0x1665,
-    0x0496, 0xEA44,
-    0x0498, 0x641F,
-    0x049A, 0x552B,
-    0x049C, 0xBC6D,
-    0x049E, 0xD290,
-    0x04A0, 0x0FFD,
-    0x04A2, 0x3C1A,
-    0x04A4, 0x7F34,
-    0x04A6, 0xBFB6,
-    0x04A8, 0xF538,
-    0x04AA, 0x10E9,
-    0x04AC, 0x3A6C,
-    0x04AE, 0x0FDA,
-    0x04B0, 0x16EA,
-    0x04B2, 0xD25E,
-    0x04B4, 0x0239,
-    0x04B6, 0xFD5E,
-    0x04B8, 0xDB1B,
-    0x04BA, 0xF0CC,
-    0x04BC, 0x99F5,
-    0x04BE, 0xCBEC,
-    0x04C0, 0x9997,
-    0x04C2, 0x483C,
-    0x04C4, 0x20B5,
-    0x04C6, 0xB406,
-    0x04C8, 0x5F41,
-    0x04CA, 0x8ACB,
-    0x04CC, 0x55F7,
-    0x04CE, 0x2D67,
-    0x04D0, 0x0C1A,
-    0x04D2, 0x37D3,
-    0x04D4, 0x8ED8,
-    0x04D6, 0x2DAF,
-    0x04D8, 0x26E6,
-    0x04DA, 0x2EDB,
-    0x04DC, 0xB8D6,
-    0x04DE, 0x891E,
-    0x04E0, 0xBAD1,
-    0x04E2, 0xE130,
-    0x04E4, 0x64C5,
-    0x04E6, 0xBC5E,
-    0x04E8, 0x5BA4,
-    0x04EA, 0xB879,
-    0x04EC, 0x31F8,
-    0x04EE, 0xA441,
-    0x04F0, 0x974D,
-    0x04F2, 0xD714,
-    0x04F4, 0xC091,
-    0x04F6, 0xD3EA,
-    0x04F8, 0x640E,
-    0x04FA, 0xEB2D,
-    0x04FC, 0xC4AA,
-    0x04FE, 0x6B5C,
-    0x0500, 0xE026,
-    0x0502, 0x8C8D,
-    0x0504, 0x1B9D,
-    0x0506, 0x75C0,
-    0x0508, 0x934C,
-    0x050A, 0x541A,
-    0x050C, 0x7935,
-    0x050E, 0x93CA,
-    0x0510, 0x8C29,
-    0x0512, 0x3974,
-    0x0514, 0x1C57,
-    0x0516, 0x4438,
-    0x0518, 0xD9E1,
-    0x051A, 0xC0E8,
-    0x051C, 0x8C85,
-    0x051E, 0x62B6,
-    0x0520, 0xD016,
-    0x0522, 0x0C61,
-    0x0524, 0x69F9,
-    0x0526, 0x087F,
-    0x0528, 0xC10A,
-    0x052A, 0xE420,
-    0x052C, 0x28DF,
-    0x052E, 0xF336,
-    0x0530, 0xC6E0,
-    0x0532, 0x0C30,
-    0x0534, 0xA8C6,
-    0x0536, 0x80C9,
-    0x0538, 0x9DAC,
-    0x053A, 0xBF25,
-    0x053C, 0xE036,
-    0x053E, 0x01ED,
-    0x0540, 0x8130,
-    0x0542, 0x7150,
-    0x0544, 0xC212,
-    0x0546, 0xC122,
-    0x0548, 0x11C5,
-    0x054A, 0x0AEB,
-    0x054C, 0xF495,
-    0x054E, 0x2514,
-    0x0550, 0xC95C,
-    0x0552, 0x56CB,
-    0x0554, 0xEE5E,
-    0x0556, 0xC09B,
-    0x0558, 0xD133,
-    0x055A, 0x12C9,
-    0x055C, 0x3096,
-    0x055E, 0xA20D,
-    0x0560, 0x0292,
-    0x0562, 0xC8DE,
-    0x0564, 0x9227,
-    0x0566, 0xBDF8,
-    0x0568, 0xDCFD,
-    0x056A, 0x3DB7,
-    0x056C, 0xF0A1,
-    0x056E, 0xF85E,
-    0x0570, 0x2FAC,
-    0x0572, 0x9DE7,
-    0x0574, 0xC134,
-    0x0576, 0xB205,
-    0x0578, 0xDDF8,
-    0x057A, 0x6D17,
-    0x057C, 0x3BED,
-    0x057E, 0x8DD8,
-    0x0580, 0xB263,
-    0x0582, 0x5A9E,
-    0x0584, 0x67EE,
-    0x0586, 0x7770,
-    0x0588, 0x58FE,
-    0x058A, 0x8810,
-    0x058C, 0xFBBB,
-    0x058E, 0xEFE3,
-    0x0590, 0x2BFF,
-    0x0592, 0x9A56,
-    0x0594, 0x9886,
-    0x0596, 0xCA7A,
-    0x0598, 0xA206,
-    0x059A, 0xE1E9,
-    0x059C, 0x766A,
-    0x059E, 0x28DA,
-    0x05A0, 0x4898,
-    0x05A2, 0x3AB9,
-    0x05A4, 0xD0EE,
-    0x05A6, 0x7E5C,
-    0x05A8, 0x9BA7,
-    0x05AA, 0x9A33,
-    0x05AC, 0x1670,
-    0x05AE, 0xF092,
-    0x05B0, 0xA74A,
-    0x05B2, 0x275A,
-    0x05B4, 0x232A,
-    0x05B6, 0x1249,
-    0x05B8, 0xC350,
-    0x05BA, 0x1145,
-    0x05BC, 0xED0F,
-    0x05BE, 0x19B6,
-    0x05C0, 0x0D35,
-    0x05C2, 0xCC8B,
-    0x05C4, 0x78A5,
-    0x05C6, 0xCA4B,
-    0x05C8, 0x933E,
-    0x05CA, 0x6E54,
-    0x05CC, 0x1BF7,
-    0x05CE, 0x6BB9,
-    0x05D0, 0x058C,
-    0x05D2, 0xBAD2,
-    0x05D4, 0x28D4,
-    0x05D6, 0x79E0,
-    0x05D8, 0xBCA0,
-    0x05DA, 0x02D3,
-    0x05DC, 0xC4C4,
-    0x05DE, 0xCAC7,
-    0x05E0, 0x01E2,
-    0x05E2, 0x1305,
-    0x05E4, 0x39FC,
-    0x05E6, 0x5AC3,
-    0x05E8, 0x6176,
-    0x05EA, 0xDC30,
-    0x05EC, 0xF24C,
-    0x05EE, 0xB4C0,
-    0x05F0, 0x1CEB,
-    0x05F2, 0x49B1,
-    0x05F4, 0x9CFA,
-    0x05F6, 0x6B04,
-    0x05F8, 0xF51C,
-    0x05FA, 0xAC09,
-    0x05FC, 0xD193,
-    0x05FE, 0x4BC4,
-    0x0600, 0x2AEF,
-    0x0602, 0xFC02,
-    0x0604, 0x8E9F,
-    0x0606, 0x6DE5,
-    0x0608, 0xFAF0,
-    0x060A, 0xD3D4,
-    0x060C, 0x8A2E,
-    0x060E, 0xB0B7,
-    0x0610, 0x3574,
-    0x0612, 0x0B14,
-    0x0614, 0xD1A2,
-    0x0616, 0xB6E5,
-    0x0618, 0xB90A,
-    0x061A, 0xCD8D,
-    0x061C, 0x4CB1,
-    0x061E, 0xC6ED,
-    0x0620, 0x994E,
-    0x0622, 0xCA09,
-    0x0624, 0xAA89,
-    0x0626, 0xE1E2,
-    0x0628, 0xE019,
-    0x062A, 0x1B4C,
-    0x062C, 0xDD5F,
-    0x062E, 0x33F5,
-    0x0630, 0xC409,
-    0x0632, 0xC994,
-    0x0634, 0xD231,
-    0x0636, 0x9F08,
-    0x0638, 0xECAD,
-    0x063A, 0xD54E,
-    0x063C, 0x6D45,
-    0x063E, 0x2B30,
-    0x0640, 0xECC0,
-    0x0642, 0xD5ED,
-    0x0644, 0xA0D1,
-    0x0646, 0x4B6F,
-    0x0648, 0x2042,
-    0x064A, 0xF720,
-    0x064C, 0x8202,
-    0x064E, 0x15F6,
-    0x0650, 0x8F0C,
-    0x0652, 0x48E7,
-    0x0654, 0xF956,
-    0x0656, 0x4683,
-    0x0658, 0xC789,
-    0x065A, 0xACBD,
-    0x065C, 0x2DB1,
-    0x065E, 0xCF0B,
-    0x0660, 0xC74B,
-    0x0662, 0x2BA9,
-    0x0664, 0x61A2,
-    0x0666, 0xD057,
-    0x0668, 0xA27B,
-    0x066A, 0x8C3A,
-    0x066C, 0x264A,
-    0x066E, 0x035B,
-    0x0670, 0x8039,
-    0x0672, 0x8D29,
-    0x0674, 0xB89B,
-    0x0676, 0x22D9,
-    0x0678, 0x26B0,
-    0x067A, 0xC9F6,
-    0x067C, 0xCA5D,
-    0x067E, 0x8F8B,
-    0x0680, 0xDBCE,
-    0x0682, 0xB380,
-    0x0684, 0x2B06,
-    0x0686, 0x4D7F,
-    0x0688, 0x9580,
-    0x068A, 0xE4B6,
-    0x068C, 0x8B9F,
-    0x068E, 0xC198,
-    0x0690, 0x6F72,
-    0x0692, 0x3157,
-    0x0694, 0x5D64,
-    0x0696, 0x07A0,
-    0x0698, 0xE198,
-    0x069A, 0x1B0F,
-    0x069C, 0x6E8F,
-    0x069E, 0xA5EE,
-    0x06A0, 0x6BF1,
-    0x06A2, 0x0386,
-    0x06A4, 0x00B9,
-    0x06A6, 0xE6AA,
-    0x06A8, 0xBE32,
-    0x06AA, 0x7F0C,
-    0x06AC, 0x1F88,
-    0x06AE, 0xAF5A,
-    0x06B0, 0xF38F,
-    0x06B2, 0x23DD,
-    0x06B4, 0x81AE,
-    0x06B6, 0x7F97,
-    0x06B8, 0x3ED6,
-    0x06BA, 0xCA0D,
-    0x06BC, 0xD71A,
-    0x06BE, 0x1355,
-    0x06C0, 0x5DC2,
-    0x06C2, 0x820B,
-    0x06C4, 0xEE33,
-    0x06C6, 0x7911,
-    0x06C8, 0x027A,
-    0x06CA, 0xE598,
-    0x06CC, 0x90CD,
-    0x06CE, 0x31F6,
-    0x06D0, 0x201B,
-    0x06D2, 0x254B,
-    0x06D4, 0x889B,
-    0x06D6, 0x81ED,
-    0x06D8, 0x7EB4,
-    0x06DA, 0x5AC9,
-    0x06DC, 0x7366,
-    0x06DE, 0x99BA,
-    0x06E0, 0x21ED,
-    0x06E2, 0x0155,
-    0x06E4, 0x4B3A,
-    0x06E6, 0xF2AD,
-    0x06E8, 0x4D1D,
-    0x06EA, 0x85E2,
-    0x06EC, 0xFCCD,
-    0x06EE, 0x3AE7,
-    0x06F0, 0x2B8D,
-    0x06F2, 0x2E43,
-    0x06F4, 0x128C,
-    0x06F6, 0x46EE,
-    0x06F8, 0x9732,
-    0x06FA, 0xDDDE,
-    0x06FC, 0x1F7B,
-    0x06FE, 0xC0E6,
-    0x0700, 0x4977,
-    0x0702, 0x6386,
-    0x0704, 0xF483,
-    0x0706, 0xEC05,
-    0x0708, 0x3957,
-    0x070A, 0x5B2E,
-    0x070C, 0x5E48,
-    0x070E, 0x56CE,
-    0x0710, 0x4BF1,
-    0x0712, 0xD19F,
-    0x0714, 0x2657,
-    0x0716, 0x2484,
-    0x0718, 0x3B0A,
-    0x071A, 0x7C70,
-    0x071C, 0xF884,
-    0x071E, 0x184B,
-    0x0720, 0xE7CC,
-    0x0722, 0x135B,
-    0x0724, 0x6571,
-    0x0726, 0x4A10,
-    0x0728, 0x0377,
-    0x072A, 0x0EB4,
-    0x072C, 0x518D,
-    0x072E, 0x9A47,
-    0x0730, 0x0304,
-    0x0732, 0x3BCB,
-    0x0734, 0x8226,
-    0x0736, 0x1931,
-    0x0738, 0xBD07,
-    0x073A, 0x25BE,
-    0x073C, 0x558B,
-    0x073E, 0x30AF,
-    0x0740, 0xF681,
-    0x0742, 0x3EF0,
-    0x0744, 0x0494,
-    0x0746, 0x4311,
-    0x0748, 0x77B5,
-    0x074A, 0x307A,
-    0x074C, 0x90F4,
-    0x074E, 0xEEAD,
-    0x0750, 0xE429,
-    0x0752, 0x5593,
-    0x0754, 0x4974,
-    0x0756, 0x1BAE,
-    0x0758, 0xF955,
-    0x075A, 0x677B,
-    0x075C, 0xB653,
-    0x075E, 0xD3B0,
-    0x0760, 0x7B2E,
-    0x0762, 0x12A1,
-    0x0764, 0xD02E,
-    0x0766, 0x9C5D,
-    0x0768, 0x8F60,
-    0x076A, 0x2F69,
-    0x076C, 0x5076,
-    0x076E, 0xCA89,
-    0x0770, 0x5036,
-    0x0772, 0xBE4C,
-    0x0774, 0x5996,
-    0x0776, 0xCCEA,
-    0x0778, 0x3D2F,
-    0x077A, 0x51C5,
-    0x077C, 0xBC8C,
-    0x077E, 0x5374,
-    0x0780, 0x5B83,
-    0x0782, 0x4006,
-    0x0784, 0x2CBB,
-    0x0786, 0xE4D9,
-    0x0788, 0xA555,
-    0x078A, 0xCD05,
-    0x078C, 0x7BBC,
-    0x078E, 0xF47A,
-    0x0790, 0xACA0,
-    0x0792, 0x9E19,
-    0x0794, 0xBA1F,
-    0x0796, 0x6CC0,
-    0x0798, 0x4115,
-    0x079A, 0x8EDF,
-    0x079C, 0x4BAA,
-    0x079E, 0x75B1,
-    0x07A0, 0x8576,
-    0x07A2, 0x3798,
-    0x07A4, 0x0041,
-    0x07A6, 0x357E,
-    0x07A8, 0x1759,
-    0x07AA, 0xC6B4,
-    0x07AC, 0x28D5,
-    0x07AE, 0x8D4B,
-    0x07B0, 0xE8B8,
-    0x07B2, 0x1DDA,
-    0x07B4, 0x3AD5,
-    0x07B6, 0x5356,
-    0x07B8, 0xA937,
-    0x07BA, 0xF1BE,
-    0x07BC, 0xB42C,
-    0x07BE, 0x51C8,
-    0x07C0, 0x9BFA,
-    0x07C2, 0xC1D5,
-    0x07C4, 0xC769,
-    0x07C6, 0xAD84,
-    0x07C8, 0x9143,
-    0x07CA, 0x619C,
-    0x07CC, 0x99BD,
-    0x07CE, 0x850A,
-    0x07D0, 0xA58F,
-    0x07D2, 0x1EF5,
-    0x07D4, 0x045C,
-    0x07D6, 0xBB50,
-    0x07D8, 0x4DCF,
-    0x07DA, 0x995C,
-    0x07DC, 0x1508,
-    0x07DE, 0x040A,
-    0x07E0, 0x8C3E,
-    0x07E2, 0x5DB2,
-    0x07E4, 0x8770,
-    0x07E6, 0x9226,
-    0x07E8, 0x82D0,
-    0x07EA, 0x48D2,
-    0x07EC, 0x9BB1,
-    0x07EE, 0x3A74,
-    0x07F0, 0xB306,
-    0x07F2, 0xAE52,
-    0x07F4, 0x094C,
-    0x07F6, 0xFB47,
-    0x07F8, 0xCEE9,
-    0x07FA, 0xEC43,
-    0x07FC, 0x9693,
-    0x07FE, 0x7471,
-    0x0800, 0xEAFE,
-    0x0802, 0x8B1D,
-    0x0804, 0x3919,
-    0x0806, 0x62E3,
-    0x0808, 0x76E0,
-    0x080A, 0x1BEE,
-    0x080C, 0x014D,
-    0x080E, 0xBF76,
-    0x0810, 0x18CB,
-    0x0812, 0x0024,
-    0x0814, 0x37EE,
-    0x0816, 0xE64F,
-    0x0818, 0x9AAF,
-    0x081A, 0xDBD9,
-    0x081C, 0xA12D,
-    0x081E, 0x428A,
-    0x0820, 0xCD29,
-    0x0822, 0x6F55,
-    0x0824, 0x25B2,
-    0x0826, 0x599D,
-    0x0828, 0x9200,
-    0x082A, 0xD75E,
-    0x082C, 0x993B,
-    0x082E, 0x3B01,
-    0x0830, 0x756E,
-    0x0832, 0x60DC,
-    0x0834, 0x6722,
-    0x0836, 0x1454,
-    0x0838, 0xD3A6,
-    0x083A, 0xB19B,
-    0x083C, 0x5518,
-    0x083E, 0x3780,
-    0x0840, 0x9A97,
-    0x0842, 0xCB93,
-    0x0844, 0xFC66,
-    0x0846, 0x3A1E,
-    0x0848, 0x61E4,
-    0x084A, 0x33F0,
-    0x084C, 0xBA46,
-    0x084E, 0xA5C7,
-    0x0850, 0xAE6B,
-    0x0852, 0x3F59,
-    0x0854, 0x215A,
-    0x0856, 0x3908,
-    0x0858, 0x3994,
-    0x085A, 0x40BA,
-    0x085C, 0x115D,
-    0x085E, 0x3F5A,
-    0x0860, 0xCED7,
-    0x0862, 0xFE54,
-    0x0864, 0x0300,
-    0x0866, 0xE9DF,
-    0x0868, 0x0B70,
-    0x086A, 0xC433,
-    0x086C, 0x7CDF,
-    0x086E, 0xF44F,
-    0x0870, 0x8A67,
-    0x0872, 0x1DC4,
-    0x0874, 0xA5DA,
-    0x0876, 0x6754,
-    0x0878, 0xC6B0,
-    0x087A, 0x5675,
-    0x087C, 0x41C6,
-    0x087E, 0x3FAC,
-    0x0880, 0xCB67,
-    0x0882, 0x83B5,
-    0x0884, 0xCC94,
-    0x0886, 0xE348,
-    0x0888, 0x3AE3,
-    0x088A, 0xBA32,
-    0x088C, 0xA441,
-    0x088E, 0x80A4,
-    0x0890, 0x4833,
-    0x0892, 0xC910,
-    0x0894, 0xE680,
-    0x0896, 0x1CF5,
-    0x0898, 0x0B9B,
-    0x089A, 0x4D94,
-    0x089C, 0x08B2,
-    0x089E, 0xD16A,
-    0x08A0, 0x7024,
-    0x08A2, 0x11ED,
-    0x08A4, 0xB03A,
-    0x08A6, 0x3CC3,
-    0x08A8, 0x2FAE,
-    0x08AA, 0xD96D,
-    0x08AC, 0x9705,
-    0x08AE, 0x183F,
-    0x08B0, 0xC5F2,
-    0x08B2, 0xF3E8,
-    0x08B4, 0xC2EC,
-    0x08B6, 0xD52F,
-    0x08B8, 0x0DEA,
-    0x08BA, 0x4C5E,
-    0x08BC, 0xE80D,
-    0x08BE, 0x831D,
-    0x08C0, 0xB4D6,
-    0x08C2, 0x788C,
-    0x08C4, 0xC7F2,
-    0x08C6, 0x3C9E,
-    0x08C8, 0x0142,
-    0x08CA, 0x1D16,
-    0x08CC, 0x00FB,
-    0x08CE, 0x7AC0,
-    0x08D0, 0x183F,
-    0x08D2, 0xA48F,
-    0x08D4, 0xBC43,
-    0x08D6, 0x5D3F,
-    0x08D8, 0x18B8,
-    0x08DA, 0xD665,
-    0x08DC, 0x5173,
-    0x08DE, 0x6EF5,
-    0x08E0, 0x0C72,
-    0x08E2, 0x8D21,
-    0x08E4, 0xDC55,
-    0x08E6, 0x224B,
-    0x08E8, 0x860D,
-    0x08EA, 0xCB81,
-    0x08EC, 0x0F2A,
-    0x08EE, 0x7047,
-    0x08F0, 0x58E8,
-    0x08F2, 0x1422,
-    0x08F4, 0x5EC8,
-    0x08F6, 0xE6F2,
-    0x08F8, 0x2DF4,
-    0x08FA, 0x8371,
-    0x08FC, 0x1155,
-    0x08FE, 0x4B8D,
-    0x0900, 0xE031,
-    0x0902, 0x176F,
-    0x0904, 0xACFB,
-    0x0906, 0x3623,
-    0x0908, 0x3354,
-    0x090A, 0xC87A,
-    0x090C, 0xB016,
-    0x090E, 0x4E54,
-    0x0910, 0xE73A,
-    0x0912, 0x43C5,
-    0x0914, 0x619B,
-    0x0916, 0x6610,
-    0x0918, 0xBEBB,
-    0x091A, 0x5F15,
-    0x091C, 0xF875,
-    0x091E, 0xD605,
-    0x0920, 0x39C0,
-    0x0922, 0xE289,
-    0x0924, 0xFD9C,
-    0x0926, 0x7536,
-    0x0928, 0x584E,
-    0x092A, 0xFFFD,
-    0x092C, 0x4BB9,
-    0x092E, 0xF9AB,
-    0x0930, 0xB2F3,
-    0x0932, 0x2DEE,
-    0x0934, 0x7E8C,
-    0x0936, 0x13B5,
-    0x0938, 0xF87A,
-    0x093A, 0x9196,
-    0x093C, 0x65E3,
-    0x093E, 0x6095,
-    0x0940, 0x4AC8,
-    0x0942, 0x1053,
-    0x0944, 0x5C29,
-    0x0946, 0xEFA4,
-    0x0948, 0xB54E,
-    0x094A, 0x5B72,
-    0x094C, 0x8028,
-    0x094E, 0x38BB,
-    0x0950, 0x586F,
-    0x0952, 0x25A4,
-    0x0954, 0x1287,
-    0x0956, 0x3934,
-    0x0958, 0xC4ED,
-    0x095A, 0x51D7,
-    0x095C, 0x5A55,
-    0x095E, 0xBE16,
-    0x0960, 0x94A2,
-    0x0962, 0xD9BB,
-    0x0964, 0xF6F5,
-    0x0966, 0x7DDD,
-    0x0968, 0x46E0,
-    0x096A, 0x5C6E,
-    0x096C, 0x43D1,
-    0x096E, 0xB205,
-    0x0970, 0x1542,
-    0x0972, 0x8517,
-    0x0974, 0xEE63,
-    0x0976, 0xC284,
-    0x0978, 0xDB43,
-    0x097A, 0x4994,
-    0x097C, 0xB650,
-    0x097E, 0x34E3,
-    0x0980, 0x6A7E,
-    0x0982, 0x1BC4,
-    0x0984, 0x4366,
-    0x0986, 0x15CD,
-    0x0988, 0xAC53,
-    0x098A, 0xF0DB,
-    0x098C, 0xACAB,
-    0x098E, 0xD429,
-    0x0990, 0x0B3D,
-    0x0992, 0x3084,
-    0x0994, 0x860B,
-    0x0996, 0x7F90,
-    0x0998, 0x0F73,
-    0x099A, 0x2B62,
-    0x099C, 0x0F63,
-    0x099E, 0xB517,
-    0x09A0, 0xC60E,
-    0x09A2, 0x1CCF,
-    0x09A4, 0x5573,
-    0x09A6, 0x6A14,
-    0x09A8, 0x4BC6,
-    0x09AA, 0x19E5,
-    0x09AC, 0x07F1,
-    0x09AE, 0x5706,
-    0x09B0, 0xDD1E,
-    0x09B2, 0x2463,
-    0x09B4, 0x7810,
-    0x09B6, 0xFBBE,
-    0x09B8, 0xF5B4,
-    0x09BA, 0x9628,
-    0x09BC, 0xDB1D,
-    0x09BE, 0x2A74,
-    0x09C0, 0xEF6B,
-    0x09C2, 0x1289,
-    0x09C4, 0x40FA,
-    0x09C6, 0x9C38,
-    0x09C8, 0x1535,
-    0x09CA, 0xD047,
-    0x09CC, 0x69BB,
-    0x09CE, 0xB14D,
-    0x09D0, 0x6D39,
-    0x09D2, 0x7173,
-    0x09D4, 0x0088,
-    0x09D6, 0xC315,
-    0x09D8, 0xB611,
-    0x09DA, 0x8E4F,
-    0x09DC, 0xABFF,
-    0x09DE, 0x0D2D,
-    0x09E0, 0x8094,
-    0x09E2, 0xD989,
-    0x09E4, 0x340F,
-    0x09E6, 0xA76E,
-    0x09E8, 0xD1F4,
-    0x09EA, 0xA50F,
-    0x09EC, 0x1EF0,
-    0x09EE, 0xFFB5,
-    0x09F0, 0x4CBB,
-    0x09F2, 0xB60A,
-    0x09F4, 0xC75B,
-    0x09F6, 0x445D,
-    0x09F8, 0x8570,
-    0x09FA, 0xD57A,
-    0x09FC, 0x745C,
-    0x09FE, 0xE984,
-    0x0A00, 0x99AA,
-    0x0A02, 0x7633,
-    0x0A04, 0x7EAF,
-    0x0A06, 0x8FB2,
-    0x0A08, 0x5222,
-    0x0A0A, 0xD0F7,
-    0x0A0C, 0x2CC1,
-    0x0A0E, 0xFABF,
-    0x0A10, 0x9074,
-    0x0A12, 0xA45C,
-    0x0A14, 0x6FD2,
-    0x0A16, 0xB308,
-    0x0A18, 0x9B0C,
-    0x0A1A, 0x1675,
-    0x0A1C, 0xB43B,
-    0x0A1E, 0xD281,
-    0x0A20, 0x5958,
-    0x0A22, 0x818B,
-    0x0A24, 0x528E,
-    0x0A26, 0xB94C,
-    0x0A28, 0xF60D,
-    0x0A2A, 0x9C62,
-    0x0A2C, 0x4621,
-    0x0A2E, 0xDF64,
-    0x0A30, 0x5F07,
-    0x0A32, 0x7F6B,
-    0x0A34, 0x3236,
-    0x0A36, 0xFFE1,
-    0x0A38, 0x6DB9,
-    0x0A3A, 0xDA02,
-    0x0A3C, 0x918E,
-    0x0A3E, 0x12FE,
-    0x0A40, 0x13BB,
-    0x0A42, 0x7441,
-    0x0A44, 0x4CFA,
-    0x0A46, 0xA455,
-    0x0A48, 0x467D,
-    0x0A4A, 0x87CD,
-    0x0A4C, 0x9D74,
-    0x0A4E, 0x6160,
-    0x0A50, 0xC477,
-    0x0A52, 0x0879,
-    0x0A54, 0xC6D1,
-    0x0A56, 0xCD76,
-    0x0A58, 0x8786,
-    0x0A5A, 0xD9E4,
-    0x0A5C, 0xDBCD,
-    0x0A5E, 0x178C,
-    0x0A60, 0x9C5B,
-    0x0A62, 0xE0EF,
-    0x0A64, 0xDFCF,
-    0x0A66, 0xC3D7,
-    0x0A68, 0xAA64,
-    0x0A6A, 0x84E4,
-    0x0A6C, 0x00C7,
-    0x0A6E, 0x4D39,
-    0x0A70, 0x895A,
-    0x0A72, 0xCF71,
-    0x0A74, 0xCE0D,
-    0x0A76, 0x68EE,
-    0x0A78, 0xE58C,
-    0x0A7A, 0xCADF,
-    0x0A7C, 0x64CA,
-    0x0A7E, 0xE43F,
-    0x0A80, 0x3809,
-    0x0A82, 0xCA64,
-    0x0A84, 0x807A,
-    0x0A86, 0x5235,
-    0x0A88, 0x6BD2,
-    0x0A8A, 0x9D45,
-    0x0A8C, 0x2420,
-    0x0A8E, 0x6B6B,
-    0x0A90, 0x8BD1,
-    0x0A92, 0x9B90,
-    0x0A94, 0x8F01,
-    0x0A96, 0xCE41,
-    0x0A98, 0x3DBE,
-    0x0A9A, 0x98B1,
-    0x0A9C, 0x3794,
-    0x0A9E, 0x12DA,
-    0x0AA0, 0xD298,
-    0x0AA2, 0x3CFC,
-    0x0AA4, 0x2464,
-    0x0AA6, 0x08AC,
-    0x0AA8, 0x7D26,
-    0x0AAA, 0x9108,
-    0x0AAC, 0xB101,
-    0x0AAE, 0x2978,
-    0x0AB0, 0x3738,
-    0x0AB2, 0x0E08,
-    0x0AB4, 0x3732,
-    0x0AB6, 0xE50A,
-    0x0AB8, 0xCE62,
-    0x0ABA, 0x55C0,
-    0x0ABC, 0x08DD,
-    0x0ABE, 0xE874,
-    0x0AC0, 0x5AF6,
-    0x0AC2, 0x5433,
-    0x0AC4, 0x335F,
-    0x0AC6, 0x052E,
-    0x0AC8, 0xB6E9,
-    0x0ACA, 0x0CE8,
-    0x0ACC, 0x749D,
-    0x0ACE, 0x5637,
-    0x0AD0, 0x9AF3,
-    0x0AD2, 0x848B,
-    0x0AD4, 0x9001,
-    0x0AD6, 0xFDA1,
-    0x0AD8, 0x3035,
-    0x0ADA, 0x1205,
-    0x0ADC, 0x128C,
-    0x0ADE, 0x97EA,
-    0x0AE0, 0xE40E,
-    0x0AE2, 0xF8EA,
-    0x0AE4, 0x3D95,
-    0x0AE6, 0xAE42,
-    0x0AE8, 0xA932,
-    0x0AEA, 0x87FF,
-    0x0AEC, 0x0C5E,
-    0x0AEE, 0x0EA8,
-    0x0AF0, 0x7E33,
-    0x0AF2, 0x0D13,
-    0x0AF4, 0xCB1C,
-    0x0AF6, 0x9FAF,
-    0x0AF8, 0xEA36,
-    0x0AFA, 0x8F20,
-    0x0AFC, 0xCE97,
-    0x0AFE, 0x6F00,
-    0x0B00, 0xB847,
-    0x0B02, 0x4CB9,
-    0x0B04, 0xA902,
-    0x0B06, 0x67F3,
-    0x0B08, 0x3217,
-    0x0B0A, 0x9A2B,
-    0x0B0C, 0xD195,
-    0x0B0E, 0xDA84,
-    0x0B10, 0x16CA,
-    0x0B12, 0x51F1,
-    0x0B14, 0x0A4A,
-    0x0B16, 0x063E,
-    0x0B18, 0x7620,
-    0x0B1A, 0x1116,
-    0x0B1C, 0x207B,
-    0x0B1E, 0x5A91,
-    0x0B20, 0x44EA,
-    0x0B22, 0xAE6A,
-    0x0B24, 0xD318,
-    0x0B26, 0x2BDB,
-    0x0B28, 0x1015,
-    0x0B2A, 0x29F0,
-    0x0B2C, 0x2A02,
-    0x0B2E, 0x2633,
-    0x0B30, 0x54C5,
-    0x0B32, 0x0797,
-    0x0B34, 0x2109,
-    0x0B36, 0xBA8B,
-    0x0B38, 0x39E5,
-    0x0B3A, 0x601A,
-    0x0B3C, 0x6918,
-    0x0B3E, 0x1BCB,
-    0x0B40, 0xBCEF,
-    0x0B42, 0x51D1,
-    0x0B44, 0x376E,
-    0x0B46, 0xAD2C,
-    0x0B48, 0x1603,
-    0x0B4A, 0xD7BB,
-    0x0B4C, 0x7810,
-    0x0B4E, 0xED0B,
-    0x0B50, 0x13DB,
-    0x0B52, 0x9C7E,
-    0x0B54, 0x3DB8,
-    0x0B56, 0x327A,
-    0x0B58, 0xBFC1,
-    0x0B5A, 0xD26D,
-    0x0B5C, 0xCA73,
-    0x0B5E, 0x9BFE,
-    0x0B60, 0xFD47,
-    0x0B62, 0x921A,
-    0x0B64, 0x5365,
-    0x0B66, 0xE6DF,
-    0x0B68, 0x69C4,
-    0x0B6A, 0x03D2,
-    0x0B6C, 0xCB09,
-    0x0B6E, 0x5C1F,
-    0x0B70, 0x9D06,
-    0x0B72, 0x26B4,
-    0x0B74, 0xA2BE,
-    0x0B76, 0x04AF,
-    0x0B78, 0x3FD8,
-    0x0B7A, 0x5636,
-    0x0B7C, 0x1C9B,
-    0x0B7E, 0x7897,
-    0x0B80, 0xA732,
-    0x0B82, 0x79C3,
-    0x0B84, 0x0AF9,
-    0x0B86, 0x8E98,
-    0x0B88, 0x34FB,
-    0x0B8A, 0xCBFB,
-    0x0B8C, 0x6EF6,
-    0x0B8E, 0xEBAC,
-    0x0B90, 0x99C9,
-    0x0B92, 0x54C2,
-    0x0B94, 0x4BA5,
-    0x0B96, 0x8219,
-    0x0B98, 0xAC76,
-    0x0B9A, 0xCD1F,
-    0x0B9C, 0xB43D,
-    0x0B9E, 0x27A3,
-    0x0BA0, 0xD3FE,
-    0x0BA2, 0xF219,
-    0x0BA4, 0x4AE5,
-    0x0BA6, 0x189B,
-    0x0BA8, 0xBDDA,
-    0x0BAA, 0x1F9B,
-    0x0BAC, 0x384C,
-    0x0BAE, 0xEEA8,
-    0x0BB0, 0x5D6B,
-    0x0BB2, 0x1412,
-    0x0BB4, 0xB9C9,
-    0x0BB6, 0x1532,
-    0x0BB8, 0x07FC,
-    0x0BBA, 0x250F,
-    0x0BBC, 0xE0D5,
-    0x0BBE, 0x21B9,
-    0x0BC0, 0x29C1,
-    0x0BC2, 0xB54A,
-    0x0BC4, 0x4329,
-    0x0BC6, 0x457C,
-    0x0BC8, 0xF6AF,
-    0x0BCA, 0x5AC3,
-    0x0BCC, 0xE876,
-    0x0BCE, 0xB481,
-    0x0BD0, 0xFB92,
-    0x0BD2, 0x73DD,
-    0x0BD4, 0x0E5B,
-    0x0BD6, 0xD923,
-    0x0BD8, 0x98F0,
-    0x0BDA, 0x8C83,
-    0x0BDC, 0x98BE,
-    0x0BDE, 0x4EA8,
-    0x0BE0, 0x93E6,
-    0x0BE2, 0x2C7A,
-    0x0BE4, 0xC91B,
-    0x0BE6, 0x61AA,
-    0x0BE8, 0x4F03,
-    0x0BEA, 0x540A,
-    0x0BEC, 0xB0AB,
-    0x0BEE, 0x8E91,
-    0x0BF0, 0x4C67,
-    0x0BF2, 0x2CF7,
-    0x0BF4, 0xEE69,
-    0x0BF6, 0x2C93,
-    0x0BF8, 0xD2B7,
-    0x0BFA, 0x512D,
-    0x0BFC, 0x104E,
-    0x0BFE, 0xE5C8,
-    0x0C00, 0x6827,
-    0x0C02, 0xC82F,
-    0x0C04, 0x8F88,
-    0x0C06, 0xB487,
-    0x0C08, 0x066B,
-    0x0C0A, 0x9668,
-    0x0C0C, 0x6D2D,
-    0x0C0E, 0x0E72,
-    0x0C10, 0x0DEE,
-    0x0C12, 0xDB72,
-    0x0C14, 0x9425,
-    0x0C16, 0x6CF0,
-    0x0C18, 0xAE4E,
-    0x0C1A, 0x99EF,
-    0x0C1C, 0x4D17,
-    0x0C1E, 0xC9DA,
-    0x0C20, 0x0265,
-    0x0C22, 0x9D64,
-    0x0C24, 0x973F,
-    0x0C26, 0x06F2,
-    0x0C28, 0x5FEA,
-    0x0C2A, 0xB583,
-    0x0C2C, 0xEA27,
-    0x0C2E, 0x16B2,
-    0x0C30, 0x8769,
-    0x0C32, 0xD6CD,
-    0x0C34, 0xF0E9,
-    0x0C36, 0xCF91,
-    0x0C38, 0xB241,
-    0x0C3A, 0x9E74,
-    0x0C3C, 0x353F,
-    0x0C3E, 0x4E26,
-    0x0C40, 0x9159,
-    0x0C42, 0x390E,
-    0x0C44, 0x3A25,
-    0x0C46, 0x79DE,
-    0x0C48, 0x8643,
-    0x0C4A, 0xCA74,
-    0x0C4C, 0x6F07,
-    0x0C4E, 0x2BC9,
-    0x0C50, 0x042C,
-    0x0C52, 0xE6D6,
-    0x0C54, 0x2720,
-    0x0C56, 0x6774,
-    0x0C58, 0x377E,
-    0x0C5A, 0x51FC,
-    0x0C5C, 0x3651,
-    0x0C5E, 0x2C6E,
-    0x0C60, 0x85B6,
-    0x0C62, 0xCEBB,
-    0x0C64, 0xC198,
-    0x0C66, 0x9DC9,
-    0x0C68, 0x2CF7,
-    0x0C6A, 0x2DB4,
-    0x0C6C, 0x462C,
-    0x0C6E, 0x29CD,
-    0x0C70, 0x2742,
-    0x0C72, 0xE006,
-    0x0C74, 0x45C4,
-    0x0C76, 0x73BA,
-    0x0C78, 0x25B5,
-    0x0C7A, 0x8E1E,
-    0x0C7C, 0x3556,
-    0x0C7E, 0x1622,
-    0x0C80, 0xEBCC,
-    0x0C82, 0xF7F5,
-    0x0C84, 0x090A,
-    0x0C86, 0xC07B,
-    0x0C88, 0x8312,
-    0x0C8A, 0xE095,
-    0x0C8C, 0x79C9,
-    0x0C8E, 0x7D9A,
-    0x0C90, 0x74B0,
-    0x0C92, 0xE92C,
-    0x0C94, 0xE746,
-    0x0C96, 0x71E4,
-    0x0C98, 0xDFFC,
-    0x0C9A, 0x7849,
-    0x0C9C, 0xA02C,
-    0x0C9E, 0x53D6,
-    0x0CA0, 0xD2CF,
-    0x0CA2, 0x6BEA,
-    0x0CA4, 0xB8FE,
-    0x0CA6, 0x7432,
-    0x0CA8, 0x00D1,
-    0x0CAA, 0x08AE,
-    0x0CAC, 0x8B75,
-    0x0CAE, 0xBC80,
-    0x0CB0, 0x549F,
-    0x0CB2, 0x54D8,
-    0x0CB4, 0xB2B1,
-    0x0CB6, 0x2144,
-    0x0CB8, 0xBEA7,
-    0x0CBA, 0xF6EB,
-    0x0CBC, 0x1CCD,
-    0x0CBE, 0x00B2,
-    0x0CC0, 0x328A,
-    0x0CC2, 0x5A1B,
-    0x0CC4, 0xA27B,
-    0x0CC6, 0xA1B3,
-    0x0CC8, 0xA571,
-    0x0CCA, 0x0645,
-    0x0CCC, 0x420E,
-    0x0CCE, 0xC4E2,
-    0x0CD0, 0xAA4E,
-    0x0CD2, 0x0C86,
-    0x0CD4, 0xC630,
-    0x0CD6, 0x44D8,
-    0x0CD8, 0x6DD0,
-    0x0CDA, 0xDFCE,
-    0x0CDC, 0xB4E7,
-    0x0CDE, 0xC405,
-    0x0CE0, 0x991E,
-    0x0CE2, 0xCC13,
-    0x0CE4, 0x04CE,
-    0x0CE6, 0x5874,
-    0x0CE8, 0x8294,
-    0x0CEA, 0x79FF,
-    0x0CEC, 0x36EA,
-    0x0CEE, 0x7F7D,
-    0x0CF0, 0x8C2E,
-    0x0CF2, 0x8B31,
-    0x0CF4, 0xC62E,
-    0x0CF6, 0xCA8F,
-    0x0CF8, 0x1711,
-    0x0CFA, 0xE49B,
-    0x0CFC, 0xEFEF,
-    0x0CFE, 0x7E3E,
-    0x0D00, 0x7FCA,
-    0x0D02, 0xA310,
-    0x0D04, 0x7282,
-    0x0D06, 0x8185,
-    0x0D08, 0x583E,
-    0x0D0A, 0x8C1A,
-    0x0D0C, 0x8B86,
-    0x0D0E, 0x4BBB,
-    0x0D10, 0xA752,
-    0x0D12, 0x03DE,
-    0x0D14, 0x271D,
-    0x0D16, 0x79BC,
-    0x0D18, 0x58B1,
-    0x0D1A, 0xE5B3,
-    0x0D1C, 0xB501,
-    0x0D1E, 0x3FDB,
-    0x0D20, 0xCDB0,
-    0x0D22, 0x6302,
-    0x0D24, 0xDED0,
-    0x0D26, 0xC7D6,
-    0x0D28, 0x921C,
-    0x0D2A, 0x90E7,
-    0x0D2C, 0xB9FF,
-    0x0D2E, 0x688E,
-    0x0D30, 0x4974,
-    0x0D32, 0x5783,
-    0x0D34, 0x2262,
-    0x0D36, 0xAAEB,
-    0x0D38, 0xD355,
-    0x0D3A, 0x89A1,
-    0x0D3C, 0x2532,
-    0x0D3E, 0xD8B0,
-    0x0D40, 0xD2CC,
-    0x0D42, 0x31A3,
-    0x0D44, 0x623C,
-    0x0D46, 0xBAB9,
-    0x0D48, 0xB2CF,
-    0x0D4A, 0xAD11,
-    0x0D4C, 0x18E1,
-    0x0D4E, 0x472B,
-    0x0D50, 0xCAD4,
-    0x0D52, 0xA1D9,
-    0x0D54, 0xA2A2,
-    0x0D56, 0xE25A,
-    0x0D58, 0x6ACE,
-    0x0D5A, 0x2BC1,
-    0x0D5C, 0xD094,
-    0x0D5E, 0x87E0,
-    0x0D60, 0x859D,
-    0x0D62, 0x8AA9,
-    0x0D64, 0x2F22,
-    0x0D66, 0x7FEB,
-    0x0D68, 0x0D44,
-    0x0D6A, 0x98CA,
-    0x0D6C, 0x8848,
-    0x0D6E, 0x8867,
-    0x0D70, 0xFAFF,
-    0x0D72, 0xAC5C,
-    0x0D74, 0x0A7F,
-    0x0D76, 0x40F2,
-    0x0D78, 0x9FA8,
-    0x0D7A, 0x437C,
-    0x0D7C, 0xCD21,
-    0x0D7E, 0x6DB5,
-    0x0D80, 0x0C1C,
-    0x0D82, 0xB90C,
-    0x0D84, 0x38B0,
-    0x0D86, 0xA28C,
-    0x0D88, 0x7506,
-    0x0D8A, 0x1DAA,
-    0x0D8C, 0xAC97,
-    0x0D8E, 0x80F0,
-    0x0D90, 0x93D9,
-    0x0D92, 0xC540,
-    0x0D94, 0x9DD5,
-    0x0D96, 0xCF91,
-    0x0D98, 0x43EE,
-    0x0D9A, 0x2F21,
-    0x0D9C, 0xF470,
-    0x0D9E, 0xB006,
-    0x0DA0, 0xF3FE,
-    0x0DA2, 0xAA68,
-    0x0DA4, 0x6B8D,
-    0x0DA6, 0x6162,
-    0x0DA8, 0xC310,
-    0x0DAA, 0xD526,
-    0x0DAC, 0xB301,
-    0x0DAE, 0x6669,
-    0x0DB0, 0x6EDD,
-    0x0DB2, 0xF5C0,
-    0x0DB4, 0xF3A9,
-    0x0DB6, 0x081B,
-    0x0DB8, 0xA04D,
-    0x0DBA, 0x17D1,
-    0x0DBC, 0x4C3E,
-    0x0DBE, 0xDC31,
-    0x0DC0, 0xE71C,
-    0x0DC2, 0xFD81,
-    0x0DC4, 0x7525,
-    0x0DC6, 0xAF0F,
-    0x0DC8, 0x23C2,
-    0x0DCA, 0x556F,
-    0x0DCC, 0x2B1D,
-    0x0DCE, 0x3F33,
-    0x0DD0, 0xF3DC,
-    0x0DD2, 0x8D28,
-    0x0DD4, 0x7A78,
-    0x0DD6, 0x1847,
-    0x0DD8, 0x74A3,
-    0x0DDA, 0x702A,
-    0x0DDC, 0xA3F7,
-    0x0DDE, 0x5E13,
-    0x0DE0, 0xB976,
-    0x0DE2, 0x434F,
-    0x0DE4, 0xEB3A,
-    0x0DE6, 0xCDFB,
-    0x0DE8, 0x28CC,
-    0x0DEA, 0x7A96,
-    0x0DEC, 0x636D,
-    0x0DEE, 0x9449,
-    0x0DF0, 0x247F,
-    0x0DF2, 0x219F,
-    0x0DF4, 0x6A61,
-    0x0DF6, 0x63F9,
-    0x0DF8, 0xF656,
-    0x0DFA, 0x131B,
-    0x0DFC, 0xC91B,
-    0x0DFE, 0x564A,
-    0x0E00, 0xEE1F,
-    0x0E02, 0xCAE8,
-    0x0E04, 0x930E,
-    0x0E06, 0x1275,
-    0x0E08, 0xC1F1,
-    0x0E0A, 0x2DD1,
-    0x0E0C, 0x7F86,
-    0x0E0E, 0xE58D,
-    0x0E10, 0xB3A7,
-    0x0E12, 0x42BD,
-    0x0E14, 0x568B,
-    0x0E16, 0xC7BD,
-    0x0E18, 0xDA46,
-    0x0E1A, 0x5DD1,
-    0x0E1C, 0x2E61,
-    0x0E1E, 0xFBB3,
-    0x0E20, 0x9D11,
-    0x0E22, 0xC609,
-    0x0E24, 0xC843,
-    0x0E26, 0x757F,
-    0x0E28, 0x6CEE,
-    0x0E2A, 0x0B41,
-    0x0E2C, 0xED81,
-    0x0E2E, 0x4EA7,
-    0x0E30, 0xD5C9,
-    0x0E32, 0x4FB1,
-    0x0E34, 0x6020,
-    0x0E36, 0xFB8D,
-    0x0E38, 0x9002,
-    0x0E3A, 0x9F01,
-    0x0E3C, 0x145D,
-    0x0E3E, 0xD0D9,
-    0x0E40, 0x708C,
-    0x0E42, 0x4E5C,
-    0x0E44, 0x3D97,
-    0x0E46, 0x214D,
-    0x0E48, 0x0D0B,
-    0x0E4A, 0x55E1,
-    0x0E4C, 0x3356,
-    0x0E4E, 0x48D7,
-    0x0E50, 0x81F9,
-    0x0E52, 0xDD48,
-    0x0E54, 0x69A9,
-    0x0E56, 0x575B,
-    0x0E58, 0xA1DC,
-    0x0E5A, 0x9F4D,
-    0x0E5C, 0x4590,
-    0x0E5E, 0x0A24,
-    0x0E60, 0x39E5,
-    0x0E62, 0x5130,
-    0x0E64, 0x0361,
-    0x0E66, 0x67DD,
-    0x0E68, 0xD9CF,
-    0x0E6A, 0x1938,
-    0x0E6C, 0x56AC,
-    0x0E6E, 0xD1A3,
-    0x0E70, 0xDEB5,
-    0x0E72, 0xFD36,
-    0x0E74, 0x8818,
-    0x0E76, 0xB87E,
-    0x0E78, 0xB2A0,
-    0x0E7A, 0x07BD,
-    0x0E7C, 0x1F65,
-    0x0E7E, 0x72A6,
-    0x0E80, 0x24A3,
-    0x0E82, 0x6763,
-    0x0E84, 0xDDD8,
-    0x0E86, 0x3A57,
-    0x0E88, 0x6269,
-    0x0E8A, 0x661C,
-    0x0E8C, 0xC948,
-    0x0E8E, 0x9BAD,
-    0x0E90, 0xB31A,
-    0x0E92, 0xBA45,
-    0x0E94, 0x17A8,
-    0x0E96, 0x6C14,
-    0x0E98, 0xCE2B,
-    0x0E9A, 0x6C46,
-    0x0E9C, 0x74DD,
-    0x0E9E, 0x8FF7,
-    0x0EA0, 0x6D3F,
-    0x0EA2, 0xE6B4,
-    0x0EA4, 0x01E0,
-    0x0EA6, 0xD215,
-    0x0EA8, 0x8F82,
-    0x0EAA, 0x153F,
-    0x0EAC, 0xD51F,
-    0x0EAE, 0x81A5,
-    0x0EB0, 0x6F10,
-    0x0EB2, 0x992E,
-    0x0EB4, 0x374B,
-    0x0EB6, 0x7DC0,
-    0x0EB8, 0x36B6,
-    0x0EBA, 0x0774,
-    0x0EBC, 0xD451,
-    0x0EBE, 0x0D84,
-    0x0EC0, 0xE9F6,
-    0x0EC2, 0x0BC3,
-    0x0EC4, 0xC93B,
-    0x0EC6, 0x3FA9,
-    0x0EC8, 0xAB4F,
-    0x0ECA, 0xCA75,
-    0x0ECC, 0x8091,
-    0x0ECE, 0x944B,
-    0x0ED0, 0xA32C,
-    0x0ED2, 0xE277,
-    0x0ED4, 0x03DB,
-    0x0ED6, 0x31A0,
-    0x0ED8, 0x6250,
-    0x0EDA, 0x8F4C,
-    0x0EDC, 0xB736,
-    0x0EDE, 0x054A,
-    0x0EE0, 0x187A,
-    0x0EE2, 0x040A,
-    0x0EE4, 0x1705,
-    0x0EE6, 0x4908,
-    0x0EE8, 0x4BB3,
-    0x0EEA, 0xCD17,
-    0x0EEC, 0x24AE,
-    0x0EEE, 0x9713,
-    0x0EF0, 0x4CDF,
-    0x0EF2, 0x737E,
-    0x0EF4, 0x20EC,
-    0x0EF6, 0xA9D0,
-    0x0EF8, 0xD5A5,
-    0x0EFA, 0x1D2A,
-    0x0EFC, 0x430E,
-    0x0EFE, 0xDBCD,
-    0x0F00, 0x817C,
-    0x0F02, 0xC8C1,
-    0x0F04, 0x7404,
-    0x0F06, 0x7D6C,
-    0x0F08, 0x995D,
-    0x0F0A, 0xE04D,
-    0x0F0C, 0xFE0F,
-    0x0F0E, 0x5A53,
-    0x0F10, 0x66FB,
-    0x0F12, 0xA44F,
-    0x0F14, 0x974C,
-    0x0F16, 0xFC9C,
-    0x0F18, 0x8094,
-    0x0F1A, 0x8336,
-    0x0F1C, 0x7A9F,
-    0x0F1E, 0xF001,
-    0x0F20, 0x12F4,
-    0x0F22, 0x8229,
-    0x0F24, 0x72AC,
-    0x0F26, 0x7325,
-    0x0F28, 0x7B83,
-    0x0F2A, 0xA7B6,
-    0x0F2C, 0xA321,
-    0x0F2E, 0x06BF,
-    0x0F30, 0x619A,
-    0x0F32, 0xF447,
-    0x0F34, 0x2D75,
-    0x0F36, 0xED14,
-    0x0F38, 0xD7CB,
-    0x0F3A, 0xE23F,
-    0x0F3C, 0x09E5,
-    0x0F3E, 0xA197,
-    0x0F40, 0xD4CE,
-    0x0F42, 0xCC6B,
-    0x0F44, 0x2131,
-    0x0F46, 0x7D66,
-    0x0F48, 0x9365,
-    0x0F4A, 0x69F1,
-    0x0F4C, 0x83B0,
-    0x0F4E, 0x079B,
-    0x0F50, 0x686C,
-    0x0F52, 0x3CC6,
-    0x0F54, 0x1B13,
-    0x0F56, 0xA9B4,
-    0x0F58, 0x9D80,
-    0x0F5A, 0xC254,
-    0x0F5C, 0x33AA,
-    0x0F5E, 0xBF70,
-    0x0F60, 0x24CF,
-    0x0F62, 0xBE2E,
-    0x0F64, 0x08DB,
-    0x0F66, 0x64FB,
-    0x0F68, 0xDB86,
-    0x0F6A, 0xCB96,
-    0x0F6C, 0xFD4A,
-    0x0F6E, 0x8BBE,
-    0x0F70, 0xF49A,
-    0x0F72, 0x19F3,
-    0x0F74, 0x37EE,
-    0x0F76, 0x2357,
-    0x0F78, 0xEF2F,
-    0x0F7A, 0x96AF,
-    0x0F7C, 0x9F88,
-    0x0F7E, 0x18CC,
-    0x0F80, 0xC716,
-    0x0F82, 0xA30C,
-    0x0F84, 0x218B,
-    0x0F86, 0x2351,
-    0x0F88, 0xF723,
-    0x0F8A, 0xCED1,
-    0x0F8C, 0xC632,
-    0x0F8E, 0x32D1,
-    0x0F90, 0xEBF0,
-    0x0F92, 0xE1A5,
-    0x0F94, 0x2E18,
-    0x0F96, 0xB357,
-    0x0F98, 0x9893,
-    0x0F9A, 0xF00F,
-    0x0F9C, 0x917A,
-    0x0F9E, 0x84F3,
-    0x0FA0, 0x6CF5,
-    0x0FA2, 0x8667,
-    0x0FA4, 0x1DBE,
-    0x0FA6, 0xE993,
-    0x0FA8, 0x4B9F,
-    0x0FAA, 0xD5FC,
-    0x0FAC, 0xF07A,
-    0x0FAE, 0x884D,
-    0x0FB0, 0xF19D,
-    0x0FB2, 0x8CA2,
-    0x0FB4, 0x62D3,
-    0x0FB6, 0x1849,
-    0x0FB8, 0x7C2D,
-    0x0FBA, 0x83DF,
-    0x0FBC, 0xD127,
-    0x0FBE, 0x497F,
-    0x0FC0, 0x7695,
-    0x0FC2, 0x93E7,
-    0x0FC4, 0x4247,
-    0x0FC6, 0x2DC3,
-    0x0FC8, 0xAFC3,
-    0x0FCA, 0x6A4A,
-    0x0FCC, 0x7DDB,
-    0x0FCE, 0x7A43,
-    0x0FD0, 0x0DF5,
-    0x0FD2, 0x01A0,
-    0x0FD4, 0x0C9F,
-    0x0FD6, 0x3ADE,
-    0x0FD8, 0xAADA,
-    0x0FDA, 0x41F1,
-    0x0FDC, 0x40F7,
-    0x0FDE, 0x9E9D,
-    0x0FE0, 0xBB33,
-    0x0FE2, 0x5392,
-    0x0FE4, 0x0403,
-    0x0FE6, 0x09EB,
-    0x0FE8, 0x9482,
-    0x0FEA, 0x0E93,
-    0x0FEC, 0x7B69,
-    0x0FEE, 0xE45A,
-    0x0FF0, 0x22C4,
-    0x0FF2, 0xEE57,
-    0x0FF4, 0x21CD,
-    0x0FF6, 0x4AAE,
-    0x0FF8, 0x716F,
-    0x0FFA, 0x97ED,
-    0x0FFC, 0xB468,
-    0x0FFE, 0x92F0,
-    0x1000, 0x191C,
-    0x1002, 0xFDB4,
-    0x1004, 0x4B3E,
-    0x1006, 0xD331,
-    0x1008, 0x52DD,
-    0x100A, 0x1A41,
-    0x100C, 0xBE19,
-    0x100E, 0xBBDE,
-    0x1010, 0xC01D,
-    0x1012, 0xE2F9,
-    0x1014, 0x1E75,
-    0x1016, 0xCCBE,
-    0x1018, 0xDE75,
-    0x101A, 0xB9C3,
-    0x101C, 0x3C7D,
-    0x101E, 0x087F,
-    0x1020, 0x7EA8,
-    0x1022, 0x9F0D,
-    0x1024, 0x1F22,
-    0x1026, 0x1DF5,
-    0x1028, 0x6C54,
-    0x102A, 0xBCB2,
-    0x102C, 0x4A67,
-    0x102E, 0xC913,
-    0x1030, 0x00B4,
-    0x1032, 0xC532,
-    0x1034, 0xDFD6,
-    0x1036, 0x1A59,
-    0x1038, 0x2A39,
-    0x103A, 0x5F66,
-    0x103C, 0xA849,
-    0x103E, 0x8566,
-    0x1040, 0xD52A,
-    0x1042, 0xFB09,
-    0x1044, 0x53AA,
-    0x1046, 0xCD37,
-    0x1048, 0x7893,
-    0x104A, 0xEB40,
-    0x104C, 0x4DD5,
-    0x104E, 0x25C6,
-    0x1050, 0x9B9F,
-    0x1052, 0x34DC,
-    0x1054, 0xA6D6,
-    0x1056, 0x338A,
-    0x1058, 0x3767,
-    0x105A, 0x5CB3,
-    0x105C, 0x2409,
-    0x105E, 0x0556,
-    0x1060, 0x1DF4,
-    0x1062, 0xBB6D,
-    0x1064, 0xD7EB,
-    0x1066, 0x3F9C,
-    0x1068, 0xAE67,
-    0x106A, 0x6F8C,
-    0x106C, 0x0F60,
-    0x106E, 0xEBB1,
-    0x1070, 0x76F3,
-    0x1072, 0x100B,
-    0x1074, 0xCC3E,
-    0x1076, 0xC963,
-    0x1078, 0x57EC,
-    0x107A, 0xB0CF,
-    0x107C, 0x3724,
-    0x107E, 0xBE70,
-    0x1080, 0x9153,
-    0x1082, 0x0F48,
-    0x1084, 0x365D,
-    0x1086, 0xBFA4,
-    0x1088, 0x2029,
-    0x108A, 0x45CA,
-    0x108C, 0x595C,
-    0x108E, 0x8CF7,
-    0x1090, 0x7ACF,
-    0x1092, 0xB231,
-    0x1094, 0x4C9B,
-    0x1096, 0x53B8,
-    0x1098, 0x74F2,
-    0x109A, 0x1969,
-    0x109C, 0x0D8E,
-    0x109E, 0xC423,
-    0x10A0, 0xE5A9,
-    0x10A2, 0xB7C3,
-    0x10A4, 0x0ED4,
-    0x10A6, 0xDB9D,
-    0x10A8, 0xE8F6,
-    0x10AA, 0x91A3,
-    0x10AC, 0xFF96,
-    0x10AE, 0xE8E0,
-    0x10B0, 0xC3C1,
-    0x10B2, 0xE0F7,
-    0x10B4, 0x9E36,
-    0x10B6, 0x5985,
-    0x10B8, 0x9FA0,
-    0x10BA, 0x01D7,
-    0x10BC, 0x454B,
-    0x10BE, 0x524E,
-    0x10C0, 0xE5ED,
-    0x10C2, 0xCC42,
-    0x10C4, 0xEB0A,
-    0x10C6, 0x6833,
-    0x10C8, 0x23F8,
-    0x10CA, 0xA152,
-    0x10CC, 0xB153,
-    0x10CE, 0x54F6,
-    0x10D0, 0xCE7C,
-    0x10D2, 0x8FCC,
-    0x10D4, 0x8185,
-    0x10D6, 0xFD5C,
-    0x10D8, 0x1892,
-    0x10DA, 0xD6A4,
-    0x10DC, 0x4635,
-    0x10DE, 0x9ECD,
-    0x10E0, 0x4844,
-    0x10E2, 0x243F,
-    0x10E4, 0xDDCE,
-    0x10E6, 0xBD84,
-    0x10E8, 0x2370,
-    0x10EA, 0x69FA,
-    0x10EC, 0x939E,
-    0x10EE, 0x6D16,
-    0x10F0, 0x35AF,
-    0x10F2, 0x054B,
-    0x10F4, 0x4E51,
-    0x10F6, 0xED90,
-    0x10F8, 0x64FB,
-    0x10FA, 0xB9BD,
-    0x10FC, 0x73FF,
-    0x10FE, 0x3CCE,
-    0x1100, 0x3378,
-    0x1102, 0xEFBB,
-    0x1104, 0x306F,
-    0x1106, 0x5E46,
-    0x1108, 0x62F6,
-    0x110A, 0x41C9,
-    0x110C, 0xD184,
-    0x110E, 0xCA57,
-    0x1110, 0x01FF,
-    0x1112, 0x63C7,
-    0x1114, 0xE97C,
-    0x1116, 0x3F87,
-    0x1118, 0x3F32,
-    0x111A, 0x1947,
-    0x111C, 0x6E53,
-    0x111E, 0x9460,
-    0x1120, 0xD02D,
-    0x1122, 0x47D1,
-    0x1124, 0x7855,
-    0x1126, 0xD96B,
-    0x1128, 0xCC29,
-    0x112A, 0x2118,
-    0x112C, 0x433F,
-    0x112E, 0xBBFD,
-    0x1130, 0xBC6C,
-    0x1132, 0x1C87,
-    0x1134, 0x1DBE,
-    0x1136, 0xE6B0,
-    0x1138, 0x7D65,
-    0x113A, 0xE509,
-    0x113C, 0x9162,
-    0x113E, 0xBC19,
-    0x1140, 0x5B33,
-    0x1142, 0x7C47,
-    0x1144, 0x6CBC,
-    0x1146, 0x4F34,
-    0x1148, 0xDD7C,
-    0x114A, 0x7799,
-    0x114C, 0xB943,
-    0x114E, 0x424A,
-    0x1150, 0xE94B,
-    0x1152, 0xC8E4,
-    0x1154, 0xBE5C,
-    0x1156, 0x54C9,
-    0x1158, 0x43AD,
-    0x115A, 0x602A,
-    0x115C, 0x3CC7,
-    0x115E, 0xFF9B,
-    0x1160, 0x14D2,
-    0x1162, 0x0773,
-    0x1164, 0xD8F9,
-    0x1166, 0xCE7E,
-    0x1168, 0x91B3,
-    0x116A, 0xA609,
-    0x116C, 0x4FF4,
-    0x116E, 0xC155,
-    0x1170, 0x022C,
-    0x1172, 0x4B95,
-    0x1174, 0xB17B,
-    0x1176, 0xBF8D,
-    0x1178, 0x2A3E,
-    0x117A, 0xE7D5,
-    0x117C, 0xEAB8,
-    0x117E, 0xB7A1,
-    0x1180, 0x54CA,
-    0x1182, 0x89F8,
-    0x1184, 0x892A,
-    0x1186, 0xE229,
-    0x1188, 0x0440,
-    0x118A, 0x8568,
-    0x118C, 0x48E6,
-    0x118E, 0x9459,
-    0x1190, 0xBC85,
-    0x1192, 0xC3B5,
-    0x1194, 0xEDFC,
-    0x1196, 0x74E4,
-    0x1198, 0x3501,
-    0x119A, 0xA871,
-    0x119C, 0x2371,
-    0x119E, 0xA419,
-    0x11A0, 0x8A29,
-    0x11A2, 0x34D8,
-    0x11A4, 0x1EE5,
-    0x11A6, 0xC56A,
-    0x11A8, 0xB7BE,
-    0x11AA, 0x1CAE,
-    0x11AC, 0xDBC0,
-    0x11AE, 0x7CB4,
-    0x11B0, 0xDDBD,
-    0x11B2, 0x19C3,
-    0x11B4, 0xA114,
-    0x11B6, 0x43FB,
-    0x11B8, 0x0E23,
-    0x11BA, 0x1395,
-    0x11BC, 0xED60,
-    0x11BE, 0x2C7C,
-    0x11C0, 0xCEC7,
-    0x11C2, 0x21E4,
-    0x11C4, 0xFBFE,
-    0x11C6, 0x3D09,
-    0x11C8, 0x0000,
-    0xFCFC, 0x4000,
-};
-
-/*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-static u16 konkauwide_preview_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x5804,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x0010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFD02,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0003,
-    0x1C58, 0xF004,
-    0x1C5A, 0x0010,
-    0x1C5C, 0x3110,
-    0x1C5E, 0x0005,
-    0x1C60, 0x00A0,
-    0x1C62, 0x6E10,
-    0x1C64, 0x6E10,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFD02,
-    0x1C7A, 0x0010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0003,
-    0x1C80, 0xF004,
-    0x1C82, 0x0010,
-    0x1C84, 0x3110,
-    0x1C86, 0x0005,
-    0x1C88, 0x00A0,
-    0x1C8A, 0x6610,
-    0x1C8C, 0x6610,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x0010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x0001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x0010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x0001,
-    0x1CF0, 0xFD02,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0003,
-    0x1CF8, 0xF004,
-    0x1CFA, 0x0010,
-    0x1CFC, 0x3110,
-    0x1CFE, 0x0005,
-    0x1D00, 0x00A0,
-    0x1D02, 0x6E10,
-    0x1D04, 0x6E10,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0001,
-    0x1D18, 0xFD02,
-    0x1D1A, 0x0010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0003,
-    0x1D20, 0xF004,
-    0x1D22, 0x0010,
-    0x1D24, 0x3110,
-    0x1D26, 0x0005,
-    0x1D28, 0x00A0,
-    0x1D2A, 0x6610,
-    0x1D2C, 0x6610,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0001,
-    0x1D40, 0xF004,
-    0x1D42, 0x0010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0A00,
-    0x1E18, 0x0A00,
-    0x1E26, 0x0A00,
-    0x1E28, 0x0A00,
-    0x1DF2, 0x1600,
-    0x1DF4, 0x1600,
-    0x1E02, 0x1600,
-    0x1E04, 0x1600,
-    0x1E12, 0x0800,
-    0x1E14, 0x0800,
-    0x1E22, 0x0800,
-    0x1E24, 0x0800,
-    0x1DF6, 0x1100,
-    0x1DF8, 0x1100,
-    0x1E06, 0x1100,
-    0x1E08, 0x1100,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0040,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0101,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-static u16 konkauwide_capture_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x5804,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x0010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFD02,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0003,
-    0x1C58, 0xF004,
-    0x1C5A, 0x0010,
-    0x1C5C, 0x3110,
-    0x1C5E, 0x0005,
-    0x1C60, 0x00A0,
-    0x1C62, 0x6E10,
-    0x1C64, 0x6E10,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFD02,
-    0x1C7A, 0x0010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0003,
-    0x1C80, 0xF004,
-    0x1C82, 0x0010,
-    0x1C84, 0x3110,
-    0x1C86, 0x0005,
-    0x1C88, 0x00A0,
-    0x1C8A, 0x6610,
-    0x1C8C, 0x6610,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x0010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x0001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x0010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x0001,
-    0x1CF0, 0xFD02,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0003,
-    0x1CF8, 0xF004,
-    0x1CFA, 0x0010,
-    0x1CFC, 0x3110,
-    0x1CFE, 0x0005,
-    0x1D00, 0x00A0,
-    0x1D02, 0x6E10,
-    0x1D04, 0x6E10,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0001,
-    0x1D18, 0xFD02,
-    0x1D1A, 0x0010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0003,
-    0x1D20, 0xF004,
-    0x1D22, 0x0010,
-    0x1D24, 0x3110,
-    0x1D26, 0x0005,
-    0x1D28, 0x00A0,
-    0x1D2A, 0x6610,
-    0x1D2C, 0x6610,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0001,
-    0x1D40, 0xF004,
-    0x1D42, 0x0010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0A00,
-    0x1E18, 0x0A00,
-    0x1E26, 0x0A00,
-    0x1E28, 0x0A00,
-    0x1DF2, 0x1600,
-    0x1DF4, 0x1600,
-    0x1E02, 0x1600,
-    0x1E04, 0x1600,
-    0x1E12, 0x0800,
-    0x1E14, 0x0800,
-    0x1E22, 0x0800,
-    0x1E24, 0x0800,
-    0x1DF6, 0x1100,
-    0x1DF8, 0x1100,
-    0x1E06, 0x1100,
-    0x1E08, 0x1100,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0040,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0101,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/*05_OceanDX4_09_JN5_Fdsum_4K_4096x2304_30fps_3056Msps*/
-static u16 konkauwide_normal_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x5209,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x4A00,
-    0xD4B0, 0x9A01,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x0010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x1010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x7810,
-    0x1C5C, 0x7810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2810,
-    0x1C7C, 0xFE0F,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x6610,
-    0x1C84, 0x6610,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x1010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x0010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x1010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x7810,
-    0x1CFC, 0x7810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2810,
-    0x1D1C, 0xFE0F,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x6610,
-    0x1D24, 0x6610,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x1010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x1300,
-    0x1E18, 0x1300,
-    0x1E26, 0x1300,
-    0x1E28, 0x1300,
-    0x1DF2, 0x0A00,
-    0x1DF4, 0x0A00,
-    0x1E02, 0x0A00,
-    0x1E04, 0x0A00,
-    0x1E12, 0x0F00,
-    0x1E14, 0x0F00,
-    0x1E22, 0x0F00,
-    0x1E24, 0x0F00,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0020,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0030,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0101,
-    0xF6F2, 0x000B,
-    0xF6F4, 0x0014,
-    0xF6F6, 0x0012,
-    0xF6F8, 0x0010,
-    0xF6FA, 0x000B,
-    0xF6FC, 0x0006,
-    0xF6FE, 0x0001,
-    0xF700, 0xFFF6,
-    0xF702, 0xFFEF,
-    0xF704, 0xFFE3,
-    0xF706, 0xFFD9,
-    0xF708, 0xFFCD,
-    0xF70A, 0xFFC3,
-    0xF70C, 0xFFB8,
-    0xF70E, 0xFFA9,
-    0xF710, 0xFF9B,
-    0xF712, 0xFF93,
-    0xF714, 0x0015,
-    0xF716, 0x0022,
-    0xF718, 0x0026,
-    0xF71A, 0x0020,
-    0xF71C, 0x001D,
-    0xF71E, 0x0016,
-    0xF720, 0x0011,
-    0xF722, 0x0009,
-    0xF724, 0xFFFF,
-    0xF726, 0xFFF5,
-    0xF728, 0xFFEB,
-    0xF72A, 0xFFE0,
-    0xF72C, 0xFFD2,
-    0xF72E, 0xFFC3,
-    0xF730, 0xFFB4,
-    0xF732, 0xFFA4,
-    0xF734, 0xFF9A,
-    0xF736, 0x0011,
-    0xF738, 0x0024,
-    0xF73A, 0x0024,
-    0xF73C, 0x0022,
-    0xF73E, 0x001E,
-    0xF740, 0x001B,
-    0xF742, 0x0014,
-    0xF744, 0x000D,
-    0xF746, 0x0004,
-    0xF748, 0xFFFA,
-    0xF74A, 0xFFEF,
-    0xF74C, 0xFFE0,
-    0xF74E, 0xFFD6,
-    0xF750, 0xFFC4,
-    0xF752, 0xFFB4,
-    0xF754, 0xFFA1,
-    0xF756, 0xFF96,
-    0xF758, 0x0016,
-    0xF75A, 0x0021,
-    0xF75C, 0x0026,
-    0xF75E, 0x0025,
-    0xF760, 0x001E,
-    0xF762, 0x001C,
-    0xF764, 0x0019,
-    0xF766, 0x000F,
-    0xF768, 0x0007,
-    0xF76A, 0xFFFD,
-    0xF76C, 0xFFF3,
-    0xF76E, 0xFFE4,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC7,
-    0xF774, 0xFFB5,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF97,
-    0xF77A, 0x0013,
-    0xF77C, 0x0025,
-    0xF77E, 0x0027,
-    0xF780, 0x0028,
-    0xF782, 0x0024,
-    0xF784, 0x0021,
-    0xF786, 0x001D,
-    0xF788, 0x0015,
-    0xF78A, 0x000B,
-    0xF78C, 0x0000,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE9,
-    0xF792, 0xFFDA,
-    0xF794, 0xFFCB,
-    0xF796, 0xFFB5,
-    0xF798, 0xFFA3,
-    0xF79A, 0xFF94,
-    0xF79C, 0x0012,
-    0xF79E, 0x0025,
-    0xF7A0, 0x0026,
-    0xF7A2, 0x0028,
-    0xF7A4, 0x0029,
-    0xF7A6, 0x0028,
-    0xF7A8, 0x0022,
-    0xF7AA, 0x0018,
-    0xF7AC, 0x0010,
-    0xF7AE, 0x0004,
-    0xF7B0, 0xFFFA,
-    0xF7B2, 0xFFE9,
-    0xF7B4, 0xFFDE,
-    0xF7B6, 0xFFCB,
-    0xF7B8, 0xFFB8,
-    0xF7BA, 0xFFA2,
-    0xF7BC, 0xFF93,
-    0xF7BE, 0x0013,
-    0xF7C0, 0x0025,
-    0xF7C2, 0x0029,
-    0xF7C4, 0x002D,
-    0xF7C6, 0x0031,
-    0xF7C8, 0x002E,
-    0xF7CA, 0x0027,
-    0xF7CC, 0x001F,
-    0xF7CE, 0x0012,
-    0xF7D0, 0x000D,
-    0xF7D2, 0xFFFF,
-    0xF7D4, 0xFFF4,
-    0xF7D6, 0xFFDF,
-    0xF7D8, 0xFFCF,
-    0xF7DA, 0xFFB8,
-    0xF7DC, 0xFFA4,
-    0xF7DE, 0xFF96,
-    0xF7E0, 0x0016,
-    0xF7E2, 0x0025,
-    0xF7E4, 0x0028,
-    0xF7E6, 0x002E,
-    0xF7E8, 0x0034,
-    0xF7EA, 0x002F,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001E,
-    0xF7F0, 0x0016,
-    0xF7F2, 0x000C,
-    0xF7F4, 0x0002,
-    0xF7F6, 0xFFF0,
-    0xF7F8, 0xFFE1,
-    0xF7FA, 0xFFCB,
-    0xF7FC, 0xFFB5,
-    0xF7FE, 0xFF9F,
-    0xF800, 0xFF95,
-    0xF802, 0x001A,
-    0xF804, 0x002A,
-    0xF806, 0x002F,
-    0xF808, 0x0035,
-    0xF80A, 0x003F,
-    0xF80C, 0x0037,
-    0xF80E, 0x002F,
-    0xF810, 0x0021,
-    0xF812, 0x001B,
-    0xF814, 0x0015,
-    0xF816, 0x000A,
-    0xF818, 0xFFF9,
-    0xF81A, 0xFFE7,
-    0xF81C, 0xFFCE,
-    0xF81E, 0xFFB7,
-    0xF820, 0xFFA2,
-    0xF822, 0xFF8F,
-    0xF824, 0x0020,
-    0xF826, 0x002E,
-    0xF828, 0x0036,
-    0xF82A, 0x0040,
-    0xF82C, 0x0045,
-    0xF82E, 0x003C,
-    0xF830, 0x0030,
-    0xF832, 0x0027,
-    0xF834, 0x0020,
-    0xF836, 0x0019,
-    0xF838, 0x0012,
-    0xF83A, 0x0002,
-    0xF83C, 0xFFEA,
-    0xF83E, 0xFFD5,
-    0xF840, 0xFFBA,
-    0xF842, 0xFFA1,
-    0xF844, 0xFF93,
-    0xF846, 0x001F,
-    0xF848, 0x0030,
-    0xF84A, 0x0035,
-    0xF84C, 0x003D,
-    0xF84E, 0x0049,
-    0xF850, 0x003D,
-    0xF852, 0x0030,
-    0xF854, 0x0025,
-    0xF856, 0x0020,
-    0xF858, 0x001A,
-    0xF85A, 0x0019,
-    0xF85C, 0x0006,
-    0xF85E, 0xFFED,
-    0xF860, 0xFFD3,
-    0xF862, 0xFFBA,
-    0xF864, 0xFFA0,
-    0xF866, 0xFF96,
-    0xF868, 0x0024,
-    0xF86A, 0x002E,
-    0xF86C, 0x0033,
-    0xF86E, 0x0040,
-    0xF870, 0x004C,
-    0xF872, 0x003D,
-    0xF874, 0x002E,
-    0xF876, 0x0023,
-    0xF878, 0x001D,
-    0xF87A, 0x001C,
-    0xF87C, 0x001B,
-    0xF87E, 0x0012,
-    0xF880, 0xFFF0,
-    0xF882, 0xFFD8,
-    0xF884, 0xFFBC,
-    0xF886, 0xFFA1,
-    0xF888, 0xFF8E,
-    0xF88A, 0x0017,
-    0xF88C, 0x0029,
-    0xF88E, 0x0028,
-    0xF890, 0x0037,
-    0xF892, 0x004A,
-    0xF894, 0x0032,
-    0xF896, 0x0024,
-    0xF898, 0x001A,
-    0xF89A, 0x0016,
-    0xF89C, 0x0013,
-    0xF89E, 0x001B,
-    0xF8A0, 0x0012,
-    0xF8A2, 0xFFF0,
-    0xF8A4, 0xFFD2,
-    0xF8A6, 0xFFB8,
-    0xF8A8, 0xFF9B,
-    0xF8AA, 0xFF90,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 08_OceanDX4_09_JN5_Fdsum_4K_4096x2304_60fps_3056Msps */
-static u16 konkauwide_hs_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x5209,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1400,
-    0xD4A8, 0x0200,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x0000,
-    0xD4BC, 0x6200,
-    0xD4B0, 0xD602,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0600,
-    0x1E18, 0x0600,
-    0x1E26, 0x0600,
-    0x1E28, 0x0600,
-    0x1DF2, 0x0C00,
-    0x1DF4, 0x0C00,
-    0x1E02, 0x0C00,
-    0x1E04, 0x0C00,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0C00,
-    0x1DF8, 0x0C00,
-    0x1E06, 0x0C00,
-    0x1E08, 0x0C00,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x000B,
-    0xF6F4, 0x0014,
-    0xF6F6, 0x0012,
-    0xF6F8, 0x0010,
-    0xF6FA, 0x000B,
-    0xF6FC, 0x0006,
-    0xF6FE, 0x0001,
-    0xF700, 0xFFF6,
-    0xF702, 0xFFEF,
-    0xF704, 0xFFE3,
-    0xF706, 0xFFD9,
-    0xF708, 0xFFCD,
-    0xF70A, 0xFFC3,
-    0xF70C, 0xFFB8,
-    0xF70E, 0xFFA9,
-    0xF710, 0xFF9B,
-    0xF712, 0xFF93,
-    0xF714, 0x0015,
-    0xF716, 0x0022,
-    0xF718, 0x0026,
-    0xF71A, 0x0020,
-    0xF71C, 0x001D,
-    0xF71E, 0x0016,
-    0xF720, 0x0011,
-    0xF722, 0x0009,
-    0xF724, 0xFFFF,
-    0xF726, 0xFFF5,
-    0xF728, 0xFFEB,
-    0xF72A, 0xFFE0,
-    0xF72C, 0xFFD2,
-    0xF72E, 0xFFC3,
-    0xF730, 0xFFB4,
-    0xF732, 0xFFA4,
-    0xF734, 0xFF9A,
-    0xF736, 0x0011,
-    0xF738, 0x0024,
-    0xF73A, 0x0024,
-    0xF73C, 0x0022,
-    0xF73E, 0x001E,
-    0xF740, 0x001B,
-    0xF742, 0x0014,
-    0xF744, 0x000D,
-    0xF746, 0x0004,
-    0xF748, 0xFFFA,
-    0xF74A, 0xFFEF,
-    0xF74C, 0xFFE0,
-    0xF74E, 0xFFD6,
-    0xF750, 0xFFC4,
-    0xF752, 0xFFB4,
-    0xF754, 0xFFA1,
-    0xF756, 0xFF96,
-    0xF758, 0x0016,
-    0xF75A, 0x0021,
-    0xF75C, 0x0026,
-    0xF75E, 0x0025,
-    0xF760, 0x001E,
-    0xF762, 0x001C,
-    0xF764, 0x0019,
-    0xF766, 0x000F,
-    0xF768, 0x0007,
-    0xF76A, 0xFFFD,
-    0xF76C, 0xFFF3,
-    0xF76E, 0xFFE4,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC7,
-    0xF774, 0xFFB5,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF97,
-    0xF77A, 0x0013,
-    0xF77C, 0x0025,
-    0xF77E, 0x0027,
-    0xF780, 0x0028,
-    0xF782, 0x0024,
-    0xF784, 0x0021,
-    0xF786, 0x001D,
-    0xF788, 0x0015,
-    0xF78A, 0x000B,
-    0xF78C, 0x0000,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE9,
-    0xF792, 0xFFDA,
-    0xF794, 0xFFCB,
-    0xF796, 0xFFB5,
-    0xF798, 0xFFA3,
-    0xF79A, 0xFF94,
-    0xF79C, 0x0012,
-    0xF79E, 0x0025,
-    0xF7A0, 0x0026,
-    0xF7A2, 0x0028,
-    0xF7A4, 0x0029,
-    0xF7A6, 0x0028,
-    0xF7A8, 0x0022,
-    0xF7AA, 0x0018,
-    0xF7AC, 0x0010,
-    0xF7AE, 0x0004,
-    0xF7B0, 0xFFFA,
-    0xF7B2, 0xFFE9,
-    0xF7B4, 0xFFDE,
-    0xF7B6, 0xFFCB,
-    0xF7B8, 0xFFB8,
-    0xF7BA, 0xFFA2,
-    0xF7BC, 0xFF93,
-    0xF7BE, 0x0013,
-    0xF7C0, 0x0025,
-    0xF7C2, 0x0029,
-    0xF7C4, 0x002D,
-    0xF7C6, 0x0031,
-    0xF7C8, 0x002E,
-    0xF7CA, 0x0027,
-    0xF7CC, 0x001F,
-    0xF7CE, 0x0012,
-    0xF7D0, 0x000D,
-    0xF7D2, 0xFFFF,
-    0xF7D4, 0xFFF4,
-    0xF7D6, 0xFFDF,
-    0xF7D8, 0xFFCF,
-    0xF7DA, 0xFFB8,
-    0xF7DC, 0xFFA4,
-    0xF7DE, 0xFF96,
-    0xF7E0, 0x0016,
-    0xF7E2, 0x0025,
-    0xF7E4, 0x0028,
-    0xF7E6, 0x002E,
-    0xF7E8, 0x0034,
-    0xF7EA, 0x002F,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001E,
-    0xF7F0, 0x0016,
-    0xF7F2, 0x000C,
-    0xF7F4, 0x0002,
-    0xF7F6, 0xFFF0,
-    0xF7F8, 0xFFE1,
-    0xF7FA, 0xFFCB,
-    0xF7FC, 0xFFB5,
-    0xF7FE, 0xFF9F,
-    0xF800, 0xFF95,
-    0xF802, 0x001A,
-    0xF804, 0x002A,
-    0xF806, 0x002F,
-    0xF808, 0x0035,
-    0xF80A, 0x003F,
-    0xF80C, 0x0037,
-    0xF80E, 0x002F,
-    0xF810, 0x0021,
-    0xF812, 0x001B,
-    0xF814, 0x0015,
-    0xF816, 0x000A,
-    0xF818, 0xFFF9,
-    0xF81A, 0xFFE7,
-    0xF81C, 0xFFCE,
-    0xF81E, 0xFFB7,
-    0xF820, 0xFFA2,
-    0xF822, 0xFF8F,
-    0xF824, 0x0020,
-    0xF826, 0x002E,
-    0xF828, 0x0036,
-    0xF82A, 0x0040,
-    0xF82C, 0x0045,
-    0xF82E, 0x003C,
-    0xF830, 0x0030,
-    0xF832, 0x0027,
-    0xF834, 0x0020,
-    0xF836, 0x0019,
-    0xF838, 0x0012,
-    0xF83A, 0x0002,
-    0xF83C, 0xFFEA,
-    0xF83E, 0xFFD5,
-    0xF840, 0xFFBA,
-    0xF842, 0xFFA1,
-    0xF844, 0xFF93,
-    0xF846, 0x001F,
-    0xF848, 0x0030,
-    0xF84A, 0x0035,
-    0xF84C, 0x003D,
-    0xF84E, 0x0049,
-    0xF850, 0x003D,
-    0xF852, 0x0030,
-    0xF854, 0x0025,
-    0xF856, 0x0020,
-    0xF858, 0x001A,
-    0xF85A, 0x0019,
-    0xF85C, 0x0006,
-    0xF85E, 0xFFED,
-    0xF860, 0xFFD3,
-    0xF862, 0xFFBA,
-    0xF864, 0xFFA0,
-    0xF866, 0xFF96,
-    0xF868, 0x0024,
-    0xF86A, 0x002E,
-    0xF86C, 0x0033,
-    0xF86E, 0x0040,
-    0xF870, 0x004C,
-    0xF872, 0x003D,
-    0xF874, 0x002E,
-    0xF876, 0x0023,
-    0xF878, 0x001D,
-    0xF87A, 0x001C,
-    0xF87C, 0x001B,
-    0xF87E, 0x0012,
-    0xF880, 0xFFF0,
-    0xF882, 0xFFD8,
-    0xF884, 0xFFBC,
-    0xF886, 0xFFA1,
-    0xF888, 0xFF8E,
-    0xF88A, 0x0017,
-    0xF88C, 0x0029,
-    0xF88E, 0x0028,
-    0xF890, 0x0037,
-    0xF892, 0x004A,
-    0xF894, 0x0032,
-    0xF896, 0x0024,
-    0xF898, 0x001A,
-    0xF89A, 0x0016,
-    0xF89C, 0x0013,
-    0xF89E, 0x001B,
-    0xF8A0, 0x0012,
-    0xF8A2, 0xFFF0,
-    0xF8A4, 0xFFD2,
-    0xF8A6, 0xFFB8,
-    0xF8A8, 0xFF9B,
-    0xF8AA, 0xFF90,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/*12_OceanDX4_13_0_JN5_A2A2_FHD_2048x1152_240.4fps_1992Msps*/
-static u16 konkauwide_slim_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0000,
-    0x7808, 0x0000,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x0800,
-    0x034E, 0x0480,
-    0x0350, 0x0004,
-    0x0352, 0x0004,
-    0x0340, 0x04DE,
-    0x0342, 0x0C00,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00F9,
-    0x0312, 0x0001,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0604,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x3344,
-    0x0380, 0x0002,
-    0x0382, 0x0006,
-    0x0384, 0x0002,
-    0x0386, 0x0006,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0xBA10,
-    0xD20C, 0x0908,
-    0xD314, 0x3003,
-    0xD27A, 0x0B00,
-    0xD3F0, 0x811C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0000,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0000,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0xDF01,
-    0x705A, 0xE001,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x907E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x2C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0000,
-    0x2A44, 0xE002,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5000,
-    0x8CD6, 0xBE00,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x1A00,
-    0xD4E6, 0x0000,
-    0xD4C0, 0x3800,
-    0xD4B4, 0x6D00,
-    0xD4CC, 0x0100,
-    0xD5BC, 0xC400,
-    0xD5BE, 0xC400,
-    0xD5C8, 0x5203,
-    0xD5CA, 0x5203,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x1400,
-    0xA578, 0x8000,
-    0xA58A, 0x2200,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0C00,
-    0x1DF4, 0x0C00,
-    0x1E02, 0x0C00,
-    0x1E04, 0x0C00,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0000,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0010,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC801,
-    0xF3F6, 0xD210,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 04_OceanDX4_05_JN5_Fdsum_12.5Mp_AEB_4096x3072_60fps_3056Msps */
-static u16 konkauwide_custom1_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x5804,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x0010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x7210,
-    0x1C5C, 0x7210,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x0010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x6610,
-    0x1C84, 0x6610,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x0010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x7210,
-    0x1CFC, 0x7210,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x0010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x6610,
-    0x1D24, 0x6610,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0xFDFF,
-    0x1D98, 0xFDFF,
-    0x1DA6, 0xFDFF,
-    0x1DA8, 0xFDFF,
-    0x1D72, 0xFDFF,
-    0x1D74, 0xFDFF,
-    0x1D82, 0xFDFF,
-    0x1D84, 0xFDFF,
-    0x1D92, 0xFDFF,
-    0x1D94, 0xFDFF,
-    0x1DA2, 0xFDFF,
-    0x1DA4, 0xFDFF,
-    0x1D76, 0xFDFF,
-    0x1D78, 0xFDFF,
-    0x1D86, 0xFDFF,
-    0x1D88, 0xFDFF,
-    0x1E16, 0x0A00,
-    0x1E18, 0x0A00,
-    0x1E26, 0x0A00,
-    0x1E28, 0x0A00,
-    0x1DF2, 0x1600,
-    0x1DF4, 0x1600,
-    0x1E02, 0x1600,
-    0x1E04, 0x1600,
-    0x1E12, 0x0700,
-    0x1E14, 0x0700,
-    0x1E22, 0x0700,
-    0x1E24, 0x0700,
-    0x1DF6, 0x1100,
-    0x1DF8, 0x1100,
-    0x1E06, 0x1100,
-    0x1E08, 0x1100,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0203,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 8192x6144 Fullsize bayer mode 6*/
-static u16 konkauwide_custom2_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x2000,
-    0x034E, 0x1800,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x18CA,
-    0x0342, 0x2580,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0200,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0101,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0xCD04,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x0300,
-    0xD4D0, 0x1100,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x2800,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x7E03,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xE600,
-    0xD4F8, 0xF001,
-    0xD4FA, 0x1802,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0300,
-    0x1D74, 0x0300,
-    0x1D82, 0x0300,
-    0x1D84, 0x0300,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0600,
-    0x1E18, 0x0600,
-    0x1E26, 0x0600,
-    0x1E28, 0x0600,
-    0x1DF2, 0x0300,
-    0x1DF4, 0x0300,
-    0x1E02, 0x0300,
-    0x1E04, 0x0300,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 8192x6144 Fullsize QBC mode 7*/
-static u16 konkauwide_custom3_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x2000,
-    0x034E, 0x1800,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x18CA,
-    0x0342, 0x2580,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0x0004,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0100,
-    0x25E2, 0xCD00,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x1603,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 09_OceanDX4_13_1_JN5_A2A2_1632x1224_24fps_1672Msps */
-static u16 konkauwide_custom4_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0340,
-    0x0348, 0x1CDF,
-    0x0346, 0x0270,
-    0x034A, 0x15AF,
-    0x034C, 0x0660,
-    0x034E, 0x04C8,
-    0x0350, 0x0004,
-    0x0352, 0x0004,
-    0x0340, 0x10E8,
-    0x0342, 0x2290,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00D1,
-    0x0312, 0x0001,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x3344,
-    0x0380, 0x0002,
-    0x0382, 0x0006,
-    0x0384, 0x0002,
-    0x0386, 0x0006,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0910,
-    0xD314, 0x2002,
-    0xD27A, 0x0700,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x3F01,
-    0x705A, 0x4001,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x00D0,
-    0x7280, 0x12D2,
-    0x7282, 0x0040,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x907E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x2C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x7901,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0600,
-    0xD4A8, 0x0700,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x0000,
-    0xD4BC, 0x4000,
-    0xD4B0, 0x7901,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xC400,
-    0xD560, 0x5203,
-    0xD562, 0x5203,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0x0804,
-    0xF3F6, 0xD210,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 10_OceanDX4_13_1_JN5_A2A2_1856x1392_24fps_1672Msps */
-static u16 konkauwide_custom5_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x08C0,
-    0x0348, 0x175F,
-    0x0346, 0x0690,
-    0x034A, 0x118F,
-    0x034C, 0x0740,
-    0x034E, 0x0570,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x10E0,
-    0x0342, 0x228C,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00D1,
-    0x0312, 0x0001,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x0000,
-    0xD4BC, 0x3700,
-    0xD4B0, 0x8603,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xC400,
-    0xD560, 0x5203,
-    0xD562, 0x5203,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0x8809,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 06_OceanDX4_10_0_JN5_Fdsum_DSG_4096x2304_30fps_3056Msps */
-static u16 konkauwide_custom6_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x3608,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x2560,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0C,
-    0x0270, 0x2B2B,
-    0x0272, 0x2C10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x2000,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0600,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x00FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0101,
-    0x1966, 0x0200,
-    0xFCFC, 0x4000,
-    0x0086, 0x0280,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x1000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x9F00,
-    0x705A, 0xA000,
-    0x7274, 0x00B0,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0078,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x0B04,
-    0xD4B0, 0x7E03,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x3D10,
-    0x1C34, 0x3D10,
-    0x1C4E, 0x8001,
-    0x1C50, 0xF004,
-    0x1C52, 0x3D10,
-    0x1C54, 0x5110,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0xCC10,
-    0x1C5C, 0x2010,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0xF004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x5110,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0xA310,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x3D10,
-    0x1CAC, 0x3D10,
-    0x1CC6, 0x8001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x3D10,
-    0x1CD4, 0x3D10,
-    0x1CEE, 0x8001,
-    0x1CF0, 0xF004,
-    0x1CF2, 0x3D10,
-    0x1CF4, 0x5110,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0xCC10,
-    0x1CFC, 0x2010,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0xF004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x5110,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0xA310,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0xF004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x3D10,
-    0x1D4C, 0x3D10,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0xF4FF,
-    0x1D98, 0xF4FF,
-    0x1DA6, 0xF4FF,
-    0x1DA8, 0xF4FF,
-    0x1D72, 0xF4FF,
-    0x1D74, 0xF4FF,
-    0x1D82, 0xF4FF,
-    0x1D84, 0xF4FF,
-    0x1D92, 0xF4FF,
-    0x1D94, 0xF4FF,
-    0x1DA2, 0xF4FF,
-    0x1DA4, 0xF4FF,
-    0x1D76, 0xE2FF,
-    0x1D78, 0xE2FF,
-    0x1D86, 0xE2FF,
-    0x1D88, 0xE2FF,
-    0x1E16, 0xEBFF,
-    0x1E18, 0xEBFF,
-    0x1E26, 0xEBFF,
-    0x1E28, 0xEBFF,
-    0x1DF2, 0xE9FF,
-    0x1DF4, 0xE9FF,
-    0x1E02, 0xE9FF,
-    0x1E04, 0xE9FF,
-    0x1E12, 0xE9FF,
-    0x1E14, 0xE9FF,
-    0x1E22, 0xE9FF,
-    0x1E24, 0xE9FF,
-    0x1DF6, 0xEEFF,
-    0x1DF8, 0xEEFF,
-    0x1E06, 0xEEFF,
-    0x1E08, 0xEEFF,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0D00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x80E3,
-    0xB268, 0x80E3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0x36D2,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0D00,
-    0xDB3E, 0x36D2,
-    0xDADE, 0xA000,
-    0xDB0E, 0x0F00,
-    0xDB40, 0x36D2,
-    0xDAE0, 0x4001,
-    0xDB10, 0x0D00,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 07_OceanDX4_10_0_JN5_Fdsum_DSG_split_4096x2304_30fps_3056Msps */
-static u16 konkauwide_custom7_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0101,
-    0x7808, 0x3F0C,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x2560,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x2000,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0600,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0100,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0101,
-    0x1966, 0x0200,
-    0xFCFC, 0x4000,
-    0x0086, 0x0280,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x1000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x9F00,
-    0x705A, 0xA000,
-    0x7274, 0x00B0,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0078,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x0B04,
-    0xD4B0, 0x7E03,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x5610,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0xB610,
-    0x1C34, 0x7011,
-    0x1C4E, 0x8001,
-    0x1C50, 0xF004,
-    0x1C52, 0x2810,
-    0x1C54, 0x5110,
-    0x1C56, 0x0005,
-    0x1C58, 0xF009,
-    0x1C5A, 0x9710,
-    0x1C5C, 0xDA10,
-    0x1C5E, 0x000A,
-    0x1C60, 0x00A0,
-    0x1C62, 0xDA10,
-    0x1C64, 0x7011,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0xF004,
-    0x1C7A, 0x2810,
-    0x1C7C, 0x6610,
-    0x1C7E, 0x0005,
-    0x1C80, 0xF009,
-    0x1C82, 0x7210,
-    0x1C84, 0xDD10,
-    0x1C86, 0x000A,
-    0x1C88, 0x00A0,
-    0x1C8A, 0xDD10,
-    0x1C8C, 0x7011,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x5610,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0xC410,
-    0x1CAC, 0x7011,
-    0x1CC6, 0x8001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x5610,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0xB610,
-    0x1CD4, 0x7011,
-    0x1CEE, 0x8001,
-    0x1CF0, 0xF004,
-    0x1CF2, 0x2810,
-    0x1CF4, 0x5110,
-    0x1CF6, 0x0005,
-    0x1CF8, 0xF009,
-    0x1CFA, 0x9710,
-    0x1CFC, 0xDA10,
-    0x1CFE, 0x000A,
-    0x1D00, 0x00A0,
-    0x1D02, 0xDA10,
-    0x1D04, 0x7011,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0xF004,
-    0x1D1A, 0x2810,
-    0x1D1C, 0x6610,
-    0x1D1E, 0x0005,
-    0x1D20, 0xF009,
-    0x1D22, 0x7210,
-    0x1D24, 0xDD10,
-    0x1D26, 0x000A,
-    0x1D28, 0x00A0,
-    0x1D2A, 0xDD10,
-    0x1D2C, 0x7011,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0xF004,
-    0x1D42, 0x2010,
-    0x1D44, 0x5610,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0xC410,
-    0x1D4C, 0x7011,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0600,
-    0x1D98, 0x0600,
-    0x1DA6, 0x0600,
-    0x1DA8, 0x0600,
-    0x1D72, 0x0600,
-    0x1D74, 0x0600,
-    0x1D82, 0x0600,
-    0x1D84, 0x0600,
-    0x1D92, 0x0600,
-    0x1D94, 0x0600,
-    0x1DA2, 0x0600,
-    0x1DA4, 0x0600,
-    0x1D76, 0x0600,
-    0x1D78, 0x0600,
-    0x1D86, 0x0600,
-    0x1D88, 0x0600,
-    0x1E16, 0xFAFF,
-    0x1E18, 0xFAFF,
-    0x1E26, 0xFAFF,
-    0x1E28, 0xFAFF,
-    0x1DF2, 0xFAFF,
-    0x1DF4, 0xFAFF,
-    0x1E02, 0xFAFF,
-    0x1E04, 0xFAFF,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0D00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x80E3,
-    0xB268, 0x80E3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0x36D2,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0D00,
-    0xDB3E, 0x36D2,
-    0xDADE, 0xA000,
-    0xDB0E, 0x0F00,
-    0xDB40, 0x36D2,
-    0xDAE0, 0x4001,
-    0xDB10, 0x0D00,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 11_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_60fps_3056Msps 4096x3072 60fps binning */
-static u16 konkauwide_custom8_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x4600,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-
-/* 13_OceanDX4_06_0_JN5_Fdsum_DSG_4096x3072_30fps_3056Msps 4096x3072 30fps, DAG sensor merge 12bit */
-static u16 konkauwide_custom9_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x3608,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x2560,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0C,
-    0x0270, 0x2B2B,
-    0x0272, 0x2C10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x2000,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0600,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x00FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0101,
-    0x1966, 0x0200,
-    0xFCFC, 0x4000,
-    0x0086, 0x0280,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x1000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x9F00,
-    0x705A, 0xA000,
-    0x7274, 0x00B0,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0078,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x4700,
-    0xD4BC, 0x3700,
-    0xD4B0, 0x1E01,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xC400,
-    0xD560, 0x5203,
-    0xD562, 0x5203,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2810,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0xF004,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0xF004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2810,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2810,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0xF004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0xF004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0xF004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2810,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0D00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x80E3,
-    0xB268, 0x80E3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0x36D2,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0D00,
-    0xDB3E, 0x36D2,
-    0xDADE, 0xA000,
-    0xDB0E, 0x0F00,
-    0xDB40, 0x36D2,
-    0xDAE0, 0x4001,
-    0xDB10, 0x0D00,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_4096x3072_30fps_3056Msps izoom */
-static u16 konkauwide_custom10_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0800,
-    0x0348, 0x181F,
-    0x0346, 0x0600,
-    0x034A, 0x121F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x0D04,
-    0x0342, 0x23F0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0200,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0101,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0xCD04,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x3B00,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC808,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_Bypass_4096x3072_30fps_3056Msps QBC*/
-static u16 konkauwide_custom11_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0800,
-    0x0348, 0x181F,
-    0x0346, 0x0600,
-    0x034A, 0x121F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x0D04,
-    0x0342, 0x23F0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0x0004,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0100,
-    0x25E2, 0xCD00,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x3B00,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC808,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-static u16 konkauwide_seamless_preview[] = {
-    0x0B30, 0x0102,
-    0x0340, 0x1908,
-};
-
-static u16 konkauwide_seamless_vid[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0104,
-	0x0340,	0x13F7,
-};
-
-static u16 konkauwide_seamless_custom1[] = {
-    0x0B30, 0x0103,
-    0x0340, 0x0C84,
-};
-
-static u16 konkauwide_seamless_custom2[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0100,
-	0x0340,	0x18CA,
-};
-
-static u16 konkauwide_seamless_custom3[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0101,
-	0x0340,	0x18CA,
-};
-
-static u16 konkauwide_seamless_custom7[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0106,
-	0x0340,	0x0C84,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwide_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwide_ana_gain_table.h
deleted file mode 100755
index 0b0c2fad..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwide_ana_gain_table.h
+++ /dev/null
@@ -1,5100 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************/
-#ifndef __KONKAUWIDE_ANA_GAIN_TABLE_H__
-#define __KONKAUWIDE_ANA_GAIN_TABLE_H__
-static kal_uint32 konkauwide_ana_gain_table[] = {
-    1024,
-    1056,
-    1088,
-    1120,
-    1152,
-    1184,
-    1216,
-    1248,
-    1280,
-    1312,
-    1344,
-    1376,
-    1408,
-    1440,
-    1472,
-    1504,
-    1536,
-    1568,
-    1600,
-    1632,
-    1664,
-    1696,
-    1728,
-    1760,
-    1792,
-    1824,
-    1856,
-    1888,
-    1920,
-    1952,
-    1984,
-    2016,
-    2048,
-    2080,
-    2112,
-    2144,
-    2176,
-    2208,
-    2240,
-    2272,
-    2304,
-    2336,
-    2368,
-    2400,
-    2432,
-    2464,
-    2496,
-    2528,
-    2560,
-    2592,
-    2624,
-    2656,
-    2688,
-    2720,
-    2752,
-    2784,
-    2816,
-    2848,
-    2880,
-    2912,
-    2944,
-    2976,
-    3008,
-    3040,
-    3072,
-    3104,
-    3136,
-    3168,
-    3200,
-    3232,
-    3264,
-    3296,
-    3328,
-    3360,
-    3392,
-    3424,
-    3456,
-    3488,
-    3520,
-    3552,
-    3584,
-    3616,
-    3648,
-    3680,
-    3712,
-    3744,
-    3776,
-    3808,
-    3840,
-    3872,
-    3904,
-    3936,
-    3968,
-    4000,
-    4032,
-    4064,
-    4096,
-    4128,
-    4160,
-    4192,
-    4224,
-    4256,
-    4288,
-    4320,
-    4352,
-    4384,
-    4416,
-    4448,
-    4480,
-    4512,
-    4544,
-    4576,
-    4608,
-    4640,
-    4672,
-    4704,
-    4736,
-    4768,
-    4800,
-    4832,
-    4864,
-    4896,
-    4928,
-    4960,
-    4992,
-    5024,
-    5056,
-    5088,
-    5120,
-    5152,
-    5184,
-    5216,
-    5248,
-    5280,
-    5312,
-    5344,
-    5376,
-    5408,
-    5440,
-    5472,
-    5504,
-    5536,
-    5568,
-    5600,
-    5632,
-    5664,
-    5696,
-    5728,
-    5760,
-    5792,
-    5824,
-    5856,
-    5888,
-    5920,
-    5952,
-    5984,
-    6016,
-    6048,
-    6080,
-    6112,
-    6144,
-    6176,
-    6208,
-    6240,
-    6272,
-    6304,
-    6336,
-    6368,
-    6400,
-    6432,
-    6464,
-    6496,
-    6528,
-    6560,
-    6592,
-    6624,
-    6656,
-    6688,
-    6720,
-    6752,
-    6784,
-    6816,
-    6848,
-    6880,
-    6912,
-    6944,
-    6976,
-    7008,
-    7040,
-    7072,
-    7104,
-    7136,
-    7168,
-    7200,
-    7232,
-    7264,
-    7296,
-    7328,
-    7360,
-    7392,
-    7424,
-    7456,
-    7488,
-    7520,
-    7552,
-    7584,
-    7616,
-    7648,
-    7680,
-    7712,
-    7744,
-    7776,
-    7808,
-    7840,
-    7872,
-    7904,
-    7936,
-    7968,
-    8000,
-    8032,
-    8064,
-    8096,
-    8128,
-    8160,
-    8192,
-    8224,
-    8256,
-    8288,
-    8320,
-    8352,
-    8384,
-    8416,
-    8448,
-    8480,
-    8512,
-    8544,
-    8576,
-    8608,
-    8640,
-    8672,
-    8704,
-    8736,
-    8768,
-    8800,
-    8832,
-    8864,
-    8896,
-    8928,
-    8960,
-    8992,
-    9024,
-    9056,
-    9088,
-    9120,
-    9152,
-    9184,
-    9216,
-    9248,
-    9280,
-    9312,
-    9344,
-    9376,
-    9408,
-    9440,
-    9472,
-    9504,
-    9536,
-    9568,
-    9600,
-    9632,
-    9664,
-    9696,
-    9728,
-    9760,
-    9792,
-    9824,
-    9856,
-    9888,
-    9920,
-    9952,
-    9984,
-    10016,
-    10048,
-    10080,
-    10112,
-    10144,
-    10176,
-    10208,
-    10240,
-    10272,
-    10304,
-    10336,
-    10368,
-    10400,
-    10432,
-    10464,
-    10496,
-    10528,
-    10560,
-    10592,
-    10624,
-    10656,
-    10688,
-    10720,
-    10752,
-    10784,
-    10816,
-    10848,
-    10880,
-    10912,
-    10944,
-    10976,
-    11008,
-    11040,
-    11072,
-    11104,
-    11136,
-    11168,
-    11200,
-    11232,
-    11264,
-    11296,
-    11328,
-    11360,
-    11392,
-    11424,
-    11456,
-    11488,
-    11520,
-    11552,
-    11584,
-    11616,
-    11648,
-    11680,
-    11712,
-    11744,
-    11776,
-    11808,
-    11840,
-    11872,
-    11904,
-    11936,
-    11968,
-    12000,
-    12032,
-    12064,
-    12096,
-    12128,
-    12160,
-    12192,
-    12224,
-    12256,
-    12288,
-    12320,
-    12352,
-    12384,
-    12416,
-    12448,
-    12480,
-    12512,
-    12544,
-    12576,
-    12608,
-    12640,
-    12672,
-    12704,
-    12736,
-    12768,
-    12800,
-    12832,
-    12864,
-    12896,
-    12928,
-    12960,
-    12992,
-    13024,
-    13056,
-    13088,
-    13120,
-    13152,
-    13184,
-    13216,
-    13248,
-    13280,
-    13312,
-    13344,
-    13376,
-    13408,
-    13440,
-    13472,
-    13504,
-    13536,
-    13568,
-    13600,
-    13632,
-    13664,
-    13696,
-    13728,
-    13760,
-    13792,
-    13824,
-    13856,
-    13888,
-    13920,
-    13952,
-    13984,
-    14016,
-    14048,
-    14080,
-    14112,
-    14144,
-    14176,
-    14208,
-    14240,
-    14272,
-    14304,
-    14336,
-    14368,
-    14400,
-    14432,
-    14464,
-    14496,
-    14528,
-    14560,
-    14592,
-    14624,
-    14656,
-    14688,
-    14720,
-    14752,
-    14784,
-    14816,
-    14848,
-    14880,
-    14912,
-    14944,
-    14976,
-    15008,
-    15040,
-    15072,
-    15104,
-    15136,
-    15168,
-    15200,
-    15232,
-    15264,
-    15296,
-    15328,
-    15360,
-    15392,
-    15424,
-    15456,
-    15488,
-    15520,
-    15552,
-    15584,
-    15616,
-    15648,
-    15680,
-    15712,
-    15744,
-    15776,
-    15808,
-    15840,
-    15872,
-    15904,
-    15936,
-    15968,
-    16000,
-    16032,
-    16064,
-    16096,
-    16128,
-    16160,
-    16192,
-    16224,
-    16256,
-    16288,
-    16320,
-    16352,
-    16384,
-    16416,
-    16448,
-    16480,
-    16512,
-    16544,
-    16576,
-    16608,
-    16640,
-    16672,
-    16704,
-    16736,
-    16768,
-    16800,
-    16832,
-    16864,
-    16896,
-    16928,
-    16960,
-    16992,
-    17024,
-    17056,
-    17088,
-    17120,
-    17152,
-    17184,
-    17216,
-    17248,
-    17280,
-    17312,
-    17344,
-    17376,
-    17408,
-    17440,
-    17472,
-    17504,
-    17536,
-    17568,
-    17600,
-    17632,
-    17664,
-    17696,
-    17728,
-    17760,
-    17792,
-    17824,
-    17856,
-    17888,
-    17920,
-    17952,
-    17984,
-    18016,
-    18048,
-    18080,
-    18112,
-    18144,
-    18176,
-    18208,
-    18240,
-    18272,
-    18304,
-    18336,
-    18368,
-    18400,
-    18432,
-    18464,
-    18496,
-    18528,
-    18560,
-    18592,
-    18624,
-    18656,
-    18688,
-    18720,
-    18752,
-    18784,
-    18816,
-    18848,
-    18880,
-    18912,
-    18944,
-    18976,
-    19008,
-    19040,
-    19072,
-    19104,
-    19136,
-    19168,
-    19200,
-    19232,
-    19264,
-    19296,
-    19328,
-    19360,
-    19392,
-    19424,
-    19456,
-    19488,
-    19520,
-    19552,
-    19584,
-    19616,
-    19648,
-    19680,
-    19712,
-    19744,
-    19776,
-    19808,
-    19840,
-    19872,
-    19904,
-    19936,
-    19968,
-    20000,
-    20032,
-    20064,
-    20096,
-    20128,
-    20160,
-    20192,
-    20224,
-    20256,
-    20288,
-    20320,
-    20352,
-    20384,
-    20416,
-    20448,
-    20480,
-    20512,
-    20544,
-    20576,
-    20608,
-    20640,
-    20672,
-    20704,
-    20736,
-    20768,
-    20800,
-    20832,
-    20864,
-    20896,
-    20928,
-    20960,
-    20992,
-    21024,
-    21056,
-    21088,
-    21120,
-    21152,
-    21184,
-    21216,
-    21248,
-    21280,
-    21312,
-    21344,
-    21376,
-    21408,
-    21440,
-    21472,
-    21504,
-    21536,
-    21568,
-    21600,
-    21632,
-    21664,
-    21696,
-    21728,
-    21760,
-    21792,
-    21824,
-    21856,
-    21888,
-    21920,
-    21952,
-    21984,
-    22016,
-    22048,
-    22080,
-    22112,
-    22144,
-    22176,
-    22208,
-    22240,
-    22272,
-    22304,
-    22336,
-    22368,
-    22400,
-    22432,
-    22464,
-    22496,
-    22528,
-    22560,
-    22592,
-    22624,
-    22656,
-    22688,
-    22720,
-    22752,
-    22784,
-    22816,
-    22848,
-    22880,
-    22912,
-    22944,
-    22976,
-    23008,
-    23040,
-    23072,
-    23104,
-    23136,
-    23168,
-    23200,
-    23232,
-    23264,
-    23296,
-    23328,
-    23360,
-    23392,
-    23424,
-    23456,
-    23488,
-    23520,
-    23552,
-    23584,
-    23616,
-    23648,
-    23680,
-    23712,
-    23744,
-    23776,
-    23808,
-    23840,
-    23872,
-    23904,
-    23936,
-    23968,
-    24000,
-    24032,
-    24064,
-    24096,
-    24128,
-    24160,
-    24192,
-    24224,
-    24256,
-    24288,
-    24320,
-    24352,
-    24384,
-    24416,
-    24448,
-    24480,
-    24512,
-    24544,
-    24576,
-    24608,
-    24640,
-    24672,
-    24704,
-    24736,
-    24768,
-    24800,
-    24832,
-    24864,
-    24896,
-    24928,
-    24960,
-    24992,
-    25024,
-    25056,
-    25088,
-    25120,
-    25152,
-    25184,
-    25216,
-    25248,
-    25280,
-    25312,
-    25344,
-    25376,
-    25408,
-    25440,
-    25472,
-    25504,
-    25536,
-    25568,
-    25600,
-    25632,
-    25664,
-    25696,
-    25728,
-    25760,
-    25792,
-    25824,
-    25856,
-    25888,
-    25920,
-    25952,
-    25984,
-    26016,
-    26048,
-    26080,
-    26112,
-    26144,
-    26176,
-    26208,
-    26240,
-    26272,
-    26304,
-    26336,
-    26368,
-    26400,
-    26432,
-    26464,
-    26496,
-    26528,
-    26560,
-    26592,
-    26624,
-    26656,
-    26688,
-    26720,
-    26752,
-    26784,
-    26816,
-    26848,
-    26880,
-    26912,
-    26944,
-    26976,
-    27008,
-    27040,
-    27072,
-    27104,
-    27136,
-    27168,
-    27200,
-    27232,
-    27264,
-    27296,
-    27328,
-    27360,
-    27392,
-    27424,
-    27456,
-    27488,
-    27520,
-    27552,
-    27584,
-    27616,
-    27648,
-    27680,
-    27712,
-    27744,
-    27776,
-    27808,
-    27840,
-    27872,
-    27904,
-    27936,
-    27968,
-    28000,
-    28032,
-    28064,
-    28096,
-    28128,
-    28160,
-    28192,
-    28224,
-    28256,
-    28288,
-    28320,
-    28352,
-    28384,
-    28416,
-    28448,
-    28480,
-    28512,
-    28544,
-    28576,
-    28608,
-    28640,
-    28672,
-    28704,
-    28736,
-    28768,
-    28800,
-    28832,
-    28864,
-    28896,
-    28928,
-    28960,
-    28992,
-    29024,
-    29056,
-    29088,
-    29120,
-    29152,
-    29184,
-    29216,
-    29248,
-    29280,
-    29312,
-    29344,
-    29376,
-    29408,
-    29440,
-    29472,
-    29504,
-    29536,
-    29568,
-    29600,
-    29632,
-    29664,
-    29696,
-    29728,
-    29760,
-    29792,
-    29824,
-    29856,
-    29888,
-    29920,
-    29952,
-    29984,
-    30016,
-    30048,
-    30080,
-    30112,
-    30144,
-    30176,
-    30208,
-    30240,
-    30272,
-    30304,
-    30336,
-    30368,
-    30400,
-    30432,
-    30464,
-    30496,
-    30528,
-    30560,
-    30592,
-    30624,
-    30656,
-    30688,
-    30720,
-    30752,
-    30784,
-    30816,
-    30848,
-    30880,
-    30912,
-    30944,
-    30976,
-    31008,
-    31040,
-    31072,
-    31104,
-    31136,
-    31168,
-    31200,
-    31232,
-    31264,
-    31296,
-    31328,
-    31360,
-    31392,
-    31424,
-    31456,
-    31488,
-    31520,
-    31552,
-    31584,
-    31616,
-    31648,
-    31680,
-    31712,
-    31744,
-    31776,
-    31808,
-    31840,
-    31872,
-    31904,
-    31936,
-    31968,
-    32000,
-    32032,
-    32064,
-    32096,
-    32128,
-    32160,
-    32192,
-    32224,
-    32256,
-    32288,
-    32320,
-    32352,
-    32384,
-    32416,
-    32448,
-    32480,
-    32512,
-    32544,
-    32576,
-    32608,
-    32640,
-    32672,
-    32704,
-    32736,
-    32768,
-    32800,
-    32832,
-    32864,
-    32896,
-    32928,
-    32960,
-    32992,
-    33024,
-    33056,
-    33088,
-    33120,
-    33152,
-    33184,
-    33216,
-    33248,
-    33280,
-    33312,
-    33344,
-    33376,
-    33408,
-    33440,
-    33472,
-    33504,
-    33536,
-    33568,
-    33600,
-    33632,
-    33664,
-    33696,
-    33728,
-    33760,
-    33792,
-    33824,
-    33856,
-    33888,
-    33920,
-    33952,
-    33984,
-    34016,
-    34048,
-    34080,
-    34112,
-    34144,
-    34176,
-    34208,
-    34240,
-    34272,
-    34304,
-    34336,
-    34368,
-    34400,
-    34432,
-    34464,
-    34496,
-    34528,
-    34560,
-    34592,
-    34624,
-    34656,
-    34688,
-    34720,
-    34752,
-    34784,
-    34816,
-    34848,
-    34880,
-    34912,
-    34944,
-    34976,
-    35008,
-    35040,
-    35072,
-    35104,
-    35136,
-    35168,
-    35200,
-    35232,
-    35264,
-    35296,
-    35328,
-    35360,
-    35392,
-    35424,
-    35456,
-    35488,
-    35520,
-    35552,
-    35584,
-    35616,
-    35648,
-    35680,
-    35712,
-    35744,
-    35776,
-    35808,
-    35840,
-    35872,
-    35904,
-    35936,
-    35968,
-    36000,
-    36032,
-    36064,
-    36096,
-    36128,
-    36160,
-    36192,
-    36224,
-    36256,
-    36288,
-    36320,
-    36352,
-    36384,
-    36416,
-    36448,
-    36480,
-    36512,
-    36544,
-    36576,
-    36608,
-    36640,
-    36672,
-    36704,
-    36736,
-    36768,
-    36800,
-    36832,
-    36864,
-    36896,
-    36928,
-    36960,
-    36992,
-    37024,
-    37056,
-    37088,
-    37120,
-    37152,
-    37184,
-    37216,
-    37248,
-    37280,
-    37312,
-    37344,
-    37376,
-    37408,
-    37440,
-    37472,
-    37504,
-    37536,
-    37568,
-    37600,
-    37632,
-    37664,
-    37696,
-    37728,
-    37760,
-    37792,
-    37824,
-    37856,
-    37888,
-    37920,
-    37952,
-    37984,
-    38016,
-    38048,
-    38080,
-    38112,
-    38144,
-    38176,
-    38208,
-    38240,
-    38272,
-    38304,
-    38336,
-    38368,
-    38400,
-    38432,
-    38464,
-    38496,
-    38528,
-    38560,
-    38592,
-    38624,
-    38656,
-    38688,
-    38720,
-    38752,
-    38784,
-    38816,
-    38848,
-    38880,
-    38912,
-    38944,
-    38976,
-    39008,
-    39040,
-    39072,
-    39104,
-    39136,
-    39168,
-    39200,
-    39232,
-    39264,
-    39296,
-    39328,
-    39360,
-    39392,
-    39424,
-    39456,
-    39488,
-    39520,
-    39552,
-    39584,
-    39616,
-    39648,
-    39680,
-    39712,
-    39744,
-    39776,
-    39808,
-    39840,
-    39872,
-    39904,
-    39936,
-    39968,
-    40000,
-    40032,
-    40064,
-    40096,
-    40128,
-    40160,
-    40192,
-    40224,
-    40256,
-    40288,
-    40320,
-    40352,
-    40384,
-    40416,
-    40448,
-    40480,
-    40512,
-    40544,
-    40576,
-    40608,
-    40640,
-    40672,
-    40704,
-    40736,
-    40768,
-    40800,
-    40832,
-    40864,
-    40896,
-    40928,
-    40960,
-    40992,
-    41024,
-    41056,
-    41088,
-    41120,
-    41152,
-    41184,
-    41216,
-    41248,
-    41280,
-    41312,
-    41344,
-    41376,
-    41408,
-    41440,
-    41472,
-    41504,
-    41536,
-    41568,
-    41600,
-    41632,
-    41664,
-    41696,
-    41728,
-    41760,
-    41792,
-    41824,
-    41856,
-    41888,
-    41920,
-    41952,
-    41984,
-    42016,
-    42048,
-    42080,
-    42112,
-    42144,
-    42176,
-    42208,
-    42240,
-    42272,
-    42304,
-    42336,
-    42368,
-    42400,
-    42432,
-    42464,
-    42496,
-    42528,
-    42560,
-    42592,
-    42624,
-    42656,
-    42688,
-    42720,
-    42752,
-    42784,
-    42816,
-    42848,
-    42880,
-    42912,
-    42944,
-    42976,
-    43008,
-    43040,
-    43072,
-    43104,
-    43136,
-    43168,
-    43200,
-    43232,
-    43264,
-    43296,
-    43328,
-    43360,
-    43392,
-    43424,
-    43456,
-    43488,
-    43520,
-    43552,
-    43584,
-    43616,
-    43648,
-    43680,
-    43712,
-    43744,
-    43776,
-    43808,
-    43840,
-    43872,
-    43904,
-    43936,
-    43968,
-    44000,
-    44032,
-    44064,
-    44096,
-    44128,
-    44160,
-    44192,
-    44224,
-    44256,
-    44288,
-    44320,
-    44352,
-    44384,
-    44416,
-    44448,
-    44480,
-    44512,
-    44544,
-    44576,
-    44608,
-    44640,
-    44672,
-    44704,
-    44736,
-    44768,
-    44800,
-    44832,
-    44864,
-    44896,
-    44928,
-    44960,
-    44992,
-    45024,
-    45056,
-    45088,
-    45120,
-    45152,
-    45184,
-    45216,
-    45248,
-    45280,
-    45312,
-    45344,
-    45376,
-    45408,
-    45440,
-    45472,
-    45504,
-    45536,
-    45568,
-    45600,
-    45632,
-    45664,
-    45696,
-    45728,
-    45760,
-    45792,
-    45824,
-    45856,
-    45888,
-    45920,
-    45952,
-    45984,
-    46016,
-    46048,
-    46080,
-    46112,
-    46144,
-    46176,
-    46208,
-    46240,
-    46272,
-    46304,
-    46336,
-    46368,
-    46400,
-    46432,
-    46464,
-    46496,
-    46528,
-    46560,
-    46592,
-    46624,
-    46656,
-    46688,
-    46720,
-    46752,
-    46784,
-    46816,
-    46848,
-    46880,
-    46912,
-    46944,
-    46976,
-    47008,
-    47040,
-    47072,
-    47104,
-    47136,
-    47168,
-    47200,
-    47232,
-    47264,
-    47296,
-    47328,
-    47360,
-    47392,
-    47424,
-    47456,
-    47488,
-    47520,
-    47552,
-    47584,
-    47616,
-    47648,
-    47680,
-    47712,
-    47744,
-    47776,
-    47808,
-    47840,
-    47872,
-    47904,
-    47936,
-    47968,
-    48000,
-    48032,
-    48064,
-    48096,
-    48128,
-    48160,
-    48192,
-    48224,
-    48256,
-    48288,
-    48320,
-    48352,
-    48384,
-    48416,
-    48448,
-    48480,
-    48512,
-    48544,
-    48576,
-    48608,
-    48640,
-    48672,
-    48704,
-    48736,
-    48768,
-    48800,
-    48832,
-    48864,
-    48896,
-    48928,
-    48960,
-    48992,
-    49024,
-    49056,
-    49088,
-    49120,
-    49152,
-    49184,
-    49216,
-    49248,
-    49280,
-    49312,
-    49344,
-    49376,
-    49408,
-    49440,
-    49472,
-    49504,
-    49536,
-    49568,
-    49600,
-    49632,
-    49664,
-    49696,
-    49728,
-    49760,
-    49792,
-    49824,
-    49856,
-    49888,
-    49920,
-    49952,
-    49984,
-    50016,
-    50048,
-    50080,
-    50112,
-    50144,
-    50176,
-    50208,
-    50240,
-    50272,
-    50304,
-    50336,
-    50368,
-    50400,
-    50432,
-    50464,
-    50496,
-    50528,
-    50560,
-    50592,
-    50624,
-    50656,
-    50688,
-    50720,
-    50752,
-    50784,
-    50816,
-    50848,
-    50880,
-    50912,
-    50944,
-    50976,
-    51008,
-    51040,
-    51072,
-    51104,
-    51136,
-    51168,
-    51200,
-    51232,
-    51264,
-    51296,
-    51328,
-    51360,
-    51392,
-    51424,
-    51456,
-    51488,
-    51520,
-    51552,
-    51584,
-    51616,
-    51648,
-    51680,
-    51712,
-    51744,
-    51776,
-    51808,
-    51840,
-    51872,
-    51904,
-    51936,
-    51968,
-    52000,
-    52032,
-    52064,
-    52096,
-    52128,
-    52160,
-    52192,
-    52224,
-    52256,
-    52288,
-    52320,
-    52352,
-    52384,
-    52416,
-    52448,
-    52480,
-    52512,
-    52544,
-    52576,
-    52608,
-    52640,
-    52672,
-    52704,
-    52736,
-    52768,
-    52800,
-    52832,
-    52864,
-    52896,
-    52928,
-    52960,
-    52992,
-    53024,
-    53056,
-    53088,
-    53120,
-    53152,
-    53184,
-    53216,
-    53248,
-    53280,
-    53312,
-    53344,
-    53376,
-    53408,
-    53440,
-    53472,
-    53504,
-    53536,
-    53568,
-    53600,
-    53632,
-    53664,
-    53696,
-    53728,
-    53760,
-    53792,
-    53824,
-    53856,
-    53888,
-    53920,
-    53952,
-    53984,
-    54016,
-    54048,
-    54080,
-    54112,
-    54144,
-    54176,
-    54208,
-    54240,
-    54272,
-    54304,
-    54336,
-    54368,
-    54400,
-    54432,
-    54464,
-    54496,
-    54528,
-    54560,
-    54592,
-    54624,
-    54656,
-    54688,
-    54720,
-    54752,
-    54784,
-    54816,
-    54848,
-    54880,
-    54912,
-    54944,
-    54976,
-    55008,
-    55040,
-    55072,
-    55104,
-    55136,
-    55168,
-    55200,
-    55232,
-    55264,
-    55296,
-    55328,
-    55360,
-    55392,
-    55424,
-    55456,
-    55488,
-    55520,
-    55552,
-    55584,
-    55616,
-    55648,
-    55680,
-    55712,
-    55744,
-    55776,
-    55808,
-    55840,
-    55872,
-    55904,
-    55936,
-    55968,
-    56000,
-    56032,
-    56064,
-    56096,
-    56128,
-    56160,
-    56192,
-    56224,
-    56256,
-    56288,
-    56320,
-    56352,
-    56384,
-    56416,
-    56448,
-    56480,
-    56512,
-    56544,
-    56576,
-    56608,
-    56640,
-    56672,
-    56704,
-    56736,
-    56768,
-    56800,
-    56832,
-    56864,
-    56896,
-    56928,
-    56960,
-    56992,
-    57024,
-    57056,
-    57088,
-    57120,
-    57152,
-    57184,
-    57216,
-    57248,
-    57280,
-    57312,
-    57344,
-    57376,
-    57408,
-    57440,
-    57472,
-    57504,
-    57536,
-    57568,
-    57600,
-    57632,
-    57664,
-    57696,
-    57728,
-    57760,
-    57792,
-    57824,
-    57856,
-    57888,
-    57920,
-    57952,
-    57984,
-    58016,
-    58048,
-    58080,
-    58112,
-    58144,
-    58176,
-    58208,
-    58240,
-    58272,
-    58304,
-    58336,
-    58368,
-    58400,
-    58432,
-    58464,
-    58496,
-    58528,
-    58560,
-    58592,
-    58624,
-    58656,
-    58688,
-    58720,
-    58752,
-    58784,
-    58816,
-    58848,
-    58880,
-    58912,
-    58944,
-    58976,
-    59008,
-    59040,
-    59072,
-    59104,
-    59136,
-    59168,
-    59200,
-    59232,
-    59264,
-    59296,
-    59328,
-    59360,
-    59392,
-    59424,
-    59456,
-    59488,
-    59520,
-    59552,
-    59584,
-    59616,
-    59648,
-    59680,
-    59712,
-    59744,
-    59776,
-    59808,
-    59840,
-    59872,
-    59904,
-    59936,
-    59968,
-    60000,
-    60032,
-    60064,
-    60096,
-    60128,
-    60160,
-    60192,
-    60224,
-    60256,
-    60288,
-    60320,
-    60352,
-    60384,
-    60416,
-    60448,
-    60480,
-    60512,
-    60544,
-    60576,
-    60608,
-    60640,
-    60672,
-    60704,
-    60736,
-    60768,
-    60800,
-    60832,
-    60864,
-    60896,
-    60928,
-    60960,
-    60992,
-    61024,
-    61056,
-    61088,
-    61120,
-    61152,
-    61184,
-    61216,
-    61248,
-    61280,
-    61312,
-    61344,
-    61376,
-    61408,
-    61440,
-    61472,
-    61504,
-    61536,
-    61568,
-    61600,
-    61632,
-    61664,
-    61696,
-    61728,
-    61760,
-    61792,
-    61824,
-    61856,
-    61888,
-    61920,
-    61952,
-    61984,
-    62016,
-    62048,
-    62080,
-    62112,
-    62144,
-    62176,
-    62208,
-    62240,
-    62272,
-    62304,
-    62336,
-    62368,
-    62400,
-    62432,
-    62464,
-    62496,
-    62528,
-    62560,
-    62592,
-    62624,
-    62656,
-    62688,
-    62720,
-    62752,
-    62784,
-    62816,
-    62848,
-    62880,
-    62912,
-    62944,
-    62976,
-    63008,
-    63040,
-    63072,
-    63104,
-    63136,
-    63168,
-    63200,
-    63232,
-    63264,
-    63296,
-    63328,
-    63360,
-    63392,
-    63424,
-    63456,
-    63488,
-    63520,
-    63552,
-    63584,
-    63616,
-    63648,
-    63680,
-    63712,
-    63744,
-    63776,
-    63808,
-    63840,
-    63872,
-    63904,
-    63936,
-    63968,
-    64000,
-    64032,
-    64064,
-    64096,
-    64128,
-    64160,
-    64192,
-    64224,
-    64256,
-    64288,
-    64320,
-    64352,
-    64384,
-    64416,
-    64448,
-    64480,
-    64512,
-    64544,
-    64576,
-    64608,
-    64640,
-    64672,
-    64704,
-    64736,
-    64768,
-    64800,
-    64832,
-    64864,
-    64896,
-    64928,
-    64960,
-    64992,
-    65024,
-    65056,
-    65088,
-    65120,
-    65152,
-    65184,
-    65216,
-    65248,
-    65280,
-    65312,
-    65344,
-    65376,
-    65408,
-    65440,
-    65472,
-    65504,
-    65536,
-    65568,
-    65600,
-    65632,
-    65664,
-    65696,
-    65728,
-    65760,
-    65792,
-    65824,
-    65856,
-    65888,
-    65920,
-    65952,
-    65984,
-    66016,
-    66048,
-    66080,
-    66112,
-    66144,
-    66176,
-    66208,
-    66240,
-    66272,
-    66304,
-    66336,
-    66368,
-    66400,
-    66432,
-    66464,
-    66496,
-    66528,
-    66560,
-    66592,
-    66624,
-    66656,
-    66688,
-    66720,
-    66752,
-    66784,
-    66816,
-    66848,
-    66880,
-    66912,
-    66944,
-    66976,
-    67008,
-    67040,
-    67072,
-    67104,
-    67136,
-    67168,
-    67200,
-    67232,
-    67264,
-    67296,
-    67328,
-    67360,
-    67392,
-    67424,
-    67456,
-    67488,
-    67520,
-    67552,
-    67584,
-    67616,
-    67648,
-    67680,
-    67712,
-    67744,
-    67776,
-    67808,
-    67840,
-    67872,
-    67904,
-    67936,
-    67968,
-    68000,
-    68032,
-    68064,
-    68096,
-    68128,
-    68160,
-    68192,
-    68224,
-    68256,
-    68288,
-    68320,
-    68352,
-    68384,
-    68416,
-    68448,
-    68480,
-    68512,
-    68544,
-    68576,
-    68608,
-    68640,
-    68672,
-    68704,
-    68736,
-    68768,
-    68800,
-    68832,
-    68864,
-    68896,
-    68928,
-    68960,
-    68992,
-    69024,
-    69056,
-    69088,
-    69120,
-    69152,
-    69184,
-    69216,
-    69248,
-    69280,
-    69312,
-    69344,
-    69376,
-    69408,
-    69440,
-    69472,
-    69504,
-    69536,
-    69568,
-    69600,
-    69632,
-    69664,
-    69696,
-    69728,
-    69760,
-    69792,
-    69824,
-    69856,
-    69888,
-    69920,
-    69952,
-    69984,
-    70016,
-    70048,
-    70080,
-    70112,
-    70144,
-    70176,
-    70208,
-    70240,
-    70272,
-    70304,
-    70336,
-    70368,
-    70400,
-    70432,
-    70464,
-    70496,
-    70528,
-    70560,
-    70592,
-    70624,
-    70656,
-    70688,
-    70720,
-    70752,
-    70784,
-    70816,
-    70848,
-    70880,
-    70912,
-    70944,
-    70976,
-    71008,
-    71040,
-    71072,
-    71104,
-    71136,
-    71168,
-    71200,
-    71232,
-    71264,
-    71296,
-    71328,
-    71360,
-    71392,
-    71424,
-    71456,
-    71488,
-    71520,
-    71552,
-    71584,
-    71616,
-    71648,
-    71680,
-    71712,
-    71744,
-    71776,
-    71808,
-    71840,
-    71872,
-    71904,
-    71936,
-    71968,
-    72000,
-    72032,
-    72064,
-    72096,
-    72128,
-    72160,
-    72192,
-    72224,
-    72256,
-    72288,
-    72320,
-    72352,
-    72384,
-    72416,
-    72448,
-    72480,
-    72512,
-    72544,
-    72576,
-    72608,
-    72640,
-    72672,
-    72704,
-    72736,
-    72768,
-    72800,
-    72832,
-    72864,
-    72896,
-    72928,
-    72960,
-    72992,
-    73024,
-    73056,
-    73088,
-    73120,
-    73152,
-    73184,
-    73216,
-    73248,
-    73280,
-    73312,
-    73344,
-    73376,
-    73408,
-    73440,
-    73472,
-    73504,
-    73536,
-    73568,
-    73600,
-    73632,
-    73664,
-    73696,
-    73728,
-    73760,
-    73792,
-    73824,
-    73856,
-    73888,
-    73920,
-    73952,
-    73984,
-    74016,
-    74048,
-    74080,
-    74112,
-    74144,
-    74176,
-    74208,
-    74240,
-    74272,
-    74304,
-    74336,
-    74368,
-    74400,
-    74432,
-    74464,
-    74496,
-    74528,
-    74560,
-    74592,
-    74624,
-    74656,
-    74688,
-    74720,
-    74752,
-    74784,
-    74816,
-    74848,
-    74880,
-    74912,
-    74944,
-    74976,
-    75008,
-    75040,
-    75072,
-    75104,
-    75136,
-    75168,
-    75200,
-    75232,
-    75264,
-    75296,
-    75328,
-    75360,
-    75392,
-    75424,
-    75456,
-    75488,
-    75520,
-    75552,
-    75584,
-    75616,
-    75648,
-    75680,
-    75712,
-    75744,
-    75776,
-    75808,
-    75840,
-    75872,
-    75904,
-    75936,
-    75968,
-    76000,
-    76032,
-    76064,
-    76096,
-    76128,
-    76160,
-    76192,
-    76224,
-    76256,
-    76288,
-    76320,
-    76352,
-    76384,
-    76416,
-    76448,
-    76480,
-    76512,
-    76544,
-    76576,
-    76608,
-    76640,
-    76672,
-    76704,
-    76736,
-    76768,
-    76800,
-    76832,
-    76864,
-    76896,
-    76928,
-    76960,
-    76992,
-    77024,
-    77056,
-    77088,
-    77120,
-    77152,
-    77184,
-    77216,
-    77248,
-    77280,
-    77312,
-    77344,
-    77376,
-    77408,
-    77440,
-    77472,
-    77504,
-    77536,
-    77568,
-    77600,
-    77632,
-    77664,
-    77696,
-    77728,
-    77760,
-    77792,
-    77824,
-    77856,
-    77888,
-    77920,
-    77952,
-    77984,
-    78016,
-    78048,
-    78080,
-    78112,
-    78144,
-    78176,
-    78208,
-    78240,
-    78272,
-    78304,
-    78336,
-    78368,
-    78400,
-    78432,
-    78464,
-    78496,
-    78528,
-    78560,
-    78592,
-    78624,
-    78656,
-    78688,
-    78720,
-    78752,
-    78784,
-    78816,
-    78848,
-    78880,
-    78912,
-    78944,
-    78976,
-    79008,
-    79040,
-    79072,
-    79104,
-    79136,
-    79168,
-    79200,
-    79232,
-    79264,
-    79296,
-    79328,
-    79360,
-    79392,
-    79424,
-    79456,
-    79488,
-    79520,
-    79552,
-    79584,
-    79616,
-    79648,
-    79680,
-    79712,
-    79744,
-    79776,
-    79808,
-    79840,
-    79872,
-    79904,
-    79936,
-    79968,
-    80000,
-    80032,
-    80064,
-    80096,
-    80128,
-    80160,
-    80192,
-    80224,
-    80256,
-    80288,
-    80320,
-    80352,
-    80384,
-    80416,
-    80448,
-    80480,
-    80512,
-    80544,
-    80576,
-    80608,
-    80640,
-    80672,
-    80704,
-    80736,
-    80768,
-    80800,
-    80832,
-    80864,
-    80896,
-    80928,
-    80960,
-    80992,
-    81024,
-    81056,
-    81088,
-    81120,
-    81152,
-    81184,
-    81216,
-    81248,
-    81280,
-    81312,
-    81344,
-    81376,
-    81408,
-    81440,
-    81472,
-    81504,
-    81536,
-    81568,
-    81600,
-    81632,
-    81664,
-    81696,
-    81728,
-    81760,
-    81792,
-    81824,
-    81856,
-    81888,
-    81920,
-    81952,
-    81984,
-    82016,
-    82048,
-    82080,
-    82112,
-    82144,
-    82176,
-    82208,
-    82240,
-    82272,
-    82304,
-    82336,
-    82368,
-    82400,
-    82432,
-    82464,
-    82496,
-    82528,
-    82560,
-    82592,
-    82624,
-    82656,
-    82688,
-    82720,
-    82752,
-    82784,
-    82816,
-    82848,
-    82880,
-    82912,
-    82944,
-    82976,
-    83008,
-    83040,
-    83072,
-    83104,
-    83136,
-    83168,
-    83200,
-    83232,
-    83264,
-    83296,
-    83328,
-    83360,
-    83392,
-    83424,
-    83456,
-    83488,
-    83520,
-    83552,
-    83584,
-    83616,
-    83648,
-    83680,
-    83712,
-    83744,
-    83776,
-    83808,
-    83840,
-    83872,
-    83904,
-    83936,
-    83968,
-    84000,
-    84032,
-    84064,
-    84096,
-    84128,
-    84160,
-    84192,
-    84224,
-    84256,
-    84288,
-    84320,
-    84352,
-    84384,
-    84416,
-    84448,
-    84480,
-    84512,
-    84544,
-    84576,
-    84608,
-    84640,
-    84672,
-    84704,
-    84736,
-    84768,
-    84800,
-    84832,
-    84864,
-    84896,
-    84928,
-    84960,
-    84992,
-    85024,
-    85056,
-    85088,
-    85120,
-    85152,
-    85184,
-    85216,
-    85248,
-    85280,
-    85312,
-    85344,
-    85376,
-    85408,
-    85440,
-    85472,
-    85504,
-    85536,
-    85568,
-    85600,
-    85632,
-    85664,
-    85696,
-    85728,
-    85760,
-    85792,
-    85824,
-    85856,
-    85888,
-    85920,
-    85952,
-    85984,
-    86016,
-    86048,
-    86080,
-    86112,
-    86144,
-    86176,
-    86208,
-    86240,
-    86272,
-    86304,
-    86336,
-    86368,
-    86400,
-    86432,
-    86464,
-    86496,
-    86528,
-    86560,
-    86592,
-    86624,
-    86656,
-    86688,
-    86720,
-    86752,
-    86784,
-    86816,
-    86848,
-    86880,
-    86912,
-    86944,
-    86976,
-    87008,
-    87040,
-    87072,
-    87104,
-    87136,
-    87168,
-    87200,
-    87232,
-    87264,
-    87296,
-    87328,
-    87360,
-    87392,
-    87424,
-    87456,
-    87488,
-    87520,
-    87552,
-    87584,
-    87616,
-    87648,
-    87680,
-    87712,
-    87744,
-    87776,
-    87808,
-    87840,
-    87872,
-    87904,
-    87936,
-    87968,
-    88000,
-    88032,
-    88064,
-    88096,
-    88128,
-    88160,
-    88192,
-    88224,
-    88256,
-    88288,
-    88320,
-    88352,
-    88384,
-    88416,
-    88448,
-    88480,
-    88512,
-    88544,
-    88576,
-    88608,
-    88640,
-    88672,
-    88704,
-    88736,
-    88768,
-    88800,
-    88832,
-    88864,
-    88896,
-    88928,
-    88960,
-    88992,
-    89024,
-    89056,
-    89088,
-    89120,
-    89152,
-    89184,
-    89216,
-    89248,
-    89280,
-    89312,
-    89344,
-    89376,
-    89408,
-    89440,
-    89472,
-    89504,
-    89536,
-    89568,
-    89600,
-    89632,
-    89664,
-    89696,
-    89728,
-    89760,
-    89792,
-    89824,
-    89856,
-    89888,
-    89920,
-    89952,
-    89984,
-    90016,
-    90048,
-    90080,
-    90112,
-    90144,
-    90176,
-    90208,
-    90240,
-    90272,
-    90304,
-    90336,
-    90368,
-    90400,
-    90432,
-    90464,
-    90496,
-    90528,
-    90560,
-    90592,
-    90624,
-    90656,
-    90688,
-    90720,
-    90752,
-    90784,
-    90816,
-    90848,
-    90880,
-    90912,
-    90944,
-    90976,
-    91008,
-    91040,
-    91072,
-    91104,
-    91136,
-    91168,
-    91200,
-    91232,
-    91264,
-    91296,
-    91328,
-    91360,
-    91392,
-    91424,
-    91456,
-    91488,
-    91520,
-    91552,
-    91584,
-    91616,
-    91648,
-    91680,
-    91712,
-    91744,
-    91776,
-    91808,
-    91840,
-    91872,
-    91904,
-    91936,
-    91968,
-    92000,
-    92032,
-    92064,
-    92096,
-    92128,
-    92160,
-    92192,
-    92224,
-    92256,
-    92288,
-    92320,
-    92352,
-    92384,
-    92416,
-    92448,
-    92480,
-    92512,
-    92544,
-    92576,
-    92608,
-    92640,
-    92672,
-    92704,
-    92736,
-    92768,
-    92800,
-    92832,
-    92864,
-    92896,
-    92928,
-    92960,
-    92992,
-    93024,
-    93056,
-    93088,
-    93120,
-    93152,
-    93184,
-    93216,
-    93248,
-    93280,
-    93312,
-    93344,
-    93376,
-    93408,
-    93440,
-    93472,
-    93504,
-    93536,
-    93568,
-    93600,
-    93632,
-    93664,
-    93696,
-    93728,
-    93760,
-    93792,
-    93824,
-    93856,
-    93888,
-    93920,
-    93952,
-    93984,
-    94016,
-    94048,
-    94080,
-    94112,
-    94144,
-    94176,
-    94208,
-    94240,
-    94272,
-    94304,
-    94336,
-    94368,
-    94400,
-    94432,
-    94464,
-    94496,
-    94528,
-    94560,
-    94592,
-    94624,
-    94656,
-    94688,
-    94720,
-    94752,
-    94784,
-    94816,
-    94848,
-    94880,
-    94912,
-    94944,
-    94976,
-    95008,
-    95040,
-    95072,
-    95104,
-    95136,
-    95168,
-    95200,
-    95232,
-    95264,
-    95296,
-    95328,
-    95360,
-    95392,
-    95424,
-    95456,
-    95488,
-    95520,
-    95552,
-    95584,
-    95616,
-    95648,
-    95680,
-    95712,
-    95744,
-    95776,
-    95808,
-    95840,
-    95872,
-    95904,
-    95936,
-    95968,
-    96000,
-    96032,
-    96064,
-    96096,
-    96128,
-    96160,
-    96192,
-    96224,
-    96256,
-    96288,
-    96320,
-    96352,
-    96384,
-    96416,
-    96448,
-    96480,
-    96512,
-    96544,
-    96576,
-    96608,
-    96640,
-    96672,
-    96704,
-    96736,
-    96768,
-    96800,
-    96832,
-    96864,
-    96896,
-    96928,
-    96960,
-    96992,
-    97024,
-    97056,
-    97088,
-    97120,
-    97152,
-    97184,
-    97216,
-    97248,
-    97280,
-    97312,
-    97344,
-    97376,
-    97408,
-    97440,
-    97472,
-    97504,
-    97536,
-    97568,
-    97600,
-    97632,
-    97664,
-    97696,
-    97728,
-    97760,
-    97792,
-    97824,
-    97856,
-    97888,
-    97920,
-    97952,
-    97984,
-    98016,
-    98048,
-    98080,
-    98112,
-    98144,
-    98176,
-    98208,
-    98240,
-    98272,
-    98304,
-    98336,
-    98368,
-    98400,
-    98432,
-    98464,
-    98496,
-    98528,
-    98560,
-    98592,
-    98624,
-    98656,
-    98688,
-    98720,
-    98752,
-    98784,
-    98816,
-    98848,
-    98880,
-    98912,
-    98944,
-    98976,
-    99008,
-    99040,
-    99072,
-    99104,
-    99136,
-    99168,
-    99200,
-    99232,
-    99264,
-    99296,
-    99328,
-    99360,
-    99392,
-    99424,
-    99456,
-    99488,
-    99520,
-    99552,
-    99584,
-    99616,
-    99648,
-    99680,
-    99712,
-    99744,
-    99776,
-    99808,
-    99840,
-    99872,
-    99904,
-    99936,
-    99968,
-    100000,
-    100032,
-    100064,
-    100096,
-    100128,
-    100160,
-    100192,
-    100224,
-    100256,
-    100288,
-    100320,
-    100352,
-    100384,
-    100416,
-    100448,
-    100480,
-    100512,
-    100544,
-    100576,
-    100608,
-    100640,
-    100672,
-    100704,
-    100736,
-    100768,
-    100800,
-    100832,
-    100864,
-    100896,
-    100928,
-    100960,
-    100992,
-    101024,
-    101056,
-    101088,
-    101120,
-    101152,
-    101184,
-    101216,
-    101248,
-    101280,
-    101312,
-    101344,
-    101376,
-    101408,
-    101440,
-    101472,
-    101504,
-    101536,
-    101568,
-    101600,
-    101632,
-    101664,
-    101696,
-    101728,
-    101760,
-    101792,
-    101824,
-    101856,
-    101888,
-    101920,
-    101952,
-    101984,
-    102016,
-    102048,
-    102080,
-    102112,
-    102144,
-    102176,
-    102208,
-    102240,
-    102272,
-    102304,
-    102336,
-    102368,
-    102400,
-    102432,
-    102464,
-    102496,
-    102528,
-    102560,
-    102592,
-    102624,
-    102656,
-    102688,
-    102720,
-    102752,
-    102784,
-    102816,
-    102848,
-    102880,
-    102912,
-    102944,
-    102976,
-    103008,
-    103040,
-    103072,
-    103104,
-    103136,
-    103168,
-    103200,
-    103232,
-    103264,
-    103296,
-    103328,
-    103360,
-    103392,
-    103424,
-    103456,
-    103488,
-    103520,
-    103552,
-    103584,
-    103616,
-    103648,
-    103680,
-    103712,
-    103744,
-    103776,
-    103808,
-    103840,
-    103872,
-    103904,
-    103936,
-    103968,
-    104000,
-    104032,
-    104064,
-    104096,
-    104128,
-    104160,
-    104192,
-    104224,
-    104256,
-    104288,
-    104320,
-    104352,
-    104384,
-    104416,
-    104448,
-    104480,
-    104512,
-    104544,
-    104576,
-    104608,
-    104640,
-    104672,
-    104704,
-    104736,
-    104768,
-    104800,
-    104832,
-    104864,
-    104896,
-    104928,
-    104960,
-    104992,
-    105024,
-    105056,
-    105088,
-    105120,
-    105152,
-    105184,
-    105216,
-    105248,
-    105280,
-    105312,
-    105344,
-    105376,
-    105408,
-    105440,
-    105472,
-    105504,
-    105536,
-    105568,
-    105600,
-    105632,
-    105664,
-    105696,
-    105728,
-    105760,
-    105792,
-    105824,
-    105856,
-    105888,
-    105920,
-    105952,
-    105984,
-    106016,
-    106048,
-    106080,
-    106112,
-    106144,
-    106176,
-    106208,
-    106240,
-    106272,
-    106304,
-    106336,
-    106368,
-    106400,
-    106432,
-    106464,
-    106496,
-    106528,
-    106560,
-    106592,
-    106624,
-    106656,
-    106688,
-    106720,
-    106752,
-    106784,
-    106816,
-    106848,
-    106880,
-    106912,
-    106944,
-    106976,
-    107008,
-    107040,
-    107072,
-    107104,
-    107136,
-    107168,
-    107200,
-    107232,
-    107264,
-    107296,
-    107328,
-    107360,
-    107392,
-    107424,
-    107456,
-    107488,
-    107520,
-    107552,
-    107584,
-    107616,
-    107648,
-    107680,
-    107712,
-    107744,
-    107776,
-    107808,
-    107840,
-    107872,
-    107904,
-    107936,
-    107968,
-    108000,
-    108032,
-    108064,
-    108096,
-    108128,
-    108160,
-    108192,
-    108224,
-    108256,
-    108288,
-    108320,
-    108352,
-    108384,
-    108416,
-    108448,
-    108480,
-    108512,
-    108544,
-    108576,
-    108608,
-    108640,
-    108672,
-    108704,
-    108736,
-    108768,
-    108800,
-    108832,
-    108864,
-    108896,
-    108928,
-    108960,
-    108992,
-    109024,
-    109056,
-    109088,
-    109120,
-    109152,
-    109184,
-    109216,
-    109248,
-    109280,
-    109312,
-    109344,
-    109376,
-    109408,
-    109440,
-    109472,
-    109504,
-    109536,
-    109568,
-    109600,
-    109632,
-    109664,
-    109696,
-    109728,
-    109760,
-    109792,
-    109824,
-    109856,
-    109888,
-    109920,
-    109952,
-    109984,
-    110016,
-    110048,
-    110080,
-    110112,
-    110144,
-    110176,
-    110208,
-    110240,
-    110272,
-    110304,
-    110336,
-    110368,
-    110400,
-    110432,
-    110464,
-    110496,
-    110528,
-    110560,
-    110592,
-    110624,
-    110656,
-    110688,
-    110720,
-    110752,
-    110784,
-    110816,
-    110848,
-    110880,
-    110912,
-    110944,
-    110976,
-    111008,
-    111040,
-    111072,
-    111104,
-    111136,
-    111168,
-    111200,
-    111232,
-    111264,
-    111296,
-    111328,
-    111360,
-    111392,
-    111424,
-    111456,
-    111488,
-    111520,
-    111552,
-    111584,
-    111616,
-    111648,
-    111680,
-    111712,
-    111744,
-    111776,
-    111808,
-    111840,
-    111872,
-    111904,
-    111936,
-    111968,
-    112000,
-    112032,
-    112064,
-    112096,
-    112128,
-    112160,
-    112192,
-    112224,
-    112256,
-    112288,
-    112320,
-    112352,
-    112384,
-    112416,
-    112448,
-    112480,
-    112512,
-    112544,
-    112576,
-    112608,
-    112640,
-    112672,
-    112704,
-    112736,
-    112768,
-    112800,
-    112832,
-    112864,
-    112896,
-    112928,
-    112960,
-    112992,
-    113024,
-    113056,
-    113088,
-    113120,
-    113152,
-    113184,
-    113216,
-    113248,
-    113280,
-    113312,
-    113344,
-    113376,
-    113408,
-    113440,
-    113472,
-    113504,
-    113536,
-    113568,
-    113600,
-    113632,
-    113664,
-    113696,
-    113728,
-    113760,
-    113792,
-    113824,
-    113856,
-    113888,
-    113920,
-    113952,
-    113984,
-    114016,
-    114048,
-    114080,
-    114112,
-    114144,
-    114176,
-    114208,
-    114240,
-    114272,
-    114304,
-    114336,
-    114368,
-    114400,
-    114432,
-    114464,
-    114496,
-    114528,
-    114560,
-    114592,
-    114624,
-    114656,
-    114688,
-    114720,
-    114752,
-    114784,
-    114816,
-    114848,
-    114880,
-    114912,
-    114944,
-    114976,
-    115008,
-    115040,
-    115072,
-    115104,
-    115136,
-    115168,
-    115200,
-    115232,
-    115264,
-    115296,
-    115328,
-    115360,
-    115392,
-    115424,
-    115456,
-    115488,
-    115520,
-    115552,
-    115584,
-    115616,
-    115648,
-    115680,
-    115712,
-    115744,
-    115776,
-    115808,
-    115840,
-    115872,
-    115904,
-    115936,
-    115968,
-    116000,
-    116032,
-    116064,
-    116096,
-    116128,
-    116160,
-    116192,
-    116224,
-    116256,
-    116288,
-    116320,
-    116352,
-    116384,
-    116416,
-    116448,
-    116480,
-    116512,
-    116544,
-    116576,
-    116608,
-    116640,
-    116672,
-    116704,
-    116736,
-    116768,
-    116800,
-    116832,
-    116864,
-    116896,
-    116928,
-    116960,
-    116992,
-    117024,
-    117056,
-    117088,
-    117120,
-    117152,
-    117184,
-    117216,
-    117248,
-    117280,
-    117312,
-    117344,
-    117376,
-    117408,
-    117440,
-    117472,
-    117504,
-    117536,
-    117568,
-    117600,
-    117632,
-    117664,
-    117696,
-    117728,
-    117760,
-    117792,
-    117824,
-    117856,
-    117888,
-    117920,
-    117952,
-    117984,
-    118016,
-    118048,
-    118080,
-    118112,
-    118144,
-    118176,
-    118208,
-    118240,
-    118272,
-    118304,
-    118336,
-    118368,
-    118400,
-    118432,
-    118464,
-    118496,
-    118528,
-    118560,
-    118592,
-    118624,
-    118656,
-    118688,
-    118720,
-    118752,
-    118784,
-    118816,
-    118848,
-    118880,
-    118912,
-    118944,
-    118976,
-    119008,
-    119040,
-    119072,
-    119104,
-    119136,
-    119168,
-    119200,
-    119232,
-    119264,
-    119296,
-    119328,
-    119360,
-    119392,
-    119424,
-    119456,
-    119488,
-    119520,
-    119552,
-    119584,
-    119616,
-    119648,
-    119680,
-    119712,
-    119744,
-    119776,
-    119808,
-    119840,
-    119872,
-    119904,
-    119936,
-    119968,
-    120000,
-    120032,
-    120064,
-    120096,
-    120128,
-    120160,
-    120192,
-    120224,
-    120256,
-    120288,
-    120320,
-    120352,
-    120384,
-    120416,
-    120448,
-    120480,
-    120512,
-    120544,
-    120576,
-    120608,
-    120640,
-    120672,
-    120704,
-    120736,
-    120768,
-    120800,
-    120832,
-    120864,
-    120896,
-    120928,
-    120960,
-    120992,
-    121024,
-    121056,
-    121088,
-    121120,
-    121152,
-    121184,
-    121216,
-    121248,
-    121280,
-    121312,
-    121344,
-    121376,
-    121408,
-    121440,
-    121472,
-    121504,
-    121536,
-    121568,
-    121600,
-    121632,
-    121664,
-    121696,
-    121728,
-    121760,
-    121792,
-    121824,
-    121856,
-    121888,
-    121920,
-    121952,
-    121984,
-    122016,
-    122048,
-    122080,
-    122112,
-    122144,
-    122176,
-    122208,
-    122240,
-    122272,
-    122304,
-    122336,
-    122368,
-    122400,
-    122432,
-    122464,
-    122496,
-    122528,
-    122560,
-    122592,
-    122624,
-    122656,
-    122688,
-    122720,
-    122752,
-    122784,
-    122816,
-    122848,
-    122880,
-    122912,
-    122944,
-    122976,
-    123008,
-    123040,
-    123072,
-    123104,
-    123136,
-    123168,
-    123200,
-    123232,
-    123264,
-    123296,
-    123328,
-    123360,
-    123392,
-    123424,
-    123456,
-    123488,
-    123520,
-    123552,
-    123584,
-    123616,
-    123648,
-    123680,
-    123712,
-    123744,
-    123776,
-    123808,
-    123840,
-    123872,
-    123904,
-    123936,
-    123968,
-    124000,
-    124032,
-    124064,
-    124096,
-    124128,
-    124160,
-    124192,
-    124224,
-    124256,
-    124288,
-    124320,
-    124352,
-    124384,
-    124416,
-    124448,
-    124480,
-    124512,
-    124544,
-    124576,
-    124608,
-    124640,
-    124672,
-    124704,
-    124736,
-    124768,
-    124800,
-    124832,
-    124864,
-    124896,
-    124928,
-    124960,
-    124992,
-    125024,
-    125056,
-    125088,
-    125120,
-    125152,
-    125184,
-    125216,
-    125248,
-    125280,
-    125312,
-    125344,
-    125376,
-    125408,
-    125440,
-    125472,
-    125504,
-    125536,
-    125568,
-    125600,
-    125632,
-    125664,
-    125696,
-    125728,
-    125760,
-    125792,
-    125824,
-    125856,
-    125888,
-    125920,
-    125952,
-    125984,
-    126016,
-    126048,
-    126080,
-    126112,
-    126144,
-    126176,
-    126208,
-    126240,
-    126272,
-    126304,
-    126336,
-    126368,
-    126400,
-    126432,
-    126464,
-    126496,
-    126528,
-    126560,
-    126592,
-    126624,
-    126656,
-    126688,
-    126720,
-    126752,
-    126784,
-    126816,
-    126848,
-    126880,
-    126912,
-    126944,
-    126976,
-    127008,
-    127040,
-    127072,
-    127104,
-    127136,
-    127168,
-    127200,
-    127232,
-    127264,
-    127296,
-    127328,
-    127360,
-    127392,
-    127424,
-    127456,
-    127488,
-    127520,
-    127552,
-    127584,
-    127616,
-    127648,
-    127680,
-    127712,
-    127744,
-    127776,
-    127808,
-    127840,
-    127872,
-    127904,
-    127936,
-    127968,
-    128000,
-    128032,
-    128064,
-    128096,
-    128128,
-    128160,
-    128192,
-    128224,
-    128256,
-    128288,
-    128320,
-    128352,
-    128384,
-    128416,
-    128448,
-    128480,
-    128512,
-    128544,
-    128576,
-    128608,
-    128640,
-    128672,
-    128704,
-    128736,
-    128768,
-    128800,
-    128832,
-    128864,
-    128896,
-    128928,
-    128960,
-    128992,
-    129024,
-    129056,
-    129088,
-    129120,
-    129152,
-    129184,
-    129216,
-    129248,
-    129280,
-    129312,
-    129344,
-    129376,
-    129408,
-    129440,
-    129472,
-    129504,
-    129536,
-    129568,
-    129600,
-    129632,
-    129664,
-    129696,
-    129728,
-    129760,
-    129792,
-    129824,
-    129856,
-    129888,
-    129920,
-    129952,
-    129984,
-    130016,
-    130048,
-    130080,
-    130112,
-    130144,
-    130176,
-    130208,
-    130240,
-    130272,
-    130304,
-    130336,
-    130368,
-    130400,
-    130432,
-    130464,
-    130496,
-    130528,
-    130560,
-    130592,
-    130624,
-    130656,
-    130688,
-    130720,
-    130752,
-    130784,
-    130816,
-    130848,
-    130880,
-    130912,
-    130944,
-    130976,
-    131008,
-    131040,
-    131072,
-    131104,
-    131136,
-    131168,
-    131200,
-    131232,
-    131264,
-    131296,
-    131328,
-    131360,
-    131392,
-    131424,
-    131456,
-    131488,
-    131520,
-    131552,
-    131584,
-    131616,
-    131648,
-    131680,
-    131712,
-    131744,
-    131776,
-    131808,
-    131840,
-    131872,
-    131904,
-    131936,
-    131968,
-    132000,
-    132032,
-    132064,
-    132096,
-    132128,
-    132160,
-    132192,
-    132224,
-    132256,
-    132288,
-    132320,
-    132352,
-    132384,
-    132416,
-    132448,
-    132480,
-    132512,
-    132544,
-    132576,
-    132608,
-    132640,
-    132672,
-    132704,
-    132736,
-    132768,
-    132800,
-    132832,
-    132864,
-    132896,
-    132928,
-    132960,
-    132992,
-    133024,
-    133056,
-    133088,
-    133120,
-    133152,
-    133184,
-    133216,
-    133248,
-    133280,
-    133312,
-    133344,
-    133376,
-    133408,
-    133440,
-    133472,
-    133504,
-    133536,
-    133568,
-    133600,
-    133632,
-    133664,
-    133696,
-    133728,
-    133760,
-    133792,
-    133824,
-    133856,
-    133888,
-    133920,
-    133952,
-    133984,
-    134016,
-    134048,
-    134080,
-    134112,
-    134144,
-    134176,
-    134208,
-    134240,
-    134272,
-    134304,
-    134336,
-    134368,
-    134400,
-    134432,
-    134464,
-    134496,
-    134528,
-    134560,
-    134592,
-    134624,
-    134656,
-    134688,
-    134720,
-    134752,
-    134784,
-    134816,
-    134848,
-    134880,
-    134912,
-    134944,
-    134976,
-    135008,
-    135040,
-    135072,
-    135104,
-    135136,
-    135168,
-    135200,
-    135232,
-    135264,
-    135296,
-    135328,
-    135360,
-    135392,
-    135424,
-    135456,
-    135488,
-    135520,
-    135552,
-    135584,
-    135616,
-    135648,
-    135680,
-    135712,
-    135744,
-    135776,
-    135808,
-    135840,
-    135872,
-    135904,
-    135936,
-    135968,
-    136000,
-    136032,
-    136064,
-    136096,
-    136128,
-    136160,
-    136192,
-    136224,
-    136256,
-    136288,
-    136320,
-    136352,
-    136384,
-    136416,
-    136448,
-    136480,
-    136512,
-    136544,
-    136576,
-    136608,
-    136640,
-    136672,
-    136704,
-    136736,
-    136768,
-    136800,
-    136832,
-    136864,
-    136896,
-    136928,
-    136960,
-    136992,
-    137024,
-    137056,
-    137088,
-    137120,
-    137152,
-    137184,
-    137216,
-    137248,
-    137280,
-    137312,
-    137344,
-    137376,
-    137408,
-    137440,
-    137472,
-    137504,
-    137536,
-    137568,
-    137600,
-    137632,
-    137664,
-    137696,
-    137728,
-    137760,
-    137792,
-    137824,
-    137856,
-    137888,
-    137920,
-    137952,
-    137984,
-    138016,
-    138048,
-    138080,
-    138112,
-    138144,
-    138176,
-    138208,
-    138240,
-    138272,
-    138304,
-    138336,
-    138368,
-    138400,
-    138432,
-    138464,
-    138496,
-    138528,
-    138560,
-    138592,
-    138624,
-    138656,
-    138688,
-    138720,
-    138752,
-    138784,
-    138816,
-    138848,
-    138880,
-    138912,
-    138944,
-    138976,
-    139008,
-    139040,
-    139072,
-    139104,
-    139136,
-    139168,
-    139200,
-    139232,
-    139264,
-    139296,
-    139328,
-    139360,
-    139392,
-    139424,
-    139456,
-    139488,
-    139520,
-    139552,
-    139584,
-    139616,
-    139648,
-    139680,
-    139712,
-    139744,
-    139776,
-    139808,
-    139840,
-    139872,
-    139904,
-    139936,
-    139968,
-    140000,
-    140032,
-    140064,
-    140096,
-    140128,
-    140160,
-    140192,
-    140224,
-    140256,
-    140288,
-    140320,
-    140352,
-    140384,
-    140416,
-    140448,
-    140480,
-    140512,
-    140544,
-    140576,
-    140608,
-    140640,
-    140672,
-    140704,
-    140736,
-    140768,
-    140800,
-    140832,
-    140864,
-    140896,
-    140928,
-    140960,
-    140992,
-    141024,
-    141056,
-    141088,
-    141120,
-    141152,
-    141184,
-    141216,
-    141248,
-    141280,
-    141312,
-    141344,
-    141376,
-    141408,
-    141440,
-    141472,
-    141504,
-    141536,
-    141568,
-    141600,
-    141632,
-    141664,
-    141696,
-    141728,
-    141760,
-    141792,
-    141824,
-    141856,
-    141888,
-    141920,
-    141952,
-    141984,
-    142016,
-    142048,
-    142080,
-    142112,
-    142144,
-    142176,
-    142208,
-    142240,
-    142272,
-    142304,
-    142336,
-    142368,
-    142400,
-    142432,
-    142464,
-    142496,
-    142528,
-    142560,
-    142592,
-    142624,
-    142656,
-    142688,
-    142720,
-    142752,
-    142784,
-    142816,
-    142848,
-    142880,
-    142912,
-    142944,
-    142976,
-    143008,
-    143040,
-    143072,
-    143104,
-    143136,
-    143168,
-    143200,
-    143232,
-    143264,
-    143296,
-    143328,
-    143360,
-    143392,
-    143424,
-    143456,
-    143488,
-    143520,
-    143552,
-    143584,
-    143616,
-    143648,
-    143680,
-    143712,
-    143744,
-    143776,
-    143808,
-    143840,
-    143872,
-    143904,
-    143936,
-    143968,
-    144000,
-    144032,
-    144064,
-    144096,
-    144128,
-    144160,
-    144192,
-    144224,
-    144256,
-    144288,
-    144320,
-    144352,
-    144384,
-    144416,
-    144448,
-    144480,
-    144512,
-    144544,
-    144576,
-    144608,
-    144640,
-    144672,
-    144704,
-    144736,
-    144768,
-    144800,
-    144832,
-    144864,
-    144896,
-    144928,
-    144960,
-    144992,
-    145024,
-    145056,
-    145088,
-    145120,
-    145152,
-    145184,
-    145216,
-    145248,
-    145280,
-    145312,
-    145344,
-    145376,
-    145408,
-    145440,
-    145472,
-    145504,
-    145536,
-    145568,
-    145600,
-    145632,
-    145664,
-    145696,
-    145728,
-    145760,
-    145792,
-    145824,
-    145856,
-    145888,
-    145920,
-    145952,
-    145984,
-    146016,
-    146048,
-    146080,
-    146112,
-    146144,
-    146176,
-    146208,
-    146240,
-    146272,
-    146304,
-    146336,
-    146368,
-    146400,
-    146432,
-    146464,
-    146496,
-    146528,
-    146560,
-    146592,
-    146624,
-    146656,
-    146688,
-    146720,
-    146752,
-    146784,
-    146816,
-    146848,
-    146880,
-    146912,
-    146944,
-    146976,
-    147008,
-    147040,
-    147072,
-    147104,
-    147136,
-    147168,
-    147200,
-    147232,
-    147264,
-    147296,
-    147328,
-    147360,
-    147392,
-    147424,
-    147456,
-    147488,
-    147520,
-    147552,
-    147584,
-    147616,
-    147648,
-    147680,
-    147712,
-    147744,
-    147776,
-    147808,
-    147840,
-    147872,
-    147904,
-    147936,
-    147968,
-    148000,
-    148032,
-    148064,
-    148096,
-    148128,
-    148160,
-    148192,
-    148224,
-    148256,
-    148288,
-    148320,
-    148352,
-    148384,
-    148416,
-    148448,
-    148480,
-    148512,
-    148544,
-    148576,
-    148608,
-    148640,
-    148672,
-    148704,
-    148736,
-    148768,
-    148800,
-    148832,
-    148864,
-    148896,
-    148928,
-    148960,
-    148992,
-    149024,
-    149056,
-    149088,
-    149120,
-    149152,
-    149184,
-    149216,
-    149248,
-    149280,
-    149312,
-    149344,
-    149376,
-    149408,
-    149440,
-    149472,
-    149504,
-    149536,
-    149568,
-    149600,
-    149632,
-    149664,
-    149696,
-    149728,
-    149760,
-    149792,
-    149824,
-    149856,
-    149888,
-    149920,
-    149952,
-    149984,
-    150016,
-    150048,
-    150080,
-    150112,
-    150144,
-    150176,
-    150208,
-    150240,
-    150272,
-    150304,
-    150336,
-    150368,
-    150400,
-    150432,
-    150464,
-    150496,
-    150528,
-    150560,
-    150592,
-    150624,
-    150656,
-    150688,
-    150720,
-    150752,
-    150784,
-    150816,
-    150848,
-    150880,
-    150912,
-    150944,
-    150976,
-    151008,
-    151040,
-    151072,
-    151104,
-    151136,
-    151168,
-    151200,
-    151232,
-    151264,
-    151296,
-    151328,
-    151360,
-    151392,
-    151424,
-    151456,
-    151488,
-    151520,
-    151552,
-    151584,
-    151616,
-    151648,
-    151680,
-    151712,
-    151744,
-    151776,
-    151808,
-    151840,
-    151872,
-    151904,
-    151936,
-    151968,
-    152000,
-    152032,
-    152064,
-    152096,
-    152128,
-    152160,
-    152192,
-    152224,
-    152256,
-    152288,
-    152320,
-    152352,
-    152384,
-    152416,
-    152448,
-    152480,
-    152512,
-    152544,
-    152576,
-    152608,
-    152640,
-    152672,
-    152704,
-    152736,
-    152768,
-    152800,
-    152832,
-    152864,
-    152896,
-    152928,
-    152960,
-    152992,
-    153024,
-    153056,
-    153088,
-    153120,
-    153152,
-    153184,
-    153216,
-    153248,
-    153280,
-    153312,
-    153344,
-    153376,
-    153408,
-    153440,
-    153472,
-    153504,
-    153536,
-    153568,
-    153600,
-    153632,
-    153664,
-    153696,
-    153728,
-    153760,
-    153792,
-    153824,
-    153856,
-    153888,
-    153920,
-    153952,
-    153984,
-    154016,
-    154048,
-    154080,
-    154112,
-    154144,
-    154176,
-    154208,
-    154240,
-    154272,
-    154304,
-    154336,
-    154368,
-    154400,
-    154432,
-    154464,
-    154496,
-    154528,
-    154560,
-    154592,
-    154624,
-    154656,
-    154688,
-    154720,
-    154752,
-    154784,
-    154816,
-    154848,
-    154880,
-    154912,
-    154944,
-    154976,
-    155008,
-    155040,
-    155072,
-    155104,
-    155136,
-    155168,
-    155200,
-    155232,
-    155264,
-    155296,
-    155328,
-    155360,
-    155392,
-    155424,
-    155456,
-    155488,
-    155520,
-    155552,
-    155584,
-    155616,
-    155648,
-    155680,
-    155712,
-    155744,
-    155776,
-    155808,
-    155840,
-    155872,
-    155904,
-    155936,
-    155968,
-    156000,
-    156032,
-    156064,
-    156096,
-    156128,
-    156160,
-    156192,
-    156224,
-    156256,
-    156288,
-    156320,
-    156352,
-    156384,
-    156416,
-    156448,
-    156480,
-    156512,
-    156544,
-    156576,
-    156608,
-    156640,
-    156672,
-    156704,
-    156736,
-    156768,
-    156800,
-    156832,
-    156864,
-    156896,
-    156928,
-    156960,
-    156992,
-    157024,
-    157056,
-    157088,
-    157120,
-    157152,
-    157184,
-    157216,
-    157248,
-    157280,
-    157312,
-    157344,
-    157376,
-    157408,
-    157440,
-    157472,
-    157504,
-    157536,
-    157568,
-    157600,
-    157632,
-    157664,
-    157696,
-    157728,
-    157760,
-    157792,
-    157824,
-    157856,
-    157888,
-    157920,
-    157952,
-    157984,
-    158016,
-    158048,
-    158080,
-    158112,
-    158144,
-    158176,
-    158208,
-    158240,
-    158272,
-    158304,
-    158336,
-    158368,
-    158400,
-    158432,
-    158464,
-    158496,
-    158528,
-    158560,
-    158592,
-    158624,
-    158656,
-    158688,
-    158720,
-    158752,
-    158784,
-    158816,
-    158848,
-    158880,
-    158912,
-    158944,
-    158976,
-    159008,
-    159040,
-    159072,
-    159104,
-    159136,
-    159168,
-    159200,
-    159232,
-    159264,
-    159296,
-    159328,
-    159360,
-    159392,
-    159424,
-    159456,
-    159488,
-    159520,
-    159552,
-    159584,
-    159616,
-    159648,
-    159680,
-    159712,
-    159744,
-    159776,
-    159808,
-    159840,
-    159872,
-    159904,
-    159936,
-    159968,
-    160000,
-    160032,
-    160064,
-    160096,
-    160128,
-    160160,
-    160192,
-    160224,
-    160256,
-    160288,
-    160320,
-    160352,
-    160384,
-    160416,
-    160448,
-    160480,
-    160512,
-    160544,
-    160576,
-    160608,
-    160640,
-    160672,
-    160704,
-    160736,
-    160768,
-    160800,
-    160832,
-    160864,
-    160896,
-    160928,
-    160960,
-    160992,
-    161024,
-    161056,
-    161088,
-    161120,
-    161152,
-    161184,
-    161216,
-    161248,
-    161280,
-    161312,
-    161344,
-    161376,
-    161408,
-    161440,
-    161472,
-    161504,
-    161536,
-    161568,
-    161600,
-    161632,
-    161664,
-    161696,
-    161728,
-    161760,
-    161792,
-    161824,
-    161856,
-    161888,
-    161920,
-    161952,
-    161984,
-    162016,
-    162048,
-    162080,
-    162112,
-    162144,
-    162176,
-    162208,
-    162240,
-    162272,
-    162304,
-    162336,
-    162368,
-    162400,
-    162432,
-    162464,
-    162496,
-    162528,
-    162560,
-    162592,
-    162624,
-    162656,
-    162688,
-    162720,
-    162752,
-    162784,
-    162816,
-    162848,
-    162880,
-    162912,
-    162944,
-    162976,
-    163008,
-    163040,
-    163072,
-    163104,
-    163136,
-    163168,
-    163200,
-    163232,
-    163264,
-    163296,
-    163328,
-    163360,
-    163392,
-    163424,
-    163456,
-    163488,
-    163520,
-    163552,
-    163584,
-    163616,
-    163648,
-    163680,
-    163712,
-    163744,
-    163776,
-    163808,
-    163840,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwidemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwidemipiraw_Sensor.c
deleted file mode 100755
index c3e97f27..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwidemipiraw_Sensor.c
+++ /dev/null
@@ -1,3646 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 konkauwidemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "konkauwidemipiraw_Sensor.h"
-
-#define KONKAUWIDE_EEPROM_READ_ID	0xA1
-#define KONKAUWIDE_EEPROM_WRITE_ID   0xA0
-#define KONKAUWIDE_MAX_OFFSET		0x4000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "konkauwide_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x4000
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x468
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x600
-#define AF_CODE_SIZE 6
-#define GET_SENSOR_ID_RETRY_CNT    5
-
-static bool module_flag = FALSE;
-static bool bNeedSetNormalMode = FALSE;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-#define MAX_BURST_LEN  2048
-static u8 * msg_buf = NULL;
-
-static int group_hold_frame_count = 0;
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int konkauwide_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void konkauwide_set_shutter_convert(struct subdrv_ctx *ctx, u32 shutter);
-static int konkauwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int get_sensor_temperature(void *arg);
-static void get_sensor_cali(void* arg);
-static void set_sensor_cali(void *arg);
-static int konkauwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain);
-static int konkauwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_set_multi_shutter_frame_length_in_lut(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void konkauwide_set_multi_shutter_frame_length_in_lut_convert(struct subdrv_ctx *ctx,
-	u64 *shutters, u16 exp_cnt, u32 frame_length, u32 *frame_length_in_lut);
-static void konkauwide_write_frame_length_in_lut(struct subdrv_ctx *ctx, u32 fll, u32 *fll_in_lut);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int konkauwide_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int konkauwide_i2c_burst_wr_regs_u16(struct subdrv_ctx *ctx, u16 * list, u32 len);
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx,
-		u16 addr, u16 *list, u32 len);
-static void konkauwide_lens_pos_writeback(struct subdrv_ctx *ctx);
-static int konkauwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void konkauwide_set_max_framerate_in_lut_by_scenario(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id, u32 framerate);
-/* STRUCT */
-
-static kal_uint16 g_af_code_macro    = 0;
-static kal_uint16 g_af_code_infinity = 0;
-
-static struct eeprom_map_info konkauwide_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x000F, 0x0010, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x51F0, 0x0000, 0x0000, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x2780, 0x2D89, 0x2D8A, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x31C0, 0x3859, 0x385A, CALI_DATA_MASTER_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, konkauwide_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, konkauwide_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, konkauwide_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, konkauwide_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, konkauwide_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, konkauwide_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, konkauwide_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, konkauwide_streaming_resume},
-	{SENSOR_FEATURE_SET_ESHUTTER, konkauwide_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, konkauwide_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_GAIN, konkauwide_set_gain},
-	{SENSOR_FEATURE_SET_HDR_SHUTTER, konkauwide_set_hdr_tri_shutter2},
-	{SENSOR_FEATURE_SET_HDR_TRI_SHUTTER, konkauwide_set_hdr_tri_shutter3},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, konkauwide_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, konkauwide_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_SET_AWB_GAIN, konkauwide_set_awb_gain},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME_IN_LUT, konkauwide_set_multi_shutter_frame_length_in_lut},
-	{SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO, konkauwide_set_max_framerate_by_scenario},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01AB010A,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA0,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_NORMAL,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 384}, {0, 0},
-		/*     */
-		{0, 384}, {0, 384}, {0, 0}, {0, 0}, {0, 0},
-		/*  */
-		{0, 0}, {416, 312},
-	},
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_NORMAL,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 384}, {0, 0}, {0, 0}, {208, 156}, {96, 72},
-		/*     */
-		{0, 192}, {0, 192}, {0, 0}, {0, 192}, {0, 0},
-	},
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_NORMAL,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 384}, {0, 0}, {0, 0}, {3280, 2460}, {3168, 3276},
-		/*      */
-		{0, 0}, {0, 384}, {0, 384}, {0, 0}, {2048, 1536}, {2048, 1536},
-	},
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 8,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info = {
-	.gain_ratio = 1000,
-	.OB_pedestal = 64,
-	.saturation_level = 1023,
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_12bit = {
-	.gain_ratio = 4000,
-	.OB_pedestal = 256,
-	.saturation_level = 4095,
-};
-
-static u32 konkauwide_dcg_ratio_table_10bit[] = {4000};
-static u32 konkauwide_dcg_ratio_table_12bit[] = {4000};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 8192x6144 Fullsize bayer mode 6*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-/* 8192x6144 Fullsize QBC mode 7*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-/* 1632X1224 24fps subsample */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1224,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 1632,
-			.vsize = 306,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 1856x1392 24fps subsample*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1856,
-			.vsize = 1392,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 1856,
-			.vsize = 348,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 4096x2304@30fps DSG sensor merge raw12 */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2C,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 4096x3072 60fps binning*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 4096x3072 30fps, DAG sensor merge 12bit */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2C,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_4096x3072_30fps_3056Msps izoom */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_Bypass_4096x3072_30fps_3056Msps QBC*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{ /*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = konkauwide_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkauwide_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkauwide_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{  /*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = konkauwide_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{  /*05_OceanDX4_09_JN5_Fdsum_4K_4096x2304_30fps_3056Msps*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = konkauwide_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_normal_video_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = konkauwide_seamless_vid,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkauwide_seamless_vid),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608 ,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 08_OceanDX4_09_JN5_Fdsum_4K_4096x2304_60fps_3056Msps */
-		.frame_desc = frame_desc_hs_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_hs_vid),
-		.mode_setting_table = konkauwide_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {73},
-	},
-	{ /*12_OceanDX4_13_0_JN5_A2A2_FHD_2048x1152_240.4fps_1992Msps*/
-		.frame_desc = frame_desc_slim_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_slim_vid),
-		.mode_setting_table = konkauwide_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 3072,
-		.framelength = 1246,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 796800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {87},
-	},
-	{ /* 04_OceanDX4_05_JN5_Fdsum_12.5Mp_AEB_4096x3072_60fps_3056Msps */
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = konkauwide_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom1_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkauwide_seamless_custom1,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkauwide_seamless_custom1),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204 * 2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFF,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFF,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 3,
-		.csi_param = {79},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 80,
-	},
-	{  /* 8192x6144 Fullsize bayer mode 6*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = konkauwide_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkauwide_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkauwide_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9600,
-		.framelength = 6346,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {79},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{  /* 8192x6144 Fullsize QBC mode 7*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = konkauwide_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = konkauwide_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkauwide_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9600,
-		.framelength = 6346,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {79},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{ /* 1632X1224 24fps subsample */
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = konkauwide_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 8848,
-		.framelength = 4328,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 832,
-			.y0_offset = 624,
-			.w0_size = 6528,
-			.h0_size = 4896,
-			.scale_w = 1632,
-			.scale_h = 1224,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1224,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1224,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {74},
-	},
-	{ /* 1856x1392 24fps subsample*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = konkauwide_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom5_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 8844,
-		.framelength = 4320,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 1120,
-			.y1_offset = 840,
-			.w1_size = 1856,
-			.h1_size = 1392,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1856,
-			.h2_tg_size = 1392,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {84},
-	},
-	{ /* 06_OceanDX4_10_0_JN5_Fdsum_DSG_4096x2304_30fps_3056Msps sensor merge 12bit*/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = konkauwide_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom6_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_Gr,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 9568,
-		.framelength = 3204,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_LCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = konkauwide_dcg_ratio_table_12bit,
-			.dcg_gain_table_size = sizeof(konkauwide_dcg_ratio_table_12bit),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 20,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{  /* 07_OceanDX4_10_0_JN5_Fdsum_DSG_split_4096x2304_30fps_3056Msps AP merge*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = konkauwide_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom7_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = konkauwide_seamless_custom7,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(konkauwide_seamless_custom7),
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 9568,
-		.framelength = 3204,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.saturation_info = &imgsensor_saturation_info,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_LCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = konkauwide_dcg_ratio_table_10bit,
-			.dcg_gain_table_size = sizeof(konkauwide_dcg_ratio_table_10bit),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 20,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 4096x3072 60fps binning*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = konkauwide_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 4096x3072 30fps, DAG sensor merge 12bit */
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = konkauwide_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_Gr,
-		.pclk = 920000000,
-		.linelength = 9568,
-		.framelength = 3204,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,  // temp setting no pd
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_LCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = konkauwide_dcg_ratio_table_12bit,
-			.dcg_gain_table_size = sizeof(konkauwide_dcg_ratio_table_12bit),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 20,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 14_OceanDX4_03_JN5_Full_12.5Mp_4096x3072_30fps_3056Msps izoom */
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = konkauwide_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom10_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1536,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {87},
-	},
-	{  /* 14_OceanDX4_03_JN5_Full_12.5Mp_Bypass_4096x3072_30fps_3056Msps QBC*/
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = konkauwide_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(konkauwide_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1536,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = KONKAUWIDE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0000, 0x0001},
-	.i2c_addr_table = {0x5a, 0xff},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_16,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_Gr,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 160,
-	.ana_gain_type = 2, //0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC
-	.ana_gain_step = 2,
-	.ana_gain_table = konkauwide_ana_gain_table,
-	.ana_gain_table_size = sizeof(konkauwide_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max = 0xffff * 256,
-	.exposure_step = 1,
-	.exposure_margin = 24, /*tentative*/
-	.frame_length_max = 0xffff,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 1616100,
-	.line_interleave_num = 1,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_DCG|HDR_SUPPORT_LBMF,
-	.saturation_info = &imgsensor_saturation_info,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure ={
-			{0x0202, 0x0203}, //Short exposure
-			{0x0202, 0x0203},
-			{0x0226, 0x0227}, //Long exposure
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x0704,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, //Short Gain
-			{0x0204, 0x0205},
-			{0x0206, 0x0207}, //Long Gain
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E14, 0x0E15},  /* LUT_A_FRM_LENGTH_LINES */
-			{0x0E20, 0x0E21},  /* LUT_B_FRM_LENGTH_LINES */
-	},
-	.reg_addr_temp_en = PARAM_UNDEFINED,
-	.reg_addr_temp_read = 0x0020,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_exposure_in_lut = {
-			{0x0E10, 0x0E11}, //LUT_A_COARSE_INTEG_TIME
-			{0x0E1C, 0x0E1D}, //LUT_B_COARSE_INTEG_TIME
-	},
-
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E12, 0x0E13}, //LUT_A_ANA_GAIN_GLOBAL
-			{0x0E1E, 0x0E1F}, //LUT_B_ANA_GAIN_GLOBAL
-	},
-	// .init_setting_table = konkauwide_sensor_init_setting,
-	// .init_setting_len =  ARRAY_SIZE(konkauwide_sensor_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0x350174bc,
-
-	.oplus_notify_chg_flag = false,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 2000},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_AVDD, {2204000, 2204000}, 1000},
-	{HW_ID_DVDD, {1000000, 1000000}, 0},
-	{HW_ID_AFVDD, {2804000, 2804000}, 0},
-	{HW_ID_RST, {1}, 2000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 10000},
-};
-
-const struct subdrv_entry konkauwide_mipi_raw_entry = {
-	.name = "konkauwide_mipi_raw",
-	.id = KONKAUWIDE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x50)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 80;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void konkauwide_set_dummy(struct subdrv_ctx *ctx)
-{
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF)
-		konkauwide_write_frame_length_in_lut(ctx, ctx->frame_length, ctx->frame_length_in_lut);
-	else
-		write_frame_length(ctx, ctx->frame_length);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-
-	commit_i2c_buffer(ctx);
-}
-
-static void konkauwide_set_max_framerate(struct subdrv_ctx *ctx, UINT16 framerate,
-			kal_bool min_framelength_en)
-{
-
-	kal_uint32 frame_length = ctx->frame_length;
-
-	DRV_LOG(ctx, "framerate = %d, min framelength should enable %d\n",
-		framerate, min_framelength_en);
-
-	frame_length = ctx->pclk / framerate * 10 / ctx->line_length;
-
-	if (frame_length >= ctx->min_frame_length)
-		ctx->frame_length = frame_length;
-	else
-		ctx->frame_length = ctx->min_frame_length;
-
-	ctx->dummy_line =
-		ctx->frame_length - ctx->min_frame_length;
-
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-
-		ctx->dummy_line =
-			ctx->frame_length - ctx->min_frame_length;
-	}
-	if (min_framelength_en)
-		ctx->min_frame_length = ctx->frame_length;
-
-	konkauwide_set_dummy(ctx);
-}
-
-static void konkauwide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u32 *shutter, u32 frame_length, bool auto_extend_en)
-{
-	kal_uint16 realtime_fps = 0;
-	kal_int32 dummy_line = 0;
-	u32 l_shutter = 0;
-	u16 l_shift = 0;
-	u32 fll = 0;
-
-	ctx->exposure[0] = *shutter;
-
-	/* Change frame time */
-	if (frame_length > 1)
-		dummy_line = frame_length - ctx->frame_length;
-
-	ctx->frame_length = ctx->frame_length + dummy_line;
-
-	if (ctx->exposure[0] > ctx->frame_length - ctx->s_ctx.exposure_margin)
-		ctx->frame_length = ctx->exposure[0] + ctx->s_ctx.exposure_margin;
-
-	if (ctx->frame_length > ctx->max_frame_length)
-		ctx->frame_length = ctx->max_frame_length;
-
-	ctx->exposure[0] = (ctx->exposure[0] < ctx->s_ctx.exposure_min)
-			? ctx->s_ctx.exposure_min : ctx->exposure[0];
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps > 592 && realtime_fps <= 607) {
-			konkauwide_set_max_framerate(ctx, 592, 0);
-		} else if (realtime_fps > 296 && realtime_fps <= 305) {
-			konkauwide_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps > 246 && realtime_fps <= 253) {
-			konkauwide_set_max_framerate(ctx, 246, 0);
-		} else if (realtime_fps > 236 && realtime_fps <= 243) {
-			konkauwide_set_max_framerate(ctx, 236, 0);
-		} else if (realtime_fps > 146 && realtime_fps <= 153) {
-			konkauwide_set_max_framerate(ctx, 146, 0);
-		} else {
-			/* Extend frame length */
-			subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		}
-	} else {
-		/* Extend frame length */
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-	}
-
-	if (ctx->exposure[0] >= 0xFFF0) {  // need to modify line_length & PCLK
-		bNeedSetNormalMode = TRUE;
-
-		if (ctx->exposure[0] > ctx->s_ctx.exposure_max) {
-			DRV_LOG(ctx, "shutter(%d) > exposure_max(%d), set shutter = exposure_max\n",
-				ctx->exposure[0], ctx->s_ctx.exposure_max);
-			ctx->exposure[0] = ctx->s_ctx.exposure_max;
-		}
-
-		for (l_shift = 1; l_shift <= 10; l_shift++) {
-			l_shutter = ((ctx->exposure[0] - 1) >> l_shift) + 1;
-			if (l_shutter
-				< (ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin))
-				break;
-		}
-
-		fll = l_shutter + 0x0002;  // 1st framelength
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, fll & 0xFFFF);  // Framelength
-		subdrv_i2c_wr_u16(ctx, 0x0202, l_shutter & 0xFFFF);  //shutter
-		subdrv_i2c_wr_u16(ctx, 0x0702, l_shift << 8);
-		subdrv_i2c_wr_u16(ctx, 0x0704, l_shift << 8);
-		DRV_LOG(ctx, "set long time exposure shutter(%d), frame_length(%d) l_shutter(%d) l_shift(%d)\n",
-			ctx->exposure[0], fll, l_shutter, l_shift);
-	} else {
-		if (bNeedSetNormalMode) {
-			DRV_LOG(ctx, "exit long shutter\n");
-			subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-			subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-			bNeedSetNormalMode = FALSE;
-		}
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		subdrv_i2c_wr_u16(ctx, 0x0202, ctx->exposure[0]);
-	}
-
-	DRV_LOG(ctx, "Exit! shutter =%d, framelength =%d/%d, dummy_line=%d, auto_extend=%d\n",
-		ctx->exposure[0], ctx->frame_length, frame_length, dummy_line, subdrv_i2c_rd_u16(ctx, 0x0350));
-}	/* set_shutter_frame_length */
-
-static int konkauwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "shutter:%u, frame_length:%u\n", (u32)(*para), (u32) (*(para + 1)));
-	konkauwide_lens_pos_writeback(ctx);
-	konkauwide_set_shutter_frame_length_convert(ctx, (u32 *)para, (u32) (*(para + 1)), (u16) (*(para + 2)));
-	return 0;
-}
-
-static void konkauwide_write_shutter(struct subdrv_ctx *ctx)
-{
-	kal_uint16 realtime_fps = 0;
-
-	u32 l_shutter = 0;
-	u16 l_shift = 0;
-	u32 fll = 0;
-
-	DRV_LOG(ctx, "===brad shutter:%d\n", ctx->exposure[0]);
-
-	if (ctx->exposure[0] > ctx->min_frame_length - ctx->s_ctx.exposure_margin) {
-		ctx->frame_length = ctx->exposure[0] + ctx->s_ctx.exposure_margin;
-	} else {
-		ctx->frame_length = ctx->min_frame_length;
-	}
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-	}
-
-	if (ctx->exposure[0] < ctx->s_ctx.exposure_min) {
-		ctx->exposure[0] = ctx->s_ctx.exposure_min;
-	}
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps > 592 && realtime_fps <= 607) {
-			konkauwide_set_max_framerate(ctx, 592, 0);
-		} else if (realtime_fps > 296 && realtime_fps <= 305) {
-			konkauwide_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps > 246 && realtime_fps <= 253) {
-			konkauwide_set_max_framerate(ctx, 246, 0);
-		} else if (realtime_fps > 236 && realtime_fps <= 243) {
-			konkauwide_set_max_framerate(ctx, 236, 0);
-		} else if (realtime_fps > 146 && realtime_fps <= 153) {
-			konkauwide_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-	}
-
-	if (ctx->exposure[0] >= 0xFFF0) {  // need to modify line_length & PCLK
-		bNeedSetNormalMode = TRUE;
-
-		if (ctx->exposure[0] >= ctx->s_ctx.exposure_max) {
-			DRV_LOG(ctx, "shutter(%d) > exposure_max(%d), set shutter = exposure_max\n",
-				ctx->exposure[0], ctx->s_ctx.exposure_max);
-			ctx->exposure[0] = ctx->s_ctx.exposure_max;
-		}
-
-		for (l_shift = 1; l_shift <= 10; l_shift++) {
-			l_shutter = ((ctx->exposure[0] - 1) >> l_shift) + 1;
-			if (l_shutter
-				< (ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin))
-				break;
-		}
-
-		fll = l_shutter + 0x0002;  // 1st framelength
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, fll & 0xFFFF);  // Framelength
-		subdrv_i2c_wr_u16(ctx, 0x0202, l_shutter & 0xFFFF);  //shutter
-		subdrv_i2c_wr_u16(ctx, 0x0702, l_shift << 8);
-		subdrv_i2c_wr_u16(ctx, 0x0704, l_shift << 8);
-		DRV_LOG(ctx, "set long time exposure shutter(%d), frame_length(%d) l_shutter(%d) l_shift(%d)\n",
-			ctx->exposure[0], fll, l_shutter, l_shift);
-	} else {
-		if (bNeedSetNormalMode) {
-			DRV_LOG(ctx, "exit long shutter\n");
-			subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-			subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-			bNeedSetNormalMode = FALSE;
-		}
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		subdrv_i2c_wr_u16(ctx, 0x0202, ctx->exposure[0]);
-	}
-	DRV_LOG(ctx, "shutter =%d, framelength =%d\n", ctx->exposure[0], ctx->frame_length);
-}	/*	write_shutter  */
-
-static void konkauwide_set_shutter_convert(struct subdrv_ctx *ctx, u32 shutter)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", shutter);
-	ctx->exposure[0] = shutter;
-
-	konkauwide_write_shutter(ctx);
-}
-
-static int konkauwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32* feature_data = (u32*)para;
-	u32 shutter = *feature_data;
-
-	DRV_LOG(ctx, "set_shutter shutter =0x%x\n", shutter);
-	konkauwide_set_shutter_convert(ctx, shutter);
-	return 0;
-}
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	DRV_LOG(ctx, "E! enable:%u\n", enable);
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx) {
-		DRV_LOGE(ctx, "null _adaptor_ctx\n");
-		return;
-	}
-
-	check_current_scenario_id_bound(ctx);
-
-	if (ctx->s_ctx.aov_sensor_support && ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG_MUST(ctx,
-			"stream ctrl implement on scp side!(sid:%u)\n",
-			ctx->current_scenario_id);
-		ctx->is_streaming = enable;
-		DRV_LOG_MUST(ctx, "enable:%u\n", enable);
-		return;
-	}
-
-	if (enable) {
-		/* MCSS low power mode update para */
-		if (ctx->s_ctx.mcss_update_subdrv_para != NULL)
-			ctx->s_ctx.mcss_update_subdrv_para((void *) ctx, ctx->current_scenario_id);
-		/* MCSS register init */
-		if (ctx->s_ctx.mcss_init != NULL)
-			ctx->s_ctx.mcss_init((void *) ctx);
-
-		if (ctx->s_ctx.chk_s_off_sta) {
-			DRV_LOG(ctx, "check_stream_off before stream on");
-			check_stream_off(ctx);
-		}
-		konkauwide_set_dummy(ctx);
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-		ctx->stream_ctrl_start_time = ktime_get_boottime_ns();
-		if (ctx->s_ctx.custom_stream_ctrl_delay)
-			mdelay(ctx->s_ctx.custom_stream_ctrl_delay);
-	} else {
-		check_stream_on(ctx);  // check_stream_on before stream off
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-		if (ctx->s_ctx.reg_addr_fast_mode && ctx->fast_mode_on) {
-			ctx->fast_mode_on = FALSE;
-			ctx->ref_sof_cnt = 0;
-			DRV_LOG(ctx, "seamless_switch disabled.");
-			set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-			commit_i2c_buffer(ctx);
-		}
-		memset(ctx->exposure, 0, sizeof(ctx->exposure));
-		memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-		ctx->autoflicker_en = FALSE;
-		ctx->extend_frame_length_en = 0;
-		ctx->is_seamless = 0;
-		if (ctx->s_ctx.chk_s_off_end)
-			check_stream_off(ctx);
-		ctx->stream_ctrl_start_time = 0;
-		ctx->stream_ctrl_end_time = 0;
-
-		ctx->mcss_init_info.enable_mcss = 0;
-		if (ctx->s_ctx.mcss_init != NULL)
-			ctx->s_ctx.mcss_init((void *) ctx); // disable MCSS
-	}
-	ctx->sof_no = 0;
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int konkauwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-	if (*(u32 *)para)
-	konkauwide_set_shutter_convert(ctx, *(u32 *)para);
-	streaming_ctrl(ctx, true);
-	return 0;
-}
-
-static int konkauwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "streaming control para:%d\n", *para);
-	streaming_ctrl(ctx, false);
-	return 0;
-}
-
-static unsigned int read_konkauwide_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != konkauwide_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != konkauwide_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = konkauwide_eeprom_info[meta_id].start;
-	readsize = konkauwide_eeprom_info[meta_id].size;
-
-	if (!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-    kal_uint16 get_byte = 0;
-
-    adaptor_i2c_rd_u8(ctx->i2c_client, KONKAUWIDE_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-    return get_byte;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, KONKAUWIDE_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xE000;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KONKAUWIDE_EEPROM_WRITE_ID >> 1, reg, 0xA1);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, KONKAUWIDE_EEPROM_WRITE_ID >> 1, reg, 0xA0);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    kal_uint32 checksum = 0;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        for(i = 0; i < pStereodata->dataLength; i++) {
-            checksum += pData[i];
-        }
-        pData[data_length] = 0x01;
-        pData[data_length + 1] = checksum % 255;
-        data_length = data_length + 2;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == KONKAUWIDE_SENSOR_ID) && (data_length - 2 == CALI_DATA_SLAVE_LENGTH)
-            && (data_base == KONKAUWIDE_STEREO_START_ADDR)) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-        } else if ((pStereodata->uSensorId == KONKAUWIDE_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == KONKAUWIDE_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, KONKAUWIDE_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, KONKAUWIDE_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, KONKAUWIDE_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, KONKAUWIDE_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, KONKAUWIDE_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, KONKAUWIDE_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, KONKAUWIDE_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, KONKAUWIDE_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("konkauwide write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int konkauwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        *len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-    return 0;
-}
-
-static int konkauwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	if(*len > CALI_DATA_SLAVE_LENGTH) {
-		*len = CALI_DATA_SLAVE_LENGTH;
-	}
-	read_konkauwide_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-			(BYTE *)para, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, KONKAUWIDE_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static int konkauwide_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int konkauwide_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D82, awb_gain->ABS_GAIN_R * 2); //red 1024(1x)
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D86, awb_gain->ABS_GAIN_B * 2); //blue
-
-	LOG_INF("[test] ABS_GAIN_GR(%d) ABS_GAIN_R(%d) ABS_GAIN_B(%d) ABS_GAIN_GB(%d)", awb_gain->ABS_GAIN_GR, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B, awb_gain->ABS_GAIN_GB);
-	LOG_INF("[test] 0x0D82(red) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D82));
-	LOG_INF("[test] 0x0D84(green) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D84));
-	LOG_INF("[test] 0x0D86(blue) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D86));
-	return 0;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "jn1 read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "jn1 read_otp_info end\n");
-}
-
-static int konkauwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int konkauwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = GET_SENSOR_ID_RETRY_CNT;
-	static bool first_read = TRUE;
-	u32 eeprom_time_year = 0, eeprom_time_m_d = 0;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x38E5) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-
-					u8 af_code[AF_CODE_SIZE] = {0};
-					read_konkauwide_eeprom_info(ctx, EEPROM_META_AF_CODE, (BYTE *)af_code, AF_CODE_SIZE);
-					g_af_code_macro = af_code[0] | ((u16)af_code[1] << 8);
-					g_af_code_infinity = af_code[2] | ((u16)af_code[3] << 8);
-
-					first_read = FALSE;
-
-					msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-					if(!msg_buf) {
-						LOG_INF("boot stage, malloc msg_buf error");
-					}
-				}
-				eeprom_time_year = (read_cmos_eeprom_8(ctx, 0x0004) << 8) | read_cmos_eeprom_8(ctx, 0x0005);
-				eeprom_time_m_d = (read_cmos_eeprom_8(ctx, 0x0003) << 8) | read_cmos_eeprom_8(ctx, 0x0002);
-				// sensor with eeprom data since 2024/01/27
-				module_flag = (eeprom_time_year > 0x1814) || ((eeprom_time_year == 0x1814) && (eeprom_time_m_d >= 0x11B));
-				return ERROR_NONE;
-			}
-			DRV_LOG(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = GET_SENSOR_ID_RETRY_CNT;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-	u32 module_info = 0;
-	u64 time_boot_begin = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-	subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-	module_info = subdrv_i2c_rd_u16(ctx, 0x0010);
-	DRV_LOG(ctx, "write init setting +");
-	if ((ctx->power_on_profile_en != NULL) && (*ctx->power_on_profile_en))
-		time_boot_begin = ktime_get_boottime_ns();
-
-
-	if ((module_info | 0x00FF) == 0x06FF){
-		subdrv_i2c_wr_regs_u16(ctx, konkauwide_sensor_init_pre_setting_short, ARRAY_SIZE(konkauwide_sensor_init_pre_setting_short));
-		mdelay(5);
-		konkauwide_i2c_burst_wr_regs_u16(ctx, konkauwide_sensor_init_setting_short, ARRAY_SIZE(konkauwide_sensor_init_setting_short));
-		DRV_LOG(ctx, "write init setting (short)-");
-		ctx->s_ctx.init_setting_len = ARRAY_SIZE(konkauwide_sensor_init_pre_setting_short) + ARRAY_SIZE(konkauwide_sensor_init_setting_short);
-	} else {
-		subdrv_i2c_wr_regs_u16(ctx, konkauwide_sensor_init_pre_setting, ARRAY_SIZE(konkauwide_sensor_init_pre_setting));
-		mdelay(5);
-		konkauwide_i2c_burst_wr_regs_u16(ctx, konkauwide_sensor_init_setting, ARRAY_SIZE(konkauwide_sensor_init_setting));
-		ctx->s_ctx.init_setting_len = ARRAY_SIZE(konkauwide_sensor_init_pre_setting) + ARRAY_SIZE(konkauwide_sensor_init_setting);
-		DRV_LOG(ctx, "write init setting (long)-");
-	}
-
-
-	if ((ctx->power_on_profile_en != NULL) && (*ctx->power_on_profile_en)) {
-		ctx->sensor_pw_on_profile.i2c_init_period = ktime_get_boottime_ns() - time_boot_begin - 5000;
-
-		ctx->sensor_pw_on_profile.i2c_init_table_len =
-			ARRAY_SIZE(konkauwide_sensor_init_pre_setting) + ARRAY_SIZE(konkauwide_sensor_init_setting);
-	}
-	DRV_LOG_MUST(ctx, "X: size:%u, time(us):%lld\n", ctx->sensor_pw_on_profile.i2c_init_table_len,
-		ctx->sensor_pw_on_profile.i2c_init_period);
-
-	if (ctx->s_ctx.temperature_support && ctx->s_ctx.reg_addr_temp_en)
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_temp_en, 0x01);
-	/* enable mirror or flip */
-	set_mirror_flip(ctx, ctx->mirror);
-
-	/* HW GGC*/
-	set_sensor_cali(ctx);
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	if (group_hold_frame_count < 2) {
-		DRV_LOGE(ctx, "group_hold_frame_count: %d", group_hold_frame_count);
-		group_hold_frame_count++;
-		return;
-	}
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return gain * 32 / BASEGAIN;
-}
-
-static int konkauwide_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	group_hold_frame_count = 0;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		(ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF ||
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF))
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x4);
-
-	update_mode_info(ctx, scenario_id);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			konkauwide_set_multi_shutter_frame_length_in_lut_convert(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			konkauwide_set_shutter_convert(ctx, (u32)ae_ctrl->exposure.me_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				konkauwide_set_gain_convert(ctx, ae_ctrl->gain.me_gain);
-			break;
-		default:
-			konkauwide_set_shutter_convert(ctx, (u32)ae_ctrl->exposure.le_exposure);
-			konkauwide_set_gain_convert(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	// ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int konkauwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	if (mode) {
-		if (mode == 5) {
-			subdrv_i2c_wr_u16(ctx, 0x0600, 0x0001); /*black*/
-		} else {
-			subdrv_i2c_wr_u16(ctx, 0x0600, mode); /*100% Color bar*/
-		}
-	}
-	else if (ctx->test_pattern)
-		subdrv_i2c_wr_u16(ctx, 0x0600, 0x0000); /*No pattern*/
-
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-void get_sensor_cali(void* arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	// struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	//struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	return;
-}
-
-static int konkauwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain) {
-	u16 rg_gain;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain, ctx->s_ctx.ana_gain_min);
-	gain = min(gain, ctx->s_ctx.ana_gain_max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-
-	return ERROR_NONE;
-}
-
-int konkauwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-
-	konkauwide_set_gain_convert(ctx, gain);
-
-	return 0;
-}
-
-static void konkauwide_set_multi_shutter_frame_length(struct subdrv_ctx *ctx,
-		u64 *shutters, u16 exp_cnt,	u16 frame_length)
-{
-	int i = 0;
-	u32 fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[3] = {0};
-	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max(shutters[i], ctx->s_ctx.exposure_min);
-		shutters[i] = min(shutters[i], ctx->s_ctx.exposure_max);
-		if (cit_step)
-			shutters[i] = round_up(shutters[i], cit_step);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */
-	calc_fl[0] = shutters[0];
-	for (i = 1; i < last_exp_cnt; i++)
-		calc_fl[0] += ctx->exposure[i];
-	calc_fl[0] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (2) current se + current me + current le */
-	calc_fl[1] = shutters[0];
-	for (i = 1; i < exp_cnt; i++)
-		calc_fl[1] += shutters[i];
-	calc_fl[1] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (3) readout time cannot be overlapped */
-	calc_fl[2] =
-		(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-		ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-	if (last_exp_cnt == exp_cnt)
-		for (i = 1; i < exp_cnt; i++) {
-			readout_diff = ctx->exposure[i] - shutters[i];
-			calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-		}
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		ctx->frame_length = max(ctx->frame_length, calc_fl[i]);
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = shutters[i];
-	/* exit long exposure if necessary */
-	if ((ctx->exposure[0] < 0xFFF0) && bNeedSetNormalMode) {
-		DRV_LOG(ctx, "exit long shutter\n");
-		subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-		subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-		bNeedSetNormalMode = FALSE;
-	}
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		break;
-	case 2:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[2] = shutters[1] / exp_cnt;
-		break;
-	case 3:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[1] = shutters[1] / exp_cnt;
-		rg_shutters[2] = shutters[2] / exp_cnt;
-		break;
-	default:
-		break;
-	}
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[2],
-					rg_shutters[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					rg_shutters[i] & 0xFF);
-			}
-		}
-	}
-	DRV_LOG(ctx, "exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static void konkauwide_write_frame_length_in_lut(struct subdrv_ctx *ctx, u32 fll, u32 *fll_in_lut)
-{
-	int i = 0;
-	u32 frame_length_buf;
-	u32 fll_step = 0;
-	u32 min_fll = 0;
-
-	check_current_scenario_id_bound(ctx);
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	// manual mode
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt) {
-	case 2:
-		if (fll_step) {
-			fll_in_lut[0] =
-				roundup(fll_in_lut[0], fll_step);
-			fll_in_lut[1] =
-				roundup(fll_in_lut[1], fll_step);
-		}
-		min_fll = ctx->s_ctx.mode[ctx->current_scenario_id].framelength / 2;
-
-		if (fll_in_lut[0] < fll_in_lut[1]) {
-			if (fll_in_lut[0] < min_fll) {
-				fll_in_lut[1] -= min_fll - fll_in_lut[0];
-				fll_in_lut[0] = min_fll;
-			}
-		} else {
-			if (fll_in_lut[1] < min_fll) {
-				fll_in_lut[0] -= min_fll - fll_in_lut[1];
-				fll_in_lut[1] = min_fll;
-			}
-		}
-		fll_in_lut[2] = 0;
-		fll_in_lut[3] = 0;
-		fll_in_lut[4] = 0;
-		ctx->frame_length_in_lut[0] = fll_in_lut[0];
-		ctx->frame_length_in_lut[1] = fll_in_lut[1];
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1];
-		break;
-	case 3:
-		if (fll_step) {
-			fll_in_lut[0] =
-				roundup(fll_in_lut[0], fll_step);
-			fll_in_lut[1] =
-				roundup(fll_in_lut[1], fll_step);
-			fll_in_lut[2] =
-				roundup(fll_in_lut[2], fll_step);
-		}
-		fll_in_lut[3] = 0;
-		fll_in_lut[4] = 0;
-		ctx->frame_length_in_lut[0] = fll_in_lut[0];
-		ctx->frame_length_in_lut[1] = fll_in_lut[1];
-		ctx->frame_length_in_lut[2] = fll_in_lut[2];
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] +
-			ctx->frame_length_in_lut[1] +
-			ctx->frame_length_in_lut[2];
-		break;
-	default:
-		break;
-	}
-
-	if (ctx->extend_frame_length_en == FALSE) {
-		frame_length_buf = 0;
-		for (i = 0; i < 3; i++) {
-			if (fll_in_lut[i]) {
-				if (ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[2]) {
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[0],
-						(fll_in_lut[i] >> 16) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[1],
-						(fll_in_lut[i] >> 8) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[2],
-						fll_in_lut[i] & 0xFF);
-				} else {
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[0],
-						(fll_in_lut[i] >> 8) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[1],
-						fll_in_lut[i] & 0xFF);
-				}
-				/* update FL_lut RG value after setting buffer for writing RG */
-				ctx->frame_length_in_lut_rg[i] = fll_in_lut[i];
-				frame_length_buf +=
-					ctx->frame_length_in_lut_rg[i];
-			}
-		}
-		/* update FL RG value simultaneously */
-		ctx->frame_length_rg = frame_length_buf;
-
-		DRV_LOG(ctx,
-			"ctx:(fl(RG):%u,%u/%u/%u/%u/%u), scen_id:%u,fll(input/ctx/output_a/b/c/d/e):0x%x/%x/%x/%x/%x/%x/%x,fll_step:%u\n",
-			ctx->frame_length_rg,
-			ctx->frame_length_in_lut_rg[0],
-			ctx->frame_length_in_lut_rg[1],
-			ctx->frame_length_in_lut_rg[2],
-			ctx->frame_length_in_lut_rg[3],
-			ctx->frame_length_in_lut_rg[4],
-			ctx->current_scenario_id,
-			fll,
-			ctx->frame_length,
-			fll_in_lut[0],
-			fll_in_lut[1],
-			fll_in_lut[2],
-			fll_in_lut[3],
-			fll_in_lut[4],
-			fll_step);
-	} else {
-		DRV_LOG(ctx,
-			"sid:%u,extend_frame_length_en:%u,default won't write fll!\n",
-			ctx->current_scenario_id, ctx->extend_frame_length_en);
-		return;
-	}
-}
-
-
-static int konkauwide_set_multi_shutter_frame_length_in_lut(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	konkauwide_set_multi_shutter_frame_length_in_lut_convert(ctx,
-		(u64 *)(*feature_data),
-		(u16) (*(feature_data + 1)),
-		(u32) (*(feature_data + 2)),
-		(u32 *) (*(feature_data + 3)));
-	return 0;
-}
-
-static void konkauwide_set_multi_shutter_frame_length_in_lut_convert(struct subdrv_ctx *ctx,
-	u64 *shutters, u16 exp_cnt, u32 frame_length, u32 *frame_length_in_lut)
-{
-	int i = 0;
-	u16 last_exp_cnt = 1;
-	int fine_integ_line = 0;
-	u32 frame_length_step;
-	u32 cit_step = 0;
-	u32 cit_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 calc_fl_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->min_frame_length;
-
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	frame_length_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	/* manual mode */
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].min);
-		shutters[i] = min_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].max);
-		if (cit_step)
-			shutters[i] = roundup(shutters[i], cit_step);
-
-		/* update frame_length_in_lut */
-		ctx->frame_length_in_lut[i] = frame_length_in_lut[i] ?
-			frame_length_in_lut[i] : 0;
-		/* check boundary of framelength in lut */
-		ctx->frame_length_in_lut[i] =
-			min(ctx->frame_length_in_lut[i], ctx->s_ctx.frame_length_max);
-	}
-
-	for (i = 0; i < exp_cnt; i++) {
-		/* update cit_in_lut depends on exposure_order_in_lbmf */
-		if (ctx->s_ctx.mode[ctx->current_scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-			/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-			cit_in_lut[i] = shutters[exp_cnt - 1 - i];
-		} else if (ctx->s_ctx.mode[ctx->current_scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-			/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-			cit_in_lut[i] = shutters[i];
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-	}
-
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt) {
-	case 2:
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_a = max(readout, current shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_b = max(readout, current shutter_a) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-
-		/* fll_a = max(fll_a, userInput_fll_a) */
-		ctx->frame_length_in_lut[0] =
-			max(ctx->frame_length_in_lut[0], calc_fl_in_lut[0]);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(ctx->frame_length_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b = max(fll_b, userInput_fll_b) */
-		ctx->frame_length_in_lut[1] =
-			max(ctx->frame_length_in_lut[1], calc_fl_in_lut[1]);
-
-		if (ctx->frame_length >= ctx->frame_length_in_lut[0]) {
-			/* fll_b = max(fll_b, fll-fll_a) */
-			ctx->frame_length_in_lut[1] =
-				max(ctx->frame_length_in_lut[1],
-					ctx->frame_length - ctx->frame_length_in_lut[0]);
-		}
-
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(ctx->frame_length_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* lut[2] no use, and assign zero */
-		ctx->frame_length_in_lut[2] = 0;
-		/* lut[3] no use, and assign zero */
-		ctx->frame_length_in_lut[3] = 0;
-		/* lut[4] no use, and assign zero */
-		ctx->frame_length_in_lut[4] = 0;
-		break;
-	case 3:
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_a = max(readout, current shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_b = max(readout, current shutter_c) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[2] + ctx->s_ctx.exposure_margin);
-		/* fll_c_min = readout + xx lines(margin) */
-		calc_fl_in_lut[2] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_c = max(readout, current shutter_a) */
-		calc_fl_in_lut[2] =
-			max(calc_fl_in_lut[2], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-
-		/* fll_a = max(fll_a, userInput_fll_a) */
-		ctx->frame_length_in_lut[0] =
-			max(ctx->frame_length_in_lut[0], calc_fl_in_lut[0]);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(ctx->frame_length_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b = max(fll_b, userInput_fll_b) */
-		ctx->frame_length_in_lut[1] =
-			max(ctx->frame_length_in_lut[1], calc_fl_in_lut[1]);
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(ctx->frame_length_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* fll_c = max(fll_c, userInput_fll_c) */
-		ctx->frame_length_in_lut[2] =
-			max(ctx->frame_length_in_lut[2], calc_fl_in_lut[2]);
-
-		if (ctx->frame_length >=
-			(ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1])) {
-			/* fll_c = max(fll_c, fll-fll_b-fll_a) */
-			ctx->frame_length_in_lut[2] =
-				max(ctx->frame_length_in_lut[2],
-					(ctx->frame_length - ctx->frame_length_in_lut[1] -
-					ctx->frame_length_in_lut[0]));
-		}
-
-		/* fll_c = min(fll_c, fll_max) */
-		ctx->frame_length_in_lut[2] =
-			min(ctx->frame_length_in_lut[2], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[2] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[2], frame_length_step) :
-			ctx->frame_length_in_lut[2];
-		/* lut[3] no use, and assign zero */
-		ctx->frame_length_in_lut[3] = 0;
-		/* lut[4] no use, and assign zero */
-		ctx->frame_length_in_lut[4] = 0;
-		break;
-	default:
-		break;
-	}
-
-	/* restore shutter & update framelength */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->frame_length = 0;
-	for (i = 0; i < exp_cnt; i++) {
-		ctx->exposure[i] = shutters[i];
-		ctx->frame_length += ctx->frame_length_in_lut[i];
-	}
-	/* check boundary of framelength */
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	set_auto_flicker(ctx, 0);
-
-	konkauwide_write_frame_length_in_lut(ctx, ctx->frame_length, ctx->frame_length_in_lut);
-
-	/* write shutter: LUT register differs from DOL */
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED) {
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-		ctx->l_shift = 0;
-	}
-	for (i = 0; i < 3; i++) {
-		if (cit_in_lut[i]) {
-			if (ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[2]) {
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[0],
-					(cit_in_lut[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[1],
-					(cit_in_lut[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[2],
-					cit_in_lut[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[0],
-					(cit_in_lut[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[1],
-					cit_in_lut[i] & 0xFF);
-			}
-		}
-	}
-
-	DRV_LOG(ctx,
-		"sid:%u,shutter(input/lut):0x%llx/%llx/%llx,%x/%x/%x,flInLUT(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%u,flick_en:%d\n",
-		ctx->current_scenario_id,
-		shutters[0], shutters[1], shutters[2],
-		cit_in_lut[0], cit_in_lut[1], cit_in_lut[2],
-		frame_length, ctx->frame_length,
-		ctx->frame_length_in_lut[0],
-		ctx->frame_length_in_lut[1],
-		ctx->frame_length_in_lut[2],
-		ctx->frame_length_in_lut[3],
-		ctx->frame_length_in_lut[4],
-		ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static int konkauwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	konkauwide_lens_pos_writeback(ctx);
-	konkauwide_set_multi_shutter_frame_length(ctx, (u64 *)(*feature_data),
-		(u16) (*(feature_data + 1)), (u16) (*(feature_data + 2)));
-	return 0;
-}
-
-static void konkauwide_set_hdr_tri_shutter(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt)
-{
-	int i = 0;
-	u64 values[3] = {0};
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-
-	if (shutters != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u64) *(shutters + i);
-	}
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		konkauwide_set_multi_shutter_frame_length_in_lut_convert(ctx,
-			values, exp_cnt, 0, frame_length_in_lut);
-		return;
-	}
-	konkauwide_set_multi_shutter_frame_length(ctx, values, exp_cnt, 0);
-}
-
-static int konkauwide_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	konkauwide_set_hdr_tri_shutter(ctx, feature_data, 2);
-	return 0;
-}
-
-static int konkauwide_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	konkauwide_set_hdr_tri_shutter(ctx, feature_data, 3);
-	return 0;
-}
-
-static bool dump_i2c_enable = false;
-
-static void dump_i2c_buf(struct subdrv_ctx *ctx, u8 * buf, u32 length)
-{
-	int i;
-	char *out_str = NULL;
-	char *strptr = NULL;
-	size_t buf_size = SUBDRV_I2C_BUF_SIZE * sizeof(char);
-	size_t remind = buf_size;
-	int num = 0;
-
-	out_str = kzalloc(buf_size + 1, GFP_KERNEL);
-	if (!out_str)
-		return;
-
-	strptr = out_str;
-	memset(out_str, 0, buf_size + 1);
-
-	num = snprintf(strptr, remind,"[ ");
-	remind -= num;
-	strptr += num;
-
-	for (i = 0 ; i < length; i ++) {
-		num = snprintf(strptr, remind,"0x%02x, ", buf[i]);
-
-		if (num <= 0) {
-			DRV_LOG(ctx, "snprintf return negative at line %d\n", __LINE__);
-			kfree(out_str);
-			return;
-		}
-
-		remind -= num;
-		strptr += num;
-
-		if (remind <= 20) {
-			DRV_LOG(ctx, " write %s\n", out_str);
-			memset(out_str, 0, buf_size + 1);
-			strptr = out_str;
-			remind = buf_size;
-		}
-	}
-
-	num = snprintf(strptr, remind," ]");
-	remind -= num;
-	strptr += num;
-
-	DRV_LOG(ctx, " write %s\n", out_str);
-	strptr = out_str;
-	remind = buf_size;
-
-	kfree(out_str);
-}
-
-static int konkauwide_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx, u16 * list, u32 len)
-{
-	adapter_i2c_burst_wr_regs_u16(ctx, ctx->i2c_write_id >> 1, list, len);
-	return 	0;
-}
-
-#define MAX_BUF_SIZE  4096
-#define MAX_MSG_NUM_U16  MAX_BUF_SIZE/4
-
-struct cache_wr_regs_u16 {
-	struct i2c_msg msg[MAX_MSG_NUM_U16];
-};
-
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx ,
-		u16 addr, u16 *list, u32 len)
-{
-	struct i2c_client *i2c_client = ctx->i2c_client;
-	struct i2c_msg  msg;
-	struct i2c_msg *pmsg = &msg;
-
-	u8 *pbuf = NULL;
-	u16 *plist = NULL;
-	u16 *plist_end = NULL;
-
-	u32 sent = 0;
-	u32 total = 0;
-	u32 per_sent = 0;
-	int ret, i;
-
-	if(!msg_buf) {
-		LOG_INF("malloc msg_buf retry");
-		msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-		if(!msg_buf) {
-			LOG_INF("malloc error");
-			return -ENOMEM;
-		}
-	}
-
-	/* each msg contains addr(u16) + val(u16 *) */
-	sent = 0;
-	total = len / 2;
-	plist = list;
-	plist_end = list + len - 2;
-
-	DRV_LOG(ctx, "len(%u)  total(%u)", len, total);
-
-	while (sent < total) {
-
-		per_sent = 0;
-		pmsg = &msg;
-		pbuf = msg_buf;
-
-		pmsg->addr = addr;
-		pmsg->flags = i2c_client->flags;
-		pmsg->buf = pbuf;
-
-		pbuf[0] = plist[0] >> 8;    //address
-		pbuf[1] = plist[0] & 0xff;
-
-		pbuf[2] = plist[1] >> 8;  //data 1
-		pbuf[3] = plist[1] & 0xff;
-
-		pbuf += 4;
-		pmsg->len = 4;
-		per_sent += 1;
-
-		for (i = 0; i < total - sent - 1; i++) {  //Maximum number of remaining cycles - 1
-			if(plist[0] + 2 == plist[2] ) {  //Addresses are consecutive
-				pbuf[0] = plist[3] >> 8;
-				pbuf[1] = plist[3] & 0xff;
-
-				pbuf += 2;
-				pmsg->len += 2;
-				per_sent += 1;
-				plist += 2;
-
-				if(pmsg->len >= MAX_BURST_LEN) {
-					break;
-				}
-			}
-		}
-		plist += 2;
-
-		if(dump_i2c_enable) {
-			DRV_LOG(ctx, "pmsg->len(%d) buff: ", pmsg->len);
-			dump_i2c_buf(ctx, msg_buf, pmsg->len);
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmsg, 1);
-
-		if (ret < 0) {
-			dev_info(&i2c_client->dev,
-				"i2c transfer failed (%d)\n", ret);
-			return -EIO;
-		}
-
-		sent += per_sent;
-
-		DRV_LOG(ctx, "sent(%u)  total(%u)  per_sent(%u)", sent, total, per_sent);
-	}
-
-	return 0;
-}
-
-#define konkauwide_AF_READ_ID  (0x18)
-#define konkauwide_AF_POSITON_ADD  (0x03)
-
-static bool read_af_pos(struct subdrv_ctx *ctx, u16 *positon)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-	struct i2c_client *i2c_client = ctx->i2c_client;
-
-	buf[0] = konkauwide_AF_POSITON_ADD;
-
-	msg[0].addr = konkauwide_AF_READ_ID >> 1;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = 1;
-
-	msg[1].addr  = konkauwide_AF_READ_ID >> 1;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 2;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return false;
-	}
-
-	*positon = ((u16)buf[0] << 8) | buf[1];
-
-	return true;
-}
-
-static u16 lens_position_setting[] = {
-	0xFCFC, 0x2001,
-	0x2566, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static void konkauwide_lens_pos_writeback(struct subdrv_ctx *ctx)
-{
-	kal_uint16 af_pos = 0;
-	kal_uint16 write_pos = 0;
-	kal_uint16 write_pos_cover = 0;
-
-	bool ret;
-
-	DRV_LOG(ctx,"%s g_af_code_macro(%d), g_af_code_infinity(%d)",
-		__func__, g_af_code_macro, g_af_code_infinity);
-
-	if (ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-
-		ret = read_af_pos(ctx, &af_pos);
-		if(ret == false || g_af_code_macro == 0 || g_af_code_infinity == 0 || g_af_code_macro == g_af_code_infinity) {
-			pr_err("%s ret(%d) ",__func__, ret);
-			return ;
-		}
-		if(af_pos < g_af_code_infinity) {
-			af_pos = g_af_code_infinity;
-		}
-		if(af_pos > g_af_code_macro) {
-			af_pos = g_af_code_macro;
-		}
-
-		write_pos = (u32)(af_pos - g_af_code_infinity) * 1023 / (g_af_code_macro - g_af_code_infinity);
-
-		write_pos_cover = ((write_pos >> 8) & 0xff) | ((write_pos << 8) & 0xff00);
-
-		lens_position_setting[3] = write_pos_cover;
-
-		DRV_LOG(ctx,"%s af_pos(%d), g_af_code_infinity(%d), g_af_code_macro(%d), write_pos(0x%x) write_pos_cover(0x%x)",
-			__func__, af_pos, g_af_code_infinity, g_af_code_macro, write_pos, write_pos_cover);
-
-		subdrv_i2c_wr_regs_u16(ctx, lens_position_setting, ARRAY_SIZE(lens_position_setting));
-	}
-}
-
-static int konkauwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *)para;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = (enum SENSOR_SCENARIO_ID_ENUM)*feature_data;
-	u32 framerate = *(feature_data + 1);
-	u32 frame_length;
-	u32 frame_length_step;
-	u32 frame_length_min;
-	u32 frame_length_max;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-	}
-	if (!framerate) {
-		DRV_LOGE(ctx, "framerate (%u) is invalid\n", framerate);
-		return ERROR_NONE;
-	}
-	if (!ctx->s_ctx.mode[scenario_id].linelength) {
-		DRV_LOGE(ctx, "linelength (%u) is invalid\n",
-			ctx->s_ctx.mode[scenario_id].linelength);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		konkauwide_set_max_framerate_in_lut_by_scenario(ctx, scenario_id, framerate);
-		return ERROR_NONE;
-	}
-
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	/* set on the step of frame length */
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	frame_length_min = ctx->s_ctx.mode[scenario_id].framelength;
-	frame_length_max = ctx->s_ctx.frame_length_max;
-	frame_length_max = frame_length_step ?
-		(frame_length_max - (frame_length_max % frame_length_step)) : frame_length_max;
-
-
-	/* set in the range of frame length */
-	ctx->frame_length = max(frame_length, frame_length_min);
-	ctx->frame_length = min(ctx->frame_length, frame_length_max);
-	ctx->frame_length = frame_length_step ?
-		roundup(ctx->frame_length,frame_length_step) : ctx->frame_length;
-
-	/* set default frame length if given default framerate */
-	if (framerate == ctx->s_ctx.mode[scenario_id].max_framerate)
-		ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-
-	ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	ctx->min_frame_length = ctx->frame_length;
-	DRV_LOG(ctx, "max_fps(input/output):%u/%u(sid:%u), min_fl_en:1, ctx->frame_length:%u\n",
-		framerate, ctx->current_fps, scenario_id, ctx->frame_length);
-	if (ctx->s_ctx.reg_addr_auto_extend ||
-			(ctx->frame_length > (ctx->exposure[0] + ctx->s_ctx.exposure_margin))) {
-		if (ctx->s_ctx.aov_sensor_support &&
-			ctx->s_ctx.mode[scenario_id].aov_mode &&
-			!ctx->s_ctx.mode[scenario_id].s_dummy_support)
-			DRV_LOG_MUST(ctx, "AOV mode not support set_dummy!\n");
-		else
-			konkauwide_set_dummy(ctx);
-	}
-	return ERROR_NONE;
-}
-/**
- * @brief: This api is used to assign FLL_A/FLL_B in lut for manual mode.
- * It should refer to previous shutter because per-frame multi shutter framelength
- * might not be called.
- * @param ctx: subdrv_ctx
- * @param scenario_id: current scenario id
- * @param framerate: input framerate
- */
-static void konkauwide_set_max_framerate_in_lut_by_scenario(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id, u32 framerate)
-{
-	u32 frame_length = 0;
-	u32 frame_length_step = 0;
-	u16 exp_cnt = 0;
-	u32 cit_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 calc_fl_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	int i;
-
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	ctx->frame_length =
-		max(frame_length, ctx->s_ctx.mode[scenario_id].framelength);
-
-	/* set default frame length if given default framerate */
-	if (framerate ==  ctx->s_ctx.mode[scenario_id].max_framerate)
-		ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-
-	// manual mode
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	switch (exp_cnt) {
-	case 2:
-		for (i = 0; i < exp_cnt; i++) {
-			/*  update cit_in_lut depends on exposure_order_in_lbmf */
-			if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-				/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-				/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-				cit_in_lut[i] = ctx->exposure[exp_cnt - 1 - i];
-			} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-				/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-				/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-				cit_in_lut[i] = ctx->exposure[i];
-			} else {
-				DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-				return;
-			}
-		}
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_a = max(readout, previous shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(calc_fl_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_b = max(readout, previous shutter_a) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-		if (ctx->frame_length >= ctx->frame_length_in_lut[0]) {
-			/* fll_b = max(fll_b, fll_mode_max-fll_a) */
-			calc_fl_in_lut[1] =
-				max(calc_fl_in_lut[1],
-					ctx->frame_length - ctx->frame_length_in_lut[0]);
-		}
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(calc_fl_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		ctx->frame_length_in_lut[2] = 0;
-		ctx->frame_length_in_lut[3] = 0;
-		ctx->frame_length_in_lut[4] = 0;
-		/* update framelength */
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1];
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-		ctx->min_frame_length = ctx->frame_length;
-		DRV_LOG(ctx,
-			"sid:%u,max_fps(input/output):%u/%u,min_fl_en:1,lut order:%u,fll(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%un",
-			scenario_id,
-			framerate, ctx->current_fps,
-			ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf,
-			frame_length,
-			ctx->frame_length,
-			ctx->frame_length_in_lut[0],
-			ctx->frame_length_in_lut[1],
-			ctx->frame_length_in_lut[2],
-			ctx->frame_length_in_lut[3],
-			ctx->frame_length_in_lut[4]);
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				konkauwide_set_dummy(ctx);
-		} else {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				konkauwide_set_dummy(ctx);
-		}
-		break;
-	case 3:
-		for (i = 0; i < exp_cnt; i++) {
-			/*  update cit_in_lut depends on exposure_order_in_lbmf */
-			if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-				/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-				/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-				cit_in_lut[i] = ctx->exposure[exp_cnt - 1 - i];
-			} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-				/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-				/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-				cit_in_lut[i] = ctx->exposure[i];
-			} else {
-				DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-				return;
-			}
-		}
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_a = max(readout, previous shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(calc_fl_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_b = max(readout, previous shutter_c) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[2] + ctx->s_ctx.exposure_margin);
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(calc_fl_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* fll_c_min = readout + xx lines(margin) */
-		calc_fl_in_lut[2] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_c = max(readout, previous shutter_a) */
-		calc_fl_in_lut[2] =
-			max(calc_fl_in_lut[2], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-		if (ctx->frame_length >=
-			(ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1])) {
-			/* fll_c = max(fll_c, fll_mode_max-fll_b-fll_a) */
-			calc_fl_in_lut[2] =
-				max(calc_fl_in_lut[2],
-					(ctx->frame_length - ctx->frame_length_in_lut[1] -
-					ctx->frame_length_in_lut[0]));
-		}
-		/* fll_c = min(fll_c, fll_max) */
-		ctx->frame_length_in_lut[2] =
-			min(calc_fl_in_lut[2], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[2] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[2], frame_length_step) :
-			ctx->frame_length_in_lut[2];
-		ctx->frame_length_in_lut[3] = 0;
-		ctx->frame_length_in_lut[4] = 0;
-		/* update framelength */
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] +
-			ctx->frame_length_in_lut[1] +
-			ctx->frame_length_in_lut[2];
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-		ctx->min_frame_length = ctx->frame_length;
-		DRV_LOG(ctx,
-			"sid:%u,max_fps(input/output):%u/%u,min_fl_en:1,lut order:%u,fll(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%u\n",
-			scenario_id,
-			framerate, ctx->current_fps,
-			ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf,
-			frame_length,
-			ctx->frame_length,
-			ctx->frame_length_in_lut[0],
-			ctx->frame_length_in_lut[1],
-			ctx->frame_length_in_lut[2],
-			ctx->frame_length_in_lut[3],
-			ctx->frame_length_in_lut[4]);
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[2] >
-				(ctx->exposure[2] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				konkauwide_set_dummy(ctx);
-		} else {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[2] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[2] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				konkauwide_set_dummy(ctx);
-		}
-		break;
-	default:
-		break;
-	}
-}
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwidemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwidemipiraw_Sensor.h
deleted file mode 100755
index b33b00b9..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/konkauwide_mipi_raw/konkauwidemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     KONKAUWIDEmipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _KONKAUWIDEMIPI_SENSOR_H
-#define _KONKAUWIDEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "konkauwide_ana_gain_table.h"
-#include "konkauwide_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/Makefile
deleted file mode 100755
index f76575ed..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/sayramfrontmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfront_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfront_Sensor_setting.h
deleted file mode 100644
index 44daf191..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfront_Sensor_setting.h
+++ /dev/null
@@ -1,1429 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 sayramfront_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _SAYRAMFRONGT_SENSOR_SETTING_H
-#define _SAYRAMFRONGT_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-
-static u16 sayramfront_init_setting[] = {
-    //External Clock Setting
-    0x0136,0x18,
-    0x0137,0x00,
-    //Register version
-    0x3C7E,0x02,
-    0x3C7F,0x01,
-    //Signaling mode setting
-    0x0111,0x02,
-    //Global Setting
-    0x380C,0x00,
-    0x3C00,0x01,
-    0x3C01,0x00,
-    0x3C02,0x00,
-    0x3C03,0x03,
-    0x3C04,0xFF,
-    0x3C05,0x01,
-    0x3C06,0x00,
-    0x3C07,0x00,
-    0x3C08,0x03,
-    0x3C09,0xFF,
-    0x3C0A,0x00,
-    0x3C0B,0x00,
-    0x3C0C,0x10,
-    0x3C0D,0x10,
-    0x3C0E,0x10,
-    0x3C0F,0x10,
-    0x3C10,0x10,
-    0x3C11,0x20,
-    0x3C15,0x00,
-    0x3C16,0x00,
-    0x3C17,0x01,
-    0x3C18,0x00,
-    0x3C19,0x01,
-    0x3C1A,0x00,
-    0x3C1B,0x01,
-    0x3C1C,0x00,
-    0x3C1D,0x01,
-    0x3C1E,0x00,
-    0x3C1F,0x00,
-    0x3F89,0x01,
-    0x3F8F,0x01,
-    0x53B9,0x01,
-    0x62C4,0x04,
-    0x658F,0x07,
-    0x6590,0x05,
-    0x6591,0x07,
-    0x6592,0x05,
-    0x6593,0x07,
-    0x6594,0x05,
-    0x6595,0x07,
-    0x6596,0x05,
-    0x6597,0x05,
-    0x6598,0x05,
-    0x6599,0x05,
-    0x659A,0x05,
-    0x659B,0x05,
-    0x659C,0x05,
-    0x659D,0x05,
-    0x659E,0x07,
-    0x659F,0x05,
-    0x65A0,0x07,
-    0x65A1,0x05,
-    0x65A2,0x07,
-    0x65A3,0x05,
-    0x65A4,0x07,
-    0x65A5,0x05,
-    0x65A6,0x05,
-    0x65A7,0x05,
-    0x65A8,0x05,
-    0x65A9,0x05,
-    0x65AA,0x05,
-    0x65AB,0x05,
-    0x65AC,0x05,
-    0x65AD,0x07,
-    0x65AE,0x07,
-    0x65AF,0x07,
-    0x65B0,0x05,
-    0x65B1,0x05,
-    0x65B2,0x05,
-    0x65B3,0x05,
-    0x65B4,0x07,
-    0x65B5,0x07,
-    0x65B6,0x07,
-    0x65B7,0x07,
-    0x65B8,0x05,
-    0x65B9,0x05,
-    0x65BA,0x05,
-    0x65BB,0x05,
-    0x65BC,0x05,
-    0x65BD,0x05,
-    0x65BE,0x05,
-    0x65BF,0x05,
-    0x65C0,0x05,
-    0x65C1,0x05,
-    0x65C2,0x05,
-    0x65C3,0x05,
-    0x65C4,0x05,
-    0x65C5,0x05,
-    0x6E1C,0x00,
-    0x6E1D,0x00,
-    0x6E25,0x00,
-    0x6E38,0x03,
-    0x895C,0x01,
-    0x895D,0x00,
-    0x8966,0x00,
-    0x8967,0x4E,
-    0x896A,0x00,
-    0x896B,0x24,
-    0x896F,0x34,
-    0x8976,0x00,
-    0x8977,0x00,
-    0x9004,0x1F,
-    0x9200,0xB7,
-    0x9201,0x34,
-    0x9202,0xB7,
-    0x9203,0x36,
-    0x9204,0xB7,
-    0x9205,0x37,
-    0x9206,0xB7,
-    0x9207,0x38,
-    0x9208,0xB7,
-    0x9209,0x39,
-    0x920A,0xB7,
-    0x920B,0x3A,
-    0x920C,0xB7,
-    0x920D,0x3C,
-    0x920E,0xB7,
-    0x920F,0x3D,
-    0x9210,0xB7,
-    0x9211,0x3E,
-    0x9212,0xB7,
-    0x9213,0x3F,
-    0x9214,0xF6,
-    0x9215,0x13,
-    0x9216,0xF6,
-    0x9217,0x34,
-    0x9218,0xF4,
-    0x9219,0xA7,
-    0x921A,0xF4,
-    0x921B,0xAA,
-    0x921C,0xF4,
-    0x921D,0xAD,
-    0x921E,0xF4,
-    0x921F,0xB0,
-    0x9220,0xF4,
-    0x9221,0xB3,
-    0x9222,0x85,
-    0x9223,0x77,
-    0x9224,0xC4,
-    0x9225,0x4B,
-    0x9226,0xC4,
-    0x9227,0x4C,
-    0x9228,0xC4,
-    0x9229,0x4D,
-    0x922A,0xF5,
-    0x922B,0x5E,
-    0x922C,0xF5,
-    0x922D,0x5F,
-    0x922E,0xF5,
-    0x922F,0x64,
-    0x9230,0xF5,
-    0x9231,0x65,
-    0x9232,0xF5,
-    0x9233,0x6A,
-    0x9234,0xF5,
-    0x9235,0x6B,
-    0x9236,0xF5,
-    0x9237,0x70,
-    0x9238,0xF5,
-    0x9239,0x71,
-    0x923A,0xF5,
-    0x923B,0x76,
-    0x923C,0xF5,
-    0x923D,0x77,
-    0x9810,0x14,
-    0x9814,0x14,
-    0xC020,0x00,
-    0xC026,0x00,
-    0xC027,0x00,
-    0xC448,0x01,
-    0xC44F,0x01,
-    0xC450,0x00,
-    0xC451,0x00,
-    0xC452,0x01,
-    0xC455,0x00,
-    0xE186,0x36,
-    0xE206,0x35,
-    0xE226,0x33,
-    0xE266,0x34,
-    0xE2A6,0x31,
-    0xE2C6,0x37,
-    0xE2E6,0x32,
-    //Image Quality adjustment setting
-    0x88D6,0x60,
-    0x9852,0x00,
-    0xA569,0x06,
-    0xA56A,0x13,
-    0xA56B,0x13,
-    0xA56C,0x01,
-    0xA678,0x00,
-    0xA679,0x20,
-    0xA812,0x00,
-    0xA813,0x3F,
-    0xA814,0x3F,
-    0xA830,0x68,
-    0xA831,0x56,
-    0xA832,0x2B,
-    0xA833,0x55,
-    0xA834,0x55,
-    0xA835,0x16,
-    0xA837,0x51,
-    0xA838,0x34,
-    0xA854,0x4F,
-    0xA855,0x48,
-    0xA856,0x45,
-    0xA857,0x02,
-    0xA85A,0x23,
-    0xA85B,0x16,
-    0xA85C,0x12,
-    0xA85D,0x02,
-    0xAA55,0x00,
-    0xAA56,0x01,
-    0xAA57,0x30,
-    0xAA58,0x01,
-    0xAA59,0x30,
-    0xAC72,0x01,
-    0xAC73,0x26,
-    0xAC74,0x01,
-    0xAC75,0x26,
-    0xAC76,0x00,
-    0xAC77,0xC4,
-    0xAE09,0xFF,
-    0xAE0A,0xFF,
-    0xAE12,0x58,
-    0xAE13,0x58,
-    0xAE15,0x10,
-    0xAE16,0x10,
-    0xAF05,0x48,
-    0xB069,0x02,
-    0xEA4B,0x00,
-    0xEA4C,0x00,
-    0xEA4D,0x00,
-    0xEA4E,0x00,
-    0xBCF1,0x00,
-};
-
-/*Reg B1, 3264x2448,30fps,2X2Binning,w/o PD,For MaxVB*/
-// static u16 sayramfront_preview_setting[] = {
-//     //MIPI output setting
-//     0x0112,0x0A,
-//     0x0113,0x0A,
-//     0x0114,0x03,
-//     //Line Length PCK Setting
-//     0x0342,0x0E,
-//     0x0343,0xB8,
-//     //Frame Length Lines Setting
-//     0x0340,0x1D,
-//     0x0341,0xDA,
-//     //ROI Setting
-//     0x0344,0x00,
-//     0x0345,0x00,
-//     0x0346,0x00,
-//     0x0347,0x10,
-//     0x0348,0x19,
-//     0x0349,0x9F,
-//     0x034A,0x13,
-//     0x034B,0x2F,
-//     //Mode Setting
-//     0x0900,0x01,
-//     0x0901,0x22,
-//     0x0902,0x08,
-//     0x3246,0x81,
-//     0x3247,0x81,
-//     //Digital Crop & Scaling
-//     0x0401,0x00,
-//     0x0404,0x00,
-//     0x0405,0x10,
-//     0x0408,0x00,
-//     0x0409,0x08,
-//     0x040A,0x00,
-//     0x040B,0x00,
-//     0x040C,0x0C,
-//     0x040D,0xC0,
-//     0x040E,0x09,
-//     0x040F,0x90,
-//     //Output Size Setting
-//     0x034C,0x0C,
-//     0x034D,0xC0,
-//     0x034E,0x09,
-//     0x034F,0x90,
-//     //Clock Setting
-//     0x0301,0x05,
-//     0x0303,0x02,
-//     0x0305,0x03,
-//     0x0306,0x01,
-//     0x0307,0x0E,
-//     0x030B,0x01,
-//     0x030D,0x02,
-//     0x030E,0x00,
-//     0x030F,0xB0,
-//     0x0310,0x01,
-//     //Other Setting
-//     0x3620,0x00,
-//     0x3621,0x00,
-//     0x3C12,0x56,
-//     0x3C13,0x52,
-//     0x3C14,0x3E,
-//     0x3F0C,0x00,
-//     0x3F14,0x01,
-//     0x3F80,0x00,
-//     0x3F81,0xA0,
-//     0x3F8C,0x00,
-//     0x3F8D,0x00,
-//     0x3FFC,0x00,
-//     0x3FFD,0x1E,
-//     0x3FFE,0x00,
-//     0x3FFF,0xDC,
-//     //Integration Setting
-//     0x0202,0x1D,
-//     0x0203,0xAA,
-//     //Gain Setting
-//     0x0204,0x00,
-//     0x0205,0x70,
-//     0x020E,0x01,
-//     0x020F,0x00,
-//     0x0210,0x01,
-//     0x0211,0x00,
-//     0x0212,0x01,
-//     0x0213,0x00,
-//     0x0214,0x01,
-//     0x0215,0x00,
-//     // mipi
-//     0x0808, 0x02,
-//     0x080A, 0x00,
-//     0x080B, 0xD7,
-//     0x080C, 0x00,
-//     0x080D, 0x87,
-//     0x080E, 0x00,
-//     0x080F, 0xF7,
-//     0x0810, 0x00,
-//     0x0811, 0x87,
-//     0x0812, 0x00,
-//     0x0813, 0x87,
-//     0x0814, 0x00,
-//     0x0815, 0x87,
-//     0x0816, 0x02,
-//     0x0817, 0x47,
-//     0x0818, 0x00,
-//     0x0819, 0x6F,
-//     0x0824, 0x00,
-//     0x0825, 0xF1,
-//     0x0826, 0x00,
-//     0x0827, 0x0F,
-// };
-
-/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-static u16 sayramfront_preview_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x10,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x2F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-static kal_uint16 sayramfront_capture_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x10,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x2F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B14, 3264x1836,30fps,2X2Binning,w/o PD,For(rst<21ms&cycle>1.5 s)*/
-static kal_uint16 sayramfront_normal_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x0F,
-    0x0341, 0xEC,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x0F,
-    0x0203, 0xBC,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 sayramfront_hs_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x07,
-    0x0341, 0xF6,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x07,
-    0x0203, 0xC6,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 sayramfront_slim_video_setting[] = {
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    /*Line Length PCK Setting*/
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x07,
-    0x0341, 0xF6,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x70,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xC7,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    /*Digital Crop & Scaling*/
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x2C,
-    /*Output Size Setting*/
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x2C,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x00,
-    0x0307, 0x90,
-    0x030B, 0x02,
-    0x030D, 0x08,
-    0x030E, 0x02,
-    0x030F, 0xD3,
-    0x0310, 0x01,
-    /*Other Setting*/
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    /*Integration Setting*/
-    0x0202, 0x07,
-    0x0203, 0xC6,
-    /*Gain Setting*/
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    //mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0x97,
-    0x080C, 0x00,
-    0x080D, 0x47,
-    0x080E, 0x00,
-    0x080F, 0x87,
-    0x0810, 0x00,
-    0x0811, 0x47,
-    0x0812, 0x00,
-    0x0813, 0x47,
-    0x0814, 0x00,
-    0x0815, 0x47,
-    0x0816, 0x01,
-    0x0817, 0x27,
-    0x0818, 0x00,
-    0x0819, 0x3F,
-    0x0824, 0x00,
-    0x0825, 0xE7,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg V1-2 (26M MCLK) 1280x960,10fps,4x4Binning_Crop,w/o PD,For MIPI<1.5G(Skew off)&Hblank=2.4us*/
-static kal_uint16 sayramfront_custom1_setting[] = {
-    //Reset MCLK
-    0x0136, 0x1A,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x08,
-    0x0343, 0xC8,
-    //Frame Length Lines Setting
-    0x0340, 0x53,
-    0x0341, 0x94,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x20,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x11,
-    0x034B, 0x1F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x08,
-    0x3246, 0x89,
-    0x3247, 0x89,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0xB4,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x05,
-    0x040D, 0x00,
-    0x040E, 0x03,
-    0x040F, 0xC0,
-    //Output Size Setting
-    0x034C, 0x05,
-    0x034D, 0x00,
-    0x034E, 0x03,
-    0x034F, 0xC0,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x00,
-    0x0307, 0xB9,
-    0x030B, 0x01,
-    0x030D, 0x04,
-    0x030E, 0x00,
-    0x030F, 0xD8,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x3E,
-    0x3C13, 0x3A,
-    0x3C14, 0x22,
-    0x3F0C, 0x00,
-    0x3F14, 0x00,
-    0x3F80, 0x00,
-    0x3F81, 0x00,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x55,
-    0x3FFE, 0x00,
-    0x3FFF, 0x78,
-    //Integration Setting
-    0x0202, 0x53,
-    0x0203, 0x64,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xA7,
-    0x080C, 0x00,
-    0x080D, 0x5F,
-    0x080E, 0x00,
-    0x080F, 0xAF,
-    0x0810, 0x00,
-    0x0811, 0x5F,
-    0x0812, 0x00,
-    0x0813, 0x5F,
-    0x0814, 0x00,
-    0x0815, 0x5F,
-    0x0816, 0x01,
-    0x0817, 0x97,
-    0x0818, 0x00,
-    0x0819, 0x4F,
-    0x0824, 0x00,
-    0x0825, 0xEB,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg F1-S7, 6560x4928,15fps,Full,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 sayramfront_custom2_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x2C,
-    0x0343, 0xD8,
-    //Frame Length Lines Setting
-    0x0340, 0x13,
-    0x0341, 0x99,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x3F,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x0A,
-    0x3246, 0x01,
-    0x3247, 0x01,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x19,
-    0x040D, 0xA0,
-    0x040E, 0x13,
-    0x040F, 0x40,
-    //Output Size Setting
-    0x034C, 0x19,
-    0x034D, 0xA0,
-    0x034E, 0x13,
-    0x034F, 0x40,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x01,
-    0x3621, 0x01,
-    0x3C12, 0x62,
-    0x3C13, 0x32,
-    0x3C14, 0x20,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0x46,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x6E,
-    0x3FFE, 0x00,
-    0x3FFF, 0x64,
-    //Integration Setting
-    0x0202, 0x13,
-    0x0203, 0x69,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg_B8-3 3264x1856,15fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps)*/
-static kal_uint16 sayramfront_custom3_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    //Frame Length Lines Setting
-    0x0340, 0x3B,
-    0x0341, 0xB6,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x60,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x10,
-    0x034B, 0xDF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x08,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x07,
-    0x040F, 0x40,
-    //Output Size Setting
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x07,
-    0x034F, 0x40,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x07,
-    0x030F, 0x12,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F0C, 0x00,
-    0x3F14, 0x01,
-    0x3F80, 0x00,
-    0x3F81, 0xA0,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x1E,
-    0x3FFE, 0x00,
-    0x3FFF, 0xDC,
-    //Integration Setting
-    0x0202, 0x3B,
-    0x0203, 0x86,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xD7,
-    0x080C, 0x00,
-    0x080D, 0x87,
-    0x080E, 0x00,
-    0x080F, 0xF7,
-    0x0810, 0x00,
-    0x0811, 0x87,
-    0x0812, 0x00,
-    0x0813, 0x87,
-    0x0814, 0x00,
-    0x0815, 0x87,
-    0x0816, 0x02,
-    0x0817, 0x47,
-    0x0818, 0x00,
-    0x0819, 0x6F,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-/*Reg V3 1640x1232,30fps,4x4Binning,w/o PD,For MaxVB&Binning-Ave*/
-static kal_uint16 sayramfront_custom4_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x03,
-    //Line Length PCK Setting
-    0x0342, 0x08,
-    0x0343, 0xC8,
-    //Frame Length Lines Setting
-    0x0340, 0x32,
-    0x0341, 0x0A,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x19,
-    0x0349, 0x9F,
-    0x034A, 0x13,
-    0x034B, 0x3F,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x08,
-    0x3246, 0x89,
-    0x3247, 0x89,
-    //Digital Crop & Scaling
-    0x0401, 0x00,
-    0x0404, 0x00,
-    0x0405, 0x10,
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x06,
-    0x040D, 0x68,
-    0x040E, 0x04,
-    0x040F, 0xD0,
-    //Output Size Setting
-    0x034C, 0x06,
-    0x034D, 0x68,
-    0x034E, 0x04,
-    0x034F, 0xD0,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x03,
-    0x0306, 0x01,
-    0x0307, 0x0E,
-    0x030B, 0x01,
-    0x030D, 0x14,
-    0x030E, 0x06,
-    0x030F, 0x59,
-    0x0310, 0x01,
-    //Other Setting
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x3E,
-    0x3C13, 0x3A,
-    0x3C14, 0x22,
-    0x3F0C, 0x00,
-    0x3F14, 0x00,
-    0x3F80, 0x00,
-    0x3F81, 0x00,
-    0x3F8C, 0x00,
-    0x3F8D, 0x00,
-    0x3FFC, 0x00,
-    0x3FFD, 0x55,
-    0x3FFE, 0x00,
-    0x3FFF, 0x78,
-    //Integration Setting
-    0x0202, 0x31,
-    0x0203, 0xDA,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x70,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    0x0210, 0x01,
-    0x0211, 0x00,
-    0x0212, 0x01,
-    0x0213, 0x00,
-    0x0214, 0x01,
-    0x0215, 0x00,
-    // mipi
-    0x0808, 0x02,
-    0x080A, 0x00,
-    0x080B, 0xCF,
-    0x080C, 0x00,
-    0x080D, 0x7F,
-    0x080E, 0x00,
-    0x080F, 0xEF,
-    0x0810, 0x00,
-    0x0811, 0x7F,
-    0x0812, 0x00,
-    0x0813, 0x7F,
-    0x0814, 0x00,
-    0x0815, 0x7F,
-    0x0816, 0x02,
-    0x0817, 0x1F,
-    0x0818, 0x00,
-    0x0819, 0x67,
-    0x0824, 0x00,
-    0x0825, 0xF1,
-    0x0826, 0x00,
-    0x0827, 0x0F,
-};
-
-static kal_uint16 sayramfront_preview_seamless_setting[] = {
-    0x0342, 0x0E,
-    0x0343, 0xB8,
-    0x0340, 0x1D,
-    0x0341, 0xDA,
-    0x0347, 0x10,
-    0x034B, 0x2F,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x08,
-    0x3246, 0x81,
-    0x3247, 0x81,
-    0x0409, 0x08,
-    0x040C, 0x0C,
-    0x040D, 0xC0,
-    0x040E, 0x09,
-    0x040F, 0x90,
-    0x034C, 0x0C,
-    0x034D, 0xC0,
-    0x034E, 0x09,
-    0x034F, 0x90,
-    0x3620, 0x00,
-    0x3621, 0x00,
-    0x3C12, 0x56,
-    0x3C13, 0x52,
-    0x3C14, 0x3E,
-    0x3F81, 0xA0,
-    0x3FFD, 0x1E,
-    0x3FFF, 0xDC,
-    0x0202, 0x1D,
-    0x0203, 0xAA,
-};
-
-static kal_uint16 sayramfront_custom2_seamless_setting[] = {
-    0x0342, 0x2C,
-    0x0343, 0xD8,
-    0x0340, 0x13,
-    0x0341, 0x99,
-    0x0347, 0x00,
-    0x034B, 0x3F,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x0A,
-    0x3246, 0x01,
-    0x3247, 0x01,
-    0x0409, 0x00,
-    0x040C, 0x19,
-    0x040D, 0xA0,
-    0x040E, 0x13,
-    0x040F, 0x40,
-    0x034C, 0x19,
-    0x034D, 0xA0,
-    0x034E, 0x13,
-    0x034F, 0x40,
-    0x3620, 0x01,
-    0x3621, 0x01,
-    0x3C12, 0x62,
-    0x3C13, 0x32,
-    0x3C14, 0x20,
-    0x3F81, 0x46,
-    0x3FFD, 0x6E,
-    0x3FFF, 0x64,
-    0x0202, 0x13,
-    0x0203, 0x69,
-};
-
-#endif /*_SAYRAMFRONGT_SENSOR_SETTING_H*/
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfront_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfront_ana_gain_table.h
deleted file mode 100755
index b7c3ae7a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfront_ana_gain_table.h
+++ /dev/null
@@ -1,1034 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 sayramfront_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __SAYRAMFRONT_ANA_GAIN_TABLE_H__
-#define __SAYRAMFRONT_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 sayramfront_ana_gain_table[] = {
-    1024,
-    1025,
-    1026,
-    1027,
-    1028,
-    1029,
-    1030,
-    1031,
-    1032,
-    1033,
-    1034,
-    1035,
-    1036,
-    1037,
-    1038,
-    1039,
-    1040,
-    1041,
-    1042,
-    1043,
-    1044,
-    1045,
-    1046,
-    1047,
-    1048,
-    1049,
-    1050,
-    1051,
-    1052,
-    1053,
-    1054,
-    1055,
-    1057,
-    1058,
-    1059,
-    1060,
-    1061,
-    1062,
-    1063,
-    1064,
-    1065,
-    1066,
-    1067,
-    1068,
-    1069,
-    1071,
-    1072,
-    1073,
-    1074,
-    1075,
-    1076,
-    1077,
-    1078,
-    1079,
-    1081,
-    1082,
-    1083,
-    1084,
-    1085,
-    1086,
-    1087,
-    1088,
-    1089,
-    1091,
-    1092,
-    1093,
-    1094,
-    1095,
-    1096,
-    1097,
-    1099,
-    1100,
-    1101,
-    1102,
-    1103,
-    1104,
-    1106,
-    1107,
-    1108,
-    1109,
-    1110,
-    1111,
-    1113,
-    1114,
-    1115,
-    1116,
-    1117,
-    1119,
-    1120,
-    1121,
-    1122,
-    1123,
-    1125,
-    1126,
-    1127,
-    1128,
-    1129,
-    1131,
-    1132,
-    1133,
-    1134,
-    1136,
-    1137,
-    1138,
-    1139,
-    1140,
-    1142,
-    1143,
-    1144,
-    1145,
-    1147,
-    1148,
-    1149,
-    1151,
-    1152,
-    1153,
-    1154,
-    1156,
-    1157,
-    1158,
-    1159,
-    1161,
-    1162,
-    1163,
-    1165,
-    1166,
-    1167,
-    1168,
-    1170,
-    1171,
-    1172,
-    1174,
-    1175,
-    1176,
-    1178,
-    1179,
-    1180,
-    1182,
-    1183,
-    1184,
-    1186,
-    1187,
-    1188,
-    1190,
-    1191,
-    1192,
-    1194,
-    1195,
-    1197,
-    1198,
-    1199,
-    1201,
-    1202,
-    1203,
-    1205,
-    1206,
-    1208,
-    1209,
-    1210,
-    1212,
-    1213,
-    1215,
-    1216,
-    1217,
-    1219,
-    1220,
-    1222,
-    1223,
-    1224,
-    1226,
-    1227,
-    1229,
-    1230,
-    1232,
-    1233,
-    1235,
-    1236,
-    1237,
-    1239,
-    1240,
-    1242,
-    1243,
-    1245,
-    1246,
-    1248,
-    1249,
-    1251,
-    1252,
-    1254,
-    1255,
-    1257,
-    1258,
-    1260,
-    1261,
-    1263,
-    1264,
-    1266,
-    1267,
-    1269,
-    1271,
-    1272,
-    1274,
-    1275,
-    1277,
-    1278,
-    1280,
-    1281,
-    1283,
-    1285,
-    1286,
-    1288,
-    1289,
-    1291,
-    1292,
-    1294,
-    1296,
-    1297,
-    1299,
-    1300,
-    1302,
-    1304,
-    1305,
-    1307,
-    1309,
-    1310,
-    1312,
-    1314,
-    1315,
-    1317,
-    1318,
-    1320,
-    1322,
-    1323,
-    1325,
-    1327,
-    1328,
-    1330,
-    1332,
-    1334,
-    1335,
-    1337,
-    1339,
-    1340,
-    1342,
-    1344,
-    1346,
-    1347,
-    1349,
-    1351,
-    1353,
-    1354,
-    1356,
-    1358,
-    1360,
-    1361,
-    1363,
-    1365,
-    1367,
-    1368,
-    1370,
-    1372,
-    1374,
-    1376,
-    1377,
-    1379,
-    1381,
-    1383,
-    1385,
-    1387,
-    1388,
-    1390,
-    1392,
-    1394,
-    1396,
-    1398,
-    1399,
-    1401,
-    1403,
-    1405,
-    1407,
-    1409,
-    1411,
-    1413,
-    1415,
-    1416,
-    1418,
-    1420,
-    1422,
-    1424,
-    1426,
-    1428,
-    1430,
-    1432,
-    1434,
-    1436,
-    1438,
-    1440,
-    1442,
-    1444,
-    1446,
-    1448,
-    1450,
-    1452,
-    1454,
-    1456,
-    1458,
-    1460,
-    1462,
-    1464,
-    1466,
-    1468,
-    1470,
-    1472,
-    1474,
-    1476,
-    1478,
-    1481,
-    1483,
-    1485,
-    1487,
-    1489,
-    1491,
-    1493,
-    1495,
-    1497,
-    1500,
-    1502,
-    1504,
-    1506,
-    1508,
-    1510,
-    1513,
-    1515,
-    1517,
-    1519,
-    1521,
-    1524,
-    1526,
-    1528,
-    1530,
-    1533,
-    1535,
-    1537,
-    1539,
-    1542,
-    1544,
-    1546,
-    1548,
-    1551,
-    1553,
-    1555,
-    1558,
-    1560,
-    1562,
-    1565,
-    1567,
-    1569,
-    1572,
-    1574,
-    1576,
-    1579,
-    1581,
-    1583,
-    1586,
-    1588,
-    1591,
-    1593,
-    1596,
-    1598,
-    1600,
-    1603,
-    1605,
-    1608,
-    1610,
-    1613,
-    1615,
-    1618,
-    1620,
-    1623,
-    1625,
-    1628,
-    1630,
-    1633,
-    1635,
-    1638,
-    1640,
-    1643,
-    1646,
-    1648,
-    1651,
-    1653,
-    1656,
-    1659,
-    1661,
-    1664,
-    1667,
-    1669,
-    1672,
-    1675,
-    1677,
-    1680,
-    1683,
-    1685,
-    1688,
-    1691,
-    1693,
-    1696,
-    1699,
-    1702,
-    1705,
-    1707,
-    1710,
-    1713,
-    1716,
-    1718,
-    1721,
-    1724,
-    1727,
-    1730,
-    1733,
-    1736,
-    1738,
-    1741,
-    1744,
-    1747,
-    1750,
-    1753,
-    1756,
-    1759,
-    1762,
-    1765,
-    1768,
-    1771,
-    1774,
-    1777,
-    1780,
-    1783,
-    1786,
-    1789,
-    1792,
-    1795,
-    1798,
-    1801,
-    1804,
-    1807,
-    1811,
-    1814,
-    1817,
-    1820,
-    1823,
-    1826,
-    1829,
-    1833,
-    1836,
-    1839,
-    1842,
-    1846,
-    1849,
-    1852,
-    1855,
-    1859,
-    1862,
-    1865,
-    1869,
-    1872,
-    1875,
-    1879,
-    1882,
-    1885,
-    1889,
-    1892,
-    1896,
-    1899,
-    1903,
-    1906,
-    1909,
-    1913,
-    1916,
-    1920,
-    1923,
-    1927,
-    1931,
-    1934,
-    1938,
-    1941,
-    1945,
-    1949,
-    1952,
-    1956,
-    1959,
-    1963,
-    1967,
-    1971,
-    1974,
-    1978,
-    1982,
-    1985,
-    1989,
-    1993,
-    1997,
-    2001,
-    2004,
-    2008,
-    2012,
-    2016,
-    2020,
-    2024,
-    2028,
-    2032,
-    2036,
-    2040,
-    2044,
-    2048,
-    2052,
-    2056,
-    2060,
-    2064,
-    2068,
-    2072,
-    2076,
-    2080,
-    2084,
-    2088,
-    2092,
-    2097,
-    2101,
-    2105,
-    2109,
-    2114,
-    2118,
-    2122,
-    2126,
-    2131,
-    2135,
-    2139,
-    2144,
-    2148,
-    2153,
-    2157,
-    2162,
-    2166,
-    2170,
-    2175,
-    2179,
-    2184,
-    2189,
-    2193,
-    2198,
-    2202,
-    2207,
-    2212,
-    2216,
-    2221,
-    2226,
-    2231,
-    2235,
-    2240,
-    2245,
-    2250,
-    2255,
-    2259,
-    2264,
-    2269,
-    2274,
-    2279,
-    2284,
-    2289,
-    2294,
-    2299,
-    2304,
-    2309,
-    2314,
-    2319,
-    2325,
-    2330,
-    2335,
-    2340,
-    2345,
-    2351,
-    2356,
-    2361,
-    2366,
-    2372,
-    2377,
-    2383,
-    2388,
-    2394,
-    2399,
-    2404,
-    2410,
-    2416,
-    2421,
-    2427,
-    2432,
-    2438,
-    2444,
-    2449,
-    2455,
-    2461,
-    2467,
-    2473,
-    2478,
-    2484,
-    2490,
-    2496,
-    2502,
-    2508,
-    2514,
-    2520,
-    2526,
-    2532,
-    2538,
-    2545,
-    2551,
-    2557,
-    2563,
-    2570,
-    2576,
-    2582,
-    2589,
-    2595,
-    2601,
-    2608,
-    2614,
-    2621,
-    2628,
-    2634,
-    2641,
-    2647,
-    2654,
-    2661,
-    2668,
-    2674,
-    2681,
-    2688,
-    2695,
-    2702,
-    2709,
-    2716,
-    2723,
-    2730,
-    2737,
-    2744,
-    2752,
-    2759,
-    2766,
-    2774,
-    2781,
-    2788,
-    2796,
-    2803,
-    2811,
-    2818,
-    2826,
-    2833,
-    2841,
-    2849,
-    2857,
-    2864,
-    2872,
-    2880,
-    2888,
-    2896,
-    2904,
-    2912,
-    2920,
-    2928,
-    2937,
-    2945,
-    2953,
-    2962,
-    2970,
-    2978,
-    2987,
-    2995,
-    3004,
-    3013,
-    3021,
-    3030,
-    3039,
-    3048,
-    3057,
-    3066,
-    3075,
-    3084,
-    3093,
-    3102,
-    3111,
-    3120,
-    3130,
-    3139,
-    3148,
-    3158,
-    3167,
-    3177,
-    3187,
-    3196,
-    3206,
-    3216,
-    3226,
-    3236,
-    3246,
-    3256,
-    3266,
-    3276,
-    3287,
-    3297,
-    3307,
-    3318,
-    3328,
-    3339,
-    3350,
-    3360,
-    3371,
-    3382,
-    3393,
-    3404,
-    3415,
-    3426,
-    3437,
-    3449,
-    3460,
-    3472,
-    3483,
-    3495,
-    3506,
-    3518,
-    3530,
-    3542,
-    3554,
-    3566,
-    3578,
-    3591,
-    3603,
-    3615,
-    3628,
-    3640,
-    3653,
-    3666,
-    3679,
-    3692,
-    3705,
-    3718,
-    3731,
-    3744,
-    3758,
-    3771,
-    3785,
-    3799,
-    3813,
-    3826,
-    3840,
-    3855,
-    3869,
-    3883,
-    3898,
-    3912,
-    3927,
-    3942,
-    3956,
-    3971,
-    3986,
-    4002,
-    4017,
-    4032,
-    4048,
-    4064,
-    4080,
-    4096,
-    4112,
-    4128,
-    4144,
-    4161,
-    4177,
-    4194,
-    4211,
-    4228,
-    4245,
-    4262,
-    4279,
-    4297,
-    4315,
-    4332,
-    4350,
-    4369,
-    4387,
-    4405,
-    4424,
-    4443,
-    4462,
-    4481,
-    4500,
-    4519,
-    4539,
-    4559,
-    4578,
-    4599,
-    4619,
-    4639,
-    4660,
-    4681,
-    4702,
-    4723,
-    4744,
-    4766,
-    4788,
-    4809,
-    4832,
-    4854,
-    4877,
-    4899,
-    4922,
-    4946,
-    4969,
-    4993,
-    5017,
-    5041,
-    5065,
-    5090,
-    5115,
-    5140,
-    5165,
-    5190,
-    5216,
-    5242,
-    5269,
-    5295,
-    5322,
-    5349,
-    5377,
-    5405,
-    5433,
-    5461,
-    5489,
-    5518,
-    5548,
-    5577,
-    5607,
-    5637,
-    5667,
-    5698,
-    5729,
-    5761,
-    5793,
-    5825,
-    5857,
-    5890,
-    5924,
-    5957,
-    5991,
-    6026,
-    6061,
-    6096,
-    6132,
-    6168,
-    6204,
-    6241,
-    6278,
-    6316,
-    6355,
-    6393,
-    6432,
-    6472,
-    6512,
-    6553,
-    6594,
-    6636,
-    6678,
-    6721,
-    6765,
-    6808,
-    6853,
-    6898,
-    6944,
-    6990,
-    7037,
-    7084,
-    7133,
-    7182,
-    7231,
-    7281,
-    7332,
-    7384,
-    7436,
-    7489,
-    7543,
-    7598,
-    7653,
-    7710,
-    7767,
-    7825,
-    7884,
-    7943,
-    8004,
-    8065,
-    8128,
-    8192,
-    8256,
-    8322,
-    8388,
-    8456,
-    8525,
-    8594,
-    8665,
-    8738,
-    8811,
-    8886,
-    8962,
-    9039,
-    9118,
-    9198,
-    9279,
-    9362,
-    9446,
-    9532,
-    9619,
-    9709,
-    9799,
-    9892,
-    9986,
-    10082,
-    10180,
-    10280,
-    10381,
-    10485,
-    10591,
-    10699,
-    10810,
-    10922,
-    11037,
-    11155,
-    11275,
-    11397,
-    11522,
-    11650,
-    11781,
-    11915,
-    12052,
-    12192,
-    12336,
-    12483,
-    12633,
-    12787,
-    12945,
-    13107,
-    13273,
-    13443,
-    13617,
-    13797,
-    13981,
-    14169,
-    14364,
-    14563,
-    14768,
-    14979,
-    15196,
-    15420,
-    15650,
-    15887,
-    16131,
-    16384,
-    16644,
-    16912,
-    17189,
-    17476,
-    17772,
-    18078,
-    18396,
-    18724,
-    19065,
-    19418,
-    19784,
-    20164,
-    20560,
-    20971,
-    21399,
-    21845,
-    22310,
-    22795,
-    23301,
-    23831,
-    24385,
-    24966,
-    25575,
-    26214,
-    26886,
-    27594,
-    28339,
-    29127,
-    29959,
-    30840,
-    31775,
-    32768,
-    33825,
-    34952,
-    36157,
-    37449,
-    38836,
-    40329,
-    41943,
-    43690,
-    45590,
-    47662,
-    49932,
-    52428,
-    55188,
-    58254,
-    61680,
-    65536,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfrontmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfrontmipiraw_Sensor.c
deleted file mode 100755
index d785d1e8..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfrontmipiraw_Sensor.c
+++ /dev/null
@@ -1,1460 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     sayrammipiraw_Sensor.c
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "sayramfrontmipiraw_Sensor.h"
-
-
-#define SAYRAMFRONT_EEPROM_READ_ID	0xA9
-#define OTP_SIZE    0x2000  /* 8KB */
-#define LRC_L_REG   0x7A98  /* sensor reg */
-#define LRC_R_REG   0x7B1C
-#define SEAMLEES_GRP_HOLD 0x0104
-
-#define DEBUG_LOG_EN 0
-#define PFX "sayramfront_camera_sensor"
-#define LOG_INF(format, args...) pr_info(PFX "I [%s] " format, __func__, ##args)
-#define LOG_ERR(format, args...) pr_err(PFX "E [%s] " format, __func__, ##args)
-#define LOG_DEBUG(...) do { if ((DEBUG_LOG_EN)) LOG_INF(__VA_ARGS__); } while (0)
-
-static const char * const clk_names[] = {
-	ADAPTOR_CLK_NAMES
-};
-
-static const char * const reg_names[] = {
-	ADAPTOR_REGULATOR_NAMES
-};
-
-static const char * const state_names[] = {
-	ADAPTOR_STATE_NAMES
-};
-
-static int stream_refcnt_for_aov = 0;
-
-static int init_ctx(
-	struct subdrv_ctx *ctx, struct i2c_client *i2c_client, u8 i2c_write_id);
-static int sayramfront_open(struct subdrv_ctx *ctx);
-static int sayramfront_get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-// static int get_csi_param(
-// 	struct subdrv_ctx *ctx,
-// 	enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-// 	struct mtk_csi_param *csi_param);
-static int get_sensor_temperature(void *arg);
-static u16 get_gain2reg(u32 gain);
-static void set_group_hold(void *arg, u8 en);
-
-#ifdef SAYRAMFRONT_AOV_MCLK_26M
-static int set_pwr_seq_reset_view_to_sensing(void *arg);
-#endif /* SAYRAMFRONT_AOV_MCLK_26M */
-
-static int sayramfront_streaming_control(void *arg, bool enable);
-static int sayramfront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramfront_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramfront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void Imx615_fab_read(struct subdrv_ctx *ctx);
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramfront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void set_sensor_cali(void *arg);
-static void get_sensor_cali(void* arg);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int sayramfront_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-/* STRUCT */
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, sayramfront_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, sayramfront_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, sayramfront_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, sayramfront_get_otp_checksum_data},
-	// {SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, sayramfront_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, sayramfront_set_awb_gain},
-};
-
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA9,
-	.i2c_write_id = 0xA8,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x000F,
-
-	// .addr_af = 0x0092,
-	// .addr_afmacro = 0x0092,
-	// .addr_afinf = 0x0094,
-	// .addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01510008,  /* cal_layout_table */
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA8,
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0618,
-		.addr_qsc = 0x0C90, /* QSC_EEPROM_ADDR 0x0C90~0x12A7*/
-		.sensor_reg_addr_qsc = 0xC500, /*QSC_Sensor_ADDR*/
-
-		.lrc_support = TRUE,
-		.lrc_size = 0x0104,
-		.addr_lrc = 0x14B0, /* LRC_EEPROM_ADDR 0x14B0~0x15B3*/
-		.sensor_reg_addr_lrc = 0x7A98, /*useless, use LRC_L_REG and LRC_R_REG*/
-	},
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 2448,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1836,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 1280,
-            .vsize = 960,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 6560,
-            .vsize = 4928,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 3264,
-            .vsize = 1856,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-    {
-        .bus.csi2 = {
-            .channel = 0,
-            .data_type = 0x2b,
-            .hsize = 1640,
-            .vsize = 1232,
-            .user_data_desc = VC_STAGGER_NE,
-            .fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-        },
-    }
-};
-
-// static int stream_refcnt_for_aov;
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{  /* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = sayramfront_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramfront_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramfront_preview_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramfront_preview_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 7642,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 16,
-			.w0_size = 6560,
-			.h0_size = 4896,
-			.scale_w = 3280,
-			.scale_h = 2448,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x40,
-			.need_bw_change = 1,
-		},
-	},
-	{	/* B9-S7 3264x2448,30fps,2X2Binning,w/o PD,For MIPI(Around 868.8Mpps) */
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = sayramfront_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramfront_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 7642,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 16,
-			.w0_size = 6560,
-			.h0_size = 4896,
-			.scale_w = 3280,
-			.scale_h = 2448,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x40,
-			.need_bw_change = 1,
-		},
-	},
-
-	{/*Reg B14, 3264x1836,30fps,2X2Binning,w/o PD,For(rst<21ms&cycle>1.5 s)*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = sayramfront_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramfront_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 4076,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x47,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For seamless2 group*/
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = sayramfront_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramfront_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 2038,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x47,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg B7-S8, 3264x1856,60fps,2X2Binning,w/o PD,For seamless2 group*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = sayramfront_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramfront_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 460800000,
-		.linelength = 3768,
-		.framelength = 2038,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 433800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 628,
-			.w0_size = 6560,
-			.h0_size = 3672,
-			.scale_w = 3280,
-			.scale_h = 1836,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0x47,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg V2-4 1280x960,10fps,4x4Binning_Crop,w/o PD,For MIPI<1.5G(Skew off)&Hblank=2.4us*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = sayramfront_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramfront_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 481000000,
-		.linelength = 2248,
-		.framelength = 21396,
-		.max_framerate = 100,
-		.mipi_pixel_rate = 561600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 544,
-			.w0_size = 6560,
-			.h0_size = 3840,
-			.scale_w = 1640,
-			.scale_h = 960,
-			.x1_offset = 180,
-			.y1_offset = 0,
-			.w1_size = 1280,
-			.h1_size = 960,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1280,
-			.h2_tg_size = 960,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 879,
-		.csi_param = {
-			.dphy_trail = 0x60,
-			.need_bw_change = 1,
-		},
-		.aov_mode = 1,
-		.s_dummy_support = 0,
-		.ae_ctrl_support = IMGSENSOR_AE_CONTROL_SUPPORT_VIEWING_MODE,
-	},
-	{/*Reg F1-S7, 6560x4928,15fps,Full,w/o PD,For seamless1 group*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = sayramfront_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramfront_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramfront_custom2_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramfront_custom2_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 11480,
-		.framelength = 5017,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 6560,
-			.h0_size = 4928,
-			.scale_w = 6560,
-			.scale_h = 4928,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 6560,
-			.h1_size = 4928,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 6560,
-			.h2_tg_size = 4928,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 617,
-		.csi_param = {
-			.dphy_trail = 0xB3,
-			.need_bw_change = 1,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{/*Reg_B8-3 3264x1856,15fps,2X2Binning,w/o PD,For MaxVB*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = sayramfront_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramfront_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 3768,
-		.framelength = 15286,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 868800000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 608,
-			.w0_size = 6560,
-			.h0_size = 3712,
-			.scale_w = 3280,
-			.scale_h = 1856,
-			.x1_offset = 8,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1856,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1856,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.dphy_trail = 0xB3,
-			.need_bw_change = 1,
-		},
-	},
-	{/*Reg V3 1640x1232,30fps,4x4Binning,w/o PD,For MaxVB&Binning-Ave*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = sayramfront_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramfront_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 864000000,
-		.linelength = 2248,
-		.framelength = 12810,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 780000000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.imgsensor_winsize_info = {
-			.full_w = 6560,
-			.full_h = 4928,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 6560,
-			.h0_size = 4928,
-			.scale_w = 1640,
-			.scale_h = 1232,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1640,
-			.h1_size = 1232,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1640,
-			.h2_tg_size = 1232,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 356,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = SAYRAMFRONT_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},  // todo
-	.i2c_addr_table = {0x20, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {6560, 4928},
-	.mirror = IMAGE_NORMAL,
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_6MA,  // todo
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_R,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,  // BASEGAIN * 1.123
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = sayramfront_ana_gain_table,
-	.ana_gain_table_size = sizeof(sayramfront_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 16,
-	.exposure_max =  128*(0xFFFF - 48),
-	.exposure_step = 1,
-	.exposure_margin = 48,
-
-	.frame_length_max = 0xffff-5,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1794700,
-
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.hdr_type = HDR_SUPPORT_NA,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.s_gph = set_group_hold,
-
-	.s_cali = set_sensor_cali,
-	.g_cali = get_sensor_cali,
-	// .s_data_rate_global_timing_phy_ctrl = set_data_rate_global_timing_phy_ctrl,
-#ifdef SAYRAMFRONT_AOV_MCLK_26M
-	.s_pwr_seq_reset_view_to_sensing = set_pwr_seq_reset_view_to_sensing,
-#endif
-	.s_streaming_control = sayramfront_streaming_control,
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-
-	.reg_addr_exposure = {
-			{0x0202, 0x0203},
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3100,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205},
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = 0x0138,
-	.reg_addr_temp_read = 0x013A,
-	.reg_addr_auto_extend = 0x0350,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_fast_mode = 0x3020,
-
-	.init_setting_table = sayramfront_init_setting,
-	.init_setting_len = ARRAY_SIZE(sayramfront_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0x8ac2d94a,
-	.aov_sensor_support = TRUE,
-	.sensor_mode_ops = 0,  // debug
-	.sensor_debug_sensing_ut_on_scp = TRUE, // whether stream on scp
-	// .sensor_debug_dphy_global_timing_continuous_clk = TRUE,
-	.init_in_open = TRUE,
-	.streaming_ctrl_imp = TRUE,
-};
-
-static struct subdrv_ops ops = {
-	.init_ctx = init_ctx,
-	.open = sayramfront_open,
-	.get_id = sayramfront_get_imgsensor_id,
-	.vsync_notify = vsync_notify,
-	.get_csi_param = common_get_csi_param,
-	.get_temp = common_get_temp,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_SCL, {0}, 0},	/* default i2c bus scl 4 on apmcu side */
-	{HW_ID_SDA, {0}, 0},	/* default i2c bus sda 4 on apmcu side */
-	{HW_ID_RST, {0}, 0},
-	{HW_ID_AVDD, {2900000, 2900000}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_DVDD, {1104000, 1104000}, 1000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {6}, 1000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-static struct subdrv_pw_seq_entry aov_pw_seq[] = {
-	{HW_ID_MCLK, {26, MCLK_ULPOSC}, 0},
-	{HW_ID_SCL, {0}, 0},	/* default i2c bus scl 4 on apmcu side */
-	{HW_ID_SDA, {0}, 0},	/* default i2c bus sda 4 on apmcu side */
-	{HW_ID_RST, {0}, 0},
-	{HW_ID_AVDD, {2900000, 2900000}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_DVDD, {1104000, 1104000}, 1000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {6}, 1000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry sayramfront_mipi_raw_entry = {
-	.name = "sayramfront_mipi_raw",
-	.id = SAYRAMFRONT_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.aov_pw_seq = aov_pw_seq,
-	.aov_pw_seq_cnt = ARRAY_SIZE(aov_pw_seq),
-	.ops = &ops,
-};
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static void Imx615_fab_read(struct subdrv_ctx *ctx)
-{
-    kal_uint16 reg_0xa01 = 0;
-    kal_uint16 reg_0xa1f = 0;
-    kal_uint16 reg_0xa20 = 0;
-
-    subdrv_i2c_wr_u8(ctx, 0x0A02, 0x7F);
-    subdrv_i2c_wr_u8(ctx, 0x0A00, 0x01);
-    msleep(1);
-
-    reg_0xa01 = subdrv_i2c_rd_u8(ctx, 0x0A01);
-    reg_0xa1f = subdrv_i2c_rd_u8(ctx, 0x0A1F);
-    reg_0xa20 = subdrv_i2c_rd_u8(ctx, 0x0A20);
-
-    pr_info("Read fab2 reg table [0xa01->0x%x, 0xa1f->0x%x, 0xa20->0x%x]", reg_0xa01, reg_0xa1f, reg_0xa20);
-    if (reg_0xa01 == 0x01) {
-        if (reg_0xa1f == 0xB4 && reg_0xa20 == 0x01) {
-            msleep(2);
-            subdrv_i2c_wr_u8(ctx, 0x0A00, 0x00);
-            sensor_init(ctx);
-            subdrv_i2c_wr_u8(ctx, 0x574B, 0x01);
-            subdrv_i2c_wr_u8(ctx, 0x5765, 0x33);
-        }else if (reg_0xa20 != 0x01 || reg_0xa1f != 0xB4) {
-            subdrv_i2c_wr_u8(ctx, 0x0A00, 0x00);
-            sensor_init(ctx);
-        }
-
-    } else {
-        pr_info("Read 0xa01 vaule is 0x%x",reg_0xa01);
-        pr_info("IMX615 read reg_0xa01 failed,just write init setting");
-        sensor_init(ctx);
-    }
-}
-
-
-static int sayramfront_open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	DRV_LOG_MUST(ctx, "for sayramfront start\n");
-
-	/* initail setting */
-	// sensor_init(ctx);
-	Imx615_fab_read(ctx);
-
-	/* get sensor id */
-	if (sayramfront_get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static int sayramfront_get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	static bool first_read = KAL_TRUE;
-
-	LOG_INF("for sayramfront id\n");
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			LOG_INF("i2c_write_id:0x%x sensor_id(cur/exp):0x%x/0x%x\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x615) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					LOG_INF("first read eeprom +");
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-					LOG_INF("first read eeprom -");
-				}
-				return ERROR_NONE;
-			}
-			LOG_INF("Read sensor id fail, id(0x%x)\n",
-				ctx->i2c_write_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		/* if Sensor ID is not correct,
-		 * Must set *sensor_id to 0xFFFFFFFF
-		 */
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-static int sayramfront_streaming_control(void *arg, bool enable) {
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	int ret = 0;
-	DRV_LOG(ctx, "E!\n");
-
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	DRV_LOG_MUST(ctx,
-		"sayramfront streaming_enable(0=Sw Standby,1=streaming):(%d)\n", enable);
-
-	if (enable) { // stream on
-		if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-			stream_refcnt_for_aov = 1;
-		}
-		subdrv_i2c_wr_u8(ctx, 0x0100, 0x01);
-	} else { // stream off
-		subdrv_i2c_wr_u8(ctx, 0x0100, 0x00);
-		if (stream_refcnt_for_aov) {
-			// i2c bus scl4 on apmcu side
-			ret = pinctrl_select_state(
-				_adaptor_ctx->pinctrl,
-				_adaptor_ctx->state[STATE_SCL_AP]);
-			if (ret < 0) {
-				DRV_LOG_MUST(ctx,
-					"sayramfront select(%s)(fail),ret(%d)\n",
-					state_names[STATE_SCL_AP], ret);
-				return ret;
-			}
-			DRV_LOG(ctx, "sayramfront select(%s)(correct)\n", state_names[STATE_SCL_AP]);
-
-			// i2c bus sda4 on apmcu side
-			ret = pinctrl_select_state(
-				_adaptor_ctx->pinctrl,
-				_adaptor_ctx->state[STATE_SDA_AP]);
-			if (ret < 0) {
-				DRV_LOG_MUST(ctx,
-					"sayramfront select(%s)(fail),ret(%d)\n",
-					state_names[STATE_SDA_AP], ret);
-				return ret;
-			}
-			DRV_LOG(ctx, "sayramfront select(%s)(correct)\n", state_names[STATE_SDA_AP]);
-			mdelay(1);
-		}
-		stream_refcnt_for_aov = 0;
-
-	}
-	return ret;
-}
-
-#ifdef SAYRAMFRONT_AOV_MCLK_26M
-static int set_pwr_seq_reset_view_to_sensing(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	DRV_LOGE(ctx, "sayramfront set_pwr_seq_reset_view_to_sensing");
-
-	int ret = 0;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	/* switch viewing mode sw stand-by to hw stand-by */
-	// 1. set gpio
-	// xclr(reset) = 0
-	ret = pinctrl_select_state(
-		_adaptor_ctx->pinctrl,
-		_adaptor_ctx->state[STATE_RST_LOW]);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"select(%s)(fail),ret(%d)\n",
-			state_names[STATE_RST_LOW], ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "select(%s)(correct)\n", state_names[STATE_RST_LOW]);
-	mdelay(1);	// response time T4-T6 in datasheet
-
-#ifdef PWR_SEQ_ALL_USE_FOR_AOV_MODE_TRANSITION
-	ret = pwr_seq_common_disable_for_mode_transition(_adaptor_ctx);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"pwr_seq_common_disable_for_mode_transition(fail),ret(%d)\n",
-			ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "pwr_seq_common_disable_for_mode_transition(correct)\n");
-	// switch hw stand-by to sensing mode sw stand-by
-	ret = pwr_seq_common_enable_for_mode_transition(_adaptor_ctx);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"pwr_seq_common_enable_for_mode_transition(fail),ret(%d)\n",
-			ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "pwr_seq_common_enable_for_mode_transition)(correct)\n");
-#endif
-	// xclr(reset) = 1
-	ret = pinctrl_select_state(
-		_adaptor_ctx->pinctrl,
-		_adaptor_ctx->state[STATE_RST_HIGH]);
-	if (ret < 0) {
-		DRV_LOG_MUST(ctx,
-			"select(%s)(fail),ret(%d)\n",
-			state_names[STATE_RST_HIGH], ret);
-		return ret;
-	}
-	DRV_LOG(ctx, "select(%s)(correct)\n", state_names[STATE_RST_HIGH]);
-	mdelay(4);	// response time T7 in datasheet
-	return ret;
-
-}
-#endif /* SAYRAMFRONT_AOV_MCLK_26M */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x50)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 80;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG_MUST(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (1024 - (1024 * BASEGAIN) / gain);
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, SEAMLEES_GRP_HOLD, 0x01);
-	else
-		set_i2c_buffer(ctx, SEAMLEES_GRP_HOLD, 0x00);
-}
-
-
-
-static int sayramfront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	return sayramfront_get_imgsensor_id(ctx, (u32 *)para);
-}
-
-static int sayramfront_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG_MUST(ctx,
-		"E: set seamless switch %u %u\n",
-		ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table
-		== NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	update_mode_info(ctx, scenario_id);
-
-	subdrv_i2c_wr_u8(ctx, SEAMLEES_GRP_HOLD, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	subdrv_i2c_wr_u8(ctx, SEAMLEES_GRP_HOLD, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG_MUST(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int sayramfront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG_MUST(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	switch (mode) {
-	case 5:
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x00); /* dig_gain = 0 */
-		break;
-	default:
-		subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-		break;
-	}
-
-	if ((ctx->test_pattern) && (mode != ctx->test_pattern)) {
-		if (ctx->test_pattern == 5)
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-		else if (mode == 0)
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /* No pattern */
-	}
-
-	ctx->test_pattern = mode;
-	return ERROR_NONE;
-}
-
-
-// static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u32 addr_sensorver = 0x0018;
-// 	struct oplus_eeprom_info_struct* infoPtr;
-// 	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-// 	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-// 	*len = sizeof(oplus_eeprom_info);
-// 	if (subdrv_i2c_rd_u8(ctx, addr_sensorver) != 0x00) {
-// 		printk("need to convert to 10bit");
-// 		infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 4) | (infoPtr->afInfo[0] >> 4));
-// 		infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 4);
-// 		infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 4) | (infoPtr->afInfo[2] >> 4));
-// 		infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 4);
-// 		infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 4) | (infoPtr->afInfo[4] >> 4));
-// 		infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 4);
-// 	}
-// 	return 0;
-// }
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, SAYRAMFRONT_EEPROM_READ_ID >> 1,
-		addr, data, size) < 0) {
-		DRV_LOGE(ctx, "sayramfront read_cmos_eeprom_p8 failed\n");
-		return false;
-	}
-	DRV_LOGE(ctx, "sayramfront read_cmos_eeprom_p8 success read size = %d\n", size);
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "sayramfront read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "sayramfront read_otp_info end\n");
-}
-
-static int sayramfront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read read read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3621, 0x01);
-			LOG_INF("set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x32D2, 0x00);
-		}
-	}
-
-	/* SPC data */
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0xD200;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0xD300;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-
-	/* LRC data */
-	support = info[idx].lrc_support;
-	pbuf = info[idx].preload_lrc_table;
-	size = info[idx].lrc_size;
-	if (support) {
-		if (pbuf != NULL && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, LRC_L_REG, pbuf, size / 2); // L data
-			subdrv_i2c_wr_seq_p8(ctx, LRC_R_REG, pbuf + size / 2, size / 2); // R data
-			DRV_LOG(ctx, "set LRC calibration data done.");
-		} else {
-			DRV_LOGE(ctx, "LRC calibration data error");
-		}
-	}
-
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-
-	/* LRC data */
-	support = info[idx].lrc_support;
-	size = info[idx].lrc_size;
-	addr = info[idx].addr_lrc;
-	buf = info[idx].lrc_table;
-	if (support && size > 0) {
-		if (info[idx].preload_lrc_table == NULL) {
-			info[idx].preload_lrc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_lrc_table, size)) {
-					DRV_LOGE(ctx, "preload LRC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_lrc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload LRC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "LRC data is already preloaded %u bytes", size);
-		}
-	}
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static int sayramfront_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-
-	set_group_hold((void *)ctx, 1);
-	subdrv_i2c_wr_u8(ctx, 0x0B8E, (u8)(awb_gain->ABS_GAIN_GR >> 8)); // GR
-	subdrv_i2c_wr_u8(ctx, 0x0B8F, (u8)(awb_gain->ABS_GAIN_GR & 0xFF)); // GR
-	subdrv_i2c_wr_u8(ctx, 0x0B90, (u8)(awb_gain->ABS_GAIN_R >> 8)); // R
-	subdrv_i2c_wr_u8(ctx, 0x0B91, (u8)(awb_gain->ABS_GAIN_R & 0xFF)); // R
-	subdrv_i2c_wr_u8(ctx, 0x0B92, (u8)(awb_gain->ABS_GAIN_B >> 8)); // B
-	subdrv_i2c_wr_u8(ctx, 0x0B93, (u8)(awb_gain->ABS_GAIN_B & 0xFF)); // B
-	subdrv_i2c_wr_u8(ctx, 0x0B94, (u8)(awb_gain->ABS_GAIN_GB >> 8)); // GB
-	subdrv_i2c_wr_u8(ctx, 0x0B95, (u8)(awb_gain->ABS_GAIN_GB & 0xFF)); // GB
-	set_group_hold((void *)ctx, 0);
-
-	DRV_LOG(ctx, "ABS_GAIN_GR(%d) ABS_GAIN_R(%d) ABS_GAIN_B(%d) ABS_GAIN_GB(%d)",
-		awb_gain->ABS_GAIN_GR, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B, awb_gain->ABS_GAIN_GB);
-
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfrontmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfrontmipiraw_Sensor.h
deleted file mode 100644
index 0f895217..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramfront_mipi_raw/sayramfrontmipiraw_Sensor.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2022 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     sayramfrontmipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _SAYRAMFRONTMIPI_SENSOR_H
-#define _SAYRAMFRONTMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-
-#include "sayramfront_ana_gain_table.h"
-#include "sayramfront_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#define EEPROM_READY 1	// #define it when eeprom ready
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/Makefile
deleted file mode 100755
index a63b88a9..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/sayrammainmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammain_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammain_Sensor_setting.h
deleted file mode 100755
index eb96304b..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammain_Sensor_setting.h
+++ /dev/null
@@ -1,4477 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 sayrammain_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _SAYRAMMAIN_SENSOR_SETTING_H
-#define _SAYRAMMAIN_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-/* NOTE:
-for 2 exp setting, VCID of LE/SE should be 0x00 and 0x02
-which align 3 exp setting LE/NE/SE 0x00, 0x01, 0x02
-to seamless switch, VC ID of SE should remain the same
-SONY sensor: VCID of 2nd frame at 0x3070; VCID of 3rd frame at 0x3080
-must be two different value */
-
-static u16 sayrammain_init_setting[] = {
-	0x0136, 0x18,
-	0x0137, 0x00,
-	0x3304, 0x00,
-	0x33F0, 0x06,
-	0x33F1, 0x06,
-	0x0111, 0x03,
-	0x0808, 0x02,
-	0x4815, 0x0F,
-	0x614D, 0x00,
-	0x614F, 0x00,
-	0x6188, 0x09,
-	0x6189, 0x09,
-	0x6190, 0x09,
-	0x6191, 0x09,
-	0x6356, 0x13,
-	0x6358, 0x13,
-	0x6366, 0x13,
-	0x6367, 0x13,
-	0x90E7, 0x01,
-	0x9200, 0x90,
-	0x9202, 0xD4,
-	0x9203, 0xDA,
-	0x9204, 0x90,
-	0x9206, 0xD4,
-	0x9207, 0xD7,
-	0x9208, 0x90,
-	0x920A, 0x7A,
-	0x920B, 0x96,
-	0xA3F8, 0x0C,
-	0xA429, 0x40,
-	0xB148, 0x01,
-	0xB149, 0x61,
-	0xB14A, 0x01,
-	0xB14B, 0xDF,
-	0xB14C, 0x02,
-	0xB14D, 0xD0,
-	0xB14E, 0x01,
-	0xB14F, 0x61,
-	0xB150, 0x01,
-	0xB151, 0xDF,
-	0xB152, 0x02,
-	0xB153, 0xD0,
-	0xB154, 0x01,
-	0xB155, 0x61,
-	0xB156, 0x01,
-	0xB157, 0xDF,
-	0xB158, 0x02,
-	0xB159, 0xD0,
-	0xB15A, 0x01,
-	0xB15B, 0x61,
-	0xB15C, 0x01,
-	0xB15D, 0xDF,
-	0xB15E, 0x02,
-	0xB15F, 0xD0,
-	0x2433, 0x01,
-	0xD566, 0x13,
-	0xD567, 0x13,
-	0xD556, 0x13,
-	0xD558, 0x13,
-	0x2433, 0x00,
-	/*EBD Setting*/
-	0x3870, 0x00,
-	/* add for ois return center */
-	0x3228, 0x01,
-	/* disable deep sleep */
-	0x306D, 0x00,
-	/* fast mode transition in lbmf */
-	0x31A7, 0x04,
-};
-
-/* Reg_B4-S4 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-static u16 sayrammain_preview_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/* Reg_B4-S4 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-static u16 sayrammain_capture_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B2-S2 4096x2304_30FPS*/
-static u16 sayrammain_normal_video_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x52,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/* B3-1 4096x2304_60FPS */
-static u16 sayrammain_hs_video_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xD2,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x19,
-	0x0850, 0x00,
-	0x0851, 0x15,
-	0x0852, 0x00,
-	0x0853, 0x29,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* G2 4096x2304 @60FPS QBIN DCG-HDR RAW12 w/ Partial-PD VB_max*/
-static u16 sayrammain_slim_video_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0C,
-	0x0113, 0x0C,
-	0x0114, 0x02,
-	0x319A, 0x0C,
-	0x319B, 0x0C,
-	0x3239, 0x01,
-	/*Line Length PCK Setting*/
-	0x0342, 0x18,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x46,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x16,
-	0x0341, 0x52,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x02,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x19,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x01,
-	/*Flicker Setting*/
-	0x3107, 0x01,
-	0x3268, 0x03,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x02,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x0F,
-	0x0850, 0x00,
-	0x0851, 0x0D,
-	0x0852, 0x00,
-	0x0853, 0x19,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* V1 QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-static u16 sayrammain_custom1_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x15,
-	0x0343, 0x60,
-	0x3750, 0x00,
-	0x3751, 0x3C,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x06,
-	0x0341, 0x80,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x02,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	/*Output Size Setting*/
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x5B,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x14,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-static u16 sayrammain_custom2_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x24,
-	0x0341, 0xD8,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* F2-S1 8192x6144_30FPS bayer*/
-static u16 sayrammain_custom3_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*L1-S1 QBIN(VBIN) 4096x3072_2-exp LBMF 30FPS with PDAF VB_max*/
-static u16 sayrammain_custom4_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0E,
-	0x0E29, 0xBC,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0E,
-	0x0E59, 0xBC,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* F1-S1 QRMSC_4096x3072_30FPS for izoom--bayer */
-static u16 sayrammain_custom5_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x40,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* V2 QBIN-V2H2 FHD 2048x1152_480FPS*/
-static u16 sayrammain_custom6_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x0D,
-	0x0343, 0xC0,
-	0x3750, 0x00,
-	0x3751, 0x27,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x05,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x02,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	/*Output Size Setting*/
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xFA,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x01,
-	0x37A9, 0x2C,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x01,
-	0x37AB, 0x2C,
-	0x37D0, 0x00,
-	0x37D1, 0x3C,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1B,
-	0x0850, 0x00,
-	0x0851, 0x17,
-	0x0852, 0x00,
-	0x0853, 0x2D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*L2-S1 Izoom 2exp-LBMF 4096x3072 @30FPS bayer w/ PDAF VB_max*/
-static u16 sayrammain_custom7_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0C,
-	0x0E29, 0x80,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0C,
-	0x0E59, 0x80,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*B4 4096x3072 @60FPS QBIN(VBIN) with PDAF VB_max*/
-static u16 sayrammain_custom8_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x52,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*G1-S2 4096x2304 30FPS DCG AP Merge*/
-static u16 sayrammain_custom9_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x27,
-	0x0343, 0x90,
-	0x3750, 0x00,
-	0x3751, 0x6F,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1C,
-	0x0341, 0x26,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x52,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0xC4,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x18,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x38,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x02,
-	0x3A01, 0xB6,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x03,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x02,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-	/* add for OB Unstable */
-	0x3AC0, 0xCD,
-	0x3AC4, 0xCD,
-	0x3AC8, 0xCD,
-	0x3ACC, 0xCD,
-};
-
-/* G3 4096x2304 60FPS DCG AP Merge */
-static u16 sayrammain_custom10_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x18,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x46,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x16,
-	0x0341, 0x52,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xD2,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x03,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x02,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x19,
-	0x0850, 0x00,
-	0x0851, 0x15,
-	0x0852, 0x00,
-	0x0853, 0x29,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B8-S3 1856X1392,30.1fps,2X2Binning_Crop,w/All-PD(VBin) */
-static u16 sayrammain_custom11_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x4B,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0xD4,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0E,
-	0x0341, 0xB0,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x80,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0x7F,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x04,
-	0x0409, 0x60,
-	0x040A, 0x00,
-	0x040B, 0x08,
-	0x040C, 0x07,
-	0x040D, 0x40,
-	0x040E, 0x05,
-	0x040F, 0x70,
-	/*Output Size Setting*/
-	0x034C, 0x07,
-	0x034D, 0x40,
-	0x034E, 0x05,
-	0x034F, 0x70,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x18,
-	0x37D2, 0x01,
-	0x37D3, 0x18,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*F3-S1 8192X6144,30fps,Full-Raw,w/All-PD(VBin),ForVB_Max*/
-static u16 sayrammain_custom12_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*not use B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-static u16 sayrammain_custom13_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x24,
-	0x0341, 0xD8,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* F1-S1 4096x3072 30FPS izoom - Qbayer*/
-static u16 sayrammain_custom14_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x40,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*not use V1 QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-static u16 sayrammain_custom15_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x15,
-	0x0343, 0x60,
-	0x3750, 0x00,
-	0x3751, 0x3C,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x06,
-	0x0341, 0x80,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x02,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	/*Output Size Setting*/
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x5B,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x14,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B5 4096x2304 @120FPS QBIN Partial-PD VB_max*/
-static u16 sayrammain_custom16_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x16,
-	0x0343, 0x50,
-	0x3750, 0x00,
-	0x3751, 0x3F,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xF8,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1B,
-	0x0850, 0x00,
-	0x0851, 0x17,
-	0x0852, 0x00,
-	0x0853, 0x2D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* G4 4096x3072 30FPS DCG AP Merge */
-static u16 sayrammain_custom17_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x27,
-	0x0343, 0x90,
-	0x3750, 0x00,
-	0x3751, 0x6F,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1C,
-	0x0341, 0x26,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x02,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0xA4,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x00,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x03,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x02,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*F4-S3 Izoom 2exp-LBMF 4096x3072 @24FPS w/ PDAF VB_max*/
-static u16 sayrammain_custom18_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0F,
-	0x0E29, 0xA0,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0F,
-	0x0E59, 0xA0,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*L3-S3 4096X3072,24fps,2X2Binning_2exp_LB-MF,w/All-PD(VBin),For RST(9-16ms)*/
-static u16 sayrammain_custom19_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x12,
-	0x0E29, 0x6C,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x12,
-	0x0E59, 0x6C,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 sayrammain_seamless_preview[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x00,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 sayrammain_seamless_capture[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x00,
-};
-
-/*B2-S2/mode2 G1-S2/mode13*/
-static u16 sayrammain_seamless_normal_video[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x3104, 0x01,
-	0x3879, 0x00,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B3-1/mode3 G3/mode14*/
-static u16 sayrammain_seamless_hs_video_setting[] = {
-	0x0342, 0x25,
-	0x3751, 0x6A,
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x3213, 0x01,
-	0x37A1, 0x82,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	0x3878, 0x00,
-};
-
-/*B6-S3/mode6 F4-S3/mode22 L3-S3/mode23*/
-static u16 sayrammain_seamless_custom2[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x24,
-	0x0341, 0xD8,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x00,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 sayrammain_seamless_custom3[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x19,
-	0x0341, 0x00,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x20,
-	0x040E, 0x18,
-	0x034C, 0x20,
-	0x034E, 0x18,
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x00,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 sayrammain_seamless_custom4[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0E,
-	0x0E29, 0xBC,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0E,
-	0x0E59, 0xBC,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 sayrammain_seamless_custom5[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x19,
-	0x0341, 0x00,
-	0x0344, 0x08,
-	0x0346, 0x06,
-	0x0348, 0x17,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x40,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x00,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 sayrammain_seamless_custom7[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0344, 0x00,
-	0x0346, 0x06,
-	0x0348, 0x1F,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0C,
-	0x0E29, 0x80,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0C,
-	0x0E59, 0x80,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B2-S2/mode2 G1-S2/mode13*/
-static u16 sayrammain_seamless_custom9[] = {
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x0342, 0x27,
-	0x0343, 0x90,
-	0x3751, 0x6F,
-	0x0340, 0x1C,
-	0x0341, 0x26,
-	0x37D1, 0x00,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x3104, 0x03,
-	0x3879, 0x02,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B3-1/mode3 G3/mode14*/
-static u16 sayrammain_seamless_custom10[] = {
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x0342, 0x18,
-	0x3751, 0x46,
-	0x0340, 0x16,
-	0x0341, 0x52,
-	0x3005, 0x06,
-	0x3148, 0x00,
-	0x3213, 0x00,
-	0x37A1, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x3104, 0x00,
-	0x3103, 0x03,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3878, 0x02,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 sayrammain_seamless_custom12[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x19,
-	0x0341, 0x00,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x20,
-	0x040E, 0x18,
-	0x034C, 0x20,
-	0x034E, 0x18,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x00,
-};
-
-/*B6-S3/mode6 F4-S3/mode22 L3-S3/mode23*/
-static u16 sayrammain_seamless_custom18[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0346, 0x06,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0F,
-	0x0E29, 0xA0,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0F,
-	0x0E59, 0xA0,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B6-S3/mode6 F4-S3/mode22 L3-S3/mode23*/
-static u16 sayrammain_seamless_custom19[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x12,
-	0x0E29, 0x6C,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x12,
-	0x0E59, 0x6C,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-#endif /* _SAYRAMMAIN_SENSOR_SETTING_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammain_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammain_ana_gain_table.h
deleted file mode 100755
index a5cfbb6b..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammain_ana_gain_table.h
+++ /dev/null
@@ -1,3906 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 sayrammain_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __SAYRAMMAIN_ANA_GAIN_TABLE_H__
-#define __SAYRAMMAIN_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 sayrammain_ana_gain_table[] = {
-	1024,
-	1025,
-	1026,
-	1027,
-	1028,
-	1029,
-	1030,
-	1031,
-	1032,
-	1033,
-	1034,
-	1035,
-	1036,
-	1037,
-	1038,
-	1039,
-	1040,
-	1041,
-	1042,
-	1043,
-	1044,
-	1045,
-	1046,
-	1047,
-	1048,
-	1049,
-	1050,
-	1051,
-	1052,
-	1053,
-	1054,
-	1055,
-	1056,
-	1057,
-	1058,
-	1059,
-	1060,
-	1061,
-	1062,
-	1063,
-	1064,
-	1065,
-	1066,
-	1067,
-	1068,
-	1069,
-	1070,
-	1071,
-	1072,
-	1073,
-	1074,
-	1075,
-	1076,
-	1077,
-	1078,
-	1079,
-	1080,
-	1081,
-	1082,
-	1083,
-	1084,
-	1085,
-	1086,
-	1087,
-	1088,
-	1089,
-	1090,
-	1091,
-	1092,
-	1093,
-	1094,
-	1095,
-	1096,
-	1097,
-	1098,
-	1099,
-	1100,
-	1101,
-	1102,
-	1103,
-	1104,
-	1105,
-	1106,
-	1107,
-	1108,
-	1109,
-	1110,
-	1111,
-	1112,
-	1113,
-	1114,
-	1115,
-	1116,
-	1117,
-	1118,
-	1119,
-	1120,
-	1121,
-	1122,
-	1123,
-	1124,
-	1125,
-	1126,
-	1127,
-	1128,
-	1129,
-	1130,
-	1131,
-	1132,
-	1133,
-	1134,
-	1135,
-	1136,
-	1137,
-	1138,
-	1139,
-	1140,
-	1141,
-	1142,
-	1143,
-	1144,
-	1145,
-	1146,
-	1147,
-	1148,
-	1149,
-	1150,
-	1151,
-	1152,
-	1153,
-	1154,
-	1155,
-	1156,
-	1157,
-	1158,
-	1159,
-	1160,
-	1161,
-	1162,
-	1163,
-	1164,
-	1165,
-	1166,
-	1167,
-	1168,
-	1169,
-	1170,
-	1171,
-	1172,
-	1173,
-	1174,
-	1175,
-	1176,
-	1177,
-	1178,
-	1179,
-	1180,
-	1181,
-	1182,
-	1183,
-	1184,
-	1185,
-	1186,
-	1187,
-	1188,
-	1189,
-	1190,
-	1191,
-	1192,
-	1193,
-	1194,
-	1195,
-	1196,
-	1197,
-	1198,
-	1199,
-	1200,
-	1201,
-	1202,
-	1203,
-	1204,
-	1205,
-	1206,
-	1207,
-	1208,
-	1209,
-	1210,
-	1211,
-	1212,
-	1213,
-	1214,
-	1215,
-	1216,
-	1217,
-	1218,
-	1219,
-	1220,
-	1221,
-	1222,
-	1223,
-	1224,
-	1225,
-	1226,
-	1227,
-	1228,
-	1229,
-	1230,
-	1231,
-	1232,
-	1233,
-	1234,
-	1235,
-	1236,
-	1237,
-	1238,
-	1239,
-	1240,
-	1241,
-	1242,
-	1243,
-	1244,
-	1245,
-	1246,
-	1247,
-	1248,
-	1249,
-	1250,
-	1251,
-	1252,
-	1253,
-	1254,
-	1255,
-	1256,
-	1257,
-	1258,
-	1259,
-	1260,
-	1261,
-	1262,
-	1263,
-	1264,
-	1265,
-	1266,
-	1267,
-	1268,
-	1269,
-	1270,
-	1271,
-	1272,
-	1273,
-	1274,
-	1275,
-	1276,
-	1277,
-	1278,
-	1279,
-	1280,
-	1281,
-	1282,
-	1283,
-	1284,
-	1285,
-	1286,
-	1287,
-	1288,
-	1289,
-	1290,
-	1291,
-	1292,
-	1293,
-	1294,
-	1295,
-	1296,
-	1297,
-	1298,
-	1299,
-	1300,
-	1301,
-	1302,
-	1303,
-	1304,
-	1305,
-	1306,
-	1307,
-	1308,
-	1309,
-	1310,
-	1311,
-	1312,
-	1313,
-	1314,
-	1315,
-	1316,
-	1317,
-	1318,
-	1319,
-	1320,
-	1321,
-	1322,
-	1323,
-	1324,
-	1325,
-	1326,
-	1327,
-	1328,
-	1329,
-	1330,
-	1331,
-	1332,
-	1333,
-	1334,
-	1335,
-	1336,
-	1337,
-	1338,
-	1339,
-	1340,
-	1341,
-	1342,
-	1343,
-	1344,
-	1345,
-	1346,
-	1347,
-	1348,
-	1349,
-	1350,
-	1351,
-	1352,
-	1353,
-	1354,
-	1355,
-	1356,
-	1357,
-	1358,
-	1359,
-	1360,
-	1361,
-	1362,
-	1363,
-	1364,
-	1365,
-	1366,
-	1367,
-	1368,
-	1369,
-	1370,
-	1371,
-	1372,
-	1373,
-	1374,
-	1375,
-	1376,
-	1377,
-	1378,
-	1379,
-	1380,
-	1381,
-	1382,
-	1383,
-	1384,
-	1385,
-	1386,
-	1387,
-	1388,
-	1389,
-	1390,
-	1391,
-	1392,
-	1393,
-	1394,
-	1395,
-	1396,
-	1397,
-	1398,
-	1399,
-	1400,
-	1401,
-	1402,
-	1403,
-	1404,
-	1405,
-	1406,
-	1407,
-	1408,
-	1409,
-	1410,
-	1411,
-	1412,
-	1413,
-	1414,
-	1415,
-	1416,
-	1417,
-	1418,
-	1419,
-	1420,
-	1421,
-	1422,
-	1423,
-	1424,
-	1425,
-	1426,
-	1427,
-	1428,
-	1429,
-	1430,
-	1431,
-	1432,
-	1433,
-	1434,
-	1435,
-	1436,
-	1437,
-	1438,
-	1439,
-	1440,
-	1441,
-	1442,
-	1443,
-	1444,
-	1445,
-	1446,
-	1447,
-	1448,
-	1449,
-	1450,
-	1451,
-	1452,
-	1453,
-	1454,
-	1455,
-	1456,
-	1457,
-	1458,
-	1459,
-	1460,
-	1461,
-	1462,
-	1463,
-	1464,
-	1465,
-	1466,
-	1467,
-	1468,
-	1469,
-	1470,
-	1471,
-	1472,
-	1473,
-	1474,
-	1475,
-	1476,
-	1477,
-	1478,
-	1479,
-	1480,
-	1481,
-	1482,
-	1483,
-	1484,
-	1485,
-	1486,
-	1487,
-	1488,
-	1489,
-	1490,
-	1491,
-	1492,
-	1493,
-	1494,
-	1495,
-	1496,
-	1497,
-	1498,
-	1499,
-	1500,
-	1501,
-	1502,
-	1503,
-	1504,
-	1505,
-	1506,
-	1507,
-	1508,
-	1509,
-	1510,
-	1511,
-	1512,
-	1513,
-	1514,
-	1515,
-	1516,
-	1517,
-	1518,
-	1519,
-	1520,
-	1521,
-	1522,
-	1523,
-	1524,
-	1525,
-	1526,
-	1527,
-	1528,
-	1529,
-	1530,
-	1531,
-	1532,
-	1533,
-	1534,
-	1535,
-	1536,
-	1537,
-	1538,
-	1539,
-	1540,
-	1541,
-	1542,
-	1543,
-	1544,
-	1545,
-	1546,
-	1547,
-	1548,
-	1549,
-	1550,
-	1551,
-	1552,
-	1553,
-	1554,
-	1555,
-	1556,
-	1557,
-	1558,
-	1559,
-	1560,
-	1561,
-	1562,
-	1563,
-	1564,
-	1565,
-	1566,
-	1567,
-	1568,
-	1569,
-	1570,
-	1571,
-	1572,
-	1573,
-	1574,
-	1575,
-	1576,
-	1577,
-	1578,
-	1579,
-	1580,
-	1581,
-	1582,
-	1583,
-	1584,
-	1585,
-	1586,
-	1587,
-	1588,
-	1589,
-	1590,
-	1591,
-	1592,
-	1593,
-	1594,
-	1595,
-	1596,
-	1597,
-	1598,
-	1599,
-	1600,
-	1601,
-	1602,
-	1603,
-	1604,
-	1605,
-	1606,
-	1607,
-	1608,
-	1609,
-	1610,
-	1611,
-	1612,
-	1613,
-	1614,
-	1615,
-	1616,
-	1617,
-	1618,
-	1619,
-	1620,
-	1621,
-	1622,
-	1623,
-	1624,
-	1625,
-	1626,
-	1627,
-	1628,
-	1629,
-	1630,
-	1631,
-	1632,
-	1633,
-	1634,
-	1635,
-	1636,
-	1637,
-	1638,
-	1639,
-	1640,
-	1641,
-	1642,
-	1643,
-	1644,
-	1645,
-	1646,
-	1647,
-	1648,
-	1649,
-	1650,
-	1651,
-	1652,
-	1653,
-	1654,
-	1655,
-	1656,
-	1657,
-	1658,
-	1659,
-	1660,
-	1661,
-	1662,
-	1663,
-	1664,
-	1665,
-	1666,
-	1667,
-	1668,
-	1669,
-	1670,
-	1671,
-	1672,
-	1673,
-	1674,
-	1675,
-	1676,
-	1677,
-	1678,
-	1679,
-	1680,
-	1681,
-	1682,
-	1683,
-	1684,
-	1685,
-	1686,
-	1687,
-	1688,
-	1689,
-	1690,
-	1691,
-	1692,
-	1693,
-	1694,
-	1695,
-	1696,
-	1697,
-	1698,
-	1699,
-	1700,
-	1701,
-	1702,
-	1703,
-	1704,
-	1705,
-	1706,
-	1707,
-	1708,
-	1709,
-	1710,
-	1711,
-	1712,
-	1713,
-	1714,
-	1715,
-	1716,
-	1717,
-	1718,
-	1719,
-	1720,
-	1721,
-	1722,
-	1723,
-	1724,
-	1725,
-	1726,
-	1727,
-	1728,
-	1729,
-	1730,
-	1731,
-	1732,
-	1733,
-	1734,
-	1735,
-	1736,
-	1737,
-	1738,
-	1739,
-	1740,
-	1741,
-	1742,
-	1743,
-	1744,
-	1745,
-	1746,
-	1747,
-	1748,
-	1749,
-	1750,
-	1751,
-	1752,
-	1753,
-	1754,
-	1755,
-	1756,
-	1757,
-	1758,
-	1759,
-	1760,
-	1761,
-	1762,
-	1763,
-	1764,
-	1765,
-	1766,
-	1767,
-	1768,
-	1769,
-	1770,
-	1771,
-	1772,
-	1773,
-	1774,
-	1775,
-	1776,
-	1777,
-	1778,
-	1779,
-	1780,
-	1781,
-	1782,
-	1783,
-	1784,
-	1785,
-	1786,
-	1787,
-	1788,
-	1789,
-	1790,
-	1791,
-	1792,
-	1793,
-	1794,
-	1795,
-	1796,
-	1797,
-	1798,
-	1799,
-	1800,
-	1801,
-	1802,
-	1803,
-	1804,
-	1805,
-	1806,
-	1807,
-	1808,
-	1809,
-	1810,
-	1811,
-	1812,
-	1813,
-	1814,
-	1815,
-	1816,
-	1817,
-	1818,
-	1819,
-	1820,
-	1821,
-	1822,
-	1823,
-	1824,
-	1825,
-	1826,
-	1827,
-	1828,
-	1829,
-	1830,
-	1831,
-	1832,
-	1833,
-	1834,
-	1835,
-	1836,
-	1837,
-	1838,
-	1839,
-	1840,
-	1841,
-	1842,
-	1843,
-	1844,
-	1845,
-	1846,
-	1847,
-	1848,
-	1849,
-	1850,
-	1851,
-	1852,
-	1853,
-	1854,
-	1855,
-	1856,
-	1857,
-	1858,
-	1859,
-	1860,
-	1861,
-	1862,
-	1863,
-	1864,
-	1865,
-	1866,
-	1867,
-	1868,
-	1869,
-	1870,
-	1871,
-	1872,
-	1873,
-	1874,
-	1875,
-	1876,
-	1877,
-	1878,
-	1879,
-	1880,
-	1881,
-	1882,
-	1883,
-	1884,
-	1885,
-	1886,
-	1887,
-	1888,
-	1889,
-	1890,
-	1891,
-	1892,
-	1893,
-	1894,
-	1895,
-	1896,
-	1897,
-	1898,
-	1899,
-	1900,
-	1901,
-	1902,
-	1903,
-	1904,
-	1905,
-	1906,
-	1907,
-	1908,
-	1909,
-	1910,
-	1911,
-	1912,
-	1913,
-	1914,
-	1915,
-	1916,
-	1917,
-	1918,
-	1919,
-	1920,
-	1921,
-	1922,
-	1923,
-	1924,
-	1925,
-	1926,
-	1927,
-	1928,
-	1929,
-	1930,
-	1931,
-	1932,
-	1933,
-	1934,
-	1935,
-	1936,
-	1937,
-	1938,
-	1939,
-	1940,
-	1941,
-	1942,
-	1943,
-	1944,
-	1945,
-	1946,
-	1947,
-	1948,
-	1949,
-	1950,
-	1951,
-	1952,
-	1953,
-	1954,
-	1955,
-	1956,
-	1957,
-	1958,
-	1959,
-	1960,
-	1961,
-	1962,
-	1963,
-	1964,
-	1965,
-	1966,
-	1967,
-	1968,
-	1969,
-	1970,
-	1971,
-	1972,
-	1973,
-	1974,
-	1975,
-	1976,
-	1977,
-	1978,
-	1979,
-	1980,
-	1981,
-	1982,
-	1983,
-	1984,
-	1985,
-	1986,
-	1987,
-	1988,
-	1989,
-	1990,
-	1991,
-	1992,
-	1993,
-	1994,
-	1995,
-	1996,
-	1997,
-	1998,
-	1999,
-	2000,
-	2001,
-	2002,
-	2003,
-	2004,
-	2005,
-	2006,
-	2007,
-	2008,
-	2009,
-	2010,
-	2011,
-	2012,
-	2013,
-	2014,
-	2015,
-	2016,
-	2017,
-	2018,
-	2019,
-	2020,
-	2021,
-	2022,
-	2023,
-	2024,
-	2025,
-	2026,
-	2027,
-	2028,
-	2029,
-	2030,
-	2031,
-	2032,
-	2033,
-	2034,
-	2035,
-	2036,
-	2037,
-	2038,
-	2039,
-	2040,
-	2041,
-	2042,
-	2043,
-	2044,
-	2045,
-	2046,
-	2047,
-	2048,
-	2049,
-	2050,
-	2051,
-	2052,
-	2053,
-	2054,
-	2055,
-	2056,
-	2057,
-	2058,
-	2059,
-	2060,
-	2061,
-	2062,
-	2063,
-	2064,
-	2065,
-	2066,
-	2067,
-	2068,
-	2069,
-	2070,
-	2071,
-	2072,
-	2073,
-	2074,
-	2075,
-	2076,
-	2077,
-	2078,
-	2079,
-	2080,
-	2081,
-	2082,
-	2083,
-	2084,
-	2085,
-	2086,
-	2087,
-	2088,
-	2089,
-	2090,
-	2091,
-	2092,
-	2094,
-	2095,
-	2096,
-	2097,
-	2098,
-	2099,
-	2100,
-	2101,
-	2102,
-	2103,
-	2104,
-	2105,
-	2106,
-	2107,
-	2108,
-	2109,
-	2110,
-	2111,
-	2112,
-	2114,
-	2115,
-	2116,
-	2117,
-	2118,
-	2119,
-	2120,
-	2121,
-	2122,
-	2123,
-	2124,
-	2125,
-	2126,
-	2128,
-	2129,
-	2130,
-	2131,
-	2132,
-	2133,
-	2134,
-	2135,
-	2136,
-	2137,
-	2138,
-	2139,
-	2141,
-	2142,
-	2143,
-	2144,
-	2145,
-	2146,
-	2147,
-	2148,
-	2149,
-	2150,
-	2152,
-	2153,
-	2154,
-	2155,
-	2156,
-	2157,
-	2158,
-	2159,
-	2160,
-	2162,
-	2163,
-	2164,
-	2165,
-	2166,
-	2167,
-	2168,
-	2169,
-	2170,
-	2172,
-	2173,
-	2174,
-	2175,
-	2176,
-	2177,
-	2178,
-	2179,
-	2181,
-	2182,
-	2183,
-	2184,
-	2185,
-	2186,
-	2187,
-	2189,
-	2190,
-	2191,
-	2192,
-	2193,
-	2194,
-	2195,
-	2197,
-	2198,
-	2199,
-	2200,
-	2201,
-	2202,
-	2204,
-	2205,
-	2206,
-	2207,
-	2208,
-	2209,
-	2211,
-	2212,
-	2213,
-	2214,
-	2215,
-	2216,
-	2218,
-	2219,
-	2220,
-	2221,
-	2222,
-	2223,
-	2225,
-	2226,
-	2227,
-	2228,
-	2229,
-	2231,
-	2232,
-	2233,
-	2234,
-	2235,
-	2236,
-	2238,
-	2239,
-	2240,
-	2241,
-	2242,
-	2244,
-	2245,
-	2246,
-	2247,
-	2248,
-	2250,
-	2251,
-	2252,
-	2253,
-	2255,
-	2256,
-	2257,
-	2258,
-	2259,
-	2261,
-	2262,
-	2263,
-	2264,
-	2265,
-	2267,
-	2268,
-	2269,
-	2270,
-	2272,
-	2273,
-	2274,
-	2275,
-	2277,
-	2278,
-	2279,
-	2280,
-	2281,
-	2283,
-	2284,
-	2285,
-	2286,
-	2288,
-	2289,
-	2290,
-	2291,
-	2293,
-	2294,
-	2295,
-	2296,
-	2298,
-	2299,
-	2300,
-	2302,
-	2303,
-	2304,
-	2305,
-	2307,
-	2308,
-	2309,
-	2310,
-	2312,
-	2313,
-	2314,
-	2316,
-	2317,
-	2318,
-	2319,
-	2321,
-	2322,
-	2323,
-	2325,
-	2326,
-	2327,
-	2328,
-	2330,
-	2331,
-	2332,
-	2334,
-	2335,
-	2336,
-	2337,
-	2339,
-	2340,
-	2341,
-	2343,
-	2344,
-	2345,
-	2347,
-	2348,
-	2349,
-	2351,
-	2352,
-	2353,
-	2355,
-	2356,
-	2357,
-	2359,
-	2360,
-	2361,
-	2362,
-	2364,
-	2365,
-	2366,
-	2368,
-	2369,
-	2371,
-	2372,
-	2373,
-	2375,
-	2376,
-	2377,
-	2379,
-	2380,
-	2381,
-	2383,
-	2384,
-	2385,
-	2387,
-	2388,
-	2389,
-	2391,
-	2392,
-	2394,
-	2395,
-	2396,
-	2398,
-	2399,
-	2400,
-	2402,
-	2403,
-	2404,
-	2406,
-	2407,
-	2409,
-	2410,
-	2411,
-	2413,
-	2414,
-	2416,
-	2417,
-	2418,
-	2420,
-	2421,
-	2423,
-	2424,
-	2425,
-	2427,
-	2428,
-	2430,
-	2431,
-	2432,
-	2434,
-	2435,
-	2437,
-	2438,
-	2439,
-	2441,
-	2442,
-	2444,
-	2445,
-	2447,
-	2448,
-	2449,
-	2451,
-	2452,
-	2454,
-	2455,
-	2457,
-	2458,
-	2460,
-	2461,
-	2462,
-	2464,
-	2465,
-	2467,
-	2468,
-	2470,
-	2471,
-	2473,
-	2474,
-	2475,
-	2477,
-	2478,
-	2480,
-	2481,
-	2483,
-	2484,
-	2486,
-	2487,
-	2489,
-	2490,
-	2492,
-	2493,
-	2495,
-	2496,
-	2498,
-	2499,
-	2501,
-	2502,
-	2504,
-	2505,
-	2507,
-	2508,
-	2510,
-	2511,
-	2513,
-	2514,
-	2516,
-	2517,
-	2519,
-	2520,
-	2522,
-	2523,
-	2525,
-	2526,
-	2528,
-	2529,
-	2531,
-	2532,
-	2534,
-	2535,
-	2537,
-	2538,
-	2540,
-	2542,
-	2543,
-	2545,
-	2546,
-	2548,
-	2549,
-	2551,
-	2552,
-	2554,
-	2555,
-	2557,
-	2559,
-	2560,
-	2562,
-	2563,
-	2565,
-	2566,
-	2568,
-	2570,
-	2571,
-	2573,
-	2574,
-	2576,
-	2577,
-	2579,
-	2581,
-	2582,
-	2584,
-	2585,
-	2587,
-	2589,
-	2590,
-	2592,
-	2593,
-	2595,
-	2597,
-	2598,
-	2600,
-	2601,
-	2603,
-	2605,
-	2606,
-	2608,
-	2610,
-	2611,
-	2613,
-	2614,
-	2616,
-	2618,
-	2619,
-	2621,
-	2623,
-	2624,
-	2626,
-	2628,
-	2629,
-	2631,
-	2632,
-	2634,
-	2636,
-	2637,
-	2639,
-	2641,
-	2642,
-	2644,
-	2646,
-	2647,
-	2649,
-	2651,
-	2652,
-	2654,
-	2656,
-	2657,
-	2659,
-	2661,
-	2663,
-	2664,
-	2666,
-	2668,
-	2669,
-	2671,
-	2673,
-	2674,
-	2676,
-	2678,
-	2680,
-	2681,
-	2683,
-	2685,
-	2686,
-	2688,
-	2690,
-	2692,
-	2693,
-	2695,
-	2697,
-	2699,
-	2700,
-	2702,
-	2704,
-	2706,
-	2707,
-	2709,
-	2711,
-	2713,
-	2714,
-	2716,
-	2718,
-	2720,
-	2721,
-	2723,
-	2725,
-	2727,
-	2728,
-	2730,
-	2732,
-	2734,
-	2736,
-	2737,
-	2739,
-	2741,
-	2743,
-	2744,
-	2746,
-	2748,
-	2750,
-	2752,
-	2753,
-	2755,
-	2757,
-	2759,
-	2761,
-	2763,
-	2764,
-	2766,
-	2768,
-	2770,
-	2772,
-	2774,
-	2775,
-	2777,
-	2779,
-	2781,
-	2783,
-	2785,
-	2786,
-	2788,
-	2790,
-	2792,
-	2794,
-	2796,
-	2798,
-	2799,
-	2801,
-	2803,
-	2805,
-	2807,
-	2809,
-	2811,
-	2813,
-	2814,
-	2816,
-	2818,
-	2820,
-	2822,
-	2824,
-	2826,
-	2828,
-	2830,
-	2832,
-	2833,
-	2835,
-	2837,
-	2839,
-	2841,
-	2843,
-	2845,
-	2847,
-	2849,
-	2851,
-	2853,
-	2855,
-	2857,
-	2859,
-	2861,
-	2863,
-	2864,
-	2866,
-	2868,
-	2870,
-	2872,
-	2874,
-	2876,
-	2878,
-	2880,
-	2882,
-	2884,
-	2886,
-	2888,
-	2890,
-	2892,
-	2894,
-	2896,
-	2898,
-	2900,
-	2902,
-	2904,
-	2906,
-	2908,
-	2910,
-	2912,
-	2914,
-	2916,
-	2918,
-	2920,
-	2922,
-	2924,
-	2926,
-	2928,
-	2931,
-	2933,
-	2935,
-	2937,
-	2939,
-	2941,
-	2943,
-	2945,
-	2947,
-	2949,
-	2951,
-	2953,
-	2955,
-	2957,
-	2959,
-	2962,
-	2964,
-	2966,
-	2968,
-	2970,
-	2972,
-	2974,
-	2976,
-	2978,
-	2981,
-	2983,
-	2985,
-	2987,
-	2989,
-	2991,
-	2993,
-	2995,
-	2998,
-	3000,
-	3002,
-	3004,
-	3006,
-	3008,
-	3010,
-	3013,
-	3015,
-	3017,
-	3019,
-	3021,
-	3024,
-	3026,
-	3028,
-	3030,
-	3032,
-	3034,
-	3037,
-	3039,
-	3041,
-	3043,
-	3045,
-	3048,
-	3050,
-	3052,
-	3054,
-	3057,
-	3059,
-	3061,
-	3063,
-	3066,
-	3068,
-	3070,
-	3072,
-	3075,
-	3077,
-	3079,
-	3081,
-	3084,
-	3086,
-	3088,
-	3090,
-	3093,
-	3095,
-	3097,
-	3100,
-	3102,
-	3104,
-	3106,
-	3109,
-	3111,
-	3113,
-	3116,
-	3118,
-	3120,
-	3123,
-	3125,
-	3127,
-	3130,
-	3132,
-	3134,
-	3137,
-	3139,
-	3141,
-	3144,
-	3146,
-	3148,
-	3151,
-	3153,
-	3155,
-	3158,
-	3160,
-	3163,
-	3165,
-	3167,
-	3170,
-	3172,
-	3175,
-	3177,
-	3179,
-	3182,
-	3184,
-	3187,
-	3189,
-	3192,
-	3194,
-	3196,
-	3199,
-	3201,
-	3204,
-	3206,
-	3209,
-	3211,
-	3214,
-	3216,
-	3218,
-	3221,
-	3223,
-	3226,
-	3228,
-	3231,
-	3233,
-	3236,
-	3238,
-	3241,
-	3243,
-	3246,
-	3248,
-	3251,
-	3253,
-	3256,
-	3258,
-	3261,
-	3264,
-	3266,
-	3269,
-	3271,
-	3274,
-	3276,
-	3279,
-	3281,
-	3284,
-	3287,
-	3289,
-	3292,
-	3294,
-	3297,
-	3300,
-	3302,
-	3305,
-	3307,
-	3310,
-	3313,
-	3315,
-	3318,
-	3320,
-	3323,
-	3326,
-	3328,
-	3331,
-	3334,
-	3336,
-	3339,
-	3342,
-	3344,
-	3347,
-	3350,
-	3352,
-	3355,
-	3358,
-	3360,
-	3363,
-	3366,
-	3368,
-	3371,
-	3374,
-	3377,
-	3379,
-	3382,
-	3385,
-	3387,
-	3390,
-	3393,
-	3396,
-	3398,
-	3401,
-	3404,
-	3407,
-	3410,
-	3412,
-	3415,
-	3418,
-	3421,
-	3423,
-	3426,
-	3429,
-	3432,
-	3435,
-	3437,
-	3440,
-	3443,
-	3446,
-	3449,
-	3452,
-	3454,
-	3457,
-	3460,
-	3463,
-	3466,
-	3469,
-	3472,
-	3474,
-	3477,
-	3480,
-	3483,
-	3486,
-	3489,
-	3492,
-	3495,
-	3498,
-	3501,
-	3504,
-	3506,
-	3509,
-	3512,
-	3515,
-	3518,
-	3521,
-	3524,
-	3527,
-	3530,
-	3533,
-	3536,
-	3539,
-	3542,
-	3545,
-	3548,
-	3551,
-	3554,
-	3557,
-	3560,
-	3563,
-	3566,
-	3569,
-	3572,
-	3575,
-	3578,
-	3581,
-	3584,
-	3587,
-	3591,
-	3594,
-	3597,
-	3600,
-	3603,
-	3606,
-	3609,
-	3612,
-	3615,
-	3618,
-	3622,
-	3625,
-	3628,
-	3631,
-	3634,
-	3637,
-	3640,
-	3644,
-	3647,
-	3650,
-	3653,
-	3656,
-	3659,
-	3663,
-	3666,
-	3669,
-	3672,
-	3675,
-	3679,
-	3682,
-	3685,
-	3688,
-	3692,
-	3695,
-	3698,
-	3701,
-	3705,
-	3708,
-	3711,
-	3715,
-	3718,
-	3721,
-	3724,
-	3728,
-	3731,
-	3734,
-	3738,
-	3741,
-	3744,
-	3748,
-	3751,
-	3754,
-	3758,
-	3761,
-	3765,
-	3768,
-	3771,
-	3775,
-	3778,
-	3782,
-	3785,
-	3788,
-	3792,
-	3795,
-	3799,
-	3802,
-	3806,
-	3809,
-	3813,
-	3816,
-	3819,
-	3823,
-	3826,
-	3830,
-	3833,
-	3837,
-	3840,
-	3844,
-	3847,
-	3851,
-	3855,
-	3858,
-	3862,
-	3865,
-	3869,
-	3872,
-	3876,
-	3880,
-	3883,
-	3887,
-	3890,
-	3894,
-	3898,
-	3901,
-	3905,
-	3908,
-	3912,
-	3916,
-	3919,
-	3923,
-	3927,
-	3930,
-	3934,
-	3938,
-	3942,
-	3945,
-	3949,
-	3953,
-	3956,
-	3960,
-	3964,
-	3968,
-	3971,
-	3975,
-	3979,
-	3983,
-	3986,
-	3990,
-	3994,
-	3998,
-	4002,
-	4006,
-	4009,
-	4013,
-	4017,
-	4021,
-	4025,
-	4029,
-	4032,
-	4036,
-	4040,
-	4044,
-	4048,
-	4052,
-	4056,
-	4060,
-	4064,
-	4068,
-	4072,
-	4076,
-	4080,
-	4084,
-	4088,
-	4092,
-	4096,
-	4100,
-	4104,
-	4108,
-	4112,
-	4116,
-	4120,
-	4124,
-	4128,
-	4132,
-	4136,
-	4140,
-	4144,
-	4148,
-	4152,
-	4156,
-	4161,
-	4165,
-	4169,
-	4173,
-	4177,
-	4181,
-	4185,
-	4190,
-	4194,
-	4198,
-	4202,
-	4206,
-	4211,
-	4215,
-	4219,
-	4223,
-	4228,
-	4232,
-	4236,
-	4240,
-	4245,
-	4249,
-	4253,
-	4258,
-	4262,
-	4266,
-	4271,
-	4275,
-	4279,
-	4284,
-	4288,
-	4293,
-	4297,
-	4301,
-	4306,
-	4310,
-	4315,
-	4319,
-	4324,
-	4328,
-	4332,
-	4337,
-	4341,
-	4346,
-	4350,
-	4355,
-	4359,
-	4364,
-	4369,
-	4373,
-	4378,
-	4382,
-	4387,
-	4391,
-	4396,
-	4401,
-	4405,
-	4410,
-	4415,
-	4419,
-	4424,
-	4429,
-	4433,
-	4438,
-	4443,
-	4447,
-	4452,
-	4457,
-	4462,
-	4466,
-	4471,
-	4476,
-	4481,
-	4485,
-	4490,
-	4495,
-	4500,
-	4505,
-	4510,
-	4514,
-	4519,
-	4524,
-	4529,
-	4534,
-	4539,
-	4544,
-	4549,
-	4554,
-	4559,
-	4563,
-	4568,
-	4573,
-	4578,
-	4583,
-	4588,
-	4593,
-	4599,
-	4604,
-	4609,
-	4614,
-	4619,
-	4624,
-	4629,
-	4634,
-	4639,
-	4644,
-	4650,
-	4655,
-	4660,
-	4665,
-	4670,
-	4675,
-	4681,
-	4686,
-	4691,
-	4696,
-	4702,
-	4707,
-	4712,
-	4718,
-	4723,
-	4728,
-	4733,
-	4739,
-	4744,
-	4750,
-	4755,
-	4760,
-	4766,
-	4771,
-	4777,
-	4782,
-	4788,
-	4793,
-	4798,
-	4804,
-	4809,
-	4815,
-	4821,
-	4826,
-	4832,
-	4837,
-	4843,
-	4848,
-	4854,
-	4860,
-	4865,
-	4871,
-	4877,
-	4882,
-	4888,
-	4894,
-	4899,
-	4905,
-	4911,
-	4917,
-	4922,
-	4928,
-	4934,
-	4940,
-	4946,
-	4951,
-	4957,
-	4963,
-	4969,
-	4975,
-	4981,
-	4987,
-	4993,
-	4999,
-	5005,
-	5011,
-	5017,
-	5023,
-	5029,
-	5035,
-	5041,
-	5047,
-	5053,
-	5059,
-	5065,
-	5071,
-	5077,
-	5084,
-	5090,
-	5096,
-	5102,
-	5108,
-	5115,
-	5121,
-	5127,
-	5133,
-	5140,
-	5146,
-	5152,
-	5159,
-	5165,
-	5171,
-	5178,
-	5184,
-	5190,
-	5197,
-	5203,
-	5210,
-	5216,
-	5223,
-	5229,
-	5236,
-	5242,
-	5249,
-	5256,
-	5262,
-	5269,
-	5275,
-	5282,
-	5289,
-	5295,
-	5302,
-	5309,
-	5315,
-	5322,
-	5329,
-	5336,
-	5343,
-	5349,
-	5356,
-	5363,
-	5370,
-	5377,
-	5384,
-	5391,
-	5398,
-	5405,
-	5412,
-	5418,
-	5426,
-	5433,
-	5440,
-	5447,
-	5454,
-	5461,
-	5468,
-	5475,
-	5482,
-	5489,
-	5497,
-	5504,
-	5511,
-	5518,
-	5526,
-	5533,
-	5540,
-	5548,
-	5555,
-	5562,
-	5570,
-	5577,
-	5584,
-	5592,
-	5599,
-	5607,
-	5614,
-	5622,
-	5629,
-	5637,
-	5645,
-	5652,
-	5660,
-	5667,
-	5675,
-	5683,
-	5691,
-	5698,
-	5706,
-	5714,
-	5722,
-	5729,
-	5737,
-	5745,
-	5753,
-	5761,
-	5769,
-	5777,
-	5785,
-	5793,
-	5801,
-	5809,
-	5817,
-	5825,
-	5833,
-	5841,
-	5849,
-	5857,
-	5866,
-	5874,
-	5882,
-	5890,
-	5899,
-	5907,
-	5915,
-	5924,
-	5932,
-	5940,
-	5949,
-	5957,
-	5966,
-	5974,
-	5983,
-	5991,
-	6000,
-	6009,
-	6017,
-	6026,
-	6034,
-	6043,
-	6052,
-	6061,
-	6069,
-	6078,
-	6087,
-	6096,
-	6105,
-	6114,
-	6123,
-	6132,
-	6141,
-	6150,
-	6159,
-	6168,
-	6177,
-	6186,
-	6195,
-	6204,
-	6213,
-	6223,
-	6232,
-	6241,
-	6250,
-	6260,
-	6269,
-	6278,
-	6288,
-	6297,
-	6307,
-	6316,
-	6326,
-	6335,
-	6345,
-	6355,
-	6364,
-	6374,
-	6384,
-	6393,
-	6403,
-	6413,
-	6423,
-	6432,
-	6442,
-	6452,
-	6462,
-	6472,
-	6482,
-	6492,
-	6502,
-	6512,
-	6523,
-	6533,
-	6543,
-	6553,
-	6563,
-	6574,
-	6584,
-	6594,
-	6605,
-	6615,
-	6626,
-	6636,
-	6647,
-	6657,
-	6668,
-	6678,
-	6689,
-	6700,
-	6710,
-	6721,
-	6732,
-	6743,
-	6754,
-	6765,
-	6775,
-	6786,
-	6797,
-	6808,
-	6820,
-	6831,
-	6842,
-	6853,
-	6864,
-	6875,
-	6887,
-	6898,
-	6909,
-	6921,
-	6932,
-	6944,
-	6955,
-	6967,
-	6978,
-	6990,
-	7002,
-	7013,
-	7025,
-	7037,
-	7049,
-	7061,
-	7073,
-	7084,
-	7096,
-	7108,
-	7121,
-	7133,
-	7145,
-	7157,
-	7169,
-	7182,
-	7194,
-	7206,
-	7219,
-	7231,
-	7244,
-	7256,
-	7269,
-	7281,
-	7294,
-	7307,
-	7319,
-	7332,
-	7345,
-	7358,
-	7371,
-	7384,
-	7397,
-	7410,
-	7423,
-	7436,
-	7449,
-	7463,
-	7476,
-	7489,
-	7503,
-	7516,
-	7530,
-	7543,
-	7557,
-	7570,
-	7584,
-	7598,
-	7612,
-	7626,
-	7639,
-	7653,
-	7667,
-	7681,
-	7695,
-	7710,
-	7724,
-	7738,
-	7752,
-	7767,
-	7781,
-	7796,
-	7810,
-	7825,
-	7839,
-	7854,
-	7869,
-	7884,
-	7898,
-	7913,
-	7928,
-	7943,
-	7958,
-	7973,
-	7989,
-	8004,
-	8019,
-	8035,
-	8050,
-	8065,
-	8081,
-	8097,
-	8112,
-	8128,
-	8144,
-	8160,
-	8176,
-	8192,
-	8208,
-	8224,
-	8240,
-	8256,
-	8272,
-	8289,
-	8305,
-	8322,
-	8338,
-	8355,
-	8371,
-	8388,
-	8405,
-	8422,
-	8439,
-	8456,
-	8473,
-	8490,
-	8507,
-	8525,
-	8542,
-	8559,
-	8577,
-	8594,
-	8612,
-	8630,
-	8648,
-	8665,
-	8683,
-	8701,
-	8719,
-	8738,
-	8756,
-	8774,
-	8793,
-	8811,
-	8830,
-	8848,
-	8867,
-	8886,
-	8905,
-	8924,
-	8943,
-	8962,
-	8981,
-	9000,
-	9020,
-	9039,
-	9058,
-	9078,
-	9098,
-	9118,
-	9137,
-	9157,
-	9177,
-	9198,
-	9218,
-	9238,
-	9258,
-	9279,
-	9300,
-	9320,
-	9341,
-	9362,
-	9383,
-	9404,
-	9425,
-	9446,
-	9467,
-	9489,
-	9510,
-	9532,
-	9554,
-	9576,
-	9597,
-	9619,
-	9642,
-	9664,
-	9686,
-	9709,
-	9731,
-	9754,
-	9776,
-	9799,
-	9822,
-	9845,
-	9868,
-	9892,
-	9915,
-	9939,
-	9962,
-	9986,
-	10010,
-	10034,
-	10058,
-	10082,
-	10106,
-	10131,
-	10155,
-	10180,
-	10205,
-	10230,
-	10255,
-	10280,
-	10305,
-	10330,
-	10356,
-	10381,
-	10407,
-	10433,
-	10459,
-	10485,
-	10512,
-	10538,
-	10564,
-	10591,
-	10618,
-	10645,
-	10672,
-	10699,
-	10727,
-	10754,
-	10782,
-	10810,
-	10837,
-	10866,
-	10894,
-	10922,
-	10951,
-	10979,
-	11008,
-	11037,
-	11066,
-	11096,
-	11125,
-	11155,
-	11184,
-	11214,
-	11244,
-	11275,
-	11305,
-	11335,
-	11366,
-	11397,
-	11428,
-	11459,
-	11491,
-	11522,
-	11554,
-	11586,
-	11618,
-	11650,
-	11683,
-	11715,
-	11748,
-	11781,
-	11814,
-	11848,
-	11881,
-	11915,
-	11949,
-	11983,
-	12018,
-	12052,
-	12087,
-	12122,
-	12157,
-	12192,
-	12228,
-	12264,
-	12300,
-	12336,
-	12372,
-	12409,
-	12446,
-	12483,
-	12520,
-	12557,
-	12595,
-	12633,
-	12671,
-	12710,
-	12748,
-	12787,
-	12826,
-	12865,
-	12905,
-	12945,
-	12985,
-	13025,
-	13066,
-	13107,
-	13148,
-	13189,
-	13231,
-	13273,
-	13315,
-	13357,
-	13400,
-	13443,
-	13486,
-	13530,
-	13573,
-	13617,
-	13662,
-	13706,
-	13751,
-	13797,
-	13842,
-	13888,
-	13934,
-	13981,
-	14027,
-	14074,
-	14122,
-	14169,
-	14217,
-	14266,
-	14315,
-	14364,
-	14413,
-	14463,
-	14513,
-	14563,
-	14614,
-	14665,
-	14716,
-	14768,
-	14820,
-	14873,
-	14926,
-	14979,
-	15033,
-	15087,
-	15141,
-	15196,
-	15252,
-	15307,
-	15363,
-	15420,
-	15477,
-	15534,
-	15592,
-	15650,
-	15709,
-	15768,
-	15827,
-	15887,
-	15947,
-	16008,
-	16070,
-	16131,
-	16194,
-	16256,
-	16320,
-	16384,
-	16448,
-	16513,
-	16578,
-	16644,
-	16710,
-	16777,
-	16844,
-	16912,
-	16980,
-	17050,
-	17119,
-	17189,
-	17260,
-	17331,
-	17403,
-	17476,
-	17549,
-	17623,
-	17697,
-	17772,
-	17848,
-	17924,
-	18001,
-	18078,
-	18157,
-	18236,
-	18315,
-	18396,
-	18477,
-	18558,
-	18641,
-	18724,
-	18808,
-	18893,
-	18978,
-	19065,
-	19152,
-	19239,
-	19328,
-	19418,
-	19508,
-	19599,
-	19691,
-	19784,
-	19878,
-	19972,
-	20068,
-	20164,
-	20262,
-	20360,
-	20460,
-	20560,
-	20661,
-	20763,
-	20867,
-	20971,
-	21076,
-	21183,
-	21290,
-	21399,
-	21509,
-	21620,
-	21732,
-	21845,
-	21959,
-	22075,
-	22192,
-	22310,
-	22429,
-	22550,
-	22671,
-	22795,
-	22919,
-	23045,
-	23172,
-	23301,
-	23431,
-	23563,
-	23696,
-	23831,
-	23967,
-	24105,
-	24244,
-	24385,
-	24528,
-	24672,
-	24818,
-	24966,
-	25115,
-	25266,
-	25420,
-	25575,
-	25731,
-	25890,
-	26051,
-	26214,
-	26379,
-	26546,
-	26715,
-	26886,
-	27060,
-	27235,
-	27413,
-	27594,
-	27776,
-	27962,
-	28149,
-	28339,
-	28532,
-	28728,
-	28926,
-	29127,
-	29330,
-	29537,
-	29746,
-	29959,
-	30174,
-	30393,
-	30615,
-	30840,
-	31068,
-	31300,
-	31536,
-	31775,
-	32017,
-	32263,
-	32513,
-	32768,
-	33026,
-	33288,
-	33554,
-	33825,
-	34100,
-	34379,
-	34663,
-	34952,
-	35246,
-	35544,
-	35848,
-	36157,
-	36472,
-	36792,
-	37117,
-	37449,
-	37786,
-	38130,
-	38479,
-	38836,
-	39199,
-	39568,
-	39945,
-	40329,
-	40721,
-	41120,
-	41527,
-	41943,
-	42366,
-	42799,
-	43240,
-	43690,
-	44150,
-	44620,
-	45100,
-	45590,
-	46091,
-	46603,
-	47127,
-	47662,
-	48210,
-	48770,
-	49344,
-	49932,
-	50533,
-	51150,
-	51781,
-	52428,
-	53092,
-	53773,
-	54471,
-	55188,
-	55924,
-	56679,
-	57456,
-	58254,
-	59074,
-	59918,
-	60787,
-	61680,
-	62601,
-	63550,
-	64527,
-	65536,
-};
-
-#define SAYRAMMAIN_GAIN_TABLE_SIZE 432
-static kal_uint32 sayrammain_gain_table[SAYRAMMAIN_GAIN_TABLE_SIZE] = {
-	1024,
-	1040,
-	1056,
-	1072,
-	1088,
-	1104,
-	1120,
-	1136,
-	1152,
-	1168,
-	1184,
-	1200,
-	1216,
-	1232,
-	1248,
-	1264,
-	1280,
-	1296,
-	1312,
-	1328,
-	1344,
-	1360,
-	1376,
-	1392,
-	1408,
-	1424,
-	1440,
-	1456,
-	1472,
-	1488,
-	1504,
-	1520,
-	1536,
-	1552,
-	1568,
-	1584,
-	1600,
-	1616,
-	1632,
-	1648,
-	1664,
-	1680,
-	1696,
-	1712,
-	1728,
-	1744,
-	1760,
-	1776,
-	1792,
-	1808,
-	1824,
-	1840,
-	1856,
-	1872,
-	1888,
-	1904,
-	1920,
-	1936,
-	1952,
-	1968,
-	1984,
-	2000,
-	2016,
-	2032,
-	2048,
-	2064,
-	2080,
-	2096,
-	2112,
-	2128,
-	2144,
-	2160,
-	2176,
-	2192,
-	2208,
-	2224,
-	2240,
-	2256,
-	2272,
-	2288,
-	2304,
-	2320,
-	2336,
-	2352,
-	2368,
-	2384,
-	2400,
-	2416,
-	2432,
-	2448,
-	2464,
-	2480,
-	2496,
-	2512,
-	2528,
-	2544,
-	2560,
-	2576,
-	2592,
-	2608,
-	2624,
-	2640,
-	2656,
-	2672,
-	2688,
-	2704,
-	2720,
-	2736,
-	2752,
-	2768,
-	2784,
-	2800,
-	2816,
-	2832,
-	2848,
-	2864,
-	2880,
-	2896,
-	2912,
-	2928,
-	2944,
-	2960,
-	2976,
-	2992,
-	3008,
-	3024,
-	3040,
-	3056,
-	3072,
-	3088,
-	3104,
-	3120,
-	3136,
-	3152,
-	3168,
-	3184,
-	3200,
-	3216,
-	3232,
-	3248,
-	3264,
-	3280,
-	3296,
-	3312,
-	3328,
-	3344,
-	3360,
-	3376,
-	3392,
-	3408,
-	3424,
-	3440,
-	3456,
-	3472,
-	3488,
-	3504,
-	3520,
-	3536,
-	3552,
-	3568,
-	3584,
-	3600,
-	3616,
-	3632,
-	3648,
-	3664,
-	3680,
-	3696,
-	3712,
-	3728,
-	3744,
-	3760,
-	3776,
-	3792,
-	3808,
-	3824,
-	3840,
-	3856,
-	3872,
-	3888,
-	3904,
-	3920,
-	3936,
-	3952,
-	3968,
-	3984,
-	4000,
-	4016,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4160,
-	4176,
-	4192,
-	4208,
-	4224,
-	4240,
-	4256,
-	4272,
-	4288,
-	4304,
-	4320,
-	4336,
-	4368,
-	4384,
-	4400,
-	4416,
-	4432,
-	4448,
-	4480,
-	4496,
-	4512,
-	4528,
-	4544,
-	4576,
-	4592,
-	4608,
-	4624,
-	4656,
-	4672,
-	4688,
-	4720,
-	4736,
-	4752,
-	4784,
-	4800,
-	4832,
-	4848,
-	4864,
-	4896,
-	4912,
-	4944,
-	4960,
-	4992,
-	5008,
-	5040,
-	5088,
-	5104,
-	5136,
-	5152,
-	5184,
-	5216,
-	5232,
-	5264,
-	5280,
-	5312,
-	5344,
-	5376,
-	5392,
-	5424,
-	5456,
-	5488,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6096,
-	6128,
-	6160,
-	6192,
-	6240,
-	6272,
-	6304,
-	6352,
-	6384,
-	6432,
-	6464,
-	6512,
-	6544,
-	6592,
-	6624,
-	6672,
-	6720,
-	6752,
-	6800,
-	6848,
-	6896,
-	6944,
-	6976,
-	7024,
-	7072,
-	7120,
-	7168,
-	7216,
-	7280,
-	7328,
-	7376,
-	7424,
-	7488,
-	7536,
-	7584,
-	7648,
-	7696,
-	7760,
-	7824,
-	7872,
-	7936,
-	8000,
-	8064,
-	8128,
-	8192,
-	8256,
-	8320,
-	8384,
-	8448,
-	8512,
-	8592,
-	8656,
-	8736,
-	8800,
-	8880,
-	8960,
-	9024,
-	9104,
-	9184,
-	9264,
-	9360,
-	9440,
-	9520,
-	9616,
-	9696,
-	9792,
-	9888,
-	9984,
-	10080,
-	10176,
-	10272,
-	10368,
-	10480,
-	10576,
-	10688,
-	10800,
-	10912,
-	11024,
-	11152,
-	11264,
-	11392,
-	11520,
-	11648,
-	11776,
-	11904,
-	12048,
-	12192,
-	12336,
-	12480,
-	12624,
-	12784,
-	12944,
-	13104,
-	13264,
-	13440,
-	13616,
-	13792,
-	13968,
-	14160,
-	14352,
-	14560,
-	14768,
-	14976,
-	15184,
-	15408,
-	15648,
-	15872,
-	16128,
-	16384,
-	16640,
-	16912,
-	17184,
-	17472,
-	17760,
-	18064,
-	18384,
-	18720,
-	19056,
-	19408,
-	19776,
-	20160,
-	20560,
-	20960,
-	21392,
-	21840,
-	22304,
-	22784,
-	23296,
-	23824,
-	24384,
-	24960,
-	25568,
-	26208,
-	26880,
-	27584,
-	28336,
-	29120,
-	29952,
-	30832,
-	31760,
-	32768,
-	33824,
-	34944,
-	36144,
-	37440,
-	38832,
-	40320,
-	41936,
-	43680,
-	45584,
-	47648,
-	49920,
-	52416,
-	55184,
-	58240,
-	61680,
-	65536,
-};
-
-static kal_uint16 sayrammain_gain_reg[SAYRAMMAIN_GAIN_TABLE_SIZE] = {
-	0,
-	240,
-	496,
-	720,
-	944,
-	1168,
-	1392,
-	1616,
-	1808,
-	2000,
-	2192,
-	2384,
-	2576,
-	2768,
-	2928,
-	3088,
-	3280,
-	3408,
-	3568,
-	3728,
-	3888,
-	4048,
-	4176,
-	4304,
-	4464,
-	4592,
-	4720,
-	4848,
-	4976,
-	5104,
-	5200,
-	5328,
-	5456,
-	5552,
-	5680,
-	5776,
-	5872,
-	6000,
-	6096,
-	6192,
-	6288,
-	6384,
-	6480,
-	6576,
-	6672,
-	6736,
-	6832,
-	6928,
-	7024,
-	7088,
-	7184,
-	7248,
-	7344,
-	7408,
-	7472,
-	7568,
-	7632,
-	7696,
-	7760,
-	7856,
-	7920,
-	7984,
-	8048,
-	8112,
-	8192,
-	8240,
-	8304,
-	8368,
-	8432,
-	8496,
-	8544,
-	8608,
-	8672,
-	8720,
-	8784,
-	8832,
-	8880,
-	8944,
-	8992,
-	9040,
-	9088,
-	9152,
-	9200,
-	9248,
-	9296,
-	9344,
-	9392,
-	9440,
-	9472,
-	9520,
-	9568,
-	9616,
-	9648,
-	9696,
-	9744,
-	9776,
-	9824,
-	9856,
-	9904,
-	9936,
-	9984,
-	10016,
-	10064,
-	10096,
-	10128,
-	10176,
-	10208,
-	10240,
-	10272,
-	10320,
-	10352,
-	10384,
-	10416,
-	10448,
-	10480,
-	10512,
-	10544,
-	10576,
-	10608,
-	10640,
-	10672,
-	10704,
-	10736,
-	10768,
-	10800,
-	10832,
-	10864,
-	10880,
-	10912,
-	10944,
-	10976,
-	10992,
-	11024,
-	11056,
-	11072,
-	11104,
-	11136,
-	11152,
-	11184,
-	11216,
-	11232,
-	11264,
-	11280,
-	11312,
-	11328,
-	11360,
-	11376,
-	11408,
-	11424,
-	11456,
-	11472,
-	11504,
-	11520,
-	11536,
-	11568,
-	11584,
-	11616,
-	11632,
-	11648,
-	11680,
-	11696,
-	11712,
-	11744,
-	11760,
-	11776,
-	11792,
-	11824,
-	11840,
-	11856,
-	11872,
-	11888,
-	11920,
-	11936,
-	11952,
-	11968,
-	11984,
-	12000,
-	12032,
-	12048,
-	12064,
-	12080,
-	12096,
-	12128,
-	12144,
-	12160,
-	12176,
-	12192,
-	12208,
-	12224,
-	12240,
-	12256,
-	12272,
-	12288,
-	12304,
-	12320,
-	12336,
-	12352,
-	12368,
-	12384,
-	12400,
-	12416,
-	12432,
-	12448,
-	12464,
-	12480,
-	12496,
-	12512,
-	12528,
-	12544,
-	12560,
-	12576,
-	12592,
-	12608,
-	12624,
-	12640,
-	12656,
-	12672,
-	12688,
-	12704,
-	12720,
-	12736,
-	12752,
-	12768,
-	12784,
-	12800,
-	12816,
-	12832,
-	12848,
-	12864,
-	12880,
-	12896,
-	12912,
-	12928,
-	12944,
-	12960,
-	12976,
-	12992,
-	13008,
-	13024,
-	13040,
-	13056,
-	13088,
-	13104,
-	13120,
-	13136,
-	13152,
-	13168,
-	13184,
-	13200,
-	13216,
-	13232,
-	13248,
-	13264,
-	13280,
-	13296,
-	13312,
-	13328,
-	13344,
-	13360,
-	13376,
-	13392,
-	13408,
-	13424,
-	13440,
-	13456,
-	13472,
-	13488,
-	13504,
-	13520,
-	13536,
-	13552,
-	13568,
-	13584,
-	13600,
-	13616,
-	13632,
-	13648,
-	13664,
-	13680,
-	13696,
-	13712,
-	13728,
-	13744,
-	13760,
-	13776,
-	13792,
-	13808,
-	13824,
-	13840,
-	13856,
-	13872,
-	13888,
-	13904,
-	13920,
-	13936,
-	13952,
-	13968,
-	13984,
-	14000,
-	14016,
-	14032,
-	14048,
-	14064,
-	14080,
-	14096,
-	14112,
-	14128,
-	14144,
-	14160,
-	14176,
-	14192,
-	14208,
-	14224,
-	14240,
-	14256,
-	14272,
-	14288,
-	14304,
-	14320,
-	14336,
-	14352,
-	14368,
-	14384,
-	14400,
-	14416,
-	14432,
-	14448,
-	14464,
-	14480,
-	14496,
-	14512,
-	14528,
-	14544,
-	14560,
-	14576,
-	14592,
-	14608,
-	14624,
-	14640,
-	14656,
-	14672,
-	14688,
-	14704,
-	14720,
-	14736,
-	14752,
-	14768,
-	14784,
-	14800,
-	14816,
-	14832,
-	14848,
-	14864,
-	14880,
-	14896,
-	14912,
-	14928,
-	14944,
-	14960,
-	14976,
-	14992,
-	15008,
-	15024,
-	15040,
-	15056,
-	15072,
-	15088,
-	15104,
-	15120,
-	15136,
-	15152,
-	15168,
-	15184,
-	15200,
-	15216,
-	15232,
-	15248,
-	15264,
-	15280,
-	15296,
-	15312,
-	15328,
-	15344,
-	15360,
-	15376,
-	15392,
-	15408,
-	15424,
-	15440,
-	15456,
-	15472,
-	15488,
-	15504,
-	15520,
-	15536,
-	15552,
-	15568,
-	15584,
-	15600,
-	15616,
-	15632,
-	15648,
-	15664,
-	15680,
-	15696,
-	15712,
-	15728,
-	15744,
-	15760,
-	15776,
-	15792,
-	15808,
-	15824,
-	15840,
-	15856,
-	15872,
-	15888,
-	15904,
-	15920,
-	15936,
-	15952,
-	15968,
-	15984,
-	16000,
-	16016,
-	16032,
-	16048,
-	16064,
-	16080,
-	16096,
-	16112,
-	16128,
-};
-
-#endif /* __SAYRAMMAIN_ANA_GAIN_TABLE_H__ */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammainmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammainmipiraw_Sensor.c
deleted file mode 100755
index f7237da8..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammainmipiraw_Sensor.c
+++ /dev/null
@@ -1,3335 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 sayrammainmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "sayrammainmipiraw_Sensor.h"
-
-#define SAYRAMMAIN_EEPROM_READ_ID	0xA0
-#define SAYRAMMAIN_EEPROM_WRITE_ID	0xA1
-#define SAYRAMMAIN_AF_WRITE_ID	0x18
-#define SAYRAMMAIN_MAX_OFFSET		0x8000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "sayrammain_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x8000
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x800
-#define OTP_QCOM_PDAF_OFFSET_DATA_LENGTH 0x340
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x0530
-#define OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR 0X0D30
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-static kal_uint8 otp_qcom_pdaf_offset_data[OTP_QCOM_PDAF_OFFSET_DATA_LENGTH] = {0};
-static void set_sensor_cali(void *arg);
-static int get_sensor_temperature(void *arg);
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int sayrammain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayrammain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayrammain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayrammain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayrammain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayrammain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayrammain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int sayrammain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void get_sensor_cali(void *arg);
-/* extern unsigned int get_PCB_Version(void); */
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int sayrammain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static int sayrammain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id);
-/* STRUCT */
-
-static struct eeprom_map_info sayrammain_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C1, 0x00C2, 17, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x009A, 0x009B, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0010, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x3BC0, 0x4255, 0x4256, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x4260, 0x48F5, 0x48F6, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0x4900, 0x4F95, 0x4F96, CALI_DATA_MASTER_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, sayrammain_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, sayrammain_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, sayrammain_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, sayrammain_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, sayrammain_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, sayrammain_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, sayrammain_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, sayrammain_set_awb_gain},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, sayrammain_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_OFFSET_DATA, sayrammain_get_otp_qcom_pdaf_offset_data},
-};
-
-static u32 sayrammain_dcg_ratio_table_ratio4[] = {4000};
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_10bit = {
-	.gain_ratio = 1000,
-	.OB_pedestal = 64,
-	.saturation_level = 1023,
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_12bit = {
-	.gain_ratio = 4000,
-	.OB_pedestal = 64,
-	.saturation_level = 3900,
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x0148012E,/* cal_layout_table */
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA0,
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0C00,
-		.addr_qsc = 0x2210,
-		.sensor_reg_addr_qsc = 0x1000,
-
-		.pdc_support = TRUE,
-		.pdc_size = 0x180,
-		.addr_pdc = 0x2E20,
-		.sensor_reg_addr_pdc = 0x2B00,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1120, 840}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 4,
-		.i4BinFacY = 2,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_partial_pd_info = {
-	.i4OffsetX = 16,
-	.i4OffsetY = 32,
-	.i4PitchX = 8,
-	.i4PitchY = 32,
-	.i4PairNum = 4,
-	.i4SubBlkW = 8,
-	.i4SubBlkH = 16,
-	.i4PosL = {{20, 41}, {20, 43}, {19, 48}, {19, 50}},
-	.i4PosR = {{16, 33}, {16, 35}, {23, 56}, {23, 58}},
-	.i4BlockNumX = 496,
-	.i4BlockNumY = 72,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.i4VolumeX = 1,
-	.i4VolumeY = 2,
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4ModeIndex = 0,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	/* VC's PD pattern description */
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 3,
-		.i4PDRepetition = 8,
-		.i4PDOrder = {1, 1, 0, 0, 0, 0, 1, 1}, /*R = 1, L = 0*/
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2c,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 576,
-			/* .dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10, */
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW12,
-			.valid_bit = 10,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1856,
-			.vsize = 1392,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 1856,
-			.vsize = 348,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus12[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus13[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus14[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus15[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus16[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus17[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus18[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus19[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{/* B1-S1 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = sayrammain_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayrammain_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayrammain_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* B1-S1 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = sayrammain_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_capture_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayrammain_seamless_capture,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayrammain_seamless_capture),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/*B2-S2 4096x2304_30FPS**/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = sayrammain_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* B3-1 4096x2304_60FPS */
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = sayrammain_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 3772,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1917260000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{   /* G2 4096x2304 @60FPS QBIN DCG-HDR RAW12 w/ Partial-PD VB_max*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = sayrammain_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 6352,
-		.framelength = 5714,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 920570000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 707,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_B,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_HCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = sayrammain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(sayrammain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 5.7,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-	},
-	{/* V1  QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = sayrammain_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5472,
-		.framelength = 1664,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 1427660000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 2482,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = sayrammain_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom2_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = sayrammain_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayrammain_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 9432,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 57,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F2-S1 8192x6144_30FPS remosaic*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = sayrammain_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayrammain_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayrammain_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/*L1-S1 QBIN(VBIN) 4096x3072_2-exp LBMF 30FPS with PDAF VB_max*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = sayrammain_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayrammain_seamless_custom4,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayrammain_seamless_custom4),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 3772*2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{/* F1-S1 QRMSC_4096x3072_30FPS for izoom--bayer */
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = sayrammain_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom5_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayrammain_seamless_custom5,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayrammain_seamless_custom5),
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.awb_enabled = true,
-	},
-	{/*V2 QBIN-V2H2 FHD 2048x1152_480FPS */
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = sayrammain_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom6_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 3520,
-		.framelength = 1280,
-		.max_framerate = 4800,
-		.mipi_pixel_rate = 2081830000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1763,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/*L2-S1 4096x3072 @30FPS Izoom 2exp-LBMF Qbayer w/ PDAF  VB_max seamless reg_A-1*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = sayrammain_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom7_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayrammain_seamless_custom7,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayrammain_seamless_custom7),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.awb_enabled = true,
-	},
-	{/*B4 4096x3072 @60FPS QBIN(VBIN) with PDAF VB_max*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = sayrammain_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 3772,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 57,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/*G1-S2 4096x2304 30FPS DCG AP Merge*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = sayrammain_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 10128,
-		.framelength = 7206,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1178,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = sayrammain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(sayrammain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1.43,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/* G3 4096x2304 60FPS DCG AP Merge */
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = sayrammain_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom10_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 6352,
-		.framelength = 5714,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1917260000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 707,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = sayrammain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(sayrammain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1.43,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/* B8-S3 1856X1392,30.1fps,2X2Binning_Crop,w/All-PD(VBin) */
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = sayrammain_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 19360,
-		.framelength = 3760,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1664,
-			.w0_size = 8192,
-			.h0_size = 2816,
-			.scale_w = 4096,
-			.scale_h = 1408,
-			.x1_offset = 1120,
-			.y1_offset = 8,
-			.w1_size = 1856,
-			.h1_size = 1392,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1856,
-			.h2_tg_size = 1392,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 590,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F2-S1 8192x6144_30FPS Qbayer*/
-		.frame_desc = frame_desc_cus12,
-		.num_entries = ARRAY_SIZE(frame_desc_cus12),
-		.mode_setting_table = sayrammain_custom12_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom12_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayrammain_seamless_custom12,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayrammain_seamless_custom12),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.cphy_settle = 58,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.awb_enabled = true,
-	},
-	{/*not use B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-		.frame_desc = frame_desc_cus13,
-		.num_entries = ARRAY_SIZE(frame_desc_cus13),
-		.mode_setting_table = sayrammain_custom13_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom13_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 9432,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 57,
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F1-S1 4096x3072 30FPS izoom - Qbayer*/
-		.frame_desc = frame_desc_cus14,
-		.num_entries = ARRAY_SIZE(frame_desc_cus14),
-		.mode_setting_table = sayrammain_custom14_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom14_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.dpc_enabled = true,
-		.awb_enabled = true,
-	},
-	{/*not use V1 QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-		.frame_desc = frame_desc_cus15,
-		.num_entries = ARRAY_SIZE(frame_desc_cus15),
-		.mode_setting_table = sayrammain_custom15_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom15_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5472,
-		.framelength = 1664,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 1427660000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 2482,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* B5 4096x2304 @120FPS QBIN Partial-PD VB_max*/
-		.frame_desc = frame_desc_cus16,
-		.num_entries = ARRAY_SIZE(frame_desc_cus16),
-		.mode_setting_table = sayrammain_custom16_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom16_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5712,
-		.framelength = 3174,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 2073600000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -908,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.dpc_enabled = true,
-	},
-	{/* G4 4096x3072 30FPS DCG AP Merge */
-		.frame_desc = frame_desc_cus17,
-		.num_entries = ARRAY_SIZE(frame_desc_cus17),
-		.mode_setting_table = sayrammain_custom17_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom17_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 10128,
-		.framelength = 7206,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1178,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = sayrammain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(sayrammain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1.43,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/*F4-S3 Izoom 2exp-LBMF 4096x3072 @24FPS w/ PDAF VB_max*/
-		.frame_desc = frame_desc_cus18,
-		.num_entries = ARRAY_SIZE(frame_desc_cus18),
-		.mode_setting_table = sayrammain_custom18_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom18_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = sayrammain_seamless_custom18,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayrammain_seamless_custom18),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 8000,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.awb_enabled = true,
-	},
-	{/*L3-S3 4096X3072,24fps,2X2Binning_2exp_LB-MF,w/All-PD(VBin),For RST(9-16ms)*/
-		.frame_desc = frame_desc_cus19,
-		.num_entries = ARRAY_SIZE(frame_desc_cus19),
-		.mode_setting_table = sayrammain_custom19_setting,
-		.mode_setting_len = ARRAY_SIZE(sayrammain_custom19_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = sayrammain_seamless_custom19,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayrammain_seamless_custom19),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 9432,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.need_bw_change = 1,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = SAYRAMMAIN_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},
-	.i2c_addr_table = {0x34, 0x35, 0x66, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_HV_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = sayrammain_ana_gain_table,
-	.ana_gain_table_size = sizeof(sayrammain_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 6,
-	.exposure_max = 128*(65532 - 48), /* exposure reg is limited to 4x. max = max - margin */
-	.exposure_step = 2,
-	.exposure_margin = 48,
-
-	.frame_length_max = 0xfffc,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 2036600,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_DCG|HDR_SUPPORT_LBMF,
-	.seamless_switch_support = TRUE,
-	.seamless_switch_type = SEAMLESS_SWITCH_CUT_VB_INIT_SHUT,
-	.seamless_switch_hw_re_init_time_ns = 0,
-	.seamless_switch_prsh_hw_fixed_value = 48,
-	.seamless_switch_prsh_length_lc = 0,
-	.reg_addr_prsh_length_lines = {0x3058, 0x3059, 0x305A, 0x305B},
-	.reg_addr_prsh_mode = 0x3056,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0202, 0x0203}, /* COARSE_INTEG_TIME */
-			{0x0000, 0x0000}, /*not support*/
-			{0x0224, 0x0225}, /* ST_COARSE_INTEG_TIME */
-	},
-	.reg_addr_exposure_in_lut = {
-			{0x0E20, 0x0E21}, /* LUT_A_COARSE_INTEG_TIME */
-			{0x0E50, 0x0E51}, /* LUT_B_COARSE_INTEG_TIME */
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3160,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, /* ANA_GAIN_GLOBAL */
-			{0x0000, 0x0000}, /*not support*/
-			{0x0216, 0x0217}, /* ST_ANA_GAIN_GLOBAL */
-	},
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E22, 0x0E23}, /* LUT_A_ANA_GAIN_GLOBAL */
-			{0x0E52, 0x0E53}, /* LUT_B_ANA_GAIN_GLOBAL */
-	},
-	.reg_addr_dcg_ratio = 0x3182, /* DCGHDR_RATIO */
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E28, 0x0E29},  /* LUT_A_FRM_LENGTH_LINES */
-			{0x0E58, 0x0E59},  /*LUT_B_FRM_LENGTH_LINES*/
-	},
-	.reg_addr_temp_en = 0x0138, /* TEMP_SEN_CTL */
-	.reg_addr_temp_read = 0x013A, /* TEMP_SEN_OUT */
-	.reg_addr_auto_extend = 0x0350, /* FRM_LENGTH_CTL */
-	.reg_addr_frame_count = 0x0005, /* FRM_CNT */
-	.reg_addr_fast_mode = 0x3010, /* FAST_MODETRANSIT_CTL */
-	.reg_addr_fast_mode_in_lbmf = 0x31A7, /*EAEB_LUT_CONTROL */
-
-	.init_setting_table = sayrammain_init_setting,
-	.init_setting_len = ARRAY_SIZE(sayrammain_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xf10e5980,
-
-	.oplus_notify_chg_flag = false,
-	.portrait_max_fps = 240,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_AVDD, {2804000, 2804000}, 3000},
-	{HW_ID_AVDD1, {1804000, 1804000}, 3000},
-	{HW_ID_AFVDD, {2800000, 2800000}, 3000},
-	{HW_ID_DVDD, {1160000, 1160000}, 4000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 3000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry sayrammain_mipi_raw_entry = {
-	.name = "sayrammain_mipi_raw",
-	.id = SAYRAMMAIN_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static unsigned int read_sayrammain_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != sayrammain_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != sayrammain_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = sayrammain_eeprom_info[meta_id].start;
-	readsize = sayrammain_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA0,
-	.i2c_write_id = 0xA1,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, SAYRAMMAIN_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static int sayrammain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int sayrammain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR, otp_qcom_pdaf_offset_data, OTP_QCOM_PDAF_OFFSET_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_offset_data, sizeof(otp_qcom_pdaf_offset_data));
-	*len = sizeof(otp_qcom_pdaf_offset_data);
-
-	return 0;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH	 (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-	ret = adaptor_i2c_wr_p8(ctx->i2c_client, SAYRAMMAIN_EEPROM_WRITE_ID >> 1,
-			addr, para, len);
-
-	return ret;
-}
-
-
-static kal_int32 write_1st_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xff35;
-	u8 flag = 0;
-
-	adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | SAYRAMMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-
-	reg = 0x06ca;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | SAYRAMMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x2);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | SAYRAMMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-	}
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, SAYRAMMAIN_EEPROM_WRITE_ID >> 1, reg, &flag);
-	LOG_INF("SET_SENSOR_OTP WRP: 0x%x\n", flag);
-
-	return ret;
-}
-
-static kal_int32 write_2nd_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xa000;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, SAYRAMMAIN_EEPROM_WRITE_ID >> 1, reg, 0x0E);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, SAYRAMMAIN_EEPROM_WRITE_ID >> 1, reg, 0x00);
-	}
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	u8 flag = 0;
-	int ret = 0;
-	adaptor_i2c_rd_u8(ctx->i2c_client, SAYRAMMAIN_EEPROM_READ_ID >> 1, 0x000D, &flag);
-	if (flag == 0x01) {
-		ret = write_1st_eeprom_protect(ctx, enable);
-	} else {
-		ret = write_2nd_eeprom_protect(ctx, enable);
-	}
-	return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-	ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-	kal_int32  ret = ERROR_NONE;
-	kal_uint16 data_base, data_length;
-	kal_uint32 idx, idy;
-	kal_uint8 *pData;
-	kal_uint32 checksum = 0;
-	UINT32 i = 0;
-	kal_uint16 offset = 0;
-	if(pStereodata != NULL) {
-		LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-			pStereodata->uSensorId,
-			pStereodata->uDeviceId,
-			pStereodata->baseAddr,
-			pStereodata->dataLength);
-
-		data_base = pStereodata->baseAddr;
-		data_length = pStereodata->dataLength;
-		pData = pStereodata->uData;
-		for(i = 0; i < pStereodata->dataLength; i++) {
-			checksum += pData[i];
-		}
-		pData[data_length] = 0x01;
-		pData[data_length + 1] = checksum % 255;
-		data_length = data_length + 2;
-		offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-		if (offset > data_length) {
-			offset = data_length;
-		}
-		if (((pStereodata->uSensorId == SAYRAMMAIN_SENSOR_ID) && ((data_length - 2) == CALI_DATA_MASTER_LENGTH))
-				&& (data_base == SAYRAMMAIN_STEREO_START_ADDR || data_base == SAYRAMMAIN_STEREO_MT_START_ADDR
-				|| data_base == SAYRAMMAIN_STEREO_MT_105CM_START_ADDR)) {
-			LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-			LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-			LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-			LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-			LOG_INF("write_Module_data Write end\n");
-		} else if ((pStereodata->uSensorId == SAYRAMMAIN_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-				&& (data_base == SAYRAMMAIN_AESYNC_START_ADDR)) {
-			LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-				pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-				read_cmos_eeprom_8(ctx, SAYRAMMAIN_AESYNC_START_ADDR),
-				read_cmos_eeprom_8(ctx, SAYRAMMAIN_AESYNC_START_ADDR+1),
-				read_cmos_eeprom_8(ctx, SAYRAMMAIN_AESYNC_START_ADDR+2),
-				read_cmos_eeprom_8(ctx, SAYRAMMAIN_AESYNC_START_ADDR+3),
-				read_cmos_eeprom_8(ctx, SAYRAMMAIN_AESYNC_START_ADDR+4),
-				read_cmos_eeprom_8(ctx, SAYRAMMAIN_AESYNC_START_ADDR+5),
-				read_cmos_eeprom_8(ctx, SAYRAMMAIN_AESYNC_START_ADDR+6),
-				read_cmos_eeprom_8(ctx, SAYRAMMAIN_AESYNC_START_ADDR+7));
-			LOG_INF("AESync write_Module_data Write end\n");
-		} else {
-			LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-			return -1;
-		}
-	} else {
-		LOG_INF("sayrammain write_Module_data pStereodata is null\n");
-		return -1;
-	}
-	return ret;
-}
-
-static int sayrammain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	int ret = ERROR_NONE;
-	ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-	if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-		LOG_INF("ret=%d\n", ret);
-	}
-	return 0;
-}
-
-static int sayrammain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_MASTER_LENGTH)
-		*len = CALI_DATA_MASTER_LENGTH;
-	LOG_INF("feature_data mode: %d", *feature_data_16);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_sayrammain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_sayrammain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MW_MAIN:
-	default:
-		read_sayrammain_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	}
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, SAYRAMMAIN_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "sayrammain read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "sayrammain read_otp_info end\n");
-}
-
-static int sayrammain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int sayrammain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	DRV_LOGE(ctx, "+\n");
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			printk("sayrammain_mipi_raw i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x906) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 sayrammain_feedback_awbgain[] = {
-	0x0B8E, 0x01,
-	0x0B8F, 0x00,
-	0x0B90, 0x02,
-	0x0B91, 0x28,
-	0x0B92, 0x01,
-	0x0B93, 0x77,
-	0x0B94, 0x01,
-	0x0B95, 0x00,
-};
-
-/*write AWB gain to sensor*/
-static void feedback_awbgain(struct subdrv_ctx *ctx, kal_uint32 r_gain, kal_uint32 b_gain)
-{
-	UINT32 r_gain_int = 0;
-	UINT32 b_gain_int = 0;
-
-	DRV_LOG(ctx, "feedback_awbgain r_gain: %d, b_gain: %d\n", r_gain, b_gain);
-	r_gain_int = r_gain / 512;
-	b_gain_int = b_gain / 512;
-	sayrammain_feedback_awbgain[5] = r_gain_int;
-	sayrammain_feedback_awbgain[7] = (r_gain - r_gain_int * 512) / 2;
-	sayrammain_feedback_awbgain[9] = b_gain_int;
-	sayrammain_feedback_awbgain[11] = (b_gain - b_gain_int * 512) / 2;
-	subdrv_i2c_wr_regs_u8(ctx, sayrammain_feedback_awbgain,
-		ARRAY_SIZE(sayrammain_feedback_awbgain));
-}
-
-static int sayrammain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-	feedback_awbgain(ctx, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B);
-	return 0;
-}
-
-int sayram_adaptor_i2c_wr_u8_u8(struct i2c_client *i2c_client, u8 addr, u8 reg, u8 val)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg;
-
-	if (i2c_client == NULL)
-		return -ENODEV;
-
-	buf[0] = reg;
-	buf[1] = val;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-	msg.len = sizeof(buf);
-
-	ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-	if (ret < 0)
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-
-	return ret;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-	int ret = -1;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	sensor_init(ctx);
-	ret = sayram_adaptor_i2c_wr_u8_u8(ctx->i2c_client, SAYRAMMAIN_AF_WRITE_ID >> 1, 0x02, 0x0);
-	mdelay(2);
-	DRV_LOGE(ctx, "init sayrammain af before write qsc data, ret: %d\n", ret);
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_u8(ctx, 0x0101, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x0B06, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0xDDA9, 0x4E);
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x01);
-			DRV_LOG(ctx, "set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x00);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0x2B00;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0x2C00;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x55)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 85;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (16384 - (16384 * BASEGAIN) / gain);
-}
-
-void sayrammain_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-		case HDR_NONE:
-		case HDR_RAW_LBMF:
-		case HDR_RAW_DCG_RAW:
-			if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-				ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min) {
-				*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-				*min_shutter = ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min;
-			} else {
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-			}
-			break;
-		default:
-			*exposure_step = ctx->s_ctx.exposure_step;
-			*min_shutter = ctx->s_ctx.exposure_min;
-			break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int sayrammain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	sayrammain_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static void sayrammain_update_mode_info(struct subdrv_ctx *ctx, enum SENSOR_SCENARIO_ID_ENUM scenario_id)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return;
-	}
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->pclk / ctx->line_length * 10 / ctx->s_ctx.portrait_max_fps;
-	ctx->frame_length_rg = ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->frame_time_delay_frame = (ctx->s_ctx.mode[scenario_id].delay_frame)
-		? ctx->s_ctx.mode[scenario_id].delay_frame : ctx->frame_time_delay_frame;
-	ctx->margin = ctx->s_ctx.mode[scenario_id].exposure_margin;
-	ctx->autoflicker_en = FALSE;
-	ctx->l_shift = 0;
-	ctx->min_vblanking_line = ctx->s_ctx.mode[scenario_id].min_vblanking_line;
-	if (ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		memset(ctx->frame_length_in_lut, 0,
-			sizeof(ctx->frame_length_in_lut));
-
-		switch (ctx->s_ctx.mode[scenario_id].exp_cnt) {
-		case 2:
-			ctx->frame_length_in_lut[0] = ctx->readout_length + ctx->read_margin;
-			ctx->frame_length_in_lut[1] = ctx->frame_length -
-				ctx->frame_length_in_lut[0];
-			break;
-		case 3:
-			ctx->frame_length_in_lut[0] = ctx->readout_length + ctx->read_margin;
-			ctx->frame_length_in_lut[1] = ctx->readout_length + ctx->read_margin;
-			ctx->frame_length_in_lut[2] = ctx->frame_length -
-				ctx->frame_length_in_lut[1] - ctx->frame_length_in_lut[0];
-			break;
-		default:
-			break;
-		}
-		memcpy(ctx->frame_length_in_lut_rg, ctx->frame_length_in_lut,
-			sizeof(ctx->frame_length_in_lut_rg));
-	}
-
-	/* MCSS low power mode update para */
-	if (ctx->s_ctx.mcss_update_subdrv_para != NULL)
-		ctx->s_ctx.mcss_update_subdrv_para((void *) ctx, scenario_id);
-}
-
-static int sayrammain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-
-	if (scenario_id == SENSOR_SCENARIO_ID_CUSTOM18 ||
-		scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 ||
-		scenario_id == SENSOR_SCENARIO_ID_CUSTOM19) {
-		sayrammain_update_mode_info(ctx, scenario_id);
-	} else {
-		update_mode_info(ctx, scenario_id);
-	}
-
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-		calculate_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id);
-	}
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 24) & 0x07);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[3],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int sayrammain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	switch (mode) {
-	case 5:
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x00); /* DIG_GAIN_GLOBAL */
-		subdrv_i2c_wr_u8(ctx, 0x0218, 0x00); /* ST_DIG_GAIN_GLOBAL */
-		/* subdrv_i2c_wr_u8(ctx, 0x3028, 0x00); */
-		subdrv_i2c_wr_u8(ctx, 0x0E24, 0x00); /* LUT_A_DIG_GAIN_GLOBAL */
-		subdrv_i2c_wr_u8(ctx, 0x0E25, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x0E54, 0x00); /* LUT_B_DIG_GAIN_GLOBAL */
-		subdrv_i2c_wr_u8(ctx, 0x0E55, 0x00);
-		break;
-	default:
-		subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-		break;
-	}
-
-	if ((ctx->test_pattern) && (mode != ctx->test_pattern)) {
-		if (ctx->test_pattern == 5) {
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0218, 0x01);
-			/* subdrv_i2c_wr_u8(ctx, 0x3028, 0x40); */
-			subdrv_i2c_wr_u8(ctx, 0x0E24, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0E54, 0x01);
-		}
-		else if (mode == 0)
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /* No pattern */
-	}
-
-	ctx->test_pattern = mode;
-	return ERROR_NONE;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id)
-{
-	u32 ae_ctrl_cit;
-	u32 prsh_length_lc = 0;
-	u32 cit_step = 1;
-	u8 hw_fixed_value = ctx->s_ctx.seamless_switch_prsh_hw_fixed_value;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = ctx->current_scenario_id;
-	enum IMGSENSOR_HDR_MODE_ENUM hdr_mode;
-
-	if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM7) {
-		prsh_length_lc = 2000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM7 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM18) {
-		prsh_length_lc = 5000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM18 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 6000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM19) {
-		prsh_length_lc = 6000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM19 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 5000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 4000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM12) {
-		prsh_length_lc = 2000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM12 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM3) {
-		prsh_length_lc = 3600;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM3 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_CAPTURE && scenario_id == SENSOR_SCENARIO_ID_CUSTOM5) {
-		prsh_length_lc = 3500;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM5 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_CAPTURE) {
-		prsh_length_lc = 3600;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM7) {
-		prsh_length_lc = 3200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM7 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else {
-		prsh_length_lc = 0;
-	}
-
-
-	hdr_mode = ctx->s_ctx.mode[scenario_id].hdr_mode;
-	switch (hdr_mode) {
-	case HDR_RAW_LBMF:
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: dig_gain_lut_a = SE / dig_gain_lut_b = LE */
-			/* 3exp: dig_gain_lut_a = SE / dig_gain_lut_b = ME / dig_gain_lut_c = LE */
-			ae_ctrl_cit = ae_ctrl->exposure.me_exposure;
-			DRV_LOG_MUST(ctx, "debug se %llu le %llu, me %llu", ae_ctrl->exposure.se_exposure, ae_ctrl->exposure.le_exposure, ae_ctrl->exposure.me_exposure);
-		} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: dig_gain_lut_a = LE / dig_gain_lut_b = SE */
-			/* 3exp: dig_gain_lut_a = LE / dig_gain_lut_b = ME / dig_gain_lut_c = SE */
-			ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-			DRV_LOG_MUST(ctx, "debug le\n");
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-		break;
-	case HDR_NONE:
-	case HDR_RAW:
-	case HDR_CAMSV:
-	case HDR_RAW_ZHDR:
-	case HDR_MultiCAMSV:
-	case HDR_RAW_STAGGER:
-	case HDR_RAW_DCG_RAW:
-	case HDR_RAW_DCG_COMPOSE:
-	default:
-		ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-		break;
-	}
-	ae_ctrl_cit = max(ae_ctrl_cit, ctx->s_ctx.exposure_min);
-	ae_ctrl_cit = min(ae_ctrl_cit, ctx->s_ctx.exposure_max);
-	cit_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step ?: 1;
-	if (cit_step) {
-		ae_ctrl_cit = round_up(ae_ctrl_cit, cit_step);
-		prsh_length_lc = round_up(prsh_length_lc, cit_step);
-	}
-	DRV_LOG_MUST(ctx, "prsh_length_lc %u ae_ctrl_cit %u fine_integ_line %d\n",
-					prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.mode[scenario_id].fine_integ_line);
-	if(hdr_mode != HDR_RAW_LBMF && ctx->s_ctx.mode[scenario_id].fine_integ_line != 0) {
-		ae_ctrl_cit = ae_ctrl_cit / 1000;
-	}
-	prsh_length_lc = (prsh_length_lc > (ae_ctrl_cit + hw_fixed_value)) ? prsh_length_lc : 0;
-	if (prsh_length_lc < (ae_ctrl_cit + hw_fixed_value)) {
-		DRV_LOG_MUST(ctx,
-			"pre-shutter no need: prsh_length_lc(%u) < (ae_ctrl_cit(%u(max=%u,min=%u)) + hw_fixed_value(%u))\n",
-			prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.exposure_max, ctx->s_ctx.exposure_min, hw_fixed_value);
-		ctx->s_ctx.seamless_switch_prsh_length_lc = 0;
-		return;
-	}
-
-	ctx->s_ctx.seamless_switch_prsh_length_lc = prsh_length_lc;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammainmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammainmipiraw_Sensor.h
deleted file mode 100755
index e72146c8..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayrammain_mipi_raw/sayrammainmipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     sayrammainmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _SAYRAMMAINMIPI_SENSOR_H
-#define _SAYRAMMAINMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "sayrammain_ana_gain_table.h"
-#include "sayrammain_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#endif /* _SAYRAMMAINMIPI_SENSOR_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/Makefile
deleted file mode 100644
index e9825525..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/sayramtelemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtele_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtele_Sensor_setting.h
deleted file mode 100755
index d0a66868..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtele_Sensor_setting.h
+++ /dev/null
@@ -1,3701 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 sayramtele_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _SAYRAMTELEMIPI_SENSOR_SETTING_H
-#define _SAYRAMTELEMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 sayramtele_init_setting[] = {
-	0x0136,	0x18,
-	0x0137,	0x00,
-	0x961C,	0x04,
-	0xF800,	0x18,
-	0xF801,	0x18,
-	0xF802,	0xC5,
-	0xF803,	0x26,
-	0xF804,	0x55,
-	0xF805,	0xC4,
-	0xF806,	0x3F,
-	0xF807,	0x00,
-	0xF808,	0x17,
-	0xF809,	0xFA,
-	0xF80A,	0x84,
-	0xF80B,	0xBE,
-	0xF80C,	0x55,
-	0xF80D,	0xC8,
-	0xF80E,	0x3F,
-	0xF80F,	0x00,
-	0xF810,	0x40,
-	0xF811,	0x80,
-	0xF812,	0x3A,
-	0xF813,	0xC4,
-	0xFA00,	0x23,
-	0xFA01,	0x23,
-	0xFA02,	0xC5,
-	0xFA03,	0x2B,
-	0xFA04,	0x55,
-	0xFA05,	0xC4,
-	0xFA06,	0x3F,
-	0xFA07,	0x00,
-	0xFA08,	0x17,
-	0xFA09,	0xFA,
-	0xFA0A,	0x84,
-	0xFA0B,	0xBE,
-	0xFA0C,	0x55,
-	0xFA0D,	0xC8,
-	0xFA0E,	0x3F,
-	0xFA0F,	0x00,
-	0xFA10,	0x40,
-	0xFA11,	0x80,
-	0xFA12,	0x3A,
-	0xFA13,	0xC4,
-	0xFC00,	0x4F,
-	0xFC01,	0x06,
-	0xFC02,	0xAC,
-	0xFC03,	0x27,
-	0xFC04,	0xAC,
-	0xFC05,	0x1D,
-	0xFC06,	0xAC,
-	0xFC07,	0x14,
-	0xFC08,	0xFA,
-	0xFC09,	0xE8,
-	0xFC0A,	0xEB,
-	0xFC0B,	0x2E,
-	0xFC0C,	0xD0,
-	0xFC0D,	0x20,
-	0xFC0E,	0x40,
-	0xFC0F,	0x4F,
-	0xFC10,	0x1E,
-	0xFC11,	0x05,
-	0xFC12,	0xD4,
-	0xFC13,	0x18,
-	0xFC14,	0x08,
-	0xFC15,	0x00,
-	0xFC16,	0xF6,
-	0xFC17,	0x40,
-	0xFC18,	0x06,
-	0xFC19,	0xB7,
-	0xFC1A,	0xBE,
-	0xFC1B,	0x06,
-	0xFC1C,	0xF0,
-	0xFC1D,	0x40,
-	0xFC1E,	0x06,
-	0xFC1F,	0xB8,
-	0xFC20,	0x29,
-	0xFC21,	0x25,
-	0xFC22,	0x90,
-	0xFC23,	0x2C,
-	0xFC24,	0x80,
-	0xFC25,	0x22,
-	0xFC26,	0xF6,
-	0xFC27,	0x41,
-	0xFC28,	0x05,
-	0xFC29,	0x1C,
-	0xFC2A,	0xB8,
-	0xFC2B,	0x8B,
-	0xFC2C,	0xD0,
-	0xFC2D,	0x18,
-	0xFC2E,	0x27,
-	0xFC2F,	0x6C,
-	0xFC30,	0xF0,
-	0xFC31,	0x02,
-	0xFC32,	0x02,
-	0xFC33,	0x74,
-	0xFC34,	0xF6,
-	0xFC35,	0x40,
-	0xFC36,	0x07,
-	0xFC37,	0x10,
-	0xFC38,	0x0F,
-	0xFC39,	0x20,
-	0xFC3A,	0xFA,
-	0xFC3B,	0xE8,
-	0xFC3C,	0x03,
-	0xFC3D,	0x8A,
-	0xFC3E,	0x80,
-	0xFC3F,	0x04,
-	0xFC40,	0x5F,
-	0xFC41,	0xF0,
-	0xFC42,	0x29,
-	0xFC43,	0x25,
-	0xFC44,	0x90,
-	0xFC45,	0x0A,
-	0xFC46,	0x50,
-	0xFC47,	0x31,
-	0xFC48,	0xFA,
-	0xFC49,	0xE8,
-	0xFC4A,	0x03,
-	0xFC4B,	0x7C,
-	0xFC4C,	0x80,
-	0xFC4D,	0x04,
-	0xFC4E,	0x09,
-	0xFC4F,	0x50,
-	0xFC50,	0xF4,
-	0xFC51,	0x40,
-	0xFC52,	0x06,
-	0xFC53,	0xBC,
-	0xFC54,	0x50,
-	0xFC55,	0xA1,
-	0xFC56,	0xFA,
-	0xFC57,	0xE8,
-	0xFC58,	0x03,
-	0xFC59,	0x6E,
-	0xFC5A,	0xFA,
-	0xFC5B,	0xE8,
-	0xFC5C,	0x02,
-	0xFC5D,	0x9E,
-	0xFC5E,	0xA8,
-	0xFC5F,	0x14,
-	0xFC60,	0xA8,
-	0xFC61,	0x1D,
-	0xFC62,	0xA8,
-	0xFC63,	0x27,
-	0xFC64,	0xA0,
-	0xFC65,	0x09,
-	0xFC66,	0x00,
-	0xFC67,	0x00,
-	0x4331,	0x01,
-	0x3304,	0x00,
-	0x33F0,	0x0A,
-	0x33F1,	0x06,
-	0x0111,	0x03,
-	0x3855,	0x01,
-	0x0808,	0x02,
-	0x0D06,	0x82,
-	0x0D07,	0x02,
-	0x0D12,	0x78,
-	0x0D13,	0x01,
-	0x0D0D,	0x00,
-	0x0D08,	0x01,
-	0x1012,	0x00,
-	0x2EDF,	0x07,
-	0x3953,	0x01,
-	0x3954,	0x01,
-	0x3955,	0x01,
-	0x3B30,	0x01,
-	0x3B32,	0x12,
-	0x3B33,	0x04,
-	0x3B34,	0x0A,
-	0x3B36,	0xB2,
-	0x3B40,	0x00,
-	0x3B42,	0x0A,
-	0x3B43,	0x04,
-	0x3B45,	0x0D,
-	0x3B46,	0x40,
-	0x5A1D,	0x52,
-	0x5A27,	0x19,
-	0x5A37,	0xC8,
-	0x5A39,	0x25,
-	0x5A3D,	0x0E,
-	0x5A41,	0x19,
-	0x5A47,	0x62,
-	0x5A51,	0x52,
-	0x5A5B,	0x19,
-	0x5A69,	0xC8,
-	0x5A6B,	0x25,
-	0x5A6F,	0x11,
-	0x5A73,	0x19,
-	0x5A79,	0x8A,
-	0x5A83,	0x52,
-	0x5A8D,	0x19,
-	0x5A9B,	0xC8,
-	0x5A9D,	0x25,
-	0x5AA1,	0x52,
-	0x5AA5,	0x19,
-	0x5AAB,	0x93,
-	0x5AB5,	0x52,
-	0x5ABF,	0x19,
-	0x5ACD,	0xC8,
-	0x5ACF,	0x25,
-	0x5AD3,	0x11,
-	0x5AD7,	0x19,
-	0x5ADD,	0x4B,
-	0x5AE7,	0x52,
-	0x5AF1,	0x19,
-	0x5AF5,	0x2D,
-	0x5AFF,	0xC8,
-	0x5B01,	0x25,
-	0x5B05,	0x0E,
-	0x5B09,	0x19,
-	0x5B0D,	0x9E,
-	0x5B0F,	0x34,
-	0x5B21,	0x19,
-	0x5B27,	0x2D,
-	0x5B33,	0x19,
-	0x5B39,	0x9E,
-	0x5B3F,	0x52,
-	0x5B49,	0x19,
-	0x5B4D,	0x87,
-	0x5B57,	0xC8,
-	0x5B59,	0x25,
-	0x5B5D,	0x0E,
-	0x5B61,	0x19,
-	0x5B65,	0xDA,
-	0x5B6D,	0x52,
-	0x5B79,	0x19,
-	0x5B7F,	0x2D,
-	0x5B8B,	0x19,
-	0x5B91,	0x9E,
-	0x5B97,	0x52,
-	0x5BA1,	0x19,
-	0x5BA5,	0x2D,
-	0x5BAF,	0xC8,
-	0x5BB1,	0x25,
-	0x5BB5,	0x11,
-	0x5BB9,	0x19,
-	0x5BBD,	0x9E,
-	0x5BBF,	0x5C,
-	0x5BD1,	0x19,
-	0x5BD7,	0x2D,
-	0x5BE3,	0x19,
-	0x5BE9,	0x9E,
-	0x5BEF,	0x52,
-	0x5BF9,	0x19,
-	0x5BFD,	0x87,
-	0x5C07,	0xC8,
-	0x5C09,	0x25,
-	0x5C0D,	0x11,
-	0x5C11,	0x19,
-	0x5C15,	0xDA,
-	0x5C29,	0x19,
-	0x5C2F,	0x2D,
-	0x5C3B,	0x19,
-	0x5C41,	0x9E,
-	0x5C47,	0x52,
-	0x5C51,	0x19,
-	0x5C57,	0x41,
-	0x5C5F,	0xC8,
-	0x5C61,	0x25,
-	0x5C65,	0x11,
-	0x5C69,	0x19,
-	0x5C6E,	0x01,
-	0x5C6F,	0x13,
-	0x5C85,	0xC8,
-	0x5C87,	0x25,
-	0x5C8B,	0x1B,
-	0x5C8F,	0x19,
-	0x5C95,	0x41,
-	0x5C9B,	0x52,
-	0x5CA5,	0x19,
-	0x5CAA,	0x03,
-	0x5CAB,	0xDE,
-	0x5CB3,	0xC8,
-	0x5CB5,	0x25,
-	0x5CB9,	0x11,
-	0x5CBD,	0x19,
-	0x5CC3,	0xB8,
-	0x5CD9,	0xC8,
-	0x5CDB,	0x25,
-	0x5CDF,	0x1B,
-	0x5CE3,	0x19,
-	0x5CE8,	0x03,
-	0x5CE9,	0xDE,
-	0x5CEF,	0x52,
-	0x5CF9,	0x19,
-	0x5CFF,	0x79,
-	0x5D07,	0xC8,
-	0x5D09,	0x25,
-	0x5D0C,	0x00,
-	0x5D0D,	0x52,
-	0x5D11,	0x19,
-	0x5D16,	0x01,
-	0x5D17,	0x28,
-	0x5D2D,	0xC8,
-	0x5D2F,	0x25,
-	0x5D33,	0x53,
-	0x5D37,	0x19,
-	0x5D3D,	0x79,
-	0x5D43,	0x52,
-	0x5D4D,	0x19,
-	0x5D51,	0x2D,
-	0x5D53,	0x41,
-	0x5D55,	0x6B,
-	0x5D5B,	0xC8,
-	0x5D5D,	0x25,
-	0x5D61,	0x11,
-	0x5D65,	0x19,
-	0x5D69,	0x9E,
-	0x5D6B,	0xD0,
-	0x5D7D,	0x19,
-	0x5D83,	0x2D,
-	0x5D95,	0xC8,
-	0x5D97,	0x25,
-	0x5D9B,	0x1B,
-	0x5D9F,	0x19,
-	0x5DA5,	0x41,
-	0x5DB1,	0x19,
-	0x5DB7,	0x6B,
-	0x5DC3,	0x19,
-	0x5DC9,	0x9E,
-	0x5DCF,	0x52,
-	0x5DD9,	0x19,
-	0x5DDD,	0x87,
-	0x5DDF,	0x41,
-	0x5DE1,	0x41,
-	0x5DE7,	0xC8,
-	0x5DE9,	0x25,
-	0x5DED,	0x11,
-	0x5DF1,	0x19,
-	0x5DF5,	0xDA,
-	0x5DF7,	0x4A,
-	0x5E09,	0x19,
-	0x5E0F,	0x2D,
-	0x5E21,	0xC8,
-	0x5E23,	0x25,
-	0x5E27,	0x1B,
-	0x5E2B,	0x19,
-	0x5E31,	0x41,
-	0x5E3D,	0x19,
-	0x5E43,	0x6B,
-	0x5E4F,	0x19,
-	0x5E55,	0x9E,
-	0x5E5B,	0x52,
-	0x5E65,	0x19,
-	0x5E69,	0x2D,
-	0x5E6B,	0x41,
-	0x5E73,	0xC8,
-	0x5E75,	0x25,
-	0x5E79,	0x11,
-	0x5E7D,	0x19,
-	0x5E81,	0x9E,
-	0x5E83,	0xFB,
-	0x5E95,	0x19,
-	0x5E9B,	0x2D,
-	0x5EAD,	0xC8,
-	0x5EAF,	0x25,
-	0x5EB3,	0x1B,
-	0x5EB7,	0x19,
-	0x5EBD,	0x41,
-	0x5EC9,	0x19,
-	0x5ECF,	0x9E,
-	0x5ED5,	0x52,
-	0x5EDF,	0x19,
-	0x5EE3,	0x2D,
-	0x5EE5,	0x5A,
-	0x5EE7,	0x41,
-	0x5EEF,	0xC8,
-	0x5EF1,	0x25,
-	0x5EF5,	0x11,
-	0x5EF9,	0x19,
-	0x5EFD,	0xDA,
-	0x5EFF,	0xCB,
-	0x5F11,	0x19,
-	0x5F17,	0x2D,
-	0x5F23,	0x19,
-	0x5F29,	0x2D,
-	0x5F3B,	0xC8,
-	0x5F3D,	0x25,
-	0x5F41,	0x1B,
-	0x5F45,	0x19,
-	0x5F4B,	0x41,
-	0x5F57,	0x19,
-	0x5F5D,	0x9E,
-	0x5F63,	0x52,
-	0x5F6D,	0x19,
-	0x5F7F,	0x55,
-	0x5F83,	0x0E,
-	0x5F87,	0x19,
-	0x5F93,	0x12,
-	0x6C06,	0xFF,
-	0x6C07,	0xFF,
-	0x6C0E,	0x00,
-	0x6C0F,	0x02,
-	0x6C11,	0xD9,
-	0x6C12,	0xFF,
-	0x6C13,	0xFF,
-	0x6C1A,	0x00,
-	0x6C1B,	0x02,
-	0x6C1D,	0xD9,
-	0x6C1E,	0xFF,
-	0x6C1F,	0xFF,
-	0x6C26,	0x00,
-	0x6C27,	0x02,
-	0x6C29,	0xD9,
-	0x6C2A,	0xFF,
-	0x6C2B,	0xFF,
-	0x6C32,	0x00,
-	0x6C33,	0x02,
-	0x6C35,	0xD9,
-	0x6C36,	0xFF,
-	0x6C37,	0xFF,
-	0x6C3E,	0x00,
-	0x6C3F,	0x02,
-	0x6C41,	0xD9,
-	0x6C42,	0xFF,
-	0x6C43,	0xFF,
-	0x6C4A,	0x00,
-	0x6C4B,	0x02,
-	0x6C4D,	0xD9,
-	0x6C4E,	0xFF,
-	0x6C4F,	0xFF,
-	0x6C5A,	0xFF,
-	0x6C5B,	0xFF,
-	0x6C66,	0xFF,
-	0x6C67,	0xFF,
-	0x6C72,	0xFF,
-	0x6C73,	0xFF,
-	0x6C7E,	0xFF,
-	0x6C7F,	0xFF,
-	0x6CAA,	0x00,
-	0x6CAB,	0x02,
-	0x6CAD,	0xD9,
-	0x6CAE,	0x00,
-	0x6CAF,	0x02,
-	0x6CB1,	0xD9,
-	0x6CB2,	0x00,
-	0x6CB3,	0x02,
-	0x6CB5,	0xD9,
-	0x6CB6,	0x00,
-	0x6CB7,	0x02,
-	0x6CB9,	0xD9,
-	0x6CBA,	0x00,
-	0x6CBB,	0x02,
-	0x6CBD,	0xD9,
-	0x6E3F,	0xDE,
-	0x6E47,	0xDE,
-	0x6E4F,	0xDE,
-	0x6E57,	0xDE,
-	0x6E5F,	0xDE,
-	0x6E67,	0xDE,
-	0x6EB3,	0xDE,
-	0x6EB7,	0xDE,
-	0x6EBB,	0xDE,
-	0x6EBF,	0xDE,
-	0x6EC3,	0xDE,
-	0x7476,	0x00,
-	0x7477,	0x00,
-	0x7478,	0x00,
-	0x7509,	0x00,
-	0x750B,	0x00,
-	0x7516,	0x01,
-	0x7524,	0x0C,
-	0x7528,	0x02,
-	0x7530,	0x03,
-	0x7616,	0x0C,
-	0x7619,	0x0C,
-	0x761C,	0x0C,
-	0x761D,	0x0C,
-	0x761E,	0x0C,
-	0x761F,	0x0C,
-	0x7620,	0x00,
-	0x7623,	0x00,
-	0x7624,	0x00,
-	0x7625,	0x00,
-	0x7626,	0x00,
-	0x7627,	0x00,
-	0x7628,	0x00,
-	0x7629,	0x00,
-	0x762A,	0x00,
-	0x762B,	0x00,
-	0x762C,	0x00,
-	0x762D,	0x00,
-	0x762E,	0x00,
-	0x762F,	0x00,
-	0x7631,	0x07,
-	0x7632,	0x07,
-	0x7634,	0x07,
-	0x7635,	0x07,
-	0x76FC,	0x44,
-	0x76FD,	0x2A,
-	0x76FE,	0x2C,
-	0x76FF,	0x26,
-	0x7700,	0x43,
-	0x7701,	0x2A,
-	0x7702,	0x2A,
-	0x7703,	0x26,
-	0x7704,	0x2C,
-	0x7705,	0x2A,
-	0x7706,	0x2A,
-	0x7707,	0x65,
-	0x7708,	0x44,
-	0x7709,	0x48,
-	0x770A,	0x40,
-	0x770B,	0x64,
-	0x770C,	0x44,
-	0x770D,	0x44,
-	0x770E,	0x40,
-	0x770F,	0x48,
-	0x7710,	0x44,
-	0x7711,	0x44,
-	0x7712,	0x45,
-	0x7713,	0x43,
-	0x7714,	0x47,
-	0x7715,	0x40,
-	0x7716,	0x42,
-	0x7717,	0x43,
-	0x7718,	0x43,
-	0x7719,	0x40,
-	0x771A,	0x47,
-	0x771B,	0x43,
-	0x771C,	0x43,
-	0x771D,	0x5D,
-	0x771E,	0x43,
-	0x771F,	0x46,
-	0x7720,	0x40,
-	0x7721,	0x62,
-	0x7722,	0x43,
-	0x7723,	0x43,
-	0x7724,	0x40,
-	0x7725,	0x46,
-	0x7726,	0x43,
-	0x7727,	0x43,
-	0x7728,	0x41,
-	0x7729,	0x43,
-	0x772A,	0x3F,
-	0x772B,	0x41,
-	0x772C,	0x41,
-	0x772D,	0x3F,
-	0x772E,	0x43,
-	0x772F,	0x41,
-	0x7730,	0x41,
-	0x7731,	0x40,
-	0x7732,	0x42,
-	0x7733,	0x3F,
-	0x7734,	0x40,
-	0x7735,	0x40,
-	0x7736,	0x3F,
-	0x7737,	0x42,
-	0x7738,	0x40,
-	0x7739,	0x40,
-	0x773A,	0x40,
-	0x773B,	0x15,
-	0x773C,	0x16,
-	0x773D,	0x09,
-	0x773E,	0x3B,
-	0x773F,	0x15,
-	0x7740,	0x15,
-	0x7741,	0x09,
-	0x7742,	0x16,
-	0x7743,	0x15,
-	0x7744,	0x15,
-	0x7745,	0x63,
-	0x7746,	0x2F,
-	0x7747,	0x2F,
-	0x7748,	0x19,
-	0x7749,	0x5D,
-	0x774A,	0x2F,
-	0x774B,	0x2F,
-	0x774C,	0x19,
-	0x774D,	0x2F,
-	0x774E,	0x2F,
-	0x774F,	0x2F,
-	0x7750,	0x45,
-	0x7751,	0x2F,
-	0x7752,	0x2F,
-	0x7753,	0x24,
-	0x7754,	0x43,
-	0x7755,	0x2F,
-	0x7756,	0x2F,
-	0x7757,	0x24,
-	0x7758,	0x2F,
-	0x7759,	0x2F,
-	0x775A,	0x2F,
-	0x775B,	0x57,
-	0x775C,	0x39,
-	0x775D,	0x36,
-	0x775E,	0x32,
-	0x775F,	0x64,
-	0x7760,	0x39,
-	0x7761,	0x39,
-	0x7762,	0x32,
-	0x7763,	0x36,
-	0x7764,	0x39,
-	0x7765,	0x39,
-	0x7766,	0x3B,
-	0x7767,	0x3B,
-	0x7768,	0x3B,
-	0x7769,	0x3B,
-	0x776A,	0x3B,
-	0x776B,	0x3B,
-	0x776C,	0x3B,
-	0x776D,	0x3B,
-	0x776E,	0x3B,
-	0x776F,	0x41,
-	0x7770,	0x40,
-	0x7771,	0x3F,
-	0x7772,	0x41,
-	0x7773,	0x41,
-	0x7774,	0x3F,
-	0x7775,	0x40,
-	0x7776,	0x41,
-	0x7777,	0x41,
-	0x7778,	0x0F,
-	0x7779,	0x0A,
-	0x777A,	0x0A,
-	0x777B,	0x0A,
-	0x777C,	0x0F,
-	0x777D,	0x0A,
-	0x777E,	0x0A,
-	0x777F,	0x0A,
-	0x7780,	0x0A,
-	0x7781,	0x0A,
-	0x7782,	0x0A,
-	0x7783,	0x0F,
-	0x7784,	0x0A,
-	0x7785,	0x0A,
-	0x7786,	0x0A,
-	0x7787,	0x0F,
-	0x7788,	0x0A,
-	0x7789,	0x0A,
-	0x778A,	0x0A,
-	0x778B,	0x0A,
-	0x778C,	0x0A,
-	0x778D,	0x0A,
-	0x778E,	0x14,
-	0x778F,	0x0A,
-	0x7790,	0x0A,
-	0x7791,	0x0A,
-	0x7792,	0x0F,
-	0x7793,	0x0A,
-	0x7794,	0x0A,
-	0x7795,	0x0A,
-	0x7796,	0x0A,
-	0x7797,	0x0A,
-	0x7798,	0x0A,
-	0x7799,	0x14,
-	0x779A,	0x0A,
-	0x779B,	0x0A,
-	0x779C,	0x0A,
-	0x779D,	0x0F,
-	0x779E,	0x0A,
-	0x779F,	0x0A,
-	0x77A0,	0x0A,
-	0x77A1,	0x0A,
-	0x77A2,	0x0A,
-	0x77A3,	0x0A,
-	0x77A4,	0x0A,
-	0x77A5,	0x0A,
-	0x77A6,	0x0A,
-	0x77A7,	0x0A,
-	0x77A8,	0x0A,
-	0x77A9,	0x0A,
-	0x77AA,	0x0A,
-	0x77AB,	0x0A,
-	0x77AC,	0x0A,
-	0x77AD,	0x0B,
-	0x77AE,	0x0A,
-	0x77AF,	0x0A,
-	0x77B0,	0x0B,
-	0x77B1,	0x0B,
-	0x77B2,	0x0A,
-	0x77B3,	0x0A,
-	0x77B4,	0x0B,
-	0x77B5,	0x0B,
-	0x77F4,	0x01,
-	0x77F5,	0x01,
-	0x77F6,	0x01,
-	0x77F8,	0x01,
-	0x77F9,	0x01,
-	0x77FB,	0x01,
-	0x77FC,	0x01,
-	0x7814,	0x2A,
-	0x7815,	0x01,
-	0x7816,	0x01,
-	0x7818,	0x2A,
-	0x7819,	0x01,
-	0x781A,	0x01,
-	0x781C,	0x01,
-	0x781D,	0x01,
-	0x781E,	0x01,
-	0x781F,	0x2A,
-	0x7820,	0x01,
-	0x7821,	0x01,
-	0x7823,	0x2A,
-	0x7824,	0x01,
-	0x7825,	0x01,
-	0x7827,	0x01,
-	0x7828,	0x01,
-	0x7829,	0x01,
-	0x782A,	0x2A,
-	0x782B,	0x0A,
-	0x782C,	0x0A,
-	0x782E,	0x2A,
-	0x782F,	0x0A,
-	0x7830,	0x0A,
-	0x7832,	0x0A,
-	0x7833,	0x0A,
-	0x7834,	0x0A,
-	0x7835,	0x2A,
-	0x7836,	0x19,
-	0x7837,	0x19,
-	0x7838,	0x2A,
-	0x7839,	0x2A,
-	0x783A,	0x19,
-	0x783B,	0x19,
-	0x783C,	0x2A,
-	0x783D,	0x19,
-	0x783E,	0x19,
-	0x783F,	0x19,
-	0x7840,	0x1D,
-	0x7841,	0x1D,
-	0x7842,	0x2A,
-	0x7843,	0x1D,
-	0x7844,	0x1D,
-	0x7845,	0x2A,
-	0x7846,	0x1D,
-	0x7847,	0x1D,
-	0x7848,	0x1D,
-	0x7849,	0x2A,
-	0x784A,	0x2A,
-	0x784B,	0x2A,
-	0x784C,	0x2A,
-	0x784D,	0x2A,
-	0x784E,	0x2A,
-	0x784F,	0x2A,
-	0x7850,	0x2A,
-	0x7851,	0x2A,
-	0x7853,	0x50,
-	0x7856,	0x50,
-	0x7857,	0x50,
-	0x785A,	0x50,
-	0x785B,	0x50,
-	0x785D,	0x50,
-	0x7860,	0x50,
-	0x7861,	0x50,
-	0x7864,	0x50,
-	0x7865,	0x50,
-	0x7867,	0x50,
-	0x786A,	0x50,
-	0x786B,	0x50,
-	0x7902,	0x15,
-	0x7904,	0x13,
-	0x7905,	0x15,
-	0x7908,	0x13,
-	0x7909,	0x08,
-	0x790B,	0x11,
-	0x790D,	0x0C,
-	0x790E,	0x08,
-	0x790F,	0x08,
-	0x7912,	0x0B,
-	0x7919,	0x06,
-	0x791E,	0x06,
-	0x791F,	0x06,
-	0x7929,	0x00,
-	0x792E,	0x00,
-	0x792F,	0x00,
-	0x7A2A,	0x19,
-	0x7A2B,	0xF1,
-	0x7A2C,	0x0F,
-	0x7A48,	0x0F,
-	0x7A49,	0x01,
-	0x7A4A,	0x03,
-	0x7A51,	0x09,
-	0x7A58,	0x0F,
-	0x7A5D,	0x32,
-	0x7A63,	0x32,
-	0x7A6B,	0x3E,
-	0x7A71,	0x3E,
-	0x7AAD,	0x99,
-	0x7AB3,	0x99,
-	0x7ABB,	0xA5,
-	0x7AC1,	0xA5,
-	0x7AFD,	0x66,
-	0x7B05,	0x72,
-	0x7B26,	0x12,
-	0x7B27,	0x12,
-	0x7B28,	0x12,
-	0x7B29,	0x12,
-	0x7B2A,	0x12,
-	0x7B2B,	0x12,
-	0x7B2C,	0x12,
-	0x7B2D,	0x12,
-	0x7B2E,	0x12,
-	0x7B2F,	0x12,
-	0x7B30,	0x12,
-	0x7B31,	0x12,
-	0x7B32,	0x12,
-	0x7B33,	0x12,
-	0x7B34,	0x12,
-	0x7B35,	0x12,
-	0x7B36,	0x12,
-	0x7B37,	0x12,
-	0x7B38,	0x12,
-	0x7B39,	0x12,
-	0x7B3A,	0x12,
-	0x7B3B,	0x12,
-	0x7B3C,	0x12,
-	0x7B3D,	0x12,
-	0x7B3E,	0x12,
-	0x7B3F,	0x12,
-	0x7B40,	0x12,
-	0x7B41,	0x12,
-	0x7B42,	0x12,
-	0x7B43,	0x12,
-	0x7B44,	0x12,
-	0x7B45,	0x12,
-	0x7B46,	0x12,
-	0x7B47,	0x12,
-	0x7B48,	0x12,
-	0x7B49,	0x12,
-	0x7B4A,	0x12,
-	0x7B4B,	0x12,
-	0x7B4C,	0x12,
-	0x7B4D,	0x12,
-	0x7C73,	0x0B,
-	0x7C74,	0x0B,
-	0x7C75,	0x0B,
-	0x7C76,	0x0B,
-	0x7C77,	0x0B,
-	0x7C78,	0x0B,
-	0x7C79,	0x0B,
-	0x7C7C,	0x0B,
-	0x7C7D,	0x0B,
-	0x7C7E,	0x0B,
-	0x7C7F,	0x0B,
-	0x7C80,	0x0B,
-	0x7C81,	0x0B,
-	0x7C83,	0x0B,
-	0x7C84,	0x0B,
-	0x7C85,	0x0B,
-	0x7C86,	0x0B,
-	0x7C87,	0x0B,
-	0x7C88,	0x0B,
-	0x7CA5,	0x01,
-	0x7CAA,	0x01,
-	0x7CB0,	0x01,
-	0x7CB5,	0x01,
-	0x7CBB,	0x01,
-	0x7CC0,	0x01,
-	0x7CD1,	0x01,
-	0x7CD6,	0x01,
-	0x7CDC,	0x01,
-	0x7CE1,	0x01,
-	0x7CE7,	0x01,
-	0x7CEC,	0x01,
-	0x90B3,	0x80,
-	0x974A,	0x09,
-	0x974B,	0x08,
-	0x9752,	0x0E,
-	0x9753,	0xB4,
-	0x975B,	0x0C,
-	0x9762,	0x09,
-	0x9763,	0x08,
-	0x976A,	0x09,
-	0x976B,	0x08,
-	0x9772,	0x0F,
-	0x9773,	0x7C,
-	0x978A,	0x09,
-	0x978B,	0xE8,
-	0xDDA9,	0x4E,
-	0xDE8D,	0x01,
-	0xE24E,	0x00,
-	0x7854,	0x50,
-	0x7859,	0x50,
-	0x785E,	0x50,
-	0x7863,	0x50,
-	0x7869,	0x50,
-	0x7A5E,	0x00,
-	0x7A5F,	0x32,
-	0x7A66,	0x00,
-	0x7A67,	0x32,
-	0x7A6C,	0x00,
-	0x7A6D,	0x3E,
-	0x7A74,	0x00,
-	0x7A75,	0x3E,
-	0x7AAE,	0x00,
-	0x7AAF,	0x99,
-	0x7AB6,	0x00,
-	0x7AB7,	0x99,
-	0x7ABC,	0x00,
-	0x7ABD,	0xA5,
-	0x7AC4,	0x00,
-	0x7AC5,	0xA5,
-	0x7B00,	0x00,
-	0x7B01,	0x66,
-	0x7B08,	0x00,
-	0x7B09,	0x72,
-	0x7CA6,	0x01,
-	0x7CA9,	0x01,
-	0x7CAC,	0x01,
-	0x7CAD,	0x01,
-	0x7CAE,	0x01,
-	0x7CB1,	0x01,
-	0x7CB4,	0x01,
-	0x7CB7,	0x01,
-	0x7CB8,	0x01,
-	0x7CB9,	0x01,
-	0x7CBC,	0x01,
-	0x7CBF,	0x01,
-	0x7CC2,	0x01,
-	0x7CC3,	0x01,
-	0x7CC4,	0x01,
-	0x7CD2,	0x01,
-	0x7CD5,	0x01,
-	0x7CD8,	0x01,
-	0x7CD9,	0x01,
-	0x7CDA,	0x01,
-	0x7CDD,	0x01,
-	0x7CE0,	0x01,
-	0x7CE3,	0x01,
-	0x7CE4,	0x01,
-	0x7CE5,	0x01,
-	0x7CE8,	0x01,
-	0x7CEB,	0x01,
-	0x7CEE,	0x01,
-	0x7CEF,	0x01,
-	0x7CF0,	0x01,
-	0xAB30,	0x00,
-	0xAB31,	0x3C,
-	0xAB32,	0x00,
-	0xAB33,	0x3C,
-	0xAB34,	0x00,
-	0xAB35,	0x3C,
-	0xAE24,	0x01,
-	0xAE25,	0x61,
-	0xAE26,	0x01,
-	0xAE27,	0xDF,
-	0xAE28,	0x02,
-	0xAE29,	0xD0,
-	0xAB55,	0x23,
-	0xAB57,	0x23,
-	0xAB59,	0x23,
-	0xAB5B,	0x0A,
-	0xAB5D,	0x0A,
-	0xAB5F,	0x0A,
-	0xAB73,	0x23,
-	0xAB75,	0x23,
-	0xAB77,	0x23,
-	0xAB79,	0x0A,
-	0xAB7B,	0x0A,
-	0xAB7D,	0x0A,
-	0x0D08,	0x00,
-	/*EBD Settin,g*/
-	0x3970, 0x00,
-	//MCLP Clock Setting
-	0x306D,	0x00,
-	/* fast mode transition in lbmf */
-	0x31A7, 0x04,
-};
-
-/* B11-S3 4096x3072 @30.1FPS QBIN(VBIN) with All-PD VB_max seamless D*/
-static u16 sayramtele_preview_setting[] = {
-	0x0110, 0x01,
-	//MIPI 	utput setting
-	0x0112,	0x0A,
-	0x0113,	0x0A,
-	0x0114,	0x02,
-	//Line 	ength PCK Setting
-	0x0342,	0x1D,
-	0x0343,	0x4C,
-	0x3850,	0x00,
-	0x3851,	0xCD,
-	//Frame	Length Lines Setting
-	0x0340,	0x0F,
-	0x0341,	0x30,
-	//ROI S	tting
-	0x0344,	0x00,
-	0x0345,	0x00,
-	0x0346,	0x00,
-	0x0347,	0x00,
-	0x0348,	0x1F,
-	0x0349,	0xFF,
-	0x034A,	0x17,
-	0x034B,	0xFF,
-	//Mode 	etting
-	0x0900,	0x01,
-	0x0901,	0x22,
-	0x0902,	0x00,
-	0x3005,	0x02,
-	0x3006,	0x02,
-	0x3140,	0x0A,
-	0x3144,	0x00,
-	0x3148,	0x04,
-	0x31C0,	0x41,
-	0x31C1,	0x41,
-	0x3205,	0x00,
-	0x323C,	0x01,
-	0x39AC,	0x01,
-	//Digit	l Crop & Scaling
-	0x0408,	0x00,
-	0x0409,	0x00,
-	0x040A,	0x00,
-	0x040B,	0x00,
-	0x040C,	0x10,
-	0x040D,	0x00,
-	0x040E,	0x0C,
-	0x040F,	0x00,
-	//Outpu	 Size Setting
-	0x034C,	0x10,
-	0x034D,	0x00,
-	0x034E,	0x0C,
-	0x034F,	0x00,
-	//Clock	Setting
-	0x0301,	0x05,
-	0x0303,	0x02,
-	0x0305,	0x04,
-	0x0306,	0x01,
-	0x0307,	0x6E,
-	0x030B,	0x01,
-	0x030D,	0x06,
-	0x030E,	0x01,
-	0x030F,	0x96,
-	//Other	Setting
-	0x3104,	0x01,
-	0x38A0,	0x00,
-	0x38A1,	0xB4,
-	0x38A2,	0x00,
-	0x38A3,	0xE8,
-	0x38A8,	0x00,
-	0x38A9,	0x38,
-	0x38AA,	0x00,
-	0x38AB,	0x6A,
-	0x38B0,	0x03,
-	0x38B1,	0xFF,
-	0x38B4,	0x03,
-	0x38B5,	0xFF,
-	0x38B8,	0x03,
-	0x38B9,	0xFF,
-	0x38BC,	0x03,
-	0x38BD,	0xFF,
-	0x38D0,	0x0B,
-	0x38D1,	0x04,
-	0x38D2,	0x08,
-	0x38D3,	0xB0,
-	0x38D8,	0x14,
-	0x38E0,	0x00,
-	0x38E1,	0x00,
-	0x38E2,	0x00,
-	0x38E3,	0x00,
-	0x38E4,	0x00,
-	0x38E5,	0x00,
-	0x38E6,	0x00,
-	0x38E7,	0x00,
-	0x3B00,	0x08,
-	0x3B01,	0x8E,
-	0x3B04,	0x00,
-	0x3B05,	0x88,
-	//Integ	ation Setting
-	0x0202,	0x03,
-	0x0203,	0xE8,
-	//Gain 	etting
-	0x0204,	0x13,
-	0x0205,	0x34,
-	0x020E,	0x01,
-	0x020F,	0x00,
-	//PDAF 	YPE2 Setting
-	0x3103,	0x00,
-	0x3422,	0x01,
-	0x3423,	0xFC,
-	//EAE-B	acketing Setting
-	0x0E00,	0x00,
-	//PHASE	PIX VCID Setting
-	0x30A4,	0x03,
-	0x30A6,	0x03,
-	0x30F2,	0x01,
-	0x30F3,	0x01,
-	//PHASE	PIX data type Setting
-	0x30A5,	0x30,
-	0x30A7,	0x30,
-	//PDAF 	YPE2 VCID Setting
-	0x30A2,	0x03,
-	0x30F1,	0x01,
-	//PDAF 	YPE2 data type Setting
-	0x30A3,	0x30,
-	//MIPI 	lobal Timing Setting
-	0x084E,	0x00,
-	0x084F,	0x0F,
-	0x0850,	0x00,
-	0x0851,	0x0D,
-	0x0852,	0x00,
-	0x0853,	0x19,
-	0x0854,	0x00,
-	0x0855,	0x29,
-	0x0858,	0x00,
-	0x0859,	0x1F,
-	0x4112, 0x00, // MON_SEL
-	0x4113, 0x00,
-	0x4048, 0x00, // GPIO_SEL
-	0x4049, 0x00,
-	0x3030, 0x01, // XVS_IO_CTRL
-	0x4101, 0xFF, // MON_XVS
-	0x402D, 0x00, // IO_CTRL_XVS
-	0x5048, 0x00, // MNTTEST1_SEL
-	0x5049, 0x0F,
-	0x520C, 0x00, // VSYNC_POL
-	0x520D, 0x00, // VSYNC_WID
-	0x3031, 0x00, // XVS_CTRL_SEL
-};
-
-/* Reg_B9-S1_QBIN(VBIN)_4096x3072_30.1FPS with PDAF VB_max*/
-static u16 sayramtele_capture_setting[] = {
-	0x0110, 0x01,
-	//MIPI 	utput setting
-	0x0112,	0x0A,
-	0x0113,	0x0A,
-	0x0114,	0x02,
-	//Line 	ength PCK Setting
-	0x0342,	0x1D,
-	0x0343,	0x4C,
-	0x3850,	0x00,
-	0x3851,	0xCD,
-	//Frame	Length Lines Setting
-	0x0340,	0x0F,
-	0x0341,	0x30,
-	//ROI S	tting
-	0x0344,	0x00,
-	0x0345,	0x00,
-	0x0346,	0x00,
-	0x0347,	0x00,
-	0x0348,	0x1F,
-	0x0349,	0xFF,
-	0x034A,	0x17,
-	0x034B,	0xFF,
-	//Mode 	etting
-	0x0900,	0x01,
-	0x0901,	0x22,
-	0x0902,	0x00,
-	0x3005,	0x02,
-	0x3006,	0x02,
-	0x3140,	0x0A,
-	0x3144,	0x00,
-	0x3148,	0x04,
-	0x31C0,	0x41,
-	0x31C1,	0x41,
-	0x3205,	0x00,
-	0x323C,	0x01,
-	0x39AC,	0x01,
-	//Digit	l Crop & Scaling
-	0x0408,	0x00,
-	0x0409,	0x00,
-	0x040A,	0x00,
-	0x040B,	0x00,
-	0x040C,	0x10,
-	0x040D,	0x00,
-	0x040E,	0x0C,
-	0x040F,	0x00,
-	//Outpu	 Size Setting
-	0x034C,	0x10,
-	0x034D,	0x00,
-	0x034E,	0x0C,
-	0x034F,	0x00,
-	//Clock	Setting
-	0x0301,	0x05,
-	0x0303,	0x02,
-	0x0305,	0x04,
-	0x0306,	0x01,
-	0x0307,	0x6E,
-	0x030B,	0x01,
-	0x030D,	0x06,
-	0x030E,	0x01,
-	0x030F,	0x96,
-	//Other	Setting
-	0x3104,	0x01,
-	0x38A0,	0x00,
-	0x38A1,	0xB4,
-	0x38A2,	0x00,
-	0x38A3,	0xE8,
-	0x38A8,	0x00,
-	0x38A9,	0x38,
-	0x38AA,	0x00,
-	0x38AB,	0x6A,
-	0x38B0,	0x03,
-	0x38B1,	0xFF,
-	0x38B4,	0x03,
-	0x38B5,	0xFF,
-	0x38B8,	0x03,
-	0x38B9,	0xFF,
-	0x38BC,	0x03,
-	0x38BD,	0xFF,
-	0x38D0,	0x0B,
-	0x38D1,	0x04,
-	0x38D2,	0x08,
-	0x38D3,	0xB0,
-	0x38D8,	0x14,
-	0x38E0,	0x00,
-	0x38E1,	0x00,
-	0x38E2,	0x00,
-	0x38E3,	0x00,
-	0x38E4,	0x00,
-	0x38E5,	0x00,
-	0x38E6,	0x00,
-	0x38E7,	0x00,
-	0x3B00,	0x08,
-	0x3B01,	0x8E,
-	0x3B04,	0x00,
-	0x3B05,	0x88,
-	//Integ	ation Setting
-	0x0202,	0x03,
-	0x0203,	0xE8,
-	//Gain 	etting
-	0x0204,	0x13,
-	0x0205,	0x34,
-	0x020E,	0x01,
-	0x020F,	0x00,
-	//PDAF 	YPE2 Setting
-	0x3103,	0x00,
-	0x3422,	0x01,
-	0x3423,	0xFC,
-	//EAE-B	acketing Setting
-	0x0E00,	0x00,
-	//PHASE	PIX VCID Setting
-	0x30A4,	0x03,
-	0x30A6,	0x03,
-	0x30F2,	0x01,
-	0x30F3,	0x01,
-	//PHASE	PIX data type Setting
-	0x30A5,	0x30,
-	0x30A7,	0x30,
-	//PDAF 	YPE2 VCID Setting
-	0x30A2,	0x03,
-	0x30F1,	0x01,
-	//PDAF 	YPE2 data type Setting
-	0x30A3,	0x30,
-	//MIPI 	lobal Timing Setting
-	0x084E,	0x00,
-	0x084F,	0x0F,
-	0x0850,	0x00,
-	0x0851,	0x0D,
-	0x0852,	0x00,
-	0x0853,	0x19,
-	0x0854,	0x00,
-	0x0855,	0x29,
-	0x0858,	0x00,
-	0x0859,	0x1F,
-};
-
-/* Reg_B10-S5_QBIN(VBIN)_4096x2304_30.1FPS with PDAF VB_max*/
-static u16 sayramtele_normal_video_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3850, 0x00,
-    0x3851, 0xCD,
-    //Frame Length Lines Setting
-    0x0340, 0x0F,
-    0x0341, 0x30,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x09,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x09,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x87,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0xB4,
-    0x38A2, 0x00,
-    0x38A3, 0xE8,
-    0x38A8, 0x00,
-    0x38A9, 0x38,
-    0x38AA, 0x00,
-    0x38AB, 0x6A,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x0B,
-    0x38D1, 0x04,
-    0x38D2, 0x08,
-    0x38D3, 0xB0,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x08,
-    0x3B01, 0x8E,
-    0x3B04, 0x00,
-    0x3B05, 0x88,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-
-/* B-1 QBIN_4096x2304 @60FPS with PDAF VB_max */
-static u16 sayramtele_hs_video_setting[] = {
-    0x0110, 0x01,
-    /* MIPI output setting */
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    /* Line Length PCK Setting */
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3850, 0x00,
-    0x3851, 0x7F,
-    /* Frame Length Lines Setting */
-    0x0340, 0x0C,
-    0x0341, 0x63,
-    /* ROI Setting */
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    /* Mode Setting */
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x39AC, 0x01,
-    /* Digital Crop & Scaling */
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x09,
-    0x040F, 0x00,
-    /* Output Size Setting */
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x09,
-    0x034F, 0x00,
-    /* Clock Setting */
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x87,
-    /* Other Setting */
-    0x3104, 0x00,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    /* Integration Setting */
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    /* Gain Setting */
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    /* PDAF TYPE2 Setting */
-    0x3103, 0x01,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    /* EAE-Bracketing Setting */
-    0x0E00, 0x00,
-    /* PHASE PIX VCID Setting */
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    /* PHASE PIX data type Setting */
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    /* PDAF TYPE2 VCID Setting */
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    /* PDAF TYPE2 data type Setting */
-    0x30A3, 0x30,
-    /* MIPI Global Timing Setting */
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* B2 4096x3072 @60FPS QBIN(VBIN) with Partial-PD VB_max */
-static u16 sayramtele_slim_video_setting[] = {
-    0x0110, 0x01,
-    /* MIPI output setting */
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    /* Line Length PCK Setting */
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3850, 0x00,
-    0x3851, 0x7F,
-    /* Frame Length Lines Setting */
-    0x0340, 0x0C,
-    0x0341, 0x63,
-    /* ROI Setting */
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    /* Mode Setting */
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x39AC, 0x01,
-    /* Digital Crop & Scaling */
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    /* Output Size Setting */
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    /* Clock Setting */
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x87,
-    /* Other Setting */
-    0x3104, 0x00,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    /* Integration Setting */
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    /* Gain Setting */
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    /* PDAF TYPE2 Setting */
-    0x3103, 0x01,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    /* EAE-Bracketing Setting */
-    0x0E00, 0x00,
-    /* PHASE PIX VCID Setting */
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    /* PHASE PIX data type Setting */
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    /* PDAF TYPE2 VCID Setting */
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    /* PDAF TYPE2 data type Setting */
-    0x30A3, 0x30,
-    /* MIPI Global Timing Setting */
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* L4-S3 4096x3072 @30.1FPS QBIN 2exp-LBMF with Partial-PD VB_max seamless D*/
-static u16 sayramtele_custom1_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3850, 0x00,
-    0x3851, 0x7F,
-    //Frame Length Lines Setting
-    0x0340, 0x18,
-    0x0341, 0x86,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x00,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x01,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x02,
-    0x0E01, 0x03,
-    0x0E02, 0x08,
-    0x0E03, 0x00,
-    0x0E05, 0x03,
-    0x0E06, 0x30,
-    0x0E20, 0x0C,
-    0x0E21, 0x08,
-    0x0E22, 0x13,
-    0x0E23, 0x34,
-    0x0E24, 0x01,
-    0x0E25, 0x00,
-    0x0E27, 0x00,
-    0x0E28, 0x00,
-    0x0E29, 0x00,
-    0x0E2A, 0x01,
-    0x0E2B, 0x2B,
-    0x0E2C, 0x00,
-    0x0E30, 0x00,
-    0x0E31, 0x12,
-    0x0E32, 0x04,
-    0x0E33, 0x30,
-    0x0E34, 0x04,
-    0x0E35, 0x30,
-    0x0E36, 0x04,
-    0x0E37, 0x30,
-    0x0E3C, 0x00,
-    0x0E3D, 0x00,
-    0x0E40, 0x06,
-    0x0E41, 0x04,
-    0x0E42, 0x13,
-    0x0E43, 0x34,
-    0x0E44, 0x01,
-    0x0E45, 0x00,
-    0x0E47, 0x00,
-    0x0E48, 0x00,
-    0x0E49, 0x00,
-    0x0E4A, 0x02,
-    0x0E4B, 0x2B,
-    0x0E4C, 0x00,
-    0x0E50, 0x01,
-    0x0E51, 0x12,
-    0x0E52, 0x03,
-    0x0E53, 0x30,
-    0x0E54, 0x03,
-    0x0E55, 0x30,
-    0x0E56, 0x03,
-    0x0E57, 0x30,
-    0x0E5C, 0x00,
-    0x0E5D, 0x00,
-    0x301C, 0x01,
-    0x31A0, 0x00,
-    0x31A1, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-    0x4112, 0x00, // MON_SEL
-    0x4113, 0x00,
-    0x4048, 0x00, // GPIO_SEL
-    0x4049, 0x00,
-    0x3030, 0x01, // XVS_IO_CTRL
-    0x4101, 0xFF, // MON_XVS
-    0x402D, 0x00, // IO_CTRL_XVS
-    0x5048, 0x00, // MNTTEST1_SEL
-    0x5049, 0x0F,
-    0x520C, 0x00, // VSYNC_POL
-    0x520D, 0x00, // VSYNC_WID
-    0x3031, 0x00, // XVS_CTRL_SEL
-};
-
-/* F5-S3 4096x3072 @30.1FPS Full-RMSC-Crop Qbayer with PDAF VB_max */
-static u16 sayramtele_custom2_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x00,
-    0x3851, 0xF6,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0xA8,
-    //ROI Setting
-    0x0344, 0x08,
-    0x0345, 0x00,
-    0x0346, 0x06,
-    0x0347, 0x00,
-    0x0348, 0x17,
-    0x0349, 0xFF,
-    0x034A, 0x11,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* D Full RMSC 15fps bayer with PDAF VB_max */
-static u16 sayramtele_custom3_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x00,
-    0x3851, 0xF6,
-    //Frame Length Lines Setting
-    0x0340, 0x19,
-    0x0341, 0x68,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x20,
-    0x040D, 0x00,
-    0x040E, 0x18,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x20,
-    0x034D, 0x00,
-    0x034E, 0x18,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x03,
-    0x38D1, 0x20,
-    0x38D2, 0x03,
-    0x38D3, 0x20,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* D Full RMSC 15fps Qbayer with PDAF VB_max */
-static u16 sayramtele_custom4_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x00,
-    0x3851, 0xF6,
-    //Frame Length Lines Setting
-    0x0340, 0x19,
-    0x0341, 0x68,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x20,
-    0x040D, 0x00,
-    0x040E, 0x18,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x20,
-    0x034D, 0x00,
-    0x034E, 0x18,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x03,
-    0x38D1, 0x20,
-    0x38D2, 0x03,
-    0x38D3, 0x20,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* B11-S3 4096x3072 @30.1FPS QBIN(VBIN) with All-PD VB_max seamless D*/
-static u16 sayramtele_custom5_setting[] = {
-    0x0110, 0x01,
-    //MIPI  utput setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line  ength PCK Setting
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3850, 0x00,
-    0x3851, 0xCD,
-    //Frame Length Lines Setting
-    0x0340, 0x0F,
-    0x0341, 0x30,
-    //ROI S tting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode  etting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digit l Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Outpu  Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0xB4,
-    0x38A2, 0x00,
-    0x38A3, 0xE8,
-    0x38A8, 0x00,
-    0x38A9, 0x38,
-    0x38AA, 0x00,
-    0x38AB, 0x6A,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x0B,
-    0x38D1, 0x04,
-    0x38D2, 0x08,
-    0x38D3, 0xB0,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x08,
-    0x3B01, 0x8E,
-    0x3B04, 0x00,
-    0x3B05, 0x88,
-    //Integ ation Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain  etting
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF  YPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-B acketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF  YPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF  YPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI  lobal Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* L3-S5 4096x3072 @24FPS QBIN-LBMF w/ Partial PD VB_MAX seamless reg_A-1 and reg_B */
-static u16 sayramtele_custom6_setting[] = {
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3850, 0x00,
-    0x3851, 0x7F,
-    //Frame Length Lines Setting
-    0x0340, 0x18,
-    0x0341, 0x86,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x00,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x17,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x0902, 0x00,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x00,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x01,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x02,
-    0x0E01, 0x03,
-    0x0E02, 0x08,
-    0x0E03, 0x00,
-    0x0E05, 0x03,
-    0x0E06, 0x30,
-    0x0E20, 0x0C,
-    0x0E21, 0x08,
-    0x0E22, 0x13,
-    0x0E23, 0x34,
-    0x0E24, 0x01,
-    0x0E25, 0x00,
-    0x0E27, 0x00,
-    0x0E28, 0x00,
-    0x0E29, 0x00,
-    0x0E2A, 0x01,
-    0x0E2B, 0x2B,
-    0x0E2C, 0x00,
-    0x0E30, 0x00,
-    0x0E31, 0x12,
-    0x0E32, 0x04,
-    0x0E33, 0x30,
-    0x0E34, 0x04,
-    0x0E35, 0x30,
-    0x0E36, 0x04,
-    0x0E37, 0x30,
-    0x0E3C, 0x00,
-    0x0E3D, 0x00,
-    0x0E40, 0x06,
-    0x0E41, 0x04,
-    0x0E42, 0x13,
-    0x0E43, 0x34,
-    0x0E44, 0x01,
-    0x0E45, 0x00,
-    0x0E47, 0x00,
-    0x0E48, 0x00,
-    0x0E49, 0x00,
-    0x0E4A, 0x02,
-    0x0E4B, 0x2B,
-    0x0E4C, 0x00,
-    0x0E50, 0x01,
-    0x0E51, 0x12,
-    0x0E52, 0x03,
-    0x0E53, 0x30,
-    0x0E54, 0x03,
-    0x0E55, 0x30,
-    0x0E56, 0x03,
-    0x0E57, 0x30,
-    0x0E5C, 0x00,
-    0x0E5D, 0x00,
-    0x301C, 0x01,
-    0x31A0, 0x00,
-    0x31A1, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x00,
-    0x30A6, 0x00,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x00,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* V10 1664x1248 @30.1FPS QBIN(VBIN)-V2H2 */
-static u16 sayramtele_custom7_setting[] = {
-    0x0110, 0x01,
-    /*MIPI output setting*/
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    /*Line Length PCK Setting*/
-    0x0342, 0x1F,
-    0x0343, 0x70,
-    0x3850, 0x01,
-    0x3851, 0xAA,
-    /*Frame Length Lines Setting*/
-    0x0340, 0x07,
-    0x0341, 0x50,
-    /*ROI Setting*/
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x02,
-    0x0347, 0x40,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x15,
-    0x034B, 0xBF,
-    /*Mode Setting*/
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x02,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x04,
-    0x31C0, 0x43,
-    0x31C1, 0x43,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    /*Digital Crop & Scaling*/
-    0x0408, 0x00,
-    0x0409, 0xC0,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x06,
-    0x040D, 0x80,
-    0x040E, 0x04,
-    0x040F, 0xE0,
-    /*Output Size Setting*/
-    0x034C, 0x06,
-    0x034D, 0x80,
-    0x034E, 0x04,
-    0x034F, 0xE0,
-    /*Clock Setting*/
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x00,
-    0x0307, 0xBD,
-    0x030B, 0x04,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x2C,
-    /*Other Setting*/
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x00,
-    0x38D1, 0x32,
-    0x38D2, 0x00,
-    0x38D3, 0x32,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    /*Integration Setting*/
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    /*Gain Setting*/
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    /*PDAF TYPE2 Setting*/
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    /*EAE-Bracketing Setting*/
-    0x0E00, 0x00,
-    /*PHASE PIX VCID Setting*/
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    /*PHASE PIX data type Setting*/
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    /*PDAF TYPE2 VCID Setting*/
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    /*PDAF TYPE2 data type Setting*/
-    0x30A3, 0x30,
-    /*MIPI Global Timing Setting*/
-    0x084E, 0x00,
-    0x084F, 0x03,
-    0x0850, 0x00,
-    0x0851, 0x03,
-    0x0852, 0x00,
-    0x0853, 0x07,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* F6-S5 4096x2304 @30.1FPS Full-RMSC_Crop w/ PD VB_MAX seamless reg_A-1/B */
-static u16 sayramtele_custom8_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x00,
-    0x3851, 0xF6,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0xA8,
-    //ROI Setting
-    0x0344, 0x08,
-    0x0345, 0x00,
-    0x0346, 0x07,
-    0x0347, 0x80,
-    0x0348, 0x17,
-    0x0349, 0xFF,
-    0x034A, 0x10,
-    0x034B, 0x7F,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x09,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x09,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x87,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-static u16 sayramtele_custom9_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x09,
-    0x0343, 0xA4,
-    0x3850, 0x00,
-    0x3851, 0x44,
-    //Frame Length Lines Setting
-    0x0340, 0x05,
-    0x0341, 0xBE,
-    //ROI Setting
-    0x0344, 0x00,
-    0x0345, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x0349, 0xFF,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x01,
-    0x0901, 0x44,
-    0x0902, 0x02,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x43,
-    0x31C1, 0x43,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x08,
-    0x040D, 0x00,
-    0x040E, 0x04,
-    0x040F, 0x80,
-    //Output Size Setting
-    0x034C, 0x08,
-    0x034D, 0x00,
-    0x034E, 0x04,
-    0x034F, 0x80,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x65,
-    //Other Setting
-    0x3104, 0x00,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x00,
-    0x38D1, 0x32,
-    0x38D2, 0x00,
-    0x38D3, 0x32,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    // //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0D,
-    0x0850, 0x00,
-    0x0851, 0x0B,
-    0x0852, 0x00,
-    0x0853, 0x17,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/* L4-S3 4096x3072 @30.1FPS QBIN 2exp-LBMF with Partial-PD VB_max seamless D*/
-static u16 sayramtele_custom10_setting[] = {
-    0x0110, 0x01,
-    //MIPI output setting
-    0x0112, 0x0A,
-    0x0113, 0x0A,
-    0x0114, 0x02,
-    //Line Length PCK Setting
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3850, 0x00,
-    0x3851, 0xF6,
-    //Frame Length Lines Setting
-    0x0340, 0x0C,
-    0x0341, 0xA8,
-    //ROI Setting
-    0x0344, 0x08,
-    0x0345, 0x00,
-    0x0346, 0x06,
-    0x0347, 0x00,
-    0x0348, 0x17,
-    0x0349, 0xFF,
-    0x034A, 0x11,
-    0x034B, 0xFF,
-    //Mode Setting
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x0902, 0x00,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3140, 0x0A,
-    0x3144, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x323C, 0x01,
-    0x39AC, 0x01,
-    //Digital Crop & Scaling
-    0x0408, 0x00,
-    0x0409, 0x00,
-    0x040A, 0x00,
-    0x040B, 0x00,
-    0x040C, 0x10,
-    0x040D, 0x00,
-    0x040E, 0x0C,
-    0x040F, 0x00,
-    //Output Size Setting
-    0x034C, 0x10,
-    0x034D, 0x00,
-    0x034E, 0x0C,
-    0x034F, 0x00,
-    //Clock Setting
-    0x0301, 0x05,
-    0x0303, 0x02,
-    0x0305, 0x04,
-    0x0306, 0x01,
-    0x0307, 0x6E,
-    0x030B, 0x01,
-    0x030D, 0x06,
-    0x030E, 0x01,
-    0x030F, 0x96,
-    //Other Setting
-    0x3104, 0x01,
-    0x38A0, 0x00,
-    0x38A1, 0x00,
-    0x38A2, 0x00,
-    0x38A3, 0x00,
-    0x38A8, 0x00,
-    0x38A9, 0x00,
-    0x38AA, 0x00,
-    0x38AB, 0x00,
-    0x38B0, 0x03,
-    0x38B1, 0xFF,
-    0x38B4, 0x03,
-    0x38B5, 0xFF,
-    0x38B8, 0x03,
-    0x38B9, 0xFF,
-    0x38BC, 0x03,
-    0x38BD, 0xFF,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x38D8, 0x14,
-    0x38E0, 0x00,
-    0x38E1, 0x00,
-    0x38E2, 0x00,
-    0x38E3, 0x00,
-    0x38E4, 0x00,
-    0x38E5, 0x00,
-    0x38E6, 0x00,
-    0x38E7, 0x00,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B04, 0x00,
-    0x3B05, 0x00,
-    //Integration Setting
-    0x0202, 0x03,
-    0x0203, 0xE8,
-    //Gain Setting
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x020E, 0x01,
-    0x020F, 0x00,
-    //PDAF TYPE2 Setting
-    0x3103, 0x00,
-    0x3422, 0x01,
-    0x3423, 0xFC,
-    //EAE-Bracketing Setting
-    0x0E00, 0x00,
-    //PHASE PIX VCID Setting
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x30F2, 0x01,
-    0x30F3, 0x01,
-    //PHASE PIX data type Setting
-    0x30A5, 0x30,
-    0x30A7, 0x30,
-    //PDAF TYPE2 VCID Setting
-    0x30A2, 0x03,
-    0x30F1, 0x01,
-    //PDAF TYPE2 data type Setting
-    0x30A3, 0x30,
-    //MIPI Global Timing Setting
-    0x084E, 0x00,
-    0x084F, 0x0F,
-    0x0850, 0x00,
-    0x0851, 0x0D,
-    0x0852, 0x00,
-    0x0853, 0x19,
-    0x0854, 0x00,
-    0x0855, 0x29,
-    0x0858, 0x00,
-    0x0859, 0x1F,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 sayramtele_seamless_preview[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3851, 0xCD,
-    0x0340, 0x0F,
-    0x0341, 0x30,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x01,
-    0x38A1, 0xB4,
-    0x38A3, 0xE8,
-    0x38A9, 0x38,
-    0x38AB, 0x6A,
-    0x38D0, 0x0B,
-    0x38D1, 0x04,
-    0x38D2, 0x08,
-    0x38D3, 0xB0,
-    0x3B00, 0x08,
-    0x3B01, 0x8E,
-    0x3B05, 0x88,
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-
-/*B/mode2 F4-S5/mode12*/
-static u16 sayramtele_seamless_normal_video[] = {
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3851, 0xCD,
-    0x0340, 0x0F,
-    0x0341, 0x30,
-    0x0344, 0x00,
-    0x0346, 0x03,
-    0x0347, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x14,
-    0x034B, 0xFF,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x38A1, 0xB4,
-    0x38A3, 0xE8,
-    0x38A9, 0x38,
-    0x38AB, 0x6A,
-    0x38D0, 0x0B,
-    0x38D1, 0x04,
-    0x38D2, 0x08,
-    0x38D3, 0xB0,
-    0x3B00, 0x08,
-    0x3B01, 0x8E,
-    0x3B05, 0x88,
-    0x0204, 0x13,
-    0x0205, 0x34,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 sayramtele_seamless_custom1[] = {
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3851, 0x7F,
-    0x0340, 0x18,
-    0x0341, 0x86,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x00,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x01,
-    0x0E00, 0x02,
-    0x0E01, 0x03,
-    0x0E02, 0x08,
-    0x0E03, 0x00,
-    0x0E05, 0x03,
-    0x0E06, 0x30,
-    0x0E20, 0x0C,
-    0x0E21, 0x08,
-    0x0E22, 0x13,
-    0x0E23, 0x34,
-    0x0E24, 0x01,
-    0x0E25, 0x00,
-    0x0E27, 0x00,
-    0x0E28, 0x00,
-    0x0E29, 0x00,
-    0x0E2A, 0x01,
-    0x0E2B, 0x2B,
-    0x0E2C, 0x00,
-    0x0E30, 0x00,
-    0x0E31, 0x12,
-    0x0E32, 0x04,
-    0x0E33, 0x30,
-    0x0E34, 0x04,
-    0x0E35, 0x30,
-    0x0E36, 0x04,
-    0x0E37, 0x30,
-    0x0E3C, 0x00,
-    0x0E3D, 0x00,
-    0x0E40, 0x06,
-    0x0E41, 0x04,
-    0x0E42, 0x13,
-    0x0E43, 0x34,
-    0x0E44, 0x01,
-    0x0E45, 0x00,
-    0x0E47, 0x00,
-    0x0E48, 0x00,
-    0x0E49, 0x00,
-    0x0E4A, 0x02,
-    0x0E4B, 0x2B,
-    0x0E4C, 0x00,
-    0x0E50, 0x01,
-    0x0E51, 0x12,
-    0x0E52, 0x03,
-    0x0E53, 0x30,
-    0x0E54, 0x03,
-    0x0E55, 0x30,
-    0x0E56, 0x03,
-    0x0E57, 0x30,
-    0x0E5C, 0x00,
-    0x0E5D, 0x00,
-    0x301C, 0x01,
-    0x31A0, 0x00,
-    0x31A1, 0x00,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 sayramtele_seamless_custom2[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xF6,
-    0x0340, 0x0C,
-    0x0341, 0xA8,
-    0x0344, 0x08,
-    0x0346, 0x06,
-    0x0348, 0x17,
-    0x034A, 0x11,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x01,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 sayramtele_seamless_custom3[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xF6,
-    0x0340, 0x19,
-    0x0341, 0x68,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x323C, 0x01,
-    0x040C, 0x20,
-    0x040E, 0x18,
-    0x034C, 0x20,
-    0x034E, 0x18,
-    0x3104, 0x01,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x20,
-    0x38D2, 0x03,
-    0x38D3, 0x20,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 sayramtele_seamless_custom4[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xF6,
-    0x0340, 0x19,
-    0x0341, 0x68,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x040C, 0x20,
-    0x040E, 0x18,
-    0x034C, 0x20,
-    0x034E, 0x18,
-    0x3104, 0x01,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x20,
-    0x38D2, 0x03,
-    0x38D3, 0x20,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-
-/*B11-S3/mode9 L4-S3/mode10*/
-static u16 sayramtele_seamless_custom5[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0342, 0x1D,
-    0x0343, 0x4C,
-    0x3851, 0xCD,
-    0x0340, 0x0F,
-    0x0341, 0x30,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x02,
-    0x3006, 0x02,
-    0x3148, 0x04,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x01,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x01,
-    0x38A1, 0xB4,
-    0x38A3, 0xE8,
-    0x38A9, 0x38,
-    0x38AB, 0x6A,
-    0x38D0, 0x0B,
-    0x38D1, 0x04,
-    0x38D2, 0x08,
-    0x38D3, 0xB0,
-    0x3B00, 0x08,
-    0x3B01, 0x8E,
-    0x3B05, 0x88,
-    0x0204, 0x13,
-    0x0205, 0x34,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-
-/*B11-S3/mode9 L4-S3/mode10*/
-static u16 sayramtele_seamless_custom6[] = {
-    0x0342, 0x12,
-    0x0343, 0x08,
-    0x3851, 0x7F,
-    0x0340, 0x18,
-    0x0341, 0x86,
-    0x0344, 0x00,
-    0x0346, 0x00,
-    0x0348, 0x1F,
-    0x034A, 0x17,
-    0x0900, 0x01,
-    0x0901, 0x22,
-    0x3005, 0x06,
-    0x3006, 0x01,
-    0x3148, 0x00,
-    0x31C0, 0x41,
-    0x31C1, 0x41,
-    0x3205, 0x00,
-    0x323C, 0x02,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x00,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x06,
-    0x38D1, 0x0E,
-    0x38D2, 0x06,
-    0x38D3, 0x0E,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x01,
-    0x0E00, 0x02,
-    0x0E01, 0x03,
-    0x0E02, 0x08,
-    0x0E03, 0x00,
-    0x0E05, 0x03,
-    0x0E06, 0x30,
-    0x0E20, 0x0C,
-    0x0E21, 0x08,
-    0x0E22, 0x13,
-    0x0E23, 0x34,
-    0x0E24, 0x01,
-    0x0E25, 0x00,
-    0x0E27, 0x00,
-    0x0E28, 0x00,
-    0x0E29, 0x00,
-    0x0E2A, 0x01,
-    0x0E2B, 0x2B,
-    0x0E2C, 0x00,
-    0x0E30, 0x00,
-    0x0E31, 0x12,
-    0x0E32, 0x04,
-    0x0E33, 0x30,
-    0x0E34, 0x04,
-    0x0E35, 0x30,
-    0x0E36, 0x04,
-    0x0E37, 0x30,
-    0x0E3C, 0x00,
-    0x0E3D, 0x00,
-    0x0E40, 0x06,
-    0x0E41, 0x04,
-    0x0E42, 0x13,
-    0x0E43, 0x34,
-    0x0E44, 0x01,
-    0x0E45, 0x00,
-    0x0E47, 0x00,
-    0x0E48, 0x00,
-    0x0E49, 0x00,
-    0x0E4A, 0x02,
-    0x0E4B, 0x2B,
-    0x0E4C, 0x00,
-    0x0E50, 0x01,
-    0x0E51, 0x12,
-    0x0E52, 0x03,
-    0x0E53, 0x30,
-    0x0E54, 0x03,
-    0x0E55, 0x30,
-    0x0E56, 0x03,
-    0x0E57, 0x30,
-    0x0E5C, 0x00,
-    0x0E5D, 0x00,
-    0x301C, 0x01,
-    0x31A0, 0x00,
-    0x31A1, 0x00,
-};
-
-/*B/mode2 F4-S5/mode12*/
-static u16 sayramtele_seamless_custom8[] = {
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xF6,
-    0x0340, 0x0C,
-    0x0341, 0xA8,
-    0x0344, 0x08,
-    0x0346, 0x07,
-    0x0347, 0x80,
-    0x0348, 0x17,
-    0x034A, 0x10,
-    0x034B, 0x7F,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-};
-
-/*B3-S3/mode0 L2-S3/mode5 F3-S3/mode6 D/mode7 D/mode8 F3-S3/mode14*/
-static u16 sayramtele_seamless_custom10[] = {
-    0x0110, 0x01,
-    0x30A2, 0x03,
-    0x30A4, 0x03,
-    0x30A6, 0x03,
-    0x0341, 0xA8,
-    0x0342, 0x23,
-    0x0343, 0x00,
-    0x3851, 0xF6,
-    0x0340, 0x0C,
-    0x0341, 0xB4,
-    0x0344, 0x08,
-    0x0346, 0x06,
-    0x0348, 0x17,
-    0x034A, 0x11,
-    0x0900, 0x00,
-    0x0901, 0x11,
-    0x3005, 0x00,
-    0x3006, 0x00,
-    0x3148, 0x00,
-    0x31C0, 0x01,
-    0x31C1, 0x01,
-    0x3205, 0x01,
-    0x323C, 0x01,
-    0x040C, 0x10,
-    0x040E, 0x0C,
-    0x034C, 0x10,
-    0x034E, 0x0C,
-    0x3104, 0x01,
-    0x38A1, 0x00,
-    0x38A3, 0x00,
-    0x38A9, 0x00,
-    0x38AB, 0x00,
-    0x38D0, 0x03,
-    0x38D1, 0x52,
-    0x38D2, 0x03,
-    0x38D3, 0x52,
-    0x3B00, 0x00,
-    0x3B01, 0x00,
-    0x3B05, 0x00,
-    0x0204, 0x00,
-    0x0205, 0x00,
-    0x3103, 0x00,
-    0x0E00, 0x00,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtele_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtele_ana_gain_table.h
deleted file mode 100755
index dce8095a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtele_ana_gain_table.h
+++ /dev/null
@@ -1,3906 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 sayramtele_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __SAYRAMTELE_ANA_GAIN_TABLE_H__
-#define __SAYRAMTELE_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 sayramtele_ana_gain_table[] = {
-	1024,
-	1025,
-	1026,
-	1027,
-	1028,
-	1029,
-	1030,
-	1031,
-	1032,
-	1033,
-	1034,
-	1035,
-	1036,
-	1037,
-	1038,
-	1039,
-	1040,
-	1041,
-	1042,
-	1043,
-	1044,
-	1045,
-	1046,
-	1047,
-	1048,
-	1049,
-	1050,
-	1051,
-	1052,
-	1053,
-	1054,
-	1055,
-	1056,
-	1057,
-	1058,
-	1059,
-	1060,
-	1061,
-	1062,
-	1063,
-	1064,
-	1065,
-	1066,
-	1067,
-	1068,
-	1069,
-	1070,
-	1071,
-	1072,
-	1073,
-	1074,
-	1075,
-	1076,
-	1077,
-	1078,
-	1079,
-	1080,
-	1081,
-	1082,
-	1083,
-	1084,
-	1085,
-	1086,
-	1087,
-	1088,
-	1089,
-	1090,
-	1091,
-	1092,
-	1093,
-	1094,
-	1095,
-	1096,
-	1097,
-	1098,
-	1099,
-	1100,
-	1101,
-	1102,
-	1103,
-	1104,
-	1105,
-	1106,
-	1107,
-	1108,
-	1109,
-	1110,
-	1111,
-	1112,
-	1113,
-	1114,
-	1115,
-	1116,
-	1117,
-	1118,
-	1119,
-	1120,
-	1121,
-	1122,
-	1123,
-	1124,
-	1125,
-	1126,
-	1127,
-	1128,
-	1129,
-	1130,
-	1131,
-	1132,
-	1133,
-	1134,
-	1135,
-	1136,
-	1137,
-	1138,
-	1139,
-	1140,
-	1141,
-	1142,
-	1143,
-	1144,
-	1145,
-	1146,
-	1147,
-	1148,
-	1149,
-	1150,
-	1151,
-	1152,
-	1153,
-	1154,
-	1155,
-	1156,
-	1157,
-	1158,
-	1159,
-	1160,
-	1161,
-	1162,
-	1163,
-	1164,
-	1165,
-	1166,
-	1167,
-	1168,
-	1169,
-	1170,
-	1171,
-	1172,
-	1173,
-	1174,
-	1175,
-	1176,
-	1177,
-	1178,
-	1179,
-	1180,
-	1181,
-	1182,
-	1183,
-	1184,
-	1185,
-	1186,
-	1187,
-	1188,
-	1189,
-	1190,
-	1191,
-	1192,
-	1193,
-	1194,
-	1195,
-	1196,
-	1197,
-	1198,
-	1199,
-	1200,
-	1201,
-	1202,
-	1203,
-	1204,
-	1205,
-	1206,
-	1207,
-	1208,
-	1209,
-	1210,
-	1211,
-	1212,
-	1213,
-	1214,
-	1215,
-	1216,
-	1217,
-	1218,
-	1219,
-	1220,
-	1221,
-	1222,
-	1223,
-	1224,
-	1225,
-	1226,
-	1227,
-	1228,
-	1229,
-	1230,
-	1231,
-	1232,
-	1233,
-	1234,
-	1235,
-	1236,
-	1237,
-	1238,
-	1239,
-	1240,
-	1241,
-	1242,
-	1243,
-	1244,
-	1245,
-	1246,
-	1247,
-	1248,
-	1249,
-	1250,
-	1251,
-	1252,
-	1253,
-	1254,
-	1255,
-	1256,
-	1257,
-	1258,
-	1259,
-	1260,
-	1261,
-	1262,
-	1263,
-	1264,
-	1265,
-	1266,
-	1267,
-	1268,
-	1269,
-	1270,
-	1271,
-	1272,
-	1273,
-	1274,
-	1275,
-	1276,
-	1277,
-	1278,
-	1279,
-	1280,
-	1281,
-	1282,
-	1283,
-	1284,
-	1285,
-	1286,
-	1287,
-	1288,
-	1289,
-	1290,
-	1291,
-	1292,
-	1293,
-	1294,
-	1295,
-	1296,
-	1297,
-	1298,
-	1299,
-	1300,
-	1301,
-	1302,
-	1303,
-	1304,
-	1305,
-	1306,
-	1307,
-	1308,
-	1309,
-	1310,
-	1311,
-	1312,
-	1313,
-	1314,
-	1315,
-	1316,
-	1317,
-	1318,
-	1319,
-	1320,
-	1321,
-	1322,
-	1323,
-	1324,
-	1325,
-	1326,
-	1327,
-	1328,
-	1329,
-	1330,
-	1331,
-	1332,
-	1333,
-	1334,
-	1335,
-	1336,
-	1337,
-	1338,
-	1339,
-	1340,
-	1341,
-	1342,
-	1343,
-	1344,
-	1345,
-	1346,
-	1347,
-	1348,
-	1349,
-	1350,
-	1351,
-	1352,
-	1353,
-	1354,
-	1355,
-	1356,
-	1357,
-	1358,
-	1359,
-	1360,
-	1361,
-	1362,
-	1363,
-	1364,
-	1365,
-	1366,
-	1367,
-	1368,
-	1369,
-	1370,
-	1371,
-	1372,
-	1373,
-	1374,
-	1375,
-	1376,
-	1377,
-	1378,
-	1379,
-	1380,
-	1381,
-	1382,
-	1383,
-	1384,
-	1385,
-	1386,
-	1387,
-	1388,
-	1389,
-	1390,
-	1391,
-	1392,
-	1393,
-	1394,
-	1395,
-	1396,
-	1397,
-	1398,
-	1399,
-	1400,
-	1401,
-	1402,
-	1403,
-	1404,
-	1405,
-	1406,
-	1407,
-	1408,
-	1409,
-	1410,
-	1411,
-	1412,
-	1413,
-	1414,
-	1415,
-	1416,
-	1417,
-	1418,
-	1419,
-	1420,
-	1421,
-	1422,
-	1423,
-	1424,
-	1425,
-	1426,
-	1427,
-	1428,
-	1429,
-	1430,
-	1431,
-	1432,
-	1433,
-	1434,
-	1435,
-	1436,
-	1437,
-	1438,
-	1439,
-	1440,
-	1441,
-	1442,
-	1443,
-	1444,
-	1445,
-	1446,
-	1447,
-	1448,
-	1449,
-	1450,
-	1451,
-	1452,
-	1453,
-	1454,
-	1455,
-	1456,
-	1457,
-	1458,
-	1459,
-	1460,
-	1461,
-	1462,
-	1463,
-	1464,
-	1465,
-	1466,
-	1467,
-	1468,
-	1469,
-	1470,
-	1471,
-	1472,
-	1473,
-	1474,
-	1475,
-	1476,
-	1477,
-	1478,
-	1479,
-	1480,
-	1481,
-	1482,
-	1483,
-	1484,
-	1485,
-	1486,
-	1487,
-	1488,
-	1489,
-	1490,
-	1491,
-	1492,
-	1493,
-	1494,
-	1495,
-	1496,
-	1497,
-	1498,
-	1499,
-	1500,
-	1501,
-	1502,
-	1503,
-	1504,
-	1505,
-	1506,
-	1507,
-	1508,
-	1509,
-	1510,
-	1511,
-	1512,
-	1513,
-	1514,
-	1515,
-	1516,
-	1517,
-	1518,
-	1519,
-	1520,
-	1521,
-	1522,
-	1523,
-	1524,
-	1525,
-	1526,
-	1527,
-	1528,
-	1529,
-	1530,
-	1531,
-	1532,
-	1533,
-	1534,
-	1535,
-	1536,
-	1537,
-	1538,
-	1539,
-	1540,
-	1541,
-	1542,
-	1543,
-	1544,
-	1545,
-	1546,
-	1547,
-	1548,
-	1549,
-	1550,
-	1551,
-	1552,
-	1553,
-	1554,
-	1555,
-	1556,
-	1557,
-	1558,
-	1559,
-	1560,
-	1561,
-	1562,
-	1563,
-	1564,
-	1565,
-	1566,
-	1567,
-	1568,
-	1569,
-	1570,
-	1571,
-	1572,
-	1573,
-	1574,
-	1575,
-	1576,
-	1577,
-	1578,
-	1579,
-	1580,
-	1581,
-	1582,
-	1583,
-	1584,
-	1585,
-	1586,
-	1587,
-	1588,
-	1589,
-	1590,
-	1591,
-	1592,
-	1593,
-	1594,
-	1595,
-	1596,
-	1597,
-	1598,
-	1599,
-	1600,
-	1601,
-	1602,
-	1603,
-	1604,
-	1605,
-	1606,
-	1607,
-	1608,
-	1609,
-	1610,
-	1611,
-	1612,
-	1613,
-	1614,
-	1615,
-	1616,
-	1617,
-	1618,
-	1619,
-	1620,
-	1621,
-	1622,
-	1623,
-	1624,
-	1625,
-	1626,
-	1627,
-	1628,
-	1629,
-	1630,
-	1631,
-	1632,
-	1633,
-	1634,
-	1635,
-	1636,
-	1637,
-	1638,
-	1639,
-	1640,
-	1641,
-	1642,
-	1643,
-	1644,
-	1645,
-	1646,
-	1647,
-	1648,
-	1649,
-	1650,
-	1651,
-	1652,
-	1653,
-	1654,
-	1655,
-	1656,
-	1657,
-	1658,
-	1659,
-	1660,
-	1661,
-	1662,
-	1663,
-	1664,
-	1665,
-	1666,
-	1667,
-	1668,
-	1669,
-	1670,
-	1671,
-	1672,
-	1673,
-	1674,
-	1675,
-	1676,
-	1677,
-	1678,
-	1679,
-	1680,
-	1681,
-	1682,
-	1683,
-	1684,
-	1685,
-	1686,
-	1687,
-	1688,
-	1689,
-	1690,
-	1691,
-	1692,
-	1693,
-	1694,
-	1695,
-	1696,
-	1697,
-	1698,
-	1699,
-	1700,
-	1701,
-	1702,
-	1703,
-	1704,
-	1705,
-	1706,
-	1707,
-	1708,
-	1709,
-	1710,
-	1711,
-	1712,
-	1713,
-	1714,
-	1715,
-	1716,
-	1717,
-	1718,
-	1719,
-	1720,
-	1721,
-	1722,
-	1723,
-	1724,
-	1725,
-	1726,
-	1727,
-	1728,
-	1729,
-	1730,
-	1731,
-	1732,
-	1733,
-	1734,
-	1735,
-	1736,
-	1737,
-	1738,
-	1739,
-	1740,
-	1741,
-	1742,
-	1743,
-	1744,
-	1745,
-	1746,
-	1747,
-	1748,
-	1749,
-	1750,
-	1751,
-	1752,
-	1753,
-	1754,
-	1755,
-	1756,
-	1757,
-	1758,
-	1759,
-	1760,
-	1761,
-	1762,
-	1763,
-	1764,
-	1765,
-	1766,
-	1767,
-	1768,
-	1769,
-	1770,
-	1771,
-	1772,
-	1773,
-	1774,
-	1775,
-	1776,
-	1777,
-	1778,
-	1779,
-	1780,
-	1781,
-	1782,
-	1783,
-	1784,
-	1785,
-	1786,
-	1787,
-	1788,
-	1789,
-	1790,
-	1791,
-	1792,
-	1793,
-	1794,
-	1795,
-	1796,
-	1797,
-	1798,
-	1799,
-	1800,
-	1801,
-	1802,
-	1803,
-	1804,
-	1805,
-	1806,
-	1807,
-	1808,
-	1809,
-	1810,
-	1811,
-	1812,
-	1813,
-	1814,
-	1815,
-	1816,
-	1817,
-	1818,
-	1819,
-	1820,
-	1821,
-	1822,
-	1823,
-	1824,
-	1825,
-	1826,
-	1827,
-	1828,
-	1829,
-	1830,
-	1831,
-	1832,
-	1833,
-	1834,
-	1835,
-	1836,
-	1837,
-	1838,
-	1839,
-	1840,
-	1841,
-	1842,
-	1843,
-	1844,
-	1845,
-	1846,
-	1847,
-	1848,
-	1849,
-	1850,
-	1851,
-	1852,
-	1853,
-	1854,
-	1855,
-	1856,
-	1857,
-	1858,
-	1859,
-	1860,
-	1861,
-	1862,
-	1863,
-	1864,
-	1865,
-	1866,
-	1867,
-	1868,
-	1869,
-	1870,
-	1871,
-	1872,
-	1873,
-	1874,
-	1875,
-	1876,
-	1877,
-	1878,
-	1879,
-	1880,
-	1881,
-	1882,
-	1883,
-	1884,
-	1885,
-	1886,
-	1887,
-	1888,
-	1889,
-	1890,
-	1891,
-	1892,
-	1893,
-	1894,
-	1895,
-	1896,
-	1897,
-	1898,
-	1899,
-	1900,
-	1901,
-	1902,
-	1903,
-	1904,
-	1905,
-	1906,
-	1907,
-	1908,
-	1909,
-	1910,
-	1911,
-	1912,
-	1913,
-	1914,
-	1915,
-	1916,
-	1917,
-	1918,
-	1919,
-	1920,
-	1921,
-	1922,
-	1923,
-	1924,
-	1925,
-	1926,
-	1927,
-	1928,
-	1929,
-	1930,
-	1931,
-	1932,
-	1933,
-	1934,
-	1935,
-	1936,
-	1937,
-	1938,
-	1939,
-	1940,
-	1941,
-	1942,
-	1943,
-	1944,
-	1945,
-	1946,
-	1947,
-	1948,
-	1949,
-	1950,
-	1951,
-	1952,
-	1953,
-	1954,
-	1955,
-	1956,
-	1957,
-	1958,
-	1959,
-	1960,
-	1961,
-	1962,
-	1963,
-	1964,
-	1965,
-	1966,
-	1967,
-	1968,
-	1969,
-	1970,
-	1971,
-	1972,
-	1973,
-	1974,
-	1975,
-	1976,
-	1977,
-	1978,
-	1979,
-	1980,
-	1981,
-	1982,
-	1983,
-	1984,
-	1985,
-	1986,
-	1987,
-	1988,
-	1989,
-	1990,
-	1991,
-	1992,
-	1993,
-	1994,
-	1995,
-	1996,
-	1997,
-	1998,
-	1999,
-	2000,
-	2001,
-	2002,
-	2003,
-	2004,
-	2005,
-	2006,
-	2007,
-	2008,
-	2009,
-	2010,
-	2011,
-	2012,
-	2013,
-	2014,
-	2015,
-	2016,
-	2017,
-	2018,
-	2019,
-	2020,
-	2021,
-	2022,
-	2023,
-	2024,
-	2025,
-	2026,
-	2027,
-	2028,
-	2029,
-	2030,
-	2031,
-	2032,
-	2033,
-	2034,
-	2035,
-	2036,
-	2037,
-	2038,
-	2039,
-	2040,
-	2041,
-	2042,
-	2043,
-	2044,
-	2045,
-	2046,
-	2047,
-	2048,
-	2049,
-	2050,
-	2051,
-	2052,
-	2053,
-	2054,
-	2055,
-	2056,
-	2057,
-	2058,
-	2059,
-	2060,
-	2061,
-	2062,
-	2063,
-	2064,
-	2065,
-	2066,
-	2067,
-	2068,
-	2069,
-	2070,
-	2071,
-	2072,
-	2073,
-	2074,
-	2075,
-	2076,
-	2077,
-	2078,
-	2079,
-	2080,
-	2081,
-	2082,
-	2083,
-	2084,
-	2085,
-	2086,
-	2087,
-	2088,
-	2089,
-	2090,
-	2091,
-	2092,
-	2094,
-	2095,
-	2096,
-	2097,
-	2098,
-	2099,
-	2100,
-	2101,
-	2102,
-	2103,
-	2104,
-	2105,
-	2106,
-	2107,
-	2108,
-	2109,
-	2110,
-	2111,
-	2112,
-	2114,
-	2115,
-	2116,
-	2117,
-	2118,
-	2119,
-	2120,
-	2121,
-	2122,
-	2123,
-	2124,
-	2125,
-	2126,
-	2128,
-	2129,
-	2130,
-	2131,
-	2132,
-	2133,
-	2134,
-	2135,
-	2136,
-	2137,
-	2138,
-	2139,
-	2141,
-	2142,
-	2143,
-	2144,
-	2145,
-	2146,
-	2147,
-	2148,
-	2149,
-	2150,
-	2152,
-	2153,
-	2154,
-	2155,
-	2156,
-	2157,
-	2158,
-	2159,
-	2160,
-	2162,
-	2163,
-	2164,
-	2165,
-	2166,
-	2167,
-	2168,
-	2169,
-	2170,
-	2172,
-	2173,
-	2174,
-	2175,
-	2176,
-	2177,
-	2178,
-	2179,
-	2181,
-	2182,
-	2183,
-	2184,
-	2185,
-	2186,
-	2187,
-	2189,
-	2190,
-	2191,
-	2192,
-	2193,
-	2194,
-	2195,
-	2197,
-	2198,
-	2199,
-	2200,
-	2201,
-	2202,
-	2204,
-	2205,
-	2206,
-	2207,
-	2208,
-	2209,
-	2211,
-	2212,
-	2213,
-	2214,
-	2215,
-	2216,
-	2218,
-	2219,
-	2220,
-	2221,
-	2222,
-	2223,
-	2225,
-	2226,
-	2227,
-	2228,
-	2229,
-	2231,
-	2232,
-	2233,
-	2234,
-	2235,
-	2236,
-	2238,
-	2239,
-	2240,
-	2241,
-	2242,
-	2244,
-	2245,
-	2246,
-	2247,
-	2248,
-	2250,
-	2251,
-	2252,
-	2253,
-	2255,
-	2256,
-	2257,
-	2258,
-	2259,
-	2261,
-	2262,
-	2263,
-	2264,
-	2265,
-	2267,
-	2268,
-	2269,
-	2270,
-	2272,
-	2273,
-	2274,
-	2275,
-	2277,
-	2278,
-	2279,
-	2280,
-	2281,
-	2283,
-	2284,
-	2285,
-	2286,
-	2288,
-	2289,
-	2290,
-	2291,
-	2293,
-	2294,
-	2295,
-	2296,
-	2298,
-	2299,
-	2300,
-	2302,
-	2303,
-	2304,
-	2305,
-	2307,
-	2308,
-	2309,
-	2310,
-	2312,
-	2313,
-	2314,
-	2316,
-	2317,
-	2318,
-	2319,
-	2321,
-	2322,
-	2323,
-	2325,
-	2326,
-	2327,
-	2328,
-	2330,
-	2331,
-	2332,
-	2334,
-	2335,
-	2336,
-	2337,
-	2339,
-	2340,
-	2341,
-	2343,
-	2344,
-	2345,
-	2347,
-	2348,
-	2349,
-	2351,
-	2352,
-	2353,
-	2355,
-	2356,
-	2357,
-	2359,
-	2360,
-	2361,
-	2362,
-	2364,
-	2365,
-	2366,
-	2368,
-	2369,
-	2371,
-	2372,
-	2373,
-	2375,
-	2376,
-	2377,
-	2379,
-	2380,
-	2381,
-	2383,
-	2384,
-	2385,
-	2387,
-	2388,
-	2389,
-	2391,
-	2392,
-	2394,
-	2395,
-	2396,
-	2398,
-	2399,
-	2400,
-	2402,
-	2403,
-	2404,
-	2406,
-	2407,
-	2409,
-	2410,
-	2411,
-	2413,
-	2414,
-	2416,
-	2417,
-	2418,
-	2420,
-	2421,
-	2423,
-	2424,
-	2425,
-	2427,
-	2428,
-	2430,
-	2431,
-	2432,
-	2434,
-	2435,
-	2437,
-	2438,
-	2439,
-	2441,
-	2442,
-	2444,
-	2445,
-	2447,
-	2448,
-	2449,
-	2451,
-	2452,
-	2454,
-	2455,
-	2457,
-	2458,
-	2460,
-	2461,
-	2462,
-	2464,
-	2465,
-	2467,
-	2468,
-	2470,
-	2471,
-	2473,
-	2474,
-	2475,
-	2477,
-	2478,
-	2480,
-	2481,
-	2483,
-	2484,
-	2486,
-	2487,
-	2489,
-	2490,
-	2492,
-	2493,
-	2495,
-	2496,
-	2498,
-	2499,
-	2501,
-	2502,
-	2504,
-	2505,
-	2507,
-	2508,
-	2510,
-	2511,
-	2513,
-	2514,
-	2516,
-	2517,
-	2519,
-	2520,
-	2522,
-	2523,
-	2525,
-	2526,
-	2528,
-	2529,
-	2531,
-	2532,
-	2534,
-	2535,
-	2537,
-	2538,
-	2540,
-	2542,
-	2543,
-	2545,
-	2546,
-	2548,
-	2549,
-	2551,
-	2552,
-	2554,
-	2555,
-	2557,
-	2559,
-	2560,
-	2562,
-	2563,
-	2565,
-	2566,
-	2568,
-	2570,
-	2571,
-	2573,
-	2574,
-	2576,
-	2577,
-	2579,
-	2581,
-	2582,
-	2584,
-	2585,
-	2587,
-	2589,
-	2590,
-	2592,
-	2593,
-	2595,
-	2597,
-	2598,
-	2600,
-	2601,
-	2603,
-	2605,
-	2606,
-	2608,
-	2610,
-	2611,
-	2613,
-	2614,
-	2616,
-	2618,
-	2619,
-	2621,
-	2623,
-	2624,
-	2626,
-	2628,
-	2629,
-	2631,
-	2632,
-	2634,
-	2636,
-	2637,
-	2639,
-	2641,
-	2642,
-	2644,
-	2646,
-	2647,
-	2649,
-	2651,
-	2652,
-	2654,
-	2656,
-	2657,
-	2659,
-	2661,
-	2663,
-	2664,
-	2666,
-	2668,
-	2669,
-	2671,
-	2673,
-	2674,
-	2676,
-	2678,
-	2680,
-	2681,
-	2683,
-	2685,
-	2686,
-	2688,
-	2690,
-	2692,
-	2693,
-	2695,
-	2697,
-	2699,
-	2700,
-	2702,
-	2704,
-	2706,
-	2707,
-	2709,
-	2711,
-	2713,
-	2714,
-	2716,
-	2718,
-	2720,
-	2721,
-	2723,
-	2725,
-	2727,
-	2728,
-	2730,
-	2732,
-	2734,
-	2736,
-	2737,
-	2739,
-	2741,
-	2743,
-	2744,
-	2746,
-	2748,
-	2750,
-	2752,
-	2753,
-	2755,
-	2757,
-	2759,
-	2761,
-	2763,
-	2764,
-	2766,
-	2768,
-	2770,
-	2772,
-	2774,
-	2775,
-	2777,
-	2779,
-	2781,
-	2783,
-	2785,
-	2786,
-	2788,
-	2790,
-	2792,
-	2794,
-	2796,
-	2798,
-	2799,
-	2801,
-	2803,
-	2805,
-	2807,
-	2809,
-	2811,
-	2813,
-	2814,
-	2816,
-	2818,
-	2820,
-	2822,
-	2824,
-	2826,
-	2828,
-	2830,
-	2832,
-	2833,
-	2835,
-	2837,
-	2839,
-	2841,
-	2843,
-	2845,
-	2847,
-	2849,
-	2851,
-	2853,
-	2855,
-	2857,
-	2859,
-	2861,
-	2863,
-	2864,
-	2866,
-	2868,
-	2870,
-	2872,
-	2874,
-	2876,
-	2878,
-	2880,
-	2882,
-	2884,
-	2886,
-	2888,
-	2890,
-	2892,
-	2894,
-	2896,
-	2898,
-	2900,
-	2902,
-	2904,
-	2906,
-	2908,
-	2910,
-	2912,
-	2914,
-	2916,
-	2918,
-	2920,
-	2922,
-	2924,
-	2926,
-	2928,
-	2931,
-	2933,
-	2935,
-	2937,
-	2939,
-	2941,
-	2943,
-	2945,
-	2947,
-	2949,
-	2951,
-	2953,
-	2955,
-	2957,
-	2959,
-	2962,
-	2964,
-	2966,
-	2968,
-	2970,
-	2972,
-	2974,
-	2976,
-	2978,
-	2981,
-	2983,
-	2985,
-	2987,
-	2989,
-	2991,
-	2993,
-	2995,
-	2998,
-	3000,
-	3002,
-	3004,
-	3006,
-	3008,
-	3010,
-	3013,
-	3015,
-	3017,
-	3019,
-	3021,
-	3024,
-	3026,
-	3028,
-	3030,
-	3032,
-	3034,
-	3037,
-	3039,
-	3041,
-	3043,
-	3045,
-	3048,
-	3050,
-	3052,
-	3054,
-	3057,
-	3059,
-	3061,
-	3063,
-	3066,
-	3068,
-	3070,
-	3072,
-	3075,
-	3077,
-	3079,
-	3081,
-	3084,
-	3086,
-	3088,
-	3090,
-	3093,
-	3095,
-	3097,
-	3100,
-	3102,
-	3104,
-	3106,
-	3109,
-	3111,
-	3113,
-	3116,
-	3118,
-	3120,
-	3123,
-	3125,
-	3127,
-	3130,
-	3132,
-	3134,
-	3137,
-	3139,
-	3141,
-	3144,
-	3146,
-	3148,
-	3151,
-	3153,
-	3155,
-	3158,
-	3160,
-	3163,
-	3165,
-	3167,
-	3170,
-	3172,
-	3175,
-	3177,
-	3179,
-	3182,
-	3184,
-	3187,
-	3189,
-	3192,
-	3194,
-	3196,
-	3199,
-	3201,
-	3204,
-	3206,
-	3209,
-	3211,
-	3214,
-	3216,
-	3218,
-	3221,
-	3223,
-	3226,
-	3228,
-	3231,
-	3233,
-	3236,
-	3238,
-	3241,
-	3243,
-	3246,
-	3248,
-	3251,
-	3253,
-	3256,
-	3258,
-	3261,
-	3264,
-	3266,
-	3269,
-	3271,
-	3274,
-	3276,
-	3279,
-	3281,
-	3284,
-	3287,
-	3289,
-	3292,
-	3294,
-	3297,
-	3300,
-	3302,
-	3305,
-	3307,
-	3310,
-	3313,
-	3315,
-	3318,
-	3320,
-	3323,
-	3326,
-	3328,
-	3331,
-	3334,
-	3336,
-	3339,
-	3342,
-	3344,
-	3347,
-	3350,
-	3352,
-	3355,
-	3358,
-	3360,
-	3363,
-	3366,
-	3368,
-	3371,
-	3374,
-	3377,
-	3379,
-	3382,
-	3385,
-	3387,
-	3390,
-	3393,
-	3396,
-	3398,
-	3401,
-	3404,
-	3407,
-	3410,
-	3412,
-	3415,
-	3418,
-	3421,
-	3423,
-	3426,
-	3429,
-	3432,
-	3435,
-	3437,
-	3440,
-	3443,
-	3446,
-	3449,
-	3452,
-	3454,
-	3457,
-	3460,
-	3463,
-	3466,
-	3469,
-	3472,
-	3474,
-	3477,
-	3480,
-	3483,
-	3486,
-	3489,
-	3492,
-	3495,
-	3498,
-	3501,
-	3504,
-	3506,
-	3509,
-	3512,
-	3515,
-	3518,
-	3521,
-	3524,
-	3527,
-	3530,
-	3533,
-	3536,
-	3539,
-	3542,
-	3545,
-	3548,
-	3551,
-	3554,
-	3557,
-	3560,
-	3563,
-	3566,
-	3569,
-	3572,
-	3575,
-	3578,
-	3581,
-	3584,
-	3587,
-	3591,
-	3594,
-	3597,
-	3600,
-	3603,
-	3606,
-	3609,
-	3612,
-	3615,
-	3618,
-	3622,
-	3625,
-	3628,
-	3631,
-	3634,
-	3637,
-	3640,
-	3644,
-	3647,
-	3650,
-	3653,
-	3656,
-	3659,
-	3663,
-	3666,
-	3669,
-	3672,
-	3675,
-	3679,
-	3682,
-	3685,
-	3688,
-	3692,
-	3695,
-	3698,
-	3701,
-	3705,
-	3708,
-	3711,
-	3715,
-	3718,
-	3721,
-	3724,
-	3728,
-	3731,
-	3734,
-	3738,
-	3741,
-	3744,
-	3748,
-	3751,
-	3754,
-	3758,
-	3761,
-	3765,
-	3768,
-	3771,
-	3775,
-	3778,
-	3782,
-	3785,
-	3788,
-	3792,
-	3795,
-	3799,
-	3802,
-	3806,
-	3809,
-	3813,
-	3816,
-	3819,
-	3823,
-	3826,
-	3830,
-	3833,
-	3837,
-	3840,
-	3844,
-	3847,
-	3851,
-	3855,
-	3858,
-	3862,
-	3865,
-	3869,
-	3872,
-	3876,
-	3880,
-	3883,
-	3887,
-	3890,
-	3894,
-	3898,
-	3901,
-	3905,
-	3908,
-	3912,
-	3916,
-	3919,
-	3923,
-	3927,
-	3930,
-	3934,
-	3938,
-	3942,
-	3945,
-	3949,
-	3953,
-	3956,
-	3960,
-	3964,
-	3968,
-	3971,
-	3975,
-	3979,
-	3983,
-	3986,
-	3990,
-	3994,
-	3998,
-	4002,
-	4006,
-	4009,
-	4013,
-	4017,
-	4021,
-	4025,
-	4029,
-	4032,
-	4036,
-	4040,
-	4044,
-	4048,
-	4052,
-	4056,
-	4060,
-	4064,
-	4068,
-	4072,
-	4076,
-	4080,
-	4084,
-	4088,
-	4092,
-	4096,
-	4100,
-	4104,
-	4108,
-	4112,
-	4116,
-	4120,
-	4124,
-	4128,
-	4132,
-	4136,
-	4140,
-	4144,
-	4148,
-	4152,
-	4156,
-	4161,
-	4165,
-	4169,
-	4173,
-	4177,
-	4181,
-	4185,
-	4190,
-	4194,
-	4198,
-	4202,
-	4206,
-	4211,
-	4215,
-	4219,
-	4223,
-	4228,
-	4232,
-	4236,
-	4240,
-	4245,
-	4249,
-	4253,
-	4258,
-	4262,
-	4266,
-	4271,
-	4275,
-	4279,
-	4284,
-	4288,
-	4293,
-	4297,
-	4301,
-	4306,
-	4310,
-	4315,
-	4319,
-	4324,
-	4328,
-	4332,
-	4337,
-	4341,
-	4346,
-	4350,
-	4355,
-	4359,
-	4364,
-	4369,
-	4373,
-	4378,
-	4382,
-	4387,
-	4391,
-	4396,
-	4401,
-	4405,
-	4410,
-	4415,
-	4419,
-	4424,
-	4429,
-	4433,
-	4438,
-	4443,
-	4447,
-	4452,
-	4457,
-	4462,
-	4466,
-	4471,
-	4476,
-	4481,
-	4485,
-	4490,
-	4495,
-	4500,
-	4505,
-	4510,
-	4514,
-	4519,
-	4524,
-	4529,
-	4534,
-	4539,
-	4544,
-	4549,
-	4554,
-	4559,
-	4563,
-	4568,
-	4573,
-	4578,
-	4583,
-	4588,
-	4593,
-	4599,
-	4604,
-	4609,
-	4614,
-	4619,
-	4624,
-	4629,
-	4634,
-	4639,
-	4644,
-	4650,
-	4655,
-	4660,
-	4665,
-	4670,
-	4675,
-	4681,
-	4686,
-	4691,
-	4696,
-	4702,
-	4707,
-	4712,
-	4718,
-	4723,
-	4728,
-	4733,
-	4739,
-	4744,
-	4750,
-	4755,
-	4760,
-	4766,
-	4771,
-	4777,
-	4782,
-	4788,
-	4793,
-	4798,
-	4804,
-	4809,
-	4815,
-	4821,
-	4826,
-	4832,
-	4837,
-	4843,
-	4848,
-	4854,
-	4860,
-	4865,
-	4871,
-	4877,
-	4882,
-	4888,
-	4894,
-	4899,
-	4905,
-	4911,
-	4917,
-	4922,
-	4928,
-	4934,
-	4940,
-	4946,
-	4951,
-	4957,
-	4963,
-	4969,
-	4975,
-	4981,
-	4987,
-	4993,
-	4999,
-	5005,
-	5011,
-	5017,
-	5023,
-	5029,
-	5035,
-	5041,
-	5047,
-	5053,
-	5059,
-	5065,
-	5071,
-	5077,
-	5084,
-	5090,
-	5096,
-	5102,
-	5108,
-	5115,
-	5121,
-	5127,
-	5133,
-	5140,
-	5146,
-	5152,
-	5159,
-	5165,
-	5171,
-	5178,
-	5184,
-	5190,
-	5197,
-	5203,
-	5210,
-	5216,
-	5223,
-	5229,
-	5236,
-	5242,
-	5249,
-	5256,
-	5262,
-	5269,
-	5275,
-	5282,
-	5289,
-	5295,
-	5302,
-	5309,
-	5315,
-	5322,
-	5329,
-	5336,
-	5343,
-	5349,
-	5356,
-	5363,
-	5370,
-	5377,
-	5384,
-	5391,
-	5398,
-	5405,
-	5412,
-	5418,
-	5426,
-	5433,
-	5440,
-	5447,
-	5454,
-	5461,
-	5468,
-	5475,
-	5482,
-	5489,
-	5497,
-	5504,
-	5511,
-	5518,
-	5526,
-	5533,
-	5540,
-	5548,
-	5555,
-	5562,
-	5570,
-	5577,
-	5584,
-	5592,
-	5599,
-	5607,
-	5614,
-	5622,
-	5629,
-	5637,
-	5645,
-	5652,
-	5660,
-	5667,
-	5675,
-	5683,
-	5691,
-	5698,
-	5706,
-	5714,
-	5722,
-	5729,
-	5737,
-	5745,
-	5753,
-	5761,
-	5769,
-	5777,
-	5785,
-	5793,
-	5801,
-	5809,
-	5817,
-	5825,
-	5833,
-	5841,
-	5849,
-	5857,
-	5866,
-	5874,
-	5882,
-	5890,
-	5899,
-	5907,
-	5915,
-	5924,
-	5932,
-	5940,
-	5949,
-	5957,
-	5966,
-	5974,
-	5983,
-	5991,
-	6000,
-	6009,
-	6017,
-	6026,
-	6034,
-	6043,
-	6052,
-	6061,
-	6069,
-	6078,
-	6087,
-	6096,
-	6105,
-	6114,
-	6123,
-	6132,
-	6141,
-	6150,
-	6159,
-	6168,
-	6177,
-	6186,
-	6195,
-	6204,
-	6213,
-	6223,
-	6232,
-	6241,
-	6250,
-	6260,
-	6269,
-	6278,
-	6288,
-	6297,
-	6307,
-	6316,
-	6326,
-	6335,
-	6345,
-	6355,
-	6364,
-	6374,
-	6384,
-	6393,
-	6403,
-	6413,
-	6423,
-	6432,
-	6442,
-	6452,
-	6462,
-	6472,
-	6482,
-	6492,
-	6502,
-	6512,
-	6523,
-	6533,
-	6543,
-	6553,
-	6563,
-	6574,
-	6584,
-	6594,
-	6605,
-	6615,
-	6626,
-	6636,
-	6647,
-	6657,
-	6668,
-	6678,
-	6689,
-	6700,
-	6710,
-	6721,
-	6732,
-	6743,
-	6754,
-	6765,
-	6775,
-	6786,
-	6797,
-	6808,
-	6820,
-	6831,
-	6842,
-	6853,
-	6864,
-	6875,
-	6887,
-	6898,
-	6909,
-	6921,
-	6932,
-	6944,
-	6955,
-	6967,
-	6978,
-	6990,
-	7002,
-	7013,
-	7025,
-	7037,
-	7049,
-	7061,
-	7073,
-	7084,
-	7096,
-	7108,
-	7121,
-	7133,
-	7145,
-	7157,
-	7169,
-	7182,
-	7194,
-	7206,
-	7219,
-	7231,
-	7244,
-	7256,
-	7269,
-	7281,
-	7294,
-	7307,
-	7319,
-	7332,
-	7345,
-	7358,
-	7371,
-	7384,
-	7397,
-	7410,
-	7423,
-	7436,
-	7449,
-	7463,
-	7476,
-	7489,
-	7503,
-	7516,
-	7530,
-	7543,
-	7557,
-	7570,
-	7584,
-	7598,
-	7612,
-	7626,
-	7639,
-	7653,
-	7667,
-	7681,
-	7695,
-	7710,
-	7724,
-	7738,
-	7752,
-	7767,
-	7781,
-	7796,
-	7810,
-	7825,
-	7839,
-	7854,
-	7869,
-	7884,
-	7898,
-	7913,
-	7928,
-	7943,
-	7958,
-	7973,
-	7989,
-	8004,
-	8019,
-	8035,
-	8050,
-	8065,
-	8081,
-	8097,
-	8112,
-	8128,
-	8144,
-	8160,
-	8176,
-	8192,
-	8208,
-	8224,
-	8240,
-	8256,
-	8272,
-	8289,
-	8305,
-	8322,
-	8338,
-	8355,
-	8371,
-	8388,
-	8405,
-	8422,
-	8439,
-	8456,
-	8473,
-	8490,
-	8507,
-	8525,
-	8542,
-	8559,
-	8577,
-	8594,
-	8612,
-	8630,
-	8648,
-	8665,
-	8683,
-	8701,
-	8719,
-	8738,
-	8756,
-	8774,
-	8793,
-	8811,
-	8830,
-	8848,
-	8867,
-	8886,
-	8905,
-	8924,
-	8943,
-	8962,
-	8981,
-	9000,
-	9020,
-	9039,
-	9058,
-	9078,
-	9098,
-	9118,
-	9137,
-	9157,
-	9177,
-	9198,
-	9218,
-	9238,
-	9258,
-	9279,
-	9300,
-	9320,
-	9341,
-	9362,
-	9383,
-	9404,
-	9425,
-	9446,
-	9467,
-	9489,
-	9510,
-	9532,
-	9554,
-	9576,
-	9597,
-	9619,
-	9642,
-	9664,
-	9686,
-	9709,
-	9731,
-	9754,
-	9776,
-	9799,
-	9822,
-	9845,
-	9868,
-	9892,
-	9915,
-	9939,
-	9962,
-	9986,
-	10010,
-	10034,
-	10058,
-	10082,
-	10106,
-	10131,
-	10155,
-	10180,
-	10205,
-	10230,
-	10255,
-	10280,
-	10305,
-	10330,
-	10356,
-	10381,
-	10407,
-	10433,
-	10459,
-	10485,
-	10512,
-	10538,
-	10564,
-	10591,
-	10618,
-	10645,
-	10672,
-	10699,
-	10727,
-	10754,
-	10782,
-	10810,
-	10837,
-	10866,
-	10894,
-	10922,
-	10951,
-	10979,
-	11008,
-	11037,
-	11066,
-	11096,
-	11125,
-	11155,
-	11184,
-	11214,
-	11244,
-	11275,
-	11305,
-	11335,
-	11366,
-	11397,
-	11428,
-	11459,
-	11491,
-	11522,
-	11554,
-	11586,
-	11618,
-	11650,
-	11683,
-	11715,
-	11748,
-	11781,
-	11814,
-	11848,
-	11881,
-	11915,
-	11949,
-	11983,
-	12018,
-	12052,
-	12087,
-	12122,
-	12157,
-	12192,
-	12228,
-	12264,
-	12300,
-	12336,
-	12372,
-	12409,
-	12446,
-	12483,
-	12520,
-	12557,
-	12595,
-	12633,
-	12671,
-	12710,
-	12748,
-	12787,
-	12826,
-	12865,
-	12905,
-	12945,
-	12985,
-	13025,
-	13066,
-	13107,
-	13148,
-	13189,
-	13231,
-	13273,
-	13315,
-	13357,
-	13400,
-	13443,
-	13486,
-	13530,
-	13573,
-	13617,
-	13662,
-	13706,
-	13751,
-	13797,
-	13842,
-	13888,
-	13934,
-	13981,
-	14027,
-	14074,
-	14122,
-	14169,
-	14217,
-	14266,
-	14315,
-	14364,
-	14413,
-	14463,
-	14513,
-	14563,
-	14614,
-	14665,
-	14716,
-	14768,
-	14820,
-	14873,
-	14926,
-	14979,
-	15033,
-	15087,
-	15141,
-	15196,
-	15252,
-	15307,
-	15363,
-	15420,
-	15477,
-	15534,
-	15592,
-	15650,
-	15709,
-	15768,
-	15827,
-	15887,
-	15947,
-	16008,
-	16070,
-	16131,
-	16194,
-	16256,
-	16320,
-	16384,
-	16448,
-	16513,
-	16578,
-	16644,
-	16710,
-	16777,
-	16844,
-	16912,
-	16980,
-	17050,
-	17119,
-	17189,
-	17260,
-	17331,
-	17403,
-	17476,
-	17549,
-	17623,
-	17697,
-	17772,
-	17848,
-	17924,
-	18001,
-	18078,
-	18157,
-	18236,
-	18315,
-	18396,
-	18477,
-	18558,
-	18641,
-	18724,
-	18808,
-	18893,
-	18978,
-	19065,
-	19152,
-	19239,
-	19328,
-	19418,
-	19508,
-	19599,
-	19691,
-	19784,
-	19878,
-	19972,
-	20068,
-	20164,
-	20262,
-	20360,
-	20460,
-	20560,
-	20661,
-	20763,
-	20867,
-	20971,
-	21076,
-	21183,
-	21290,
-	21399,
-	21509,
-	21620,
-	21732,
-	21845,
-	21959,
-	22075,
-	22192,
-	22310,
-	22429,
-	22550,
-	22671,
-	22795,
-	22919,
-	23045,
-	23172,
-	23301,
-	23431,
-	23563,
-	23696,
-	23831,
-	23967,
-	24105,
-	24244,
-	24385,
-	24528,
-	24672,
-	24818,
-	24966,
-	25115,
-	25266,
-	25420,
-	25575,
-	25731,
-	25890,
-	26051,
-	26214,
-	26379,
-	26546,
-	26715,
-	26886,
-	27060,
-	27235,
-	27413,
-	27594,
-	27776,
-	27962,
-	28149,
-	28339,
-	28532,
-	28728,
-	28926,
-	29127,
-	29330,
-	29537,
-	29746,
-	29959,
-	30174,
-	30393,
-	30615,
-	30840,
-	31068,
-	31300,
-	31536,
-	31775,
-	32017,
-	32263,
-	32513,
-	32768,
-	33026,
-	33288,
-	33554,
-	33825,
-	34100,
-	34379,
-	34663,
-	34952,
-	35246,
-	35544,
-	35848,
-	36157,
-	36472,
-	36792,
-	37117,
-	37449,
-	37786,
-	38130,
-	38479,
-	38836,
-	39199,
-	39568,
-	39945,
-	40329,
-	40721,
-	41120,
-	41527,
-	41943,
-	42366,
-	42799,
-	43240,
-	43690,
-	44150,
-	44620,
-	45100,
-	45590,
-	46091,
-	46603,
-	47127,
-	47662,
-	48210,
-	48770,
-	49344,
-	49932,
-	50533,
-	51150,
-	51781,
-	52428,
-	53092,
-	53773,
-	54471,
-	55188,
-	55924,
-	56679,
-	57456,
-	58254,
-	59074,
-	59918,
-	60787,
-	61680,
-	62601,
-	63550,
-	64527,
-	65536,
-};
-
-#define SAYRAMTELE_GAIN_TABLE_SIZE 432
-static kal_uint32 sayramtele_gain_table[SAYRAMTELE_GAIN_TABLE_SIZE] = {
-	1024,
-	1040,
-	1056,
-	1072,
-	1088,
-	1104,
-	1120,
-	1136,
-	1152,
-	1168,
-	1184,
-	1200,
-	1216,
-	1232,
-	1248,
-	1264,
-	1280,
-	1296,
-	1312,
-	1328,
-	1344,
-	1360,
-	1376,
-	1392,
-	1408,
-	1424,
-	1440,
-	1456,
-	1472,
-	1488,
-	1504,
-	1520,
-	1536,
-	1552,
-	1568,
-	1584,
-	1600,
-	1616,
-	1632,
-	1648,
-	1664,
-	1680,
-	1696,
-	1712,
-	1728,
-	1744,
-	1760,
-	1776,
-	1792,
-	1808,
-	1824,
-	1840,
-	1856,
-	1872,
-	1888,
-	1904,
-	1920,
-	1936,
-	1952,
-	1968,
-	1984,
-	2000,
-	2016,
-	2032,
-	2048,
-	2064,
-	2080,
-	2096,
-	2112,
-	2128,
-	2144,
-	2160,
-	2176,
-	2192,
-	2208,
-	2224,
-	2240,
-	2256,
-	2272,
-	2288,
-	2304,
-	2320,
-	2336,
-	2352,
-	2368,
-	2384,
-	2400,
-	2416,
-	2432,
-	2448,
-	2464,
-	2480,
-	2496,
-	2512,
-	2528,
-	2544,
-	2560,
-	2576,
-	2592,
-	2608,
-	2624,
-	2640,
-	2656,
-	2672,
-	2688,
-	2704,
-	2720,
-	2736,
-	2752,
-	2768,
-	2784,
-	2800,
-	2816,
-	2832,
-	2848,
-	2864,
-	2880,
-	2896,
-	2912,
-	2928,
-	2944,
-	2960,
-	2976,
-	2992,
-	3008,
-	3024,
-	3040,
-	3056,
-	3072,
-	3088,
-	3104,
-	3120,
-	3136,
-	3152,
-	3168,
-	3184,
-	3200,
-	3216,
-	3232,
-	3248,
-	3264,
-	3280,
-	3296,
-	3312,
-	3328,
-	3344,
-	3360,
-	3376,
-	3392,
-	3408,
-	3424,
-	3440,
-	3456,
-	3472,
-	3488,
-	3504,
-	3520,
-	3536,
-	3552,
-	3568,
-	3584,
-	3600,
-	3616,
-	3632,
-	3648,
-	3664,
-	3680,
-	3696,
-	3712,
-	3728,
-	3744,
-	3760,
-	3776,
-	3792,
-	3808,
-	3824,
-	3840,
-	3856,
-	3872,
-	3888,
-	3904,
-	3920,
-	3936,
-	3952,
-	3968,
-	3984,
-	4000,
-	4016,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4160,
-	4176,
-	4192,
-	4208,
-	4224,
-	4240,
-	4256,
-	4272,
-	4288,
-	4304,
-	4320,
-	4336,
-	4368,
-	4384,
-	4400,
-	4416,
-	4432,
-	4448,
-	4480,
-	4496,
-	4512,
-	4528,
-	4544,
-	4576,
-	4592,
-	4608,
-	4624,
-	4656,
-	4672,
-	4688,
-	4720,
-	4736,
-	4752,
-	4784,
-	4800,
-	4832,
-	4848,
-	4864,
-	4896,
-	4912,
-	4944,
-	4960,
-	4992,
-	5008,
-	5040,
-	5088,
-	5104,
-	5136,
-	5152,
-	5184,
-	5216,
-	5232,
-	5264,
-	5280,
-	5312,
-	5344,
-	5376,
-	5392,
-	5424,
-	5456,
-	5488,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6096,
-	6128,
-	6160,
-	6192,
-	6240,
-	6272,
-	6304,
-	6352,
-	6384,
-	6432,
-	6464,
-	6512,
-	6544,
-	6592,
-	6624,
-	6672,
-	6720,
-	6752,
-	6800,
-	6848,
-	6896,
-	6944,
-	6976,
-	7024,
-	7072,
-	7120,
-	7168,
-	7216,
-	7280,
-	7328,
-	7376,
-	7424,
-	7488,
-	7536,
-	7584,
-	7648,
-	7696,
-	7760,
-	7824,
-	7872,
-	7936,
-	8000,
-	8064,
-	8128,
-	8192,
-	8256,
-	8320,
-	8384,
-	8448,
-	8512,
-	8592,
-	8656,
-	8736,
-	8800,
-	8880,
-	8960,
-	9024,
-	9104,
-	9184,
-	9264,
-	9360,
-	9440,
-	9520,
-	9616,
-	9696,
-	9792,
-	9888,
-	9984,
-	10080,
-	10176,
-	10272,
-	10368,
-	10480,
-	10576,
-	10688,
-	10800,
-	10912,
-	11024,
-	11152,
-	11264,
-	11392,
-	11520,
-	11648,
-	11776,
-	11904,
-	12048,
-	12192,
-	12336,
-	12480,
-	12624,
-	12784,
-	12944,
-	13104,
-	13264,
-	13440,
-	13616,
-	13792,
-	13968,
-	14160,
-	14352,
-	14560,
-	14768,
-	14976,
-	15184,
-	15408,
-	15648,
-	15872,
-	16128,
-	16384,
-	16640,
-	16912,
-	17184,
-	17472,
-	17760,
-	18064,
-	18384,
-	18720,
-	19056,
-	19408,
-	19776,
-	20160,
-	20560,
-	20960,
-	21392,
-	21840,
-	22304,
-	22784,
-	23296,
-	23824,
-	24384,
-	24960,
-	25568,
-	26208,
-	26880,
-	27584,
-	28336,
-	29120,
-	29952,
-	30832,
-	31760,
-	32768,
-	33824,
-	34944,
-	36144,
-	37440,
-	38832,
-	40320,
-	41936,
-	43680,
-	45584,
-	47648,
-	49920,
-	52416,
-	55184,
-	58240,
-	61680,
-	65536,
-};
-
-static kal_uint16 sayramtele_gain_reg[SAYRAMTELE_GAIN_TABLE_SIZE] = {
-	0,
-	240,
-	496,
-	720,
-	944,
-	1168,
-	1392,
-	1616,
-	1808,
-	2000,
-	2192,
-	2384,
-	2576,
-	2768,
-	2928,
-	3088,
-	3280,
-	3408,
-	3568,
-	3728,
-	3888,
-	4048,
-	4176,
-	4304,
-	4464,
-	4592,
-	4720,
-	4848,
-	4976,
-	5104,
-	5200,
-	5328,
-	5456,
-	5552,
-	5680,
-	5776,
-	5872,
-	6000,
-	6096,
-	6192,
-	6288,
-	6384,
-	6480,
-	6576,
-	6672,
-	6736,
-	6832,
-	6928,
-	7024,
-	7088,
-	7184,
-	7248,
-	7344,
-	7408,
-	7472,
-	7568,
-	7632,
-	7696,
-	7760,
-	7856,
-	7920,
-	7984,
-	8048,
-	8112,
-	8192,
-	8240,
-	8304,
-	8368,
-	8432,
-	8496,
-	8544,
-	8608,
-	8672,
-	8720,
-	8784,
-	8832,
-	8880,
-	8944,
-	8992,
-	9040,
-	9088,
-	9152,
-	9200,
-	9248,
-	9296,
-	9344,
-	9392,
-	9440,
-	9472,
-	9520,
-	9568,
-	9616,
-	9648,
-	9696,
-	9744,
-	9776,
-	9824,
-	9856,
-	9904,
-	9936,
-	9984,
-	10016,
-	10064,
-	10096,
-	10128,
-	10176,
-	10208,
-	10240,
-	10272,
-	10320,
-	10352,
-	10384,
-	10416,
-	10448,
-	10480,
-	10512,
-	10544,
-	10576,
-	10608,
-	10640,
-	10672,
-	10704,
-	10736,
-	10768,
-	10800,
-	10832,
-	10864,
-	10880,
-	10912,
-	10944,
-	10976,
-	10992,
-	11024,
-	11056,
-	11072,
-	11104,
-	11136,
-	11152,
-	11184,
-	11216,
-	11232,
-	11264,
-	11280,
-	11312,
-	11328,
-	11360,
-	11376,
-	11408,
-	11424,
-	11456,
-	11472,
-	11504,
-	11520,
-	11536,
-	11568,
-	11584,
-	11616,
-	11632,
-	11648,
-	11680,
-	11696,
-	11712,
-	11744,
-	11760,
-	11776,
-	11792,
-	11824,
-	11840,
-	11856,
-	11872,
-	11888,
-	11920,
-	11936,
-	11952,
-	11968,
-	11984,
-	12000,
-	12032,
-	12048,
-	12064,
-	12080,
-	12096,
-	12128,
-	12144,
-	12160,
-	12176,
-	12192,
-	12208,
-	12224,
-	12240,
-	12256,
-	12272,
-	12288,
-	12304,
-	12320,
-	12336,
-	12352,
-	12368,
-	12384,
-	12400,
-	12416,
-	12432,
-	12448,
-	12464,
-	12480,
-	12496,
-	12512,
-	12528,
-	12544,
-	12560,
-	12576,
-	12592,
-	12608,
-	12624,
-	12640,
-	12656,
-	12672,
-	12688,
-	12704,
-	12720,
-	12736,
-	12752,
-	12768,
-	12784,
-	12800,
-	12816,
-	12832,
-	12848,
-	12864,
-	12880,
-	12896,
-	12912,
-	12928,
-	12944,
-	12960,
-	12976,
-	12992,
-	13008,
-	13024,
-	13040,
-	13056,
-	13088,
-	13104,
-	13120,
-	13136,
-	13152,
-	13168,
-	13184,
-	13200,
-	13216,
-	13232,
-	13248,
-	13264,
-	13280,
-	13296,
-	13312,
-	13328,
-	13344,
-	13360,
-	13376,
-	13392,
-	13408,
-	13424,
-	13440,
-	13456,
-	13472,
-	13488,
-	13504,
-	13520,
-	13536,
-	13552,
-	13568,
-	13584,
-	13600,
-	13616,
-	13632,
-	13648,
-	13664,
-	13680,
-	13696,
-	13712,
-	13728,
-	13744,
-	13760,
-	13776,
-	13792,
-	13808,
-	13824,
-	13840,
-	13856,
-	13872,
-	13888,
-	13904,
-	13920,
-	13936,
-	13952,
-	13968,
-	13984,
-	14000,
-	14016,
-	14032,
-	14048,
-	14064,
-	14080,
-	14096,
-	14112,
-	14128,
-	14144,
-	14160,
-	14176,
-	14192,
-	14208,
-	14224,
-	14240,
-	14256,
-	14272,
-	14288,
-	14304,
-	14320,
-	14336,
-	14352,
-	14368,
-	14384,
-	14400,
-	14416,
-	14432,
-	14448,
-	14464,
-	14480,
-	14496,
-	14512,
-	14528,
-	14544,
-	14560,
-	14576,
-	14592,
-	14608,
-	14624,
-	14640,
-	14656,
-	14672,
-	14688,
-	14704,
-	14720,
-	14736,
-	14752,
-	14768,
-	14784,
-	14800,
-	14816,
-	14832,
-	14848,
-	14864,
-	14880,
-	14896,
-	14912,
-	14928,
-	14944,
-	14960,
-	14976,
-	14992,
-	15008,
-	15024,
-	15040,
-	15056,
-	15072,
-	15088,
-	15104,
-	15120,
-	15136,
-	15152,
-	15168,
-	15184,
-	15200,
-	15216,
-	15232,
-	15248,
-	15264,
-	15280,
-	15296,
-	15312,
-	15328,
-	15344,
-	15360,
-	15376,
-	15392,
-	15408,
-	15424,
-	15440,
-	15456,
-	15472,
-	15488,
-	15504,
-	15520,
-	15536,
-	15552,
-	15568,
-	15584,
-	15600,
-	15616,
-	15632,
-	15648,
-	15664,
-	15680,
-	15696,
-	15712,
-	15728,
-	15744,
-	15760,
-	15776,
-	15792,
-	15808,
-	15824,
-	15840,
-	15856,
-	15872,
-	15888,
-	15904,
-	15920,
-	15936,
-	15952,
-	15968,
-	15984,
-	16000,
-	16016,
-	16032,
-	16048,
-	16064,
-	16080,
-	16096,
-	16112,
-	16128,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtelemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtelemipiraw_Sensor.c
deleted file mode 100755
index 949ad9e3..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtelemipiraw_Sensor.c
+++ /dev/null
@@ -1,2574 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 sayramtelemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "sayramtelemipiraw_Sensor.h"
-
-#define SAYRAMTELE_EEPROM_READ_ID	0xA1
-#define SAYRAMTELE_EEPROM_WRITE_ID	0xA0
-#define SAYRAMTELE_MAX_OFFSET		0x4000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "sayramtele_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x8000
-#define SENSOR_QSC_ENABLE_REG 0x3206
-#define SPC_OTP_ADDR_PART1    0xD200
-#define SPC_OTP_ADDR_PART2    0xD300
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x1832
-#define OTP_QCOM_PDAF_OFFSET_DATA_LENGTH 0x650
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x5E4
-#define OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR 0x39b0
-
-static int wr_ob_type = 0;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-static kal_uint8 otp_qcom_pdaf_offset_data[OTP_QCOM_PDAF_OFFSET_DATA_LENGTH] = {0};
-static void set_sensor_cali(void *arg);
-static int get_sensor_temperature(void *arg);
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int sayramtele_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramtele_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramtele_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramtele_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramtele_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramtele_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramtele_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int sayramtele_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void get_sensor_cali(void* arg);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int sayramtele_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramtele_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramtele_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramtele_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data);
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id);
-/* STRUCT */
-
-static struct eeprom_map_info sayramtele_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008,0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C1, 0x00C2, 17, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x3150, 0x37E9, 0x37EA, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x42C0, 0x0000, 0x0000, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x3BC0, 0x3F3D, 0x3F3E, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0x3F40, 0x42BD, 0x42BE, CALI_DATA_SLAVE_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, sayramtele_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, sayramtele_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, sayramtele_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, sayramtele_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, sayramtele_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, sayramtele_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, sayramtele_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, sayramtele_set_awb_gain},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, sayramtele_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_OFFSET_DATA, sayramtele_get_otp_qcom_pdaf_offset_data},
-	{SENSOR_FEATURE_SET_AWB_GAIN, sayramtele_set_awb_gain},
-	{SENSOR_FEATURE_SET_GAIN, sayramtele_set_gain},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01B1012F,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA0,
-
-		.qsc_support = true,
-		.qsc_size = 0x0C00,
-		.addr_qsc = 0x2210,
-		.sensor_reg_addr_qsc = 0xC000,
-
-		.pdc_support = true,
-		.pdc_size = 0x180,
-		.addr_pdc = 0x2E20,
-		.sensor_reg_addr_pdc = 0xD200,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {48, 36}, {2048, 1920}, {0, 0}, {2048, 1536},
-	},
-	.iMirrorFlip = IMAGE_H_MIRROR,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {192, 144}, {2048, 1920}, {0, 0}, {2048, 1536},
-	},
-	.iMirrorFlip = IMAGE_H_MIRROR,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {48, 36}, {2048, 1920}, {0, 0}, {2048, 1536},
-	},
-	.iMirrorFlip = IMAGE_H_MIRROR,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2, // QPD HVBIN
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,// all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 2,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_partial_pd_info = {
-	.i4OffsetX = 16,
-	.i4OffsetY = 32,
-	.i4PitchX = 8,
-	.i4PitchY = 16,
-	.i4PairNum = 4,
-	.i4SubBlkW = 8,
-	// .i4SubBlkH = 16,
-	.i4SubBlkH = 4,
-	.i4PosL = {{16, 35}, {20, 37}, {19, 42}, {23, 44}},
-	.i4PosR = {{18, 33}, {22, 39}, {17, 40}, {21, 46}},
-	.i4BlockNumX = 496,
-	.i4BlockNumY = 188,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {48, 36}, {2048, 1920}, {0, 0}, {2048, 1536},
-	},
-	.iMirrorFlip = IMAGE_H_MIRROR,//0:IMAGE_NORMAL,1:IMAGE_H_MIRROR,2:IMAGE_V_MIRROR,3:IMAGE_HV_MIRROR
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4ModeIndex = 0,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	/* VC's PD pattern description */
-	.sPDMapInfo[0] = {
-		.i4VCFeature = VC_PDAF_STATS_NE_PIX_1,
-		.i4PDPattern = 3,
-		// .i4PDRepetition = 8,
-		// .i4PDOrder = {1, 0, 0, 1, 1, 0, 0, 1},  /*R = 1, L = 0*/
-		.i4PDRepetition = 4,
-		.i4PDOrder = {1, 0, 0, 1},  /*R = 1, L = 0*/
-	},
-
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 1152,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 1504,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 2,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 1504,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 2,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 1504,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 1664,
-			.vsize = 1248,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 1664,
-			.vsize = 312,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 3,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{/* B11-S3 4096x3072 @30.1FPS QBIN(VBIN) with All-PD VB_max seamless D*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = sayramtele_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramtele_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramtele_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 3888,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 308,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-	},
-	{/* Reg_B9-S1_QBIN(VBIN)_4096x3072_30.1FPS with PDAF VB_max */
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = sayramtele_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 3888,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 308,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-	},
-	{/* Reg_B10-S5_QBIN(VBIN)_4096x2304_30.1FPS with PDAF VB_max*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = sayramtele_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_normal_video_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = sayramtele_seamless_normal_video,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramtele_seamless_normal_video),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 3888,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1072460000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 308,
-		.csi_param = {
-			.cphy_settle = 52,
-		},
-	},
-	{/* B-1 QBIN_4096x2304 @60FPS with PDAF VB_max */
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = sayramtele_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 4616,
-		.framelength = 3171,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1072460000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 5,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 52,
-		},
-
-		.dpc_enabled = true,
-	},
-	{/* B2 4096x3072 @60FPS QBIN(VBIN) with Partial-PD VB_max */
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = sayramtele_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 4616,
-		.framelength = 3171,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1072460000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 5,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 52,
-		},
-	},
-	{/* L4-S3 4096x3072 @30.1FPS QBIN 2exp-LBMF with Partial-PD VB_max seamless D*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = sayramtele_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_custom1_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramtele_seamless_custom1,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramtele_seamless_custom1),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 878400000,
-		.linelength = 4616,
-		.framelength = 6278,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 3136,
-		.read_margin = 10 * 2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 5,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 5,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{/* F5-S3 4096x3072 @30.1FPS Full-RMSC-Crop QBC with PDAF VB_max */
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = sayramtele_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramtele_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramtele_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 3240,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-		.awb_enabled = true,
-	},
-	{/* D Full RMSC 15fps bayer with PDAF VB_max */
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = sayramtele_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramtele_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramtele_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 6504,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/* D Full RMSC 15fps Qbayer with PDAF VB_max */
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = sayramtele_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramtele_seamless_custom4,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramtele_seamless_custom4),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 6504,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-		.awb_enabled = true,
-	},
-	{/* B11-S3 4096x3072 @30.1FPS QBIN(VBIN) with All-PD VB_max seamless D*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = sayramtele_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_custom5_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = sayramtele_seamless_custom5,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramtele_seamless_custom5),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 7500,
-		.framelength = 3888,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 308,
-		.csi_param = {
-			.cphy_settle = 59,
-		},
-		.dpc_enabled = true,
-	},
-	{/* L4-S3 4096x3072 @30.1FPS QBIN 2exp-LBMF with Partial-PD VB_max seamless D*/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = sayramtele_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_custom6_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = sayramtele_seamless_custom6,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramtele_seamless_custom6),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 878400000,
-		.linelength = 4616,
-		.framelength = 6278,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 3136,
-		.read_margin = 10 * 2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 5,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 5,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{/* V10 1664x1248 @30.1FPS QBIN(VBIN)-V2H2 */
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = sayramtele_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_custom7_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 453600000,
-		.linelength = 8048,
-		.framelength = 1872,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 205710000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 8,
-		.coarse_integ_step = 8,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 576,
-			.w0_size = 8192,
-			.h0_size = 4992,
-			.scale_w = 2048,
-			.scale_h = 1248,
-			.x1_offset = 192,
-			.y1_offset = 0,
-			.w1_size = 1664,
-			.h1_size = 1248,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1664,
-			.h2_tg_size = 1248,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 315,
-		.csi_param = {
-			.cphy_settle = 83,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F6-S5 4096x2304 @30.1FPS Full-RMSC_Crop w/ PD VB_MAX seamless reg_A-1/B */
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = sayramtele_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_custom8_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = sayramtele_seamless_custom8,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramtele_seamless_custom8),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 3240,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1072460000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1920,
-			.w0_size = 8192,
-			.h0_size = 2304,
-			.scale_w = 8192,
-			.scale_h = 2304,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = true,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 52,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/*C-5 QBIN-V2H2 2048x1152_240FPS w/o PDAF VB_max*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = sayramtele_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 878400000,
-		.linelength = 2468,
-		.framelength = 1470,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 979200000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 8,
-		.coarse_integ_step = 8,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F5-S3 4096x3072 @30FPS Full-RMSC-Crop with PDAF VB_max */
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = sayramtele_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramtele_custom10_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramtele_seamless_custom10,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramtele_seamless_custom10),
-		.hdr_mode = HDR_NONE,
-		.pclk = 878400000,
-		.linelength = 8960,
-		.framelength = 3240,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1113600000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 10,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-};
-
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = SAYRAMTELE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},
-	.i2c_addr_table = {0x34, 0x5a, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_H_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_Gr,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = sayramtele_ana_gain_table,
-	.ana_gain_table_size = sizeof(sayramtele_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 6,
-	.exposure_max = 128*(65532 - 56), /* exposure reg is limited to 4x. max = max - margin */
-	.exposure_step = 4,
-	.exposure_margin = 56,
-
-	.frame_length_max = 0xFFFC,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1789700,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_LBMF,
-	.seamless_switch_support = TRUE,
-	.seamless_switch_type = SEAMLESS_SWITCH_CUT_VB_INIT_SHUT,
-	.seamless_switch_hw_re_init_time_ns = 0,
-	.seamless_switch_prsh_hw_fixed_value = 56,
-	.seamless_switch_prsh_length_lc = 0,
-	.reg_addr_prsh_length_lines = {0x3058, 0x3059, 0x305A, 0x305B},
-	.reg_addr_prsh_mode = 0x3056,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0202, 0x0203}, //COARSE_INTEG_TIME
-			{0x0000, 0x0000}, /*not support*/
-			{0x0000, 0x0000}, //ST_COARSE_INTEG_TIME not support
-	},
-	.reg_addr_exposure_in_lut = {
-			{0x0E20, 0x0E21}, //LUT_A_COARSE_INTEG_TIME
-			{0x0E40, 0x0E41}, //LUT_B_COARSE_INTEG_TIME
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3160,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, //ANA_GAIN_GLOBAL
-			{0x0000, 0x0000}, /*not support*/
-			{0x0000, 0x0000}, //ST_ANA_GAIN_GLOBAL not support
-	},
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E22, 0x0E23}, //LUT_A_ANA_GAIN_GLOBAL
-			{0x0E42, 0x0E43}, //LUT_B_ANA_GAIN_GLOBAL
-	},
-	.reg_addr_dig_gain = {
-			{0x020E, 0x020F}, //DIG_GAIN_GLOBAL
-			{0x0000, 0x0000}, /*not support*/
-			{0x0000, 0x0000}, //ST_DIG_GAIN_GLOBAL not support
-	},
-	.reg_addr_dig_gain_in_lut = {
-			{0x0E24, 0x0E25}, //LUT_A_DIG_GAIN_GLOBAL
-			{0x0E44, 0x0E45}, //LUT_B_DIG_GAIN_GLOBAL
-	},
-	.reg_addr_dcg_ratio = 0x3182, /* DCGHDR_RATIO */
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E28, 0x0E29},  //LUT_A_FRM_LENGTH_LINES
-			{0x0E48, 0x0E49},  /*LUT_B_FRM_LENGTH_LINES*/
-	},
-	.reg_addr_temp_en = 0x0138, //TEMP_SEN_CTL
-	.reg_addr_temp_read = 0x013A, //TEMP_SEN_OUT
-	.reg_addr_auto_extend = 0x0350, //FRM_LENGTH_CTL
-	.reg_addr_frame_count = 0x0005, //FRM_CNT
-	.reg_addr_fast_mode = 0x3010, //FAST_MODETRANSIT_CTL
-	.reg_addr_fast_mode_in_lbmf = 0x31A7, //EAEB_LUT_CONTROL
-
-	.init_setting_table = sayramtele_init_setting,
-	.init_setting_len = ARRAY_SIZE(sayramtele_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xf10e5980,
-
-	.oplus_notify_chg_flag = false,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = sayramtele_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_AVDD, {2804000, 2804000}, 3000},
-	{HW_ID_AFVDD, {3100000, 3100000}, 3000},
-	{HW_ID_DVDD, {1104000, 1104000}, 4000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 3000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-	{HW_ID_RST, {1}, 2000},
-};
-
-const struct subdrv_entry sayramtele_mipi_raw_entry = {
-	.name = "sayramtele_mipi_raw",
-	.id = SAYRAMTELE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-static u16 sayramtele_ob_optimize_30db[] = {
-	0x3B00, 0x08,
-	0x3B01, 0x8A,
-	0x38D0, 0x08,
-	0x38D1, 0x52,
-	0x38A0, 0x00,
-	0x38A1, 0x7C,
-	0x38A2, 0x00,
-	0x38A3, 0x08,
-};
-
-static u16 sayramtele_ob_optimize_36db[] = {
-	0x3B00, 0x03,
-	0x3B01, 0xE1,
-	0x38D0, 0x00,
-	0x38D1, 0xE8,
-	0x38A0, 0x00,
-	0x38A1, 0x8E,
-	0x38A2, 0x01,
-	0x38A3, 0x80,
-};
-
-/* FUNCTION */
-
-static unsigned int read_sayramtele_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != sayramtele_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != sayramtele_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = sayramtele_eeprom_info[meta_id].start;
-	readsize = sayramtele_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-
- static struct eeprom_addr_table_struct  oplus_eeprom_addr_table =
-{
-	.i2c_read_id = 0xA0,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct oplus_eeprom_info_struct* infoPtr;
-  	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-	infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 6) | (infoPtr->afInfo[0] >> 2));
-	infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 2);
-	infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 6) | (infoPtr->afInfo[2] >> 2));
-	infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 2);
-	infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 6) | (infoPtr->afInfo[4] >> 2));
-	infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 2);
-
-	return 0;
-}
-
-// static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-// 	*len = sizeof(oplus_eeprom_info);
-// 	return 0;
-// }
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, SAYRAMTELE_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-static int sayramtele_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int sayramtele_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR, otp_qcom_pdaf_offset_data, OTP_QCOM_PDAF_OFFSET_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_offset_data, sizeof(otp_qcom_pdaf_offset_data));
-	*len = sizeof(otp_qcom_pdaf_offset_data);
-
-	return 0;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, SAYRAMTELE_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xA000;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, SAYRAMTELE_EEPROM_READ_ID >> 1, reg, 0x0E);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, SAYRAMTELE_EEPROM_READ_ID >> 1, reg, 0x00);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    kal_uint32 checksum = 0;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        for(i = 0; i < pStereodata->dataLength; i++) {
-            checksum += pData[i];
-        }
-        pData[data_length] = 0x01;
-        pData[data_length + 1] = checksum % 255;
-        data_length = data_length + 2;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == SAYRAMTELE_SENSOR_ID) && ((data_length - 2 == CALI_DATA_SLAVE_LENGTH)
-            ||(data_length - 2 == CALI_DATA_MASTER_LENGTH)||(data_length - 2 == CALI_DATA_SLAVE_TELE_LENGTH))
-            && ((data_base == SAYRAMTELE_STEREO_START_ADDR)||(data_base == SAYRAMTELE_STEREO_120CM_START_ADDR)
-            ||(data_base == SAYRAMTELE_STEREO_105CM_START_ADDR))) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-        } else if ((pStereodata->uSensorId == SAYRAMTELE_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == SAYRAMTELE_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, SAYRAMTELE_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, SAYRAMTELE_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, SAYRAMTELE_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, SAYRAMTELE_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, SAYRAMTELE_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, SAYRAMTELE_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, SAYRAMTELE_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, SAYRAMTELE_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("sayramtele write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int sayramtele_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-	return 0;
-}
-
-static int sayramtele_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_MASTER_LENGTH)
-		*len = CALI_DATA_MASTER_LENGTH;
-	LOG_INF("feature_data mode: %d", *feature_data_16);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_sayramtele_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_sayramtele_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_TT_MASETR_120CM:
-		read_sayramtele_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	}
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, SAYRAMTELE_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "sayramtele read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "sayramtele read_otp_info end\n");
-}
-
-static int sayramtele_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int sayramtele_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x8202) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOG(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 sayramtele_feedback_awbgain[] = {
-	0x0B8E, 0x01,
-	0x0B8F, 0x00,
-	0x0B90, 0x02,
-	0x0B91, 0x28,
-	0x0B92, 0x01,
-	0x0B93, 0x77,
-	0x0B94, 0x01,
-	0x0B95, 0x00,
-};
-
-/*write AWB gain to sensor*/
-static void feedback_awbgain(struct subdrv_ctx *ctx, kal_uint32 r_gain, kal_uint32 b_gain)
-{
-	UINT32 r_gain_int = 0;
-	UINT32 b_gain_int = 0;
-
-	DRV_LOG(ctx, "feedback_awbgain r_gain: %d, b_gain: %d\n", r_gain, b_gain);
-	r_gain_int = r_gain / 512;
-	b_gain_int = b_gain / 512;
-	sayramtele_feedback_awbgain[5] = r_gain_int;
-	sayramtele_feedback_awbgain[7] = (r_gain - r_gain_int * 512) / 2;
-	sayramtele_feedback_awbgain[9] = b_gain_int;
-	sayramtele_feedback_awbgain[11] = (b_gain - b_gain_int * 512) / 2;
-	subdrv_i2c_wr_regs_u8(ctx, sayramtele_feedback_awbgain,
-		ARRAY_SIZE(sayramtele_feedback_awbgain));
-}
-
-static int sayramtele_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-	feedback_awbgain(ctx, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B);
-	return 0;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	wr_ob_type = 0;
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	sensor_init(ctx);
-
-	/*QSC&SPC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, SENSOR_QSC_ENABLE_REG, 0x01);
-			DRV_LOG(ctx, "set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, SENSOR_QSC_ENABLE_REG, 0x00);
-		}
-	}
-
-	/* SPC data */
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			addr = SPC_OTP_ADDR_PART1;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = SPC_OTP_ADDR_PART2;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x55)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 85;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (16384 - (16384 * BASEGAIN) / gain);
-}
-
-void sayramtele_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-		case HDR_NONE:
-		case HDR_RAW_LBMF:
-		case HDR_RAW_DCG_RAW:
-				if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-					ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min) {
-					*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-					*min_shutter = ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min;
-				} else {
-					*exposure_step = ctx->s_ctx.exposure_step;
-					*min_shutter = ctx->s_ctx.exposure_min;
-				}
-				break;
-			default:
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-				break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int sayramtele_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	sayramtele_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static int sayramtele_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-
-	update_mode_info(ctx, scenario_id);
-
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-		calculate_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id);
-	}
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 24) & 0x07);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[3],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int sayramtele_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-	DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	if (mode) {
-	/* 1:Solid Color 2:Color Bar 5:Black */
-		switch (mode) {
-		case 5:
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x01);
-			break;
-		default:
-			subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-			break;
-		}
-	} else if (ctx->test_pattern) {
-		subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /*No pattern*/
-	}
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static int sayramtele_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-
-	u16 rg_gain;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain,
-		ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_ana_gain_range[0].min);
-	gain = min(gain,
-		ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_ana_gain_range[0].max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-
-	if(ctx->current_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW ||
-		ctx->current_scenario_id == SENSOR_SCENARIO_ID_NORMAL_VIDEO) {
-		if (rg_gain > 0x3DF8) {
-			if(wr_ob_type != 1) {
-				wr_ob_type = 1;
-				subdrv_i2c_wr_regs_u8(ctx, sayramtele_ob_optimize_36db,
-					ARRAY_SIZE(sayramtele_ob_optimize_36db));
-			}
-		} else {
-			if(wr_ob_type != 2) {
-				wr_ob_type = 2;
-				subdrv_i2c_wr_regs_u8(ctx, sayramtele_ob_optimize_30db,
-					ARRAY_SIZE(sayramtele_ob_optimize_30db));
-			}
-		}
-	} else {
-		wr_ob_type = 0;
-	}
-	DRV_LOG(ctx, "- gain:%d  wr_ob_cn:%d\n", gain, wr_ob_type);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-	return 0;
-}
-
-int sayramtele_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data)
-{
-	int ret = ERROR_NONE;
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u64 time_boot_begin = 0;
-	u64 ixc_time = 0;
-
-	wr_ob_type = 0;
-	DRV_LOG(ctx, "sayramtele_control E");
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (ctx->ixc_client.protocol)
-		sd = adaptor_ixc_get_clientdata(&ctx->ixc_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx)
-		return -ENODEV;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-		ret = ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.chk_s_off_sta)
-		check_stream_off(ctx);
-	update_mode_info(ctx, scenario_id);
-
-	if (ctx->s_ctx.mode[scenario_id].mode_setting_table != NULL) {
-		DRV_LOG(ctx, "E: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		if ((ctx->power_on_profile_en != NULL) &&
-			(*ctx->power_on_profile_en))
-			time_boot_begin = ktime_get_boottime_ns();
-
-		/* initail setting */
-		ixc_time = ixc_table_rewrite(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-
-		if ((ctx->power_on_profile_en != NULL) &&
-			(*ctx->power_on_profile_en)) {
-			ctx->sensor_pw_on_profile.i2c_cfg_period =
-					ktime_get_boottime_ns() - time_boot_begin;
-
-			ctx->sensor_pw_on_profile.i2c_cfg_table_len =
-					ctx->s_ctx.mode[scenario_id].mode_setting_len;
-		}
-		DRV_LOG_MUST(ctx, "X: sid:%u size:%u, ixc_time(us): %lld\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len,
-			ixc_time);
-	} else {
-		DRV_LOGE(ctx, "please implement mode setting(sid:%u)!\n", scenario_id);
-	}
-
-	if (check_is_no_crop(ctx, scenario_id) && probe_eeprom(ctx)) {
-		idx = ctx->eeprom_index;
-		support = info[idx].xtalk_support;
-		pbuf = info[idx].preload_xtalk_table;
-		size = info[idx].xtalk_size;
-		addr = info[idx].sensor_reg_addr_xtalk;
-		if (support) {
-			if (pbuf != NULL && addr > 0 && size > 0) {
-				subdrv_ixc_wr_seq_p8(ctx, addr, pbuf, size);
-				DRV_LOG(ctx, "set XTALK calibration data done.");
-			}
-		}
-	}
-
-	set_mirror_flip(ctx, ctx->s_ctx.mirror);
-
-	return ret;
-}
-
-
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id)
-{
-	u32 ae_ctrl_cit;
-	u32 prsh_length_lc = 0;
-	u32 cit_step = 1;
-	u8 hw_fixed_value = ctx->s_ctx.seamless_switch_prsh_hw_fixed_value;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = ctx->current_scenario_id;
-	enum IMGSENSOR_HDR_MODE_ENUM hdr_mode;
-
-	if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM5 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM6) {
-		prsh_length_lc = 2800;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM6 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM5) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_VIDEO && scenario_id == SENSOR_SCENARIO_ID_CUSTOM8) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM8 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_VIDEO) {
-		prsh_length_lc = 1250;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM1) {
-		prsh_length_lc = 2000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM1 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 1000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM3) {
-		prsh_length_lc = 1000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM3 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM1 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 1000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM1) {
-		prsh_length_lc = 2000;
-	} else {
-		prsh_length_lc = 0;
-	}
-
-	hdr_mode = ctx->s_ctx.mode[scenario_id].hdr_mode;
-	switch (hdr_mode) {
-	case HDR_RAW_LBMF:
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: dig_gain_lut_a = SE / dig_gain_lut_b = LE */
-			/* 3exp: dig_gain_lut_a = SE / dig_gain_lut_b = ME / dig_gain_lut_c = LE */
-			ae_ctrl_cit = ae_ctrl->exposure.me_exposure;
-			DRV_LOG_MUST(ctx, "debug se %llu le %llu, me %llu", ae_ctrl->exposure.se_exposure, ae_ctrl->exposure.le_exposure, ae_ctrl->exposure.me_exposure);
-		} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: dig_gain_lut_a = LE / dig_gain_lut_b = SE */
-			/* 3exp: dig_gain_lut_a = LE / dig_gain_lut_b = ME / dig_gain_lut_c = SE */
-			ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-			DRV_LOG_MUST(ctx, "debug le\n");
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-		break;
-	case HDR_NONE:
-	case HDR_RAW:
-	case HDR_CAMSV:
-	case HDR_RAW_ZHDR:
-	case HDR_MultiCAMSV:
-	case HDR_RAW_STAGGER:
-	case HDR_RAW_DCG_RAW:
-	case HDR_RAW_DCG_COMPOSE:
-	default:
-		ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-		break;
-	}
-	ae_ctrl_cit = max(ae_ctrl_cit, ctx->s_ctx.exposure_min);
-	ae_ctrl_cit = min(ae_ctrl_cit, ctx->s_ctx.exposure_max);
-	cit_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step ?: 1;
-	if (cit_step) {
-		ae_ctrl_cit = round_up(ae_ctrl_cit, cit_step);
-		prsh_length_lc = round_up(prsh_length_lc, cit_step);
-	}
-	DRV_LOG_MUST(ctx, "prsh_length_lc %u ae_ctrl_cit %u fine_integ_line %d\n",
-					prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.mode[scenario_id].fine_integ_line);
-	if(hdr_mode != HDR_RAW_LBMF && ctx->s_ctx.mode[scenario_id].fine_integ_line != 0) {
-		ae_ctrl_cit = ae_ctrl_cit / 1000;
-	}
-	prsh_length_lc = (prsh_length_lc > (ae_ctrl_cit + hw_fixed_value)) ? prsh_length_lc : 0;
-	if (prsh_length_lc < (ae_ctrl_cit + hw_fixed_value)) {
-		DRV_LOG_MUST(ctx,
-			"pre-shutter no need: prsh_length_lc(%u) < (ae_ctrl_cit(%u(max=%u,min=%u)) + hw_fixed_value(%u))\n",
-			prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.exposure_max, ctx->s_ctx.exposure_min, hw_fixed_value);
-		ctx->s_ctx.seamless_switch_prsh_length_lc = 0;
-		return;
-	}
-
-	ctx->s_ctx.seamless_switch_prsh_length_lc = prsh_length_lc;
-}
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtelemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtelemipiraw_Sensor.h
deleted file mode 100644
index d6346e44..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramtele_mipi_raw/sayramtelemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     sayramtelemipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _SAYRAMTELEMIPI_SENSOR_H
-#define _SAYRAMTELEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "sayramtele_ana_gain_table.h"
-#include "sayramtele_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/Makefile
deleted file mode 100755
index eb3c99a0..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/sayramuwidemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwide_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwide_Sensor_setting.h
deleted file mode 100755
index f532e85d..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwide_Sensor_setting.h
+++ /dev/null
@@ -1,21872 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 sayramuwide_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _SAYRAMUWIDEMIPI_SENSOR_SETTING_H
-#define _SAYRAMUWIDEMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 sayramuwide_sensor_init_pre_setting[] = {
-    0xFCFC, 0x4000,
-    0x0000, 0x000D,
-    0x0000, 0x38E5,
-    0x6018, 0x0001,
-    0x7002, 0x0408,
-    0x6014, 0x0001,
-    0xFCFC, 0x2002,
-    0x1E92, 0x8000,
-    0x1E84, 0x282B,
-    0x1E86, 0x0320,
-    0xFCFC, 0x4000,
-    0x7002, 0x0008,
-};
-
-static u16 sayramuwide_sensor_init_setting[] = {
-    0xFCFC, 0x2000,
-    0xDCF0, 0x0101,
-    0xFCFC, 0x2001,
-    0x3C60, 0x0000,
-    0xFCFC, 0x4000,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2002,
-    0xA614, 0x8280,
-    0xA616, 0x0100,
-    0xA618, 0x1753,
-    0xA61A, 0x02FC,
-    0xA61C, 0xE702,
-    0xA61E, 0x83EA,
-    0xA620, 0xB7E7,
-    0xA622, 0x0124,
-    0xA624, 0x9387,
-    0xA626, 0x0787,
-    0xA628, 0x83A4,
-    0xA62A, 0x870D,
-    0xA62C, 0x03A4,
-    0xA62E, 0xC70D,
-    0xA630, 0x0146,
-    0xA632, 0xA685,
-    0xA634, 0x2285,
-    0xA636, 0x9740,
-    0xA638, 0x01FC,
-    0xA63A, 0xE780,
-    0xA63C, 0xE040,
-    0xA63E, 0x97B0,
-    0xA640, 0xFEFB,
-    0xA642, 0xE780,
-    0xA644, 0x60DC,
-    0xA646, 0x0546,
-    0xA648, 0xA685,
-    0xA64A, 0x2285,
-    0xA64C, 0x9740,
-    0xA64E, 0x01FC,
-    0xA650, 0xE780,
-    0xA652, 0x803F,
-    0xA654, 0x37A7,
-    0xA656, 0x0224,
-    0xA658, 0x9307,
-    0xA65A, 0x8754,
-    0xA65C, 0x03C6,
-    0xA65E, 0xC702,
-    0xA660, 0x8546,
-    0xA662, 0x6301,
-    0xA664, 0xD602,
-    0xA666, 0x83C6,
-    0xA668, 0x0700,
-    0xA66A, 0x0947,
-    0xA66C, 0x6384,
-    0xA66E, 0xE608,
-    0xA670, 0xB7C7,
-    0xA672, 0x0224,
-    0xA674, 0x83A7,
-    0xA676, 0x07B7,
-    0xA678, 0x0545,
-    0xA67A, 0x8297,
-    0xA67C, 0x1753,
-    0xA67E, 0x02FC,
-    0xA680, 0x6700,
-    0xA682, 0x83E6,
-    0xA684, 0x03D5,
-    0xA686, 0x4705,
-    0xA688, 0x05C9,
-    0xA68A, 0x83D8,
-    0xA68C, 0x2705,
-    0xA68E, 0xB7E6,
-    0xA690, 0x0124,
-    0xA692, 0x83D5,
-    0xA694, 0x665F,
-    0xA696, 0x1307,
-    0xA698, 0x8754,
-    0xA69A, 0x8146,
-    0xA69C, 0x2548,
-    0xA69E, 0x0356,
-    0xA6A0, 0xE702,
-    0xA6A2, 0x0907,
-    0xA6A4, 0x63E0,
-    0xA6A6, 0xC50E,
-    0xA6A8, 0x8506,
-    0xA6AA, 0xE39A,
-    0xA6AC, 0x06FF,
-    0xA6AE, 0x3707,
-    0xA6B0, 0x0040,
-    0xA6B2, 0x3A95,
-    0xA6B4, 0x2310,
-    0xA6B6, 0x1501,
-    0xA6B8, 0x03D5,
-    0xA6BA, 0x6705,
-    0xA6BC, 0x4DD5,
-    0xA6BE, 0x83D8,
-    0xA6C0, 0x2705,
-    0xA6C2, 0x37E7,
-    0xA6C4, 0x0124,
-    0xA6C6, 0x8355,
-    0xA6C8, 0x675F,
-    0xA6CA, 0xBE86,
-    0xA6CC, 0x0147,
-    0xA6CE, 0x2548,
-    0xA6D0, 0x03D6,
-    0xA6D2, 0xE602,
-    0xA6D4, 0x8906,
-    0xA6D6, 0x63EE,
-    0xA6D8, 0xC50A,
-    0xA6DA, 0x0507,
-    0xA6DC, 0xE31A,
-    0xA6DE, 0x07FF,
-    0xA6E0, 0x3707,
-    0xA6E2, 0x0040,
-    0xA6E4, 0x3A95,
-    0xA6E6, 0x2310,
-    0xA6E8, 0x1501,
-    0xA6EA, 0x83C6,
-    0xA6EC, 0x0700,
-    0xA6EE, 0x0947,
-    0xA6F0, 0xE390,
-    0xA6F2, 0xE6F8,
-    0xA6F4, 0x03D5,
-    0xA6F6, 0x8702,
-    0xA6F8, 0x1DC5,
-    0xA6FA, 0x83D8,
-    0xA6FC, 0x6702,
-    0xA6FE, 0x37F7,
-    0xA700, 0x0124,
-    0xA702, 0x8355,
-    0xA704, 0xA781,
-    0xA706, 0xBE86,
-    0xA708, 0x0147,
-    0xA70A, 0x2548,
-    0xA70C, 0x03D6,
-    0xA70E, 0x2600,
-    0xA710, 0x8906,
-    0xA712, 0x63E3,
-    0xA714, 0xC506,
-    0xA716, 0x0507,
-    0xA718, 0xE31A,
-    0xA71A, 0x07FF,
-    0xA71C, 0x3707,
-    0xA71E, 0x0040,
-    0xA720, 0x3A95,
-    0xA722, 0x2310,
-    0xA724, 0x1501,
-    0xA726, 0x03D5,
-    0xA728, 0xA702,
-    0xA72A, 0x39D1,
-    0xA72C, 0x83D8,
-    0xA72E, 0x6702,
-    0xA730, 0x37F7,
-    0xA732, 0x0124,
-    0xA734, 0x8355,
-    0xA736, 0xA781,
-    0xA738, 0xBE86,
-    0xA73A, 0x0147,
-    0xA73C, 0x2548,
-    0xA73E, 0x03D6,
-    0xA740, 0x2600,
-    0xA742, 0x8906,
-    0xA744, 0x63E4,
-    0xA746, 0xC502,
-    0xA748, 0x0507,
-    0xA74A, 0xE31A,
-    0xA74C, 0x07FF,
-    0xA74E, 0xB707,
-    0xA750, 0x0040,
-    0xA752, 0x3E95,
-    0xA754, 0xB7C7,
-    0xA756, 0x0224,
-    0xA758, 0x83A7,
-    0xA75A, 0x07B7,
-    0xA75C, 0x2310,
-    0xA75E, 0x1501,
-    0xA760, 0x0545,
-    0xA762, 0x8297,
-    0xA764, 0x1753,
-    0xA766, 0x02FC,
-    0xA768, 0x6700,
-    0xA76A, 0x03D8,
-    0xA76C, 0x2107,
-    0xA76E, 0x0607,
-    0xA770, 0xBA97,
-    0xA772, 0x83D8,
-    0xA774, 0x4700,
-    0xA776, 0xE1BF,
-    0xA778, 0x2107,
-    0xA77A, 0x0607,
-    0xA77C, 0x3E97,
-    0xA77E, 0x8358,
-    0xA780, 0x4700,
-    0xA782, 0x69BF,
-    0xA784, 0x1387,
-    0xA786, 0x0602,
-    0xA788, 0x0607,
-    0xA78A, 0x3E97,
-    0xA78C, 0x8358,
-    0xA78E, 0x0700,
-    0xA790, 0x39BF,
-    0xA792, 0x1307,
-    0xA794, 0x0702,
-    0xA796, 0x0607,
-    0xA798, 0x3E97,
-    0xA79A, 0x8358,
-    0xA79C, 0x0700,
-    0xA79E, 0x89B7,
-    0xA7A0, 0x1753,
-    0xA7A2, 0x02FC,
-    0xA7A4, 0xE702,
-    0xA7A6, 0x83CF,
-    0xA7A8, 0x3284,
-    0xA7AA, 0xB7E7,
-    0xA7AC, 0x0124,
-    0xA7AE, 0x032B,
-    0xA7B0, 0x4600,
-    0xA7B2, 0x832A,
-    0xA7B4, 0x4609,
-    0xA7B6, 0x032A,
-    0xA7B8, 0xC604,
-    0xA7BA, 0x0348,
-    0xA7BC, 0x8600,
-    0xA7BE, 0x9387,
-    0xA7C0, 0x0787,
-    0xA7C2, 0x0346,
-    0xA7C4, 0x8609,
-    0xA7C6, 0x0347,
-    0xA7C8, 0x0405,
-    0xA7CA, 0x83AB,
-    0xA7CC, 0x070E,
-    0xA7CE, 0x03AC,
-    0xA7D0, 0x470E,
-    0xA7D2, 0x3318,
-    0xA7D4, 0x0B01,
-    0xA7D6, 0x3317,
-    0xA7D8, 0xEA00,
-    0xA7DA, 0x3396,
-    0xA7DC, 0xCA00,
-    0xA7DE, 0x2322,
-    0xA7E0, 0x0401,
-    0xA7E2, 0x78C4,
-    0xA7E4, 0xAA84,
-    0xA7E6, 0x2E89,
-    0xA7E8, 0x232A,
-    0xA7EA, 0xC408,
-    0xA7EC, 0xDE85,
-    0xA7EE, 0x6285,
-    0xA7F0, 0x0146,
-    0xA7F2, 0xB689,
-    0xA7F4, 0x9740,
-    0xA7F6, 0x01FC,
-    0xA7F8, 0xE780,
-    0xA7FA, 0x0025,
-    0xA7FC, 0xCE86,
-    0xA7FE, 0x2286,
-    0xA800, 0xCA85,
-    0xA802, 0x2685,
-    0xA804, 0x97B0,
-    0xA806, 0xFDFB,
-    0xA808, 0xE780,
-    0xA80A, 0x00B0,
-    0xA80C, 0x6285,
-    0xA80E, 0x0546,
-    0xA810, 0xDE85,
-    0xA812, 0x9740,
-    0xA814, 0x01FC,
-    0xA816, 0xE780,
-    0xA818, 0x2023,
-    0xA81A, 0xB7C7,
-    0xA81C, 0x0224,
-    0xA81E, 0x83A7,
-    0xA820, 0x07B7,
-    0xA822, 0x2322,
-    0xA824, 0x6401,
-    0xA826, 0x232A,
-    0xA828, 0x5409,
-    0xA82A, 0x2326,
-    0xA82C, 0x4405,
-    0xA82E, 0x0145,
-    0xA830, 0x8297,
-    0xA832, 0x1753,
-    0xA834, 0x02FC,
-    0xA836, 0x6700,
-    0xA838, 0xE3C9,
-    0xA83A, 0x0100,
-    0xA83C, 0x1753,
-    0xA83E, 0x02FC,
-    0xA840, 0xE702,
-    0xA842, 0x43C8,
-    0xA844, 0x2A84,
-    0xA846, 0xEFE0,
-    0xA848, 0xEFA9,
-    0xA84A, 0xA147,
-    0xA84C, 0x6306,
-    0xA84E, 0xF400,
-    0xA850, 0x1753,
-    0xA852, 0x02FC,
-    0xA854, 0x6700,
-    0xA856, 0x43C9,
-    0xA858, 0x9770,
-    0xA85A, 0xFFFB,
-    0xA85C, 0xE780,
-    0xA85E, 0x000C,
-    0xA860, 0x39C5,
-    0xA862, 0xB737,
-    0xA864, 0x0124,
-    0xA866, 0x83C7,
-    0xA868, 0x271A,
-    0xA86A, 0xFDD3,
-    0xA86C, 0x3784,
-    0xA86E, 0x0040,
-    0xA870, 0x8355,
-    0xA872, 0xE4F3,
-    0xA874, 0x0D45,
-    0xA876, 0x93E5,
-    0xA878, 0x0524,
-    0xA87A, 0x97D0,
-    0xA87C, 0xFFFB,
-    0xA87E, 0xE780,
-    0xA880, 0xA00A,
-    0xA882, 0x8355,
-    0xA884, 0x24F7,
-    0xA886, 0xB7A7,
-    0xA888, 0x0124,
-    0xA88A, 0x9387,
-    0xA88C, 0x0753,
-    0xA88E, 0x03D7,
-    0xA890, 0x47B6,
-    0xA892, 0xC205,
-    0xA894, 0xC181,
-    0xA896, 0x1377,
-    0xA898, 0xF7DB,
-    0xA89A, 0x93F5,
-    0xA89C, 0xF5DB,
-    0xA89E, 0x4145,
-    0xA8A0, 0x2392,
-    0xA8A2, 0xE7B6,
-    0xA8A4, 0x97D0,
-    0xA8A6, 0xFFFB,
-    0xA8A8, 0xE780,
-    0xA8AA, 0x0008,
-    0xA8AC, 0x55B7,
-    0xA8AE, 0x9770,
-    0xA8B0, 0xFFFB,
-    0xA8B2, 0xE780,
-    0xA8B4, 0xA003,
-    0xA8B6, 0x55D5,
-    0xA8B8, 0x9770,
-    0xA8BA, 0xFFFB,
-    0xA8BC, 0xE780,
-    0xA8BE, 0x807D,
-    0xA8C0, 0x19C9,
-    0xA8C2, 0xB797,
-    0xA8C4, 0x0124,
-    0xA8C6, 0x9387,
-    0xA8C8, 0x07D7,
-    0xA8CA, 0x03C7,
-    0xA8CC, 0x8703,
-    0xA8CE, 0x83C7,
-    0xA8D0, 0x2706,
-    0xA8D2, 0x6306,
-    0xA8D4, 0xF706,
-    0xA8D6, 0x9770,
-    0xA8D8, 0xFFFB,
-    0xA8DA, 0xE780,
-    0xA8DC, 0xA07B,
-    0xA8DE, 0x51D1,
-    0xA8E0, 0xB797,
-    0xA8E2, 0x0124,
-    0xA8E4, 0x9387,
-    0xA8E6, 0x07D7,
-    0xA8E8, 0x03C7,
-    0xA8EA, 0xC701,
-    0xA8EC, 0x83C7,
-    0xA8EE, 0x2706,
-    0xA8F0, 0xE319,
-    0xA8F2, 0xF7F6,
-    0xA8F4, 0xB727,
-    0xA8F6, 0x0224,
-    0xA8F8, 0x0564,
-    0xA8FA, 0x9387,
-    0xA8FC, 0x076B,
-    0xA8FE, 0xA297,
-    0xA900, 0x03C7,
-    0xA902, 0xF780,
-    0xA904, 0x8547,
-    0xA906, 0x6317,
-    0xA908, 0xF700,
-    0xA90A, 0xB737,
-    0xA90C, 0x0124,
-    0xA90E, 0x83C7,
-    0xA910, 0x57A5,
-    0xA912, 0xB1C3,
-    0xA914, 0xB787,
-    0xA916, 0x0040,
-    0xA918, 0x83D5,
-    0xA91A, 0xE7F3,
-    0xA91C, 0x0D45,
-    0xA91E, 0x93E5,
-    0xA920, 0x0501,
-    0xA922, 0x97D0,
-    0xA924, 0xFFFB,
-    0xA926, 0xE780,
-    0xA928, 0x2000,
-    0xA92A, 0xB7A7,
-    0xA92C, 0x0124,
-    0xA92E, 0x9387,
-    0xA930, 0x0753,
-    0xA932, 0x03D7,
-    0xA934, 0x47B6,
-    0xA936, 0x3D9B,
-    0xA938, 0x2392,
-    0xA93A, 0xE7B6,
-    0xA93C, 0x1DB7,
-    0xA93E, 0xB727,
-    0xA940, 0x0224,
-    0xA942, 0x0564,
-    0xA944, 0x9387,
-    0xA946, 0x076B,
-    0xA948, 0xA297,
-    0xA94A, 0x03C7,
-    0xA94C, 0xF780,
-    0xA94E, 0x9147,
-    0xA950, 0xE30D,
-    0xA952, 0xF7FA,
-    0xA954, 0xC1B7,
-    0xA956, 0xB787,
-    0xA958, 0x0040,
-    0xA95A, 0x83D5,
-    0xA95C, 0xE7F3,
-    0xA95E, 0x0D45,
-    0xA960, 0x93E5,
-    0xA962, 0x0504,
-    0xA964, 0x97D0,
-    0xA966, 0xFFFB,
-    0xA968, 0xE780,
-    0xA96A, 0x00FC,
-    0xA96C, 0xB797,
-    0xA96E, 0x0124,
-    0xA970, 0x9387,
-    0xA972, 0x0753,
-    0xA974, 0xA297,
-    0xA976, 0x03D7,
-    0xA978, 0x47B6,
-    0xA97A, 0x1377,
-    0xA97C, 0xF7FB,
-    0xA97E, 0x2392,
-    0xA980, 0xE7B6,
-    0xA982, 0xC5B5,
-    0xA984, 0x3571,
-    0xA986, 0x22CF,
-    0xA988, 0x26CD,
-    0xA98A, 0x7324,
-    0xA98C, 0x2034,
-    0xA98E, 0xF324,
-    0xA990, 0x1034,
-    0xA992, 0x7360,
-    0xA994, 0x0430,
-    0xA996, 0x06CB,
-    0xA998, 0x16C9,
-    0xA99A, 0x1AC7,
-    0xA99C, 0x1EC5,
-    0xA99E, 0x2AC3,
-    0xA9A0, 0x2EC1,
-    0xA9A2, 0xB2DE,
-    0xA9A4, 0xB6DC,
-    0xA9A6, 0xBADA,
-    0xA9A8, 0xBED8,
-    0xA9AA, 0xC2D6,
-    0xA9AC, 0xC6D4,
-    0xA9AE, 0xF2D2,
-    0xA9B0, 0xF6D0,
-    0xA9B2, 0xFACE,
-    0xA9B4, 0xFECC,
-    0xA9B6, 0x82E2,
-    0xA9B8, 0x86E0,
-    0xA9BA, 0x0AFE,
-    0xA9BC, 0x0EFC,
-    0xA9BE, 0x12FA,
-    0xA9C0, 0x16F8,
-    0xA9C2, 0x1AF6,
-    0xA9C4, 0x1EF4,
-    0xA9C6, 0x2AF2,
-    0xA9C8, 0x2EF0,
-    0xA9CA, 0x32EE,
-    0xA9CC, 0x36EC,
-    0xA9CE, 0x3AEA,
-    0xA9D0, 0x3EE8,
-    0xA9D2, 0x42E6,
-    0xA9D4, 0x46E4,
-    0xA9D6, 0x72E2,
-    0xA9D8, 0x76E0,
-    0xA9DA, 0x272E,
-    0xA9DC, 0xE1FF,
-    0xA9DE, 0x272C,
-    0xA9E0, 0xF1FF,
-    0xA9E2, 0x9770,
-    0xA9E4, 0xFFFB,
-    0xA9E6, 0xE780,
-    0xA9E8, 0x60F3,
-    0xA9EA, 0x19C5,
-    0xA9EC, 0x9770,
-    0xA9EE, 0xFFFB,
-    0xA9F0, 0xE780,
-    0xA9F2, 0xC0EF,
-    0xA9F4, 0x631C,
-    0xA9F6, 0x0512,
-    0xA9F8, 0x9305,
-    0xA9FA, 0x0024,
-    0xA9FC, 0x4145,
-    0xA9FE, 0x97D0,
-    0xAA00, 0xFFFB,
-    0xAA02, 0xE780,
-    0xAA04, 0x60F9,
-    0xAA06, 0x8145,
-    0xAA08, 0x9377,
-    0xAA0A, 0x1500,
-    0xAA0C, 0x85C7,
-    0xAA0E, 0x37D7,
-    0xAA10, 0x0124,
-    0xAA12, 0xB7A7,
-    0xAA14, 0x0124,
-    0xAA16, 0x1307,
-    0xAA18, 0x07C4,
-    0xAA1A, 0x9387,
-    0xAA1C, 0x0753,
-    0xAA1E, 0x0356,
-    0xAA20, 0x4707,
-    0xAA22, 0x83D6,
-    0xAA24, 0xA7B6,
-    0xAA26, 0x0506,
-    0xAA28, 0x93E6,
-    0xAA2A, 0x1600,
-    0xAA2C, 0x231A,
-    0xAA2E, 0xC706,
-    0xAA30, 0x2395,
-    0xAA32, 0xD7B6,
-    0xAA34, 0x9377,
-    0xAA36, 0x2500,
-    0xAA38, 0x85C7,
-    0xAA3A, 0x37D7,
-    0xAA3C, 0x0124,
-    0xAA3E, 0xB7A7,
-    0xAA40, 0x0124,
-    0xAA42, 0x1307,
-    0xAA44, 0x07C4,
-    0xAA46, 0x9387,
-    0xAA48, 0x0753,
-    0xAA4A, 0x0356,
-    0xAA4C, 0xC70C,
-    0xAA4E, 0x83D6,
-    0xAA50, 0xA7B6,
-    0xAA52, 0x0506,
-    0xAA54, 0x93E6,
-    0xAA56, 0x2600,
-    0xAA58, 0x2316,
-    0xAA5A, 0xC70C,
-    0xAA5C, 0x2395,
-    0xAA5E, 0xD7B6,
-    0xAA60, 0x9377,
-    0xAA62, 0x0520,
-    0xAA64, 0x1375,
-    0xAA66, 0x0504,
-    0xAA68, 0xC5C3,
-    0xAA6A, 0xB7D7,
-    0xAA6C, 0x0124,
-    0xAA6E, 0x9387,
-    0xAA70, 0x07C4,
-    0xAA72, 0x03D7,
-    0xAA74, 0x6708,
-    0xAA76, 0x0507,
-    0xAA78, 0x2393,
-    0xAA7A, 0xE708,
-    0xAA7C, 0xD1C5,
-    0xAA7E, 0x37A7,
-    0xAA80, 0x0124,
-    0xAA82, 0x1307,
-    0xAA84, 0x0753,
-    0xAA86, 0x8356,
-    0xAA88, 0xA7B6,
-    0xAA8A, 0x93E6,
-    0xAA8C, 0x0620,
-    0xAA8E, 0x2315,
-    0xAA90, 0xD7B6,
-    0xAA92, 0x11C9,
-    0xAA94, 0x03D6,
-    0xAA96, 0xA708,
-    0xAA98, 0x0506,
-    0xAA9A, 0x2395,
-    0xAA9C, 0xC708,
-    0xAA9E, 0x93E6,
-    0xAAA0, 0x0604,
-    0xAAA2, 0x2315,
-    0xAAA4, 0xD7B6,
-    0xAAA6, 0xDA40,
-    0xAAA8, 0xCA42,
-    0xAAAA, 0x3A43,
-    0xAAAC, 0xAA43,
-    0xAAAE, 0x1A45,
-    0xAAB0, 0x8A45,
-    0xAAB2, 0x7656,
-    0xAAB4, 0xE656,
-    0xAAB6, 0x5657,
-    0xAAB8, 0xC657,
-    0xAABA, 0x3658,
-    0xAABC, 0xA658,
-    0xAABE, 0x165E,
-    0xAAC0, 0x865E,
-    0xAAC2, 0x764F,
-    0xAAC4, 0xE64F,
-    0xAAC6, 0x1660,
-    0xAAC8, 0x8660,
-    0xAACA, 0x7271,
-    0xAACC, 0xE271,
-    0xAACE, 0x5272,
-    0xAAD0, 0xC272,
-    0xAAD2, 0x3273,
-    0xAAD4, 0xA273,
-    0xAAD6, 0x1275,
-    0xAAD8, 0x8275,
-    0xAADA, 0x7266,
-    0xAADC, 0xE266,
-    0xAADE, 0x5267,
-    0xAAE0, 0xC267,
-    0xAAE2, 0x3268,
-    0xAAE4, 0xA268,
-    0xAAE6, 0x126E,
-    0xAAE8, 0x826E,
-    0xAAEA, 0x072F,
-    0xAAEC, 0xC1FF,
-    0xAAEE, 0x872F,
-    0xAAF0, 0x81FF,
-    0xAAF2, 0x7370,
-    0xAAF4, 0x0430,
-    0xAAF6, 0x7390,
-    0xAAF8, 0x1434,
-    0xAAFA, 0x7310,
-    0xAAFC, 0x2434,
-    0xAAFE, 0x7A44,
-    0xAB00, 0xEA44,
-    0xAB02, 0x0D61,
-    0xAB04, 0x7300,
-    0xAB06, 0x2030,
-    0xAB08, 0x59DD,
-    0xAB0A, 0xB7D7,
-    0xAB0C, 0x0124,
-    0xAB0E, 0x9387,
-    0xAB10, 0x07C4,
-    0xAB12, 0x03D7,
-    0xAB14, 0xA708,
-    0xAB16, 0x0507,
-    0xAB18, 0x2395,
-    0xAB1A, 0xE708,
-    0xAB1C, 0xC9D5,
-    0xAB1E, 0x37A7,
-    0xAB20, 0x0124,
-    0xAB22, 0x1307,
-    0xAB24, 0x0753,
-    0xAB26, 0x8356,
-    0xAB28, 0xA7B6,
-    0xAB2A, 0x95BF,
-    0xAB2C, 0xB7A7,
-    0xAB2E, 0x0124,
-    0xAB30, 0x83D5,
-    0xAB32, 0x8709,
-    0xAB34, 0x4145,
-    0xAB36, 0x97D0,
-    0xAB38, 0xFFFB,
-    0xAB3A, 0xE780,
-    0xAB3C, 0xE0E5,
-    0xAB3E, 0x8545,
-    0xAB40, 0xE1B5,
-    0xAB42, 0x0100,
-    0xAB44, 0x8280,
-    0xAB46, 0x0100,
-    0xAB48, 0x1753,
-    0xAB4A, 0x02FC,
-    0xAB4C, 0xE702,
-    0xAB4E, 0x8397,
-    0xAB50, 0x37E4,
-    0xAB52, 0x0124,
-    0xAB54, 0x1304,
-    0xAB56, 0x044C,
-    0xAB58, 0x8344,
-    0xAB5A, 0xE40A,
-    0xAB5C, 0x8547,
-    0xAB5E, 0x2307,
-    0xAB60, 0xF40A,
-    0xAB62, 0x97A0,
-    0xAB64, 0xFDFB,
-    0xAB66, 0xE780,
-    0xAB68, 0x20E3,
-    0xAB6A, 0x2307,
-    0xAB6C, 0x940A,
-    0xAB6E, 0x1753,
-    0xAB70, 0x02FC,
-    0xAB72, 0x6700,
-    0xAB74, 0x6397,
-    0xAB76, 0x0100,
-    0xAB78, 0xB7A7,
-    0xAB7A, 0x0224,
-    0xAB7C, 0x83C7,
-    0xAB7E, 0x075A,
-    0xAB80, 0x0547,
-    0xAB82, 0x6383,
-    0xAB84, 0xE700,
-    0xAB86, 0x8280,
-    0xAB88, 0x1753,
-    0xAB8A, 0x02FC,
-    0xAB8C, 0xE702,
-    0xAB8E, 0xE391,
-    0xAB90, 0x3794,
-    0xAB92, 0x0124,
-    0xAB94, 0x1304,
-    0xAB96, 0x0453,
-    0xAB98, 0x0347,
-    0xAB9A, 0x041B,
-    0xAB9C, 0x4111,
-    0xAB9E, 0x6307,
-    0xABA0, 0xF700,
-    0xABA2, 0x4101,
-    0xABA4, 0x1753,
-    0xABA6, 0x02FC,
-    0xABA8, 0x6700,
-    0xABAA, 0x6393,
-    0xABAC, 0x8947,
-    0xABAE, 0xE31A,
-    0xABB0, 0xF5FE,
-    0xABB2, 0x8347,
-    0xABB4, 0x3441,
-    0xABB6, 0xADC3,
-    0xABB8, 0x83A9,
-    0xABBA, 0x0500,
-    0xABBC, 0x2EC6,
-    0xABBE, 0x97C0,
-    0xABC0, 0x01FC,
-    0xABC2, 0xE780,
-    0xABC4, 0x20B8,
-    0xABC6, 0xAA84,
-    0xABC8, 0x9780,
-    0xABCA, 0x01FC,
-    0xABCC, 0xE780,
-    0xABCE, 0x80C7,
-    0xABD0, 0xB245,
-    0xABD2, 0x2A89,
-    0xABD4, 0x9C41,
-    0xABD6, 0x63F3,
-    0xABD8, 0x9700,
-    0xABDA, 0xA687,
-    0xABDC, 0x8851,
-    0xABDE, 0x9CC1,
-    0xABE0, 0x2EC6,
-    0xABE2, 0x4A95,
-    0xABE4, 0x97B0,
-    0xABE6, 0x00FC,
-    0xABE8, 0xE780,
-    0xABEA, 0x00C5,
-    0xABEC, 0xB245,
-    0xABEE, 0xAA84,
-    0xABF0, 0xE8C9,
-    0xABF2, 0x3385,
-    0xABF4, 0x2901,
-    0xABF6, 0x97B0,
-    0xABF8, 0x00FC,
-    0xABFA, 0xE780,
-    0xABFC, 0xE0C3,
-    0xABFE, 0x8567,
-    0xAC00, 0x3E94,
-    0xAC02, 0x8327,
-    0xAC04, 0xC483,
-    0xAC06, 0x2695,
-    0xAC08, 0xB245,
-    0xAC0A, 0x63F3,
-    0xAC0C, 0xA700,
-    0xAC0E, 0xAA87,
-    0xAC10, 0x2322,
-    0xAC12, 0xF498,
-    0xAC14, 0xE8C5,
-    0xAC16, 0x71B7,
-    0xAC18, 0x0145,
-    0xAC1A, 0x2EC6,
-    0xAC1C, 0x97B0,
-    0xAC1E, 0x01FC,
-    0xAC20, 0xE780,
-    0xAC22, 0x8035,
-    0xAC24, 0xB245,
-    0xAC26, 0xAA89,
-    0xAC28, 0x51BF,
-    0xAC2A, 0x0100,
-    0xAC2C, 0x1753,
-    0xAC2E, 0x02FC,
-    0xAC30, 0xE702,
-    0xAC32, 0x4389,
-    0xAC34, 0x2A84,
-    0xAC36, 0xEFE0,
-    0xAC38, 0xAFFC,
-    0xAC3A, 0x01E8,
-    0xAC3C, 0xB7D7,
-    0xAC3E, 0x0124,
-    0xAC40, 0x03A7,
-    0xAC42, 0x87C1,
-    0xAC44, 0x9147,
-    0xAC46, 0x6306,
-    0xAC48, 0xF700,
-    0xAC4A, 0x1753,
-    0xAC4C, 0x02FC,
-    0xAC4E, 0x6700,
-    0xAC50, 0xA389,
-    0xAC52, 0xB7D7,
-    0xAC54, 0x0124,
-    0xAC56, 0x83C7,
-    0xAC58, 0x07FA,
-    0xAC5A, 0xE5DB,
-    0xAC5C, 0xB747,
-    0xAC5E, 0x0124,
-    0xAC60, 0x83C7,
-    0xAC62, 0x27C4,
-    0xAC64, 0xFDF3,
-    0xAC66, 0x97E0,
-    0xAC68, 0x00FC,
-    0xAC6A, 0xE780,
-    0xAC6C, 0xA097,
-    0xAC6E, 0xB787,
-    0xAC70, 0x0224,
-    0xAC72, 0x0547,
-    0xAC74, 0xA380,
-    0xAC76, 0xE74E,
-    0xAC78, 0xC9BF,
-    0xAC7A, 0x0100,
-    0xAC7C, 0x1753,
-    0xAC7E, 0x02FC,
-    0xAC80, 0xE702,
-    0xAC82, 0x4384,
-    0xAC84, 0x3784,
-    0xAC86, 0x0224,
-    0xAC88, 0x1304,
-    0xAC8A, 0xC449,
-    0xAC8C, 0x8347,
-    0xAC8E, 0x5404,
-    0xAC90, 0x99E7,
-    0xAC92, 0xEFE0,
-    0xAC94, 0x7F82,
-    0xAC96, 0x1753,
-    0xAC98, 0x02FC,
-    0xAC9A, 0x6700,
-    0xAC9C, 0xE384,
-    0xAC9E, 0x97E0,
-    0xACA0, 0x00FC,
-    0xACA2, 0xE780,
-    0xACA4, 0x20AF,
-    0xACA6, 0xA302,
-    0xACA8, 0x0404,
-    0xACAA, 0xEFE0,
-    0xACAC, 0xFF80,
-    0xACAE, 0x1753,
-    0xACB0, 0x02FC,
-    0xACB2, 0x6700,
-    0xACB4, 0x6383,
-    0xACB6, 0x0100,
-    0xACB8, 0x1753,
-    0xACBA, 0x02FC,
-    0xACBC, 0xE702,
-    0xACBE, 0x8380,
-    0xACC0, 0xB7E7,
-    0xACC2, 0x0124,
-    0xACC4, 0x9387,
-    0xACC6, 0x0787,
-    0xACC8, 0x03A9,
-    0xACCA, 0x870E,
-    0xACCC, 0x83A4,
-    0xACCE, 0xC70E,
-    0xACD0, 0x0146,
-    0xACD2, 0xCA85,
-    0xACD4, 0x2A84,
-    0xACD6, 0x2685,
-    0xACD8, 0x9740,
-    0xACDA, 0x01FC,
-    0xACDC, 0xE780,
-    0xACDE, 0xC0D6,
-    0xACE0, 0x2285,
-    0xACE2, 0x97A0,
-    0xACE4, 0xFFFB,
-    0xACE6, 0xE780,
-    0xACE8, 0x603E,
-    0xACEA, 0x0546,
-    0xACEC, 0xCA85,
-    0xACEE, 0x2685,
-    0xACF0, 0x9740,
-    0xACF2, 0x01FC,
-    0xACF4, 0xE780,
-    0xACF6, 0x40D5,
-    0xACF8, 0x8547,
-    0xACFA, 0x630F,
-    0xACFC, 0xF400,
-    0xACFE, 0x9147,
-    0xAD00, 0x630C,
-    0xAD02, 0xF400,
-    0xAD04, 0xB7C7,
-    0xAD06, 0x0224,
-    0xAD08, 0x83A7,
-    0xAD0A, 0x07B7,
-    0xAD0C, 0x0945,
-    0xAD0E, 0x8297,
-    0xAD10, 0x1743,
-    0xAD12, 0x02FC,
-    0xAD14, 0x6700,
-    0xAD16, 0x437D,
-    0xAD18, 0x9770,
-    0xAD1A, 0xFFFB,
-    0xAD1C, 0xE780,
-    0xAD1E, 0x00C0,
-    0xAD20, 0x75F1,
-    0xAD22, 0x9770,
-    0xAD24, 0xFFFB,
-    0xAD26, 0xE780,
-    0xAD28, 0x60BC,
-    0xAD2A, 0x69DD,
-    0xAD2C, 0x9770,
-    0xAD2E, 0xFFFB,
-    0xAD30, 0xE780,
-    0xAD32, 0x4036,
-    0xAD34, 0x19C9,
-    0xAD36, 0xB797,
-    0xAD38, 0x0124,
-    0xAD3A, 0x9387,
-    0xAD3C, 0x07D7,
-    0xAD3E, 0x03C7,
-    0xAD40, 0x8703,
-    0xAD42, 0x83C7,
-    0xAD44, 0x2706,
-    0xAD46, 0x6306,
-    0xAD48, 0xF706,
-    0xAD4A, 0x9770,
-    0xAD4C, 0xFFFB,
-    0xAD4E, 0xE780,
-    0xAD50, 0x6034,
-    0xAD52, 0x4DD9,
-    0xAD54, 0xB797,
-    0xAD56, 0x0124,
-    0xAD58, 0x9387,
-    0xAD5A, 0x07D7,
-    0xAD5C, 0x03C7,
-    0xAD5E, 0xC701,
-    0xAD60, 0x83C7,
-    0xAD62, 0x2706,
-    0xAD64, 0xE310,
-    0xAD66, 0xF7FA,
-    0xAD68, 0xB7C7,
-    0xAD6A, 0x0224,
-    0xAD6C, 0x83A7,
-    0xAD6E, 0x47B7,
-    0xAD70, 0xB706,
-    0xAD72, 0x0040,
-    0xAD74, 0x1386,
-    0xAD76, 0x4606,
-    0xAD78, 0x8965,
-    0xAD7A, 0x3E96,
-    0xAD7C, 0x1387,
-    0xAD7E, 0x061F,
-    0xAD80, 0x9385,
-    0xAD82, 0xF5F1,
-    0xAD84, 0x2310,
-    0xAD86, 0xB600,
-    0xAD88, 0x3E97,
-    0xAD8A, 0x7D56,
-    0xAD8C, 0x2310,
-    0xAD8E, 0xC700,
-    0xAD90, 0x37D6,
-    0xAD92, 0x0124,
-    0xAD94, 0x1306,
-    0xAD96, 0x06E7,
-    0xAD98, 0x0357,
-    0xAD9A, 0xC605,
-    0xAD9C, 0x0356,
-    0xAD9E, 0x6606,
-    0xADA0, 0x9386,
-    0xADA2, 0x861D,
-    0xADA4, 0x3297,
-    0xADA6, 0x4207,
-    0xADA8, 0xB697,
-    0xADAA, 0x4183,
-    0xADAC, 0x2390,
-    0xADAE, 0xE700,
-    0xADB0, 0x91BF,
-    0xADB2, 0xB7C7,
-    0xADB4, 0x0224,
-    0xADB6, 0x83A7,
-    0xADB8, 0x47B7,
-    0xADBA, 0xB706,
-    0xADBC, 0x0040,
-    0xADBE, 0x1386,
-    0xADC0, 0x4606,
-    0xADC2, 0x8965,
-    0xADC4, 0x3E96,
-    0xADC6, 0x1387,
-    0xADC8, 0x061F,
-    0xADCA, 0x9385,
-    0xADCC, 0xF5F1,
-    0xADCE, 0x2310,
-    0xADD0, 0xB600,
-    0xADD2, 0x3E97,
-    0xADD4, 0x7D56,
-    0xADD6, 0x2310,
-    0xADD8, 0xC700,
-    0xADDA, 0x37D6,
-    0xADDC, 0x0124,
-    0xADDE, 0x1306,
-    0xADE0, 0x06E7,
-    0xADE2, 0x0357,
-    0xADE4, 0x0606,
-    0xADE6, 0x9386,
-    0xADE8, 0xA61D,
-    0xADEA, 0x0356,
-    0xADEC, 0x6606,
-    0xADEE, 0x5DBF,
-    0xADF0, 0x1743,
-    0xADF2, 0x02FC,
-    0xADF4, 0xE702,
-    0xADF6, 0x036D,
-    0xADF8, 0xB7D7,
-    0xADFA, 0x0024,
-    0xADFC, 0x83C7,
-    0xADFE, 0x476D,
-    0xAE00, 0x8544,
-    0xAE02, 0x6380,
-    0xAE04, 0x9714,
-    0xAE06, 0xB7E7,
-    0xAE08, 0x0024,
-    0xAE0A, 0x03C4,
-    0xAE0C, 0xC784,
-    0xAE0E, 0xB7A7,
-    0xAE10, 0x0124,
-    0xAE12, 0x83C7,
-    0xAE14, 0x6792,
-    0xAE16, 0x3334,
-    0xAE18, 0x8000,
-    0xAE1A, 0x3304,
-    0xAE1C, 0x8040,
-    0xAE1E, 0x7998,
-    0xAE20, 0x1304,
-    0xAE22, 0x6402,
-    0xAE24, 0xEDE7,
-    0xAE26, 0xB767,
-    0xAE28, 0x0024,
-    0xAE2A, 0x9387,
-    0xAE2C, 0x0733,
-    0xAE2E, 0x03D7,
-    0xAE30, 0xE75B,
-    0xAE32, 0x19C7,
-    0xAE34, 0x1347,
-    0xAE36, 0xF7FF,
-    0xAE38, 0x618F,
-    0xAE3A, 0x1314,
-    0xAE3C, 0x0701,
-    0xAE3E, 0x4180,
-    0xAE40, 0x83D7,
-    0xAE42, 0x075C,
-    0xAE44, 0x0D45,
-    0xAE46, 0x5D8C,
-    0xAE48, 0x4204,
-    0xAE4A, 0x4180,
-    0xAE4C, 0xA285,
-    0xAE4E, 0x97D0,
-    0xAE50, 0xFFFB,
-    0xAE52, 0xE780,
-    0xAE54, 0xA0BB,
-    0xAE56, 0x9315,
-    0xAE58, 0x0501,
-    0xAE5A, 0xC181,
-    0xAE5C, 0xAA84,
-    0xAE5E, 0x6309,
-    0xAE60, 0xB400,
-    0xAE62, 0x0565,
-    0xAE64, 0xA18D,
-    0xAE66, 0x2D05,
-    0xAE68, 0x97A0,
-    0xAE6A, 0xFFFB,
-    0xAE6C, 0xE780,
-    0xAE6E, 0x8046,
-    0xAE70, 0x1395,
-    0xAE72, 0x0401,
-    0xAE74, 0x93F7,
-    0xAE76, 0x1400,
-    0xAE78, 0x4181,
-    0xAE7A, 0x91CB,
-    0xAE7C, 0xB7D7,
-    0xAE7E, 0x0124,
-    0xAE80, 0x9387,
-    0xAE82, 0x07C4,
-    0xAE84, 0x03D7,
-    0xAE86, 0x4707,
-    0xAE88, 0x0507,
-    0xAE8A, 0x239A,
-    0xAE8C, 0xE706,
-    0xAE8E, 0x9377,
-    0xAE90, 0x2500,
-    0xAE92, 0x91CB,
-    0xAE94, 0xB7D7,
-    0xAE96, 0x0124,
-    0xAE98, 0x9387,
-    0xAE9A, 0x07C4,
-    0xAE9C, 0x03D7,
-    0xAE9E, 0xC70C,
-    0xAEA0, 0x0507,
-    0xAEA2, 0x2396,
-    0xAEA4, 0xE70C,
-    0xAEA6, 0x9377,
-    0xAEA8, 0x4500,
-    0xAEAA, 0x91CB,
-    0xAEAC, 0xB7D7,
-    0xAEAE, 0x0124,
-    0xAEB0, 0x9387,
-    0xAEB2, 0x07C4,
-    0xAEB4, 0x03D7,
-    0xAEB6, 0xE70C,
-    0xAEB8, 0x0507,
-    0xAEBA, 0x2397,
-    0xAEBC, 0xE70C,
-    0xAEBE, 0x9377,
-    0xAEC0, 0x0502,
-    0xAEC2, 0x91CB,
-    0xAEC4, 0xB7D7,
-    0xAEC6, 0x0124,
-    0xAEC8, 0x9387,
-    0xAECA, 0x07C4,
-    0xAECC, 0x03D7,
-    0xAECE, 0x070F,
-    0xAED0, 0x0507,
-    0xAED2, 0x2398,
-    0xAED4, 0xE70E,
-    0xAED6, 0x9377,
-    0xAED8, 0x0520,
-    0xAEDA, 0x91CB,
-    0xAEDC, 0xB7D7,
-    0xAEDE, 0x0124,
-    0xAEE0, 0x9387,
-    0xAEE2, 0x07C4,
-    0xAEE4, 0x03D7,
-    0xAEE6, 0x6708,
-    0xAEE8, 0x0507,
-    0xAEEA, 0x2393,
-    0xAEEC, 0xE708,
-    0xAEEE, 0x1375,
-    0xAEF0, 0x0504,
-    0xAEF2, 0x11C9,
-    0xAEF4, 0xB7D7,
-    0xAEF6, 0x0124,
-    0xAEF8, 0x9387,
-    0xAEFA, 0x07C4,
-    0xAEFC, 0x03D7,
-    0xAEFE, 0xA708,
-    0xAF00, 0x0507,
-    0xAF02, 0x2395,
-    0xAF04, 0xE708,
-    0xAF06, 0x1743,
-    0xAF08, 0x02FC,
-    0xAF0A, 0x6700,
-    0xAF0C, 0xE35D,
-    0xAF0E, 0xB7D7,
-    0xAF10, 0x0124,
-    0xAF12, 0x83D7,
-    0xAF14, 0xA7E7,
-    0xAF16, 0x81DB,
-    0xAF18, 0x9760,
-    0xAF1A, 0xFEFB,
-    0xAF1C, 0xE780,
-    0xAF1E, 0x8068,
-    0xAF20, 0x6311,
-    0xAF22, 0x9506,
-    0xAF24, 0xB797,
-    0xAF26, 0x0124,
-    0xAF28, 0x9387,
-    0xAF2A, 0x07D7,
-    0xAF2C, 0x03C7,
-    0xAF2E, 0xC701,
-    0xAF30, 0x83C7,
-    0xAF32, 0x2706,
-    0xAF34, 0x6307,
-    0xAF36, 0xF704,
-    0xAF38, 0x1364,
-    0xAF3A, 0x0424,
-    0xAF3C, 0x4204,
-    0xAF3E, 0x4180,
-    0xAF40, 0x11A0,
-    0xAF42, 0x0144,
-    0xAF44, 0xB767,
-    0xAF46, 0x0024,
-    0xAF48, 0x9387,
-    0xAF4A, 0x0733,
-    0xAF4C, 0x03C7,
-    0xAF4E, 0x273B,
-    0xAF50, 0xE30F,
-    0xAF52, 0x07EC,
-    0xAF54, 0x37A7,
-    0xAF56, 0x0124,
-    0xAF58, 0x0347,
-    0xAF5A, 0x6792,
-    0xAF5C, 0xE309,
-    0xAF5E, 0x07EC,
-    0xAF60, 0x37D7,
-    0xAF62, 0x0124,
-    0xAF64, 0x0357,
-    0xAF66, 0xA7E7,
-    0xAF68, 0xE303,
-    0xAF6A, 0x07EC,
-    0xAF6C, 0x3797,
-    0xAF6E, 0x0124,
-    0xAF70, 0x0347,
-    0xAF72, 0x1700,
-    0xAF74, 0xE30D,
-    0xAF76, 0x07EA,
-    0xAF78, 0x1374,
-    0xAF7A, 0xF4DF,
-    0xAF7C, 0x4204,
-    0xAF7E, 0x4180,
-    0xAF80, 0x7DB5,
-    0xAF82, 0x9760,
-    0xAF84, 0xFEFB,
-    0xAF86, 0xE780,
-    0xAF88, 0xE061,
-    0xAF8A, 0x8547,
-    0xAF8C, 0xE31C,
-    0xAF8E, 0xF5FA,
-    0xAF90, 0xB797,
-    0xAF92, 0x0124,
-    0xAF94, 0x9387,
-    0xAF96, 0x07D7,
-    0xAF98, 0x03C7,
-    0xAF9A, 0xC701,
-    0xAF9C, 0x83C7,
-    0xAF9E, 0x2706,
-    0xAFA0, 0xE312,
-    0xAFA2, 0xF7FA,
-    0xAFA4, 0x1364,
-    0xAFA6, 0x0420,
-    0xAFA8, 0x4204,
-    0xAFAA, 0x4180,
-    0xAFAC, 0x61BF,
-    0xAFAE, 0x0100,
-    0xAFB0, 0x7171,
-    0xAFB2, 0x22D7,
-    0xAFB4, 0x26D5,
-    0xAFB6, 0x7324,
-    0xAFB8, 0x2034,
-    0xAFBA, 0xF324,
-    0xAFBC, 0x1034,
-    0xAFBE, 0x7360,
-    0xAFC0, 0x0430,
-    0xAFC2, 0x2EC5,
-    0xAFC4, 0xA565,
-    0xAFC6, 0xBEDC,
-    0xAFC8, 0x06D3,
-    0xAFCA, 0x16D1,
-    0xAFCC, 0x1ACF,
-    0xAFCE, 0x1ECD,
-    0xAFD0, 0x22CB,
-    0xAFD2, 0x2AC7,
-    0xAFD4, 0x32C3,
-    0xAFD6, 0x36C1,
-    0xAFD8, 0xBADE,
-    0xAFDA, 0xC2DA,
-    0xAFDC, 0xC6D8,
-    0xAFDE, 0xF2D0,
-    0xAFE0, 0xF6CE,
-    0xAFE2, 0xFACC,
-    0xAFE4, 0xFECA,
-    0xAFE6, 0x82E2,
-    0xAFE8, 0x86E0,
-    0xAFEA, 0x0AFE,
-    0xAFEC, 0x0EFC,
-    0xAFEE, 0x12FA,
-    0xAFF0, 0x16F8,
-    0xAFF2, 0x1AF6,
-    0xAFF4, 0x1EF4,
-    0xAFF6, 0x2AF2,
-    0xAFF8, 0x2EF0,
-    0xAFFA, 0x32EE,
-    0xAFFC, 0x26C9,
-    0xAFFE, 0xCAD6,
-    0xB000, 0xCED4,
-    0xB002, 0xD2D2,
-    0xB004, 0x9385,
-    0xB006, 0x0540,
-    0xB008, 0x0545,
-    0xB00A, 0x36EC,
-    0xB00C, 0x3AEA,
-    0xB00E, 0x3EE8,
-    0xB010, 0x42E6,
-    0xB012, 0x46E4,
-    0xB014, 0x72E2,
-    0xB016, 0x76E0,
-    0xB018, 0x272E,
-    0xB01A, 0xE1FF,
-    0xB01C, 0x272C,
-    0xB01E, 0xF1FF,
-    0xB020, 0x97D0,
-    0xB022, 0xFFFB,
-    0xB024, 0xE780,
-    0xB026, 0x4097,
-    0xB028, 0xA167,
-    0xB02A, 0xE98F,
-    0xB02C, 0x2A84,
-    0xB02E, 0x6394,
-    0xB030, 0x0718,
-    0xB032, 0xB764,
-    0xB034, 0x0124,
-    0xB036, 0x9384,
-    0xB038, 0x0440,
-    0xB03A, 0x8567,
-    0xB03C, 0xE18F,
-    0xB03E, 0xCDCF,
-    0xB040, 0x37D7,
-    0xB042, 0x0124,
-    0xB044, 0x3789,
-    0xB046, 0x0224,
-    0xB048, 0x1307,
-    0xB04A, 0x07C4,
-    0xB04C, 0x1309,
-    0xB04E, 0xC949,
-    0xB050, 0x8356,
-    0xB052, 0x670E,
-    0xB054, 0x8327,
-    0xB056, 0x0905,
-    0xB058, 0x8506,
-    0xB05A, 0x8507,
-    0xB05C, 0x2328,
-    0xB05E, 0xF904,
-    0xB060, 0x2313,
-    0xB062, 0xD70E,
-    0xB064, 0x858B,
-    0xB066, 0x639F,
-    0xB068, 0x071A,
-    0xB06A, 0x8547,
-    0xB06C, 0xA30A,
-    0xB06E, 0xF904,
-    0xB070, 0x9770,
-    0xB072, 0xFFFB,
-    0xB074, 0xE780,
-    0xB076, 0x00FF,
-    0xB078, 0x19C5,
-    0xB07A, 0x0357,
-    0xB07C, 0x4905,
-    0xB07E, 0x9307,
-    0xB080, 0x1010,
-    0xB082, 0x6306,
-    0xB084, 0xF724,
-    0xB086, 0xDC50,
-    0xB088, 0x0945,
-    0xB08A, 0x8297,
-    0xB08C, 0x9770,
-    0xB08E, 0xFFFB,
-    0xB090, 0xE780,
-    0xB092, 0xC085,
-    0xB094, 0x11C5,
-    0xB096, 0x9770,
-    0xB098, 0xFFFB,
-    0xB09A, 0xE780,
-    0xB09C, 0x2088,
-    0xB09E, 0x55C5,
-    0xB0A0, 0x9760,
-    0xB0A2, 0x00FC,
-    0xB0A4, 0xE780,
-    0xB0A6, 0x405A,
-    0xB0A8, 0xB787,
-    0xB0AA, 0x0024,
-    0xB0AC, 0x83C7,
-    0xB0AE, 0x078C,
-    0xB0B0, 0xAA89,
-    0xB0B2, 0x6392,
-    0xB0B4, 0x071C,
-    0xB0B6, 0xB7D7,
-    0xB0B8, 0x0124,
-    0xB0BA, 0x9387,
-    0xB0BC, 0x07E7,
-    0xB0BE, 0xBC5F,
-    0xB0C0, 0x639A,
-    0xB0C2, 0x0716,
-    0xB0C4, 0x3799,
-    0xB0C6, 0x0124,
-    0xB0C8, 0x1309,
-    0xB0CA, 0x0953,
-    0xB0CC, 0xB727,
-    0xB0CE, 0x0024,
-    0xB0D0, 0x83C7,
-    0xB0D2, 0x7752,
-    0xB0D4, 0x6396,
-    0xB0D6, 0x071E,
-    0xB0D8, 0x0345,
-    0xB0DA, 0xC918,
-    0xB0DC, 0x631D,
-    0xB0DE, 0x051C,
-    0xB0E0, 0xDC50,
-    0xB0E2, 0x0D45,
-    0xB0E4, 0x8297,
-    0xB0E6, 0x4E85,
-    0xB0E8, 0x9760,
-    0xB0EA, 0x00FC,
-    0xB0EC, 0xE780,
-    0xB0EE, 0x005A,
-    0xB0F0, 0x8567,
-    0xB0F2, 0x3E99,
-    0xB0F4, 0x2320,
-    0xB0F6, 0xA9A2,
-    0xB0F8, 0x1374,
-    0xB0FA, 0x0440,
-    0xB0FC, 0x21C4,
-    0xB0FE, 0xB7D7,
-    0xB100, 0x0124,
-    0xB102, 0x9387,
-    0xB104, 0x07C4,
-    0xB106, 0x37A7,
-    0xB108, 0x0124,
-    0xB10A, 0x83D6,
-    0xB10C, 0x670E,
-    0xB10E, 0x1307,
-    0xB110, 0x0753,
-    0xB112, 0x0347,
-    0xB114, 0x179B,
-    0xB116, 0x8506,
-    0xB118, 0x3784,
-    0xB11A, 0x0224,
-    0xB11C, 0x1304,
-    0xB11E, 0xC449,
-    0xB120, 0x1337,
-    0xB122, 0x1700,
-    0xB124, 0x2393,
-    0xB126, 0xD70E,
-    0xB128, 0x230A,
-    0xB12A, 0xE404,
-    0xB12C, 0x9770,
-    0xB12E, 0xFFFB,
-    0xB130, 0xE780,
-    0xB132, 0x40F3,
-    0xB134, 0x6306,
-    0xB136, 0x0510,
-    0xB138, 0x0357,
-    0xB13A, 0x4405,
-    0xB13C, 0x9307,
-    0xB13E, 0x1010,
-    0xB140, 0x6300,
-    0xB142, 0xF710,
-    0xB144, 0xDC50,
-    0xB146, 0x1D45,
-    0xB148, 0x8297,
-    0xB14A, 0x9A50,
-    0xB14C, 0x8A52,
-    0xB14E, 0x7A43,
-    0xB150, 0xEA43,
-    0xB152, 0x5A44,
-    0xB154, 0xCA44,
-    0xB156, 0x3A45,
-    0xB158, 0xAA45,
-    0xB15A, 0x1A46,
-    0xB15C, 0x8A46,
-    0xB15E, 0x7657,
-    0xB160, 0xE657,
-    0xB162, 0x5658,
-    0xB164, 0xC658,
-    0xB166, 0x3659,
-    0xB168, 0xA659,
-    0xB16A, 0x165A,
-    0xB16C, 0x065E,
-    0xB16E, 0xF64E,
-    0xB170, 0x664F,
-    0xB172, 0xD64F,
-    0xB174, 0x1660,
-    0xB176, 0x8660,
-    0xB178, 0x7271,
-    0xB17A, 0xE271,
-    0xB17C, 0x5272,
-    0xB17E, 0xC272,
-    0xB180, 0x3273,
-    0xB182, 0xA273,
-    0xB184, 0x1275,
-    0xB186, 0x8275,
-    0xB188, 0x7266,
-    0xB18A, 0xE266,
-    0xB18C, 0x5267,
-    0xB18E, 0xC267,
-    0xB190, 0x3268,
-    0xB192, 0xA268,
-    0xB194, 0x126E,
-    0xB196, 0x826E,
-    0xB198, 0x072F,
-    0xB19A, 0xC1FF,
-    0xB19C, 0x872F,
-    0xB19E, 0x81FF,
-    0xB1A0, 0x7370,
-    0xB1A2, 0x0430,
-    0xB1A4, 0x7390,
-    0xB1A6, 0x1434,
-    0xB1A8, 0x7310,
-    0xB1AA, 0x2434,
-    0xB1AC, 0x3A54,
-    0xB1AE, 0xAA54,
-    0xB1B0, 0x4D61,
-    0xB1B2, 0x7300,
-    0xB1B4, 0x2030,
-    0xB1B6, 0x37D9,
-    0xB1B8, 0x0124,
-    0xB1BA, 0x1309,
-    0xB1BC, 0x09C4,
-    0xB1BE, 0x8357,
-    0xB1C0, 0x490E,
-    0xB1C2, 0xB764,
-    0xB1C4, 0x0124,
-    0xB1C6, 0x9384,
-    0xB1C8, 0x0440,
-    0xB1CA, 0xD850,
-    0xB1CC, 0x8507,
-    0xB1CE, 0x0145,
-    0xB1D0, 0x2312,
-    0xB1D2, 0xF90E,
-    0xB1D4, 0x0297,
-    0xB1D6, 0x9760,
-    0xB1D8, 0xFFFB,
-    0xB1DA, 0xE780,
-    0xB1DC, 0x2071,
-    0xB1DE, 0x25E5,
-    0xB1E0, 0xB729,
-    0xB1E2, 0x0024,
-    0xB1E4, 0x3799,
-    0xB1E6, 0x0124,
-    0xB1E8, 0x9389,
-    0xB1EA, 0x0933,
-    0xB1EC, 0x1309,
-    0xB1EE, 0x0953,
-    0xB1F0, 0x056A,
-    0xB1F2, 0x83C7,
-    0xB1F4, 0x791F,
-    0xB1F6, 0x4A9A,
-    0xB1F8, 0x2320,
-    0xB1FA, 0x0AA2,
-    0xB1FC, 0xB9EF,
-    0xB1FE, 0x0345,
-    0xB200, 0xC918,
-    0xB202, 0x2DE5,
-    0xB204, 0x83C7,
-    0xB206, 0x0920,
-    0xB208, 0x89C7,
-    0xB20A, 0x0327,
-    0xB20C, 0x4AB3,
-    0xB20E, 0x630A,
-    0xB210, 0xF700,
-    0xB212, 0x97E0,
-    0xB214, 0x00FC,
-    0xB216, 0xE780,
-    0xB218, 0xE0D2,
-    0xB21A, 0xDC50,
-    0xB21C, 0x0545,
-    0xB21E, 0x8297,
-    0xB220, 0x29BD,
-    0xB222, 0x01A0,
-    0xB224, 0x8547,
-    0xB226, 0x230A,
-    0xB228, 0x0904,
-    0xB22A, 0xA30A,
-    0xB22C, 0x0904,
-    0xB22E, 0x2328,
-    0xB230, 0xF904,
-    0xB232, 0x3DBD,
-    0xB234, 0x7D55,
-    0xB236, 0x9770,
-    0xB238, 0x01FC,
-    0xB23A, 0xE780,
-    0xB23C, 0xA004,
-    0xB23E, 0x59B5,
-    0xB240, 0xEFE0,
-    0xB242, 0x5FD9,
-    0xB244, 0x01B7,
-    0xB246, 0x9760,
-    0xB248, 0xFFFB,
-    0xB24A, 0xE780,
-    0xB24C, 0x206D,
-    0xB24E, 0x49F9,
-    0xB250, 0x8357,
-    0xB252, 0x490E,
-    0xB254, 0x858B,
-    0xB256, 0xC9F7,
-    0xB258, 0xCDBD,
-    0xB25A, 0x9770,
-    0xB25C, 0x01FC,
-    0xB25E, 0xE780,
-    0xB260, 0x2003,
-    0xB262, 0x2311,
-    0xB264, 0xA94E,
-    0xB266, 0x0345,
-    0xB268, 0xC918,
-    0xB26A, 0x49DD,
-    0xB26C, 0x97C0,
-    0xB26E, 0xFFFB,
-    0xB270, 0xE780,
-    0xB272, 0x40B4,
-    0xB274, 0x41BF,
-    0xB276, 0x9770,
-    0xB278, 0x01FC,
-    0xB27A, 0xE780,
-    0xB27C, 0x6001,
-    0xB27E, 0x3799,
-    0xB280, 0x0124,
-    0xB282, 0x1309,
-    0xB284, 0x0953,
-    0xB286, 0x8D67,
-    0xB288, 0xCA97,
-    0xB28A, 0x03C7,
-    0xB28C, 0xD76F,
-    0xB28E, 0x232E,
-    0xB290, 0xA94E,
-    0xB292, 0x8547,
-    0xB294, 0x6306,
-    0xB296, 0xF700,
-    0xB298, 0x8327,
-    0xB29A, 0x094F,
-    0xB29C, 0xE377,
-    0xB29E, 0xF5EA,
-    0xB2A0, 0x9760,
-    0xB2A2, 0x00FC,
-    0xB2A4, 0xE780,
-    0xB2A6, 0x80FC,
-    0xB2A8, 0x9770,
-    0xB2AA, 0x01FC,
-    0xB2AC, 0xE780,
-    0xB2AE, 0x40FE,
-    0xB2B0, 0x2320,
-    0xB2B2, 0xA950,
-    0xB2B4, 0x21BD,
-    0xB2B6, 0x97C0,
-    0xB2B8, 0xFFFB,
-    0xB2BA, 0xE780,
-    0xB2BC, 0xA0B2,
-    0xB2BE, 0x0DB5,
-    0xB2C0, 0x9770,
-    0xB2C2, 0x01FC,
-    0xB2C4, 0xE780,
-    0xB2C6, 0xC0FC,
-    0xB2C8, 0x2312,
-    0xB2CA, 0xA94E,
-    0xB2CC, 0x31B5,
-    0xB2CE, 0xEFE0,
-    0xB2D0, 0x7FD0,
-    0xB2D2, 0x55BB,
-    0xB2D4, 0x1743,
-    0xB2D6, 0x02FC,
-    0xB2D8, 0xE702,
-    0xB2DA, 0xC31E,
-    0xB2DC, 0x2A84,
-    0xB2DE, 0xEFD0,
-    0xB2E0, 0xBFA7,
-    0xB2E2, 0x8947,
-    0xB2E4, 0x6306,
-    0xB2E6, 0xF400,
-    0xB2E8, 0x1743,
-    0xB2EA, 0x02FC,
-    0xB2EC, 0x6700,
-    0xB2EE, 0xC31F,
-    0xB2F0, 0xB7E7,
-    0xB2F2, 0x0024,
-    0xB2F4, 0x03D7,
-    0xB2F6, 0xC7C8,
-    0xB2F8, 0x8564,
-    0xB2FA, 0x9387,
-    0xB2FC, 0xF4B3,
-    0xB2FE, 0xE315,
-    0xB300, 0xF7FE,
-    0xB302, 0x37A9,
-    0xB304, 0x0224,
-    0xB306, 0x1309,
-    0xB308, 0x8954,
-    0xB30A, 0x8347,
-    0xB30C, 0x190C,
-    0xB30E, 0xE9FF,
-    0xB310, 0x9770,
-    0xB312, 0xFFFB,
-    0xB314, 0xE780,
-    0xB316, 0x00E3,
-    0xB318, 0x61F9,
-    0xB31A, 0x9770,
-    0xB31C, 0xFFFB,
-    0xB31E, 0xE780,
-    0xB320, 0xA0E3,
-    0xB322, 0x79F1,
-    0xB324, 0x3725,
-    0xB326, 0x0224,
-    0xB328, 0x1305,
-    0xB32A, 0x05ED,
-    0xB32C, 0x9700,
-    0xB32E, 0xFFFB,
-    0xB330, 0xE780,
-    0xB332, 0x80FA,
-    0xB334, 0xB797,
-    0xB336, 0x0124,
-    0xB338, 0x3767,
-    0xB33A, 0x0124,
-    0xB33C, 0x0327,
-    0xB33E, 0x0740,
-    0xB340, 0x9387,
-    0xB342, 0x0753,
-    0xB344, 0xA697,
-    0xB346, 0x8544,
-    0xB348, 0x1D45,
-    0xB34A, 0x238D,
-    0xB34C, 0x97CE,
-    0xB34E, 0x0297,
-    0xB350, 0xA300,
-    0xB352, 0x990C,
-    0xB354, 0x9780,
-    0xB356, 0x01FC,
-    0xB358, 0xE780,
-    0xB35A, 0x0083,
-    0xB35C, 0x51F5,
-    0xB35E, 0xB727,
-    0xB360, 0x0124,
-    0xB362, 0x2380,
-    0xB364, 0x8754,
-    0xB366, 0x97B0,
-    0xB368, 0xFEFB,
-    0xB36A, 0xE780,
-    0xB36C, 0x6002,
-    0xB36E, 0x2301,
-    0xB370, 0x990C,
-    0xB372, 0x9DBF,
-    0xB374, 0x1743,
-    0xB376, 0x02FC,
-    0xB378, 0xE702,
-    0xB37A, 0xC314,
-    0xB37C, 0x37A4,
-    0xB37E, 0x0224,
-    0xB380, 0x1304,
-    0xB382, 0x8454,
-    0xB384, 0x0347,
-    0xB386, 0x240C,
-    0xB388, 0x8547,
-    0xB38A, 0x630A,
-    0xB38C, 0xF700,
-    0xB38E, 0x97B0,
-    0xB390, 0xFEFB,
-    0xB392, 0xE780,
-    0xB394, 0xE069,
-    0xB396, 0x1743,
-    0xB398, 0x02FC,
-    0xB39A, 0x6700,
-    0xB39C, 0xE314,
-    0xB39E, 0x9770,
-    0xB3A0, 0x01FC,
-    0xB3A2, 0xE780,
-    0xB3A4, 0x607E,
-    0xB3A6, 0x65F5,
-    0xB3A8, 0x97B0,
-    0xB3AA, 0xFEFB,
-    0xB3AC, 0xE780,
-    0xB3AE, 0x800F,
-    0xB3B0, 0x2301,
-    0xB3B2, 0x040C,
-    0xB3B4, 0xE9BF,
-    0xB3B6, 0x0100,
-    0xB3B8, 0x1743,
-    0xB3BA, 0x02FC,
-    0xB3BC, 0xE702,
-    0xB3BE, 0x8310,
-    0xB3C0, 0x9D47,
-    0xB3C2, 0x631F,
-    0xB3C4, 0xF500,
-    0xB3C6, 0x3794,
-    0xB3C8, 0x0124,
-    0xB3CA, 0x1304,
-    0xB3CC, 0x0453,
-    0xB3CE, 0x8567,
-    0xB3D0, 0xA297,
-    0xB3D2, 0x83C7,
-    0xB3D4, 0xA7CF,
-    0xB3D6, 0x9DE7,
-    0xB3D8, 0x1743,
-    0xB3DA, 0x02FC,
-    0xB3DC, 0x6700,
-    0xB3DE, 0xC310,
-    0xB3E0, 0x2A84,
-    0xB3E2, 0xEFD0,
-    0xB3E4, 0x7FDD,
-    0xB3E6, 0x8547,
-    0xB3E8, 0xE318,
-    0xB3EA, 0xF4FE,
-    0xB3EC, 0xB7E7,
-    0xB3EE, 0x0124,
-    0xB3F0, 0x9387,
-    0xB3F2, 0x074C,
-    0xB3F4, 0x23AE,
-    0xB3F6, 0x0710,
-    0xB3F8, 0x23A4,
-    0xB3FA, 0x077E,
-    0xB3FC, 0x1743,
-    0xB3FE, 0x02FC,
-    0xB400, 0x6700,
-    0xB402, 0x830E,
-    0xB404, 0x9770,
-    0xB406, 0xFFFB,
-    0xB408, 0xE780,
-    0xB40A, 0xC0D3,
-    0xB40C, 0x71F5,
-    0xB40E, 0x9770,
-    0xB410, 0xFFFB,
-    0xB412, 0xE780,
-    0xB414, 0x60D4,
-    0xB416, 0x69F1,
-    0xB418, 0x8D67,
-    0xB41A, 0x3E94,
-    0xB41C, 0x8327,
-    0xB41E, 0x846D,
-    0xB420, 0xB724,
-    0xB422, 0x0124,
-    0xB424, 0x9384,
-    0xB426, 0x045F,
-    0xB428, 0x91EF,
-    0xB42A, 0x83A7,
-    0xB42C, 0x440E,
-    0xB42E, 0x99CB,
-    0xB430, 0xB7D7,
-    0xB432, 0x0124,
-    0xB434, 0x83C7,
-    0xB436, 0x07FA,
-    0xB438, 0xC5D3,
-    0xB43A, 0x9700,
-    0xB43C, 0xFFFB,
-    0xB43E, 0xE780,
-    0xB440, 0x20E3,
-    0xB442, 0x59BF,
-    0xB444, 0x83A7,
-    0xB446, 0xC40A,
-    0xB448, 0xC1DB,
-    0xB44A, 0x0545,
-    0xB44C, 0x9730,
-    0xB44E, 0xFEFB,
-    0xB450, 0xE780,
-    0xB452, 0x8051,
-    0xB454, 0xB735,
-    0xB456, 0x202D,
-    0xB458, 0x7578,
-    0xB45A, 0x37F5,
-    0xB45C, 0x202D,
-    0xB45E, 0x9385,
-    0xB460, 0x0560,
-    0xB462, 0x1308,
-    0xB464, 0x08A0,
-    0xB466, 0x9168,
-    0xB468, 0x1305,
-    0xB46A, 0x0560,
-    0xB46C, 0xB387,
-    0xB46E, 0x0501,
-    0xB470, 0x03C7,
-    0xB472, 0x0700,
-    0xB474, 0x9306,
-    0xB476, 0xF00F,
-    0xB478, 0x1316,
-    0xB47A, 0x8701,
-    0xB47C, 0x6186,
-    0xB47E, 0x0607,
-    0xB480, 0x6344,
-    0xB482, 0x0600,
-    0xB484, 0x9376,
-    0xB486, 0xF70F,
-    0xB488, 0x2380,
-    0xB48A, 0xD700,
-    0xB48C, 0x8507,
-    0xB48E, 0xE391,
-    0xB490, 0xB7FE,
-    0xB492, 0xB385,
-    0xB494, 0x1701,
-    0xB496, 0xE39B,
-    0xB498, 0xA5FC,
-    0xB49A, 0xB7A7,
-    0xB49C, 0x0224,
-    0xB49E, 0x0547,
-    0xB4A0, 0x0145,
-    0xB4A2, 0xA384,
-    0xB4A4, 0xE760,
-    0xB4A6, 0x9730,
-    0xB4A8, 0xFEFB,
-    0xB4AA, 0xE780,
-    0xB4AC, 0xE04B,
-    0xB4AE, 0xB7D7,
-    0xB4B0, 0x0124,
-    0xB4B2, 0x83C7,
-    0xB4B4, 0x07FA,
-    0xB4B6, 0x8DD3,
-    0xB4B8, 0x8327,
-    0xB4BA, 0x846D,
-    0xB4BC, 0x91FF,
-    0xB4BE, 0x83A7,
-    0xB4C0, 0x440E,
-    0xB4C2, 0x99DB,
-    0xB4C4, 0x9DBF,
-    0xB4C6, 0x0100,
-    0xB4C8, 0x1743,
-    0xB4CA, 0x02FC,
-    0xB4CC, 0xE702,
-    0xB4CE, 0x83FF,
-    0xB4D0, 0xB7D7,
-    0xB4D2, 0x0124,
-    0xB4D4, 0x9387,
-    0xB4D6, 0x07F4,
-    0xB4D8, 0x03C7,
-    0xB4DA, 0x1705,
-    0xB4DC, 0x2A84,
-    0xB4DE, 0x11C7,
-    0xB4E0, 0x03C7,
-    0xB4E2, 0x1700,
-    0xB4E4, 0x8947,
-    0xB4E6, 0x6307,
-    0xB4E8, 0xF704,
-    0xB4EA, 0xB7E7,
-    0xB4EC, 0x0124,
-    0xB4EE, 0x9387,
-    0xB4F0, 0x0787,
-    0xB4F2, 0x83A4,
-    0xB4F4, 0x870F,
-    0xB4F6, 0x03A9,
-    0xB4F8, 0xC70F,
-    0xB4FA, 0x0146,
-    0xB4FC, 0xA685,
-    0xB4FE, 0x4A85,
-    0xB500, 0x9730,
-    0xB502, 0x01FC,
-    0xB504, 0xE780,
-    0xB506, 0x4054,
-    0xB508, 0x2285,
-    0xB50A, 0x97D0,
-    0xB50C, 0xFEFB,
-    0xB50E, 0xE780,
-    0xB510, 0x20D7,
-    0xB512, 0x4A85,
-    0xB514, 0x0546,
-    0xB516, 0xA685,
-    0xB518, 0x9730,
-    0xB51A, 0x01FC,
-    0xB51C, 0xE780,
-    0xB51E, 0xC052,
-    0xB520, 0xB7C7,
-    0xB522, 0x0224,
-    0xB524, 0x83A7,
-    0xB526, 0x07B7,
-    0xB528, 0x1145,
-    0xB52A, 0x8297,
-    0xB52C, 0x1743,
-    0xB52E, 0x02FC,
-    0xB530, 0x6700,
-    0xB532, 0x83FB,
-    0xB534, 0xB7E7,
-    0xB536, 0x0024,
-    0xB538, 0x83D6,
-    0xB53A, 0xC7C8,
-    0xB53C, 0x8567,
-    0xB53E, 0x1387,
-    0xB540, 0xF7B3,
-    0xB542, 0xE394,
-    0xB544, 0xE6FA,
-    0xB546, 0x3797,
-    0xB548, 0x0124,
-    0xB54A, 0x1307,
-    0xB54C, 0x0753,
-    0xB54E, 0xBA97,
-    0xB550, 0x03A5,
-    0xB552, 0x07B2,
-    0xB554, 0x8145,
-    0xB556, 0x3325,
-    0xB558, 0xA000,
-    0xB55A, 0x97D0,
-    0xB55C, 0x00FC,
-    0xB55E, 0xE780,
-    0xB560, 0x60BB,
-    0xB562, 0x61B7,
-    0xB564, 0x1743,
-    0xB566, 0x02FC,
-    0xB568, 0xE702,
-    0xB56A, 0xC3F5,
-    0xB56C, 0x9760,
-    0xB56E, 0xFFFB,
-    0xB570, 0xE780,
-    0xB572, 0xC037,
-    0xB574, 0x11C5,
-    0xB576, 0xB7E7,
-    0xB578, 0x0024,
-    0xB57A, 0x83C7,
-    0xB57C, 0xC784,
-    0xB57E, 0xBDEF,
-    0xB580, 0x1384,
-    0xB582, 0x81E7,
-    0xB584, 0x0347,
-    0xB586, 0x8400,
-    0xB588, 0x8547,
-    0xB58A, 0x6303,
-    0xB58C, 0xF706,
-    0xB58E, 0x0357,
-    0xB590, 0x2403,
-    0xB592, 0xB767,
-    0xB594, 0x0040,
-    0xB596, 0x2398,
-    0xB598, 0xE718,
-    0xB59A, 0x8357,
-    0xB59C, 0x4403,
-    0xB59E, 0x3767,
-    0xB5A0, 0x0040,
-    0xB5A2, 0x2314,
-    0xB5A4, 0xF720,
-    0xB5A6, 0x9760,
-    0xB5A8, 0xFFFB,
-    0xB5AA, 0xE780,
-    0xB5AC, 0x2034,
-    0xB5AE, 0x19C5,
-    0xB5B0, 0xB7E7,
-    0xB5B2, 0x0024,
-    0xB5B4, 0x03C7,
-    0xB5B6, 0xC784,
-    0xB5B8, 0x8147,
-    0xB5BA, 0x09EB,
-    0xB5BC, 0x8346,
-    0xB5BE, 0x8400,
-    0xB5C0, 0x0547,
-    0xB5C2, 0x8147,
-    0xB5C4, 0x6384,
-    0xB5C6, 0xE600,
-    0xB5C8, 0x8357,
-    0xB5CA, 0xC405,
-    0xB5CC, 0x37A7,
-    0xB5CE, 0x0040,
-    0xB5D0, 0x2312,
-    0xB5D2, 0xF710,
-    0xB5D4, 0x9770,
-    0xB5D6, 0xFFFB,
-    0xB5D8, 0xE780,
-    0xB5DA, 0xC0B6,
-    0xB5DC, 0x35C1,
-    0xB5DE, 0x9770,
-    0xB5E0, 0xFFFB,
-    0xB5E2, 0xE780,
-    0xB5E4, 0x60B7,
-    0xB5E6, 0x05C9,
-    0xB5E8, 0x1743,
-    0xB5EA, 0x02FC,
-    0xB5EC, 0x6700,
-    0xB5EE, 0xC3EF,
-    0xB5F0, 0xB767,
-    0xB5F2, 0x0040,
-    0xB5F4, 0x2398,
-    0xB5F6, 0x0718,
-    0xB5F8, 0x8147,
-    0xB5FA, 0x55B7,
-    0xB5FC, 0xB767,
-    0xB5FE, 0x0040,
-    0xB600, 0x2398,
-    0xB602, 0x0718,
-    0xB604, 0x1384,
-    0xB606, 0x81E7,
-    0xB608, 0x8346,
-    0xB60A, 0x8400,
-    0xB60C, 0x0547,
-    0xB60E, 0x8147,
-    0xB610, 0xE395,
-    0xB612, 0xE6F8,
-    0xB614, 0x69B7,
-    0xB616, 0x9760,
-    0xB618, 0xFFFB,
-    0xB61A, 0xE780,
-    0xB61C, 0x202D,
-    0xB61E, 0x31ED,
-    0xB620, 0x8346,
-    0xB622, 0x8400,
-    0xB624, 0x0547,
-    0xB626, 0x8147,
-    0xB628, 0x6384,
-    0xB62A, 0xE600,
-    0xB62C, 0x8357,
-    0xB62E, 0x4408,
-    0xB630, 0x3787,
-    0xB632, 0x0040,
-    0xB634, 0x2314,
-    0xB636, 0xF710,
-    0xB638, 0x1743,
-    0xB63A, 0x02FC,
-    0xB63C, 0x6700,
-    0xB63E, 0xC3EA,
-    0xB640, 0x9770,
-    0xB642, 0xFFFB,
-    0xB644, 0xE780,
-    0xB646, 0x40B1,
-    0xB648, 0x59F9,
-    0xB64A, 0x9760,
-    0xB64C, 0xFFFB,
-    0xB64E, 0xE780,
-    0xB650, 0xE029,
-    0xB652, 0x19C5,
-    0xB654, 0xB7E7,
-    0xB656, 0x0024,
-    0xB658, 0x03C7,
-    0xB65A, 0xC784,
-    0xB65C, 0x8147,
-    0xB65E, 0x09EB,
-    0xB660, 0x8346,
-    0xB662, 0x8400,
-    0xB664, 0x0547,
-    0xB666, 0x8147,
-    0xB668, 0x6384,
-    0xB66A, 0xE600,
-    0xB66C, 0x8357,
-    0xB66E, 0x6407,
-    0xB670, 0x3707,
-    0xB672, 0x0140,
-    0xB674, 0x2314,
-    0xB676, 0xF710,
-    0xB678, 0x9DB7,
-    0xB67A, 0xB7E7,
-    0xB67C, 0x0024,
-    0xB67E, 0x03C7,
-    0xB680, 0xC784,
-    0xB682, 0x8147,
-    0xB684, 0x55F7,
-    0xB686, 0x69BF,
-    0xB688, 0x1743,
-    0xB68A, 0x02FC,
-    0xB68C, 0xE702,
-    0xB68E, 0x03E1,
-    0xB690, 0x4111,
-    0xB692, 0x3A84,
-    0xB694, 0x22E6,
-    0xB696, 0x26E4,
-    0xB698, 0x4AE2,
-    0xB69A, 0x4EE0,
-    0xB69C, 0xAA84,
-    0xB69E, 0x3689,
-    0xB6A0, 0x97A0,
-    0xB6A2, 0xFEFB,
-    0xB6A4, 0xE780,
-    0xB6A6, 0x8066,
-    0xB6A8, 0xB727,
-    0xB6AA, 0x0224,
-    0xB6AC, 0x9387,
-    0xB6AE, 0x076B,
-    0xB6B0, 0xA297,
-    0xB6B2, 0x0567,
-    0xB6B4, 0xBA97,
-    0xB6B6, 0x83C7,
-    0xB6B8, 0x078D,
-    0xB6BA, 0x639D,
-    0xB6BC, 0x0718,
-    0xB6BE, 0x83C7,
-    0xB6C0, 0x0400,
-    0xB6C2, 0x6399,
-    0xB6C4, 0x0718,
-    0xB6C6, 0xB7A7,
-    0xB6C8, 0x0224,
-    0xB6CA, 0x9389,
-    0xB6CC, 0x8754,
-    0xB6CE, 0x03C7,
-    0xB6D0, 0x9905,
-    0xB6D2, 0x6301,
-    0xB6D4, 0x0718,
-    0xB6D6, 0x03CA,
-    0xB6D8, 0xA905,
-    0xB6DA, 0x03D6,
-    0xB6DC, 0xA90B,
-    0xB6DE, 0x37E7,
-    0xB6E0, 0x0124,
-    0xB6E2, 0x0355,
-    0xB6E4, 0x675F,
-    0xB6E6, 0x9387,
-    0xB6E8, 0x8754,
-    0xB6EA, 0x0147,
-    0xB6EC, 0xA145,
-    0xB6EE, 0x6369,
-    0xB6F0, 0xA622,
-    0xB6F2, 0x83D6,
-    0xB6F4, 0xC70A,
-    0xB6F6, 0x8907,
-    0xB6F8, 0x63F1,
-    0xB6FA, 0xA626,
-    0xB6FC, 0x0507,
-    0xB6FE, 0xE318,
-    0xB700, 0xB7FE,
-    0xB702, 0x37CB,
-    0xB704, 0x0224,
-    0xB706, 0x5309,
-    0xB708, 0x00F0,
-    0xB70A, 0x8727,
-    0xB70C, 0x8BB7,
-    0xB70E, 0x9D46,
-    0xB710, 0x4379,
-    0xB712, 0xF990,
-    0xB714, 0x1307,
-    0xB716, 0x0705,
-    0xB718, 0x0607,
-    0xB71A, 0x4E97,
-    0xB71C, 0x8357,
-    0xB71E, 0xC700,
-    0xB720, 0x118D,
-    0xB722, 0x5377,
-    0xB724, 0x05D0,
-    0xB726, 0x918F,
-    0xB728, 0xD3F7,
-    0xB72A, 0x07D0,
-    0xB72C, 0x9317,
-    0xB72E, 0x3A00,
-    0xB730, 0xB697,
-    0xB732, 0x5377,
-    0xB734, 0xF718,
-    0xB736, 0x9387,
-    0xB738, 0x8702,
-    0xB73A, 0x8607,
-    0xB73C, 0xCE97,
-    0xB73E, 0x83D7,
-    0xB740, 0xC700,
-    0xB742, 0x0726,
-    0xB744, 0x8BB7,
-    0xB746, 0x13F7,
-    0xB748, 0xF70F,
-    0xB74A, 0xA183,
-    0xB74C, 0xD377,
-    0xB74E, 0x07D0,
-    0xB750, 0xD3F6,
-    0xB752, 0x07D0,
-    0xB754, 0xC3F7,
-    0xB756, 0xC768,
-    0xB758, 0x5379,
-    0xB75A, 0xF908,
-    0xB75C, 0x4379,
-    0xB75E, 0xE978,
-    0xB760, 0x9770,
-    0xB762, 0xFFFB,
-    0xB764, 0xE780,
-    0xB766, 0xC08A,
-    0xB768, 0xAA8A,
-    0xB76A, 0x93DA,
-    0xB76C, 0x8A40,
-    0xB76E, 0x9770,
-    0xB770, 0xFFFB,
-    0xB772, 0xE780,
-    0xB774, 0xE089,
-    0xB776, 0xC20A,
-    0xB778, 0x9307,
-    0xB77A, 0x8A04,
-    0xB77C, 0x1375,
-    0xB77E, 0xF50F,
-    0xB780, 0x93DA,
-    0xB782, 0x0A41,
-    0xB784, 0xD3F7,
-    0xB786, 0x0AD0,
-    0xB788, 0xD374,
-    0xB78A, 0x05D0,
-    0xB78C, 0x0727,
-    0xB78E, 0x8BB7,
-    0xB790, 0x8607,
-    0xB792, 0xCE97,
-    0xB794, 0x03DC,
-    0xB796, 0xC700,
-    0xB798, 0xC3F4,
-    0xB79A, 0xE478,
-    0xB79C, 0xDC4C,
-    0xB79E, 0x5374,
-    0xB7A0, 0x0CD0,
-    0xB7A2, 0xD307,
-    0xB7A4, 0x00F0,
-    0xB7A6, 0x83D4,
-    0xB7A8, 0xC700,
-    0xB7AA, 0x53F4,
-    0xB7AC, 0x8408,
-    0xB7AE, 0x130A,
-    0xB7B0, 0x0A05,
-    0xB7B2, 0x060A,
-    0xB7B4, 0x4E9A,
-    0xB7B6, 0x035A,
-    0xB7B8, 0x4A00,
-    0xB7BA, 0xD317,
-    0xB7BC, 0xF4A0,
-    0xB7BE, 0x99C3,
-    0xB7C0, 0x5314,
-    0xB7C2, 0x8420,
-    0xB7C4, 0xB7CB,
-    0xB7C6, 0x0224,
-    0xB7C8, 0x83A7,
-    0xB7CA, 0x0BB7,
-    0xB7CC, 0x0D45,
-    0xB7CE, 0x8297,
-    0xB7D0, 0xD397,
-    0xB7D2, 0x14C0,
-    0xB7D4, 0xC207,
-    0xB7D6, 0xC183,
-    0xB7D8, 0x6395,
-    0xB7DA, 0x870B,
-    0xB7DC, 0xB747,
-    0xB7DE, 0x0124,
-    0xB7E0, 0x9387,
-    0xB7E2, 0x0727,
-    0xB7E4, 0x03D7,
-    0xB7E6, 0x6712,
-    0xB7E8, 0x83D6,
-    0xB7EA, 0xE710,
-    0xB7EC, 0x8947,
-    0xB7EE, 0x7D17,
-    0xB7F0, 0xB397,
-    0xB7F2, 0xE700,
-    0xB7F4, 0xD3F7,
-    0xB7F6, 0x07D0,
-    0xB7F8, 0x53F7,
-    0xB7FA, 0x16D0,
-    0xB7FC, 0x5304,
-    0xB7FE, 0x00F0,
-    0xB800, 0xD3F7,
-    0xB802, 0x2711,
-    0xB804, 0x37CA,
-    0xB806, 0x0224,
-    0xB808, 0xD3F7,
-    0xB80A, 0xE718,
-    0xB80C, 0xB7C7,
-    0xB80E, 0x0224,
-    0xB810, 0x07A7,
-    0xB812, 0xC7B7,
-    0xB814, 0x83A7,
-    0xB816, 0x0BB7,
-    0xB818, 0x2545,
-    0xB81A, 0xD3F7,
-    0xB81C, 0xE700,
-    0xB81E, 0xD39A,
-    0xB820, 0x17C0,
-    0xB822, 0x8297,
-    0xB824, 0x8727,
-    0xB826, 0x0AB8,
-    0xB828, 0xC20A,
-    0xB82A, 0x93DA,
-    0xB82C, 0x0A01,
-    0xB82E, 0x5374,
-    0xB830, 0xF410,
-    0xB832, 0xD694,
-    0xB834, 0xC204,
-    0xB836, 0x2393,
-    0xB838, 0x590D,
-    0xB83A, 0xC180,
-    0xB83C, 0xD317,
-    0xB83E, 0x14C0,
-    0xB840, 0x2392,
-    0xB842, 0xF90C,
-    0xB844, 0xB707,
-    0xB846, 0x0040,
-    0xB848, 0x19EC,
-    0xB84A, 0x9387,
-    0xB84C, 0xE703,
-    0xB84E, 0xCA97,
-    0xB850, 0x2390,
-    0xB852, 0x9700,
-    0xB854, 0x3264,
-    0xB856, 0xA264,
-    0xB858, 0x1269,
-    0xB85A, 0x8269,
-    0xB85C, 0x4101,
-    0xB85E, 0x1743,
-    0xB860, 0x02FC,
-    0xB862, 0x6700,
-    0xB864, 0x23C7,
-    0xB866, 0x9387,
-    0xB868, 0x0704,
-    0xB86A, 0x3264,
-    0xB86C, 0xA264,
-    0xB86E, 0x1269,
-    0xB870, 0x8269,
-    0xB872, 0xCA97,
-    0xB874, 0x2390,
-    0xB876, 0x9700,
-    0xB878, 0x4101,
-    0xB87A, 0x1743,
-    0xB87C, 0x02FC,
-    0xB87E, 0x6700,
-    0xB880, 0x63C5,
-    0xB882, 0x9377,
-    0xB884, 0xFA0F,
-    0xB886, 0x135A,
-    0xB888, 0x8A00,
-    0xB88A, 0x8729,
-    0xB88C, 0x8BB7,
-    0xB88E, 0xD3F7,
-    0xB890, 0x07D0,
-    0xB892, 0xD376,
-    0xB894, 0x0AD0,
-    0xB896, 0x37CA,
-    0xB898, 0x0224,
-    0xB89A, 0x0727,
-    0xB89C, 0x0AB8,
-    0xB89E, 0xC3F7,
-    0xB8A0, 0x3769,
-    0xB8A2, 0x5374,
-    0xB8A4, 0xF418,
-    0xB8A6, 0x5374,
-    0xB8A8, 0xE410,
-    0xB8AA, 0x531B,
-    0xB8AC, 0x14C0,
-    0xB8AE, 0x420B,
-    0xB8B0, 0x135B,
-    0xB8B2, 0x0B01,
-    0xB8B4, 0x5A85,
-    0xB8B6, 0x9760,
-    0xB8B8, 0x00FC,
-    0xB8BA, 0xE780,
-    0xB8BC, 0xA01A,
-    0xB8BE, 0xAA8A,
-    0xB8C0, 0x5A85,
-    0xB8C2, 0x9760,
-    0xB8C4, 0x00FC,
-    0xB8C6, 0xE780,
-    0xB8C8, 0xE019,
-    0xB8CA, 0x93DA,
-    0xB8CC, 0x8A00,
-    0xB8CE, 0xD397,
-    0xB8D0, 0x04C0,
-    0xB8D2, 0xC20A,
-    0xB8D4, 0x1375,
-    0xB8D6, 0xF50F,
-    0xB8D8, 0x93DA,
-    0xB8DA, 0x0A01,
-    0xB8DC, 0x5374,
-    0xB8DE, 0x05D0,
-    0xB8E0, 0xD3F7,
-    0xB8E2, 0x0AD0,
-    0xB8E4, 0xC207,
-    0xB8E6, 0xC187,
-    0xB8E8, 0x4374,
-    0xB8EA, 0x3479,
-    0xB8EC, 0x63D7,
-    0xB8EE, 0x8703,
-    0xB8F0, 0x5374,
-    0xB8F2, 0x8918,
-    0xB8F4, 0xB747,
-    0xB8F6, 0x0124,
-    0xB8F8, 0x9387,
-    0xB8FA, 0x0727,
-    0xB8FC, 0x03D7,
-    0xB8FE, 0x6712,
-    0xB900, 0x83D6,
-    0xB902, 0xE710,
-    0xB904, 0x8947,
-    0xB906, 0x7D17,
-    0xB908, 0xB397,
-    0xB90A, 0xE700,
-    0xB90C, 0xD3F7,
-    0xB90E, 0x07D0,
-    0xB910, 0x53F7,
-    0xB912, 0x16D0,
-    0xB914, 0xD3F7,
-    0xB916, 0x8710,
-    0xB918, 0xC5BD,
-    0xB91A, 0x5374,
-    0xB91C, 0x8910,
-    0xB91E, 0xD9BF,
-    0xB920, 0x9317,
-    0xB922, 0x4A00,
-    0xB924, 0xCE97,
-    0xB926, 0x83D7,
-    0xB928, 0xA706,
-    0xB92A, 0x93F6,
-    0xB92C, 0xF70F,
-    0xB92E, 0x37CB,
-    0xB930, 0x0224,
-    0xB932, 0xA183,
-    0xB934, 0x53F9,
-    0xB936, 0x06D0,
-    0xB938, 0xD3F7,
-    0xB93A, 0x07D0,
-    0xB93C, 0x0727,
-    0xB93E, 0x8BB7,
-    0xB940, 0x4379,
-    0xB942, 0xE978,
-    0xB944, 0xE30E,
-    0xB946, 0x07E0,
-    0xB948, 0x9307,
-    0xB94A, 0xF704,
-    0xB94C, 0x8607,
-    0xB94E, 0xCE97,
-    0xB950, 0x03D6,
-    0xB952, 0xC700,
-    0xB954, 0x9306,
-    0xB956, 0xF7FF,
-    0xB958, 0x75BB,
-    0xB95A, 0x9317,
-    0xB95C, 0x3A00,
-    0xB95E, 0xBA97,
-    0xB960, 0x9387,
-    0xB962, 0x8702,
-    0xB964, 0x8607,
-    0xB966, 0xCE97,
-    0xB968, 0x83D7,
-    0xB96A, 0xC700,
-    0xB96C, 0x7DBF,
-    0xB96E, 0x0100,
-    0xB970, 0x1743,
-    0xB972, 0x02FC,
-    0xB974, 0xE702,
-    0xB976, 0x63B3,
-    0xB978, 0xB747,
-    0xB97A, 0x0124,
-    0xB97C, 0x03D7,
-    0xB97E, 0xC7E1,
-    0xB980, 0x8947,
-    0xB982, 0x2A84,
-    0xB984, 0xAE84,
-    0xB986, 0x6319,
-    0xB988, 0xF700,
-    0xB98A, 0xB7A7,
-    0xB98C, 0x0124,
-    0xB98E, 0x03A7,
-    0xB990, 0x4706,
-    0xB992, 0xFD57,
-    0xB994, 0x6304,
-    0xB996, 0xF704,
-    0xB998, 0xB7E7,
-    0xB99A, 0x0124,
-    0xB99C, 0x9387,
-    0xB99E, 0x0787,
-    0xB9A0, 0x03A9,
-    0xB9A2, 0x8710,
-    0xB9A4, 0x83A9,
-    0xB9A6, 0xC710,
-    0xB9A8, 0x0146,
-    0xB9AA, 0xCA85,
-    0xB9AC, 0x4E85,
-    0xB9AE, 0x9730,
-    0xB9B0, 0x01FC,
-    0xB9B2, 0xE780,
-    0xB9B4, 0x6009,
-    0xB9B6, 0xA685,
-    0xB9B8, 0x2285,
-    0xB9BA, 0x97C0,
-    0xB9BC, 0x00FC,
-    0xB9BE, 0xE780,
-    0xB9C0, 0x6075,
-    0xB9C2, 0x4E85,
-    0xB9C4, 0x0546,
-    0xB9C6, 0xCA85,
-    0xB9C8, 0x9730,
-    0xB9CA, 0x01FC,
-    0xB9CC, 0xE780,
-    0xB9CE, 0xC007,
-    0xB9D0, 0xB7C7,
-    0xB9D2, 0x0224,
-    0xB9D4, 0x83A7,
-    0xB9D6, 0x07B7,
-    0xB9D8, 0x1545,
-    0xB9DA, 0x8297,
-    0xB9DC, 0x1743,
-    0xB9DE, 0x02FC,
-    0xB9E0, 0x6700,
-    0xB9E2, 0xE3AF,
-    0xB9E4, 0xB7C7,
-    0xB9E6, 0x0224,
-    0xB9E8, 0x03A6,
-    0xB9EA, 0x47B7,
-    0xB9EC, 0xB707,
-    0xB9EE, 0x0040,
-    0xB9F0, 0x9387,
-    0xB9F2, 0x0706,
-    0xB9F4, 0x3E96,
-    0xB9F6, 0x0967,
-    0xB9F8, 0x1308,
-    0xB9FA, 0x0502,
-    0xB9FC, 0xAA87,
-    0xB9FE, 0x098E,
-    0xBA00, 0x1307,
-    0xBA02, 0xF7F1,
-    0xBA04, 0x2390,
-    0xBA06, 0xE700,
-    0xBA08, 0xB306,
-    0xBA0A, 0xF600,
-    0xBA0C, 0x2390,
-    0xBA0E, 0xE600,
-    0xBA10, 0x8907,
-    0xBA12, 0xE399,
-    0xBA14, 0x07FF,
-    0xBA16, 0x83C7,
-    0xBA18, 0xC500,
-    0xBA1A, 0xB1CB,
-    0xBA1C, 0x83AF,
-    0xBA1E, 0x0500,
-    0xBA20, 0x0963,
-    0xBA22, 0x1388,
-    0xBA24, 0xE500,
-    0xBA26, 0x8147,
-    0xBA28, 0x0D4F,
-    0xBA2A, 0x854E,
-    0xBA2C, 0x094E,
-    0xBA2E, 0x1303,
-    0xBA30, 0x03F0,
-    0xBA32, 0x3317,
-    0xBA34, 0xFF00,
-    0xBA36, 0x3377,
-    0xBA38, 0xF701,
-    0xBA3A, 0x3396,
-    0xBA3C, 0xFE00,
-    0xBA3E, 0xB316,
-    0xBA40, 0xFE00,
-    0xBA42, 0x798E,
-    0xBA44, 0xB308,
-    0xBA46, 0xF500,
-    0xBA48, 0xF98E,
-    0xBA4A, 0x8907,
-    0xBA4C, 0x7D47,
-    0xBA4E, 0x19C2,
-    0xBA50, 0x0347,
-    0xBA52, 0x0800,
-    0xBA54, 0x1A86,
-    0xBA56, 0x81C6,
-    0xBA58, 0x0346,
-    0xBA5A, 0x1800,
-    0xBA5C, 0x2206,
-    0xBA5E, 0x518F,
-    0xBA60, 0x2390,
-    0xBA62, 0xE800,
-    0xBA64, 0x03C7,
-    0xBA66, 0xC500,
-    0xBA68, 0x0908,
-    0xBA6A, 0xE3C4,
-    0xBA6C, 0xE7FC,
-    0xBA6E, 0xB7C7,
-    0xBA70, 0x0224,
-    0xBA72, 0x83A7,
-    0xBA74, 0x07B7,
-    0xBA76, 0x1D45,
-    0xBA78, 0x8287,
-    0xBA7A, 0x0100,
-    0xBA7C, 0x1743,
-    0xBA7E, 0x02FC,
-    0xBA80, 0xE702,
-    0xBA82, 0x43A4,
-    0xBA84, 0xB7A7,
-    0xBA86, 0x0224,
-    0xBA88, 0x03C7,
-    0xBA8A, 0x6760,
-    0xBA8C, 0x8547,
-    0xBA8E, 0x630C,
-    0xBA90, 0xF700,
-    0xBA92, 0xB7C7,
-    0xBA94, 0x0224,
-    0xBA96, 0x83A7,
-    0xBA98, 0x07B7,
-    0xBA9A, 0x2145,
-    0xBA9C, 0x8297,
-    0xBA9E, 0x1743,
-    0xBAA0, 0x02FC,
-    0xBAA2, 0x6700,
-    0xBAA4, 0x63A4,
-    0xBAA6, 0x9760,
-    0xBAA8, 0xFFFB,
-    0xBAAA, 0xE780,
-    0xBAAC, 0xE0E8,
-    0xBAAE, 0x75D1,
-    0xBAB0, 0xB7E7,
-    0xBAB2, 0x0024,
-    0xBAB4, 0x83C7,
-    0xBAB6, 0xB7AD,
-    0xBAB8, 0xE9FF,
-    0xBABA, 0xB7B7,
-    0xBABC, 0x0024,
-    0xBABE, 0x03D7,
-    0xBAC0, 0x4733,
-    0xBAC2, 0xB707,
-    0xBAC4, 0x0140,
-    0xBAC6, 0x2399,
-    0xBAC8, 0xE7DC,
-    0xBACA, 0xE1B7,
-    0xBACC, 0x1743,
-    0xBACE, 0x02FC,
-    0xBAD0, 0xE702,
-    0xBAD2, 0x439F,
-    0xBAD4, 0xB7B7,
-    0xBAD6, 0x0224,
-    0xBAD8, 0x9387,
-    0xBADA, 0x87B4,
-    0xBADC, 0x23AE,
-    0xBADE, 0xF194,
-    0xBAE0, 0x3764,
-    0xBAE2, 0x0124,
-    0xBAE4, 0x9D66,
-    0xBAE6, 0xB7B5,
-    0xBAE8, 0x0224,
-    0xBAEA, 0xB7B7,
-    0xBAEC, 0x0224,
-    0xBAEE, 0x1304,
-    0xBAF0, 0x0440,
-    0xBAF2, 0x9387,
-    0xBAF4, 0xC783,
-    0xBAF6, 0x9386,
-    0xBAF8, 0xF6BF,
-    0xBAFA, 0x1146,
-    0xBAFC, 0x9385,
-    0xBAFE, 0x05FB,
-    0xBB00, 0x0545,
-    0xBB02, 0x5CC4,
-    0xBB04, 0x97E0,
-    0xBB06, 0xFFFB,
-    0xBB08, 0xE780,
-    0xBB0A, 0xC0E8,
-    0xBB0C, 0xC166,
-    0xBB0E, 0xB7B5,
-    0xBB10, 0x0224,
-    0xBB12, 0xFD16,
-    0xBB14, 0x3146,
-    0xBB16, 0x9385,
-    0xBB18, 0x4598,
-    0xBB1A, 0x4145,
-    0xBB1C, 0x97E0,
-    0xBB1E, 0xFFFB,
-    0xBB20, 0xE780,
-    0xBB22, 0x40E7,
-    0xBB24, 0x37B7,
-    0xBB26, 0x0224,
-    0xBB28, 0x1307,
-    0xBB2A, 0x87B7,
-    0xBB2C, 0xB7A7,
-    0xBB2E, 0x0224,
-    0xBB30, 0x9387,
-    0xBB32, 0x8754,
-    0xBB34, 0x78C8,
-    0xBB36, 0x37B7,
-    0xBB38, 0x0224,
-    0xBB3A, 0xA380,
-    0xBB3C, 0x070C,
-    0xBB3E, 0x2381,
-    0xBB40, 0x070C,
-    0xBB42, 0x1307,
-    0xBB44, 0xC7C2,
-    0xBB46, 0xB7B7,
-    0xBB48, 0x0224,
-    0xBB4A, 0x18D4,
-    0xBB4C, 0x9387,
-    0xBB4E, 0x472D,
-    0xBB50, 0x37B7,
-    0xBB52, 0x0224,
-    0xBB54, 0x7CC4,
-    0xBB56, 0x1307,
-    0xBB58, 0x873B,
-    0xBB5A, 0xB7B7,
-    0xBB5C, 0x0224,
-    0xBB5E, 0x18C0,
-    0xBB60, 0x9387,
-    0xBB62, 0x4737,
-    0xBB64, 0x23AA,
-    0xBB66, 0xF1A4,
-    0xBB68, 0x1743,
-    0xBB6A, 0x02FC,
-    0xBB6C, 0x6700,
-    0xBB6E, 0xC397,
-    0xBB70, 0x14A6,
-    0xBB72, 0x0224,
-    0xBB74, 0x008D,
-    0xBB76, 0x0000,
-    0xBB78, 0x0000,
-    0xBB7A, 0x803B,
-    0xBB7C, 0x0000,
-    0xBB7E, 0x003F,
-    0xBB80, 0x0000,
-    0xBB82, 0x8043,
-    0xBC98, 0x1743,
-    0xBC9A, 0x02FC,
-    0xBC9C, 0xE702,
-    0xBC9E, 0x8382,
-    0xBCA0, 0x2A84,
-    0xBCA2, 0xEFE0,
-    0xBCA4, 0xBFB9,
-    0xBCA6, 0xA147,
-    0xBCA8, 0x6306,
-    0xBCAA, 0xF400,
-    0xBCAC, 0x1743,
-    0xBCAE, 0x02FC,
-    0xBCB0, 0x6700,
-    0xBCB2, 0x8383,
-    0xBCB4, 0xB7C7,
-    0xBCB6, 0x0224,
-    0xBCB8, 0x83C7,
-    0xBCBA, 0x87B8,
-    0xBCBC, 0xE5DB,
-    0xBCBE, 0xB797,
-    0xBCC0, 0x0124,
-    0xBCC2, 0x9387,
-    0xBCC4, 0x0753,
-    0xBCC6, 0x0567,
-    0xBCC8, 0x3E97,
-    0xBCCA, 0x8346,
-    0xBCCC, 0x07B9,
-    0xBCCE, 0xF9DE,
-    0xBCD0, 0x83C7,
-    0xBCD2, 0x673F,
-    0xBCD4, 0xE1DF,
-    0xBCD6, 0x8357,
-    0xBCD8, 0x47B6,
-    0xBCDA, 0x93E7,
-    0xBCDC, 0x0720,
-    0xBCDE, 0x2312,
-    0xBCE0, 0xF7B6,
-    0xBCE2, 0xE9B7,
-    0xBCE4, 0x1733,
-    0xBCE6, 0x02FC,
-    0xBCE8, 0xE702,
-    0xBCEA, 0x437B,
-    0xBCEC, 0x37C8,
-    0xBCEE, 0x0224,
-    0xBCF0, 0x1308,
-    0xBCF2, 0x48B8,
-    0xBCF4, 0x8348,
-    0xBCF6, 0x4800,
-    0xBCF8, 0x2A8B,
-    0xBCFA, 0xAE8B,
-    0xBCFC, 0x3284,
-    0xBCFE, 0xB684,
-    0xBD00, 0x3A89,
-    0xBD02, 0xBE89,
-    0xBD04, 0x6380,
-    0xBD06, 0x0802,
-    0xBD08, 0xB7A7,
-    0xBD0A, 0x0124,
-    0xBD0C, 0x9387,
-    0xBD0E, 0x0753,
-    0xBD10, 0x03C7,
-    0xBD12, 0x07B9,
-    0xBD14, 0x83C7,
-    0xBD16, 0xB792,
-    0xBD18, 0x11C7,
-    0xBD1A, 0x0347,
-    0xBD1C, 0x5800,
-    0xBD1E, 0xBD8B,
-    0xBD20, 0x6306,
-    0xBD22, 0xF704,
-    0xBD24, 0x37E8,
-    0xBD26, 0x0124,
-    0xBD28, 0x1308,
-    0xBD2A, 0x0887,
-    0xBD2C, 0x832A,
-    0xBD2E, 0x0812,
-    0xBD30, 0x032A,
-    0xBD32, 0x4812,
-    0xBD34, 0x0146,
-    0xBD36, 0xD685,
-    0xBD38, 0x5285,
-    0xBD3A, 0x9730,
-    0xBD3C, 0x01FC,
-    0xBD3E, 0xE780,
-    0xBD40, 0xA0D0,
-    0xBD42, 0xCE87,
-    0xBD44, 0x4A87,
-    0xBD46, 0xA686,
-    0xBD48, 0x2286,
-    0xBD4A, 0xDE85,
-    0xBD4C, 0x5A85,
-    0xBD4E, 0x9740,
-    0xBD50, 0x00FC,
-    0xBD52, 0xE780,
-    0xBD54, 0xA066,
-    0xBD56, 0x0546,
-    0xBD58, 0xD685,
-    0xBD5A, 0x5285,
-    0xBD5C, 0x9730,
-    0xBD5E, 0x01FC,
-    0xBD60, 0xE780,
-    0xBD62, 0x80CE,
-    0xBD64, 0x1733,
-    0xBD66, 0x02FC,
-    0xBD68, 0x6700,
-    0xBD6A, 0xC376,
-    0xBD6C, 0x2315,
-    0xBD6E, 0x0600,
-    0xBD70, 0x9760,
-    0xBD72, 0xFFFB,
-    0xBD74, 0xE780,
-    0xBD76, 0x80BA,
-    0xBD78, 0x01CD,
-    0xBD7A, 0xB797,
-    0xBD7C, 0x0124,
-    0xBD7E, 0x9387,
-    0xBD80, 0x07D7,
-    0xBD82, 0x03C7,
-    0xBD84, 0xC700,
-    0xBD86, 0x59DF,
-    0xBD88, 0x7D17,
-    0xBD8A, 0x2386,
-    0xBD8C, 0xE700,
-    0xBD8E, 0x59BF,
-    0xBD90, 0x9760,
-    0xBD92, 0xFFFB,
-    0xBD94, 0xE780,
-    0xBD96, 0x80B5,
-    0xBD98, 0x6DD1,
-    0xBD9A, 0xB797,
-    0xBD9C, 0x0124,
-    0xBD9E, 0x9387,
-    0xBDA0, 0x07D7,
-    0xBDA2, 0x03C7,
-    0xBDA4, 0xD700,
-    0xBDA6, 0x3DDF,
-    0xBDA8, 0x7D17,
-    0xBDAA, 0xA386,
-    0xBDAC, 0xE700,
-    0xBDAE, 0x9DBF,
-    0xBDB0, 0x1733,
-    0xBDB2, 0x02FC,
-    0xBDB4, 0xE702,
-    0xBDB6, 0x636F,
-    0xBDB8, 0xB7E7,
-    0xBDBA, 0x0124,
-    0xBDBC, 0x9387,
-    0xBDBE, 0x0787,
-    0xBDC0, 0x03AA,
-    0xBDC2, 0x8712,
-    0xBDC4, 0x83A9,
-    0xBDC6, 0xC712,
-    0xBDC8, 0xAE84,
-    0xBDCA, 0x2A84,
-    0xBDCC, 0x3289,
-    0xBDCE, 0xD285,
-    0xBDD0, 0x0146,
-    0xBDD2, 0x4E85,
-    0xBDD4, 0x9730,
-    0xBDD6, 0x01FC,
-    0xBDD8, 0xE780,
-    0xBDDA, 0x00C7,
-    0xBDDC, 0xA685,
-    0xBDDE, 0x4A86,
-    0xBDE0, 0x2285,
-    0xBDE2, 0x9760,
-    0xBDE4, 0xFFFB,
-    0xBDE6, 0xE780,
-    0xBDE8, 0x206A,
-    0xBDEA, 0xAA84,
-    0xBDEC, 0x0546,
-    0xBDEE, 0xD285,
-    0xBDF0, 0x4E85,
-    0xBDF2, 0x9730,
-    0xBDF4, 0x01FC,
-    0xBDF6, 0xE780,
-    0xBDF8, 0x20C5,
-    0xBDFA, 0xB7C7,
-    0xBDFC, 0x0224,
-    0xBDFE, 0x9387,
-    0xBE00, 0x47B8,
-    0xBE02, 0x03C7,
-    0xBE04, 0xE710,
-    0xBE06, 0x15C3,
-    0xBE08, 0x37A7,
-    0xBE0A, 0x0124,
-    0xBE0C, 0x1307,
-    0xBE0E, 0x0753,
-    0xBE10, 0x0346,
-    0xBE12, 0x37B9,
-    0xBE14, 0x8946,
-    0xBE16, 0x631A,
-    0xBE18, 0xD600,
-    0xBE1A, 0x8356,
-    0xBE1C, 0x87BA,
-    0xBE1E, 0xE18E,
-    0xBE20, 0x89C6,
-    0xBE22, 0x9306,
-    0xBE24, 0x0040,
-    0xBE26, 0x6307,
-    0xBE28, 0xD400,
-    0xBE2A, 0x2685,
-    0xBE2C, 0x1733,
-    0xBE2E, 0x02FC,
-    0xBE30, 0x6700,
-    0xBE32, 0xE36A,
-    0xBE34, 0x8326,
-    0xBE36, 0x47B3,
-    0xBE38, 0x7D57,
-    0xBE3A, 0xE388,
-    0xBE3C, 0xE6FE,
-    0xBE3E, 0x03D7,
-    0xBE40, 0x2711,
-    0xBE42, 0x9396,
-    0xBE44, 0x0401,
-    0xBE46, 0xC182,
-    0xBE48, 0x11E3,
-    0xBE4A, 0x3687,
-    0xBE4C, 0xBA84,
-    0xBE4E, 0x2399,
-    0xBE50, 0xD710,
-    0xBE52, 0xE1BF,
-    0xBE54, 0x1733,
-    0xBE56, 0x02FC,
-    0xBE58, 0xE702,
-    0xBE5A, 0x2365,
-    0xBE5C, 0x3729,
-    0xBE5E, 0x0024,
-    0xBE60, 0xB7A4,
-    0xBE62, 0x0124,
-    0xBE64, 0x1309,
-    0xBE66, 0x0933,
-    0xBE68, 0x9384,
-    0xBE6A, 0x0453,
-    0xBE6C, 0x8347,
-    0xBE6E, 0x491A,
-    0xBE70, 0x03C7,
-    0xBE72, 0x24B7,
-    0xBE74, 0x2A84,
-    0xBE76, 0xD98F,
-    0xBE78, 0x6382,
-    0xBE7A, 0x0714,
-    0xBE7C, 0x8347,
-    0xBE7E, 0xE400,
-    0xBE80, 0x0547,
-    0xBE82, 0x2305,
-    0xBE84, 0xE400,
-    0xBE86, 0x99E7,
-    0xBE88, 0x8347,
-    0xBE8A, 0xC400,
-    0xBE8C, 0xD1CF,
-    0xBE8E, 0x83C7,
-    0xBE90, 0x24B7,
-    0xBE92, 0xC5CB,
-    0xBE94, 0xB76A,
-    0xBE96, 0x0124,
-    0xBE98, 0x130A,
-    0xBE9A, 0x0403,
-    0xBE9C, 0x0347,
-    0xBE9E, 0x0400,
-    0xBEA0, 0xA169,
-    0xBEA2, 0xFD19,
-    0xBEA4, 0xA301,
-    0xBEA6, 0xE400,
-    0xBEA8, 0x83A7,
-    0xBEAA, 0x0A4B,
-    0xBEAC, 0x2302,
-    0xBEAE, 0xE400,
-    0xBEB0, 0x0567,
-    0xBEB2, 0xBA97,
-    0xBEB4, 0x83D7,
-    0xBEB6, 0x47E0,
-    0xBEB8, 0x2303,
-    0xBEBA, 0x0400,
-    0xBEBC, 0xB3F7,
-    0xBEBE, 0x3701,
-    0xBEC0, 0x231C,
-    0xBEC2, 0xF400,
-    0xBEC4, 0x9740,
-    0xBEC6, 0xFDFB,
-    0xBEC8, 0xE780,
-    0xBECA, 0x0067,
-    0xBECC, 0x0358,
-    0xBECE, 0x8401,
-    0xBED0, 0xA308,
-    0xBED2, 0xA400,
-    0xBED4, 0x6301,
-    0xBED6, 0x0806,
-    0xBED8, 0x3736,
-    0xBEDA, 0x0520,
-    0xBEDC, 0x1306,
-    0xBEDE, 0x06C8,
-    0xBEE0, 0x8146,
-    0xBEE2, 0x8147,
-    0xBEE4, 0x4145,
-    0xBEE6, 0xB305,
-    0xBEE8, 0xF400,
-    0xBEEA, 0x3357,
-    0xBEEC, 0xF840,
-    0xBEEE, 0x2380,
-    0xBEF0, 0xD502,
-    0xBEF2, 0x058B,
-    0xBEF4, 0x8507,
-    0xBEF6, 0x11C7,
-    0xBEF8, 0x0347,
-    0xBEFA, 0x0600,
-    0xBEFC, 0xBA96,
-    0xBEFE, 0x93F6,
-    0xBF00, 0xF60F,
-    0xBF02, 0x0506,
-    0xBF04, 0xE391,
-    0xBF06, 0xA7FE,
-    0xBF08, 0x2308,
-    0xBF0A, 0xD400,
-    0xBF0C, 0x8347,
-    0xBF0E, 0x491A,
-    0xBF10, 0x03C7,
-    0xBF12, 0x24B7,
-    0xBF14, 0xD98F,
-    0xBF16, 0xC9C3,
-    0xBF18, 0x2307,
-    0xBF1A, 0x0400,
-    0xBF1C, 0x232E,
-    0xBF1E, 0x4401,
-    0xBF20, 0x1733,
-    0xBF22, 0x02FC,
-    0xBF24, 0x6700,
-    0xBF26, 0xA35B,
-    0xBF28, 0x8347,
-    0xBF2A, 0xB400,
-    0xBF2C, 0xA5D7,
-    0xBF2E, 0x83C7,
-    0xBF30, 0x24B7,
-    0xBF32, 0xADF3,
-    0xBF34, 0x39A0,
-    0xBF36, 0x0148,
-    0xBF38, 0x45F1,
-    0xBF3A, 0x231C,
-    0xBF3C, 0x3401,
-    0xBF3E, 0x4E88,
-    0xBF40, 0x61BF,
-    0xBF42, 0xB76A,
-    0xBF44, 0x0124,
-    0xBF46, 0x83A5,
-    0xBF48, 0x0A4B,
-    0xBF4A, 0x8567,
-    0xBF4C, 0x130A,
-    0xBF4E, 0x0403,
-    0xBF50, 0x9387,
-    0xBF52, 0x07E1,
-    0xBF54, 0x1306,
-    0xBF56, 0x8007,
-    0xBF58, 0xBE95,
-    0xBF5A, 0x5285,
-    0xBF5C, 0x9760,
-    0xBF5E, 0x00FC,
-    0xBF60, 0xE780,
-    0xBF62, 0x400A,
-    0xBF64, 0x21C9,
-    0xBF66, 0x2305,
-    0xBF68, 0x0400,
-    0xBF6A, 0x0347,
-    0xBF6C, 0x2401,
-    0xBF6E, 0x8347,
-    0xBF70, 0x6400,
-    0xBF72, 0x8356,
-    0xBF74, 0x4401,
-    0xBF76, 0xA308,
-    0xBF78, 0xE400,
-    0xBF7A, 0x0547,
-    0xBF7C, 0x231C,
-    0xBF7E, 0xD400,
-    0xBF80, 0x2307,
-    0xBF82, 0xE400,
-    0xBF84, 0xA301,
-    0xBF86, 0xF400,
-    0xBF88, 0x2303,
-    0xBF8A, 0x0400,
-    0xBF8C, 0x232E,
-    0xBF8E, 0x4401,
-    0xBF90, 0x1733,
-    0xBF92, 0x02FC,
-    0xBF94, 0x6700,
-    0xBF96, 0xA354,
-    0xBF98, 0x83A5,
-    0xBF9A, 0x0A4B,
-    0xBF9C, 0x8567,
-    0xBF9E, 0x9387,
-    0xBFA0, 0x07E1,
-    0xBFA2, 0x1306,
-    0xBFA4, 0x000F,
-    0xBFA6, 0xBE95,
-    0xBFA8, 0x5285,
-    0xBFAA, 0x9760,
-    0xBFAC, 0x00FC,
-    0xBFAE, 0xE780,
-    0xBFB0, 0x2005,
-    0xBFB2, 0x9DB7,
-    0xBFB4, 0x8347,
-    0xBFB6, 0xA400,
-    0xBFB8, 0xCDDB,
-    0xBFBA, 0xCDB5,
-    0xBFBC, 0x37A5,
-    0xBFBE, 0x0124,
-    0xBFC0, 0x1305,
-    0xBFC2, 0x050C,
-    0xBFC4, 0x9760,
-    0xBFC6, 0xFFFB,
-    0xBFC8, 0xE780,
-    0xBFCA, 0x8043,
-    0xBFCC, 0x45BD,
-    0xBFCE, 0x0100,
-    0xBFD0, 0x1733,
-    0xBFD2, 0x02FC,
-    0xBFD4, 0xE702,
-    0xBFD6, 0x034F,
-    0xBFD8, 0x8347,
-    0xBFDA, 0x1501,
-    0xBFDC, 0xA304,
-    0xBFDE, 0x0500,
-    0xBFE0, 0x2A84,
-    0xBFE2, 0x91EF,
-    0xBFE4, 0x8357,
-    0xBFE6, 0x8501,
-    0xBFE8, 0x99EB,
-    0xBFEA, 0x8347,
-    0xBFEC, 0xF500,
-    0xBFEE, 0xA307,
-    0xBFF0, 0x0500,
-    0xBFF2, 0xA304,
-    0xBFF4, 0xF500,
-    0xBFF6, 0x1733,
-    0xBFF8, 0x02FC,
-    0xBFFA, 0x6700,
-    0xBFFC, 0xE34E,
-    0xBFFE, 0x2285,
-    0xC000, 0x9790,
-    0xC002, 0xFFFB,
-    0xC004, 0xE780,
-    0xC006, 0xC0C4,
-    0xC008, 0x8347,
-    0xC00A, 0x3400,
-    0xC00C, 0x0347,
-    0xC00E, 0x6400,
-    0xC010, 0x8346,
-    0xC012, 0x7400,
-    0xC014, 0xFD17,
-    0xC016, 0x0507,
-    0xC018, 0x93F7,
-    0xC01A, 0xF70F,
-    0xC01C, 0x2303,
-    0xC01E, 0xE400,
-    0xC020, 0xA301,
-    0xC022, 0xF400,
-    0xC024, 0x99C2,
-    0xC026, 0xA303,
-    0xC028, 0x0400,
-    0xC02A, 0xB1EF,
-    0xC02C, 0x0347,
-    0xC02E, 0x1401,
-    0xC030, 0x8356,
-    0xC032, 0x8401,
-    0xC034, 0x8347,
-    0xC036, 0x5400,
-    0xC038, 0x2309,
-    0xC03A, 0xE400,
-    0xC03C, 0x0547,
-    0xC03E, 0x231A,
-    0xC040, 0xD400,
-    0xC042, 0x2304,
-    0xC044, 0xE400,
-    0xC046, 0x231C,
-    0xC048, 0x0400,
-    0xC04A, 0xA308,
-    0xC04C, 0x0400,
-    0xC04E, 0xC5E3,
-    0xC050, 0x8347,
-    0xC052, 0x1400,
-    0xC054, 0x13F7,
-    0xC056, 0x2700,
-    0xC058, 0x19C7,
-    0xC05A, 0x0347,
-    0xC05C, 0x0400,
-    0xC05E, 0x01C7,
-    0xC060, 0x0347,
-    0xC062, 0x2400,
-    0xC064, 0x4DC3,
-    0xC066, 0x858B,
-    0xC068, 0xA5CF,
-    0xC06A, 0xB727,
-    0xC06C, 0x0024,
-    0xC06E, 0x83C7,
-    0xC070, 0x274D,
-    0xC072, 0xD1D3,
-    0xC074, 0xB767,
-    0xC076, 0x0124,
-    0xC078, 0x83A7,
-    0xC07A, 0x074B,
-    0xC07C, 0x0567,
-    0xC07E, 0xBA97,
-    0xC080, 0x2380,
-    0xC082, 0x07E0,
-    0xC084, 0x8DBF,
-    0xC086, 0x0347,
-    0xC088, 0x0401,
-    0xC08A, 0x5C4C,
-    0xC08C, 0x9316,
-    0xC08E, 0x1700,
-    0xC090, 0xB697,
-    0xC092, 0x5CCC,
-    0xC094, 0xB727,
-    0xC096, 0x0024,
-    0xC098, 0x9387,
-    0xC09A, 0x0733,
-    0xC09C, 0x83C6,
-    0xC09E, 0x371A,
-    0xC0A0, 0x89EA,
-    0xC0A2, 0x8346,
-    0xC0A4, 0x6401,
-    0xC0A6, 0xA1DA,
-    0xC0A8, 0xB7A6,
-    0xC0AA, 0x0124,
-    0xC0AC, 0x83C6,
-    0xC0AE, 0x260A,
-    0xC0B0, 0xB9F2,
-    0xC0B2, 0x83C7,
-    0xC0B4, 0x471A,
-    0xC0B6, 0xA1F3,
-    0xC0B8, 0x0346,
-    0xC0BA, 0x0400,
-    0xC0BC, 0xB767,
-    0xC0BE, 0x0124,
-    0xC0C0, 0x83A5,
-    0xC0C2, 0x074B,
-    0xC0C4, 0x3306,
-    0xC0C6, 0xE602,
-    0xC0C8, 0x8567,
-    0xC0CA, 0x9387,
-    0xC0CC, 0x07E1,
-    0xC0CE, 0xBE95,
-    0xC0D0, 0x1305,
-    0xC0D2, 0x0403,
-    0xC0D4, 0x0606,
-    0xC0D6, 0x9760,
-    0xC0D8, 0x00FC,
-    0xC0DA, 0xE780,
-    0xC0DC, 0x60F2,
-    0xC0DE, 0x21BF,
-    0xC0E0, 0x8547,
-    0xC0E2, 0xA304,
-    0xC0E4, 0xF400,
-    0xC0E6, 0x1733,
-    0xC0E8, 0x02FC,
-    0xC0EA, 0x6700,
-    0xC0EC, 0xE33F,
-    0xC0EE, 0xFD17,
-    0xC0F0, 0xA302,
-    0xC0F2, 0xF400,
-    0xC0F4, 0x2285,
-    0xC0F6, 0x9760,
-    0xC0F8, 0xFFFB,
-    0xC0FA, 0xE780,
-    0xC0FC, 0x6011,
-    0xC0FE, 0x1733,
-    0xC100, 0x02FC,
-    0xC102, 0x6700,
-    0xC104, 0x633E,
-    0xC106, 0x2285,
-    0xC108, 0x9760,
-    0xC10A, 0xFFFB,
-    0xC10C, 0xE780,
-    0xC10E, 0x4010,
-    0xC110, 0xDDB5,
-    0xC112, 0x0100,
-    0xC114, 0x8947,
-    0xC116, 0x6303,
-    0xC118, 0xF500,
-    0xC11A, 0x8280,
-    0xC11C, 0x1733,
-    0xC11E, 0x02FC,
-    0xC120, 0xE702,
-    0xC122, 0xA338,
-    0xC124, 0xB784,
-    0xC126, 0x0124,
-    0xC128, 0x9384,
-    0xC12A, 0x04AA,
-    0xC12C, 0x87A7,
-    0xC12E, 0x040A,
-    0xC130, 0x4111,
-    0xC132, 0x37C5,
-    0xC134, 0x0224,
-    0xC136, 0x5396,
-    0xC138, 0x17C0,
-    0xC13A, 0x7400,
-    0xC13C, 0x9145,
-    0xC13E, 0x1305,
-    0xC140, 0xA5B8,
-    0xC142, 0x9750,
-    0xC144, 0xFFFB,
-    0xC146, 0xE780,
-    0xC148, 0x60C3,
-    0xC14A, 0x3719,
-    0xC14C, 0x0140,
-    0xC14E, 0x4205,
-    0xC150, 0x4181,
-    0xC152, 0x130A,
-    0xC154, 0x4924,
-    0xC156, 0xB789,
-    0xC158, 0x0124,
-    0xC15A, 0x37C4,
-    0xC15C, 0x0224,
-    0xC15E, 0xB7CA,
-    0xC160, 0x0224,
-    0xC162, 0x2317,
-    0xC164, 0xA100,
-    0xC166, 0x9389,
-    0xC168, 0x89B1,
-    0xC16A, 0x1304,
-    0xC16C, 0x24B9,
-    0xC16E, 0x938A,
-    0xC170, 0xAABB,
-    0xC172, 0x330A,
-    0xC174, 0x9A40,
-    0xC176, 0x0605,
-    0xC178, 0x2295,
-    0xC17A, 0x8355,
-    0xC17C, 0x2500,
-    0xC17E, 0x0356,
-    0xC180, 0xC100,
-    0xC182, 0x0355,
-    0xC184, 0x0500,
-    0xC186, 0x2104,
-    0xC188, 0x9760,
-    0xC18A, 0x00FC,
-    0xC18C, 0xE780,
-    0xC18E, 0x8082,
-    0xC190, 0x4205,
-    0xC192, 0x4181,
-    0xC194, 0x2390,
-    0xC196, 0xA900,
-    0xC198, 0xB387,
-    0xC19A, 0x4901,
-    0xC19C, 0x2390,
-    0xC19E, 0xA700,
-    0xC1A0, 0x8909,
-    0xC1A2, 0x6305,
-    0xC1A4, 0x5401,
-    0xC1A6, 0x0355,
-    0xC1A8, 0xE100,
-    0xC1AA, 0xF1B7,
-    0xC1AC, 0xB789,
-    0xC1AE, 0x0124,
-    0xC1B0, 0x37CA,
-    0xC1B2, 0x0224,
-    0xC1B4, 0x1309,
-    0xC1B6, 0x0926,
-    0xC1B8, 0x9389,
-    0xC1BA, 0xA9AF,
-    0xC1BC, 0x130A,
-    0xC1BE, 0x2AC3,
-    0xC1C0, 0x8357,
-    0xC1C2, 0xE100,
-    0xC1C4, 0x0356,
-    0xC1C6, 0xC100,
-    0xC1C8, 0x8509,
-    0xC1CA, 0x8607,
-    0xC1CC, 0xA297,
-    0xC1CE, 0x83D5,
-    0xC1D0, 0x2700,
-    0xC1D2, 0x03D5,
-    0xC1D4, 0x0700,
-    0xC1D6, 0x0909,
-    0xC1D8, 0x2104,
-    0xC1DA, 0x9750,
-    0xC1DC, 0x00FC,
-    0xC1DE, 0xE780,
-    0xC1E0, 0x607D,
-    0xC1E2, 0x1375,
-    0xC1E4, 0xF50F,
-    0xC1E6, 0xA38F,
-    0xC1E8, 0xA9FE,
-    0xC1EA, 0x4205,
-    0xC1EC, 0x4181,
-    0xC1EE, 0x231F,
-    0xC1F0, 0xA9FE,
-    0xC1F2, 0xE317,
-    0xC1F4, 0x44FD,
-    0xC1F6, 0xB719,
-    0xC1F8, 0x0140,
-    0xC1FA, 0x3789,
-    0xC1FC, 0x0124,
-    0xC1FE, 0x37CA,
-    0xC200, 0x0224,
-    0xC202, 0x9389,
-    0xC204, 0x291F,
-    0xC206, 0x1309,
-    0xC208, 0xC9B2,
-    0xC20A, 0x130A,
-    0xC20C, 0x2AC6,
-    0xC20E, 0xB389,
-    0xC210, 0x9940,
-    0xC212, 0x8357,
-    0xC214, 0xE100,
-    0xC216, 0x0356,
-    0xC218, 0xC100,
-    0xC21A, 0x8607,
-    0xC21C, 0xA297,
-    0xC21E, 0x83D5,
-    0xC220, 0x2700,
-    0xC222, 0x03D5,
-    0xC224, 0x0700,
-    0xC226, 0x2104,
-    0xC228, 0x9750,
-    0xC22A, 0x00FC,
-    0xC22C, 0xE780,
-    0xC22E, 0x8078,
-    0xC230, 0x4205,
-    0xC232, 0x4181,
-    0xC234, 0x2310,
-    0xC236, 0xA900,
-    0xC238, 0xB307,
-    0xC23A, 0x3901,
-    0xC23C, 0x2390,
-    0xC23E, 0xA700,
-    0xC240, 0x0909,
-    0xC242, 0xE318,
-    0xC244, 0x44FD,
-    0xC246, 0xB717,
-    0xC248, 0x0140,
-    0xC24A, 0x3789,
-    0xC24C, 0x0124,
-    0xC24E, 0xB7C9,
-    0xC250, 0x0224,
-    0xC252, 0x9387,
-    0xC254, 0xA720,
-    0xC256, 0x1309,
-    0xC258, 0x69B4,
-    0xC25A, 0x9389,
-    0xC25C, 0x29C9,
-    0xC25E, 0xB384,
-    0xC260, 0x9740,
-    0xC262, 0x8357,
-    0xC264, 0xE100,
-    0xC266, 0x0356,
-    0xC268, 0xC100,
-    0xC26A, 0x8607,
-    0xC26C, 0xA297,
-    0xC26E, 0x83D5,
-    0xC270, 0x2700,
-    0xC272, 0x03D5,
-    0xC274, 0x0700,
-    0xC276, 0x2104,
-    0xC278, 0x9750,
-    0xC27A, 0x00FC,
-    0xC27C, 0xE780,
-    0xC27E, 0x8073,
-    0xC280, 0x4205,
-    0xC282, 0x4181,
-    0xC284, 0x2310,
-    0xC286, 0xA900,
-    0xC288, 0xB307,
-    0xC28A, 0x9900,
-    0xC28C, 0x2390,
-    0xC28E, 0xA700,
-    0xC290, 0x0909,
-    0xC292, 0xE318,
-    0xC294, 0x34FD,
-    0xC296, 0x4101,
-    0xC298, 0x1733,
-    0xC29A, 0x02FC,
-    0xC29C, 0x6700,
-    0xC29E, 0x2324,
-    0xC2A0, 0x1733,
-    0xC2A2, 0x02FC,
-    0xC2A4, 0xE702,
-    0xC2A6, 0x0322,
-    0xC2A8, 0x2A84,
-    0xC2AA, 0xEFE0,
-    0xC2AC, 0x3F98,
-    0xC2AE, 0x1DE0,
-    0xC2B0, 0xB797,
-    0xC2B2, 0x0124,
-    0xC2B4, 0x9387,
-    0xC2B6, 0x0753,
-    0xC2B8, 0x0D67,
-    0xC2BA, 0x3E97,
-    0xC2BC, 0x0327,
-    0xC2BE, 0x876E,
-    0xC2C0, 0x058B,
-    0xC2C2, 0x09CB,
-    0xC2C4, 0x3787,
-    0xC2C6, 0x0040,
-    0xC2C8, 0x0357,
-    0xC2CA, 0x87F4,
-    0xC2CC, 0xA146,
-    0xC2CE, 0x618B,
-    0xC2D0, 0x6306,
-    0xC2D2, 0xD700,
-    0xC2D4, 0x1733,
-    0xC2D6, 0x02FC,
-    0xC2D8, 0x6700,
-    0xC2DA, 0x0321,
-    0xC2DC, 0x0567,
-    0xC2DE, 0xBA97,
-    0xC2E0, 0x2389,
-    0xC2E2, 0x07B6,
-    0xC2E4, 0xC5BF,
-    0xC2E6, 0x0100,
-    0xC2E8, 0x9147,
-    0xC2EA, 0x6303,
-    0xC2EC, 0xF500,
-    0xC2EE, 0x8280,
-    0xC2F0, 0x1733,
-    0xC2F2, 0x02FC,
-    0xC2F4, 0xE702,
-    0xC2F6, 0x031D,
-    0xC2F8, 0x9750,
-    0xC2FA, 0xFFFB,
-    0xC2FC, 0xE780,
-    0xC2FE, 0xC063,
-    0xC300, 0x09C5,
-    0xC302, 0x1733,
-    0xC304, 0x02FC,
-    0xC306, 0x6700,
-    0xC308, 0x231E,
-    0xC30A, 0x9750,
-    0xC30C, 0xFFFB,
-    0xC30E, 0xE780,
-    0xC310, 0xE05D,
-    0xC312, 0x65F9,
-    0xC314, 0xB7C7,
-    0xC316, 0x0224,
-    0xC318, 0x03D7,
-    0xC31A, 0x67B8,
-    0xC31C, 0xB7F7,
-    0xC31E, 0x0040,
-    0xC320, 0x2390,
-    0xC322, 0xE73E,
-    0xC324, 0xF9BF,
-    0xC326, 0x0100,
-    0xC328, 0x37C7,
-    0xC32A, 0x0224,
-    0xC32C, 0x1307,
-    0xC32E, 0x47B8,
-    0xC330, 0x8345,
-    0xC332, 0x0700,
-    0xC334, 0xB7A7,
-    0xC336, 0x0224,
-    0xC338, 0xB7D6,
-    0xC33A, 0x0124,
-    0xC33C, 0x03D6,
-    0xC33E, 0x4760,
-    0xC340, 0x23A8,
-    0xC342, 0xB6DA,
-    0xC344, 0xB767,
-    0xC346, 0x0124,
-    0xC348, 0xB7C6,
-    0xC34A, 0x0224,
-    0xC34C, 0x9387,
-    0xC34E, 0x0740,
-    0xC350, 0x9386,
-    0xC352, 0x86C9,
-    0xC354, 0xD4C7,
-    0xC356, 0x09CA,
-    0xC358, 0xB7B6,
-    0xC35A, 0x0224,
-    0xC35C, 0x3726,
-    0xC35E, 0x0024,
-    0xC360, 0x9386,
-    0xC362, 0x8668,
-    0xC364, 0x2320,
-    0xC366, 0xD6CE,
-    0xC368, 0x2319,
-    0xC36A, 0x0710,
-    0xC36C, 0x37C7,
-    0xC36E, 0x0224,
-    0xC370, 0x1307,
-    0xC372, 0x072A,
-    0xC374, 0xB7C6,
-    0xC376, 0x0224,
-    0xC378, 0x98D7,
-    0xC37A, 0x37C7,
-    0xC37C, 0x0224,
-    0xC37E, 0x9386,
-    0xC380, 0x4611,
-    0xC382, 0x1307,
-    0xC384, 0x872E,
-    0xC386, 0x23A4,
-    0xC388, 0xD1A4,
-    0xC38A, 0xD8C3,
-    0xC38C, 0x8280,
-    0xC38E, 0x0100,
-    0xC390, 0x1733,
-    0xC392, 0x02FC,
-    0xC394, 0xE702,
-    0xC396, 0x0313,
-    0xC398, 0xB7C6,
-    0xC39A, 0x0224,
-    0xC39C, 0xB787,
-    0xC39E, 0x0324,
-    0xC3A0, 0x9386,
-    0xC3A2, 0x863E,
-    0xC3A4, 0x37A7,
-    0xC3A6, 0x0124,
-    0xC3A8, 0x9387,
-    0xC3AA, 0x07FF,
-    0xC3AC, 0x1307,
-    0xC3AE, 0x0753,
-    0xC3B0, 0x958F,
-    0xC3B2, 0x232C,
-    0xC3B4, 0xD7B4,
-    0xC3B6, 0x232E,
-    0xC3B8, 0xF7B4,
-    0xC3BA, 0x9720,
-    0xC3BC, 0x01FC,
-    0xC3BE, 0xE780,
-    0xC3C0, 0x600C,
-    0xC3C2, 0x11C5,
-    0xC3C4, 0xEFE0,
-    0xC3C6, 0x0F80,
-    0xC3C8, 0xEFF0,
-    0xC3CA, 0x4FF0,
-    0xC3CC, 0xB13F,
-    0xC3CE, 0x1733,
-    0xC3D0, 0x02FC,
-    0xC3D2, 0x6700,
-    0xC3D4, 0x6311,
-    0xC3D6, 0x0000,
-    0xC3D8, 0xA310,
-    0xC3DA, 0xE538,
-    0xC3DC, 0x0000,
-    0xC3DE, 0x0000,
-    0xC3E0, 0xBEFF,
-    0xC3E2, 0x0F00,
-    0xC3E4, 0x0000,
-    0xC3E6, 0x0000,
-    0xFCFC, 0x2002,
-    0x849C, 0x0100,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0x84A4, 0x0000,
-    0x84A6, 0x0000,
-    0x84A8, 0x0000,
-    0x84AA, 0x0001,
-    0x84AC, 0x01FF,
-    0x84B0, 0x8089,
-    0x84B2, 0x0000,
-    0x84B4, 0x8889,
-    0x84B6, 0x0000,
-    0x84B8, 0xC097,
-    0x84BA, 0x0000,
-    0x84BC, 0xA60E,
-    0x84BE, 0x0000,
-    0x84C0, 0x2206,
-    0x84C2, 0x0000,
-    0x84C4, 0x0010,
-    0x84C8, 0x90C3,
-    0x84CA, 0x0224,
-    0x84CC, 0x44AB,
-    0x84CE, 0x0224,
-    0x84D0, 0x44AB,
-    0x84D2, 0x0224,
-    0x84D4, 0x44AB,
-    0x84D6, 0x0224,
-    0x84D8, 0x44AB,
-    0x84DA, 0x0224,
-    0x84DC, 0x44AB,
-    0x84DE, 0x0224,
-    0xA548, 0x001D,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA558, 0x0000,
-    0xA55A, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xA56C, 0x0000,
-    0xA56E, 0x0000,
-    0xA570, 0x0000,
-    0xA572, 0x0000,
-    0xA574, 0x00D5,
-    0xA576, 0x0000,
-    0xA578, 0x0000,
-    0xA57A, 0x0000,
-    0xA57C, 0x0000,
-    0xA57E, 0x0000,
-    0xA580, 0x0000,
-    0xA582, 0x0000,
-    0xA584, 0x0000,
-    0xA586, 0x0000,
-    0xA588, 0x0000,
-    0xA58A, 0x0000,
-    0xA58C, 0x0000,
-    0xA58E, 0x0000,
-    0xA590, 0x0000,
-    0xA592, 0x0000,
-    0xA594, 0x0000,
-    0xA596, 0x0000,
-    0xA598, 0x0000,
-    0xA59A, 0x0000,
-    0xA59C, 0x0000,
-    0xA59E, 0x0000,
-    0xA5A0, 0x0100,
-    0xA5A2, 0x0036,
-    0xA5A4, 0x0000,
-    0xA5A6, 0x0000,
-    0xA5A8, 0x0000,
-    0xA5AA, 0x0000,
-    0xA5AC, 0x0000,
-    0xA5AE, 0x0000,
-    0xA5B0, 0x0000,
-    0xA5B2, 0x0000,
-    0xA5B4, 0x0000,
-    0xA5B6, 0x0000,
-    0xA5B8, 0x0000,
-    0xA5BA, 0x0000,
-    0xA5BC, 0x0000,
-    0xA5BE, 0x0000,
-    0xA5C0, 0x0000,
-    0xA5C2, 0x0000,
-    0xA5C4, 0x0000,
-    0xA5C6, 0x0000,
-    0xA5C8, 0x0000,
-    0xA5CA, 0x0000,
-    0xA5CC, 0x0000,
-    0xA5CE, 0x0000,
-    0xA5D0, 0x0000,
-    0xA5D2, 0x0000,
-    0xA5D4, 0x0000,
-    0xA5D6, 0x0000,
-    0xA5D8, 0x0000,
-    0xA5DA, 0x0000,
-    0xA5DC, 0x0000,
-    0xA5DE, 0x0000,
-    0xA5E0, 0x0000,
-    0xA5E2, 0x0000,
-    0xA5E4, 0x0000,
-    0xA5E6, 0x0000,
-    0xA5E8, 0x0000,
-    0xA5EA, 0x0000,
-    0xA5EC, 0x000F,
-    0xA5EE, 0x000F,
-    0xA5F0, 0x000F,
-    0xA5F2, 0x000F,
-    0xA5F4, 0x0000,
-    0xA5F6, 0x0000,
-    0xA5F8, 0x0000,
-    0xA5FA, 0x0000,
-    0xA5FC, 0x0000,
-    0xA5FE, 0x0000,
-    0xA600, 0x0000,
-    0xA602, 0x0000,
-    0xA604, 0x0000,
-    0xA606, 0x00C6,
-    0xBB84, 0x0001,
-    0xBB86, 0x0000,
-    0xBB88, 0x0000,
-    0xBB8A, 0x0100,
-    0xBB8C, 0x0800,
-    0xBB8E, 0x1000,
-    0xBB90, 0x2000,
-    0xBB92, 0x9A00,
-    0xBB94, 0x9A00,
-    0xBB96, 0x9A00,
-    0xBB98, 0x9A00,
-    0xBB9A, 0x9600,
-    0xBB9C, 0x9600,
-    0xBB9E, 0x9600,
-    0xBBA0, 0x9600,
-    0xBBA2, 0x9300,
-    0xBBA4, 0x9300,
-    0xBBA6, 0x9300,
-    0xBBA8, 0x9300,
-    0xBBAA, 0x9000,
-    0xBBAC, 0x9000,
-    0xBBAE, 0x9000,
-    0xBBB0, 0x9000,
-    0xBBB2, 0x8D00,
-    0xBBB4, 0x8D00,
-    0xBBB6, 0x8D00,
-    0xBBB8, 0x8D00,
-    0xBBBA, 0x3F00,
-    0xBBBC, 0x3F00,
-    0xBBBE, 0x3F00,
-    0xBBC0, 0x3F00,
-    0xBBC2, 0x1E00,
-    0xBBC4, 0x1E00,
-    0xBBC6, 0x1E00,
-    0xBBC8, 0x1E00,
-    0xBBCA, 0x0000,
-    0xBBCC, 0x0000,
-    0xBBCE, 0x0000,
-    0xBBD0, 0x0000,
-    0xBBD2, 0x0800,
-    0xBBD4, 0x0800,
-    0xBBD6, 0x0800,
-    0xBBD8, 0x0800,
-    0xBBDA, 0x0000,
-    0xBBDC, 0x0000,
-    0xBBDE, 0x0000,
-    0xBBE0, 0x0000,
-    0xBBE2, 0x3F00,
-    0xBBE4, 0x3F00,
-    0xBBE6, 0x3F00,
-    0xBBE8, 0x3F00,
-    0xBBEA, 0x3400,
-    0xBBEC, 0x3400,
-    0xBBEE, 0x3400,
-    0xBBF0, 0x3400,
-    0xBBF2, 0x0A00,
-    0xBBF4, 0x0A00,
-    0xBBF6, 0x0A00,
-    0xBBF8, 0x0A00,
-    0xBBFA, 0x1000,
-    0xBBFC, 0x1000,
-    0xBBFE, 0x1000,
-    0xBC00, 0x1000,
-    0xBC02, 0x0600,
-    0xBC04, 0x0600,
-    0xBC06, 0x0600,
-    0xBC08, 0x0600,
-    0xBC0A, 0x0C00,
-    0xBC0C, 0x0C00,
-    0xBC0E, 0x0C00,
-    0xBC10, 0x0C00,
-    0xBC12, 0x0000,
-    0xBC14, 0x0000,
-    0xBC16, 0x0000,
-    0xBC18, 0x0000,
-    0xBC1A, 0x1000,
-    0xBC1C, 0x1000,
-    0xBC1E, 0x1000,
-    0xBC20, 0x1000,
-    0xBC22, 0x1000,
-    0xBC24, 0x1000,
-    0xBC26, 0x1000,
-    0xBC28, 0x1000,
-    0xBC2A, 0x2000,
-    0xBC2C, 0x1000,
-    0xBC2E, 0x1000,
-    0xBC30, 0x1000,
-    0xBC32, 0x0600,
-    0xBC34, 0x0600,
-    0xBC36, 0x0600,
-    0xBC38, 0x0600,
-    0xBC3A, 0x1C00,
-    0xBC3C, 0x1C00,
-    0xBC3E, 0x1C00,
-    0xBC40, 0x1C00,
-    0xBC42, 0x0600,
-    0xBC44, 0x0600,
-    0xBC46, 0x0600,
-    0xBC48, 0x0600,
-    0xBC4A, 0x2A00,
-    0xBC4C, 0x2A00,
-    0xBC4E, 0x2A00,
-    0xBC50, 0x2A00,
-    0xBC52, 0x0200,
-    0xBC54, 0x0200,
-    0xBC56, 0x0200,
-    0xBC58, 0x0200,
-    0xBC5A, 0x1000,
-    0xBC5C, 0x1000,
-    0xBC5E, 0x1000,
-    0xBC60, 0x1000,
-    0xBC62, 0x0E00,
-    0xBC64, 0x0E00,
-    0xBC66, 0x0E00,
-    0xBC68, 0x0E00,
-    0xBC6A, 0x2800,
-    0xBC6C, 0x2800,
-    0xBC6E, 0x2800,
-    0xBC70, 0x2800,
-    0xBC72, 0x1800,
-    0xBC74, 0x1800,
-    0xBC76, 0x1800,
-    0xBC78, 0x1800,
-    0xBC7A, 0x0800,
-    0xBC7C, 0x0800,
-    0xBC7E, 0x0800,
-    0xBC80, 0x0800,
-    0xBC82, 0x0000,
-    0xBC84, 0x0000,
-    0xBC86, 0x0000,
-    0xBC88, 0x0000,
-    0xBC8A, 0x2400,
-    0xBC8C, 0x2400,
-    0xBC8E, 0x2400,
-    0xBC90, 0x2400,
-    0xBC92, 0x0088,
-    0xFCFC, 0x2001,
-    0x5634, 0x041D,
-    0x5636, 0x0420,
-    0x5638, 0x3C85,
-    0x563A, 0x0224,
-    0x563C, 0x3CE6,
-    0x563E, 0x0320,
-    0x5640, 0xD885,
-    0x5642, 0x0224,
-    0x5644, 0xD06E,
-    0x5646, 0x0320,
-    0x5648, 0xC48D,
-    0x564A, 0x0224,
-    0x564C, 0x4877,
-    0x564E, 0x0320,
-    0x5650, 0xCC90,
-    0x5652, 0x0224,
-    0x5654, 0x6812,
-    0x5656, 0x0320,
-    0x5658, 0xB88F,
-    0x565A, 0x0224,
-    0x565C, 0xE8FE,
-    0x565E, 0x0220,
-    0x5660, 0x5491,
-    0x5662, 0x0224,
-    0x5664, 0xA462,
-    0x5666, 0x0320,
-    0x5668, 0x9C95,
-    0x566A, 0x0224,
-    0x566C, 0x901B,
-    0x566E, 0x0020,
-    0x5670, 0x2896,
-    0x5672, 0x0224,
-    0x5674, 0xC446,
-    0x5676, 0x0320,
-    0x5678, 0xE896,
-    0x567A, 0x0224,
-    0x567C, 0x1427,
-    0x567E, 0x0320,
-    0x5680, 0xC498,
-    0x5682, 0x0224,
-    0x5684, 0x304C,
-    0x5686, 0x0220,
-    0x5688, 0x749B,
-    0x568A, 0x0224,
-    0x568C, 0xC82C,
-    0x568E, 0x0220,
-    0x5690, 0xD09B,
-    0x5692, 0x0224,
-    0x5694, 0x484F,
-    0x5696, 0x0220,
-    0x5698, 0x289C,
-    0x569A, 0x0224,
-    0x569C, 0xB041,
-    0x569E, 0x0220,
-    0x56A0, 0x3C9A,
-    0x56A2, 0x0224,
-    0x56A4, 0xC81D,
-    0x56A6, 0x0420,
-    0x56A8, 0xFC9A,
-    0x56AA, 0x0224,
-    0x56AC, 0xAC7F,
-    0x56AE, 0x0420,
-    0x56B0, 0x8C86,
-    0x56B2, 0x0224,
-    0x56B4, 0x7C80,
-    0x56B6, 0x0420,
-    0x56B8, 0x1086,
-    0x56BA, 0x0224,
-    0x56BC, 0xF887,
-    0x56BE, 0x0320,
-    0x56C0, 0x7CAC,
-    0x56C2, 0x0224,
-    0x56C4, 0x1007,
-    0x56C6, 0x0320,
-    0x56C8, 0xE08E,
-    0x56CA, 0x0224,
-    0x56CC, 0x1409,
-    0x56CE, 0x0020,
-    0x56D0, 0x2495,
-    0x56D2, 0x0224,
-    0x56D4, 0x2046,
-    0x56D6, 0x0420,
-    0x56D8, 0xC087,
-    0x56DA, 0x0224,
-    0x56DC, 0xB05B,
-    0x56DE, 0x0420,
-    0x56E0, 0x4088,
-    0x56E2, 0x0224,
-    0x56E4, 0x505C,
-    0x56E6, 0x0320,
-    0x56E8, 0x448A,
-    0x56EA, 0x0224,
-    0x56EC, 0xA45B,
-    0x56EE, 0x0320,
-    0x56F0, 0x5089,
-    0x56F2, 0x0224,
-    0x56F4, 0x306A,
-    0x56F6, 0x0420,
-    0x56F8, 0x1485,
-    0x56FA, 0x0224,
-    0x56FC, 0x90F8,
-    0x56FE, 0x0220,
-    0x5700, 0x44A1,
-    0x5702, 0x0224,
-    0x5704, 0x0454,
-    0x5706, 0x0120,
-    0x5708, 0x18A6,
-    0x570A, 0x0224,
-    0x570C, 0x0453,
-    0x570E, 0x0020,
-    0x5710, 0xA0A7,
-    0x5712, 0x0224,
-    0x5714, 0xC850,
-    0x5716, 0x0220,
-    0x5718, 0xB8AC,
-    0x571A, 0x0224,
-    0x571C, 0x2C88,
-    0x571E, 0x0220,
-    0x5720, 0xF0AD,
-    0x5722, 0x0224,
-    0x5724, 0x7C82,
-    0x5726, 0x0120,
-    0x5728, 0xC8B4,
-    0x572A, 0x0224,
-    0x572C, 0xACF3,
-    0x572E, 0x0320,
-    0x5730, 0x64B5,
-    0x5732, 0x0224,
-    0x5734, 0x1081,
-    0x5736, 0x0320,
-    0x5738, 0x70B9,
-    0x573A, 0x0224,
-    0x573C, 0xBCFD,
-    0x573E, 0x0220,
-    0x5740, 0xE4B9,
-    0x5742, 0x0224,
-    0x5744, 0xBCA5,
-    0x5746, 0x0420,
-    0x5748, 0x7CBA,
-    0x574A, 0x0224,
-    0x574C, 0xB803,
-    0x574E, 0x0320,
-    0x5750, 0xE4BC,
-    0x5752, 0x0224,
-    0x5754, 0x8424,
-    0x5756, 0x0220,
-    0x5758, 0xB0BD,
-    0x575A, 0x0224,
-    0x575C, 0x9C4C,
-    0x575E, 0x0220,
-    0x5760, 0xD0BF,
-    0x5762, 0x0224,
-    0x5764, 0x0C22,
-    0x5766, 0x0220,
-    0x5768, 0x54BE,
-    0x576A, 0x0224,
-    0xFCFC, 0x2000,
-    0x68D8, 0x0100,
-    0xFCFC, 0x2002,
-    0xBC92, 0x0100,
-    0xFCFC, 0x4000,
-    0x0E04, 0x1C03,
-    0x0E10, 0x0100,
-    0x0E12, 0x00A0,
-    0x0E14, 0x0C84,
-    0x0E16, 0x002B,
-    0x0E18, 0x0300,
-    0x0E1A, 0x3000,
-    0x0E1C, 0x0100,
-    0x0E1E, 0x00A0,
-    0x0E20, 0x0C84,
-    0x0E22, 0x012B,
-    0x0E24, 0x0400,
-    0x0E26, 0x3000,
-    0xFCFC, 0x2000,
-    0x22E4, 0x0300,
-    0x2338, 0x0101,
-    0xFCFC, 0x2000,
-    0xDD6C, 0xB47E,
-    0xDD6E, 0xB67E,
-    0xDE34, 0x0000,
-    0xDE36, 0x9231,
-    0xFCFC, 0x2006,
-    0x0000, 0x535A,
-    0x0002, 0x0100,
-    0x0004, 0x11C3,
-    0x0006, 0x5A00,
-    0x0008, 0x0001,
-    0x000A, 0x0064,
-    0x000C, 0x2400,
-    0x000E, 0x0000,
-    0x0010, 0x0000,
-    0x0012, 0x0000,
-    0x0014, 0x7FBF,
-    0x0016, 0x624E,
-    0x0018, 0x20FF,
-    0x001A, 0x1F7C,
-    0x001C, 0x2C23,
-    0x001E, 0x23E8,
-    0x0020, 0xE28B,
-    0x0022, 0x1547,
-    0x0024, 0x9DF4,
-    0x0026, 0xE7D7,
-    0x0028, 0xAFCB,
-    0x002A, 0xE85F,
-    0x002C, 0x4B74,
-    0x002E, 0xA863,
-    0x0030, 0xC002,
-    0x0032, 0xB199,
-    0x0034, 0x6AB9,
-    0x0036, 0xFC3D,
-    0x0038, 0x8930,
-    0x003A, 0xA51A,
-    0x003C, 0xECF6,
-    0x003E, 0x90E5,
-    0x0040, 0x706E,
-    0x0042, 0x4787,
-    0x0044, 0xF3B3,
-    0x0046, 0x3541,
-    0x0048, 0x2641,
-    0x004A, 0x4671,
-    0x004C, 0x52C7,
-    0x004E, 0xF3DE,
-    0x0050, 0x17ED,
-    0x0052, 0x5F95,
-    0x0054, 0x2A7C,
-    0x0056, 0x1E02,
-    0x0058, 0x6C56,
-    0x005A, 0x0FC4,
-    0x005C, 0x0101,
-    0x005E, 0x7D9A,
-    0x0060, 0xE5A4,
-    0x0062, 0x4D4B,
-    0x0064, 0x1C93,
-    0x0066, 0x3300,
-    0x0068, 0x7B68,
-    0x006A, 0xA445,
-    0x006C, 0x6F14,
-    0x006E, 0x59E1,
-    0x0070, 0xEC78,
-    0x0072, 0xCCFF,
-    0x0074, 0x4DE7,
-    0x0076, 0x1555,
-    0x0078, 0x4D81,
-    0x007A, 0x5FC2,
-    0x007C, 0xDCF5,
-    0x007E, 0xF141,
-    0x0080, 0x1924,
-    0x0082, 0x3846,
-    0x0084, 0x4608,
-    0x0086, 0x7700,
-    0x0088, 0x1268,
-    0x008A, 0xF048,
-    0x008C, 0x3E6C,
-    0x008E, 0x7AE4,
-    0x0090, 0x369B,
-    0x0092, 0x2C80,
-    0x0094, 0x0D92,
-    0x0096, 0x7048,
-    0x0098, 0x97DE,
-    0x009A, 0x2493,
-    0x009C, 0x02D1,
-    0x009E, 0x9C2E,
-    0x00A0, 0xD51B,
-    0x00A2, 0xCC3A,
-    0x00A4, 0x5508,
-    0x00A6, 0x73D5,
-    0x00A8, 0x0DC3,
-    0x00AA, 0xD2AC,
-    0x00AC, 0x8FE6,
-    0x00AE, 0xA96A,
-    0x00B0, 0x07D5,
-    0x00B2, 0xD4A4,
-    0x00B4, 0x04AD,
-    0x00B6, 0xD5AE,
-    0x00B8, 0x893F,
-    0x00BA, 0x2218,
-    0x00BC, 0xA2EB,
-    0x00BE, 0x0AF5,
-    0x00C0, 0x1957,
-    0x00C2, 0xA8C2,
-    0x00C4, 0x926B,
-    0x00C6, 0x28E3,
-    0x00C8, 0x2B23,
-    0x00CA, 0x7ECB,
-    0x00CC, 0x13B7,
-    0x00CE, 0x5D45,
-    0x00D0, 0x3B29,
-    0x00D2, 0xA785,
-    0x00D4, 0xFEB1,
-    0x00D6, 0x9EE3,
-    0x00D8, 0x557A,
-    0x00DA, 0x77AF,
-    0x00DC, 0x2B1A,
-    0x00DE, 0x01E0,
-    0x00E0, 0x58C0,
-    0x00E2, 0xC43C,
-    0x00E4, 0xDFC3,
-    0x00E6, 0xF236,
-    0x00E8, 0x00D4,
-    0x00EA, 0x3CCA,
-    0x00EC, 0x1FF0,
-    0x00EE, 0x88BC,
-    0x00F0, 0x91B3,
-    0x00F2, 0x725E,
-    0x00F4, 0x6D46,
-    0x00F6, 0x3345,
-    0x00F8, 0x83AD,
-    0x00FA, 0x3812,
-    0x00FC, 0xA11C,
-    0x00FE, 0x0179,
-    0x0100, 0x999B,
-    0x0102, 0x0026,
-    0x0104, 0x0255,
-    0x0106, 0xA060,
-    0x0108, 0x72F1,
-    0x010A, 0xB03D,
-    0x010C, 0x25B6,
-    0x010E, 0x1CBC,
-    0x0110, 0x7EDC,
-    0x0112, 0x6286,
-    0x0114, 0x3CEB,
-    0x0116, 0xF0EA,
-    0x0118, 0xD157,
-    0x011A, 0x3A4B,
-    0x011C, 0x7820,
-    0x011E, 0x69FF,
-    0x0120, 0x1657,
-    0x0122, 0x0CEB,
-    0x0124, 0xDFFF,
-    0x0126, 0xFCD7,
-    0x0128, 0x5875,
-    0x012A, 0xE105,
-    0x012C, 0x5218,
-    0x012E, 0xFDE1,
-    0x0130, 0x6952,
-    0x0132, 0x9EB5,
-    0x0134, 0x6AB2,
-    0x0136, 0x7EBB,
-    0x0138, 0x7397,
-    0x013A, 0x994E,
-    0x013C, 0x3998,
-    0x013E, 0xD789,
-    0x0140, 0xE6C8,
-    0x0142, 0xCC63,
-    0x0144, 0xA29E,
-    0x0146, 0xB35D,
-    0x0148, 0xF93C,
-    0x014A, 0x47CA,
-    0x014C, 0x124F,
-    0x014E, 0x8CA5,
-    0x0150, 0xB90A,
-    0x0152, 0x9928,
-    0x0154, 0x02E8,
-    0x0156, 0x9F83,
-    0x0158, 0xCEDC,
-    0x015A, 0x3E54,
-    0x015C, 0xCDC6,
-    0x015E, 0x53A8,
-    0x0160, 0x4271,
-    0x0162, 0x1246,
-    0x0164, 0x549F,
-    0x0166, 0xE2AB,
-    0x0168, 0xB271,
-    0x016A, 0xD099,
-    0x016C, 0xEC28,
-    0x016E, 0x535C,
-    0x0170, 0xEDC5,
-    0x0172, 0x497A,
-    0x0174, 0xDB7C,
-    0x0176, 0xE3F0,
-    0x0178, 0xD72E,
-    0x017A, 0xA1CA,
-    0x017C, 0xC481,
-    0x017E, 0x28BE,
-    0x0180, 0xA228,
-    0x0182, 0x3A4D,
-    0x0184, 0xBAA0,
-    0x0186, 0xD8A3,
-    0x0188, 0x7C88,
-    0x018A, 0xEE98,
-    0x018C, 0x9851,
-    0x018E, 0x1DC8,
-    0x0190, 0x2E07,
-    0x0192, 0x540A,
-    0x0194, 0x35F4,
-    0x0196, 0xEC0F,
-    0x0198, 0x9113,
-    0x019A, 0xEDDE,
-    0x019C, 0xEAF7,
-    0x019E, 0x0900,
-    0x01A0, 0x09F3,
-    0x01A2, 0x0573,
-    0x01A4, 0xFA81,
-    0x01A6, 0x2104,
-    0x01A8, 0x2590,
-    0x01AA, 0xCC5F,
-    0x01AC, 0x6B0B,
-    0x01AE, 0x3EB7,
-    0x01B0, 0x3389,
-    0x01B2, 0x2D3C,
-    0x01B4, 0x0E0B,
-    0x01B6, 0xD103,
-    0x01B8, 0xB92F,
-    0x01BA, 0x0064,
-    0x01BC, 0x7BB7,
-    0x01BE, 0x3D07,
-    0x01C0, 0xF56E,
-    0x01C2, 0xB180,
-    0x01C4, 0xF8F2,
-    0x01C6, 0x5CCC,
-    0x01C8, 0xD8B4,
-    0x01CA, 0x7706,
-    0x01CC, 0xD573,
-    0x01CE, 0x4A32,
-    0x01D0, 0x659D,
-    0x01D2, 0x2538,
-    0x01D4, 0x1BE3,
-    0x01D6, 0xCD15,
-    0x01D8, 0x50C9,
-    0x01DA, 0x6AE2,
-    0x01DC, 0xA842,
-    0x01DE, 0x05A4,
-    0x01E0, 0x919B,
-    0x01E2, 0xDBEE,
-    0x01E4, 0xB1B8,
-    0x01E6, 0x1072,
-    0x01E8, 0x6516,
-    0x01EA, 0x0124,
-    0x01EC, 0x0E18,
-    0x01EE, 0xF58E,
-    0x01F0, 0x9C7A,
-    0x01F2, 0x3CF0,
-    0x01F4, 0xE339,
-    0x01F6, 0xF030,
-    0x01F8, 0xA3B2,
-    0x01FA, 0xC513,
-    0x01FC, 0x46A5,
-    0x01FE, 0x33FC,
-    0x0200, 0x42B0,
-    0x0202, 0xD05F,
-    0x0204, 0x8050,
-    0x0206, 0x4CEC,
-    0x0208, 0x2F40,
-    0x020A, 0x3833,
-    0x020C, 0x6A1B,
-    0x020E, 0xEFC5,
-    0x0210, 0xDB88,
-    0x0212, 0xD33F,
-    0x0214, 0x83B8,
-    0x0216, 0x65D1,
-    0x0218, 0xED9D,
-    0x021A, 0x442B,
-    0x021C, 0x23FA,
-    0x021E, 0x8B25,
-    0x0220, 0x8759,
-    0x0222, 0x8009,
-    0x0224, 0x8838,
-    0x0226, 0xEC29,
-    0x0228, 0xC4ED,
-    0x022A, 0xF174,
-    0x022C, 0xC483,
-    0x022E, 0x0160,
-    0x0230, 0x33EB,
-    0x0232, 0x7518,
-    0x0234, 0xBD81,
-    0x0236, 0x96F7,
-    0x0238, 0x1CCC,
-    0x023A, 0x41B0,
-    0x023C, 0x96C2,
-    0x023E, 0x6557,
-    0x0240, 0x3398,
-    0x0242, 0xB585,
-    0x0244, 0xA7B6,
-    0x0246, 0xDDF7,
-    0x0248, 0x6305,
-    0x024A, 0x118C,
-    0x024C, 0xC08D,
-    0x024E, 0x97A8,
-    0x0250, 0x09E5,
-    0x0252, 0xA23B,
-    0x0254, 0xFAE7,
-    0x0256, 0xF7AE,
-    0x0258, 0xFA3F,
-    0x025A, 0x8FDC,
-    0x025C, 0x1CB8,
-    0x025E, 0xF80C,
-    0x0260, 0x5240,
-    0x0262, 0x0BB2,
-    0x0264, 0x865B,
-    0x0266, 0xF59D,
-    0x0268, 0x7A2E,
-    0x026A, 0xE946,
-    0x026C, 0xEE5E,
-    0x026E, 0xDAED,
-    0x0270, 0xE083,
-    0x0272, 0x0369,
-    0x0274, 0x5C86,
-    0x0276, 0x052B,
-    0x0278, 0xAC3A,
-    0x027A, 0xE121,
-    0x027C, 0x0B2C,
-    0x027E, 0xD5F9,
-    0x0280, 0x8055,
-    0x0282, 0x2B71,
-    0x0284, 0xCA9B,
-    0x0286, 0x3C38,
-    0x0288, 0xD51D,
-    0x028A, 0xAA2C,
-    0x028C, 0x6638,
-    0x028E, 0xD97B,
-    0x0290, 0xD81E,
-    0x0292, 0x64C6,
-    0x0294, 0x23E5,
-    0x0296, 0xC55A,
-    0x0298, 0x519A,
-    0x029A, 0xB1A7,
-    0x029C, 0x8769,
-    0x029E, 0xF87A,
-    0x02A0, 0x772A,
-    0x02A2, 0x4996,
-    0x02A4, 0x1427,
-    0x02A6, 0xB0B3,
-    0x02A8, 0x5396,
-    0x02AA, 0x6710,
-    0x02AC, 0x154F,
-    0x02AE, 0xC084,
-    0x02B0, 0x0671,
-    0x02B2, 0x6218,
-    0x02B4, 0xFA55,
-    0x02B6, 0x737B,
-    0x02B8, 0x1B09,
-    0x02BA, 0x6DFE,
-    0x02BC, 0x5C31,
-    0x02BE, 0xAD90,
-    0x02C0, 0xD027,
-    0x02C2, 0x4F88,
-    0x02C4, 0xF8D4,
-    0x02C6, 0x3984,
-    0x02C8, 0x6E39,
-    0x02CA, 0x8A3B,
-    0x02CC, 0x1008,
-    0x02CE, 0xB808,
-    0x02D0, 0x7E69,
-    0x02D2, 0x0428,
-    0x02D4, 0x6E99,
-    0x02D6, 0x7F9C,
-    0x02D8, 0x6AD6,
-    0x02DA, 0x42C7,
-    0x02DC, 0x12D0,
-    0x02DE, 0x9785,
-    0x02E0, 0x2300,
-    0x02E2, 0x5FEE,
-    0x02E4, 0x6A49,
-    0x02E6, 0x3EBB,
-    0x02E8, 0x1C38,
-    0x02EA, 0x231D,
-    0x02EC, 0x53C3,
-    0x02EE, 0x4FE7,
-    0x02F0, 0x274C,
-    0x02F2, 0xA33A,
-    0x02F4, 0x939E,
-    0x02F6, 0x4BDF,
-    0x02F8, 0xD243,
-    0x02FA, 0x2AA1,
-    0x02FC, 0x4490,
-    0x02FE, 0x4EAB,
-    0x0300, 0xE2DA,
-    0x0302, 0xF516,
-    0x0304, 0xFC24,
-    0x0306, 0x876C,
-    0x0308, 0x7395,
-    0x030A, 0x1CDB,
-    0x030C, 0x9887,
-    0x030E, 0x5DD4,
-    0x0310, 0x5408,
-    0x0312, 0x87AD,
-    0x0314, 0xFA9A,
-    0x0316, 0xCF5A,
-    0x0318, 0x9045,
-    0x031A, 0x3AF0,
-    0x031C, 0x4FC4,
-    0x031E, 0xD580,
-    0x0320, 0x804D,
-    0x0322, 0x780B,
-    0x0324, 0x4E21,
-    0x0326, 0x7B1A,
-    0x0328, 0x00A9,
-    0x032A, 0x5C1E,
-    0x032C, 0x7ECC,
-    0x032E, 0x4378,
-    0x0330, 0x50FF,
-    0x0332, 0x6CC6,
-    0x0334, 0x1CE9,
-    0x0336, 0xEBD6,
-    0x0338, 0xED90,
-    0x033A, 0xE0CC,
-    0x033C, 0xC568,
-    0x033E, 0x6E51,
-    0x0340, 0x67F4,
-    0x0342, 0x3FC2,
-    0x0344, 0x18AC,
-    0x0346, 0x803D,
-    0x0348, 0xFFEA,
-    0x034A, 0x5AED,
-    0x034C, 0x0ED2,
-    0x034E, 0x01C7,
-    0x0350, 0x1D85,
-    0x0352, 0xF24D,
-    0x0354, 0x64CF,
-    0x0356, 0x401D,
-    0x0358, 0xC221,
-    0x035A, 0x7F36,
-    0x035C, 0x6C78,
-    0x035E, 0xCFBB,
-    0x0360, 0x59BB,
-    0x0362, 0xA749,
-    0x0364, 0x73BD,
-    0x0366, 0x5F16,
-    0x0368, 0xA8FF,
-    0x036A, 0x400D,
-    0x036C, 0x1D09,
-    0x036E, 0xA032,
-    0x0370, 0x149C,
-    0x0372, 0x5E78,
-    0x0374, 0xB484,
-    0x0376, 0x1296,
-    0x0378, 0xEA61,
-    0x037A, 0xF1C8,
-    0x037C, 0xC708,
-    0x037E, 0x591F,
-    0x0380, 0x03AA,
-    0x0382, 0xA2EA,
-    0x0384, 0x5361,
-    0x0386, 0xA649,
-    0x0388, 0xFA7C,
-    0x038A, 0x4032,
-    0x038C, 0x6538,
-    0x038E, 0xA99D,
-    0x0390, 0x4D75,
-    0x0392, 0x68F0,
-    0x0394, 0x783C,
-    0x0396, 0xC6BB,
-    0x0398, 0x56AD,
-    0x039A, 0x58A2,
-    0x039C, 0x6821,
-    0x039E, 0xF155,
-    0x03A0, 0x96A7,
-    0x03A2, 0x906D,
-    0x03A4, 0x4A4D,
-    0x03A6, 0x8394,
-    0x03A8, 0x5D89,
-    0x03AA, 0xC4DE,
-    0x03AC, 0x1224,
-    0x03AE, 0x2EBC,
-    0x03B0, 0xC2C5,
-    0x03B2, 0x1E85,
-    0x03B4, 0xCB26,
-    0x03B6, 0xC969,
-    0x03B8, 0x6897,
-    0x03BA, 0x699A,
-    0x03BC, 0xC337,
-    0x03BE, 0xA20D,
-    0x03C0, 0x0688,
-    0x03C2, 0x93AF,
-    0x03C4, 0xB5EE,
-    0x03C6, 0xB64B,
-    0x03C8, 0x07D1,
-    0x03CA, 0x7B43,
-    0x03CC, 0x1ECD,
-    0x03CE, 0x03F4,
-    0x03D0, 0x5A81,
-    0x03D2, 0x076A,
-    0x03D4, 0x7A52,
-    0x03D6, 0x6779,
-    0x03D8, 0x4688,
-    0x03DA, 0x7EA9,
-    0x03DC, 0x13E5,
-    0x03DE, 0x1F4F,
-    0x03E0, 0x9630,
-    0x03E2, 0x87CA,
-    0x03E4, 0xFE1D,
-    0x03E6, 0x256F,
-    0x03E8, 0xE66D,
-    0x03EA, 0x7FAD,
-    0x03EC, 0xFCFF,
-    0x03EE, 0x468D,
-    0x03F0, 0x722B,
-    0x03F2, 0xEEF7,
-    0x03F4, 0x9C48,
-    0x03F6, 0xC2B0,
-    0x03F8, 0x9A27,
-    0x03FA, 0x18D6,
-    0x03FC, 0x39B9,
-    0x03FE, 0xC176,
-    0x0400, 0x3AE4,
-    0x0402, 0x61D9,
-    0x0404, 0x0988,
-    0x0406, 0xEC5A,
-    0x0408, 0xBA4C,
-    0x040A, 0xD689,
-    0x040C, 0x421B,
-    0x040E, 0xAADD,
-    0x0410, 0x5882,
-    0x0412, 0x15CC,
-    0x0414, 0xC02A,
-    0x0416, 0x91B0,
-    0x0418, 0xB779,
-    0x041A, 0x203D,
-    0x041C, 0x2570,
-    0x041E, 0x5145,
-    0x0420, 0xBE00,
-    0x0422, 0x9396,
-    0x0424, 0x2E02,
-    0x0426, 0x2809,
-    0x0428, 0xC521,
-    0x042A, 0x615A,
-    0x042C, 0xA0CF,
-    0x042E, 0xE28E,
-    0x0430, 0x5258,
-    0x0432, 0xC6A6,
-    0x0434, 0x044E,
-    0x0436, 0x1B2B,
-    0x0438, 0x0F2B,
-    0x043A, 0x3542,
-    0x043C, 0x95DE,
-    0x043E, 0x9A99,
-    0x0440, 0x4774,
-    0x0442, 0xBE43,
-    0x0444, 0x9A35,
-    0x0446, 0x68EA,
-    0x0448, 0xE89A,
-    0x044A, 0xC206,
-    0x044C, 0x6C87,
-    0x044E, 0xCE50,
-    0x0450, 0x9F8B,
-    0x0452, 0x5526,
-    0x0454, 0x3F76,
-    0x0456, 0x2539,
-    0x0458, 0x8D33,
-    0x045A, 0x1DD3,
-    0x045C, 0x6260,
-    0x045E, 0x2E4D,
-    0x0460, 0x8019,
-    0x0462, 0x7EA0,
-    0x0464, 0x494A,
-    0x0466, 0x3C0E,
-    0x0468, 0x0259,
-    0x046A, 0x9811,
-    0x046C, 0x9459,
-    0x046E, 0x304E,
-    0x0470, 0x0922,
-    0x0472, 0x802D,
-    0x0474, 0xDC20,
-    0x0476, 0x6A9D,
-    0x0478, 0x7176,
-    0x047A, 0xA96B,
-    0x047C, 0x5814,
-    0x047E, 0x78F0,
-    0x0480, 0x74F9,
-    0x0482, 0x26CD,
-    0x0484, 0x3325,
-    0x0486, 0x6DF0,
-    0x0488, 0x1CA0,
-    0x048A, 0x8669,
-    0x048C, 0x9C58,
-    0x048E, 0xD04F,
-    0x0490, 0xB481,
-    0x0492, 0x7DA8,
-    0x0494, 0x1665,
-    0x0496, 0xEA44,
-    0x0498, 0x641F,
-    0x049A, 0x552B,
-    0x049C, 0xBC6D,
-    0x049E, 0xD290,
-    0x04A0, 0x0FFD,
-    0x04A2, 0x3C1A,
-    0x04A4, 0x7F34,
-    0x04A6, 0xBFB6,
-    0x04A8, 0xF538,
-    0x04AA, 0x10E9,
-    0x04AC, 0x3A6C,
-    0x04AE, 0x0FDA,
-    0x04B0, 0x16EA,
-    0x04B2, 0xD25E,
-    0x04B4, 0x0239,
-    0x04B6, 0xFD5E,
-    0x04B8, 0xDB1B,
-    0x04BA, 0xF0CC,
-    0x04BC, 0x99F5,
-    0x04BE, 0xCBEC,
-    0x04C0, 0x9997,
-    0x04C2, 0x483C,
-    0x04C4, 0x20B5,
-    0x04C6, 0xB406,
-    0x04C8, 0x5F41,
-    0x04CA, 0x8ACB,
-    0x04CC, 0x55F7,
-    0x04CE, 0x2D67,
-    0x04D0, 0x0C1A,
-    0x04D2, 0x37D3,
-    0x04D4, 0x8ED8,
-    0x04D6, 0x2DAF,
-    0x04D8, 0x26E6,
-    0x04DA, 0x2EDB,
-    0x04DC, 0xB8D6,
-    0x04DE, 0x891E,
-    0x04E0, 0xBAD1,
-    0x04E2, 0xE130,
-    0x04E4, 0x64C5,
-    0x04E6, 0xBC5E,
-    0x04E8, 0x5BA4,
-    0x04EA, 0xB879,
-    0x04EC, 0x31F8,
-    0x04EE, 0xA441,
-    0x04F0, 0x974D,
-    0x04F2, 0xD714,
-    0x04F4, 0xC091,
-    0x04F6, 0xD3EA,
-    0x04F8, 0x640E,
-    0x04FA, 0xEB2D,
-    0x04FC, 0xC4AA,
-    0x04FE, 0x6B5C,
-    0x0500, 0xE026,
-    0x0502, 0x8C8D,
-    0x0504, 0x1B9D,
-    0x0506, 0x75C0,
-    0x0508, 0x934C,
-    0x050A, 0x541A,
-    0x050C, 0x7935,
-    0x050E, 0x93CA,
-    0x0510, 0x8C29,
-    0x0512, 0x3974,
-    0x0514, 0x1C57,
-    0x0516, 0x4438,
-    0x0518, 0xD9E1,
-    0x051A, 0xC0E8,
-    0x051C, 0x8C85,
-    0x051E, 0x62B6,
-    0x0520, 0xD016,
-    0x0522, 0x0C61,
-    0x0524, 0x69F9,
-    0x0526, 0x087F,
-    0x0528, 0xC10A,
-    0x052A, 0xE420,
-    0x052C, 0x28DF,
-    0x052E, 0xF336,
-    0x0530, 0xC6E0,
-    0x0532, 0x0C30,
-    0x0534, 0xA8C6,
-    0x0536, 0x80C9,
-    0x0538, 0x9DAC,
-    0x053A, 0xBF25,
-    0x053C, 0xE036,
-    0x053E, 0x01ED,
-    0x0540, 0x8130,
-    0x0542, 0x7150,
-    0x0544, 0xC212,
-    0x0546, 0xC122,
-    0x0548, 0x11C5,
-    0x054A, 0x0AEB,
-    0x054C, 0xF495,
-    0x054E, 0x2514,
-    0x0550, 0xC95C,
-    0x0552, 0x56CB,
-    0x0554, 0xEE5E,
-    0x0556, 0xC09B,
-    0x0558, 0xD133,
-    0x055A, 0x12C9,
-    0x055C, 0x3096,
-    0x055E, 0xA20D,
-    0x0560, 0x0292,
-    0x0562, 0xC8DE,
-    0x0564, 0x9227,
-    0x0566, 0xBDF8,
-    0x0568, 0xDCFD,
-    0x056A, 0x3DB7,
-    0x056C, 0xF0A1,
-    0x056E, 0xF85E,
-    0x0570, 0x2FAC,
-    0x0572, 0x9DE7,
-    0x0574, 0xC134,
-    0x0576, 0xB205,
-    0x0578, 0xDDF8,
-    0x057A, 0x6D17,
-    0x057C, 0x3BED,
-    0x057E, 0x8DD8,
-    0x0580, 0xB263,
-    0x0582, 0x5A9E,
-    0x0584, 0x67EE,
-    0x0586, 0x7770,
-    0x0588, 0x58FE,
-    0x058A, 0x8810,
-    0x058C, 0xFBBB,
-    0x058E, 0xEFE3,
-    0x0590, 0x2BFF,
-    0x0592, 0x9A56,
-    0x0594, 0x9886,
-    0x0596, 0xCA7A,
-    0x0598, 0xA206,
-    0x059A, 0xE1E9,
-    0x059C, 0x766A,
-    0x059E, 0x28DA,
-    0x05A0, 0x4898,
-    0x05A2, 0x3AB9,
-    0x05A4, 0xD0EE,
-    0x05A6, 0x7E5C,
-    0x05A8, 0x9BA7,
-    0x05AA, 0x9A33,
-    0x05AC, 0x1670,
-    0x05AE, 0xF092,
-    0x05B0, 0xA74A,
-    0x05B2, 0x275A,
-    0x05B4, 0x232A,
-    0x05B6, 0x1249,
-    0x05B8, 0xC350,
-    0x05BA, 0x1145,
-    0x05BC, 0xED0F,
-    0x05BE, 0x19B6,
-    0x05C0, 0x0D35,
-    0x05C2, 0xCC8B,
-    0x05C4, 0x78A5,
-    0x05C6, 0xCA4B,
-    0x05C8, 0x933E,
-    0x05CA, 0x6E54,
-    0x05CC, 0x1BF7,
-    0x05CE, 0x6BB9,
-    0x05D0, 0x058C,
-    0x05D2, 0xBAD2,
-    0x05D4, 0x28D4,
-    0x05D6, 0x79E0,
-    0x05D8, 0xBCA0,
-    0x05DA, 0x02D3,
-    0x05DC, 0xC4C4,
-    0x05DE, 0xCAC7,
-    0x05E0, 0x01E2,
-    0x05E2, 0x1305,
-    0x05E4, 0x39FC,
-    0x05E6, 0x5AC3,
-    0x05E8, 0x6176,
-    0x05EA, 0xDC30,
-    0x05EC, 0xF24C,
-    0x05EE, 0xB4C0,
-    0x05F0, 0x1CEB,
-    0x05F2, 0x49B1,
-    0x05F4, 0x9CFA,
-    0x05F6, 0x6B04,
-    0x05F8, 0xF51C,
-    0x05FA, 0xAC09,
-    0x05FC, 0xD193,
-    0x05FE, 0x4BC4,
-    0x0600, 0x2AEF,
-    0x0602, 0xFC02,
-    0x0604, 0x8E9F,
-    0x0606, 0x6DE5,
-    0x0608, 0xFAF0,
-    0x060A, 0xD3D4,
-    0x060C, 0x8A2E,
-    0x060E, 0xB0B7,
-    0x0610, 0x3574,
-    0x0612, 0x0B14,
-    0x0614, 0xD1A2,
-    0x0616, 0xB6E5,
-    0x0618, 0xB90A,
-    0x061A, 0xCD8D,
-    0x061C, 0x4CB1,
-    0x061E, 0xC6ED,
-    0x0620, 0x994E,
-    0x0622, 0xCA09,
-    0x0624, 0xAA89,
-    0x0626, 0xE1E2,
-    0x0628, 0xE019,
-    0x062A, 0x1B4C,
-    0x062C, 0xDD5F,
-    0x062E, 0x33F5,
-    0x0630, 0xC409,
-    0x0632, 0xC994,
-    0x0634, 0xD231,
-    0x0636, 0x9F08,
-    0x0638, 0xECAD,
-    0x063A, 0xD54E,
-    0x063C, 0x6D45,
-    0x063E, 0x2B30,
-    0x0640, 0xECC0,
-    0x0642, 0xD5ED,
-    0x0644, 0xA0D1,
-    0x0646, 0x4B6F,
-    0x0648, 0x2042,
-    0x064A, 0xF720,
-    0x064C, 0x8202,
-    0x064E, 0x15F6,
-    0x0650, 0x8F0C,
-    0x0652, 0x48E7,
-    0x0654, 0xF956,
-    0x0656, 0x4683,
-    0x0658, 0xC789,
-    0x065A, 0xACBD,
-    0x065C, 0x2DB1,
-    0x065E, 0xCF0B,
-    0x0660, 0xC74B,
-    0x0662, 0x2BA9,
-    0x0664, 0x61A2,
-    0x0666, 0xD057,
-    0x0668, 0xA27B,
-    0x066A, 0x8C3A,
-    0x066C, 0x264A,
-    0x066E, 0x035B,
-    0x0670, 0x8039,
-    0x0672, 0x8D29,
-    0x0674, 0xB89B,
-    0x0676, 0x22D9,
-    0x0678, 0x26B0,
-    0x067A, 0xC9F6,
-    0x067C, 0xCA5D,
-    0x067E, 0x8F8B,
-    0x0680, 0xDBCE,
-    0x0682, 0xB380,
-    0x0684, 0x2B06,
-    0x0686, 0x4D7F,
-    0x0688, 0x9580,
-    0x068A, 0xE4B6,
-    0x068C, 0x8B9F,
-    0x068E, 0xC198,
-    0x0690, 0x6F72,
-    0x0692, 0x3157,
-    0x0694, 0x5D64,
-    0x0696, 0x07A0,
-    0x0698, 0xE198,
-    0x069A, 0x1B0F,
-    0x069C, 0x6E8F,
-    0x069E, 0xA5EE,
-    0x06A0, 0x6BF1,
-    0x06A2, 0x0386,
-    0x06A4, 0x00B9,
-    0x06A6, 0xE6AA,
-    0x06A8, 0xBE32,
-    0x06AA, 0x7F0C,
-    0x06AC, 0x1F88,
-    0x06AE, 0xAF5A,
-    0x06B0, 0xF38F,
-    0x06B2, 0x23DD,
-    0x06B4, 0x81AE,
-    0x06B6, 0x7F97,
-    0x06B8, 0x3ED6,
-    0x06BA, 0xCA0D,
-    0x06BC, 0xD71A,
-    0x06BE, 0x1355,
-    0x06C0, 0x5DC2,
-    0x06C2, 0x820B,
-    0x06C4, 0xEE33,
-    0x06C6, 0x7911,
-    0x06C8, 0x027A,
-    0x06CA, 0xE598,
-    0x06CC, 0x90CD,
-    0x06CE, 0x31F6,
-    0x06D0, 0x201B,
-    0x06D2, 0x254B,
-    0x06D4, 0x889B,
-    0x06D6, 0x81ED,
-    0x06D8, 0x7EB4,
-    0x06DA, 0x5AC9,
-    0x06DC, 0x7366,
-    0x06DE, 0x99BA,
-    0x06E0, 0x21ED,
-    0x06E2, 0x0155,
-    0x06E4, 0x4B3A,
-    0x06E6, 0xF2AD,
-    0x06E8, 0x4D1D,
-    0x06EA, 0x85E2,
-    0x06EC, 0xFCCD,
-    0x06EE, 0x3AE7,
-    0x06F0, 0x2B8D,
-    0x06F2, 0x2E43,
-    0x06F4, 0x128C,
-    0x06F6, 0x46EE,
-    0x06F8, 0x9732,
-    0x06FA, 0xDDDE,
-    0x06FC, 0x1F7B,
-    0x06FE, 0xC0E6,
-    0x0700, 0x4977,
-    0x0702, 0x6386,
-    0x0704, 0xF483,
-    0x0706, 0xEC05,
-    0x0708, 0x3957,
-    0x070A, 0x5B2E,
-    0x070C, 0x5E48,
-    0x070E, 0x56CE,
-    0x0710, 0x4BF1,
-    0x0712, 0xD19F,
-    0x0714, 0x2657,
-    0x0716, 0x2484,
-    0x0718, 0x3B0A,
-    0x071A, 0x7C70,
-    0x071C, 0xF884,
-    0x071E, 0x184B,
-    0x0720, 0xE7CC,
-    0x0722, 0x135B,
-    0x0724, 0x6571,
-    0x0726, 0x4A10,
-    0x0728, 0x0377,
-    0x072A, 0x0EB4,
-    0x072C, 0x518D,
-    0x072E, 0x9A47,
-    0x0730, 0x0304,
-    0x0732, 0x3BCB,
-    0x0734, 0x8226,
-    0x0736, 0x1931,
-    0x0738, 0xBD07,
-    0x073A, 0x25BE,
-    0x073C, 0x558B,
-    0x073E, 0x30AF,
-    0x0740, 0xF681,
-    0x0742, 0x3EF0,
-    0x0744, 0x0494,
-    0x0746, 0x4311,
-    0x0748, 0x77B5,
-    0x074A, 0x307A,
-    0x074C, 0x90F4,
-    0x074E, 0xEEAD,
-    0x0750, 0xE429,
-    0x0752, 0x5593,
-    0x0754, 0x4974,
-    0x0756, 0x1BAE,
-    0x0758, 0xF955,
-    0x075A, 0x677B,
-    0x075C, 0xB653,
-    0x075E, 0xD3B0,
-    0x0760, 0x7B2E,
-    0x0762, 0x12A1,
-    0x0764, 0xD02E,
-    0x0766, 0x9C5D,
-    0x0768, 0x8F60,
-    0x076A, 0x2F69,
-    0x076C, 0x5076,
-    0x076E, 0xCA89,
-    0x0770, 0x5036,
-    0x0772, 0xBE4C,
-    0x0774, 0x5996,
-    0x0776, 0xCCEA,
-    0x0778, 0x3D2F,
-    0x077A, 0x51C5,
-    0x077C, 0xBC8C,
-    0x077E, 0x5374,
-    0x0780, 0x5B83,
-    0x0782, 0x4006,
-    0x0784, 0x2CBB,
-    0x0786, 0xE4D9,
-    0x0788, 0xA555,
-    0x078A, 0xCD05,
-    0x078C, 0x7BBC,
-    0x078E, 0xF47A,
-    0x0790, 0xACA0,
-    0x0792, 0x9E19,
-    0x0794, 0xBA1F,
-    0x0796, 0x6CC0,
-    0x0798, 0x4115,
-    0x079A, 0x8EDF,
-    0x079C, 0x4BAA,
-    0x079E, 0x75B1,
-    0x07A0, 0x8576,
-    0x07A2, 0x3798,
-    0x07A4, 0x0041,
-    0x07A6, 0x357E,
-    0x07A8, 0x1759,
-    0x07AA, 0xC6B4,
-    0x07AC, 0x28D5,
-    0x07AE, 0x8D4B,
-    0x07B0, 0xE8B8,
-    0x07B2, 0x1DDA,
-    0x07B4, 0x3AD5,
-    0x07B6, 0x5356,
-    0x07B8, 0xA937,
-    0x07BA, 0xF1BE,
-    0x07BC, 0xB42C,
-    0x07BE, 0x51C8,
-    0x07C0, 0x9BFA,
-    0x07C2, 0xC1D5,
-    0x07C4, 0xC769,
-    0x07C6, 0xAD84,
-    0x07C8, 0x9143,
-    0x07CA, 0x619C,
-    0x07CC, 0x99BD,
-    0x07CE, 0x850A,
-    0x07D0, 0xA58F,
-    0x07D2, 0x1EF5,
-    0x07D4, 0x045C,
-    0x07D6, 0xBB50,
-    0x07D8, 0x4DCF,
-    0x07DA, 0x995C,
-    0x07DC, 0x1508,
-    0x07DE, 0x040A,
-    0x07E0, 0x8C3E,
-    0x07E2, 0x5DB2,
-    0x07E4, 0x8770,
-    0x07E6, 0x9226,
-    0x07E8, 0x82D0,
-    0x07EA, 0x48D2,
-    0x07EC, 0x9BB1,
-    0x07EE, 0x3A74,
-    0x07F0, 0xB306,
-    0x07F2, 0xAE52,
-    0x07F4, 0x094C,
-    0x07F6, 0xFB47,
-    0x07F8, 0xCEE9,
-    0x07FA, 0xEC43,
-    0x07FC, 0x9693,
-    0x07FE, 0x7471,
-    0x0800, 0xEAFE,
-    0x0802, 0x8B1D,
-    0x0804, 0x3919,
-    0x0806, 0x62E3,
-    0x0808, 0x76E0,
-    0x080A, 0x1BEE,
-    0x080C, 0x014D,
-    0x080E, 0xBF76,
-    0x0810, 0x18CB,
-    0x0812, 0x0024,
-    0x0814, 0x37EE,
-    0x0816, 0xE64F,
-    0x0818, 0x9AAF,
-    0x081A, 0xDBD9,
-    0x081C, 0xA12D,
-    0x081E, 0x428A,
-    0x0820, 0xCD29,
-    0x0822, 0x6F55,
-    0x0824, 0x25B2,
-    0x0826, 0x599D,
-    0x0828, 0x9200,
-    0x082A, 0xD75E,
-    0x082C, 0x993B,
-    0x082E, 0x3B01,
-    0x0830, 0x756E,
-    0x0832, 0x60DC,
-    0x0834, 0x6722,
-    0x0836, 0x1454,
-    0x0838, 0xD3A6,
-    0x083A, 0xB19B,
-    0x083C, 0x5518,
-    0x083E, 0x3780,
-    0x0840, 0x9A97,
-    0x0842, 0xCB93,
-    0x0844, 0xFC66,
-    0x0846, 0x3A1E,
-    0x0848, 0x61E4,
-    0x084A, 0x33F0,
-    0x084C, 0xBA46,
-    0x084E, 0xA5C7,
-    0x0850, 0xAE6B,
-    0x0852, 0x3F59,
-    0x0854, 0x215A,
-    0x0856, 0x3908,
-    0x0858, 0x3994,
-    0x085A, 0x40BA,
-    0x085C, 0x115D,
-    0x085E, 0x3F5A,
-    0x0860, 0xCED7,
-    0x0862, 0xFE54,
-    0x0864, 0x0300,
-    0x0866, 0xE9DF,
-    0x0868, 0x0B70,
-    0x086A, 0xC433,
-    0x086C, 0x7CDF,
-    0x086E, 0xF44F,
-    0x0870, 0x8A67,
-    0x0872, 0x1DC4,
-    0x0874, 0xA5DA,
-    0x0876, 0x6754,
-    0x0878, 0xC6B0,
-    0x087A, 0x5675,
-    0x087C, 0x41C6,
-    0x087E, 0x3FAC,
-    0x0880, 0xCB67,
-    0x0882, 0x83B5,
-    0x0884, 0xCC94,
-    0x0886, 0xE348,
-    0x0888, 0x3AE3,
-    0x088A, 0xBA32,
-    0x088C, 0xA441,
-    0x088E, 0x80A4,
-    0x0890, 0x4833,
-    0x0892, 0xC910,
-    0x0894, 0xE680,
-    0x0896, 0x1CF5,
-    0x0898, 0x0B9B,
-    0x089A, 0x4D94,
-    0x089C, 0x08B2,
-    0x089E, 0xD16A,
-    0x08A0, 0x7024,
-    0x08A2, 0x11ED,
-    0x08A4, 0xB03A,
-    0x08A6, 0x3CC3,
-    0x08A8, 0x2FAE,
-    0x08AA, 0xD96D,
-    0x08AC, 0x9705,
-    0x08AE, 0x183F,
-    0x08B0, 0xC5F2,
-    0x08B2, 0xF3E8,
-    0x08B4, 0xC2EC,
-    0x08B6, 0xD52F,
-    0x08B8, 0x0DEA,
-    0x08BA, 0x4C5E,
-    0x08BC, 0xE80D,
-    0x08BE, 0x831D,
-    0x08C0, 0xB4D6,
-    0x08C2, 0x788C,
-    0x08C4, 0xC7F2,
-    0x08C6, 0x3C9E,
-    0x08C8, 0x0142,
-    0x08CA, 0x1D16,
-    0x08CC, 0x00FB,
-    0x08CE, 0x7AC0,
-    0x08D0, 0x183F,
-    0x08D2, 0xA48F,
-    0x08D4, 0xBC43,
-    0x08D6, 0x5D3F,
-    0x08D8, 0x18B8,
-    0x08DA, 0xD665,
-    0x08DC, 0x5173,
-    0x08DE, 0x6EF5,
-    0x08E0, 0x0C72,
-    0x08E2, 0x8D21,
-    0x08E4, 0xDC55,
-    0x08E6, 0x224B,
-    0x08E8, 0x860D,
-    0x08EA, 0xCB81,
-    0x08EC, 0x0F2A,
-    0x08EE, 0x7047,
-    0x08F0, 0x58E8,
-    0x08F2, 0x1422,
-    0x08F4, 0x5EC8,
-    0x08F6, 0xE6F2,
-    0x08F8, 0x2DF4,
-    0x08FA, 0x8371,
-    0x08FC, 0x1155,
-    0x08FE, 0x4B8D,
-    0x0900, 0xE031,
-    0x0902, 0x176F,
-    0x0904, 0xACFB,
-    0x0906, 0x3623,
-    0x0908, 0x3354,
-    0x090A, 0xC87A,
-    0x090C, 0xB016,
-    0x090E, 0x4E54,
-    0x0910, 0xE73A,
-    0x0912, 0x43C5,
-    0x0914, 0x619B,
-    0x0916, 0x6610,
-    0x0918, 0xBEBB,
-    0x091A, 0x5F15,
-    0x091C, 0xF875,
-    0x091E, 0xD605,
-    0x0920, 0x39C0,
-    0x0922, 0xE289,
-    0x0924, 0xFD9C,
-    0x0926, 0x7536,
-    0x0928, 0x584E,
-    0x092A, 0xFFFD,
-    0x092C, 0x4BB9,
-    0x092E, 0xF9AB,
-    0x0930, 0xB2F3,
-    0x0932, 0x2DEE,
-    0x0934, 0x7E8C,
-    0x0936, 0x13B5,
-    0x0938, 0xF87A,
-    0x093A, 0x9196,
-    0x093C, 0x65E3,
-    0x093E, 0x6095,
-    0x0940, 0x4AC8,
-    0x0942, 0x1053,
-    0x0944, 0x5C29,
-    0x0946, 0xEFA4,
-    0x0948, 0xB54E,
-    0x094A, 0x5B72,
-    0x094C, 0x8028,
-    0x094E, 0x38BB,
-    0x0950, 0x586F,
-    0x0952, 0x25A4,
-    0x0954, 0x1287,
-    0x0956, 0x3934,
-    0x0958, 0xC4ED,
-    0x095A, 0x51D7,
-    0x095C, 0x5A55,
-    0x095E, 0xBE16,
-    0x0960, 0x94A2,
-    0x0962, 0xD9BB,
-    0x0964, 0xF6F5,
-    0x0966, 0x7DDD,
-    0x0968, 0x46E0,
-    0x096A, 0x5C6E,
-    0x096C, 0x43D1,
-    0x096E, 0xB205,
-    0x0970, 0x1542,
-    0x0972, 0x8517,
-    0x0974, 0xEE63,
-    0x0976, 0xC284,
-    0x0978, 0xDB43,
-    0x097A, 0x4994,
-    0x097C, 0xB650,
-    0x097E, 0x34E3,
-    0x0980, 0x6A7E,
-    0x0982, 0x1BC4,
-    0x0984, 0x4366,
-    0x0986, 0x15CD,
-    0x0988, 0xAC53,
-    0x098A, 0xF0DB,
-    0x098C, 0xACAB,
-    0x098E, 0xD429,
-    0x0990, 0x0B3D,
-    0x0992, 0x3084,
-    0x0994, 0x860B,
-    0x0996, 0x7F90,
-    0x0998, 0x0F73,
-    0x099A, 0x2B62,
-    0x099C, 0x0F63,
-    0x099E, 0xB517,
-    0x09A0, 0xC60E,
-    0x09A2, 0x1CCF,
-    0x09A4, 0x5573,
-    0x09A6, 0x6A14,
-    0x09A8, 0x4BC6,
-    0x09AA, 0x19E5,
-    0x09AC, 0x07F1,
-    0x09AE, 0x5706,
-    0x09B0, 0xDD1E,
-    0x09B2, 0x2463,
-    0x09B4, 0x7810,
-    0x09B6, 0xFBBE,
-    0x09B8, 0xF5B4,
-    0x09BA, 0x9628,
-    0x09BC, 0xDB1D,
-    0x09BE, 0x2A74,
-    0x09C0, 0xEF6B,
-    0x09C2, 0x1289,
-    0x09C4, 0x40FA,
-    0x09C6, 0x9C38,
-    0x09C8, 0x1535,
-    0x09CA, 0xD047,
-    0x09CC, 0x69BB,
-    0x09CE, 0xB14D,
-    0x09D0, 0x6D39,
-    0x09D2, 0x7173,
-    0x09D4, 0x0088,
-    0x09D6, 0xC315,
-    0x09D8, 0xB611,
-    0x09DA, 0x8E4F,
-    0x09DC, 0xABFF,
-    0x09DE, 0x0D2D,
-    0x09E0, 0x8094,
-    0x09E2, 0xD989,
-    0x09E4, 0x340F,
-    0x09E6, 0xA76E,
-    0x09E8, 0xD1F4,
-    0x09EA, 0xA50F,
-    0x09EC, 0x1EF0,
-    0x09EE, 0xFFB5,
-    0x09F0, 0x4CBB,
-    0x09F2, 0xB60A,
-    0x09F4, 0xC75B,
-    0x09F6, 0x445D,
-    0x09F8, 0x8570,
-    0x09FA, 0xD57A,
-    0x09FC, 0x745C,
-    0x09FE, 0xE984,
-    0x0A00, 0x99AA,
-    0x0A02, 0x7633,
-    0x0A04, 0x7EAF,
-    0x0A06, 0x8FB2,
-    0x0A08, 0x5222,
-    0x0A0A, 0xD0F7,
-    0x0A0C, 0x2CC1,
-    0x0A0E, 0xFABF,
-    0x0A10, 0x9074,
-    0x0A12, 0xA45C,
-    0x0A14, 0x6FD2,
-    0x0A16, 0xB308,
-    0x0A18, 0x9B0C,
-    0x0A1A, 0x1675,
-    0x0A1C, 0xB43B,
-    0x0A1E, 0xD281,
-    0x0A20, 0x5958,
-    0x0A22, 0x818B,
-    0x0A24, 0x528E,
-    0x0A26, 0xB94C,
-    0x0A28, 0xF60D,
-    0x0A2A, 0x9C62,
-    0x0A2C, 0x4621,
-    0x0A2E, 0xDF64,
-    0x0A30, 0x5F07,
-    0x0A32, 0x7F6B,
-    0x0A34, 0x3236,
-    0x0A36, 0xFFE1,
-    0x0A38, 0x6DB9,
-    0x0A3A, 0xDA02,
-    0x0A3C, 0x918E,
-    0x0A3E, 0x12FE,
-    0x0A40, 0x13BB,
-    0x0A42, 0x7441,
-    0x0A44, 0x4CFA,
-    0x0A46, 0xA455,
-    0x0A48, 0x467D,
-    0x0A4A, 0x87CD,
-    0x0A4C, 0x9D74,
-    0x0A4E, 0x6160,
-    0x0A50, 0xC477,
-    0x0A52, 0x0879,
-    0x0A54, 0xC6D1,
-    0x0A56, 0xCD76,
-    0x0A58, 0x8786,
-    0x0A5A, 0xD9E4,
-    0x0A5C, 0xDBCD,
-    0x0A5E, 0x178C,
-    0x0A60, 0x9C5B,
-    0x0A62, 0xE0EF,
-    0x0A64, 0xDFCF,
-    0x0A66, 0xC3D7,
-    0x0A68, 0xAA64,
-    0x0A6A, 0x84E4,
-    0x0A6C, 0x00C7,
-    0x0A6E, 0x4D39,
-    0x0A70, 0x895A,
-    0x0A72, 0xCF71,
-    0x0A74, 0xCE0D,
-    0x0A76, 0x68EE,
-    0x0A78, 0xE58C,
-    0x0A7A, 0xCADF,
-    0x0A7C, 0x64CA,
-    0x0A7E, 0xE43F,
-    0x0A80, 0x3809,
-    0x0A82, 0xCA64,
-    0x0A84, 0x807A,
-    0x0A86, 0x5235,
-    0x0A88, 0x6BD2,
-    0x0A8A, 0x9D45,
-    0x0A8C, 0x2420,
-    0x0A8E, 0x6B6B,
-    0x0A90, 0x8BD1,
-    0x0A92, 0x9B90,
-    0x0A94, 0x8F01,
-    0x0A96, 0xCE41,
-    0x0A98, 0x3DBE,
-    0x0A9A, 0x98B1,
-    0x0A9C, 0x3794,
-    0x0A9E, 0x12DA,
-    0x0AA0, 0xD298,
-    0x0AA2, 0x3CFC,
-    0x0AA4, 0x2464,
-    0x0AA6, 0x08AC,
-    0x0AA8, 0x7D26,
-    0x0AAA, 0x9108,
-    0x0AAC, 0xB101,
-    0x0AAE, 0x2978,
-    0x0AB0, 0x3738,
-    0x0AB2, 0x0E08,
-    0x0AB4, 0x3732,
-    0x0AB6, 0xE50A,
-    0x0AB8, 0xCE62,
-    0x0ABA, 0x55C0,
-    0x0ABC, 0x08DD,
-    0x0ABE, 0xE874,
-    0x0AC0, 0x5AF6,
-    0x0AC2, 0x5433,
-    0x0AC4, 0x335F,
-    0x0AC6, 0x052E,
-    0x0AC8, 0xB6E9,
-    0x0ACA, 0x0CE8,
-    0x0ACC, 0x749D,
-    0x0ACE, 0x5637,
-    0x0AD0, 0x9AF3,
-    0x0AD2, 0x848B,
-    0x0AD4, 0x9001,
-    0x0AD6, 0xFDA1,
-    0x0AD8, 0x3035,
-    0x0ADA, 0x1205,
-    0x0ADC, 0x128C,
-    0x0ADE, 0x97EA,
-    0x0AE0, 0xE40E,
-    0x0AE2, 0xF8EA,
-    0x0AE4, 0x3D95,
-    0x0AE6, 0xAE42,
-    0x0AE8, 0xA932,
-    0x0AEA, 0x87FF,
-    0x0AEC, 0x0C5E,
-    0x0AEE, 0x0EA8,
-    0x0AF0, 0x7E33,
-    0x0AF2, 0x0D13,
-    0x0AF4, 0xCB1C,
-    0x0AF6, 0x9FAF,
-    0x0AF8, 0xEA36,
-    0x0AFA, 0x8F20,
-    0x0AFC, 0xCE97,
-    0x0AFE, 0x6F00,
-    0x0B00, 0xB847,
-    0x0B02, 0x4CB9,
-    0x0B04, 0xA902,
-    0x0B06, 0x67F3,
-    0x0B08, 0x3217,
-    0x0B0A, 0x9A2B,
-    0x0B0C, 0xD195,
-    0x0B0E, 0xDA84,
-    0x0B10, 0x16CA,
-    0x0B12, 0x51F1,
-    0x0B14, 0x0A4A,
-    0x0B16, 0x063E,
-    0x0B18, 0x7620,
-    0x0B1A, 0x1116,
-    0x0B1C, 0x207B,
-    0x0B1E, 0x5A91,
-    0x0B20, 0x44EA,
-    0x0B22, 0xAE6A,
-    0x0B24, 0xD318,
-    0x0B26, 0x2BDB,
-    0x0B28, 0x1015,
-    0x0B2A, 0x29F0,
-    0x0B2C, 0x2A02,
-    0x0B2E, 0x2633,
-    0x0B30, 0x54C5,
-    0x0B32, 0x0797,
-    0x0B34, 0x2109,
-    0x0B36, 0xBA8B,
-    0x0B38, 0x39E5,
-    0x0B3A, 0x601A,
-    0x0B3C, 0x6918,
-    0x0B3E, 0x1BCB,
-    0x0B40, 0xBCEF,
-    0x0B42, 0x51D1,
-    0x0B44, 0x376E,
-    0x0B46, 0xAD2C,
-    0x0B48, 0x1603,
-    0x0B4A, 0xD7BB,
-    0x0B4C, 0x7810,
-    0x0B4E, 0xED0B,
-    0x0B50, 0x13DB,
-    0x0B52, 0x9C7E,
-    0x0B54, 0x3DB8,
-    0x0B56, 0x327A,
-    0x0B58, 0xBFC1,
-    0x0B5A, 0xD26D,
-    0x0B5C, 0xCA73,
-    0x0B5E, 0x9BFE,
-    0x0B60, 0xFD47,
-    0x0B62, 0x921A,
-    0x0B64, 0x5365,
-    0x0B66, 0xE6DF,
-    0x0B68, 0x69C4,
-    0x0B6A, 0x03D2,
-    0x0B6C, 0xCB09,
-    0x0B6E, 0x5C1F,
-    0x0B70, 0x9D06,
-    0x0B72, 0x26B4,
-    0x0B74, 0xA2BE,
-    0x0B76, 0x04AF,
-    0x0B78, 0x3FD8,
-    0x0B7A, 0x5636,
-    0x0B7C, 0x1C9B,
-    0x0B7E, 0x7897,
-    0x0B80, 0xA732,
-    0x0B82, 0x79C3,
-    0x0B84, 0x0AF9,
-    0x0B86, 0x8E98,
-    0x0B88, 0x34FB,
-    0x0B8A, 0xCBFB,
-    0x0B8C, 0x6EF6,
-    0x0B8E, 0xEBAC,
-    0x0B90, 0x99C9,
-    0x0B92, 0x54C2,
-    0x0B94, 0x4BA5,
-    0x0B96, 0x8219,
-    0x0B98, 0xAC76,
-    0x0B9A, 0xCD1F,
-    0x0B9C, 0xB43D,
-    0x0B9E, 0x27A3,
-    0x0BA0, 0xD3FE,
-    0x0BA2, 0xF219,
-    0x0BA4, 0x4AE5,
-    0x0BA6, 0x189B,
-    0x0BA8, 0xBDDA,
-    0x0BAA, 0x1F9B,
-    0x0BAC, 0x384C,
-    0x0BAE, 0xEEA8,
-    0x0BB0, 0x5D6B,
-    0x0BB2, 0x1412,
-    0x0BB4, 0xB9C9,
-    0x0BB6, 0x1532,
-    0x0BB8, 0x07FC,
-    0x0BBA, 0x250F,
-    0x0BBC, 0xE0D5,
-    0x0BBE, 0x21B9,
-    0x0BC0, 0x29C1,
-    0x0BC2, 0xB54A,
-    0x0BC4, 0x4329,
-    0x0BC6, 0x457C,
-    0x0BC8, 0xF6AF,
-    0x0BCA, 0x5AC3,
-    0x0BCC, 0xE876,
-    0x0BCE, 0xB481,
-    0x0BD0, 0xFB92,
-    0x0BD2, 0x73DD,
-    0x0BD4, 0x0E5B,
-    0x0BD6, 0xD923,
-    0x0BD8, 0x98F0,
-    0x0BDA, 0x8C83,
-    0x0BDC, 0x98BE,
-    0x0BDE, 0x4EA8,
-    0x0BE0, 0x93E6,
-    0x0BE2, 0x2C7A,
-    0x0BE4, 0xC91B,
-    0x0BE6, 0x61AA,
-    0x0BE8, 0x4F03,
-    0x0BEA, 0x540A,
-    0x0BEC, 0xB0AB,
-    0x0BEE, 0x8E91,
-    0x0BF0, 0x4C67,
-    0x0BF2, 0x2CF7,
-    0x0BF4, 0xEE69,
-    0x0BF6, 0x2C93,
-    0x0BF8, 0xD2B7,
-    0x0BFA, 0x512D,
-    0x0BFC, 0x104E,
-    0x0BFE, 0xE5C8,
-    0x0C00, 0x6827,
-    0x0C02, 0xC82F,
-    0x0C04, 0x8F88,
-    0x0C06, 0xB487,
-    0x0C08, 0x066B,
-    0x0C0A, 0x9668,
-    0x0C0C, 0x6D2D,
-    0x0C0E, 0x0E72,
-    0x0C10, 0x0DEE,
-    0x0C12, 0xDB72,
-    0x0C14, 0x9425,
-    0x0C16, 0x6CF0,
-    0x0C18, 0xAE4E,
-    0x0C1A, 0x99EF,
-    0x0C1C, 0x4D17,
-    0x0C1E, 0xC9DA,
-    0x0C20, 0x0265,
-    0x0C22, 0x9D64,
-    0x0C24, 0x973F,
-    0x0C26, 0x06F2,
-    0x0C28, 0x5FEA,
-    0x0C2A, 0xB583,
-    0x0C2C, 0xEA27,
-    0x0C2E, 0x16B2,
-    0x0C30, 0x8769,
-    0x0C32, 0xD6CD,
-    0x0C34, 0xF0E9,
-    0x0C36, 0xCF91,
-    0x0C38, 0xB241,
-    0x0C3A, 0x9E74,
-    0x0C3C, 0x353F,
-    0x0C3E, 0x4E26,
-    0x0C40, 0x9159,
-    0x0C42, 0x390E,
-    0x0C44, 0x3A25,
-    0x0C46, 0x79DE,
-    0x0C48, 0x8643,
-    0x0C4A, 0xCA74,
-    0x0C4C, 0x6F07,
-    0x0C4E, 0x2BC9,
-    0x0C50, 0x042C,
-    0x0C52, 0xE6D6,
-    0x0C54, 0x2720,
-    0x0C56, 0x6774,
-    0x0C58, 0x377E,
-    0x0C5A, 0x51FC,
-    0x0C5C, 0x3651,
-    0x0C5E, 0x2C6E,
-    0x0C60, 0x85B6,
-    0x0C62, 0xCEBB,
-    0x0C64, 0xC198,
-    0x0C66, 0x9DC9,
-    0x0C68, 0x2CF7,
-    0x0C6A, 0x2DB4,
-    0x0C6C, 0x462C,
-    0x0C6E, 0x29CD,
-    0x0C70, 0x2742,
-    0x0C72, 0xE006,
-    0x0C74, 0x45C4,
-    0x0C76, 0x73BA,
-    0x0C78, 0x25B5,
-    0x0C7A, 0x8E1E,
-    0x0C7C, 0x3556,
-    0x0C7E, 0x1622,
-    0x0C80, 0xEBCC,
-    0x0C82, 0xF7F5,
-    0x0C84, 0x090A,
-    0x0C86, 0xC07B,
-    0x0C88, 0x8312,
-    0x0C8A, 0xE095,
-    0x0C8C, 0x79C9,
-    0x0C8E, 0x7D9A,
-    0x0C90, 0x74B0,
-    0x0C92, 0xE92C,
-    0x0C94, 0xE746,
-    0x0C96, 0x71E4,
-    0x0C98, 0xDFFC,
-    0x0C9A, 0x7849,
-    0x0C9C, 0xA02C,
-    0x0C9E, 0x53D6,
-    0x0CA0, 0xD2CF,
-    0x0CA2, 0x6BEA,
-    0x0CA4, 0xB8FE,
-    0x0CA6, 0x7432,
-    0x0CA8, 0x00D1,
-    0x0CAA, 0x08AE,
-    0x0CAC, 0x8B75,
-    0x0CAE, 0xBC80,
-    0x0CB0, 0x549F,
-    0x0CB2, 0x54D8,
-    0x0CB4, 0xB2B1,
-    0x0CB6, 0x2144,
-    0x0CB8, 0xBEA7,
-    0x0CBA, 0xF6EB,
-    0x0CBC, 0x1CCD,
-    0x0CBE, 0x00B2,
-    0x0CC0, 0x328A,
-    0x0CC2, 0x5A1B,
-    0x0CC4, 0xA27B,
-    0x0CC6, 0xA1B3,
-    0x0CC8, 0xA571,
-    0x0CCA, 0x0645,
-    0x0CCC, 0x420E,
-    0x0CCE, 0xC4E2,
-    0x0CD0, 0xAA4E,
-    0x0CD2, 0x0C86,
-    0x0CD4, 0xC630,
-    0x0CD6, 0x44D8,
-    0x0CD8, 0x6DD0,
-    0x0CDA, 0xDFCE,
-    0x0CDC, 0xB4E7,
-    0x0CDE, 0xC405,
-    0x0CE0, 0x991E,
-    0x0CE2, 0xCC13,
-    0x0CE4, 0x04CE,
-    0x0CE6, 0x5874,
-    0x0CE8, 0x8294,
-    0x0CEA, 0x79FF,
-    0x0CEC, 0x36EA,
-    0x0CEE, 0x7F7D,
-    0x0CF0, 0x8C2E,
-    0x0CF2, 0x8B31,
-    0x0CF4, 0xC62E,
-    0x0CF6, 0xCA8F,
-    0x0CF8, 0x1711,
-    0x0CFA, 0xE49B,
-    0x0CFC, 0xEFEF,
-    0x0CFE, 0x7E3E,
-    0x0D00, 0x7FCA,
-    0x0D02, 0xA310,
-    0x0D04, 0x7282,
-    0x0D06, 0x8185,
-    0x0D08, 0x583E,
-    0x0D0A, 0x8C1A,
-    0x0D0C, 0x8B86,
-    0x0D0E, 0x4BBB,
-    0x0D10, 0xA752,
-    0x0D12, 0x03DE,
-    0x0D14, 0x271D,
-    0x0D16, 0x79BC,
-    0x0D18, 0x58B1,
-    0x0D1A, 0xE5B3,
-    0x0D1C, 0xB501,
-    0x0D1E, 0x3FDB,
-    0x0D20, 0xCDB0,
-    0x0D22, 0x6302,
-    0x0D24, 0xDED0,
-    0x0D26, 0xC7D6,
-    0x0D28, 0x921C,
-    0x0D2A, 0x90E7,
-    0x0D2C, 0xB9FF,
-    0x0D2E, 0x688E,
-    0x0D30, 0x4974,
-    0x0D32, 0x5783,
-    0x0D34, 0x2262,
-    0x0D36, 0xAAEB,
-    0x0D38, 0xD355,
-    0x0D3A, 0x89A1,
-    0x0D3C, 0x2532,
-    0x0D3E, 0xD8B0,
-    0x0D40, 0xD2CC,
-    0x0D42, 0x31A3,
-    0x0D44, 0x623C,
-    0x0D46, 0xBAB9,
-    0x0D48, 0xB2CF,
-    0x0D4A, 0xAD11,
-    0x0D4C, 0x18E1,
-    0x0D4E, 0x472B,
-    0x0D50, 0xCAD4,
-    0x0D52, 0xA1D9,
-    0x0D54, 0xA2A2,
-    0x0D56, 0xE25A,
-    0x0D58, 0x6ACE,
-    0x0D5A, 0x2BC1,
-    0x0D5C, 0xD094,
-    0x0D5E, 0x87E0,
-    0x0D60, 0x859D,
-    0x0D62, 0x8AA9,
-    0x0D64, 0x2F22,
-    0x0D66, 0x7FEB,
-    0x0D68, 0x0D44,
-    0x0D6A, 0x98CA,
-    0x0D6C, 0x8848,
-    0x0D6E, 0x8867,
-    0x0D70, 0xFAFF,
-    0x0D72, 0xAC5C,
-    0x0D74, 0x0A7F,
-    0x0D76, 0x40F2,
-    0x0D78, 0x9FA8,
-    0x0D7A, 0x437C,
-    0x0D7C, 0xCD21,
-    0x0D7E, 0x6DB5,
-    0x0D80, 0x0C1C,
-    0x0D82, 0xB90C,
-    0x0D84, 0x38B0,
-    0x0D86, 0xA28C,
-    0x0D88, 0x7506,
-    0x0D8A, 0x1DAA,
-    0x0D8C, 0xAC97,
-    0x0D8E, 0x80F0,
-    0x0D90, 0x93D9,
-    0x0D92, 0xC540,
-    0x0D94, 0x9DD5,
-    0x0D96, 0xCF91,
-    0x0D98, 0x43EE,
-    0x0D9A, 0x2F21,
-    0x0D9C, 0xF470,
-    0x0D9E, 0xB006,
-    0x0DA0, 0xF3FE,
-    0x0DA2, 0xAA68,
-    0x0DA4, 0x6B8D,
-    0x0DA6, 0x6162,
-    0x0DA8, 0xC310,
-    0x0DAA, 0xD526,
-    0x0DAC, 0xB301,
-    0x0DAE, 0x6669,
-    0x0DB0, 0x6EDD,
-    0x0DB2, 0xF5C0,
-    0x0DB4, 0xF3A9,
-    0x0DB6, 0x081B,
-    0x0DB8, 0xA04D,
-    0x0DBA, 0x17D1,
-    0x0DBC, 0x4C3E,
-    0x0DBE, 0xDC31,
-    0x0DC0, 0xE71C,
-    0x0DC2, 0xFD81,
-    0x0DC4, 0x7525,
-    0x0DC6, 0xAF0F,
-    0x0DC8, 0x23C2,
-    0x0DCA, 0x556F,
-    0x0DCC, 0x2B1D,
-    0x0DCE, 0x3F33,
-    0x0DD0, 0xF3DC,
-    0x0DD2, 0x8D28,
-    0x0DD4, 0x7A78,
-    0x0DD6, 0x1847,
-    0x0DD8, 0x74A3,
-    0x0DDA, 0x702A,
-    0x0DDC, 0xA3F7,
-    0x0DDE, 0x5E13,
-    0x0DE0, 0xB976,
-    0x0DE2, 0x434F,
-    0x0DE4, 0xEB3A,
-    0x0DE6, 0xCDFB,
-    0x0DE8, 0x28CC,
-    0x0DEA, 0x7A96,
-    0x0DEC, 0x636D,
-    0x0DEE, 0x9449,
-    0x0DF0, 0x247F,
-    0x0DF2, 0x219F,
-    0x0DF4, 0x6A61,
-    0x0DF6, 0x63F9,
-    0x0DF8, 0xF656,
-    0x0DFA, 0x131B,
-    0x0DFC, 0xC91B,
-    0x0DFE, 0x564A,
-    0x0E00, 0xEE1F,
-    0x0E02, 0xCAE8,
-    0x0E04, 0x930E,
-    0x0E06, 0x1275,
-    0x0E08, 0xC1F1,
-    0x0E0A, 0x2DD1,
-    0x0E0C, 0x7F86,
-    0x0E0E, 0xE58D,
-    0x0E10, 0xB3A7,
-    0x0E12, 0x42BD,
-    0x0E14, 0x568B,
-    0x0E16, 0xC7BD,
-    0x0E18, 0xDA46,
-    0x0E1A, 0x5DD1,
-    0x0E1C, 0x2E61,
-    0x0E1E, 0xFBB3,
-    0x0E20, 0x9D11,
-    0x0E22, 0xC609,
-    0x0E24, 0xC843,
-    0x0E26, 0x757F,
-    0x0E28, 0x6CEE,
-    0x0E2A, 0x0B41,
-    0x0E2C, 0xED81,
-    0x0E2E, 0x4EA7,
-    0x0E30, 0xD5C9,
-    0x0E32, 0x4FB1,
-    0x0E34, 0x6020,
-    0x0E36, 0xFB8D,
-    0x0E38, 0x9002,
-    0x0E3A, 0x9F01,
-    0x0E3C, 0x145D,
-    0x0E3E, 0xD0D9,
-    0x0E40, 0x708C,
-    0x0E42, 0x4E5C,
-    0x0E44, 0x3D97,
-    0x0E46, 0x214D,
-    0x0E48, 0x0D0B,
-    0x0E4A, 0x55E1,
-    0x0E4C, 0x3356,
-    0x0E4E, 0x48D7,
-    0x0E50, 0x81F9,
-    0x0E52, 0xDD48,
-    0x0E54, 0x69A9,
-    0x0E56, 0x575B,
-    0x0E58, 0xA1DC,
-    0x0E5A, 0x9F4D,
-    0x0E5C, 0x4590,
-    0x0E5E, 0x0A24,
-    0x0E60, 0x39E5,
-    0x0E62, 0x5130,
-    0x0E64, 0x0361,
-    0x0E66, 0x67DD,
-    0x0E68, 0xD9CF,
-    0x0E6A, 0x1938,
-    0x0E6C, 0x56AC,
-    0x0E6E, 0xD1A3,
-    0x0E70, 0xDEB5,
-    0x0E72, 0xFD36,
-    0x0E74, 0x8818,
-    0x0E76, 0xB87E,
-    0x0E78, 0xB2A0,
-    0x0E7A, 0x07BD,
-    0x0E7C, 0x1F65,
-    0x0E7E, 0x72A6,
-    0x0E80, 0x24A3,
-    0x0E82, 0x6763,
-    0x0E84, 0xDDD8,
-    0x0E86, 0x3A57,
-    0x0E88, 0x6269,
-    0x0E8A, 0x661C,
-    0x0E8C, 0xC948,
-    0x0E8E, 0x9BAD,
-    0x0E90, 0xB31A,
-    0x0E92, 0xBA45,
-    0x0E94, 0x17A8,
-    0x0E96, 0x6C14,
-    0x0E98, 0xCE2B,
-    0x0E9A, 0x6C46,
-    0x0E9C, 0x74DD,
-    0x0E9E, 0x8FF7,
-    0x0EA0, 0x6D3F,
-    0x0EA2, 0xE6B4,
-    0x0EA4, 0x01E0,
-    0x0EA6, 0xD215,
-    0x0EA8, 0x8F82,
-    0x0EAA, 0x153F,
-    0x0EAC, 0xD51F,
-    0x0EAE, 0x81A5,
-    0x0EB0, 0x6F10,
-    0x0EB2, 0x992E,
-    0x0EB4, 0x374B,
-    0x0EB6, 0x7DC0,
-    0x0EB8, 0x36B6,
-    0x0EBA, 0x0774,
-    0x0EBC, 0xD451,
-    0x0EBE, 0x0D84,
-    0x0EC0, 0xE9F6,
-    0x0EC2, 0x0BC3,
-    0x0EC4, 0xC93B,
-    0x0EC6, 0x3FA9,
-    0x0EC8, 0xAB4F,
-    0x0ECA, 0xCA75,
-    0x0ECC, 0x8091,
-    0x0ECE, 0x944B,
-    0x0ED0, 0xA32C,
-    0x0ED2, 0xE277,
-    0x0ED4, 0x03DB,
-    0x0ED6, 0x31A0,
-    0x0ED8, 0x6250,
-    0x0EDA, 0x8F4C,
-    0x0EDC, 0xB736,
-    0x0EDE, 0x054A,
-    0x0EE0, 0x187A,
-    0x0EE2, 0x040A,
-    0x0EE4, 0x1705,
-    0x0EE6, 0x4908,
-    0x0EE8, 0x4BB3,
-    0x0EEA, 0xCD17,
-    0x0EEC, 0x24AE,
-    0x0EEE, 0x9713,
-    0x0EF0, 0x4CDF,
-    0x0EF2, 0x737E,
-    0x0EF4, 0x20EC,
-    0x0EF6, 0xA9D0,
-    0x0EF8, 0xD5A5,
-    0x0EFA, 0x1D2A,
-    0x0EFC, 0x430E,
-    0x0EFE, 0xDBCD,
-    0x0F00, 0x817C,
-    0x0F02, 0xC8C1,
-    0x0F04, 0x7404,
-    0x0F06, 0x7D6C,
-    0x0F08, 0x995D,
-    0x0F0A, 0xE04D,
-    0x0F0C, 0xFE0F,
-    0x0F0E, 0x5A53,
-    0x0F10, 0x66FB,
-    0x0F12, 0xA44F,
-    0x0F14, 0x974C,
-    0x0F16, 0xFC9C,
-    0x0F18, 0x8094,
-    0x0F1A, 0x8336,
-    0x0F1C, 0x7A9F,
-    0x0F1E, 0xF001,
-    0x0F20, 0x12F4,
-    0x0F22, 0x8229,
-    0x0F24, 0x72AC,
-    0x0F26, 0x7325,
-    0x0F28, 0x7B83,
-    0x0F2A, 0xA7B6,
-    0x0F2C, 0xA321,
-    0x0F2E, 0x06BF,
-    0x0F30, 0x619A,
-    0x0F32, 0xF447,
-    0x0F34, 0x2D75,
-    0x0F36, 0xED14,
-    0x0F38, 0xD7CB,
-    0x0F3A, 0xE23F,
-    0x0F3C, 0x09E5,
-    0x0F3E, 0xA197,
-    0x0F40, 0xD4CE,
-    0x0F42, 0xCC6B,
-    0x0F44, 0x2131,
-    0x0F46, 0x7D66,
-    0x0F48, 0x9365,
-    0x0F4A, 0x69F1,
-    0x0F4C, 0x83B0,
-    0x0F4E, 0x079B,
-    0x0F50, 0x686C,
-    0x0F52, 0x3CC6,
-    0x0F54, 0x1B13,
-    0x0F56, 0xA9B4,
-    0x0F58, 0x9D80,
-    0x0F5A, 0xC254,
-    0x0F5C, 0x33AA,
-    0x0F5E, 0xBF70,
-    0x0F60, 0x24CF,
-    0x0F62, 0xBE2E,
-    0x0F64, 0x08DB,
-    0x0F66, 0x64FB,
-    0x0F68, 0xDB86,
-    0x0F6A, 0xCB96,
-    0x0F6C, 0xFD4A,
-    0x0F6E, 0x8BBE,
-    0x0F70, 0xF49A,
-    0x0F72, 0x19F3,
-    0x0F74, 0x37EE,
-    0x0F76, 0x2357,
-    0x0F78, 0xEF2F,
-    0x0F7A, 0x96AF,
-    0x0F7C, 0x9F88,
-    0x0F7E, 0x18CC,
-    0x0F80, 0xC716,
-    0x0F82, 0xA30C,
-    0x0F84, 0x218B,
-    0x0F86, 0x2351,
-    0x0F88, 0xF723,
-    0x0F8A, 0xCED1,
-    0x0F8C, 0xC632,
-    0x0F8E, 0x32D1,
-    0x0F90, 0xEBF0,
-    0x0F92, 0xE1A5,
-    0x0F94, 0x2E18,
-    0x0F96, 0xB357,
-    0x0F98, 0x9893,
-    0x0F9A, 0xF00F,
-    0x0F9C, 0x917A,
-    0x0F9E, 0x84F3,
-    0x0FA0, 0x6CF5,
-    0x0FA2, 0x8667,
-    0x0FA4, 0x1DBE,
-    0x0FA6, 0xE993,
-    0x0FA8, 0x4B9F,
-    0x0FAA, 0xD5FC,
-    0x0FAC, 0xF07A,
-    0x0FAE, 0x884D,
-    0x0FB0, 0xF19D,
-    0x0FB2, 0x8CA2,
-    0x0FB4, 0x62D3,
-    0x0FB6, 0x1849,
-    0x0FB8, 0x7C2D,
-    0x0FBA, 0x83DF,
-    0x0FBC, 0xD127,
-    0x0FBE, 0x497F,
-    0x0FC0, 0x7695,
-    0x0FC2, 0x93E7,
-    0x0FC4, 0x4247,
-    0x0FC6, 0x2DC3,
-    0x0FC8, 0xAFC3,
-    0x0FCA, 0x6A4A,
-    0x0FCC, 0x7DDB,
-    0x0FCE, 0x7A43,
-    0x0FD0, 0x0DF5,
-    0x0FD2, 0x01A0,
-    0x0FD4, 0x0C9F,
-    0x0FD6, 0x3ADE,
-    0x0FD8, 0xAADA,
-    0x0FDA, 0x41F1,
-    0x0FDC, 0x40F7,
-    0x0FDE, 0x9E9D,
-    0x0FE0, 0xBB33,
-    0x0FE2, 0x5392,
-    0x0FE4, 0x0403,
-    0x0FE6, 0x09EB,
-    0x0FE8, 0x9482,
-    0x0FEA, 0x0E93,
-    0x0FEC, 0x7B69,
-    0x0FEE, 0xE45A,
-    0x0FF0, 0x22C4,
-    0x0FF2, 0xEE57,
-    0x0FF4, 0x21CD,
-    0x0FF6, 0x4AAE,
-    0x0FF8, 0x716F,
-    0x0FFA, 0x97ED,
-    0x0FFC, 0xB468,
-    0x0FFE, 0x92F0,
-    0x1000, 0x191C,
-    0x1002, 0xFDB4,
-    0x1004, 0x4B3E,
-    0x1006, 0xD331,
-    0x1008, 0x52DD,
-    0x100A, 0x1A41,
-    0x100C, 0xBE19,
-    0x100E, 0xBBDE,
-    0x1010, 0xC01D,
-    0x1012, 0xE2F9,
-    0x1014, 0x1E75,
-    0x1016, 0xCCBE,
-    0x1018, 0xDE75,
-    0x101A, 0xB9C3,
-    0x101C, 0x3C7D,
-    0x101E, 0x087F,
-    0x1020, 0x7EA8,
-    0x1022, 0x9F0D,
-    0x1024, 0x1F22,
-    0x1026, 0x1DF5,
-    0x1028, 0x6C54,
-    0x102A, 0xBCB2,
-    0x102C, 0x4A67,
-    0x102E, 0xC913,
-    0x1030, 0x00B4,
-    0x1032, 0xC532,
-    0x1034, 0xDFD6,
-    0x1036, 0x1A59,
-    0x1038, 0x2A39,
-    0x103A, 0x5F66,
-    0x103C, 0xA849,
-    0x103E, 0x8566,
-    0x1040, 0xD52A,
-    0x1042, 0xFB09,
-    0x1044, 0x53AA,
-    0x1046, 0xCD37,
-    0x1048, 0x7893,
-    0x104A, 0xEB40,
-    0x104C, 0x4DD5,
-    0x104E, 0x25C6,
-    0x1050, 0x9B9F,
-    0x1052, 0x34DC,
-    0x1054, 0xA6D6,
-    0x1056, 0x338A,
-    0x1058, 0x3767,
-    0x105A, 0x5CB3,
-    0x105C, 0x2409,
-    0x105E, 0x0556,
-    0x1060, 0x1DF4,
-    0x1062, 0xBB6D,
-    0x1064, 0xD7EB,
-    0x1066, 0x3F9C,
-    0x1068, 0xAE67,
-    0x106A, 0x6F8C,
-    0x106C, 0x0F60,
-    0x106E, 0xEBB1,
-    0x1070, 0x76F3,
-    0x1072, 0x100B,
-    0x1074, 0xCC3E,
-    0x1076, 0xC963,
-    0x1078, 0x57EC,
-    0x107A, 0xB0CF,
-    0x107C, 0x3724,
-    0x107E, 0xBE70,
-    0x1080, 0x9153,
-    0x1082, 0x0F48,
-    0x1084, 0x365D,
-    0x1086, 0xBFA4,
-    0x1088, 0x2029,
-    0x108A, 0x45CA,
-    0x108C, 0x595C,
-    0x108E, 0x8CF7,
-    0x1090, 0x7ACF,
-    0x1092, 0xB231,
-    0x1094, 0x4C9B,
-    0x1096, 0x53B8,
-    0x1098, 0x74F2,
-    0x109A, 0x1969,
-    0x109C, 0x0D8E,
-    0x109E, 0xC423,
-    0x10A0, 0xE5A9,
-    0x10A2, 0xB7C3,
-    0x10A4, 0x0ED4,
-    0x10A6, 0xDB9D,
-    0x10A8, 0xE8F6,
-    0x10AA, 0x91A3,
-    0x10AC, 0xFF96,
-    0x10AE, 0xE8E0,
-    0x10B0, 0xC3C1,
-    0x10B2, 0xE0F7,
-    0x10B4, 0x9E36,
-    0x10B6, 0x5985,
-    0x10B8, 0x9FA0,
-    0x10BA, 0x01D7,
-    0x10BC, 0x454B,
-    0x10BE, 0x524E,
-    0x10C0, 0xE5ED,
-    0x10C2, 0xCC42,
-    0x10C4, 0xEB0A,
-    0x10C6, 0x6833,
-    0x10C8, 0x23F8,
-    0x10CA, 0xA152,
-    0x10CC, 0xB153,
-    0x10CE, 0x54F6,
-    0x10D0, 0xCE7C,
-    0x10D2, 0x8FCC,
-    0x10D4, 0x8185,
-    0x10D6, 0xFD5C,
-    0x10D8, 0x1892,
-    0x10DA, 0xD6A4,
-    0x10DC, 0x4635,
-    0x10DE, 0x9ECD,
-    0x10E0, 0x4844,
-    0x10E2, 0x243F,
-    0x10E4, 0xDDCE,
-    0x10E6, 0xBD84,
-    0x10E8, 0x2370,
-    0x10EA, 0x69FA,
-    0x10EC, 0x939E,
-    0x10EE, 0x6D16,
-    0x10F0, 0x35AF,
-    0x10F2, 0x054B,
-    0x10F4, 0x4E51,
-    0x10F6, 0xED90,
-    0x10F8, 0x64FB,
-    0x10FA, 0xB9BD,
-    0x10FC, 0x73FF,
-    0x10FE, 0x3CCE,
-    0x1100, 0x3378,
-    0x1102, 0xEFBB,
-    0x1104, 0x306F,
-    0x1106, 0x5E46,
-    0x1108, 0x62F6,
-    0x110A, 0x41C9,
-    0x110C, 0xD184,
-    0x110E, 0xCA57,
-    0x1110, 0x01FF,
-    0x1112, 0x63C7,
-    0x1114, 0xE97C,
-    0x1116, 0x3F87,
-    0x1118, 0x3F32,
-    0x111A, 0x1947,
-    0x111C, 0x6E53,
-    0x111E, 0x9460,
-    0x1120, 0xD02D,
-    0x1122, 0x47D1,
-    0x1124, 0x7855,
-    0x1126, 0xD96B,
-    0x1128, 0xCC29,
-    0x112A, 0x2118,
-    0x112C, 0x433F,
-    0x112E, 0xBBFD,
-    0x1130, 0xBC6C,
-    0x1132, 0x1C87,
-    0x1134, 0x1DBE,
-    0x1136, 0xE6B0,
-    0x1138, 0x7D65,
-    0x113A, 0xE509,
-    0x113C, 0x9162,
-    0x113E, 0xBC19,
-    0x1140, 0x5B33,
-    0x1142, 0x7C47,
-    0x1144, 0x6CBC,
-    0x1146, 0x4F34,
-    0x1148, 0xDD7C,
-    0x114A, 0x7799,
-    0x114C, 0xB943,
-    0x114E, 0x424A,
-    0x1150, 0xE94B,
-    0x1152, 0xC8E4,
-    0x1154, 0xBE5C,
-    0x1156, 0x54C9,
-    0x1158, 0x43AD,
-    0x115A, 0x602A,
-    0x115C, 0x3CC7,
-    0x115E, 0xFF9B,
-    0x1160, 0x14D2,
-    0x1162, 0x0773,
-    0x1164, 0xD8F9,
-    0x1166, 0xCE7E,
-    0x1168, 0x91B3,
-    0x116A, 0xA609,
-    0x116C, 0x4FF4,
-    0x116E, 0xC155,
-    0x1170, 0x022C,
-    0x1172, 0x4B95,
-    0x1174, 0xB17B,
-    0x1176, 0xBF8D,
-    0x1178, 0x2A3E,
-    0x117A, 0xE7D5,
-    0x117C, 0xEAB8,
-    0x117E, 0xB7A1,
-    0x1180, 0x54CA,
-    0x1182, 0x89F8,
-    0x1184, 0x892A,
-    0x1186, 0xE229,
-    0x1188, 0x0440,
-    0x118A, 0x8568,
-    0x118C, 0x48E6,
-    0x118E, 0x9459,
-    0x1190, 0xBC85,
-    0x1192, 0xC3B5,
-    0x1194, 0xEDFC,
-    0x1196, 0x74E4,
-    0x1198, 0x3501,
-    0x119A, 0xA871,
-    0x119C, 0x2371,
-    0x119E, 0xA419,
-    0x11A0, 0x8A29,
-    0x11A2, 0x34D8,
-    0x11A4, 0x1EE5,
-    0x11A6, 0xC56A,
-    0x11A8, 0xB7BE,
-    0x11AA, 0x1CAE,
-    0x11AC, 0xDBC0,
-    0x11AE, 0x7CB4,
-    0x11B0, 0xDDBD,
-    0x11B2, 0x19C3,
-    0x11B4, 0xA114,
-    0x11B6, 0x43FB,
-    0x11B8, 0x0E23,
-    0x11BA, 0x1395,
-    0x11BC, 0xED60,
-    0x11BE, 0x2C7C,
-    0x11C0, 0xCEC7,
-    0x11C2, 0x21E4,
-    0x11C4, 0xFBFE,
-    0x11C6, 0x3D09,
-    0x11C8, 0x0000,
-    0xFCFC, 0x4000,
-};
-
-static u16 sayramuwide_sensor_init_pre_setting_short[] = {
-    0xFCFC, 0x4000,
-    0x0000, 0x000D,
-    0x0000, 0x38E5,
-    0x6018, 0x0001,
-    0x7002, 0x0408,
-    0x6014, 0x0001,
-    0xFCFC, 0x2002,
-    0x1E92, 0x8000,
-    0x1E84, 0x282B,
-    0x1E86, 0x0320,
-    0xFCFC, 0x4000,
-    0x7002, 0x0008,
-};
-
-static u16 sayramuwide_sensor_init_setting_short[] = {
-    0xFCFC, 0x2000,
-    0xDCF0, 0x0101,
-    0xFCFC, 0x2001,
-    0x3C60, 0x0000,
-    0xFCFC, 0x4000,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2002,
-    0x849C, 0x0100,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0x84A4, 0x0000,
-    0x84A6, 0x0000,
-    0x84A8, 0x0000,
-    0x84AA, 0x0001,
-    0x84AC, 0x01FF,
-    0x84B0, 0x8089,
-    0x84B2, 0x0000,
-    0x84B4, 0x8889,
-    0x84B6, 0x0000,
-    0x84B8, 0xC097,
-    0x84BA, 0x0000,
-    0x84BC, 0xA60E,
-    0x84BE, 0x0000,
-    0x84C0, 0x2206,
-    0x84C2, 0x0000,
-    0x84C4, 0x0010,
-    0x84C8, 0x90C3,
-    0x84CA, 0x0224,
-    0x84CC, 0x44AB,
-    0x84CE, 0x0224,
-    0x84D0, 0x44AB,
-    0x84D2, 0x0224,
-    0x84D4, 0x44AB,
-    0x84D6, 0x0224,
-    0x84D8, 0x44AB,
-    0x84DA, 0x0224,
-    0x84DC, 0x44AB,
-    0x84DE, 0x0224,
-    0xA548, 0x001D,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA558, 0x0000,
-    0xA55A, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xA56C, 0x0000,
-    0xA56E, 0x0000,
-    0xA570, 0x0000,
-    0xA572, 0x0000,
-    0xA574, 0x00D5,
-    0xA576, 0x0000,
-    0xA578, 0x0000,
-    0xA57A, 0x0000,
-    0xA57C, 0x0000,
-    0xA57E, 0x0000,
-    0xA580, 0x0000,
-    0xA582, 0x0000,
-    0xA584, 0x0000,
-    0xA586, 0x0000,
-    0xA588, 0x0000,
-    0xA58A, 0x0000,
-    0xA58C, 0x0000,
-    0xA58E, 0x0000,
-    0xA590, 0x0000,
-    0xA592, 0x0000,
-    0xA594, 0x0000,
-    0xA596, 0x0000,
-    0xA598, 0x0000,
-    0xA59A, 0x0000,
-    0xA59C, 0x0000,
-    0xA59E, 0x0000,
-    0xA5A0, 0x0100,
-    0xA5A2, 0x0036,
-    0xA5A4, 0x0000,
-    0xA5A6, 0x0000,
-    0xA5A8, 0x0000,
-    0xA5AA, 0x0000,
-    0xA5AC, 0x0000,
-    0xA5AE, 0x0000,
-    0xA5B0, 0x0000,
-    0xA5B2, 0x0000,
-    0xA5B4, 0x0000,
-    0xA5B6, 0x0000,
-    0xA5B8, 0x0000,
-    0xA5BA, 0x0000,
-    0xA5BC, 0x0000,
-    0xA5BE, 0x0000,
-    0xA5C0, 0x0000,
-    0xA5C2, 0x0000,
-    0xA5C4, 0x0000,
-    0xA5C6, 0x0000,
-    0xA5C8, 0x0000,
-    0xA5CA, 0x0000,
-    0xA5CC, 0x0000,
-    0xA5CE, 0x0000,
-    0xA5D0, 0x0000,
-    0xA5D2, 0x0000,
-    0xA5D4, 0x0000,
-    0xA5D6, 0x0000,
-    0xA5D8, 0x0000,
-    0xA5DA, 0x0000,
-    0xA5DC, 0x0000,
-    0xA5DE, 0x0000,
-    0xA5E0, 0x0000,
-    0xA5E2, 0x0000,
-    0xA5E4, 0x0000,
-    0xA5E6, 0x0000,
-    0xA5E8, 0x0000,
-    0xA5EA, 0x0000,
-    0xA5EC, 0x000F,
-    0xA5EE, 0x000F,
-    0xA5F0, 0x000F,
-    0xA5F2, 0x000F,
-    0xA5F4, 0x0000,
-    0xA5F6, 0x0000,
-    0xA5F8, 0x0000,
-    0xA5FA, 0x0000,
-    0xA5FC, 0x0000,
-    0xA5FE, 0x0000,
-    0xA600, 0x0000,
-    0xA602, 0x0000,
-    0xA604, 0x0000,
-    0xA606, 0x00C6,
-    0xBB84, 0x0001,
-    0xBB86, 0x0000,
-    0xBB88, 0x0000,
-    0xBB8A, 0x0100,
-    0xBB8C, 0x0800,
-    0xBB8E, 0x1000,
-    0xBB90, 0x2000,
-    0xBB92, 0x9A00,
-    0xBB94, 0x9A00,
-    0xBB96, 0x9A00,
-    0xBB98, 0x9A00,
-    0xBB9A, 0x9600,
-    0xBB9C, 0x9600,
-    0xBB9E, 0x9600,
-    0xBBA0, 0x9600,
-    0xBBA2, 0x9300,
-    0xBBA4, 0x9300,
-    0xBBA6, 0x9300,
-    0xBBA8, 0x9300,
-    0xBBAA, 0x9000,
-    0xBBAC, 0x9000,
-    0xBBAE, 0x9000,
-    0xBBB0, 0x9000,
-    0xBBB2, 0x8D00,
-    0xBBB4, 0x8D00,
-    0xBBB6, 0x8D00,
-    0xBBB8, 0x8D00,
-    0xBBBA, 0x3F00,
-    0xBBBC, 0x3F00,
-    0xBBBE, 0x3F00,
-    0xBBC0, 0x3F00,
-    0xBBC2, 0x1E00,
-    0xBBC4, 0x1E00,
-    0xBBC6, 0x1E00,
-    0xBBC8, 0x1E00,
-    0xBBCA, 0x0000,
-    0xBBCC, 0x0000,
-    0xBBCE, 0x0000,
-    0xBBD0, 0x0000,
-    0xBBD2, 0x0800,
-    0xBBD4, 0x0800,
-    0xBBD6, 0x0800,
-    0xBBD8, 0x0800,
-    0xBBDA, 0x0000,
-    0xBBDC, 0x0000,
-    0xBBDE, 0x0000,
-    0xBBE0, 0x0000,
-    0xBBE2, 0x3F00,
-    0xBBE4, 0x3F00,
-    0xBBE6, 0x3F00,
-    0xBBE8, 0x3F00,
-    0xBBEA, 0x3400,
-    0xBBEC, 0x3400,
-    0xBBEE, 0x3400,
-    0xBBF0, 0x3400,
-    0xBBF2, 0x0A00,
-    0xBBF4, 0x0A00,
-    0xBBF6, 0x0A00,
-    0xBBF8, 0x0A00,
-    0xBBFA, 0x1000,
-    0xBBFC, 0x1000,
-    0xBBFE, 0x1000,
-    0xBC00, 0x1000,
-    0xBC02, 0x0600,
-    0xBC04, 0x0600,
-    0xBC06, 0x0600,
-    0xBC08, 0x0600,
-    0xBC0A, 0x0C00,
-    0xBC0C, 0x0C00,
-    0xBC0E, 0x0C00,
-    0xBC10, 0x0C00,
-    0xBC12, 0x0000,
-    0xBC14, 0x0000,
-    0xBC16, 0x0000,
-    0xBC18, 0x0000,
-    0xBC1A, 0x1000,
-    0xBC1C, 0x1000,
-    0xBC1E, 0x1000,
-    0xBC20, 0x1000,
-    0xBC22, 0x1000,
-    0xBC24, 0x1000,
-    0xBC26, 0x1000,
-    0xBC28, 0x1000,
-    0xBC2A, 0x2000,
-    0xBC2C, 0x1000,
-    0xBC2E, 0x1000,
-    0xBC30, 0x1000,
-    0xBC32, 0x0600,
-    0xBC34, 0x0600,
-    0xBC36, 0x0600,
-    0xBC38, 0x0600,
-    0xBC3A, 0x1C00,
-    0xBC3C, 0x1C00,
-    0xBC3E, 0x1C00,
-    0xBC40, 0x1C00,
-    0xBC42, 0x0600,
-    0xBC44, 0x0600,
-    0xBC46, 0x0600,
-    0xBC48, 0x0600,
-    0xBC4A, 0x2A00,
-    0xBC4C, 0x2A00,
-    0xBC4E, 0x2A00,
-    0xBC50, 0x2A00,
-    0xBC52, 0x0200,
-    0xBC54, 0x0200,
-    0xBC56, 0x0200,
-    0xBC58, 0x0200,
-    0xBC5A, 0x1000,
-    0xBC5C, 0x1000,
-    0xBC5E, 0x1000,
-    0xBC60, 0x1000,
-    0xBC62, 0x0E00,
-    0xBC64, 0x0E00,
-    0xBC66, 0x0E00,
-    0xBC68, 0x0E00,
-    0xBC6A, 0x2800,
-    0xBC6C, 0x2800,
-    0xBC6E, 0x2800,
-    0xBC70, 0x2800,
-    0xBC72, 0x1800,
-    0xBC74, 0x1800,
-    0xBC76, 0x1800,
-    0xBC78, 0x1800,
-    0xBC7A, 0x0800,
-    0xBC7C, 0x0800,
-    0xBC7E, 0x0800,
-    0xBC80, 0x0800,
-    0xBC82, 0x0000,
-    0xBC84, 0x0000,
-    0xBC86, 0x0000,
-    0xBC88, 0x0000,
-    0xBC8A, 0x2400,
-    0xBC8C, 0x2400,
-    0xBC8E, 0x2400,
-    0xBC90, 0x2400,
-    0xBC92, 0x0088,
-    0xFCFC, 0x2000,
-    0x68D8, 0x0100,
-    0xFCFC, 0x2002,
-    0xBC92, 0x0100,
-    0xFCFC, 0x4000,
-    0x0E04, 0x1C03,
-    0x0E10, 0x0100,
-    0x0E12, 0x00A0,
-    0x0E14, 0x0C84,
-    0x0E16, 0x002B,
-    0x0E18, 0x0300,
-    0x0E1A, 0x3000,
-    0x0E1C, 0x0100,
-    0x0E1E, 0x00A0,
-    0x0E20, 0x0C84,
-    0x0E22, 0x012B,
-    0x0E24, 0x0400,
-    0x0E26, 0x3000,
-    0xFCFC, 0x2000,
-    0x22E4, 0x0300,
-    0x2338, 0x0101,
-    0xFCFC, 0x2000,
-    0xDD6C, 0xB47E,
-    0xDD6E, 0xB67E,
-    0xDE34, 0x0000,
-    0xDE36, 0x9231,
-    0xFCFC, 0x2006,
-    0x0000, 0x535A,
-    0x0002, 0x0100,
-    0x0004, 0x11C3,
-    0x0006, 0x5A00,
-    0x0008, 0x0001,
-    0x000A, 0x0064,
-    0x000C, 0x2400,
-    0x000E, 0x0000,
-    0x0010, 0x0000,
-    0x0012, 0x0000,
-    0x0014, 0x7FBF,
-    0x0016, 0x624E,
-    0x0018, 0x20FF,
-    0x001A, 0x1F7C,
-    0x001C, 0x2C23,
-    0x001E, 0x23E8,
-    0x0020, 0xE28B,
-    0x0022, 0x1547,
-    0x0024, 0x9DF4,
-    0x0026, 0xE7D7,
-    0x0028, 0xAFCB,
-    0x002A, 0xE85F,
-    0x002C, 0x4B74,
-    0x002E, 0xA863,
-    0x0030, 0xC002,
-    0x0032, 0xB199,
-    0x0034, 0x6AB9,
-    0x0036, 0xFC3D,
-    0x0038, 0x8930,
-    0x003A, 0xA51A,
-    0x003C, 0xECF6,
-    0x003E, 0x90E5,
-    0x0040, 0x706E,
-    0x0042, 0x4787,
-    0x0044, 0xF3B3,
-    0x0046, 0x3541,
-    0x0048, 0x2641,
-    0x004A, 0x4671,
-    0x004C, 0x52C7,
-    0x004E, 0xF3DE,
-    0x0050, 0x17ED,
-    0x0052, 0x5F95,
-    0x0054, 0x2A7C,
-    0x0056, 0x1E02,
-    0x0058, 0x6C56,
-    0x005A, 0x0FC4,
-    0x005C, 0x0101,
-    0x005E, 0x7D9A,
-    0x0060, 0xE5A4,
-    0x0062, 0x4D4B,
-    0x0064, 0x1C93,
-    0x0066, 0x3300,
-    0x0068, 0x7B68,
-    0x006A, 0xA445,
-    0x006C, 0x6F14,
-    0x006E, 0x59E1,
-    0x0070, 0xEC78,
-    0x0072, 0xCCFF,
-    0x0074, 0x4DE7,
-    0x0076, 0x1555,
-    0x0078, 0x4D81,
-    0x007A, 0x5FC2,
-    0x007C, 0xDCF5,
-    0x007E, 0xF141,
-    0x0080, 0x1924,
-    0x0082, 0x3846,
-    0x0084, 0x4608,
-    0x0086, 0x7700,
-    0x0088, 0x1268,
-    0x008A, 0xF048,
-    0x008C, 0x3E6C,
-    0x008E, 0x7AE4,
-    0x0090, 0x369B,
-    0x0092, 0x2C80,
-    0x0094, 0x0D92,
-    0x0096, 0x7048,
-    0x0098, 0x97DE,
-    0x009A, 0x2493,
-    0x009C, 0x02D1,
-    0x009E, 0x9C2E,
-    0x00A0, 0xD51B,
-    0x00A2, 0xCC3A,
-    0x00A4, 0x5508,
-    0x00A6, 0x73D5,
-    0x00A8, 0x0DC3,
-    0x00AA, 0xD2AC,
-    0x00AC, 0x8FE6,
-    0x00AE, 0xA96A,
-    0x00B0, 0x07D5,
-    0x00B2, 0xD4A4,
-    0x00B4, 0x04AD,
-    0x00B6, 0xD5AE,
-    0x00B8, 0x893F,
-    0x00BA, 0x2218,
-    0x00BC, 0xA2EB,
-    0x00BE, 0x0AF5,
-    0x00C0, 0x1957,
-    0x00C2, 0xA8C2,
-    0x00C4, 0x926B,
-    0x00C6, 0x28E3,
-    0x00C8, 0x2B23,
-    0x00CA, 0x7ECB,
-    0x00CC, 0x13B7,
-    0x00CE, 0x5D45,
-    0x00D0, 0x3B29,
-    0x00D2, 0xA785,
-    0x00D4, 0xFEB1,
-    0x00D6, 0x9EE3,
-    0x00D8, 0x557A,
-    0x00DA, 0x77AF,
-    0x00DC, 0x2B1A,
-    0x00DE, 0x01E0,
-    0x00E0, 0x58C0,
-    0x00E2, 0xC43C,
-    0x00E4, 0xDFC3,
-    0x00E6, 0xF236,
-    0x00E8, 0x00D4,
-    0x00EA, 0x3CCA,
-    0x00EC, 0x1FF0,
-    0x00EE, 0x88BC,
-    0x00F0, 0x91B3,
-    0x00F2, 0x725E,
-    0x00F4, 0x6D46,
-    0x00F6, 0x3345,
-    0x00F8, 0x83AD,
-    0x00FA, 0x3812,
-    0x00FC, 0xA11C,
-    0x00FE, 0x0179,
-    0x0100, 0x999B,
-    0x0102, 0x0026,
-    0x0104, 0x0255,
-    0x0106, 0xA060,
-    0x0108, 0x72F1,
-    0x010A, 0xB03D,
-    0x010C, 0x25B6,
-    0x010E, 0x1CBC,
-    0x0110, 0x7EDC,
-    0x0112, 0x6286,
-    0x0114, 0x3CEB,
-    0x0116, 0xF0EA,
-    0x0118, 0xD157,
-    0x011A, 0x3A4B,
-    0x011C, 0x7820,
-    0x011E, 0x69FF,
-    0x0120, 0x1657,
-    0x0122, 0x0CEB,
-    0x0124, 0xDFFF,
-    0x0126, 0xFCD7,
-    0x0128, 0x5875,
-    0x012A, 0xE105,
-    0x012C, 0x5218,
-    0x012E, 0xFDE1,
-    0x0130, 0x6952,
-    0x0132, 0x9EB5,
-    0x0134, 0x6AB2,
-    0x0136, 0x7EBB,
-    0x0138, 0x7397,
-    0x013A, 0x994E,
-    0x013C, 0x3998,
-    0x013E, 0xD789,
-    0x0140, 0xE6C8,
-    0x0142, 0xCC63,
-    0x0144, 0xA29E,
-    0x0146, 0xB35D,
-    0x0148, 0xF93C,
-    0x014A, 0x47CA,
-    0x014C, 0x124F,
-    0x014E, 0x8CA5,
-    0x0150, 0xB90A,
-    0x0152, 0x9928,
-    0x0154, 0x02E8,
-    0x0156, 0x9F83,
-    0x0158, 0xCEDC,
-    0x015A, 0x3E54,
-    0x015C, 0xCDC6,
-    0x015E, 0x53A8,
-    0x0160, 0x4271,
-    0x0162, 0x1246,
-    0x0164, 0x549F,
-    0x0166, 0xE2AB,
-    0x0168, 0xB271,
-    0x016A, 0xD099,
-    0x016C, 0xEC28,
-    0x016E, 0x535C,
-    0x0170, 0xEDC5,
-    0x0172, 0x497A,
-    0x0174, 0xDB7C,
-    0x0176, 0xE3F0,
-    0x0178, 0xD72E,
-    0x017A, 0xA1CA,
-    0x017C, 0xC481,
-    0x017E, 0x28BE,
-    0x0180, 0xA228,
-    0x0182, 0x3A4D,
-    0x0184, 0xBAA0,
-    0x0186, 0xD8A3,
-    0x0188, 0x7C88,
-    0x018A, 0xEE98,
-    0x018C, 0x9851,
-    0x018E, 0x1DC8,
-    0x0190, 0x2E07,
-    0x0192, 0x540A,
-    0x0194, 0x35F4,
-    0x0196, 0xEC0F,
-    0x0198, 0x9113,
-    0x019A, 0xEDDE,
-    0x019C, 0xEAF7,
-    0x019E, 0x0900,
-    0x01A0, 0x09F3,
-    0x01A2, 0x0573,
-    0x01A4, 0xFA81,
-    0x01A6, 0x2104,
-    0x01A8, 0x2590,
-    0x01AA, 0xCC5F,
-    0x01AC, 0x6B0B,
-    0x01AE, 0x3EB7,
-    0x01B0, 0x3389,
-    0x01B2, 0x2D3C,
-    0x01B4, 0x0E0B,
-    0x01B6, 0xD103,
-    0x01B8, 0xB92F,
-    0x01BA, 0x0064,
-    0x01BC, 0x7BB7,
-    0x01BE, 0x3D07,
-    0x01C0, 0xF56E,
-    0x01C2, 0xB180,
-    0x01C4, 0xF8F2,
-    0x01C6, 0x5CCC,
-    0x01C8, 0xD8B4,
-    0x01CA, 0x7706,
-    0x01CC, 0xD573,
-    0x01CE, 0x4A32,
-    0x01D0, 0x659D,
-    0x01D2, 0x2538,
-    0x01D4, 0x1BE3,
-    0x01D6, 0xCD15,
-    0x01D8, 0x50C9,
-    0x01DA, 0x6AE2,
-    0x01DC, 0xA842,
-    0x01DE, 0x05A4,
-    0x01E0, 0x919B,
-    0x01E2, 0xDBEE,
-    0x01E4, 0xB1B8,
-    0x01E6, 0x1072,
-    0x01E8, 0x6516,
-    0x01EA, 0x0124,
-    0x01EC, 0x0E18,
-    0x01EE, 0xF58E,
-    0x01F0, 0x9C7A,
-    0x01F2, 0x3CF0,
-    0x01F4, 0xE339,
-    0x01F6, 0xF030,
-    0x01F8, 0xA3B2,
-    0x01FA, 0xC513,
-    0x01FC, 0x46A5,
-    0x01FE, 0x33FC,
-    0x0200, 0x42B0,
-    0x0202, 0xD05F,
-    0x0204, 0x8050,
-    0x0206, 0x4CEC,
-    0x0208, 0x2F40,
-    0x020A, 0x3833,
-    0x020C, 0x6A1B,
-    0x020E, 0xEFC5,
-    0x0210, 0xDB88,
-    0x0212, 0xD33F,
-    0x0214, 0x83B8,
-    0x0216, 0x65D1,
-    0x0218, 0xED9D,
-    0x021A, 0x442B,
-    0x021C, 0x23FA,
-    0x021E, 0x8B25,
-    0x0220, 0x8759,
-    0x0222, 0x8009,
-    0x0224, 0x8838,
-    0x0226, 0xEC29,
-    0x0228, 0xC4ED,
-    0x022A, 0xF174,
-    0x022C, 0xC483,
-    0x022E, 0x0160,
-    0x0230, 0x33EB,
-    0x0232, 0x7518,
-    0x0234, 0xBD81,
-    0x0236, 0x96F7,
-    0x0238, 0x1CCC,
-    0x023A, 0x41B0,
-    0x023C, 0x96C2,
-    0x023E, 0x6557,
-    0x0240, 0x3398,
-    0x0242, 0xB585,
-    0x0244, 0xA7B6,
-    0x0246, 0xDDF7,
-    0x0248, 0x6305,
-    0x024A, 0x118C,
-    0x024C, 0xC08D,
-    0x024E, 0x97A8,
-    0x0250, 0x09E5,
-    0x0252, 0xA23B,
-    0x0254, 0xFAE7,
-    0x0256, 0xF7AE,
-    0x0258, 0xFA3F,
-    0x025A, 0x8FDC,
-    0x025C, 0x1CB8,
-    0x025E, 0xF80C,
-    0x0260, 0x5240,
-    0x0262, 0x0BB2,
-    0x0264, 0x865B,
-    0x0266, 0xF59D,
-    0x0268, 0x7A2E,
-    0x026A, 0xE946,
-    0x026C, 0xEE5E,
-    0x026E, 0xDAED,
-    0x0270, 0xE083,
-    0x0272, 0x0369,
-    0x0274, 0x5C86,
-    0x0276, 0x052B,
-    0x0278, 0xAC3A,
-    0x027A, 0xE121,
-    0x027C, 0x0B2C,
-    0x027E, 0xD5F9,
-    0x0280, 0x8055,
-    0x0282, 0x2B71,
-    0x0284, 0xCA9B,
-    0x0286, 0x3C38,
-    0x0288, 0xD51D,
-    0x028A, 0xAA2C,
-    0x028C, 0x6638,
-    0x028E, 0xD97B,
-    0x0290, 0xD81E,
-    0x0292, 0x64C6,
-    0x0294, 0x23E5,
-    0x0296, 0xC55A,
-    0x0298, 0x519A,
-    0x029A, 0xB1A7,
-    0x029C, 0x8769,
-    0x029E, 0xF87A,
-    0x02A0, 0x772A,
-    0x02A2, 0x4996,
-    0x02A4, 0x1427,
-    0x02A6, 0xB0B3,
-    0x02A8, 0x5396,
-    0x02AA, 0x6710,
-    0x02AC, 0x154F,
-    0x02AE, 0xC084,
-    0x02B0, 0x0671,
-    0x02B2, 0x6218,
-    0x02B4, 0xFA55,
-    0x02B6, 0x737B,
-    0x02B8, 0x1B09,
-    0x02BA, 0x6DFE,
-    0x02BC, 0x5C31,
-    0x02BE, 0xAD90,
-    0x02C0, 0xD027,
-    0x02C2, 0x4F88,
-    0x02C4, 0xF8D4,
-    0x02C6, 0x3984,
-    0x02C8, 0x6E39,
-    0x02CA, 0x8A3B,
-    0x02CC, 0x1008,
-    0x02CE, 0xB808,
-    0x02D0, 0x7E69,
-    0x02D2, 0x0428,
-    0x02D4, 0x6E99,
-    0x02D6, 0x7F9C,
-    0x02D8, 0x6AD6,
-    0x02DA, 0x42C7,
-    0x02DC, 0x12D0,
-    0x02DE, 0x9785,
-    0x02E0, 0x2300,
-    0x02E2, 0x5FEE,
-    0x02E4, 0x6A49,
-    0x02E6, 0x3EBB,
-    0x02E8, 0x1C38,
-    0x02EA, 0x231D,
-    0x02EC, 0x53C3,
-    0x02EE, 0x4FE7,
-    0x02F0, 0x274C,
-    0x02F2, 0xA33A,
-    0x02F4, 0x939E,
-    0x02F6, 0x4BDF,
-    0x02F8, 0xD243,
-    0x02FA, 0x2AA1,
-    0x02FC, 0x4490,
-    0x02FE, 0x4EAB,
-    0x0300, 0xE2DA,
-    0x0302, 0xF516,
-    0x0304, 0xFC24,
-    0x0306, 0x876C,
-    0x0308, 0x7395,
-    0x030A, 0x1CDB,
-    0x030C, 0x9887,
-    0x030E, 0x5DD4,
-    0x0310, 0x5408,
-    0x0312, 0x87AD,
-    0x0314, 0xFA9A,
-    0x0316, 0xCF5A,
-    0x0318, 0x9045,
-    0x031A, 0x3AF0,
-    0x031C, 0x4FC4,
-    0x031E, 0xD580,
-    0x0320, 0x804D,
-    0x0322, 0x780B,
-    0x0324, 0x4E21,
-    0x0326, 0x7B1A,
-    0x0328, 0x00A9,
-    0x032A, 0x5C1E,
-    0x032C, 0x7ECC,
-    0x032E, 0x4378,
-    0x0330, 0x50FF,
-    0x0332, 0x6CC6,
-    0x0334, 0x1CE9,
-    0x0336, 0xEBD6,
-    0x0338, 0xED90,
-    0x033A, 0xE0CC,
-    0x033C, 0xC568,
-    0x033E, 0x6E51,
-    0x0340, 0x67F4,
-    0x0342, 0x3FC2,
-    0x0344, 0x18AC,
-    0x0346, 0x803D,
-    0x0348, 0xFFEA,
-    0x034A, 0x5AED,
-    0x034C, 0x0ED2,
-    0x034E, 0x01C7,
-    0x0350, 0x1D85,
-    0x0352, 0xF24D,
-    0x0354, 0x64CF,
-    0x0356, 0x401D,
-    0x0358, 0xC221,
-    0x035A, 0x7F36,
-    0x035C, 0x6C78,
-    0x035E, 0xCFBB,
-    0x0360, 0x59BB,
-    0x0362, 0xA749,
-    0x0364, 0x73BD,
-    0x0366, 0x5F16,
-    0x0368, 0xA8FF,
-    0x036A, 0x400D,
-    0x036C, 0x1D09,
-    0x036E, 0xA032,
-    0x0370, 0x149C,
-    0x0372, 0x5E78,
-    0x0374, 0xB484,
-    0x0376, 0x1296,
-    0x0378, 0xEA61,
-    0x037A, 0xF1C8,
-    0x037C, 0xC708,
-    0x037E, 0x591F,
-    0x0380, 0x03AA,
-    0x0382, 0xA2EA,
-    0x0384, 0x5361,
-    0x0386, 0xA649,
-    0x0388, 0xFA7C,
-    0x038A, 0x4032,
-    0x038C, 0x6538,
-    0x038E, 0xA99D,
-    0x0390, 0x4D75,
-    0x0392, 0x68F0,
-    0x0394, 0x783C,
-    0x0396, 0xC6BB,
-    0x0398, 0x56AD,
-    0x039A, 0x58A2,
-    0x039C, 0x6821,
-    0x039E, 0xF155,
-    0x03A0, 0x96A7,
-    0x03A2, 0x906D,
-    0x03A4, 0x4A4D,
-    0x03A6, 0x8394,
-    0x03A8, 0x5D89,
-    0x03AA, 0xC4DE,
-    0x03AC, 0x1224,
-    0x03AE, 0x2EBC,
-    0x03B0, 0xC2C5,
-    0x03B2, 0x1E85,
-    0x03B4, 0xCB26,
-    0x03B6, 0xC969,
-    0x03B8, 0x6897,
-    0x03BA, 0x699A,
-    0x03BC, 0xC337,
-    0x03BE, 0xA20D,
-    0x03C0, 0x0688,
-    0x03C2, 0x93AF,
-    0x03C4, 0xB5EE,
-    0x03C6, 0xB64B,
-    0x03C8, 0x07D1,
-    0x03CA, 0x7B43,
-    0x03CC, 0x1ECD,
-    0x03CE, 0x03F4,
-    0x03D0, 0x5A81,
-    0x03D2, 0x076A,
-    0x03D4, 0x7A52,
-    0x03D6, 0x6779,
-    0x03D8, 0x4688,
-    0x03DA, 0x7EA9,
-    0x03DC, 0x13E5,
-    0x03DE, 0x1F4F,
-    0x03E0, 0x9630,
-    0x03E2, 0x87CA,
-    0x03E4, 0xFE1D,
-    0x03E6, 0x256F,
-    0x03E8, 0xE66D,
-    0x03EA, 0x7FAD,
-    0x03EC, 0xFCFF,
-    0x03EE, 0x468D,
-    0x03F0, 0x722B,
-    0x03F2, 0xEEF7,
-    0x03F4, 0x9C48,
-    0x03F6, 0xC2B0,
-    0x03F8, 0x9A27,
-    0x03FA, 0x18D6,
-    0x03FC, 0x39B9,
-    0x03FE, 0xC176,
-    0x0400, 0x3AE4,
-    0x0402, 0x61D9,
-    0x0404, 0x0988,
-    0x0406, 0xEC5A,
-    0x0408, 0xBA4C,
-    0x040A, 0xD689,
-    0x040C, 0x421B,
-    0x040E, 0xAADD,
-    0x0410, 0x5882,
-    0x0412, 0x15CC,
-    0x0414, 0xC02A,
-    0x0416, 0x91B0,
-    0x0418, 0xB779,
-    0x041A, 0x203D,
-    0x041C, 0x2570,
-    0x041E, 0x5145,
-    0x0420, 0xBE00,
-    0x0422, 0x9396,
-    0x0424, 0x2E02,
-    0x0426, 0x2809,
-    0x0428, 0xC521,
-    0x042A, 0x615A,
-    0x042C, 0xA0CF,
-    0x042E, 0xE28E,
-    0x0430, 0x5258,
-    0x0432, 0xC6A6,
-    0x0434, 0x044E,
-    0x0436, 0x1B2B,
-    0x0438, 0x0F2B,
-    0x043A, 0x3542,
-    0x043C, 0x95DE,
-    0x043E, 0x9A99,
-    0x0440, 0x4774,
-    0x0442, 0xBE43,
-    0x0444, 0x9A35,
-    0x0446, 0x68EA,
-    0x0448, 0xE89A,
-    0x044A, 0xC206,
-    0x044C, 0x6C87,
-    0x044E, 0xCE50,
-    0x0450, 0x9F8B,
-    0x0452, 0x5526,
-    0x0454, 0x3F76,
-    0x0456, 0x2539,
-    0x0458, 0x8D33,
-    0x045A, 0x1DD3,
-    0x045C, 0x6260,
-    0x045E, 0x2E4D,
-    0x0460, 0x8019,
-    0x0462, 0x7EA0,
-    0x0464, 0x494A,
-    0x0466, 0x3C0E,
-    0x0468, 0x0259,
-    0x046A, 0x9811,
-    0x046C, 0x9459,
-    0x046E, 0x304E,
-    0x0470, 0x0922,
-    0x0472, 0x802D,
-    0x0474, 0xDC20,
-    0x0476, 0x6A9D,
-    0x0478, 0x7176,
-    0x047A, 0xA96B,
-    0x047C, 0x5814,
-    0x047E, 0x78F0,
-    0x0480, 0x74F9,
-    0x0482, 0x26CD,
-    0x0484, 0x3325,
-    0x0486, 0x6DF0,
-    0x0488, 0x1CA0,
-    0x048A, 0x8669,
-    0x048C, 0x9C58,
-    0x048E, 0xD04F,
-    0x0490, 0xB481,
-    0x0492, 0x7DA8,
-    0x0494, 0x1665,
-    0x0496, 0xEA44,
-    0x0498, 0x641F,
-    0x049A, 0x552B,
-    0x049C, 0xBC6D,
-    0x049E, 0xD290,
-    0x04A0, 0x0FFD,
-    0x04A2, 0x3C1A,
-    0x04A4, 0x7F34,
-    0x04A6, 0xBFB6,
-    0x04A8, 0xF538,
-    0x04AA, 0x10E9,
-    0x04AC, 0x3A6C,
-    0x04AE, 0x0FDA,
-    0x04B0, 0x16EA,
-    0x04B2, 0xD25E,
-    0x04B4, 0x0239,
-    0x04B6, 0xFD5E,
-    0x04B8, 0xDB1B,
-    0x04BA, 0xF0CC,
-    0x04BC, 0x99F5,
-    0x04BE, 0xCBEC,
-    0x04C0, 0x9997,
-    0x04C2, 0x483C,
-    0x04C4, 0x20B5,
-    0x04C6, 0xB406,
-    0x04C8, 0x5F41,
-    0x04CA, 0x8ACB,
-    0x04CC, 0x55F7,
-    0x04CE, 0x2D67,
-    0x04D0, 0x0C1A,
-    0x04D2, 0x37D3,
-    0x04D4, 0x8ED8,
-    0x04D6, 0x2DAF,
-    0x04D8, 0x26E6,
-    0x04DA, 0x2EDB,
-    0x04DC, 0xB8D6,
-    0x04DE, 0x891E,
-    0x04E0, 0xBAD1,
-    0x04E2, 0xE130,
-    0x04E4, 0x64C5,
-    0x04E6, 0xBC5E,
-    0x04E8, 0x5BA4,
-    0x04EA, 0xB879,
-    0x04EC, 0x31F8,
-    0x04EE, 0xA441,
-    0x04F0, 0x974D,
-    0x04F2, 0xD714,
-    0x04F4, 0xC091,
-    0x04F6, 0xD3EA,
-    0x04F8, 0x640E,
-    0x04FA, 0xEB2D,
-    0x04FC, 0xC4AA,
-    0x04FE, 0x6B5C,
-    0x0500, 0xE026,
-    0x0502, 0x8C8D,
-    0x0504, 0x1B9D,
-    0x0506, 0x75C0,
-    0x0508, 0x934C,
-    0x050A, 0x541A,
-    0x050C, 0x7935,
-    0x050E, 0x93CA,
-    0x0510, 0x8C29,
-    0x0512, 0x3974,
-    0x0514, 0x1C57,
-    0x0516, 0x4438,
-    0x0518, 0xD9E1,
-    0x051A, 0xC0E8,
-    0x051C, 0x8C85,
-    0x051E, 0x62B6,
-    0x0520, 0xD016,
-    0x0522, 0x0C61,
-    0x0524, 0x69F9,
-    0x0526, 0x087F,
-    0x0528, 0xC10A,
-    0x052A, 0xE420,
-    0x052C, 0x28DF,
-    0x052E, 0xF336,
-    0x0530, 0xC6E0,
-    0x0532, 0x0C30,
-    0x0534, 0xA8C6,
-    0x0536, 0x80C9,
-    0x0538, 0x9DAC,
-    0x053A, 0xBF25,
-    0x053C, 0xE036,
-    0x053E, 0x01ED,
-    0x0540, 0x8130,
-    0x0542, 0x7150,
-    0x0544, 0xC212,
-    0x0546, 0xC122,
-    0x0548, 0x11C5,
-    0x054A, 0x0AEB,
-    0x054C, 0xF495,
-    0x054E, 0x2514,
-    0x0550, 0xC95C,
-    0x0552, 0x56CB,
-    0x0554, 0xEE5E,
-    0x0556, 0xC09B,
-    0x0558, 0xD133,
-    0x055A, 0x12C9,
-    0x055C, 0x3096,
-    0x055E, 0xA20D,
-    0x0560, 0x0292,
-    0x0562, 0xC8DE,
-    0x0564, 0x9227,
-    0x0566, 0xBDF8,
-    0x0568, 0xDCFD,
-    0x056A, 0x3DB7,
-    0x056C, 0xF0A1,
-    0x056E, 0xF85E,
-    0x0570, 0x2FAC,
-    0x0572, 0x9DE7,
-    0x0574, 0xC134,
-    0x0576, 0xB205,
-    0x0578, 0xDDF8,
-    0x057A, 0x6D17,
-    0x057C, 0x3BED,
-    0x057E, 0x8DD8,
-    0x0580, 0xB263,
-    0x0582, 0x5A9E,
-    0x0584, 0x67EE,
-    0x0586, 0x7770,
-    0x0588, 0x58FE,
-    0x058A, 0x8810,
-    0x058C, 0xFBBB,
-    0x058E, 0xEFE3,
-    0x0590, 0x2BFF,
-    0x0592, 0x9A56,
-    0x0594, 0x9886,
-    0x0596, 0xCA7A,
-    0x0598, 0xA206,
-    0x059A, 0xE1E9,
-    0x059C, 0x766A,
-    0x059E, 0x28DA,
-    0x05A0, 0x4898,
-    0x05A2, 0x3AB9,
-    0x05A4, 0xD0EE,
-    0x05A6, 0x7E5C,
-    0x05A8, 0x9BA7,
-    0x05AA, 0x9A33,
-    0x05AC, 0x1670,
-    0x05AE, 0xF092,
-    0x05B0, 0xA74A,
-    0x05B2, 0x275A,
-    0x05B4, 0x232A,
-    0x05B6, 0x1249,
-    0x05B8, 0xC350,
-    0x05BA, 0x1145,
-    0x05BC, 0xED0F,
-    0x05BE, 0x19B6,
-    0x05C0, 0x0D35,
-    0x05C2, 0xCC8B,
-    0x05C4, 0x78A5,
-    0x05C6, 0xCA4B,
-    0x05C8, 0x933E,
-    0x05CA, 0x6E54,
-    0x05CC, 0x1BF7,
-    0x05CE, 0x6BB9,
-    0x05D0, 0x058C,
-    0x05D2, 0xBAD2,
-    0x05D4, 0x28D4,
-    0x05D6, 0x79E0,
-    0x05D8, 0xBCA0,
-    0x05DA, 0x02D3,
-    0x05DC, 0xC4C4,
-    0x05DE, 0xCAC7,
-    0x05E0, 0x01E2,
-    0x05E2, 0x1305,
-    0x05E4, 0x39FC,
-    0x05E6, 0x5AC3,
-    0x05E8, 0x6176,
-    0x05EA, 0xDC30,
-    0x05EC, 0xF24C,
-    0x05EE, 0xB4C0,
-    0x05F0, 0x1CEB,
-    0x05F2, 0x49B1,
-    0x05F4, 0x9CFA,
-    0x05F6, 0x6B04,
-    0x05F8, 0xF51C,
-    0x05FA, 0xAC09,
-    0x05FC, 0xD193,
-    0x05FE, 0x4BC4,
-    0x0600, 0x2AEF,
-    0x0602, 0xFC02,
-    0x0604, 0x8E9F,
-    0x0606, 0x6DE5,
-    0x0608, 0xFAF0,
-    0x060A, 0xD3D4,
-    0x060C, 0x8A2E,
-    0x060E, 0xB0B7,
-    0x0610, 0x3574,
-    0x0612, 0x0B14,
-    0x0614, 0xD1A2,
-    0x0616, 0xB6E5,
-    0x0618, 0xB90A,
-    0x061A, 0xCD8D,
-    0x061C, 0x4CB1,
-    0x061E, 0xC6ED,
-    0x0620, 0x994E,
-    0x0622, 0xCA09,
-    0x0624, 0xAA89,
-    0x0626, 0xE1E2,
-    0x0628, 0xE019,
-    0x062A, 0x1B4C,
-    0x062C, 0xDD5F,
-    0x062E, 0x33F5,
-    0x0630, 0xC409,
-    0x0632, 0xC994,
-    0x0634, 0xD231,
-    0x0636, 0x9F08,
-    0x0638, 0xECAD,
-    0x063A, 0xD54E,
-    0x063C, 0x6D45,
-    0x063E, 0x2B30,
-    0x0640, 0xECC0,
-    0x0642, 0xD5ED,
-    0x0644, 0xA0D1,
-    0x0646, 0x4B6F,
-    0x0648, 0x2042,
-    0x064A, 0xF720,
-    0x064C, 0x8202,
-    0x064E, 0x15F6,
-    0x0650, 0x8F0C,
-    0x0652, 0x48E7,
-    0x0654, 0xF956,
-    0x0656, 0x4683,
-    0x0658, 0xC789,
-    0x065A, 0xACBD,
-    0x065C, 0x2DB1,
-    0x065E, 0xCF0B,
-    0x0660, 0xC74B,
-    0x0662, 0x2BA9,
-    0x0664, 0x61A2,
-    0x0666, 0xD057,
-    0x0668, 0xA27B,
-    0x066A, 0x8C3A,
-    0x066C, 0x264A,
-    0x066E, 0x035B,
-    0x0670, 0x8039,
-    0x0672, 0x8D29,
-    0x0674, 0xB89B,
-    0x0676, 0x22D9,
-    0x0678, 0x26B0,
-    0x067A, 0xC9F6,
-    0x067C, 0xCA5D,
-    0x067E, 0x8F8B,
-    0x0680, 0xDBCE,
-    0x0682, 0xB380,
-    0x0684, 0x2B06,
-    0x0686, 0x4D7F,
-    0x0688, 0x9580,
-    0x068A, 0xE4B6,
-    0x068C, 0x8B9F,
-    0x068E, 0xC198,
-    0x0690, 0x6F72,
-    0x0692, 0x3157,
-    0x0694, 0x5D64,
-    0x0696, 0x07A0,
-    0x0698, 0xE198,
-    0x069A, 0x1B0F,
-    0x069C, 0x6E8F,
-    0x069E, 0xA5EE,
-    0x06A0, 0x6BF1,
-    0x06A2, 0x0386,
-    0x06A4, 0x00B9,
-    0x06A6, 0xE6AA,
-    0x06A8, 0xBE32,
-    0x06AA, 0x7F0C,
-    0x06AC, 0x1F88,
-    0x06AE, 0xAF5A,
-    0x06B0, 0xF38F,
-    0x06B2, 0x23DD,
-    0x06B4, 0x81AE,
-    0x06B6, 0x7F97,
-    0x06B8, 0x3ED6,
-    0x06BA, 0xCA0D,
-    0x06BC, 0xD71A,
-    0x06BE, 0x1355,
-    0x06C0, 0x5DC2,
-    0x06C2, 0x820B,
-    0x06C4, 0xEE33,
-    0x06C6, 0x7911,
-    0x06C8, 0x027A,
-    0x06CA, 0xE598,
-    0x06CC, 0x90CD,
-    0x06CE, 0x31F6,
-    0x06D0, 0x201B,
-    0x06D2, 0x254B,
-    0x06D4, 0x889B,
-    0x06D6, 0x81ED,
-    0x06D8, 0x7EB4,
-    0x06DA, 0x5AC9,
-    0x06DC, 0x7366,
-    0x06DE, 0x99BA,
-    0x06E0, 0x21ED,
-    0x06E2, 0x0155,
-    0x06E4, 0x4B3A,
-    0x06E6, 0xF2AD,
-    0x06E8, 0x4D1D,
-    0x06EA, 0x85E2,
-    0x06EC, 0xFCCD,
-    0x06EE, 0x3AE7,
-    0x06F0, 0x2B8D,
-    0x06F2, 0x2E43,
-    0x06F4, 0x128C,
-    0x06F6, 0x46EE,
-    0x06F8, 0x9732,
-    0x06FA, 0xDDDE,
-    0x06FC, 0x1F7B,
-    0x06FE, 0xC0E6,
-    0x0700, 0x4977,
-    0x0702, 0x6386,
-    0x0704, 0xF483,
-    0x0706, 0xEC05,
-    0x0708, 0x3957,
-    0x070A, 0x5B2E,
-    0x070C, 0x5E48,
-    0x070E, 0x56CE,
-    0x0710, 0x4BF1,
-    0x0712, 0xD19F,
-    0x0714, 0x2657,
-    0x0716, 0x2484,
-    0x0718, 0x3B0A,
-    0x071A, 0x7C70,
-    0x071C, 0xF884,
-    0x071E, 0x184B,
-    0x0720, 0xE7CC,
-    0x0722, 0x135B,
-    0x0724, 0x6571,
-    0x0726, 0x4A10,
-    0x0728, 0x0377,
-    0x072A, 0x0EB4,
-    0x072C, 0x518D,
-    0x072E, 0x9A47,
-    0x0730, 0x0304,
-    0x0732, 0x3BCB,
-    0x0734, 0x8226,
-    0x0736, 0x1931,
-    0x0738, 0xBD07,
-    0x073A, 0x25BE,
-    0x073C, 0x558B,
-    0x073E, 0x30AF,
-    0x0740, 0xF681,
-    0x0742, 0x3EF0,
-    0x0744, 0x0494,
-    0x0746, 0x4311,
-    0x0748, 0x77B5,
-    0x074A, 0x307A,
-    0x074C, 0x90F4,
-    0x074E, 0xEEAD,
-    0x0750, 0xE429,
-    0x0752, 0x5593,
-    0x0754, 0x4974,
-    0x0756, 0x1BAE,
-    0x0758, 0xF955,
-    0x075A, 0x677B,
-    0x075C, 0xB653,
-    0x075E, 0xD3B0,
-    0x0760, 0x7B2E,
-    0x0762, 0x12A1,
-    0x0764, 0xD02E,
-    0x0766, 0x9C5D,
-    0x0768, 0x8F60,
-    0x076A, 0x2F69,
-    0x076C, 0x5076,
-    0x076E, 0xCA89,
-    0x0770, 0x5036,
-    0x0772, 0xBE4C,
-    0x0774, 0x5996,
-    0x0776, 0xCCEA,
-    0x0778, 0x3D2F,
-    0x077A, 0x51C5,
-    0x077C, 0xBC8C,
-    0x077E, 0x5374,
-    0x0780, 0x5B83,
-    0x0782, 0x4006,
-    0x0784, 0x2CBB,
-    0x0786, 0xE4D9,
-    0x0788, 0xA555,
-    0x078A, 0xCD05,
-    0x078C, 0x7BBC,
-    0x078E, 0xF47A,
-    0x0790, 0xACA0,
-    0x0792, 0x9E19,
-    0x0794, 0xBA1F,
-    0x0796, 0x6CC0,
-    0x0798, 0x4115,
-    0x079A, 0x8EDF,
-    0x079C, 0x4BAA,
-    0x079E, 0x75B1,
-    0x07A0, 0x8576,
-    0x07A2, 0x3798,
-    0x07A4, 0x0041,
-    0x07A6, 0x357E,
-    0x07A8, 0x1759,
-    0x07AA, 0xC6B4,
-    0x07AC, 0x28D5,
-    0x07AE, 0x8D4B,
-    0x07B0, 0xE8B8,
-    0x07B2, 0x1DDA,
-    0x07B4, 0x3AD5,
-    0x07B6, 0x5356,
-    0x07B8, 0xA937,
-    0x07BA, 0xF1BE,
-    0x07BC, 0xB42C,
-    0x07BE, 0x51C8,
-    0x07C0, 0x9BFA,
-    0x07C2, 0xC1D5,
-    0x07C4, 0xC769,
-    0x07C6, 0xAD84,
-    0x07C8, 0x9143,
-    0x07CA, 0x619C,
-    0x07CC, 0x99BD,
-    0x07CE, 0x850A,
-    0x07D0, 0xA58F,
-    0x07D2, 0x1EF5,
-    0x07D4, 0x045C,
-    0x07D6, 0xBB50,
-    0x07D8, 0x4DCF,
-    0x07DA, 0x995C,
-    0x07DC, 0x1508,
-    0x07DE, 0x040A,
-    0x07E0, 0x8C3E,
-    0x07E2, 0x5DB2,
-    0x07E4, 0x8770,
-    0x07E6, 0x9226,
-    0x07E8, 0x82D0,
-    0x07EA, 0x48D2,
-    0x07EC, 0x9BB1,
-    0x07EE, 0x3A74,
-    0x07F0, 0xB306,
-    0x07F2, 0xAE52,
-    0x07F4, 0x094C,
-    0x07F6, 0xFB47,
-    0x07F8, 0xCEE9,
-    0x07FA, 0xEC43,
-    0x07FC, 0x9693,
-    0x07FE, 0x7471,
-    0x0800, 0xEAFE,
-    0x0802, 0x8B1D,
-    0x0804, 0x3919,
-    0x0806, 0x62E3,
-    0x0808, 0x76E0,
-    0x080A, 0x1BEE,
-    0x080C, 0x014D,
-    0x080E, 0xBF76,
-    0x0810, 0x18CB,
-    0x0812, 0x0024,
-    0x0814, 0x37EE,
-    0x0816, 0xE64F,
-    0x0818, 0x9AAF,
-    0x081A, 0xDBD9,
-    0x081C, 0xA12D,
-    0x081E, 0x428A,
-    0x0820, 0xCD29,
-    0x0822, 0x6F55,
-    0x0824, 0x25B2,
-    0x0826, 0x599D,
-    0x0828, 0x9200,
-    0x082A, 0xD75E,
-    0x082C, 0x993B,
-    0x082E, 0x3B01,
-    0x0830, 0x756E,
-    0x0832, 0x60DC,
-    0x0834, 0x6722,
-    0x0836, 0x1454,
-    0x0838, 0xD3A6,
-    0x083A, 0xB19B,
-    0x083C, 0x5518,
-    0x083E, 0x3780,
-    0x0840, 0x9A97,
-    0x0842, 0xCB93,
-    0x0844, 0xFC66,
-    0x0846, 0x3A1E,
-    0x0848, 0x61E4,
-    0x084A, 0x33F0,
-    0x084C, 0xBA46,
-    0x084E, 0xA5C7,
-    0x0850, 0xAE6B,
-    0x0852, 0x3F59,
-    0x0854, 0x215A,
-    0x0856, 0x3908,
-    0x0858, 0x3994,
-    0x085A, 0x40BA,
-    0x085C, 0x115D,
-    0x085E, 0x3F5A,
-    0x0860, 0xCED7,
-    0x0862, 0xFE54,
-    0x0864, 0x0300,
-    0x0866, 0xE9DF,
-    0x0868, 0x0B70,
-    0x086A, 0xC433,
-    0x086C, 0x7CDF,
-    0x086E, 0xF44F,
-    0x0870, 0x8A67,
-    0x0872, 0x1DC4,
-    0x0874, 0xA5DA,
-    0x0876, 0x6754,
-    0x0878, 0xC6B0,
-    0x087A, 0x5675,
-    0x087C, 0x41C6,
-    0x087E, 0x3FAC,
-    0x0880, 0xCB67,
-    0x0882, 0x83B5,
-    0x0884, 0xCC94,
-    0x0886, 0xE348,
-    0x0888, 0x3AE3,
-    0x088A, 0xBA32,
-    0x088C, 0xA441,
-    0x088E, 0x80A4,
-    0x0890, 0x4833,
-    0x0892, 0xC910,
-    0x0894, 0xE680,
-    0x0896, 0x1CF5,
-    0x0898, 0x0B9B,
-    0x089A, 0x4D94,
-    0x089C, 0x08B2,
-    0x089E, 0xD16A,
-    0x08A0, 0x7024,
-    0x08A2, 0x11ED,
-    0x08A4, 0xB03A,
-    0x08A6, 0x3CC3,
-    0x08A8, 0x2FAE,
-    0x08AA, 0xD96D,
-    0x08AC, 0x9705,
-    0x08AE, 0x183F,
-    0x08B0, 0xC5F2,
-    0x08B2, 0xF3E8,
-    0x08B4, 0xC2EC,
-    0x08B6, 0xD52F,
-    0x08B8, 0x0DEA,
-    0x08BA, 0x4C5E,
-    0x08BC, 0xE80D,
-    0x08BE, 0x831D,
-    0x08C0, 0xB4D6,
-    0x08C2, 0x788C,
-    0x08C4, 0xC7F2,
-    0x08C6, 0x3C9E,
-    0x08C8, 0x0142,
-    0x08CA, 0x1D16,
-    0x08CC, 0x00FB,
-    0x08CE, 0x7AC0,
-    0x08D0, 0x183F,
-    0x08D2, 0xA48F,
-    0x08D4, 0xBC43,
-    0x08D6, 0x5D3F,
-    0x08D8, 0x18B8,
-    0x08DA, 0xD665,
-    0x08DC, 0x5173,
-    0x08DE, 0x6EF5,
-    0x08E0, 0x0C72,
-    0x08E2, 0x8D21,
-    0x08E4, 0xDC55,
-    0x08E6, 0x224B,
-    0x08E8, 0x860D,
-    0x08EA, 0xCB81,
-    0x08EC, 0x0F2A,
-    0x08EE, 0x7047,
-    0x08F0, 0x58E8,
-    0x08F2, 0x1422,
-    0x08F4, 0x5EC8,
-    0x08F6, 0xE6F2,
-    0x08F8, 0x2DF4,
-    0x08FA, 0x8371,
-    0x08FC, 0x1155,
-    0x08FE, 0x4B8D,
-    0x0900, 0xE031,
-    0x0902, 0x176F,
-    0x0904, 0xACFB,
-    0x0906, 0x3623,
-    0x0908, 0x3354,
-    0x090A, 0xC87A,
-    0x090C, 0xB016,
-    0x090E, 0x4E54,
-    0x0910, 0xE73A,
-    0x0912, 0x43C5,
-    0x0914, 0x619B,
-    0x0916, 0x6610,
-    0x0918, 0xBEBB,
-    0x091A, 0x5F15,
-    0x091C, 0xF875,
-    0x091E, 0xD605,
-    0x0920, 0x39C0,
-    0x0922, 0xE289,
-    0x0924, 0xFD9C,
-    0x0926, 0x7536,
-    0x0928, 0x584E,
-    0x092A, 0xFFFD,
-    0x092C, 0x4BB9,
-    0x092E, 0xF9AB,
-    0x0930, 0xB2F3,
-    0x0932, 0x2DEE,
-    0x0934, 0x7E8C,
-    0x0936, 0x13B5,
-    0x0938, 0xF87A,
-    0x093A, 0x9196,
-    0x093C, 0x65E3,
-    0x093E, 0x6095,
-    0x0940, 0x4AC8,
-    0x0942, 0x1053,
-    0x0944, 0x5C29,
-    0x0946, 0xEFA4,
-    0x0948, 0xB54E,
-    0x094A, 0x5B72,
-    0x094C, 0x8028,
-    0x094E, 0x38BB,
-    0x0950, 0x586F,
-    0x0952, 0x25A4,
-    0x0954, 0x1287,
-    0x0956, 0x3934,
-    0x0958, 0xC4ED,
-    0x095A, 0x51D7,
-    0x095C, 0x5A55,
-    0x095E, 0xBE16,
-    0x0960, 0x94A2,
-    0x0962, 0xD9BB,
-    0x0964, 0xF6F5,
-    0x0966, 0x7DDD,
-    0x0968, 0x46E0,
-    0x096A, 0x5C6E,
-    0x096C, 0x43D1,
-    0x096E, 0xB205,
-    0x0970, 0x1542,
-    0x0972, 0x8517,
-    0x0974, 0xEE63,
-    0x0976, 0xC284,
-    0x0978, 0xDB43,
-    0x097A, 0x4994,
-    0x097C, 0xB650,
-    0x097E, 0x34E3,
-    0x0980, 0x6A7E,
-    0x0982, 0x1BC4,
-    0x0984, 0x4366,
-    0x0986, 0x15CD,
-    0x0988, 0xAC53,
-    0x098A, 0xF0DB,
-    0x098C, 0xACAB,
-    0x098E, 0xD429,
-    0x0990, 0x0B3D,
-    0x0992, 0x3084,
-    0x0994, 0x860B,
-    0x0996, 0x7F90,
-    0x0998, 0x0F73,
-    0x099A, 0x2B62,
-    0x099C, 0x0F63,
-    0x099E, 0xB517,
-    0x09A0, 0xC60E,
-    0x09A2, 0x1CCF,
-    0x09A4, 0x5573,
-    0x09A6, 0x6A14,
-    0x09A8, 0x4BC6,
-    0x09AA, 0x19E5,
-    0x09AC, 0x07F1,
-    0x09AE, 0x5706,
-    0x09B0, 0xDD1E,
-    0x09B2, 0x2463,
-    0x09B4, 0x7810,
-    0x09B6, 0xFBBE,
-    0x09B8, 0xF5B4,
-    0x09BA, 0x9628,
-    0x09BC, 0xDB1D,
-    0x09BE, 0x2A74,
-    0x09C0, 0xEF6B,
-    0x09C2, 0x1289,
-    0x09C4, 0x40FA,
-    0x09C6, 0x9C38,
-    0x09C8, 0x1535,
-    0x09CA, 0xD047,
-    0x09CC, 0x69BB,
-    0x09CE, 0xB14D,
-    0x09D0, 0x6D39,
-    0x09D2, 0x7173,
-    0x09D4, 0x0088,
-    0x09D6, 0xC315,
-    0x09D8, 0xB611,
-    0x09DA, 0x8E4F,
-    0x09DC, 0xABFF,
-    0x09DE, 0x0D2D,
-    0x09E0, 0x8094,
-    0x09E2, 0xD989,
-    0x09E4, 0x340F,
-    0x09E6, 0xA76E,
-    0x09E8, 0xD1F4,
-    0x09EA, 0xA50F,
-    0x09EC, 0x1EF0,
-    0x09EE, 0xFFB5,
-    0x09F0, 0x4CBB,
-    0x09F2, 0xB60A,
-    0x09F4, 0xC75B,
-    0x09F6, 0x445D,
-    0x09F8, 0x8570,
-    0x09FA, 0xD57A,
-    0x09FC, 0x745C,
-    0x09FE, 0xE984,
-    0x0A00, 0x99AA,
-    0x0A02, 0x7633,
-    0x0A04, 0x7EAF,
-    0x0A06, 0x8FB2,
-    0x0A08, 0x5222,
-    0x0A0A, 0xD0F7,
-    0x0A0C, 0x2CC1,
-    0x0A0E, 0xFABF,
-    0x0A10, 0x9074,
-    0x0A12, 0xA45C,
-    0x0A14, 0x6FD2,
-    0x0A16, 0xB308,
-    0x0A18, 0x9B0C,
-    0x0A1A, 0x1675,
-    0x0A1C, 0xB43B,
-    0x0A1E, 0xD281,
-    0x0A20, 0x5958,
-    0x0A22, 0x818B,
-    0x0A24, 0x528E,
-    0x0A26, 0xB94C,
-    0x0A28, 0xF60D,
-    0x0A2A, 0x9C62,
-    0x0A2C, 0x4621,
-    0x0A2E, 0xDF64,
-    0x0A30, 0x5F07,
-    0x0A32, 0x7F6B,
-    0x0A34, 0x3236,
-    0x0A36, 0xFFE1,
-    0x0A38, 0x6DB9,
-    0x0A3A, 0xDA02,
-    0x0A3C, 0x918E,
-    0x0A3E, 0x12FE,
-    0x0A40, 0x13BB,
-    0x0A42, 0x7441,
-    0x0A44, 0x4CFA,
-    0x0A46, 0xA455,
-    0x0A48, 0x467D,
-    0x0A4A, 0x87CD,
-    0x0A4C, 0x9D74,
-    0x0A4E, 0x6160,
-    0x0A50, 0xC477,
-    0x0A52, 0x0879,
-    0x0A54, 0xC6D1,
-    0x0A56, 0xCD76,
-    0x0A58, 0x8786,
-    0x0A5A, 0xD9E4,
-    0x0A5C, 0xDBCD,
-    0x0A5E, 0x178C,
-    0x0A60, 0x9C5B,
-    0x0A62, 0xE0EF,
-    0x0A64, 0xDFCF,
-    0x0A66, 0xC3D7,
-    0x0A68, 0xAA64,
-    0x0A6A, 0x84E4,
-    0x0A6C, 0x00C7,
-    0x0A6E, 0x4D39,
-    0x0A70, 0x895A,
-    0x0A72, 0xCF71,
-    0x0A74, 0xCE0D,
-    0x0A76, 0x68EE,
-    0x0A78, 0xE58C,
-    0x0A7A, 0xCADF,
-    0x0A7C, 0x64CA,
-    0x0A7E, 0xE43F,
-    0x0A80, 0x3809,
-    0x0A82, 0xCA64,
-    0x0A84, 0x807A,
-    0x0A86, 0x5235,
-    0x0A88, 0x6BD2,
-    0x0A8A, 0x9D45,
-    0x0A8C, 0x2420,
-    0x0A8E, 0x6B6B,
-    0x0A90, 0x8BD1,
-    0x0A92, 0x9B90,
-    0x0A94, 0x8F01,
-    0x0A96, 0xCE41,
-    0x0A98, 0x3DBE,
-    0x0A9A, 0x98B1,
-    0x0A9C, 0x3794,
-    0x0A9E, 0x12DA,
-    0x0AA0, 0xD298,
-    0x0AA2, 0x3CFC,
-    0x0AA4, 0x2464,
-    0x0AA6, 0x08AC,
-    0x0AA8, 0x7D26,
-    0x0AAA, 0x9108,
-    0x0AAC, 0xB101,
-    0x0AAE, 0x2978,
-    0x0AB0, 0x3738,
-    0x0AB2, 0x0E08,
-    0x0AB4, 0x3732,
-    0x0AB6, 0xE50A,
-    0x0AB8, 0xCE62,
-    0x0ABA, 0x55C0,
-    0x0ABC, 0x08DD,
-    0x0ABE, 0xE874,
-    0x0AC0, 0x5AF6,
-    0x0AC2, 0x5433,
-    0x0AC4, 0x335F,
-    0x0AC6, 0x052E,
-    0x0AC8, 0xB6E9,
-    0x0ACA, 0x0CE8,
-    0x0ACC, 0x749D,
-    0x0ACE, 0x5637,
-    0x0AD0, 0x9AF3,
-    0x0AD2, 0x848B,
-    0x0AD4, 0x9001,
-    0x0AD6, 0xFDA1,
-    0x0AD8, 0x3035,
-    0x0ADA, 0x1205,
-    0x0ADC, 0x128C,
-    0x0ADE, 0x97EA,
-    0x0AE0, 0xE40E,
-    0x0AE2, 0xF8EA,
-    0x0AE4, 0x3D95,
-    0x0AE6, 0xAE42,
-    0x0AE8, 0xA932,
-    0x0AEA, 0x87FF,
-    0x0AEC, 0x0C5E,
-    0x0AEE, 0x0EA8,
-    0x0AF0, 0x7E33,
-    0x0AF2, 0x0D13,
-    0x0AF4, 0xCB1C,
-    0x0AF6, 0x9FAF,
-    0x0AF8, 0xEA36,
-    0x0AFA, 0x8F20,
-    0x0AFC, 0xCE97,
-    0x0AFE, 0x6F00,
-    0x0B00, 0xB847,
-    0x0B02, 0x4CB9,
-    0x0B04, 0xA902,
-    0x0B06, 0x67F3,
-    0x0B08, 0x3217,
-    0x0B0A, 0x9A2B,
-    0x0B0C, 0xD195,
-    0x0B0E, 0xDA84,
-    0x0B10, 0x16CA,
-    0x0B12, 0x51F1,
-    0x0B14, 0x0A4A,
-    0x0B16, 0x063E,
-    0x0B18, 0x7620,
-    0x0B1A, 0x1116,
-    0x0B1C, 0x207B,
-    0x0B1E, 0x5A91,
-    0x0B20, 0x44EA,
-    0x0B22, 0xAE6A,
-    0x0B24, 0xD318,
-    0x0B26, 0x2BDB,
-    0x0B28, 0x1015,
-    0x0B2A, 0x29F0,
-    0x0B2C, 0x2A02,
-    0x0B2E, 0x2633,
-    0x0B30, 0x54C5,
-    0x0B32, 0x0797,
-    0x0B34, 0x2109,
-    0x0B36, 0xBA8B,
-    0x0B38, 0x39E5,
-    0x0B3A, 0x601A,
-    0x0B3C, 0x6918,
-    0x0B3E, 0x1BCB,
-    0x0B40, 0xBCEF,
-    0x0B42, 0x51D1,
-    0x0B44, 0x376E,
-    0x0B46, 0xAD2C,
-    0x0B48, 0x1603,
-    0x0B4A, 0xD7BB,
-    0x0B4C, 0x7810,
-    0x0B4E, 0xED0B,
-    0x0B50, 0x13DB,
-    0x0B52, 0x9C7E,
-    0x0B54, 0x3DB8,
-    0x0B56, 0x327A,
-    0x0B58, 0xBFC1,
-    0x0B5A, 0xD26D,
-    0x0B5C, 0xCA73,
-    0x0B5E, 0x9BFE,
-    0x0B60, 0xFD47,
-    0x0B62, 0x921A,
-    0x0B64, 0x5365,
-    0x0B66, 0xE6DF,
-    0x0B68, 0x69C4,
-    0x0B6A, 0x03D2,
-    0x0B6C, 0xCB09,
-    0x0B6E, 0x5C1F,
-    0x0B70, 0x9D06,
-    0x0B72, 0x26B4,
-    0x0B74, 0xA2BE,
-    0x0B76, 0x04AF,
-    0x0B78, 0x3FD8,
-    0x0B7A, 0x5636,
-    0x0B7C, 0x1C9B,
-    0x0B7E, 0x7897,
-    0x0B80, 0xA732,
-    0x0B82, 0x79C3,
-    0x0B84, 0x0AF9,
-    0x0B86, 0x8E98,
-    0x0B88, 0x34FB,
-    0x0B8A, 0xCBFB,
-    0x0B8C, 0x6EF6,
-    0x0B8E, 0xEBAC,
-    0x0B90, 0x99C9,
-    0x0B92, 0x54C2,
-    0x0B94, 0x4BA5,
-    0x0B96, 0x8219,
-    0x0B98, 0xAC76,
-    0x0B9A, 0xCD1F,
-    0x0B9C, 0xB43D,
-    0x0B9E, 0x27A3,
-    0x0BA0, 0xD3FE,
-    0x0BA2, 0xF219,
-    0x0BA4, 0x4AE5,
-    0x0BA6, 0x189B,
-    0x0BA8, 0xBDDA,
-    0x0BAA, 0x1F9B,
-    0x0BAC, 0x384C,
-    0x0BAE, 0xEEA8,
-    0x0BB0, 0x5D6B,
-    0x0BB2, 0x1412,
-    0x0BB4, 0xB9C9,
-    0x0BB6, 0x1532,
-    0x0BB8, 0x07FC,
-    0x0BBA, 0x250F,
-    0x0BBC, 0xE0D5,
-    0x0BBE, 0x21B9,
-    0x0BC0, 0x29C1,
-    0x0BC2, 0xB54A,
-    0x0BC4, 0x4329,
-    0x0BC6, 0x457C,
-    0x0BC8, 0xF6AF,
-    0x0BCA, 0x5AC3,
-    0x0BCC, 0xE876,
-    0x0BCE, 0xB481,
-    0x0BD0, 0xFB92,
-    0x0BD2, 0x73DD,
-    0x0BD4, 0x0E5B,
-    0x0BD6, 0xD923,
-    0x0BD8, 0x98F0,
-    0x0BDA, 0x8C83,
-    0x0BDC, 0x98BE,
-    0x0BDE, 0x4EA8,
-    0x0BE0, 0x93E6,
-    0x0BE2, 0x2C7A,
-    0x0BE4, 0xC91B,
-    0x0BE6, 0x61AA,
-    0x0BE8, 0x4F03,
-    0x0BEA, 0x540A,
-    0x0BEC, 0xB0AB,
-    0x0BEE, 0x8E91,
-    0x0BF0, 0x4C67,
-    0x0BF2, 0x2CF7,
-    0x0BF4, 0xEE69,
-    0x0BF6, 0x2C93,
-    0x0BF8, 0xD2B7,
-    0x0BFA, 0x512D,
-    0x0BFC, 0x104E,
-    0x0BFE, 0xE5C8,
-    0x0C00, 0x6827,
-    0x0C02, 0xC82F,
-    0x0C04, 0x8F88,
-    0x0C06, 0xB487,
-    0x0C08, 0x066B,
-    0x0C0A, 0x9668,
-    0x0C0C, 0x6D2D,
-    0x0C0E, 0x0E72,
-    0x0C10, 0x0DEE,
-    0x0C12, 0xDB72,
-    0x0C14, 0x9425,
-    0x0C16, 0x6CF0,
-    0x0C18, 0xAE4E,
-    0x0C1A, 0x99EF,
-    0x0C1C, 0x4D17,
-    0x0C1E, 0xC9DA,
-    0x0C20, 0x0265,
-    0x0C22, 0x9D64,
-    0x0C24, 0x973F,
-    0x0C26, 0x06F2,
-    0x0C28, 0x5FEA,
-    0x0C2A, 0xB583,
-    0x0C2C, 0xEA27,
-    0x0C2E, 0x16B2,
-    0x0C30, 0x8769,
-    0x0C32, 0xD6CD,
-    0x0C34, 0xF0E9,
-    0x0C36, 0xCF91,
-    0x0C38, 0xB241,
-    0x0C3A, 0x9E74,
-    0x0C3C, 0x353F,
-    0x0C3E, 0x4E26,
-    0x0C40, 0x9159,
-    0x0C42, 0x390E,
-    0x0C44, 0x3A25,
-    0x0C46, 0x79DE,
-    0x0C48, 0x8643,
-    0x0C4A, 0xCA74,
-    0x0C4C, 0x6F07,
-    0x0C4E, 0x2BC9,
-    0x0C50, 0x042C,
-    0x0C52, 0xE6D6,
-    0x0C54, 0x2720,
-    0x0C56, 0x6774,
-    0x0C58, 0x377E,
-    0x0C5A, 0x51FC,
-    0x0C5C, 0x3651,
-    0x0C5E, 0x2C6E,
-    0x0C60, 0x85B6,
-    0x0C62, 0xCEBB,
-    0x0C64, 0xC198,
-    0x0C66, 0x9DC9,
-    0x0C68, 0x2CF7,
-    0x0C6A, 0x2DB4,
-    0x0C6C, 0x462C,
-    0x0C6E, 0x29CD,
-    0x0C70, 0x2742,
-    0x0C72, 0xE006,
-    0x0C74, 0x45C4,
-    0x0C76, 0x73BA,
-    0x0C78, 0x25B5,
-    0x0C7A, 0x8E1E,
-    0x0C7C, 0x3556,
-    0x0C7E, 0x1622,
-    0x0C80, 0xEBCC,
-    0x0C82, 0xF7F5,
-    0x0C84, 0x090A,
-    0x0C86, 0xC07B,
-    0x0C88, 0x8312,
-    0x0C8A, 0xE095,
-    0x0C8C, 0x79C9,
-    0x0C8E, 0x7D9A,
-    0x0C90, 0x74B0,
-    0x0C92, 0xE92C,
-    0x0C94, 0xE746,
-    0x0C96, 0x71E4,
-    0x0C98, 0xDFFC,
-    0x0C9A, 0x7849,
-    0x0C9C, 0xA02C,
-    0x0C9E, 0x53D6,
-    0x0CA0, 0xD2CF,
-    0x0CA2, 0x6BEA,
-    0x0CA4, 0xB8FE,
-    0x0CA6, 0x7432,
-    0x0CA8, 0x00D1,
-    0x0CAA, 0x08AE,
-    0x0CAC, 0x8B75,
-    0x0CAE, 0xBC80,
-    0x0CB0, 0x549F,
-    0x0CB2, 0x54D8,
-    0x0CB4, 0xB2B1,
-    0x0CB6, 0x2144,
-    0x0CB8, 0xBEA7,
-    0x0CBA, 0xF6EB,
-    0x0CBC, 0x1CCD,
-    0x0CBE, 0x00B2,
-    0x0CC0, 0x328A,
-    0x0CC2, 0x5A1B,
-    0x0CC4, 0xA27B,
-    0x0CC6, 0xA1B3,
-    0x0CC8, 0xA571,
-    0x0CCA, 0x0645,
-    0x0CCC, 0x420E,
-    0x0CCE, 0xC4E2,
-    0x0CD0, 0xAA4E,
-    0x0CD2, 0x0C86,
-    0x0CD4, 0xC630,
-    0x0CD6, 0x44D8,
-    0x0CD8, 0x6DD0,
-    0x0CDA, 0xDFCE,
-    0x0CDC, 0xB4E7,
-    0x0CDE, 0xC405,
-    0x0CE0, 0x991E,
-    0x0CE2, 0xCC13,
-    0x0CE4, 0x04CE,
-    0x0CE6, 0x5874,
-    0x0CE8, 0x8294,
-    0x0CEA, 0x79FF,
-    0x0CEC, 0x36EA,
-    0x0CEE, 0x7F7D,
-    0x0CF0, 0x8C2E,
-    0x0CF2, 0x8B31,
-    0x0CF4, 0xC62E,
-    0x0CF6, 0xCA8F,
-    0x0CF8, 0x1711,
-    0x0CFA, 0xE49B,
-    0x0CFC, 0xEFEF,
-    0x0CFE, 0x7E3E,
-    0x0D00, 0x7FCA,
-    0x0D02, 0xA310,
-    0x0D04, 0x7282,
-    0x0D06, 0x8185,
-    0x0D08, 0x583E,
-    0x0D0A, 0x8C1A,
-    0x0D0C, 0x8B86,
-    0x0D0E, 0x4BBB,
-    0x0D10, 0xA752,
-    0x0D12, 0x03DE,
-    0x0D14, 0x271D,
-    0x0D16, 0x79BC,
-    0x0D18, 0x58B1,
-    0x0D1A, 0xE5B3,
-    0x0D1C, 0xB501,
-    0x0D1E, 0x3FDB,
-    0x0D20, 0xCDB0,
-    0x0D22, 0x6302,
-    0x0D24, 0xDED0,
-    0x0D26, 0xC7D6,
-    0x0D28, 0x921C,
-    0x0D2A, 0x90E7,
-    0x0D2C, 0xB9FF,
-    0x0D2E, 0x688E,
-    0x0D30, 0x4974,
-    0x0D32, 0x5783,
-    0x0D34, 0x2262,
-    0x0D36, 0xAAEB,
-    0x0D38, 0xD355,
-    0x0D3A, 0x89A1,
-    0x0D3C, 0x2532,
-    0x0D3E, 0xD8B0,
-    0x0D40, 0xD2CC,
-    0x0D42, 0x31A3,
-    0x0D44, 0x623C,
-    0x0D46, 0xBAB9,
-    0x0D48, 0xB2CF,
-    0x0D4A, 0xAD11,
-    0x0D4C, 0x18E1,
-    0x0D4E, 0x472B,
-    0x0D50, 0xCAD4,
-    0x0D52, 0xA1D9,
-    0x0D54, 0xA2A2,
-    0x0D56, 0xE25A,
-    0x0D58, 0x6ACE,
-    0x0D5A, 0x2BC1,
-    0x0D5C, 0xD094,
-    0x0D5E, 0x87E0,
-    0x0D60, 0x859D,
-    0x0D62, 0x8AA9,
-    0x0D64, 0x2F22,
-    0x0D66, 0x7FEB,
-    0x0D68, 0x0D44,
-    0x0D6A, 0x98CA,
-    0x0D6C, 0x8848,
-    0x0D6E, 0x8867,
-    0x0D70, 0xFAFF,
-    0x0D72, 0xAC5C,
-    0x0D74, 0x0A7F,
-    0x0D76, 0x40F2,
-    0x0D78, 0x9FA8,
-    0x0D7A, 0x437C,
-    0x0D7C, 0xCD21,
-    0x0D7E, 0x6DB5,
-    0x0D80, 0x0C1C,
-    0x0D82, 0xB90C,
-    0x0D84, 0x38B0,
-    0x0D86, 0xA28C,
-    0x0D88, 0x7506,
-    0x0D8A, 0x1DAA,
-    0x0D8C, 0xAC97,
-    0x0D8E, 0x80F0,
-    0x0D90, 0x93D9,
-    0x0D92, 0xC540,
-    0x0D94, 0x9DD5,
-    0x0D96, 0xCF91,
-    0x0D98, 0x43EE,
-    0x0D9A, 0x2F21,
-    0x0D9C, 0xF470,
-    0x0D9E, 0xB006,
-    0x0DA0, 0xF3FE,
-    0x0DA2, 0xAA68,
-    0x0DA4, 0x6B8D,
-    0x0DA6, 0x6162,
-    0x0DA8, 0xC310,
-    0x0DAA, 0xD526,
-    0x0DAC, 0xB301,
-    0x0DAE, 0x6669,
-    0x0DB0, 0x6EDD,
-    0x0DB2, 0xF5C0,
-    0x0DB4, 0xF3A9,
-    0x0DB6, 0x081B,
-    0x0DB8, 0xA04D,
-    0x0DBA, 0x17D1,
-    0x0DBC, 0x4C3E,
-    0x0DBE, 0xDC31,
-    0x0DC0, 0xE71C,
-    0x0DC2, 0xFD81,
-    0x0DC4, 0x7525,
-    0x0DC6, 0xAF0F,
-    0x0DC8, 0x23C2,
-    0x0DCA, 0x556F,
-    0x0DCC, 0x2B1D,
-    0x0DCE, 0x3F33,
-    0x0DD0, 0xF3DC,
-    0x0DD2, 0x8D28,
-    0x0DD4, 0x7A78,
-    0x0DD6, 0x1847,
-    0x0DD8, 0x74A3,
-    0x0DDA, 0x702A,
-    0x0DDC, 0xA3F7,
-    0x0DDE, 0x5E13,
-    0x0DE0, 0xB976,
-    0x0DE2, 0x434F,
-    0x0DE4, 0xEB3A,
-    0x0DE6, 0xCDFB,
-    0x0DE8, 0x28CC,
-    0x0DEA, 0x7A96,
-    0x0DEC, 0x636D,
-    0x0DEE, 0x9449,
-    0x0DF0, 0x247F,
-    0x0DF2, 0x219F,
-    0x0DF4, 0x6A61,
-    0x0DF6, 0x63F9,
-    0x0DF8, 0xF656,
-    0x0DFA, 0x131B,
-    0x0DFC, 0xC91B,
-    0x0DFE, 0x564A,
-    0x0E00, 0xEE1F,
-    0x0E02, 0xCAE8,
-    0x0E04, 0x930E,
-    0x0E06, 0x1275,
-    0x0E08, 0xC1F1,
-    0x0E0A, 0x2DD1,
-    0x0E0C, 0x7F86,
-    0x0E0E, 0xE58D,
-    0x0E10, 0xB3A7,
-    0x0E12, 0x42BD,
-    0x0E14, 0x568B,
-    0x0E16, 0xC7BD,
-    0x0E18, 0xDA46,
-    0x0E1A, 0x5DD1,
-    0x0E1C, 0x2E61,
-    0x0E1E, 0xFBB3,
-    0x0E20, 0x9D11,
-    0x0E22, 0xC609,
-    0x0E24, 0xC843,
-    0x0E26, 0x757F,
-    0x0E28, 0x6CEE,
-    0x0E2A, 0x0B41,
-    0x0E2C, 0xED81,
-    0x0E2E, 0x4EA7,
-    0x0E30, 0xD5C9,
-    0x0E32, 0x4FB1,
-    0x0E34, 0x6020,
-    0x0E36, 0xFB8D,
-    0x0E38, 0x9002,
-    0x0E3A, 0x9F01,
-    0x0E3C, 0x145D,
-    0x0E3E, 0xD0D9,
-    0x0E40, 0x708C,
-    0x0E42, 0x4E5C,
-    0x0E44, 0x3D97,
-    0x0E46, 0x214D,
-    0x0E48, 0x0D0B,
-    0x0E4A, 0x55E1,
-    0x0E4C, 0x3356,
-    0x0E4E, 0x48D7,
-    0x0E50, 0x81F9,
-    0x0E52, 0xDD48,
-    0x0E54, 0x69A9,
-    0x0E56, 0x575B,
-    0x0E58, 0xA1DC,
-    0x0E5A, 0x9F4D,
-    0x0E5C, 0x4590,
-    0x0E5E, 0x0A24,
-    0x0E60, 0x39E5,
-    0x0E62, 0x5130,
-    0x0E64, 0x0361,
-    0x0E66, 0x67DD,
-    0x0E68, 0xD9CF,
-    0x0E6A, 0x1938,
-    0x0E6C, 0x56AC,
-    0x0E6E, 0xD1A3,
-    0x0E70, 0xDEB5,
-    0x0E72, 0xFD36,
-    0x0E74, 0x8818,
-    0x0E76, 0xB87E,
-    0x0E78, 0xB2A0,
-    0x0E7A, 0x07BD,
-    0x0E7C, 0x1F65,
-    0x0E7E, 0x72A6,
-    0x0E80, 0x24A3,
-    0x0E82, 0x6763,
-    0x0E84, 0xDDD8,
-    0x0E86, 0x3A57,
-    0x0E88, 0x6269,
-    0x0E8A, 0x661C,
-    0x0E8C, 0xC948,
-    0x0E8E, 0x9BAD,
-    0x0E90, 0xB31A,
-    0x0E92, 0xBA45,
-    0x0E94, 0x17A8,
-    0x0E96, 0x6C14,
-    0x0E98, 0xCE2B,
-    0x0E9A, 0x6C46,
-    0x0E9C, 0x74DD,
-    0x0E9E, 0x8FF7,
-    0x0EA0, 0x6D3F,
-    0x0EA2, 0xE6B4,
-    0x0EA4, 0x01E0,
-    0x0EA6, 0xD215,
-    0x0EA8, 0x8F82,
-    0x0EAA, 0x153F,
-    0x0EAC, 0xD51F,
-    0x0EAE, 0x81A5,
-    0x0EB0, 0x6F10,
-    0x0EB2, 0x992E,
-    0x0EB4, 0x374B,
-    0x0EB6, 0x7DC0,
-    0x0EB8, 0x36B6,
-    0x0EBA, 0x0774,
-    0x0EBC, 0xD451,
-    0x0EBE, 0x0D84,
-    0x0EC0, 0xE9F6,
-    0x0EC2, 0x0BC3,
-    0x0EC4, 0xC93B,
-    0x0EC6, 0x3FA9,
-    0x0EC8, 0xAB4F,
-    0x0ECA, 0xCA75,
-    0x0ECC, 0x8091,
-    0x0ECE, 0x944B,
-    0x0ED0, 0xA32C,
-    0x0ED2, 0xE277,
-    0x0ED4, 0x03DB,
-    0x0ED6, 0x31A0,
-    0x0ED8, 0x6250,
-    0x0EDA, 0x8F4C,
-    0x0EDC, 0xB736,
-    0x0EDE, 0x054A,
-    0x0EE0, 0x187A,
-    0x0EE2, 0x040A,
-    0x0EE4, 0x1705,
-    0x0EE6, 0x4908,
-    0x0EE8, 0x4BB3,
-    0x0EEA, 0xCD17,
-    0x0EEC, 0x24AE,
-    0x0EEE, 0x9713,
-    0x0EF0, 0x4CDF,
-    0x0EF2, 0x737E,
-    0x0EF4, 0x20EC,
-    0x0EF6, 0xA9D0,
-    0x0EF8, 0xD5A5,
-    0x0EFA, 0x1D2A,
-    0x0EFC, 0x430E,
-    0x0EFE, 0xDBCD,
-    0x0F00, 0x817C,
-    0x0F02, 0xC8C1,
-    0x0F04, 0x7404,
-    0x0F06, 0x7D6C,
-    0x0F08, 0x995D,
-    0x0F0A, 0xE04D,
-    0x0F0C, 0xFE0F,
-    0x0F0E, 0x5A53,
-    0x0F10, 0x66FB,
-    0x0F12, 0xA44F,
-    0x0F14, 0x974C,
-    0x0F16, 0xFC9C,
-    0x0F18, 0x8094,
-    0x0F1A, 0x8336,
-    0x0F1C, 0x7A9F,
-    0x0F1E, 0xF001,
-    0x0F20, 0x12F4,
-    0x0F22, 0x8229,
-    0x0F24, 0x72AC,
-    0x0F26, 0x7325,
-    0x0F28, 0x7B83,
-    0x0F2A, 0xA7B6,
-    0x0F2C, 0xA321,
-    0x0F2E, 0x06BF,
-    0x0F30, 0x619A,
-    0x0F32, 0xF447,
-    0x0F34, 0x2D75,
-    0x0F36, 0xED14,
-    0x0F38, 0xD7CB,
-    0x0F3A, 0xE23F,
-    0x0F3C, 0x09E5,
-    0x0F3E, 0xA197,
-    0x0F40, 0xD4CE,
-    0x0F42, 0xCC6B,
-    0x0F44, 0x2131,
-    0x0F46, 0x7D66,
-    0x0F48, 0x9365,
-    0x0F4A, 0x69F1,
-    0x0F4C, 0x83B0,
-    0x0F4E, 0x079B,
-    0x0F50, 0x686C,
-    0x0F52, 0x3CC6,
-    0x0F54, 0x1B13,
-    0x0F56, 0xA9B4,
-    0x0F58, 0x9D80,
-    0x0F5A, 0xC254,
-    0x0F5C, 0x33AA,
-    0x0F5E, 0xBF70,
-    0x0F60, 0x24CF,
-    0x0F62, 0xBE2E,
-    0x0F64, 0x08DB,
-    0x0F66, 0x64FB,
-    0x0F68, 0xDB86,
-    0x0F6A, 0xCB96,
-    0x0F6C, 0xFD4A,
-    0x0F6E, 0x8BBE,
-    0x0F70, 0xF49A,
-    0x0F72, 0x19F3,
-    0x0F74, 0x37EE,
-    0x0F76, 0x2357,
-    0x0F78, 0xEF2F,
-    0x0F7A, 0x96AF,
-    0x0F7C, 0x9F88,
-    0x0F7E, 0x18CC,
-    0x0F80, 0xC716,
-    0x0F82, 0xA30C,
-    0x0F84, 0x218B,
-    0x0F86, 0x2351,
-    0x0F88, 0xF723,
-    0x0F8A, 0xCED1,
-    0x0F8C, 0xC632,
-    0x0F8E, 0x32D1,
-    0x0F90, 0xEBF0,
-    0x0F92, 0xE1A5,
-    0x0F94, 0x2E18,
-    0x0F96, 0xB357,
-    0x0F98, 0x9893,
-    0x0F9A, 0xF00F,
-    0x0F9C, 0x917A,
-    0x0F9E, 0x84F3,
-    0x0FA0, 0x6CF5,
-    0x0FA2, 0x8667,
-    0x0FA4, 0x1DBE,
-    0x0FA6, 0xE993,
-    0x0FA8, 0x4B9F,
-    0x0FAA, 0xD5FC,
-    0x0FAC, 0xF07A,
-    0x0FAE, 0x884D,
-    0x0FB0, 0xF19D,
-    0x0FB2, 0x8CA2,
-    0x0FB4, 0x62D3,
-    0x0FB6, 0x1849,
-    0x0FB8, 0x7C2D,
-    0x0FBA, 0x83DF,
-    0x0FBC, 0xD127,
-    0x0FBE, 0x497F,
-    0x0FC0, 0x7695,
-    0x0FC2, 0x93E7,
-    0x0FC4, 0x4247,
-    0x0FC6, 0x2DC3,
-    0x0FC8, 0xAFC3,
-    0x0FCA, 0x6A4A,
-    0x0FCC, 0x7DDB,
-    0x0FCE, 0x7A43,
-    0x0FD0, 0x0DF5,
-    0x0FD2, 0x01A0,
-    0x0FD4, 0x0C9F,
-    0x0FD6, 0x3ADE,
-    0x0FD8, 0xAADA,
-    0x0FDA, 0x41F1,
-    0x0FDC, 0x40F7,
-    0x0FDE, 0x9E9D,
-    0x0FE0, 0xBB33,
-    0x0FE2, 0x5392,
-    0x0FE4, 0x0403,
-    0x0FE6, 0x09EB,
-    0x0FE8, 0x9482,
-    0x0FEA, 0x0E93,
-    0x0FEC, 0x7B69,
-    0x0FEE, 0xE45A,
-    0x0FF0, 0x22C4,
-    0x0FF2, 0xEE57,
-    0x0FF4, 0x21CD,
-    0x0FF6, 0x4AAE,
-    0x0FF8, 0x716F,
-    0x0FFA, 0x97ED,
-    0x0FFC, 0xB468,
-    0x0FFE, 0x92F0,
-    0x1000, 0x191C,
-    0x1002, 0xFDB4,
-    0x1004, 0x4B3E,
-    0x1006, 0xD331,
-    0x1008, 0x52DD,
-    0x100A, 0x1A41,
-    0x100C, 0xBE19,
-    0x100E, 0xBBDE,
-    0x1010, 0xC01D,
-    0x1012, 0xE2F9,
-    0x1014, 0x1E75,
-    0x1016, 0xCCBE,
-    0x1018, 0xDE75,
-    0x101A, 0xB9C3,
-    0x101C, 0x3C7D,
-    0x101E, 0x087F,
-    0x1020, 0x7EA8,
-    0x1022, 0x9F0D,
-    0x1024, 0x1F22,
-    0x1026, 0x1DF5,
-    0x1028, 0x6C54,
-    0x102A, 0xBCB2,
-    0x102C, 0x4A67,
-    0x102E, 0xC913,
-    0x1030, 0x00B4,
-    0x1032, 0xC532,
-    0x1034, 0xDFD6,
-    0x1036, 0x1A59,
-    0x1038, 0x2A39,
-    0x103A, 0x5F66,
-    0x103C, 0xA849,
-    0x103E, 0x8566,
-    0x1040, 0xD52A,
-    0x1042, 0xFB09,
-    0x1044, 0x53AA,
-    0x1046, 0xCD37,
-    0x1048, 0x7893,
-    0x104A, 0xEB40,
-    0x104C, 0x4DD5,
-    0x104E, 0x25C6,
-    0x1050, 0x9B9F,
-    0x1052, 0x34DC,
-    0x1054, 0xA6D6,
-    0x1056, 0x338A,
-    0x1058, 0x3767,
-    0x105A, 0x5CB3,
-    0x105C, 0x2409,
-    0x105E, 0x0556,
-    0x1060, 0x1DF4,
-    0x1062, 0xBB6D,
-    0x1064, 0xD7EB,
-    0x1066, 0x3F9C,
-    0x1068, 0xAE67,
-    0x106A, 0x6F8C,
-    0x106C, 0x0F60,
-    0x106E, 0xEBB1,
-    0x1070, 0x76F3,
-    0x1072, 0x100B,
-    0x1074, 0xCC3E,
-    0x1076, 0xC963,
-    0x1078, 0x57EC,
-    0x107A, 0xB0CF,
-    0x107C, 0x3724,
-    0x107E, 0xBE70,
-    0x1080, 0x9153,
-    0x1082, 0x0F48,
-    0x1084, 0x365D,
-    0x1086, 0xBFA4,
-    0x1088, 0x2029,
-    0x108A, 0x45CA,
-    0x108C, 0x595C,
-    0x108E, 0x8CF7,
-    0x1090, 0x7ACF,
-    0x1092, 0xB231,
-    0x1094, 0x4C9B,
-    0x1096, 0x53B8,
-    0x1098, 0x74F2,
-    0x109A, 0x1969,
-    0x109C, 0x0D8E,
-    0x109E, 0xC423,
-    0x10A0, 0xE5A9,
-    0x10A2, 0xB7C3,
-    0x10A4, 0x0ED4,
-    0x10A6, 0xDB9D,
-    0x10A8, 0xE8F6,
-    0x10AA, 0x91A3,
-    0x10AC, 0xFF96,
-    0x10AE, 0xE8E0,
-    0x10B0, 0xC3C1,
-    0x10B2, 0xE0F7,
-    0x10B4, 0x9E36,
-    0x10B6, 0x5985,
-    0x10B8, 0x9FA0,
-    0x10BA, 0x01D7,
-    0x10BC, 0x454B,
-    0x10BE, 0x524E,
-    0x10C0, 0xE5ED,
-    0x10C2, 0xCC42,
-    0x10C4, 0xEB0A,
-    0x10C6, 0x6833,
-    0x10C8, 0x23F8,
-    0x10CA, 0xA152,
-    0x10CC, 0xB153,
-    0x10CE, 0x54F6,
-    0x10D0, 0xCE7C,
-    0x10D2, 0x8FCC,
-    0x10D4, 0x8185,
-    0x10D6, 0xFD5C,
-    0x10D8, 0x1892,
-    0x10DA, 0xD6A4,
-    0x10DC, 0x4635,
-    0x10DE, 0x9ECD,
-    0x10E0, 0x4844,
-    0x10E2, 0x243F,
-    0x10E4, 0xDDCE,
-    0x10E6, 0xBD84,
-    0x10E8, 0x2370,
-    0x10EA, 0x69FA,
-    0x10EC, 0x939E,
-    0x10EE, 0x6D16,
-    0x10F0, 0x35AF,
-    0x10F2, 0x054B,
-    0x10F4, 0x4E51,
-    0x10F6, 0xED90,
-    0x10F8, 0x64FB,
-    0x10FA, 0xB9BD,
-    0x10FC, 0x73FF,
-    0x10FE, 0x3CCE,
-    0x1100, 0x3378,
-    0x1102, 0xEFBB,
-    0x1104, 0x306F,
-    0x1106, 0x5E46,
-    0x1108, 0x62F6,
-    0x110A, 0x41C9,
-    0x110C, 0xD184,
-    0x110E, 0xCA57,
-    0x1110, 0x01FF,
-    0x1112, 0x63C7,
-    0x1114, 0xE97C,
-    0x1116, 0x3F87,
-    0x1118, 0x3F32,
-    0x111A, 0x1947,
-    0x111C, 0x6E53,
-    0x111E, 0x9460,
-    0x1120, 0xD02D,
-    0x1122, 0x47D1,
-    0x1124, 0x7855,
-    0x1126, 0xD96B,
-    0x1128, 0xCC29,
-    0x112A, 0x2118,
-    0x112C, 0x433F,
-    0x112E, 0xBBFD,
-    0x1130, 0xBC6C,
-    0x1132, 0x1C87,
-    0x1134, 0x1DBE,
-    0x1136, 0xE6B0,
-    0x1138, 0x7D65,
-    0x113A, 0xE509,
-    0x113C, 0x9162,
-    0x113E, 0xBC19,
-    0x1140, 0x5B33,
-    0x1142, 0x7C47,
-    0x1144, 0x6CBC,
-    0x1146, 0x4F34,
-    0x1148, 0xDD7C,
-    0x114A, 0x7799,
-    0x114C, 0xB943,
-    0x114E, 0x424A,
-    0x1150, 0xE94B,
-    0x1152, 0xC8E4,
-    0x1154, 0xBE5C,
-    0x1156, 0x54C9,
-    0x1158, 0x43AD,
-    0x115A, 0x602A,
-    0x115C, 0x3CC7,
-    0x115E, 0xFF9B,
-    0x1160, 0x14D2,
-    0x1162, 0x0773,
-    0x1164, 0xD8F9,
-    0x1166, 0xCE7E,
-    0x1168, 0x91B3,
-    0x116A, 0xA609,
-    0x116C, 0x4FF4,
-    0x116E, 0xC155,
-    0x1170, 0x022C,
-    0x1172, 0x4B95,
-    0x1174, 0xB17B,
-    0x1176, 0xBF8D,
-    0x1178, 0x2A3E,
-    0x117A, 0xE7D5,
-    0x117C, 0xEAB8,
-    0x117E, 0xB7A1,
-    0x1180, 0x54CA,
-    0x1182, 0x89F8,
-    0x1184, 0x892A,
-    0x1186, 0xE229,
-    0x1188, 0x0440,
-    0x118A, 0x8568,
-    0x118C, 0x48E6,
-    0x118E, 0x9459,
-    0x1190, 0xBC85,
-    0x1192, 0xC3B5,
-    0x1194, 0xEDFC,
-    0x1196, 0x74E4,
-    0x1198, 0x3501,
-    0x119A, 0xA871,
-    0x119C, 0x2371,
-    0x119E, 0xA419,
-    0x11A0, 0x8A29,
-    0x11A2, 0x34D8,
-    0x11A4, 0x1EE5,
-    0x11A6, 0xC56A,
-    0x11A8, 0xB7BE,
-    0x11AA, 0x1CAE,
-    0x11AC, 0xDBC0,
-    0x11AE, 0x7CB4,
-    0x11B0, 0xDDBD,
-    0x11B2, 0x19C3,
-    0x11B4, 0xA114,
-    0x11B6, 0x43FB,
-    0x11B8, 0x0E23,
-    0x11BA, 0x1395,
-    0x11BC, 0xED60,
-    0x11BE, 0x2C7C,
-    0x11C0, 0xCEC7,
-    0x11C2, 0x21E4,
-    0x11C4, 0xFBFE,
-    0x11C6, 0x3D09,
-    0x11C8, 0x0000,
-    0xFCFC, 0x4000,
-};
-
-/*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-static u16 sayramuwide_preview_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x5804,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x0010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFD02,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0003,
-    0x1C58, 0xF004,
-    0x1C5A, 0x0010,
-    0x1C5C, 0x3110,
-    0x1C5E, 0x0005,
-    0x1C60, 0x00A0,
-    0x1C62, 0x6E10,
-    0x1C64, 0x6E10,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFD02,
-    0x1C7A, 0x0010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0003,
-    0x1C80, 0xF004,
-    0x1C82, 0x0010,
-    0x1C84, 0x3110,
-    0x1C86, 0x0005,
-    0x1C88, 0x00A0,
-    0x1C8A, 0x6610,
-    0x1C8C, 0x6610,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x0010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x0001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x0010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x0001,
-    0x1CF0, 0xFD02,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0003,
-    0x1CF8, 0xF004,
-    0x1CFA, 0x0010,
-    0x1CFC, 0x3110,
-    0x1CFE, 0x0005,
-    0x1D00, 0x00A0,
-    0x1D02, 0x6E10,
-    0x1D04, 0x6E10,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0001,
-    0x1D18, 0xFD02,
-    0x1D1A, 0x0010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0003,
-    0x1D20, 0xF004,
-    0x1D22, 0x0010,
-    0x1D24, 0x3110,
-    0x1D26, 0x0005,
-    0x1D28, 0x00A0,
-    0x1D2A, 0x6610,
-    0x1D2C, 0x6610,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0001,
-    0x1D40, 0xF004,
-    0x1D42, 0x0010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0A00,
-    0x1E18, 0x0A00,
-    0x1E26, 0x0A00,
-    0x1E28, 0x0A00,
-    0x1DF2, 0x1600,
-    0x1DF4, 0x1600,
-    0x1E02, 0x1600,
-    0x1E04, 0x1600,
-    0x1E12, 0x0800,
-    0x1E14, 0x0800,
-    0x1E22, 0x0800,
-    0x1E24, 0x0800,
-    0x1DF6, 0x1100,
-    0x1DF8, 0x1100,
-    0x1E06, 0x1100,
-    0x1E08, 0x1100,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0040,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0101,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-static u16 sayramuwide_capture_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x5804,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x0010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFD02,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0003,
-    0x1C58, 0xF004,
-    0x1C5A, 0x0010,
-    0x1C5C, 0x3110,
-    0x1C5E, 0x0005,
-    0x1C60, 0x00A0,
-    0x1C62, 0x6E10,
-    0x1C64, 0x6E10,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFD02,
-    0x1C7A, 0x0010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0003,
-    0x1C80, 0xF004,
-    0x1C82, 0x0010,
-    0x1C84, 0x3110,
-    0x1C86, 0x0005,
-    0x1C88, 0x00A0,
-    0x1C8A, 0x6610,
-    0x1C8C, 0x6610,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x0010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x0001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x0010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x0001,
-    0x1CF0, 0xFD02,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0003,
-    0x1CF8, 0xF004,
-    0x1CFA, 0x0010,
-    0x1CFC, 0x3110,
-    0x1CFE, 0x0005,
-    0x1D00, 0x00A0,
-    0x1D02, 0x6E10,
-    0x1D04, 0x6E10,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0001,
-    0x1D18, 0xFD02,
-    0x1D1A, 0x0010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0003,
-    0x1D20, 0xF004,
-    0x1D22, 0x0010,
-    0x1D24, 0x3110,
-    0x1D26, 0x0005,
-    0x1D28, 0x00A0,
-    0x1D2A, 0x6610,
-    0x1D2C, 0x6610,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0001,
-    0x1D40, 0xF004,
-    0x1D42, 0x0010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0A00,
-    0x1E18, 0x0A00,
-    0x1E26, 0x0A00,
-    0x1E28, 0x0A00,
-    0x1DF2, 0x1600,
-    0x1DF4, 0x1600,
-    0x1E02, 0x1600,
-    0x1E04, 0x1600,
-    0x1E12, 0x0800,
-    0x1E14, 0x0800,
-    0x1E22, 0x0800,
-    0x1E24, 0x0800,
-    0x1DF6, 0x1100,
-    0x1DF8, 0x1100,
-    0x1E06, 0x1100,
-    0x1E08, 0x1100,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0040,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0101,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/*05_OceanDX4_09_JN5_Fdsum_4K_4096x2304_30fps_3056Msps*/
-static u16 sayramuwide_normal_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x1908,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x5209,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x4A00,
-    0xD4B0, 0x9A01,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x0010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x1010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x7810,
-    0x1C5C, 0x7810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2810,
-    0x1C7C, 0xFE0F,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x6610,
-    0x1C84, 0x6610,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x1010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x0010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x1010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x7810,
-    0x1CFC, 0x7810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2810,
-    0x1D1C, 0xFE0F,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x6610,
-    0x1D24, 0x6610,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x1010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x1300,
-    0x1E18, 0x1300,
-    0x1E26, 0x1300,
-    0x1E28, 0x1300,
-    0x1DF2, 0x0A00,
-    0x1DF4, 0x0A00,
-    0x1E02, 0x0A00,
-    0x1E04, 0x0A00,
-    0x1E12, 0x0F00,
-    0x1E14, 0x0F00,
-    0x1E22, 0x0F00,
-    0x1E24, 0x0F00,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0020,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0030,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0101,
-    0xF6F2, 0x000B,
-    0xF6F4, 0x0014,
-    0xF6F6, 0x0012,
-    0xF6F8, 0x0010,
-    0xF6FA, 0x000B,
-    0xF6FC, 0x0006,
-    0xF6FE, 0x0001,
-    0xF700, 0xFFF6,
-    0xF702, 0xFFEF,
-    0xF704, 0xFFE3,
-    0xF706, 0xFFD9,
-    0xF708, 0xFFCD,
-    0xF70A, 0xFFC3,
-    0xF70C, 0xFFB8,
-    0xF70E, 0xFFA9,
-    0xF710, 0xFF9B,
-    0xF712, 0xFF93,
-    0xF714, 0x0015,
-    0xF716, 0x0022,
-    0xF718, 0x0026,
-    0xF71A, 0x0020,
-    0xF71C, 0x001D,
-    0xF71E, 0x0016,
-    0xF720, 0x0011,
-    0xF722, 0x0009,
-    0xF724, 0xFFFF,
-    0xF726, 0xFFF5,
-    0xF728, 0xFFEB,
-    0xF72A, 0xFFE0,
-    0xF72C, 0xFFD2,
-    0xF72E, 0xFFC3,
-    0xF730, 0xFFB4,
-    0xF732, 0xFFA4,
-    0xF734, 0xFF9A,
-    0xF736, 0x0011,
-    0xF738, 0x0024,
-    0xF73A, 0x0024,
-    0xF73C, 0x0022,
-    0xF73E, 0x001E,
-    0xF740, 0x001B,
-    0xF742, 0x0014,
-    0xF744, 0x000D,
-    0xF746, 0x0004,
-    0xF748, 0xFFFA,
-    0xF74A, 0xFFEF,
-    0xF74C, 0xFFE0,
-    0xF74E, 0xFFD6,
-    0xF750, 0xFFC4,
-    0xF752, 0xFFB4,
-    0xF754, 0xFFA1,
-    0xF756, 0xFF96,
-    0xF758, 0x0016,
-    0xF75A, 0x0021,
-    0xF75C, 0x0026,
-    0xF75E, 0x0025,
-    0xF760, 0x001E,
-    0xF762, 0x001C,
-    0xF764, 0x0019,
-    0xF766, 0x000F,
-    0xF768, 0x0007,
-    0xF76A, 0xFFFD,
-    0xF76C, 0xFFF3,
-    0xF76E, 0xFFE4,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC7,
-    0xF774, 0xFFB5,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF97,
-    0xF77A, 0x0013,
-    0xF77C, 0x0025,
-    0xF77E, 0x0027,
-    0xF780, 0x0028,
-    0xF782, 0x0024,
-    0xF784, 0x0021,
-    0xF786, 0x001D,
-    0xF788, 0x0015,
-    0xF78A, 0x000B,
-    0xF78C, 0x0000,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE9,
-    0xF792, 0xFFDA,
-    0xF794, 0xFFCB,
-    0xF796, 0xFFB5,
-    0xF798, 0xFFA3,
-    0xF79A, 0xFF94,
-    0xF79C, 0x0012,
-    0xF79E, 0x0025,
-    0xF7A0, 0x0026,
-    0xF7A2, 0x0028,
-    0xF7A4, 0x0029,
-    0xF7A6, 0x0028,
-    0xF7A8, 0x0022,
-    0xF7AA, 0x0018,
-    0xF7AC, 0x0010,
-    0xF7AE, 0x0004,
-    0xF7B0, 0xFFFA,
-    0xF7B2, 0xFFE9,
-    0xF7B4, 0xFFDE,
-    0xF7B6, 0xFFCB,
-    0xF7B8, 0xFFB8,
-    0xF7BA, 0xFFA2,
-    0xF7BC, 0xFF93,
-    0xF7BE, 0x0013,
-    0xF7C0, 0x0025,
-    0xF7C2, 0x0029,
-    0xF7C4, 0x002D,
-    0xF7C6, 0x0031,
-    0xF7C8, 0x002E,
-    0xF7CA, 0x0027,
-    0xF7CC, 0x001F,
-    0xF7CE, 0x0012,
-    0xF7D0, 0x000D,
-    0xF7D2, 0xFFFF,
-    0xF7D4, 0xFFF4,
-    0xF7D6, 0xFFDF,
-    0xF7D8, 0xFFCF,
-    0xF7DA, 0xFFB8,
-    0xF7DC, 0xFFA4,
-    0xF7DE, 0xFF96,
-    0xF7E0, 0x0016,
-    0xF7E2, 0x0025,
-    0xF7E4, 0x0028,
-    0xF7E6, 0x002E,
-    0xF7E8, 0x0034,
-    0xF7EA, 0x002F,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001E,
-    0xF7F0, 0x0016,
-    0xF7F2, 0x000C,
-    0xF7F4, 0x0002,
-    0xF7F6, 0xFFF0,
-    0xF7F8, 0xFFE1,
-    0xF7FA, 0xFFCB,
-    0xF7FC, 0xFFB5,
-    0xF7FE, 0xFF9F,
-    0xF800, 0xFF95,
-    0xF802, 0x001A,
-    0xF804, 0x002A,
-    0xF806, 0x002F,
-    0xF808, 0x0035,
-    0xF80A, 0x003F,
-    0xF80C, 0x0037,
-    0xF80E, 0x002F,
-    0xF810, 0x0021,
-    0xF812, 0x001B,
-    0xF814, 0x0015,
-    0xF816, 0x000A,
-    0xF818, 0xFFF9,
-    0xF81A, 0xFFE7,
-    0xF81C, 0xFFCE,
-    0xF81E, 0xFFB7,
-    0xF820, 0xFFA2,
-    0xF822, 0xFF8F,
-    0xF824, 0x0020,
-    0xF826, 0x002E,
-    0xF828, 0x0036,
-    0xF82A, 0x0040,
-    0xF82C, 0x0045,
-    0xF82E, 0x003C,
-    0xF830, 0x0030,
-    0xF832, 0x0027,
-    0xF834, 0x0020,
-    0xF836, 0x0019,
-    0xF838, 0x0012,
-    0xF83A, 0x0002,
-    0xF83C, 0xFFEA,
-    0xF83E, 0xFFD5,
-    0xF840, 0xFFBA,
-    0xF842, 0xFFA1,
-    0xF844, 0xFF93,
-    0xF846, 0x001F,
-    0xF848, 0x0030,
-    0xF84A, 0x0035,
-    0xF84C, 0x003D,
-    0xF84E, 0x0049,
-    0xF850, 0x003D,
-    0xF852, 0x0030,
-    0xF854, 0x0025,
-    0xF856, 0x0020,
-    0xF858, 0x001A,
-    0xF85A, 0x0019,
-    0xF85C, 0x0006,
-    0xF85E, 0xFFED,
-    0xF860, 0xFFD3,
-    0xF862, 0xFFBA,
-    0xF864, 0xFFA0,
-    0xF866, 0xFF96,
-    0xF868, 0x0024,
-    0xF86A, 0x002E,
-    0xF86C, 0x0033,
-    0xF86E, 0x0040,
-    0xF870, 0x004C,
-    0xF872, 0x003D,
-    0xF874, 0x002E,
-    0xF876, 0x0023,
-    0xF878, 0x001D,
-    0xF87A, 0x001C,
-    0xF87C, 0x001B,
-    0xF87E, 0x0012,
-    0xF880, 0xFFF0,
-    0xF882, 0xFFD8,
-    0xF884, 0xFFBC,
-    0xF886, 0xFFA1,
-    0xF888, 0xFF8E,
-    0xF88A, 0x0017,
-    0xF88C, 0x0029,
-    0xF88E, 0x0028,
-    0xF890, 0x0037,
-    0xF892, 0x004A,
-    0xF894, 0x0032,
-    0xF896, 0x0024,
-    0xF898, 0x001A,
-    0xF89A, 0x0016,
-    0xF89C, 0x0013,
-    0xF89E, 0x001B,
-    0xF8A0, 0x0012,
-    0xF8A2, 0xFFF0,
-    0xF8A4, 0xFFD2,
-    0xF8A6, 0xFFB8,
-    0xF8A8, 0xFF9B,
-    0xF8AA, 0xFF90,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 08_OceanDX4_09_JN5_Fdsum_4K_4096x2304_60fps_3056Msps */
-static u16 sayramuwide_hs_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x5209,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1400,
-    0xD4A8, 0x0200,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x0000,
-    0xD4BC, 0x6200,
-    0xD4B0, 0xD602,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0600,
-    0x1E18, 0x0600,
-    0x1E26, 0x0600,
-    0x1E28, 0x0600,
-    0x1DF2, 0x0C00,
-    0x1DF4, 0x0C00,
-    0x1E02, 0x0C00,
-    0x1E04, 0x0C00,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0C00,
-    0x1DF8, 0x0C00,
-    0x1E06, 0x0C00,
-    0x1E08, 0x0C00,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x000B,
-    0xF6F4, 0x0014,
-    0xF6F6, 0x0012,
-    0xF6F8, 0x0010,
-    0xF6FA, 0x000B,
-    0xF6FC, 0x0006,
-    0xF6FE, 0x0001,
-    0xF700, 0xFFF6,
-    0xF702, 0xFFEF,
-    0xF704, 0xFFE3,
-    0xF706, 0xFFD9,
-    0xF708, 0xFFCD,
-    0xF70A, 0xFFC3,
-    0xF70C, 0xFFB8,
-    0xF70E, 0xFFA9,
-    0xF710, 0xFF9B,
-    0xF712, 0xFF93,
-    0xF714, 0x0015,
-    0xF716, 0x0022,
-    0xF718, 0x0026,
-    0xF71A, 0x0020,
-    0xF71C, 0x001D,
-    0xF71E, 0x0016,
-    0xF720, 0x0011,
-    0xF722, 0x0009,
-    0xF724, 0xFFFF,
-    0xF726, 0xFFF5,
-    0xF728, 0xFFEB,
-    0xF72A, 0xFFE0,
-    0xF72C, 0xFFD2,
-    0xF72E, 0xFFC3,
-    0xF730, 0xFFB4,
-    0xF732, 0xFFA4,
-    0xF734, 0xFF9A,
-    0xF736, 0x0011,
-    0xF738, 0x0024,
-    0xF73A, 0x0024,
-    0xF73C, 0x0022,
-    0xF73E, 0x001E,
-    0xF740, 0x001B,
-    0xF742, 0x0014,
-    0xF744, 0x000D,
-    0xF746, 0x0004,
-    0xF748, 0xFFFA,
-    0xF74A, 0xFFEF,
-    0xF74C, 0xFFE0,
-    0xF74E, 0xFFD6,
-    0xF750, 0xFFC4,
-    0xF752, 0xFFB4,
-    0xF754, 0xFFA1,
-    0xF756, 0xFF96,
-    0xF758, 0x0016,
-    0xF75A, 0x0021,
-    0xF75C, 0x0026,
-    0xF75E, 0x0025,
-    0xF760, 0x001E,
-    0xF762, 0x001C,
-    0xF764, 0x0019,
-    0xF766, 0x000F,
-    0xF768, 0x0007,
-    0xF76A, 0xFFFD,
-    0xF76C, 0xFFF3,
-    0xF76E, 0xFFE4,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC7,
-    0xF774, 0xFFB5,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF97,
-    0xF77A, 0x0013,
-    0xF77C, 0x0025,
-    0xF77E, 0x0027,
-    0xF780, 0x0028,
-    0xF782, 0x0024,
-    0xF784, 0x0021,
-    0xF786, 0x001D,
-    0xF788, 0x0015,
-    0xF78A, 0x000B,
-    0xF78C, 0x0000,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE9,
-    0xF792, 0xFFDA,
-    0xF794, 0xFFCB,
-    0xF796, 0xFFB5,
-    0xF798, 0xFFA3,
-    0xF79A, 0xFF94,
-    0xF79C, 0x0012,
-    0xF79E, 0x0025,
-    0xF7A0, 0x0026,
-    0xF7A2, 0x0028,
-    0xF7A4, 0x0029,
-    0xF7A6, 0x0028,
-    0xF7A8, 0x0022,
-    0xF7AA, 0x0018,
-    0xF7AC, 0x0010,
-    0xF7AE, 0x0004,
-    0xF7B0, 0xFFFA,
-    0xF7B2, 0xFFE9,
-    0xF7B4, 0xFFDE,
-    0xF7B6, 0xFFCB,
-    0xF7B8, 0xFFB8,
-    0xF7BA, 0xFFA2,
-    0xF7BC, 0xFF93,
-    0xF7BE, 0x0013,
-    0xF7C0, 0x0025,
-    0xF7C2, 0x0029,
-    0xF7C4, 0x002D,
-    0xF7C6, 0x0031,
-    0xF7C8, 0x002E,
-    0xF7CA, 0x0027,
-    0xF7CC, 0x001F,
-    0xF7CE, 0x0012,
-    0xF7D0, 0x000D,
-    0xF7D2, 0xFFFF,
-    0xF7D4, 0xFFF4,
-    0xF7D6, 0xFFDF,
-    0xF7D8, 0xFFCF,
-    0xF7DA, 0xFFB8,
-    0xF7DC, 0xFFA4,
-    0xF7DE, 0xFF96,
-    0xF7E0, 0x0016,
-    0xF7E2, 0x0025,
-    0xF7E4, 0x0028,
-    0xF7E6, 0x002E,
-    0xF7E8, 0x0034,
-    0xF7EA, 0x002F,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001E,
-    0xF7F0, 0x0016,
-    0xF7F2, 0x000C,
-    0xF7F4, 0x0002,
-    0xF7F6, 0xFFF0,
-    0xF7F8, 0xFFE1,
-    0xF7FA, 0xFFCB,
-    0xF7FC, 0xFFB5,
-    0xF7FE, 0xFF9F,
-    0xF800, 0xFF95,
-    0xF802, 0x001A,
-    0xF804, 0x002A,
-    0xF806, 0x002F,
-    0xF808, 0x0035,
-    0xF80A, 0x003F,
-    0xF80C, 0x0037,
-    0xF80E, 0x002F,
-    0xF810, 0x0021,
-    0xF812, 0x001B,
-    0xF814, 0x0015,
-    0xF816, 0x000A,
-    0xF818, 0xFFF9,
-    0xF81A, 0xFFE7,
-    0xF81C, 0xFFCE,
-    0xF81E, 0xFFB7,
-    0xF820, 0xFFA2,
-    0xF822, 0xFF8F,
-    0xF824, 0x0020,
-    0xF826, 0x002E,
-    0xF828, 0x0036,
-    0xF82A, 0x0040,
-    0xF82C, 0x0045,
-    0xF82E, 0x003C,
-    0xF830, 0x0030,
-    0xF832, 0x0027,
-    0xF834, 0x0020,
-    0xF836, 0x0019,
-    0xF838, 0x0012,
-    0xF83A, 0x0002,
-    0xF83C, 0xFFEA,
-    0xF83E, 0xFFD5,
-    0xF840, 0xFFBA,
-    0xF842, 0xFFA1,
-    0xF844, 0xFF93,
-    0xF846, 0x001F,
-    0xF848, 0x0030,
-    0xF84A, 0x0035,
-    0xF84C, 0x003D,
-    0xF84E, 0x0049,
-    0xF850, 0x003D,
-    0xF852, 0x0030,
-    0xF854, 0x0025,
-    0xF856, 0x0020,
-    0xF858, 0x001A,
-    0xF85A, 0x0019,
-    0xF85C, 0x0006,
-    0xF85E, 0xFFED,
-    0xF860, 0xFFD3,
-    0xF862, 0xFFBA,
-    0xF864, 0xFFA0,
-    0xF866, 0xFF96,
-    0xF868, 0x0024,
-    0xF86A, 0x002E,
-    0xF86C, 0x0033,
-    0xF86E, 0x0040,
-    0xF870, 0x004C,
-    0xF872, 0x003D,
-    0xF874, 0x002E,
-    0xF876, 0x0023,
-    0xF878, 0x001D,
-    0xF87A, 0x001C,
-    0xF87C, 0x001B,
-    0xF87E, 0x0012,
-    0xF880, 0xFFF0,
-    0xF882, 0xFFD8,
-    0xF884, 0xFFBC,
-    0xF886, 0xFFA1,
-    0xF888, 0xFF8E,
-    0xF88A, 0x0017,
-    0xF88C, 0x0029,
-    0xF88E, 0x0028,
-    0xF890, 0x0037,
-    0xF892, 0x004A,
-    0xF894, 0x0032,
-    0xF896, 0x0024,
-    0xF898, 0x001A,
-    0xF89A, 0x0016,
-    0xF89C, 0x0013,
-    0xF89E, 0x001B,
-    0xF8A0, 0x0012,
-    0xF8A2, 0xFFF0,
-    0xF8A4, 0xFFD2,
-    0xF8A6, 0xFFB8,
-    0xF8A8, 0xFF9B,
-    0xF8AA, 0xFF90,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/*12_OceanDX4_13_0_JN5_A2A2_FHD_2048x1152_240.4fps_1992Msps*/
-static u16 sayramuwide_slim_video_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0000,
-    0x7808, 0x0000,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x0800,
-    0x034E, 0x0480,
-    0x0350, 0x0004,
-    0x0352, 0x0004,
-    0x0340, 0x04DE,
-    0x0342, 0x0C00,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00F9,
-    0x0312, 0x0001,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0604,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x3344,
-    0x0380, 0x0002,
-    0x0382, 0x0006,
-    0x0384, 0x0002,
-    0x0386, 0x0006,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0xBA10,
-    0xD20C, 0x0908,
-    0xD314, 0x3003,
-    0xD27A, 0x0B00,
-    0xD3F0, 0x811C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0000,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0000,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0xDF01,
-    0x705A, 0xE001,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x907E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x2C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0000,
-    0x2A44, 0xE002,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5000,
-    0x8CD6, 0xBE00,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x1A00,
-    0xD4E6, 0x0000,
-    0xD4C0, 0x3800,
-    0xD4B4, 0x6D00,
-    0xD4CC, 0x0100,
-    0xD5BC, 0xC400,
-    0xD5BE, 0xC400,
-    0xD5C8, 0x5203,
-    0xD5CA, 0x5203,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x1400,
-    0xA578, 0x8000,
-    0xA58A, 0x2200,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0C00,
-    0x1DF4, 0x0C00,
-    0x1E02, 0x0C00,
-    0x1E04, 0x0C00,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0000,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0010,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC801,
-    0xF3F6, 0xD210,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 04_OceanDX4_05_JN5_Fdsum_12.5Mp_AEB_4096x3072_60fps_3056Msps */
-static u16 sayramuwide_custom1_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x5804,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x0010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x5110,
-    0x1C34, 0x3510,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x7210,
-    0x1C5C, 0x7210,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x0010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x6610,
-    0x1C84, 0x6610,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x5110,
-    0x1CAC, 0x3510,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x0010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x5110,
-    0x1CD4, 0x3510,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x7210,
-    0x1CFC, 0x7210,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x0010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x6610,
-    0x1D24, 0x6610,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x5110,
-    0x1D4C, 0x3510,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0xFDFF,
-    0x1D98, 0xFDFF,
-    0x1DA6, 0xFDFF,
-    0x1DA8, 0xFDFF,
-    0x1D72, 0xFDFF,
-    0x1D74, 0xFDFF,
-    0x1D82, 0xFDFF,
-    0x1D84, 0xFDFF,
-    0x1D92, 0xFDFF,
-    0x1D94, 0xFDFF,
-    0x1DA2, 0xFDFF,
-    0x1DA4, 0xFDFF,
-    0x1D76, 0xFDFF,
-    0x1D78, 0xFDFF,
-    0x1D86, 0xFDFF,
-    0x1D88, 0xFDFF,
-    0x1E16, 0x0A00,
-    0x1E18, 0x0A00,
-    0x1E26, 0x0A00,
-    0x1E28, 0x0A00,
-    0x1DF2, 0x1600,
-    0x1DF4, 0x1600,
-    0x1E02, 0x1600,
-    0x1E04, 0x1600,
-    0x1E12, 0x0700,
-    0x1E14, 0x0700,
-    0x1E22, 0x0700,
-    0x1E24, 0x0700,
-    0x1DF6, 0x1100,
-    0x1DF8, 0x1100,
-    0x1E06, 0x1100,
-    0x1E08, 0x1100,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0203,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 8192x6144 Fullsize bayer mode 6*/
-static u16 sayramuwide_custom2_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x2000,
-    0x034E, 0x1800,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x18CA,
-    0x0342, 0x2580,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0200,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0101,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0xCD04,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x0300,
-    0xD4D0, 0x1100,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x2800,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x7E03,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xE600,
-    0xD4F8, 0xF001,
-    0xD4FA, 0x1802,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0300,
-    0x1D74, 0x0300,
-    0x1D82, 0x0300,
-    0x1D84, 0x0300,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0600,
-    0x1E18, 0x0600,
-    0x1E26, 0x0600,
-    0x1E28, 0x0600,
-    0x1DF2, 0x0300,
-    0x1DF4, 0x0300,
-    0x1E02, 0x0300,
-    0x1E04, 0x0300,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 8192x6144 Fullsize QBC mode 7*/
-static u16 sayramuwide_custom3_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x2000,
-    0x034E, 0x1800,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x18CA,
-    0x0342, 0x2580,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0x0004,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0100,
-    0x25E2, 0xCD00,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x1603,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 09_OceanDX4_13_1_JN5_A2A2_1632x1224_24fps_1672Msps */
-static u16 sayramuwide_custom4_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0340,
-    0x0348, 0x1CDF,
-    0x0346, 0x0270,
-    0x034A, 0x15AF,
-    0x034C, 0x0660,
-    0x034E, 0x04C8,
-    0x0350, 0x0004,
-    0x0352, 0x0004,
-    0x0340, 0x10E8,
-    0x0342, 0x2290,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00D1,
-    0x0312, 0x0001,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x3344,
-    0x0380, 0x0002,
-    0x0382, 0x0006,
-    0x0384, 0x0002,
-    0x0386, 0x0006,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0910,
-    0xD314, 0x2002,
-    0xD27A, 0x0700,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x3F01,
-    0x705A, 0x4001,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x00D0,
-    0x7280, 0x12D2,
-    0x7282, 0x0040,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x907E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x2C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x7901,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0600,
-    0xD4A8, 0x0700,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x0000,
-    0xD4BC, 0x4000,
-    0xD4B0, 0x7901,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xC400,
-    0xD560, 0x5203,
-    0xD562, 0x5203,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0x0804,
-    0xF3F6, 0xD210,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 10_OceanDX4_13_1_JN5_A2A2_1856x1392_24fps_1672Msps */
-static u16 sayramuwide_custom5_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x08C0,
-    0x0348, 0x175F,
-    0x0346, 0x0690,
-    0x034A, 0x118F,
-    0x034C, 0x0740,
-    0x034E, 0x0570,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x10E0,
-    0x0342, 0x228C,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00D1,
-    0x0312, 0x0001,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x0000,
-    0xD4BC, 0x3700,
-    0xD4B0, 0x8603,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xC400,
-    0xD560, 0x5203,
-    0xD562, 0x5203,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0x8809,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 06_OceanDX4_10_0_JN5_Fdsum_DSG_4096x2304_30fps_3056Msps */
-static u16 sayramuwide_custom6_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x3608,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x2560,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0C,
-    0x0270, 0x2B2B,
-    0x0272, 0x2C10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x2000,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0600,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x00FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0101,
-    0x1966, 0x0200,
-    0xFCFC, 0x4000,
-    0x0086, 0x0280,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x1000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x9F00,
-    0x705A, 0xA000,
-    0x7274, 0x00B0,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0078,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x0B04,
-    0xD4B0, 0x7E03,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x3D10,
-    0x1C34, 0x3D10,
-    0x1C4E, 0x8001,
-    0x1C50, 0xF004,
-    0x1C52, 0x3D10,
-    0x1C54, 0x5110,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0xCC10,
-    0x1C5C, 0x2010,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0xF004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x5110,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0xA310,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x3D10,
-    0x1CAC, 0x3D10,
-    0x1CC6, 0x8001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x3D10,
-    0x1CD4, 0x3D10,
-    0x1CEE, 0x8001,
-    0x1CF0, 0xF004,
-    0x1CF2, 0x3D10,
-    0x1CF4, 0x5110,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0xCC10,
-    0x1CFC, 0x2010,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0xF004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x5110,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0xA310,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0xF004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x3D10,
-    0x1D4C, 0x3D10,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0xF4FF,
-    0x1D98, 0xF4FF,
-    0x1DA6, 0xF4FF,
-    0x1DA8, 0xF4FF,
-    0x1D72, 0xF4FF,
-    0x1D74, 0xF4FF,
-    0x1D82, 0xF4FF,
-    0x1D84, 0xF4FF,
-    0x1D92, 0xF4FF,
-    0x1D94, 0xF4FF,
-    0x1DA2, 0xF4FF,
-    0x1DA4, 0xF4FF,
-    0x1D76, 0xE2FF,
-    0x1D78, 0xE2FF,
-    0x1D86, 0xE2FF,
-    0x1D88, 0xE2FF,
-    0x1E16, 0xEBFF,
-    0x1E18, 0xEBFF,
-    0x1E26, 0xEBFF,
-    0x1E28, 0xEBFF,
-    0x1DF2, 0xE9FF,
-    0x1DF4, 0xE9FF,
-    0x1E02, 0xE9FF,
-    0x1E04, 0xE9FF,
-    0x1E12, 0xE9FF,
-    0x1E14, 0xE9FF,
-    0x1E22, 0xE9FF,
-    0x1E24, 0xE9FF,
-    0x1DF6, 0xEEFF,
-    0x1DF8, 0xEEFF,
-    0x1E06, 0xEEFF,
-    0x1E08, 0xEEFF,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0D00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x80E3,
-    0xB268, 0x80E3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0x36D2,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0D00,
-    0xDB3E, 0x36D2,
-    0xDADE, 0xA000,
-    0xDB0E, 0x0F00,
-    0xDB40, 0x36D2,
-    0xDAE0, 0x4001,
-    0xDB10, 0x0D00,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 07_OceanDX4_10_0_JN5_Fdsum_DSG_split_4096x2304_30fps_3056Msps */
-static u16 sayramuwide_custom7_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0101,
-    0x7808, 0x3F0C,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0300,
-    0x034A, 0x151F,
-    0x034C, 0x1000,
-    0x034E, 0x0900,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x2560,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0406,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x2000,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0600,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0100,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0101,
-    0x1966, 0x0200,
-    0xFCFC, 0x4000,
-    0x0086, 0x0280,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x1000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x9F00,
-    0x705A, 0xA000,
-    0x7274, 0x00B0,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0078,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0100,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3600,
-    0xD4BC, 0x0B04,
-    0xD4B0, 0x7E03,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xFA00,
-    0xD560, 0x5203,
-    0xD562, 0x8803,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x5610,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0xB610,
-    0x1C34, 0x7011,
-    0x1C4E, 0x8001,
-    0x1C50, 0xF004,
-    0x1C52, 0x2810,
-    0x1C54, 0x5110,
-    0x1C56, 0x0005,
-    0x1C58, 0xF009,
-    0x1C5A, 0x9710,
-    0x1C5C, 0xDA10,
-    0x1C5E, 0x000A,
-    0x1C60, 0x00A0,
-    0x1C62, 0xDA10,
-    0x1C64, 0x7011,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0xF004,
-    0x1C7A, 0x2810,
-    0x1C7C, 0x6610,
-    0x1C7E, 0x0005,
-    0x1C80, 0xF009,
-    0x1C82, 0x7210,
-    0x1C84, 0xDD10,
-    0x1C86, 0x000A,
-    0x1C88, 0x00A0,
-    0x1C8A, 0xDD10,
-    0x1C8C, 0x7011,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x5610,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0xC410,
-    0x1CAC, 0x7011,
-    0x1CC6, 0x8001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x5610,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0xB610,
-    0x1CD4, 0x7011,
-    0x1CEE, 0x8001,
-    0x1CF0, 0xF004,
-    0x1CF2, 0x2810,
-    0x1CF4, 0x5110,
-    0x1CF6, 0x0005,
-    0x1CF8, 0xF009,
-    0x1CFA, 0x9710,
-    0x1CFC, 0xDA10,
-    0x1CFE, 0x000A,
-    0x1D00, 0x00A0,
-    0x1D02, 0xDA10,
-    0x1D04, 0x7011,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0xF004,
-    0x1D1A, 0x2810,
-    0x1D1C, 0x6610,
-    0x1D1E, 0x0005,
-    0x1D20, 0xF009,
-    0x1D22, 0x7210,
-    0x1D24, 0xDD10,
-    0x1D26, 0x000A,
-    0x1D28, 0x00A0,
-    0x1D2A, 0xDD10,
-    0x1D2C, 0x7011,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0xF004,
-    0x1D42, 0x2010,
-    0x1D44, 0x5610,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0xC410,
-    0x1D4C, 0x7011,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0600,
-    0x1D98, 0x0600,
-    0x1DA6, 0x0600,
-    0x1DA8, 0x0600,
-    0x1D72, 0x0600,
-    0x1D74, 0x0600,
-    0x1D82, 0x0600,
-    0x1D84, 0x0600,
-    0x1D92, 0x0600,
-    0x1D94, 0x0600,
-    0x1DA2, 0x0600,
-    0x1DA4, 0x0600,
-    0x1D76, 0x0600,
-    0x1D78, 0x0600,
-    0x1D86, 0x0600,
-    0x1D88, 0x0600,
-    0x1E16, 0xFAFF,
-    0x1E18, 0xFAFF,
-    0x1E26, 0xFAFF,
-    0x1E28, 0xFAFF,
-    0x1DF2, 0xFAFF,
-    0x1DF4, 0xFAFF,
-    0x1E02, 0xFAFF,
-    0x1E04, 0xFAFF,
-    0x1E12, 0x0600,
-    0x1E14, 0x0600,
-    0x1E22, 0x0600,
-    0x1E24, 0x0600,
-    0x1DF6, 0x0600,
-    0x1DF8, 0x0600,
-    0x1E06, 0x0600,
-    0x1E08, 0x0600,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0D00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x80E3,
-    0xB268, 0x80E3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0x36D2,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0D00,
-    0xDB3E, 0x36D2,
-    0xDADE, 0xA000,
-    0xDB0E, 0x0F00,
-    0xDB40, 0x36D2,
-    0xDAE0, 0x4001,
-    0xDB10, 0x0D00,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-    /* Set VOD for hardware white box test*/
-    0x8E48, 0x4444,
-};
-
-/* 11_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_60fps_3056Msps 4096x3072 60fps binning */
-static u16 sayramuwide_custom8_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x12B0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0101,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x1400,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x2000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x1F02,
-    0x705A, 0x2002,
-    0x7274, 0x0B00,
-    0x7276, 0x0B00,
-    0x7278, 0x36D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0100,
-    0x704A, 0x000A,
-    0x705C, 0x010A,
-    0x7314, 0x2E00,
-    0x7316, 0x3000,
-    0x7318, 0x9EFD,
-    0x731A, 0x0040,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x4C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x3200,
-    0xD4BC, 0x3A00,
-    0xD4B0, 0x4600,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xF600,
-    0xD560, 0x5203,
-    0xD562, 0x8403,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0x8004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2010,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0x8004,
-    0x1C52, 0x0010,
-    0x1C54, 0x0010,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0x8004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2010,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0x8004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2010,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0x8004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2010,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0x8004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x0010,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0x8004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2010,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0x8004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2010,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x0114,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0B00,
-    0x4398, 0x0B00,
-    0x437E, 0xE400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0100,
-    0xFCFC, 0x2000,
-    0xD684, 0x80F3,
-    0xB268, 0x80F3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0xD2FD,
-    0xDADC, 0x0000,
-    0xDB0C, 0x1F1F,
-    0xDB3E, 0x12D2,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0080,
-    0xDB40, 0x12D2,
-    0xDAE0, 0xA000,
-    0xDB10, 0x0040,
-    0xDB42, 0x12D2,
-    0xDAE2, 0x0001,
-    0xDB12, 0x0020,
-    0xDB44, 0x12D2,
-    0xDAE4, 0x0005,
-    0xDB14, 0x0040,
-    0xDB46, 0x12D2,
-    0xDAE6, 0x4011,
-    0xDB16, 0x0060,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0700,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-
-/* 13_OceanDX4_06_0_JN5_Fdsum_DSG_4096x3072_30fps_3056Msps 4096x3072 30fps, DAG sensor merge 12bit */
-static u16 sayramuwide_custom9_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x3608,
-    0xFCFC, 0x4000,
-    0x0344, 0x0000,
-    0x0348, 0x201F,
-    0x0346, 0x0000,
-    0x034A, 0x181F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0008,
-    0x0352, 0x0008,
-    0x0340, 0x0C84,
-    0x0342, 0x2560,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0602,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x2222,
-    0x0380, 0x0002,
-    0x0382, 0x0002,
-    0x0384, 0x0002,
-    0x0386, 0x0002,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0C,
-    0x0270, 0x2B2B,
-    0x0272, 0x2C10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0102,
-    0x0720, 0x0001,
-    0x0722, 0x2000,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0200,
-    0xFCFC, 0x4000,
-    0x021E, 0x0600,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0103,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x00FF,
-    0x4270, 0x0000,
-    0x29BA, 0x2000,
-    0x29A8, 0x0100,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0000,
-    0xC53C, 0x0500,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x0010,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0000,
-    0x31FA, 0x0000,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0000,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0110,
-    0xD3EC, 0xB01C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0101,
-    0x1966, 0x0200,
-    0xFCFC, 0x4000,
-    0x0086, 0x0280,
-    0xFCFC, 0x2000,
-    0xE980, 0x9E04,
-    0xC4D8, 0x1000,
-    0x795A, 0x2000,
-    0x7970, 0x2000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0101,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x9F00,
-    0x705A, 0xA000,
-    0x7274, 0x00B0,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0400,
-    0x2A42, 0x0100,
-    0x2A44, 0x3907,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0078,
-    0x7A0E, 0x0F00,
-    0x7A6E, 0x1900,
-    0x7A86, 0x1900,
-    0x8C9E, 0x3500,
-    0x8CCE, 0x9600,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0103,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x5000,
-    0x8CD2, 0xBE00,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2200,
-    0xD4D0, 0x0A00,
-    0xD4A8, 0x0000,
-    0xD4D6, 0x1A00,
-    0xD4E2, 0x4700,
-    0xD4BC, 0x3700,
-    0xD4B0, 0x1E01,
-    0xD4C8, 0x0100,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0xC400,
-    0xD556, 0xC400,
-    0xD560, 0x5203,
-    0xD562, 0x5203,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x0000,
-    0xD4DE, 0x0100,
-    0xD4B8, 0x1400,
-    0xD4AC, 0x0100,
-    0xD4C4, 0x0000,
-    0xD4EC, 0x0000,
-    0xD4EE, 0x0000,
-    0xD4F8, 0x0000,
-    0xD4FA, 0x0000,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x8001,
-    0x1C28, 0xF004,
-    0x1C2A, 0x2010,
-    0x1C2C, 0x2810,
-    0x1C2E, 0x0005,
-    0x1C30, 0x00A0,
-    0x1C32, 0x2810,
-    0x1C34, 0x2810,
-    0x1C4E, 0x8001,
-    0x1C50, 0xF004,
-    0x1C52, 0x0010,
-    0x1C54, 0x2810,
-    0x1C56, 0x0005,
-    0x1C58, 0x00A0,
-    0x1C5A, 0x2810,
-    0x1C5C, 0x2810,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x8001,
-    0x1C78, 0xF004,
-    0x1C7A, 0x2010,
-    0x1C7C, 0x2810,
-    0x1C7E, 0x0005,
-    0x1C80, 0x00A0,
-    0x1C82, 0x2810,
-    0x1C84, 0x2810,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x8001,
-    0x1CA0, 0xF004,
-    0x1CA2, 0x2010,
-    0x1CA4, 0x2810,
-    0x1CA6, 0x0005,
-    0x1CA8, 0x00A0,
-    0x1CAA, 0x2810,
-    0x1CAC, 0x2810,
-    0x1CC6, 0x8001,
-    0x1CC8, 0xF004,
-    0x1CCA, 0x2010,
-    0x1CCC, 0x2810,
-    0x1CCE, 0x0005,
-    0x1CD0, 0x00A0,
-    0x1CD2, 0x2810,
-    0x1CD4, 0x2810,
-    0x1CEE, 0x8001,
-    0x1CF0, 0xF004,
-    0x1CF2, 0x0010,
-    0x1CF4, 0x2810,
-    0x1CF6, 0x0005,
-    0x1CF8, 0x00A0,
-    0x1CFA, 0x2810,
-    0x1CFC, 0x2810,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x8001,
-    0x1D18, 0xF004,
-    0x1D1A, 0x2010,
-    0x1D1C, 0x2810,
-    0x1D1E, 0x0005,
-    0x1D20, 0x00A0,
-    0x1D22, 0x2810,
-    0x1D24, 0x2810,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x8001,
-    0x1D40, 0xF004,
-    0x1D42, 0x2010,
-    0x1D44, 0x2810,
-    0x1D46, 0x0005,
-    0x1D48, 0x00A0,
-    0x1D4A, 0x2810,
-    0x1D4C, 0x2810,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0E00,
-    0xA578, 0x8000,
-    0xA58A, 0x2000,
-    0xA57A, 0xA000,
-    0xA58C, 0x2800,
-    0xA57C, 0x4001,
-    0xA58E, 0x1400,
-    0xA57E, 0x8002,
-    0xA590, 0x2200,
-    0xA580, 0x0005,
-    0xA592, 0x2800,
-    0xA582, 0x000A,
-    0xA594, 0x2C00,
-    0xA584, 0xA00F,
-    0xA596, 0x2E00,
-    0xA586, 0x4011,
-    0xA598, 0x3200,
-    0xA59A, 0x3500,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3300,
-    0x82A2, 0x1400,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0D00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x80E3,
-    0xB268, 0x80E3,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0001,
-    0xDB3C, 0x36D2,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0D00,
-    0xDB3E, 0x36D2,
-    0xDADE, 0xA000,
-    0xDB0E, 0x0F00,
-    0xDB40, 0x36D2,
-    0xDAE0, 0x4001,
-    0xDB10, 0x0D00,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC800,
-    0xF3F6, 0xD610,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F0B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_4096x3072_30fps_3056Msps izoom */
-static u16 sayramuwide_custom10_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0800,
-    0x0348, 0x181F,
-    0x0346, 0x0600,
-    0x034A, 0x121F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x0D04,
-    0x0342, 0x23F0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0200,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0101,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0xCD04,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0000,
-    0x25E2, 0x0000,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x3B00,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC808,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_Bypass_4096x3072_30fps_3056Msps QBC*/
-static u16 sayramuwide_custom11_setting[] = {
-    0xFCFC, 0x4000,
-    0x0B30, 0x01FF,
-    0x6170, 0xFFFF,
-    0x6180, 0x0000,
-    0x6190, 0x0000,
-    0x6200, 0xFFFF,
-    0x6202, 0xFFFF,
-    0x6204, 0x0000,
-    0x6206, 0x0000,
-    0x6208, 0x0000,
-    0xA100, 0xFFFF,
-    0xA102, 0x0000,
-    0xA104, 0x0000,
-    0xFCFC, 0x4001,
-    0x0100, 0xFFFF,
-    0x0102, 0xFFFF,
-    0x0104, 0x0000,
-    0x0106, 0x0000,
-    0x0108, 0x0000,
-    0xFCFC, 0x4000,
-    0x8100, 0xFFFF,
-    0x8104, 0x0000,
-    0x8108, 0x0000,
-    0xFCFC, 0x2000,
-    0x7806, 0x0001,
-    0x7808, 0x2408,
-    0xFCFC, 0x4000,
-    0x0344, 0x0800,
-    0x0348, 0x181F,
-    0x0346, 0x0600,
-    0x034A, 0x121F,
-    0x034C, 0x1000,
-    0x034E, 0x0C00,
-    0x0350, 0x0010,
-    0x0352, 0x0010,
-    0x0340, 0x0D04,
-    0x0342, 0x23F0,
-    0x0136, 0x1800,
-    0x013E, 0x0000,
-    0x0304, 0x0003,
-    0x0306, 0x00E6,
-    0x030C, 0x0000,
-    0x030E, 0x0003,
-    0x0310, 0x00BF,
-    0x0312, 0x0000,
-    0x031A, 0x0003,
-    0x031C, 0x0028,
-    0x031E, 0x0002,
-    0x0202, 0x0014,
-    0x0226, 0x0014,
-    0x022C, 0x0014,
-    0x0702, 0x0000,
-    0x0704, 0x0000,
-    0x0114, 0x0301,
-    0x0118, 0x0004,
-    0x011A, 0x0001,
-    0x011C, 0x0100,
-    0xFCFC, 0x2000,
-    0xB176, 0x0600,
-    0xB178, 0x0000,
-    0x7996, 0x0100,
-    0x7994, 0x2020,
-    0xFCFC, 0x4000,
-    0x0900, 0x0011,
-    0x0380, 0x0001,
-    0x0382, 0x0001,
-    0x0384, 0x0001,
-    0x0386, 0x0001,
-    0x040C, 0x0000,
-    0x0400, 0x1010,
-    0x0408, 0x0100,
-    0x040A, 0x0100,
-    0xFCFC, 0x2000,
-    0xD1F6, 0x3A00,
-    0xD20C, 0x0908,
-    0xD314, 0x2002,
-    0xD27A, 0x0500,
-    0xD3F0, 0xB01C,
-    0xD410, 0x4802,
-    0xD426, 0xD204,
-    0xD43C, 0x0140,
-    0xD412, 0xD204,
-    0xD428, 0xEA0A,
-    0xD43E, 0x0140,
-    0xFCFC, 0x4000,
-    0x0260, 0x0001,
-    0x0262, 0x0000,
-    0x0264, 0x0006,
-    0x0266, 0x0700,
-    0x0112, 0x0A0A,
-    0x0270, 0x2B2B,
-    0x0272, 0x2B10,
-    0x0274, 0x302B,
-    0xFCFC, 0x2001,
-    0x44C6, 0x0000,
-    0xFCFC, 0x4000,
-    0x0B02, 0x0101,
-    0x0720, 0x0001,
-    0x0722, 0x0800,
-    0x0724, 0x0000,
-    0x0728, 0x0000,
-    0x072A, 0x0000,
-    0x072C, 0x0000,
-    0x072E, 0x0000,
-    0xFCFC, 0x2001,
-    0x3132, 0x0100,
-    0xFCFC, 0x4000,
-    0x021E, 0x0000,
-    0x0228, 0x0100,
-    0xFCFC, 0x2001,
-    0x31D0, 0x0000,
-    0x5A70, 0x0000,
-    0xFCFC, 0x2000,
-    0xDC94, 0x0100,
-    0xEF80, 0x0000,
-    0x23F0, 0x0001,
-    0xF3E4, 0x0300,
-    0xF288, 0x0000,
-    0xFCFC, 0x2001,
-    0x2A30, 0x01FF,
-    0x4270, 0x0000,
-    0x29BA, 0xFF00,
-    0x29A8, 0x0200,
-    0xFCFC, 0x4000,
-    0x0B04, 0x0001,
-    0x0B06, 0x0101,
-    0x0B08, 0x0100,
-    0x0B0A, 0x0101,
-    0x0B0C, 0x0100,
-    0xFCFC, 0x2000,
-    0xC4E0, 0x0100,
-    0xC4F6, 0x0000,
-    0xC4E2, 0x0200,
-    0xC53C, 0x0100,
-    0xC544, 0x0005,
-    0xC53E, 0x0000,
-    0xB23C, 0x6060,
-    0xB242, 0x6060,
-    0xC554, 0x530D,
-    0xC556, 0x0000,
-    0xFCFC, 0x2001,
-    0x2920, 0x0100,
-    0x31F8, 0x0100,
-    0x31FA, 0x0004,
-    0xFCFC, 0x2000,
-    0xD856, 0x0507,
-    0xD6D4, 0x0000,
-    0x799A, 0x0000,
-    0xD8A2, 0x0100,
-    0xFCFC, 0x4000,
-    0x020A, 0x0000,
-    0xFCFC, 0x2000,
-    0x78C0, 0x0101,
-    0x22C2, 0x0600,
-    0x22C4, 0xFF1F,
-    0x22EC, 0x1F00,
-    0x2306, 0xFF3F,
-    0x2314, 0xFF00,
-    0x2354, 0x0300,
-    0xFCFC, 0x4000,
-    0x0936, 0x0000,
-    0x0C40, 0x0000,
-    0xFCFC, 0x2000,
-    0x68DE, 0x0000,
-    0xFCFC, 0x2001,
-    0x2540, 0x0200,
-    0x25E0, 0x0100,
-    0x25E2, 0xCD00,
-    0xFCFC, 0x2000,
-    0xD718, 0x0002,
-    0xBF30, 0x0000,
-    0xFCFC, 0x2001,
-    0x3C42, 0x0000,
-    0x3C46, 0xEB05,
-    0x3C52, 0x4006,
-    0xFCFC, 0x2000,
-    0xD326, 0x0120,
-    0xD3EC, 0xB11C,
-    0xFCFC, 0x2001,
-    0x195E, 0x0100,
-    0x1966, 0x0000,
-    0xFCFC, 0x4000,
-    0x0086, 0x0200,
-    0xFCFC, 0x2000,
-    0xE980, 0x0005,
-    0xC4D8, 0x2000,
-    0x795A, 0x1000,
-    0x7970, 0x1000,
-    0xFCFC, 0x2002,
-    0x849E, 0x0000,
-    0x84A0, 0x0000,
-    0x84A2, 0x0005,
-    0xFCFC, 0x2001,
-    0x2BB2, 0x1000,
-    0x2D32, 0x0010,
-    0xFCFC, 0x2000,
-    0x703C, 0x0001,
-    0x7046, 0x7F02,
-    0x7058, 0x8002,
-    0x71D4, 0x3F00,
-    0x71D6, 0x3D00,
-    0x71D8, 0x84F3,
-    0x71DA, 0x0040,
-    0x7048, 0x5F00,
-    0x705A, 0x6000,
-    0x7274, 0x0080,
-    0x7276, 0x0000,
-    0x7278, 0x12D2,
-    0x727A, 0x0040,
-    0x727C, 0x0000,
-    0x727E, 0x0000,
-    0x7280, 0x0000,
-    0x7282, 0x0000,
-    0x703E, 0x0000,
-    0x704A, 0x0004,
-    0x705C, 0x0004,
-    0x7314, 0x0000,
-    0x7316, 0x0000,
-    0x7318, 0x0000,
-    0x731A, 0x0000,
-    0xBEDC, 0xC526,
-    0xBEDE, 0x903E,
-    0xBEE0, 0xC00F,
-    0xBEE2, 0x0008,
-    0xBEE4, 0x0C00,
-    0xBEE6, 0x8000,
-    0xFCFC, 0x2001,
-    0x2A54, 0x0000,
-    0x2A56, 0x0800,
-    0x2A42, 0x0100,
-    0x2A44, 0xB004,
-    0x2A46, 0x0000,
-    0xFCFC, 0x2000,
-    0xD704, 0x0278,
-    0x7A0E, 0x1E00,
-    0x7A6E, 0x2800,
-    0x7A86, 0x2800,
-    0x8C9E, 0x5000,
-    0x8CCE, 0x2C01,
-    0x7A10, 0x0F00,
-    0x7A70, 0x1900,
-    0x7A88, 0x1900,
-    0x8CA0, 0x3500,
-    0x8CD0, 0x9600,
-    0xB224, 0x0103,
-    0xB226, 0x0000,
-    0xB220, 0x0000,
-    0x7A12, 0x0F00,
-    0x7A72, 0x1900,
-    0x7A8A, 0x1900,
-    0x8CA2, 0x3500,
-    0x8CD2, 0x9600,
-    0x7EE6, 0x2C00,
-    0x7EF2, 0x2C00,
-    0x7EFE, 0x6400,
-    0x7F0A, 0x5800,
-    0x8D0E, 0x0000,
-    0x9032, 0x0000,
-    0x903E, 0x0000,
-    0x7A14, 0x0F00,
-    0x7A74, 0x1900,
-    0x7A8C, 0x1900,
-    0x8CA4, 0x3500,
-    0x7F0E, 0x5800,
-    0x8CD6, 0x9600,
-    0x7BDA, 0x3C00,
-    0xD49C, 0x2100,
-    0xD4D0, 0x1600,
-    0xD4A8, 0x0300,
-    0xD4D6, 0x0000,
-    0xD4E2, 0x0100,
-    0xD4BC, 0x1400,
-    0xD4B0, 0x0100,
-    0xD4C8, 0x0000,
-    0xD624, 0x0000,
-    0xD62E, 0x0000,
-    0xD638, 0x0000,
-    0xD4EA, 0x0100,
-    0xD554, 0x0000,
-    0xD556, 0x0000,
-    0xD560, 0x0000,
-    0xD562, 0x0000,
-    0xD4DA, 0x0000,
-    0xD4E6, 0x0100,
-    0xD4C0, 0x1400,
-    0xD4B4, 0x0100,
-    0xD4CC, 0x0000,
-    0xD5BC, 0x0000,
-    0xD5BE, 0x0000,
-    0xD5C8, 0x0000,
-    0xD5CA, 0x0000,
-    0xD4D2, 0x2000,
-    0xD4DE, 0x0000,
-    0xD4B8, 0x3500,
-    0xD4AC, 0x3B00,
-    0xD4C4, 0x0100,
-    0xD4EC, 0xBE00,
-    0xD4EE, 0xBE00,
-    0xD4F8, 0xF001,
-    0xD4FA, 0xF001,
-    0xBF78, 0x5333,
-    0xD896, 0x0000,
-    0xFCFC, 0x2001,
-    0x1C24, 0x0002,
-    0x1C26, 0x0001,
-    0x1C28, 0xFF03,
-    0x1C2A, 0x0010,
-    0x1C2C, 0xD70F,
-    0x1C2E, 0x0004,
-    0x1C30, 0x0010,
-    0x1C32, 0xD70F,
-    0x1C34, 0xC20F,
-    0x1C4E, 0x0001,
-    0x1C50, 0xFF03,
-    0x1C52, 0x0010,
-    0x1C54, 0xD70F,
-    0x1C56, 0x0004,
-    0x1C58, 0x0010,
-    0x1C5A, 0xD70F,
-    0x1C5C, 0xC20F,
-    0x1C5E, 0x0000,
-    0x1C60, 0x0000,
-    0x1C62, 0x0000,
-    0x1C64, 0x0000,
-    0x1C66, 0x0000,
-    0x1C68, 0x0000,
-    0x1C6A, 0x0000,
-    0x1C6C, 0x0000,
-    0x1C76, 0x0001,
-    0x1C78, 0xFF03,
-    0x1C7A, 0x0010,
-    0x1C7C, 0xD70F,
-    0x1C7E, 0x0004,
-    0x1C80, 0x0010,
-    0x1C82, 0xD70F,
-    0x1C84, 0xC20F,
-    0x1C86, 0x0000,
-    0x1C88, 0x0000,
-    0x1C8A, 0x0000,
-    0x1C8C, 0x0000,
-    0x1C8E, 0x0000,
-    0x1C90, 0x0000,
-    0x1C92, 0x0000,
-    0x1C94, 0x0000,
-    0x1C9E, 0x0001,
-    0x1CA0, 0xFF03,
-    0x1CA2, 0x0010,
-    0x1CA4, 0xD70F,
-    0x1CA6, 0x0004,
-    0x1CA8, 0x0010,
-    0x1CAA, 0xD70F,
-    0x1CAC, 0xC20F,
-    0x1CC6, 0x0000,
-    0x1CC8, 0x0000,
-    0x1CCA, 0x0000,
-    0x1CCC, 0x0000,
-    0x1CCE, 0x0000,
-    0x1CD0, 0x0000,
-    0x1CD2, 0x0000,
-    0x1CD4, 0x0000,
-    0x1CEE, 0x0000,
-    0x1CF0, 0x0000,
-    0x1CF2, 0x0000,
-    0x1CF4, 0x0000,
-    0x1CF6, 0x0000,
-    0x1CF8, 0x0000,
-    0x1CFA, 0x0000,
-    0x1CFC, 0x0000,
-    0x1CFE, 0x0000,
-    0x1D00, 0x0000,
-    0x1D02, 0x0000,
-    0x1D04, 0x0000,
-    0x1D06, 0x0000,
-    0x1D08, 0x0000,
-    0x1D0A, 0x0000,
-    0x1D0C, 0x0000,
-    0x1D16, 0x0000,
-    0x1D18, 0x0000,
-    0x1D1A, 0x0000,
-    0x1D1C, 0x0000,
-    0x1D1E, 0x0000,
-    0x1D20, 0x0000,
-    0x1D22, 0x0000,
-    0x1D24, 0x0000,
-    0x1D26, 0x0000,
-    0x1D28, 0x0000,
-    0x1D2A, 0x0000,
-    0x1D2C, 0x0000,
-    0x1D2E, 0x0000,
-    0x1D30, 0x0000,
-    0x1D32, 0x0000,
-    0x1D34, 0x0000,
-    0x1D3E, 0x0000,
-    0x1D40, 0x0000,
-    0x1D42, 0x0000,
-    0x1D44, 0x0000,
-    0x1D46, 0x0000,
-    0x1D48, 0x0000,
-    0x1D4A, 0x0000,
-    0x1D4C, 0x0000,
-    0xFCFC, 0x2000,
-    0xB21E, 0x0000,
-    0xB222, 0xC000,
-    0xB20C, 0x2E00,
-    0xB21A, 0x0402,
-    0xB378, 0x0100,
-    0xDD70, 0x0000,
-    0xDE38, 0x0000,
-    0xFCFC, 0x2002,
-    0xA574, 0x0100,
-    0xA59C, 0xA2FD,
-    0xA59E, 0xFEFE,
-    0xA576, 0x4000,
-    0xA588, 0x0800,
-    0xA578, 0x8000,
-    0xA58A, 0x2100,
-    0xA57A, 0x0001,
-    0xA58C, 0x2900,
-    0xA57C, 0x0002,
-    0xA58E, 0x2E00,
-    0xA57E, 0x0002,
-    0xA590, 0x2E00,
-    0xA580, 0x0002,
-    0xA592, 0x2E00,
-    0xA582, 0x0002,
-    0xA594, 0x2E00,
-    0xA584, 0x0002,
-    0xA596, 0x2E00,
-    0xA586, 0x0002,
-    0xA598, 0x2E00,
-    0xA59A, 0x3000,
-    0xA548, 0x0000,
-    0xA570, 0x0000,
-    0xA54A, 0x0000,
-    0xA54C, 0x0000,
-    0xA54E, 0x0000,
-    0xA550, 0x0000,
-    0xA552, 0x0000,
-    0xA554, 0x0000,
-    0xA556, 0x0000,
-    0xA55C, 0x0000,
-    0xA55E, 0x0000,
-    0xA560, 0x0000,
-    0xA562, 0x0000,
-    0xA564, 0x0000,
-    0xA566, 0x0000,
-    0xA568, 0x0000,
-    0xA56A, 0x0000,
-    0xFCFC, 0x2001,
-    0x1D96, 0x0000,
-    0x1D98, 0x0000,
-    0x1DA6, 0x0000,
-    0x1DA8, 0x0000,
-    0x1D72, 0x0000,
-    0x1D74, 0x0000,
-    0x1D82, 0x0000,
-    0x1D84, 0x0000,
-    0x1D92, 0x0000,
-    0x1D94, 0x0000,
-    0x1DA2, 0x0000,
-    0x1DA4, 0x0000,
-    0x1D76, 0x0000,
-    0x1D78, 0x0000,
-    0x1D86, 0x0000,
-    0x1D88, 0x0000,
-    0x1E16, 0x0000,
-    0x1E18, 0x0000,
-    0x1E26, 0x0000,
-    0x1E28, 0x0000,
-    0x1DF2, 0x0000,
-    0x1DF4, 0x0000,
-    0x1E02, 0x0000,
-    0x1E04, 0x0000,
-    0x1E12, 0x0000,
-    0x1E14, 0x0000,
-    0x1E22, 0x0000,
-    0x1E24, 0x0000,
-    0x1DF6, 0x0000,
-    0x1DF8, 0x0000,
-    0x1E06, 0x0000,
-    0x1E08, 0x0000,
-    0xFCFC, 0x2000,
-    0x82BA, 0x3600,
-    0x82A2, 0x1200,
-    0xFCFC, 0x2001,
-    0x427C, 0x2000,
-    0x4280, 0x1000,
-    0x4362, 0x0100,
-    0x43AA, 0x0000,
-    0x43AC, 0x0000,
-    0x43C6, 0x010A,
-    0x43B4, 0x0000,
-    0x43B6, 0x0000,
-    0x4396, 0x0C00,
-    0x4398, 0x0E00,
-    0x437E, 0xA400,
-    0xFCFC, 0x2000,
-    0xB322, 0x0101,
-    0xB324, 0x0100,
-    0xB330, 0x2828,
-    0xB34A, 0x2828,
-    0xB360, 0x2828,
-    0xFCFC, 0x2001,
-    0x4292, 0x0000,
-    0x4364, 0x0000,
-    0x4366, 0x0000,
-    0x4370, 0x0000,
-    0x4290, 0x0100,
-    0xFCFC, 0x2002,
-    0x84C4, 0x0000,
-    0xFCFC, 0x2000,
-    0xD684, 0x4004,
-    0xB268, 0x4004,
-    0xF09A, 0x00FF,
-    0xF2E0, 0x0000,
-    0xF372, 0x0000,
-    0xF0AA, 0xFFFF,
-    0xF0AC, 0xFFFF,
-    0xF2EA, 0x4000,
-    0xDADA, 0x0000,
-    0xDB3C, 0x0000,
-    0xDADC, 0x0000,
-    0xDB0C, 0x0000,
-    0xDB3E, 0x0000,
-    0xDADE, 0x0000,
-    0xDB0E, 0x0000,
-    0xDB40, 0x0000,
-    0xDAE0, 0x0000,
-    0xDB10, 0x0000,
-    0xDB42, 0x0000,
-    0xDAE2, 0x0000,
-    0xDB12, 0x0000,
-    0xDB44, 0x0000,
-    0xDAE4, 0x0000,
-    0xDB14, 0x0000,
-    0xDB46, 0x0000,
-    0xDAE6, 0x0000,
-    0xDB16, 0x0000,
-    0xDBCC, 0x0000,
-    0xDB6C, 0x0000,
-    0xDB9C, 0x0000,
-    0xDBCE, 0x0000,
-    0xDB6E, 0x0000,
-    0xDB9E, 0x0000,
-    0xDBD0, 0x0000,
-    0xDB70, 0x0000,
-    0xDBA0, 0x0000,
-    0xDBD2, 0x0000,
-    0xDB72, 0x0000,
-    0xDBA2, 0x0000,
-    0xDBD4, 0x0000,
-    0xDB74, 0x0000,
-    0xDBA4, 0x0000,
-    0xDBD6, 0x0000,
-    0xDB76, 0x0000,
-    0xDBA6, 0x0000,
-    0xF370, 0x0203,
-    0xF3E4, 0x0301,
-    0xF3F4, 0xC808,
-    0xF3F6, 0xD710,
-    0xF014, 0x0600,
-    0xB270, 0x8708,
-    0xB266, 0xC004,
-    0xD682, 0xC004,
-    0xBF16, 0x0BAA,
-    0xDC8C, 0x3F2B,
-    0xF698, 0x0100,
-    0xF6F2, 0x0011,
-    0xF6F4, 0x0010,
-    0xF6F6, 0x000D,
-    0xF6F8, 0x000B,
-    0xF6FA, 0x0004,
-    0xF6FC, 0xFFFD,
-    0xF6FE, 0xFFF8,
-    0xF700, 0xFFEF,
-    0xF702, 0xFFE9,
-    0xF704, 0xFFDF,
-    0xF706, 0xFFD5,
-    0xF708, 0xFFCC,
-    0xF70A, 0xFFC0,
-    0xF70C, 0xFFB2,
-    0xF70E, 0xFFA3,
-    0xF710, 0xFF96,
-    0xF712, 0xFF91,
-    0xF714, 0x0013,
-    0xF716, 0x001F,
-    0xF718, 0x001D,
-    0xF71A, 0x0019,
-    0xF71C, 0x0013,
-    0xF71E, 0x0010,
-    0xF720, 0x0009,
-    0xF722, 0x0004,
-    0xF724, 0xFFFB,
-    0xF726, 0xFFF2,
-    0xF728, 0xFFE6,
-    0xF72A, 0xFFDC,
-    0xF72C, 0xFFD1,
-    0xF72E, 0xFFC2,
-    0xF730, 0xFFB3,
-    0xF732, 0xFFA3,
-    0xF734, 0xFF94,
-    0xF736, 0x000F,
-    0xF738, 0x001B,
-    0xF73A, 0x001D,
-    0xF73C, 0x001A,
-    0xF73E, 0x0019,
-    0xF740, 0x0012,
-    0xF742, 0x0010,
-    0xF744, 0x0005,
-    0xF746, 0xFFFF,
-    0xF748, 0xFFF3,
-    0xF74A, 0xFFED,
-    0xF74C, 0xFFDF,
-    0xF74E, 0xFFD4,
-    0xF750, 0xFFC6,
-    0xF752, 0xFFB6,
-    0xF754, 0xFFA2,
-    0xF756, 0xFF91,
-    0xF758, 0x0009,
-    0xF75A, 0x0017,
-    0xF75C, 0x001B,
-    0xF75E, 0x001B,
-    0xF760, 0x0017,
-    0xF762, 0x0016,
-    0xF764, 0x0010,
-    0xF766, 0x000D,
-    0xF768, 0x0001,
-    0xF76A, 0xFFFA,
-    0xF76C, 0xFFEF,
-    0xF76E, 0xFFE5,
-    0xF770, 0xFFD9,
-    0xF772, 0xFFC9,
-    0xF774, 0xFFB7,
-    0xF776, 0xFFA0,
-    0xF778, 0xFF92,
-    0xF77A, 0x0005,
-    0xF77C, 0x0016,
-    0xF77E, 0x001A,
-    0xF780, 0x001C,
-    0xF782, 0x001C,
-    0xF784, 0x0019,
-    0xF786, 0x0018,
-    0xF788, 0x000D,
-    0xF78A, 0x0007,
-    0xF78C, 0xFFFD,
-    0xF78E, 0xFFF4,
-    0xF790, 0xFFE6,
-    0xF792, 0xFFDE,
-    0xF794, 0xFFCE,
-    0xF796, 0xFFB9,
-    0xF798, 0xFFA4,
-    0xF79A, 0xFF8F,
-    0xF79C, 0x0003,
-    0xF79E, 0x0011,
-    0xF7A0, 0x0017,
-    0xF7A2, 0x001B,
-    0xF7A4, 0x001F,
-    0xF7A6, 0x001E,
-    0xF7A8, 0x001A,
-    0xF7AA, 0x0015,
-    0xF7AC, 0x000D,
-    0xF7AE, 0x0003,
-    0xF7B0, 0xFFF8,
-    0xF7B2, 0xFFEE,
-    0xF7B4, 0xFFE2,
-    0xF7B6, 0xFFD3,
-    0xF7B8, 0xFFC1,
-    0xF7BA, 0xFFA7,
-    0xF7BC, 0xFF95,
-    0xF7BE, 0xFFFE,
-    0xF7C0, 0x0014,
-    0xF7C2, 0x0018,
-    0xF7C4, 0x001E,
-    0xF7C6, 0x0025,
-    0xF7C8, 0x0026,
-    0xF7CA, 0x001F,
-    0xF7CC, 0x0019,
-    0xF7CE, 0x000E,
-    0xF7D0, 0x000A,
-    0xF7D2, 0xFFFE,
-    0xF7D4, 0xFFF5,
-    0xF7D6, 0xFFE8,
-    0xF7D8, 0xFFD6,
-    0xF7DA, 0xFFC2,
-    0xF7DC, 0xFFAA,
-    0xF7DE, 0xFF93,
-    0xF7E0, 0x0004,
-    0xF7E2, 0x0017,
-    0xF7E4, 0x001E,
-    0xF7E6, 0x0027,
-    0xF7E8, 0x0030,
-    0xF7EA, 0x002C,
-    0xF7EC, 0x0026,
-    0xF7EE, 0x001F,
-    0xF7F0, 0x0017,
-    0xF7F2, 0x000F,
-    0xF7F4, 0x0005,
-    0xF7F6, 0xFFF9,
-    0xF7F8, 0xFFEC,
-    0xF7FA, 0xFFDA,
-    0xF7FC, 0xFFC4,
-    0xF7FE, 0xFFAB,
-    0xF800, 0xFF95,
-    0xF802, 0x0008,
-    0xF804, 0x001B,
-    0xF806, 0x0025,
-    0xF808, 0x0030,
-    0xF80A, 0x003B,
-    0xF80C, 0x0035,
-    0xF80E, 0x002D,
-    0xF810, 0x0022,
-    0xF812, 0x001E,
-    0xF814, 0x0016,
-    0xF816, 0x0010,
-    0xF818, 0x0003,
-    0xF81A, 0xFFF2,
-    0xF81C, 0xFFE0,
-    0xF81E, 0xFFC8,
-    0xF820, 0xFFAE,
-    0xF822, 0xFF96,
-    0xF824, 0x0006,
-    0xF826, 0x001D,
-    0xF828, 0x0027,
-    0xF82A, 0x0035,
-    0xF82C, 0x0043,
-    0xF82E, 0x0036,
-    0xF830, 0x002F,
-    0xF832, 0x0026,
-    0xF834, 0x0020,
-    0xF836, 0x001B,
-    0xF838, 0x001A,
-    0xF83A, 0x000D,
-    0xF83C, 0xFFF7,
-    0xF83E, 0xFFE4,
-    0xF840, 0xFFCB,
-    0xF842, 0xFFB2,
-    0xF844, 0xFF98,
-    0xF846, 0x000C,
-    0xF848, 0x001E,
-    0xF84A, 0x002A,
-    0xF84C, 0x003A,
-    0xF84E, 0x0049,
-    0xF850, 0x0040,
-    0xF852, 0x0030,
-    0xF854, 0x002A,
-    0xF856, 0x0023,
-    0xF858, 0x001F,
-    0xF85A, 0x0020,
-    0xF85C, 0x0019,
-    0xF85E, 0xFFFE,
-    0xF860, 0xFFEA,
-    0xF862, 0xFFD3,
-    0xF864, 0xFFB4,
-    0xF866, 0xFF9D,
-    0xF868, 0x000F,
-    0xF86A, 0x001E,
-    0xF86C, 0x0028,
-    0xF86E, 0x003E,
-    0xF870, 0x0055,
-    0xF872, 0x0040,
-    0xF874, 0x0037,
-    0xF876, 0x002B,
-    0xF878, 0x0028,
-    0xF87A, 0x0024,
-    0xF87C, 0x002F,
-    0xF87E, 0x0023,
-    0xF880, 0x0009,
-    0xF882, 0xFFF3,
-    0xF884, 0xFFDA,
-    0xF886, 0xFFBC,
-    0xF888, 0xFFA3,
-    0xF88A, 0x0009,
-    0xF88C, 0x0017,
-    0xF88E, 0x0019,
-    0xF890, 0x003D,
-    0xF892, 0x005D,
-    0xF894, 0x0055,
-    0xF896, 0x0030,
-    0xF898, 0x0023,
-    0xF89A, 0x002C,
-    0xF89C, 0x002B,
-    0xF89E, 0x0027,
-    0xF8A0, 0x0031,
-    0xF8A2, 0x000A,
-    0xF8A4, 0xFFF9,
-    0xF8A6, 0xFFE2,
-    0xF8A8, 0xFFBE,
-    0xF8AA, 0xFFA0,
-    0xFCFC, 0x4000,
-    0x0808, 0x0201,
-    0x0334, 0x0001,
-    0x0E00, 0x0003,
-};
-
-static u16 sayramuwide_seamless_preview[] = {
-    0x0B30, 0x0102,
-    0x0340, 0x1908,
-};
-
-static u16 sayramuwide_seamless_vid[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0104,
-	0x0340,	0x13F7,
-};
-
-static u16 sayramuwide_seamless_custom1[] = {
-    0x0B30, 0x0103,
-    0x0340, 0x0C84,
-};
-
-static u16 sayramuwide_seamless_custom2[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0100,
-	0x0340,	0x18CA,
-};
-
-static u16 sayramuwide_seamless_custom3[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0101,
-	0x0340,	0x18CA,
-};
-
-static u16 sayramuwide_seamless_custom7[] = {
-	0xFCFC,	0x4000,
-	0x0b30,	0x0106,
-	0x0340,	0x0C84,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwide_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwide_ana_gain_table.h
deleted file mode 100755
index aef667fb..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwide_ana_gain_table.h
+++ /dev/null
@@ -1,5100 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************/
-#ifndef __SAYRAMUWIDE_ANA_GAIN_TABLE_H__
-#define __SAYRAMUWIDE_ANA_GAIN_TABLE_H__
-static kal_uint32 sayramuwide_ana_gain_table[] = {
-    1024,
-    1056,
-    1088,
-    1120,
-    1152,
-    1184,
-    1216,
-    1248,
-    1280,
-    1312,
-    1344,
-    1376,
-    1408,
-    1440,
-    1472,
-    1504,
-    1536,
-    1568,
-    1600,
-    1632,
-    1664,
-    1696,
-    1728,
-    1760,
-    1792,
-    1824,
-    1856,
-    1888,
-    1920,
-    1952,
-    1984,
-    2016,
-    2048,
-    2080,
-    2112,
-    2144,
-    2176,
-    2208,
-    2240,
-    2272,
-    2304,
-    2336,
-    2368,
-    2400,
-    2432,
-    2464,
-    2496,
-    2528,
-    2560,
-    2592,
-    2624,
-    2656,
-    2688,
-    2720,
-    2752,
-    2784,
-    2816,
-    2848,
-    2880,
-    2912,
-    2944,
-    2976,
-    3008,
-    3040,
-    3072,
-    3104,
-    3136,
-    3168,
-    3200,
-    3232,
-    3264,
-    3296,
-    3328,
-    3360,
-    3392,
-    3424,
-    3456,
-    3488,
-    3520,
-    3552,
-    3584,
-    3616,
-    3648,
-    3680,
-    3712,
-    3744,
-    3776,
-    3808,
-    3840,
-    3872,
-    3904,
-    3936,
-    3968,
-    4000,
-    4032,
-    4064,
-    4096,
-    4128,
-    4160,
-    4192,
-    4224,
-    4256,
-    4288,
-    4320,
-    4352,
-    4384,
-    4416,
-    4448,
-    4480,
-    4512,
-    4544,
-    4576,
-    4608,
-    4640,
-    4672,
-    4704,
-    4736,
-    4768,
-    4800,
-    4832,
-    4864,
-    4896,
-    4928,
-    4960,
-    4992,
-    5024,
-    5056,
-    5088,
-    5120,
-    5152,
-    5184,
-    5216,
-    5248,
-    5280,
-    5312,
-    5344,
-    5376,
-    5408,
-    5440,
-    5472,
-    5504,
-    5536,
-    5568,
-    5600,
-    5632,
-    5664,
-    5696,
-    5728,
-    5760,
-    5792,
-    5824,
-    5856,
-    5888,
-    5920,
-    5952,
-    5984,
-    6016,
-    6048,
-    6080,
-    6112,
-    6144,
-    6176,
-    6208,
-    6240,
-    6272,
-    6304,
-    6336,
-    6368,
-    6400,
-    6432,
-    6464,
-    6496,
-    6528,
-    6560,
-    6592,
-    6624,
-    6656,
-    6688,
-    6720,
-    6752,
-    6784,
-    6816,
-    6848,
-    6880,
-    6912,
-    6944,
-    6976,
-    7008,
-    7040,
-    7072,
-    7104,
-    7136,
-    7168,
-    7200,
-    7232,
-    7264,
-    7296,
-    7328,
-    7360,
-    7392,
-    7424,
-    7456,
-    7488,
-    7520,
-    7552,
-    7584,
-    7616,
-    7648,
-    7680,
-    7712,
-    7744,
-    7776,
-    7808,
-    7840,
-    7872,
-    7904,
-    7936,
-    7968,
-    8000,
-    8032,
-    8064,
-    8096,
-    8128,
-    8160,
-    8192,
-    8224,
-    8256,
-    8288,
-    8320,
-    8352,
-    8384,
-    8416,
-    8448,
-    8480,
-    8512,
-    8544,
-    8576,
-    8608,
-    8640,
-    8672,
-    8704,
-    8736,
-    8768,
-    8800,
-    8832,
-    8864,
-    8896,
-    8928,
-    8960,
-    8992,
-    9024,
-    9056,
-    9088,
-    9120,
-    9152,
-    9184,
-    9216,
-    9248,
-    9280,
-    9312,
-    9344,
-    9376,
-    9408,
-    9440,
-    9472,
-    9504,
-    9536,
-    9568,
-    9600,
-    9632,
-    9664,
-    9696,
-    9728,
-    9760,
-    9792,
-    9824,
-    9856,
-    9888,
-    9920,
-    9952,
-    9984,
-    10016,
-    10048,
-    10080,
-    10112,
-    10144,
-    10176,
-    10208,
-    10240,
-    10272,
-    10304,
-    10336,
-    10368,
-    10400,
-    10432,
-    10464,
-    10496,
-    10528,
-    10560,
-    10592,
-    10624,
-    10656,
-    10688,
-    10720,
-    10752,
-    10784,
-    10816,
-    10848,
-    10880,
-    10912,
-    10944,
-    10976,
-    11008,
-    11040,
-    11072,
-    11104,
-    11136,
-    11168,
-    11200,
-    11232,
-    11264,
-    11296,
-    11328,
-    11360,
-    11392,
-    11424,
-    11456,
-    11488,
-    11520,
-    11552,
-    11584,
-    11616,
-    11648,
-    11680,
-    11712,
-    11744,
-    11776,
-    11808,
-    11840,
-    11872,
-    11904,
-    11936,
-    11968,
-    12000,
-    12032,
-    12064,
-    12096,
-    12128,
-    12160,
-    12192,
-    12224,
-    12256,
-    12288,
-    12320,
-    12352,
-    12384,
-    12416,
-    12448,
-    12480,
-    12512,
-    12544,
-    12576,
-    12608,
-    12640,
-    12672,
-    12704,
-    12736,
-    12768,
-    12800,
-    12832,
-    12864,
-    12896,
-    12928,
-    12960,
-    12992,
-    13024,
-    13056,
-    13088,
-    13120,
-    13152,
-    13184,
-    13216,
-    13248,
-    13280,
-    13312,
-    13344,
-    13376,
-    13408,
-    13440,
-    13472,
-    13504,
-    13536,
-    13568,
-    13600,
-    13632,
-    13664,
-    13696,
-    13728,
-    13760,
-    13792,
-    13824,
-    13856,
-    13888,
-    13920,
-    13952,
-    13984,
-    14016,
-    14048,
-    14080,
-    14112,
-    14144,
-    14176,
-    14208,
-    14240,
-    14272,
-    14304,
-    14336,
-    14368,
-    14400,
-    14432,
-    14464,
-    14496,
-    14528,
-    14560,
-    14592,
-    14624,
-    14656,
-    14688,
-    14720,
-    14752,
-    14784,
-    14816,
-    14848,
-    14880,
-    14912,
-    14944,
-    14976,
-    15008,
-    15040,
-    15072,
-    15104,
-    15136,
-    15168,
-    15200,
-    15232,
-    15264,
-    15296,
-    15328,
-    15360,
-    15392,
-    15424,
-    15456,
-    15488,
-    15520,
-    15552,
-    15584,
-    15616,
-    15648,
-    15680,
-    15712,
-    15744,
-    15776,
-    15808,
-    15840,
-    15872,
-    15904,
-    15936,
-    15968,
-    16000,
-    16032,
-    16064,
-    16096,
-    16128,
-    16160,
-    16192,
-    16224,
-    16256,
-    16288,
-    16320,
-    16352,
-    16384,
-    16416,
-    16448,
-    16480,
-    16512,
-    16544,
-    16576,
-    16608,
-    16640,
-    16672,
-    16704,
-    16736,
-    16768,
-    16800,
-    16832,
-    16864,
-    16896,
-    16928,
-    16960,
-    16992,
-    17024,
-    17056,
-    17088,
-    17120,
-    17152,
-    17184,
-    17216,
-    17248,
-    17280,
-    17312,
-    17344,
-    17376,
-    17408,
-    17440,
-    17472,
-    17504,
-    17536,
-    17568,
-    17600,
-    17632,
-    17664,
-    17696,
-    17728,
-    17760,
-    17792,
-    17824,
-    17856,
-    17888,
-    17920,
-    17952,
-    17984,
-    18016,
-    18048,
-    18080,
-    18112,
-    18144,
-    18176,
-    18208,
-    18240,
-    18272,
-    18304,
-    18336,
-    18368,
-    18400,
-    18432,
-    18464,
-    18496,
-    18528,
-    18560,
-    18592,
-    18624,
-    18656,
-    18688,
-    18720,
-    18752,
-    18784,
-    18816,
-    18848,
-    18880,
-    18912,
-    18944,
-    18976,
-    19008,
-    19040,
-    19072,
-    19104,
-    19136,
-    19168,
-    19200,
-    19232,
-    19264,
-    19296,
-    19328,
-    19360,
-    19392,
-    19424,
-    19456,
-    19488,
-    19520,
-    19552,
-    19584,
-    19616,
-    19648,
-    19680,
-    19712,
-    19744,
-    19776,
-    19808,
-    19840,
-    19872,
-    19904,
-    19936,
-    19968,
-    20000,
-    20032,
-    20064,
-    20096,
-    20128,
-    20160,
-    20192,
-    20224,
-    20256,
-    20288,
-    20320,
-    20352,
-    20384,
-    20416,
-    20448,
-    20480,
-    20512,
-    20544,
-    20576,
-    20608,
-    20640,
-    20672,
-    20704,
-    20736,
-    20768,
-    20800,
-    20832,
-    20864,
-    20896,
-    20928,
-    20960,
-    20992,
-    21024,
-    21056,
-    21088,
-    21120,
-    21152,
-    21184,
-    21216,
-    21248,
-    21280,
-    21312,
-    21344,
-    21376,
-    21408,
-    21440,
-    21472,
-    21504,
-    21536,
-    21568,
-    21600,
-    21632,
-    21664,
-    21696,
-    21728,
-    21760,
-    21792,
-    21824,
-    21856,
-    21888,
-    21920,
-    21952,
-    21984,
-    22016,
-    22048,
-    22080,
-    22112,
-    22144,
-    22176,
-    22208,
-    22240,
-    22272,
-    22304,
-    22336,
-    22368,
-    22400,
-    22432,
-    22464,
-    22496,
-    22528,
-    22560,
-    22592,
-    22624,
-    22656,
-    22688,
-    22720,
-    22752,
-    22784,
-    22816,
-    22848,
-    22880,
-    22912,
-    22944,
-    22976,
-    23008,
-    23040,
-    23072,
-    23104,
-    23136,
-    23168,
-    23200,
-    23232,
-    23264,
-    23296,
-    23328,
-    23360,
-    23392,
-    23424,
-    23456,
-    23488,
-    23520,
-    23552,
-    23584,
-    23616,
-    23648,
-    23680,
-    23712,
-    23744,
-    23776,
-    23808,
-    23840,
-    23872,
-    23904,
-    23936,
-    23968,
-    24000,
-    24032,
-    24064,
-    24096,
-    24128,
-    24160,
-    24192,
-    24224,
-    24256,
-    24288,
-    24320,
-    24352,
-    24384,
-    24416,
-    24448,
-    24480,
-    24512,
-    24544,
-    24576,
-    24608,
-    24640,
-    24672,
-    24704,
-    24736,
-    24768,
-    24800,
-    24832,
-    24864,
-    24896,
-    24928,
-    24960,
-    24992,
-    25024,
-    25056,
-    25088,
-    25120,
-    25152,
-    25184,
-    25216,
-    25248,
-    25280,
-    25312,
-    25344,
-    25376,
-    25408,
-    25440,
-    25472,
-    25504,
-    25536,
-    25568,
-    25600,
-    25632,
-    25664,
-    25696,
-    25728,
-    25760,
-    25792,
-    25824,
-    25856,
-    25888,
-    25920,
-    25952,
-    25984,
-    26016,
-    26048,
-    26080,
-    26112,
-    26144,
-    26176,
-    26208,
-    26240,
-    26272,
-    26304,
-    26336,
-    26368,
-    26400,
-    26432,
-    26464,
-    26496,
-    26528,
-    26560,
-    26592,
-    26624,
-    26656,
-    26688,
-    26720,
-    26752,
-    26784,
-    26816,
-    26848,
-    26880,
-    26912,
-    26944,
-    26976,
-    27008,
-    27040,
-    27072,
-    27104,
-    27136,
-    27168,
-    27200,
-    27232,
-    27264,
-    27296,
-    27328,
-    27360,
-    27392,
-    27424,
-    27456,
-    27488,
-    27520,
-    27552,
-    27584,
-    27616,
-    27648,
-    27680,
-    27712,
-    27744,
-    27776,
-    27808,
-    27840,
-    27872,
-    27904,
-    27936,
-    27968,
-    28000,
-    28032,
-    28064,
-    28096,
-    28128,
-    28160,
-    28192,
-    28224,
-    28256,
-    28288,
-    28320,
-    28352,
-    28384,
-    28416,
-    28448,
-    28480,
-    28512,
-    28544,
-    28576,
-    28608,
-    28640,
-    28672,
-    28704,
-    28736,
-    28768,
-    28800,
-    28832,
-    28864,
-    28896,
-    28928,
-    28960,
-    28992,
-    29024,
-    29056,
-    29088,
-    29120,
-    29152,
-    29184,
-    29216,
-    29248,
-    29280,
-    29312,
-    29344,
-    29376,
-    29408,
-    29440,
-    29472,
-    29504,
-    29536,
-    29568,
-    29600,
-    29632,
-    29664,
-    29696,
-    29728,
-    29760,
-    29792,
-    29824,
-    29856,
-    29888,
-    29920,
-    29952,
-    29984,
-    30016,
-    30048,
-    30080,
-    30112,
-    30144,
-    30176,
-    30208,
-    30240,
-    30272,
-    30304,
-    30336,
-    30368,
-    30400,
-    30432,
-    30464,
-    30496,
-    30528,
-    30560,
-    30592,
-    30624,
-    30656,
-    30688,
-    30720,
-    30752,
-    30784,
-    30816,
-    30848,
-    30880,
-    30912,
-    30944,
-    30976,
-    31008,
-    31040,
-    31072,
-    31104,
-    31136,
-    31168,
-    31200,
-    31232,
-    31264,
-    31296,
-    31328,
-    31360,
-    31392,
-    31424,
-    31456,
-    31488,
-    31520,
-    31552,
-    31584,
-    31616,
-    31648,
-    31680,
-    31712,
-    31744,
-    31776,
-    31808,
-    31840,
-    31872,
-    31904,
-    31936,
-    31968,
-    32000,
-    32032,
-    32064,
-    32096,
-    32128,
-    32160,
-    32192,
-    32224,
-    32256,
-    32288,
-    32320,
-    32352,
-    32384,
-    32416,
-    32448,
-    32480,
-    32512,
-    32544,
-    32576,
-    32608,
-    32640,
-    32672,
-    32704,
-    32736,
-    32768,
-    32800,
-    32832,
-    32864,
-    32896,
-    32928,
-    32960,
-    32992,
-    33024,
-    33056,
-    33088,
-    33120,
-    33152,
-    33184,
-    33216,
-    33248,
-    33280,
-    33312,
-    33344,
-    33376,
-    33408,
-    33440,
-    33472,
-    33504,
-    33536,
-    33568,
-    33600,
-    33632,
-    33664,
-    33696,
-    33728,
-    33760,
-    33792,
-    33824,
-    33856,
-    33888,
-    33920,
-    33952,
-    33984,
-    34016,
-    34048,
-    34080,
-    34112,
-    34144,
-    34176,
-    34208,
-    34240,
-    34272,
-    34304,
-    34336,
-    34368,
-    34400,
-    34432,
-    34464,
-    34496,
-    34528,
-    34560,
-    34592,
-    34624,
-    34656,
-    34688,
-    34720,
-    34752,
-    34784,
-    34816,
-    34848,
-    34880,
-    34912,
-    34944,
-    34976,
-    35008,
-    35040,
-    35072,
-    35104,
-    35136,
-    35168,
-    35200,
-    35232,
-    35264,
-    35296,
-    35328,
-    35360,
-    35392,
-    35424,
-    35456,
-    35488,
-    35520,
-    35552,
-    35584,
-    35616,
-    35648,
-    35680,
-    35712,
-    35744,
-    35776,
-    35808,
-    35840,
-    35872,
-    35904,
-    35936,
-    35968,
-    36000,
-    36032,
-    36064,
-    36096,
-    36128,
-    36160,
-    36192,
-    36224,
-    36256,
-    36288,
-    36320,
-    36352,
-    36384,
-    36416,
-    36448,
-    36480,
-    36512,
-    36544,
-    36576,
-    36608,
-    36640,
-    36672,
-    36704,
-    36736,
-    36768,
-    36800,
-    36832,
-    36864,
-    36896,
-    36928,
-    36960,
-    36992,
-    37024,
-    37056,
-    37088,
-    37120,
-    37152,
-    37184,
-    37216,
-    37248,
-    37280,
-    37312,
-    37344,
-    37376,
-    37408,
-    37440,
-    37472,
-    37504,
-    37536,
-    37568,
-    37600,
-    37632,
-    37664,
-    37696,
-    37728,
-    37760,
-    37792,
-    37824,
-    37856,
-    37888,
-    37920,
-    37952,
-    37984,
-    38016,
-    38048,
-    38080,
-    38112,
-    38144,
-    38176,
-    38208,
-    38240,
-    38272,
-    38304,
-    38336,
-    38368,
-    38400,
-    38432,
-    38464,
-    38496,
-    38528,
-    38560,
-    38592,
-    38624,
-    38656,
-    38688,
-    38720,
-    38752,
-    38784,
-    38816,
-    38848,
-    38880,
-    38912,
-    38944,
-    38976,
-    39008,
-    39040,
-    39072,
-    39104,
-    39136,
-    39168,
-    39200,
-    39232,
-    39264,
-    39296,
-    39328,
-    39360,
-    39392,
-    39424,
-    39456,
-    39488,
-    39520,
-    39552,
-    39584,
-    39616,
-    39648,
-    39680,
-    39712,
-    39744,
-    39776,
-    39808,
-    39840,
-    39872,
-    39904,
-    39936,
-    39968,
-    40000,
-    40032,
-    40064,
-    40096,
-    40128,
-    40160,
-    40192,
-    40224,
-    40256,
-    40288,
-    40320,
-    40352,
-    40384,
-    40416,
-    40448,
-    40480,
-    40512,
-    40544,
-    40576,
-    40608,
-    40640,
-    40672,
-    40704,
-    40736,
-    40768,
-    40800,
-    40832,
-    40864,
-    40896,
-    40928,
-    40960,
-    40992,
-    41024,
-    41056,
-    41088,
-    41120,
-    41152,
-    41184,
-    41216,
-    41248,
-    41280,
-    41312,
-    41344,
-    41376,
-    41408,
-    41440,
-    41472,
-    41504,
-    41536,
-    41568,
-    41600,
-    41632,
-    41664,
-    41696,
-    41728,
-    41760,
-    41792,
-    41824,
-    41856,
-    41888,
-    41920,
-    41952,
-    41984,
-    42016,
-    42048,
-    42080,
-    42112,
-    42144,
-    42176,
-    42208,
-    42240,
-    42272,
-    42304,
-    42336,
-    42368,
-    42400,
-    42432,
-    42464,
-    42496,
-    42528,
-    42560,
-    42592,
-    42624,
-    42656,
-    42688,
-    42720,
-    42752,
-    42784,
-    42816,
-    42848,
-    42880,
-    42912,
-    42944,
-    42976,
-    43008,
-    43040,
-    43072,
-    43104,
-    43136,
-    43168,
-    43200,
-    43232,
-    43264,
-    43296,
-    43328,
-    43360,
-    43392,
-    43424,
-    43456,
-    43488,
-    43520,
-    43552,
-    43584,
-    43616,
-    43648,
-    43680,
-    43712,
-    43744,
-    43776,
-    43808,
-    43840,
-    43872,
-    43904,
-    43936,
-    43968,
-    44000,
-    44032,
-    44064,
-    44096,
-    44128,
-    44160,
-    44192,
-    44224,
-    44256,
-    44288,
-    44320,
-    44352,
-    44384,
-    44416,
-    44448,
-    44480,
-    44512,
-    44544,
-    44576,
-    44608,
-    44640,
-    44672,
-    44704,
-    44736,
-    44768,
-    44800,
-    44832,
-    44864,
-    44896,
-    44928,
-    44960,
-    44992,
-    45024,
-    45056,
-    45088,
-    45120,
-    45152,
-    45184,
-    45216,
-    45248,
-    45280,
-    45312,
-    45344,
-    45376,
-    45408,
-    45440,
-    45472,
-    45504,
-    45536,
-    45568,
-    45600,
-    45632,
-    45664,
-    45696,
-    45728,
-    45760,
-    45792,
-    45824,
-    45856,
-    45888,
-    45920,
-    45952,
-    45984,
-    46016,
-    46048,
-    46080,
-    46112,
-    46144,
-    46176,
-    46208,
-    46240,
-    46272,
-    46304,
-    46336,
-    46368,
-    46400,
-    46432,
-    46464,
-    46496,
-    46528,
-    46560,
-    46592,
-    46624,
-    46656,
-    46688,
-    46720,
-    46752,
-    46784,
-    46816,
-    46848,
-    46880,
-    46912,
-    46944,
-    46976,
-    47008,
-    47040,
-    47072,
-    47104,
-    47136,
-    47168,
-    47200,
-    47232,
-    47264,
-    47296,
-    47328,
-    47360,
-    47392,
-    47424,
-    47456,
-    47488,
-    47520,
-    47552,
-    47584,
-    47616,
-    47648,
-    47680,
-    47712,
-    47744,
-    47776,
-    47808,
-    47840,
-    47872,
-    47904,
-    47936,
-    47968,
-    48000,
-    48032,
-    48064,
-    48096,
-    48128,
-    48160,
-    48192,
-    48224,
-    48256,
-    48288,
-    48320,
-    48352,
-    48384,
-    48416,
-    48448,
-    48480,
-    48512,
-    48544,
-    48576,
-    48608,
-    48640,
-    48672,
-    48704,
-    48736,
-    48768,
-    48800,
-    48832,
-    48864,
-    48896,
-    48928,
-    48960,
-    48992,
-    49024,
-    49056,
-    49088,
-    49120,
-    49152,
-    49184,
-    49216,
-    49248,
-    49280,
-    49312,
-    49344,
-    49376,
-    49408,
-    49440,
-    49472,
-    49504,
-    49536,
-    49568,
-    49600,
-    49632,
-    49664,
-    49696,
-    49728,
-    49760,
-    49792,
-    49824,
-    49856,
-    49888,
-    49920,
-    49952,
-    49984,
-    50016,
-    50048,
-    50080,
-    50112,
-    50144,
-    50176,
-    50208,
-    50240,
-    50272,
-    50304,
-    50336,
-    50368,
-    50400,
-    50432,
-    50464,
-    50496,
-    50528,
-    50560,
-    50592,
-    50624,
-    50656,
-    50688,
-    50720,
-    50752,
-    50784,
-    50816,
-    50848,
-    50880,
-    50912,
-    50944,
-    50976,
-    51008,
-    51040,
-    51072,
-    51104,
-    51136,
-    51168,
-    51200,
-    51232,
-    51264,
-    51296,
-    51328,
-    51360,
-    51392,
-    51424,
-    51456,
-    51488,
-    51520,
-    51552,
-    51584,
-    51616,
-    51648,
-    51680,
-    51712,
-    51744,
-    51776,
-    51808,
-    51840,
-    51872,
-    51904,
-    51936,
-    51968,
-    52000,
-    52032,
-    52064,
-    52096,
-    52128,
-    52160,
-    52192,
-    52224,
-    52256,
-    52288,
-    52320,
-    52352,
-    52384,
-    52416,
-    52448,
-    52480,
-    52512,
-    52544,
-    52576,
-    52608,
-    52640,
-    52672,
-    52704,
-    52736,
-    52768,
-    52800,
-    52832,
-    52864,
-    52896,
-    52928,
-    52960,
-    52992,
-    53024,
-    53056,
-    53088,
-    53120,
-    53152,
-    53184,
-    53216,
-    53248,
-    53280,
-    53312,
-    53344,
-    53376,
-    53408,
-    53440,
-    53472,
-    53504,
-    53536,
-    53568,
-    53600,
-    53632,
-    53664,
-    53696,
-    53728,
-    53760,
-    53792,
-    53824,
-    53856,
-    53888,
-    53920,
-    53952,
-    53984,
-    54016,
-    54048,
-    54080,
-    54112,
-    54144,
-    54176,
-    54208,
-    54240,
-    54272,
-    54304,
-    54336,
-    54368,
-    54400,
-    54432,
-    54464,
-    54496,
-    54528,
-    54560,
-    54592,
-    54624,
-    54656,
-    54688,
-    54720,
-    54752,
-    54784,
-    54816,
-    54848,
-    54880,
-    54912,
-    54944,
-    54976,
-    55008,
-    55040,
-    55072,
-    55104,
-    55136,
-    55168,
-    55200,
-    55232,
-    55264,
-    55296,
-    55328,
-    55360,
-    55392,
-    55424,
-    55456,
-    55488,
-    55520,
-    55552,
-    55584,
-    55616,
-    55648,
-    55680,
-    55712,
-    55744,
-    55776,
-    55808,
-    55840,
-    55872,
-    55904,
-    55936,
-    55968,
-    56000,
-    56032,
-    56064,
-    56096,
-    56128,
-    56160,
-    56192,
-    56224,
-    56256,
-    56288,
-    56320,
-    56352,
-    56384,
-    56416,
-    56448,
-    56480,
-    56512,
-    56544,
-    56576,
-    56608,
-    56640,
-    56672,
-    56704,
-    56736,
-    56768,
-    56800,
-    56832,
-    56864,
-    56896,
-    56928,
-    56960,
-    56992,
-    57024,
-    57056,
-    57088,
-    57120,
-    57152,
-    57184,
-    57216,
-    57248,
-    57280,
-    57312,
-    57344,
-    57376,
-    57408,
-    57440,
-    57472,
-    57504,
-    57536,
-    57568,
-    57600,
-    57632,
-    57664,
-    57696,
-    57728,
-    57760,
-    57792,
-    57824,
-    57856,
-    57888,
-    57920,
-    57952,
-    57984,
-    58016,
-    58048,
-    58080,
-    58112,
-    58144,
-    58176,
-    58208,
-    58240,
-    58272,
-    58304,
-    58336,
-    58368,
-    58400,
-    58432,
-    58464,
-    58496,
-    58528,
-    58560,
-    58592,
-    58624,
-    58656,
-    58688,
-    58720,
-    58752,
-    58784,
-    58816,
-    58848,
-    58880,
-    58912,
-    58944,
-    58976,
-    59008,
-    59040,
-    59072,
-    59104,
-    59136,
-    59168,
-    59200,
-    59232,
-    59264,
-    59296,
-    59328,
-    59360,
-    59392,
-    59424,
-    59456,
-    59488,
-    59520,
-    59552,
-    59584,
-    59616,
-    59648,
-    59680,
-    59712,
-    59744,
-    59776,
-    59808,
-    59840,
-    59872,
-    59904,
-    59936,
-    59968,
-    60000,
-    60032,
-    60064,
-    60096,
-    60128,
-    60160,
-    60192,
-    60224,
-    60256,
-    60288,
-    60320,
-    60352,
-    60384,
-    60416,
-    60448,
-    60480,
-    60512,
-    60544,
-    60576,
-    60608,
-    60640,
-    60672,
-    60704,
-    60736,
-    60768,
-    60800,
-    60832,
-    60864,
-    60896,
-    60928,
-    60960,
-    60992,
-    61024,
-    61056,
-    61088,
-    61120,
-    61152,
-    61184,
-    61216,
-    61248,
-    61280,
-    61312,
-    61344,
-    61376,
-    61408,
-    61440,
-    61472,
-    61504,
-    61536,
-    61568,
-    61600,
-    61632,
-    61664,
-    61696,
-    61728,
-    61760,
-    61792,
-    61824,
-    61856,
-    61888,
-    61920,
-    61952,
-    61984,
-    62016,
-    62048,
-    62080,
-    62112,
-    62144,
-    62176,
-    62208,
-    62240,
-    62272,
-    62304,
-    62336,
-    62368,
-    62400,
-    62432,
-    62464,
-    62496,
-    62528,
-    62560,
-    62592,
-    62624,
-    62656,
-    62688,
-    62720,
-    62752,
-    62784,
-    62816,
-    62848,
-    62880,
-    62912,
-    62944,
-    62976,
-    63008,
-    63040,
-    63072,
-    63104,
-    63136,
-    63168,
-    63200,
-    63232,
-    63264,
-    63296,
-    63328,
-    63360,
-    63392,
-    63424,
-    63456,
-    63488,
-    63520,
-    63552,
-    63584,
-    63616,
-    63648,
-    63680,
-    63712,
-    63744,
-    63776,
-    63808,
-    63840,
-    63872,
-    63904,
-    63936,
-    63968,
-    64000,
-    64032,
-    64064,
-    64096,
-    64128,
-    64160,
-    64192,
-    64224,
-    64256,
-    64288,
-    64320,
-    64352,
-    64384,
-    64416,
-    64448,
-    64480,
-    64512,
-    64544,
-    64576,
-    64608,
-    64640,
-    64672,
-    64704,
-    64736,
-    64768,
-    64800,
-    64832,
-    64864,
-    64896,
-    64928,
-    64960,
-    64992,
-    65024,
-    65056,
-    65088,
-    65120,
-    65152,
-    65184,
-    65216,
-    65248,
-    65280,
-    65312,
-    65344,
-    65376,
-    65408,
-    65440,
-    65472,
-    65504,
-    65536,
-    65568,
-    65600,
-    65632,
-    65664,
-    65696,
-    65728,
-    65760,
-    65792,
-    65824,
-    65856,
-    65888,
-    65920,
-    65952,
-    65984,
-    66016,
-    66048,
-    66080,
-    66112,
-    66144,
-    66176,
-    66208,
-    66240,
-    66272,
-    66304,
-    66336,
-    66368,
-    66400,
-    66432,
-    66464,
-    66496,
-    66528,
-    66560,
-    66592,
-    66624,
-    66656,
-    66688,
-    66720,
-    66752,
-    66784,
-    66816,
-    66848,
-    66880,
-    66912,
-    66944,
-    66976,
-    67008,
-    67040,
-    67072,
-    67104,
-    67136,
-    67168,
-    67200,
-    67232,
-    67264,
-    67296,
-    67328,
-    67360,
-    67392,
-    67424,
-    67456,
-    67488,
-    67520,
-    67552,
-    67584,
-    67616,
-    67648,
-    67680,
-    67712,
-    67744,
-    67776,
-    67808,
-    67840,
-    67872,
-    67904,
-    67936,
-    67968,
-    68000,
-    68032,
-    68064,
-    68096,
-    68128,
-    68160,
-    68192,
-    68224,
-    68256,
-    68288,
-    68320,
-    68352,
-    68384,
-    68416,
-    68448,
-    68480,
-    68512,
-    68544,
-    68576,
-    68608,
-    68640,
-    68672,
-    68704,
-    68736,
-    68768,
-    68800,
-    68832,
-    68864,
-    68896,
-    68928,
-    68960,
-    68992,
-    69024,
-    69056,
-    69088,
-    69120,
-    69152,
-    69184,
-    69216,
-    69248,
-    69280,
-    69312,
-    69344,
-    69376,
-    69408,
-    69440,
-    69472,
-    69504,
-    69536,
-    69568,
-    69600,
-    69632,
-    69664,
-    69696,
-    69728,
-    69760,
-    69792,
-    69824,
-    69856,
-    69888,
-    69920,
-    69952,
-    69984,
-    70016,
-    70048,
-    70080,
-    70112,
-    70144,
-    70176,
-    70208,
-    70240,
-    70272,
-    70304,
-    70336,
-    70368,
-    70400,
-    70432,
-    70464,
-    70496,
-    70528,
-    70560,
-    70592,
-    70624,
-    70656,
-    70688,
-    70720,
-    70752,
-    70784,
-    70816,
-    70848,
-    70880,
-    70912,
-    70944,
-    70976,
-    71008,
-    71040,
-    71072,
-    71104,
-    71136,
-    71168,
-    71200,
-    71232,
-    71264,
-    71296,
-    71328,
-    71360,
-    71392,
-    71424,
-    71456,
-    71488,
-    71520,
-    71552,
-    71584,
-    71616,
-    71648,
-    71680,
-    71712,
-    71744,
-    71776,
-    71808,
-    71840,
-    71872,
-    71904,
-    71936,
-    71968,
-    72000,
-    72032,
-    72064,
-    72096,
-    72128,
-    72160,
-    72192,
-    72224,
-    72256,
-    72288,
-    72320,
-    72352,
-    72384,
-    72416,
-    72448,
-    72480,
-    72512,
-    72544,
-    72576,
-    72608,
-    72640,
-    72672,
-    72704,
-    72736,
-    72768,
-    72800,
-    72832,
-    72864,
-    72896,
-    72928,
-    72960,
-    72992,
-    73024,
-    73056,
-    73088,
-    73120,
-    73152,
-    73184,
-    73216,
-    73248,
-    73280,
-    73312,
-    73344,
-    73376,
-    73408,
-    73440,
-    73472,
-    73504,
-    73536,
-    73568,
-    73600,
-    73632,
-    73664,
-    73696,
-    73728,
-    73760,
-    73792,
-    73824,
-    73856,
-    73888,
-    73920,
-    73952,
-    73984,
-    74016,
-    74048,
-    74080,
-    74112,
-    74144,
-    74176,
-    74208,
-    74240,
-    74272,
-    74304,
-    74336,
-    74368,
-    74400,
-    74432,
-    74464,
-    74496,
-    74528,
-    74560,
-    74592,
-    74624,
-    74656,
-    74688,
-    74720,
-    74752,
-    74784,
-    74816,
-    74848,
-    74880,
-    74912,
-    74944,
-    74976,
-    75008,
-    75040,
-    75072,
-    75104,
-    75136,
-    75168,
-    75200,
-    75232,
-    75264,
-    75296,
-    75328,
-    75360,
-    75392,
-    75424,
-    75456,
-    75488,
-    75520,
-    75552,
-    75584,
-    75616,
-    75648,
-    75680,
-    75712,
-    75744,
-    75776,
-    75808,
-    75840,
-    75872,
-    75904,
-    75936,
-    75968,
-    76000,
-    76032,
-    76064,
-    76096,
-    76128,
-    76160,
-    76192,
-    76224,
-    76256,
-    76288,
-    76320,
-    76352,
-    76384,
-    76416,
-    76448,
-    76480,
-    76512,
-    76544,
-    76576,
-    76608,
-    76640,
-    76672,
-    76704,
-    76736,
-    76768,
-    76800,
-    76832,
-    76864,
-    76896,
-    76928,
-    76960,
-    76992,
-    77024,
-    77056,
-    77088,
-    77120,
-    77152,
-    77184,
-    77216,
-    77248,
-    77280,
-    77312,
-    77344,
-    77376,
-    77408,
-    77440,
-    77472,
-    77504,
-    77536,
-    77568,
-    77600,
-    77632,
-    77664,
-    77696,
-    77728,
-    77760,
-    77792,
-    77824,
-    77856,
-    77888,
-    77920,
-    77952,
-    77984,
-    78016,
-    78048,
-    78080,
-    78112,
-    78144,
-    78176,
-    78208,
-    78240,
-    78272,
-    78304,
-    78336,
-    78368,
-    78400,
-    78432,
-    78464,
-    78496,
-    78528,
-    78560,
-    78592,
-    78624,
-    78656,
-    78688,
-    78720,
-    78752,
-    78784,
-    78816,
-    78848,
-    78880,
-    78912,
-    78944,
-    78976,
-    79008,
-    79040,
-    79072,
-    79104,
-    79136,
-    79168,
-    79200,
-    79232,
-    79264,
-    79296,
-    79328,
-    79360,
-    79392,
-    79424,
-    79456,
-    79488,
-    79520,
-    79552,
-    79584,
-    79616,
-    79648,
-    79680,
-    79712,
-    79744,
-    79776,
-    79808,
-    79840,
-    79872,
-    79904,
-    79936,
-    79968,
-    80000,
-    80032,
-    80064,
-    80096,
-    80128,
-    80160,
-    80192,
-    80224,
-    80256,
-    80288,
-    80320,
-    80352,
-    80384,
-    80416,
-    80448,
-    80480,
-    80512,
-    80544,
-    80576,
-    80608,
-    80640,
-    80672,
-    80704,
-    80736,
-    80768,
-    80800,
-    80832,
-    80864,
-    80896,
-    80928,
-    80960,
-    80992,
-    81024,
-    81056,
-    81088,
-    81120,
-    81152,
-    81184,
-    81216,
-    81248,
-    81280,
-    81312,
-    81344,
-    81376,
-    81408,
-    81440,
-    81472,
-    81504,
-    81536,
-    81568,
-    81600,
-    81632,
-    81664,
-    81696,
-    81728,
-    81760,
-    81792,
-    81824,
-    81856,
-    81888,
-    81920,
-    81952,
-    81984,
-    82016,
-    82048,
-    82080,
-    82112,
-    82144,
-    82176,
-    82208,
-    82240,
-    82272,
-    82304,
-    82336,
-    82368,
-    82400,
-    82432,
-    82464,
-    82496,
-    82528,
-    82560,
-    82592,
-    82624,
-    82656,
-    82688,
-    82720,
-    82752,
-    82784,
-    82816,
-    82848,
-    82880,
-    82912,
-    82944,
-    82976,
-    83008,
-    83040,
-    83072,
-    83104,
-    83136,
-    83168,
-    83200,
-    83232,
-    83264,
-    83296,
-    83328,
-    83360,
-    83392,
-    83424,
-    83456,
-    83488,
-    83520,
-    83552,
-    83584,
-    83616,
-    83648,
-    83680,
-    83712,
-    83744,
-    83776,
-    83808,
-    83840,
-    83872,
-    83904,
-    83936,
-    83968,
-    84000,
-    84032,
-    84064,
-    84096,
-    84128,
-    84160,
-    84192,
-    84224,
-    84256,
-    84288,
-    84320,
-    84352,
-    84384,
-    84416,
-    84448,
-    84480,
-    84512,
-    84544,
-    84576,
-    84608,
-    84640,
-    84672,
-    84704,
-    84736,
-    84768,
-    84800,
-    84832,
-    84864,
-    84896,
-    84928,
-    84960,
-    84992,
-    85024,
-    85056,
-    85088,
-    85120,
-    85152,
-    85184,
-    85216,
-    85248,
-    85280,
-    85312,
-    85344,
-    85376,
-    85408,
-    85440,
-    85472,
-    85504,
-    85536,
-    85568,
-    85600,
-    85632,
-    85664,
-    85696,
-    85728,
-    85760,
-    85792,
-    85824,
-    85856,
-    85888,
-    85920,
-    85952,
-    85984,
-    86016,
-    86048,
-    86080,
-    86112,
-    86144,
-    86176,
-    86208,
-    86240,
-    86272,
-    86304,
-    86336,
-    86368,
-    86400,
-    86432,
-    86464,
-    86496,
-    86528,
-    86560,
-    86592,
-    86624,
-    86656,
-    86688,
-    86720,
-    86752,
-    86784,
-    86816,
-    86848,
-    86880,
-    86912,
-    86944,
-    86976,
-    87008,
-    87040,
-    87072,
-    87104,
-    87136,
-    87168,
-    87200,
-    87232,
-    87264,
-    87296,
-    87328,
-    87360,
-    87392,
-    87424,
-    87456,
-    87488,
-    87520,
-    87552,
-    87584,
-    87616,
-    87648,
-    87680,
-    87712,
-    87744,
-    87776,
-    87808,
-    87840,
-    87872,
-    87904,
-    87936,
-    87968,
-    88000,
-    88032,
-    88064,
-    88096,
-    88128,
-    88160,
-    88192,
-    88224,
-    88256,
-    88288,
-    88320,
-    88352,
-    88384,
-    88416,
-    88448,
-    88480,
-    88512,
-    88544,
-    88576,
-    88608,
-    88640,
-    88672,
-    88704,
-    88736,
-    88768,
-    88800,
-    88832,
-    88864,
-    88896,
-    88928,
-    88960,
-    88992,
-    89024,
-    89056,
-    89088,
-    89120,
-    89152,
-    89184,
-    89216,
-    89248,
-    89280,
-    89312,
-    89344,
-    89376,
-    89408,
-    89440,
-    89472,
-    89504,
-    89536,
-    89568,
-    89600,
-    89632,
-    89664,
-    89696,
-    89728,
-    89760,
-    89792,
-    89824,
-    89856,
-    89888,
-    89920,
-    89952,
-    89984,
-    90016,
-    90048,
-    90080,
-    90112,
-    90144,
-    90176,
-    90208,
-    90240,
-    90272,
-    90304,
-    90336,
-    90368,
-    90400,
-    90432,
-    90464,
-    90496,
-    90528,
-    90560,
-    90592,
-    90624,
-    90656,
-    90688,
-    90720,
-    90752,
-    90784,
-    90816,
-    90848,
-    90880,
-    90912,
-    90944,
-    90976,
-    91008,
-    91040,
-    91072,
-    91104,
-    91136,
-    91168,
-    91200,
-    91232,
-    91264,
-    91296,
-    91328,
-    91360,
-    91392,
-    91424,
-    91456,
-    91488,
-    91520,
-    91552,
-    91584,
-    91616,
-    91648,
-    91680,
-    91712,
-    91744,
-    91776,
-    91808,
-    91840,
-    91872,
-    91904,
-    91936,
-    91968,
-    92000,
-    92032,
-    92064,
-    92096,
-    92128,
-    92160,
-    92192,
-    92224,
-    92256,
-    92288,
-    92320,
-    92352,
-    92384,
-    92416,
-    92448,
-    92480,
-    92512,
-    92544,
-    92576,
-    92608,
-    92640,
-    92672,
-    92704,
-    92736,
-    92768,
-    92800,
-    92832,
-    92864,
-    92896,
-    92928,
-    92960,
-    92992,
-    93024,
-    93056,
-    93088,
-    93120,
-    93152,
-    93184,
-    93216,
-    93248,
-    93280,
-    93312,
-    93344,
-    93376,
-    93408,
-    93440,
-    93472,
-    93504,
-    93536,
-    93568,
-    93600,
-    93632,
-    93664,
-    93696,
-    93728,
-    93760,
-    93792,
-    93824,
-    93856,
-    93888,
-    93920,
-    93952,
-    93984,
-    94016,
-    94048,
-    94080,
-    94112,
-    94144,
-    94176,
-    94208,
-    94240,
-    94272,
-    94304,
-    94336,
-    94368,
-    94400,
-    94432,
-    94464,
-    94496,
-    94528,
-    94560,
-    94592,
-    94624,
-    94656,
-    94688,
-    94720,
-    94752,
-    94784,
-    94816,
-    94848,
-    94880,
-    94912,
-    94944,
-    94976,
-    95008,
-    95040,
-    95072,
-    95104,
-    95136,
-    95168,
-    95200,
-    95232,
-    95264,
-    95296,
-    95328,
-    95360,
-    95392,
-    95424,
-    95456,
-    95488,
-    95520,
-    95552,
-    95584,
-    95616,
-    95648,
-    95680,
-    95712,
-    95744,
-    95776,
-    95808,
-    95840,
-    95872,
-    95904,
-    95936,
-    95968,
-    96000,
-    96032,
-    96064,
-    96096,
-    96128,
-    96160,
-    96192,
-    96224,
-    96256,
-    96288,
-    96320,
-    96352,
-    96384,
-    96416,
-    96448,
-    96480,
-    96512,
-    96544,
-    96576,
-    96608,
-    96640,
-    96672,
-    96704,
-    96736,
-    96768,
-    96800,
-    96832,
-    96864,
-    96896,
-    96928,
-    96960,
-    96992,
-    97024,
-    97056,
-    97088,
-    97120,
-    97152,
-    97184,
-    97216,
-    97248,
-    97280,
-    97312,
-    97344,
-    97376,
-    97408,
-    97440,
-    97472,
-    97504,
-    97536,
-    97568,
-    97600,
-    97632,
-    97664,
-    97696,
-    97728,
-    97760,
-    97792,
-    97824,
-    97856,
-    97888,
-    97920,
-    97952,
-    97984,
-    98016,
-    98048,
-    98080,
-    98112,
-    98144,
-    98176,
-    98208,
-    98240,
-    98272,
-    98304,
-    98336,
-    98368,
-    98400,
-    98432,
-    98464,
-    98496,
-    98528,
-    98560,
-    98592,
-    98624,
-    98656,
-    98688,
-    98720,
-    98752,
-    98784,
-    98816,
-    98848,
-    98880,
-    98912,
-    98944,
-    98976,
-    99008,
-    99040,
-    99072,
-    99104,
-    99136,
-    99168,
-    99200,
-    99232,
-    99264,
-    99296,
-    99328,
-    99360,
-    99392,
-    99424,
-    99456,
-    99488,
-    99520,
-    99552,
-    99584,
-    99616,
-    99648,
-    99680,
-    99712,
-    99744,
-    99776,
-    99808,
-    99840,
-    99872,
-    99904,
-    99936,
-    99968,
-    100000,
-    100032,
-    100064,
-    100096,
-    100128,
-    100160,
-    100192,
-    100224,
-    100256,
-    100288,
-    100320,
-    100352,
-    100384,
-    100416,
-    100448,
-    100480,
-    100512,
-    100544,
-    100576,
-    100608,
-    100640,
-    100672,
-    100704,
-    100736,
-    100768,
-    100800,
-    100832,
-    100864,
-    100896,
-    100928,
-    100960,
-    100992,
-    101024,
-    101056,
-    101088,
-    101120,
-    101152,
-    101184,
-    101216,
-    101248,
-    101280,
-    101312,
-    101344,
-    101376,
-    101408,
-    101440,
-    101472,
-    101504,
-    101536,
-    101568,
-    101600,
-    101632,
-    101664,
-    101696,
-    101728,
-    101760,
-    101792,
-    101824,
-    101856,
-    101888,
-    101920,
-    101952,
-    101984,
-    102016,
-    102048,
-    102080,
-    102112,
-    102144,
-    102176,
-    102208,
-    102240,
-    102272,
-    102304,
-    102336,
-    102368,
-    102400,
-    102432,
-    102464,
-    102496,
-    102528,
-    102560,
-    102592,
-    102624,
-    102656,
-    102688,
-    102720,
-    102752,
-    102784,
-    102816,
-    102848,
-    102880,
-    102912,
-    102944,
-    102976,
-    103008,
-    103040,
-    103072,
-    103104,
-    103136,
-    103168,
-    103200,
-    103232,
-    103264,
-    103296,
-    103328,
-    103360,
-    103392,
-    103424,
-    103456,
-    103488,
-    103520,
-    103552,
-    103584,
-    103616,
-    103648,
-    103680,
-    103712,
-    103744,
-    103776,
-    103808,
-    103840,
-    103872,
-    103904,
-    103936,
-    103968,
-    104000,
-    104032,
-    104064,
-    104096,
-    104128,
-    104160,
-    104192,
-    104224,
-    104256,
-    104288,
-    104320,
-    104352,
-    104384,
-    104416,
-    104448,
-    104480,
-    104512,
-    104544,
-    104576,
-    104608,
-    104640,
-    104672,
-    104704,
-    104736,
-    104768,
-    104800,
-    104832,
-    104864,
-    104896,
-    104928,
-    104960,
-    104992,
-    105024,
-    105056,
-    105088,
-    105120,
-    105152,
-    105184,
-    105216,
-    105248,
-    105280,
-    105312,
-    105344,
-    105376,
-    105408,
-    105440,
-    105472,
-    105504,
-    105536,
-    105568,
-    105600,
-    105632,
-    105664,
-    105696,
-    105728,
-    105760,
-    105792,
-    105824,
-    105856,
-    105888,
-    105920,
-    105952,
-    105984,
-    106016,
-    106048,
-    106080,
-    106112,
-    106144,
-    106176,
-    106208,
-    106240,
-    106272,
-    106304,
-    106336,
-    106368,
-    106400,
-    106432,
-    106464,
-    106496,
-    106528,
-    106560,
-    106592,
-    106624,
-    106656,
-    106688,
-    106720,
-    106752,
-    106784,
-    106816,
-    106848,
-    106880,
-    106912,
-    106944,
-    106976,
-    107008,
-    107040,
-    107072,
-    107104,
-    107136,
-    107168,
-    107200,
-    107232,
-    107264,
-    107296,
-    107328,
-    107360,
-    107392,
-    107424,
-    107456,
-    107488,
-    107520,
-    107552,
-    107584,
-    107616,
-    107648,
-    107680,
-    107712,
-    107744,
-    107776,
-    107808,
-    107840,
-    107872,
-    107904,
-    107936,
-    107968,
-    108000,
-    108032,
-    108064,
-    108096,
-    108128,
-    108160,
-    108192,
-    108224,
-    108256,
-    108288,
-    108320,
-    108352,
-    108384,
-    108416,
-    108448,
-    108480,
-    108512,
-    108544,
-    108576,
-    108608,
-    108640,
-    108672,
-    108704,
-    108736,
-    108768,
-    108800,
-    108832,
-    108864,
-    108896,
-    108928,
-    108960,
-    108992,
-    109024,
-    109056,
-    109088,
-    109120,
-    109152,
-    109184,
-    109216,
-    109248,
-    109280,
-    109312,
-    109344,
-    109376,
-    109408,
-    109440,
-    109472,
-    109504,
-    109536,
-    109568,
-    109600,
-    109632,
-    109664,
-    109696,
-    109728,
-    109760,
-    109792,
-    109824,
-    109856,
-    109888,
-    109920,
-    109952,
-    109984,
-    110016,
-    110048,
-    110080,
-    110112,
-    110144,
-    110176,
-    110208,
-    110240,
-    110272,
-    110304,
-    110336,
-    110368,
-    110400,
-    110432,
-    110464,
-    110496,
-    110528,
-    110560,
-    110592,
-    110624,
-    110656,
-    110688,
-    110720,
-    110752,
-    110784,
-    110816,
-    110848,
-    110880,
-    110912,
-    110944,
-    110976,
-    111008,
-    111040,
-    111072,
-    111104,
-    111136,
-    111168,
-    111200,
-    111232,
-    111264,
-    111296,
-    111328,
-    111360,
-    111392,
-    111424,
-    111456,
-    111488,
-    111520,
-    111552,
-    111584,
-    111616,
-    111648,
-    111680,
-    111712,
-    111744,
-    111776,
-    111808,
-    111840,
-    111872,
-    111904,
-    111936,
-    111968,
-    112000,
-    112032,
-    112064,
-    112096,
-    112128,
-    112160,
-    112192,
-    112224,
-    112256,
-    112288,
-    112320,
-    112352,
-    112384,
-    112416,
-    112448,
-    112480,
-    112512,
-    112544,
-    112576,
-    112608,
-    112640,
-    112672,
-    112704,
-    112736,
-    112768,
-    112800,
-    112832,
-    112864,
-    112896,
-    112928,
-    112960,
-    112992,
-    113024,
-    113056,
-    113088,
-    113120,
-    113152,
-    113184,
-    113216,
-    113248,
-    113280,
-    113312,
-    113344,
-    113376,
-    113408,
-    113440,
-    113472,
-    113504,
-    113536,
-    113568,
-    113600,
-    113632,
-    113664,
-    113696,
-    113728,
-    113760,
-    113792,
-    113824,
-    113856,
-    113888,
-    113920,
-    113952,
-    113984,
-    114016,
-    114048,
-    114080,
-    114112,
-    114144,
-    114176,
-    114208,
-    114240,
-    114272,
-    114304,
-    114336,
-    114368,
-    114400,
-    114432,
-    114464,
-    114496,
-    114528,
-    114560,
-    114592,
-    114624,
-    114656,
-    114688,
-    114720,
-    114752,
-    114784,
-    114816,
-    114848,
-    114880,
-    114912,
-    114944,
-    114976,
-    115008,
-    115040,
-    115072,
-    115104,
-    115136,
-    115168,
-    115200,
-    115232,
-    115264,
-    115296,
-    115328,
-    115360,
-    115392,
-    115424,
-    115456,
-    115488,
-    115520,
-    115552,
-    115584,
-    115616,
-    115648,
-    115680,
-    115712,
-    115744,
-    115776,
-    115808,
-    115840,
-    115872,
-    115904,
-    115936,
-    115968,
-    116000,
-    116032,
-    116064,
-    116096,
-    116128,
-    116160,
-    116192,
-    116224,
-    116256,
-    116288,
-    116320,
-    116352,
-    116384,
-    116416,
-    116448,
-    116480,
-    116512,
-    116544,
-    116576,
-    116608,
-    116640,
-    116672,
-    116704,
-    116736,
-    116768,
-    116800,
-    116832,
-    116864,
-    116896,
-    116928,
-    116960,
-    116992,
-    117024,
-    117056,
-    117088,
-    117120,
-    117152,
-    117184,
-    117216,
-    117248,
-    117280,
-    117312,
-    117344,
-    117376,
-    117408,
-    117440,
-    117472,
-    117504,
-    117536,
-    117568,
-    117600,
-    117632,
-    117664,
-    117696,
-    117728,
-    117760,
-    117792,
-    117824,
-    117856,
-    117888,
-    117920,
-    117952,
-    117984,
-    118016,
-    118048,
-    118080,
-    118112,
-    118144,
-    118176,
-    118208,
-    118240,
-    118272,
-    118304,
-    118336,
-    118368,
-    118400,
-    118432,
-    118464,
-    118496,
-    118528,
-    118560,
-    118592,
-    118624,
-    118656,
-    118688,
-    118720,
-    118752,
-    118784,
-    118816,
-    118848,
-    118880,
-    118912,
-    118944,
-    118976,
-    119008,
-    119040,
-    119072,
-    119104,
-    119136,
-    119168,
-    119200,
-    119232,
-    119264,
-    119296,
-    119328,
-    119360,
-    119392,
-    119424,
-    119456,
-    119488,
-    119520,
-    119552,
-    119584,
-    119616,
-    119648,
-    119680,
-    119712,
-    119744,
-    119776,
-    119808,
-    119840,
-    119872,
-    119904,
-    119936,
-    119968,
-    120000,
-    120032,
-    120064,
-    120096,
-    120128,
-    120160,
-    120192,
-    120224,
-    120256,
-    120288,
-    120320,
-    120352,
-    120384,
-    120416,
-    120448,
-    120480,
-    120512,
-    120544,
-    120576,
-    120608,
-    120640,
-    120672,
-    120704,
-    120736,
-    120768,
-    120800,
-    120832,
-    120864,
-    120896,
-    120928,
-    120960,
-    120992,
-    121024,
-    121056,
-    121088,
-    121120,
-    121152,
-    121184,
-    121216,
-    121248,
-    121280,
-    121312,
-    121344,
-    121376,
-    121408,
-    121440,
-    121472,
-    121504,
-    121536,
-    121568,
-    121600,
-    121632,
-    121664,
-    121696,
-    121728,
-    121760,
-    121792,
-    121824,
-    121856,
-    121888,
-    121920,
-    121952,
-    121984,
-    122016,
-    122048,
-    122080,
-    122112,
-    122144,
-    122176,
-    122208,
-    122240,
-    122272,
-    122304,
-    122336,
-    122368,
-    122400,
-    122432,
-    122464,
-    122496,
-    122528,
-    122560,
-    122592,
-    122624,
-    122656,
-    122688,
-    122720,
-    122752,
-    122784,
-    122816,
-    122848,
-    122880,
-    122912,
-    122944,
-    122976,
-    123008,
-    123040,
-    123072,
-    123104,
-    123136,
-    123168,
-    123200,
-    123232,
-    123264,
-    123296,
-    123328,
-    123360,
-    123392,
-    123424,
-    123456,
-    123488,
-    123520,
-    123552,
-    123584,
-    123616,
-    123648,
-    123680,
-    123712,
-    123744,
-    123776,
-    123808,
-    123840,
-    123872,
-    123904,
-    123936,
-    123968,
-    124000,
-    124032,
-    124064,
-    124096,
-    124128,
-    124160,
-    124192,
-    124224,
-    124256,
-    124288,
-    124320,
-    124352,
-    124384,
-    124416,
-    124448,
-    124480,
-    124512,
-    124544,
-    124576,
-    124608,
-    124640,
-    124672,
-    124704,
-    124736,
-    124768,
-    124800,
-    124832,
-    124864,
-    124896,
-    124928,
-    124960,
-    124992,
-    125024,
-    125056,
-    125088,
-    125120,
-    125152,
-    125184,
-    125216,
-    125248,
-    125280,
-    125312,
-    125344,
-    125376,
-    125408,
-    125440,
-    125472,
-    125504,
-    125536,
-    125568,
-    125600,
-    125632,
-    125664,
-    125696,
-    125728,
-    125760,
-    125792,
-    125824,
-    125856,
-    125888,
-    125920,
-    125952,
-    125984,
-    126016,
-    126048,
-    126080,
-    126112,
-    126144,
-    126176,
-    126208,
-    126240,
-    126272,
-    126304,
-    126336,
-    126368,
-    126400,
-    126432,
-    126464,
-    126496,
-    126528,
-    126560,
-    126592,
-    126624,
-    126656,
-    126688,
-    126720,
-    126752,
-    126784,
-    126816,
-    126848,
-    126880,
-    126912,
-    126944,
-    126976,
-    127008,
-    127040,
-    127072,
-    127104,
-    127136,
-    127168,
-    127200,
-    127232,
-    127264,
-    127296,
-    127328,
-    127360,
-    127392,
-    127424,
-    127456,
-    127488,
-    127520,
-    127552,
-    127584,
-    127616,
-    127648,
-    127680,
-    127712,
-    127744,
-    127776,
-    127808,
-    127840,
-    127872,
-    127904,
-    127936,
-    127968,
-    128000,
-    128032,
-    128064,
-    128096,
-    128128,
-    128160,
-    128192,
-    128224,
-    128256,
-    128288,
-    128320,
-    128352,
-    128384,
-    128416,
-    128448,
-    128480,
-    128512,
-    128544,
-    128576,
-    128608,
-    128640,
-    128672,
-    128704,
-    128736,
-    128768,
-    128800,
-    128832,
-    128864,
-    128896,
-    128928,
-    128960,
-    128992,
-    129024,
-    129056,
-    129088,
-    129120,
-    129152,
-    129184,
-    129216,
-    129248,
-    129280,
-    129312,
-    129344,
-    129376,
-    129408,
-    129440,
-    129472,
-    129504,
-    129536,
-    129568,
-    129600,
-    129632,
-    129664,
-    129696,
-    129728,
-    129760,
-    129792,
-    129824,
-    129856,
-    129888,
-    129920,
-    129952,
-    129984,
-    130016,
-    130048,
-    130080,
-    130112,
-    130144,
-    130176,
-    130208,
-    130240,
-    130272,
-    130304,
-    130336,
-    130368,
-    130400,
-    130432,
-    130464,
-    130496,
-    130528,
-    130560,
-    130592,
-    130624,
-    130656,
-    130688,
-    130720,
-    130752,
-    130784,
-    130816,
-    130848,
-    130880,
-    130912,
-    130944,
-    130976,
-    131008,
-    131040,
-    131072,
-    131104,
-    131136,
-    131168,
-    131200,
-    131232,
-    131264,
-    131296,
-    131328,
-    131360,
-    131392,
-    131424,
-    131456,
-    131488,
-    131520,
-    131552,
-    131584,
-    131616,
-    131648,
-    131680,
-    131712,
-    131744,
-    131776,
-    131808,
-    131840,
-    131872,
-    131904,
-    131936,
-    131968,
-    132000,
-    132032,
-    132064,
-    132096,
-    132128,
-    132160,
-    132192,
-    132224,
-    132256,
-    132288,
-    132320,
-    132352,
-    132384,
-    132416,
-    132448,
-    132480,
-    132512,
-    132544,
-    132576,
-    132608,
-    132640,
-    132672,
-    132704,
-    132736,
-    132768,
-    132800,
-    132832,
-    132864,
-    132896,
-    132928,
-    132960,
-    132992,
-    133024,
-    133056,
-    133088,
-    133120,
-    133152,
-    133184,
-    133216,
-    133248,
-    133280,
-    133312,
-    133344,
-    133376,
-    133408,
-    133440,
-    133472,
-    133504,
-    133536,
-    133568,
-    133600,
-    133632,
-    133664,
-    133696,
-    133728,
-    133760,
-    133792,
-    133824,
-    133856,
-    133888,
-    133920,
-    133952,
-    133984,
-    134016,
-    134048,
-    134080,
-    134112,
-    134144,
-    134176,
-    134208,
-    134240,
-    134272,
-    134304,
-    134336,
-    134368,
-    134400,
-    134432,
-    134464,
-    134496,
-    134528,
-    134560,
-    134592,
-    134624,
-    134656,
-    134688,
-    134720,
-    134752,
-    134784,
-    134816,
-    134848,
-    134880,
-    134912,
-    134944,
-    134976,
-    135008,
-    135040,
-    135072,
-    135104,
-    135136,
-    135168,
-    135200,
-    135232,
-    135264,
-    135296,
-    135328,
-    135360,
-    135392,
-    135424,
-    135456,
-    135488,
-    135520,
-    135552,
-    135584,
-    135616,
-    135648,
-    135680,
-    135712,
-    135744,
-    135776,
-    135808,
-    135840,
-    135872,
-    135904,
-    135936,
-    135968,
-    136000,
-    136032,
-    136064,
-    136096,
-    136128,
-    136160,
-    136192,
-    136224,
-    136256,
-    136288,
-    136320,
-    136352,
-    136384,
-    136416,
-    136448,
-    136480,
-    136512,
-    136544,
-    136576,
-    136608,
-    136640,
-    136672,
-    136704,
-    136736,
-    136768,
-    136800,
-    136832,
-    136864,
-    136896,
-    136928,
-    136960,
-    136992,
-    137024,
-    137056,
-    137088,
-    137120,
-    137152,
-    137184,
-    137216,
-    137248,
-    137280,
-    137312,
-    137344,
-    137376,
-    137408,
-    137440,
-    137472,
-    137504,
-    137536,
-    137568,
-    137600,
-    137632,
-    137664,
-    137696,
-    137728,
-    137760,
-    137792,
-    137824,
-    137856,
-    137888,
-    137920,
-    137952,
-    137984,
-    138016,
-    138048,
-    138080,
-    138112,
-    138144,
-    138176,
-    138208,
-    138240,
-    138272,
-    138304,
-    138336,
-    138368,
-    138400,
-    138432,
-    138464,
-    138496,
-    138528,
-    138560,
-    138592,
-    138624,
-    138656,
-    138688,
-    138720,
-    138752,
-    138784,
-    138816,
-    138848,
-    138880,
-    138912,
-    138944,
-    138976,
-    139008,
-    139040,
-    139072,
-    139104,
-    139136,
-    139168,
-    139200,
-    139232,
-    139264,
-    139296,
-    139328,
-    139360,
-    139392,
-    139424,
-    139456,
-    139488,
-    139520,
-    139552,
-    139584,
-    139616,
-    139648,
-    139680,
-    139712,
-    139744,
-    139776,
-    139808,
-    139840,
-    139872,
-    139904,
-    139936,
-    139968,
-    140000,
-    140032,
-    140064,
-    140096,
-    140128,
-    140160,
-    140192,
-    140224,
-    140256,
-    140288,
-    140320,
-    140352,
-    140384,
-    140416,
-    140448,
-    140480,
-    140512,
-    140544,
-    140576,
-    140608,
-    140640,
-    140672,
-    140704,
-    140736,
-    140768,
-    140800,
-    140832,
-    140864,
-    140896,
-    140928,
-    140960,
-    140992,
-    141024,
-    141056,
-    141088,
-    141120,
-    141152,
-    141184,
-    141216,
-    141248,
-    141280,
-    141312,
-    141344,
-    141376,
-    141408,
-    141440,
-    141472,
-    141504,
-    141536,
-    141568,
-    141600,
-    141632,
-    141664,
-    141696,
-    141728,
-    141760,
-    141792,
-    141824,
-    141856,
-    141888,
-    141920,
-    141952,
-    141984,
-    142016,
-    142048,
-    142080,
-    142112,
-    142144,
-    142176,
-    142208,
-    142240,
-    142272,
-    142304,
-    142336,
-    142368,
-    142400,
-    142432,
-    142464,
-    142496,
-    142528,
-    142560,
-    142592,
-    142624,
-    142656,
-    142688,
-    142720,
-    142752,
-    142784,
-    142816,
-    142848,
-    142880,
-    142912,
-    142944,
-    142976,
-    143008,
-    143040,
-    143072,
-    143104,
-    143136,
-    143168,
-    143200,
-    143232,
-    143264,
-    143296,
-    143328,
-    143360,
-    143392,
-    143424,
-    143456,
-    143488,
-    143520,
-    143552,
-    143584,
-    143616,
-    143648,
-    143680,
-    143712,
-    143744,
-    143776,
-    143808,
-    143840,
-    143872,
-    143904,
-    143936,
-    143968,
-    144000,
-    144032,
-    144064,
-    144096,
-    144128,
-    144160,
-    144192,
-    144224,
-    144256,
-    144288,
-    144320,
-    144352,
-    144384,
-    144416,
-    144448,
-    144480,
-    144512,
-    144544,
-    144576,
-    144608,
-    144640,
-    144672,
-    144704,
-    144736,
-    144768,
-    144800,
-    144832,
-    144864,
-    144896,
-    144928,
-    144960,
-    144992,
-    145024,
-    145056,
-    145088,
-    145120,
-    145152,
-    145184,
-    145216,
-    145248,
-    145280,
-    145312,
-    145344,
-    145376,
-    145408,
-    145440,
-    145472,
-    145504,
-    145536,
-    145568,
-    145600,
-    145632,
-    145664,
-    145696,
-    145728,
-    145760,
-    145792,
-    145824,
-    145856,
-    145888,
-    145920,
-    145952,
-    145984,
-    146016,
-    146048,
-    146080,
-    146112,
-    146144,
-    146176,
-    146208,
-    146240,
-    146272,
-    146304,
-    146336,
-    146368,
-    146400,
-    146432,
-    146464,
-    146496,
-    146528,
-    146560,
-    146592,
-    146624,
-    146656,
-    146688,
-    146720,
-    146752,
-    146784,
-    146816,
-    146848,
-    146880,
-    146912,
-    146944,
-    146976,
-    147008,
-    147040,
-    147072,
-    147104,
-    147136,
-    147168,
-    147200,
-    147232,
-    147264,
-    147296,
-    147328,
-    147360,
-    147392,
-    147424,
-    147456,
-    147488,
-    147520,
-    147552,
-    147584,
-    147616,
-    147648,
-    147680,
-    147712,
-    147744,
-    147776,
-    147808,
-    147840,
-    147872,
-    147904,
-    147936,
-    147968,
-    148000,
-    148032,
-    148064,
-    148096,
-    148128,
-    148160,
-    148192,
-    148224,
-    148256,
-    148288,
-    148320,
-    148352,
-    148384,
-    148416,
-    148448,
-    148480,
-    148512,
-    148544,
-    148576,
-    148608,
-    148640,
-    148672,
-    148704,
-    148736,
-    148768,
-    148800,
-    148832,
-    148864,
-    148896,
-    148928,
-    148960,
-    148992,
-    149024,
-    149056,
-    149088,
-    149120,
-    149152,
-    149184,
-    149216,
-    149248,
-    149280,
-    149312,
-    149344,
-    149376,
-    149408,
-    149440,
-    149472,
-    149504,
-    149536,
-    149568,
-    149600,
-    149632,
-    149664,
-    149696,
-    149728,
-    149760,
-    149792,
-    149824,
-    149856,
-    149888,
-    149920,
-    149952,
-    149984,
-    150016,
-    150048,
-    150080,
-    150112,
-    150144,
-    150176,
-    150208,
-    150240,
-    150272,
-    150304,
-    150336,
-    150368,
-    150400,
-    150432,
-    150464,
-    150496,
-    150528,
-    150560,
-    150592,
-    150624,
-    150656,
-    150688,
-    150720,
-    150752,
-    150784,
-    150816,
-    150848,
-    150880,
-    150912,
-    150944,
-    150976,
-    151008,
-    151040,
-    151072,
-    151104,
-    151136,
-    151168,
-    151200,
-    151232,
-    151264,
-    151296,
-    151328,
-    151360,
-    151392,
-    151424,
-    151456,
-    151488,
-    151520,
-    151552,
-    151584,
-    151616,
-    151648,
-    151680,
-    151712,
-    151744,
-    151776,
-    151808,
-    151840,
-    151872,
-    151904,
-    151936,
-    151968,
-    152000,
-    152032,
-    152064,
-    152096,
-    152128,
-    152160,
-    152192,
-    152224,
-    152256,
-    152288,
-    152320,
-    152352,
-    152384,
-    152416,
-    152448,
-    152480,
-    152512,
-    152544,
-    152576,
-    152608,
-    152640,
-    152672,
-    152704,
-    152736,
-    152768,
-    152800,
-    152832,
-    152864,
-    152896,
-    152928,
-    152960,
-    152992,
-    153024,
-    153056,
-    153088,
-    153120,
-    153152,
-    153184,
-    153216,
-    153248,
-    153280,
-    153312,
-    153344,
-    153376,
-    153408,
-    153440,
-    153472,
-    153504,
-    153536,
-    153568,
-    153600,
-    153632,
-    153664,
-    153696,
-    153728,
-    153760,
-    153792,
-    153824,
-    153856,
-    153888,
-    153920,
-    153952,
-    153984,
-    154016,
-    154048,
-    154080,
-    154112,
-    154144,
-    154176,
-    154208,
-    154240,
-    154272,
-    154304,
-    154336,
-    154368,
-    154400,
-    154432,
-    154464,
-    154496,
-    154528,
-    154560,
-    154592,
-    154624,
-    154656,
-    154688,
-    154720,
-    154752,
-    154784,
-    154816,
-    154848,
-    154880,
-    154912,
-    154944,
-    154976,
-    155008,
-    155040,
-    155072,
-    155104,
-    155136,
-    155168,
-    155200,
-    155232,
-    155264,
-    155296,
-    155328,
-    155360,
-    155392,
-    155424,
-    155456,
-    155488,
-    155520,
-    155552,
-    155584,
-    155616,
-    155648,
-    155680,
-    155712,
-    155744,
-    155776,
-    155808,
-    155840,
-    155872,
-    155904,
-    155936,
-    155968,
-    156000,
-    156032,
-    156064,
-    156096,
-    156128,
-    156160,
-    156192,
-    156224,
-    156256,
-    156288,
-    156320,
-    156352,
-    156384,
-    156416,
-    156448,
-    156480,
-    156512,
-    156544,
-    156576,
-    156608,
-    156640,
-    156672,
-    156704,
-    156736,
-    156768,
-    156800,
-    156832,
-    156864,
-    156896,
-    156928,
-    156960,
-    156992,
-    157024,
-    157056,
-    157088,
-    157120,
-    157152,
-    157184,
-    157216,
-    157248,
-    157280,
-    157312,
-    157344,
-    157376,
-    157408,
-    157440,
-    157472,
-    157504,
-    157536,
-    157568,
-    157600,
-    157632,
-    157664,
-    157696,
-    157728,
-    157760,
-    157792,
-    157824,
-    157856,
-    157888,
-    157920,
-    157952,
-    157984,
-    158016,
-    158048,
-    158080,
-    158112,
-    158144,
-    158176,
-    158208,
-    158240,
-    158272,
-    158304,
-    158336,
-    158368,
-    158400,
-    158432,
-    158464,
-    158496,
-    158528,
-    158560,
-    158592,
-    158624,
-    158656,
-    158688,
-    158720,
-    158752,
-    158784,
-    158816,
-    158848,
-    158880,
-    158912,
-    158944,
-    158976,
-    159008,
-    159040,
-    159072,
-    159104,
-    159136,
-    159168,
-    159200,
-    159232,
-    159264,
-    159296,
-    159328,
-    159360,
-    159392,
-    159424,
-    159456,
-    159488,
-    159520,
-    159552,
-    159584,
-    159616,
-    159648,
-    159680,
-    159712,
-    159744,
-    159776,
-    159808,
-    159840,
-    159872,
-    159904,
-    159936,
-    159968,
-    160000,
-    160032,
-    160064,
-    160096,
-    160128,
-    160160,
-    160192,
-    160224,
-    160256,
-    160288,
-    160320,
-    160352,
-    160384,
-    160416,
-    160448,
-    160480,
-    160512,
-    160544,
-    160576,
-    160608,
-    160640,
-    160672,
-    160704,
-    160736,
-    160768,
-    160800,
-    160832,
-    160864,
-    160896,
-    160928,
-    160960,
-    160992,
-    161024,
-    161056,
-    161088,
-    161120,
-    161152,
-    161184,
-    161216,
-    161248,
-    161280,
-    161312,
-    161344,
-    161376,
-    161408,
-    161440,
-    161472,
-    161504,
-    161536,
-    161568,
-    161600,
-    161632,
-    161664,
-    161696,
-    161728,
-    161760,
-    161792,
-    161824,
-    161856,
-    161888,
-    161920,
-    161952,
-    161984,
-    162016,
-    162048,
-    162080,
-    162112,
-    162144,
-    162176,
-    162208,
-    162240,
-    162272,
-    162304,
-    162336,
-    162368,
-    162400,
-    162432,
-    162464,
-    162496,
-    162528,
-    162560,
-    162592,
-    162624,
-    162656,
-    162688,
-    162720,
-    162752,
-    162784,
-    162816,
-    162848,
-    162880,
-    162912,
-    162944,
-    162976,
-    163008,
-    163040,
-    163072,
-    163104,
-    163136,
-    163168,
-    163200,
-    163232,
-    163264,
-    163296,
-    163328,
-    163360,
-    163392,
-    163424,
-    163456,
-    163488,
-    163520,
-    163552,
-    163584,
-    163616,
-    163648,
-    163680,
-    163712,
-    163744,
-    163776,
-    163808,
-    163840,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwidemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwidemipiraw_Sensor.c
deleted file mode 100755
index d6af2528..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwidemipiraw_Sensor.c
+++ /dev/null
@@ -1,3646 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 sayramuwidemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "sayramuwidemipiraw_Sensor.h"
-
-#define SAYRAMUWIDE_EEPROM_READ_ID	0xA1
-#define SAYRAMUWIDE_EEPROM_WRITE_ID   0xA0
-#define SAYRAMUWIDE_MAX_OFFSET		0x4000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "sayramuwide_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x4000
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x468
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x600
-#define AF_CODE_SIZE 6
-
-static bool module_flag = FALSE;
-static bool bNeedSetNormalMode = FALSE;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-#define MAX_BURST_LEN  2048
-static u8 * msg_buf = NULL;
-
-static int group_hold_frame_count = 0;
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int sayramuwide_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void sayramuwide_set_shutter_convert(struct subdrv_ctx *ctx, u32 shutter);
-static int sayramuwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int get_sensor_temperature(void *arg);
-static void get_sensor_cali(void* arg);
-static void set_sensor_cali(void *arg);
-static int sayramuwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain);
-static int sayramuwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_set_multi_shutter_frame_length_in_lut(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void sayramuwide_set_multi_shutter_frame_length_in_lut_convert(struct subdrv_ctx *ctx,
-	u64 *shutters, u16 exp_cnt, u32 frame_length, u32 *frame_length_in_lut);
-static void sayramuwide_write_frame_length_in_lut(struct subdrv_ctx *ctx, u32 fll, u32 *fll_in_lut);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int sayramuwide_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int sayramuwide_i2c_burst_wr_regs_u16(struct subdrv_ctx *ctx, u16 * list, u32 len);
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx,
-		u16 addr, u16 *list, u32 len);
-static void sayramuwide_lens_pos_writeback(struct subdrv_ctx *ctx);
-static int sayramuwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void sayramuwide_set_max_framerate_in_lut_by_scenario(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id, u32 framerate);
-/* STRUCT */
-
-static kal_uint16 g_af_code_macro    = 0;
-static kal_uint16 g_af_code_infinity = 0;
-
-static struct eeprom_map_info sayramuwide_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x000F, 0x0010, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x000F, 0x0010, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x51F0, 0x0000, 0x0000, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x2780, 0x2D89, 0x2D8A, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x31C0, 0x3859, 0x385A, CALI_DATA_MASTER_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, sayramuwide_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, sayramuwide_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, sayramuwide_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, sayramuwide_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, sayramuwide_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, sayramuwide_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, sayramuwide_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, sayramuwide_streaming_resume},
-	{SENSOR_FEATURE_SET_ESHUTTER, sayramuwide_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, sayramuwide_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_GAIN, sayramuwide_set_gain},
-	{SENSOR_FEATURE_SET_HDR_SHUTTER, sayramuwide_set_hdr_tri_shutter2},
-	{SENSOR_FEATURE_SET_HDR_TRI_SHUTTER, sayramuwide_set_hdr_tri_shutter3},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, sayramuwide_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, sayramuwide_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_SET_AWB_GAIN, sayramuwide_set_awb_gain},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME_IN_LUT, sayramuwide_set_multi_shutter_frame_length_in_lut},
-	{SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO, sayramuwide_set_max_framerate_by_scenario},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01AB010A,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA0,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_NORMAL,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 384}, {0, 0},
-		/*     */
-		{0, 384}, {0, 384}, {0, 0}, {0, 0}, {0, 0},
-		/*  */
-		{0, 0}, {416, 312},
-	},
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_NORMAL,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 384}, {0, 0}, {0, 0}, {208, 156}, {96, 72},
-		/*     */
-		{0, 192}, {0, 192}, {0, 0}, {0, 192}, {0, 0},
-	},
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX =  0,
-	.i4PitchY =  0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.iMirrorFlip = IMAGE_NORMAL,
-	// i4Crop = (fullRaw - imgSz) / 2 / Bin
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 384}, {0, 0}, {0, 0}, {3280, 2460}, {3168, 3276},
-		/*      */
-		{0, 0}, {0, 384}, {0, 384}, {0, 0}, {2048, 1536}, {2048, 1536},
-	},
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 8,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, // R=1, L=0
-	},
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info = {
-	.gain_ratio = 1000,
-	.OB_pedestal = 64,
-	.saturation_level = 1023,
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_12bit = {
-	.gain_ratio = 4000,
-	.OB_pedestal = 256,
-	.saturation_level = 4095,
-};
-
-static u32 sayramuwide_dcg_ratio_table_10bit[] = {4000};
-static u32 sayramuwide_dcg_ratio_table_12bit[] = {4000};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 8192x6144 Fullsize bayer mode 6*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-/* 8192x6144 Fullsize QBC mode 7*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-/* 1632X1224 24fps subsample */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1224,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 1632,
-			.vsize = 306,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 1856x1392 24fps subsample*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1856,
-			.vsize = 1392,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 1856,
-			.vsize = 348,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 4096x2304@30fps DSG sensor merge raw12 */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2C,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_ME,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 4,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-/* 4096x3072 60fps binning*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 4096x3072 30fps, DAG sensor merge 12bit */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2C,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_4096x3072_30fps_3056Msps izoom */
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-/* 14_OceanDX4_03_JN5_Full_12.5Mp_Bypass_4096x3072_30fps_3056Msps QBC*/
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{ /*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = sayramuwide_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramuwide_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramuwide_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{  /*03_OceanDX4_05_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = sayramuwide_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{  /*05_OceanDX4_09_JN5_Fdsum_4K_4096x2304_30fps_3056Msps*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = sayramuwide_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_normal_video_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = sayramuwide_seamless_vid,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramuwide_seamless_vid),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608 ,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 08_OceanDX4_09_JN5_Fdsum_4K_4096x2304_60fps_3056Msps */
-		.frame_desc = frame_desc_hs_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_hs_vid),
-		.mode_setting_table = sayramuwide_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {73},
-	},
-	{ /*12_OceanDX4_13_0_JN5_A2A2_FHD_2048x1152_240.4fps_1992Msps*/
-		.frame_desc = frame_desc_slim_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_slim_vid),
-		.mode_setting_table = sayramuwide_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 3072,
-		.framelength = 1246,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 796800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {87},
-	},
-	{ /* 04_OceanDX4_05_JN5_Fdsum_12.5Mp_AEB_4096x3072_60fps_3056Msps */
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = sayramuwide_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom1_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramuwide_seamless_custom1,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramuwide_seamless_custom1),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204 * 2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFF,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFF,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 3,
-		.csi_param = {79},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 80,
-	},
-	{  /* 8192x6144 Fullsize bayer mode 6*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = sayramuwide_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom2_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramuwide_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramuwide_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9600,
-		.framelength = 6346,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {79},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{  /* 8192x6144 Fullsize QBC mode 7*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = sayramuwide_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = sayramuwide_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramuwide_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9600,
-		.framelength = 6346,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {79},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{ /* 1632X1224 24fps subsample */
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = sayramuwide_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 8848,
-		.framelength = 4328,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 832,
-			.y0_offset = 624,
-			.w0_size = 6528,
-			.h0_size = 4896,
-			.scale_w = 1632,
-			.scale_h = 1224,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1224,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1224,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {74},
-	},
-	{ /* 1856x1392 24fps subsample*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = sayramuwide_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom5_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 8844,
-		.framelength = 4320,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 1120,
-			.y1_offset = 840,
-			.w1_size = 1856,
-			.h1_size = 1392,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1856,
-			.h2_tg_size = 1392,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {84},
-	},
-	{ /* 06_OceanDX4_10_0_JN5_Fdsum_DSG_4096x2304_30fps_3056Msps sensor merge 12bit*/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = sayramuwide_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom6_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_Gr,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 9568,
-		.framelength = 3204,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_LCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = sayramuwide_dcg_ratio_table_12bit,
-			.dcg_gain_table_size = sizeof(sayramuwide_dcg_ratio_table_12bit),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 20,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{  /* 07_OceanDX4_10_0_JN5_Fdsum_DSG_split_4096x2304_30fps_3056Msps AP merge*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = sayramuwide_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom7_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = sayramuwide_seamless_custom7,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(sayramuwide_seamless_custom7),
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 9568,
-		.framelength = 3204,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.saturation_info = &imgsensor_saturation_info,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_LCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = sayramuwide_dcg_ratio_table_10bit,
-			.dcg_gain_table_size = sizeof(sayramuwide_dcg_ratio_table_10bit),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 20,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 4096x3072 60fps binning*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = sayramuwide_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 4096x3072 30fps, DAG sensor merge 12bit */
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = sayramuwide_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_Gr,
-		.pclk = 920000000,
-		.linelength = 9568,
-		.framelength = 3204,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,  // temp setting no pd
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_LCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = sayramuwide_dcg_ratio_table_12bit,
-			.dcg_gain_table_size = sizeof(sayramuwide_dcg_ratio_table_12bit),
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 20,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {78},
-	},
-	{ /* 14_OceanDX4_03_JN5_Full_12.5Mp_4096x3072_30fps_3056Msps izoom */
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = sayramuwide_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom10_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1536,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {87},
-	},
-	{  /* 14_OceanDX4_03_JN5_Full_12.5Mp_Bypass_4096x3072_30fps_3056Msps QBC*/
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = sayramuwide_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(sayramuwide_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1536,
-			.w0_size = 4096,
-			.h0_size = 3072,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1250,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_Gr,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = SAYRAMUWIDE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0000, 0x0001},
-	.i2c_addr_table = {0x5a, 0xff},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_16,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_Gr,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 160,
-	.ana_gain_type = 2, //0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC
-	.ana_gain_step = 2,
-	.ana_gain_table = sayramuwide_ana_gain_table,
-	.ana_gain_table_size = sizeof(sayramuwide_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max = 0xffff * 256,
-	.exposure_step = 1,
-	.exposure_margin = 24, /*tentative*/
-	.frame_length_max = 0xffff,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 1616100,
-	.line_interleave_num = 1,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_DCG|HDR_SUPPORT_LBMF,
-	.saturation_info = &imgsensor_saturation_info,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure ={
-			{0x0202, 0x0203}, //Short exposure
-			{0x0202, 0x0203},
-			{0x0226, 0x0227}, //Long exposure
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x0704,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, //Short Gain
-			{0x0204, 0x0205},
-			{0x0206, 0x0207}, //Long Gain
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E14, 0x0E15},  /* LUT_A_FRM_LENGTH_LINES */
-			{0x0E20, 0x0E21},  /* LUT_B_FRM_LENGTH_LINES */
-	},
-	.reg_addr_temp_en = PARAM_UNDEFINED,
-	.reg_addr_temp_read = 0x0020,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_exposure_in_lut = {
-			{0x0E10, 0x0E11}, //LUT_A_COARSE_INTEG_TIME
-			{0x0E1C, 0x0E1D}, //LUT_B_COARSE_INTEG_TIME
-	},
-
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E12, 0x0E13}, //LUT_A_ANA_GAIN_GLOBAL
-			{0x0E1E, 0x0E1F}, //LUT_B_ANA_GAIN_GLOBAL
-	},
-	// .init_setting_table = sayramuwide_sensor_init_setting,
-	// .init_setting_len =  ARRAY_SIZE(sayramuwide_sensor_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0x350174bc,
-
-	.oplus_notify_chg_flag = false,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 2000},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_AVDD, {2204000, 2204000}, 1000},
-	{HW_ID_DVDD, {1000000, 1000000}, 0},
-	{HW_ID_AFVDD, {2804000, 2804000}, 0},
-	{HW_ID_RST, {1}, 2000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 10000},
-};
-
-const struct subdrv_entry sayramuwide_mipi_raw_entry = {
-	.name = "sayramuwide_mipi_raw",
-	.id = SAYRAMUWIDE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x50)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 80;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void sayramuwide_set_dummy(struct subdrv_ctx *ctx)
-{
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF)
-		sayramuwide_write_frame_length_in_lut(ctx, ctx->frame_length, ctx->frame_length_in_lut);
-	else
-		write_frame_length(ctx, ctx->frame_length);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-
-	commit_i2c_buffer(ctx);
-}
-
-static void sayramuwide_set_max_framerate(struct subdrv_ctx *ctx, UINT16 framerate,
-			kal_bool min_framelength_en)
-{
-
-	kal_uint32 frame_length = ctx->frame_length;
-
-	DRV_LOG(ctx, "framerate = %d, min framelength should enable %d\n",
-		framerate, min_framelength_en);
-
-	frame_length = ctx->pclk / framerate * 10 / ctx->line_length;
-
-	if (frame_length >= ctx->min_frame_length)
-		ctx->frame_length = frame_length;
-	else
-		ctx->frame_length = ctx->min_frame_length;
-
-	ctx->dummy_line =
-		ctx->frame_length - ctx->min_frame_length;
-
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-
-		ctx->dummy_line =
-			ctx->frame_length - ctx->min_frame_length;
-	}
-	if (min_framelength_en)
-		ctx->min_frame_length = ctx->frame_length;
-
-	sayramuwide_set_dummy(ctx);
-}
-
-static void sayramuwide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u32 *shutter, u32 frame_length, bool auto_extend_en)
-{
-	kal_uint16 realtime_fps = 0;
-	kal_int32 dummy_line = 0;
-	u32 l_shutter = 0;
-	u16 l_shift = 0;
-	u32 fll = 0;
-
-	ctx->exposure[0] = *shutter;
-
-	/* Change frame time */
-	if (frame_length > 1)
-		dummy_line = frame_length - ctx->frame_length;
-
-	ctx->frame_length = ctx->frame_length + dummy_line;
-
-	if (ctx->exposure[0] > ctx->frame_length - ctx->s_ctx.exposure_margin)
-		ctx->frame_length = ctx->exposure[0] + ctx->s_ctx.exposure_margin;
-
-	if (ctx->frame_length > ctx->max_frame_length)
-		ctx->frame_length = ctx->max_frame_length;
-
-	ctx->exposure[0] = (ctx->exposure[0] < ctx->s_ctx.exposure_min)
-			? ctx->s_ctx.exposure_min : ctx->exposure[0];
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps > 592 && realtime_fps <= 607) {
-			sayramuwide_set_max_framerate(ctx, 592, 0);
-		} else if (realtime_fps > 296 && realtime_fps <= 305) {
-			sayramuwide_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps > 246 && realtime_fps <= 253) {
-			sayramuwide_set_max_framerate(ctx, 246, 0);
-		} else if (realtime_fps > 236 && realtime_fps <= 243) {
-			sayramuwide_set_max_framerate(ctx, 236, 0);
-		} else if (realtime_fps > 146 && realtime_fps <= 153) {
-			sayramuwide_set_max_framerate(ctx, 146, 0);
-		} else {
-			/* Extend frame length */
-			subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		}
-	} else {
-		/* Extend frame length */
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-	}
-
-	if (ctx->exposure[0] >= 0xFFF0) {  // need to modify line_length & PCLK
-		bNeedSetNormalMode = TRUE;
-
-		if (ctx->exposure[0] > ctx->s_ctx.exposure_max) {
-			DRV_LOG(ctx, "shutter(%d) > exposure_max(%d), set shutter = exposure_max\n",
-				ctx->exposure[0], ctx->s_ctx.exposure_max);
-			ctx->exposure[0] = ctx->s_ctx.exposure_max;
-		}
-
-		for (l_shift = 1; l_shift <= 10; l_shift++) {
-			l_shutter = ((ctx->exposure[0] - 1) >> l_shift) + 1;
-			if (l_shutter
-				< (ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin))
-				break;
-		}
-
-		fll = l_shutter + 0x0002;  // 1st framelength
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, fll & 0xFFFF);  // Framelength
-		subdrv_i2c_wr_u16(ctx, 0x0202, l_shutter & 0xFFFF);  //shutter
-		subdrv_i2c_wr_u16(ctx, 0x0702, l_shift << 8);
-		subdrv_i2c_wr_u16(ctx, 0x0704, l_shift << 8);
-		DRV_LOG(ctx, "set long time exposure shutter(%d), frame_length(%d) l_shutter(%d) l_shift(%d)\n",
-			ctx->exposure[0], fll, l_shutter, l_shift);
-	} else {
-		if (bNeedSetNormalMode) {
-			DRV_LOG(ctx, "exit long shutter\n");
-			subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-			subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-			bNeedSetNormalMode = FALSE;
-		}
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		subdrv_i2c_wr_u16(ctx, 0x0202, ctx->exposure[0]);
-	}
-
-	DRV_LOG(ctx, "Exit! shutter =%d, framelength =%d/%d, dummy_line=%d, auto_extend=%d\n",
-		ctx->exposure[0], ctx->frame_length, frame_length, dummy_line, subdrv_i2c_rd_u16(ctx, 0x0350));
-}	/* set_shutter_frame_length */
-
-static int sayramuwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "shutter:%u, frame_length:%u\n", (u32)(*para), (u32) (*(para + 1)));
-	sayramuwide_lens_pos_writeback(ctx);
-	sayramuwide_set_shutter_frame_length_convert(ctx, (u32 *)para, (u32) (*(para + 1)), (u16) (*(para + 2)));
-	return 0;
-}
-
-static void sayramuwide_write_shutter(struct subdrv_ctx *ctx)
-{
-	kal_uint16 realtime_fps = 0;
-
-	u32 l_shutter = 0;
-	u16 l_shift = 0;
-	u32 fll = 0;
-
-	DRV_LOG(ctx, "===brad shutter:%d\n", ctx->exposure[0]);
-
-	if (ctx->exposure[0] > ctx->min_frame_length - ctx->s_ctx.exposure_margin) {
-		ctx->frame_length = ctx->exposure[0] + ctx->s_ctx.exposure_margin;
-	} else {
-		ctx->frame_length = ctx->min_frame_length;
-	}
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-	}
-
-	if (ctx->exposure[0] < ctx->s_ctx.exposure_min) {
-		ctx->exposure[0] = ctx->s_ctx.exposure_min;
-	}
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps > 592 && realtime_fps <= 607) {
-			sayramuwide_set_max_framerate(ctx, 592, 0);
-		} else if (realtime_fps > 296 && realtime_fps <= 305) {
-			sayramuwide_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps > 246 && realtime_fps <= 253) {
-			sayramuwide_set_max_framerate(ctx, 246, 0);
-		} else if (realtime_fps > 236 && realtime_fps <= 243) {
-			sayramuwide_set_max_framerate(ctx, 236, 0);
-		} else if (realtime_fps > 146 && realtime_fps <= 153) {
-			sayramuwide_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-	}
-
-	if (ctx->exposure[0] >= 0xFFF0) {  // need to modify line_length & PCLK
-		bNeedSetNormalMode = TRUE;
-
-		if (ctx->exposure[0] >= ctx->s_ctx.exposure_max) {
-			DRV_LOG(ctx, "shutter(%d) > exposure_max(%d), set shutter = exposure_max\n",
-				ctx->exposure[0], ctx->s_ctx.exposure_max);
-			ctx->exposure[0] = ctx->s_ctx.exposure_max;
-		}
-
-		for (l_shift = 1; l_shift <= 10; l_shift++) {
-			l_shutter = ((ctx->exposure[0] - 1) >> l_shift) + 1;
-			if (l_shutter
-				< (ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin))
-				break;
-		}
-
-		fll = l_shutter + 0x0002;  // 1st framelength
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, fll & 0xFFFF);  // Framelength
-		subdrv_i2c_wr_u16(ctx, 0x0202, l_shutter & 0xFFFF);  //shutter
-		subdrv_i2c_wr_u16(ctx, 0x0702, l_shift << 8);
-		subdrv_i2c_wr_u16(ctx, 0x0704, l_shift << 8);
-		DRV_LOG(ctx, "set long time exposure shutter(%d), frame_length(%d) l_shutter(%d) l_shift(%d)\n",
-			ctx->exposure[0], fll, l_shutter, l_shift);
-	} else {
-		if (bNeedSetNormalMode) {
-			DRV_LOG(ctx, "exit long shutter\n");
-			subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-			subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-			bNeedSetNormalMode = FALSE;
-		}
-
-		subdrv_i2c_wr_u16(ctx, 0x0340, ctx->frame_length);
-		subdrv_i2c_wr_u16(ctx, 0x0202, ctx->exposure[0]);
-	}
-	DRV_LOG(ctx, "shutter =%d, framelength =%d\n", ctx->exposure[0], ctx->frame_length);
-}	/*	write_shutter  */
-
-static void sayramuwide_set_shutter_convert(struct subdrv_ctx *ctx, u32 shutter)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", shutter);
-	ctx->exposure[0] = shutter;
-
-	sayramuwide_write_shutter(ctx);
-}
-
-static int sayramuwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32* feature_data = (u32*)para;
-	u32 shutter = *feature_data;
-
-	DRV_LOG(ctx, "set_shutter shutter =0x%x\n", shutter);
-	sayramuwide_set_shutter_convert(ctx, shutter);
-	return 0;
-}
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	DRV_LOG(ctx, "E! enable:%u\n", enable);
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx) {
-		DRV_LOGE(ctx, "null _adaptor_ctx\n");
-		return;
-	}
-
-	check_current_scenario_id_bound(ctx);
-
-	if (ctx->s_ctx.aov_sensor_support && ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG_MUST(ctx,
-			"stream ctrl implement on scp side!(sid:%u)\n",
-			ctx->current_scenario_id);
-		ctx->is_streaming = enable;
-		DRV_LOG_MUST(ctx, "enable:%u\n", enable);
-		return;
-	}
-
-	if (enable) {
-		/* MCSS low power mode update para */
-		if (ctx->s_ctx.mcss_update_subdrv_para != NULL)
-			ctx->s_ctx.mcss_update_subdrv_para((void *) ctx, ctx->current_scenario_id);
-		/* MCSS register init */
-		if (ctx->s_ctx.mcss_init != NULL)
-			ctx->s_ctx.mcss_init((void *) ctx);
-
-		if (ctx->s_ctx.chk_s_off_sta) {
-			DRV_LOG(ctx, "check_stream_off before stream on");
-			check_stream_off(ctx);
-		}
-		sayramuwide_set_dummy(ctx);
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-		ctx->stream_ctrl_start_time = ktime_get_boottime_ns();
-		if (ctx->s_ctx.custom_stream_ctrl_delay)
-			mdelay(ctx->s_ctx.custom_stream_ctrl_delay);
-	} else {
-		check_stream_on(ctx);  // check_stream_on before stream off
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-		if (ctx->s_ctx.reg_addr_fast_mode && ctx->fast_mode_on) {
-			ctx->fast_mode_on = FALSE;
-			ctx->ref_sof_cnt = 0;
-			DRV_LOG(ctx, "seamless_switch disabled.");
-			set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-			commit_i2c_buffer(ctx);
-		}
-		memset(ctx->exposure, 0, sizeof(ctx->exposure));
-		memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-		ctx->autoflicker_en = FALSE;
-		ctx->extend_frame_length_en = 0;
-		ctx->is_seamless = 0;
-		if (ctx->s_ctx.chk_s_off_end)
-			check_stream_off(ctx);
-		ctx->stream_ctrl_start_time = 0;
-		ctx->stream_ctrl_end_time = 0;
-
-		ctx->mcss_init_info.enable_mcss = 0;
-		if (ctx->s_ctx.mcss_init != NULL)
-			ctx->s_ctx.mcss_init((void *) ctx); // disable MCSS
-	}
-	ctx->sof_no = 0;
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int sayramuwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-	if (*(u32 *)para)
-	sayramuwide_set_shutter_convert(ctx, *(u32 *)para);
-	streaming_ctrl(ctx, true);
-	return 0;
-}
-
-static int sayramuwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "streaming control para:%d\n", *para);
-	streaming_ctrl(ctx, false);
-	return 0;
-}
-
-static unsigned int read_sayramuwide_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != sayramuwide_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != sayramuwide_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = sayramuwide_eeprom_info[meta_id].start;
-	readsize = sayramuwide_eeprom_info[meta_id].size;
-
-	if (!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-    kal_uint16 get_byte = 0;
-
-    adaptor_i2c_rd_u8(ctx->i2c_client, SAYRAMUWIDE_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-    return get_byte;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, SAYRAMUWIDE_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xE000;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, SAYRAMUWIDE_EEPROM_WRITE_ID >> 1, reg, 0xA1);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, SAYRAMUWIDE_EEPROM_WRITE_ID >> 1, reg, 0xA0);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    kal_uint32 checksum = 0;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        for(i = 0; i < pStereodata->dataLength; i++) {
-            checksum += pData[i];
-        }
-        pData[data_length] = 0x01;
-        pData[data_length + 1] = checksum % 255;
-        data_length = data_length + 2;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == SAYRAMUWIDE_SENSOR_ID) && (data_length - 2 == CALI_DATA_SLAVE_LENGTH)
-            && (data_base == SAYRAMUWIDE_STEREO_START_ADDR)) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-        } else if ((pStereodata->uSensorId == SAYRAMUWIDE_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == SAYRAMUWIDE_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, SAYRAMUWIDE_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, SAYRAMUWIDE_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, SAYRAMUWIDE_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, SAYRAMUWIDE_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, SAYRAMUWIDE_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, SAYRAMUWIDE_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, SAYRAMUWIDE_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, SAYRAMUWIDE_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("sayramuwide write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int sayramuwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        *len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-    return 0;
-}
-
-static int sayramuwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	if(*len > CALI_DATA_SLAVE_LENGTH) {
-		*len = CALI_DATA_SLAVE_LENGTH;
-	}
-	read_sayramuwide_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-			(BYTE *)para, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, SAYRAMUWIDE_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static int sayramuwide_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int sayramuwide_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D82, awb_gain->ABS_GAIN_R * 2); //red 1024(1x)
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D86, awb_gain->ABS_GAIN_B * 2); //blue
-
-	LOG_INF("[test] ABS_GAIN_GR(%d) ABS_GAIN_R(%d) ABS_GAIN_B(%d) ABS_GAIN_GB(%d)", awb_gain->ABS_GAIN_GR, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B, awb_gain->ABS_GAIN_GB);
-	LOG_INF("[test] 0x0D82(red) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D82));
-	LOG_INF("[test] 0x0D84(green) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D84));
-	LOG_INF("[test] 0x0D86(blue) = (0x%x)", subdrv_i2c_rd_u16(ctx, 0x0D86));
-	return 0;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "jn1 read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "jn1 read_otp_info end\n");
-}
-
-static int sayramuwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int sayramuwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = TRUE;
-	u32 eeprom_time_year = 0, eeprom_time_m_d = 0;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x38E5) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-
-					u8 af_code[AF_CODE_SIZE] = {0};
-					read_sayramuwide_eeprom_info(ctx, EEPROM_META_AF_CODE, (BYTE *)af_code, AF_CODE_SIZE);
-					g_af_code_macro = af_code[0] | ((u16)af_code[1] << 8);
-					g_af_code_infinity = af_code[2] | ((u16)af_code[3] << 8);
-
-					first_read = FALSE;
-
-					msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-					if(!msg_buf) {
-						LOG_INF("boot stage, malloc msg_buf error");
-					}
-				}
-				eeprom_time_year = (read_cmos_eeprom_8(ctx, 0x0004) << 8) | read_cmos_eeprom_8(ctx, 0x0005);
-				eeprom_time_m_d = (read_cmos_eeprom_8(ctx, 0x0003) << 8) | read_cmos_eeprom_8(ctx, 0x0002);
-				// sensor with eeprom data since 2024/01/27
-				module_flag = (eeprom_time_year > 0x1814) || ((eeprom_time_year == 0x1814) && (eeprom_time_m_d >= 0x11B));
-				return ERROR_NONE;
-			}
-			DRV_LOG(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-	u32 module_info = 0;
-	u64 time_boot_begin = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-	subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-	module_info = subdrv_i2c_rd_u16(ctx, 0x0010);
-	DRV_LOG(ctx, "write init setting +");
-	if ((ctx->power_on_profile_en != NULL) && (*ctx->power_on_profile_en))
-		time_boot_begin = ktime_get_boottime_ns();
-
-
-	if ((module_info | 0x00FF) == 0x06FF){
-		subdrv_i2c_wr_regs_u16(ctx, sayramuwide_sensor_init_pre_setting_short, ARRAY_SIZE(sayramuwide_sensor_init_pre_setting_short));
-		mdelay(5);
-		sayramuwide_i2c_burst_wr_regs_u16(ctx, sayramuwide_sensor_init_setting_short, ARRAY_SIZE(sayramuwide_sensor_init_setting_short));
-		DRV_LOG(ctx, "write init setting (short)-");
-		ctx->s_ctx.init_setting_len = ARRAY_SIZE(sayramuwide_sensor_init_pre_setting_short) + ARRAY_SIZE(sayramuwide_sensor_init_setting_short);
-	} else {
-		subdrv_i2c_wr_regs_u16(ctx, sayramuwide_sensor_init_pre_setting, ARRAY_SIZE(sayramuwide_sensor_init_pre_setting));
-		mdelay(5);
-		sayramuwide_i2c_burst_wr_regs_u16(ctx, sayramuwide_sensor_init_setting, ARRAY_SIZE(sayramuwide_sensor_init_setting));
-		ctx->s_ctx.init_setting_len = ARRAY_SIZE(sayramuwide_sensor_init_pre_setting) + ARRAY_SIZE(sayramuwide_sensor_init_setting);
-		DRV_LOG(ctx, "write init setting (long)-");
-	}
-
-
-	if ((ctx->power_on_profile_en != NULL) && (*ctx->power_on_profile_en)) {
-		ctx->sensor_pw_on_profile.i2c_init_period = ktime_get_boottime_ns() - time_boot_begin - 5000;
-
-		ctx->sensor_pw_on_profile.i2c_init_table_len =
-			ARRAY_SIZE(sayramuwide_sensor_init_pre_setting) + ARRAY_SIZE(sayramuwide_sensor_init_setting);
-	}
-	DRV_LOG_MUST(ctx, "X: size:%u, time(us):%lld\n", ctx->sensor_pw_on_profile.i2c_init_table_len,
-		ctx->sensor_pw_on_profile.i2c_init_period);
-
-	if (ctx->s_ctx.temperature_support && ctx->s_ctx.reg_addr_temp_en)
-		subdrv_ixc_wr_u8(ctx, ctx->s_ctx.reg_addr_temp_en, 0x01);
-	/* enable mirror or flip */
-	set_mirror_flip(ctx, ctx->mirror);
-
-	/* HW GGC*/
-	set_sensor_cali(ctx);
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	if (group_hold_frame_count < 2) {
-		DRV_LOGE(ctx, "group_hold_frame_count: %d", group_hold_frame_count);
-		group_hold_frame_count++;
-		return;
-	}
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return gain * 32 / BASEGAIN;
-}
-
-static int sayramuwide_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	group_hold_frame_count = 0;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		(ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF ||
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF))
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x4);
-
-	update_mode_info(ctx, scenario_id);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			sayramuwide_set_multi_shutter_frame_length_in_lut_convert(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			sayramuwide_set_shutter_convert(ctx, (u32)ae_ctrl->exposure.me_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				sayramuwide_set_gain_convert(ctx, ae_ctrl->gain.me_gain);
-			break;
-		default:
-			sayramuwide_set_shutter_convert(ctx, (u32)ae_ctrl->exposure.le_exposure);
-			sayramuwide_set_gain_convert(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	// ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int sayramuwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	if (mode) {
-		if (mode == 5) {
-			subdrv_i2c_wr_u16(ctx, 0x0600, 0x0001); /*black*/
-		} else {
-			subdrv_i2c_wr_u16(ctx, 0x0600, mode); /*100% Color bar*/
-		}
-	}
-	else if (ctx->test_pattern)
-		subdrv_i2c_wr_u16(ctx, 0x0600, 0x0000); /*No pattern*/
-
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-void get_sensor_cali(void* arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	// struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	//struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	return;
-}
-
-static int sayramuwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain) {
-	u16 rg_gain;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain, ctx->s_ctx.ana_gain_min);
-	gain = min(gain, ctx->s_ctx.ana_gain_max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-
-	return ERROR_NONE;
-}
-
-int sayramuwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-
-	sayramuwide_set_gain_convert(ctx, gain);
-
-	return 0;
-}
-
-static void sayramuwide_set_multi_shutter_frame_length(struct subdrv_ctx *ctx,
-		u64 *shutters, u16 exp_cnt,	u16 frame_length)
-{
-	int i = 0;
-	u32 fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[3] = {0};
-	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max(shutters[i], ctx->s_ctx.exposure_min);
-		shutters[i] = min(shutters[i], ctx->s_ctx.exposure_max);
-		if (cit_step)
-			shutters[i] = round_up(shutters[i], cit_step);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */
-	calc_fl[0] = shutters[0];
-	for (i = 1; i < last_exp_cnt; i++)
-		calc_fl[0] += ctx->exposure[i];
-	calc_fl[0] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (2) current se + current me + current le */
-	calc_fl[1] = shutters[0];
-	for (i = 1; i < exp_cnt; i++)
-		calc_fl[1] += shutters[i];
-	calc_fl[1] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (3) readout time cannot be overlapped */
-	calc_fl[2] =
-		(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-		ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-	if (last_exp_cnt == exp_cnt)
-		for (i = 1; i < exp_cnt; i++) {
-			readout_diff = ctx->exposure[i] - shutters[i];
-			calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-		}
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		ctx->frame_length = max(ctx->frame_length, calc_fl[i]);
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = shutters[i];
-	/* exit long exposure if necessary */
-	if ((ctx->exposure[0] < 0xFFF0) && bNeedSetNormalMode) {
-		DRV_LOG(ctx, "exit long shutter\n");
-		subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-		subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-		bNeedSetNormalMode = FALSE;
-	}
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		break;
-	case 2:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[2] = shutters[1] / exp_cnt;
-		break;
-	case 3:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[1] = shutters[1] / exp_cnt;
-		rg_shutters[2] = shutters[2] / exp_cnt;
-		break;
-	default:
-		break;
-	}
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[2],
-					rg_shutters[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					rg_shutters[i] & 0xFF);
-			}
-		}
-	}
-	DRV_LOG(ctx, "exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static void sayramuwide_write_frame_length_in_lut(struct subdrv_ctx *ctx, u32 fll, u32 *fll_in_lut)
-{
-	int i = 0;
-	u32 frame_length_buf;
-	u32 fll_step = 0;
-	u32 min_fll = 0;
-
-	check_current_scenario_id_bound(ctx);
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	// manual mode
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt) {
-	case 2:
-		if (fll_step) {
-			fll_in_lut[0] =
-				roundup(fll_in_lut[0], fll_step);
-			fll_in_lut[1] =
-				roundup(fll_in_lut[1], fll_step);
-		}
-		min_fll = ctx->s_ctx.mode[ctx->current_scenario_id].framelength / 2;
-
-		if (fll_in_lut[0] < fll_in_lut[1]) {
-			if (fll_in_lut[0] < min_fll) {
-				fll_in_lut[1] -= min_fll - fll_in_lut[0];
-				fll_in_lut[0] = min_fll;
-			}
-		} else {
-			if (fll_in_lut[1] < min_fll) {
-				fll_in_lut[0] -= min_fll - fll_in_lut[1];
-				fll_in_lut[1] = min_fll;
-			}
-		}
-		fll_in_lut[2] = 0;
-		fll_in_lut[3] = 0;
-		fll_in_lut[4] = 0;
-		ctx->frame_length_in_lut[0] = fll_in_lut[0];
-		ctx->frame_length_in_lut[1] = fll_in_lut[1];
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1];
-		break;
-	case 3:
-		if (fll_step) {
-			fll_in_lut[0] =
-				roundup(fll_in_lut[0], fll_step);
-			fll_in_lut[1] =
-				roundup(fll_in_lut[1], fll_step);
-			fll_in_lut[2] =
-				roundup(fll_in_lut[2], fll_step);
-		}
-		fll_in_lut[3] = 0;
-		fll_in_lut[4] = 0;
-		ctx->frame_length_in_lut[0] = fll_in_lut[0];
-		ctx->frame_length_in_lut[1] = fll_in_lut[1];
-		ctx->frame_length_in_lut[2] = fll_in_lut[2];
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] +
-			ctx->frame_length_in_lut[1] +
-			ctx->frame_length_in_lut[2];
-		break;
-	default:
-		break;
-	}
-
-	if (ctx->extend_frame_length_en == FALSE) {
-		frame_length_buf = 0;
-		for (i = 0; i < 3; i++) {
-			if (fll_in_lut[i]) {
-				if (ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[2]) {
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[0],
-						(fll_in_lut[i] >> 16) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[1],
-						(fll_in_lut[i] >> 8) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[2],
-						fll_in_lut[i] & 0xFF);
-				} else {
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[0],
-						(fll_in_lut[i] >> 8) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[1],
-						fll_in_lut[i] & 0xFF);
-				}
-				/* update FL_lut RG value after setting buffer for writing RG */
-				ctx->frame_length_in_lut_rg[i] = fll_in_lut[i];
-				frame_length_buf +=
-					ctx->frame_length_in_lut_rg[i];
-			}
-		}
-		/* update FL RG value simultaneously */
-		ctx->frame_length_rg = frame_length_buf;
-
-		DRV_LOG(ctx,
-			"ctx:(fl(RG):%u,%u/%u/%u/%u/%u), scen_id:%u,fll(input/ctx/output_a/b/c/d/e):0x%x/%x/%x/%x/%x/%x/%x,fll_step:%u\n",
-			ctx->frame_length_rg,
-			ctx->frame_length_in_lut_rg[0],
-			ctx->frame_length_in_lut_rg[1],
-			ctx->frame_length_in_lut_rg[2],
-			ctx->frame_length_in_lut_rg[3],
-			ctx->frame_length_in_lut_rg[4],
-			ctx->current_scenario_id,
-			fll,
-			ctx->frame_length,
-			fll_in_lut[0],
-			fll_in_lut[1],
-			fll_in_lut[2],
-			fll_in_lut[3],
-			fll_in_lut[4],
-			fll_step);
-	} else {
-		DRV_LOG(ctx,
-			"sid:%u,extend_frame_length_en:%u,default won't write fll!\n",
-			ctx->current_scenario_id, ctx->extend_frame_length_en);
-		return;
-	}
-}
-
-
-static int sayramuwide_set_multi_shutter_frame_length_in_lut(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	sayramuwide_set_multi_shutter_frame_length_in_lut_convert(ctx,
-		(u64 *)(*feature_data),
-		(u16) (*(feature_data + 1)),
-		(u32) (*(feature_data + 2)),
-		(u32 *) (*(feature_data + 3)));
-	return 0;
-}
-
-static void sayramuwide_set_multi_shutter_frame_length_in_lut_convert(struct subdrv_ctx *ctx,
-	u64 *shutters, u16 exp_cnt, u32 frame_length, u32 *frame_length_in_lut)
-{
-	int i = 0;
-	u16 last_exp_cnt = 1;
-	int fine_integ_line = 0;
-	u32 frame_length_step;
-	u32 cit_step = 0;
-	u32 cit_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 calc_fl_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->min_frame_length;
-
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	frame_length_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	/* manual mode */
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].min);
-		shutters[i] = min_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].max);
-		if (cit_step)
-			shutters[i] = roundup(shutters[i], cit_step);
-
-		/* update frame_length_in_lut */
-		ctx->frame_length_in_lut[i] = frame_length_in_lut[i] ?
-			frame_length_in_lut[i] : 0;
-		/* check boundary of framelength in lut */
-		ctx->frame_length_in_lut[i] =
-			min(ctx->frame_length_in_lut[i], ctx->s_ctx.frame_length_max);
-	}
-
-	for (i = 0; i < exp_cnt; i++) {
-		/* update cit_in_lut depends on exposure_order_in_lbmf */
-		if (ctx->s_ctx.mode[ctx->current_scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-			/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-			cit_in_lut[i] = shutters[exp_cnt - 1 - i];
-		} else if (ctx->s_ctx.mode[ctx->current_scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-			/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-			cit_in_lut[i] = shutters[i];
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-	}
-
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt) {
-	case 2:
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_a = max(readout, current shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_b = max(readout, current shutter_a) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-
-		/* fll_a = max(fll_a, userInput_fll_a) */
-		ctx->frame_length_in_lut[0] =
-			max(ctx->frame_length_in_lut[0], calc_fl_in_lut[0]);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(ctx->frame_length_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b = max(fll_b, userInput_fll_b) */
-		ctx->frame_length_in_lut[1] =
-			max(ctx->frame_length_in_lut[1], calc_fl_in_lut[1]);
-
-		if (ctx->frame_length >= ctx->frame_length_in_lut[0]) {
-			/* fll_b = max(fll_b, fll-fll_a) */
-			ctx->frame_length_in_lut[1] =
-				max(ctx->frame_length_in_lut[1],
-					ctx->frame_length - ctx->frame_length_in_lut[0]);
-		}
-
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(ctx->frame_length_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* lut[2] no use, and assign zero */
-		ctx->frame_length_in_lut[2] = 0;
-		/* lut[3] no use, and assign zero */
-		ctx->frame_length_in_lut[3] = 0;
-		/* lut[4] no use, and assign zero */
-		ctx->frame_length_in_lut[4] = 0;
-		break;
-	case 3:
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_a = max(readout, current shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_b = max(readout, current shutter_c) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[2] + ctx->s_ctx.exposure_margin);
-		/* fll_c_min = readout + xx lines(margin) */
-		calc_fl_in_lut[2] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_c = max(readout, current shutter_a) */
-		calc_fl_in_lut[2] =
-			max(calc_fl_in_lut[2], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-
-		/* fll_a = max(fll_a, userInput_fll_a) */
-		ctx->frame_length_in_lut[0] =
-			max(ctx->frame_length_in_lut[0], calc_fl_in_lut[0]);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(ctx->frame_length_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b = max(fll_b, userInput_fll_b) */
-		ctx->frame_length_in_lut[1] =
-			max(ctx->frame_length_in_lut[1], calc_fl_in_lut[1]);
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(ctx->frame_length_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* fll_c = max(fll_c, userInput_fll_c) */
-		ctx->frame_length_in_lut[2] =
-			max(ctx->frame_length_in_lut[2], calc_fl_in_lut[2]);
-
-		if (ctx->frame_length >=
-			(ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1])) {
-			/* fll_c = max(fll_c, fll-fll_b-fll_a) */
-			ctx->frame_length_in_lut[2] =
-				max(ctx->frame_length_in_lut[2],
-					(ctx->frame_length - ctx->frame_length_in_lut[1] -
-					ctx->frame_length_in_lut[0]));
-		}
-
-		/* fll_c = min(fll_c, fll_max) */
-		ctx->frame_length_in_lut[2] =
-			min(ctx->frame_length_in_lut[2], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[2] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[2], frame_length_step) :
-			ctx->frame_length_in_lut[2];
-		/* lut[3] no use, and assign zero */
-		ctx->frame_length_in_lut[3] = 0;
-		/* lut[4] no use, and assign zero */
-		ctx->frame_length_in_lut[4] = 0;
-		break;
-	default:
-		break;
-	}
-
-	/* restore shutter & update framelength */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->frame_length = 0;
-	for (i = 0; i < exp_cnt; i++) {
-		ctx->exposure[i] = shutters[i];
-		ctx->frame_length += ctx->frame_length_in_lut[i];
-	}
-	/* check boundary of framelength */
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	set_auto_flicker(ctx, 0);
-
-	sayramuwide_write_frame_length_in_lut(ctx, ctx->frame_length, ctx->frame_length_in_lut);
-
-	/* write shutter: LUT register differs from DOL */
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED) {
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-		ctx->l_shift = 0;
-	}
-	for (i = 0; i < 3; i++) {
-		if (cit_in_lut[i]) {
-			if (ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[2]) {
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[0],
-					(cit_in_lut[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[1],
-					(cit_in_lut[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[2],
-					cit_in_lut[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[0],
-					(cit_in_lut[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[1],
-					cit_in_lut[i] & 0xFF);
-			}
-		}
-	}
-
-	DRV_LOG(ctx,
-		"sid:%u,shutter(input/lut):0x%llx/%llx/%llx,%x/%x/%x,flInLUT(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%u,flick_en:%d\n",
-		ctx->current_scenario_id,
-		shutters[0], shutters[1], shutters[2],
-		cit_in_lut[0], cit_in_lut[1], cit_in_lut[2],
-		frame_length, ctx->frame_length,
-		ctx->frame_length_in_lut[0],
-		ctx->frame_length_in_lut[1],
-		ctx->frame_length_in_lut[2],
-		ctx->frame_length_in_lut[3],
-		ctx->frame_length_in_lut[4],
-		ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static int sayramuwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	sayramuwide_lens_pos_writeback(ctx);
-	sayramuwide_set_multi_shutter_frame_length(ctx, (u64 *)(*feature_data),
-		(u16) (*(feature_data + 1)), (u16) (*(feature_data + 2)));
-	return 0;
-}
-
-static void sayramuwide_set_hdr_tri_shutter(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt)
-{
-	int i = 0;
-	u64 values[3] = {0};
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-
-	if (shutters != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u64) *(shutters + i);
-	}
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		sayramuwide_set_multi_shutter_frame_length_in_lut_convert(ctx,
-			values, exp_cnt, 0, frame_length_in_lut);
-		return;
-	}
-	sayramuwide_set_multi_shutter_frame_length(ctx, values, exp_cnt, 0);
-}
-
-static int sayramuwide_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	sayramuwide_set_hdr_tri_shutter(ctx, feature_data, 2);
-	return 0;
-}
-
-static int sayramuwide_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	sayramuwide_set_hdr_tri_shutter(ctx, feature_data, 3);
-	return 0;
-}
-
-static bool dump_i2c_enable = false;
-
-static void dump_i2c_buf(struct subdrv_ctx *ctx, u8 * buf, u32 length)
-{
-	int i;
-	char *out_str = NULL;
-	char *strptr = NULL;
-	size_t buf_size = SUBDRV_I2C_BUF_SIZE * sizeof(char);
-	size_t remind = buf_size;
-	int num = 0;
-
-	out_str = kzalloc(buf_size + 1, GFP_KERNEL);
-	if (!out_str)
-		return;
-
-	strptr = out_str;
-	memset(out_str, 0, buf_size + 1);
-
-	num = snprintf(strptr, remind,"[ ");
-	remind -= num;
-	strptr += num;
-
-	for (i = 0 ; i < length; i ++) {
-		num = snprintf(strptr, remind,"0x%02x, ", buf[i]);
-
-		if (num <= 0) {
-			DRV_LOG(ctx, "snprintf return negative at line %d\n", __LINE__);
-			kfree(out_str);
-			return;
-		}
-
-		remind -= num;
-		strptr += num;
-
-		if (remind <= 20) {
-			DRV_LOG(ctx, " write %s\n", out_str);
-			memset(out_str, 0, buf_size + 1);
-			strptr = out_str;
-			remind = buf_size;
-		}
-	}
-
-	num = snprintf(strptr, remind," ]");
-	remind -= num;
-	strptr += num;
-
-	DRV_LOG(ctx, " write %s\n", out_str);
-	strptr = out_str;
-	remind = buf_size;
-
-	kfree(out_str);
-}
-
-static int sayramuwide_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx, u16 * list, u32 len)
-{
-	adapter_i2c_burst_wr_regs_u16(ctx, ctx->i2c_write_id >> 1, list, len);
-	return 	0;
-}
-
-#define MAX_BUF_SIZE  4096
-#define MAX_MSG_NUM_U16  MAX_BUF_SIZE/4
-
-struct cache_wr_regs_u16 {
-	struct i2c_msg msg[MAX_MSG_NUM_U16];
-};
-
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx ,
-		u16 addr, u16 *list, u32 len)
-{
-	struct i2c_client *i2c_client = ctx->i2c_client;
-	struct i2c_msg  msg;
-	struct i2c_msg *pmsg = &msg;
-
-	u8 *pbuf = NULL;
-	u16 *plist = NULL;
-	u16 *plist_end = NULL;
-
-	u32 sent = 0;
-	u32 total = 0;
-	u32 per_sent = 0;
-	int ret, i;
-
-	if(!msg_buf) {
-		LOG_INF("malloc msg_buf retry");
-		msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-		if(!msg_buf) {
-			LOG_INF("malloc error");
-			return -ENOMEM;
-		}
-	}
-
-	/* each msg contains addr(u16) + val(u16 *) */
-	sent = 0;
-	total = len / 2;
-	plist = list;
-	plist_end = list + len - 2;
-
-	DRV_LOG(ctx, "len(%u)  total(%u)", len, total);
-
-	while (sent < total) {
-
-		per_sent = 0;
-		pmsg = &msg;
-		pbuf = msg_buf;
-
-		pmsg->addr = addr;
-		pmsg->flags = i2c_client->flags;
-		pmsg->buf = pbuf;
-
-		pbuf[0] = plist[0] >> 8;    //address
-		pbuf[1] = plist[0] & 0xff;
-
-		pbuf[2] = plist[1] >> 8;  //data 1
-		pbuf[3] = plist[1] & 0xff;
-
-		pbuf += 4;
-		pmsg->len = 4;
-		per_sent += 1;
-
-		for (i = 0; i < total - sent - 1; i++) {  //Maximum number of remaining cycles - 1
-			if(plist[0] + 2 == plist[2] ) {  //Addresses are consecutive
-				pbuf[0] = plist[3] >> 8;
-				pbuf[1] = plist[3] & 0xff;
-
-				pbuf += 2;
-				pmsg->len += 2;
-				per_sent += 1;
-				plist += 2;
-
-				if(pmsg->len >= MAX_BURST_LEN) {
-					break;
-				}
-			}
-		}
-		plist += 2;
-
-		if(dump_i2c_enable) {
-			DRV_LOG(ctx, "pmsg->len(%d) buff: ", pmsg->len);
-			dump_i2c_buf(ctx, msg_buf, pmsg->len);
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmsg, 1);
-
-		if (ret < 0) {
-			dev_info(&i2c_client->dev,
-				"i2c transfer failed (%d)\n", ret);
-			return -EIO;
-		}
-
-		sent += per_sent;
-
-		DRV_LOG(ctx, "sent(%u)  total(%u)  per_sent(%u)", sent, total, per_sent);
-	}
-
-	return 0;
-}
-
-#define sayramuwide_AF_READ_ID  (0x18)
-#define sayramuwide_AF_POSITON_ADD  (0x03)
-
-static bool read_af_pos(struct subdrv_ctx *ctx, u16 *positon)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-	struct i2c_client *i2c_client = ctx->i2c_client;
-
-	buf[0] = sayramuwide_AF_POSITON_ADD;
-
-	msg[0].addr = sayramuwide_AF_READ_ID >> 1;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = 1;
-
-	msg[1].addr  = sayramuwide_AF_READ_ID >> 1;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 2;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return false;
-	}
-
-	*positon = ((u16)buf[0] << 8) | buf[1];
-
-	return true;
-}
-
-static u16 lens_position_setting[] = {
-	0xFCFC, 0x2001,
-	0x2566, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static void sayramuwide_lens_pos_writeback(struct subdrv_ctx *ctx)
-{
-	kal_uint16 af_pos = 0;
-	kal_uint16 write_pos = 0;
-	kal_uint16 write_pos_cover = 0;
-
-	bool ret;
-
-	DRV_LOG(ctx,"%s g_af_code_macro(%d), g_af_code_infinity(%d)",
-		__func__, g_af_code_macro, g_af_code_infinity);
-
-	if (ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-
-		ret = read_af_pos(ctx, &af_pos);
-		if(ret == false || g_af_code_macro == 0 || g_af_code_infinity == 0 || g_af_code_macro == g_af_code_infinity) {
-			pr_err("%s ret(%d) ",__func__, ret);
-			return ;
-		}
-		if(af_pos < g_af_code_infinity) {
-			af_pos = g_af_code_infinity;
-		}
-		if(af_pos > g_af_code_macro) {
-			af_pos = g_af_code_macro;
-		}
-
-		write_pos = (u32)(af_pos - g_af_code_infinity) * 1023 / (g_af_code_macro - g_af_code_infinity);
-
-		write_pos_cover = ((write_pos >> 8) & 0xff) | ((write_pos << 8) & 0xff00);
-
-		lens_position_setting[3] = write_pos_cover;
-
-		DRV_LOG(ctx,"%s af_pos(%d), g_af_code_infinity(%d), g_af_code_macro(%d), write_pos(0x%x) write_pos_cover(0x%x)",
-			__func__, af_pos, g_af_code_infinity, g_af_code_macro, write_pos, write_pos_cover);
-
-		subdrv_i2c_wr_regs_u16(ctx, lens_position_setting, ARRAY_SIZE(lens_position_setting));
-	}
-}
-
-static int sayramuwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *)para;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = (enum SENSOR_SCENARIO_ID_ENUM)*feature_data;
-	u32 framerate = *(feature_data + 1);
-	u32 frame_length;
-	u32 frame_length_step;
-	u32 frame_length_min;
-	u32 frame_length_max;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-	}
-	if (!framerate) {
-		DRV_LOGE(ctx, "framerate (%u) is invalid\n", framerate);
-		return ERROR_NONE;
-	}
-	if (!ctx->s_ctx.mode[scenario_id].linelength) {
-		DRV_LOGE(ctx, "linelength (%u) is invalid\n",
-			ctx->s_ctx.mode[scenario_id].linelength);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		sayramuwide_set_max_framerate_in_lut_by_scenario(ctx, scenario_id, framerate);
-		return ERROR_NONE;
-	}
-
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	/* set on the step of frame length */
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	frame_length_min = ctx->s_ctx.mode[scenario_id].framelength;
-	frame_length_max = ctx->s_ctx.frame_length_max;
-	frame_length_max = frame_length_step ?
-		(frame_length_max - (frame_length_max % frame_length_step)) : frame_length_max;
-
-
-	/* set in the range of frame length */
-	ctx->frame_length = max(frame_length, frame_length_min);
-	ctx->frame_length = min(ctx->frame_length, frame_length_max);
-	ctx->frame_length = frame_length_step ?
-		roundup(ctx->frame_length,frame_length_step) : ctx->frame_length;
-
-	/* set default frame length if given default framerate */
-	if (framerate == ctx->s_ctx.mode[scenario_id].max_framerate)
-		ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-
-	ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	ctx->min_frame_length = ctx->frame_length;
-	DRV_LOG(ctx, "max_fps(input/output):%u/%u(sid:%u), min_fl_en:1, ctx->frame_length:%u\n",
-		framerate, ctx->current_fps, scenario_id, ctx->frame_length);
-	if (ctx->s_ctx.reg_addr_auto_extend ||
-			(ctx->frame_length > (ctx->exposure[0] + ctx->s_ctx.exposure_margin))) {
-		if (ctx->s_ctx.aov_sensor_support &&
-			ctx->s_ctx.mode[scenario_id].aov_mode &&
-			!ctx->s_ctx.mode[scenario_id].s_dummy_support)
-			DRV_LOG_MUST(ctx, "AOV mode not support set_dummy!\n");
-		else
-			sayramuwide_set_dummy(ctx);
-	}
-	return ERROR_NONE;
-}
-/**
- * @brief: This api is used to assign FLL_A/FLL_B in lut for manual mode.
- * It should refer to previous shutter because per-frame multi shutter framelength
- * might not be called.
- * @param ctx: subdrv_ctx
- * @param scenario_id: current scenario id
- * @param framerate: input framerate
- */
-static void sayramuwide_set_max_framerate_in_lut_by_scenario(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id, u32 framerate)
-{
-	u32 frame_length = 0;
-	u32 frame_length_step = 0;
-	u16 exp_cnt = 0;
-	u32 cit_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 calc_fl_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	int i;
-
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	ctx->frame_length =
-		max(frame_length, ctx->s_ctx.mode[scenario_id].framelength);
-
-	/* set default frame length if given default framerate */
-	if (framerate ==  ctx->s_ctx.mode[scenario_id].max_framerate)
-		ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-
-	// manual mode
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	switch (exp_cnt) {
-	case 2:
-		for (i = 0; i < exp_cnt; i++) {
-			/*  update cit_in_lut depends on exposure_order_in_lbmf */
-			if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-				/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-				/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-				cit_in_lut[i] = ctx->exposure[exp_cnt - 1 - i];
-			} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-				/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-				/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-				cit_in_lut[i] = ctx->exposure[i];
-			} else {
-				DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-				return;
-			}
-		}
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_a = max(readout, previous shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(calc_fl_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_b = max(readout, previous shutter_a) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-		if (ctx->frame_length >= ctx->frame_length_in_lut[0]) {
-			/* fll_b = max(fll_b, fll_mode_max-fll_a) */
-			calc_fl_in_lut[1] =
-				max(calc_fl_in_lut[1],
-					ctx->frame_length - ctx->frame_length_in_lut[0]);
-		}
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(calc_fl_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		ctx->frame_length_in_lut[2] = 0;
-		ctx->frame_length_in_lut[3] = 0;
-		ctx->frame_length_in_lut[4] = 0;
-		/* update framelength */
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1];
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-		ctx->min_frame_length = ctx->frame_length;
-		DRV_LOG(ctx,
-			"sid:%u,max_fps(input/output):%u/%u,min_fl_en:1,lut order:%u,fll(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%un",
-			scenario_id,
-			framerate, ctx->current_fps,
-			ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf,
-			frame_length,
-			ctx->frame_length,
-			ctx->frame_length_in_lut[0],
-			ctx->frame_length_in_lut[1],
-			ctx->frame_length_in_lut[2],
-			ctx->frame_length_in_lut[3],
-			ctx->frame_length_in_lut[4]);
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				sayramuwide_set_dummy(ctx);
-		} else {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				sayramuwide_set_dummy(ctx);
-		}
-		break;
-	case 3:
-		for (i = 0; i < exp_cnt; i++) {
-			/*  update cit_in_lut depends on exposure_order_in_lbmf */
-			if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-				/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-				/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-				cit_in_lut[i] = ctx->exposure[exp_cnt - 1 - i];
-			} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-				/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-				/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-				cit_in_lut[i] = ctx->exposure[i];
-			} else {
-				DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-				return;
-			}
-		}
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_a = max(readout, previous shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(calc_fl_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_b = max(readout, previous shutter_c) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[2] + ctx->s_ctx.exposure_margin);
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(calc_fl_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* fll_c_min = readout + xx lines(margin) */
-		calc_fl_in_lut[2] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_c = max(readout, previous shutter_a) */
-		calc_fl_in_lut[2] =
-			max(calc_fl_in_lut[2], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-		if (ctx->frame_length >=
-			(ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1])) {
-			/* fll_c = max(fll_c, fll_mode_max-fll_b-fll_a) */
-			calc_fl_in_lut[2] =
-				max(calc_fl_in_lut[2],
-					(ctx->frame_length - ctx->frame_length_in_lut[1] -
-					ctx->frame_length_in_lut[0]));
-		}
-		/* fll_c = min(fll_c, fll_max) */
-		ctx->frame_length_in_lut[2] =
-			min(calc_fl_in_lut[2], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[2] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[2], frame_length_step) :
-			ctx->frame_length_in_lut[2];
-		ctx->frame_length_in_lut[3] = 0;
-		ctx->frame_length_in_lut[4] = 0;
-		/* update framelength */
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] +
-			ctx->frame_length_in_lut[1] +
-			ctx->frame_length_in_lut[2];
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-		ctx->min_frame_length = ctx->frame_length;
-		DRV_LOG(ctx,
-			"sid:%u,max_fps(input/output):%u/%u,min_fl_en:1,lut order:%u,fll(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%u\n",
-			scenario_id,
-			framerate, ctx->current_fps,
-			ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf,
-			frame_length,
-			ctx->frame_length,
-			ctx->frame_length_in_lut[0],
-			ctx->frame_length_in_lut[1],
-			ctx->frame_length_in_lut[2],
-			ctx->frame_length_in_lut[3],
-			ctx->frame_length_in_lut[4]);
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[2] >
-				(ctx->exposure[2] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				sayramuwide_set_dummy(ctx);
-		} else {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[2] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[2] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				sayramuwide_set_dummy(ctx);
-		}
-		break;
-	default:
-		break;
-	}
-}
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwidemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwidemipiraw_Sensor.h
deleted file mode 100755
index f5c5a01d..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/sayramuwide_mipi_raw/sayramuwidemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     SAYRAMUWIDEmipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _SAYRAMUWIDEMIPI_SENSOR_H
-#define _SAYRAMUWIDEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "sayramuwide_ana_gain_table.h"
-#include "sayramuwide_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/Makefile
deleted file mode 100755
index 2613ce89..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/targafrontmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafront_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafront_Sensor_setting.h
deleted file mode 100755
index 8a07c670..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafront_Sensor_setting.h
+++ /dev/null
@@ -1,764 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 targafront_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _TARGAFRONTMIPI_SENSOR_SETTING_H
-#define _TARGAFRONTMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 targafront_sensor_init_setting[] = {
-	0x0136, 0x18,
-	0x0137, 0x00,
-	0x3C7E, 0x03,
-	0x3C7F, 0x05,
-	0x3E35, 0x00,
-	0x3E36, 0x00,
-	0x3E37, 0x00,
-	0x3F7F, 0x01,
-	0x4431, 0x04,
-	0x531C, 0x01,
-	0x531D, 0x02,
-	0x531E, 0x04,
-	0x5928, 0x00,
-	0x5929, 0x2F,
-	0x592A, 0x00,
-	0x592B, 0x85,
-	0x592C, 0x00,
-	0x592D, 0x32,
-	0x592E, 0x00,
-	0x592F, 0x88,
-	0x5930, 0x00,
-	0x5931, 0x3D,
-	0x5932, 0x00,
-	0x5933, 0x93,
-	0x5938, 0x00,
-	0x5939, 0x24,
-	0x593A, 0x00,
-	0x593B, 0x7A,
-	0x593C, 0x00,
-	0x593D, 0x24,
-	0x593E, 0x00,
-	0x593F, 0x7A,
-	0x5940, 0x00,
-	0x5941, 0x2F,
-	0x5942, 0x00,
-	0x5943, 0x85,
-	0x5F0E, 0x6E,
-	0x5F11, 0xC6,
-	0x5F17, 0x5E,
-	0x7990, 0x01,
-	0x7993, 0x5D,
-	0x7994, 0x5D,
-	0x7995, 0xA1,
-	0x799A, 0x01,
-	0x799D, 0x00,
-	0x8169, 0x01,
-	0x8359, 0x01,
-	0x9302, 0x1E,
-	0x9306, 0x1F,
-	0x930A, 0x26,
-	0x930E, 0x23,
-	0x9312, 0x23,
-	0x9316, 0x2C,
-	0x9317, 0x19,
-	0xB046, 0x01,
-	0xB048, 0x01,
-	0x0100, 0x00,
-};
-
-static u16 targafront_preview_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x1D,
-	0x0341, 0x80,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xF7,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x1D,
-	0x0203, 0x6E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xAF,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x5F,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x97,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xEB,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 targafront_capture_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x1D,
-	0x0341, 0x80,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xF7,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x1D,
-	0x0203, 0x6E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xAF,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x5F,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x97,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xEB,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 targafront_normal_video_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x0A,
-	0x0341, 0xE2,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x01,
-	0x0347, 0xC4,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0B,
-	0x034B, 0xE3,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x05,
-	0x040F, 0x10,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x05,
-	0x034F, 0x10,
-	0x0301, 0x06,
-	0x0303, 0x04,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0xD6,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x01,
-	0x030F, 0x14,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x0A,
-	0x0203, 0xD0,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xB7,
-	0x080C, 0x00,
-	0x080D, 0x27,
-	0x080E, 0x00,
-	0x080F, 0x47,
-	0x0810, 0x00,
-	0x0811, 0x27,
-	0x0812, 0x00,
-	0x0813, 0x27,
-	0x0814, 0x00,
-	0x0815, 0x27,
-	0x0816, 0x00,
-	0x0817, 0x9F,
-	0x0818, 0x00,
-	0x0819, 0x1F,
-	0x0824, 0x00,
-	0x0825, 0xE1,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 targafront_hs_video_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x05,
-	0x0341, 0x70,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x01,
-	0x0347, 0xC4,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0B,
-	0x034B, 0xE3,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x05,
-	0x040F, 0x10,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x05,
-	0x034F, 0x10,
-	0x0301, 0x06,
-	0x0303, 0x04,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0xD6,
-	0x030B, 0x01,
-	0x030D, 0x06,
-	0x030E, 0x00,
-	0x030F, 0xC8,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x05,
-	0x0203, 0x5E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x37,
-	0x080E, 0x00,
-	0x080F, 0x67,
-	0x0810, 0x00,
-	0x0811, 0x37,
-	0x0812, 0x00,
-	0x0813, 0x37,
-	0x0814, 0x00,
-	0x0815, 0x37,
-	0x0816, 0x00,
-	0x0817, 0xDF,
-	0x0818, 0x00,
-	0x0819, 0x2F,
-	0x0824, 0x00,
-	0x0825, 0xE3,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 targafront_slim_video_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x05,
-	0x0341, 0xE6,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x01,
-	0x0347, 0xBC,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0B,
-	0x034B, 0xEB,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x04,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x05,
-	0x040F, 0x10,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x05,
-	0x034F, 0x10,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0x3A,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0x8B,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x05,
-	0x0203, 0xD4,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-};
-
-static u16 targafront_custom1_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x07,
-	0x0341, 0x1E,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0xA7,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x0A,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x00,
-	0x0307, 0x46,
-	0x030B, 0x01,
-	0x030D, 0x02,
-	0x030E, 0x00,
-	0x030F, 0x1E,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x07,
-	0x0203, 0x0C,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-};
-
-static u16 targafront_custom2_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x0A,
-	0x0343, 0x00,
-	0x0340, 0x1D,
-	0x0341, 0x80,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x08,
-	0x3F4C, 0x81,
-	0x3F4D, 0x81,
-	0x0408, 0x00,
-	0x0409, 0x0C,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x09,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0xC0,
-	0x034C, 0x09,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0xC0,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xF7,
-	0x0310, 0x01,
-	0x3F78, 0x01,
-	0x3F79, 0x31,
-	0x3FFE, 0x00,
-	0x3FFF, 0x8A,
-	0x5F0A, 0xB6,
-	0x0202, 0x1D,
-	0x0203, 0x6E,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0xA7,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xAF,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x5F,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x97,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xEB,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 targafront_custom3_setting[] = {
-	0x0808, 0x00,
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x14,
-	0x0343, 0x00,
-	0x0340, 0x0E,
-	0x0341, 0xC0,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x0A,
-	0x3F4C, 0x01,
-	0x3F4D, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x18,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x12,
-	0x040D, 0x00,
-	0x040E, 0x0D,
-	0x040F, 0x80,
-	0x034C, 0x12,
-	0x034D, 0x00,
-	0x034E, 0x0D,
-	0x034F, 0x80,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x22,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x00,
-	0x030F, 0xE8,
-	0x0310, 0x01,
-	0x3F78, 0x02,
-	0x3F79, 0x0A,
-	0x3FFE, 0x00,
-	0x3FFF, 0x18,
-	0x5F0A, 0xB2,
-	0x0202, 0x0E,
-	0x0203, 0xAE,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-	0x0808, 0x02,
-	0x080A, 0x00,
-	0x080B, 0x9F,
-	0x080C, 0x00,
-	0x080D, 0x5F,
-	0x080E, 0x00,
-	0x080F, 0xA7,
-	0x0810, 0x00,
-	0x0811, 0x5F,
-	0x0812, 0x00,
-	0x0813, 0x57,
-	0x0814, 0x00,
-	0x0815, 0x57,
-	0x0816, 0x01,
-	0x0817, 0x87,
-	0x0818, 0x00,
-	0x0819, 0x4F,
-	0x0824, 0x00,
-	0x0825, 0xE7,
-	0x0826, 0x00,
-	0x0827, 0x0F,
-};
-
-static u16 targafront_custom4_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x03,
-	0x0342, 0x14,
-	0x0343, 0x00,
-	0x0340, 0x0E,
-	0x0341, 0x6C,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x14,
-	0x0348, 0x12,
-	0x0349, 0x2F,
-	0x034A, 0x0D,
-	0x034B, 0x93,
-	0x0381, 0x01,
-	0x0383, 0x01,
-	0x0385, 0x01,
-	0x0387, 0x01,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x0A,
-	0x3F4C, 0x01,
-	0x3F4D, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x18,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x12,
-	0x040D, 0x00,
-	0x040E, 0x0D,
-	0x040F, 0x80,
-	0x034C, 0x12,
-	0x034D, 0x00,
-	0x034E, 0x0D,
-	0x034F, 0x80,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x1C,
-	0x030B, 0x01,
-	0x030D, 0x06,
-	0x030E, 0x01,
-	0x030F, 0x9C,
-	0x0310, 0x01,
-	0x3F78, 0x02,
-	0x3F79, 0x0A,
-	0x3FFE, 0x00,
-	0x3FFF, 0x18,
-	0x5F0A, 0xB2,
-	0x0202, 0x0E,
-	0x0203, 0x5A,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3F15, 0x00,
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafront_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafront_ana_gain_table.h
deleted file mode 100755
index ced79325..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafront_ana_gain_table.h
+++ /dev/null
@@ -1,492 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************/
-#ifndef __TARGAFRONT_ANA_GAIN_TABLE_H__
-#define __TARGAFRONT_ANA_GAIN_TABLE_H__
-static kal_uint32 targafront_ana_gain_table[] = {
-	1024,
-	1056,
-	1088,
-	1120,
-	1152,
-	1184,
-	1216,
-	1248,
-	1280,
-	1312,
-	1344,
-	1376,
-	1408,
-	1440,
-	1472,
-	1504,
-	1536,
-	1568,
-	1600,
-	1632,
-	1664,
-	1696,
-	1728,
-	1760,
-	1792,
-	1824,
-	1856,
-	1888,
-	1920,
-	1952,
-	1984,
-	2016,
-	2048,
-	2080,
-	2112,
-	2144,
-	2176,
-	2208,
-	2240,
-	2272,
-	2304,
-	2336,
-	2368,
-	2400,
-	2432,
-	2464,
-	2496,
-	2528,
-	2560,
-	2592,
-	2624,
-	2656,
-	2688,
-	2720,
-	2752,
-	2784,
-	2816,
-	2848,
-	2880,
-	2912,
-	2944,
-	2976,
-	3008,
-	3040,
-	3072,
-	3104,
-	3136,
-	3168,
-	3200,
-	3232,
-	3264,
-	3296,
-	3328,
-	3360,
-	3392,
-	3424,
-	3456,
-	3488,
-	3520,
-	3552,
-	3584,
-	3616,
-	3648,
-	3680,
-	3712,
-	3744,
-	3776,
-	3808,
-	3840,
-	3872,
-	3904,
-	3936,
-	3968,
-	4000,
-	4032,
-	4064,
-	4096,
-	4128,
-	4160,
-	4192,
-	4224,
-	4256,
-	4288,
-	4320,
-	4352,
-	4384,
-	4416,
-	4448,
-	4480,
-	4512,
-	4544,
-	4576,
-	4608,
-	4640,
-	4672,
-	4704,
-	4736,
-	4768,
-	4800,
-	4832,
-	4864,
-	4896,
-	4928,
-	4960,
-	4992,
-	5024,
-	5056,
-	5088,
-	5120,
-	5152,
-	5184,
-	5216,
-	5248,
-	5280,
-	5312,
-	5344,
-	5376,
-	5408,
-	5440,
-	5472,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6080,
-	6112,
-	6144,
-	6176,
-	6208,
-	6240,
-	6272,
-	6304,
-	6336,
-	6368,
-	6400,
-	6432,
-	6464,
-	6496,
-	6528,
-	6560,
-	6592,
-	6624,
-	6656,
-	6688,
-	6720,
-	6752,
-	6784,
-	6816,
-	6848,
-	6880,
-	6912,
-	6944,
-	6976,
-	7008,
-	7040,
-	7072,
-	7104,
-	7136,
-	7168,
-	7200,
-	7232,
-	7264,
-	7296,
-	7328,
-	7360,
-	7392,
-	7424,
-	7456,
-	7488,
-	7520,
-	7552,
-	7584,
-	7616,
-	7648,
-	7680,
-	7712,
-	7744,
-	7776,
-	7808,
-	7840,
-	7872,
-	7904,
-	7936,
-	7968,
-	8000,
-	8032,
-	8064,
-	8096,
-	8128,
-	8160,
-	8192,
-	8224,
-	8256,
-	8288,
-	8320,
-	8352,
-	8384,
-	8416,
-	8448,
-	8480,
-	8512,
-	8544,
-	8576,
-	8608,
-	8640,
-	8672,
-	8704,
-	8736,
-	8768,
-	8800,
-	8832,
-	8864,
-	8896,
-	8928,
-	8960,
-	8992,
-	9024,
-	9056,
-	9088,
-	9120,
-	9152,
-	9184,
-	9216,
-	9248,
-	9280,
-	9312,
-	9344,
-	9376,
-	9408,
-	9440,
-	9472,
-	9504,
-	9536,
-	9568,
-	9600,
-	9632,
-	9664,
-	9696,
-	9728,
-	9760,
-	9792,
-	9824,
-	9856,
-	9888,
-	9920,
-	9952,
-	9984,
-	10016,
-	10048,
-	10080,
-	10112,
-	10144,
-	10176,
-	10208,
-	10240,
-	10272,
-	10304,
-	10336,
-	10368,
-	10400,
-	10432,
-	10464,
-	10496,
-	10528,
-	10560,
-	10592,
-	10624,
-	10656,
-	10688,
-	10720,
-	10752,
-	10784,
-	10816,
-	10848,
-	10880,
-	10912,
-	10944,
-	10976,
-	11008,
-	11040,
-	11072,
-	11104,
-	11136,
-	11168,
-	11200,
-	11232,
-	11264,
-	11296,
-	11328,
-	11360,
-	11392,
-	11424,
-	11456,
-	11488,
-	11520,
-	11552,
-	11584,
-	11616,
-	11648,
-	11680,
-	11712,
-	11744,
-	11776,
-	11808,
-	11840,
-	11872,
-	11904,
-	11936,
-	11968,
-	12000,
-	12032,
-	12064,
-	12096,
-	12128,
-	12160,
-	12192,
-	12224,
-	12256,
-	12288,
-	12320,
-	12352,
-	12384,
-	12416,
-	12448,
-	12480,
-	12512,
-	12544,
-	12576,
-	12608,
-	12640,
-	12672,
-	12704,
-	12736,
-	12768,
-	12800,
-	12832,
-	12864,
-	12896,
-	12928,
-	12960,
-	12992,
-	13024,
-	13056,
-	13088,
-	13120,
-	13152,
-	13184,
-	13216,
-	13248,
-	13280,
-	13312,
-	13344,
-	13376,
-	13408,
-	13440,
-	13472,
-	13504,
-	13536,
-	13568,
-	13600,
-	13632,
-	13664,
-	13696,
-	13728,
-	13760,
-	13792,
-	13824,
-	13856,
-	13888,
-	13920,
-	13952,
-	13984,
-	14016,
-	14048,
-	14080,
-	14112,
-	14144,
-	14176,
-	14208,
-	14240,
-	14272,
-	14304,
-	14336,
-	14368,
-	14400,
-	14432,
-	14464,
-	14496,
-	14528,
-	14560,
-	14592,
-	14624,
-	14656,
-	14688,
-	14720,
-	14752,
-	14784,
-	14816,
-	14848,
-	14880,
-	14912,
-	14944,
-	14976,
-	15008,
-	15040,
-	15072,
-	15104,
-	15136,
-	15168,
-	15200,
-	15232,
-	15264,
-	15296,
-	15328,
-	15360,
-	15392,
-	15424,
-	15456,
-	15488,
-	15520,
-	15552,
-	15584,
-	15616,
-	15648,
-	15680,
-	15712,
-	15744,
-	15776,
-	15808,
-	15840,
-	15872,
-	15904,
-	15936,
-	15968,
-	16000,
-	16032,
-	16064,
-	16096,
-	16128,
-	16160,
-	16192,
-	16224,
-	16256,
-	16288,
-	16320,
-	16352,
-	16384,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafrontmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafrontmipiraw_Sensor.c
deleted file mode 100755
index 515a3a70..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafrontmipiraw_Sensor.c
+++ /dev/null
@@ -1,1619 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 targafrontmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "targafrontmipiraw_Sensor.h"
-
-#define PFX "targafront_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-
-#define TARGAFRONT_EEPROM_READ_ID			0xA9
-#define TARGAFRONT_EEPROM_WRITE_ID			0xA8
-#define TARGAFRONT_MAX_OFFSET				0x4000
-#define OTP_SIZE							0x2000
-#define OTP_QSC_VALID_ADDR    				0x0EC0
-#define QSC_IS_VALID_VAL      				0x01
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH		40
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int targafront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targafront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targafront_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targafront_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targafront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targafront_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targafront_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targafront_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targafront_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targafront_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static void get_sensor_cali(void* arg);
-static void set_sensor_cali(void *arg);
-static int targafront_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int power_off(struct subdrv_ctx *ctx, void *data);
-
-/* STRUCT */
-
-static struct eeprom_map_info targafront_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x000D, 0x000E, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000C, 0x000D, 0x000E, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, targafront_set_test_pattern},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, targafront_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, targafront_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, targafront_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, targafront_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, targafront_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, targafront_streaming_resume},
-	{SENSOR_FEATURE_SET_ESHUTTER, targafront_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, targafront_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, targafront_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_SET_GAIN, targafront_set_gain},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01c40055,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA8,
-
-		.qsc_support = TRUE,
-		.qsc_size = 560,
-		.addr_qsc = 0x0C90, //QSC_EEPROM_ADDR
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1296,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1296,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1296,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4608,
-			.vsize = 3456,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1244,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = targafront_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(targafront_preview_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-//		.raw_cnt = 1,
-//		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 2560,
-		.framelength = 7552,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 592800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x41,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = targafront_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(targafront_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-//		.raw_cnt = 1,
-//		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 2560,
-		.framelength = 7552,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 592800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x41,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = UNUSE_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = targafront_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(targafront_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 214000000,
-		.linelength = 2560,
-		.framelength = 2786,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 220800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 444,
-			.w0_size = 4608,
-			.h0_size = 2608 ,
-			.scale_w = 2304,
-			.scale_h = 1304,
-			.x1_offset = 0,
-			.y1_offset = 4,
-			.w1_size = 2304,
-			.h1_size = 1296,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1296,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x4B,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_hs_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_hs_vid),
-		.mode_setting_table = targafront_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(targafront_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 214000000,
-		.linelength = 2560,
-		.framelength = 1392,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 320000000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 452,
-			.w0_size = 4608,
-			.h0_size = 2592 ,
-			.scale_w = 2304,
-			.scale_h = 1296,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1296,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1296,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x4B,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 60,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_slim_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_slim_vid),
-		.mode_setting_table = targafront_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(targafront_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 216000000,
-		.linelength = 2560,
-		.framelength = 1406,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 259200000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 444,
-			.w0_size = 4608,
-			.h0_size = 2608,
-			.scale_w = 2304,
-			.scale_h = 1304,
-			.x1_offset = 0,
-			.y1_offset = 4,
-			.w1_size = 2304,
-			.h1_size = 1296,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1296,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 120,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = targafront_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(targafront_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 124000000,
-		.linelength = 2560,
-		.framelength = 2018,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 139200000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 24,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = targafront_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(targafront_custom2_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 2560,
-		.framelength = 7552,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 592800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x41,
-		},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = NORMAL_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = targafront_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(targafront_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 580000000,
-		.linelength = 5120,
-		.framelength = 3776,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 556800000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 24,
-			.y0_offset = 20,
-			.w0_size = 4608,
-			.h0_size = 3456,
-			.scale_w = 4608,
-			.scale_h = 3456,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4608,
-			.h1_size = 3456,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4608,
-			.h2_tg_size = 3456,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 2,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {.dphy_trail = 0x45,},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = RMSC_MASK,
-//			.equivalent_fps = 15,
-//		},
-	},
-	{
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = targafront_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(targafront_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 132000000,
-		.linelength = 2560,
-		.framelength = 1718,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 681600000,
-		.readout_length = 0,
-		.read_margin = 18,
-		.imgsensor_winsize_info = {
-			.full_w = 4656,
-			.full_h = 3496,
-			.x0_offset = 696,
-			.y0_offset = 504,
-			.w0_size = 3264,
-			.h0_size = 2488,
-			.scale_w = 1632,
-			.scale_h = 1244,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1244,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1244,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 4,
-		.fine_integ_line = 0,
-		.delay_frame = 3,
-		.csi_param = {0},
-//		.sensor_setting_info = {
-//			.sensor_scenario_usage = HDR_RAW_STAGGER_2EXP_MASK,
-//			.equivalent_fps = 30,
-//		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = TARGAFRONT_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0A22, 0x0A23},
-	.i2c_addr_table = {0x20, 0x34, 0xff},
-	.i2c_burst_write_support = FALSE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {4656, 3496},
-	.mirror = IMAGE_HV_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_6MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_BAYER_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 16,
-	.ana_gain_type = 0, //0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC
-	.ana_gain_step = 1,
-	.ana_gain_table = targafront_ana_gain_table,
-	.ana_gain_table_size = sizeof(targafront_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max = (0xffff * 128) - 18,
-	.exposure_step = 1,
-	.exposure_margin = 18,
-
-	.frame_length_max = 0xffff,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1891000,
-
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.hdr_type = HDR_SUPPORT_NA,
-	.seamless_switch_support = FALSE,
-	.temperature_support = FALSE,
-	.g_temp = PARAM_UNDEFINED,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {{0x0202, 0x0203},},
-	.long_exposure_support = FALSE,
-	.reg_addr_exposure_lshift = PARAM_UNDEFINED,
-	.reg_addr_ana_gain = {{0x0204, 0x0205},},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = PARAM_UNDEFINED,
-	.reg_addr_temp_read = 0x0020,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = 0x0005,
-
-	.init_setting_table = targafront_sensor_init_setting,
-	.init_setting_len =  ARRAY_SIZE(targafront_sensor_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xb1893b4f,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.update_sof_cnt = common_update_sof_cnt,
-	.power_off = power_off,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-    {HW_ID_MCLK, {24}, 0},
-    {HW_ID_DVDD1, {1}, 2000},
-    {HW_ID_RST, {0}, 2000},
-    {HW_ID_AVDD, {2800000,2800000}, 3000},
-    {HW_ID_DVDD, {1050000,1050000}, 4000},
-    {HW_ID_DOVDD, {1800000,1800000}, 3000},
-    {HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-    {HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry targafront_mipi_raw_entry = {
-	.name = "targafront_mipi_raw",
-	.id = TARGAFRONT_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static void targafront_set_dummy(struct subdrv_ctx *ctx)
-{
-	DRV_LOG(ctx, "dummyline = %d, dummypixels = %d\n",
-		ctx->dummy_line, ctx->dummy_pixel);
-
-	subdrv_i2c_wr_u8(ctx, 0x0350, 0x00); /* Disable auto extend */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-
-	subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-	subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0342, ctx->line_length >> 8);
-	subdrv_i2c_wr_u8(ctx, 0x0343, ctx->line_length & 0xFF);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-}				/*      set_dummy  */
-
-static void targafront_set_max_framerate(struct subdrv_ctx *ctx, UINT16 framerate,
-			kal_bool min_framelength_en)
-{
-
-	kal_uint32 frame_length = ctx->frame_length;
-
-	DRV_LOG(ctx, "framerate = %d, min framelength should enable %d\n",
-		framerate, min_framelength_en);
-
-	frame_length = ctx->pclk / framerate * 10 / ctx->line_length;
-
-	if (frame_length >= ctx->min_frame_length)
-		ctx->frame_length = frame_length;
-	else
-		ctx->frame_length = ctx->min_frame_length;
-
-	ctx->dummy_line =
-		ctx->frame_length - ctx->min_frame_length;
-
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-
-		ctx->dummy_line =
-			ctx->frame_length - ctx->min_frame_length;
-	}
-	if (min_framelength_en)
-		ctx->min_frame_length = ctx->frame_length;
-
-	targafront_set_dummy(ctx);
-}
-
-static void targafront_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u32 *shutter, u32 frame_length, bool auto_extend_en)
-{
-	kal_uint16 realtime_fps = 0;
-	kal_int32 dummy_line = 0;
-	u8 exposure_margin = ctx->s_ctx.exposure_margin;
-
-	ctx->exposure[0] = *shutter;
-
-	/* Change frame time */
-	if (frame_length > 1)
-		dummy_line = frame_length - ctx->frame_length;
-
-	ctx->frame_length = ctx->frame_length + dummy_line;
-
-	if (ctx->exposure[0] > ctx->frame_length - exposure_margin)
-		ctx->frame_length = ctx->exposure[0] + exposure_margin;
-
-	if (ctx->frame_length > ctx->max_frame_length)
-		ctx->frame_length = ctx->max_frame_length;
-
-	ctx->exposure[0] = (ctx->exposure[0] < ctx->s_ctx.exposure_min)
-			? ctx->s_ctx.exposure_min : ctx->exposure[0];
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps >= 297 && realtime_fps <= 305) {
-			targafront_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps >= 147 && realtime_fps <= 150) {
-			targafront_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-			subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);	
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-		subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	}
-	/* Update Shutter */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	if (auto_extend_en)
-		subdrv_i2c_wr_u8(ctx, 0x0350, 0x01); /* Enable auto extend */
-	else
-		subdrv_i2c_wr_u8(ctx, 0x0350, 0x00); /* Disable auto extend */
-
-	subdrv_i2c_wr_u8(ctx, 0x0202, (ctx->exposure[0] >> 8) & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0203, ctx->exposure[0] & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	DRV_LOG(ctx, "Exit! shutter =%d, framelength =%d/%d, dummy_line=%d, auto_extend=%d\n",
-		ctx->exposure[0], ctx->frame_length, frame_length, dummy_line, subdrv_i2c_rd_u16(ctx, 0x0350));
-}	/* set_shutter_frame_length */
-
-static int targafront_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "shutter:%u, frame_length:%u\n", (u32)(*para), (u32) (*(para + 1)));
-	targafront_set_shutter_frame_length_convert(ctx, (u32 *)para, (u32) (*(para + 1)), (u16) (*(para + 2)));
-	return 0;
-}
-
-static void targafront_write_shutter(struct subdrv_ctx *ctx)
-{
-	kal_uint16 realtime_fps = 0;
-	u8 exposure_margin = 0;
-	DRV_LOG(ctx, "===brad shutter:%d\n", ctx->exposure[0]);
-	exposure_margin = ctx->s_ctx.exposure_margin;
-  	LOG_INF("exposure_margin:%d\n", exposure_margin);
-
-	if (ctx->exposure[0] > ctx->min_frame_length - exposure_margin) {
-		ctx->frame_length = ctx->exposure[0] + exposure_margin;
-	} else {
-		ctx->frame_length = ctx->min_frame_length;
-	}
-	if (ctx->frame_length > ctx->max_frame_length) {
-		ctx->frame_length = ctx->max_frame_length;
-	}
-
-	if (ctx->exposure[0] < ctx->s_ctx.exposure_min) {
-		ctx->exposure[0] = ctx->s_ctx.exposure_min;
-	}
-
-	if (ctx->autoflicker_en) {
-		realtime_fps = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-		if (realtime_fps >= 297 && realtime_fps <= 305) {
-			targafront_set_max_framerate(ctx, 296, 0);
-		} else if (realtime_fps >= 147 && realtime_fps <= 150) {
-			targafront_set_max_framerate(ctx, 146, 0);
-		} else {
-			// Extend frame length
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-			subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-			subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-		}
-	} else {
-		// Extend frame length
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x0340, ctx->frame_length >> 8);
-		subdrv_i2c_wr_u8(ctx, 0x0341, ctx->frame_length & 0xFF);
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	}
-	/* Update Shutter */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, 0x0350, 0x01); /* Enable auto extend */
-	subdrv_i2c_wr_u8(ctx, 0x0202, (ctx->exposure[0] >> 8) & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0203, ctx->exposure[0] & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	DRV_LOG(ctx, "shutter =%d, framelength =%d\n", ctx->exposure[0], ctx->frame_length);
-}	/*	write_shutter  */
-
-static void targafront_set_shutter_convert(struct subdrv_ctx *ctx, u32 *shutter)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", *shutter);
-	ctx->exposure[0] = *shutter;
-
-	targafront_write_shutter(ctx);
-}
-
-static int targafront_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	DRV_LOG(ctx, "set_shutter shutter =%d\n", *para);
-	targafront_set_shutter_convert(ctx, (u32 *)para);
-	return 0;
-}
-
-static void targafront_set_multi_shutter_frame_length(struct subdrv_ctx *ctx,
-		u32 *shutters, u16 exp_cnt,	u16 frame_length)
-{
-	int i = 0;
-	u32 fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[3] = {0};
-	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max(shutters[i], ctx->s_ctx.exposure_min);
-		shutters[i] = min(shutters[i], ctx->s_ctx.exposure_max);
-		if (cit_step)
-			shutters[i] = round_up(shutters[i], cit_step);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */
-	calc_fl[0] = shutters[0];
-	for (i = 1; i < last_exp_cnt; i++)
-		calc_fl[0] += ctx->exposure[i];
-	calc_fl[0] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (2) current se + current me + current le */
-	calc_fl[1] = shutters[0];
-	for (i = 1; i < exp_cnt; i++)
-		calc_fl[1] += shutters[i];
-	calc_fl[1] += ctx->s_ctx.exposure_margin*exp_cnt*exp_cnt;
-
-	/* - (3) readout time cannot be overlapped */
-	calc_fl[2] =
-		(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-		ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-	if (last_exp_cnt == exp_cnt)
-		for (i = 1; i < exp_cnt; i++) {
-			readout_diff = ctx->exposure[i] - shutters[i];
-			calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-		}
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		ctx->frame_length = max(ctx->frame_length, calc_fl[i]);
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = shutters[i];
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		break;
-	case 2:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[2] = shutters[1] / exp_cnt;
-		break;
-	case 3:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[1] = shutters[1] / exp_cnt;
-		rg_shutters[2] = shutters[2] / exp_cnt;
-		break;
-	default:
-		break;
-	}
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[2],
-					rg_shutters[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					rg_shutters[i] & 0xFF);
-			}
-		}
-	}
-	DRV_LOG(ctx, "exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-
-	/* group hold end */
-}
-
-static int targafront_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	targafront_set_multi_shutter_frame_length(ctx, (u32 *)(*feature_data),
-		(u16) (*(feature_data + 1)), (u16) (*(feature_data + 2)));
-	return 0;
-}
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG(ctx, "AOV mode set stream in SCP side! (sid:%u)\n",
-			ctx->current_scenario_id);
-		return;
-	}
-
-	if (enable) {
-		if (ctx->s_ctx.chk_s_off_sta) {
-			DRV_LOG(ctx, "check_stream_off before stream on");
-			check_stream_off(ctx);
-		}
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-	} else {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-		if (ctx->s_ctx.reg_addr_fast_mode && ctx->fast_mode_on) {
-			ctx->fast_mode_on = FALSE;
-			ctx->ref_sof_cnt = 0;
-			DRV_LOG(ctx, "seamless_switch disabled.");
-			set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-			commit_i2c_buffer(ctx);
-		}
-	}
-	mdelay(10);
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int targafront_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-		if (*(u32 *)para)
-			targafront_set_shutter_convert(ctx, (u32 *)para);
-		streaming_ctrl(ctx, true);
-		return 0;
-}
-
-static int targafront_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-		return 0;
-}
-
-static unsigned int read_targafront_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != targafront_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != targafront_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = targafront_eeprom_info[meta_id].start;
-	readsize = targafront_eeprom_info[meta_id].size;
-
-	if (!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA9,
-	.i2c_write_id = 0xA8,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x000D,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-    kal_uint16 get_byte = 0;
-
-    adaptor_i2c_rd_u8(ctx->i2c_client, TARGAFRONT_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-    return get_byte;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH     (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, TARGAFRONT_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xE000;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, TARGAFRONT_EEPROM_WRITE_ID >> 1, reg, 0xA1);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, TARGAFRONT_EEPROM_WRITE_ID >> 1, reg, 0xA0);
-    }
-
-    return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint32 idx, idy;
-    kal_uint8 *pData;
-    UINT32 i = 0;
-    kal_uint16 offset = 0;
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-            pStereodata->uSensorId,
-            pStereodata->uDeviceId,
-            pStereodata->baseAddr,
-            pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-        if (offset > data_length) {
-            offset = data_length;
-        }
-        if ((pStereodata->uSensorId == TARGAFRONT_SENSOR_ID) && (data_length == CALI_DATA_SLAVE_LENGTH)
-            && (data_base == TARGAFRONT_STEREO_START_ADDR)) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-        } else if ((pStereodata->uSensorId == TARGAFRONT_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == TARGAFRONT_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-            /* close write protect */
-            write_eeprom_protect(ctx, 0);
-            msleep(6);
-            if (offset > 0) {
-                ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: offset\n");
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-                data_base += offset;
-                data_length -= offset;
-                pData += offset;
-            }
-            idx = data_length/WRITE_DATA_MAX_LENGTH;
-            idy = data_length%WRITE_DATA_MAX_LENGTH;
-            for (i = 0; i < idx; i++ ) {
-                ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-                    &pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-                if (ret != ERROR_NONE) {
-                    LOG_INF("write_eeprom error: i= %d\n", i);
-                    /* open write protect */
-                    write_eeprom_protect(ctx, 1);
-                    msleep(6);
-                    return -1;
-                }
-                msleep(6);
-            }
-            ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-                &pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-            if (ret != ERROR_NONE) {
-                LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-                /* open write protect */
-                write_eeprom_protect(ctx, 1);
-                msleep(6);
-                return -1;
-            }
-            msleep(6);
-            /* open write protect */
-            write_eeprom_protect(ctx, 1);
-            msleep(6);
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                read_cmos_eeprom_8(ctx, TARGAFRONT_AESYNC_START_ADDR),
-                read_cmos_eeprom_8(ctx, TARGAFRONT_AESYNC_START_ADDR+1),
-                read_cmos_eeprom_8(ctx, TARGAFRONT_AESYNC_START_ADDR+2),
-                read_cmos_eeprom_8(ctx, TARGAFRONT_AESYNC_START_ADDR+3),
-                read_cmos_eeprom_8(ctx, TARGAFRONT_AESYNC_START_ADDR+4),
-                read_cmos_eeprom_8(ctx, TARGAFRONT_AESYNC_START_ADDR+5),
-                read_cmos_eeprom_8(ctx, TARGAFRONT_AESYNC_START_ADDR+6),
-                read_cmos_eeprom_8(ctx, TARGAFRONT_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("targafront write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int targafront_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        *len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-    return 0;
-}
-
-static int targafront_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	if(*len > CALI_DATA_SLAVE_LENGTH) {
-		*len = CALI_DATA_SLAVE_LENGTH;
-	}
-	read_targafront_eeprom_info(ctx, EEPROM_META_STEREO_DATA,
-			(BYTE *)para, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, TARGAFRONT_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "targafront read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "targafront read_otp_info end\n");
-}
-
-static int targafront_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int targafront_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	ctx->i2c_write_id = 0x20;
-	LOG_INF("dbgmsg - reg(0x300a) = 0x%x, reg(0x300b) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x300a), subdrv_i2c_rd_u8(ctx, 0x300b));
-	LOG_INF("dbgmsg - reg(0x0A22) = 0x%x, reg(0x0A23) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x0A22), subdrv_i2c_rd_u8(ctx, 0x0A23));
-	LOG_INF("dbgmsg - reg(0x0136) = 0x%x, reg(0x0137) = 0x%x\n", subdrv_i2c_rd_u8(ctx, 0x0136), subdrv_i2c_rd_u8(ctx, 0x0137));
-
-	subdrv_i2c_wr_u8(ctx, 0x0A02, 0x1B);
-	subdrv_i2c_wr_u8(ctx, 0x0A00, 0x01);
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			*sensor_id = (*sensor_id >> 4) & 0xFFFF;
-			LOG_INF("i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x0471) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = FALSE;
-				}
-				return ERROR_NONE;
-			}
-			LOG_INF("Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			LOG_INF("sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-	sensor_init(ctx);
-
-	/* HW GGC*/
-	set_sensor_cali(ctx);
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	else
-		subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	u16 reg_gain = 0x0;
-	reg_gain = 1024 - (1024 * BASEGAIN) / gain;
-	return reg_gain;
-}
-
-static int targafront_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern)
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-	if (mode) {
-		if (mode == 5) {
-			subdrv_i2c_wr_u8(ctx, 0x0600, mode >> 4); /*black*/
-			subdrv_i2c_wr_u8(ctx, 0x0601, mode); /*black*/
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x0600, mode); /*100% Color bar*/
-		}
-	}
-	else if (ctx->test_pattern)
-		subdrv_i2c_wr_u8(ctx, 0x0600, 0x0000); /*No pattern*/
-
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-void get_sensor_cali(void* arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u8 qsc_is_valid = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		// Check QSC validation
-		qsc_is_valid = QSC_IS_VALID_VAL; // i2c_read_eeprom(ctx, OTP_QSC_VALID_ADDR);
-		if (qsc_is_valid != QSC_IS_VALID_VAL) {
-			DRV_LOGE(ctx, "QSC data is invalid, flag(%02x)", qsc_is_valid);
-		} else if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	//struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	return;
-}
-
-int targafront_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-	u16 rg_gain;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain, ctx->s_ctx.ana_gain_min);
-	gain = min(gain, ctx->s_ctx.ana_gain_max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	/* group hold end */
-	return 0;
-}
-
-static int power_off(struct subdrv_ctx *ctx, void *data)
-{
-	LOG_INF("dbgmsg - func: %s, line: %d\n", __FUNCTION__, __LINE__);
-	mdelay(2);
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafrontmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafrontmipiraw_Sensor.h
deleted file mode 100755
index 68a4729b..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targafront_mipi_raw/targafrontmipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     TARGAFRONTmipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _TARGAFRONTMIPI_SENSOR_H
-#define _TARGAFRONTMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "targafront_ana_gain_table.h"
-#include "targafront_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/Makefile
deleted file mode 100755
index de1ea949..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/targamainmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamain_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamain_Sensor_setting.h
deleted file mode 100755
index 18eb9ff0..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamain_Sensor_setting.h
+++ /dev/null
@@ -1,3779 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 targamain_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _TARGAMAIN_SENSOR_SETTING_H
-#define _TARGAMAIN_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-/* NOTE:
-for 2 exp setting,  VCID of LE/SE should be 0x00 and 0x02
-which align 3 exp setting LE/NE/SE 0x00,  0x01,  0x02
-to seamless switch,  VC ID of SE should remain the same
-SONY sensor: VCID of 2nd frame at 0x3070; VCID of 3rd frame at 0x3080
-must be two different value*/
-
-static u16 targamain_init_setting[] = {
-	0x0136, 0x18,
-	0x0137, 0x00,
-	0xF800, 0xFD,
-	0xF801, 0xFD,
-	0xF802, 0xD7,
-	0xF803, 0xE3,
-	0xF804, 0x55,
-	0xF805, 0xC0,
-	0xF806, 0x03,
-	0xF807, 0x01,
-	0xF808, 0x16,
-	0xF809, 0xFA,
-	0xF80A, 0x82,
-	0xF80B, 0x00,
-	0xF80C, 0x55,
-	0xF80D, 0xC4,
-	0xF80E, 0x03,
-	0xF80F, 0x01,
-	0xF810, 0x1B,
-	0xF811, 0x24,
-	0xF812, 0xC2,
-	0xF813, 0xFC,
-	0xF814, 0x55,
-	0xF815, 0x90,
-	0xF816, 0x11,
-	0xF817, 0x01,
-	0xF818, 0x00,
-	0xF819, 0x00,
-	0xF81A, 0x51,
-	0xF81B, 0x00,
-	0xF81C, 0x55,
-	0xF81D, 0x94,
-	0xF81E, 0x11,
-	0xF81F, 0x01,
-	0xF820, 0x16,
-	0xF821, 0xFA,
-	0xF822, 0x00,
-	0xF823, 0x00,
-	0xF824, 0x55,
-	0xF825, 0x98,
-	0xF826, 0x11,
-	0xF827, 0x01,
-	0xF828, 0xB4,
-	0xF829, 0x00,
-	0xF82A, 0x20,
-	0xF82B, 0xEF,
-	0xF82C, 0x55,
-	0xF82D, 0x64,
-	0xF82E, 0x39,
-	0xF82F, 0x00,
-	0xF830, 0x32,
-	0xF831, 0xC8,
-	0xF832, 0x17,
-	0xF833, 0xFA,
-	0xF884, 0x4F,
-	0xF885, 0x06,
-	0xF886, 0xAC,
-	0xF887, 0x27,
-	0xF888, 0xAC,
-	0xF889, 0x1D,
-	0xF88A, 0xAC,
-	0xF88B, 0x14,
-	0xF88C, 0xD4,
-	0xF88D, 0x18,
-	0xF88E, 0x08,
-	0xF88F, 0x00,
-	0xF890, 0xF0,
-	0xF891, 0x45,
-	0xF892, 0x06,
-	0xF893, 0xD8,
-	0xF894, 0xD4,
-	0xF895, 0x21,
-	0xF896, 0x42,
-	0xF897, 0x84,
-	0xF898, 0x1E,
-	0xF899, 0x44,
-	0xF89A, 0x29,
-	0xF89B, 0x14,
-	0xF89C, 0x90,
-	0xF89D, 0x0C,
-	0xF89E, 0xD4,
-	0xF89F, 0x21,
-	0xF8A0, 0x42,
-	0xF8A1, 0x86,
-	0xF8A2, 0x1E,
-	0xF8A3, 0x44,
-	0xF8A4, 0x0F,
-	0xF8A5, 0x14,
-	0xF8A6, 0x80,
-	0xF8A7, 0x04,
-	0xF8A8, 0x00,
-	0xF8A9, 0x14,
-	0xF8AA, 0x00,
-	0xF8AB, 0x41,
-	0xF8AC, 0xA1,
-	0xF8AD, 0x50,
-	0xF8AE, 0xA8,
-	0xF8AF, 0x14,
-	0xF8B0, 0xA8,
-	0xF8B1, 0x1D,
-	0xF8B2, 0xA8,
-	0xF8B3, 0x27,
-	0xF8B4, 0xA0,
-	0xF8B5, 0x09,
-	0xF8B6, 0x4F,
-	0xF8B7, 0x06,
-	0xF8B8, 0xAC,
-	0xF8B9, 0x27,
-	0xF8BA, 0xAC,
-	0xF8BB, 0x1D,
-	0xF8BC, 0xAC,
-	0xF8BD, 0x14,
-	0xF8BE, 0xD0,
-	0xF8BF, 0x21,
-	0xF8C0, 0x42,
-	0xF8C1, 0x84,
-	0xF8C2, 0x1E,
-	0xF8C3, 0x00,
-	0xF8C4, 0xBE,
-	0xF8C5, 0x54,
-	0xF8C6, 0xD0,
-	0xF8C7, 0x21,
-	0xF8C8, 0x42,
-	0xF8C9, 0x86,
-	0xF8CA, 0x1E,
-	0xF8CB, 0x05,
-	0xF8CC, 0xD4,
-	0xF8CD, 0x18,
-	0xF8CE, 0x27,
-	0xF8CF, 0xF8,
-	0xF8D0, 0xF1,
-	0xF8D1, 0x41,
-	0xF8D2, 0x00,
-	0xF8D3, 0x02,
-	0xF8D4, 0x1A,
-	0xF8D5, 0x40,
-	0xF8D6, 0xD2,
-	0xF8D7, 0x20,
-	0xF8D8, 0x44,
-	0xF8D9, 0x00,
-	0xF8DA, 0x1A,
-	0xF8DB, 0x22,
-	0xF8DC, 0x20,
-	0xF8DD, 0x21,
-	0xF8DE, 0x90,
-	0xF8DF, 0x04,
-	0xF8E0, 0x80,
-	0xF8E1, 0x0E,
-	0xF8E2, 0xFC,
-	0xF8E3, 0x41,
-	0xF8E4, 0x7F,
-	0xF8E5, 0xFF,
-	0xF8E6, 0xFC,
-	0xF8E7, 0x31,
-	0xF8E8, 0xFF,
-	0xF8E9, 0xFF,
-	0xF8EA, 0x50,
-	0xF8EB, 0x00,
-	0xF8EC, 0x80,
-	0xF8ED, 0x0E,
-	0xF8EE, 0x02,
-	0xF8EF, 0x21,
-	0xF8F0, 0x11,
-	0xF8F1, 0x00,
-	0xF8F2, 0xFA,
-	0xF8F3, 0xE8,
-	0xF8F4, 0x07,
-	0xF8F5, 0x14,
-	0xF8F6, 0x00,
-	0xF8F7, 0x01,
-	0xF8F8, 0x15,
-	0xF8F9, 0xF0,
-	0xF8FA, 0x6F,
-	0xF8FB, 0xF5,
-	0xF8FC, 0x28,
-	0xF8FD, 0x05,
-	0xF8FE, 0xA6,
-	0xF8FF, 0x13,
-	0xF900, 0xA5,
-	0xF901, 0x53,
-	0xF902, 0x50,
-	0xF903, 0x02,
-	0xF904, 0xFA,
-	0xF905, 0xE9,
-	0xF906, 0xD0,
-	0xF907, 0x20,
-	0xF908, 0x00,
-	0xF909, 0x02,
-	0xF90A, 0x00,
-	0xF90B, 0x13,
-	0xF90C, 0x00,
-	0xF90D, 0x30,
-	0xF90E, 0x05,
-	0xF90F, 0x20,
-	0xF910, 0xB8,
-	0xF911, 0x07,
-	0xF912, 0x19,
-	0xF913, 0x40,
-	0xF914, 0x50,
-	0xF915, 0x01,
-	0xF916, 0xFA,
-	0xF917, 0xE8,
-	0xF918, 0x07,
-	0xF919, 0x86,
-	0xF91A, 0x00,
-	0xF91B, 0x10,
-	0xF91C, 0x80,
-	0xF91D, 0x04,
-	0xF91E, 0x5F,
-	0xF91F, 0xF0,
-	0xF920, 0xD1,
-	0xF921, 0x18,
-	0xF922, 0x26,
-	0xF923, 0x58,
-	0xF924, 0x1A,
-	0xF925, 0x12,
-	0xF926, 0xD1,
-	0xF927, 0x18,
-	0xF928, 0x28,
-	0xF929, 0x40,
-	0xF92A, 0xF6,
-	0xF92B, 0x11,
-	0xF92C, 0x08,
-	0xF92D, 0x3A,
-	0xF92E, 0x0F,
-	0xF92F, 0x21,
-	0xF930, 0xD2,
-	0xF931, 0x01,
-	0xF932, 0x00,
-	0xF933, 0x00,
-	0xF934, 0x01,
-	0xF935, 0x02,
-	0xF936, 0x0E,
-	0xF937, 0x03,
-	0xF938, 0x28,
-	0xF939, 0x03,
-	0xF93A, 0xA4,
-	0xF93B, 0x03,
-	0xF93C, 0xA5,
-	0xF93D, 0x23,
-	0xF93E, 0xFC,
-	0xF93F, 0x42,
-	0xF940, 0xFF,
-	0xF941, 0xFE,
-	0xF942, 0xFC,
-	0xF943, 0x32,
-	0xF944, 0xFF,
-	0xF945, 0xFF,
-	0xF946, 0x24,
-	0xF947, 0x02,
-	0xF948, 0xA5,
-	0xF949, 0x30,
-	0xF94A, 0x13,
-	0xF94B, 0x00,
-	0xF94C, 0xF1,
-	0xF94D, 0x42,
-	0xF94E, 0x00,
-	0xF94F, 0x02,
-	0xF950, 0x02,
-	0xF951, 0x02,
-	0xF952, 0x2A,
-	0xF953, 0x02,
-	0xF954, 0xA6,
-	0xF955, 0x00,
-	0xF956, 0xA5,
-	0xF957, 0x20,
-	0xF958, 0xFC,
-	0xF959, 0x12,
-	0xF95A, 0x3F,
-	0xF95B, 0xFF,
-	0xF95C, 0x22,
-	0xF95D, 0x02,
-	0xF95E, 0xA5,
-	0xF95F, 0x02,
-	0xF960, 0x0E,
-	0xF961, 0x20,
-	0xF962, 0xFA,
-	0xF963, 0x00,
-	0xF964, 0x00,
-	0xF965, 0x24,
-	0xF966, 0xD1,
-	0xF967, 0x18,
-	0xF968, 0x28,
-	0xF969, 0x0C,
-	0xF96A, 0x3A,
-	0xF96B, 0x18,
-	0xF96C, 0xD0,
-	0xF96D, 0x18,
-	0xF96E, 0x26,
-	0xF96F, 0x76,
-	0xF970, 0x1A,
-	0xF971, 0x00,
-	0xF972, 0x50,
-	0xF973, 0x01,
-	0xF974, 0xFA,
-	0xF975, 0x00,
-	0xF976, 0x00,
-	0xF977, 0x12,
-	0xF978, 0xD1,
-	0xF979, 0x18,
-	0xF97A, 0x28,
-	0xF97B, 0x0C,
-	0xF97C, 0x3A,
-	0xF97D, 0x1B,
-	0xF97E, 0xA8,
-	0xF97F, 0x14,
-	0xF980, 0xA8,
-	0xF981, 0x1D,
-	0xF982, 0xA8,
-	0xF983, 0x27,
-	0xF984, 0xA0,
-	0xF985, 0x09,
-	0xF986, 0x4F,
-	0xF987, 0x86,
-	0xF988, 0xAC,
-	0xF989, 0x17,
-	0xF98A, 0x50,
-	0xF98B, 0x12,
-	0xF98C, 0x50,
-	0xF98D, 0x03,
-	0xF98E, 0xFA,
-	0xF98F, 0xE9,
-	0xF990, 0x18,
-	0xF991, 0x76,
-	0xF992, 0xA8,
-	0xF993, 0x17,
-	0xF994, 0xA0,
-	0xF995, 0x05,
-	0xF996, 0x4F,
-	0xF997, 0x06,
-	0xF998, 0xAC,
-	0xF999, 0x27,
-	0xF99A, 0xAC,
-	0xF99B, 0x1D,
-	0xF99C, 0xAC,
-	0xF99D, 0x14,
-	0xF99E, 0xFA,
-	0xF99F, 0xE8,
-	0xF9A0, 0xF6,
-	0xF9A1, 0x2C,
-	0xF9A2, 0xD0,
-	0xF9A3, 0x20,
-	0xF9A4, 0x40,
-	0xF9A5, 0x4F,
-	0xF9A6, 0x1E,
-	0xF9A7, 0x05,
-	0xF9A8, 0xD4,
-	0xF9A9, 0x18,
-	0xF9AA, 0x08,
-	0xF9AB, 0x00,
-	0xF9AC, 0xF6,
-	0xF9AD, 0x40,
-	0xF9AE, 0x06,
-	0xF9AF, 0xE7,
-	0xF9B0, 0xBE,
-	0xF9B1, 0x06,
-	0xF9B2, 0xF0,
-	0xF9B3, 0x40,
-	0xF9B4, 0x06,
-	0xF9B5, 0xE8,
-	0xF9B6, 0x29,
-	0xF9B7, 0x25,
-	0xF9B8, 0x90,
-	0xF9B9, 0x2C,
-	0xF9BA, 0x80,
-	0xF9BB, 0x22,
-	0xF9BC, 0xF6,
-	0xF9BD, 0x41,
-	0xF9BE, 0x05,
-	0xF9BF, 0x1C,
-	0xF9C0, 0xB8,
-	0xF9C1, 0x8B,
-	0xF9C2, 0xD0,
-	0xF9C3, 0x18,
-	0xF9C4, 0x28,
-	0xF9C5, 0x40,
-	0xF9C6, 0xF0,
-	0xF9C7, 0x02,
-	0xF9C8, 0x02,
-	0xF9C9, 0x74,
-	0xF9CA, 0xF6,
-	0xF9CB, 0x40,
-	0xF9CC, 0x07,
-	0xF9CD, 0x10,
-	0xF9CE, 0x0F,
-	0xF9CF, 0x20,
-	0xF9D0, 0xFA,
-	0xF9D1, 0xE8,
-	0xF9D2, 0x05,
-	0xF9D3, 0xF4,
-	0xF9D4, 0x80,
-	0xF9D5, 0x04,
-	0xF9D6, 0x5F,
-	0xF9D7, 0xF0,
-	0xF9D8, 0x29,
-	0xF9D9, 0x25,
-	0xF9DA, 0x90,
-	0xF9DB, 0x0A,
-	0xF9DC, 0x50,
-	0xF9DD, 0x31,
-	0xF9DE, 0xFA,
-	0xF9DF, 0xE8,
-	0xF9E0, 0x05,
-	0xF9E1, 0xE6,
-	0xF9E2, 0x80,
-	0xF9E3, 0x04,
-	0xF9E4, 0x09,
-	0xF9E5, 0x50,
-	0xF9E6, 0xF4,
-	0xF9E7, 0x40,
-	0xF9E8, 0x06,
-	0xF9E9, 0xEC,
-	0xF9EA, 0x50,
-	0xF9EB, 0xA1,
-	0xF9EC, 0xFA,
-	0xF9ED, 0xE8,
-	0xF9EE, 0x05,
-	0xF9EF, 0xD8,
-	0xF9F0, 0xFA,
-	0xF9F1, 0xE8,
-	0xF9F2, 0x05,
-	0xF9F3, 0x08,
-	0xF9F4, 0xA8,
-	0xF9F5, 0x14,
-	0xF9F6, 0xA8,
-	0xF9F7, 0x1D,
-	0xF9F8, 0xA8,
-	0xF9F9, 0x27,
-	0xF9FA, 0xA0,
-	0xF9FB, 0x09,
-	0x97D8, 0x00,
-	0x97D9, 0x01,
-	0x97DA, 0x0B,
-	0x97DB, 0x38,
-	0x4331, 0x01,
-	0x3304, 0x00,
-	0x33F0, 0x01,
-	0x33F1, 0x03,
-	0x0111, 0x03,
-	0x0808, 0x02,
-	0xA71E, 0x00,
-	0xA722, 0x00,
-	0xAD01, 0x0A,
-	0xAD02, 0x0A,
-	0xAD0E, 0x02,
-	0xAE48, 0x01,
-	0xAE49, 0x61,
-	0xAE4A, 0x01,
-	0xAE4B, 0xDF,
-	0xAE4C, 0x02,
-	0xAE4D, 0xD0,
-	0xAE4E, 0x01,
-	0xAE4F, 0x61,
-	0xAE50, 0x01,
-	0xAE51, 0xDF,
-	0xAE52, 0x02,
-	0xAE53, 0xD0,
-	0xAEA3, 0x28,
-	0xAEA9, 0x28,
-	0xAEBB, 0xAA,
-	0xAEBD, 0xE9,
-	0xAEC1, 0xAA,
-	0xAEC3, 0xE9,
-	0xAEC9, 0x78,
-	0xAECF, 0x78,
-	0xAED3, 0x0C,
-	0xAED5, 0x42,
-	0xAED9, 0x0C,
-	0xAEDB, 0x42,
-	0xAEF7, 0x50,
-	0xAEF9, 0x50,
-	0xAF5B, 0x50,
-	0xAF5D, 0x50,
-};
-
-/*4096x3072 @30FPS QBIN(VBIN) w/ All-PD VB Max. Seamless w/ "*-S1"*/
-static u16 targamain_preview_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3850, 0x00,
-	0x3851, 0xD3,
-	0x0340, 0x0E,
-	0x0341, 0xCF,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x38D0, 0x00,
-	0x38D1, 0x10,
-	0x38D2, 0x01,
-	0x38D3, 0x00,
-};
-
-/*4096x3072 @30FPS QBIN(VBIN) w/ All-PD VB Max. Seamless w/ "*-S1"*/
-static u16 targamain_capture_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3850, 0x00,
-	0x3851, 0xD3,
-	0x0340, 0x0E,
-	0x0341, 0xCF,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x38D0, 0x00,
-	0x38D1, 0x10,
-	0x38D2, 0x01,
-	0x38D3, 0x00,
-};
-
-/*reg_B4-S3 4096x2304 @30FPS QBIN(VBIN) w/ All-PD VB Max. Seamless w/ "*-S3"*/
-static u16 targamain_normal_video_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3850, 0x00,
-	0x3851, 0xD3,
-	0x0340, 0x0E,
-	0x0341, 0xCF,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x88,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x3228, 0x02,
-	0x0104, 0x01,
-	0x322C, 0x00,
-	0x322D, 0x00,
-	0x322A, 0x00,
-	0x322B, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x0104, 0x00,
-};
-
-/*reg_B5-S3  096x2304 @60FPS QBIN w/ Partial-PD VB Max. Seamless w/ "*-S3" */
-static u16 targamain_hs_video_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x7E,
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xC8,
-	0x38D2, 0x00,
-	0x38D3, 0xC8,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_V1 2048x1152 @120FPS QBIN(VBIN) V2H2 w/ All-PD VB Max.*/
-static u16 targamain_slim_video_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x1A,
-	0x0343, 0x48,
-	0x3850, 0x00,
-	0x3851, 0x77,
-	0x0340, 0x06,
-	0x0341, 0x90,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x02,
-	0x030D, 0x18,
-	0x030E, 0x07,
-	0x030F, 0xD4,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x02,
-	0x38D1, 0x26,
-	0x38D2, 0x02,
-	0x38D3, 0x26,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x09,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x0F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_V2 2048x1152 @240FPS QBIN V2H2 w/o PD VB Max*/
-static u16 targamain_custom1_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x10,
-	0x0343, 0xA8,
-	0x3850, 0x00,
-	0x3851, 0x4C,
-	0x0340, 0x05,
-	0x0341, 0x22,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x04,
-	0x030F, 0xF7,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0B,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x13,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_B1-S4 4096x3072 @24FPS QBIN(VBIN) w/ All-PD VB Max.*/
-static u16 targamain_custom2_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3850, 0x00,
-	0x3851, 0xD3,
-	0x0340, 0x12,
-	0x0341, 0x83,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x02,
-	0x030D, 0x18,
-	0x030E, 0x07,
-	0x030F, 0xC8,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x09,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x0F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_B6-S3  4096x2304 @30FPS QBIN w/ Partial-PD*/
-static u16 targamain_custom3_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x7E,
-	0x0340, 0x18,
-	0x0341, 0xCD,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xC8,
-	0x38D2, 0x00,
-	0x38D3, 0xC8,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_L1-S1 4096x3072 @30FPS QBIN 2LB-MF w/ Partial-PD */
-static u16 targamain_custom4_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x7E,
-	0x0340, 0x18,
-	0x0341, 0xCD,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xC8,
-	0x38D2, 0x00,
-	0x38D3, 0xC8,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E05, 0x03,
-	0x0E06, 0x33,
-	0x0E20, 0x0C,
-	0x0E21, 0x2C,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x00,
-	0x0E29, 0x00,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x30,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E40, 0x06,
-	0x0E41, 0x16,
-	0x0E42, 0x00,
-	0x0E43, 0x00,
-	0x0E44, 0x01,
-	0x0E45, 0x00,
-	0x0E47, 0x00,
-	0x0E48, 0x00,
-	0x0E49, 0x00,
-	0x0E4A, 0x01,
-	0x0E4B, 0x2B,
-	0x0E4C, 0x00,
-	0x0E50, 0x01,
-	0x0E51, 0x12,
-	0x0E52, 0x01,
-	0x0E53, 0x30,
-	0x0E54, 0x01,
-	0x0E55, 0x30,
-	0x0E56, 0x01,
-	0x0E57, 0x30,
-	0x0E58, 0x00,
-	0x0E59, 0x00,
-	0x0E5C, 0x00,
-	0x0E5D, 0x00,
-	0x0E5E, 0x01,
-	0x0E5F, 0x30,
-	0x301C, 0x01,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x31A7, 0x02,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_F2-S1 4096x3072 @30FPS Full-Crop w/ PD VB Max*/
-static u16 targamain_custom5_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x0C,
-	0x0341, 0x99,
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x01,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_L2-S1 4096x3072 @15FPS Full RMSC 2LB-MF w/ All-PD */
-static u16 targamain_custom6_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x01,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E05, 0x03,
-	0x0E06, 0x33,
-	0x0E20, 0x0C,
-	0x0E21, 0x54,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x00,
-	0x0E29, 0x00,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x30,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E40, 0x06,
-	0x0E41, 0x2A,
-	0x0E42, 0x00,
-	0x0E43, 0x00,
-	0x0E44, 0x01,
-	0x0E45, 0x00,
-	0x0E47, 0x00,
-	0x0E48, 0x00,
-	0x0E49, 0x00,
-	0x0E4A, 0x01,
-	0x0E4B, 0x2B,
-	0x0E4C, 0x00,
-	0x0E50, 0x01,
-	0x0E51, 0x12,
-	0x0E52, 0x01,
-	0x0E53, 0x30,
-	0x0E54, 0x01,
-	0x0E55, 0x30,
-	0x0E56, 0x01,
-	0x0E57, 0x30,
-	0x0E58, 0x00,
-	0x0E59, 0x00,
-	0x0E5C, 0x00,
-	0x0E5D, 0x00,
-	0x0E5E, 0x01,
-	0x0E5F, 0x30,
-	0x301C, 0x01,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x31A7, 0x02,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_G1-S3  4096x2304 @30FPS QBIN DAG1:4 w/ Partial-PD */
-static u16 targamain_custom7_setting[] = {
-	0x0112, 0x0C,
-	0x0113, 0x0C,
-	0x0114, 0x02,
-	0x3239, 0x01,
-	0x0342, 0x37,
-	0x0343, 0xB0,
-	0x3850, 0x00,
-	0x3851, 0xFC,
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x03,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x64,
-	0x38D2, 0x00,
-	0x38D3, 0x64,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x5EFC, 0x00,
-	0x5EFD, 0x39,
-	0x5EFE, 0x01,
-	0x5EFF, 0x21,
-	0x5F0C, 0x00,
-	0x5F0D, 0xD8,
-	0x5F0E, 0x01,
-	0x5F0F, 0x77,
-	0x5F14, 0x00,
-	0x5F15, 0x6E,
-	0x5F1A, 0x06,
-	0x5F1B, 0x50,
-	0x5F28, 0x00,
-	0x5F29, 0x81,
-	0x5F2C, 0x01,
-	0x5F2D, 0x21,
-	0x5F3A, 0x00,
-	0x5F3B, 0x90,
-	0x5F3E, 0x01,
-	0x5F3F, 0x77,
-	0x5F8C, 0x00,
-	0x5F8D, 0x39,
-	0x5FAE, 0x00,
-	0x5FAF, 0x81,
-	0x5FD4, 0x00,
-	0x5FD5, 0xD8,
-	0x6012, 0x00,
-	0x6013, 0x90,
-	0x716A, 0x00,
-	0x716B, 0x39,
-	0x716C, 0x00,
-	0x716D, 0xD8,
-	0x718C, 0x00,
-	0x718D, 0x81,
-	0x71C8, 0x00,
-	0x71C9, 0x90,
-	0x740E, 0x00,
-	0x740F, 0x39,
-	0x7410, 0x00,
-	0x7411, 0x81,
-	0x7422, 0x00,
-	0x7423, 0x90,
-	0x7424, 0x00,
-	0x7425, 0xD8,
-	0x7F78, 0x08,
-	0x7F7B, 0x07,
-	0x7F87, 0x0D,
-	0x8258, 0x28,
-	0x8321, 0x18,
-	0x833B, 0x18,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x01,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_F1 8192x6144 @15FPS Full*/
-static u16 targamain_custom8_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x01,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x06,
-	0x030F, 0x45,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0F,
-	0x0850, 0x00,
-	0x0851, 0x0D,
-	0x0852, 0x00,
-	0x0853, 0x19,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_F1-RAW 8192x6144 @15FPS Full-RAW*/
-static u16 targamain_custom9_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x06,
-	0x030F, 0x45,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0F,
-	0x0850, 0x00,
-	0x0851, 0x0D,
-	0x0852, 0x00,
-	0x0853, 0x19,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_F2-RAW-S1 4096x3072 @30FPS Full-RAW-Crop*/
-static u16 targamain_custom10_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x0C,
-	0x0341, 0x99,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*F3-RAW-S2 4096x3072 @24FPS Full-RAW-Crop w/ PD VB Max. Seamless*/
-static u16 targamain_custom11_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x0F,
-	0x0341, 0xC0,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x02,
-	0x030D, 0x18,
-	0x030E, 0x07,
-	0x030F, 0xC8,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x09,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x0F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*8192x6144 @12FPS Full-RAW w/ PD VB Max. Seamless w*/
-static u16 targamain_custom12_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x45,
-	0x0343, 0xA0,
-	0x3850, 0x01,
-	0x3851, 0x3C,
-	0x0340, 0x18,
-	0x0341, 0xB9,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*
-2024.9.11 add for Portrait 2x slave sensor
-reg_V3 2048x1536 @24FPS QBIN V2H2 w/o PD VB Max.
-*/
-static u16 targamain_custom13_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x10,
-	0x0343, 0xA8,
-	0x3850, 0x00,
-	0x3851, 0x4C,
-	0x0340, 0x33,
-	0x0341, 0x64,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	0x3205, 0x00,
-	0x323C, 0x01,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x06,
-	0x040F, 0x00,
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x06,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x04,
-	0x030F, 0xF7,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0x00,
-	0x38D2, 0x00,
-	0x38D3, 0x00,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x00,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0B,
-	0x0850, 0x00,
-	0x0851, 0x09,
-	0x0852, 0x00,
-	0x0853, 0x13,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-/*reg_B3-S1 4096x3072 @60FPS QBIN w/ Partial-PD VB Max.*/
-static u16 targamain_custom14_setting[] = {
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3850, 0x00,
-	0x3851, 0x7E,
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3140, 0x0A,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	0x0301, 0x06,
-	0x0303, 0x02,
-	0x0305, 0x03,
-	0x0306, 0x00,
-	0x0307, 0xFF,
-	0x030B, 0x01,
-	0x030D, 0x18,
-	0x030E, 0x05,
-	0x030F, 0x8C,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38A0, 0x00,
-	0x38A1, 0x00,
-	0x38A2, 0x00,
-	0x38A3, 0x00,
-	0x38A8, 0x00,
-	0x38A9, 0x00,
-	0x38AA, 0x00,
-	0x38AB, 0x00,
-	0x38D0, 0x00,
-	0x38D1, 0xC8,
-	0x38D2, 0x00,
-	0x38D3, 0xC8,
-	0x38E0, 0x00,
-	0x38E1, 0x00,
-	0x38E2, 0x00,
-	0x38E3, 0x00,
-	0x38E4, 0x00,
-	0x38E5, 0x00,
-	0x38E6, 0x00,
-	0x38E7, 0x00,
-	0x38E8, 0x00,
-	0x38E9, 0x00,
-	0x39AC, 0x01,
-	0x3B00, 0x00,
-	0x3B01, 0x00,
-	0x3B04, 0x00,
-	0x3B05, 0x00,
-	0x3B06, 0x00,
-	0x3B07, 0x00,
-	0x3B0A, 0x00,
-	0x3B0B, 0x00,
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x3184, 0x00,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	0x3107, 0x00,
-	0x3264, 0x00,
-	0x3265, 0x00,
-	0x3266, 0x00,
-	0x3267, 0x00,
-	0x3268, 0x00,
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3978, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x0E00, 0x00,
-	0x301C, 0x01,
-	0x30AC, 0x00,
-	0x30F6, 0x01,
-	0x30AD, 0x30,
-	0x30A4, 0x00,
-	0x30A6, 0x00,
-	0x30F2, 0x01,
-	0x30F3, 0x01,
-	0x30A5, 0x30,
-	0x30A7, 0x30,
-	0x30A2, 0x00,
-	0x30F1, 0x01,
-	0x30A3, 0x30,
-	0x084E, 0x00,
-	0x084F, 0x0D,
-	0x0850, 0x00,
-	0x0851, 0x0B,
-	0x0852, 0x00,
-	0x0853, 0x17,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-};
-
-
-/*seamless setting*/
-/*seamless reg_B2-S1 & reg_L1-S1 & reg_F2-S1 & reg_L2-S1 & F2-RAW-S1 & L2-RAW-S1 & reg_B3-S1*/
-/*reg_B2-S1_QBIN(VBIN)_4096x3072_30fps*/
-static u16 targamain_seamless_preview[] = {
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3850, 0x00,
-	0x3851, 0xD3,
-	0x0340, 0x0E,
-	0x0341, 0xCF,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x323C, 0x01,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38D1, 0x00,
-	0x38D3, 0x00,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3103, 0x00,
-};
-
-/*reg_L1-S1 4096x3072 @30FPS QBIN 2LB-MF w/ Partial-PD VB Max. Seamless w/ "*-S1"*/
-static u16 targamain_seamless_custom4[] = {
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3851, 0x7E,
-	0x0340, 0x18,
-	0x0341, 0xCD,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3148, 0x00,
-	0x323C, 0x02,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0xC8,
-	0x38D3, 0xC8,
-	0x3103, 0x01,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E05, 0x03,
-	0x0E06, 0x33,
-	0x0E20, 0x0C,
-	0x0E21, 0x2C,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x00,
-	0x0E29, 0x00,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x30,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E40, 0x06,
-	0x0E41, 0x16,
-	0x0E42, 0x00,
-	0x0E43, 0x00,
-	0x0E44, 0x01,
-	0x0E45, 0x00,
-	0x0E47, 0x00,
-	0x0E48, 0x00,
-	0x0E49, 0x00,
-	0x0E4A, 0x01,
-	0x0E4B, 0x2B,
-	0x0E4C, 0x00,
-	0x0E50, 0x01,
-	0x0E51, 0x12,
-	0x0E52, 0x01,
-	0x0E53, 0x30,
-	0x0E54, 0x01,
-	0x0E55, 0x30,
-	0x0E56, 0x01,
-	0x0E57, 0x30,
-	0x0E58, 0x00,
-	0x0E59, 0x00,
-	0x0E5C, 0x00,
-	0x0E5D, 0x00,
-	0x0E5E, 0x01,
-	0x0E5F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x31A7, 0x02,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x0408, 0x00,
-};
-
-/*reg_F2-S1 4096x3072 @30FPS Full-Crop w/ PD VB Max. Seamless w/  "*-S1"*/
-static u16 targamain_seamless_custom5[] = {
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3851, 0xF8,
-	0x0340, 0x0C,
-	0x0341, 0x99,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x323C, 0x01,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0x00,
-	0x38D3, 0x00,
-	0x0344, 0x08,
-	0x0346, 0x06,
-	0x0348, 0x17,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x01,
-	0x0408, 0x00,
-	0x3103, 0x00,
-};
-
-/*reg_L2-S1  4096x3072 @15FPS Full RMSC 2LB-MF w/ All-PD VB Max. Seamless w/ "*-S1"*/
-static u16 targamain_seamless_custom6[] = {
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3851, 0xF8,
-	0x0340, 0x19,
-	0x0341, 0x33,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x323C, 0x01,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0x00,
-	0x38D3, 0x00,
-	0x3103, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E05, 0x03,
-	0x0E06, 0x33,
-	0x0E20, 0x0C,
-	0x0E21, 0x54,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x00,
-	0x0E29, 0x00,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x30,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E3E, 0x00,
-	0x0E3F, 0x30,
-	0x0E40, 0x06,
-	0x0E41, 0x2A,
-	0x0E42, 0x00,
-	0x0E43, 0x00,
-	0x0E44, 0x01,
-	0x0E45, 0x00,
-	0x0E47, 0x00,
-	0x0E48, 0x00,
-	0x0E49, 0x00,
-	0x0E4A, 0x01,
-	0x0E4B, 0x2B,
-	0x0E4C, 0x00,
-	0x0E50, 0x01,
-	0x0E51, 0x12,
-	0x0E52, 0x01,
-	0x0E53, 0x30,
-	0x0E54, 0x01,
-	0x0E55, 0x30,
-	0x0E56, 0x01,
-	0x0E57, 0x30,
-	0x0E58, 0x00,
-	0x0E59, 0x00,
-	0x0E5C, 0x00,
-	0x0E5D, 0x00,
-	0x0E5E, 0x01,
-	0x0E5F, 0x30,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	0x31A7, 0x02,
-	0x0344, 0x08,
-	0x0346, 0x06,
-	0x0348, 0x17,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x01,
-	0x0408, 0x00,
-};
-
-/*reg_F2-RAW-S1 4096x3072 @30FPS Full-RAW-Crop*/
-static u16 targamain_seamless_custom10[] = {
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3850, 0x00,
-	0x3851, 0xF8,
-	0x0340, 0x0C,
-	0x0341, 0x99,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x323C, 0x01,
-	0x3104, 0x01,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0x00,
-	0x38D3, 0x00,
-	0x0344, 0x00,
-	0x0346, 0x06,
-	0x0348, 0x1F,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x3205, 0x00,
-	0x0408, 0x08,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3103, 0x00,
-};
-
-/*8192x6144 @12FPS Full-RAW w/ PD VB Max. Seamless w*/
-static u16 targamain_seamless_custom12[] = {
-	0x0342, 0x45,
-	0x0343, 0xA0,
-	0x3850, 0x01,
-	0x3851, 0x3C,
-	0x0340, 0x18,
-	0x0341, 0xB9,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x20,
-	0x040E, 0x18,
-	0x034C, 0x20,
-	0x034E, 0x18,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-};
-
-/*reg_B3-S1 4096x3072 @60FPS QBIN w/ Partial-PD VB Max.*/
-static u16 targamain_seamless_custom14[] = {
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3851, 0x7E,
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3148, 0x00,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x3205, 0x00,
-	0x323C, 0x02,
-	0x0408, 0x00,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0xC8,
-	0x38D3, 0xC8,
-	0x3103, 0x01,
-	0x0E00, 0x00,
-};
-
-/*seamless reg_B4-S3 & reg_B5-S3 & reg_B6-S3*/
-/*reg_B4-S3_4096x2304_30FPS*/
-static u16 targamain_seamless_normal_video[] = {
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3851, 0xD3,
-	0x0340, 0x0E,
-	0x0341, 0xCF,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x323C, 0x01,
-	0x3104, 0x01,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-	0x38D1, 0x00,
-	0x38D3, 0x00,
-	0x3103, 0x00,
-};
-
-/*reg_B5-S3 4096x2304 @60FPS*/
-static u16 targamain_seamless_hs_video[] = {
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3851, 0x7E,
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3148, 0x00,
-	0x323C, 0x02,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0xC8,
-	0x38D3, 0xC8,
-	0x3103, 0x01,
-};
-
-/*reg_B6-S3 4096x2304 @30FPS*/
-static u16 targamain_seamless_custom3[] = {
-	0x0342, 0x1B,
-	0x0343, 0xE0,
-	0x3851, 0x7E,
-	0x0340, 0x18,
-	0x0341, 0xCD,
-	0x3005, 0x06,
-	0x3006, 0x01,
-	0x3148, 0x00,
-	0x323C, 0x02,
-	0x3104, 0x00,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-	0x38D1, 0xC8,
-	0x38D3, 0xC8,
-	0x3103, 0x01,
-};
-
-/*seamless reg_B1-S2 & F3-RAW-S2*/
-/*reg_B1-S2 4096x3072 @24FPS QBIN(VBIN) w/ All-PD VB Max.*/
-static u16 targamain_seamless_custom2[] = {
-	0x0342, 0x2E,
-	0x0343, 0x80,
-	0x3851, 0xD3,
-	0x0340, 0x12,
-	0x0341, 0x83,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3006, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x324C, 0x01,
-	0x3800, 0x01,
-	0x3801, 0x01,
-	0x3802, 0x01,
-};
-
-/*F3-RAW-S2 4096x3072 @24FPS Full-RAW-Crop w/ PD VB Max. Seamless*/
-static u16 targamain_seamless_custom11[] = {
-	0x0342, 0x36,
-	0x0343, 0xD0,
-	0x3851, 0xF8,
-	0x0340, 0x0F,
-	0x0341, 0xC0,
-	0x0346, 0x06,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3006, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x324C, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x02,
-};
-
-#endif /* TARGAMAIN */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamain_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamain_ana_gain_table.h
deleted file mode 100755
index fa61b45f..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamain_ana_gain_table.h
+++ /dev/null
@@ -1,1907 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 targamain_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __TARGAMAIN_ANA_GAIN_TABLE_H__
-#define __TARGAMAIN_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 targamain_ana_gain_table[] = {
-	1024,
-	1025,
-	1026,
-	1027,
-	1028,
-	1029,
-	1030,
-	1031,
-	1032,
-	1033,
-	1034,
-	1035,
-	1036,
-	1037,
-	1038,
-	1039,
-	1040,
-	1041,
-	1042,
-	1043,
-	1044,
-	1045,
-	1046,
-	1047,
-	1048,
-	1049,
-	1050,
-	1051,
-	1052,
-	1053,
-	1054,
-	1055,
-	1057,
-	1058,
-	1059,
-	1060,
-	1061,
-	1062,
-	1063,
-	1064,
-	1065,
-	1066,
-	1067,
-	1068,
-	1069,
-	1071,
-	1072,
-	1073,
-	1074,
-	1075,
-	1076,
-	1077,
-	1078,
-	1079,
-	1081,
-	1082,
-	1083,
-	1084,
-	1085,
-	1086,
-	1087,
-	1088,
-	1089,
-	1091,
-	1092,
-	1093,
-	1094,
-	1095,
-	1096,
-	1097,
-	1099,
-	1100,
-	1101,
-	1102,
-	1103,
-	1104,
-	1106,
-	1107,
-	1108,
-	1109,
-	1110,
-	1111,
-	1113,
-	1114,
-	1115,
-	1116,
-	1117,
-	1119,
-	1120,
-	1121,
-	1122,
-	1123,
-	1125,
-	1126,
-	1127,
-	1128,
-	1129,
-	1131,
-	1132,
-	1133,
-	1134,
-	1136,
-	1137,
-	1138,
-	1139,
-	1140,
-	1142,
-	1143,
-	1144,
-	1145,
-	1147,
-	1148,
-	1149,
-	1151,
-	1152,
-	1153,
-	1154,
-	1156,
-	1157,
-	1158,
-	1159,
-	1161,
-	1162,
-	1163,
-	1165,
-	1166,
-	1167,
-	1168,
-	1170,
-	1171,
-	1172,
-	1174,
-	1175,
-	1176,
-	1178,
-	1179,
-	1180,
-	1182,
-	1183,
-	1184,
-	1186,
-	1187,
-	1188,
-	1190,
-	1191,
-	1192,
-	1194,
-	1195,
-	1197,
-	1198,
-	1199,
-	1201,
-	1202,
-	1203,
-	1205,
-	1206,
-	1208,
-	1209,
-	1210,
-	1212,
-	1213,
-	1215,
-	1216,
-	1217,
-	1219,
-	1220,
-	1222,
-	1223,
-	1224,
-	1226,
-	1227,
-	1229,
-	1230,
-	1232,
-	1233,
-	1235,
-	1236,
-	1237,
-	1239,
-	1240,
-	1242,
-	1243,
-	1245,
-	1246,
-	1248,
-	1249,
-	1251,
-	1252,
-	1254,
-	1255,
-	1257,
-	1258,
-	1260,
-	1261,
-	1263,
-	1264,
-	1266,
-	1267,
-	1269,
-	1270,
-	1272,
-	1274,
-	1275,
-	1277,
-	1278,
-	1280,
-	1281,
-	1283,
-	1285,
-	1286,
-	1288,
-	1289,
-	1291,
-	1292,
-	1294,
-	1296,
-	1297,
-	1299,
-	1300,
-	1302,
-	1304,
-	1305,
-	1307,
-	1309,
-	1310,
-	1312,
-	1314,
-	1315,
-	1317,
-	1318,
-	1320,
-	1322,
-	1323,
-	1325,
-	1327,
-	1328,
-	1330,
-	1332,
-	1334,
-	1335,
-	1337,
-	1339,
-	1340,
-	1342,
-	1344,
-	1346,
-	1347,
-	1349,
-	1351,
-	1353,
-	1354,
-	1356,
-	1358,
-	1360,
-	1361,
-	1363,
-	1365,
-	1367,
-	1368,
-	1370,
-	1372,
-	1374,
-	1376,
-	1377,
-	1379,
-	1381,
-	1383,
-	1385,
-	1387,
-	1388,
-	1390,
-	1392,
-	1394,
-	1396,
-	1398,
-	1399,
-	1401,
-	1403,
-	1405,
-	1407,
-	1409,
-	1411,
-	1413,
-	1415,
-	1416,
-	1418,
-	1420,
-	1422,
-	1424,
-	1426,
-	1428,
-	1430,
-	1432,
-	1434,
-	1436,
-	1438,
-	1440,
-	1442,
-	1444,
-	1446,
-	1448,
-	1450,
-	1452,
-	1454,
-	1456,
-	1458,
-	1460,
-	1462,
-	1464,
-	1466,
-	1468,
-	1470,
-	1472,
-	1474,
-	1476,
-	1478,
-	1481,
-	1483,
-	1485,
-	1487,
-	1489,
-	1491,
-	1493,
-	1495,
-	1497,
-	1500,
-	1502,
-	1504,
-	1506,
-	1508,
-	1510,
-	1513,
-	1515,
-	1517,
-	1519,
-	1521,
-	1524,
-	1526,
-	1528,
-	1530,
-	1533,
-	1535,
-	1537,
-	1539,
-	1542,
-	1544,
-	1546,
-	1548,
-	1551,
-	1553,
-	1555,
-	1558,
-	1560,
-	1562,
-	1565,
-	1567,
-	1569,
-	1572,
-	1574,
-	1576,
-	1579,
-	1581,
-	1583,
-	1586,
-	1588,
-	1591,
-	1593,
-	1596,
-	1598,
-	1600,
-	1603,
-	1605,
-	1608,
-	1610,
-	1613,
-	1615,
-	1618,
-	1620,
-	1623,
-	1625,
-	1628,
-	1630,
-	1633,
-	1635,
-	1638,
-	1640,
-	1643,
-	1646,
-	1648,
-	1651,
-	1653,
-	1656,
-	1659,
-	1661,
-	1664,
-	1667,
-	1669,
-	1672,
-	1675,
-	1677,
-	1680,
-	1683,
-	1685,
-	1688,
-	1691,
-	1693,
-	1696,
-	1699,
-	1702,
-	1705,
-	1707,
-	1710,
-	1713,
-	1716,
-	1718,
-	1721,
-	1724,
-	1727,
-	1730,
-	1733,
-	1736,
-	1738,
-	1741,
-	1744,
-	1747,
-	1750,
-	1753,
-	1756,
-	1759,
-	1762,
-	1765,
-	1768,
-	1771,
-	1774,
-	1777,
-	1780,
-	1783,
-	1786,
-	1789,
-	1792,
-	1795,
-	1798,
-	1801,
-	1804,
-	1807,
-	1811,
-	1814,
-	1817,
-	1820,
-	1823,
-	1826,
-	1829,
-	1833,
-	1836,
-	1839,
-	1842,
-	1846,
-	1849,
-	1852,
-	1855,
-	1859,
-	1862,
-	1865,
-	1869,
-	1872,
-	1875,
-	1879,
-	1882,
-	1885,
-	1889,
-	1892,
-	1896,
-	1899,
-	1903,
-	1906,
-	1909,
-	1913,
-	1916,
-	1920,
-	1923,
-	1927,
-	1931,
-	1934,
-	1938,
-	1941,
-	1945,
-	1949,
-	1952,
-	1956,
-	1959,
-	1963,
-	1967,
-	1971,
-	1974,
-	1978,
-	1982,
-	1985,
-	1989,
-	1993,
-	1997,
-	2001,
-	2004,
-	2008,
-	2012,
-	2016,
-	2020,
-	2024,
-	2028,
-	2032,
-	2036,
-	2040,
-	2044,
-	2048,
-	2052,
-	2056,
-	2060,
-	2064,
-	2068,
-	2072,
-	2076,
-	2080,
-	2084,
-	2088,
-	2092,
-	2097,
-	2101,
-	2105,
-	2109,
-	2114,
-	2118,
-	2122,
-	2126,
-	2131,
-	2135,
-	2139,
-	2144,
-	2148,
-	2153,
-	2157,
-	2162,
-	2166,
-	2170,
-	2175,
-	2179,
-	2184,
-	2189,
-	2193,
-	2198,
-	2202,
-	2207,
-	2212,
-	2216,
-	2221,
-	2226,
-	2231,
-	2235,
-	2240,
-	2245,
-	2250,
-	2255,
-	2259,
-	2264,
-	2269,
-	2274,
-	2279,
-	2284,
-	2289,
-	2294,
-	2299,
-	2304,
-	2309,
-	2314,
-	2319,
-	2325,
-	2330,
-	2335,
-	2340,
-	2345,
-	2351,
-	2356,
-	2361,
-	2366,
-	2372,
-	2377,
-	2383,
-	2388,
-	2394,
-	2399,
-	2404,
-	2410,
-	2416,
-	2421,
-	2427,
-	2432,
-	2438,
-	2444,
-	2449,
-	2455,
-	2461,
-	2467,
-	2473,
-	2478,
-	2484,
-	2490,
-	2496,
-	2502,
-	2508,
-	2514,
-	2520,
-	2526,
-	2532,
-	2538,
-	2545,
-	2551,
-	2557,
-	2563,
-	2570,
-	2576,
-	2582,
-	2589,
-	2595,
-	2601,
-	2608,
-	2614,
-	2621,
-	2628,
-	2634,
-	2641,
-	2647,
-	2654,
-	2661,
-	2668,
-	2674,
-	2681,
-	2688,
-	2695,
-	2702,
-	2709,
-	2716,
-	2723,
-	2730,
-	2737,
-	2744,
-	2752,
-	2759,
-	2766,
-	2774,
-	2781,
-	2788,
-	2796,
-	2803,
-	2811,
-	2818,
-	2826,
-	2833,
-	2841,
-	2849,
-	2857,
-	2864,
-	2872,
-	2880,
-	2888,
-	2896,
-	2904,
-	2912,
-	2920,
-	2928,
-	2937,
-	2945,
-	2953,
-	2962,
-	2970,
-	2978,
-	2987,
-	2995,
-	3004,
-	3013,
-	3021,
-	3030,
-	3039,
-	3048,
-	3057,
-	3066,
-	3075,
-	3084,
-	3093,
-	3102,
-	3111,
-	3120,
-	3130,
-	3139,
-	3148,
-	3158,
-	3167,
-	3177,
-	3187,
-	3196,
-	3206,
-	3216,
-	3226,
-	3236,
-	3246,
-	3256,
-	3266,
-	3276,
-	3287,
-	3297,
-	3307,
-	3318,
-	3328,
-	3339,
-	3350,
-	3360,
-	3371,
-	3382,
-	3393,
-	3404,
-	3415,
-	3426,
-	3437,
-	3449,
-	3460,
-	3472,
-	3483,
-	3495,
-	3506,
-	3518,
-	3530,
-	3542,
-	3554,
-	3566,
-	3578,
-	3591,
-	3603,
-	3615,
-	3628,
-	3640,
-	3653,
-	3666,
-	3679,
-	3692,
-	3705,
-	3718,
-	3731,
-	3744,
-	3758,
-	3771,
-	3785,
-	3799,
-	3813,
-	3826,
-	3840,
-	3855,
-	3869,
-	3883,
-	3898,
-	3912,
-	3927,
-	3942,
-	3956,
-	3971,
-	3986,
-	4002,
-	4017,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4161,
-	4177,
-	4194,
-	4211,
-	4228,
-	4245,
-	4262,
-	4279,
-	4297,
-	4315,
-	4332,
-	4350,
-	4369,
-	4387,
-	4405,
-	4424,
-	4443,
-	4462,
-	4481,
-	4500,
-	4519,
-	4539,
-	4559,
-	4578,
-	4599,
-	4619,
-	4639,
-	4660,
-	4681,
-	4702,
-	4723,
-	4744,
-	4766,
-	4788,
-	4809,
-	4832,
-	4854,
-	4877,
-	4899,
-	4922,
-	4946,
-	4969,
-	4993,
-	5017,
-	5041,
-	5065,
-	5090,
-	5115,
-	5140,
-	5165,
-	5190,
-	5216,
-	5242,
-	5269,
-	5295,
-	5322,
-	5349,
-	5377,
-	5405,
-	5433,
-	5461,
-	5489,
-	5518,
-	5548,
-	5577,
-	5607,
-	5637,
-	5667,
-	5698,
-	5729,
-	5761,
-	5793,
-	5825,
-	5857,
-	5890,
-	5924,
-	5957,
-	5991,
-	6026,
-	6061,
-	6096,
-	6132,
-	6168,
-	6204,
-	6241,
-	6278,
-	6316,
-	6355,
-	6393,
-	6432,
-	6472,
-	6512,
-	6553,
-	6594,
-	6636,
-	6678,
-	6721,
-	6765,
-	6808,
-	6853,
-	6898,
-	6944,
-	6990,
-	7037,
-	7084,
-	7133,
-	7182,
-	7231,
-	7281,
-	7332,
-	7384,
-	7436,
-	7489,
-	7543,
-	7598,
-	7653,
-	7710,
-	7767,
-	7825,
-	7884,
-	7943,
-	8004,
-	8065,
-	8128,
-	8192,
-	8256,
-	8322,
-	8388,
-	8456,
-	8525,
-	8594,
-	8665,
-	8738,
-	8811,
-	8886,
-	8962,
-	9039,
-	9118,
-	9198,
-	9279,
-	9362,
-	9446,
-	9532,
-	9619,
-	9709,
-	9799,
-	9892,
-	9986,
-	10082,
-	10180,
-	10280,
-	10381,
-	10485,
-	10591,
-	10699,
-	10810,
-	10922,
-	11037,
-	11155,
-	11275,
-	11397,
-	11522,
-	11650,
-	11781,
-	11915,
-	12052,
-	12192,
-	12336,
-	12483,
-	12633,
-	12787,
-	12945,
-	13107,
-	13273,
-	13443,
-	13617,
-	13797,
-	13981,
-	14169,
-	14364,
-	14563,
-	14768,
-	14979,
-	15196,
-	15420,
-	15650,
-	15887,
-	16131,
-	16384,
-	16644,
-	16912,
-	17189,
-	17476,
-	17772,
-	18078,
-	18396,
-	18724,
-	19065,
-	19418,
-	19784,
-	20164,
-	20560,
-	20971,
-	21399,
-	21845,
-	22310,
-	22795,
-	23301,
-	23831,
-	24385,
-	24966,
-	25575,
-	26214,
-	26886,
-	27594,
-	28339,
-	29127,
-	29959,
-	30840,
-	31775,
-	32768,
-	33825,
-	34952,
-	36157,
-	37449,
-	38836,
-	40329,
-	41943,
-	43690,
-	45590,
-	47662,
-	49932,
-	52428,
-	55188,
-	58254,
-	61680,
-	65536,
-	65536,
-};
-
-#define TARGAMAIN_GAIN_TABLE_SIZE 432
-static kal_uint32 targamain_gain_table[TARGAMAIN_GAIN_TABLE_SIZE] = {
-	1024,
-	1040,
-	1056,
-	1072,
-	1088,
-	1104,
-	1120,
-	1136,
-	1152,
-	1168,
-	1184,
-	1200,
-	1216,
-	1232,
-	1248,
-	1264,
-	1280,
-	1296,
-	1312,
-	1328,
-	1344,
-	1360,
-	1376,
-	1392,
-	1408,
-	1424,
-	1440,
-	1456,
-	1472,
-	1488,
-	1504,
-	1520,
-	1536,
-	1552,
-	1568,
-	1584,
-	1600,
-	1616,
-	1632,
-	1648,
-	1664,
-	1680,
-	1696,
-	1712,
-	1728,
-	1744,
-	1760,
-	1776,
-	1792,
-	1808,
-	1824,
-	1840,
-	1856,
-	1872,
-	1888,
-	1904,
-	1920,
-	1936,
-	1952,
-	1968,
-	1984,
-	2000,
-	2016,
-	2032,
-	2048,
-	2064,
-	2080,
-	2096,
-	2112,
-	2128,
-	2144,
-	2160,
-	2176,
-	2192,
-	2208,
-	2224,
-	2240,
-	2256,
-	2272,
-	2288,
-	2304,
-	2320,
-	2336,
-	2352,
-	2368,
-	2384,
-	2400,
-	2416,
-	2432,
-	2448,
-	2464,
-	2480,
-	2496,
-	2512,
-	2528,
-	2544,
-	2560,
-	2576,
-	2592,
-	2608,
-	2624,
-	2640,
-	2656,
-	2672,
-	2688,
-	2704,
-	2720,
-	2736,
-	2752,
-	2768,
-	2784,
-	2800,
-	2816,
-	2832,
-	2848,
-	2864,
-	2880,
-	2896,
-	2912,
-	2928,
-	2944,
-	2960,
-	2976,
-	2992,
-	3008,
-	3024,
-	3040,
-	3056,
-	3072,
-	3088,
-	3104,
-	3120,
-	3136,
-	3152,
-	3168,
-	3184,
-	3200,
-	3216,
-	3232,
-	3248,
-	3264,
-	3280,
-	3296,
-	3312,
-	3328,
-	3344,
-	3360,
-	3376,
-	3392,
-	3408,
-	3424,
-	3440,
-	3456,
-	3472,
-	3488,
-	3504,
-	3520,
-	3536,
-	3552,
-	3568,
-	3584,
-	3600,
-	3616,
-	3632,
-	3648,
-	3664,
-	3680,
-	3696,
-	3712,
-	3728,
-	3744,
-	3760,
-	3776,
-	3792,
-	3808,
-	3824,
-	3840,
-	3856,
-	3872,
-	3888,
-	3904,
-	3920,
-	3936,
-	3952,
-	3968,
-	3984,
-	4000,
-	4016,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4160,
-	4176,
-	4192,
-	4208,
-	4224,
-	4240,
-	4256,
-	4272,
-	4288,
-	4304,
-	4320,
-	4336,
-	4368,
-	4384,
-	4400,
-	4416,
-	4432,
-	4448,
-	4480,
-	4496,
-	4512,
-	4528,
-	4544,
-	4576,
-	4592,
-	4608,
-	4624,
-	4656,
-	4672,
-	4688,
-	4720,
-	4736,
-	4752,
-	4784,
-	4800,
-	4832,
-	4848,
-	4864,
-	4896,
-	4912,
-	4944,
-	4960,
-	4992,
-	5008,
-	5040,
-	5088,
-	5104,
-	5136,
-	5152,
-	5184,
-	5216,
-	5232,
-	5264,
-	5280,
-	5312,
-	5344,
-	5376,
-	5392,
-	5424,
-	5456,
-	5488,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6096,
-	6128,
-	6160,
-	6192,
-	6240,
-	6272,
-	6304,
-	6352,
-	6384,
-	6432,
-	6464,
-	6512,
-	6544,
-	6592,
-	6624,
-	6672,
-	6720,
-	6752,
-	6800,
-	6848,
-	6896,
-	6944,
-	6976,
-	7024,
-	7072,
-	7120,
-	7168,
-	7216,
-	7280,
-	7328,
-	7376,
-	7424,
-	7488,
-	7536,
-	7584,
-	7648,
-	7696,
-	7760,
-	7824,
-	7872,
-	7936,
-	8000,
-	8064,
-	8128,
-	8192,
-	8256,
-	8320,
-	8384,
-	8448,
-	8512,
-	8592,
-	8656,
-	8736,
-	8800,
-	8880,
-	8960,
-	9024,
-	9104,
-	9184,
-	9264,
-	9360,
-	9440,
-	9520,
-	9616,
-	9696,
-	9792,
-	9888,
-	9984,
-	10080,
-	10176,
-	10272,
-	10368,
-	10480,
-	10576,
-	10688,
-	10800,
-	10912,
-	11024,
-	11152,
-	11264,
-	11392,
-	11520,
-	11648,
-	11776,
-	11904,
-	12048,
-	12192,
-	12336,
-	12480,
-	12624,
-	12784,
-	12944,
-	13104,
-	13264,
-	13440,
-	13616,
-	13792,
-	13968,
-	14160,
-	14352,
-	14560,
-	14768,
-	14976,
-	15184,
-	15408,
-	15648,
-	15872,
-	16128,
-	16384,
-	16640,
-	16912,
-	17184,
-	17472,
-	17760,
-	18064,
-	18384,
-	18720,
-	19056,
-	19408,
-	19776,
-	20160,
-	20560,
-	20960,
-	21392,
-	21840,
-	22304,
-	22784,
-	23296,
-	23824,
-	24384,
-	24960,
-	25568,
-	26208,
-	26880,
-	27584,
-	28336,
-	29120,
-	29952,
-	30832,
-	31760,
-	32768,
-	33824,
-	34944,
-	36144,
-	37440,
-	38832,
-	40320,
-	41936,
-	43680,
-	45584,
-	47648,
-	49920,
-	52416,
-	55184,
-	58240,
-	61680,
-	65536,
-};
-
-static kal_uint16 targamain_gain_reg[TARGAMAIN_GAIN_TABLE_SIZE] = {
-	0,
-	240,
-	496,
-	720,
-	944,
-	1168,
-	1392,
-	1616,
-	1808,
-	2000,
-	2192,
-	2384,
-	2576,
-	2768,
-	2928,
-	3088,
-	3280,
-	3408,
-	3568,
-	3728,
-	3888,
-	4048,
-	4176,
-	4304,
-	4464,
-	4592,
-	4720,
-	4848,
-	4976,
-	5104,
-	5200,
-	5328,
-	5456,
-	5552,
-	5680,
-	5776,
-	5872,
-	6000,
-	6096,
-	6192,
-	6288,
-	6384,
-	6480,
-	6576,
-	6672,
-	6736,
-	6832,
-	6928,
-	7024,
-	7088,
-	7184,
-	7248,
-	7344,
-	7408,
-	7472,
-	7568,
-	7632,
-	7696,
-	7760,
-	7856,
-	7920,
-	7984,
-	8048,
-	8112,
-	8192,
-	8240,
-	8304,
-	8368,
-	8432,
-	8496,
-	8544,
-	8608,
-	8672,
-	8720,
-	8784,
-	8832,
-	8880,
-	8944,
-	8992,
-	9040,
-	9088,
-	9152,
-	9200,
-	9248,
-	9296,
-	9344,
-	9392,
-	9440,
-	9472,
-	9520,
-	9568,
-	9616,
-	9648,
-	9696,
-	9744,
-	9776,
-	9824,
-	9856,
-	9904,
-	9936,
-	9984,
-	10016,
-	10064,
-	10096,
-	10128,
-	10176,
-	10208,
-	10240,
-	10272,
-	10320,
-	10352,
-	10384,
-	10416,
-	10448,
-	10480,
-	10512,
-	10544,
-	10576,
-	10608,
-	10640,
-	10672,
-	10704,
-	10736,
-	10768,
-	10800,
-	10832,
-	10864,
-	10880,
-	10912,
-	10944,
-	10976,
-	10992,
-	11024,
-	11056,
-	11072,
-	11104,
-	11136,
-	11152,
-	11184,
-	11216,
-	11232,
-	11264,
-	11280,
-	11312,
-	11328,
-	11360,
-	11376,
-	11408,
-	11424,
-	11456,
-	11472,
-	11504,
-	11520,
-	11536,
-	11568,
-	11584,
-	11616,
-	11632,
-	11648,
-	11680,
-	11696,
-	11712,
-	11744,
-	11760,
-	11776,
-	11792,
-	11824,
-	11840,
-	11856,
-	11872,
-	11888,
-	11920,
-	11936,
-	11952,
-	11968,
-	11984,
-	12000,
-	12032,
-	12048,
-	12064,
-	12080,
-	12096,
-	12128,
-	12144,
-	12160,
-	12176,
-	12192,
-	12208,
-	12224,
-	12240,
-	12256,
-	12272,
-	12288,
-	12304,
-	12320,
-	12336,
-	12352,
-	12368,
-	12384,
-	12400,
-	12416,
-	12432,
-	12448,
-	12464,
-	12480,
-	12496,
-	12512,
-	12528,
-	12544,
-	12560,
-	12576,
-	12592,
-	12608,
-	12624,
-	12640,
-	12656,
-	12672,
-	12688,
-	12704,
-	12720,
-	12736,
-	12752,
-	12768,
-	12784,
-	12800,
-	12816,
-	12832,
-	12848,
-	12864,
-	12880,
-	12896,
-	12912,
-	12928,
-	12944,
-	12960,
-	12976,
-	12992,
-	13008,
-	13024,
-	13040,
-	13056,
-	13088,
-	13104,
-	13120,
-	13136,
-	13152,
-	13168,
-	13184,
-	13200,
-	13216,
-	13232,
-	13248,
-	13264,
-	13280,
-	13296,
-	13312,
-	13328,
-	13344,
-	13360,
-	13376,
-	13392,
-	13408,
-	13424,
-	13440,
-	13456,
-	13472,
-	13488,
-	13504,
-	13520,
-	13536,
-	13552,
-	13568,
-	13584,
-	13600,
-	13616,
-	13632,
-	13648,
-	13664,
-	13680,
-	13696,
-	13712,
-	13728,
-	13744,
-	13760,
-	13776,
-	13792,
-	13808,
-	13824,
-	13840,
-	13856,
-	13872,
-	13888,
-	13904,
-	13920,
-	13936,
-	13952,
-	13968,
-	13984,
-	14000,
-	14016,
-	14032,
-	14048,
-	14064,
-	14080,
-	14096,
-	14112,
-	14128,
-	14144,
-	14160,
-	14176,
-	14192,
-	14208,
-	14224,
-	14240,
-	14256,
-	14272,
-	14288,
-	14304,
-	14320,
-	14336,
-	14352,
-	14368,
-	14384,
-	14400,
-	14416,
-	14432,
-	14448,
-	14464,
-	14480,
-	14496,
-	14512,
-	14528,
-	14544,
-	14560,
-	14576,
-	14592,
-	14608,
-	14624,
-	14640,
-	14656,
-	14672,
-	14688,
-	14704,
-	14720,
-	14736,
-	14752,
-	14768,
-	14784,
-	14800,
-	14816,
-	14832,
-	14848,
-	14864,
-	14880,
-	14896,
-	14912,
-	14928,
-	14944,
-	14960,
-	14976,
-	14992,
-	15008,
-	15024,
-	15040,
-	15056,
-	15072,
-	15088,
-	15104,
-	15120,
-	15136,
-	15152,
-	15168,
-	15184,
-	15200,
-	15216,
-	15232,
-	15248,
-	15264,
-	15280,
-	15296,
-	15312,
-	15328,
-	15344,
-	15360,
-	15376,
-	15392,
-	15408,
-	15424,
-	15440,
-	15456,
-	15472,
-	15488,
-	15504,
-	15520,
-	15536,
-	15552,
-	15568,
-	15584,
-	15600,
-	15616,
-	15632,
-	15648,
-	15664,
-	15680,
-	15696,
-	15712,
-	15728,
-	15744,
-	15760,
-	15776,
-	15792,
-	15808,
-	15824,
-	15840,
-	15856,
-	15872,
-	15888,
-	15904,
-	15920,
-	15936,
-	15952,
-	15968,
-	15984,
-	16000,
-	16016,
-	16032,
-	16048,
-	16064,
-	16080,
-	16096,
-	16112,
-	16128,
-};
-
-#endif /* TARGAMAIN */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamainmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamainmipiraw_Sensor.c
deleted file mode 100755
index 71024824..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamainmipiraw_Sensor.c
+++ /dev/null
@@ -1,2936 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 targamainmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "targamainmipiraw_Sensor.h"
-
-#define TARGAMAIN_EEPROM_READ_ID	0xA1
-#define TARGAMAIN_EEPROM_WRITE_ID	0xA0
-#define TARGAMAIN_MAX_OFFSET		0x8000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "targamain_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x8000
-#define OTP_QSC_VALID_ADDR 0x2ED1
-#define OTP_PDC_VALID_ADDR 0x7DA0
-#define QSC_IS_VALID_VAL      0x01
-#define SPC_IS_VALID_VAL      0x01
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x1832
-#define OTP_QCOM_PDAF_OFFSET_DATA_LENGTH 0x650
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x5E4
-#define OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR 0x39b0
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-static kal_uint8 otp_qcom_pdaf_offset_data[OTP_QCOM_PDAF_OFFSET_DATA_LENGTH] = {0};
-static void set_sensor_cali(void *arg);
-static int get_sensor_temperature(void *arg);
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int targamain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targamain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targamain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targamain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targamain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targamain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targamain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int targamain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void get_sensor_cali(void *arg);
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int targamain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static int targamain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targamain_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targamain_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targamain_common_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data);
-
-
-/* STRUCT */
-
-static struct eeprom_map_info targamain_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x009A, 0x009B, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0010, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x2B00, 0x3199, 0x319A, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x31C0, 0x3859, 0x385A, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0x6400, 0x0000, 0x0000, CALI_DATA_MASTER_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, targamain_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, targamain_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, targamain_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, targamain_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, targamain_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, targamain_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, targamain_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, targamain_set_awb_gain},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, targamain_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_OFFSET_DATA, targamain_get_otp_qcom_pdaf_offset_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, targamain_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, targamain_streaming_resume},
-};
-
-static u32 targamain_dcg_ratio_table_ratio4[] = {4000};
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_12bit = {
-	.gain_ratio = 4000,
-	.OB_pedestal = 64,
-	.saturation_level = 3900,
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01480143,/*cal_layout_table*/
-		.addr_header_id = 0x00000006,/*cc*/
-		.i2c_write_id = 0xA0,/*cc*/
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0C00,
-		.addr_qsc = 0x22D0,/*QSC_EEPROM_ADDR*/
-		.sensor_reg_addr_qsc = 0xC000, /*QSC_OTP_ADDR*/
-
-		.pdc_support = TRUE,
-		.pdc_size = 0x180,
-		.addr_pdc = 0x2EE0,
-		.sensor_reg_addr_pdc = 0xD200,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-		/*      */
-		{0, 192}, {0, 0}, {0, 384}, {0, 0}, {2048, 1536},
-		/*      */
-		{2048, 1536}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 3,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1},
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-		/*      */
-		{0, 192}, {0, 0}, {0, 384}, {0, 0}, {2048, 1536},
-		/*      */
-		{2048, 1536}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 3,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1},
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-		/*      */
-		{0, 192}, {0, 0}, {0, 384}, {0, 0}, {2048, 1536},
-		/*      */
-		{2048, 1536}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 3,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,
-		.i4BinFacX = 4,
-		.i4BinFacY = 2,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1},
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_partial_pd_info = {
-	.i4OffsetX = 16,
-	.i4OffsetY = 32,
-	.i4PitchX = 8,
-	.i4PitchY = 32,
-	.i4PairNum = 4,
-	.i4SubBlkW = 8,
-	.i4SubBlkH = 16,
-	.i4PosL = {{20, 41}, {20, 43}, {19, 48}, {19, 50}},
-	.i4PosR = {{16, 33}, {16, 35}, {23, 56}, {23, 58}},
-	.i4BlockNumX = 504,
-	.i4BlockNumY = 72,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-		/*      */
-		{0, 192}, {0, 0}, {0, 384}, {0, 0}, {2048, 1536},
-		/*      */
-		{2048, 1536}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 0}, {2048, 1536}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = 3,
-	.i4VolumeX = 1,
-	.i4VolumeY = 2,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4ModeIndex = 0,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	/* VC's PD pattern description */
-	.sPDMapInfo[0] = {
-		/*.i4VCFeature = VC_PDAF_STATS_NE_PIX_1,*/
-		.i4PDPattern = 3,
-		.i4PDRepetition = 8,
-		.i4PDOrder = {1, 1, 0, 0, 0, 0, 1, 1}, /*R = 1, L = 0*/
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x0200,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x0800,
-			.vsize = 0x0480,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x0200,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x0200,
-			.vsize = 0x02F0,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 0x0200,
-			.vsize = 0x02F0,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2c,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x0800,
-			.vsize = 0x0600,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus12[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus13[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus14[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x0200,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{/*reg_B2-S1_QBIN(VBIN)_4096x3072_30fps*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = targamain_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = targamain_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 11904,
-		.framelength = 3791,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_B2-S1_QBIN(VBIN)_4096x3072_30fps*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = targamain_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 11904,
-		.framelength = 3791,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_B4-S3_4096x2304_30FPS**/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = targamain_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_normal_video_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = targamain_seamless_normal_video,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_normal_video),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 11904,
-		.framelength = 3791,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 970970000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_B5-S3  4096x2304 @60FPS */
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = targamain_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_hs_video_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = targamain_seamless_hs_video,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_hs_video),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 7136,
-		.framelength = 3174,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{   /*reg_V1  2048x1152 @120FPS.*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = targamain_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 6728,
-		.framelength = 1680,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 687090000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = 2469,
-		.delay_frame = 3,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_V2 2048x1152 @240FPS QBIN V2H2 w/o PD VB Max*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = targamain_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 4264,
-		.framelength = 1314,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 871540000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = 2469,
-		.delay_frame = 3,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_B1-S4 4096x3072 @24FPS QBIN(VBIN) w/ All-PD VB Max.*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = targamain_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom2_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = targamain_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 11904,
-		.framelength = 4739,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 682970000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_B6-S3  4096x2304 @30FPS QBIN w/ Partial-PD VB Max. Seamless w/ "*-S3"**/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = targamain_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom3_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = targamain_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 7136,
-		.framelength = 6349,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-	{/*reg_L1-S1 4096x3072 @30FPS QBIN 2LB-MF w/ Partial-PD VB Max. Seamless w/ "*-S1"*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = targamain_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = targamain_seamless_custom4,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_custom4),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 1360000000,
-		.linelength = 7136,
-		.framelength = 6349,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 3092,
-		.read_margin = 36*2,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 2,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{/*reg_F2-S1 4096x3072 @30FPS Full-Crop w/ PD VB Max. Seamless w/  "*-S1"*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = targamain_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom5_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = targamain_seamless_custom5,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_custom5),
-		.hdr_mode = HDR_NONE,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 3225,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.delay_frame = 2,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.ana_gain_max = BASEGAIN * 16,
-		.dpc_enabled = true,
-	},
-	{/*reg_L2-S1 4096x3072 @15FPS Full RMSC 2LB-MF w/ All-PD VB Max. Seamless w/ "*-S1"*/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = targamain_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom6_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = targamain_seamless_custom6,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_custom6),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 6451,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 3132,
-		.read_margin = 36*2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.delay_frame = 2,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 16,
-	},
-	{/*reg_G1-S3  4096x2304 @30FPS QBIN DAG1:4 w/ Partial-PD VB Max. Seamless w/ "*-S3"*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = targamain_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom7_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.pclk = 1360000000,
-		.linelength = 14256,
-		.framelength = 3174,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 811430000,
-		.readout_length = 0,
-		.read_margin = 64,
-		.framelength_step = 8,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 12,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -352,
-		.delay_frame = 2,
-		.csi_param = {},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_R,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = targamain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(targamain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/*reg_F1 8192x6144 @15FPS Full RMSC w/ PD VB Max.*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = targamain_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 6451,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1100570000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 16,
-	},
-	{/*reg_F1-RAW 8192x6144 @15FPS Full-RAW w/ PD VB Max.*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = targamain_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 6451,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1100570000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.ana_gain_max = BASEGAIN * 16,
-	},
-	{/*reg_F2-RAW-S1 4096x3072 @30FPS Full-RAW-Crop w/ PD VB Max.*/
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = targamain_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom10_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = targamain_seamless_custom10,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_custom10),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 3225,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-	},
-	{/*F3-RAW-S2 4096x3072 @24FPS Full-RAW-Crop w/ PD VB Max. Seamless*/
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = targamain_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom11_setting),
-		.seamless_switch_group = 3,
-		.seamless_switch_mode_setting_table = targamain_seamless_custom11,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_custom11),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 14032,
-		.framelength = 4032,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 682970000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.pdc_enabled = TRUE,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-	},
-	{/*8192x6144 @12FPS Full-RAW w/ PD VB Max. Seamless w*/
-		.frame_desc = frame_desc_cus12,
-		.num_entries = ARRAY_SIZE(frame_desc_cus12),
-		.mode_setting_table = targamain_custom12_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom12_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = targamain_seamless_custom12,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_custom12),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 17824,
-		.framelength = 6329,
-		.max_framerate = 120,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -428,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.awb_enabled = true,
-	},
-	{/*reg_V3 2048x1536 @24FPS QBIN V2H2 w/o PD VB Max.*/
-		.frame_desc = frame_desc_cus13,
-		.num_entries = ARRAY_SIZE(frame_desc_cus13),
-		.mode_setting_table = targamain_custom13_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom13_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 4264,
-		.framelength = 13156,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 871540000,
-		.readout_length = 0,
-		.read_margin = 10,
-		.framelength_step = 8,
-		.coarse_integ_step = 8,
-		.min_exposure_line = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 695,
-		.delay_frame = 2,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.ana_gain_max = BASEGAIN * 64,
-/* 		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		}, */
-	},
-	{/*reg_B3-S1 4096x3072 @60FPS QBIN w/ Partial-PD VB Max.*/
-		.frame_desc = frame_desc_cus14,
-		.num_entries = ARRAY_SIZE(frame_desc_cus14),
-		.mode_setting_table = targamain_custom14_setting,
-		.mode_setting_len = ARRAY_SIZE(targamain_custom14_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = targamain_seamless_custom14,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(targamain_seamless_custom14),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 1360000000,
-		.linelength = 7136,
-		.framelength = 3174,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 973710000,
-		.readout_length = 0,
-		.read_margin = 36,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1428,
-		.fine_integ_line = -590,
-		.delay_frame = 3,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.ana_gain_max = BASEGAIN * 64,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = TARGAMAIN_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},
-	.i2c_addr_table = {0x34, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_HV_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = targamain_ana_gain_table,
-	.ana_gain_table_size = sizeof(targamain_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 6,
-	.exposure_max = 128*(0xFFFC - 56), /* exposure reg is limited to 4x. max = max - margin */
-	.exposure_step = 4,
-	.exposure_margin = 56,
-	.dig_gain_min = BASE_DGAIN * 1,
-	.dig_gain_max = BASE_DGAIN * 16,
-	.dig_gain_step = 4,
-
-	.frame_length_max = 0xFFFC,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 1000000,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,/*PDAF_SUPPORT_CAMSV_QPD*/
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0202, 0x0203}, /*COARSE_INTEG_TIME*/
-			{0x0000, 0x0000}, /*not support*/
-			{0x0224, 0x0225}, /*ST_COARSE_INTEG_TIME*/
-	},
-	.reg_addr_exposure_in_lut = {
-			{0x0E20, 0x0E21}, /*LUT_A_COARSE_INTEG_TIME*/
-			{0x0E40, 0x0E41}, /*LUT_B_COARSE_INTEG_TIME*/
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3160,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, /*ANA_GAIN_GLOBAL*/
-			{0x0000, 0x0000}, /*not support*/
-			{0x0216, 0x0217}, /*ST_ANA_GAIN_GLOBAL*/
-	},
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E22, 0x0E23}, /*LUT_A_ANA_GAIN_GLOBAL*/
-			{0x0E42, 0x0E43}, /*LUT_B_ANA_GAIN_GLOBAL*/
-	},
-	.reg_addr_dig_gain = {
-			{0x0000, 0x0000}, /*not support*/
-			{0x0218, 0x0219}, /*ST_DIG_GAIN_GLOBAL*/
-	},
-	.reg_addr_dig_gain_in_lut = {
-			{0x0E24, 0x0E25}, /*LUT_A_DIG_GAIN_GLOBAL*/
-			{0x0E64, 0x0E65}, /*LUT_B_DIG_GAIN_GLOBAL*/
-	},
-	.reg_addr_dcg_ratio = 0x3182, /* DCGHDR_RATIO */
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E28, 0x0E29},  /*LUT_A_FRM_LENGTH_LINES*/
-			{0x0E68, 0x0E69},  /*LUT_B_FRM_LENGTH_LINES*/
-	},
-	.reg_addr_temp_en = 0x0138, /*TEMP_SEN_CTL*/
-	.reg_addr_temp_read = 0x013A, /*TEMP_SEN_OUT*/
-	.reg_addr_auto_extend = 0x0350, /*FRM_LENGTH_CTL*/
-	.reg_addr_frame_count = 0x0005, /*FRM_CNT*/
-	.reg_addr_fast_mode = 0x3010, /*FAST_MODETRANSIT_CTL*/
-	.reg_addr_fast_mode_in_lbmf = 0x31A7, /*EAEB_LUT_CONTROL*/
-
-	.init_setting_table = targamain_init_setting,
-	.init_setting_len = ARRAY_SIZE(targamain_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xf10e5980,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = targamain_common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_DVDD1, {1}, 2000},
-	{HW_ID_RST, {0}, 2000},
-	{HW_ID_AVDD, {2800000, 2800000}, 3000},
-	{HW_ID_AVDD1, {1804000, 1804000}, 3000},
-	{HW_ID_AFVDD, {3000000, 3000000}, 3000},
-	{HW_ID_DVDD, {1104000, 1104000}, 4000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 3000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry targamain_mipi_raw_entry = {
-	.name = "targamain_mipi_raw",
-	.id = TARGAMAIN_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static unsigned int read_targamain_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != targamain_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != targamain_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = targamain_eeprom_info[meta_id].start;
-	readsize = targamain_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct oplus_eeprom_info_struct* infoPtr;
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, TARGAMAIN_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static int targamain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int targamain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR, otp_qcom_pdaf_offset_data, OTP_QCOM_PDAF_OFFSET_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_offset_data, sizeof(otp_qcom_pdaf_offset_data));
-	*len = sizeof(otp_qcom_pdaf_offset_data);
-
-	return 0;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH	 (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-	ret = adaptor_i2c_wr_p8(ctx->i2c_client, TARGAMAIN_EEPROM_WRITE_ID >> 1,
-			addr, para, len);
-
-	return ret;
-}
-
-
-static kal_int32 write_1st_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xff35;
-	u8 flag = 0;
-
-	adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | TARGAMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-
-	reg = 0x06ca;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | TARGAMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x2);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | TARGAMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-	}
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, TARGAMAIN_EEPROM_WRITE_ID >> 1, reg, &flag);
-	LOG_INF("SET_SENSOR_OTP WRP: 0x%x\n", flag);
-
-	return ret;
-}
-
-static kal_int32 write_2nd_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xa000;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, TARGAMAIN_EEPROM_WRITE_ID >> 1, reg, 0x0E);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, TARGAMAIN_EEPROM_WRITE_ID >> 1, reg, 0x00);
-	}
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	u8 flag = 0;
-	int ret = 0;
-	adaptor_i2c_rd_u8(ctx->i2c_client, TARGAMAIN_EEPROM_READ_ID >> 1, 0x000D, &flag);
-	if (flag == 0x01) {
-		ret = write_1st_eeprom_protect(ctx, enable);
-	} else {
-		ret = write_2nd_eeprom_protect(ctx, enable);
-	}
-	return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-	ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-	kal_int32  ret = ERROR_NONE;
-	kal_uint16 data_base, data_length;
-	kal_uint32 idx, idy;
-	kal_uint8 *pData;
-	UINT32 i = 0;
-	kal_uint16 offset = 0;
-	if(pStereodata != NULL) {
-		LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-			pStereodata->uSensorId,
-			pStereodata->uDeviceId,
-			pStereodata->baseAddr,
-			pStereodata->dataLength);
-
-		data_base = pStereodata->baseAddr;
-		data_length = pStereodata->dataLength;
-		pData = pStereodata->uData;
-		offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-		if (offset > data_length) {
-			offset = data_length;
-		}
-		if ((pStereodata->uSensorId == TARGAMAIN_SENSOR_ID) && (data_length == CALI_DATA_MASTER_LENGTH)
-				&& (data_base == TARGAMAIN_STEREO_START_ADDR || data_base == TARGAMAIN_STEREO_MT_START_ADDR
-				|| data_base == TARGAMAIN_STEREO_MT_105CM_START_ADDR)) {
-			LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-			LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-			LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-			LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-			LOG_INF("write_Module_data Write end\n");
-		} else if ((pStereodata->uSensorId == TARGAMAIN_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-				&& (data_base == TARGAMAIN_AESYNC_START_ADDR)) {
-			LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-				pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-				read_cmos_eeprom_8(ctx, TARGAMAIN_AESYNC_START_ADDR),
-				read_cmos_eeprom_8(ctx, TARGAMAIN_AESYNC_START_ADDR+1),
-				read_cmos_eeprom_8(ctx, TARGAMAIN_AESYNC_START_ADDR+2),
-				read_cmos_eeprom_8(ctx, TARGAMAIN_AESYNC_START_ADDR+3),
-				read_cmos_eeprom_8(ctx, TARGAMAIN_AESYNC_START_ADDR+4),
-				read_cmos_eeprom_8(ctx, TARGAMAIN_AESYNC_START_ADDR+5),
-				read_cmos_eeprom_8(ctx, TARGAMAIN_AESYNC_START_ADDR+6),
-				read_cmos_eeprom_8(ctx, TARGAMAIN_AESYNC_START_ADDR+7));
-			LOG_INF("AESync write_Module_data Write end\n");
-		} else {
-			LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-			return -1;
-		}
-	} else {
-		LOG_INF("targamain write_Module_data pStereodata is null\n");
-		return -1;
-	}
-	return ret;
-}
-
-static int targamain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	int ret = ERROR_NONE;
-	ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-	if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-		LOG_INF("ret=%d\n", ret);
-	}
-	return 0;
-}
-
-static int targamain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_MASTER_LENGTH)
-		*len = CALI_DATA_MASTER_LENGTH;
-	LOG_INF("feature_data mode: %d", *feature_data_16);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_targamain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_targamain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MW_MAIN:
-	default:
-		read_targamain_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	}
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, TARGAMAIN_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "targamain read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "targamain read_otp_info end\n");
-}
-
-static int targamain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int targamain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x896) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 targamain_feedback_awbgain[] = {
-	0x0B8E, 0x01,
-	0x0B8F, 0x00,
-	0x0B90, 0x02,
-	0x0B91, 0x28,
-	0x0B92, 0x01,
-	0x0B93, 0x77,
-	0x0B94, 0x01,
-	0x0B95, 0x00,
-};
-
-/*write AWB gain to sensor*/
-static void feedback_awbgain(struct subdrv_ctx *ctx, kal_uint32 r_gain, kal_uint32 b_gain)
-{
-	UINT32 r_gain_int = 0;
-	UINT32 b_gain_int = 0;
-
-	DRV_LOG(ctx, "feedback_awbgain r_gain: %d, b_gain: %d\n", r_gain, b_gain);
-	r_gain_int = r_gain / 512;
-	b_gain_int = b_gain / 512;
-	targamain_feedback_awbgain[5] = r_gain_int;
-	targamain_feedback_awbgain[7] = (r_gain - r_gain_int * 512) / 2;
-	targamain_feedback_awbgain[9] = b_gain_int;
-	targamain_feedback_awbgain[11] = (b_gain - b_gain_int * 512) / 2;
-	subdrv_i2c_wr_regs_u8(ctx, targamain_feedback_awbgain, ARRAY_SIZE(targamain_feedback_awbgain));
-}
-
-static int targamain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-	feedback_awbgain(ctx, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B);
-	return 0;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	sensor_init(ctx);
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_u8(ctx, 0x0101, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x0B06, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0xDDA9, 0x4E);
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x01);
-			DRV_LOG(ctx, "set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x00);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0xD200;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0xD300;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature <= 0x60)
-		temperature_convert = temperature;
-	else if (temperature >= 0x61 && temperature <= 0x7F)
-		temperature_convert = 97;
-	else if (temperature >= 0x80 && temperature <= 0xE2)
-		temperature_convert = -30;
-	else
-		temperature_convert = (char)temperature | 0xFFFFFF0;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (16384 - (16384 * BASEGAIN) / gain);
-}
-
-void targamain_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-		case HDR_NONE:
-		case HDR_RAW_LBMF:
-		case HDR_RAW_DCG_RAW:
-			if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-				ctx->s_ctx.mode[scenario_id].min_exposure_line) {
-				*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-				*min_shutter = ctx->s_ctx.mode[scenario_id].min_exposure_line;
-			} else {
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-			}
-			break;
-		default:
-			*exposure_step = ctx->s_ctx.exposure_step;
-			*min_shutter = ctx->s_ctx.exposure_min;
-			break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int targamain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	targamain_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static int targamain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		(ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF ||
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF))
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x4);
-
-	update_mode_info(ctx, scenario_id);
-
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-		calculate_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id);
-	}
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0] - 1,
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 24) & 0x07);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8)  & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int targamain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-	DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	if (mode) {
-	/* 1:Solid Color 2:Color Bar 5:Black */
-		switch (mode) {
-		case 5:
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x0218, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x3015, 0x00);
-			break;
-		default:
-			subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-			break;
-		}
-	} else if (ctx->test_pattern) {
-		subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /*No pattern*/
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x0218, 0x01);
-		subdrv_i2c_wr_u8(ctx, 0x3015, 0x40);
-	}
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG(ctx, "AOV mode set stream in SCP side! (sid:%u)\n",
-			ctx->current_scenario_id);
-		return;
-	}
-	if (enable) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-
-	} else {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-	}
-	mdelay(10);
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int targamain_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, true);
-		return 0;
-}
-
-static int targamain_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-		return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u8 qsc_is_valid = 0;
-	u8 pdc_is_valid = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/*Check QSC validation*/
-		qsc_is_valid = QSC_IS_VALID_VAL; /*i2c_read_eeprom(ctx, OTP_QSC_VALID_ADDR);*/
-		if (qsc_is_valid != 0x01) {
-			DRV_LOGE(ctx, "QSC data is invalid, flag(%02x)", qsc_is_valid);
-		} else if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		pdc_is_valid = QSC_IS_VALID_VAL; /*i2c_read_eeprom(ctx, OTP_PDC_VALID_ADDR);*/
-		if (pdc_is_valid != 0x01) {
-			DRV_LOGE(ctx, "PDC data is invalid, flag(%02x)", pdc_is_valid);
-		} else if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id)
-{
-	u32 ae_ctrl_cit;
-	u32 prsh_length_lc = 0;
-	u32 cit_step = 1;
-	u8 hw_fixed_value = ctx->s_ctx.seamless_switch_prsh_hw_fixed_value;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = ctx->current_scenario_id;
-	enum IMGSENSOR_HDR_MODE_ENUM hdr_mode;
-
-	if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM7) {
-		prsh_length_lc = 1200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM7 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 400;
-	} else {
-		prsh_length_lc = 0;
-	}
-
-	hdr_mode = ctx->s_ctx.mode[scenario_id].hdr_mode;
-	switch (hdr_mode) {
-	case HDR_RAW_LBMF:
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: dig_gain_lut_a = SE / dig_gain_lut_b = LE */
-			/* 3exp: dig_gain_lut_a = SE / dig_gain_lut_b = ME / dig_gain_lut_c = LE */
-			ae_ctrl_cit = ae_ctrl->exposure.me_exposure;
-			DRV_LOGE(ctx, "debug se %llu le %llu, me %llu", ae_ctrl->exposure.se_exposure, ae_ctrl->exposure.le_exposure, ae_ctrl->exposure.me_exposure);
-		} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: dig_gain_lut_a = LE / dig_gain_lut_b = SE */
-			/* 3exp: dig_gain_lut_a = LE / dig_gain_lut_b = ME / dig_gain_lut_c = SE */
-			ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-			DRV_LOGE(ctx, "debug le\n");
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-		break;
-	case HDR_NONE:
-	case HDR_RAW:
-	case HDR_CAMSV:
-	case HDR_RAW_ZHDR:
-	case HDR_MultiCAMSV:
-	case HDR_RAW_STAGGER:
-	case HDR_RAW_DCG_RAW:
-	case HDR_RAW_DCG_COMPOSE:
-	default:
-		ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-		break;
-	}
-	ae_ctrl_cit = max(ae_ctrl_cit, ctx->s_ctx.exposure_min);
-	ae_ctrl_cit = min(ae_ctrl_cit, ctx->s_ctx.exposure_max);
-	cit_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step ?: 1;
-	if (cit_step) {
-		ae_ctrl_cit = round_up(ae_ctrl_cit, cit_step);
-		prsh_length_lc = round_up(prsh_length_lc, cit_step);
-	}
-	DRV_LOGE(ctx, "prsh_length_lc %u ae_ctrl_cit %u\n", prsh_length_lc, ae_ctrl_cit);
-	prsh_length_lc = (prsh_length_lc > (ae_ctrl_cit + hw_fixed_value)) ? prsh_length_lc : 0;
-	if (prsh_length_lc < (ae_ctrl_cit + hw_fixed_value)) {
-		DRV_LOG_MUST(ctx,
-			"pre-shutter no need: prsh_length_lc(%u) < (ae_ctrl_cit(%u(max=%u,min=%u)) + hw_fixed_value(%u))\n",
-			prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.exposure_max, ctx->s_ctx.exposure_min, hw_fixed_value);
-		ctx->s_ctx.seamless_switch_prsh_length_lc = 0;
-		return;
-	}
-
-	ctx->s_ctx.seamless_switch_prsh_length_lc = prsh_length_lc;
-}
-
-int targamain_common_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data)
-{
-	int ret = ERROR_NONE;
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u64 time_boot_begin = 0;
-	u64 ixc_time = 0;
-	u32 fast_mode_in_lbmf = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (ctx->ixc_client.protocol)
-		sd = adaptor_ixc_get_clientdata(&ctx->ixc_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx) {
-		DRV_LOGE(ctx, "null _adaptor_ctx\n");
-		return -ENODEV;
-	}
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-		ret = ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.chk_s_off_sta)
-		check_stream_off(ctx);
-	update_mode_info(ctx, scenario_id);
-
-	subdrv_i2c_wr_u8(ctx, 0x38D0, 0x00);
-	subdrv_i2c_wr_u8(ctx, 0x38D1, 0x00);
-	subdrv_i2c_wr_u8(ctx, 0x38D2, 0x00);
-	subdrv_i2c_wr_u8(ctx, 0x38D3, 0x00);
-
-	if (ctx->s_ctx.mode[scenario_id].mode_setting_table != NULL) {
-		DRV_LOG(ctx, "E: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		if ((ctx->power_on_profile_en != NULL) &&
-			(*ctx->power_on_profile_en))
-			time_boot_begin = ktime_get_boottime_ns();
-		/* initail setting */
-		if (ctx->s_ctx.aov_sensor_support) {
-			if (ctx->s_ctx.mode[scenario_id].aov_mode &&
-				ctx->s_ctx.s_pwr_seq_reset_view_to_sensing != NULL)
-				ctx->s_ctx.s_pwr_seq_reset_view_to_sensing((void *) ctx);
-
-			if (!ctx->s_ctx.init_in_open)
-				sensor_init(ctx);
-		}
-		switch (ctx->sensor_mode_ops) {
-		case AOV_MODE_CTRL_OPS_SENSING_CTRL:
-		default:
-		#ifndef OPLUS_FEATURE_CAMERA_COMMON
-			ixc_time = ixc_table_write(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table,
-				ctx->s_ctx.mode[scenario_id].mode_setting_len);
-
-		#else /*OPLUS_FEATURE_CAMERA_COMMON*/
-			ixc_time = ixc_table_rewrite(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table,
-				ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		#endif /*OPLUS_FEATURE_CAMERA_COMMON*/
-			break;
-		case AOV_MODE_CTRL_OPS_MONTION_DETECTION_CTRL:
-			/* set eint gpio */
-			ret = pinctrl_select_state(
-				_adaptor_ctx->pinctrl,
-				_adaptor_ctx->state[STATE_EINT]);
-		#ifndef OPLUS_FEATURE_CAMERA_COMMON
-			ixc_time = ixc_table_write(ctx,
-				ctx->s_ctx.mode[scenario_id].mode_setting_table_for_md,
-				ctx->s_ctx.mode[scenario_id].mode_setting_len_for_md);
-		#else /*OPLUS_FEATURE_CAMERA_COMMON*/
-			ixc_time = ixc_table_rewrite(ctx,
-				ctx->s_ctx.mode[scenario_id].mode_setting_table_for_md,
-				ctx->s_ctx.mode[scenario_id].mode_setting_len_for_md);
-		#endif /*OPLUS_FEATURE_CAMERA_COMMON*/
-			break;
-		}
-
-		if ((ctx->power_on_profile_en != NULL) &&
-			(*ctx->power_on_profile_en)) {
-			ctx->sensor_pw_on_profile.i2c_cfg_period =
-					ktime_get_boottime_ns() - time_boot_begin;
-
-			ctx->sensor_pw_on_profile.i2c_cfg_table_len =
-					ctx->s_ctx.mode[scenario_id].mode_setting_len;
-		}
-		DRV_LOG_MUST(ctx, "X: sid:%u size:%u, ixc_time(us): %lld\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len,
-			ixc_time);
-	} else {
-		DRV_LOGE(ctx, "please implement mode setting(sid:%u)!\n", scenario_id);
-	}
-
-	if (check_is_no_crop(ctx, scenario_id) && probe_eeprom(ctx)) {
-		idx = ctx->eeprom_index;
-		support = info[idx].xtalk_support;
-		pbuf = info[idx].preload_xtalk_table;
-		size = info[idx].xtalk_size;
-		addr = info[idx].sensor_reg_addr_xtalk;
-		if (support) {
-			if (pbuf != NULL && addr > 0 && size > 0) {
-				subdrv_ixc_wr_seq_p8(ctx, addr, pbuf, size);
-				DRV_LOG(ctx, "set XTALK calibration data done.");
-			}
-		}
-	}
-
-	if (ctx->s_ctx.aov_sensor_support &&
-		ctx->s_ctx.s_data_rate_global_timing_phy_ctrl != NULL)
-		ctx->s_ctx.s_data_rate_global_timing_phy_ctrl((void *) ctx);
-
-	set_mirror_flip(ctx, ctx->s_ctx.mirror);
-
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		/*enable bit[2] on lbmf mode*/
-		fast_mode_in_lbmf =
-			subdrv_ixc_rd_u8(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf) | 0x4;
-		subdrv_ixc_wr_u8(ctx,
-			ctx->s_ctx.reg_addr_fast_mode_in_lbmf,
-			fast_mode_in_lbmf);
-	}
-
-	return ret;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamainmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamainmipiraw_Sensor.h
deleted file mode 100755
index 4b02685a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targamain_mipi_raw/targamainmipiraw_Sensor.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     targamainmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _TARGAMAINMIPI_SENSOR_H
-#define _TARGAMAINMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "targamain_ana_gain_table.h"
-#include "targamain_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#endif /* TARGAMAIN */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/Makefile
deleted file mode 100755
index d6b504a7..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/targauwidemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwide_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwide_Sensor_setting.h
deleted file mode 100755
index 5d987d80..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwide_Sensor_setting.h
+++ /dev/null
@@ -1,1239 +0,0 @@
-/*  SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 targauwide_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _TARGAUWIDE_SENSOR_SETTING_H
-#define _TARGAUWIDE_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-
-static u16 targauwide_soft_reset[] = {
-/* @@ init */
-	0xfd, 0x00,
-	0x20, 0x0e,
-/* sl 3 3 ; sleep time */
-};
-
-static u16 targauwide_init_setting[] = {
-};
-
-static u16 targauwide_preview_capture_setting[] = {
-/* @@OV08D_MIPI_3264x2448_2lane_1440M_30fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 3264x2448 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 2608 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x00,
-	0x06, 0xd0,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x08,
-	0xa2, 0x09,
-	0xa3, 0x90,
-	0xa4, 0x00,
-	0xa5, 0x08,
-	0xa6, 0x0c,
-	0xa7, 0xc0,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x0c,
-	0x8f, 0xc0,
-	0x90, 0x09,
-	0x91, 0x90,
-	0xb7, 0x02,
-};
-
-static u16 targauwide_normal_video_setting[] = {
-/* @@OV08D_MIPI_3264x1840_2lane_1440M_30fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 3264x1840 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 2608 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x00,
-	0x06, 0xd0,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x01,
-	0xa1, 0x38,
-	0xa2, 0x07,
-	0xa3, 0x30,
-	0xa4, 0x00,
-	0xa5, 0x08,
-	0xa6, 0x0c,
-	0xa7, 0xc0,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x0c,
-	0x8f, 0xc0,
-	0x90, 0x07,
-	0x91, 0x30,
-	0xb7, 0x02,
-};
-
-static u16 targauwide_hs_video_setting[] = {
-/* @@OV08D_MIPI_1632x1224_2lane_720M_60fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 1664x1248 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 720Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 60 */
-/* ; linelength: 478 */
-/* ; framelength: 1252 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x1d, 0x00,
-	0x18, 0x3c,
-	0x1c, 0x19,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x1a, 0x0a,
-	0x1b, 0x08,
-	0x2a, 0x01,
-	0x2b, 0x9a,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x09,
-	0x04, 0x6a,
-	0x05, 0x00,
-	0x06, 0x00,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0xf8,
-	0x31, 0x06,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x55,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x7b,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb7, 0x0a,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc8, 0x03,
-	0xc9, 0xf8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x1a,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x03,
-	0x09, 0x08,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x2c, 0x01,
-	0x50, 0x02,
-	0x51, 0x03,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa9, 0x04,
-	0xaa, 0xd0,
-	0xab, 0x06,
-	0xac, 0x68,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x04,
-	0xa2, 0x04,
-	0xa3, 0xc8,
-	0xa4, 0x00,
-	0xa5, 0x04,
-	0xa6, 0x06,
-	0xa7, 0x60,
-	0xfd, 0x05,
-	0x04, 0x60,
-	0x06, 0x80,
-	0x07, 0x99,
-	0x0D, 0x03,
-	0x0F, 0x03,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x06,
-	0x19, 0x68,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x06,
-	0x8f, 0x60,
-	0x90, 0x04,
-	0x91, 0xc8,
-	0x93, 0x0e,
-	0x94, 0x77,
-	0x95, 0x77,
-	0x96, 0x10,
-	0x98, 0x88,
-	0x9c, 0x1a,
-	0xb7, 0x02,
-};
-
-static u16 targauwide_slim_video_setting[] = {
-};
-
-static u16 targauwide_custom1_setting[] = {
-/* @@OV08D_MIPI_3264x2448_2lane_1440M_24fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 3264x2448 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 24 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x08,
-	0xa2, 0x09,
-	0xa3, 0x90,
-	0xa4, 0x00,
-	0xa5, 0x08,
-	0xa6, 0x0c,
-	0xa7, 0xc0,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x0c,
-	0x8f, 0xc0,
-	0x90, 0x09,
-	0x91, 0x90,
-	0xb7, 0x02,
-};
-
-static u16 targauwide_custom2_setting[] = {
-/* @@OV08D_MIPI_1632x1224_2lane_720M_24fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 1664x1248 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 720Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 24 */
-/* ; linelength: 478 */
-/* ; framelength: 3136 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x1d, 0x00,
-	0x18, 0x3c,
-	0x1c, 0x19,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x1a, 0x0a,
-	0x1b, 0x08,
-	0x2a, 0x01,
-	0x2b, 0x9a,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x09,
-	0x04, 0x6a,
-	0x05, 0x0e,
-	0x06, 0xb8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0xf8,
-	0x31, 0x06,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x55,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x7b,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb7, 0x0a,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc8, 0x03,
-	0xc9, 0xf8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x1a,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x03,
-	0x09, 0x08,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x2c, 0x01,
-	0x50, 0x02,
-	0x51, 0x03,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa9, 0x04,
-	0xaa, 0xd0,
-	0xab, 0x06,
-	0xac, 0x68,
-	0xfd, 0x02,
-	0xa0, 0x00,
-	0xa1, 0x04,
-	0xa2, 0x04,
-	0xa3, 0xc8,
-	0xa4, 0x00,
-	0xa5, 0x04,
-	0xa6, 0x06,
-	0xa7, 0x60,
-	0xfd, 0x05,
-	0x04, 0x60,
-	0x06, 0x80,
-	0x07, 0x99,
-	0x0D, 0x03,
-	0x0F, 0x03,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x06,
-	0x19, 0x68,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x06,
-	0x8f, 0x60,
-	0x90, 0x04,
-	0x91, 0xc8,
-	0x93, 0x0e,
-	0x94, 0x77,
-	0x95, 0x77,
-	0x96, 0x10,
-	0x98, 0x88,
-	0x9c, 0x1a,
-	0xb7, 0x02,
-};
-
-static u16 targauwide_custom3_setting[] = {
-/* @@OV08D_MIPI_2560x1920_2lane_1440M_24fps_V2.0 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 2560x1920 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x01,
-	0xa1, 0x10,
-	0xa2, 0x07,
-	0xa3, 0x80,
-	0xa4, 0x01,
-	0xa5, 0x68,
-	0xa6, 0x0a,
-	0xa7, 0x00,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x0a,
-	0x8f, 0x00,
-	0x90, 0x07,
-	0x91, 0x80,
-	0xb7, 0x02,
-};
-
-static u16 targauwide_custom4_setting[] = {
-/* @@OV08D_MIPI_2304x1728_2lane_1440M_24fps_V2.0 */
-/* 100 99 2304 1728 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 2304x1728 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 30 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x01,
-	0xa1, 0x70,
-	0xa2, 0x06,
-	0xa3, 0xc0,
-	0xa4, 0x01,
-	0xa5, 0xe8,
-	0xa6, 0x09,
-	0xa7, 0x00,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x09,
-	0x8f, 0x00,
-	0x90, 0x06,
-	0x91, 0xc0,
-	0xb7, 0x02,
-};
-
-static u16 targauwide_custom5_setting[] = {
-/* @@OV08D_MIPI_1664x1248_2lane_1440M_24fps_V2.0 */
-/* 100 99 1664 1248 */
-/* ; MCLK: 24 Mhz */
-/* ; resolution: 1664x1248 */
-/* ; Mipi : 2 lane */
-/* ; Mipi data rate: 1440Mbps/Lane */
-/* ; PCLK   :36Mhz */
-/* ; FPS: 24 */
-/* ; linelength: 460 */
-/* ; framelength: 3260 */
-/* ;; flip normal miorror normal */
-	0x20, 0x0b,
-	0xfd, 0x00,
-	0x11, 0x2a,
-	0x14, 0x43,
-	0x1e, 0x23,
-	0x16, 0x82,
-	0x21, 0x00,
-	0xae, 0x64,
-	0xfd, 0x01,
-	0x12, 0x00,
-	0x02, 0x00,
-	0x03, 0x12,
-	0x04, 0x50,
-	0x05, 0x05,
-	0x06, 0xe8,
-	0x07, 0x05,
-	0x21, 0x02,
-	0x24, 0x30,
-	0x33, 0x03,
-	0x01, 0x03,
-	0x19, 0x10,
-	0x42, 0x5d,
-	0x43, 0x00,
-	0x47, 0x07,
-	0x48, 0x08,
-	0x4c, 0x38,
-	0xb2, 0x7e,
-	0xb3, 0x78,
-	0xbd, 0x08,
-	0xd2, 0x47,
-	0xd3, 0x10,
-	0xd4, 0x0d,
-	0xd5, 0x08,
-	0xd6, 0x07,
-	0xb1, 0x00,
-	0xb4, 0x00,
-	0xb5, 0x01,
-	0xb6, 0x01,
-	0xb7, 0x01,
-	0xbc, 0x44,
-	0xbf, 0x42,
-	0xc1, 0x10,
-	0xc3, 0x24,
-	0xc6, 0xf0,
-	0xc7, 0x30,
-	0xc8, 0x03,
-	0xc9, 0xc8,
-	0xe1, 0x33,
-	0xe2, 0xbb,
-	0x51, 0x0c,
-	0x52, 0x0a,
-	0x57, 0x8c,
-	0x59, 0x09,
-	0x5a, 0x08,
-	0x5e, 0x10,
-	0x60, 0x02,
-	0x6d, 0x5c,
-	0x76, 0x16,
-	0x7c, 0x11,
-	0x90, 0x28,
-	0x91, 0x16,
-	0x92, 0x1c,
-	0x93, 0x24,
-	0x95, 0x48,
-	0x9c, 0x06,
-	0xca, 0x0c,
-	0xce, 0x0d,
-	0xfd, 0x01,
-	0xc0, 0x00,
-	0xdd, 0x18,
-	0xde, 0x19,
-	0xdf, 0x32,
-	0xe0, 0x70,
-	0xfd, 0x01,
-	0xc2, 0x05,
-	0xd7, 0x88,
-	0xd8, 0x77,
-	0xd9, 0x66,
-	0xfd, 0x07,
-	0x00, 0xf8,
-	0x01, 0x2b,
-	0x05, 0x40,
-	0x08, 0x06,
-	0x09, 0x11,
-	0x28, 0x6f,
-	0x2a, 0x20,
-	0x2b, 0x05,
-	0x5e, 0x10,
-	0x52, 0x00,
-	0x53, 0x80,
-	0x54, 0x00,
-	0x55, 0x80,
-	0x56, 0x00,
-	0x57, 0x80,
-	0x58, 0x00,
-	0x59, 0x80,
-	0x5c, 0x3f,
-	0xfd, 0x02,
-	0x9a, 0x30,
-	0xa8, 0x02,
-	0xfd, 0x02,
-	0xa0, 0x02,
-	0xa1, 0x60,
-	0xa2, 0x04,
-	0xa3, 0xe0,
-	0xa4, 0x03,
-	0xa5, 0x28,
-	0xa6, 0x06,
-	0xa7, 0x80,
-	0xfd, 0x05,
-	0x04, 0x40,
-	0x07, 0x00,
-	0x0D, 0x01,
-	0x0F, 0x01,
-	0x10, 0x00,
-	0x11, 0x00,
-	0x12, 0x0C,
-	0x13, 0xCF,
-	0x14, 0x00,
-	0x15, 0x00,
-	0x18, 0x00,
-	0x19, 0x00,
-	0xfd, 0x00,
-	0x24, 0x01,
-	0xc0, 0x16,
-	0xc1, 0x08,
-	0xc2, 0x30,
-	0x8e, 0x06,
-	0x8f, 0x80,
-	0x90, 0x04,
-	0x91, 0xe0,
-	0xb7, 0x02,
-};
-
-#endif  /* _OMEGAC1WIDE_SENSOR_SETTING_H  */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwide_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwide_ana_gain_table.h
deleted file mode 100755
index 23c0ccd2..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwide_ana_gain_table.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 targauwide_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __TARGAUWIDE_ANA_GAIN_TABLE_H__
-#define __TARGAUWIDE_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 targauwide_ana_gain_table[] = {
-	1024,
-	1088,
-	1152,
-	1216,
-	1280,
-	1344,
-	1408,
-	1472,
-	1536,
-	1600,
-	1664,
-	1728,
-	1792,
-	1856,
-	1920,
-	1984,
-	2048,
-	2176,
-	2304,
-	2432,
-	2560,
-	2688,
-	2816,
-	2944,
-	3072,
-	3200,
-	3328,
-	3456,
-	3584,
-	3712,
-	3840,
-	3968,
-	4096,
-	4352,
-	4608,
-	4864,
-	5120,
-	5376,
-	5632,
-	5888,
-	6144,
-	6400,
-	6656,
-	6912,
-	7168,
-	7424,
-	7680,
-	7936,
-	8192,
-	8704,
-	9216,
-	9728,
-	10240,
-	10752,
-	11264,
-	11776,
-	12288,
-	12800,
-	13312,
-	13824,
-	14336,
-	14848,
-	15360,
-	15872,
-};
-#endif /* __TARGAUWIDE_ANA_GAIN_TABLE_H__  */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwidemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwidemipiraw_Sensor.c
deleted file mode 100755
index 9a3b405a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwidemipiraw_Sensor.c
+++ /dev/null
@@ -1,1799 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 targauwidemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "targauwidemipiraw_Sensor.h"
-
-#define SENSOR_NAME  SENSOR_DRVNAME_TARGAUWIDE_MIPI_RAW
-#define PFX "targauwide_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-
-#define TARGAUWIDE_EEPROM_I2C_ADDR	(0xA2)
-
-#define OTP_SIZE	          (0x2000)
-#define SENSOR_ID	          (0x56084700)
-
-#define TARGAUWIDE_STEREO_START_ADDR    (0x1260)
-#define TARGAUWIDE_AESYNC_START_ADDR    (0x1A00)
-
-#define TARGAUWIDE_UNIQUE_SENSOR_ID_ADDR 0x00
-#define TARGAUWIDE_UNIQUE_SENSOR_ID_LENGTH 16
-static BYTE targauwide_unique_id[TARGAUWIDE_UNIQUE_SENSOR_ID_LENGTH] = { 0 };
-
-static struct subdrv_ctx *g_ctx = NULL;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int targauwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-
-static int targauwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain);
-static int targauwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter);
-static int targauwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length);
-static int targauwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr, BYTE *data, int size);
-static int targauwide_set_register(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_get_register(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int targauwide_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int targauwide_set_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void read_unique_sensorid(struct subdrv_ctx *ctx);
-
-static int targauwide_common_control(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-	MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-	MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data);
-
-static bool g_id_from_dts_flag = false;
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id);
-
-
-static struct eeprom_map_info targauwide_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x001l, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x1260, 0x0000, 0x0000, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0, 0, 0, 0, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0, 0, 0, 0, false },
-	{ EEPROM_META_DISTORTION_DATA, 0, 0, 0, 0, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, targauwide_set_test_pattern},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, targauwide_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, targauwide_get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, targauwide_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, targauwide_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, targauwide_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, targauwide_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, targauwide_streaming_resume},
-	{SENSOR_FEATURE_SET_GAIN, targauwide_set_gain},
-	{SENSOR_FEATURE_SET_ESHUTTER, targauwide_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, targauwide_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_SEAMLESS_EXTEND_FRAME_LENGTH, targauwide_extend_frame_length},
-	{SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO, targauwide_set_max_framerate_by_scenario},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, targauwide_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_SET_REGISTER, targauwide_set_register},
-	{SENSOR_FEATURE_GET_REGISTER, targauwide_get_register},
-	{SENSOR_FEATURE_SET_FRAMELENGTH, targauwide_set_frame_length},
-};
-
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x0065009a,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA2,
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 1840,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1224,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 1840,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1632,
-			.vsize = 1224,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2560,
-			.vsize = 1920,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2304,
-			.vsize = 1728,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1664,
-			.vsize = 1248,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	}
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{ /* 3264x2448 @30FPS  */
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = targauwide_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(targauwide_preview_capture_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 2608,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 3264,
-			.scale_h = 2448,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 0x34,
-		},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-		}, */
-	},
-	{ /* 3264x2448 @30FPS  */
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = targauwide_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(targauwide_preview_capture_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 2608,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 3264,
-			.scale_h = 2448,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*      	.sensor_setting_info = {
-                     .sensor_scenario_usage = UNUSE_MASK,
-		     .equivalent_fps = 0,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = targauwide_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(targauwide_normal_video_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 2608,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 312,
-			.w0_size = 3264,
-			.h0_size = 1840,
-			.scale_w = 3264,
-			.scale_h = 1840,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1840,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1840,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*      	.sensor_setting_info = {
-                        .sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = targauwide_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(targauwide_hs_video_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 478,
-		.framelength = 1252,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 144000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 1632,
-			.scale_h = 1224,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1224,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1224,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 60,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = targauwide_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(targauwide_slim_video_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 288000000,
-		.linelength = 3672,
-		.framelength = 2612,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 312,
-			.w0_size = 3264,
-			.h0_size = 1840,
-			.scale_w = 3264,
-			.scale_h = 1840,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 1840,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1840,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = targauwide_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(targauwide_custom1_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 3264,
-			.scale_h = 2448,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = targauwide_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(targauwide_custom2_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 478,
-		.framelength = 3136,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 144000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 8,
-			.y0_offset = 8,
-			.w0_size = 3264,
-			.h0_size = 2448,
-			.scale_w = 1632,
-			.scale_h = 1224,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1632,
-			.h1_size = 1224,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1632,
-			.h2_tg_size = 1224,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = targauwide_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(targauwide_custom3_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 360,
-			.y0_offset = 272,
-			.w0_size = 2560,
-			.h0_size = 1920,
-			.scale_w = 2560,
-			.scale_h = 1920,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2560,
-			.h1_size = 1920,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2560,
-			.h2_tg_size = 1920,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		}, */
-	},
-
-	{
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = targauwide_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(targauwide_custom4_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 488,
-			.y0_offset = 368,
-			.w0_size = 2304,
-			.h0_size = 1728,
-			.scale_w = 2304,
-			.scale_h = 1728,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2304,
-			.h1_size = 1728,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2304,
-			.h2_tg_size = 1728,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		},*/
-	},
-
-	{
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = targauwide_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(targauwide_custom5_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 36000000,
-		.linelength = 460,
-		.framelength = 3260,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 288000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.min_exposure_line = 4,
-		.imgsensor_winsize_info = {
-			.full_w = 3280,
-			.full_h = 2464,
-			.x0_offset = 808,
-			.y0_offset = 608,
-			.w0_size = 1664,
-			.h0_size = 1248,
-			.scale_w = 1664,
-			.scale_h = 1248,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1664,
-			.h1_size = 1248,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1664,
-			.h2_tg_size = 1248,
-		},
-		.ae_binning_ratio = 1,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 75,
-		},
-/*		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-		}, */
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = TARGAUWIDE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0000}, /*page0, 0x00, 0x01, 0x02, 0x03*/
-	.i2c_addr_table = {0x6c, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_8_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {3264, 2448},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_2_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_B,
-	.ana_gain_def = BASEGAIN * 1,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 15.5,
-	.ana_gain_type = 1, /*0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC*/
-	.ana_gain_step = 1,
-/*	.ana_gain_table = targauwide_ana_gain_table,
-	.ana_gain_table_size = sizeof(targauwide_ana_gain_table),*/
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max =  0x1FFFFE,      /* (3ffffc / 2) */
-	.exposure_step = 4,
-	.exposure_margin = 20,
-
-	.frame_length_max = 0x1FFFFE,   /* (3ffffc / 2) */
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 934000,
-	.pdaf_type = PDAF_SUPPORT_NA,
-	.g_gain2reg = get_gain2reg,
-	.s_gph = set_group_hold,
-
-/*	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0102, 0x0103},
-	},*/
-	.long_exposure_support = FALSE,
-	.reg_addr_exposure_lshift = 0,
-/*	.reg_addr_ana_gain = {
-			{0x0204, 0x0205},
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},*/
-	.reg_addr_auto_extend = 0,
-	.reg_addr_frame_count = PARAM_UNDEFINED,
-/*	.reg_addr_fast_mode = 0x3010,*/
-
-	.init_setting_table = targauwide_init_setting,
-	.init_setting_len = ARRAY_SIZE(targauwide_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.checksum_value = 0xD1EFF68B,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = targauwide_common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 5000},
-	{HW_ID_AVDD, {2800000, 2800000}, 9000},
-	{HW_ID_DVDD, {1200000, 1200000}, 5000},
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {1}, 1000},
-    {HW_ID_MCLK_DRIVING_CURRENT, {4}, 8000},
-};
-
-struct subdrv_entry targauwide_mipi_raw_entry = {
-	.name = SENSOR_NAME,
-	.id = TARGAUWIDE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	check_current_scenario_id_bound(ctx);
-
-	if (enable) {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x03);
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0x20, 0x0f);
-		subdrv_i2c_wr_u8_u8(ctx, 0xe7, 0x03);
-		subdrv_i2c_wr_u8_u8(ctx, 0xe7, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0xa0, 0x01);
-	} else {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0xa0, 0x00);
-		subdrv_i2c_wr_u8_u8(ctx, 0x20, 0x0b);
-	}
-
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int targauwide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-		if (*(u32 *)para)
-			targauwide_set_shutter_convert(ctx, *(u32 *)para);
-		streaming_ctrl(ctx, true);
-
-		return 0;
-}
-
-static int targauwide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-
-		return 0;
-}
-static unsigned int read_targauwide_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != targauwide_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != targauwide_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = targauwide_eeprom_info[meta_id].start;
-	readsize = targauwide_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA3,
-	.i2c_write_id = 0xA2,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int targauwide_get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct oplus_eeprom_info_struct* infoPtr;
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-	infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 7) | (infoPtr->afInfo[0] >> 1));
-	infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 1);
-	infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 7) | (infoPtr->afInfo[2] >> 1));
-	infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 1);
-	infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 7) | (infoPtr->afInfo[4] >> 1));
-	infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 1);
-
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, TARGAUWIDE_EEPROM_I2C_ADDR >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-		kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-	ret = adaptor_i2c_wr_p8(ctx->i2c_client, TARGAUWIDE_EEPROM_I2C_ADDR >> 1,
-			addr, para, len);
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xE000;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, TARGAUWIDE_EEPROM_I2C_ADDR >> 1, reg, 0x03);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, TARGAUWIDE_EEPROM_I2C_ADDR >> 1, reg, 0x02);
-	}
-
-	return ret;
-}
-
-static kal_uint16 get_64align_addr(kal_uint16 data_base) {
-	kal_uint16 multiple = 0;
-	kal_uint16 surplus = 0;
-	kal_uint16 addr_64align = 0;
-
-	multiple = data_base / 64;
-	surplus = data_base % 64;
-	if(surplus) {
-		addr_64align = (multiple + 1) * 64;
-	} else {
-		addr_64align = multiple * 64;
-	}
-	return addr_64align;
-}
-
-static kal_int32 eeprom_table_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-	kal_uint16 idx;
-	kal_uint16 idy;
-	kal_int32 ret = ERROR_NONE;
-	UINT32 i = 0;
-
-	idx = data_length/WRITE_DATA_MAX_LENGTH;
-	idy = data_length%WRITE_DATA_MAX_LENGTH;
-
-	LOG_INF("[test] data_base(0x%x) data_length(%d) idx(%d) idy(%d)\n", data_base, data_length, idx, idy);
-
-	for (i = 0; i < idx; i++) {
-		ret = table_write_eeprom_30Bytes(ctx, (data_base + WRITE_DATA_MAX_LENGTH * i),
-				&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: i=%d\n", i);
-			return -1;
-		}
-		msleep(6);
-	}
-
-	msleep(6);
-	if(idy) {
-		ret = table_write_eeprom_30Bytes(ctx, (data_base + WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-			return -1;
-		}
-	}
-	return 0;
-}
-
-static kal_int32 eeprom_64align_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-	kal_uint16 addr_64align = 0;
-	kal_uint16 part1_length = 0;
-	kal_uint16 part2_length = 0;
-	kal_int32 ret = ERROR_NONE;
-
-	addr_64align = get_64align_addr(data_base);
-
-	part1_length = addr_64align - data_base;
-	if(part1_length > data_length) {
-		part1_length = data_length;
-	}
-	part2_length = data_length - part1_length;
-
-	write_eeprom_protect(ctx, 0);
-	msleep(6);
-
-	if (part1_length) {
-		ret = eeprom_table_write(ctx, data_base, pData, part1_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part1\n");
-			msleep(6);
-			return -1;
-		}
-	}
-
-	msleep(6);
-	if (part2_length) {
-		ret = eeprom_table_write(ctx, addr_64align, pData + part1_length, part2_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part2\n");
-			msleep(6);
-			return -1;
-		}
-	}
-	msleep(6);
-	write_eeprom_protect(ctx, 1);
-	msleep(6);
-
-	return 0;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-			ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-	kal_int32  ret = ERROR_NONE;
-	kal_uint16 data_base, data_length;
-	kal_uint8 *pData;
-
-	if(pStereodata != NULL) {
-		LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-					   pStereodata->uSensorId,
-					   pStereodata->uDeviceId,
-					   pStereodata->baseAddr,
-					   pStereodata->dataLength);
-
-		data_base = pStereodata->baseAddr;
-		data_length = pStereodata->dataLength;
-		pData = pStereodata->uData;
-		if ((pStereodata->uSensorId == TARGAUWIDE_SENSOR_ID)
-			&& (data_length == CALI_DATA_SLAVE_LENGTH)
-			&& (data_base == TARGAUWIDE_STEREO_START_ADDR)) {
-			LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-
-			eeprom_64align_write(ctx, data_base, pData, data_length);
-
-			LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-			LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-			LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-			LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-			LOG_INF("write_Module_data Write end\n");
-
-		} else if ((pStereodata->uSensorId == TARGAUWIDE_SENSOR_ID)
-			&& (data_length < AESYNC_DATA_LENGTH_TOTAL)
-			&& (data_base == TARGAUWIDE_AESYNC_START_ADDR)) {
-			LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-				pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-
-			eeprom_64align_write(ctx, data_base, pData, data_length);
-
-			LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-					read_cmos_eeprom_8(ctx, TARGAUWIDE_AESYNC_START_ADDR),
-					read_cmos_eeprom_8(ctx, TARGAUWIDE_AESYNC_START_ADDR+1),
-					read_cmos_eeprom_8(ctx, TARGAUWIDE_AESYNC_START_ADDR+2),
-					read_cmos_eeprom_8(ctx, TARGAUWIDE_AESYNC_START_ADDR+3),
-					read_cmos_eeprom_8(ctx, TARGAUWIDE_AESYNC_START_ADDR+4),
-					read_cmos_eeprom_8(ctx, TARGAUWIDE_AESYNC_START_ADDR+5),
-					read_cmos_eeprom_8(ctx, TARGAUWIDE_AESYNC_START_ADDR+6),
-					read_cmos_eeprom_8(ctx, TARGAUWIDE_AESYNC_START_ADDR+7));
-			LOG_INF("AESync write_Module_data Write end\n");
-		} else {
-			LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-			return -1;
-		}
-	} else {
-		LOG_INF("omegas2 write_Module_data pStereodata is null\n");
-		return -1;
-	}
-	return ret;
-}
-
-static int targauwide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	int ret = ERROR_NONE;
-	ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-	if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-		LOG_INF("ret=%d\n", ret);
-	}
-	return 0;
-}
-
-static int targauwide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_SLAVE_LENGTH)
-		*len = CALI_DATA_SLAVE_LENGTH;
-	LOG_INF("feature_data mode:%d  lens:%d", *feature_data_16, *len);
-	read_targauwide_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-			(BYTE *)feature_return_para_32, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-					BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, TARGAUWIDE_EEPROM_I2C_ADDR >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "targauwide read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "targauwide read_otp_info end\n");
-}
-
-static int targauwide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int targauwide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static u16 targauwide_unique_sensorid[] = {
-	0xfd, 0x00,
-	0x20, 0x0f,
-	0xe7, 0x03,
-	0xe7, 0x00,
-	0xfd, 0x03,
-	0x84, 0x40,
-	0x88, 0x00,
-	0x89, 0x00,
-	0x8a, 0x00,
-	0x8b, 0x0f,
-	0x81, 0x01,
-	0xfd, 0x08,
-};
-
-static void read_unique_sensorid(struct subdrv_ctx *ctx)
-{
-	kal_uint8 i = 0;
-
-	LOG_INF("read wide sensor unique sensorid");
-	subdrv_i2c_wr_regs_u8_u8(ctx, targauwide_unique_sensorid, ARRAY_SIZE(targauwide_unique_sensorid));
-	msleep(50);
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x08);
-	for (i = 0; i< TARGAUWIDE_UNIQUE_SENSOR_ID_LENGTH; i++) {
-		targauwide_unique_id[i] =  subdrv_i2c_rd_u8_u8(ctx, TARGAUWIDE_UNIQUE_SENSOR_ID_ADDR + i);
-		pr_err("%s unique_id[%d] = 0x%x", __func__, i, targauwide_unique_id[i]);
-	}
-}
-
-static kal_uint32 return_sensor_id(struct subdrv_ctx *ctx)
-{
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x00);
-
-	return ((subdrv_i2c_rd_u8_u8(ctx, 0x00) << 24) | (subdrv_i2c_rd_u8_u8(ctx, 0x01) << 16)
-		  | (subdrv_i2c_rd_u8_u8(ctx, 0x02) << 8)  |  subdrv_i2c_rd_u8_u8(ctx, 0x03));
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = return_sensor_id(ctx);
-			DRV_LOG(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == SENSOR_ID) {
-				get_imgsensor_id_from_dts(ctx, sensor_id);
-				if (first_read) {
-					read_unique_sensorid(ctx);
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	subdrv_i2c_wr_regs_u8_u8(ctx, targauwide_soft_reset, ARRAY_SIZE(targauwide_soft_reset));
-	mdelay(3);
-	subdrv_i2c_wr_regs_u8_u8(ctx, targauwide_init_setting, ARRAY_SIZE(targauwide_init_setting));
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	if(!en) {  /*fresh*/
-		subdrv_i2c_wr_u8_u8(g_ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(g_ctx, 0x01, 0x01);
-	}
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return  0x10 * gain/BASEGAIN;
-}
-
-static int g_diff_frame_length[] = {
-	2504,  /*preview*/
-	2504,  /*capture*/
-	2504,  /*normal video*/
-	1252,  /*his video*/
-	1252,  /*slim video*/
-	2504,  /*custom1*/
-	1252,  /*custom2*/
-	2504,  /*custom3*/
-	2504,  /*custom4*/
-	2504,  /*custom5*/
-};
-
-void targauwide_write_frame_length(struct subdrv_ctx *ctx, u32 fll)
-{
-	u32 fll_step = 0;
-	u32 vblank = 0;
-	u32 diff_frame_length;
-	check_current_scenario_id_bound(ctx);
-
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-	diff_frame_length = g_diff_frame_length[ctx->current_scenario_id] ?
-		g_diff_frame_length[ctx->current_scenario_id] : g_diff_frame_length[0];
-
-	ctx->frame_length = fll;
-
-	if (fll_step)
-		fll = round_up(fll, fll_step);
-
-	/* write framelength */
-	vblank = (fll - diff_frame_length) * 2;
-
-	if(vblank < 65535) {
-		subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x05, (vblank >> 8) & 0xFF);
-		subdrv_i2c_wr_u8_u8(ctx, 0x06,  vblank & 0xFF);
-	/*	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-		subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);	*/
-	}
-
-	DRV_LOG(ctx, "ctx->frame_length(%d), diff_frame_length(%d), vblank(%d)\n",
-		ctx->frame_length, diff_frame_length, vblank);
-	DRV_LOG(ctx, "fll[0x%x], fll_step:%u ctx->extend_frame_length_en:%d\n",
-		fll, fll_step, ctx->extend_frame_length_en);
-}
-
-void targauwide_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_NONE:
-			if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-				ctx->s_ctx.mode[scenario_id].min_exposure_line) {
-				*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-				*min_shutter = ctx->s_ctx.mode[scenario_id].min_exposure_line;
-			} else {
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-			}
-			break;
-		default:
-			*exposure_step = ctx->s_ctx.exposure_step;
-			*min_shutter = ctx->s_ctx.exposure_min;
-			break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-static int targauwide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-	if (mode != ctx->test_pattern) {
-		if (mode) {
-			LOG_INF("%s mode(%d)", __func__, mode);
-			switch(mode) {
-			case 5:
-				subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-				subdrv_i2c_wr_u8_u8(ctx, 0x21, 0x00); /*DIG_GAIN*/
-				subdrv_i2c_wr_u8_u8(ctx, 0x22, 0x00);
-				subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);
-				subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x07);
-				subdrv_i2c_wr_u8_u8(ctx, 0x04, 0x00); /*blc_lvl_target*/
-				subdrv_i2c_wr_u8_u8(ctx, 0x05, 0x00);
-				break;
-			default:
-				break;
-			}
-		} else {
-			LOG_INF("%s mode(%d)", __func__, mode);
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0x21, 0x02);
-			subdrv_i2c_wr_u8_u8(ctx, 0x22, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);
-			subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x07);
-			subdrv_i2c_wr_u8_u8(ctx, 0x04, 0x00);
-			subdrv_i2c_wr_u8_u8(ctx, 0x05, 0x40);
-		}
-		ctx->test_pattern = mode;
-	}
-
-	return ERROR_NONE;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	g_ctx = ctx;
-
-	return 0;
-}
-
-static int targauwide_set_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u16 frame_length = (u16) (*para);
-	if (frame_length) {
-		ctx->frame_length = frame_length;
-	}
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-
-	if (gph) {
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	}
-	targauwide_write_frame_length(ctx, ctx->frame_length);
-	if (gph) {
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	}
-
-	DRV_LOG(ctx, "fll(input/output/min):%u/%u/%u\n",
-		frame_length, ctx->frame_length, ctx->min_frame_length);
-	return 0;
-}
-
-static int targauwide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length)
-{
-	u32 fine_integ_line = 0;
-	u32 cit_step = 0;
-
-	bool gph = (ctx->s_ctx.s_gph != NULL);
-	u8 exposure_margin = ctx->s_ctx.exposure_margin;
-	DRV_LOG(ctx, "shutter:%llu, frame_length:%u  exposure_margin:%d\n", shutter, frame_length, exposure_margin);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	check_current_scenario_id_bound(ctx);
-	/* check boundary of shutter */
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	shutter = FINE_INTEG_CONVERT(shutter, fine_integ_line);
-	shutter = max(shutter, (u64)ctx->s_ctx.exposure_min);
-	shutter = min(shutter, (u64)ctx->s_ctx.exposure_max);
-	/* check boundary of framelength */
-
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	if (cit_step)
-		shutter = round_up(shutter, cit_step);
-
-	ctx->frame_length =	max(shutter + exposure_margin, (u64)ctx->frame_length);
-	ctx->frame_length =	max((u64)ctx->min_frame_length, (u64)ctx->frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->exposure[0] = shutter;
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		targauwide_write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-	subdrv_i2c_wr_u8_u8(ctx, 0x02, (shutter * 2 >> 16) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0x03, (shutter * 2 >>  8) & 0xFF);
-	subdrv_i2c_wr_u8_u8(ctx, 0x04,  shutter * 2  & 0xFF);
-/*	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);	
-	subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);	*/
-
-	DRV_LOG(ctx, "exp[0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		ctx->exposure[0], frame_length, ctx->frame_length, ctx->autoflicker_en);
-
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		/*commit_i2c_buffer(ctx);*/
-	}
-	/* group hold end */
-
-	return 0;
-}
-
-static int targauwide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	return targauwide_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], ((u64*)para)[1]);
-}
-
-static int targauwide_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter)
-{
-	return targauwide_set_shutter_frame_length_convert(ctx, shutter, 0);
-}
-
-static int targauwide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	return targauwide_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], 0);
-}
-
-static int targauwide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64*)para;
-	u64 *shutters =(u64 *)(*feature_data);
-	u16 exp_cnt = (u64) (*(feature_data + 1));
-	u64 framelength = (u64) (*(feature_data + 2));
-
-	if(exp_cnt != 1) {
-		LOG_INF("exp_cnt(%d) != 1\n", exp_cnt);
-	}
-
-	return targauwide_set_shutter_frame_length_convert(ctx, shutters[0], framelength);
-}
-
-static int targauwide_set_gain_convert(struct subdrv_ctx *ctx, u32 gain)
-{
-	u16 rg_gain;
-	bool gph = (ctx->s_ctx.s_gph != NULL);
-	u32 ana_gain_min = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_min : ctx->ana_gain_min;
-	u32 ana_gain_max = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max : ctx->ana_gain_max;
-
-	/* check boundary of gain */
-	gain = max(gain, ana_gain_min);
-	gain = min(gain, ana_gain_max);
-
-	/* mapping of gain to register value */
-	rg_gain = get_gain2reg(gain);
-
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-
-	/* write gain */
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);
-	subdrv_i2c_wr_u8_u8(ctx, 0x24, rg_gain);
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01); /*page1*/
-	subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01); /*fresh*/
-
-	DRV_LOG(ctx, "%s gain(%d) rg_gain[0x%x]\n", __func__, gain, rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	/* group hold end */
-
-	return 0;
-}
-
-static int targauwide_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-
-	return targauwide_set_gain_convert(ctx, gain);
-}
-
-void targauwide_set_dummy(struct subdrv_ctx *ctx)
-{
-}
-
-static int targauwide_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = (u32)((u64*)para)[0];
-	u32 framerate = (u32)((u64*)para)[1];
-	u32 frame_length;
-	u32 frame_length_step;
-
-	LOG_INF("scenario_id(%d), framerate(%d)", scenario_id, framerate);
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOG(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-	}
-
-	if (framerate == 0) {
-		DRV_LOG(ctx, "framerate (%u) is invalid\n", framerate);
-		return 0;
-	}
-
-	if (ctx->s_ctx.mode[scenario_id].linelength == 0) {
-		DRV_LOG(ctx, "linelength (%u) is invalid\n",
-			ctx->s_ctx.mode[scenario_id].linelength);
-		return 0;
-	}
-
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	ctx->frame_length =
-		max(frame_length, ctx->s_ctx.mode[scenario_id].framelength);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	ctx->min_frame_length = ctx->frame_length;
-	DRV_LOG(ctx, "max_fps(input/output):%u/%u(sid:%u), min_fl_en:1\n",
-		framerate, ctx->current_fps, scenario_id);
-	if (ctx->s_ctx.reg_addr_auto_extend ||
-			(ctx->frame_length > (ctx->exposure[0] + ctx->s_ctx.exposure_margin))) {
-		targauwide_set_dummy(ctx);
-	}
-
-	return 0;
-}
-
-static int targauwide_extend_frame_length_convert(struct subdrv_ctx *ctx, u32 ns)
-{
-	return 0;
-}
-
-static int targauwide_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 ns = (u32)((u64*)para)[0];
-
-	return targauwide_extend_frame_length_convert(ctx, ns);
-}
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-
-	return 0;
-}
-
-static int targauwide_set_register(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u8 page = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF00;
-	u8 addr = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF;
-
-
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, page);
-	subdrv_i2c_wr_u8_u8(ctx, addr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData & 0xFF);
-
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, 0x01);	/*page1*/
-	subdrv_i2c_wr_u8_u8(ctx, 0x01, 0x01);	/*fresh*/
-
-	pr_err("%s RegAddr: 0x%08x, RegData: 0x%04x \n",
-		__func__, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-
-	return 0;
-}
-
-static int targauwide_get_register(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u8 page = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF00;
-	u8 addr = ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr & 0xFF;
-
-	subdrv_i2c_wr_u8_u8(ctx, 0xfd, page);
-	((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData =
-		subdrv_i2c_rd_u8_u8(ctx, addr);
-	pr_err("%s RegAddr: 0x%08x, RegData: 0x%04x \n",
-		__func__, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-
-	return 0;
-}
-
-
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id) {
-	struct subdrv_entry *m_subdrv_entry = &targauwide_mipi_raw_entry;
-	u32 final_sensor_id = 0xFFFFFFFF;
-	const char *of_sensor_names[OF_SENSOR_NAMES_MAXCNT];
-	const char *of_sensor_hal_names[OF_SENSOR_NAMES_MAXCNT];
-	u32   of_sensor_ids[OF_SENSOR_NAMES_MAXCNT] = {0};
-	int i, index, of_sensor_names_cnt, of_sensor_hal_names_cnt, of_sensor_ids_ret;
-	struct device *dev = &ctx->i2c_client->dev;
-
-	memset(&of_sensor_ids, 0xFF, sizeof(of_sensor_ids));
-
-	if(g_id_from_dts_flag == false) {
-		of_sensor_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-names", of_sensor_names, ARRAY_SIZE(of_sensor_names));
-
-		of_sensor_hal_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-hal-names", of_sensor_hal_names, ARRAY_SIZE(of_sensor_hal_names));
-
-		of_sensor_ids_ret = of_property_read_u32_array(dev->of_node,
-				"sensor-ids", of_sensor_ids, of_sensor_names_cnt);
-
-		pr_err("%s of_sensor_names_cnt(%d), of_sensor_ids_ret(%d)",
-			__func__, of_sensor_names_cnt, of_sensor_ids_ret);
-		for(i = 0 ;i < of_sensor_names_cnt; i++) {
-				pr_err("%s of_sensor_names[%d] = %s  of_sensor_ids[%d] = %d",
-				__func__, i, of_sensor_names[i], i, of_sensor_ids[i]);
-		}
-		for(i = 0 ;i < of_sensor_hal_names_cnt; i++) {
-			pr_err("%s of_sensor_hal_names_cnt[%d] = %s",
-				__func__, i, of_sensor_hal_names[i]);
-		}
-
-		if (of_sensor_names_cnt && (of_sensor_ids_ret == 0)) {
-			for(index = 0; index < of_sensor_names_cnt; index++) {
-				if (strncmp(SENSOR_NAME, of_sensor_names[index], strlen(SENSOR_NAME)) == 0) {
-					final_sensor_id = of_sensor_ids[index];
-					break;
-				}
-			}
-		} else {
-			pr_err("%s sensor-ids error in dts", __func__);
-		}
-		g_id_from_dts_flag = true;
-	}
-
-	if(final_sensor_id != 0xFFFFFFFF) {
-		*sensor_id = final_sensor_id;
-		ctx->s_ctx.sensor_id = final_sensor_id;
-
-		m_subdrv_entry->id = final_sensor_id;
-		if(of_sensor_hal_names_cnt == of_sensor_names_cnt) {
-			m_subdrv_entry->name = of_sensor_hal_names[index];
-		}
-
-		pr_err("%s final index(%d), id(%d) name(%s)",
-			__func__, index, m_subdrv_entry->id, m_subdrv_entry->name);
-	} else {
-		*sensor_id = ctx->s_ctx.sensor_id;
-	}
-
-	return;
-}
-
-static int targauwide_common_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data)
-{
-	int ret = ERROR_NONE;
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u64 time_boot_begin = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx) {
-		DRV_LOGE(ctx, "null _adaptor_ctx\n");
-		return -ENODEV;
-	}
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOG(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-		ret = ERROR_INVALID_SCENARIO_ID;
-	}
-	update_mode_info(ctx, scenario_id);
-
-	if (ctx->s_ctx.mode[scenario_id].mode_setting_table != NULL) {
-		DRV_LOG_MUST(ctx, "E: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		if (ctx->power_on_profile_en)
-			time_boot_begin = ktime_get_boottime_ns();
-
-		/* initail setting */
-		subdrv_i2c_wr_regs_u8_u8(ctx, targauwide_soft_reset, ARRAY_SIZE(targauwide_soft_reset));
-		mdelay(3);
-
-		i2c_table_rewrite(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table,
-				ctx->s_ctx.mode[scenario_id].mode_setting_len);
-
-		if (ctx->power_on_profile_en) {
-			ctx->sensor_pw_on_profile.i2c_cfg_period =
-					ktime_get_boottime_ns() - time_boot_begin;
-
-			ctx->sensor_pw_on_profile.i2c_cfg_table_len =
-					ctx->s_ctx.mode[scenario_id].mode_setting_len;
-		}
-		DRV_LOG(ctx, "X: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-	} else {
-		DRV_LOGE(ctx, "please implement mode setting(sid:%u)!\n", scenario_id);
-	}
-
-	if (check_is_no_crop(ctx, scenario_id) && probe_eeprom(ctx)) {
-		idx = ctx->eeprom_index;
-		support = info[idx].xtalk_support;
-		pbuf = info[idx].preload_xtalk_table;
-		size = info[idx].xtalk_size;
-		addr = info[idx].sensor_reg_addr_xtalk;
-		if (support) {
-			if (pbuf != NULL && addr > 0 && size > 0) {
-				subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-				DRV_LOG(ctx, "set XTALK calibration data done.");
-			}
-		}
-	}
-
-	set_mirror_flip(ctx, ctx->s_ctx.mirror);
-
-	return ret;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwidemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwidemipiraw_Sensor.h
deleted file mode 100755
index 82d3c302..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/targauwide_mipi_raw/targauwidemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     targauwidemipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _TARGAUWIDEMIPI_SENSOR_H
-#define _TARGAUWIDEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "targauwide_ana_gain_table.h"
-#include "targauwide_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#endif /* _TARGAUWIDEMIPI_SENSOR_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/Makefile
deleted file mode 100755
index 79b55a4b..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/yalamainmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamain_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamain_Sensor_setting.h
deleted file mode 100755
index cb697056..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamain_Sensor_setting.h
+++ /dev/null
@@ -1,4477 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 yalamain_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _YALAMAIN_SENSOR_SETTING_H
-#define _YALAMAIN_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-/* NOTE:
-for 2 exp setting, VCID of LE/SE should be 0x00 and 0x02
-which align 3 exp setting LE/NE/SE 0x00, 0x01, 0x02
-to seamless switch, VC ID of SE should remain the same
-SONY sensor: VCID of 2nd frame at 0x3070; VCID of 3rd frame at 0x3080
-must be two different value */
-
-static u16 yalamain_init_setting[] = {
-	0x0136, 0x18,
-	0x0137, 0x00,
-	0x3304, 0x00,
-	0x33F0, 0x06,
-	0x33F1, 0x06,
-	0x0111, 0x03,
-	0x0808, 0x02,
-	0x4815, 0x0F,
-	0x614D, 0x00,
-	0x614F, 0x00,
-	0x6188, 0x09,
-	0x6189, 0x09,
-	0x6190, 0x09,
-	0x6191, 0x09,
-	0x6356, 0x13,
-	0x6358, 0x13,
-	0x6366, 0x13,
-	0x6367, 0x13,
-	0x90E7, 0x01,
-	0x9200, 0x90,
-	0x9202, 0xD4,
-	0x9203, 0xDA,
-	0x9204, 0x90,
-	0x9206, 0xD4,
-	0x9207, 0xD7,
-	0x9208, 0x90,
-	0x920A, 0x7A,
-	0x920B, 0x96,
-	0xA3F8, 0x0C,
-	0xA429, 0x40,
-	0xB148, 0x01,
-	0xB149, 0x61,
-	0xB14A, 0x01,
-	0xB14B, 0xDF,
-	0xB14C, 0x02,
-	0xB14D, 0xD0,
-	0xB14E, 0x01,
-	0xB14F, 0x61,
-	0xB150, 0x01,
-	0xB151, 0xDF,
-	0xB152, 0x02,
-	0xB153, 0xD0,
-	0xB154, 0x01,
-	0xB155, 0x61,
-	0xB156, 0x01,
-	0xB157, 0xDF,
-	0xB158, 0x02,
-	0xB159, 0xD0,
-	0xB15A, 0x01,
-	0xB15B, 0x61,
-	0xB15C, 0x01,
-	0xB15D, 0xDF,
-	0xB15E, 0x02,
-	0xB15F, 0xD0,
-	0x2433, 0x01,
-	0xD566, 0x13,
-	0xD567, 0x13,
-	0xD556, 0x13,
-	0xD558, 0x13,
-	0x2433, 0x00,
-	/*EBD Setting*/
-	0x3870, 0x00,
-	/* add for ois return center */
-	0x3228, 0x01,
-	/* disable deep sleep */
-	0x306D, 0x00,
-	/* fast mode transition in lbmf */
-	0x31A7, 0x04,
-};
-
-/* Reg_B4-S4 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-static u16 yalamain_preview_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/* Reg_B4-S4 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-static u16 yalamain_capture_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B2-S2 4096x2304_30FPS*/
-static u16 yalamain_normal_video_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x52,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/* B3-1 4096x2304_60FPS */
-static u16 yalamain_hs_video_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xD2,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x19,
-	0x0850, 0x00,
-	0x0851, 0x15,
-	0x0852, 0x00,
-	0x0853, 0x29,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* G2 4096x2304 @60FPS QBIN DCG-HDR RAW12 w/ Partial-PD VB_max*/
-static u16 yalamain_slim_video_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0C,
-	0x0113, 0x0C,
-	0x0114, 0x02,
-	0x319A, 0x0C,
-	0x319B, 0x0C,
-	0x3239, 0x01,
-	/*Line Length PCK Setting*/
-	0x0342, 0x18,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x46,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x16,
-	0x0341, 0x52,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x02,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x19,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x01,
-	/*Flicker Setting*/
-	0x3107, 0x01,
-	0x3268, 0x03,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x02,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x0F,
-	0x0850, 0x00,
-	0x0851, 0x0D,
-	0x0852, 0x00,
-	0x0853, 0x19,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* V1 QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-static u16 yalamain_custom1_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x15,
-	0x0343, 0x60,
-	0x3750, 0x00,
-	0x3751, 0x3C,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x06,
-	0x0341, 0x80,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x02,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	/*Output Size Setting*/
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x5B,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x14,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-static u16 yalamain_custom2_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x24,
-	0x0341, 0xD8,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* F2-S1 8192x6144_30FPS bayer*/
-static u16 yalamain_custom3_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*L1-S1 QBIN(VBIN) 4096x3072_2-exp LBMF 30FPS with PDAF VB_max*/
-static u16 yalamain_custom4_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0E,
-	0x0E29, 0xBC,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0E,
-	0x0E59, 0xBC,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* F1-S1 QRMSC_4096x3072_30FPS for izoom--bayer */
-static u16 yalamain_custom5_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x40,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* V2 QBIN-V2H2 FHD 2048x1152_480FPS*/
-static u16 yalamain_custom6_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x0D,
-	0x0343, 0xC0,
-	0x3750, 0x00,
-	0x3751, 0x27,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x05,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x02,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	/*Output Size Setting*/
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xFA,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x01,
-	0x37A9, 0x2C,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x01,
-	0x37AB, 0x2C,
-	0x37D0, 0x00,
-	0x37D1, 0x3C,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1B,
-	0x0850, 0x00,
-	0x0851, 0x17,
-	0x0852, 0x00,
-	0x0853, 0x2D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*L2-S1 Izoom 2exp-LBMF 4096x3072 @30FPS bayer w/ PDAF VB_max*/
-static u16 yalamain_custom7_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0C,
-	0x0E29, 0x80,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0C,
-	0x0E59, 0x80,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*B4 4096x3072 @60FPS QBIN(VBIN) with PDAF VB_max*/
-static u16 yalamain_custom8_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x52,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*G1-S2 4096x2304 30FPS DCG AP Merge*/
-static u16 yalamain_custom9_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x27,
-	0x0343, 0x90,
-	0x3750, 0x00,
-	0x3751, 0x6F,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1C,
-	0x0341, 0x26,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x52,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0xC4,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x18,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x38,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x02,
-	0x3A01, 0xB6,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x03,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x02,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-	/* add for OB Unstable */
-	0x3AC0, 0xCD,
-	0x3AC4, 0xCD,
-	0x3AC8, 0xCD,
-	0x3ACC, 0xCD,
-};
-
-/* G3 4096x2304 60FPS DCG AP Merge */
-static u16 yalamain_custom10_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x18,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x46,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x16,
-	0x0341, 0x52,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xD2,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x03,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x02,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x19,
-	0x0850, 0x00,
-	0x0851, 0x15,
-	0x0852, 0x00,
-	0x0853, 0x29,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B8-S3 1856X1392,30.1fps,2X2Binning_Crop,w/All-PD(VBin) */
-static u16 yalamain_custom11_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x4B,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0xD4,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0E,
-	0x0341, 0xB0,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x80,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0x7F,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x04,
-	0x0409, 0x60,
-	0x040A, 0x00,
-	0x040B, 0x08,
-	0x040C, 0x07,
-	0x040D, 0x40,
-	0x040E, 0x05,
-	0x040F, 0x70,
-	/*Output Size Setting*/
-	0x034C, 0x07,
-	0x034D, 0x40,
-	0x034E, 0x05,
-	0x034F, 0x70,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x18,
-	0x37D2, 0x01,
-	0x37D3, 0x18,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*F3-S1 8192X6144,30fps,Full-Raw,w/All-PD(VBin),ForVB_Max*/
-static u16 yalamain_custom12_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x20,
-	0x040D, 0x00,
-	0x040E, 0x18,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x20,
-	0x034D, 0x00,
-	0x034E, 0x18,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*not use B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-static u16 yalamain_custom13_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x24,
-	0x0341, 0xD8,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* F1-S1 4096x3072 30FPS izoom - Qbayer*/
-static u16 yalamain_custom14_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x19,
-	0x0341, 0x00,
-	/*ROI Setting*/
-	0x0344, 0x08,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x17,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0x23,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x40,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1D,
-	0x0850, 0x00,
-	0x0851, 0x19,
-	0x0852, 0x00,
-	0x0853, 0x2F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*not use V1 QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-static u16 yalamain_custom15_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x15,
-	0x0343, 0x60,
-	0x3750, 0x00,
-	0x3751, 0x3C,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x06,
-	0x0341, 0x80,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x44,
-	0x0902, 0x02,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x00,
-	0x31C0, 0x43,
-	0x31C1, 0x43,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x08,
-	0x040D, 0x00,
-	0x040E, 0x04,
-	0x040F, 0x80,
-	/*Output Size Setting*/
-	0x034C, 0x08,
-	0x034D, 0x00,
-	0x034E, 0x04,
-	0x034F, 0x80,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0x5B,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x14,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* B5 4096x2304 @120FPS QBIN Partial-PD VB_max*/
-static u16 yalamain_custom16_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x16,
-	0x0343, 0x50,
-	0x3750, 0x00,
-	0x3751, 0x3F,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x0C,
-	0x0341, 0x66,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x03,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x14,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x06,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x09,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x09,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x04,
-	0x030E, 0x01,
-	0x030F, 0xF8,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x00,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x00,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x01,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x1B,
-	0x0850, 0x00,
-	0x0851, 0x17,
-	0x0852, 0x00,
-	0x0853, 0x2D,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/* G4 4096x3072 30FPS DCG AP Merge */
-static u16 yalamain_custom17_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x27,
-	0x0343, 0x90,
-	0x3750, 0x00,
-	0x3751, 0x6F,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x1C,
-	0x0341, 0x26,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x02,
-	0x030D, 0x04,
-	0x030E, 0x02,
-	0x030F, 0xA4,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x00,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x03,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x02,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*F4-S3 Izoom 2exp-LBMF 4096x3072 @24FPS w/ PDAF VB_max*/
-static u16 yalamain_custom18_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3750, 0x00,
-	0x3751, 0x7D,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x06,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x11,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x0902, 0x00,
-	0x3005, 0x00,
-	0x3144, 0x00,
-	0x3148, 0x00,
-	0x3149, 0x01,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x08,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x3213, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A0, 0x00,
-	0x37A1, 0x00,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0F,
-	0x0E29, 0xA0,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0F,
-	0x0E59, 0xA0,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*L3-S3 4096X3072,24fps,2X2Binning_2exp_LB-MF,w/All-PD(VBin),For RST(9-16ms)*/
-static u16 yalamain_custom19_setting[] = {
-	/*MIPI output setting*/
-	0x0112, 0x0A,
-	0x0113, 0x0A,
-	0x0114, 0x02,
-	0x3239, 0x00,
-	/*Line Length PCK Setting*/
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3750, 0x00,
-	0x3751, 0x6A,
-	/*Frame Length Lines Setting*/
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	/*ROI Setting*/
-	0x0344, 0x00,
-	0x0345, 0x00,
-	0x0346, 0x00,
-	0x0347, 0x00,
-	0x0348, 0x1F,
-	0x0349, 0xFF,
-	0x034A, 0x17,
-	0x034B, 0xFF,
-	/*Mode Setting*/
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x0902, 0x00,
-	0x3005, 0x02,
-	0x3144, 0x00,
-	0x3148, 0x04,
-	0x3149, 0x01,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	/*Digital Crop & Scaling*/
-	0x0408, 0x00,
-	0x0409, 0x00,
-	0x040A, 0x00,
-	0x040B, 0x00,
-	0x040C, 0x10,
-	0x040D, 0x00,
-	0x040E, 0x0C,
-	0x040F, 0x00,
-	/*Output Size Setting*/
-	0x034C, 0x10,
-	0x034D, 0x00,
-	0x034E, 0x0C,
-	0x034F, 0x00,
-	/*Clock Setting*/
-	0x0301, 0x08,
-	0x0303, 0x02,
-	0x0305, 0x04,
-	0x0306, 0x01,
-	0x0307, 0x6E,
-	0x030B, 0x01,
-	0x030D, 0x0C,
-	0x030E, 0x03,
-	0x030F, 0xF6,
-	/*Other Setting*/
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x3213, 0x01,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A0, 0x00,
-	0x37A1, 0x82,
-	0x37A8, 0x00,
-	0x37A9, 0x00,
-	0x37A2, 0x00,
-	0x37A3, 0x00,
-	0x37AA, 0x00,
-	0x37AB, 0x00,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x3A00, 0x00,
-	0x3A01, 0x00,
-	0x3A06, 0x00,
-	0x3A07, 0x00,
-	/*Integration Setting*/
-	0x0202, 0x03,
-	0x0203, 0xE8,
-	0x0224, 0x01,
-	0x0225, 0xF4,
-	0x3172, 0x01,
-	0x3173, 0xF4,
-	0x317A, 0x01,
-	0x317B, 0xF4,
-	/*Gain Setting*/
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x020E, 0x01,
-	0x020F, 0x00,
-	0x0216, 0x00,
-	0x0217, 0x00,
-	0x0218, 0x01,
-	0x0219, 0x00,
-	0x3174, 0x00,
-	0x3175, 0x00,
-	0x3176, 0x01,
-	0x3177, 0x00,
-	0x317C, 0x00,
-	0x317D, 0x00,
-	0x317E, 0x01,
-	0x317F, 0x00,
-	/*DAGHDR Setting*/
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x320B, 0x00,
-	/*Flicker Setting*/
-	0x3107, 0x00,
-	0x3268, 0x00,
-	/*PHASE PIX Setting*/
-	0x3104, 0x01,
-	/*PHASE PIX Output Data Setting*/
-	0x3879, 0x00,
-	/*PDAF TYPE2 Setting*/
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	/*PDAF TYPE2 Output Data Setting*/
-	0x3878, 0x00,
-	/*EAE-Bracketing Setting*/
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x12,
-	0x0E29, 0x6C,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x12,
-	0x0E59, 0x6C,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-	/*MIPI Global Timing Setting*/
-	0x084E, 0x00,
-	0x084F, 0x13,
-	0x0850, 0x00,
-	0x0851, 0x11,
-	0x0852, 0x00,
-	0x0853, 0x1F,
-	0x0854, 0x00,
-	0x0855, 0x29,
-	0x0858, 0x00,
-	0x0859, 0x1F,
-	/* add for ois return center */
-	0x3228, 0x01,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 yalamain_seamless_preview[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x00,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 yalamain_seamless_capture[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x00,
-};
-
-/*B2-S2/mode2 G1-S2/mode13*/
-static u16 yalamain_seamless_normal_video[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x1D,
-	0x0341, 0x7A,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x3104, 0x01,
-	0x3879, 0x00,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B3-1/mode3 G3/mode14*/
-static u16 yalamain_seamless_hs_video_setting[] = {
-	0x0342, 0x25,
-	0x3751, 0x6A,
-	0x0340, 0x0E,
-	0x0341, 0xBC,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x3213, 0x01,
-	0x37A1, 0x82,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x3184, 0x00,
-	0x3186, 0x00,
-	0x3104, 0x01,
-	0x3103, 0x00,
-	0x3422, 0x00,
-	0x3423, 0x00,
-	0x3878, 0x00,
-};
-
-/*B6-S3/mode6 F4-S3/mode22 L3-S3/mode23*/
-static u16 yalamain_seamless_custom2[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x24,
-	0x0341, 0xD8,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x00,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 yalamain_seamless_custom3[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x19,
-	0x0341, 0x00,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x20,
-	0x040E, 0x18,
-	0x034C, 0x20,
-	0x034E, 0x18,
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x00,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 yalamain_seamless_custom4[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0E,
-	0x0E29, 0xBC,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0E,
-	0x0E59, 0xBC,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 yalamain_seamless_custom5[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x19,
-	0x0341, 0x00,
-	0x0344, 0x08,
-	0x0346, 0x06,
-	0x0348, 0x17,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x01,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x01,
-	0x37D1, 0x40,
-	0x37D2, 0x01,
-	0x37D3, 0x40,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x00,
-};
-
-/*B4-S4/mode0 A-1/mode7 L1-S4/mode8 L2-S4/mode11 F9-S4/mode16*/
-static u16 yalamain_seamless_custom7[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0344, 0x00,
-	0x0346, 0x06,
-	0x0348, 0x1F,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x040C, 0x10,
-	0x040E, 0x0C,
-	0x034C, 0x10,
-	0x034E, 0x0C,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0C,
-	0x0E29, 0x80,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0C,
-	0x0E59, 0x80,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B2-S2/mode2 G1-S2/mode13*/
-static u16 yalamain_seamless_custom9[] = {
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x0342, 0x27,
-	0x0343, 0x90,
-	0x3751, 0x6F,
-	0x0340, 0x1C,
-	0x0341, 0x26,
-	0x37D1, 0x00,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x3104, 0x03,
-	0x3879, 0x02,
-	0x4112, 0x00,
-	0x4113, 0x00,
-	0x4110, 0x00,
-	0x322E, 0x00,
-	0x322F, 0x00,
-	0x3228, 0x02,
-};
-
-/*B3-1/mode3 G3/mode14*/
-static u16 yalamain_seamless_custom10[] = {
-	0x319A, 0x0A,
-	0x319B, 0x0A,
-	0x0342, 0x18,
-	0x3751, 0x46,
-	0x0340, 0x16,
-	0x0341, 0x52,
-	0x3005, 0x06,
-	0x3148, 0x00,
-	0x3213, 0x00,
-	0x37A1, 0x00,
-	0x37D1, 0xC8,
-	0x37D2, 0x00,
-	0x37D3, 0x00,
-	0x0204, 0x34,
-	0x0205, 0xCC,
-	0x3184, 0x01,
-	0x3185, 0x01,
-	0x3186, 0x04,
-	0x3104, 0x00,
-	0x3103, 0x03,
-	0x3422, 0x01,
-	0x3423, 0xFC,
-	0x3878, 0x02,
-};
-
-/*B1-S1/mode0 F2-S1/mode7 L1-S1/mode8 F1-S1/mode9 L2-S1/mode11 F3-S1/mode16*/
-static u16 yalamain_seamless_custom12[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x19,
-	0x0341, 0x00,
-	0x0344, 0x00,
-	0x0346, 0x00,
-	0x0348, 0x1F,
-	0x034A, 0x17,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x00,
-	0x040C, 0x20,
-	0x040E, 0x18,
-	0x034C, 0x20,
-	0x034E, 0x18,
-	0x3205, 0x00,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x00,
-};
-
-/*B6-S3/mode6 F4-S3/mode22 L3-S3/mode23*/
-static u16 yalamain_seamless_custom18[] = {
-	0x0342, 0x2C,
-	0x0343, 0xA0,
-	0x3751, 0x7D,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0346, 0x06,
-	0x034A, 0x11,
-	0x0900, 0x00,
-	0x0901, 0x11,
-	0x3005, 0x00,
-	0x3148, 0x00,
-	0x31C0, 0x01,
-	0x31C1, 0x01,
-	0x0408, 0x08,
-	0x3206, 0x01,
-	0x324C, 0x00,
-	0x3700, 0x00,
-	0x3701, 0x04,
-	0x3702, 0x00,
-	0x37A1, 0x00,
-	0x37D0, 0x03,
-	0x37D1, 0x20,
-	0x37D2, 0x03,
-	0x37D3, 0x20,
-	0x0204, 0x00,
-	0x0205, 0x00,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x00,
-	0x0E23, 0x00,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x0F,
-	0x0E29, 0xA0,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x00,
-	0x0E53, 0x00,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x0F,
-	0x0E59, 0xA0,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-/*B6-S3/mode6 F4-S3/mode22 L3-S3/mode23*/
-static u16 yalamain_seamless_custom19[] = {
-	0x0342, 0x25,
-	0x0343, 0xD0,
-	0x3751, 0x6A,
-	0x0340, 0x18,
-	0x0341, 0xE4,
-	0x0346, 0x00,
-	0x034A, 0x17,
-	0x0900, 0x01,
-	0x0901, 0x22,
-	0x3005, 0x02,
-	0x3148, 0x04,
-	0x31C0, 0x41,
-	0x31C1, 0x41,
-	0x0408, 0x00,
-	0x3206, 0x00,
-	0x324C, 0x01,
-	0x3700, 0x01,
-	0x3701, 0x02,
-	0x3702, 0x01,
-	0x37A1, 0x82,
-	0x37D0, 0x00,
-	0x37D1, 0x28,
-	0x37D2, 0x02,
-	0x37D3, 0x6C,
-	0x0204, 0x13,
-	0x0205, 0x34,
-	0x0E00, 0x02,
-	0x0E01, 0x03,
-	0x0E02, 0x08,
-	0x0E03, 0x00,
-	0x0E04, 0x0C,
-	0x0E05, 0x3F,
-	0x0E20, 0x03,
-	0x0E21, 0xE8,
-	0x0E22, 0x13,
-	0x0E23, 0x34,
-	0x0E24, 0x01,
-	0x0E25, 0x00,
-	0x0E27, 0x00,
-	0x0E28, 0x12,
-	0x0E29, 0x6C,
-	0x0E2A, 0x00,
-	0x0E2B, 0x2B,
-	0x0E2C, 0x00,
-	0x0E30, 0x00,
-	0x0E31, 0x12,
-	0x0E32, 0x00,
-	0x0E33, 0x00,
-	0x0E34, 0x00,
-	0x0E35, 0x30,
-	0x0E36, 0x00,
-	0x0E37, 0x30,
-	0x0E38, 0x00,
-	0x0E39, 0x00,
-	0x0E3A, 0x00,
-	0x0E3B, 0x00,
-	0x0E3C, 0x00,
-	0x0E3D, 0x00,
-	0x0E50, 0x03,
-	0x0E51, 0xE8,
-	0x0E52, 0x13,
-	0x0E53, 0x34,
-	0x0E54, 0x01,
-	0x0E55, 0x00,
-	0x0E57, 0x00,
-	0x0E58, 0x12,
-	0x0E59, 0x6C,
-	0x0E5A, 0x01,
-	0x0E5B, 0x2B,
-	0x0E5C, 0x00,
-	0x0E60, 0x01,
-	0x0E61, 0x12,
-	0x0E62, 0x00,
-	0x0E63, 0x00,
-	0x0E64, 0x01,
-	0x0E65, 0x30,
-	0x0E66, 0x01,
-	0x0E67, 0x30,
-	0x0E68, 0x00,
-	0x0E69, 0x00,
-	0x0E6A, 0x00,
-	0x0E6B, 0x00,
-	0x0E6C, 0x00,
-	0x0E6D, 0x00,
-	0x31A0, 0x00,
-	0x31A1, 0x00,
-};
-
-#endif /* _YALAMAIN_SENSOR_SETTING_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamain_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamain_ana_gain_table.h
deleted file mode 100755
index bd4f0243..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamain_ana_gain_table.h
+++ /dev/null
@@ -1,1907 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 yalamain_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __YALAMAIN_ANA_GAIN_TABLE_H__
-#define __YALAMAIN_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 yalamain_ana_gain_table[] = {
-	1024,
-	1025,
-	1026,
-	1027,
-	1028,
-	1029,
-	1030,
-	1031,
-	1032,
-	1033,
-	1034,
-	1035,
-	1036,
-	1037,
-	1038,
-	1039,
-	1040,
-	1041,
-	1042,
-	1043,
-	1044,
-	1045,
-	1046,
-	1047,
-	1048,
-	1049,
-	1050,
-	1051,
-	1052,
-	1053,
-	1054,
-	1055,
-	1057,
-	1058,
-	1059,
-	1060,
-	1061,
-	1062,
-	1063,
-	1064,
-	1065,
-	1066,
-	1067,
-	1068,
-	1069,
-	1071,
-	1072,
-	1073,
-	1074,
-	1075,
-	1076,
-	1077,
-	1078,
-	1079,
-	1081,
-	1082,
-	1083,
-	1084,
-	1085,
-	1086,
-	1087,
-	1088,
-	1089,
-	1091,
-	1092,
-	1093,
-	1094,
-	1095,
-	1096,
-	1097,
-	1099,
-	1100,
-	1101,
-	1102,
-	1103,
-	1104,
-	1106,
-	1107,
-	1108,
-	1109,
-	1110,
-	1111,
-	1113,
-	1114,
-	1115,
-	1116,
-	1117,
-	1119,
-	1120,
-	1121,
-	1122,
-	1123,
-	1125,
-	1126,
-	1127,
-	1128,
-	1129,
-	1131,
-	1132,
-	1133,
-	1134,
-	1136,
-	1137,
-	1138,
-	1139,
-	1140,
-	1142,
-	1143,
-	1144,
-	1145,
-	1147,
-	1148,
-	1149,
-	1151,
-	1152,
-	1153,
-	1154,
-	1156,
-	1157,
-	1158,
-	1159,
-	1161,
-	1162,
-	1163,
-	1165,
-	1166,
-	1167,
-	1168,
-	1170,
-	1171,
-	1172,
-	1174,
-	1175,
-	1176,
-	1178,
-	1179,
-	1180,
-	1182,
-	1183,
-	1184,
-	1186,
-	1187,
-	1188,
-	1190,
-	1191,
-	1192,
-	1194,
-	1195,
-	1197,
-	1198,
-	1199,
-	1201,
-	1202,
-	1203,
-	1205,
-	1206,
-	1208,
-	1209,
-	1210,
-	1212,
-	1213,
-	1215,
-	1216,
-	1217,
-	1219,
-	1220,
-	1222,
-	1223,
-	1224,
-	1226,
-	1227,
-	1229,
-	1230,
-	1232,
-	1233,
-	1235,
-	1236,
-	1237,
-	1239,
-	1240,
-	1242,
-	1243,
-	1245,
-	1246,
-	1248,
-	1249,
-	1251,
-	1252,
-	1254,
-	1255,
-	1257,
-	1258,
-	1260,
-	1261,
-	1263,
-	1264,
-	1266,
-	1267,
-	1269,
-	1270,
-	1272,
-	1274,
-	1275,
-	1277,
-	1278,
-	1280,
-	1281,
-	1283,
-	1285,
-	1286,
-	1288,
-	1289,
-	1291,
-	1292,
-	1294,
-	1296,
-	1297,
-	1299,
-	1300,
-	1302,
-	1304,
-	1305,
-	1307,
-	1309,
-	1310,
-	1312,
-	1314,
-	1315,
-	1317,
-	1318,
-	1320,
-	1322,
-	1323,
-	1325,
-	1327,
-	1328,
-	1330,
-	1332,
-	1334,
-	1335,
-	1337,
-	1339,
-	1340,
-	1342,
-	1344,
-	1346,
-	1347,
-	1349,
-	1351,
-	1353,
-	1354,
-	1356,
-	1358,
-	1360,
-	1361,
-	1363,
-	1365,
-	1367,
-	1368,
-	1370,
-	1372,
-	1374,
-	1376,
-	1377,
-	1379,
-	1381,
-	1383,
-	1385,
-	1387,
-	1388,
-	1390,
-	1392,
-	1394,
-	1396,
-	1398,
-	1399,
-	1401,
-	1403,
-	1405,
-	1407,
-	1409,
-	1411,
-	1413,
-	1415,
-	1416,
-	1418,
-	1420,
-	1422,
-	1424,
-	1426,
-	1428,
-	1430,
-	1432,
-	1434,
-	1436,
-	1438,
-	1440,
-	1442,
-	1444,
-	1446,
-	1448,
-	1450,
-	1452,
-	1454,
-	1456,
-	1458,
-	1460,
-	1462,
-	1464,
-	1466,
-	1468,
-	1470,
-	1472,
-	1474,
-	1476,
-	1478,
-	1481,
-	1483,
-	1485,
-	1487,
-	1489,
-	1491,
-	1493,
-	1495,
-	1497,
-	1500,
-	1502,
-	1504,
-	1506,
-	1508,
-	1510,
-	1513,
-	1515,
-	1517,
-	1519,
-	1521,
-	1524,
-	1526,
-	1528,
-	1530,
-	1533,
-	1535,
-	1537,
-	1539,
-	1542,
-	1544,
-	1546,
-	1548,
-	1551,
-	1553,
-	1555,
-	1558,
-	1560,
-	1562,
-	1565,
-	1567,
-	1569,
-	1572,
-	1574,
-	1576,
-	1579,
-	1581,
-	1583,
-	1586,
-	1588,
-	1591,
-	1593,
-	1596,
-	1598,
-	1600,
-	1603,
-	1605,
-	1608,
-	1610,
-	1613,
-	1615,
-	1618,
-	1620,
-	1623,
-	1625,
-	1628,
-	1630,
-	1633,
-	1635,
-	1638,
-	1640,
-	1643,
-	1646,
-	1648,
-	1651,
-	1653,
-	1656,
-	1659,
-	1661,
-	1664,
-	1667,
-	1669,
-	1672,
-	1675,
-	1677,
-	1680,
-	1683,
-	1685,
-	1688,
-	1691,
-	1693,
-	1696,
-	1699,
-	1702,
-	1705,
-	1707,
-	1710,
-	1713,
-	1716,
-	1718,
-	1721,
-	1724,
-	1727,
-	1730,
-	1733,
-	1736,
-	1738,
-	1741,
-	1744,
-	1747,
-	1750,
-	1753,
-	1756,
-	1759,
-	1762,
-	1765,
-	1768,
-	1771,
-	1774,
-	1777,
-	1780,
-	1783,
-	1786,
-	1789,
-	1792,
-	1795,
-	1798,
-	1801,
-	1804,
-	1807,
-	1811,
-	1814,
-	1817,
-	1820,
-	1823,
-	1826,
-	1829,
-	1833,
-	1836,
-	1839,
-	1842,
-	1846,
-	1849,
-	1852,
-	1855,
-	1859,
-	1862,
-	1865,
-	1869,
-	1872,
-	1875,
-	1879,
-	1882,
-	1885,
-	1889,
-	1892,
-	1896,
-	1899,
-	1903,
-	1906,
-	1909,
-	1913,
-	1916,
-	1920,
-	1923,
-	1927,
-	1931,
-	1934,
-	1938,
-	1941,
-	1945,
-	1949,
-	1952,
-	1956,
-	1959,
-	1963,
-	1967,
-	1971,
-	1974,
-	1978,
-	1982,
-	1985,
-	1989,
-	1993,
-	1997,
-	2001,
-	2004,
-	2008,
-	2012,
-	2016,
-	2020,
-	2024,
-	2028,
-	2032,
-	2036,
-	2040,
-	2044,
-	2048,
-	2052,
-	2056,
-	2060,
-	2064,
-	2068,
-	2072,
-	2076,
-	2080,
-	2084,
-	2088,
-	2092,
-	2097,
-	2101,
-	2105,
-	2109,
-	2114,
-	2118,
-	2122,
-	2126,
-	2131,
-	2135,
-	2139,
-	2144,
-	2148,
-	2153,
-	2157,
-	2162,
-	2166,
-	2170,
-	2175,
-	2179,
-	2184,
-	2189,
-	2193,
-	2198,
-	2202,
-	2207,
-	2212,
-	2216,
-	2221,
-	2226,
-	2231,
-	2235,
-	2240,
-	2245,
-	2250,
-	2255,
-	2259,
-	2264,
-	2269,
-	2274,
-	2279,
-	2284,
-	2289,
-	2294,
-	2299,
-	2304,
-	2309,
-	2314,
-	2319,
-	2325,
-	2330,
-	2335,
-	2340,
-	2345,
-	2351,
-	2356,
-	2361,
-	2366,
-	2372,
-	2377,
-	2383,
-	2388,
-	2394,
-	2399,
-	2404,
-	2410,
-	2416,
-	2421,
-	2427,
-	2432,
-	2438,
-	2444,
-	2449,
-	2455,
-	2461,
-	2467,
-	2473,
-	2478,
-	2484,
-	2490,
-	2496,
-	2502,
-	2508,
-	2514,
-	2520,
-	2526,
-	2532,
-	2538,
-	2545,
-	2551,
-	2557,
-	2563,
-	2570,
-	2576,
-	2582,
-	2589,
-	2595,
-	2601,
-	2608,
-	2614,
-	2621,
-	2628,
-	2634,
-	2641,
-	2647,
-	2654,
-	2661,
-	2668,
-	2674,
-	2681,
-	2688,
-	2695,
-	2702,
-	2709,
-	2716,
-	2723,
-	2730,
-	2737,
-	2744,
-	2752,
-	2759,
-	2766,
-	2774,
-	2781,
-	2788,
-	2796,
-	2803,
-	2811,
-	2818,
-	2826,
-	2833,
-	2841,
-	2849,
-	2857,
-	2864,
-	2872,
-	2880,
-	2888,
-	2896,
-	2904,
-	2912,
-	2920,
-	2928,
-	2937,
-	2945,
-	2953,
-	2962,
-	2970,
-	2978,
-	2987,
-	2995,
-	3004,
-	3013,
-	3021,
-	3030,
-	3039,
-	3048,
-	3057,
-	3066,
-	3075,
-	3084,
-	3093,
-	3102,
-	3111,
-	3120,
-	3130,
-	3139,
-	3148,
-	3158,
-	3167,
-	3177,
-	3187,
-	3196,
-	3206,
-	3216,
-	3226,
-	3236,
-	3246,
-	3256,
-	3266,
-	3276,
-	3287,
-	3297,
-	3307,
-	3318,
-	3328,
-	3339,
-	3350,
-	3360,
-	3371,
-	3382,
-	3393,
-	3404,
-	3415,
-	3426,
-	3437,
-	3449,
-	3460,
-	3472,
-	3483,
-	3495,
-	3506,
-	3518,
-	3530,
-	3542,
-	3554,
-	3566,
-	3578,
-	3591,
-	3603,
-	3615,
-	3628,
-	3640,
-	3653,
-	3666,
-	3679,
-	3692,
-	3705,
-	3718,
-	3731,
-	3744,
-	3758,
-	3771,
-	3785,
-	3799,
-	3813,
-	3826,
-	3840,
-	3855,
-	3869,
-	3883,
-	3898,
-	3912,
-	3927,
-	3942,
-	3956,
-	3971,
-	3986,
-	4002,
-	4017,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4161,
-	4177,
-	4194,
-	4211,
-	4228,
-	4245,
-	4262,
-	4279,
-	4297,
-	4315,
-	4332,
-	4350,
-	4369,
-	4387,
-	4405,
-	4424,
-	4443,
-	4462,
-	4481,
-	4500,
-	4519,
-	4539,
-	4559,
-	4578,
-	4599,
-	4619,
-	4639,
-	4660,
-	4681,
-	4702,
-	4723,
-	4744,
-	4766,
-	4788,
-	4809,
-	4832,
-	4854,
-	4877,
-	4899,
-	4922,
-	4946,
-	4969,
-	4993,
-	5017,
-	5041,
-	5065,
-	5090,
-	5115,
-	5140,
-	5165,
-	5190,
-	5216,
-	5242,
-	5269,
-	5295,
-	5322,
-	5349,
-	5377,
-	5405,
-	5433,
-	5461,
-	5489,
-	5518,
-	5548,
-	5577,
-	5607,
-	5637,
-	5667,
-	5698,
-	5729,
-	5761,
-	5793,
-	5825,
-	5857,
-	5890,
-	5924,
-	5957,
-	5991,
-	6026,
-	6061,
-	6096,
-	6132,
-	6168,
-	6204,
-	6241,
-	6278,
-	6316,
-	6355,
-	6393,
-	6432,
-	6472,
-	6512,
-	6553,
-	6594,
-	6636,
-	6678,
-	6721,
-	6765,
-	6808,
-	6853,
-	6898,
-	6944,
-	6990,
-	7037,
-	7084,
-	7133,
-	7182,
-	7231,
-	7281,
-	7332,
-	7384,
-	7436,
-	7489,
-	7543,
-	7598,
-	7653,
-	7710,
-	7767,
-	7825,
-	7884,
-	7943,
-	8004,
-	8065,
-	8128,
-	8192,
-	8256,
-	8322,
-	8388,
-	8456,
-	8525,
-	8594,
-	8665,
-	8738,
-	8811,
-	8886,
-	8962,
-	9039,
-	9118,
-	9198,
-	9279,
-	9362,
-	9446,
-	9532,
-	9619,
-	9709,
-	9799,
-	9892,
-	9986,
-	10082,
-	10180,
-	10280,
-	10381,
-	10485,
-	10591,
-	10699,
-	10810,
-	10922,
-	11037,
-	11155,
-	11275,
-	11397,
-	11522,
-	11650,
-	11781,
-	11915,
-	12052,
-	12192,
-	12336,
-	12483,
-	12633,
-	12787,
-	12945,
-	13107,
-	13273,
-	13443,
-	13617,
-	13797,
-	13981,
-	14169,
-	14364,
-	14563,
-	14768,
-	14979,
-	15196,
-	15420,
-	15650,
-	15887,
-	16131,
-	16384,
-	16644,
-	16912,
-	17189,
-	17476,
-	17772,
-	18078,
-	18396,
-	18724,
-	19065,
-	19418,
-	19784,
-	20164,
-	20560,
-	20971,
-	21399,
-	21845,
-	22310,
-	22795,
-	23301,
-	23831,
-	24385,
-	24966,
-	25575,
-	26214,
-	26886,
-	27594,
-	28339,
-	29127,
-	29959,
-	30840,
-	31775,
-	32768,
-	33825,
-	34952,
-	36157,
-	37449,
-	38836,
-	40329,
-	41943,
-	43690,
-	45590,
-	47662,
-	49932,
-	52428,
-	55188,
-	58254,
-	61680,
-	65536,
-	65536,
-};
-
-#define YALAMAIN_GAIN_TABLE_SIZE 432
-static kal_uint32 yalamain_gain_table[YALAMAIN_GAIN_TABLE_SIZE] = {
-	1024,
-	1040,
-	1056,
-	1072,
-	1088,
-	1104,
-	1120,
-	1136,
-	1152,
-	1168,
-	1184,
-	1200,
-	1216,
-	1232,
-	1248,
-	1264,
-	1280,
-	1296,
-	1312,
-	1328,
-	1344,
-	1360,
-	1376,
-	1392,
-	1408,
-	1424,
-	1440,
-	1456,
-	1472,
-	1488,
-	1504,
-	1520,
-	1536,
-	1552,
-	1568,
-	1584,
-	1600,
-	1616,
-	1632,
-	1648,
-	1664,
-	1680,
-	1696,
-	1712,
-	1728,
-	1744,
-	1760,
-	1776,
-	1792,
-	1808,
-	1824,
-	1840,
-	1856,
-	1872,
-	1888,
-	1904,
-	1920,
-	1936,
-	1952,
-	1968,
-	1984,
-	2000,
-	2016,
-	2032,
-	2048,
-	2064,
-	2080,
-	2096,
-	2112,
-	2128,
-	2144,
-	2160,
-	2176,
-	2192,
-	2208,
-	2224,
-	2240,
-	2256,
-	2272,
-	2288,
-	2304,
-	2320,
-	2336,
-	2352,
-	2368,
-	2384,
-	2400,
-	2416,
-	2432,
-	2448,
-	2464,
-	2480,
-	2496,
-	2512,
-	2528,
-	2544,
-	2560,
-	2576,
-	2592,
-	2608,
-	2624,
-	2640,
-	2656,
-	2672,
-	2688,
-	2704,
-	2720,
-	2736,
-	2752,
-	2768,
-	2784,
-	2800,
-	2816,
-	2832,
-	2848,
-	2864,
-	2880,
-	2896,
-	2912,
-	2928,
-	2944,
-	2960,
-	2976,
-	2992,
-	3008,
-	3024,
-	3040,
-	3056,
-	3072,
-	3088,
-	3104,
-	3120,
-	3136,
-	3152,
-	3168,
-	3184,
-	3200,
-	3216,
-	3232,
-	3248,
-	3264,
-	3280,
-	3296,
-	3312,
-	3328,
-	3344,
-	3360,
-	3376,
-	3392,
-	3408,
-	3424,
-	3440,
-	3456,
-	3472,
-	3488,
-	3504,
-	3520,
-	3536,
-	3552,
-	3568,
-	3584,
-	3600,
-	3616,
-	3632,
-	3648,
-	3664,
-	3680,
-	3696,
-	3712,
-	3728,
-	3744,
-	3760,
-	3776,
-	3792,
-	3808,
-	3824,
-	3840,
-	3856,
-	3872,
-	3888,
-	3904,
-	3920,
-	3936,
-	3952,
-	3968,
-	3984,
-	4000,
-	4016,
-	4032,
-	4048,
-	4064,
-	4080,
-	4096,
-	4112,
-	4128,
-	4144,
-	4160,
-	4176,
-	4192,
-	4208,
-	4224,
-	4240,
-	4256,
-	4272,
-	4288,
-	4304,
-	4320,
-	4336,
-	4368,
-	4384,
-	4400,
-	4416,
-	4432,
-	4448,
-	4480,
-	4496,
-	4512,
-	4528,
-	4544,
-	4576,
-	4592,
-	4608,
-	4624,
-	4656,
-	4672,
-	4688,
-	4720,
-	4736,
-	4752,
-	4784,
-	4800,
-	4832,
-	4848,
-	4864,
-	4896,
-	4912,
-	4944,
-	4960,
-	4992,
-	5008,
-	5040,
-	5088,
-	5104,
-	5136,
-	5152,
-	5184,
-	5216,
-	5232,
-	5264,
-	5280,
-	5312,
-	5344,
-	5376,
-	5392,
-	5424,
-	5456,
-	5488,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6096,
-	6128,
-	6160,
-	6192,
-	6240,
-	6272,
-	6304,
-	6352,
-	6384,
-	6432,
-	6464,
-	6512,
-	6544,
-	6592,
-	6624,
-	6672,
-	6720,
-	6752,
-	6800,
-	6848,
-	6896,
-	6944,
-	6976,
-	7024,
-	7072,
-	7120,
-	7168,
-	7216,
-	7280,
-	7328,
-	7376,
-	7424,
-	7488,
-	7536,
-	7584,
-	7648,
-	7696,
-	7760,
-	7824,
-	7872,
-	7936,
-	8000,
-	8064,
-	8128,
-	8192,
-	8256,
-	8320,
-	8384,
-	8448,
-	8512,
-	8592,
-	8656,
-	8736,
-	8800,
-	8880,
-	8960,
-	9024,
-	9104,
-	9184,
-	9264,
-	9360,
-	9440,
-	9520,
-	9616,
-	9696,
-	9792,
-	9888,
-	9984,
-	10080,
-	10176,
-	10272,
-	10368,
-	10480,
-	10576,
-	10688,
-	10800,
-	10912,
-	11024,
-	11152,
-	11264,
-	11392,
-	11520,
-	11648,
-	11776,
-	11904,
-	12048,
-	12192,
-	12336,
-	12480,
-	12624,
-	12784,
-	12944,
-	13104,
-	13264,
-	13440,
-	13616,
-	13792,
-	13968,
-	14160,
-	14352,
-	14560,
-	14768,
-	14976,
-	15184,
-	15408,
-	15648,
-	15872,
-	16128,
-	16384,
-	16640,
-	16912,
-	17184,
-	17472,
-	17760,
-	18064,
-	18384,
-	18720,
-	19056,
-	19408,
-	19776,
-	20160,
-	20560,
-	20960,
-	21392,
-	21840,
-	22304,
-	22784,
-	23296,
-	23824,
-	24384,
-	24960,
-	25568,
-	26208,
-	26880,
-	27584,
-	28336,
-	29120,
-	29952,
-	30832,
-	31760,
-	32768,
-	33824,
-	34944,
-	36144,
-	37440,
-	38832,
-	40320,
-	41936,
-	43680,
-	45584,
-	47648,
-	49920,
-	52416,
-	55184,
-	58240,
-	61680,
-	65536,
-};
-
-static kal_uint16 yalamain_gain_reg[YALAMAIN_GAIN_TABLE_SIZE] = {
-	0,
-	240,
-	496,
-	720,
-	944,
-	1168,
-	1392,
-	1616,
-	1808,
-	2000,
-	2192,
-	2384,
-	2576,
-	2768,
-	2928,
-	3088,
-	3280,
-	3408,
-	3568,
-	3728,
-	3888,
-	4048,
-	4176,
-	4304,
-	4464,
-	4592,
-	4720,
-	4848,
-	4976,
-	5104,
-	5200,
-	5328,
-	5456,
-	5552,
-	5680,
-	5776,
-	5872,
-	6000,
-	6096,
-	6192,
-	6288,
-	6384,
-	6480,
-	6576,
-	6672,
-	6736,
-	6832,
-	6928,
-	7024,
-	7088,
-	7184,
-	7248,
-	7344,
-	7408,
-	7472,
-	7568,
-	7632,
-	7696,
-	7760,
-	7856,
-	7920,
-	7984,
-	8048,
-	8112,
-	8192,
-	8240,
-	8304,
-	8368,
-	8432,
-	8496,
-	8544,
-	8608,
-	8672,
-	8720,
-	8784,
-	8832,
-	8880,
-	8944,
-	8992,
-	9040,
-	9088,
-	9152,
-	9200,
-	9248,
-	9296,
-	9344,
-	9392,
-	9440,
-	9472,
-	9520,
-	9568,
-	9616,
-	9648,
-	9696,
-	9744,
-	9776,
-	9824,
-	9856,
-	9904,
-	9936,
-	9984,
-	10016,
-	10064,
-	10096,
-	10128,
-	10176,
-	10208,
-	10240,
-	10272,
-	10320,
-	10352,
-	10384,
-	10416,
-	10448,
-	10480,
-	10512,
-	10544,
-	10576,
-	10608,
-	10640,
-	10672,
-	10704,
-	10736,
-	10768,
-	10800,
-	10832,
-	10864,
-	10880,
-	10912,
-	10944,
-	10976,
-	10992,
-	11024,
-	11056,
-	11072,
-	11104,
-	11136,
-	11152,
-	11184,
-	11216,
-	11232,
-	11264,
-	11280,
-	11312,
-	11328,
-	11360,
-	11376,
-	11408,
-	11424,
-	11456,
-	11472,
-	11504,
-	11520,
-	11536,
-	11568,
-	11584,
-	11616,
-	11632,
-	11648,
-	11680,
-	11696,
-	11712,
-	11744,
-	11760,
-	11776,
-	11792,
-	11824,
-	11840,
-	11856,
-	11872,
-	11888,
-	11920,
-	11936,
-	11952,
-	11968,
-	11984,
-	12000,
-	12032,
-	12048,
-	12064,
-	12080,
-	12096,
-	12128,
-	12144,
-	12160,
-	12176,
-	12192,
-	12208,
-	12224,
-	12240,
-	12256,
-	12272,
-	12288,
-	12304,
-	12320,
-	12336,
-	12352,
-	12368,
-	12384,
-	12400,
-	12416,
-	12432,
-	12448,
-	12464,
-	12480,
-	12496,
-	12512,
-	12528,
-	12544,
-	12560,
-	12576,
-	12592,
-	12608,
-	12624,
-	12640,
-	12656,
-	12672,
-	12688,
-	12704,
-	12720,
-	12736,
-	12752,
-	12768,
-	12784,
-	12800,
-	12816,
-	12832,
-	12848,
-	12864,
-	12880,
-	12896,
-	12912,
-	12928,
-	12944,
-	12960,
-	12976,
-	12992,
-	13008,
-	13024,
-	13040,
-	13056,
-	13088,
-	13104,
-	13120,
-	13136,
-	13152,
-	13168,
-	13184,
-	13200,
-	13216,
-	13232,
-	13248,
-	13264,
-	13280,
-	13296,
-	13312,
-	13328,
-	13344,
-	13360,
-	13376,
-	13392,
-	13408,
-	13424,
-	13440,
-	13456,
-	13472,
-	13488,
-	13504,
-	13520,
-	13536,
-	13552,
-	13568,
-	13584,
-	13600,
-	13616,
-	13632,
-	13648,
-	13664,
-	13680,
-	13696,
-	13712,
-	13728,
-	13744,
-	13760,
-	13776,
-	13792,
-	13808,
-	13824,
-	13840,
-	13856,
-	13872,
-	13888,
-	13904,
-	13920,
-	13936,
-	13952,
-	13968,
-	13984,
-	14000,
-	14016,
-	14032,
-	14048,
-	14064,
-	14080,
-	14096,
-	14112,
-	14128,
-	14144,
-	14160,
-	14176,
-	14192,
-	14208,
-	14224,
-	14240,
-	14256,
-	14272,
-	14288,
-	14304,
-	14320,
-	14336,
-	14352,
-	14368,
-	14384,
-	14400,
-	14416,
-	14432,
-	14448,
-	14464,
-	14480,
-	14496,
-	14512,
-	14528,
-	14544,
-	14560,
-	14576,
-	14592,
-	14608,
-	14624,
-	14640,
-	14656,
-	14672,
-	14688,
-	14704,
-	14720,
-	14736,
-	14752,
-	14768,
-	14784,
-	14800,
-	14816,
-	14832,
-	14848,
-	14864,
-	14880,
-	14896,
-	14912,
-	14928,
-	14944,
-	14960,
-	14976,
-	14992,
-	15008,
-	15024,
-	15040,
-	15056,
-	15072,
-	15088,
-	15104,
-	15120,
-	15136,
-	15152,
-	15168,
-	15184,
-	15200,
-	15216,
-	15232,
-	15248,
-	15264,
-	15280,
-	15296,
-	15312,
-	15328,
-	15344,
-	15360,
-	15376,
-	15392,
-	15408,
-	15424,
-	15440,
-	15456,
-	15472,
-	15488,
-	15504,
-	15520,
-	15536,
-	15552,
-	15568,
-	15584,
-	15600,
-	15616,
-	15632,
-	15648,
-	15664,
-	15680,
-	15696,
-	15712,
-	15728,
-	15744,
-	15760,
-	15776,
-	15792,
-	15808,
-	15824,
-	15840,
-	15856,
-	15872,
-	15888,
-	15904,
-	15920,
-	15936,
-	15952,
-	15968,
-	15984,
-	16000,
-	16016,
-	16032,
-	16048,
-	16064,
-	16080,
-	16096,
-	16112,
-	16128,
-};
-
-#endif /* __YALAMAIN_ANA_GAIN_TABLE_H__ */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamainmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamainmipiraw_Sensor.c
deleted file mode 100755
index 9da8861e..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamainmipiraw_Sensor.c
+++ /dev/null
@@ -1,3242 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 yalamainmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "yalamainmipiraw_Sensor.h"
-
-#define YALAMAIN_EEPROM_READ_ID	0xA0
-#define YALAMAIN_EEPROM_WRITE_ID	0xA1
-#define YALAMAIN_AF_WRITE_ID	0x18
-#define YALAMAIN_MAX_OFFSET		0x8000
-#define OPLUS_CAMERA_COMMON_DATA_LENGTH 40
-#define PFX "yalamain_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define OTP_SIZE    0x8000
-#define OTP_QCOM_PDAF_DATA_LENGTH 0x800
-#define OTP_QCOM_PDAF_OFFSET_DATA_LENGTH 0x340
-#define OTP_QCOM_PDAF_DATA_START_ADDR 0x0530
-#define OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR 0X0D30
-#define GET_SENSOR_ID_RETRY_CNT    5
-
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-static kal_uint8 otp_qcom_pdaf_data[OTP_QCOM_PDAF_DATA_LENGTH] = {0};
-static kal_uint8 otp_qcom_pdaf_offset_data[OTP_QCOM_PDAF_OFFSET_DATA_LENGTH] = {0};
-static void set_sensor_cali(void *arg);
-static int get_sensor_temperature(void *arg);
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int yalamain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int yalamain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int yalamain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int yalamain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int yalamain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int yalamain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int yalamain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static int yalamain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void get_sensor_cali(void *arg);
-/* extern unsigned int get_PCB_Version(void); */
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int yalamain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static int yalamain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id);
-/* STRUCT */
-
-static struct eeprom_map_info yalamain_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C1, 0x00C2, 17, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x009A, 0x009B, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0010, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0x3BC0, 0x4255, 0x4256, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0x4260, 0x48F5, 0x48F6, CALI_DATA_MASTER_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0x4900, 0x4F95, 0x4F96, CALI_DATA_MASTER_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, yalamain_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, yalamain_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, yalamain_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, get_eeprom_common_data},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, yalamain_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, yalamain_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, yalamain_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, yalamain_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_AWB_GAIN, yalamain_set_awb_gain},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_DATA, yalamain_get_otp_qcom_pdaf_data},
-	{SENSOR_FEATURE_GET_OTP_QCOM_PDAF_OFFSET_DATA, yalamain_get_otp_qcom_pdaf_offset_data},
-};
-
-static u32 yalamain_dcg_ratio_table_ratio4[] = {4000};
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_10bit = {
-	.gain_ratio = 1000,
-	.OB_pedestal = 64,
-	.saturation_level = 1023,
-};
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_12bit = {
-	.gain_ratio = 4000,
-	.OB_pedestal = 64,
-	.saturation_level = 3900,
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x0148012E,/* cal_layout_table */
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA0,
-
-		.qsc_support = TRUE,
-		.qsc_size = 0x0C00,
-		.addr_qsc = 0x2210,
-		.sensor_reg_addr_qsc = 0x1000,
-
-		.pdc_support = TRUE,
-		.pdc_size = 0x180,
-		.addr_pdc = 0x2E20,
-		.sensor_reg_addr_pdc = 0x2B00,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1120, 840}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x2,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,/* all-pd */
-		.i4BinFacX = 4,
-		.i4BinFacY = 2,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, /* R=1, L=0 */
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_partial_pd_info = {
-	.i4OffsetX = 16,
-	.i4OffsetY = 32,
-	.i4PitchX = 8,
-	.i4PitchY = 32,
-	.i4PairNum = 4,
-	.i4SubBlkW = 8,
-	.i4SubBlkH = 16,
-	.i4PosL = {{20, 41}, {20, 43}, {19, 48}, {19, 50}},
-	.i4PosR = {{16, 33}, {16, 35}, {23, 56}, {23, 58}},
-	.i4BlockNumX = 496,
-	.i4BlockNumY = 72,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 384},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*     */
-		{0, 192}, {2048, 1536}, {0, 0}, {0, 384}, {0, 384},
-		/*      */
-		{1056, 792}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*    */
-		{0, 384}, {0, 0}, {2048, 1536}, {0, 0},
-	},
-	.i4VolumeX = 1,
-	.i4VolumeY = 2,
-	.iMirrorFlip = IMAGE_HV_MIRROR,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4ModeIndex = 0,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	/* VC's PD pattern description */
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 3,
-		.i4PDRepetition = 8,
-		.i4PDOrder = {1, 1, 0, 0, 0, 0, 1, 1}, /*R = 1, L = 0*/
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2c,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 576,
-			/* .dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10, */
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW12,
-			.valid_bit = 10,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0240,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0900,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 508,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1856,
-			.vsize = 1392,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 1856,
-			.vsize = 348,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus12[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x2000,
-			.vsize = 0x1800,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus13[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 0x0c00,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus14[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus15[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus16[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus17[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 0x1000,
-			.vsize = 0x0300,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 0x1000,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus18[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 1536,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus19[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.user_data_desc = VC_PDAF_STATS_ME_PIX_1,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{/* B1-S1 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-		.frame_desc = frame_desc_prev,
-		.num_entries = ARRAY_SIZE(frame_desc_prev),
-		.mode_setting_table = yalamain_preview_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_preview_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = yalamain_seamless_preview,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(yalamain_seamless_preview),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-	},
-	{/* B1-S1 4096x3072 @30fps QBIN(VBIN) with PDAF VB_max seamless A-1*/
-		.frame_desc = frame_desc_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_cap),
-		.mode_setting_table = yalamain_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_capture_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = yalamain_seamless_capture,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(yalamain_seamless_capture),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-	},
-	{/*B2-S2 4096x2304_30FPS**/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = yalamain_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 7546,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/* B3-1 4096x2304_60FPS */
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = yalamain_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 3772,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1917260000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-	},
-	{   /* G2 4096x2304 @60FPS QBIN DCG-HDR RAW12 w/ Partial-PD VB_max*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = yalamain_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_COMPOSE,
-		.raw_cnt = 1,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 6352,
-		.framelength = 5714,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 920570000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 707,
-		.csi_param = {},
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW12_B,
-		.saturation_info = &imgsensor_saturation_info_12bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_COMPOSE,
-			.dcg_gain_mode = IMGSENSOR_DCG_RATIO_MODE,
-			.dcg_gain_base = IMGSENSOR_DCG_GAIN_HCG_BASE,
-			.dcg_gain_ratio_min = 4000,
-			.dcg_gain_ratio_max = 4000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = yalamain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(yalamain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 5.7,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-	},
-	{/* V1  QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = yalamain_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5472,
-		.framelength = 1664,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 1427660000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 2482,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/* B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = yalamain_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom2_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = yalamain_seamless_custom2,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(yalamain_seamless_custom2),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 9432,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F2-S1 8192x6144_30FPS remosaic*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = yalamain_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom3_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = yalamain_seamless_custom3,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(yalamain_seamless_custom3),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/*L1-S1 QBIN(VBIN) 4096x3072_2-exp LBMF 30FPS with PDAF VB_max*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = yalamain_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom4_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = yalamain_seamless_custom4,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(yalamain_seamless_custom4),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 3772*2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-	{/* F1-S1 QRMSC_4096x3072_30FPS for izoom--bayer */
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = yalamain_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom5_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = yalamain_seamless_custom5,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(yalamain_seamless_custom5),
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.awb_enabled = true,
-	},
-	{/*V2 QBIN-V2H2 FHD 2048x1152_480FPS */
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = yalamain_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom6_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 3520,
-		.framelength = 1280,
-		.max_framerate = 4800,
-		.mipi_pixel_rate = 2081830000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1763,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/*L2-S1 4096x3072 @30FPS Izoom 2exp-LBMF Qbayer w/ PDAF  VB_max seamless reg_A-1*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = yalamain_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom7_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = yalamain_seamless_custom7,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(yalamain_seamless_custom7),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.awb_enabled = true,
-	},
-	{/*B4 4096x3072 @60FPS QBIN(VBIN) with PDAF VB_max*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = yalamain_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 3772,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-	},
-	{/*G1-S2 4096x2304 30FPS DCG AP Merge*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = yalamain_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 10128,
-		.framelength = 7206,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1178,
-		.csi_param = {},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = yalamain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(yalamain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1.43,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/* G3 4096x2304 60FPS DCG AP Merge */
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = yalamain_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom10_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 6352,
-		.framelength = 5714,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1917260000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 707,
-		.csi_param = {},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = yalamain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(yalamain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1.43,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/* B8-S3 1856X1392,30.1fps,2X2Binning_Crop,w/All-PD(VBin) */
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = yalamain_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 19360,
-		.framelength = 3760,
-		.max_framerate = 301,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1664,
-			.w0_size = 8192,
-			.h0_size = 2816,
-			.scale_w = 4096,
-			.scale_h = 1408,
-			.x1_offset = 1120,
-			.y1_offset = 8,
-			.w1_size = 1856,
-			.h1_size = 1392,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1856,
-			.h2_tg_size = 1392,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 590,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/* F2-S1 8192x6144_30FPS Qbayer*/
-		.frame_desc = frame_desc_cus12,
-		.num_entries = ARRAY_SIZE(frame_desc_cus12),
-		.mode_setting_table = yalamain_custom12_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom12_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = yalamain_seamless_custom12,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(yalamain_seamless_custom12),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {
-			.cphy_settle = 58,
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.awb_enabled = true,
-	},
-	{/*not use B6-S3 QBIN(VBIN)_4096x3072 @24FPS */
-		.frame_desc = frame_desc_cus13,
-		.num_entries = ARRAY_SIZE(frame_desc_cus13),
-		.mode_setting_table = yalamain_custom13_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom13_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 9432,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {
-			.cphy_settle = 57,
-		},
-		.dpc_enabled = true,
-	},
-	{/* F1-S1 4096x3072 30FPS izoom - Qbayer*/
-		.frame_desc = frame_desc_cus14,
-		.num_entries = ARRAY_SIZE(frame_desc_cus14),
-		.mode_setting_table = yalamain_custom14_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom14_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 6400,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 2250510000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.dpc_enabled = true,
-		.awb_enabled = true,
-	},
-	{/*not use V1 QBIN(VBIN)-V2H2 FHD 2048x1152_240FPS*/
-		.frame_desc = frame_desc_cus15,
-		.num_entries = ARRAY_SIZE(frame_desc_cus15),
-		.mode_setting_table = yalamain_custom15_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom15_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5472,
-		.framelength = 1664,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 1427660000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 4,
-		.coarse_integ_step = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 2482,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/* B5 4096x2304 @120FPS QBIN Partial-PD VB_max*/
-		.frame_desc = frame_desc_cus16,
-		.num_entries = ARRAY_SIZE(frame_desc_cus16),
-		.mode_setting_table = yalamain_custom16_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom16_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 2196000000,
-		.linelength = 5712,
-		.framelength = 3174,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 2073600000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_partial_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = -908,
-		.csi_param = {},
-		.dpc_enabled = true,
-	},
-	{/* G4 4096x3072 30FPS DCG AP Merge */
-		.frame_desc = frame_desc_cus17,
-		.num_entries = ARRAY_SIZE(frame_desc_cus17),
-		.mode_setting_table = yalamain_custom17_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom17_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 10128,
-		.framelength = 7206,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 0,
-		.read_margin = 24,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1178,
-		.csi_param = {},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-			.dcg_gain_ratio_step = 0,
-			.dcg_gain_table = yalamain_dcg_ratio_table_ratio4,
-			.dcg_gain_table_size = sizeof(yalamain_dcg_ratio_table_ratio4),
-		},
-		.dpc_enabled = true,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1.43,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-	},
-	{/*F4-S3 Izoom 2exp-LBMF 4096x3072 @24FPS w/ PDAF VB_max*/
-		.frame_desc = frame_desc_cus18,
-		.num_entries = ARRAY_SIZE(frame_desc_cus18),
-		.mode_setting_table = yalamain_custom18_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom18_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = yalamain_seamless_custom18,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(yalamain_seamless_custom18),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 11424,
-		.framelength = 8000,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 15,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 343,
-		.csi_param = {},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 16,
-		.dpc_enabled = true,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.awb_enabled = true,
-	},
-	{/*L3-S3 4096X3072,24fps,2X2Binning_2exp_LB-MF,w/All-PD(VBin),For RST(9-16ms)*/
-		.frame_desc = frame_desc_cus19,
-		.num_entries = ARRAY_SIZE(frame_desc_cus19),
-		.mode_setting_table = yalamain_custom19_setting,
-		.mode_setting_len = ARRAY_SIZE(yalamain_custom19_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = yalamain_seamless_custom19,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(yalamain_seamless_custom19),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 2196000000,
-		.linelength = 9680,
-		.framelength = 9432,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1390630000,
-		.readout_length = 3142,
-		.read_margin = 24*2,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 6,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFC,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFC,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 1180,
-		.csi_param = {},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_SE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 64,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 64,
-		.dpc_enabled = true,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = YALAMAIN_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0016, 0x0017},
-	.i2c_addr_table = {0x34, 0x35, 0x66, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_HV_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 64,
-	.ana_gain_type = 0,
-	.ana_gain_step = 1,
-	.ana_gain_table = yalamain_ana_gain_table,
-	.ana_gain_table_size = sizeof(yalamain_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 6,
-	.exposure_max = 128*(65532 - 48), /* exposure reg is limited to 4x. max = max - margin */
-	.exposure_step = 2,
-	.exposure_margin = 48,
-
-	.frame_length_max = 0xfffc,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 3,
-	.start_exposure_offset = 2036600,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_DCG|HDR_SUPPORT_LBMF,
-	.seamless_switch_support = TRUE,
-	.seamless_switch_type = SEAMLESS_SWITCH_CUT_VB_INIT_SHUT,
-	.seamless_switch_hw_re_init_time_ns = 0,
-	.seamless_switch_prsh_hw_fixed_value = 48,
-	.seamless_switch_prsh_length_lc = 0,
-	.reg_addr_prsh_length_lines = {0x3058, 0x3059, 0x305A, 0x305B},
-	.reg_addr_prsh_mode = 0x3056,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure = {
-			{0x0202, 0x0203}, /* COARSE_INTEG_TIME */
-			{0x0000, 0x0000}, /*not support*/
-			{0x0224, 0x0225}, /* ST_COARSE_INTEG_TIME */
-	},
-	.reg_addr_exposure_in_lut = {
-			{0x0E20, 0x0E21}, /* LUT_A_COARSE_INTEG_TIME */
-			{0x0E50, 0x0E51}, /* LUT_B_COARSE_INTEG_TIME */
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x3160,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, /* ANA_GAIN_GLOBAL */
-			{0x0000, 0x0000}, /*not support*/
-			{0x0216, 0x0217}, /* ST_ANA_GAIN_GLOBAL */
-	},
-	.reg_addr_ana_gain_in_lut = {
-			{0x0E22, 0x0E23}, /* LUT_A_ANA_GAIN_GLOBAL */
-			{0x0E52, 0x0E53}, /* LUT_B_ANA_GAIN_GLOBAL */
-	},
-	.reg_addr_dcg_ratio = 0x3182, /* DCGHDR_RATIO */
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-			{0x0E28, 0x0E29},  /* LUT_A_FRM_LENGTH_LINES */
-			{0x0E58, 0x0E59},  /*LUT_B_FRM_LENGTH_LINES*/
-	},
-	.reg_addr_temp_en = 0x0138, /* TEMP_SEN_CTL */
-	.reg_addr_temp_read = 0x013A, /* TEMP_SEN_OUT */
-	.reg_addr_auto_extend = 0x0350, /* FRM_LENGTH_CTL */
-	.reg_addr_frame_count = 0x0005, /* FRM_CNT */
-	.reg_addr_fast_mode = 0x3010, /* FAST_MODETRANSIT_CTL */
-	.reg_addr_fast_mode_in_lbmf = 0x31A7, /*EAEB_LUT_CONTROL */
-
-	.init_setting_table = yalamain_init_setting,
-	.init_setting_len = ARRAY_SIZE(yalamain_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xf10e5980,
-
-	.oplus_notify_chg_flag = false,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_AVDD, {2804000, 2804000}, 3000},
-	{HW_ID_AVDD1, {1804000, 1804000}, 3000},
-	{HW_ID_AFVDD, {2800000, 2800000}, 3000},
-	{HW_ID_DVDD, {1160000, 1160000}, 4000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 3000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 6000},
-	{HW_ID_RST, {1}, 4000}
-};
-
-const struct subdrv_entry yalamain_mipi_raw_entry = {
-	.name = "yalamain_mipi_raw",
-	.id = YALAMAIN_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static unsigned int read_yalamain_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != yalamain_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != yalamain_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = yalamain_eeprom_info[meta_id].start;
-	readsize = yalamain_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA0,
-	.i2c_write_id = 0xA1,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-
-static int get_eeprom_common_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, YALAMAIN_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static int yalamain_get_otp_qcom_pdaf_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_DATA_START_ADDR, otp_qcom_pdaf_data, OTP_QCOM_PDAF_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_data, sizeof(otp_qcom_pdaf_data));
-	*len = sizeof(otp_qcom_pdaf_data);
-
-	return 0;
-}
-
-static int yalamain_get_otp_qcom_pdaf_offset_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-
-	read_cmos_eeprom_p8(ctx, OTP_QCOM_PDAF_OFFSET_DATA_START_ADDR, otp_qcom_pdaf_offset_data, OTP_QCOM_PDAF_OFFSET_DATA_LENGTH);
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_qcom_pdaf_offset_data, sizeof(otp_qcom_pdaf_offset_data));
-	*len = sizeof(otp_qcom_pdaf_offset_data);
-
-	return 0;
-}
-
-#ifdef WRITE_DATA_MAX_LENGTH
-#undef WRITE_DATA_MAX_LENGTH
-#endif
-#define   WRITE_DATA_MAX_LENGTH	 (32)
-static kal_int32 table_write_eeprom_30Bytes(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-	kal_int32 ret = ERROR_NONE;
-	ret = adaptor_i2c_wr_p8(ctx->i2c_client, YALAMAIN_EEPROM_WRITE_ID >> 1,
-			addr, para, len);
-
-	return ret;
-}
-
-
-static kal_int32 write_1st_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xff35;
-	u8 flag = 0;
-
-	adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | YALAMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-
-	reg = 0x06ca;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | YALAMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x2);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, (0xB0 | YALAMAIN_EEPROM_WRITE_ID) >> 1, reg, 0x0);
-	}
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, YALAMAIN_EEPROM_WRITE_ID >> 1, reg, &flag);
-	LOG_INF("SET_SENSOR_OTP WRP: 0x%x\n", flag);
-
-	return ret;
-}
-
-static kal_int32 write_2nd_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	kal_int32 ret = ERROR_NONE;
-	kal_uint16 reg = 0xa000;
-	if (enable) {
-		adaptor_i2c_wr_u8(ctx->i2c_client, YALAMAIN_EEPROM_WRITE_ID >> 1, reg, 0x0E);
-	}
-	else {
-		adaptor_i2c_wr_u8(ctx->i2c_client, YALAMAIN_EEPROM_WRITE_ID >> 1, reg, 0x00);
-	}
-
-	return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-	u8 flag = 0;
-	int ret = 0;
-	adaptor_i2c_rd_u8(ctx->i2c_client, YALAMAIN_EEPROM_READ_ID >> 1, 0x000D, &flag);
-	if (flag == 0x01) {
-		ret = write_1st_eeprom_protect(ctx, enable);
-	} else {
-		ret = write_2nd_eeprom_protect(ctx, enable);
-	}
-	return ret;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-	ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-	kal_int32  ret = ERROR_NONE;
-	kal_uint16 data_base, data_length;
-	kal_uint32 idx, idy;
-	kal_uint8 *pData;
-	kal_uint32 checksum = 0;
-	UINT32 i = 0;
-	kal_uint16 offset = 0;
-	if(pStereodata != NULL) {
-		LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-			pStereodata->uSensorId,
-			pStereodata->uDeviceId,
-			pStereodata->baseAddr,
-			pStereodata->dataLength);
-
-		data_base = pStereodata->baseAddr;
-		data_length = pStereodata->dataLength;
-		pData = pStereodata->uData;
-		for(i = 0; i < pStereodata->dataLength; i++) {
-			checksum += pData[i];
-		}
-		pData[data_length] = 0x01;
-		pData[data_length + 1] = checksum % 255;
-		data_length = data_length + 2;
-		offset = ALIGN(data_base, WRITE_DATA_MAX_LENGTH) - data_base;
-		if (offset > data_length) {
-			offset = data_length;
-		}
-		if (((pStereodata->uSensorId == YALAMAIN_SENSOR_ID) && ((data_length - 2) == CALI_DATA_MASTER_LENGTH))
-				&& (data_base == YALAMAIN_STEREO_START_ADDR || data_base == YALAMAIN_STEREO_MT_START_ADDR
-				|| data_base == YALAMAIN_STEREO_MT_105CM_START_ADDR)) {
-			LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-			LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-			LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-			LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-			LOG_INF("write_Module_data Write end\n");
-		} else if ((pStereodata->uSensorId == YALAMAIN_SENSOR_ID) && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-				&& (data_base == YALAMAIN_AESYNC_START_ADDR)) {
-			LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-				pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-			/* close write protect */
-			write_eeprom_protect(ctx, 0);
-			msleep(6);
-			if (offset > 0) {
-				ret = table_write_eeprom_30Bytes(ctx, data_base, &pData[0], offset);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: offset\n");
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-				data_base += offset;
-				data_length -= offset;
-				pData += offset;
-			}
-			idx = data_length/WRITE_DATA_MAX_LENGTH;
-			idy = data_length%WRITE_DATA_MAX_LENGTH;
-			for (i = 0; i < idx; i++) {
-				ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*i),
-					&pData[WRITE_DATA_MAX_LENGTH*i], WRITE_DATA_MAX_LENGTH);
-				if (ret != ERROR_NONE) {
-					LOG_INF("write_eeprom error: i= %d\n", i);
-					/* open write protect */
-					write_eeprom_protect(ctx, 1);
-					msleep(6);
-					return -1;
-				}
-				msleep(6);
-			}
-			ret = table_write_eeprom_30Bytes(ctx, (data_base+WRITE_DATA_MAX_LENGTH*idx),
-				&pData[WRITE_DATA_MAX_LENGTH*idx], idy);
-			if (ret != ERROR_NONE) {
-				LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-				/* open write protect */
-				write_eeprom_protect(ctx, 1);
-				msleep(6);
-				return -1;
-			}
-			msleep(6);
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			msleep(6);
-			LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-				read_cmos_eeprom_8(ctx, YALAMAIN_AESYNC_START_ADDR),
-				read_cmos_eeprom_8(ctx, YALAMAIN_AESYNC_START_ADDR+1),
-				read_cmos_eeprom_8(ctx, YALAMAIN_AESYNC_START_ADDR+2),
-				read_cmos_eeprom_8(ctx, YALAMAIN_AESYNC_START_ADDR+3),
-				read_cmos_eeprom_8(ctx, YALAMAIN_AESYNC_START_ADDR+4),
-				read_cmos_eeprom_8(ctx, YALAMAIN_AESYNC_START_ADDR+5),
-				read_cmos_eeprom_8(ctx, YALAMAIN_AESYNC_START_ADDR+6),
-				read_cmos_eeprom_8(ctx, YALAMAIN_AESYNC_START_ADDR+7));
-			LOG_INF("AESync write_Module_data Write end\n");
-		} else {
-			LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-			return -1;
-		}
-	} else {
-		LOG_INF("yalamain write_Module_data pStereodata is null\n");
-		return -1;
-	}
-	return ret;
-}
-
-static int yalamain_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	int ret = ERROR_NONE;
-	ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-	if (ret != ERROR_NONE) {
-		*len = (u32)-1; /*write eeprom failed*/
-		LOG_INF("ret=%d\n", ret);
-	}
-	return 0;
-}
-
-static int yalamain_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_MASTER_LENGTH)
-		*len = CALI_DATA_MASTER_LENGTH;
-	LOG_INF("feature_data mode: %d", *feature_data_16);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_yalamain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_yalamain_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MW_MAIN:
-	default:
-		read_yalamain_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	}
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, YALAMAIN_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "yalamain read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "yalamain read_otp_info end\n");
-}
-
-static int yalamain_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	DRV_LOGE(ctx, "get otp data");
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, sizeof(otp_data_checksum));
-	*len = sizeof(otp_data_checksum);
-	return 0;
-}
-
-static int yalamain_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = GET_SENSOR_ID_RETRY_CNT;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	DRV_LOGE(ctx, "+\n");
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			printk("yalamain_mipi_raw i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x906) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOGE(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = GET_SENSOR_ID_RETRY_CNT;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 yalamain_feedback_awbgain[] = {
-	0x0B8E, 0x01,
-	0x0B8F, 0x00,
-	0x0B90, 0x02,
-	0x0B91, 0x28,
-	0x0B92, 0x01,
-	0x0B93, 0x77,
-	0x0B94, 0x01,
-	0x0B95, 0x00,
-};
-
-/*write AWB gain to sensor*/
-static void feedback_awbgain(struct subdrv_ctx *ctx, kal_uint32 r_gain, kal_uint32 b_gain)
-{
-	UINT32 r_gain_int = 0;
-	UINT32 b_gain_int = 0;
-
-	DRV_LOG(ctx, "feedback_awbgain r_gain: %d, b_gain: %d\n", r_gain, b_gain);
-	r_gain_int = r_gain / 512;
-	b_gain_int = b_gain / 512;
-	yalamain_feedback_awbgain[5] = r_gain_int;
-	yalamain_feedback_awbgain[7] = (r_gain - r_gain_int * 512) / 2;
-	yalamain_feedback_awbgain[9] = b_gain_int;
-	yalamain_feedback_awbgain[11] = (b_gain - b_gain_int * 512) / 2;
-	subdrv_i2c_wr_regs_u8(ctx, yalamain_feedback_awbgain,
-		ARRAY_SIZE(yalamain_feedback_awbgain));
-}
-
-static int yalamain_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-	feedback_awbgain(ctx, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B);
-	return 0;
-}
-
-static int yala_adaptor_i2c_wr_u8_u8(struct i2c_client *i2c_client, u8 addr, u8 reg, u8 val)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg;
-
-	if (i2c_client == NULL)
-		return -ENODEV;
-
-	buf[0] = reg;
-	buf[1] = val;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-	msg.len = sizeof(buf);
-
-	ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-	if (ret < 0)
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-
-	return ret;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-	int ret = -1;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	/* initail setting */
-	sensor_init(ctx);
-	ret = yala_adaptor_i2c_wr_u8_u8(ctx->i2c_client, YALAMAIN_AF_WRITE_ID >> 1, 0x02, 0x0);
-	mdelay(2);
-	DRV_LOGE(ctx, "init yalamain af before write qsc data, ret: %d\n", ret);
-
-	/*QSC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	pbuf = info[idx].preload_qsc_table;
-	size = info[idx].qsc_size;
-	addr = info[idx].sensor_reg_addr_qsc;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_u8(ctx, 0x0101, 0x00);
-			subdrv_i2c_wr_u8(ctx, 0x0B06, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0xDDA9, 0x4E);
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x01);
-			DRV_LOG(ctx, "set QSC calibration data done.");
-		} else {
-			subdrv_i2c_wr_u8(ctx, 0x3206, 0x00);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	pbuf = info[idx].preload_pdc_table;
-	size = info[idx].pdc_size;
-	addr = 0x2B00;
-	if (support) {
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size >> 1);
-			addr = 0x2C00;
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf + (size >> 1), size >> 1);
-			DRV_LOG(ctx, "set SPC data done.");
-		}
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-
-	if (temperature < 0x55)
-		temperature_convert = temperature;
-	else if (temperature < 0x80)
-		temperature_convert = 85;
-	else if (temperature < 0xED)
-		temperature_convert = -20;
-	else
-		temperature_convert = (char)temperature;
-
-	DRV_LOG(ctx, "temperature: %d degrees\n", temperature_convert);
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return (16384 - (16384 * BASEGAIN) / gain);
-}
-
-void yalamain_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u set default\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = 0;
-	}
-	DRV_LOG(ctx, "sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-		case HDR_NONE:
-		case HDR_RAW_LBMF:
-		case HDR_RAW_DCG_RAW:
-			if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-				ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min) {
-				*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-				*min_shutter = ctx->s_ctx.mode[scenario_id].multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min;
-			} else {
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-			}
-			break;
-		default:
-			*exposure_step = ctx->s_ctx.exposure_step;
-			*min_shutter = ctx->s_ctx.exposure_min;
-			break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int yalamain_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	yalamain_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static int yalamain_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	u32 exp_cnt = 0;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_NONE;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_NONE;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_NONE;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-
-	update_mode_info(ctx, scenario_id);
-
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_DCG_RAW:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			if (ctx->s_ctx.mode[scenario_id].dcg_info.dcg_gain_mode
-				== IMGSENSOR_DCG_DIRECT_MODE)
-				set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			else
-				set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-		calculate_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id);
-	}
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 24) & 0x07);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[3],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int yalamain_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-	switch (mode) {
-	case 5:
-		subdrv_i2c_wr_u8(ctx, 0x020E, 0x00); /* DIG_GAIN_GLOBAL */
-		subdrv_i2c_wr_u8(ctx, 0x0218, 0x00); /* ST_DIG_GAIN_GLOBAL */
-		/* subdrv_i2c_wr_u8(ctx, 0x3028, 0x00); */
-		subdrv_i2c_wr_u8(ctx, 0x0E24, 0x00); /* LUT_A_DIG_GAIN_GLOBAL */
-		subdrv_i2c_wr_u8(ctx, 0x0E25, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x0E54, 0x00); /* LUT_B_DIG_GAIN_GLOBAL */
-		subdrv_i2c_wr_u8(ctx, 0x0E55, 0x00);
-		break;
-	default:
-		subdrv_i2c_wr_u8(ctx, 0x0601, mode);
-		break;
-	}
-
-	if ((ctx->test_pattern) && (mode != ctx->test_pattern)) {
-		if (ctx->test_pattern == 5) {
-			subdrv_i2c_wr_u8(ctx, 0x020E, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0218, 0x01);
-			/* subdrv_i2c_wr_u8(ctx, 0x3028, 0x40); */
-			subdrv_i2c_wr_u8(ctx, 0x0E24, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x0E54, 0x01);
-		}
-		else if (mode == 0)
-			subdrv_i2c_wr_u8(ctx, 0x0601, 0x00); /* No pattern */
-	}
-
-	ctx->test_pattern = mode;
-	return ERROR_NONE;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-	if (ctx->fast_mode_on && (sof_cnt > ctx->ref_sof_cnt)) {
-		ctx->fast_mode_on = FALSE;
-		ctx->ref_sof_cnt = 0;
-		DRV_LOG(ctx, "seamless_switch disabled.");
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-		commit_i2c_buffer(ctx);
-	}
-	return 0;
-}
-
-void get_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* QSC data */
-	support = info[idx].qsc_support;
-	size = info[idx].qsc_size;
-	addr = info[idx].addr_qsc;
-	buf = info[idx].qsc_table;
-	if (support && size > 0) {
-		/* Check QSC validation */
-		if (info[idx].preload_qsc_table == NULL) {
-			info[idx].preload_qsc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_qsc_table, size)) {
-					DRV_LOGE(ctx, "preload QSC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_qsc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload QSC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "QSC data is already preloaded %u bytes", size);
-		}
-	}
-
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-	if (support && size > 0) {
-		/* Check pdc validation */
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL) {
-				if (!read_cmos_eeprom_p8(ctx, addr, info[idx].preload_pdc_table, size)) {
-					DRV_LOGE(ctx, "preload PDC data failed");
-				}
-			} else {
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			}
-			DRV_LOG(ctx, "preload PDC data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "PDC data is already preloaded %u bytes", size);
-		}
-	}
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void calculate_prsh_length_lines(struct subdrv_ctx *ctx,
-	struct mtk_hdr_ae *ae_ctrl,
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id)
-{
-	u32 ae_ctrl_cit;
-	u32 prsh_length_lc = 0;
-	u32 cit_step = 1;
-	u8 hw_fixed_value = ctx->s_ctx.seamless_switch_prsh_hw_fixed_value;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = ctx->current_scenario_id;
-	enum IMGSENSOR_HDR_MODE_ENUM hdr_mode;
-
-	if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM7) {
-		prsh_length_lc = 2000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM7 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM18) {
-		prsh_length_lc = 5000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM18 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 6000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM2 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM19) {
-		prsh_length_lc = 6000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM19 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM2) {
-		prsh_length_lc = 5000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 4000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM4 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM12) {
-		prsh_length_lc = 2000;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM12 && scenario_id == SENSOR_SCENARIO_ID_CUSTOM4) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM3) {
-		prsh_length_lc = 3600;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM3 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_CAPTURE && scenario_id == SENSOR_SCENARIO_ID_CUSTOM5) {
-		prsh_length_lc = 3500;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM5 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_CAPTURE) {
-		prsh_length_lc = 3600;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW && scenario_id == SENSOR_SCENARIO_ID_CUSTOM7) {
-		prsh_length_lc = 3200;
-	} else if (pre_seamless_scenario_id == SENSOR_SCENARIO_ID_CUSTOM7 && scenario_id == SENSOR_SCENARIO_ID_NORMAL_PREVIEW) {
-		prsh_length_lc = 2300;
-	} else {
-		prsh_length_lc = 0;
-	}
-
-
-	hdr_mode = ctx->s_ctx.mode[scenario_id].hdr_mode;
-	switch (hdr_mode) {
-	case HDR_RAW_LBMF:
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: dig_gain_lut_a = SE / dig_gain_lut_b = LE */
-			/* 3exp: dig_gain_lut_a = SE / dig_gain_lut_b = ME / dig_gain_lut_c = LE */
-			ae_ctrl_cit = ae_ctrl->exposure.me_exposure;
-			DRV_LOG_MUST(ctx, "debug se %llu le %llu, me %llu", ae_ctrl->exposure.se_exposure, ae_ctrl->exposure.le_exposure, ae_ctrl->exposure.me_exposure);
-		} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: dig_gain_lut_a = LE / dig_gain_lut_b = SE */
-			/* 3exp: dig_gain_lut_a = LE / dig_gain_lut_b = ME / dig_gain_lut_c = SE */
-			ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-			DRV_LOG_MUST(ctx, "debug le\n");
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-		break;
-	case HDR_NONE:
-	case HDR_RAW:
-	case HDR_CAMSV:
-	case HDR_RAW_ZHDR:
-	case HDR_MultiCAMSV:
-	case HDR_RAW_STAGGER:
-	case HDR_RAW_DCG_RAW:
-	case HDR_RAW_DCG_COMPOSE:
-	default:
-		ae_ctrl_cit = ae_ctrl->exposure.le_exposure;
-		break;
-	}
-	ae_ctrl_cit = max(ae_ctrl_cit, ctx->s_ctx.exposure_min);
-	ae_ctrl_cit = min(ae_ctrl_cit, ctx->s_ctx.exposure_max);
-	cit_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step ?: 1;
-	if (cit_step) {
-		ae_ctrl_cit = round_up(ae_ctrl_cit, cit_step);
-		prsh_length_lc = round_up(prsh_length_lc, cit_step);
-	}
-	DRV_LOG_MUST(ctx, "prsh_length_lc %u ae_ctrl_cit %u fine_integ_line %d\n",
-					prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.mode[scenario_id].fine_integ_line);
-	if(hdr_mode != HDR_RAW_LBMF && ctx->s_ctx.mode[scenario_id].fine_integ_line != 0) {
-		ae_ctrl_cit = ae_ctrl_cit / 1000;
-	}
-	prsh_length_lc = (prsh_length_lc > (ae_ctrl_cit + hw_fixed_value)) ? prsh_length_lc : 0;
-	if (prsh_length_lc < (ae_ctrl_cit + hw_fixed_value)) {
-		DRV_LOG_MUST(ctx,
-			"pre-shutter no need: prsh_length_lc(%u) < (ae_ctrl_cit(%u(max=%u,min=%u)) + hw_fixed_value(%u))\n",
-			prsh_length_lc, ae_ctrl_cit, ctx->s_ctx.exposure_max, ctx->s_ctx.exposure_min, hw_fixed_value);
-		ctx->s_ctx.seamless_switch_prsh_length_lc = 0;
-		return;
-	}
-
-	ctx->s_ctx.seamless_switch_prsh_length_lc = prsh_length_lc;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamainmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamainmipiraw_Sensor.h
deleted file mode 100755
index d11c49f1..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/yalamain_mipi_raw/yalamainmipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2023 OPLUS. All rights reserved.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     yalamainmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _YALAMAINMIPI_SENSOR_H
-#define _YALAMAINMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "yalamain_ana_gain_table.h"
-#include "yalamain_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#endif /* _YALAMAINMIPI_SENSOR_H */
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/Makefile
deleted file mode 100755
index 9d10c2fd..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2023 OPLUS Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/zhuquec1frontmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/0325_C1_front.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/0325_C1_front.xlsx
deleted file mode 100755
index 061ead05..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/0325_C1_front.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/AON_mode_20240520.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/AON_mode_20240520.xlsx
deleted file mode 100755
index e9e91231..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/AON_mode_20240520.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/C1_long-init_front_00404.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/C1_long-init_front_00404.txt
deleted file mode 100755
index 406b37e8..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/C1_long-init_front_00404.txt
+++ /dev/null
@@ -1,6994 +0,0 @@
-FCFC	4000
-0000	0008
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0101
-FCFC	2001
-3C60	0000
-FCFC	2002
-8468	1773
-846A	02FC
-846C	E702
-846E	8305
-8470	3784
-8472	0224
-8474	1304
-8476	C449
-8478	5C54
-847A	8297
-847C	1C58
-847E	8297
-8480	5C58
-8482	8297
-8484	1C5C
-8486	8297
-8488	5C5C
-848A	8297
-848C	3C40
-848E	8297
-8490	1773
-8492	02FC
-8494	6700
-8496	4305
-8498	0000
-849A	0000
-8510	8280
-8512	0100
-8514	1773
-8516	02FC
-8518	E702
-851A	C3FA
-851C	2A84
-851E	0145
-8520	97A0
-8522	01FC
-8524	E780
-8526	808A
-8528	1335
-852A	1400
-852C	9790
-852E	01FC
-8530	E780
-8532	807D
-8534	1773
-8536	02FC
-8538	6700
-853A	03FB
-853C	1773
-853E	02FC
-8540	E702
-8542	A3F6
-8544	B7E7
-8546	0124
-8548	9387
-854A	0787
-854C	3794
-854E	0124
-8550	1304
-8552	0453
-8554	83A9
-8556	8700
-8558	03A9
-855A	C700
-855C	8327
-855E	841D
-8560	0146
-8562	CE85
-8564	AA84
-8566	4A85
-8568	032A
-856A	0464
-856C	2320
-856E	F464
-8570	9760
-8572	01FC
-8574	E780
-8576	404D
-8578	2685
-857A	9790
-857C	01FC
-857E	E780
-8580	A078
-8582	0546
-8584	CE85
-8586	4A85
-8588	9760
-858A	01FC
-858C	E780
-858E	C04B
-8590	8567
-8592	A297
-8594	83A6
-8596	47B2
-8598	03C7
-859A	E7B6
-859C	2320
-859E	4465
-85A0	8947
-85A2	6386
-85A4	F600
-85A6	1773
-85A8	02FC
-85AA	6700
-85AC	43F3
-85AE	1377
-85B0	F70F
-85B2	8547
-85B4	E319
-85B6	F7FE
-85B8	3724
-85BA	0024
-85BC	1304
-85BE	0433
-85C0	97A0
-85C2	01FC
-85C4	E780
-85C6	8091
-85C8	65FD
-85CA	8347
-85CC	F419
-85CE	EDFB
-85D0	1773
-85D2	02FC
-85D4	6700
-85D6	A3F0
-85D8	91C1
-85DA	8280
-85DC	1773
-85DE	02FC
-85E0	E702
-85E2	43EE
-85E4	1334
-85E6	1500
-85E8	1965
-85EA	2286
-85EC	9145
-85EE	1305
-85F0	0518
-85F2	9790
-85F4	00FC
-85F6	E780
-85F8	2064
-85FA	1315
-85FC	0401
-85FE	4181
-8600	B787
-8602	0040
-8604	2399
-8606	A710
-8608	1773
-860A	02FC
-860C	6700
-860E	C3ED
-8610	1773
-8612	02FC
-8614	E702
-8616	03EB
-8618	B7E7
-861A	0124
-861C	83A7
-861E	4758
-8620	0547
-8622	F917
-8624	6379
-8626	F704
-8628	4165
-862A	1166
-862C	9165
-862E	1305
-8630	25F5
-8632	9790
-8634	00FC
-8636	E780
-8638	A063
-863A	B7E7
-863C	0124
-863E	9387
-8640	0787
-8642	03A4
-8644	C708
-8646	83A4
-8648	8708
-864A	0146
-864C	2285
-864E	A685
-8650	9760
-8652	01FC
-8654	E780
-8656	403F
-8658	9700
-865A	02FC
-865C	E780
-865E	40A2
-8660	0546
-8662	A685
-8664	2285
-8666	9760
-8668	01FC
-866A	E780
-866C	E03D
-866E	1773
-8670	02FC
-8672	6700
-8674	63E7
-8676	4165
-8678	0146
-867A	9165
-867C	1305
-867E	25F5
-8680	9790
-8682	00FC
-8684	E780
-8686	C05E
-8688	4DBF
-868A	0100
-868C	9947
-868E	630E
-8690	F50C
-8692	0548
-8694	6304
-8696	050B
-8698	3303
-869A	B500
-869C	014F
-869E	63F9
-86A0	650A
-86A2	B7E8
-86A4	0124
-86A6	9388
-86A8	084C
-86AA	03A5
-86AC	480C
-86AE	0D68
-86B0	1308
-86B2	88DC
-86B4	4295
-86B6	B78E
-86B8	0024
-86BA	0605
-86BC	9387
-86BE	552A
-86C0	938E
-86C2	0E93
-86C4	8E07
-86C6	AA9E
-86C8	0565
-86CA	83DF
-86CC	480E
-86CE	C697
-86D0	0607
-86D2	AA98
-86D4	0355
-86D6	0600
-86D8	03D8
-86DA	0600
-86DC	631B
-86DE	0F06
-86E0	6309
-86E2	0507
-86E4	039E
-86E6	2E01
-86E8	03D8
-86EA	EE01
-86EC	3305
-86EE	C541
-86F0	2A98
-86F2	88C3
-86F4	23A2
-86F6	0701
-86F8	6346
-86FA	0506
-86FC	6345
-86FE	F501
-8700	3305
-8702	F541
-8704	88C3
-8706	634B
-8708	0804
-870A	6346
-870C	F801
-870E	3308
-8710	F841
-8712	23A2
-8714	0701
-8716	03AE
-8718	0700
-871A	635A
-871C	0E01
-871E	03D5
-8720	0859
-8722	0505
-8724	3305
-8726	C541
-8728	4295
-872A	2398
-872C	A858
-872E	8505
-8730	3A96
-8732	BA96
-8734	A107
-8736	E3EF
-8738	65F8
-873A	8280
-873C	1383
-873E	1500
-8740	6388
-8742	F504
-8744	B7D7
-8746	0024
-8748	03DF
-874A	A74E
-874C	E3EB
-874E	65F4
-8750	8280
-8752	23A0
-8754	0700
-8756	23A2
-8758	0700
-875A	D1BF
-875C	7E98
-875E	23A2
-8760	0701
-8762	55BF
-8764	7E95
-8766	88C3
-8768	79BF
-876A	81ED
-876C	B7F6
-876E	0124
-8770	37F6
-8772	0124
-8774	0943
-8776	9386
-8778	E649
-877A	1306
-877C	C649
-877E	014F
-8780	0DB7
-8782	9D47
-8784	6381
-8786	F502
-8788	1383
-878A	6500
-878C	014F
-878E	01BF
-8790	B7F6
-8792	0124
-8794	37F6
-8796	0124
-8798	0D43
-879A	9386
-879C	664A
-879E	1306
-87A0	464A
-87A2	8945
-87A4	45B7
-87A6	B7F6
-87A8	0124
-87AA	37F6
-87AC	0124
-87AE	1543
-87B0	9386
-87B2	A64A
-87B4	1306
-87B6	864A
-87B8	8D45
-87BA	014F
-87BC	DDB5
-87BE	0100
-87C0	1773
-87C2	02FC
-87C4	E702
-87C6	63CE
-87C8	AA89
-87CA	2E84
-87CC	9790
-87CE	FFFB
-87D0	E780
-87D2	C011
-87D4	01C9
-87D6	B7A7
-87D8	0124
-87DA	83C7
-87DC	370A
-87DE	0547
-87E0	6384
-87E2	E704
-87E4	B7E7
-87E6	0124
-87E8	9387
-87EA	0787
-87EC	03A9
-87EE	870A
-87F0	83A4
-87F2	C70A
-87F4	0146
-87F6	CA85
-87F8	2685
-87FA	9760
-87FC	01FC
-87FE	E780
-8800	A024
-8802	A285
-8804	4E85
-8806	97C0
-8808	01FC
-880A	E780
-880C	A0E1
-880E	2A84
-8810	0546
-8812	CA85
-8814	2685
-8816	9760
-8818	01FC
-881A	E780
-881C	E022
-881E	2285
-8820	1773
-8822	02FC
-8824	6700
-8826	A3CB
-8828	3787
-882A	0224
-882C	0347
-882E	B74A
-8830	E31A
-8832	F7FA
-8834	B7F7
-8836	0124
-8838	03A4
-883A	87CA
-883C	CDB7
-883E	0100
-8840	1773
-8842	02FC
-8844	E702
-8846	83C5
-8848	5D71
-884A	AA8A
-884C	2E8B
-884E	B28B
-8850	3684
-8852	BA84
-8854	3E89
-8856	C289
-8858	468A
-885A	97A0
-885C	FFFB
-885E	E780
-8860	2097
-8862	01CD
-8864	B797
-8866	0124
-8868	0567
-886A	9387
-886C	0753
-886E	BA97
-8870	83C7
-8872	37B7
-8874	8546
-8876	6383
-8878	D70A
-887A	37E3
-887C	0124
-887E	1303
-8880	0387
-8882	832C
-8884	030B
-8886	032C
-8888	430B
-888A	0146
-888C	E685
-888E	6285
-8890	9760
-8892	01FC
-8894	E780
-8896	401B
-8898	CA57
-889A	2E43
-889C	5E86
-889E	3ED8
-88A0	BA57
-88A2	9AC4
-88A4	1E43
-88A6	3ED6
-88A8	AA57
-88AA	9AC2
-88AC	0343
-88AE	010C
-88B0	3ED4
-88B2	9A57
-88B4	9AC0
-88B6	DA85
-88B8	3ED2
-88BA	8A57
-88BC	5685
-88BE	D288
-88C0	3ED0
-88C2	FA47
-88C4	4E88
-88C6	2687
-88C8	3ECE
-88CA	EA47
-88CC	A286
-88CE	3ECC
-88D0	DA47
-88D2	3ECA
-88D4	CA47
-88D6	3EC8
-88D8	BA47
-88DA	3EC6
-88DC	AA47
-88DE	3EC4
-88E0	8357
-88E2	4108
-88E4	3EC2
-88E6	8A47
-88E8	3EC0
-88EA	0343
-88EC	C10B
-88EE	CA87
-88F0	1ADE
-88F2	0343
-88F4	810B
-88F6	1ADC
-88F8	5A53
-88FA	1ADA
-88FC	97D0
-88FE	01FC
-8900	E780
-8902	402B
-8904	0546
-8906	E685
-8908	6285
-890A	9760
-890C	01FC
-890E	E780
-8910	A013
-8912	6161
-8914	1773
-8916	02FC
-8918	6700
-891A	C3BB
-891C	B786
-891E	0224
-8920	9386
-8922	C649
-8924	03C6
-8926	0601
-8928	6319
-892A	F600
-892C	B7E7
-892E	0124
-8930	9387
-8932	074C
-8934	BA97
-8936	03D4
-8938	2780
-893A	03C7
-893C	F600
-893E	8547
-8940	E31D
-8942	F7F2
-8944	B7F7
-8946	0124
-8948	83A4
-894A	07CB
-894C	3DB7
-894E	0100
-8950	1773
-8952	02FC
-8954	E702
-8956	63B5
-8958	B7A7
-895A	0124
-895C	83C7
-895E	3794
-8960	AA84
-8962	2E89
-8964	B289
-8966	C1CF
-8968	8052
-896A	03AA
-896C	0600
-896E	97A0
-8970	01FC
-8972	E780
-8974	20ED
-8976	B307
-8978	8500
-897A	5295
-897C	3387
-897E	A700
-8980	6366
-8982	9700
-8984	13D7
-8986	1400
-8988	6366
-898A	A704
-898C	B7E6
-898E	0024
-8990	9386
-8992	0682
-8994	03C7
-8996	0609
-8998	37D6
-899A	0024
-899C	0346
-899E	466D
-89A0	3337
-89A2	E000
-89A4	3307
-89A6	E040
-89A8	8545
-89AA	F98F
-89AC	6306
-89AE	B602
-89B0	03C7
-89B2	1609
-89B4	0145
-89B6	11EB
-89B8	83A7
-89BA	C608
-89BC	9D8C
-89BE	3385
-89C0	A440
-89C2	1773
-89C4	02FC
-89C6	6700
-89C8	83B1
-89CA	3E85
-89CC	E3F6
-89CE	27FF
-89D0	4A85
-89D2	DDB7
-89D4	BA87
-89D6	5DBF
-89D8	03C7
-89DA	2609
-89DC	15EF
-89DE	03A5
-89E0	C608
-89E2	3385
-89E4	A440
-89E6	6373
-89E8	3901
-89EA	4E89
-89EC	6373
-89EE	F900
-89F0	3E89
-89F2	3305
-89F4	2541
-89F6	1773
-89F8	02FC
-89FA	6700
-89FC	43AE
-89FE	0545
-8A00	97D0
-8A02	01FC
-8A04	E780
-8A06	4057
-8A08	2A84
-8A0A	0145
-8A0C	97D0
-8A0E	01FC
-8A10	E780
-8A12	8056
-8A14	2A8A
-8A16	A1BF
-8A18	630F
-8A1A	C700
-8A1C	8947
-8A1E	0145
-8A20	E311
-8A22	F7FA
-8A24	3305
-8A26	3901
-8A28	97D0
-8A2A	00FC
-8A2C	E780
-8A2E	C0E0
-8A30	3385
-8A32	A440
-8A34	79B7
-8A36	03A5
-8A38	C608
-8A3A	4E99
-8A3C	3385
-8A3E	A440
-8A40	75B7
-8A42	0100
-8A44	1773
-8A46	02FC
-8A48	E702
-8A4A	23A6
-8A4C	B7E7
-8A4E	0124
-8A50	9387
-8A52	0787
-8A54	03A9
-8A56	870B
-8A58	83A4
-8A5A	C70B
-8A5C	2A84
-8A5E	CA85
-8A60	0146
-8A62	2685
-8A64	9760
-8A66	01FC
-8A68	E780
-8A6A	00FE
-8A6C	2285
-8A6E	97D0
-8A70	00FC
-8A72	E780
-8A74	201E
-8A76	CA85
-8A78	0546
-8A7A	2685
-8A7C	9760
-8A7E	01FC
-8A80	E780
-8A82	80FC
-8A84	97A0
-8A86	01FC
-8A88	E780
-8A8A	C0DB
-8A8C	B7A7
-8A8E	0124
-8A90	03C6
-8A92	3794
-8A94	8329
-8A96	0404
-8A98	0329
-8A9A	C403
-8A9C	AA84
-8A9E	8145
-8AA0	2285
-8AA2	97D0
-8AA4	00FC
-8AA6	E780
-8AA8	20FF
-8AAA	2A86
-8AAC	A686
-8AAE	CE85
-8AB0	4A85
-8AB2	97D0
-8AB4	00FC
-8AB6	E780
-8AB8	60EC
-8ABA	1840
-8ABC	1C50
-8ABE	9396
-8AC0	1400
-8AC2	BA97
-8AC4	B697
-8AC6	637B
-8AC8	F500
-8ACA	9357
-8ACC	1500
-8ACE	2697
-8AD0	63F6
-8AD2	E700
-8AD4	3385
-8AD6	9740
-8AD8	08D0
-8ADA	08C0
-8ADC	1773
-8ADE	02FC
-8AE0	6700
-8AE2	E39F
-8AE4	51E9
-8AE6	1773
-8AE8	02FC
-8AEA	E702
-8AEC	A39D
-8AEE	B707
-8AF0	0224
-8AF2	83A7
-8AF4	479C
-8AF6	D5C3
-8AF8	9790
-8AFA	FFFB
-8AFC	E780
-8AFE	00E2
-8B00	15ED
-8B02	9790
-8B04	FFFB
-8B06	E780
-8B08	60DE
-8B0A	0DC9
-8B0C	B7A7
-8B0E	0224
-8B10	83A7
-8B12	4754
-8B14	3707
-8B16	0040
-8B18	7907
-8B1A	BA97
-8B1C	2390
-8B1E	0700
-8B20	B787
-8B22	0224
-8B24	9387
-8B26	C749
-8B28	238A
-8B2A	0704
-8B2C	A38A
-8B2E	0704
-8B30	23A8
-8B32	0704
-8B34	1773
-8B36	02FC
-8B38	6700
-8B3A	039B
-8B3C	9790
-8B3E	FFFB
-8B40	E780
-8B42	8061
-8B44	71FD
-8B46	B7A7
-8B48	0224
-8B4A	83A7
-8B4C	4754
-8B4E	3707
-8B50	0040
-8B52	7907
-8B54	BA97
-8B56	0547
-8B58	2390
-8B5A	E700
-8B5C	B787
-8B5E	0224
-8B60	9387
-8B62	C749
-8B64	238A
-8B66	0704
-8B68	A38A
-8B6A	0704
-8B6C	23A8
-8B6E	0704
-8B70	1773
-8B72	02FC
-8B74	6700
-8B76	4397
-8B78	A547
-8B7A	631F
-8B7C	F500
-8B7E	B797
-8B80	0124
-8B82	9387
-8B84	0753
-8B86	23AE
-8B88	074E
-8B8A	23A0
-8B8C	0750
-8B8E	B7D7
-8B90	0124
-8B92	23A0
-8B94	07F2
-8B96	8280
-8B98	8280
-8B9A	4165
-8B9C	1166
-8B9E	9165
-8BA0	1305
-8BA2	25F5
-8BA4	9790
-8BA6	00FC
-8BA8	E780
-8BAA	800C
-8BAC	9790
-8BAE	FFFB
-8BB0	E780
-8BB2	C0D6
-8BB4	41F5
-8BB6	B1B7
-8BB8	9147
-8BBA	6303
-8BBC	F500
-8BBE	8280
-8BC0	1773
-8BC2	02FC
-8BC4	E702
-8BC6	638E
-8BC8	03D6
-8BCA	E503
-8BCC	83D6
-8BCE	8503
-8BD0	03D7
-8BD2	A503
-8BD4	83D7
-8BD6	C503
-8BD8	B386
-8BDA	C602
-8BDC	2E84
-8BDE	B785
-8BE0	0224
-8BE2	03C5
-8BE4	454C
-8BE6	8545
-8BE8	3307
-8BEA	C702
-8BEC	A186
-8BEE	9394
-8BF0	0601
-8BF2	C180
-8BF4	B387
-8BF6	C702
-8BF8	2187
-8BFA	9319
-8BFC	0701
-8BFE	93D9
-8C00	0901
-8C02	A187
-8C04	1399
-8C06	0701
-8C08	1359
-8C0A	0901
-8C0C	6300
-8C0E	B506
-8C10	9790
-8C12	FFFB
-8C14	E780
-8C16	80CC
-8C18	69C5
-8C1A	B7E7
-8C1C	0024
-8C1E	9387
-8C20	0793
-8C22	03C7
-8C24	37EE
-8C26	8546
-8C28	6301
-8C2A	D702
-8C2C	03C7
-8C2E	97EE
-8C30	B7C7
-8C32	0040
-8C34	2393
-8C36	9720
-8C38	09C7
-8C3A	2398
-8C3C	9720
-8C3E	2399
-8C40	9720
-8C42	1773
-8C44	02FC
-8C46	6700
-8C48	8389
-8C4A	B7F6
-8C4C	0124
-8C4E	83C6
-8C50	46EF
-8C52	638D
-8C54	E60C
-8C56	0947
-8C58	E39A
-8C5A	E6FC
-8C5C	03C7
-8C5E	67EE
-8C60	3387
-8C62	E402
-8C64	9314
-8C66	0701
-8C68	C180
-8C6A	C9B7
-8C6C	9307
-8C6E	0020
-8C70	63F7
-8C72	9700
-8C74	9396
-8C76	1400
-8C78	9394
-8C7A	0601
-8C7C	C180
-8C7E	9307
-8C80	0020
-8C82	63F8
-8C84	3701
-8C86	1397
-8C88	1900
-8C8A	9319
-8C8C	0701
-8C8E	93D9
-8C90	0901
-8C92	9307
-8C94	0020
-8C96	63F8
-8C98	2701
-8C9A	9317
-8C9C	1900
-8C9E	1399
-8CA0	0701
-8CA2	1359
-8CA4	0901
-8CA6	9307
-8CA8	F07F
-8CAA	63F7
-8CAC	9700
-8CAE	9386
-8CB0	F4FF
-8CB2	9394
-8CB4	0601
-8CB6	C180
-8CB8	9307
-8CBA	F07F
-8CBC	63F8
-8CBE	3701
-8CC0	1387
-8CC2	F9FF
-8CC4	9319
-8CC6	0701
-8CC8	93D9
-8CCA	0901
-8CCC	9307
-8CCE	F07F
-8CD0	E3F0
-8CD2	27F5
-8CD4	9307
-8CD6	F9FF
-8CD8	1399
-8CDA	0701
-8CDC	1359
-8CDE	0901
-8CE0	05BF
-8CE2	9790
-8CE4	FFFB
-8CE6	E780
-8CE8	20C4
-8CEA	05F9
-8CEC	9790
-8CEE	FFFB
-8CF0	E780
-8CF2	C0BF
-8CF4	21C5
-8CF6	9790
-8CF8	FFFB
-8CFA	E780
-8CFC	20C1
-8CFE	19C5
-8D00	B7C7
-8D02	0024
-8D04	83C7
-8D06	57EF
-8D08	91C3
-8D0A	2689
-8D0C	B7C7
-8D0E	0040
-8D10	3767
-8D12	0124
-8D14	0327
-8D16	8746
-8D18	2393
-8D1A	3721
-8D1C	2398
-8D1E	2721
-8D20	2399
-8D22	9720
-8D24	A285
-8D26	0D45
-8D28	0297
-8D2A	21BF
-8D2C	03C7
-8D2E	47EE
-8D30	3387
-8D32	E402
-8D34	9314
-8D36	0701
-8D38	C180
-8D3A	CDBD
-8D3C	9790
-8D3E	FFFB
-8D40	E780
-8D42	80BF
-8D44	E30F
-8D46	05EE
-8D48	B7C7
-8D4A	0040
-8D4C	2398
-8D4E	2727
-8D50	2393
-8D52	9720
-8D54	FDB5
-8D56	0100
-8D58	A547
-8D5A	6303
-8D5C	F504
-8D5E	BD47
-8D60	6303
-8D62	F500
-8D64	8280
-8D66	1763
-8D68	02FC
-8D6A	E702
-8D6C	A375
-8D6E	9790
-8D70	FFFB
-8D72	E780
-8D74	E037
-8D76	29C1
-8D78	9790
-8D7A	FFFB
-8D7C	E780
-8D7E	C03D
-8D80	01ED
-8D82	B7A7
-8D84	0224
-8D86	83A7
-8D88	4754
-8D8A	3707
-8D8C	0040
-8D8E	7907
-8D90	BA97
-8D92	0547
-8D94	2390
-8D96	E700
-8D98	1763
-8D9A	02FC
-8D9C	6700
-8D9E	C374
-8DA0	B7A7
-8DA2	0124
-8DA4	9387
-8DA6	0753
-8DA8	0947
-8DAA	2395
-8DAC	07B6
-8DAE	2394
-8DB0	07B6
-8DB2	23A0
-8DB4	E7B2
-8DB6	8280
-8DB8	97A0
-8DBA	01FC
-8DBC	E780
-8DBE	404F
-8DC0	65BF
-8DC2	0100
-8DC4	1763
-8DC6	02FC
-8DC8	E702
-8DCA	C36F
-8DCC	3724
-8DCE	0024
-8DD0	1304
-8DD2	0433
-8DD4	9790
-8DD6	01FC
-8DD8	E780
-8DDA	4010
-8DDC	65FD
-8DDE	8347
-8DE0	F419
-8DE2	EDFB
-8DE4	B7A7
-8DE6	0124
-8DE8	0D47
-8DEA	23AA
-8DEC	E704
-8DEE	9790
-8DF0	FFFB
-8DF2	E780
-8DF4	6036
-8DF6	01ED
-8DF8	B7A7
-8DFA	0224
-8DFC	83A7
-8DFE	4754
-8E00	3707
-8E02	0040
-8E04	7907
-8E06	BA97
-8E08	0547
-8E0A	2390
-8E0C	E700
-8E0E	B7A7
-8E10	0224
-8E12	83A7
-8E14	0754
-8E16	0945
-8E18	8297
-8E1A	9740
-8E1C	01FC
-8E1E	E780
-8E20	200A
-8E22	0545
-8E24	9790
-8E26	01FC
-8E28	E780
-8E2A	40FA
-8E2C	1763
-8E2E	02FC
-8E30	6700
-8E32	836B
-8E34	1763
-8E36	02FC
-8E38	E702
-8E3A	C368
-8E3C	3734
-8E3E	0124
-8E40	9790
-8E42	FFFB
-8E44	E780
-8E46	00A5
-8E48	1304
-8E4A	0495
-8E4C	2302
-8E4E	A4BE
-8E50	9790
-8E52	FFFB
-8E54	E780
-8E56	C0A4
-8E58	A302
-8E5A	A4BE
-8E5C	97C0
-8E5E	FEFB
-8E60	E780
-8E62	80BC
-8E64	B7F7
-8E66	0024
-8E68	9387
-8E6A	0737
-8E6C	B776
-8E6E	0224
-8E70	83D8
-8E72	0709
-8E74	37E7
-8E76	0124
-8E78	238C
-8E7A	0690
-8E7C	C166
-8E7E	1307
-8E80	074C
-8E82	FD16
-8E84	0358
-8E86	670E
-8E88	0355
-8E8A	A70E
-8E8C	8355
-8E8E	870E
-8E90	0356
-8E92	C70E
-8E94	6383
-8E96	D800
-8E98	4688
-8E9A	83D6
-8E9C	2709
-8E9E	4167
-8EA0	7D17
-8EA2	6383
-8EA4	E600
-8EA6	3685
-8EA8	83D6
-8EAA	4709
-8EAC	4167
-8EAE	7D17
-8EB0	6383
-8EB2	E600
-8EB4	B685
-8EB6	03D7
-8EB8	6709
-8EBA	C167
-8EBC	FD17
-8EBE	6303
-8EC0	F700
-8EC2	3A86
-8EC4	B7C7
-8EC6	0040
-8EC8	2398
-8ECA	07C1
-8ECC	2399
-8ECE	A7C0
-8ED0	239A
-8ED2	B7C0
-8ED4	239B
-8ED6	C7C0
-8ED8	1763
-8EDA	02FC
-8EDC	6700
-8EDE	C360
-8EE0	1763
-8EE2	02FC
-8EE4	E702
-8EE6	835B
-8EE8	B797
-8EEA	0124
-8EEC	9387
-8EEE	0753
-8EF0	03C7
-8EF2	D71B
-8EF4	835A
-8EF6	E60C
-8EF8	035A
-8EFA	060D
-8EFC	8359
-8EFE	260D
-8F00	0359
-8F02	460D
-8F04	3284
-8F06	AA84
-8F08	2E8B
-8F0A	B68B
-8F0C	11C7
-8F0E	0567
-8F10	BA97
-8F12	83C7
-8F14	F78E
-8F16	D9EB
-8F18	1387
-8F1A	8402
-8F1C	9386
-8F1E	8400
-8F20	D687
-8F22	6394
-8F24	0A00
-8F26	8347
-8F28	2700
-8F2A	2317
-8F2C	F40C
-8F2E	D287
-8F30	6314
-8F32	0A00
-8F34	8347
-8F36	0700
-8F38	2318
-8F3A	F40C
-8F3C	CE87
-8F3E	6394
-8F40	0900
-8F42	83C7
-8F44	0600
-8F46	2319
-8F48	F40C
-8F4A	4A87
-8F4C	6314
-8F4E	0900
-8F50	03C7
-8F52	4600
-8F54	B7E7
-8F56	0124
-8F58	9387
-8F5A	0787
-8F5C	83AC
-8F5E	8709
-8F60	03AC
-8F62	C709
-8F64	231A
-8F66	E40C
-8F68	E685
-8F6A	6285
-8F6C	0146
-8F6E	9760
-8F70	01FC
-8F72	E780
-8F74	60AD
-8F76	DE86
-8F78	2286
-8F7A	DA85
-8F7C	2685
-8F7E	9770
-8F80	00FC
-8F82	E780
-8F84	2079
-8F86	0546
-8F88	E685
-8F8A	6285
-8F8C	9760
-8F8E	01FC
-8F90	E780
-8F92	80AB
-8F94	2317
-8F96	540D
-8F98	2318
-8F9A	440D
-8F9C	2319
-8F9E	340D
-8FA0	231A
-8FA2	240D
-8FA4	1763
-8FA6	02FC
-8FA8	6700
-8FAA	C352
-8FAC	1307
-8FAE	5503
-8FB0	9306
-8FB2	8501
-8FB4	B5B7
-8FB6	0100
-8FB8	1763
-8FBA	02FC
-8FBC	E702
-8FBE	8350
-8FC0	9790
-8FC2	FFFB
-8FC4	E780
-8FC6	8092
-8FC8	11C5
-8FCA	9790
-8FCC	FFFB
-8FCE	E780
-8FD0	E094
-8FD2	0DCD
-8FD4	B7E7
-8FD6	0124
-8FD8	9387
-8FDA	0787
-8FDC	8457
-8FDE	C057
-8FE0	0146
-8FE2	A685
-8FE4	2285
-8FE6	9760
-8FE8	01FC
-8FEA	E780
-8FEC	E0A5
-8FEE	9780
-8FF0	00FC
-8FF2	E780
-8FF4	A027
-8FF6	0546
-8FF8	A685
-8FFA	2285
-8FFC	9760
-8FFE	01FC
-9000	E780
-9002	80A4
-9004	1763
-9006	02FC
-9008	6700
-900A	034E
-900C	B7A7
-900E	0124
-9010	9387
-9012	0753
-9014	83A7
-9016	47B2
-9018	D5DF
-901A	EDB7
-901C	8547
-901E	6303
-9020	F500
-9022	8280
-9024	1763
-9026	02FC
-9028	E702
-902A	C349
-902C	9790
-902E	FFFB
-9030	E780
-9032	C08A
-9034	0DC9
-9036	B787
-9038	0224
-903A	9387
-903C	C749
-903E	83C5
-9040	A700
-9042	03C6
-9044	B700
-9046	83C6
-9048	C700
-904A	03C7
-904C	D700
-904E	B7F7
-9050	0124
-9052	9387
-9054	074C
-9056	238C
-9058	B7E8
-905A	A38C
-905C	C7E8
-905E	A38D
-9060	D7E8
-9062	238E
-9064	E7E8
-9066	1763
-9068	02FC
-906A	6700
-906C	E347
-906E	0100
-9070	B787
-9072	0224
-9074	9387
-9076	C749
-9078	03DE
-907A	2700
-907C	03D3
-907E	4700
-9080	83C8
-9082	6700
-9084	03C8
-9086	7700
-9088	03C5
-908A	8700
-908C	83C5
-908E	9700
-9090	37A7
-9092	0224
-9094	B787
-9096	0024
-9098	9387
-909A	0793
-909C	0326
-909E	0754
-90A0	9966
-90A2	37E7
-90A4	0024
-90A6	1307
-90A8	0782
-90AA	BE96
-90AC	2398
-90AE	C709
-90B0	2399
-90B2	6708
-90B4	B7F7
-90B6	0024
-90B8	230D
-90BA	A706
-90BC	2389
-90BE	1737
-90C0	2306
-90C2	0703
-90C4	2382
-90C6	B6DA
-90C8	0145
-90CA	0286
-90CC	1763
-90CE	02FC
-90D0	E702
-90D2	A33D
-90D4	B787
-90D6	0224
-90D8	83D7
-90DA	C749
-90DC	2A84
-90DE	AE84
-90E0	8DC3
-90E2	19E9
-90E4	B7A7
-90E6	0124
-90E8	9387
-90EA	0753
-90EC	03C7
-90EE	07D0
-90F0	83C7
-90F2	17D0
-90F4	6307
-90F6	F700
-90F8	A53F
-90FA	97A0
-90FC	01FC
-90FE	E780
-9100	6028
-9102	B7E7
-9104	0124
-9106	9387
-9108	0787
-910A	83A9
-910C	0702
-910E	03A9
-9110	4702
-9112	0146
-9114	CE85
-9116	4A85
-9118	9760
-911A	01FC
-911C	E780
-911E	C092
-9120	A685
-9122	2285
-9124	97E0
-9126	00FC
-9128	E780
-912A	4062
-912C	2A84
-912E	0546
-9130	CE85
-9132	4A85
-9134	9760
-9136	01FC
-9138	E780
-913A	0091
-913C	B7A7
-913E	0224
-9140	83A7
-9142	0754
-9144	0545
-9146	8297
-9148	2285
-914A	1763
-914C	02FC
-914E	6700
-9150	0339
-9152	0100
-9154	1763
-9156	02FC
-9158	E702
-915A	2335
-915C	B7A7
-915E	0124
-9160	83C7
-9162	2794
-9164	2A84
-9166	AE84
-9168	3289
-916A	B1E3
-916C	B7E7
-916E	0124
-9170	9387
-9172	0787
-9174	03AA
-9176	0703
-9178	83A9
-917A	4703
-917C	0146
-917E	D285
-9180	4E85
-9182	9760
-9184	01FC
-9186	E780
-9188	208C
-918A	4A86
-918C	A685
-918E	2285
-9190	9770
-9192	00FC
-9194	E780
-9196	80D5
-9198	0546
-919A	D285
-919C	4E85
-919E	9760
-91A0	01FC
-91A2	E780
-91A4	608A
-91A6	1763
-91A8	02FC
-91AA	6700
-91AC	4333
-91AE	9780
-91B0	00FC
-91B2	E780
-91B4	A03F
-91B6	5DBF
-91B8	1763
-91BA	02FC
-91BC	E702
-91BE	8330
-91C0	9D47
-91C2	2A84
-91C4	6306
-91C6	F508
-91C8	8544
-91CA	6304
-91CC	9504
-91CE	9147
-91D0	6308
-91D2	F512
-91D4	31ED
-91D6	9790
-91D8	FFFB
-91DA	E780
-91DC	E0FA
-91DE	55C1
-91E0	9790
-91E2	FFFB
-91E4	E780
-91E6	00F6
-91E8	630F
-91EA	0514
-91EC	B797
-91EE	0124
-91F0	9387
-91F2	0753
-91F4	0567
-91F6	3E97
-91F8	8346
-91FA	5794
-91FC	0547
-91FE	6395
-9200	E602
-9202	03C5
-9204	5719
-9206	0DC1
-9208	97E0
-920A	FFFB
-920C	E780
-920E	80BD
-9210	21A8
-9212	B787
-9214	0224
-9216	83D7
-9218	C749
-921A	EDEF
-921C	B7D7
-921E	0124
-9220	83C7
-9222	07FA
-9224	639E
-9226	070E
-9228	1763
-922A	02FC
-922C	6700
-922E	C32B
-9230	B547
-9232	6314
-9234	F402
-9236	B7D7
-9238	0124
-923A	83C7
-923C	07FA
-923E	EDD7
-9240	B767
-9242	0124
-9244	2380
-9246	9788
-9248	1763
-924A	02FC
-924C	6700
-924E	C329
-9250	9790
-9252	FFFB
-9254	E780
-9256	00EF
-9258	25C5
-925A	8D47
-925C	631F
-925E	F408
-9260	B787
-9262	0224
-9264	9387
-9266	C749
-9268	03C5
-926A	E700
-926C	9D45
-926E	2382
-9270	A704
-9272	97E0
-9274	FFFB
-9276	E780
-9278	E09D
-927A	1763
-927C	02FC
-927E	6700
-9280	A326
-9282	B747
-9284	0124
-9286	83C7
-9288	07C6
-928A	E39B
-928C	97F4
-928E	9790
-9290	00FC
-9292	E780
-9294	6047
-9296	29D5
-9298	B767
-929A	0124
-929C	83A7
-929E	074B
-92A0	83C7
-92A2	E710
-92A4	95FF
-92A6	B767
-92A8	0124
-92AA	83A7
-92AC	474B
-92AE	0567
-92B0	BA97
-92B2	2382
-92B4	079C
-92B6	97A0
-92B8	FFFB
-92BA	E780
-92BC	20A1
-92BE	0DB7
-92C0	9790
-92C2	FFFB
-92C4	E780
-92C6	40E9
-92C8	49F9
-92CA	B7C4
-92CC	0124
-92CE	9384
-92D0	0453
-92D2	83A7
-92D4	846D
-92D6	3729
-92D8	0124
-92DA	1309
-92DC	095F
-92DE	CDE3
-92E0	8327
-92E2	490E
-92E4	D1CF
-92E6	B7D7
-92E8	0124
-92EA	83C7
-92EC	07FA
-92EE	B5D7
-92F0	9720
-92F2	FFFB
-92F4	E780
-92F6	C0F7
-92F8	8DB7
-92FA	E309
-92FC	04EE
-92FE	2DB7
-9300	4165
-9302	1166
-9304	9165
-9306	1305
-9308	25F5
-930A	9790
-930C	00FC
-930E	E780
-9310	2096
-9312	A1B7
-9314	B13B
-9316	B7D7
-9318	0124
-931A	83C7
-931C	07FA
-931E	89D7
-9320	3707
-9322	0140
-9324	9307
-9326	A020
-9328	2313
-932A	F7D6
-932C	9167
-932E	9387
-9330	0721
-9332	2315
-9334	F7D6
-9336	9780
-9338	01FC
-933A	E780
-933C	A06C
-933E	1763
-9340	02FC
-9342	6700
-9344	631A
-9346	9790
-9348	FFFB
-934A	E780
-934C	E0E0
-934E	E31F
-9350	05E8
-9352	9790
-9354	FFFB
-9356	E780
-9358	20E3
-935A	E319
-935C	05E8
-935E	B7E7
-9360	0024
-9362	83C7
-9364	17CF
-9366	E383
-9368	07E8
-936A	B727
-936C	0124
-936E	83A7
-9370	476D
-9372	E38D
-9374	07E6
-9376	9720
-9378	FFFB
-937A	E780
-937C	E0E8
-937E	BDB5
-9380	8327
-9382	C90A
-9384	E382
-9386	07EA
-9388	0545
-938A	9750
-938C	FEFB
-938E	E780
-9390	A05D
-9392	B735
-9394	202D
-9396	7578
-9398	37F5
-939A	202D
-939C	9385
-939E	0560
-93A0	1308
-93A2	08A0
-93A4	9168
-93A6	1305
-93A8	0560
-93AA	B387
-93AC	0501
-93AE	03C7
-93B0	0700
-93B2	9306
-93B4	F00F
-93B6	1316
-93B8	8701
-93BA	6186
-93BC	0607
-93BE	6344
-93C0	0600
-93C2	9376
-93C4	F70F
-93C6	2380
-93C8	D700
-93CA	8507
-93CC	E391
-93CE	B7FE
-93D0	B385
-93D2	1701
-93D4	E39B
-93D6	A5FC
-93D8	0145
-93DA	9750
-93DC	FEFB
-93DE	E780
-93E0	A058
-93E2	B7D7
-93E4	0124
-93E6	83C7
-93E8	07FA
-93EA	E388
-93EC	07E6
-93EE	83A7
-93F0	846D
-93F2	E394
-93F4	07E6
-93F6	8327
-93F8	490E
-93FA	E380
-93FC	07E6
-93FE	CDBD
-9400	1763
-9402	02FC
-9404	E702
-9406	030C
-9408	B744
-940A	0124
-940C	9384
-940E	04C6
-9410	83C7
-9412	0400
-9414	3784
-9416	0224
-9418	1304
-941A	C449
-941C	2303
-941E	F404
-9420	01ED
-9422	B7D7
-9424	0124
-9426	03A7
-9428	87C1
-942A	9147
-942C	630E
-942E	F702
-9430	1763
-9432	02FC
-9434	6700
-9436	430B
-9438	8547
-943A	E31B
-943C	F5FE
-943E	37C9
-9440	0124
-9442	1309
-9444	0953
-9446	8327
-9448	896E
-944A	1147
-944C	638B
-944E	E702
-9450	0547
-9452	E39F
-9454	E7FC
-9456	3747
-9458	0124
-945A	0347
-945C	27C4
-945E	E319
-9460	F7FC
-9462	2380
-9464	0400
-9466	E9B7
-9468	B747
-946A	0124
-946C	83C7
-946E	27C4
-9470	E1D3
-9472	97F0
-9474	00FC
-9476	E780
-9478	E016
-947A	8547
-947C	A302
-947E	F404
-9480	45BF
-9482	B747
-9484	0124
-9486	83C7
-9488	27C4
-948A	E393
-948C	A7FA
-948E	0145
-9490	9780
-9492	FFFB
-9494	E780
-9496	805C
-9498	0145
-949A	9790
-949C	FFFB
-949E	E780
-94A0	A0CF
-94A2	97A0
-94A4	FFFB
-94A6	E780
-94A8	6082
-94AA	0347
-94AC	6404
-94AE	8327
-94B0	896E
-94B2	2380
-94B4	E400
-94B6	69BF
-94B8	1763
-94BA	02FC
-94BC	E702
-94BE	8300
-94C0	3784
-94C2	0224
-94C4	1304
-94C6	C449
-94C8	8347
-94CA	5404
-94CC	91C7
-94CE	B747
-94D0	0124
-94D2	83C7
-94D4	27C4
-94D6	9DEF
-94D8	B7E7
-94DA	0124
-94DC	9387
-94DE	0787
-94E0	03A4
-94E2	4709
-94E4	83A4
-94E6	0709
-94E8	0146
-94EA	2285
-94EC	A685
-94EE	9750
-94F0	01FC
-94F2	E780
-94F4	6055
-94F6	97F0
-94F8	00FC
-94FA	E780
-94FC	2030
-94FE	0546
-9500	A685
-9502	2285
-9504	9750
-9506	01FC
-9508	E780
-950A	0054
-950C	1763
-950E	02FC
-9510	6700
-9512	83FD
-9514	97F0
-9516	00FC
-9518	E780
-951A	C027
-951C	A302
-951E	0404
-9520	65BF
-9522	0100
-9524	1763
-9526	02FC
-9528	E702
-952A	C3F9
-952C	B7E7
-952E	0124
-9530	9387
-9532	0787
-9534	83A4
-9536	070A
-9538	03A4
-953A	470A
-953C	0146
-953E	A685
-9540	2285
-9542	9750
-9544	01FC
-9546	E780
-9548	2050
-954A	9770
-954C	FDFB
-954E	E780
-9550	A03C
-9552	0546
-9554	A685
-9556	2285
-9558	9750
-955A	01FC
-955C	E780
-955E	C04E
-9560	9780
-9562	FFFB
-9564	E780
-9566	803B
-9568	11E9
-956A	B737
-956C	0224
-956E	9387
-9570	076B
-9572	03C7
-9574	F780
-9576	8546
-9578	6306
-957A	D700
-957C	1763
-957E	02FC
-9580	6700
-9582	83F6
-9584	83C6
-9586	879E
-9588	9147
-958A	E399
-958C	F6FE
-958E	B767
-9590	0124
-9592	83A7
-9594	074B
-9596	A38E
-9598	E724
-959A	CDB7
-959C	1763
-959E	02FC
-95A0	E702
-95A2	A3F0
-95A4	B7E7
-95A6	0124
-95A8	9387
-95AA	0787
-95AC	03AA
-95AE	8703
-95B0	83A9
-95B2	C703
-95B4	AA84
-95B6	2E84
-95B8	3289
-95BA	D285
-95BC	0146
-95BE	4E85
-95C0	9750
-95C2	01FC
-95C4	E780
-95C6	4048
-95C8	4A86
-95CA	A285
-95CC	2685
-95CE	97D0
-95D0	00FC
-95D2	E780
-95D4	60CD
-95D6	AA84
-95D8	0546
-95DA	D285
-95DC	4E85
-95DE	9750
-95E0	01FC
-95E2	E780
-95E4	6046
-95E6	9790
-95E8	FFFB
-95EA	E780
-95EC	6087
-95EE	11C5
-95F0	2685
-95F2	1763
-95F4	02FC
-95F6	6700
-95F8	83EE
-95FA	9790
-95FC	FFFB
-95FE	E780
-9600	A084
-9602	8357
-9604	E400
-9606	AA97
-9608	2317
-960A	F400
-960C	9790
-960E	FFFB
-9610	E780
-9612	8083
-9614	8357
-9616	C400
-9618	AA97
-961A	2316
-961C	F400
-961E	2685
-9620	1763
-9622	02FC
-9624	6700
-9626	A3EB
-9628	1763
-962A	02FC
-962C	E702
-962E	E3E7
-9630	B7E7
-9632	0124
-9634	9387
-9636	0787
-9638	03AA
-963A	0704
-963C	83A9
-963E	4704
-9640	AA8A
-9642	2E89
-9644	3284
-9646	D285
-9648	0146
-964A	4E85
-964C	B684
-964E	9750
-9650	01FC
-9652	E780
-9654	603F
-9656	A686
-9658	2286
-965A	CA85
-965C	5685
-965E	9780
-9660	FDFB
-9662	E780
-9664	2053
-9666	0546
-9668	D285
-966A	4E85
-966C	9750
-966E	01FC
-9670	E780
-9672	803D
-9674	9780
-9676	FDFB
-9678	E780
-967A	0047
-967C	9780
-967E	FFFB
-9680	E780
-9682	007E
-9684	01E5
-9686	8547
-9688	6386
-968A	F400
-968C	1763
-968E	02FC
-9690	6700
-9692	E3E4
-9694	9780
-9696	FFFB
-9698	E780
-969A	007B
-969C	8357
-969E	0400
-96A0	898F
-96A2	2310
-96A4	F400
-96A6	9780
-96A8	FFFB
-96AA	E780
-96AC	E079
-96AE	8357
-96B0	4400
-96B2	8356
-96B4	0400
-96B6	3777
-96B8	0224
-96BA	AA97
-96BC	2312
-96BE	F400
-96C0	1307
-96C2	076B
-96C4	2317
-96C6	D760
-96C8	B7E6
-96CA	0024
-96CC	8357
-96CE	4400
-96D0	03D6
-96D2	06A4
-96D4	83D6
-96D6	6A01
-96D8	918F
-96DA	B697
-96DC	2319
-96DE	F760
-96E0	1763
-96E2	02FC
-96E4	6700
-96E6	A3DF
-96E8	1763
-96EA	02FC
-96EC	E702
-96EE	E3DB
-96F0	AA84
-96F2	2E84
-96F4	9780
-96F6	FFFB
-96F8	E780
-96FA	4022
-96FC	09C5
-96FE	1763
-9700	02FC
-9702	6700
-9704	C3DD
-9706	9780
-9708	FFFB
-970A	E780
-970C	201E
-970E	65D9
-9710	9780
-9712	FFFB
-9714	E780
-9716	C024
-9718	1307
-971A	F5FF
-971C	3307
-971E	E402
-9720	B7A7
-9722	0124
-9724	83C7
-9726	9794
-9728	83D6
-972A	4400
-972C	AA89
-972E	1D8C
-9730	3389
-9732	D700
-9734	4204
-9736	4180
-9738	3309
-973A	E940
-973C	4209
-973E	1359
-9740	0901
-9742	9780
-9744	FFFB
-9746	E780
-9748	A071
-974A	29C9
-974C	8947
-974E	638B
-9750	F902
-9752	8D47
-9754	6386
-9756	F902
-9758	8547
-975A	6387
-975C	F902
-975E	9790
-9760	FFFB
-9762	E780
-9764	2093
-9766	05E5
-9768	9790
-976A	FFFB
-976C	E780
-976E	C092
-9770	59D5
-9772	9780
-9774	FEFB
-9776	E780
-9778	60E7
-977A	2395
-977C	A406
-977E	41B7
-9780	239F
-9782	8404
-9784	239E
-9786	8404
-9788	2390
-978A	2407
-978C	C9BF
-978E	9780
-9790	FEFB
-9792	E780
-9794	A0E2
-9796	2393
-9798	A406
-979A	F9B7
-979C	9780
-979E	FFFB
-97A0	E780
-97A2	806A
-97A4	3305
-97A6	A440
-97A8	1314
-97AA	0501
-97AC	9780
-97AE	FFFB
-97B0	E780
-97B2	8069
-97B4	2A99
-97B6	4209
-97B8	4180
-97BA	1359
-97BC	0901
-97BE	79B7
-97C0	1763
-97C2	02FC
-97C4	E702
-97C6	03D0
-97C8	3794
-97CA	0124
-97CC	1304
-97CE	0453
-97D0	8567
-97D2	A297
-97D4	03C7
-97D6	5794
-97D8	8547
-97DA	630D
-97DC	F702
-97DE	37C4
-97E0	0124
-97E2	1304
-97E4	0453
-97E6	9740
-97E8	01FC
-97EA	E780
-97EC	2060
-97EE	8347
-97F0	048B
-97F2	89EF
-97F4	B787
-97F6	0224
-97F8	03C5
-97FA	074E
-97FC	01C9
-97FE	8347
-9800	D46C
-9802	91CF
-9804	97D0
-9806	FFFB
-9808	E780
-980A	C05A
-980C	1763
-980E	02FC
-9810	6700
-9812	83CD
-9814	8D67
-9816	3E94
-9818	2307
-981A	046C
-981C	E9B7
-981E	97D0
-9820	FFFB
-9822	E780
-9824	205C
-9826	1763
-9828	02FC
-982A	6700
-982C	E3CB
-982E	0100
-9830	1763
-9832	02FC
-9834	E702
-9836	03C9
-9838	3724
-983A	0124
-983C	1304
-983E	0495
-9840	8344
-9842	0401
-9844	9780
-9846	FFFB
-9848	E780
-984A	000F
-984C	09C5
-984E	93B7
-9850	1400
-9852	2308
-9854	F400
-9856	B787
-9858	0224
-985A	83C7
-985C	D74A
-985E	1307
-9860	F00F
-9862	6384
-9864	E700
-9866	2308
-9868	F400
-986A	9790
-986C	FEFB
-986E	E780
-9870	E062
-9872	2308
-9874	9400
-9876	1763
-9878	02FC
-987A	6700
-987C	E3C6
-987E	0100
-9880	1763
-9882	02FC
-9884	E702
-9886	03C4
-9888	0545
-988A	9780
-988C	FFFB
-988E	E780
-9890	E01C
-9892	0545
-9894	9790
-9896	FFFB
-9898	E780
-989A	0090
-989C	B7A7
-989E	0124
-98A0	9387
-98A2	0753
-98A4	1147
-98A6	23AE
-98A8	E792
-98AA	2382
-98AC	0794
-98AE	A382
-98B0	0794
-98B2	23A0
-98B4	0796
-98B6	23A2
-98B8	0796
-98BA	1763
-98BC	02FC
-98BE	6700
-98C0	A3C2
-98C2	0100
-98C4	1763
-98C6	02FC
-98C8	E702
-98CA	23BE
-98CC	B744
-98CE	0124
-98D0	9384
-98D2	04C4
-98D4	03C7
-98D6	2400
-98D8	8547
-98DA	6301
-98DC	F702
-98DE	37A4
-98E0	0124
-98E2	1304
-98E4	0453
-98E6	9147
-98E8	2302
-98EA	0494
-98EC	A302
-98EE	0494
-98F0	232E
-98F2	F492
-98F4	1763
-98F6	02FC
-98F8	6700
-98FA	63BE
-98FC	8947
-98FE	630D
-9900	F504
-9902	71FD
-9904	3799
-9906	0124
-9908	B787
-990A	0224
-990C	9387
-990E	C749
-9910	1309
-9912	0953
-9914	0564
-9916	B44F
-9918	9853
-991A	4A94
-991C	0326
-991E	8498
-9920	3697
-9922	8546
-9924	6374
-9926	C700
-9928	B306
-992A	E640
-992C	DC53
-992E	63F7
-9930	D70C
-9932	8347
-9934	E4B6
-9936	DDDF
-9938	9147
-993A	0145
-993C	232E
-993E	0492
-9940	A303
-9942	F93E
-9944	9780
-9946	FFFB
-9948	E780
-994A	4011
-994C	0145
-994E	9790
-9950	FFFB
-9952	E780
-9954	6084
-9956	79BF
-9958	3799
-995A	0124
-995C	1309
-995E	0953
-9960	056A
-9962	3304
-9964	4901
-9966	0327
-9968	C493
-996A	9147
-996C	E30D
-996E	F7F6
-9970	B787
-9972	0224
-9974	83A9
-9976	874F
-9978	9790
-997A	01FC
-997C	E780
-997E	4091
-9980	0326
-9982	4907
-9984	8355
-9986	A950
-9988	4E95
-998A	9780
-998C	00FC
-998E	E780
-9990	2026
-9992	AA87
-9994	8399
-9996	2401
-9998	0326
-999A	4907
-999C	8355
-999E	A950
-99A0	0325
-99A2	8498
-99A4	BE99
-99A6	9780
-99A8	00FC
-99AA	E780
-99AC	6024
-99AE	63F9
-99B0	A904
-99B2	0327
-99B4	8916
-99B6	B307
-99B8	3541
-99BA	2328
-99BC	F496
-99BE	19E7
-99C0	03D9
-99C2	6400
-99C4	636A
-99C6	F904
-99C8	232A
-99CA	0496
-99CC	83D4
-99CE	C400
-99D0	BE94
-99D2	2322
-99D4	9496
-99D6	9790
-99D8	FFFB
-99DA	E780
-99DC	E052
-99DE	AA85
-99E0	1305
-99E2	803E
-99E4	3385
-99E6	A402
-99E8	9780
-99EA	00FC
-99EC	E780
-99EE	8019
-99F0	8547
-99F2	2320
-99F4	A496
-99F6	2302
-99F8	F494
-99FA	EDBD
-99FC	5135
-99FE	DDBD
-9A00	8145
-9A02	1305
-9A04	1AAF
-9A06	97C0
-9A08	FFFB
-9A0A	E780
-9A0C	A08C
-9A0E	2320
-9A10	0496
-9A12	232A
-9A14	0496
-9A16	F9BD
-9A18	9790
-9A1A	FFFB
-9A1C	E780
-9A1E	C04E
-9A20	AA85
-9A22	1305
-9A24	803E
-9A26	3305
-9A28	A902
-9A2A	9780
-9A2C	00FC
-9A2E	E780
-9A30	6015
-9A32	8327
-9A34	0497
-9A36	232A
-9A38	A496
-9A3A	49BF
-9A3C	1763
-9A3E	02FC
-9A40	E702
-9A42	43A8
-9A44	B7E7
-9A46	0124
-9A48	9387
-9A4A	0787
-9A4C	03A9
-9A4E	0707
-9A50	E45B
-9A52	0146
-9A54	CA85
-9A56	2A84
-9A58	2685
-9A5A	9750
-9A5C	01FC
-9A5E	E780
-9A60	A0FE
-9A62	2285
-9A64	97A0
-9A66	FFFB
-9A68	E780
-9A6A	C074
-9A6C	0546
-9A6E	CA85
-9A70	2685
-9A72	9750
-9A74	01FC
-9A76	E780
-9A78	20FD
-9A7A	B747
-9A7C	0124
-9A7E	03C7
-9A80	27C4
-9A82	8547
-9A84	6306
-9A86	F700
-9A88	1763
-9A8A	02FC
-9A8C	6700
-9A8E	C3A5
-9A90	B797
-9A92	0124
-9A94	9387
-9A96	0753
-9A98	8566
-9A9A	BE96
-9A9C	03C5
-9A9E	5694
-9AA0	8D66
-9AA2	B697
-9AA4	0C40
-9AA6	0356
-9AA8	C400
-9AAA	83D6
-9AAC	E76F
-9AAE	6300
-9AB0	E502
-9AB2	B787
-9AB4	0224
-9AB6	9387
-9AB8	C749
-9ABA	ECCF
-9ABC	ACCF
-9ABE	F0D3
-9AC0	B0D3
-9AC2	F4D7
-9AC4	B4D7
-9AC6	1763
-9AC8	02FC
-9ACA	6700
-9ACC	E3A1
-9ACE	3787
-9AD0	0224
-9AD2	1307
-9AD4	C749
-9AD6	8328
-9AD8	C705
-9ADA	0328
-9ADC	4706
-9ADE	6857
-9AE0	2CCF
-9AE2	30D3
-9AE4	34D7
-9AE6	2320
-9AE8	1401
-9AEA	2316
-9AEC	0401
-9AEE	239F
-9AF0	A76E
-9AF2	1763
-9AF4	02FC
-9AF6	6700
-9AF8	239F
-9AFA	0100
-9AFC	1763
-9AFE	02FC
-9B00	E702
-9B02	439C
-9B04	B747
-9B06	0124
-9B08	83C7
-9B0A	27C4
-9B0C	0547
-9B0E	2A84
-9B10	6380
-9B12	E704
-9B14	B7E7
-9B16	0124
-9B18	9387
-9B1A	0787
-9B1C	03A9
-9B1E	8707
-9B20	E45F
-9B22	0146
-9B24	CA85
-9B26	2685
-9B28	9750
-9B2A	01FC
-9B2C	E780
-9B2E	C0F1
-9B30	2285
-9B32	9780
-9B34	01FC
-9B36	E780
-9B38	6029
-9B3A	0546
-9B3C	CA85
-9B3E	2685
-9B40	9750
-9B42	01FC
-9B44	E780
-9B46	40F0
-9B48	1763
-9B4A	02FC
-9B4C	6700
-9B4E	C399
-9B50	37A7
-9B52	0124
-9B54	0347
-9B56	57E7
-9B58	E31E
-9B5A	F7FA
-9B5C	B787
-9B5E	0224
-9B60	9387
-9B62	C749
-9B64	B04F
-9B66	B453
-9B68	B857
-9B6A	F0CF
-9B6C	F4D3
-9B6E	F8D7
-9B70	55B7
-9B72	0100
-9B74	1763
-9B76	02FC
-9B78	E702
-9B7A	C394
-9B7C	0545
-9B7E	97E0
-9B80	FFFB
-9B82	E780
-9B84	E05B
-9B86	9357
-9B88	1500
-9B8A	9375
-9B8C	1500
-9B8E	13F5
-9B90	1700
-9B92	97A0
-9B94	00FC
-9B96	E780
-9B98	E019
-9B9A	B7A7
-9B9C	0124
-9B9E	83C7
-9BA0	270A
-9BA2	91C7
-9BA4	B747
-9BA6	0124
-9BA8	83C7
-9BAA	27C4
-9BAC	91EF
-9BAE	9790
-9BB0	FFFB
-9BB2	E780
-9BB4	20E9
-9BB6	9780
-9BB8	01FC
-9BBA	E780
-9BBC	E094
-9BBE	B727
-9BC0	0024
-9BC2	83A7
-9BC4	C7CE
-9BC6	8297
-9BC8	1763
-9BCA	02FC
-9BCC	6700
-9BCE	C391
-9BD0	B747
-9BD2	0124
-9BD4	83C7
-9BD6	27C4
-9BD8	91C7
-9BDA	B7A7
-9BDC	0124
-9BDE	83C7
-9BE0	57E7
-9BE2	A9E3
-9BE4	1763
-9BE6	02FC
-9BE8	E702
-9BEA	C38D
-9BEC	B7E7
-9BEE	0124
-9BF0	9387
-9BF2	0787
-9BF4	E053
-9BF6	A453
-9BF8	0146
-9BFA	2285
-9BFC	A685
-9BFE	9750
-9C00	01FC
-9C02	E780
-9C04	60E4
-9C06	9790
-9C08	FFFB
-9C0A	E780
-9C0C	200C
-9C0E	0546
-9C10	A685
-9C12	2285
-9C14	9750
-9C16	01FC
-9C18	E780
-9C1A	00E3
-9C1C	1763
-9C1E	02FC
-9C20	6700
-9C22	838C
-9C24	8280
-9C26	0100
-9C28	1763
-9C2A	02FC
-9C2C	E702
-9C2E	8389
-9C30	2A84
-9C32	01ED
-9C34	B797
-9C36	0124
-9C38	9387
-9C3A	0753
-9C3C	0567
-9C3E	3E97
-9C40	0326
-9C42	C7B3
-9C44	FD56
-9C46	6300
-9C48	D604
-9C4A	B7E7
-9C4C	0124
-9C4E	9387
-9C50	0787
-9C52	03A9
-9C54	8706
-9C56	E457
-9C58	0146
-9C5A	CA85
-9C5C	2685
-9C5E	9750
-9C60	01FC
-9C62	E780
-9C64	60DE
-9C66	2285
-9C68	97B0
-9C6A	FFFB
-9C6C	E780
-9C6E	002E
-9C70	0546
-9C72	CA85
-9C74	2685
-9C76	9750
-9C78	01FC
-9C7A	E780
-9C7C	E0DC
-9C7E	1763
-9C80	02FC
-9C82	6700
-9C84	6386
-9C86	8D66
-9C88	B697
-9C8A	83A6
-9C8C	876D
-9C8E	8547
-9C90	99EA
-9C92	B747
-9C94	0124
-9C96	83C6
-9C98	27C4
-9C9A	8147
-9C9C	89E6
-9C9E	8347
-9CA0	27B7
-9CA2	B337
-9CA4	F000
-9CA6	A308
-9CA8	F7B6
-9CAA	45B7
-9CAC	7171
-9CAE	22D7
-9CB0	26D5
-9CB2	7324
-9CB4	2034
-9CB6	F324
-9CB8	1034
-9CBA	7360
-9CBC	0430
-9CBE	2EC5
-9CC0	A565
-9CC2	BEDC
-9CC4	06D3
-9CC6	16D1
-9CC8	1ACF
-9CCA	1ECD
-9CCC	22CB
-9CCE	2AC7
-9CD0	32C3
-9CD2	36C1
-9CD4	BADE
-9CD6	C2DA
-9CD8	C6D8
-9CDA	F2D0
-9CDC	F6CE
-9CDE	FACC
-9CE0	FECA
-9CE2	82E2
-9CE4	86E0
-9CE6	0AFE
-9CE8	0EFC
-9CEA	12FA
-9CEC	16F8
-9CEE	1AF6
-9CF0	1EF4
-9CF2	2AF2
-9CF4	2EF0
-9CF6	32EE
-9CF8	26C9
-9CFA	CAD6
-9CFC	CED4
-9CFE	D2D2
-9D00	9385
-9D02	0540
-9D04	0545
-9D06	36EC
-9D08	3AEA
-9D0A	3EE8
-9D0C	42E6
-9D0E	46E4
-9D10	72E2
-9D12	76E0
-9D14	272E
-9D16	E1FF
-9D18	272C
-9D1A	F1FF
-9D1C	97E0
-9D1E	FFFB
-9D20	E780
-9D22	80C7
-9D24	A167
-9D26	E98F
-9D28	2A84
-9D2A	6394
-9D2C	0718
-9D2E	B764
-9D30	0124
-9D32	9384
-9D34	0440
-9D36	8567
-9D38	E18F
-9D3A	CDCF
-9D3C	37D7
-9D3E	0124
-9D40	3789
-9D42	0224
-9D44	1307
-9D46	07C4
-9D48	1309
-9D4A	C949
-9D4C	8356
-9D4E	670E
-9D50	8327
-9D52	0905
-9D54	8506
-9D56	8507
-9D58	2328
-9D5A	F904
-9D5C	2313
-9D5E	D70E
-9D60	858B
-9D62	6393
-9D64	071C
-9D66	8547
-9D68	A30A
-9D6A	F904
-9D6C	9780
-9D6E	FFFB
-9D70	E780
-9D72	402F
-9D74	19C5
-9D76	0357
-9D78	4905
-9D7A	9307
-9D7C	1010
-9D7E	6309
-9D80	F724
-9D82	DC50
-9D84	0945
-9D86	8297
-9D88	9780
-9D8A	FFFB
-9D8C	E780
-9D8E	00B6
-9D90	11C5
-9D92	9780
-9D94	FFFB
-9D96	E780
-9D98	60B8
-9D9A	55C5
-9D9C	9780
-9D9E	00FC
-9DA0	E780
-9DA2	808A
-9DA4	B787
-9DA6	0024
-9DA8	83C7
-9DAA	078C
-9DAC	AA89
-9DAE	6395
-9DB0	071C
-9DB2	B7D7
-9DB4	0124
-9DB6	9387
-9DB8	07E7
-9DBA	BC5F
-9DBC	639E
-9DBE	0716
-9DC0	3799
-9DC2	0124
-9DC4	1309
-9DC6	0953
-9DC8	B727
-9DCA	0024
-9DCC	83C7
-9DCE	7752
-9DD0	6399
-9DD2	071E
-9DD4	0345
-9DD6	C918
-9DD8	6310
-9DDA	051E
-9DDC	DC50
-9DDE	0D45
-9DE0	8297
-9DE2	4E85
-9DE4	9780
-9DE6	00FC
-9DE8	E780
-9DEA	408A
-9DEC	8567
-9DEE	3E99
-9DF0	2320
-9DF2	A9A2
-9DF4	1374
-9DF6	0440
-9DF8	21C4
-9DFA	B7D7
-9DFC	0124
-9DFE	9387
-9E00	07C4
-9E02	37A7
-9E04	0124
-9E06	83D6
-9E08	670E
-9E0A	1307
-9E0C	0753
-9E0E	0347
-9E10	179B
-9E12	8506
-9E14	3784
-9E16	0224
-9E18	1304
-9E1A	C449
-9E1C	1337
-9E1E	1700
-9E20	2393
-9E22	D70E
-9E24	230A
-9E26	E404
-9E28	9780
-9E2A	FFFB
-9E2C	E780
-9E2E	8023
-9E30	630A
-9E32	0510
-9E34	0357
-9E36	4405
-9E38	9307
-9E3A	1010
-9E3C	6304
-9E3E	F710
-9E40	DC50
-9E42	1D45
-9E44	8297
-9E46	9A50
-9E48	8A52
-9E4A	7A43
-9E4C	EA43
-9E4E	5A44
-9E50	CA44
-9E52	3A45
-9E54	AA45
-9E56	1A46
-9E58	8A46
-9E5A	7657
-9E5C	E657
-9E5E	5658
-9E60	C658
-9E62	3659
-9E64	A659
-9E66	165A
-9E68	065E
-9E6A	F64E
-9E6C	664F
-9E6E	D64F
-9E70	1660
-9E72	8660
-9E74	7271
-9E76	E271
-9E78	5272
-9E7A	C272
-9E7C	3273
-9E7E	A273
-9E80	1275
-9E82	8275
-9E84	7266
-9E86	E266
-9E88	5267
-9E8A	C267
-9E8C	3268
-9E8E	A268
-9E90	126E
-9E92	826E
-9E94	072F
-9E96	C1FF
-9E98	872F
-9E9A	81FF
-9E9C	7370
-9E9E	0430
-9EA0	7390
-9EA2	1434
-9EA4	7310
-9EA6	2434
-9EA8	3A54
-9EAA	AA54
-9EAC	4D61
-9EAE	7300
-9EB0	2030
-9EB2	37D9
-9EB4	0124
-9EB6	1309
-9EB8	09C4
-9EBA	8357
-9EBC	490E
-9EBE	B764
-9EC0	0124
-9EC2	9384
-9EC4	0440
-9EC6	D850
-9EC8	8507
-9ECA	B786
-9ECC	0224
-9ECE	0145
-9ED0	23A6
-9ED2	064E
-9ED4	2312
-9ED6	F90E
-9ED8	0297
-9EDA	9780
-9EDC	FFFB
-9EDE	E780
-9EE0	E0A0
-9EE2	3DE1
-9EE4	B729
-9EE6	0024
-9EE8	3799
-9EEA	0124
-9EEC	9389
-9EEE	0933
-9EF0	1309
-9EF2	0953
-9EF4	056A
-9EF6	83C7
-9EF8	791F
-9EFA	4A9A
-9EFC	2320
-9EFE	0AA2
-9F00	B1EF
-9F02	0345
-9F04	C918
-9F06	25E5
-9F08	83C7
-9F0A	0920
-9F0C	89C7
-9F0E	0327
-9F10	4AB3
-9F12	630A
-9F14	F700
-9F16	97F0
-9F18	00FC
-9F1A	E780
-9F1C	A002
-9F1E	DC50
-9F20	0545
-9F22	8297
-9F24	09BD
-9F26	01A0
-9F28	8547
-9F2A	230A
-9F2C	0904
-9F2E	A30A
-9F30	0904
-9F32	2328
-9F34	F904
-9F36	1DBD
-9F38	7D55
-9F3A	9780
-9F3C	01FC
-9F3E	E780
-9F40	6034
-9F42	BDBD
-9F44	4128
-9F46	EDBD
-9F48	9780
-9F4A	FFFB
-9F4C	E780
-9F4E	009D
-9F50	51F9
-9F52	8357
-9F54	490E
-9F56	858B
-9F58	D1F7
-9F5A	F5B5
-9F5C	9780
-9F5E	01FC
-9F60	E780
-9F62	0033
-9F64	2311
-9F66	A94E
-9F68	0345
-9F6A	C918
-9F6C	51DD
-9F6E	97D0
-9F70	FFFB
-9F72	E780
-9F74	20E4
-9F76	49BF
-9F78	9780
-9F7A	01FC
-9F7C	E780
-9F7E	4031
-9F80	3799
-9F82	0124
-9F84	1309
-9F86	0953
-9F88	8D67
-9F8A	CA97
-9F8C	03C7
-9F8E	D76F
-9F90	232E
-9F92	A94E
-9F94	8547
-9F96	6306
-9F98	F700
-9F9A	8327
-9F9C	094F
-9F9E	E374
-9FA0	F5EA
-9FA2	9770
-9FA4	00FC
-9FA6	E780
-9FA8	602C
-9FAA	9780
-9FAC	01FC
-9FAE	E780
-9FB0	202E
-9FB2	2320
-9FB4	A950
-9FB6	09BD
-9FB8	97D0
-9FBA	FFFB
-9FBC	E780
-9FBE	80E2
-9FC0	31BD
-9FC2	9780
-9FC4	01FC
-9FC6	E780
-9FC8	A02C
-9FCA	2312
-9FCC	A94E
-9FCE	19B5
-9FD0	1120
-9FD2	45BB
-9FD4	1753
-9FD6	02FC
-9FD8	E702
-9FDA	234D
-9FDC	9780
-9FDE	FFFB
-9FE0	E780
-9FE2	C090
-9FE4	15E5
-9FE6	3764
-9FE8	0124
-9FEA	1304
-9FEC	0440
-9FEE	5C50
-9FF0	1945
-9FF2	8297
-9FF4	B787
-9FF6	0224
-9FF8	9387
-9FFA	C749
-9FFC	238A
-9FFE	0704
-A000	A38A
-A002	0704
-A004	23A8
-A006	0704
-A008	1753
-A00A	02FC
-A00C	6700
-A00E	234D
-A010	9780
-A012	FFFB
-A014	E780
-A016	8090
-A018	79F5
-A01A	B794
-A01C	0124
-A01E	9384
-A020	0453
-A022	0569
-A024	3774
-A026	0024
-A028	9770
-A02A	00FC
-A02C	E780
-A02E	C061
-A030	2699
-A032	1304
-A034	047D
-A036	8347
-A038	199B
-A03A	0347
-A03C	5412
-A03E	AA89
-A040	13FA
-A042	F70F
-A044	19C3
-A046	630D
-A048	0A08
-A04A	8347
-A04C	040F
-A04E	81C7
-A050	8347
-A052	140F
-A054	9DEB
-A056	B7D7
-A058	0124
-A05A	9387
-A05C	07E7
-A05E	BC5F
-A060	F9EB
-A062	3764
-A064	0124
-A066	1304
-A068	0440
-A06A	B727
-A06C	0024
-A06E	83C7
-A070	7752
-A072	DDEB
-A074	03C5
-A076	C418
-A078	5DE1
-A07A	4E85
-A07C	9770
-A07E	00FC
-A080	E780
-A082	C060
-A084	2320
-A086	A9A2
-A088	9DB7
-A08A	9780
-A08C	01FC
-A08E	E780
-A090	2020
-A092	8D67
-A094	A697
-A096	03C7
-A098	D76F
-A09A	23AE
-A09C	A44E
-A09E	8547
-A0A0	6309
-A0A2	F700
-A0A4	8347
-A0A6	240F
-A0A8	89C7
-A0AA	83A7
-A0AC	044F
-A0AE	E37D
-A0B0	F5F4
-A0B2	3764
-A0B4	0124
-A0B6	1304
-A0B8	0440
-A0BA	631C
-A0BC	0A00
-A0BE	5C50
-A0C0	1145
-A0C2	8297
-A0C4	9770
-A0C6	00FC
-A0C8	E780
-A0CA	401A
-A0CC	5C50
-A0CE	1545
-A0D0	8297
-A0D2	9780
-A0D4	01FC
-A0D6	E780
-A0D8	A01B
-A0DA	23A0
-A0DC	A450
-A0DE	71B7
-A0E0	0355
-A0E2	6412
-A0E4	835A
-A0E6	A412
-A0E8	9770
-A0EA	00FC
-A0EC	E780
-A0EE	005D
-A0F0	0145
-A0F2	9770
-A0F4	00FC
-A0F6	E780
-A0F8	604A
-A0FA	8147
-A0FC	0100
-A0FE	3E87
-A100	8507
-A102	E39D
-A104	EAFE
-A106	0545
-A108	9770
-A10A	00FC
-A10C	E780
-A10E	0049
-A110	0355
-A112	8412
-A114	9770
-A116	00FC
-A118	E780
-A11A	405A
-A11C	3DB7
-A11E	97D0
-A120	FFFB
-A122	E780
-A124	20CC
-A126	91BF
-A128	9780
-A12A	01FC
-A12C	E780
-A12E	4016
-A130	2392
-A132	A44E
-A134	81B7
-A136	7D55
-A138	9780
-A13A	01FC
-A13C	E780
-A13E	8014
-A140	0DB7
-A142	0100
-A144	1753
-A146	02FC
-A148	E702
-A14A	C337
-A14C	B7D7
-A14E	0124
-A150	83C7
-A152	07FA
-A154	2E84
-A156	B284
-A158	A9C3
-A15A	B727
-A15C	0024
-A15E	83C7
-A160	8785
-A162	85EF
-A164	8947
-A166	23A4
-A168	F50A
-A16A	B797
-A16C	0040
-A16E	239F
-A170	07D0
-A172	9770
-A174	00FC
-A176	E780
-A178	6043
-A17A	A685
-A17C	2285
-A17E	9760
-A180	00FC
-A182	E780
-A184	A041
-A186	A685
-A188	0145
-A18A	9740
-A18C	01FC
-A18E	E780
-A190	E04D
-A192	1753
-A194	02FC
-A196	6700
-A198	2335
-A19A	0DE9
-A19C	B797
-A19E	0124
-A1A0	03A5
-A1A2	C769
-A1A4	2324
-A1A6	A40A
-A1A8	8547
-A1AA	630F
-A1AC	F502
-A1AE	8947
-A1B0	E30D
-A1B2	F5FA
-A1B4	79FD
-A1B6	2686
-A1B8	8545
-A1BA	2285
-A1BC	9750
-A1BE	00FC
-A1C0	E780
-A1C2	8037
-A1C4	1753
-A1C6	02FC
-A1C8	6700
-A1CA	0332
-A1CC	8347
-A1CE	D40B
-A1D0	F1D7
-A1D2	9780
-A1D4	FFFB
-A1D6	E780
-A1D8	20FB
-A1DA	69F1
-A1DC	2685
-A1DE	97B0
-A1E0	FFFB
-A1E2	E780
-A1E4	E09D
-A1E6	7DBF
-A1E8	A565
-A1EA	9385
-A1EC	05D0
-A1EE	2285
-A1F0	9710
-A1F2	01FC
-A1F4	E780
-A1F6	4004
-A1F8	1753
-A1FA	02FC
-A1FC	6700
-A1FE	C32E
-A200	1753
-A202	02FC
-A204	E702
-A206	632A
-A208	9780
-A20A	01FC
-A20C	E780
-A20E	0049
-A210	AA89
-A212	9780
-A214	01FC
-A216	E780
-A218	E049
-A21A	2A8A
-A21C	9780
-A21E	01FC
-A220	E780
-A222	8048
-A224	2A89
-A226	3784
-A228	0224
-A22A	9780
-A22C	01FC
-A22E	E780
-A230	2049
-A232	1304
-A234	04CF
-A236	AA84
-A238	9770
-A23A	FFFB
-A23C	E780
-A23E	8065
-A240	2306
-A242	A400
-A244	9770
-A246	FFFB
-A248	E780
-A24A	8065
-A24C	8355
-A24E	0409
-A250	8356
-A252	E408
-A254	0357
-A256	6401
-A258	8357
-A25A	8401
-A25C	1396
-A25E	1500
-A260	2E96
-A262	0E06
-A264	9398
-A266	4600
-A268	0983
-A26A	8983
-A26C	0D8E
-A26E	B698
-A270	198E
-A272	B388
-A274	F840
-A276	0343
-A278	C400
-A27A	1378
-A27C	F50F
-A27E	9357
-A280	F601
-A282	13D7
-A284	F801
-A286	B297
-A288	4697
-A28A	A306
-A28C	0401
-A28E	8587
-A290	0587
-A292	630B
-A294	0306
-A296	0509
-A298	1359
-A29A	2900
-A29C	CA97
-A29E	630A
-A2A0	0806
-A2A2	8504
-A2A4	8980
-A2A6	2697
-A2A8	231A
-A2AA	F408
-A2AC	2319
-A2AE	E408
-A2B0	33C6
-A2B2	B702
-A2B4	630A
-A2B6	0306
-A2B8	B3E8
-A2BA	B702
-A2BC	B338
-A2BE	1001
-A2C0	3345
-A2C2	D702
-A2C4	4696
-A2C6	6306
-A2C8	0800
-A2CA	B368
-A2CC	D702
-A2CE	639F
-A2D0	080A
-A2D2	B385
-A2D4	C502
-A2D6	231B
-A2D8	C408
-A2DA	231C
-A2DC	A408
-A2DE	B387
-A2E0	F540
-A2E2	B386
-A2E4	A602
-A2E6	8355
-A2E8	6408
-A2EA	6314
-A2EC	0806
-A2EE	158F
-A2F0	B387
-A2F2	F502
-A2F4	6300
-A2F6	030C
-A2F8	8356
-A2FA	8408
-A2FC	3387
-A2FE	E602
-A300	8356
-A302	C408
-A304	BA96
-A306	B9A8
-A308	13D6
-A30A	2900
-A30C	B297
-A30E	E31A
-A310	08F8
-A312	1356
-A314	2A00
-A316	3297
-A318	231A
-A31A	F408
-A31C	2319
-A31E	E408
-A320	33C6
-A322	B702
-A324	E31A
-A326	03F8
-A328	3345
-A32A	D702
-A32C	6306
-A32E	0800
-A330	B368
-A332	D702
-A334	639C
-A336	0804
-A338	B385
-A33A	C502
-A33C	231B
-A33E	C408
-A340	231C
-A342	A408
-A344	8D8F
-A346	8355
-A348	6408
-A34A	B386
-A34C	A602
-A34E	E300
-A350	08FA
-A352	998E
-A354	B387
-A356	F502
-A358	6306
-A35A	0304
-A35C	0357
-A35E	8408
-A360	B306
-A362	D702
-A364	2308
-A366	C400
-A368	A308
-A36A	A400
-A36C	2319
-A36E	F400
-A370	231A
-A372	D400
-A374	231D
-A376	3401
-A378	231F
-A37A	4401
-A37C	97C0
-A37E	FEFB
-A380	E780
-A382	4012
-A384	1753
-A386	02FC
-A388	6700
-A38A	6315
-A38C	0505
-A38E	231B
-A390	C408
-A392	231C
-A394	A408
-A396	B385
-A398	C502
-A39A	E305
-A39C	03FA
-A39E	B387
-A3A0	F540
-A3A2	81B7
-A3A4	8355
-A3A6	A408
-A3A8	0357
-A3AA	8408
-A3AC	AE97
-A3AE	B306
-A3B0	D702
-A3B2	4DBF
-A3B4	8355
-A3B6	A408
-A3B8	8356
-A3BA	8408
-A3BC	AE97
-A3BE	3387
-A3C0	E602
-A3C2	3DBF
-A3C4	1753
-A3C6	02FC
-A3C8	E702
-A3CA	C30F
-A3CC	B7F7
-A3CE	0324
-A3D0	9387
-A3D2	C77F
-A3D4	3784
-A3D6	0224
-A3D8	37A7
-A3DA	0124
-A3DC	1304
-A3DE	C449
-A3E0	9386
-A3E2	0780
-A3E4	2328
-A3E6	D70A
-A3E8	4848
-A3EA	37C7
-A3EC	EFBE
-A3EE	1307
-A3F0	F7EE
-A3F2	23A0
-A3F4	E780
-A3F6	65E9
-A3F8	B797
-A3FA	0224
-A3FC	3767
-A3FE	0124
-A400	9387
-A402	47E3
-A404	2326
-A406	F748
-A408	3764
-A40A	0124
-A40C	B797
-A40E	0224
-A410	1304
-A412	0440
-A414	9387
-A416	47AE
-A418	5CC4
-A41A	B797
-A41C	0224
-A41E	9387
-A420	87D5
-A422	7CC4
-A424	B797
-A426	0224
-A428	9387
-A42A	C701
-A42C	3CCC
-A42E	3785
-A430	0224
-A432	B797
-A434	0224
-A436	9387
-A438	871B
-A43A	0546
-A43C	8145
-A43E	1305
-A440	154E
-A442	1CC0
-A444	9780
-A446	00FC
-A448	E780
-A44A	40BB
-A44C	3785
-A44E	0224
-A450	1146
-A452	8145
-A454	1305
-A456	C54E
-A458	9780
-A45A	00FC
-A45C	E780
-A45E	00BA
-A460	3785
-A462	0224
-A464	0546
-A466	8145
-A468	1305
-A46A	054F
-A46C	9780
-A46E	00FC
-A470	E780
-A472	C0B8
-A474	3785
-A476	0224
-A478	0546
-A47A	8145
-A47C	1305
-A47E	154F
-A480	9780
-A482	00FC
-A484	E780
-A486	80B7
-A488	9D66
-A48A	B7A5
-A48C	0224
-A48E	9386
-A490	F6BF
-A492	1146
-A494	9385
-A496	C5CA
-A498	0545
-A49A	97F0
-A49C	FFFB
-A49E	E780
-A4A0	604F
-A4A2	B797
-A4A4	0224
-A4A6	9387
-A4A8	077C
-A4AA	23A4
-A4AC	F1A2
-A4AE	B797
-A4B0	0224
-A4B2	9387
-A4B4	0740
-A4B6	1CD4
-A4B8	B7A7
-A4BA	0224
-A4BC	3727
-A4BE	0024
-A4C0	9387
-A4C2	0783
-A4C4	232E
-A4C6	F7CC
-A4C8	B7A7
-A4CA	0224
-A4CC	9387
-A4CE	0720
-A4D0	23A8
-A4D2	F1A4
-A4D4	B797
-A4D6	0224
-A4D8	9387
-A4DA	87BB
-A4DC	3CD4
-A4DE	1753
-A4E0	02FC
-A4E2	6700
-A4E4	6300
-A4E6	B785
-A4E8	0224
-A4EA	1146
-A4EC	9385
-A4EE	454E
-A4F0	9730
-A4F2	00FC
-A4F4	E780
-A4F6	C06F
-A4F8	4848
-A4FA	B785
-A4FC	0224
-A4FE	1146
-A500	9385
-A502	854E
-A504	1105
-A506	9730
-A508	00FC
-A50A	E780
-A50C	606E
-A50E	3C44
-A510	7D57
-A512	6387
-A514	E700
-A516	B727
-A518	0124
-A51A	23AE
-A51C	0768
-A51E	E9BD
-A520	7844
-A522	6308
-A524	F700
-A526	184C
-A528	B727
-A52A	0124
-A52C	23AE
-A52E	E768
-A530	E1B5
-A532	584C
-A534	B727
-A536	0124
-A538	23AE
-A53A	E768
-A53C	75BD
-A53E	0000
-A540	1085
-A542	0224
-A544	008D
-A546	0000
-A5B0	1753
-A5B2	02FC
-A5B4	E702
-A5B6	03F1
-A5B8	B7E7
-A5BA	0124
-A5BC	9387
-A5BE	0787
-A5C0	83A4
-A5C2	870D
-A5C4	03A4
-A5C6	C70D
-A5C8	0146
-A5CA	A685
-A5CC	2285
-A5CE	9740
-A5D0	01FC
-A5D2	E780
-A5D4	6047
-A5D6	97B0
-A5D8	FEFB
-A5DA	E780
-A5DC	E0E2
-A5DE	0546
-A5E0	A685
-A5E2	2285
-A5E4	9740
-A5E6	01FC
-A5E8	E780
-A5EA	0046
-A5EC	37A7
-A5EE	0224
-A5F0	9307
-A5F2	8754
-A5F4	03C6
-A5F6	C702
-A5F8	8546
-A5FA	630B
-A5FC	D600
-A5FE	83C6
-A600	0700
-A602	0947
-A604	638E
-A606	E606
-A608	1753
-A60A	02FC
-A60C	6700
-A60E	C3ED
-A610	03D5
-A612	4705
-A614	05C9
-A616	83D8
-A618	2705
-A61A	B7E6
-A61C	0124
-A61E	83D5
-A620	665F
-A622	1307
-A624	8754
-A626	8146
-A628	2548
-A62A	0356
-A62C	E702
-A62E	0907
-A630	63EA
-A632	C50C
-A634	8506
-A636	E39A
-A638	06FF
-A63A	3707
-A63C	0040
-A63E	3A95
-A640	2310
-A642	1501
-A644	03D5
-A646	6705
-A648	5DD9
-A64A	83D8
-A64C	2705
-A64E	37E7
-A650	0124
-A652	8355
-A654	675F
-A656	BE86
-A658	0147
-A65A	2548
-A65C	03D6
-A65E	E602
-A660	8906
-A662	63E8
-A664	C50A
-A666	0507
-A668	E31A
-A66A	07FF
-A66C	3707
-A66E	0040
-A670	3A95
-A672	2310
-A674	1501
-A676	83C6
-A678	0700
-A67A	0947
-A67C	E396
-A67E	E6F8
-A680	03D5
-A682	8702
-A684	1DC5
-A686	83D8
-A688	6702
-A68A	37F7
-A68C	0124
-A68E	8355
-A690	A781
-A692	BE86
-A694	0147
-A696	2548
-A698	03D6
-A69A	2600
-A69C	8906
-A69E	63ED
-A6A0	C504
-A6A2	0507
-A6A4	E31A
-A6A6	07FF
-A6A8	3707
-A6AA	0040
-A6AC	3A95
-A6AE	2310
-A6B0	1501
-A6B2	03D5
-A6B4	A702
-A6B6	29D9
-A6B8	83D8
-A6BA	6702
-A6BC	37F7
-A6BE	0124
-A6C0	8355
-A6C2	A781
-A6C4	BE86
-A6C6	0147
-A6C8	2548
-A6CA	03D6
-A6CC	2600
-A6CE	8906
-A6D0	63EE
-A6D2	C500
-A6D4	0507
-A6D6	E31A
-A6D8	07FF
-A6DA	B707
-A6DC	0040
-A6DE	3E95
-A6E0	2310
-A6E2	1501
-A6E4	1753
-A6E6	02FC
-A6E8	6700
-A6EA	03E0
-A6EC	2107
-A6EE	0607
-A6F0	BA97
-A6F2	83D8
-A6F4	4700
-A6F6	D5B7
-A6F8	2107
-A6FA	0607
-A6FC	3E97
-A6FE	8358
-A700	4700
-A702	5DB7
-A704	1387
-A706	0602
-A708	0607
-A70A	3E97
-A70C	8358
-A70E	0700
-A710	2DB7
-A712	1307
-A714	0702
-A716	0607
-A718	3E97
-A71A	8358
-A71C	0700
-A71E	B9B7
-A720	1753
-A722	02FC
-A724	E702
-A726	83D7
-A728	3284
-A72A	B7E7
-A72C	0124
-A72E	032B
-A730	4600
-A732	832A
-A734	4609
-A736	032A
-A738	C604
-A73A	0348
-A73C	8600
-A73E	9387
-A740	0787
-A742	0346
-A744	8609
-A746	0347
-A748	0405
-A74A	03AC
-A74C	070E
-A74E	83AB
-A750	470E
-A752	3318
-A754	0B01
-A756	3317
-A758	EA00
-A75A	3396
-A75C	CA00
-A75E	2322
-A760	0401
-A762	78C4
-A764	AA84
-A766	2E89
-A768	232A
-A76A	C408
-A76C	E285
-A76E	5E85
-A770	0146
-A772	B689
-A774	9740
-A776	01FC
-A778	E780
-A77A	002D
-A77C	CE86
-A77E	2286
-A780	CA85
-A782	2685
-A784	97B0
-A786	FDFB
-A788	E780
-A78A	00B8
-A78C	0546
-A78E	E285
-A790	5E85
-A792	9740
-A794	01FC
-A796	E780
-A798	202B
-A79A	2322
-A79C	6401
-A79E	232A
-A7A0	5409
-A7A2	2326
-A7A4	4405
-A7A6	1753
-A7A8	02FC
-A7AA	6700
-A7AC	A3D2
-A7AE	0100
-A7B0	1753
-A7B2	02FC
-A7B4	E702
-A7B6	03D1
-A7B8	2A84
-A7BA	EFE0
-A7BC	AFB2
-A7BE	A147
-A7C0	6306
-A7C2	F400
-A7C4	1753
-A7C6	02FC
-A7C8	6700
-A7CA	03D2
-A7CC	9770
-A7CE	FFFB
-A7D0	E780
-A7D2	C014
-A7D4	39C5
-A7D6	B737
-A7D8	0124
-A7DA	83C7
-A7DC	271A
-A7DE	FDD3
-A7E0	3784
-A7E2	0040
-A7E4	8355
-A7E6	E4F3
-A7E8	0D45
-A7EA	93E5
-A7EC	0524
-A7EE	97D0
-A7F0	FFFB
-A7F2	E780
-A7F4	6013
-A7F6	8355
-A7F8	24F7
-A7FA	B7A7
-A7FC	0124
-A7FE	9387
-A800	0753
-A802	03D7
-A804	47B6
-A806	C205
-A808	C181
-A80A	1377
-A80C	F7DB
-A80E	93F5
-A810	F5DB
-A812	4145
-A814	2392
-A816	E7B6
-A818	97D0
-A81A	FFFB
-A81C	E780
-A81E	C010
-A820	55B7
-A822	9770
-A824	FFFB
-A826	E780
-A828	600C
-A82A	55D5
-A82C	9780
-A82E	FFFB
-A830	E780
-A832	4086
-A834	19C9
-A836	B797
-A838	0124
-A83A	9387
-A83C	07D7
-A83E	03C7
-A840	8703
-A842	83C7
-A844	2706
-A846	6306
-A848	F706
-A84A	9780
-A84C	FFFB
-A84E	E780
-A850	6084
-A852	51D1
-A854	B797
-A856	0124
-A858	9387
-A85A	07D7
-A85C	03C7
-A85E	C701
-A860	83C7
-A862	2706
-A864	E319
-A866	F7F6
-A868	B727
-A86A	0224
-A86C	0564
-A86E	9387
-A870	076B
-A872	A297
-A874	03C7
-A876	F780
-A878	8547
-A87A	6317
-A87C	F700
-A87E	B737
-A880	0124
-A882	83C7
-A884	57A5
-A886	B1C3
-A888	B787
-A88A	0040
-A88C	83D5
-A88E	E7F3
-A890	0D45
-A892	93E5
-A894	0501
-A896	97D0
-A898	FFFB
-A89A	E780
-A89C	E008
-A89E	B7A7
-A8A0	0124
-A8A2	9387
-A8A4	0753
-A8A6	03D7
-A8A8	47B6
-A8AA	3D9B
-A8AC	2392
-A8AE	E7B6
-A8B0	1DB7
-A8B2	B727
-A8B4	0224
-A8B6	0564
-A8B8	9387
-A8BA	076B
-A8BC	A297
-A8BE	03C7
-A8C0	F780
-A8C2	9147
-A8C4	E30D
-A8C6	F7FA
-A8C8	C1B7
-A8CA	B787
-A8CC	0040
-A8CE	83D5
-A8D0	E7F3
-A8D2	0D45
-A8D4	93E5
-A8D6	0504
-A8D8	97D0
-A8DA	FFFB
-A8DC	E780
-A8DE	C004
-A8E0	B797
-A8E2	0124
-A8E4	9387
-A8E6	0753
-A8E8	A297
-A8EA	03D7
-A8EC	47B6
-A8EE	1377
-A8F0	F7FB
-A8F2	2392
-A8F4	E7B6
-A8F6	C5B5
-A8F8	3571
-A8FA	22CF
-A8FC	26CD
-A8FE	7324
-A900	2034
-A902	F324
-A904	1034
-A906	7360
-A908	0430
-A90A	06CB
-A90C	16C9
-A90E	1AC7
-A910	1EC5
-A912	2AC3
-A914	2EC1
-A916	B2DE
-A918	B6DC
-A91A	BADA
-A91C	BED8
-A91E	C2D6
-A920	C6D4
-A922	F2D2
-A924	F6D0
-A926	FACE
-A928	FECC
-A92A	82E2
-A92C	86E0
-A92E	0AFE
-A930	0EFC
-A932	12FA
-A934	16F8
-A936	1AF6
-A938	1EF4
-A93A	2AF2
-A93C	2EF0
-A93E	32EE
-A940	36EC
-A942	3AEA
-A944	3EE8
-A946	42E6
-A948	46E4
-A94A	72E2
-A94C	76E0
-A94E	272E
-A950	E1FF
-A952	272C
-A954	F1FF
-A956	9770
-A958	FFFB
-A95A	E780
-A95C	20FC
-A95E	19C5
-A960	9770
-A962	FFFB
-A964	E780
-A966	80F8
-A968	631C
-A96A	0512
-A96C	9305
-A96E	0024
-A970	4145
-A972	97D0
-A974	FFFB
-A976	E780
-A978	2002
-A97A	8145
-A97C	9377
-A97E	1500
-A980	85C7
-A982	37D7
-A984	0124
-A986	B7A7
-A988	0124
-A98A	1307
-A98C	07C4
-A98E	9387
-A990	0753
-A992	0356
-A994	4707
-A996	83D6
-A998	A7B6
-A99A	0506
-A99C	93E6
-A99E	1600
-A9A0	231A
-A9A2	C706
-A9A4	2395
-A9A6	D7B6
-A9A8	9377
-A9AA	2500
-A9AC	85C7
-A9AE	37D7
-A9B0	0124
-A9B2	B7A7
-A9B4	0124
-A9B6	1307
-A9B8	07C4
-A9BA	9387
-A9BC	0753
-A9BE	0356
-A9C0	C70C
-A9C2	83D6
-A9C4	A7B6
-A9C6	0506
-A9C8	93E6
-A9CA	2600
-A9CC	2316
-A9CE	C70C
-A9D0	2395
-A9D2	D7B6
-A9D4	9377
-A9D6	0520
-A9D8	1375
-A9DA	0504
-A9DC	C5C3
-A9DE	B7D7
-A9E0	0124
-A9E2	9387
-A9E4	07C4
-A9E6	03D7
-A9E8	6708
-A9EA	0507
-A9EC	2393
-A9EE	E708
-A9F0	D1C5
-A9F2	37A7
-A9F4	0124
-A9F6	1307
-A9F8	0753
-A9FA	8356
-A9FC	A7B6
-A9FE	93E6
-AA00	0620
-AA02	2315
-AA04	D7B6
-AA06	11C9
-AA08	03D6
-AA0A	A708
-AA0C	0506
-AA0E	2395
-AA10	C708
-AA12	93E6
-AA14	0604
-AA16	2315
-AA18	D7B6
-AA1A	DA40
-AA1C	CA42
-AA1E	3A43
-AA20	AA43
-AA22	1A45
-AA24	8A45
-AA26	7656
-AA28	E656
-AA2A	5657
-AA2C	C657
-AA2E	3658
-AA30	A658
-AA32	165E
-AA34	865E
-AA36	764F
-AA38	E64F
-AA3A	1660
-AA3C	8660
-AA3E	7271
-AA40	E271
-AA42	5272
-AA44	C272
-AA46	3273
-AA48	A273
-AA4A	1275
-AA4C	8275
-AA4E	7266
-AA50	E266
-AA52	5267
-AA54	C267
-AA56	3268
-AA58	A268
-AA5A	126E
-AA5C	826E
-AA5E	072F
-AA60	C1FF
-AA62	872F
-AA64	81FF
-AA66	7370
-AA68	0430
-AA6A	7390
-AA6C	1434
-AA6E	7310
-AA70	2434
-AA72	7A44
-AA74	EA44
-AA76	0D61
-AA78	7300
-AA7A	2030
-AA7C	59DD
-AA7E	B7D7
-AA80	0124
-AA82	9387
-AA84	07C4
-AA86	03D7
-AA88	A708
-AA8A	0507
-AA8C	2395
-AA8E	E708
-AA90	C9D5
-AA92	37A7
-AA94	0124
-AA96	1307
-AA98	0753
-AA9A	8356
-AA9C	A7B6
-AA9E	95BF
-AAA0	B7A7
-AAA2	0124
-AAA4	83D5
-AAA6	8709
-AAA8	4145
-AAAA	97D0
-AAAC	FFFB
-AAAE	E780
-AAB0	A0EE
-AAB2	8545
-AAB4	E1B5
-AAB6	0100
-AAB8	8280
-AABA	0100
-AABC	1753
-AABE	02FC
-AAC0	E702
-AAC2	43A0
-AAC4	37E4
-AAC6	0124
-AAC8	1304
-AACA	044C
-AACC	8344
-AACE	E40A
-AAD0	8547
-AAD2	2307
-AAD4	F40A
-AAD6	97A0
-AAD8	FDFB
-AADA	E780
-AADC	E0EB
-AADE	2307
-AAE0	940A
-AAE2	1753
-AAE4	02FC
-AAE6	6700
-AAE8	23A0
-AAEA	0100
-AAEC	B7A7
-AAEE	0224
-AAF0	83C7
-AAF2	075A
-AAF4	0547
-AAF6	6383
-AAF8	E700
-AAFA	8280
-AAFC	1753
-AAFE	02FC
-AB00	E702
-AB02	A39A
-AB04	3794
-AB06	0124
-AB08	1304
-AB0A	0453
-AB0C	0347
-AB0E	041B
-AB10	4111
-AB12	6307
-AB14	F700
-AB16	4101
-AB18	1753
-AB1A	02FC
-AB1C	6700
-AB1E	239C
-AB20	8947
-AB22	E31A
-AB24	F5FE
-AB26	8347
-AB28	3441
-AB2A	ADC3
-AB2C	83A9
-AB2E	0500
-AB30	2EC6
-AB32	97C0
-AB34	01FC
-AB36	E780
-AB38	E0C0
-AB3A	AA84
-AB3C	9780
-AB3E	01FC
-AB40	E780
-AB42	40D0
-AB44	B245
-AB46	2A89
-AB48	9C41
-AB4A	63F3
-AB4C	9700
-AB4E	A687
-AB50	8851
-AB52	9CC1
-AB54	2EC6
-AB56	4A95
-AB58	97B0
-AB5A	00FC
-AB5C	E780
-AB5E	C0CD
-AB60	B245
-AB62	AA84
-AB64	E8C9
-AB66	3385
-AB68	2901
-AB6A	97B0
-AB6C	00FC
-AB6E	E780
-AB70	A0CC
-AB72	8567
-AB74	3E94
-AB76	8327
-AB78	C483
-AB7A	2695
-AB7C	B245
-AB7E	63F3
-AB80	A700
-AB82	AA87
-AB84	2322
-AB86	F498
-AB88	E8C5
-AB8A	71B7
-AB8C	0145
-AB8E	2EC6
-AB90	97B0
-AB92	01FC
-AB94	E780
-AB96	403E
-AB98	B245
-AB9A	AA89
-AB9C	51BF
-AB9E	0100
-ABA0	1753
-ABA2	02FC
-ABA4	E702
-ABA6	0392
-ABA8	2A84
-ABAA	EFE0
-ABAC	7F85
-ABAE	01E8
-ABB0	B7D7
-ABB2	0124
-ABB4	03A7
-ABB6	87C1
-ABB8	9147
-ABBA	6306
-ABBC	F700
-ABBE	1753
-ABC0	02FC
-ABC2	6700
-ABC4	6392
-ABC6	B7D7
-ABC8	0124
-ABCA	83C7
-ABCC	07FA
-ABCE	E5DB
-ABD0	B747
-ABD2	0124
-ABD4	83C7
-ABD6	27C4
-ABD8	FDF3
-ABDA	97E0
-ABDC	00FC
-ABDE	E780
-ABE0	60A0
-ABE2	B787
-ABE4	0224
-ABE6	0547
-ABE8	A380
-ABEA	E74E
-ABEC	C9BF
-ABEE	0100
-ABF0	1753
-ABF2	02FC
-ABF4	E702
-ABF6	038D
-ABF8	3784
-ABFA	0224
-ABFC	1304
-ABFE	C449
-AC00	8347
-AC02	5404
-AC04	99E7
-AC06	EFE0
-AC08	3F8B
-AC0A	1753
-AC0C	02FC
-AC0E	6700
-AC10	A38D
-AC12	97E0
-AC14	00FC
-AC16	E780
-AC18	E0B7
-AC1A	A302
-AC1C	0404
-AC1E	EFE0
-AC20	BF89
-AC22	1753
-AC24	02FC
-AC26	6700
-AC28	238C
-AC2A	0100
-AC2C	1753
-AC2E	02FC
-AC30	E702
-AC32	4389
-AC34	B7E7
-AC36	0124
-AC38	9387
-AC3A	0787
-AC3C	03A9
-AC3E	870E
-AC40	83A4
-AC42	C70E
-AC44	0146
-AC46	CA85
-AC48	2A84
-AC4A	2685
-AC4C	9740
-AC4E	01FC
-AC50	E780
-AC52	80DF
-AC54	2285
-AC56	97A0
-AC58	FFFB
-AC5A	E780
-AC5C	2047
-AC5E	0546
-AC60	CA85
-AC62	2685
-AC64	9740
-AC66	01FC
-AC68	E780
-AC6A	00DE
-AC6C	8547
-AC6E	6309
-AC70	F400
-AC72	9147
-AC74	6306
-AC76	F400
-AC78	1753
-AC7A	02FC
-AC7C	6700
-AC7E	C386
-AC80	9770
-AC82	FFFB
-AC84	E780
-AC86	80C9
-AC88	65F9
-AC8A	9770
-AC8C	FFFB
-AC8E	E780
-AC90	E0C5
-AC92	7DD1
-AC94	9770
-AC96	FFFB
-AC98	E780
-AC9A	C03F
-AC9C	19C9
-AC9E	B797
-ACA0	0124
-ACA2	9387
-ACA4	07D7
-ACA6	03C7
-ACA8	8703
-ACAA	83C7
-ACAC	2706
-ACAE	6306
-ACB0	F706
-ACB2	9770
-ACB4	FFFB
-ACB6	E780
-ACB8	E03D
-ACBA	5DDD
-ACBC	B797
-ACBE	0124
-ACC0	9387
-ACC2	07D7
-ACC4	03C7
-ACC6	C701
-ACC8	83C7
-ACCA	2706
-ACCC	E316
-ACCE	F7FA
-ACD0	B7B7
-ACD2	0224
-ACD4	83A7
-ACD6	8771
-ACD8	B706
-ACDA	0040
-ACDC	1386
-ACDE	4606
-ACE0	8965
-ACE2	3E96
-ACE4	1387
-ACE6	061F
-ACE8	9385
-ACEA	F5F1
-ACEC	2310
-ACEE	B600
-ACF0	3E97
-ACF2	7D56
-ACF4	2310
-ACF6	C700
-ACF8	37D6
-ACFA	0124
-ACFC	1306
-ACFE	06E7
-AD00	0357
-AD02	C605
-AD04	0356
-AD06	6606
-AD08	9386
-AD0A	861D
-AD0C	3297
-AD0E	4207
-AD10	B697
-AD12	4183
-AD14	2390
-AD16	E700
-AD18	85B7
-AD1A	B7B7
-AD1C	0224
-AD1E	83A7
-AD20	8771
-AD22	B706
-AD24	0040
-AD26	1386
-AD28	4606
-AD2A	8965
-AD2C	3E96
-AD2E	1387
-AD30	061F
-AD32	9385
-AD34	F5F1
-AD36	2310
-AD38	B600
-AD3A	3E97
-AD3C	7D56
-AD3E	2310
-AD40	C700
-AD42	37D6
-AD44	0124
-AD46	1306
-AD48	06E7
-AD4A	0357
-AD4C	0606
-AD4E	9386
-AD50	A61D
-AD52	0356
-AD54	6606
-AD56	5DBF
-AD58	1743
-AD5A	02FC
-AD5C	E702
-AD5E	8376
-AD60	B7D7
-AD62	0024
-AD64	83C7
-AD66	476D
-AD68	8544
-AD6A	6380
-AD6C	9714
-AD6E	B7E7
-AD70	0024
-AD72	03C4
-AD74	C784
-AD76	B7A7
-AD78	0124
-AD7A	83C7
-AD7C	6792
-AD7E	3334
-AD80	8000
-AD82	3304
-AD84	8040
-AD86	7998
-AD88	1304
-AD8A	6402
-AD8C	EDE7
-AD8E	B767
-AD90	0024
-AD92	9387
-AD94	0733
-AD96	03D7
-AD98	E75B
-AD9A	19C7
-AD9C	1347
-AD9E	F7FF
-ADA0	618F
-ADA2	1314
-ADA4	0701
-ADA6	4180
-ADA8	83D7
-ADAA	075C
-ADAC	0D45
-ADAE	5D8C
-ADB0	4204
-ADB2	4180
-ADB4	A285
-ADB6	97D0
-ADB8	FFFB
-ADBA	E780
-ADBC	20C5
-ADBE	9315
-ADC0	0501
-ADC2	C181
-ADC4	AA84
-ADC6	6309
-ADC8	B400
-ADCA	0565
-ADCC	A18D
-ADCE	2D05
-ADD0	97A0
-ADD2	FFFB
-ADD4	E780
-ADD6	0050
-ADD8	1395
-ADDA	0401
-ADDC	93F7
-ADDE	1400
-ADE0	4181
-ADE2	91CB
-ADE4	B7D7
-ADE6	0124
-ADE8	9387
-ADEA	07C4
-ADEC	03D7
-ADEE	4707
-ADF0	0507
-ADF2	239A
-ADF4	E706
-ADF6	9377
-ADF8	2500
-ADFA	91CB
-ADFC	B7D7
-ADFE	0124
-AE00	9387
-AE02	07C4
-AE04	03D7
-AE06	C70C
-AE08	0507
-AE0A	2396
-AE0C	E70C
-AE0E	9377
-AE10	4500
-AE12	91CB
-AE14	B7D7
-AE16	0124
-AE18	9387
-AE1A	07C4
-AE1C	03D7
-AE1E	E70C
-AE20	0507
-AE22	2397
-AE24	E70C
-AE26	9377
-AE28	0502
-AE2A	91CB
-AE2C	B7D7
-AE2E	0124
-AE30	9387
-AE32	07C4
-AE34	03D7
-AE36	070F
-AE38	0507
-AE3A	2398
-AE3C	E70E
-AE3E	9377
-AE40	0520
-AE42	91CB
-AE44	B7D7
-AE46	0124
-AE48	9387
-AE4A	07C4
-AE4C	03D7
-AE4E	6708
-AE50	0507
-AE52	2393
-AE54	E708
-AE56	1375
-AE58	0504
-AE5A	11C9
-AE5C	B7D7
-AE5E	0124
-AE60	9387
-AE62	07C4
-AE64	03D7
-AE66	A708
-AE68	0507
-AE6A	2395
-AE6C	E708
-AE6E	1743
-AE70	02FC
-AE72	6700
-AE74	6367
-AE76	B7D7
-AE78	0124
-AE7A	83D7
-AE7C	A7E7
-AE7E	81DB
-AE80	9760
-AE82	FEFB
-AE84	E780
-AE86	0072
-AE88	6311
-AE8A	9506
-AE8C	B797
-AE8E	0124
-AE90	9387
-AE92	07D7
-AE94	03C7
-AE96	C701
-AE98	83C7
-AE9A	2706
-AE9C	6307
-AE9E	F704
-AEA0	1364
-AEA2	0424
-AEA4	4204
-AEA6	4180
-AEA8	11A0
-AEAA	0144
-AEAC	B767
-AEAE	0024
-AEB0	9387
-AEB2	0733
-AEB4	03C7
-AEB6	273B
-AEB8	E30F
-AEBA	07EC
-AEBC	37A7
-AEBE	0124
-AEC0	0347
-AEC2	6792
-AEC4	E309
-AEC6	07EC
-AEC8	37D7
-AECA	0124
-AECC	0357
-AECE	A7E7
-AED0	E303
-AED2	07EC
-AED4	3797
-AED6	0124
-AED8	0347
-AEDA	1700
-AEDC	E30D
-AEDE	07EA
-AEE0	1374
-AEE2	F4DF
-AEE4	4204
-AEE6	4180
-AEE8	7DB5
-AEEA	9760
-AEEC	FEFB
-AEEE	E780
-AEF0	606B
-AEF2	8547
-AEF4	E31C
-AEF6	F5FA
-AEF8	B797
-AEFA	0124
-AEFC	9387
-AEFE	07D7
-AF00	03C7
-AF02	C701
-AF04	83C7
-AF06	2706
-AF08	E312
-AF0A	F7FA
-AF0C	1364
-AF0E	0420
-AF10	4204
-AF12	4180
-AF14	61BF
-AF16	0100
-AF18	7171
-AF1A	22D7
-AF1C	26D5
-AF1E	7324
-AF20	2034
-AF22	F324
-AF24	1034
-AF26	7360
-AF28	0430
-AF2A	2EC5
-AF2C	A565
-AF2E	BEDC
-AF30	06D3
-AF32	16D1
-AF34	1ACF
-AF36	1ECD
-AF38	22CB
-AF3A	2AC7
-AF3C	32C3
-AF3E	36C1
-AF40	BADE
-AF42	C2DA
-AF44	C6D8
-AF46	F2D0
-AF48	F6CE
-AF4A	FACC
-AF4C	FECA
-AF4E	82E2
-AF50	86E0
-AF52	0AFE
-AF54	0EFC
-AF56	12FA
-AF58	16F8
-AF5A	1AF6
-AF5C	1EF4
-AF5E	2AF2
-AF60	2EF0
-AF62	32EE
-AF64	26C9
-AF66	CAD6
-AF68	CED4
-AF6A	D2D2
-AF6C	9385
-AF6E	0540
-AF70	0545
-AF72	36EC
-AF74	3AEA
-AF76	3EE8
-AF78	42E6
-AF7A	46E4
-AF7C	72E2
-AF7E	76E0
-AF80	272E
-AF82	E1FF
-AF84	272C
-AF86	F1FF
-AF88	97D0
-AF8A	FFFB
-AF8C	E780
-AF8E	C0A0
-AF90	A167
-AF92	E98F
-AF94	2A84
-AF96	6394
-AF98	0718
-AF9A	B764
-AF9C	0124
-AF9E	9384
-AFA0	0440
-AFA2	8567
-AFA4	E18F
-AFA6	CDCF
-AFA8	37D7
-AFAA	0124
-AFAC	3789
-AFAE	0224
-AFB0	1307
-AFB2	07C4
-AFB4	1309
-AFB6	C949
-AFB8	8356
-AFBA	670E
-AFBC	8327
-AFBE	0905
-AFC0	8506
-AFC2	8507
-AFC4	2328
-AFC6	F904
-AFC8	2313
-AFCA	D70E
-AFCC	858B
-AFCE	639F
-AFD0	071A
-AFD2	8547
-AFD4	A30A
-AFD6	F904
-AFD8	9770
-AFDA	FFFB
-AFDC	E780
-AFDE	8008
-AFE0	19C5
-AFE2	0357
-AFE4	4905
-AFE6	9307
-AFE8	1010
-AFEA	6306
-AFEC	F724
-AFEE	DC50
-AFF0	0945
-AFF2	8297
-AFF4	9770
-AFF6	FFFB
-AFF8	E780
-AFFA	408F
-AFFC	11C5
-AFFE	9770
-B000	FFFB
-B002	E780
-B004	A091
-B006	55C5
-B008	9760
-B00A	00FC
-B00C	E780
-B00E	C063
-B010	B787
-B012	0024
-B014	83C7
-B016	078C
-B018	AA89
-B01A	6392
-B01C	071C
-B01E	B7D7
-B020	0124
-B022	9387
-B024	07E7
-B026	BC5F
-B028	639A
-B02A	0716
-B02C	3799
-B02E	0124
-B030	1309
-B032	0953
-B034	B727
-B036	0024
-B038	83C7
-B03A	7752
-B03C	6396
-B03E	071E
-B040	0345
-B042	C918
-B044	631D
-B046	051C
-B048	DC50
-B04A	0D45
-B04C	8297
-B04E	4E85
-B050	9760
-B052	00FC
-B054	E780
-B056	8063
-B058	8567
-B05A	3E99
-B05C	2320
-B05E	A9A2
-B060	1374
-B062	0440
-B064	21C4
-B066	B7D7
-B068	0124
-B06A	9387
-B06C	07C4
-B06E	37A7
-B070	0124
-B072	83D6
-B074	670E
-B076	1307
-B078	0753
-B07A	0347
-B07C	179B
-B07E	8506
-B080	3784
-B082	0224
-B084	1304
-B086	C449
-B088	1337
-B08A	1700
-B08C	2393
-B08E	D70E
-B090	230A
-B092	E404
-B094	9770
-B096	FFFB
-B098	E780
-B09A	C0FC
-B09C	6306
-B09E	0510
-B0A0	0357
-B0A2	4405
-B0A4	9307
-B0A6	1010
-B0A8	6300
-B0AA	F710
-B0AC	DC50
-B0AE	1D45
-B0B0	8297
-B0B2	9A50
-B0B4	8A52
-B0B6	7A43
-B0B8	EA43
-B0BA	5A44
-B0BC	CA44
-B0BE	3A45
-B0C0	AA45
-B0C2	1A46
-B0C4	8A46
-B0C6	7657
-B0C8	E657
-B0CA	5658
-B0CC	C658
-B0CE	3659
-B0D0	A659
-B0D2	165A
-B0D4	065E
-B0D6	F64E
-B0D8	664F
-B0DA	D64F
-B0DC	1660
-B0DE	8660
-B0E0	7271
-B0E2	E271
-B0E4	5272
-B0E6	C272
-B0E8	3273
-B0EA	A273
-B0EC	1275
-B0EE	8275
-B0F0	7266
-B0F2	E266
-B0F4	5267
-B0F6	C267
-B0F8	3268
-B0FA	A268
-B0FC	126E
-B0FE	826E
-B100	072F
-B102	C1FF
-B104	872F
-B106	81FF
-B108	7370
-B10A	0430
-B10C	7390
-B10E	1434
-B110	7310
-B112	2434
-B114	3A54
-B116	AA54
-B118	4D61
-B11A	7300
-B11C	2030
-B11E	37D9
-B120	0124
-B122	1309
-B124	09C4
-B126	8357
-B128	490E
-B12A	B764
-B12C	0124
-B12E	9384
-B130	0440
-B132	D850
-B134	8507
-B136	0145
-B138	2312
-B13A	F90E
-B13C	0297
-B13E	9760
-B140	FFFB
-B142	E780
-B144	A07A
-B146	25E5
-B148	B729
-B14A	0024
-B14C	3799
-B14E	0124
-B150	9389
-B152	0933
-B154	1309
-B156	0953
-B158	056A
-B15A	83C7
-B15C	791F
-B15E	4A9A
-B160	2320
-B162	0AA2
-B164	B9EF
-B166	0345
-B168	C918
-B16A	2DE5
-B16C	83C7
-B16E	0920
-B170	89C7
-B172	0327
-B174	4AB3
-B176	630A
-B178	F700
-B17A	97E0
-B17C	00FC
-B17E	E780
-B180	60DC
-B182	DC50
-B184	0545
-B186	8297
-B188	29BD
-B18A	01A0
-B18C	8547
-B18E	230A
-B190	0904
-B192	A30A
-B194	0904
-B196	2328
-B198	F904
-B19A	3DBD
-B19C	7D55
-B19E	9770
-B1A0	01FC
-B1A2	E780
-B1A4	200E
-B1A6	59B5
-B1A8	EFE0
-B1AA	DFE2
-B1AC	01B7
-B1AE	9760
-B1B0	FFFB
-B1B2	E780
-B1B4	A076
-B1B6	49F9
-B1B8	8357
-B1BA	490E
-B1BC	858B
-B1BE	C9F7
-B1C0	CDBD
-B1C2	9770
-B1C4	01FC
-B1C6	E780
-B1C8	A00C
-B1CA	2311
-B1CC	A94E
-B1CE	0345
-B1D0	C918
-B1D2	49DD
-B1D4	97C0
-B1D6	FFFB
-B1D8	E780
-B1DA	C0BD
-B1DC	41BF
-B1DE	9770
-B1E0	01FC
-B1E2	E780
-B1E4	E00A
-B1E6	3799
-B1E8	0124
-B1EA	1309
-B1EC	0953
-B1EE	8D67
-B1F0	CA97
-B1F2	03C7
-B1F4	D76F
-B1F6	232E
-B1F8	A94E
-B1FA	8547
-B1FC	6306
-B1FE	F700
-B200	8327
-B202	094F
-B204	E377
-B206	F5EA
-B208	9760
-B20A	00FC
-B20C	E780
-B20E	0006
-B210	9770
-B212	01FC
-B214	E780
-B216	C007
-B218	2320
-B21A	A950
-B21C	21BD
-B21E	97C0
-B220	FFFB
-B222	E780
-B224	20BC
-B226	0DB5
-B228	9770
-B22A	01FC
-B22C	E780
-B22E	4006
-B230	2312
-B232	A94E
-B234	31B5
-B236	EFE0
-B238	FFD9
-B23A	55BB
-B23C	1743
-B23E	02FC
-B240	E702
-B242	4328
-B244	2A84
-B246	EFD0
-B248	3FB1
-B24A	8947
-B24C	6306
-B24E	F400
-B250	1743
-B252	02FC
-B254	6700
-B256	4329
-B258	B7A4
-B25A	0224
-B25C	9384
-B25E	8454
-B260	83C7
-B262	1406
-B264	F5F7
-B266	9770
-B268	FFFB
-B26A	E780
-B26C	A0ED
-B26E	6DF1
-B270	9770
-B272	FFFB
-B274	E780
-B276	40EE
-B278	61FD
-B27A	3725
-B27C	0224
-B27E	1305
-B280	05ED
-B282	9700
-B284	FFFB
-B286	E780
-B288	2005
-B28A	B767
-B28C	0124
-B28E	83A7
-B290	0740
-B292	0549
-B294	37A7
-B296	0124
-B298	1D45
-B29A	2305
-B29C	2723
-B29E	8297
-B2A0	A380
-B2A2	2407
-B2A4	9780
-B2A6	01FC
-B2A8	E780
-B2AA	008E
-B2AC	55F1
-B2AE	B727
-B2B0	0124
-B2B2	2380
-B2B4	8754
-B2B6	97B0
-B2B8	FEFB
-B2BA	E780
-B2BC	600D
-B2BE	2381
-B2C0	2407
-B2C2	79B7
-B2C4	1743
-B2C6	02FC
-B2C8	E702
-B2CA	C31F
-B2CC	37A4
-B2CE	0224
-B2D0	1304
-B2D2	8454
-B2D4	0347
-B2D6	2406
-B2D8	8547
-B2DA	630A
-B2DC	F700
-B2DE	97B0
-B2E0	FEFB
-B2E2	E780
-B2E4	E074
-B2E6	1743
-B2E8	02FC
-B2EA	6700
-B2EC	E31F
-B2EE	9780
-B2F0	01FC
-B2F2	E780
-B2F4	6089
-B2F6	65F5
-B2F8	97B0
-B2FA	FEFB
-B2FC	E780
-B2FE	801A
-B300	2301
-B302	0406
-B304	E9BF
-B306	0100
-B308	1743
-B30A	02FC
-B30C	E702
-B30E	831B
-B310	9D47
-B312	631F
-B314	F500
-B316	3794
-B318	0124
-B31A	1304
-B31C	0453
-B31E	8567
-B320	A297
-B322	83C7
-B324	A7CF
-B326	99EB
-B328	1743
-B32A	02FC
-B32C	6700
-B32E	C31B
-B330	EFD0
-B332	9FE8
-B334	1743
-B336	02FC
-B338	6700
-B33A	031B
-B33C	9770
-B33E	FFFB
-B340	E780
-B342	40E0
-B344	75F1
-B346	9770
-B348	FFFB
-B34A	E780
-B34C	E0E0
-B34E	69FD
-B350	8D67
-B352	3E94
-B354	8327
-B356	846D
-B358	B724
-B35A	0124
-B35C	9384
-B35E	045F
-B360	91EF
-B362	83A7
-B364	440E
-B366	99CB
-B368	B7D7
-B36A	0124
-B36C	83C7
-B36E	07FA
-B370	C5DF
-B372	9700
-B374	FFFB
-B376	E780
-B378	A0EF
-B37A	7DB7
-B37C	83A7
-B37E	C40A
-B380	C5D7
-B382	0545
-B384	9730
-B386	FEFB
-B388	E780
-B38A	005E
-B38C	B735
-B38E	202D
-B390	7578
-B392	37F5
-B394	202D
-B396	9385
-B398	0560
-B39A	1308
-B39C	08A0
-B39E	9168
-B3A0	1305
-B3A2	0560
-B3A4	B387
-B3A6	0501
-B3A8	03C7
-B3AA	0700
-B3AC	9306
-B3AE	F00F
-B3B0	1316
-B3B2	8701
-B3B4	6186
-B3B6	0607
-B3B8	6344
-B3BA	0600
-B3BC	9376
-B3BE	F70F
-B3C0	2380
-B3C2	D700
-B3C4	8507
-B3C6	E391
-B3C8	B7FE
-B3CA	B385
-B3CC	1701
-B3CE	E39B
-B3D0	A5FC
-B3D2	B7A7
-B3D4	0224
-B3D6	0547
-B3D8	0145
-B3DA	A384
-B3DC	E75A
-B3DE	9730
-B3E0	FEFB
-B3E2	E780
-B3E4	6058
-B3E6	B7D7
-B3E8	0124
-B3EA	83C7
-B3EC	07FA
-B3EE	8DDF
-B3F0	8327
-B3F2	846D
-B3F4	95FB
-B3F6	83A7
-B3F8	440E
-B3FA	9DD7
-B3FC	9DBF
-B3FE	0100
-B400	1743
-B402	02FC
-B404	E702
-B406	030C
-B408	B7D7
-B40A	0124
-B40C	9387
-B40E	07F4
-B410	03C7
-B412	1705
-B414	2A84
-B416	11C7
-B418	03C7
-B41A	1700
-B41C	8947
-B41E	6301
-B420	F704
-B422	B7E7
-B424	0124
-B426	9387
-B428	0787
-B42A	03A9
-B42C	870F
-B42E	83A4
-B430	C70F
-B432	0146
-B434	CA85
-B436	2685
-B438	9730
-B43A	01FC
-B43C	E780
-B43E	C060
-B440	2285
-B442	97D0
-B444	FEFB
-B446	E780
-B448	A0E3
-B44A	0546
-B44C	CA85
-B44E	2685
-B450	9730
-B452	01FC
-B454	E780
-B456	405F
-B458	1743
-B45A	02FC
-B45C	6700
-B45E	C308
-B460	B7E7
-B462	0024
-B464	83D6
-B466	C7C8
-B468	8567
-B46A	1387
-B46C	F7B3
-B46E	E39A
-B470	E6FA
-B472	3797
-B474	0124
-B476	1307
-B478	0753
-B47A	BA97
-B47C	03A5
-B47E	07B2
-B480	8145
-B482	3325
-B484	A000
-B486	97D0
-B488	00FC
-B48A	E780
-B48C	A0C8
-B48E	51BF
-B490	1743
-B492	02FC
-B494	E702
-B496	0303
-B498	9760
-B49A	FFFB
-B49C	E780
-B49E	0045
-B4A0	11C5
-B4A2	B7E7
-B4A4	0024
-B4A6	83C7
-B4A8	C784
-B4AA	BDEF
-B4AC	1384
-B4AE	81E7
-B4B0	0347
-B4B2	8400
-B4B4	8547
-B4B6	6303
-B4B8	F706
-B4BA	0357
-B4BC	2403
-B4BE	B767
-B4C0	0040
-B4C2	2398
-B4C4	E718
-B4C6	8357
-B4C8	4403
-B4CA	3767
-B4CC	0040
-B4CE	2314
-B4D0	F720
-B4D2	9760
-B4D4	FFFB
-B4D6	E780
-B4D8	6041
-B4DA	19C5
-B4DC	B7E7
-B4DE	0024
-B4E0	03C7
-B4E2	C784
-B4E4	8147
-B4E6	09EB
-B4E8	8346
-B4EA	8400
-B4EC	0547
-B4EE	8147
-B4F0	6384
-B4F2	E600
-B4F4	8357
-B4F6	C405
-B4F8	37A7
-B4FA	0040
-B4FC	2312
-B4FE	F710
-B500	9770
-B502	FFFB
-B504	E780
-B506	00C4
-B508	35C1
-B50A	9770
-B50C	FFFB
-B50E	E780
-B510	A0C4
-B512	05C9
-B514	1743
-B516	02FC
-B518	6700
-B51A	03FD
-B51C	B767
-B51E	0040
-B520	2398
-B522	0718
-B524	8147
-B526	55B7
-B528	B767
-B52A	0040
-B52C	2398
-B52E	0718
-B530	1384
-B532	81E7
-B534	8346
-B536	8400
-B538	0547
-B53A	8147
-B53C	E395
-B53E	E6F8
-B540	69B7
-B542	9760
-B544	FFFB
-B546	E780
-B548	603A
-B54A	31ED
-B54C	8346
-B54E	8400
-B550	0547
-B552	8147
-B554	6384
-B556	E600
-B558	8357
-B55A	4408
-B55C	3787
-B55E	0040
-B560	2314
-B562	F710
-B564	1743
-B566	02FC
-B568	6700
-B56A	03F8
-B56C	9770
-B56E	FFFB
-B570	E780
-B572	80BE
-B574	59F9
-B576	9760
-B578	FFFB
-B57A	E780
-B57C	2037
-B57E	19C5
-B580	B7E7
-B582	0024
-B584	03C7
-B586	C784
-B588	8147
-B58A	09EB
-B58C	8346
-B58E	8400
-B590	0547
-B592	8147
-B594	6384
-B596	E600
-B598	8357
-B59A	6407
-B59C	3707
-B59E	0140
-B5A0	2314
-B5A2	F710
-B5A4	9DB7
-B5A6	B7E7
-B5A8	0024
-B5AA	03C7
-B5AC	C784
-B5AE	8147
-B5B0	55F7
-B5B2	69BF
-B5B4	1743
-B5B6	02FC
-B5B8	E702
-B5BA	23EF
-B5BC	B747
-B5BE	0124
-B5C0	03D7
-B5C2	C7E1
-B5C4	8947
-B5C6	2A84
-B5C8	AE84
-B5CA	6319
-B5CC	F700
-B5CE	B7A7
-B5D0	0124
-B5D2	03A7
-B5D4	4706
-B5D6	FD57
-B5D8	630E
-B5DA	F702
-B5DC	B7E7
-B5DE	0124
-B5E0	9387
-B5E2	0787
-B5E4	83A9
-B5E6	8710
-B5E8	03A9
-B5EA	C710
-B5EC	0146
-B5EE	CE85
-B5F0	4A85
-B5F2	9730
-B5F4	01FC
-B5F6	E780
-B5F8	2045
-B5FA	A685
-B5FC	2285
-B5FE	97D0
-B600	00FC
-B602	E780
-B604	20B1
-B606	0546
-B608	CE85
-B60A	4A85
-B60C	9730
-B60E	01FC
-B610	E780
-B612	8043
-B614	1743
-B616	02FC
-B618	6700
-B61A	63EC
-B61C	1743
-B61E	02FC
-B620	E702
-B622	43EA
-B624	B7B6
-B626	0224
-B628	B787
-B62A	0324
-B62C	9386
-B62E	C671
-B630	37A7
-B632	0124
-B634	9387
-B636	07FF
-B638	1307
-B63A	0753
-B63C	958F
-B63E	232C
-B640	D7B4
-B642	232E
-B644	F7B4
-B646	9730
-B648	01FC
-B64A	E780
-B64C	A0E3
-B64E	01C5
-B650	EFE0
-B652	5FD7
-B654	3120
-B656	1743
-B658	02FC
-B65A	6700
-B65C	E3E8
-B65E	0100
-B660	1743
-B662	02FC
-B664	E702
-B666	03E6
-B668	B7B7
-B66A	0224
-B66C	9387
-B66E	C7AB
-B670	23AE
-B672	F194
-B674	3764
-B676	0124
-B678	9D66
-B67A	B7B5
-B67C	0224
-B67E	B7A7
-B680	0224
-B682	1304
-B684	0440
-B686	9387
-B688	077B
-B68A	9386
-B68C	F6BF
-B68E	1146
-B690	9385
-B692	85F1
-B694	0545
-B696	5CC4
-B698	97E0
-B69A	FFFB
-B69C	E780
-B69E	802F
-B6A0	C166
-B6A2	B7B5
-B6A4	0224
-B6A6	FD16
-B6A8	3146
-B6AA	9385
-B6AC	858F
-B6AE	4145
-B6B0	97E0
-B6B2	FFFB
-B6B4	E780
-B6B6	002E
-B6B8	37B7
-B6BA	0224
-B6BC	1307
-B6BE	C7AE
-B6C0	B7A7
-B6C2	0224
-B6C4	9387
-B6C6	8754
-B6C8	78C8
-B6CA	37B7
-B6CC	0224
-B6CE	A380
-B6D0	0706
-B6D2	2381
-B6D4	0706
-B6D6	1307
-B6D8	07BA
-B6DA	B7B7
-B6DC	0224
-B6DE	18D4
-B6E0	9387
-B6E2	C723
-B6E4	37B7
-B6E6	0224
-B6E8	7CC4
-B6EA	1307
-B6EC	8730
-B6EE	B7B7
-B6F0	0224
-B6F2	18C0
-B6F4	9387
-B6F6	472C
-B6F8	23AA
-B6FA	F1A4
-B6FC	1743
-B6FE	02FC
-B700	6700
-B702	83DE
-B704	0000
-B706	0000
-B708	5410
-B70A	E538
-B70C	0000
-B70E	0000
-B710	BF3F
-B712	0000
-B714	0000
-B716	0000
-B718	008D
-B71A	0000
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	0010
-84C8	1CB6
-84CA	0224
-84CC	B8AA
-84CE	0224
-84D0	B8AA
-84D2	0224
-84D4	B8AA
-84D6	0224
-84D8	B8AA
-84DA	0224
-84DC	B8AA
-84DE	0224
-A548	001D
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00D5
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	0101
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	F0AB
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	B0A5
-570A	0224
-570C	0453
-570E	0020
-5710	20A7
-5712	0224
-5714	C850
-5716	0220
-5718	2CAC
-571A	0224
-571C	2C88
-571E	0220
-5720	58AD
-5722	0224
-5724	7C82
-5726	0120
-5728	00B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	90B4
-5732	0224
-5734	1081
-5736	0320
-5738	B4B5
-573A	0224
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-23F0	0000
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-FCFC	4000
-011C	0100
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3234	0134
-3236	2A00
-3238	0A03
-323A	202A
-323C	010F
-323E	040F
-3240	0A3F
-3242	0A55
-3244	0101
-3246	0101
-3248	0010
-3252	E000
-3254	DC00
-3256	D900
-3258	D600
-325A	D300
-3266	0100
-3268	0200
-326A	2A00
-326C	0000
-326E	3F00
-3270	0A00
-3272	1900
-3274	0C00
-3276	2000
-3278	2300
-327A	2100
-327C	3000
-327E	1100
-3280	0C00
-3282	2000
-3284	2300
-3286	2100
-3288	3000
-328A	1100
-328C	0F00
-328E	1900
-3290	0A00
-3292	0B00
-3296	0800
-3298	0F00
-329A	1900
-329C	0A00
-329E	0B00
-32A0	0000
-32A2	0800
-32A4	0F00
-32A6	1900
-32A8	0A00
-32AA	0B00
-32AC	0000
-32AE	0800
-3330	0108
-3334	0100
-3336	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/C1_short-init_front_0404.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/C1_short-init_front_0404.txt
deleted file mode 100755
index 30d99a27..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/C1_short-init_front_0404.txt
+++ /dev/null
@@ -1,2845 +0,0 @@
-FCFC	4000
-0000	0008
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0101
-FCFC	2001
-3C60	0000
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	0010
-84C8	1CB6
-84CA	0224
-84CC	B8AA
-84CE	0224
-84D0	B8AA
-84D2	0224
-84D4	B8AA
-84D6	0224
-84D8	B8AA
-84DA	0224
-84DC	B8AA
-84DE	0224
-A548	001D
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00D5
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	0101
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	F0AB
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	B0A5
-570A	0224
-570C	0453
-570E	0020
-5710	20A7
-5712	0224
-5714	C850
-5716	0220
-5718	2CAC
-571A	0224
-571C	2C88
-571E	0220
-5720	58AD
-5722	0224
-5724	7C82
-5726	0120
-5728	00B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	90B4
-5732	0224
-5734	1081
-5736	0320
-5738	B4B5
-573A	0224
-FCFC	2002
-A5B0	1753
-A5B2	02FC
-A5B4	E702
-A5B6	03F1
-A5B8	B7E7
-A5BA	0124
-A5BC	9387
-A5BE	0787
-A5C0	83A4
-A5C2	870D
-A5C4	03A4
-A5C6	C70D
-A5C8	0146
-A5CA	A685
-A5CC	2285
-A5CE	9740
-A5D0	01FC
-A5D2	E780
-A5D4	6047
-A5D6	97B0
-A5D8	FEFB
-A5DA	E780
-A5DC	E0E2
-A5DE	0546
-A5E0	A685
-A5E2	2285
-A5E4	9740
-A5E6	01FC
-A5E8	E780
-A5EA	0046
-A5EC	37A7
-A5EE	0224
-A5F0	9307
-A5F2	8754
-A5F4	03C6
-A5F6	C702
-A5F8	8546
-A5FA	630B
-A5FC	D600
-A5FE	83C6
-A600	0700
-A602	0947
-A604	638E
-A606	E606
-A608	1753
-A60A	02FC
-A60C	6700
-A60E	C3ED
-A610	03D5
-A612	4705
-A614	05C9
-A616	83D8
-A618	2705
-A61A	B7E6
-A61C	0124
-A61E	83D5
-A620	665F
-A622	1307
-A624	8754
-A626	8146
-A628	2548
-A62A	0356
-A62C	E702
-A62E	0907
-A630	63EA
-A632	C50C
-A634	8506
-A636	E39A
-A638	06FF
-A63A	3707
-A63C	0040
-A63E	3A95
-A640	2310
-A642	1501
-A644	03D5
-A646	6705
-A648	5DD9
-A64A	83D8
-A64C	2705
-A64E	37E7
-A650	0124
-A652	8355
-A654	675F
-A656	BE86
-A658	0147
-A65A	2548
-A65C	03D6
-A65E	E602
-A660	8906
-A662	63E8
-A664	C50A
-A666	0507
-A668	E31A
-A66A	07FF
-A66C	3707
-A66E	0040
-A670	3A95
-A672	2310
-A674	1501
-A676	83C6
-A678	0700
-A67A	0947
-A67C	E396
-A67E	E6F8
-A680	03D5
-A682	8702
-A684	1DC5
-A686	83D8
-A688	6702
-A68A	37F7
-A68C	0124
-A68E	8355
-A690	A781
-A692	BE86
-A694	0147
-A696	2548
-A698	03D6
-A69A	2600
-A69C	8906
-A69E	63ED
-A6A0	C504
-A6A2	0507
-A6A4	E31A
-A6A6	07FF
-A6A8	3707
-A6AA	0040
-A6AC	3A95
-A6AE	2310
-A6B0	1501
-A6B2	03D5
-A6B4	A702
-A6B6	29D9
-A6B8	83D8
-A6BA	6702
-A6BC	37F7
-A6BE	0124
-A6C0	8355
-A6C2	A781
-A6C4	BE86
-A6C6	0147
-A6C8	2548
-A6CA	03D6
-A6CC	2600
-A6CE	8906
-A6D0	63EE
-A6D2	C500
-A6D4	0507
-A6D6	E31A
-A6D8	07FF
-A6DA	B707
-A6DC	0040
-A6DE	3E95
-A6E0	2310
-A6E2	1501
-A6E4	1753
-A6E6	02FC
-A6E8	6700
-A6EA	03E0
-A6EC	2107
-A6EE	0607
-A6F0	BA97
-A6F2	83D8
-A6F4	4700
-A6F6	D5B7
-A6F8	2107
-A6FA	0607
-A6FC	3E97
-A6FE	8358
-A700	4700
-A702	5DB7
-A704	1387
-A706	0602
-A708	0607
-A70A	3E97
-A70C	8358
-A70E	0700
-A710	2DB7
-A712	1307
-A714	0702
-A716	0607
-A718	3E97
-A71A	8358
-A71C	0700
-A71E	B9B7
-A720	1753
-A722	02FC
-A724	E702
-A726	83D7
-A728	3284
-A72A	B7E7
-A72C	0124
-A72E	032B
-A730	4600
-A732	832A
-A734	4609
-A736	032A
-A738	C604
-A73A	0348
-A73C	8600
-A73E	9387
-A740	0787
-A742	0346
-A744	8609
-A746	0347
-A748	0405
-A74A	03AC
-A74C	070E
-A74E	83AB
-A750	470E
-A752	3318
-A754	0B01
-A756	3317
-A758	EA00
-A75A	3396
-A75C	CA00
-A75E	2322
-A760	0401
-A762	78C4
-A764	AA84
-A766	2E89
-A768	232A
-A76A	C408
-A76C	E285
-A76E	5E85
-A770	0146
-A772	B689
-A774	9740
-A776	01FC
-A778	E780
-A77A	002D
-A77C	CE86
-A77E	2286
-A780	CA85
-A782	2685
-A784	97B0
-A786	FDFB
-A788	E780
-A78A	00B8
-A78C	0546
-A78E	E285
-A790	5E85
-A792	9740
-A794	01FC
-A796	E780
-A798	202B
-A79A	2322
-A79C	6401
-A79E	232A
-A7A0	5409
-A7A2	2326
-A7A4	4405
-A7A6	1753
-A7A8	02FC
-A7AA	6700
-A7AC	A3D2
-A7AE	0100
-A7B0	1753
-A7B2	02FC
-A7B4	E702
-A7B6	03D1
-A7B8	2A84
-A7BA	EFE0
-A7BC	AFB2
-A7BE	A147
-A7C0	6306
-A7C2	F400
-A7C4	1753
-A7C6	02FC
-A7C8	6700
-A7CA	03D2
-A7CC	9770
-A7CE	FFFB
-A7D0	E780
-A7D2	C014
-A7D4	39C5
-A7D6	B737
-A7D8	0124
-A7DA	83C7
-A7DC	271A
-A7DE	FDD3
-A7E0	3784
-A7E2	0040
-A7E4	8355
-A7E6	E4F3
-A7E8	0D45
-A7EA	93E5
-A7EC	0524
-A7EE	97D0
-A7F0	FFFB
-A7F2	E780
-A7F4	6013
-A7F6	8355
-A7F8	24F7
-A7FA	B7A7
-A7FC	0124
-A7FE	9387
-A800	0753
-A802	03D7
-A804	47B6
-A806	C205
-A808	C181
-A80A	1377
-A80C	F7DB
-A80E	93F5
-A810	F5DB
-A812	4145
-A814	2392
-A816	E7B6
-A818	97D0
-A81A	FFFB
-A81C	E780
-A81E	C010
-A820	55B7
-A822	9770
-A824	FFFB
-A826	E780
-A828	600C
-A82A	55D5
-A82C	9780
-A82E	FFFB
-A830	E780
-A832	4086
-A834	19C9
-A836	B797
-A838	0124
-A83A	9387
-A83C	07D7
-A83E	03C7
-A840	8703
-A842	83C7
-A844	2706
-A846	6306
-A848	F706
-A84A	9780
-A84C	FFFB
-A84E	E780
-A850	6084
-A852	51D1
-A854	B797
-A856	0124
-A858	9387
-A85A	07D7
-A85C	03C7
-A85E	C701
-A860	83C7
-A862	2706
-A864	E319
-A866	F7F6
-A868	B727
-A86A	0224
-A86C	0564
-A86E	9387
-A870	076B
-A872	A297
-A874	03C7
-A876	F780
-A878	8547
-A87A	6317
-A87C	F700
-A87E	B737
-A880	0124
-A882	83C7
-A884	57A5
-A886	B1C3
-A888	B787
-A88A	0040
-A88C	83D5
-A88E	E7F3
-A890	0D45
-A892	93E5
-A894	0501
-A896	97D0
-A898	FFFB
-A89A	E780
-A89C	E008
-A89E	B7A7
-A8A0	0124
-A8A2	9387
-A8A4	0753
-A8A6	03D7
-A8A8	47B6
-A8AA	3D9B
-A8AC	2392
-A8AE	E7B6
-A8B0	1DB7
-A8B2	B727
-A8B4	0224
-A8B6	0564
-A8B8	9387
-A8BA	076B
-A8BC	A297
-A8BE	03C7
-A8C0	F780
-A8C2	9147
-A8C4	E30D
-A8C6	F7FA
-A8C8	C1B7
-A8CA	B787
-A8CC	0040
-A8CE	83D5
-A8D0	E7F3
-A8D2	0D45
-A8D4	93E5
-A8D6	0504
-A8D8	97D0
-A8DA	FFFB
-A8DC	E780
-A8DE	C004
-A8E0	B797
-A8E2	0124
-A8E4	9387
-A8E6	0753
-A8E8	A297
-A8EA	03D7
-A8EC	47B6
-A8EE	1377
-A8F0	F7FB
-A8F2	2392
-A8F4	E7B6
-A8F6	C5B5
-A8F8	3571
-A8FA	22CF
-A8FC	26CD
-A8FE	7324
-A900	2034
-A902	F324
-A904	1034
-A906	7360
-A908	0430
-A90A	06CB
-A90C	16C9
-A90E	1AC7
-A910	1EC5
-A912	2AC3
-A914	2EC1
-A916	B2DE
-A918	B6DC
-A91A	BADA
-A91C	BED8
-A91E	C2D6
-A920	C6D4
-A922	F2D2
-A924	F6D0
-A926	FACE
-A928	FECC
-A92A	82E2
-A92C	86E0
-A92E	0AFE
-A930	0EFC
-A932	12FA
-A934	16F8
-A936	1AF6
-A938	1EF4
-A93A	2AF2
-A93C	2EF0
-A93E	32EE
-A940	36EC
-A942	3AEA
-A944	3EE8
-A946	42E6
-A948	46E4
-A94A	72E2
-A94C	76E0
-A94E	272E
-A950	E1FF
-A952	272C
-A954	F1FF
-A956	9770
-A958	FFFB
-A95A	E780
-A95C	20FC
-A95E	19C5
-A960	9770
-A962	FFFB
-A964	E780
-A966	80F8
-A968	631C
-A96A	0512
-A96C	9305
-A96E	0024
-A970	4145
-A972	97D0
-A974	FFFB
-A976	E780
-A978	2002
-A97A	8145
-A97C	9377
-A97E	1500
-A980	85C7
-A982	37D7
-A984	0124
-A986	B7A7
-A988	0124
-A98A	1307
-A98C	07C4
-A98E	9387
-A990	0753
-A992	0356
-A994	4707
-A996	83D6
-A998	A7B6
-A99A	0506
-A99C	93E6
-A99E	1600
-A9A0	231A
-A9A2	C706
-A9A4	2395
-A9A6	D7B6
-A9A8	9377
-A9AA	2500
-A9AC	85C7
-A9AE	37D7
-A9B0	0124
-A9B2	B7A7
-A9B4	0124
-A9B6	1307
-A9B8	07C4
-A9BA	9387
-A9BC	0753
-A9BE	0356
-A9C0	C70C
-A9C2	83D6
-A9C4	A7B6
-A9C6	0506
-A9C8	93E6
-A9CA	2600
-A9CC	2316
-A9CE	C70C
-A9D0	2395
-A9D2	D7B6
-A9D4	9377
-A9D6	0520
-A9D8	1375
-A9DA	0504
-A9DC	C5C3
-A9DE	B7D7
-A9E0	0124
-A9E2	9387
-A9E4	07C4
-A9E6	03D7
-A9E8	6708
-A9EA	0507
-A9EC	2393
-A9EE	E708
-A9F0	D1C5
-A9F2	37A7
-A9F4	0124
-A9F6	1307
-A9F8	0753
-A9FA	8356
-A9FC	A7B6
-A9FE	93E6
-AA00	0620
-AA02	2315
-AA04	D7B6
-AA06	11C9
-AA08	03D6
-AA0A	A708
-AA0C	0506
-AA0E	2395
-AA10	C708
-AA12	93E6
-AA14	0604
-AA16	2315
-AA18	D7B6
-AA1A	DA40
-AA1C	CA42
-AA1E	3A43
-AA20	AA43
-AA22	1A45
-AA24	8A45
-AA26	7656
-AA28	E656
-AA2A	5657
-AA2C	C657
-AA2E	3658
-AA30	A658
-AA32	165E
-AA34	865E
-AA36	764F
-AA38	E64F
-AA3A	1660
-AA3C	8660
-AA3E	7271
-AA40	E271
-AA42	5272
-AA44	C272
-AA46	3273
-AA48	A273
-AA4A	1275
-AA4C	8275
-AA4E	7266
-AA50	E266
-AA52	5267
-AA54	C267
-AA56	3268
-AA58	A268
-AA5A	126E
-AA5C	826E
-AA5E	072F
-AA60	C1FF
-AA62	872F
-AA64	81FF
-AA66	7370
-AA68	0430
-AA6A	7390
-AA6C	1434
-AA6E	7310
-AA70	2434
-AA72	7A44
-AA74	EA44
-AA76	0D61
-AA78	7300
-AA7A	2030
-AA7C	59DD
-AA7E	B7D7
-AA80	0124
-AA82	9387
-AA84	07C4
-AA86	03D7
-AA88	A708
-AA8A	0507
-AA8C	2395
-AA8E	E708
-AA90	C9D5
-AA92	37A7
-AA94	0124
-AA96	1307
-AA98	0753
-AA9A	8356
-AA9C	A7B6
-AA9E	95BF
-AAA0	B7A7
-AAA2	0124
-AAA4	83D5
-AAA6	8709
-AAA8	4145
-AAAA	97D0
-AAAC	FFFB
-AAAE	E780
-AAB0	A0EE
-AAB2	8545
-AAB4	E1B5
-AAB6	0100
-AAB8	8280
-AABA	0100
-AABC	1753
-AABE	02FC
-AAC0	E702
-AAC2	43A0
-AAC4	37E4
-AAC6	0124
-AAC8	1304
-AACA	044C
-AACC	8344
-AACE	E40A
-AAD0	8547
-AAD2	2307
-AAD4	F40A
-AAD6	97A0
-AAD8	FDFB
-AADA	E780
-AADC	E0EB
-AADE	2307
-AAE0	940A
-AAE2	1753
-AAE4	02FC
-AAE6	6700
-AAE8	23A0
-AAEA	0100
-AAEC	B7A7
-AAEE	0224
-AAF0	83C7
-AAF2	075A
-AAF4	0547
-AAF6	6383
-AAF8	E700
-AAFA	8280
-AAFC	1753
-AAFE	02FC
-AB00	E702
-AB02	A39A
-AB04	3794
-AB06	0124
-AB08	1304
-AB0A	0453
-AB0C	0347
-AB0E	041B
-AB10	4111
-AB12	6307
-AB14	F700
-AB16	4101
-AB18	1753
-AB1A	02FC
-AB1C	6700
-AB1E	239C
-AB20	8947
-AB22	E31A
-AB24	F5FE
-AB26	8347
-AB28	3441
-AB2A	ADC3
-AB2C	83A9
-AB2E	0500
-AB30	2EC6
-AB32	97C0
-AB34	01FC
-AB36	E780
-AB38	E0C0
-AB3A	AA84
-AB3C	9780
-AB3E	01FC
-AB40	E780
-AB42	40D0
-AB44	B245
-AB46	2A89
-AB48	9C41
-AB4A	63F3
-AB4C	9700
-AB4E	A687
-AB50	8851
-AB52	9CC1
-AB54	2EC6
-AB56	4A95
-AB58	97B0
-AB5A	00FC
-AB5C	E780
-AB5E	C0CD
-AB60	B245
-AB62	AA84
-AB64	E8C9
-AB66	3385
-AB68	2901
-AB6A	97B0
-AB6C	00FC
-AB6E	E780
-AB70	A0CC
-AB72	8567
-AB74	3E94
-AB76	8327
-AB78	C483
-AB7A	2695
-AB7C	B245
-AB7E	63F3
-AB80	A700
-AB82	AA87
-AB84	2322
-AB86	F498
-AB88	E8C5
-AB8A	71B7
-AB8C	0145
-AB8E	2EC6
-AB90	97B0
-AB92	01FC
-AB94	E780
-AB96	403E
-AB98	B245
-AB9A	AA89
-AB9C	51BF
-AB9E	0100
-ABA0	1753
-ABA2	02FC
-ABA4	E702
-ABA6	0392
-ABA8	2A84
-ABAA	EFE0
-ABAC	7F85
-ABAE	01E8
-ABB0	B7D7
-ABB2	0124
-ABB4	03A7
-ABB6	87C1
-ABB8	9147
-ABBA	6306
-ABBC	F700
-ABBE	1753
-ABC0	02FC
-ABC2	6700
-ABC4	6392
-ABC6	B7D7
-ABC8	0124
-ABCA	83C7
-ABCC	07FA
-ABCE	E5DB
-ABD0	B747
-ABD2	0124
-ABD4	83C7
-ABD6	27C4
-ABD8	FDF3
-ABDA	97E0
-ABDC	00FC
-ABDE	E780
-ABE0	60A0
-ABE2	B787
-ABE4	0224
-ABE6	0547
-ABE8	A380
-ABEA	E74E
-ABEC	C9BF
-ABEE	0100
-ABF0	1753
-ABF2	02FC
-ABF4	E702
-ABF6	038D
-ABF8	3784
-ABFA	0224
-ABFC	1304
-ABFE	C449
-AC00	8347
-AC02	5404
-AC04	99E7
-AC06	EFE0
-AC08	3F8B
-AC0A	1753
-AC0C	02FC
-AC0E	6700
-AC10	A38D
-AC12	97E0
-AC14	00FC
-AC16	E780
-AC18	E0B7
-AC1A	A302
-AC1C	0404
-AC1E	EFE0
-AC20	BF89
-AC22	1753
-AC24	02FC
-AC26	6700
-AC28	238C
-AC2A	0100
-AC2C	1753
-AC2E	02FC
-AC30	E702
-AC32	4389
-AC34	B7E7
-AC36	0124
-AC38	9387
-AC3A	0787
-AC3C	03A9
-AC3E	870E
-AC40	83A4
-AC42	C70E
-AC44	0146
-AC46	CA85
-AC48	2A84
-AC4A	2685
-AC4C	9740
-AC4E	01FC
-AC50	E780
-AC52	80DF
-AC54	2285
-AC56	97A0
-AC58	FFFB
-AC5A	E780
-AC5C	2047
-AC5E	0546
-AC60	CA85
-AC62	2685
-AC64	9740
-AC66	01FC
-AC68	E780
-AC6A	00DE
-AC6C	8547
-AC6E	6309
-AC70	F400
-AC72	9147
-AC74	6306
-AC76	F400
-AC78	1753
-AC7A	02FC
-AC7C	6700
-AC7E	C386
-AC80	9770
-AC82	FFFB
-AC84	E780
-AC86	80C9
-AC88	65F9
-AC8A	9770
-AC8C	FFFB
-AC8E	E780
-AC90	E0C5
-AC92	7DD1
-AC94	9770
-AC96	FFFB
-AC98	E780
-AC9A	C03F
-AC9C	19C9
-AC9E	B797
-ACA0	0124
-ACA2	9387
-ACA4	07D7
-ACA6	03C7
-ACA8	8703
-ACAA	83C7
-ACAC	2706
-ACAE	6306
-ACB0	F706
-ACB2	9770
-ACB4	FFFB
-ACB6	E780
-ACB8	E03D
-ACBA	5DDD
-ACBC	B797
-ACBE	0124
-ACC0	9387
-ACC2	07D7
-ACC4	03C7
-ACC6	C701
-ACC8	83C7
-ACCA	2706
-ACCC	E316
-ACCE	F7FA
-ACD0	B7B7
-ACD2	0224
-ACD4	83A7
-ACD6	8771
-ACD8	B706
-ACDA	0040
-ACDC	1386
-ACDE	4606
-ACE0	8965
-ACE2	3E96
-ACE4	1387
-ACE6	061F
-ACE8	9385
-ACEA	F5F1
-ACEC	2310
-ACEE	B600
-ACF0	3E97
-ACF2	7D56
-ACF4	2310
-ACF6	C700
-ACF8	37D6
-ACFA	0124
-ACFC	1306
-ACFE	06E7
-AD00	0357
-AD02	C605
-AD04	0356
-AD06	6606
-AD08	9386
-AD0A	861D
-AD0C	3297
-AD0E	4207
-AD10	B697
-AD12	4183
-AD14	2390
-AD16	E700
-AD18	85B7
-AD1A	B7B7
-AD1C	0224
-AD1E	83A7
-AD20	8771
-AD22	B706
-AD24	0040
-AD26	1386
-AD28	4606
-AD2A	8965
-AD2C	3E96
-AD2E	1387
-AD30	061F
-AD32	9385
-AD34	F5F1
-AD36	2310
-AD38	B600
-AD3A	3E97
-AD3C	7D56
-AD3E	2310
-AD40	C700
-AD42	37D6
-AD44	0124
-AD46	1306
-AD48	06E7
-AD4A	0357
-AD4C	0606
-AD4E	9386
-AD50	A61D
-AD52	0356
-AD54	6606
-AD56	5DBF
-AD58	1743
-AD5A	02FC
-AD5C	E702
-AD5E	8376
-AD60	B7D7
-AD62	0024
-AD64	83C7
-AD66	476D
-AD68	8544
-AD6A	6380
-AD6C	9714
-AD6E	B7E7
-AD70	0024
-AD72	03C4
-AD74	C784
-AD76	B7A7
-AD78	0124
-AD7A	83C7
-AD7C	6792
-AD7E	3334
-AD80	8000
-AD82	3304
-AD84	8040
-AD86	7998
-AD88	1304
-AD8A	6402
-AD8C	EDE7
-AD8E	B767
-AD90	0024
-AD92	9387
-AD94	0733
-AD96	03D7
-AD98	E75B
-AD9A	19C7
-AD9C	1347
-AD9E	F7FF
-ADA0	618F
-ADA2	1314
-ADA4	0701
-ADA6	4180
-ADA8	83D7
-ADAA	075C
-ADAC	0D45
-ADAE	5D8C
-ADB0	4204
-ADB2	4180
-ADB4	A285
-ADB6	97D0
-ADB8	FFFB
-ADBA	E780
-ADBC	20C5
-ADBE	9315
-ADC0	0501
-ADC2	C181
-ADC4	AA84
-ADC6	6309
-ADC8	B400
-ADCA	0565
-ADCC	A18D
-ADCE	2D05
-ADD0	97A0
-ADD2	FFFB
-ADD4	E780
-ADD6	0050
-ADD8	1395
-ADDA	0401
-ADDC	93F7
-ADDE	1400
-ADE0	4181
-ADE2	91CB
-ADE4	B7D7
-ADE6	0124
-ADE8	9387
-ADEA	07C4
-ADEC	03D7
-ADEE	4707
-ADF0	0507
-ADF2	239A
-ADF4	E706
-ADF6	9377
-ADF8	2500
-ADFA	91CB
-ADFC	B7D7
-ADFE	0124
-AE00	9387
-AE02	07C4
-AE04	03D7
-AE06	C70C
-AE08	0507
-AE0A	2396
-AE0C	E70C
-AE0E	9377
-AE10	4500
-AE12	91CB
-AE14	B7D7
-AE16	0124
-AE18	9387
-AE1A	07C4
-AE1C	03D7
-AE1E	E70C
-AE20	0507
-AE22	2397
-AE24	E70C
-AE26	9377
-AE28	0502
-AE2A	91CB
-AE2C	B7D7
-AE2E	0124
-AE30	9387
-AE32	07C4
-AE34	03D7
-AE36	070F
-AE38	0507
-AE3A	2398
-AE3C	E70E
-AE3E	9377
-AE40	0520
-AE42	91CB
-AE44	B7D7
-AE46	0124
-AE48	9387
-AE4A	07C4
-AE4C	03D7
-AE4E	6708
-AE50	0507
-AE52	2393
-AE54	E708
-AE56	1375
-AE58	0504
-AE5A	11C9
-AE5C	B7D7
-AE5E	0124
-AE60	9387
-AE62	07C4
-AE64	03D7
-AE66	A708
-AE68	0507
-AE6A	2395
-AE6C	E708
-AE6E	1743
-AE70	02FC
-AE72	6700
-AE74	6367
-AE76	B7D7
-AE78	0124
-AE7A	83D7
-AE7C	A7E7
-AE7E	81DB
-AE80	9760
-AE82	FEFB
-AE84	E780
-AE86	0072
-AE88	6311
-AE8A	9506
-AE8C	B797
-AE8E	0124
-AE90	9387
-AE92	07D7
-AE94	03C7
-AE96	C701
-AE98	83C7
-AE9A	2706
-AE9C	6307
-AE9E	F704
-AEA0	1364
-AEA2	0424
-AEA4	4204
-AEA6	4180
-AEA8	11A0
-AEAA	0144
-AEAC	B767
-AEAE	0024
-AEB0	9387
-AEB2	0733
-AEB4	03C7
-AEB6	273B
-AEB8	E30F
-AEBA	07EC
-AEBC	37A7
-AEBE	0124
-AEC0	0347
-AEC2	6792
-AEC4	E309
-AEC6	07EC
-AEC8	37D7
-AECA	0124
-AECC	0357
-AECE	A7E7
-AED0	E303
-AED2	07EC
-AED4	3797
-AED6	0124
-AED8	0347
-AEDA	1700
-AEDC	E30D
-AEDE	07EA
-AEE0	1374
-AEE2	F4DF
-AEE4	4204
-AEE6	4180
-AEE8	7DB5
-AEEA	9760
-AEEC	FEFB
-AEEE	E780
-AEF0	606B
-AEF2	8547
-AEF4	E31C
-AEF6	F5FA
-AEF8	B797
-AEFA	0124
-AEFC	9387
-AEFE	07D7
-AF00	03C7
-AF02	C701
-AF04	83C7
-AF06	2706
-AF08	E312
-AF0A	F7FA
-AF0C	1364
-AF0E	0420
-AF10	4204
-AF12	4180
-AF14	61BF
-AF16	0100
-AF18	7171
-AF1A	22D7
-AF1C	26D5
-AF1E	7324
-AF20	2034
-AF22	F324
-AF24	1034
-AF26	7360
-AF28	0430
-AF2A	2EC5
-AF2C	A565
-AF2E	BEDC
-AF30	06D3
-AF32	16D1
-AF34	1ACF
-AF36	1ECD
-AF38	22CB
-AF3A	2AC7
-AF3C	32C3
-AF3E	36C1
-AF40	BADE
-AF42	C2DA
-AF44	C6D8
-AF46	F2D0
-AF48	F6CE
-AF4A	FACC
-AF4C	FECA
-AF4E	82E2
-AF50	86E0
-AF52	0AFE
-AF54	0EFC
-AF56	12FA
-AF58	16F8
-AF5A	1AF6
-AF5C	1EF4
-AF5E	2AF2
-AF60	2EF0
-AF62	32EE
-AF64	26C9
-AF66	CAD6
-AF68	CED4
-AF6A	D2D2
-AF6C	9385
-AF6E	0540
-AF70	0545
-AF72	36EC
-AF74	3AEA
-AF76	3EE8
-AF78	42E6
-AF7A	46E4
-AF7C	72E2
-AF7E	76E0
-AF80	272E
-AF82	E1FF
-AF84	272C
-AF86	F1FF
-AF88	97D0
-AF8A	FFFB
-AF8C	E780
-AF8E	C0A0
-AF90	A167
-AF92	E98F
-AF94	2A84
-AF96	6394
-AF98	0718
-AF9A	B764
-AF9C	0124
-AF9E	9384
-AFA0	0440
-AFA2	8567
-AFA4	E18F
-AFA6	CDCF
-AFA8	37D7
-AFAA	0124
-AFAC	3789
-AFAE	0224
-AFB0	1307
-AFB2	07C4
-AFB4	1309
-AFB6	C949
-AFB8	8356
-AFBA	670E
-AFBC	8327
-AFBE	0905
-AFC0	8506
-AFC2	8507
-AFC4	2328
-AFC6	F904
-AFC8	2313
-AFCA	D70E
-AFCC	858B
-AFCE	639F
-AFD0	071A
-AFD2	8547
-AFD4	A30A
-AFD6	F904
-AFD8	9770
-AFDA	FFFB
-AFDC	E780
-AFDE	8008
-AFE0	19C5
-AFE2	0357
-AFE4	4905
-AFE6	9307
-AFE8	1010
-AFEA	6306
-AFEC	F724
-AFEE	DC50
-AFF0	0945
-AFF2	8297
-AFF4	9770
-AFF6	FFFB
-AFF8	E780
-AFFA	408F
-AFFC	11C5
-AFFE	9770
-B000	FFFB
-B002	E780
-B004	A091
-B006	55C5
-B008	9760
-B00A	00FC
-B00C	E780
-B00E	C063
-B010	B787
-B012	0024
-B014	83C7
-B016	078C
-B018	AA89
-B01A	6392
-B01C	071C
-B01E	B7D7
-B020	0124
-B022	9387
-B024	07E7
-B026	BC5F
-B028	639A
-B02A	0716
-B02C	3799
-B02E	0124
-B030	1309
-B032	0953
-B034	B727
-B036	0024
-B038	83C7
-B03A	7752
-B03C	6396
-B03E	071E
-B040	0345
-B042	C918
-B044	631D
-B046	051C
-B048	DC50
-B04A	0D45
-B04C	8297
-B04E	4E85
-B050	9760
-B052	00FC
-B054	E780
-B056	8063
-B058	8567
-B05A	3E99
-B05C	2320
-B05E	A9A2
-B060	1374
-B062	0440
-B064	21C4
-B066	B7D7
-B068	0124
-B06A	9387
-B06C	07C4
-B06E	37A7
-B070	0124
-B072	83D6
-B074	670E
-B076	1307
-B078	0753
-B07A	0347
-B07C	179B
-B07E	8506
-B080	3784
-B082	0224
-B084	1304
-B086	C449
-B088	1337
-B08A	1700
-B08C	2393
-B08E	D70E
-B090	230A
-B092	E404
-B094	9770
-B096	FFFB
-B098	E780
-B09A	C0FC
-B09C	6306
-B09E	0510
-B0A0	0357
-B0A2	4405
-B0A4	9307
-B0A6	1010
-B0A8	6300
-B0AA	F710
-B0AC	DC50
-B0AE	1D45
-B0B0	8297
-B0B2	9A50
-B0B4	8A52
-B0B6	7A43
-B0B8	EA43
-B0BA	5A44
-B0BC	CA44
-B0BE	3A45
-B0C0	AA45
-B0C2	1A46
-B0C4	8A46
-B0C6	7657
-B0C8	E657
-B0CA	5658
-B0CC	C658
-B0CE	3659
-B0D0	A659
-B0D2	165A
-B0D4	065E
-B0D6	F64E
-B0D8	664F
-B0DA	D64F
-B0DC	1660
-B0DE	8660
-B0E0	7271
-B0E2	E271
-B0E4	5272
-B0E6	C272
-B0E8	3273
-B0EA	A273
-B0EC	1275
-B0EE	8275
-B0F0	7266
-B0F2	E266
-B0F4	5267
-B0F6	C267
-B0F8	3268
-B0FA	A268
-B0FC	126E
-B0FE	826E
-B100	072F
-B102	C1FF
-B104	872F
-B106	81FF
-B108	7370
-B10A	0430
-B10C	7390
-B10E	1434
-B110	7310
-B112	2434
-B114	3A54
-B116	AA54
-B118	4D61
-B11A	7300
-B11C	2030
-B11E	37D9
-B120	0124
-B122	1309
-B124	09C4
-B126	8357
-B128	490E
-B12A	B764
-B12C	0124
-B12E	9384
-B130	0440
-B132	D850
-B134	8507
-B136	0145
-B138	2312
-B13A	F90E
-B13C	0297
-B13E	9760
-B140	FFFB
-B142	E780
-B144	A07A
-B146	25E5
-B148	B729
-B14A	0024
-B14C	3799
-B14E	0124
-B150	9389
-B152	0933
-B154	1309
-B156	0953
-B158	056A
-B15A	83C7
-B15C	791F
-B15E	4A9A
-B160	2320
-B162	0AA2
-B164	B9EF
-B166	0345
-B168	C918
-B16A	2DE5
-B16C	83C7
-B16E	0920
-B170	89C7
-B172	0327
-B174	4AB3
-B176	630A
-B178	F700
-B17A	97E0
-B17C	00FC
-B17E	E780
-B180	60DC
-B182	DC50
-B184	0545
-B186	8297
-B188	29BD
-B18A	01A0
-B18C	8547
-B18E	230A
-B190	0904
-B192	A30A
-B194	0904
-B196	2328
-B198	F904
-B19A	3DBD
-B19C	7D55
-B19E	9770
-B1A0	01FC
-B1A2	E780
-B1A4	200E
-B1A6	59B5
-B1A8	EFE0
-B1AA	DFE2
-B1AC	01B7
-B1AE	9760
-B1B0	FFFB
-B1B2	E780
-B1B4	A076
-B1B6	49F9
-B1B8	8357
-B1BA	490E
-B1BC	858B
-B1BE	C9F7
-B1C0	CDBD
-B1C2	9770
-B1C4	01FC
-B1C6	E780
-B1C8	A00C
-B1CA	2311
-B1CC	A94E
-B1CE	0345
-B1D0	C918
-B1D2	49DD
-B1D4	97C0
-B1D6	FFFB
-B1D8	E780
-B1DA	C0BD
-B1DC	41BF
-B1DE	9770
-B1E0	01FC
-B1E2	E780
-B1E4	E00A
-B1E6	3799
-B1E8	0124
-B1EA	1309
-B1EC	0953
-B1EE	8D67
-B1F0	CA97
-B1F2	03C7
-B1F4	D76F
-B1F6	232E
-B1F8	A94E
-B1FA	8547
-B1FC	6306
-B1FE	F700
-B200	8327
-B202	094F
-B204	E377
-B206	F5EA
-B208	9760
-B20A	00FC
-B20C	E780
-B20E	0006
-B210	9770
-B212	01FC
-B214	E780
-B216	C007
-B218	2320
-B21A	A950
-B21C	21BD
-B21E	97C0
-B220	FFFB
-B222	E780
-B224	20BC
-B226	0DB5
-B228	9770
-B22A	01FC
-B22C	E780
-B22E	4006
-B230	2312
-B232	A94E
-B234	31B5
-B236	EFE0
-B238	FFD9
-B23A	55BB
-B23C	1743
-B23E	02FC
-B240	E702
-B242	4328
-B244	2A84
-B246	EFD0
-B248	3FB1
-B24A	8947
-B24C	6306
-B24E	F400
-B250	1743
-B252	02FC
-B254	6700
-B256	4329
-B258	B7A4
-B25A	0224
-B25C	9384
-B25E	8454
-B260	83C7
-B262	1406
-B264	F5F7
-B266	9770
-B268	FFFB
-B26A	E780
-B26C	A0ED
-B26E	6DF1
-B270	9770
-B272	FFFB
-B274	E780
-B276	40EE
-B278	61FD
-B27A	3725
-B27C	0224
-B27E	1305
-B280	05ED
-B282	9700
-B284	FFFB
-B286	E780
-B288	2005
-B28A	B767
-B28C	0124
-B28E	83A7
-B290	0740
-B292	0549
-B294	37A7
-B296	0124
-B298	1D45
-B29A	2305
-B29C	2723
-B29E	8297
-B2A0	A380
-B2A2	2407
-B2A4	9780
-B2A6	01FC
-B2A8	E780
-B2AA	008E
-B2AC	55F1
-B2AE	B727
-B2B0	0124
-B2B2	2380
-B2B4	8754
-B2B6	97B0
-B2B8	FEFB
-B2BA	E780
-B2BC	600D
-B2BE	2381
-B2C0	2407
-B2C2	79B7
-B2C4	1743
-B2C6	02FC
-B2C8	E702
-B2CA	C31F
-B2CC	37A4
-B2CE	0224
-B2D0	1304
-B2D2	8454
-B2D4	0347
-B2D6	2406
-B2D8	8547
-B2DA	630A
-B2DC	F700
-B2DE	97B0
-B2E0	FEFB
-B2E2	E780
-B2E4	E074
-B2E6	1743
-B2E8	02FC
-B2EA	6700
-B2EC	E31F
-B2EE	9780
-B2F0	01FC
-B2F2	E780
-B2F4	6089
-B2F6	65F5
-B2F8	97B0
-B2FA	FEFB
-B2FC	E780
-B2FE	801A
-B300	2301
-B302	0406
-B304	E9BF
-B306	0100
-B308	1743
-B30A	02FC
-B30C	E702
-B30E	831B
-B310	9D47
-B312	631F
-B314	F500
-B316	3794
-B318	0124
-B31A	1304
-B31C	0453
-B31E	8567
-B320	A297
-B322	83C7
-B324	A7CF
-B326	99EB
-B328	1743
-B32A	02FC
-B32C	6700
-B32E	C31B
-B330	EFD0
-B332	9FE8
-B334	1743
-B336	02FC
-B338	6700
-B33A	031B
-B33C	9770
-B33E	FFFB
-B340	E780
-B342	40E0
-B344	75F1
-B346	9770
-B348	FFFB
-B34A	E780
-B34C	E0E0
-B34E	69FD
-B350	8D67
-B352	3E94
-B354	8327
-B356	846D
-B358	B724
-B35A	0124
-B35C	9384
-B35E	045F
-B360	91EF
-B362	83A7
-B364	440E
-B366	99CB
-B368	B7D7
-B36A	0124
-B36C	83C7
-B36E	07FA
-B370	C5DF
-B372	9700
-B374	FFFB
-B376	E780
-B378	A0EF
-B37A	7DB7
-B37C	83A7
-B37E	C40A
-B380	C5D7
-B382	0545
-B384	9730
-B386	FEFB
-B388	E780
-B38A	005E
-B38C	B735
-B38E	202D
-B390	7578
-B392	37F5
-B394	202D
-B396	9385
-B398	0560
-B39A	1308
-B39C	08A0
-B39E	9168
-B3A0	1305
-B3A2	0560
-B3A4	B387
-B3A6	0501
-B3A8	03C7
-B3AA	0700
-B3AC	9306
-B3AE	F00F
-B3B0	1316
-B3B2	8701
-B3B4	6186
-B3B6	0607
-B3B8	6344
-B3BA	0600
-B3BC	9376
-B3BE	F70F
-B3C0	2380
-B3C2	D700
-B3C4	8507
-B3C6	E391
-B3C8	B7FE
-B3CA	B385
-B3CC	1701
-B3CE	E39B
-B3D0	A5FC
-B3D2	B7A7
-B3D4	0224
-B3D6	0547
-B3D8	0145
-B3DA	A384
-B3DC	E75A
-B3DE	9730
-B3E0	FEFB
-B3E2	E780
-B3E4	6058
-B3E6	B7D7
-B3E8	0124
-B3EA	83C7
-B3EC	07FA
-B3EE	8DDF
-B3F0	8327
-B3F2	846D
-B3F4	95FB
-B3F6	83A7
-B3F8	440E
-B3FA	9DD7
-B3FC	9DBF
-B3FE	0100
-B400	1743
-B402	02FC
-B404	E702
-B406	030C
-B408	B7D7
-B40A	0124
-B40C	9387
-B40E	07F4
-B410	03C7
-B412	1705
-B414	2A84
-B416	11C7
-B418	03C7
-B41A	1700
-B41C	8947
-B41E	6301
-B420	F704
-B422	B7E7
-B424	0124
-B426	9387
-B428	0787
-B42A	03A9
-B42C	870F
-B42E	83A4
-B430	C70F
-B432	0146
-B434	CA85
-B436	2685
-B438	9730
-B43A	01FC
-B43C	E780
-B43E	C060
-B440	2285
-B442	97D0
-B444	FEFB
-B446	E780
-B448	A0E3
-B44A	0546
-B44C	CA85
-B44E	2685
-B450	9730
-B452	01FC
-B454	E780
-B456	405F
-B458	1743
-B45A	02FC
-B45C	6700
-B45E	C308
-B460	B7E7
-B462	0024
-B464	83D6
-B466	C7C8
-B468	8567
-B46A	1387
-B46C	F7B3
-B46E	E39A
-B470	E6FA
-B472	3797
-B474	0124
-B476	1307
-B478	0753
-B47A	BA97
-B47C	03A5
-B47E	07B2
-B480	8145
-B482	3325
-B484	A000
-B486	97D0
-B488	00FC
-B48A	E780
-B48C	A0C8
-B48E	51BF
-B490	1743
-B492	02FC
-B494	E702
-B496	0303
-B498	9760
-B49A	FFFB
-B49C	E780
-B49E	0045
-B4A0	11C5
-B4A2	B7E7
-B4A4	0024
-B4A6	83C7
-B4A8	C784
-B4AA	BDEF
-B4AC	1384
-B4AE	81E7
-B4B0	0347
-B4B2	8400
-B4B4	8547
-B4B6	6303
-B4B8	F706
-B4BA	0357
-B4BC	2403
-B4BE	B767
-B4C0	0040
-B4C2	2398
-B4C4	E718
-B4C6	8357
-B4C8	4403
-B4CA	3767
-B4CC	0040
-B4CE	2314
-B4D0	F720
-B4D2	9760
-B4D4	FFFB
-B4D6	E780
-B4D8	6041
-B4DA	19C5
-B4DC	B7E7
-B4DE	0024
-B4E0	03C7
-B4E2	C784
-B4E4	8147
-B4E6	09EB
-B4E8	8346
-B4EA	8400
-B4EC	0547
-B4EE	8147
-B4F0	6384
-B4F2	E600
-B4F4	8357
-B4F6	C405
-B4F8	37A7
-B4FA	0040
-B4FC	2312
-B4FE	F710
-B500	9770
-B502	FFFB
-B504	E780
-B506	00C4
-B508	35C1
-B50A	9770
-B50C	FFFB
-B50E	E780
-B510	A0C4
-B512	05C9
-B514	1743
-B516	02FC
-B518	6700
-B51A	03FD
-B51C	B767
-B51E	0040
-B520	2398
-B522	0718
-B524	8147
-B526	55B7
-B528	B767
-B52A	0040
-B52C	2398
-B52E	0718
-B530	1384
-B532	81E7
-B534	8346
-B536	8400
-B538	0547
-B53A	8147
-B53C	E395
-B53E	E6F8
-B540	69B7
-B542	9760
-B544	FFFB
-B546	E780
-B548	603A
-B54A	31ED
-B54C	8346
-B54E	8400
-B550	0547
-B552	8147
-B554	6384
-B556	E600
-B558	8357
-B55A	4408
-B55C	3787
-B55E	0040
-B560	2314
-B562	F710
-B564	1743
-B566	02FC
-B568	6700
-B56A	03F8
-B56C	9770
-B56E	FFFB
-B570	E780
-B572	80BE
-B574	59F9
-B576	9760
-B578	FFFB
-B57A	E780
-B57C	2037
-B57E	19C5
-B580	B7E7
-B582	0024
-B584	03C7
-B586	C784
-B588	8147
-B58A	09EB
-B58C	8346
-B58E	8400
-B590	0547
-B592	8147
-B594	6384
-B596	E600
-B598	8357
-B59A	6407
-B59C	3707
-B59E	0140
-B5A0	2314
-B5A2	F710
-B5A4	9DB7
-B5A6	B7E7
-B5A8	0024
-B5AA	03C7
-B5AC	C784
-B5AE	8147
-B5B0	55F7
-B5B2	69BF
-B5B4	1743
-B5B6	02FC
-B5B8	E702
-B5BA	23EF
-B5BC	B747
-B5BE	0124
-B5C0	03D7
-B5C2	C7E1
-B5C4	8947
-B5C6	2A84
-B5C8	AE84
-B5CA	6319
-B5CC	F700
-B5CE	B7A7
-B5D0	0124
-B5D2	03A7
-B5D4	4706
-B5D6	FD57
-B5D8	630E
-B5DA	F702
-B5DC	B7E7
-B5DE	0124
-B5E0	9387
-B5E2	0787
-B5E4	83A9
-B5E6	8710
-B5E8	03A9
-B5EA	C710
-B5EC	0146
-B5EE	CE85
-B5F0	4A85
-B5F2	9730
-B5F4	01FC
-B5F6	E780
-B5F8	2045
-B5FA	A685
-B5FC	2285
-B5FE	97D0
-B600	00FC
-B602	E780
-B604	20B1
-B606	0546
-B608	CE85
-B60A	4A85
-B60C	9730
-B60E	01FC
-B610	E780
-B612	8043
-B614	1743
-B616	02FC
-B618	6700
-B61A	63EC
-B61C	1743
-B61E	02FC
-B620	E702
-B622	43EA
-B624	B7B6
-B626	0224
-B628	B787
-B62A	0324
-B62C	9386
-B62E	C671
-B630	37A7
-B632	0124
-B634	9387
-B636	07FF
-B638	1307
-B63A	0753
-B63C	958F
-B63E	232C
-B640	D7B4
-B642	232E
-B644	F7B4
-B646	9730
-B648	01FC
-B64A	E780
-B64C	A0E3
-B64E	01C5
-B650	EFE0
-B652	5FD7
-B654	3120
-B656	1743
-B658	02FC
-B65A	6700
-B65C	E3E8
-B65E	0100
-B660	1743
-B662	02FC
-B664	E702
-B666	03E6
-B668	B7B7
-B66A	0224
-B66C	9387
-B66E	C7AB
-B670	23AE
-B672	F194
-B674	3764
-B676	0124
-B678	9D66
-B67A	B7B5
-B67C	0224
-B67E	B7A7
-B680	0224
-B682	1304
-B684	0440
-B686	9387
-B688	077B
-B68A	9386
-B68C	F6BF
-B68E	1146
-B690	9385
-B692	85F1
-B694	0545
-B696	5CC4
-B698	97E0
-B69A	FFFB
-B69C	E780
-B69E	802F
-B6A0	C166
-B6A2	B7B5
-B6A4	0224
-B6A6	FD16
-B6A8	3146
-B6AA	9385
-B6AC	858F
-B6AE	4145
-B6B0	97E0
-B6B2	FFFB
-B6B4	E780
-B6B6	002E
-B6B8	37B7
-B6BA	0224
-B6BC	1307
-B6BE	C7AE
-B6C0	B7A7
-B6C2	0224
-B6C4	9387
-B6C6	8754
-B6C8	78C8
-B6CA	37B7
-B6CC	0224
-B6CE	A380
-B6D0	0706
-B6D2	2381
-B6D4	0706
-B6D6	1307
-B6D8	07BA
-B6DA	B7B7
-B6DC	0224
-B6DE	18D4
-B6E0	9387
-B6E2	C723
-B6E4	37B7
-B6E6	0224
-B6E8	7CC4
-B6EA	1307
-B6EC	8730
-B6EE	B7B7
-B6F0	0224
-B6F2	18C0
-B6F4	9387
-B6F6	472C
-B6F8	23AA
-B6FA	F1A4
-B6FC	1743
-B6FE	02FC
-B700	6700
-B702	83DE
-B704	0000
-B706	0000
-B708	5410
-B70A	E538
-B70C	0000
-B70E	0000
-B710	BF3F
-B712	0000
-B714	0000
-B716	0000
-B718	008D
-B71A	0000
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-23F0	0000
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-FCFC	4000
-011C	0100
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3234	0134
-3236	2A00
-3238	0A03
-323A	202A
-323C	010F
-323E	040F
-3240	0A3F
-3242	0A55
-3244	0101
-3246	0101
-3248	0010
-3252	E000
-3254	DC00
-3256	D900
-3258	D600
-325A	D300
-3266	0100
-3268	0200
-326A	2A00
-326C	0000
-326E	3F00
-3270	0A00
-3272	1900
-3274	0C00
-3276	2000
-3278	2300
-327A	2100
-327C	3000
-327E	1100
-3280	0C00
-3282	2000
-3284	2300
-3286	2100
-3288	3000
-328A	1100
-328C	0F00
-328E	1900
-3290	0A00
-3292	0B00
-3296	0800
-3298	0F00
-329A	1900
-329C	0A00
-329E	0B00
-32A0	0000
-32A2	0800
-32A4	0F00
-32A6	1900
-32A8	0A00
-32AA	0B00
-32AC	0000
-32AE	0800
-3330	0108
-3334	0100
-3336	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/Milkwayfront_mode_0823.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/Milkwayfront_mode_0823.xlsx
deleted file mode 100755
index 0d2db15a..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/Milkwayfront_mode_0823.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/front_mode_0716.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/front_mode_0716.xlsx
deleted file mode 100755
index b6e18b74..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/front_mode_0716.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/front_mode_0722.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/front_mode_0722.xlsx
deleted file mode 100755
index 96de8540..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/front_mode_0722.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_0716.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_0716.txt
deleted file mode 100755
index a2fd8324..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_0716.txt
+++ /dev/null
@@ -1,5390 +0,0 @@
-	0xFCFC, 0x4000,
-	0x0000, 0x000C,
-	0x0000, 0x38E5,
-	0x6018, 0x0001,
-
-	0x7002, 0x0408,
-	0x6014, 0x0001,
-	0xFCFC, 0x2002,
-	0x1E92, 0x8000,
-	0x1E84, 0x282B,
-	0x1E86, 0x0320,
-	0xFCFC, 0x4000,
-	0x7002, 0x0008,
-	0xp5, 0x,
-	0xFCFC, 0x2000,
-	0xDCF0, 0x0101,
-	0xFCFC, 0x2001,
-	0x3C60, 0x0000,
-	0xFCFC, 0x2002,
-	0xA614, 0x8280,
-	0xA616, 0x0100,
-	0xA618, 0x1753,
-	0xA61A, 0x02FC,
-	0xA61C, 0xE702,
-	0xA61E, 0x83EA,
-	0xA620, 0xB7E7,
-	0xA622, 0x0124,
-	0xA624, 0x9387,
-	0xA626, 0x0787,
-	0xA628, 0x83A4,
-	0xA62A, 0x870D,
-	0xA62C, 0x03A4,
-	0xA62E, 0xC70D,
-	0xA630, 0x0146,
-	0xA632, 0xA685,
-	0xA634, 0x2285,
-	0xA636, 0x9740,
-	0xA638, 0x01FC,
-	0xA63A, 0xE780,
-	0xA63C, 0xE040,
-	0xA63E, 0x97B0,
-	0xA640, 0xFEFB,
-	0xA642, 0xE780,
-	0xA644, 0x60DC,
-	0xA646, 0x0546,
-	0xA648, 0xA685,
-	0xA64A, 0x2285,
-	0xA64C, 0x9740,
-	0xA64E, 0x01FC,
-	0xA650, 0xE780,
-	0xA652, 0x803F,
-	0xA654, 0x37A7,
-	0xA656, 0x0224,
-	0xA658, 0x9307,
-	0xA65A, 0x8754,
-	0xA65C, 0x03C6,
-	0xA65E, 0xC702,
-	0xA660, 0x8546,
-	0xA662, 0x6301,
-	0xA664, 0xD602,
-	0xA666, 0x83C6,
-	0xA668, 0x0700,
-	0xA66A, 0x0947,
-	0xA66C, 0x6384,
-	0xA66E, 0xE608,
-	0xA670, 0xB7C7,
-	0xA672, 0x0224,
-	0xA674, 0x83A7,
-	0xA676, 0x07B7,
-	0xA678, 0x0545,
-	0xA67A, 0x8297,
-	0xA67C, 0x1753,
-	0xA67E, 0x02FC,
-	0xA680, 0x6700,
-	0xA682, 0x83E6,
-	0xA684, 0x03D5,
-	0xA686, 0x4705,
-	0xA688, 0x05C9,
-	0xA68A, 0x83D8,
-	0xA68C, 0x2705,
-	0xA68E, 0xB7E6,
-	0xA690, 0x0124,
-	0xA692, 0x83D5,
-	0xA694, 0x665F,
-	0xA696, 0x1307,
-	0xA698, 0x8754,
-	0xA69A, 0x8146,
-	0xA69C, 0x2548,
-	0xA69E, 0x0356,
-	0xA6A0, 0xE702,
-	0xA6A2, 0x0907,
-	0xA6A4, 0x63E0,
-	0xA6A6, 0xC50E,
-	0xA6A8, 0x8506,
-	0xA6AA, 0xE39A,
-	0xA6AC, 0x06FF,
-	0xA6AE, 0x3707,
-	0xA6B0, 0x0040,
-	0xA6B2, 0x3A95,
-	0xA6B4, 0x2310,
-	0xA6B6, 0x1501,
-	0xA6B8, 0x03D5,
-	0xA6BA, 0x6705,
-	0xA6BC, 0x4DD5,
-	0xA6BE, 0x83D8,
-	0xA6C0, 0x2705,
-	0xA6C2, 0x37E7,
-	0xA6C4, 0x0124,
-	0xA6C6, 0x8355,
-	0xA6C8, 0x675F,
-	0xA6CA, 0xBE86,
-	0xA6CC, 0x0147,
-	0xA6CE, 0x2548,
-	0xA6D0, 0x03D6,
-	0xA6D2, 0xE602,
-	0xA6D4, 0x8906,
-	0xA6D6, 0x63EE,
-	0xA6D8, 0xC50A,
-	0xA6DA, 0x0507,
-	0xA6DC, 0xE31A,
-	0xA6DE, 0x07FF,
-	0xA6E0, 0x3707,
-	0xA6E2, 0x0040,
-	0xA6E4, 0x3A95,
-	0xA6E6, 0x2310,
-	0xA6E8, 0x1501,
-	0xA6EA, 0x83C6,
-	0xA6EC, 0x0700,
-	0xA6EE, 0x0947,
-	0xA6F0, 0xE390,
-	0xA6F2, 0xE6F8,
-	0xA6F4, 0x03D5,
-	0xA6F6, 0x8702,
-	0xA6F8, 0x1DC5,
-	0xA6FA, 0x83D8,
-	0xA6FC, 0x6702,
-	0xA6FE, 0x37F7,
-	0xA700, 0x0124,
-	0xA702, 0x8355,
-	0xA704, 0xA781,
-	0xA706, 0xBE86,
-	0xA708, 0x0147,
-	0xA70A, 0x2548,
-	0xA70C, 0x03D6,
-	0xA70E, 0x2600,
-	0xA710, 0x8906,
-	0xA712, 0x63E3,
-	0xA714, 0xC506,
-	0xA716, 0x0507,
-	0xA718, 0xE31A,
-	0xA71A, 0x07FF,
-	0xA71C, 0x3707,
-	0xA71E, 0x0040,
-	0xA720, 0x3A95,
-	0xA722, 0x2310,
-	0xA724, 0x1501,
-	0xA726, 0x03D5,
-	0xA728, 0xA702,
-	0xA72A, 0x39D1,
-	0xA72C, 0x83D8,
-	0xA72E, 0x6702,
-	0xA730, 0x37F7,
-	0xA732, 0x0124,
-	0xA734, 0x8355,
-	0xA736, 0xA781,
-	0xA738, 0xBE86,
-	0xA73A, 0x0147,
-	0xA73C, 0x2548,
-	0xA73E, 0x03D6,
-	0xA740, 0x2600,
-	0xA742, 0x8906,
-	0xA744, 0x63E4,
-	0xA746, 0xC502,
-	0xA748, 0x0507,
-	0xA74A, 0xE31A,
-	0xA74C, 0x07FF,
-	0xA74E, 0xB707,
-	0xA750, 0x0040,
-	0xA752, 0x3E95,
-	0xA754, 0xB7C7,
-	0xA756, 0x0224,
-	0xA758, 0x83A7,
-	0xA75A, 0x07B7,
-	0xA75C, 0x2310,
-	0xA75E, 0x1501,
-	0xA760, 0x0545,
-	0xA762, 0x8297,
-	0xA764, 0x1753,
-	0xA766, 0x02FC,
-	0xA768, 0x6700,
-	0xA76A, 0x03D8,
-	0xA76C, 0x2107,
-	0xA76E, 0x0607,
-	0xA770, 0xBA97,
-	0xA772, 0x83D8,
-	0xA774, 0x4700,
-	0xA776, 0xE1BF,
-	0xA778, 0x2107,
-	0xA77A, 0x0607,
-	0xA77C, 0x3E97,
-	0xA77E, 0x8358,
-	0xA780, 0x4700,
-	0xA782, 0x69BF,
-	0xA784, 0x1387,
-	0xA786, 0x0602,
-	0xA788, 0x0607,
-	0xA78A, 0x3E97,
-	0xA78C, 0x8358,
-	0xA78E, 0x0700,
-	0xA790, 0x39BF,
-	0xA792, 0x1307,
-	0xA794, 0x0702,
-	0xA796, 0x0607,
-	0xA798, 0x3E97,
-	0xA79A, 0x8358,
-	0xA79C, 0x0700,
-	0xA79E, 0x89B7,
-	0xA7A0, 0x1753,
-	0xA7A2, 0x02FC,
-	0xA7A4, 0xE702,
-	0xA7A6, 0x83CF,
-	0xA7A8, 0x3284,
-	0xA7AA, 0xB7E7,
-	0xA7AC, 0x0124,
-	0xA7AE, 0x032B,
-	0xA7B0, 0x4600,
-	0xA7B2, 0x832A,
-	0xA7B4, 0x4609,
-	0xA7B6, 0x032A,
-	0xA7B8, 0xC604,
-	0xA7BA, 0x0348,
-	0xA7BC, 0x8600,
-	0xA7BE, 0x9387,
-	0xA7C0, 0x0787,
-	0xA7C2, 0x0346,
-	0xA7C4, 0x8609,
-	0xA7C6, 0x0347,
-	0xA7C8, 0x0405,
-	0xA7CA, 0x83AB,
-	0xA7CC, 0x070E,
-	0xA7CE, 0x03AC,
-	0xA7D0, 0x470E,
-	0xA7D2, 0x3318,
-	0xA7D4, 0x0B01,
-	0xA7D6, 0x3317,
-	0xA7D8, 0xEA00,
-	0xA7DA, 0x3396,
-	0xA7DC, 0xCA00,
-	0xA7DE, 0x2322,
-	0xA7E0, 0x0401,
-	0xA7E2, 0x78C4,
-	0xA7E4, 0xAA84,
-	0xA7E6, 0x2E89,
-	0xA7E8, 0x232A,
-	0xA7EA, 0xC408,
-	0xA7EC, 0xDE85,
-	0xA7EE, 0x6285,
-	0xA7F0, 0x0146,
-	0xA7F2, 0xB689,
-	0xA7F4, 0x9740,
-	0xA7F6, 0x01FC,
-	0xA7F8, 0xE780,
-	0xA7FA, 0x0025,
-	0xA7FC, 0xCE86,
-	0xA7FE, 0x2286,
-	0xA800, 0xCA85,
-	0xA802, 0x2685,
-	0xA804, 0x97B0,
-	0xA806, 0xFDFB,
-	0xA808, 0xE780,
-	0xA80A, 0x00B0,
-	0xA80C, 0x6285,
-	0xA80E, 0x0546,
-	0xA810, 0xDE85,
-	0xA812, 0x9740,
-	0xA814, 0x01FC,
-	0xA816, 0xE780,
-	0xA818, 0x2023,
-	0xA81A, 0xB7C7,
-	0xA81C, 0x0224,
-	0xA81E, 0x83A7,
-	0xA820, 0x07B7,
-	0xA822, 0x2322,
-	0xA824, 0x6401,
-	0xA826, 0x232A,
-	0xA828, 0x5409,
-	0xA82A, 0x2326,
-	0xA82C, 0x4405,
-	0xA82E, 0x0145,
-	0xA830, 0x8297,
-	0xA832, 0x1753,
-	0xA834, 0x02FC,
-	0xA836, 0x6700,
-	0xA838, 0xE3C9,
-	0xA83A, 0x0100,
-	0xA83C, 0x1753,
-	0xA83E, 0x02FC,
-	0xA840, 0xE702,
-	0xA842, 0x43C8,
-	0xA844, 0x2A84,
-	0xA846, 0xEFE0,
-	0xA848, 0xEFA9,
-	0xA84A, 0xA147,
-	0xA84C, 0x6306,
-	0xA84E, 0xF400,
-	0xA850, 0x1753,
-	0xA852, 0x02FC,
-	0xA854, 0x6700,
-	0xA856, 0x43C9,
-	0xA858, 0x9770,
-	0xA85A, 0xFFFB,
-	0xA85C, 0xE780,
-	0xA85E, 0x000C,
-	0xA860, 0x39C5,
-	0xA862, 0xB737,
-	0xA864, 0x0124,
-	0xA866, 0x83C7,
-	0xA868, 0x271A,
-	0xA86A, 0xFDD3,
-	0xA86C, 0x3784,
-	0xA86E, 0x0040,
-	0xA870, 0x8355,
-	0xA872, 0xE4F3,
-	0xA874, 0x0D45,
-	0xA876, 0x93E5,
-	0xA878, 0x0524,
-	0xA87A, 0x97D0,
-	0xA87C, 0xFFFB,
-	0xA87E, 0xE780,
-	0xA880, 0xA00A,
-	0xA882, 0x8355,
-	0xA884, 0x24F7,
-	0xA886, 0xB7A7,
-	0xA888, 0x0124,
-	0xA88A, 0x9387,
-	0xA88C, 0x0753,
-	0xA88E, 0x03D7,
-	0xA890, 0x47B6,
-	0xA892, 0xC205,
-	0xA894, 0xC181,
-	0xA896, 0x1377,
-	0xA898, 0xF7DB,
-	0xA89A, 0x93F5,
-	0xA89C, 0xF5DB,
-	0xA89E, 0x4145,
-	0xA8A0, 0x2392,
-	0xA8A2, 0xE7B6,
-	0xA8A4, 0x97D0,
-	0xA8A6, 0xFFFB,
-	0xA8A8, 0xE780,
-	0xA8AA, 0x0008,
-	0xA8AC, 0x55B7,
-	0xA8AE, 0x9770,
-	0xA8B0, 0xFFFB,
-	0xA8B2, 0xE780,
-	0xA8B4, 0xA003,
-	0xA8B6, 0x55D5,
-	0xA8B8, 0x9770,
-	0xA8BA, 0xFFFB,
-	0xA8BC, 0xE780,
-	0xA8BE, 0x807D,
-	0xA8C0, 0x19C9,
-	0xA8C2, 0xB797,
-	0xA8C4, 0x0124,
-	0xA8C6, 0x9387,
-	0xA8C8, 0x07D7,
-	0xA8CA, 0x03C7,
-	0xA8CC, 0x8703,
-	0xA8CE, 0x83C7,
-	0xA8D0, 0x2706,
-	0xA8D2, 0x6306,
-	0xA8D4, 0xF706,
-	0xA8D6, 0x9770,
-	0xA8D8, 0xFFFB,
-	0xA8DA, 0xE780,
-	0xA8DC, 0xA07B,
-	0xA8DE, 0x51D1,
-	0xA8E0, 0xB797,
-	0xA8E2, 0x0124,
-	0xA8E4, 0x9387,
-	0xA8E6, 0x07D7,
-	0xA8E8, 0x03C7,
-	0xA8EA, 0xC701,
-	0xA8EC, 0x83C7,
-	0xA8EE, 0x2706,
-	0xA8F0, 0xE319,
-	0xA8F2, 0xF7F6,
-	0xA8F4, 0xB727,
-	0xA8F6, 0x0224,
-	0xA8F8, 0x0564,
-	0xA8FA, 0x9387,
-	0xA8FC, 0x076B,
-	0xA8FE, 0xA297,
-	0xA900, 0x03C7,
-	0xA902, 0xF780,
-	0xA904, 0x8547,
-	0xA906, 0x6317,
-	0xA908, 0xF700,
-	0xA90A, 0xB737,
-	0xA90C, 0x0124,
-	0xA90E, 0x83C7,
-	0xA910, 0x57A5,
-	0xA912, 0xB1C3,
-	0xA914, 0xB787,
-	0xA916, 0x0040,
-	0xA918, 0x83D5,
-	0xA91A, 0xE7F3,
-	0xA91C, 0x0D45,
-	0xA91E, 0x93E5,
-	0xA920, 0x0501,
-	0xA922, 0x97D0,
-	0xA924, 0xFFFB,
-	0xA926, 0xE780,
-	0xA928, 0x2000,
-	0xA92A, 0xB7A7,
-	0xA92C, 0x0124,
-	0xA92E, 0x9387,
-	0xA930, 0x0753,
-	0xA932, 0x03D7,
-	0xA934, 0x47B6,
-	0xA936, 0x3D9B,
-	0xA938, 0x2392,
-	0xA93A, 0xE7B6,
-	0xA93C, 0x1DB7,
-	0xA93E, 0xB727,
-	0xA940, 0x0224,
-	0xA942, 0x0564,
-	0xA944, 0x9387,
-	0xA946, 0x076B,
-	0xA948, 0xA297,
-	0xA94A, 0x03C7,
-	0xA94C, 0xF780,
-	0xA94E, 0x9147,
-	0xA950, 0xE30D,
-	0xA952, 0xF7FA,
-	0xA954, 0xC1B7,
-	0xA956, 0xB787,
-	0xA958, 0x0040,
-	0xA95A, 0x83D5,
-	0xA95C, 0xE7F3,
-	0xA95E, 0x0D45,
-	0xA960, 0x93E5,
-	0xA962, 0x0504,
-	0xA964, 0x97D0,
-	0xA966, 0xFFFB,
-	0xA968, 0xE780,
-	0xA96A, 0x00FC,
-	0xA96C, 0xB797,
-	0xA96E, 0x0124,
-	0xA970, 0x9387,
-	0xA972, 0x0753,
-	0xA974, 0xA297,
-	0xA976, 0x03D7,
-	0xA978, 0x47B6,
-	0xA97A, 0x1377,
-	0xA97C, 0xF7FB,
-	0xA97E, 0x2392,
-	0xA980, 0xE7B6,
-	0xA982, 0xC5B5,
-	0xA984, 0x3571,
-	0xA986, 0x22CF,
-	0xA988, 0x26CD,
-	0xA98A, 0x7324,
-	0xA98C, 0x2034,
-	0xA98E, 0xF324,
-	0xA990, 0x1034,
-	0xA992, 0x7360,
-	0xA994, 0x0430,
-	0xA996, 0x06CB,
-	0xA998, 0x16C9,
-	0xA99A, 0x1AC7,
-	0xA99C, 0x1EC5,
-	0xA99E, 0x2AC3,
-	0xA9A0, 0x2EC1,
-	0xA9A2, 0xB2DE,
-	0xA9A4, 0xB6DC,
-	0xA9A6, 0xBADA,
-	0xA9A8, 0xBED8,
-	0xA9AA, 0xC2D6,
-	0xA9AC, 0xC6D4,
-	0xA9AE, 0xF2D2,
-	0xA9B0, 0xF6D0,
-	0xA9B2, 0xFACE,
-	0xA9B4, 0xFECC,
-	0xA9B6, 0x82E2,
-	0xA9B8, 0x86E0,
-	0xA9BA, 0x0AFE,
-	0xA9BC, 0x0EFC,
-	0xA9BE, 0x12FA,
-	0xA9C0, 0x16F8,
-	0xA9C2, 0x1AF6,
-	0xA9C4, 0x1EF4,
-	0xA9C6, 0x2AF2,
-	0xA9C8, 0x2EF0,
-	0xA9CA, 0x32EE,
-	0xA9CC, 0x36EC,
-	0xA9CE, 0x3AEA,
-	0xA9D0, 0x3EE8,
-	0xA9D2, 0x42E6,
-	0xA9D4, 0x46E4,
-	0xA9D6, 0x72E2,
-	0xA9D8, 0x76E0,
-	0xA9DA, 0x272E,
-	0xA9DC, 0xE1FF,
-	0xA9DE, 0x272C,
-	0xA9E0, 0xF1FF,
-	0xA9E2, 0x9770,
-	0xA9E4, 0xFFFB,
-	0xA9E6, 0xE780,
-	0xA9E8, 0x60F3,
-	0xA9EA, 0x19C5,
-	0xA9EC, 0x9770,
-	0xA9EE, 0xFFFB,
-	0xA9F0, 0xE780,
-	0xA9F2, 0xC0EF,
-	0xA9F4, 0x631C,
-	0xA9F6, 0x0512,
-	0xA9F8, 0x9305,
-	0xA9FA, 0x0024,
-	0xA9FC, 0x4145,
-	0xA9FE, 0x97D0,
-	0xAA00, 0xFFFB,
-	0xAA02, 0xE780,
-	0xAA04, 0x60F9,
-	0xAA06, 0x8145,
-	0xAA08, 0x9377,
-	0xAA0A, 0x1500,
-	0xAA0C, 0x85C7,
-	0xAA0E, 0x37D7,
-	0xAA10, 0x0124,
-	0xAA12, 0xB7A7,
-	0xAA14, 0x0124,
-	0xAA16, 0x1307,
-	0xAA18, 0x07C4,
-	0xAA1A, 0x9387,
-	0xAA1C, 0x0753,
-	0xAA1E, 0x0356,
-	0xAA20, 0x4707,
-	0xAA22, 0x83D6,
-	0xAA24, 0xA7B6,
-	0xAA26, 0x0506,
-	0xAA28, 0x93E6,
-	0xAA2A, 0x1600,
-	0xAA2C, 0x231A,
-	0xAA2E, 0xC706,
-	0xAA30, 0x2395,
-	0xAA32, 0xD7B6,
-	0xAA34, 0x9377,
-	0xAA36, 0x2500,
-	0xAA38, 0x85C7,
-	0xAA3A, 0x37D7,
-	0xAA3C, 0x0124,
-	0xAA3E, 0xB7A7,
-	0xAA40, 0x0124,
-	0xAA42, 0x1307,
-	0xAA44, 0x07C4,
-	0xAA46, 0x9387,
-	0xAA48, 0x0753,
-	0xAA4A, 0x0356,
-	0xAA4C, 0xC70C,
-	0xAA4E, 0x83D6,
-	0xAA50, 0xA7B6,
-	0xAA52, 0x0506,
-	0xAA54, 0x93E6,
-	0xAA56, 0x2600,
-	0xAA58, 0x2316,
-	0xAA5A, 0xC70C,
-	0xAA5C, 0x2395,
-	0xAA5E, 0xD7B6,
-	0xAA60, 0x9377,
-	0xAA62, 0x0520,
-	0xAA64, 0x1375,
-	0xAA66, 0x0504,
-	0xAA68, 0xC5C3,
-	0xAA6A, 0xB7D7,
-	0xAA6C, 0x0124,
-	0xAA6E, 0x9387,
-	0xAA70, 0x07C4,
-	0xAA72, 0x03D7,
-	0xAA74, 0x6708,
-	0xAA76, 0x0507,
-	0xAA78, 0x2393,
-	0xAA7A, 0xE708,
-	0xAA7C, 0xD1C5,
-	0xAA7E, 0x37A7,
-	0xAA80, 0x0124,
-	0xAA82, 0x1307,
-	0xAA84, 0x0753,
-	0xAA86, 0x8356,
-	0xAA88, 0xA7B6,
-	0xAA8A, 0x93E6,
-	0xAA8C, 0x0620,
-	0xAA8E, 0x2315,
-	0xAA90, 0xD7B6,
-	0xAA92, 0x11C9,
-	0xAA94, 0x03D6,
-	0xAA96, 0xA708,
-	0xAA98, 0x0506,
-	0xAA9A, 0x2395,
-	0xAA9C, 0xC708,
-	0xAA9E, 0x93E6,
-	0xAAA0, 0x0604,
-	0xAAA2, 0x2315,
-	0xAAA4, 0xD7B6,
-	0xAAA6, 0xDA40,
-	0xAAA8, 0xCA42,
-	0xAAAA, 0x3A43,
-	0xAAAC, 0xAA43,
-	0xAAAE, 0x1A45,
-	0xAAB0, 0x8A45,
-	0xAAB2, 0x7656,
-	0xAAB4, 0xE656,
-	0xAAB6, 0x5657,
-	0xAAB8, 0xC657,
-	0xAABA, 0x3658,
-	0xAABC, 0xA658,
-	0xAABE, 0x165E,
-	0xAAC0, 0x865E,
-	0xAAC2, 0x764F,
-	0xAAC4, 0xE64F,
-	0xAAC6, 0x1660,
-	0xAAC8, 0x8660,
-	0xAACA, 0x7271,
-	0xAACC, 0xE271,
-	0xAACE, 0x5272,
-	0xAAD0, 0xC272,
-	0xAAD2, 0x3273,
-	0xAAD4, 0xA273,
-	0xAAD6, 0x1275,
-	0xAAD8, 0x8275,
-	0xAADA, 0x7266,
-	0xAADC, 0xE266,
-	0xAADE, 0x5267,
-	0xAAE0, 0xC267,
-	0xAAE2, 0x3268,
-	0xAAE4, 0xA268,
-	0xAAE6, 0x126E,
-	0xAAE8, 0x826E,
-	0xAAEA, 0x072F,
-	0xAAEC, 0xC1FF,
-	0xAAEE, 0x872F,
-	0xAAF0, 0x81FF,
-	0xAAF2, 0x7370,
-	0xAAF4, 0x0430,
-	0xAAF6, 0x7390,
-	0xAAF8, 0x1434,
-	0xAAFA, 0x7310,
-	0xAAFC, 0x2434,
-	0xAAFE, 0x7A44,
-	0xAB00, 0xEA44,
-	0xAB02, 0x0D61,
-	0xAB04, 0x7300,
-	0xAB06, 0x2030,
-	0xAB08, 0x59DD,
-	0xAB0A, 0xB7D7,
-	0xAB0C, 0x0124,
-	0xAB0E, 0x9387,
-	0xAB10, 0x07C4,
-	0xAB12, 0x03D7,
-	0xAB14, 0xA708,
-	0xAB16, 0x0507,
-	0xAB18, 0x2395,
-	0xAB1A, 0xE708,
-	0xAB1C, 0xC9D5,
-	0xAB1E, 0x37A7,
-	0xAB20, 0x0124,
-	0xAB22, 0x1307,
-	0xAB24, 0x0753,
-	0xAB26, 0x8356,
-	0xAB28, 0xA7B6,
-	0xAB2A, 0x95BF,
-	0xAB2C, 0xB7A7,
-	0xAB2E, 0x0124,
-	0xAB30, 0x83D5,
-	0xAB32, 0x8709,
-	0xAB34, 0x4145,
-	0xAB36, 0x97D0,
-	0xAB38, 0xFFFB,
-	0xAB3A, 0xE780,
-	0xAB3C, 0xE0E5,
-	0xAB3E, 0x8545,
-	0xAB40, 0xE1B5,
-	0xAB42, 0x0100,
-	0xAB44, 0x8280,
-	0xAB46, 0x0100,
-	0xAB48, 0x1753,
-	0xAB4A, 0x02FC,
-	0xAB4C, 0xE702,
-	0xAB4E, 0x8397,
-	0xAB50, 0x37E4,
-	0xAB52, 0x0124,
-	0xAB54, 0x1304,
-	0xAB56, 0x044C,
-	0xAB58, 0x8344,
-	0xAB5A, 0xE40A,
-	0xAB5C, 0x8547,
-	0xAB5E, 0x2307,
-	0xAB60, 0xF40A,
-	0xAB62, 0x97A0,
-	0xAB64, 0xFDFB,
-	0xAB66, 0xE780,
-	0xAB68, 0x20E3,
-	0xAB6A, 0x2307,
-	0xAB6C, 0x940A,
-	0xAB6E, 0x1753,
-	0xAB70, 0x02FC,
-	0xAB72, 0x6700,
-	0xAB74, 0x6397,
-	0xAB76, 0x0100,
-	0xAB78, 0xB7A7,
-	0xAB7A, 0x0224,
-	0xAB7C, 0x83C7,
-	0xAB7E, 0x075A,
-	0xAB80, 0x0547,
-	0xAB82, 0x6383,
-	0xAB84, 0xE700,
-	0xAB86, 0x8280,
-	0xAB88, 0x1753,
-	0xAB8A, 0x02FC,
-	0xAB8C, 0xE702,
-	0xAB8E, 0xE391,
-	0xAB90, 0x3794,
-	0xAB92, 0x0124,
-	0xAB94, 0x1304,
-	0xAB96, 0x0453,
-	0xAB98, 0x0347,
-	0xAB9A, 0x041B,
-	0xAB9C, 0x4111,
-	0xAB9E, 0x6307,
-	0xABA0, 0xF700,
-	0xABA2, 0x4101,
-	0xABA4, 0x1753,
-	0xABA6, 0x02FC,
-	0xABA8, 0x6700,
-	0xABAA, 0x6393,
-	0xABAC, 0x8947,
-	0xABAE, 0xE31A,
-	0xABB0, 0xF5FE,
-	0xABB2, 0x8347,
-	0xABB4, 0x3441,
-	0xABB6, 0xADC3,
-	0xABB8, 0x83A9,
-	0xABBA, 0x0500,
-	0xABBC, 0x2EC6,
-	0xABBE, 0x97C0,
-	0xABC0, 0x01FC,
-	0xABC2, 0xE780,
-	0xABC4, 0x20B8,
-	0xABC6, 0xAA84,
-	0xABC8, 0x9780,
-	0xABCA, 0x01FC,
-	0xABCC, 0xE780,
-	0xABCE, 0x80C7,
-	0xABD0, 0xB245,
-	0xABD2, 0x2A89,
-	0xABD4, 0x9C41,
-	0xABD6, 0x63F3,
-	0xABD8, 0x9700,
-	0xABDA, 0xA687,
-	0xABDC, 0x8851,
-	0xABDE, 0x9CC1,
-	0xABE0, 0x2EC6,
-	0xABE2, 0x4A95,
-	0xABE4, 0x97B0,
-	0xABE6, 0x00FC,
-	0xABE8, 0xE780,
-	0xABEA, 0x00C5,
-	0xABEC, 0xB245,
-	0xABEE, 0xAA84,
-	0xABF0, 0xE8C9,
-	0xABF2, 0x3385,
-	0xABF4, 0x2901,
-	0xABF6, 0x97B0,
-	0xABF8, 0x00FC,
-	0xABFA, 0xE780,
-	0xABFC, 0xE0C3,
-	0xABFE, 0x8567,
-	0xAC00, 0x3E94,
-	0xAC02, 0x8327,
-	0xAC04, 0xC483,
-	0xAC06, 0x2695,
-	0xAC08, 0xB245,
-	0xAC0A, 0x63F3,
-	0xAC0C, 0xA700,
-	0xAC0E, 0xAA87,
-	0xAC10, 0x2322,
-	0xAC12, 0xF498,
-	0xAC14, 0xE8C5,
-	0xAC16, 0x71B7,
-	0xAC18, 0x0145,
-	0xAC1A, 0x2EC6,
-	0xAC1C, 0x97B0,
-	0xAC1E, 0x01FC,
-	0xAC20, 0xE780,
-	0xAC22, 0x8035,
-	0xAC24, 0xB245,
-	0xAC26, 0xAA89,
-	0xAC28, 0x51BF,
-	0xAC2A, 0x0100,
-	0xAC2C, 0x1753,
-	0xAC2E, 0x02FC,
-	0xAC30, 0xE702,
-	0xAC32, 0x4389,
-	0xAC34, 0x2A84,
-	0xAC36, 0xEFE0,
-	0xAC38, 0xAFFC,
-	0xAC3A, 0x01E8,
-	0xAC3C, 0xB7D7,
-	0xAC3E, 0x0124,
-	0xAC40, 0x03A7,
-	0xAC42, 0x87C1,
-	0xAC44, 0x9147,
-	0xAC46, 0x6306,
-	0xAC48, 0xF700,
-	0xAC4A, 0x1753,
-	0xAC4C, 0x02FC,
-	0xAC4E, 0x6700,
-	0xAC50, 0xA389,
-	0xAC52, 0xB7D7,
-	0xAC54, 0x0124,
-	0xAC56, 0x83C7,
-	0xAC58, 0x07FA,
-	0xAC5A, 0xE5DB,
-	0xAC5C, 0xB747,
-	0xAC5E, 0x0124,
-	0xAC60, 0x83C7,
-	0xAC62, 0x27C4,
-	0xAC64, 0xFDF3,
-	0xAC66, 0x97E0,
-	0xAC68, 0x00FC,
-	0xAC6A, 0xE780,
-	0xAC6C, 0xA097,
-	0xAC6E, 0xB787,
-	0xAC70, 0x0224,
-	0xAC72, 0x0547,
-	0xAC74, 0xA380,
-	0xAC76, 0xE74E,
-	0xAC78, 0xC9BF,
-	0xAC7A, 0x0100,
-	0xAC7C, 0x1753,
-	0xAC7E, 0x02FC,
-	0xAC80, 0xE702,
-	0xAC82, 0x4384,
-	0xAC84, 0x3784,
-	0xAC86, 0x0224,
-	0xAC88, 0x1304,
-	0xAC8A, 0xC449,
-	0xAC8C, 0x8347,
-	0xAC8E, 0x5404,
-	0xAC90, 0x99E7,
-	0xAC92, 0xEFE0,
-	0xAC94, 0x7F82,
-	0xAC96, 0x1753,
-	0xAC98, 0x02FC,
-	0xAC9A, 0x6700,
-	0xAC9C, 0xE384,
-	0xAC9E, 0x97E0,
-	0xACA0, 0x00FC,
-	0xACA2, 0xE780,
-	0xACA4, 0x20AF,
-	0xACA6, 0xA302,
-	0xACA8, 0x0404,
-	0xACAA, 0xEFE0,
-	0xACAC, 0xFF80,
-	0xACAE, 0x1753,
-	0xACB0, 0x02FC,
-	0xACB2, 0x6700,
-	0xACB4, 0x6383,
-	0xACB6, 0x0100,
-	0xACB8, 0x1753,
-	0xACBA, 0x02FC,
-	0xACBC, 0xE702,
-	0xACBE, 0x8380,
-	0xACC0, 0xB7E7,
-	0xACC2, 0x0124,
-	0xACC4, 0x9387,
-	0xACC6, 0x0787,
-	0xACC8, 0x03A9,
-	0xACCA, 0x870E,
-	0xACCC, 0x83A4,
-	0xACCE, 0xC70E,
-	0xACD0, 0x0146,
-	0xACD2, 0xCA85,
-	0xACD4, 0x2A84,
-	0xACD6, 0x2685,
-	0xACD8, 0x9740,
-	0xACDA, 0x01FC,
-	0xACDC, 0xE780,
-	0xACDE, 0xC0D6,
-	0xACE0, 0x2285,
-	0xACE2, 0x97A0,
-	0xACE4, 0xFFFB,
-	0xACE6, 0xE780,
-	0xACE8, 0x603E,
-	0xACEA, 0x0546,
-	0xACEC, 0xCA85,
-	0xACEE, 0x2685,
-	0xACF0, 0x9740,
-	0xACF2, 0x01FC,
-	0xACF4, 0xE780,
-	0xACF6, 0x40D5,
-	0xACF8, 0x8547,
-	0xACFA, 0x630F,
-	0xACFC, 0xF400,
-	0xACFE, 0x9147,
-	0xAD00, 0x630C,
-	0xAD02, 0xF400,
-	0xAD04, 0xB7C7,
-	0xAD06, 0x0224,
-	0xAD08, 0x83A7,
-	0xAD0A, 0x07B7,
-	0xAD0C, 0x0945,
-	0xAD0E, 0x8297,
-	0xAD10, 0x1743,
-	0xAD12, 0x02FC,
-	0xAD14, 0x6700,
-	0xAD16, 0x437D,
-	0xAD18, 0x9770,
-	0xAD1A, 0xFFFB,
-	0xAD1C, 0xE780,
-	0xAD1E, 0x00C0,
-	0xAD20, 0x75F1,
-	0xAD22, 0x9770,
-	0xAD24, 0xFFFB,
-	0xAD26, 0xE780,
-	0xAD28, 0x60BC,
-	0xAD2A, 0x69DD,
-	0xAD2C, 0x9770,
-	0xAD2E, 0xFFFB,
-	0xAD30, 0xE780,
-	0xAD32, 0x4036,
-	0xAD34, 0x19C9,
-	0xAD36, 0xB797,
-	0xAD38, 0x0124,
-	0xAD3A, 0x9387,
-	0xAD3C, 0x07D7,
-	0xAD3E, 0x03C7,
-	0xAD40, 0x8703,
-	0xAD42, 0x83C7,
-	0xAD44, 0x2706,
-	0xAD46, 0x6306,
-	0xAD48, 0xF706,
-	0xAD4A, 0x9770,
-	0xAD4C, 0xFFFB,
-	0xAD4E, 0xE780,
-	0xAD50, 0x6034,
-	0xAD52, 0x4DD9,
-	0xAD54, 0xB797,
-	0xAD56, 0x0124,
-	0xAD58, 0x9387,
-	0xAD5A, 0x07D7,
-	0xAD5C, 0x03C7,
-	0xAD5E, 0xC701,
-	0xAD60, 0x83C7,
-	0xAD62, 0x2706,
-	0xAD64, 0xE310,
-	0xAD66, 0xF7FA,
-	0xAD68, 0xB7C7,
-	0xAD6A, 0x0224,
-	0xAD6C, 0x83A7,
-	0xAD6E, 0x47B7,
-	0xAD70, 0xB706,
-	0xAD72, 0x0040,
-	0xAD74, 0x1386,
-	0xAD76, 0x4606,
-	0xAD78, 0x8965,
-	0xAD7A, 0x3E96,
-	0xAD7C, 0x1387,
-	0xAD7E, 0x061F,
-	0xAD80, 0x9385,
-	0xAD82, 0xF5F1,
-	0xAD84, 0x2310,
-	0xAD86, 0xB600,
-	0xAD88, 0x3E97,
-	0xAD8A, 0x7D56,
-	0xAD8C, 0x2310,
-	0xAD8E, 0xC700,
-	0xAD90, 0x37D6,
-	0xAD92, 0x0124,
-	0xAD94, 0x1306,
-	0xAD96, 0x06E7,
-	0xAD98, 0x0357,
-	0xAD9A, 0xC605,
-	0xAD9C, 0x0356,
-	0xAD9E, 0x6606,
-	0xADA0, 0x9386,
-	0xADA2, 0x861D,
-	0xADA4, 0x3297,
-	0xADA6, 0x4207,
-	0xADA8, 0xB697,
-	0xADAA, 0x4183,
-	0xADAC, 0x2390,
-	0xADAE, 0xE700,
-	0xADB0, 0x91BF,
-	0xADB2, 0xB7C7,
-	0xADB4, 0x0224,
-	0xADB6, 0x83A7,
-	0xADB8, 0x47B7,
-	0xADBA, 0xB706,
-	0xADBC, 0x0040,
-	0xADBE, 0x1386,
-	0xADC0, 0x4606,
-	0xADC2, 0x8965,
-	0xADC4, 0x3E96,
-	0xADC6, 0x1387,
-	0xADC8, 0x061F,
-	0xADCA, 0x9385,
-	0xADCC, 0xF5F1,
-	0xADCE, 0x2310,
-	0xADD0, 0xB600,
-	0xADD2, 0x3E97,
-	0xADD4, 0x7D56,
-	0xADD6, 0x2310,
-	0xADD8, 0xC700,
-	0xADDA, 0x37D6,
-	0xADDC, 0x0124,
-	0xADDE, 0x1306,
-	0xADE0, 0x06E7,
-	0xADE2, 0x0357,
-	0xADE4, 0x0606,
-	0xADE6, 0x9386,
-	0xADE8, 0xA61D,
-	0xADEA, 0x0356,
-	0xADEC, 0x6606,
-	0xADEE, 0x5DBF,
-	0xADF0, 0x1743,
-	0xADF2, 0x02FC,
-	0xADF4, 0xE702,
-	0xADF6, 0x036D,
-	0xADF8, 0xB7D7,
-	0xADFA, 0x0024,
-	0xADFC, 0x83C7,
-	0xADFE, 0x476D,
-	0xAE00, 0x8544,
-	0xAE02, 0x6380,
-	0xAE04, 0x9714,
-	0xAE06, 0xB7E7,
-	0xAE08, 0x0024,
-	0xAE0A, 0x03C4,
-	0xAE0C, 0xC784,
-	0xAE0E, 0xB7A7,
-	0xAE10, 0x0124,
-	0xAE12, 0x83C7,
-	0xAE14, 0x6792,
-	0xAE16, 0x3334,
-	0xAE18, 0x8000,
-	0xAE1A, 0x3304,
-	0xAE1C, 0x8040,
-	0xAE1E, 0x7998,
-	0xAE20, 0x1304,
-	0xAE22, 0x6402,
-	0xAE24, 0xEDE7,
-	0xAE26, 0xB767,
-	0xAE28, 0x0024,
-	0xAE2A, 0x9387,
-	0xAE2C, 0x0733,
-	0xAE2E, 0x03D7,
-	0xAE30, 0xE75B,
-	0xAE32, 0x19C7,
-	0xAE34, 0x1347,
-	0xAE36, 0xF7FF,
-	0xAE38, 0x618F,
-	0xAE3A, 0x1314,
-	0xAE3C, 0x0701,
-	0xAE3E, 0x4180,
-	0xAE40, 0x83D7,
-	0xAE42, 0x075C,
-	0xAE44, 0x0D45,
-	0xAE46, 0x5D8C,
-	0xAE48, 0x4204,
-	0xAE4A, 0x4180,
-	0xAE4C, 0xA285,
-	0xAE4E, 0x97D0,
-	0xAE50, 0xFFFB,
-	0xAE52, 0xE780,
-	0xAE54, 0xA0BB,
-	0xAE56, 0x9315,
-	0xAE58, 0x0501,
-	0xAE5A, 0xC181,
-	0xAE5C, 0xAA84,
-	0xAE5E, 0x6309,
-	0xAE60, 0xB400,
-	0xAE62, 0x0565,
-	0xAE64, 0xA18D,
-	0xAE66, 0x2D05,
-	0xAE68, 0x97A0,
-	0xAE6A, 0xFFFB,
-	0xAE6C, 0xE780,
-	0xAE6E, 0x8046,
-	0xAE70, 0x1395,
-	0xAE72, 0x0401,
-	0xAE74, 0x93F7,
-	0xAE76, 0x1400,
-	0xAE78, 0x4181,
-	0xAE7A, 0x91CB,
-	0xAE7C, 0xB7D7,
-	0xAE7E, 0x0124,
-	0xAE80, 0x9387,
-	0xAE82, 0x07C4,
-	0xAE84, 0x03D7,
-	0xAE86, 0x4707,
-	0xAE88, 0x0507,
-	0xAE8A, 0x239A,
-	0xAE8C, 0xE706,
-	0xAE8E, 0x9377,
-	0xAE90, 0x2500,
-	0xAE92, 0x91CB,
-	0xAE94, 0xB7D7,
-	0xAE96, 0x0124,
-	0xAE98, 0x9387,
-	0xAE9A, 0x07C4,
-	0xAE9C, 0x03D7,
-	0xAE9E, 0xC70C,
-	0xAEA0, 0x0507,
-	0xAEA2, 0x2396,
-	0xAEA4, 0xE70C,
-	0xAEA6, 0x9377,
-	0xAEA8, 0x4500,
-	0xAEAA, 0x91CB,
-	0xAEAC, 0xB7D7,
-	0xAEAE, 0x0124,
-	0xAEB0, 0x9387,
-	0xAEB2, 0x07C4,
-	0xAEB4, 0x03D7,
-	0xAEB6, 0xE70C,
-	0xAEB8, 0x0507,
-	0xAEBA, 0x2397,
-	0xAEBC, 0xE70C,
-	0xAEBE, 0x9377,
-	0xAEC0, 0x0502,
-	0xAEC2, 0x91CB,
-	0xAEC4, 0xB7D7,
-	0xAEC6, 0x0124,
-	0xAEC8, 0x9387,
-	0xAECA, 0x07C4,
-	0xAECC, 0x03D7,
-	0xAECE, 0x070F,
-	0xAED0, 0x0507,
-	0xAED2, 0x2398,
-	0xAED4, 0xE70E,
-	0xAED6, 0x9377,
-	0xAED8, 0x0520,
-	0xAEDA, 0x91CB,
-	0xAEDC, 0xB7D7,
-	0xAEDE, 0x0124,
-	0xAEE0, 0x9387,
-	0xAEE2, 0x07C4,
-	0xAEE4, 0x03D7,
-	0xAEE6, 0x6708,
-	0xAEE8, 0x0507,
-	0xAEEA, 0x2393,
-	0xAEEC, 0xE708,
-	0xAEEE, 0x1375,
-	0xAEF0, 0x0504,
-	0xAEF2, 0x11C9,
-	0xAEF4, 0xB7D7,
-	0xAEF6, 0x0124,
-	0xAEF8, 0x9387,
-	0xAEFA, 0x07C4,
-	0xAEFC, 0x03D7,
-	0xAEFE, 0xA708,
-	0xAF00, 0x0507,
-	0xAF02, 0x2395,
-	0xAF04, 0xE708,
-	0xAF06, 0x1743,
-	0xAF08, 0x02FC,
-	0xAF0A, 0x6700,
-	0xAF0C, 0xE35D,
-	0xAF0E, 0xB7D7,
-	0xAF10, 0x0124,
-	0xAF12, 0x83D7,
-	0xAF14, 0xA7E7,
-	0xAF16, 0x81DB,
-	0xAF18, 0x9760,
-	0xAF1A, 0xFEFB,
-	0xAF1C, 0xE780,
-	0xAF1E, 0x8068,
-	0xAF20, 0x6311,
-	0xAF22, 0x9506,
-	0xAF24, 0xB797,
-	0xAF26, 0x0124,
-	0xAF28, 0x9387,
-	0xAF2A, 0x07D7,
-	0xAF2C, 0x03C7,
-	0xAF2E, 0xC701,
-	0xAF30, 0x83C7,
-	0xAF32, 0x2706,
-	0xAF34, 0x6307,
-	0xAF36, 0xF704,
-	0xAF38, 0x1364,
-	0xAF3A, 0x0424,
-	0xAF3C, 0x4204,
-	0xAF3E, 0x4180,
-	0xAF40, 0x11A0,
-	0xAF42, 0x0144,
-	0xAF44, 0xB767,
-	0xAF46, 0x0024,
-	0xAF48, 0x9387,
-	0xAF4A, 0x0733,
-	0xAF4C, 0x03C7,
-	0xAF4E, 0x273B,
-	0xAF50, 0xE30F,
-	0xAF52, 0x07EC,
-	0xAF54, 0x37A7,
-	0xAF56, 0x0124,
-	0xAF58, 0x0347,
-	0xAF5A, 0x6792,
-	0xAF5C, 0xE309,
-	0xAF5E, 0x07EC,
-	0xAF60, 0x37D7,
-	0xAF62, 0x0124,
-	0xAF64, 0x0357,
-	0xAF66, 0xA7E7,
-	0xAF68, 0xE303,
-	0xAF6A, 0x07EC,
-	0xAF6C, 0x3797,
-	0xAF6E, 0x0124,
-	0xAF70, 0x0347,
-	0xAF72, 0x1700,
-	0xAF74, 0xE30D,
-	0xAF76, 0x07EA,
-	0xAF78, 0x1374,
-	0xAF7A, 0xF4DF,
-	0xAF7C, 0x4204,
-	0xAF7E, 0x4180,
-	0xAF80, 0x7DB5,
-	0xAF82, 0x9760,
-	0xAF84, 0xFEFB,
-	0xAF86, 0xE780,
-	0xAF88, 0xE061,
-	0xAF8A, 0x8547,
-	0xAF8C, 0xE31C,
-	0xAF8E, 0xF5FA,
-	0xAF90, 0xB797,
-	0xAF92, 0x0124,
-	0xAF94, 0x9387,
-	0xAF96, 0x07D7,
-	0xAF98, 0x03C7,
-	0xAF9A, 0xC701,
-	0xAF9C, 0x83C7,
-	0xAF9E, 0x2706,
-	0xAFA0, 0xE312,
-	0xAFA2, 0xF7FA,
-	0xAFA4, 0x1364,
-	0xAFA6, 0x0420,
-	0xAFA8, 0x4204,
-	0xAFAA, 0x4180,
-	0xAFAC, 0x61BF,
-	0xAFAE, 0x0100,
-	0xAFB0, 0x7171,
-	0xAFB2, 0x22D7,
-	0xAFB4, 0x26D5,
-	0xAFB6, 0x7324,
-	0xAFB8, 0x2034,
-	0xAFBA, 0xF324,
-	0xAFBC, 0x1034,
-	0xAFBE, 0x7360,
-	0xAFC0, 0x0430,
-	0xAFC2, 0x2EC5,
-	0xAFC4, 0xA565,
-	0xAFC6, 0xBEDC,
-	0xAFC8, 0x06D3,
-	0xAFCA, 0x16D1,
-	0xAFCC, 0x1ACF,
-	0xAFCE, 0x1ECD,
-	0xAFD0, 0x22CB,
-	0xAFD2, 0x2AC7,
-	0xAFD4, 0x32C3,
-	0xAFD6, 0x36C1,
-	0xAFD8, 0xBADE,
-	0xAFDA, 0xC2DA,
-	0xAFDC, 0xC6D8,
-	0xAFDE, 0xF2D0,
-	0xAFE0, 0xF6CE,
-	0xAFE2, 0xFACC,
-	0xAFE4, 0xFECA,
-	0xAFE6, 0x82E2,
-	0xAFE8, 0x86E0,
-	0xAFEA, 0x0AFE,
-	0xAFEC, 0x0EFC,
-	0xAFEE, 0x12FA,
-	0xAFF0, 0x16F8,
-	0xAFF2, 0x1AF6,
-	0xAFF4, 0x1EF4,
-	0xAFF6, 0x2AF2,
-	0xAFF8, 0x2EF0,
-	0xAFFA, 0x32EE,
-	0xAFFC, 0x26C9,
-	0xAFFE, 0xCAD6,
-	0xB000, 0xCED4,
-	0xB002, 0xD2D2,
-	0xB004, 0x9385,
-	0xB006, 0x0540,
-	0xB008, 0x0545,
-	0xB00A, 0x36EC,
-	0xB00C, 0x3AEA,
-	0xB00E, 0x3EE8,
-	0xB010, 0x42E6,
-	0xB012, 0x46E4,
-	0xB014, 0x72E2,
-	0xB016, 0x76E0,
-	0xB018, 0x272E,
-	0xB01A, 0xE1FF,
-	0xB01C, 0x272C,
-	0xB01E, 0xF1FF,
-	0xB020, 0x97D0,
-	0xB022, 0xFFFB,
-	0xB024, 0xE780,
-	0xB026, 0x4097,
-	0xB028, 0xA167,
-	0xB02A, 0xE98F,
-	0xB02C, 0x2A84,
-	0xB02E, 0x6394,
-	0xB030, 0x0718,
-	0xB032, 0xB764,
-	0xB034, 0x0124,
-	0xB036, 0x9384,
-	0xB038, 0x0440,
-	0xB03A, 0x8567,
-	0xB03C, 0xE18F,
-	0xB03E, 0xCDCF,
-	0xB040, 0x37D7,
-	0xB042, 0x0124,
-	0xB044, 0x3789,
-	0xB046, 0x0224,
-	0xB048, 0x1307,
-	0xB04A, 0x07C4,
-	0xB04C, 0x1309,
-	0xB04E, 0xC949,
-	0xB050, 0x8356,
-	0xB052, 0x670E,
-	0xB054, 0x8327,
-	0xB056, 0x0905,
-	0xB058, 0x8506,
-	0xB05A, 0x8507,
-	0xB05C, 0x2328,
-	0xB05E, 0xF904,
-	0xB060, 0x2313,
-	0xB062, 0xD70E,
-	0xB064, 0x858B,
-	0xB066, 0x639F,
-	0xB068, 0x071A,
-	0xB06A, 0x8547,
-	0xB06C, 0xA30A,
-	0xB06E, 0xF904,
-	0xB070, 0x9770,
-	0xB072, 0xFFFB,
-	0xB074, 0xE780,
-	0xB076, 0x00FF,
-	0xB078, 0x19C5,
-	0xB07A, 0x0357,
-	0xB07C, 0x4905,
-	0xB07E, 0x9307,
-	0xB080, 0x1010,
-	0xB082, 0x6306,
-	0xB084, 0xF724,
-	0xB086, 0xDC50,
-	0xB088, 0x0945,
-	0xB08A, 0x8297,
-	0xB08C, 0x9770,
-	0xB08E, 0xFFFB,
-	0xB090, 0xE780,
-	0xB092, 0xC085,
-	0xB094, 0x11C5,
-	0xB096, 0x9770,
-	0xB098, 0xFFFB,
-	0xB09A, 0xE780,
-	0xB09C, 0x2088,
-	0xB09E, 0x55C5,
-	0xB0A0, 0x9760,
-	0xB0A2, 0x00FC,
-	0xB0A4, 0xE780,
-	0xB0A6, 0x405A,
-	0xB0A8, 0xB787,
-	0xB0AA, 0x0024,
-	0xB0AC, 0x83C7,
-	0xB0AE, 0x078C,
-	0xB0B0, 0xAA89,
-	0xB0B2, 0x6392,
-	0xB0B4, 0x071C,
-	0xB0B6, 0xB7D7,
-	0xB0B8, 0x0124,
-	0xB0BA, 0x9387,
-	0xB0BC, 0x07E7,
-	0xB0BE, 0xBC5F,
-	0xB0C0, 0x639A,
-	0xB0C2, 0x0716,
-	0xB0C4, 0x3799,
-	0xB0C6, 0x0124,
-	0xB0C8, 0x1309,
-	0xB0CA, 0x0953,
-	0xB0CC, 0xB727,
-	0xB0CE, 0x0024,
-	0xB0D0, 0x83C7,
-	0xB0D2, 0x7752,
-	0xB0D4, 0x6396,
-	0xB0D6, 0x071E,
-	0xB0D8, 0x0345,
-	0xB0DA, 0xC918,
-	0xB0DC, 0x631D,
-	0xB0DE, 0x051C,
-	0xB0E0, 0xDC50,
-	0xB0E2, 0x0D45,
-	0xB0E4, 0x8297,
-	0xB0E6, 0x4E85,
-	0xB0E8, 0x9760,
-	0xB0EA, 0x00FC,
-	0xB0EC, 0xE780,
-	0xB0EE, 0x005A,
-	0xB0F0, 0x8567,
-	0xB0F2, 0x3E99,
-	0xB0F4, 0x2320,
-	0xB0F6, 0xA9A2,
-	0xB0F8, 0x1374,
-	0xB0FA, 0x0440,
-	0xB0FC, 0x21C4,
-	0xB0FE, 0xB7D7,
-	0xB100, 0x0124,
-	0xB102, 0x9387,
-	0xB104, 0x07C4,
-	0xB106, 0x37A7,
-	0xB108, 0x0124,
-	0xB10A, 0x83D6,
-	0xB10C, 0x670E,
-	0xB10E, 0x1307,
-	0xB110, 0x0753,
-	0xB112, 0x0347,
-	0xB114, 0x179B,
-	0xB116, 0x8506,
-	0xB118, 0x3784,
-	0xB11A, 0x0224,
-	0xB11C, 0x1304,
-	0xB11E, 0xC449,
-	0xB120, 0x1337,
-	0xB122, 0x1700,
-	0xB124, 0x2393,
-	0xB126, 0xD70E,
-	0xB128, 0x230A,
-	0xB12A, 0xE404,
-	0xB12C, 0x9770,
-	0xB12E, 0xFFFB,
-	0xB130, 0xE780,
-	0xB132, 0x40F3,
-	0xB134, 0x6306,
-	0xB136, 0x0510,
-	0xB138, 0x0357,
-	0xB13A, 0x4405,
-	0xB13C, 0x9307,
-	0xB13E, 0x1010,
-	0xB140, 0x6300,
-	0xB142, 0xF710,
-	0xB144, 0xDC50,
-	0xB146, 0x1D45,
-	0xB148, 0x8297,
-	0xB14A, 0x9A50,
-	0xB14C, 0x8A52,
-	0xB14E, 0x7A43,
-	0xB150, 0xEA43,
-	0xB152, 0x5A44,
-	0xB154, 0xCA44,
-	0xB156, 0x3A45,
-	0xB158, 0xAA45,
-	0xB15A, 0x1A46,
-	0xB15C, 0x8A46,
-	0xB15E, 0x7657,
-	0xB160, 0xE657,
-	0xB162, 0x5658,
-	0xB164, 0xC658,
-	0xB166, 0x3659,
-	0xB168, 0xA659,
-	0xB16A, 0x165A,
-	0xB16C, 0x065E,
-	0xB16E, 0xF64E,
-	0xB170, 0x664F,
-	0xB172, 0xD64F,
-	0xB174, 0x1660,
-	0xB176, 0x8660,
-	0xB178, 0x7271,
-	0xB17A, 0xE271,
-	0xB17C, 0x5272,
-	0xB17E, 0xC272,
-	0xB180, 0x3273,
-	0xB182, 0xA273,
-	0xB184, 0x1275,
-	0xB186, 0x8275,
-	0xB188, 0x7266,
-	0xB18A, 0xE266,
-	0xB18C, 0x5267,
-	0xB18E, 0xC267,
-	0xB190, 0x3268,
-	0xB192, 0xA268,
-	0xB194, 0x126E,
-	0xB196, 0x826E,
-	0xB198, 0x072F,
-	0xB19A, 0xC1FF,
-	0xB19C, 0x872F,
-	0xB19E, 0x81FF,
-	0xB1A0, 0x7370,
-	0xB1A2, 0x0430,
-	0xB1A4, 0x7390,
-	0xB1A6, 0x1434,
-	0xB1A8, 0x7310,
-	0xB1AA, 0x2434,
-	0xB1AC, 0x3A54,
-	0xB1AE, 0xAA54,
-	0xB1B0, 0x4D61,
-	0xB1B2, 0x7300,
-	0xB1B4, 0x2030,
-	0xB1B6, 0x37D9,
-	0xB1B8, 0x0124,
-	0xB1BA, 0x1309,
-	0xB1BC, 0x09C4,
-	0xB1BE, 0x8357,
-	0xB1C0, 0x490E,
-	0xB1C2, 0xB764,
-	0xB1C4, 0x0124,
-	0xB1C6, 0x9384,
-	0xB1C8, 0x0440,
-	0xB1CA, 0xD850,
-	0xB1CC, 0x8507,
-	0xB1CE, 0x0145,
-	0xB1D0, 0x2312,
-	0xB1D2, 0xF90E,
-	0xB1D4, 0x0297,
-	0xB1D6, 0x9760,
-	0xB1D8, 0xFFFB,
-	0xB1DA, 0xE780,
-	0xB1DC, 0x2071,
-	0xB1DE, 0x25E5,
-	0xB1E0, 0xB729,
-	0xB1E2, 0x0024,
-	0xB1E4, 0x3799,
-	0xB1E6, 0x0124,
-	0xB1E8, 0x9389,
-	0xB1EA, 0x0933,
-	0xB1EC, 0x1309,
-	0xB1EE, 0x0953,
-	0xB1F0, 0x056A,
-	0xB1F2, 0x83C7,
-	0xB1F4, 0x791F,
-	0xB1F6, 0x4A9A,
-	0xB1F8, 0x2320,
-	0xB1FA, 0x0AA2,
-	0xB1FC, 0xB9EF,
-	0xB1FE, 0x0345,
-	0xB200, 0xC918,
-	0xB202, 0x2DE5,
-	0xB204, 0x83C7,
-	0xB206, 0x0920,
-	0xB208, 0x89C7,
-	0xB20A, 0x0327,
-	0xB20C, 0x4AB3,
-	0xB20E, 0x630A,
-	0xB210, 0xF700,
-	0xB212, 0x97E0,
-	0xB214, 0x00FC,
-	0xB216, 0xE780,
-	0xB218, 0xE0D2,
-	0xB21A, 0xDC50,
-	0xB21C, 0x0545,
-	0xB21E, 0x8297,
-	0xB220, 0x29BD,
-	0xB222, 0x01A0,
-	0xB224, 0x8547,
-	0xB226, 0x230A,
-	0xB228, 0x0904,
-	0xB22A, 0xA30A,
-	0xB22C, 0x0904,
-	0xB22E, 0x2328,
-	0xB230, 0xF904,
-	0xB232, 0x3DBD,
-	0xB234, 0x7D55,
-	0xB236, 0x9770,
-	0xB238, 0x01FC,
-	0xB23A, 0xE780,
-	0xB23C, 0xA004,
-	0xB23E, 0x59B5,
-	0xB240, 0xEFE0,
-	0xB242, 0x5FD9,
-	0xB244, 0x01B7,
-	0xB246, 0x9760,
-	0xB248, 0xFFFB,
-	0xB24A, 0xE780,
-	0xB24C, 0x206D,
-	0xB24E, 0x49F9,
-	0xB250, 0x8357,
-	0xB252, 0x490E,
-	0xB254, 0x858B,
-	0xB256, 0xC9F7,
-	0xB258, 0xCDBD,
-	0xB25A, 0x9770,
-	0xB25C, 0x01FC,
-	0xB25E, 0xE780,
-	0xB260, 0x2003,
-	0xB262, 0x2311,
-	0xB264, 0xA94E,
-	0xB266, 0x0345,
-	0xB268, 0xC918,
-	0xB26A, 0x49DD,
-	0xB26C, 0x97C0,
-	0xB26E, 0xFFFB,
-	0xB270, 0xE780,
-	0xB272, 0x40B4,
-	0xB274, 0x41BF,
-	0xB276, 0x9770,
-	0xB278, 0x01FC,
-	0xB27A, 0xE780,
-	0xB27C, 0x6001,
-	0xB27E, 0x3799,
-	0xB280, 0x0124,
-	0xB282, 0x1309,
-	0xB284, 0x0953,
-	0xB286, 0x8D67,
-	0xB288, 0xCA97,
-	0xB28A, 0x03C7,
-	0xB28C, 0xD76F,
-	0xB28E, 0x232E,
-	0xB290, 0xA94E,
-	0xB292, 0x8547,
-	0xB294, 0x6306,
-	0xB296, 0xF700,
-	0xB298, 0x8327,
-	0xB29A, 0x094F,
-	0xB29C, 0xE377,
-	0xB29E, 0xF5EA,
-	0xB2A0, 0x9760,
-	0xB2A2, 0x00FC,
-	0xB2A4, 0xE780,
-	0xB2A6, 0x80FC,
-	0xB2A8, 0x9770,
-	0xB2AA, 0x01FC,
-	0xB2AC, 0xE780,
-	0xB2AE, 0x40FE,
-	0xB2B0, 0x2320,
-	0xB2B2, 0xA950,
-	0xB2B4, 0x21BD,
-	0xB2B6, 0x97C0,
-	0xB2B8, 0xFFFB,
-	0xB2BA, 0xE780,
-	0xB2BC, 0xA0B2,
-	0xB2BE, 0x0DB5,
-	0xB2C0, 0x9770,
-	0xB2C2, 0x01FC,
-	0xB2C4, 0xE780,
-	0xB2C6, 0xC0FC,
-	0xB2C8, 0x2312,
-	0xB2CA, 0xA94E,
-	0xB2CC, 0x31B5,
-	0xB2CE, 0xEFE0,
-	0xB2D0, 0x7FD0,
-	0xB2D2, 0x55BB,
-	0xB2D4, 0x1743,
-	0xB2D6, 0x02FC,
-	0xB2D8, 0xE702,
-	0xB2DA, 0xC31E,
-	0xB2DC, 0x2A84,
-	0xB2DE, 0xEFD0,
-	0xB2E0, 0xBFA7,
-	0xB2E2, 0x8947,
-	0xB2E4, 0x6306,
-	0xB2E6, 0xF400,
-	0xB2E8, 0x1743,
-	0xB2EA, 0x02FC,
-	0xB2EC, 0x6700,
-	0xB2EE, 0xC31F,
-	0xB2F0, 0xB7E7,
-	0xB2F2, 0x0024,
-	0xB2F4, 0x03D7,
-	0xB2F6, 0xC7C8,
-	0xB2F8, 0x8564,
-	0xB2FA, 0x9387,
-	0xB2FC, 0xF4B3,
-	0xB2FE, 0xE315,
-	0xB300, 0xF7FE,
-	0xB302, 0x37A9,
-	0xB304, 0x0224,
-	0xB306, 0x1309,
-	0xB308, 0x8954,
-	0xB30A, 0x8347,
-	0xB30C, 0x190C,
-	0xB30E, 0xE9FF,
-	0xB310, 0x9770,
-	0xB312, 0xFFFB,
-	0xB314, 0xE780,
-	0xB316, 0x00E3,
-	0xB318, 0x61F9,
-	0xB31A, 0x9770,
-	0xB31C, 0xFFFB,
-	0xB31E, 0xE780,
-	0xB320, 0xA0E3,
-	0xB322, 0x79F1,
-	0xB324, 0x3725,
-	0xB326, 0x0224,
-	0xB328, 0x1305,
-	0xB32A, 0x05ED,
-	0xB32C, 0x9700,
-	0xB32E, 0xFFFB,
-	0xB330, 0xE780,
-	0xB332, 0x80FA,
-	0xB334, 0xB797,
-	0xB336, 0x0124,
-	0xB338, 0x3767,
-	0xB33A, 0x0124,
-	0xB33C, 0x0327,
-	0xB33E, 0x0740,
-	0xB340, 0x9387,
-	0xB342, 0x0753,
-	0xB344, 0xA697,
-	0xB346, 0x8544,
-	0xB348, 0x1D45,
-	0xB34A, 0x238D,
-	0xB34C, 0x97CE,
-	0xB34E, 0x0297,
-	0xB350, 0xA300,
-	0xB352, 0x990C,
-	0xB354, 0x9780,
-	0xB356, 0x01FC,
-	0xB358, 0xE780,
-	0xB35A, 0x0083,
-	0xB35C, 0x51F5,
-	0xB35E, 0xB727,
-	0xB360, 0x0124,
-	0xB362, 0x2380,
-	0xB364, 0x8754,
-	0xB366, 0x97B0,
-	0xB368, 0xFEFB,
-	0xB36A, 0xE780,
-	0xB36C, 0x6002,
-	0xB36E, 0x2301,
-	0xB370, 0x990C,
-	0xB372, 0x9DBF,
-	0xB374, 0x1743,
-	0xB376, 0x02FC,
-	0xB378, 0xE702,
-	0xB37A, 0xC314,
-	0xB37C, 0x37A4,
-	0xB37E, 0x0224,
-	0xB380, 0x1304,
-	0xB382, 0x8454,
-	0xB384, 0x0347,
-	0xB386, 0x240C,
-	0xB388, 0x8547,
-	0xB38A, 0x630A,
-	0xB38C, 0xF700,
-	0xB38E, 0x97B0,
-	0xB390, 0xFEFB,
-	0xB392, 0xE780,
-	0xB394, 0xE069,
-	0xB396, 0x1743,
-	0xB398, 0x02FC,
-	0xB39A, 0x6700,
-	0xB39C, 0xE314,
-	0xB39E, 0x9770,
-	0xB3A0, 0x01FC,
-	0xB3A2, 0xE780,
-	0xB3A4, 0x607E,
-	0xB3A6, 0x65F5,
-	0xB3A8, 0x97B0,
-	0xB3AA, 0xFEFB,
-	0xB3AC, 0xE780,
-	0xB3AE, 0x800F,
-	0xB3B0, 0x2301,
-	0xB3B2, 0x040C,
-	0xB3B4, 0xE9BF,
-	0xB3B6, 0x0100,
-	0xB3B8, 0x1743,
-	0xB3BA, 0x02FC,
-	0xB3BC, 0xE702,
-	0xB3BE, 0x8310,
-	0xB3C0, 0x9D47,
-	0xB3C2, 0x631F,
-	0xB3C4, 0xF500,
-	0xB3C6, 0x3794,
-	0xB3C8, 0x0124,
-	0xB3CA, 0x1304,
-	0xB3CC, 0x0453,
-	0xB3CE, 0x8567,
-	0xB3D0, 0xA297,
-	0xB3D2, 0x83C7,
-	0xB3D4, 0xA7CF,
-	0xB3D6, 0x9DE7,
-	0xB3D8, 0x1743,
-	0xB3DA, 0x02FC,
-	0xB3DC, 0x6700,
-	0xB3DE, 0xC310,
-	0xB3E0, 0x2A84,
-	0xB3E2, 0xEFD0,
-	0xB3E4, 0x7FDD,
-	0xB3E6, 0x8547,
-	0xB3E8, 0xE318,
-	0xB3EA, 0xF4FE,
-	0xB3EC, 0xB7E7,
-	0xB3EE, 0x0124,
-	0xB3F0, 0x9387,
-	0xB3F2, 0x074C,
-	0xB3F4, 0x23AE,
-	0xB3F6, 0x0710,
-	0xB3F8, 0x23A4,
-	0xB3FA, 0x077E,
-	0xB3FC, 0x1743,
-	0xB3FE, 0x02FC,
-	0xB400, 0x6700,
-	0xB402, 0x830E,
-	0xB404, 0x9770,
-	0xB406, 0xFFFB,
-	0xB408, 0xE780,
-	0xB40A, 0xC0D3,
-	0xB40C, 0x71F5,
-	0xB40E, 0x9770,
-	0xB410, 0xFFFB,
-	0xB412, 0xE780,
-	0xB414, 0x60D4,
-	0xB416, 0x69F1,
-	0xB418, 0x8D67,
-	0xB41A, 0x3E94,
-	0xB41C, 0x8327,
-	0xB41E, 0x846D,
-	0xB420, 0xB724,
-	0xB422, 0x0124,
-	0xB424, 0x9384,
-	0xB426, 0x045F,
-	0xB428, 0x91EF,
-	0xB42A, 0x83A7,
-	0xB42C, 0x440E,
-	0xB42E, 0x99CB,
-	0xB430, 0xB7D7,
-	0xB432, 0x0124,
-	0xB434, 0x83C7,
-	0xB436, 0x07FA,
-	0xB438, 0xC5D3,
-	0xB43A, 0x9700,
-	0xB43C, 0xFFFB,
-	0xB43E, 0xE780,
-	0xB440, 0x20E3,
-	0xB442, 0x59BF,
-	0xB444, 0x83A7,
-	0xB446, 0xC40A,
-	0xB448, 0xC1DB,
-	0xB44A, 0x0545,
-	0xB44C, 0x9730,
-	0xB44E, 0xFEFB,
-	0xB450, 0xE780,
-	0xB452, 0x8051,
-	0xB454, 0xB735,
-	0xB456, 0x202D,
-	0xB458, 0x7578,
-	0xB45A, 0x37F5,
-	0xB45C, 0x202D,
-	0xB45E, 0x9385,
-	0xB460, 0x0560,
-	0xB462, 0x1308,
-	0xB464, 0x08A0,
-	0xB466, 0x9168,
-	0xB468, 0x1305,
-	0xB46A, 0x0560,
-	0xB46C, 0xB387,
-	0xB46E, 0x0501,
-	0xB470, 0x03C7,
-	0xB472, 0x0700,
-	0xB474, 0x9306,
-	0xB476, 0xF00F,
-	0xB478, 0x1316,
-	0xB47A, 0x8701,
-	0xB47C, 0x6186,
-	0xB47E, 0x0607,
-	0xB480, 0x6344,
-	0xB482, 0x0600,
-	0xB484, 0x9376,
-	0xB486, 0xF70F,
-	0xB488, 0x2380,
-	0xB48A, 0xD700,
-	0xB48C, 0x8507,
-	0xB48E, 0xE391,
-	0xB490, 0xB7FE,
-	0xB492, 0xB385,
-	0xB494, 0x1701,
-	0xB496, 0xE39B,
-	0xB498, 0xA5FC,
-	0xB49A, 0xB7A7,
-	0xB49C, 0x0224,
-	0xB49E, 0x0547,
-	0xB4A0, 0x0145,
-	0xB4A2, 0xA384,
-	0xB4A4, 0xE760,
-	0xB4A6, 0x9730,
-	0xB4A8, 0xFEFB,
-	0xB4AA, 0xE780,
-	0xB4AC, 0xE04B,
-	0xB4AE, 0xB7D7,
-	0xB4B0, 0x0124,
-	0xB4B2, 0x83C7,
-	0xB4B4, 0x07FA,
-	0xB4B6, 0x8DD3,
-	0xB4B8, 0x8327,
-	0xB4BA, 0x846D,
-	0xB4BC, 0x91FF,
-	0xB4BE, 0x83A7,
-	0xB4C0, 0x440E,
-	0xB4C2, 0x99DB,
-	0xB4C4, 0x9DBF,
-	0xB4C6, 0x0100,
-	0xB4C8, 0x1743,
-	0xB4CA, 0x02FC,
-	0xB4CC, 0xE702,
-	0xB4CE, 0x83FF,
-	0xB4D0, 0xB7D7,
-	0xB4D2, 0x0124,
-	0xB4D4, 0x9387,
-	0xB4D6, 0x07F4,
-	0xB4D8, 0x03C7,
-	0xB4DA, 0x1705,
-	0xB4DC, 0x2A84,
-	0xB4DE, 0x11C7,
-	0xB4E0, 0x03C7,
-	0xB4E2, 0x1700,
-	0xB4E4, 0x8947,
-	0xB4E6, 0x6307,
-	0xB4E8, 0xF704,
-	0xB4EA, 0xB7E7,
-	0xB4EC, 0x0124,
-	0xB4EE, 0x9387,
-	0xB4F0, 0x0787,
-	0xB4F2, 0x83A4,
-	0xB4F4, 0x870F,
-	0xB4F6, 0x03A9,
-	0xB4F8, 0xC70F,
-	0xB4FA, 0x0146,
-	0xB4FC, 0xA685,
-	0xB4FE, 0x4A85,
-	0xB500, 0x9730,
-	0xB502, 0x01FC,
-	0xB504, 0xE780,
-	0xB506, 0x4054,
-	0xB508, 0x2285,
-	0xB50A, 0x97D0,
-	0xB50C, 0xFEFB,
-	0xB50E, 0xE780,
-	0xB510, 0x20D7,
-	0xB512, 0x4A85,
-	0xB514, 0x0546,
-	0xB516, 0xA685,
-	0xB518, 0x9730,
-	0xB51A, 0x01FC,
-	0xB51C, 0xE780,
-	0xB51E, 0xC052,
-	0xB520, 0xB7C7,
-	0xB522, 0x0224,
-	0xB524, 0x83A7,
-	0xB526, 0x07B7,
-	0xB528, 0x1145,
-	0xB52A, 0x8297,
-	0xB52C, 0x1743,
-	0xB52E, 0x02FC,
-	0xB530, 0x6700,
-	0xB532, 0x83FB,
-	0xB534, 0xB7E7,
-	0xB536, 0x0024,
-	0xB538, 0x83D6,
-	0xB53A, 0xC7C8,
-	0xB53C, 0x8567,
-	0xB53E, 0x1387,
-	0xB540, 0xF7B3,
-	0xB542, 0xE394,
-	0xB544, 0xE6FA,
-	0xB546, 0x3797,
-	0xB548, 0x0124,
-	0xB54A, 0x1307,
-	0xB54C, 0x0753,
-	0xB54E, 0xBA97,
-	0xB550, 0x03A5,
-	0xB552, 0x07B2,
-	0xB554, 0x8145,
-	0xB556, 0x3325,
-	0xB558, 0xA000,
-	0xB55A, 0x97D0,
-	0xB55C, 0x00FC,
-	0xB55E, 0xE780,
-	0xB560, 0x60BB,
-	0xB562, 0x61B7,
-	0xB564, 0x1743,
-	0xB566, 0x02FC,
-	0xB568, 0xE702,
-	0xB56A, 0xC3F5,
-	0xB56C, 0x9760,
-	0xB56E, 0xFFFB,
-	0xB570, 0xE780,
-	0xB572, 0xC037,
-	0xB574, 0x11C5,
-	0xB576, 0xB7E7,
-	0xB578, 0x0024,
-	0xB57A, 0x83C7,
-	0xB57C, 0xC784,
-	0xB57E, 0xBDEF,
-	0xB580, 0x1384,
-	0xB582, 0x81E7,
-	0xB584, 0x0347,
-	0xB586, 0x8400,
-	0xB588, 0x8547,
-	0xB58A, 0x6303,
-	0xB58C, 0xF706,
-	0xB58E, 0x0357,
-	0xB590, 0x2403,
-	0xB592, 0xB767,
-	0xB594, 0x0040,
-	0xB596, 0x2398,
-	0xB598, 0xE718,
-	0xB59A, 0x8357,
-	0xB59C, 0x4403,
-	0xB59E, 0x3767,
-	0xB5A0, 0x0040,
-	0xB5A2, 0x2314,
-	0xB5A4, 0xF720,
-	0xB5A6, 0x9760,
-	0xB5A8, 0xFFFB,
-	0xB5AA, 0xE780,
-	0xB5AC, 0x2034,
-	0xB5AE, 0x19C5,
-	0xB5B0, 0xB7E7,
-	0xB5B2, 0x0024,
-	0xB5B4, 0x03C7,
-	0xB5B6, 0xC784,
-	0xB5B8, 0x8147,
-	0xB5BA, 0x09EB,
-	0xB5BC, 0x8346,
-	0xB5BE, 0x8400,
-	0xB5C0, 0x0547,
-	0xB5C2, 0x8147,
-	0xB5C4, 0x6384,
-	0xB5C6, 0xE600,
-	0xB5C8, 0x8357,
-	0xB5CA, 0xC405,
-	0xB5CC, 0x37A7,
-	0xB5CE, 0x0040,
-	0xB5D0, 0x2312,
-	0xB5D2, 0xF710,
-	0xB5D4, 0x9770,
-	0xB5D6, 0xFFFB,
-	0xB5D8, 0xE780,
-	0xB5DA, 0xC0B6,
-	0xB5DC, 0x35C1,
-	0xB5DE, 0x9770,
-	0xB5E0, 0xFFFB,
-	0xB5E2, 0xE780,
-	0xB5E4, 0x60B7,
-	0xB5E6, 0x05C9,
-	0xB5E8, 0x1743,
-	0xB5EA, 0x02FC,
-	0xB5EC, 0x6700,
-	0xB5EE, 0xC3EF,
-	0xB5F0, 0xB767,
-	0xB5F2, 0x0040,
-	0xB5F4, 0x2398,
-	0xB5F6, 0x0718,
-	0xB5F8, 0x8147,
-	0xB5FA, 0x55B7,
-	0xB5FC, 0xB767,
-	0xB5FE, 0x0040,
-	0xB600, 0x2398,
-	0xB602, 0x0718,
-	0xB604, 0x1384,
-	0xB606, 0x81E7,
-	0xB608, 0x8346,
-	0xB60A, 0x8400,
-	0xB60C, 0x0547,
-	0xB60E, 0x8147,
-	0xB610, 0xE395,
-	0xB612, 0xE6F8,
-	0xB614, 0x69B7,
-	0xB616, 0x9760,
-	0xB618, 0xFFFB,
-	0xB61A, 0xE780,
-	0xB61C, 0x202D,
-	0xB61E, 0x31ED,
-	0xB620, 0x8346,
-	0xB622, 0x8400,
-	0xB624, 0x0547,
-	0xB626, 0x8147,
-	0xB628, 0x6384,
-	0xB62A, 0xE600,
-	0xB62C, 0x8357,
-	0xB62E, 0x4408,
-	0xB630, 0x3787,
-	0xB632, 0x0040,
-	0xB634, 0x2314,
-	0xB636, 0xF710,
-	0xB638, 0x1743,
-	0xB63A, 0x02FC,
-	0xB63C, 0x6700,
-	0xB63E, 0xC3EA,
-	0xB640, 0x9770,
-	0xB642, 0xFFFB,
-	0xB644, 0xE780,
-	0xB646, 0x40B1,
-	0xB648, 0x59F9,
-	0xB64A, 0x9760,
-	0xB64C, 0xFFFB,
-	0xB64E, 0xE780,
-	0xB650, 0xE029,
-	0xB652, 0x19C5,
-	0xB654, 0xB7E7,
-	0xB656, 0x0024,
-	0xB658, 0x03C7,
-	0xB65A, 0xC784,
-	0xB65C, 0x8147,
-	0xB65E, 0x09EB,
-	0xB660, 0x8346,
-	0xB662, 0x8400,
-	0xB664, 0x0547,
-	0xB666, 0x8147,
-	0xB668, 0x6384,
-	0xB66A, 0xE600,
-	0xB66C, 0x8357,
-	0xB66E, 0x6407,
-	0xB670, 0x3707,
-	0xB672, 0x0140,
-	0xB674, 0x2314,
-	0xB676, 0xF710,
-	0xB678, 0x9DB7,
-	0xB67A, 0xB7E7,
-	0xB67C, 0x0024,
-	0xB67E, 0x03C7,
-	0xB680, 0xC784,
-	0xB682, 0x8147,
-	0xB684, 0x55F7,
-	0xB686, 0x69BF,
-	0xB688, 0x1743,
-	0xB68A, 0x02FC,
-	0xB68C, 0xE702,
-	0xB68E, 0x03E1,
-	0xB690, 0x4111,
-	0xB692, 0x3A84,
-	0xB694, 0x22E6,
-	0xB696, 0x26E4,
-	0xB698, 0x4AE2,
-	0xB69A, 0x4EE0,
-	0xB69C, 0xAA84,
-	0xB69E, 0x3689,
-	0xB6A0, 0x97A0,
-	0xB6A2, 0xFEFB,
-	0xB6A4, 0xE780,
-	0xB6A6, 0x8066,
-	0xB6A8, 0xB727,
-	0xB6AA, 0x0224,
-	0xB6AC, 0x9387,
-	0xB6AE, 0x076B,
-	0xB6B0, 0xA297,
-	0xB6B2, 0x0567,
-	0xB6B4, 0xBA97,
-	0xB6B6, 0x83C7,
-	0xB6B8, 0x078D,
-	0xB6BA, 0x639D,
-	0xB6BC, 0x0718,
-	0xB6BE, 0x83C7,
-	0xB6C0, 0x0400,
-	0xB6C2, 0x6399,
-	0xB6C4, 0x0718,
-	0xB6C6, 0xB7A7,
-	0xB6C8, 0x0224,
-	0xB6CA, 0x9389,
-	0xB6CC, 0x8754,
-	0xB6CE, 0x03C7,
-	0xB6D0, 0x9905,
-	0xB6D2, 0x6301,
-	0xB6D4, 0x0718,
-	0xB6D6, 0x03CA,
-	0xB6D8, 0xA905,
-	0xB6DA, 0x03D6,
-	0xB6DC, 0xA90B,
-	0xB6DE, 0x37E7,
-	0xB6E0, 0x0124,
-	0xB6E2, 0x0355,
-	0xB6E4, 0x675F,
-	0xB6E6, 0x9387,
-	0xB6E8, 0x8754,
-	0xB6EA, 0x0147,
-	0xB6EC, 0xA145,
-	0xB6EE, 0x6369,
-	0xB6F0, 0xA622,
-	0xB6F2, 0x83D6,
-	0xB6F4, 0xC70A,
-	0xB6F6, 0x8907,
-	0xB6F8, 0x63F1,
-	0xB6FA, 0xA626,
-	0xB6FC, 0x0507,
-	0xB6FE, 0xE318,
-	0xB700, 0xB7FE,
-	0xB702, 0x37CB,
-	0xB704, 0x0224,
-	0xB706, 0x5309,
-	0xB708, 0x00F0,
-	0xB70A, 0x8727,
-	0xB70C, 0x8BB7,
-	0xB70E, 0x9D46,
-	0xB710, 0x4379,
-	0xB712, 0xF990,
-	0xB714, 0x1307,
-	0xB716, 0x0705,
-	0xB718, 0x0607,
-	0xB71A, 0x4E97,
-	0xB71C, 0x8357,
-	0xB71E, 0xC700,
-	0xB720, 0x118D,
-	0xB722, 0x5377,
-	0xB724, 0x05D0,
-	0xB726, 0x918F,
-	0xB728, 0xD3F7,
-	0xB72A, 0x07D0,
-	0xB72C, 0x9317,
-	0xB72E, 0x3A00,
-	0xB730, 0xB697,
-	0xB732, 0x5377,
-	0xB734, 0xF718,
-	0xB736, 0x9387,
-	0xB738, 0x8702,
-	0xB73A, 0x8607,
-	0xB73C, 0xCE97,
-	0xB73E, 0x83D7,
-	0xB740, 0xC700,
-	0xB742, 0x0726,
-	0xB744, 0x8BB7,
-	0xB746, 0x13F7,
-	0xB748, 0xF70F,
-	0xB74A, 0xA183,
-	0xB74C, 0xD377,
-	0xB74E, 0x07D0,
-	0xB750, 0xD3F6,
-	0xB752, 0x07D0,
-	0xB754, 0xC3F7,
-	0xB756, 0xC768,
-	0xB758, 0x5379,
-	0xB75A, 0xF908,
-	0xB75C, 0x4379,
-	0xB75E, 0xE978,
-	0xB760, 0x9770,
-	0xB762, 0xFFFB,
-	0xB764, 0xE780,
-	0xB766, 0xC08A,
-	0xB768, 0xAA8A,
-	0xB76A, 0x93DA,
-	0xB76C, 0x8A40,
-	0xB76E, 0x9770,
-	0xB770, 0xFFFB,
-	0xB772, 0xE780,
-	0xB774, 0xE089,
-	0xB776, 0xC20A,
-	0xB778, 0x9307,
-	0xB77A, 0x8A04,
-	0xB77C, 0x1375,
-	0xB77E, 0xF50F,
-	0xB780, 0x93DA,
-	0xB782, 0x0A41,
-	0xB784, 0xD3F7,
-	0xB786, 0x0AD0,
-	0xB788, 0xD374,
-	0xB78A, 0x05D0,
-	0xB78C, 0x0727,
-	0xB78E, 0x8BB7,
-	0xB790, 0x8607,
-	0xB792, 0xCE97,
-	0xB794, 0x03DC,
-	0xB796, 0xC700,
-	0xB798, 0xC3F4,
-	0xB79A, 0xE478,
-	0xB79C, 0xDC4C,
-	0xB79E, 0x5374,
-	0xB7A0, 0x0CD0,
-	0xB7A2, 0xD307,
-	0xB7A4, 0x00F0,
-	0xB7A6, 0x83D4,
-	0xB7A8, 0xC700,
-	0xB7AA, 0x53F4,
-	0xB7AC, 0x8408,
-	0xB7AE, 0x130A,
-	0xB7B0, 0x0A05,
-	0xB7B2, 0x060A,
-	0xB7B4, 0x4E9A,
-	0xB7B6, 0x035A,
-	0xB7B8, 0x4A00,
-	0xB7BA, 0xD317,
-	0xB7BC, 0xF4A0,
-	0xB7BE, 0x99C3,
-	0xB7C0, 0x5314,
-	0xB7C2, 0x8420,
-	0xB7C4, 0xB7CB,
-	0xB7C6, 0x0224,
-	0xB7C8, 0x83A7,
-	0xB7CA, 0x0BB7,
-	0xB7CC, 0x0D45,
-	0xB7CE, 0x8297,
-	0xB7D0, 0xD397,
-	0xB7D2, 0x14C0,
-	0xB7D4, 0xC207,
-	0xB7D6, 0xC183,
-	0xB7D8, 0x6395,
-	0xB7DA, 0x870B,
-	0xB7DC, 0xB747,
-	0xB7DE, 0x0124,
-	0xB7E0, 0x9387,
-	0xB7E2, 0x0727,
-	0xB7E4, 0x03D7,
-	0xB7E6, 0x6712,
-	0xB7E8, 0x83D6,
-	0xB7EA, 0xE710,
-	0xB7EC, 0x8947,
-	0xB7EE, 0x7D17,
-	0xB7F0, 0xB397,
-	0xB7F2, 0xE700,
-	0xB7F4, 0xD3F7,
-	0xB7F6, 0x07D0,
-	0xB7F8, 0x53F7,
-	0xB7FA, 0x16D0,
-	0xB7FC, 0x5304,
-	0xB7FE, 0x00F0,
-	0xB800, 0xD3F7,
-	0xB802, 0x2711,
-	0xB804, 0x37CA,
-	0xB806, 0x0224,
-	0xB808, 0xD3F7,
-	0xB80A, 0xE718,
-	0xB80C, 0xB7C7,
-	0xB80E, 0x0224,
-	0xB810, 0x07A7,
-	0xB812, 0xC7B7,
-	0xB814, 0x83A7,
-	0xB816, 0x0BB7,
-	0xB818, 0x2545,
-	0xB81A, 0xD3F7,
-	0xB81C, 0xE700,
-	0xB81E, 0xD39A,
-	0xB820, 0x17C0,
-	0xB822, 0x8297,
-	0xB824, 0x8727,
-	0xB826, 0x0AB8,
-	0xB828, 0xC20A,
-	0xB82A, 0x93DA,
-	0xB82C, 0x0A01,
-	0xB82E, 0x5374,
-	0xB830, 0xF410,
-	0xB832, 0xD694,
-	0xB834, 0xC204,
-	0xB836, 0x2393,
-	0xB838, 0x590D,
-	0xB83A, 0xC180,
-	0xB83C, 0xD317,
-	0xB83E, 0x14C0,
-	0xB840, 0x2392,
-	0xB842, 0xF90C,
-	0xB844, 0xB707,
-	0xB846, 0x0040,
-	0xB848, 0x19EC,
-	0xB84A, 0x9387,
-	0xB84C, 0xE703,
-	0xB84E, 0xCA97,
-	0xB850, 0x2390,
-	0xB852, 0x9700,
-	0xB854, 0x3264,
-	0xB856, 0xA264,
-	0xB858, 0x1269,
-	0xB85A, 0x8269,
-	0xB85C, 0x4101,
-	0xB85E, 0x1743,
-	0xB860, 0x02FC,
-	0xB862, 0x6700,
-	0xB864, 0x23C7,
-	0xB866, 0x9387,
-	0xB868, 0x0704,
-	0xB86A, 0x3264,
-	0xB86C, 0xA264,
-	0xB86E, 0x1269,
-	0xB870, 0x8269,
-	0xB872, 0xCA97,
-	0xB874, 0x2390,
-	0xB876, 0x9700,
-	0xB878, 0x4101,
-	0xB87A, 0x1743,
-	0xB87C, 0x02FC,
-	0xB87E, 0x6700,
-	0xB880, 0x63C5,
-	0xB882, 0x9377,
-	0xB884, 0xFA0F,
-	0xB886, 0x135A,
-	0xB888, 0x8A00,
-	0xB88A, 0x8729,
-	0xB88C, 0x8BB7,
-	0xB88E, 0xD3F7,
-	0xB890, 0x07D0,
-	0xB892, 0xD376,
-	0xB894, 0x0AD0,
-	0xB896, 0x37CA,
-	0xB898, 0x0224,
-	0xB89A, 0x0727,
-	0xB89C, 0x0AB8,
-	0xB89E, 0xC3F7,
-	0xB8A0, 0x3769,
-	0xB8A2, 0x5374,
-	0xB8A4, 0xF418,
-	0xB8A6, 0x5374,
-	0xB8A8, 0xE410,
-	0xB8AA, 0x531B,
-	0xB8AC, 0x14C0,
-	0xB8AE, 0x420B,
-	0xB8B0, 0x135B,
-	0xB8B2, 0x0B01,
-	0xB8B4, 0x5A85,
-	0xB8B6, 0x9760,
-	0xB8B8, 0x00FC,
-	0xB8BA, 0xE780,
-	0xB8BC, 0xA01A,
-	0xB8BE, 0xAA8A,
-	0xB8C0, 0x5A85,
-	0xB8C2, 0x9760,
-	0xB8C4, 0x00FC,
-	0xB8C6, 0xE780,
-	0xB8C8, 0xE019,
-	0xB8CA, 0x93DA,
-	0xB8CC, 0x8A00,
-	0xB8CE, 0xD397,
-	0xB8D0, 0x04C0,
-	0xB8D2, 0xC20A,
-	0xB8D4, 0x1375,
-	0xB8D6, 0xF50F,
-	0xB8D8, 0x93DA,
-	0xB8DA, 0x0A01,
-	0xB8DC, 0x5374,
-	0xB8DE, 0x05D0,
-	0xB8E0, 0xD3F7,
-	0xB8E2, 0x0AD0,
-	0xB8E4, 0xC207,
-	0xB8E6, 0xC187,
-	0xB8E8, 0x4374,
-	0xB8EA, 0x3479,
-	0xB8EC, 0x63D7,
-	0xB8EE, 0x8703,
-	0xB8F0, 0x5374,
-	0xB8F2, 0x8918,
-	0xB8F4, 0xB747,
-	0xB8F6, 0x0124,
-	0xB8F8, 0x9387,
-	0xB8FA, 0x0727,
-	0xB8FC, 0x03D7,
-	0xB8FE, 0x6712,
-	0xB900, 0x83D6,
-	0xB902, 0xE710,
-	0xB904, 0x8947,
-	0xB906, 0x7D17,
-	0xB908, 0xB397,
-	0xB90A, 0xE700,
-	0xB90C, 0xD3F7,
-	0xB90E, 0x07D0,
-	0xB910, 0x53F7,
-	0xB912, 0x16D0,
-	0xB914, 0xD3F7,
-	0xB916, 0x8710,
-	0xB918, 0xC5BD,
-	0xB91A, 0x5374,
-	0xB91C, 0x8910,
-	0xB91E, 0xD9BF,
-	0xB920, 0x9317,
-	0xB922, 0x4A00,
-	0xB924, 0xCE97,
-	0xB926, 0x83D7,
-	0xB928, 0xA706,
-	0xB92A, 0x93F6,
-	0xB92C, 0xF70F,
-	0xB92E, 0x37CB,
-	0xB930, 0x0224,
-	0xB932, 0xA183,
-	0xB934, 0x53F9,
-	0xB936, 0x06D0,
-	0xB938, 0xD3F7,
-	0xB93A, 0x07D0,
-	0xB93C, 0x0727,
-	0xB93E, 0x8BB7,
-	0xB940, 0x4379,
-	0xB942, 0xE978,
-	0xB944, 0xE30E,
-	0xB946, 0x07E0,
-	0xB948, 0x9307,
-	0xB94A, 0xF704,
-	0xB94C, 0x8607,
-	0xB94E, 0xCE97,
-	0xB950, 0x03D6,
-	0xB952, 0xC700,
-	0xB954, 0x9306,
-	0xB956, 0xF7FF,
-	0xB958, 0x75BB,
-	0xB95A, 0x9317,
-	0xB95C, 0x3A00,
-	0xB95E, 0xBA97,
-	0xB960, 0x9387,
-	0xB962, 0x8702,
-	0xB964, 0x8607,
-	0xB966, 0xCE97,
-	0xB968, 0x83D7,
-	0xB96A, 0xC700,
-	0xB96C, 0x7DBF,
-	0xB96E, 0x0100,
-	0xB970, 0x1743,
-	0xB972, 0x02FC,
-	0xB974, 0xE702,
-	0xB976, 0x63B3,
-	0xB978, 0xB747,
-	0xB97A, 0x0124,
-	0xB97C, 0x03D7,
-	0xB97E, 0xC7E1,
-	0xB980, 0x8947,
-	0xB982, 0x2A84,
-	0xB984, 0xAE84,
-	0xB986, 0x6319,
-	0xB988, 0xF700,
-	0xB98A, 0xB7A7,
-	0xB98C, 0x0124,
-	0xB98E, 0x03A7,
-	0xB990, 0x4706,
-	0xB992, 0xFD57,
-	0xB994, 0x6304,
-	0xB996, 0xF704,
-	0xB998, 0xB7E7,
-	0xB99A, 0x0124,
-	0xB99C, 0x9387,
-	0xB99E, 0x0787,
-	0xB9A0, 0x03A9,
-	0xB9A2, 0x8710,
-	0xB9A4, 0x83A9,
-	0xB9A6, 0xC710,
-	0xB9A8, 0x0146,
-	0xB9AA, 0xCA85,
-	0xB9AC, 0x4E85,
-	0xB9AE, 0x9730,
-	0xB9B0, 0x01FC,
-	0xB9B2, 0xE780,
-	0xB9B4, 0x6009,
-	0xB9B6, 0xA685,
-	0xB9B8, 0x2285,
-	0xB9BA, 0x97C0,
-	0xB9BC, 0x00FC,
-	0xB9BE, 0xE780,
-	0xB9C0, 0x6075,
-	0xB9C2, 0x4E85,
-	0xB9C4, 0x0546,
-	0xB9C6, 0xCA85,
-	0xB9C8, 0x9730,
-	0xB9CA, 0x01FC,
-	0xB9CC, 0xE780,
-	0xB9CE, 0xC007,
-	0xB9D0, 0xB7C7,
-	0xB9D2, 0x0224,
-	0xB9D4, 0x83A7,
-	0xB9D6, 0x07B7,
-	0xB9D8, 0x1545,
-	0xB9DA, 0x8297,
-	0xB9DC, 0x1743,
-	0xB9DE, 0x02FC,
-	0xB9E0, 0x6700,
-	0xB9E2, 0xE3AF,
-	0xB9E4, 0xB7C7,
-	0xB9E6, 0x0224,
-	0xB9E8, 0x03A6,
-	0xB9EA, 0x47B7,
-	0xB9EC, 0xB707,
-	0xB9EE, 0x0040,
-	0xB9F0, 0x9387,
-	0xB9F2, 0x0706,
-	0xB9F4, 0x3E96,
-	0xB9F6, 0x0967,
-	0xB9F8, 0x1308,
-	0xB9FA, 0x0502,
-	0xB9FC, 0xAA87,
-	0xB9FE, 0x098E,
-	0xBA00, 0x1307,
-	0xBA02, 0xF7F1,
-	0xBA04, 0x2390,
-	0xBA06, 0xE700,
-	0xBA08, 0xB306,
-	0xBA0A, 0xF600,
-	0xBA0C, 0x2390,
-	0xBA0E, 0xE600,
-	0xBA10, 0x8907,
-	0xBA12, 0xE399,
-	0xBA14, 0x07FF,
-	0xBA16, 0x83C7,
-	0xBA18, 0xC500,
-	0xBA1A, 0xB1CB,
-	0xBA1C, 0x83AF,
-	0xBA1E, 0x0500,
-	0xBA20, 0x0963,
-	0xBA22, 0x1388,
-	0xBA24, 0xE500,
-	0xBA26, 0x8147,
-	0xBA28, 0x0D4F,
-	0xBA2A, 0x854E,
-	0xBA2C, 0x094E,
-	0xBA2E, 0x1303,
-	0xBA30, 0x03F0,
-	0xBA32, 0x3317,
-	0xBA34, 0xFF00,
-	0xBA36, 0x3377,
-	0xBA38, 0xF701,
-	0xBA3A, 0x3396,
-	0xBA3C, 0xFE00,
-	0xBA3E, 0xB316,
-	0xBA40, 0xFE00,
-	0xBA42, 0x798E,
-	0xBA44, 0xB308,
-	0xBA46, 0xF500,
-	0xBA48, 0xF98E,
-	0xBA4A, 0x8907,
-	0xBA4C, 0x7D47,
-	0xBA4E, 0x19C2,
-	0xBA50, 0x0347,
-	0xBA52, 0x0800,
-	0xBA54, 0x1A86,
-	0xBA56, 0x81C6,
-	0xBA58, 0x0346,
-	0xBA5A, 0x1800,
-	0xBA5C, 0x2206,
-	0xBA5E, 0x518F,
-	0xBA60, 0x2390,
-	0xBA62, 0xE800,
-	0xBA64, 0x03C7,
-	0xBA66, 0xC500,
-	0xBA68, 0x0908,
-	0xBA6A, 0xE3C4,
-	0xBA6C, 0xE7FC,
-	0xBA6E, 0xB7C7,
-	0xBA70, 0x0224,
-	0xBA72, 0x83A7,
-	0xBA74, 0x07B7,
-	0xBA76, 0x1D45,
-	0xBA78, 0x8287,
-	0xBA7A, 0x0100,
-	0xBA7C, 0x1743,
-	0xBA7E, 0x02FC,
-	0xBA80, 0xE702,
-	0xBA82, 0x43A4,
-	0xBA84, 0xB7A7,
-	0xBA86, 0x0224,
-	0xBA88, 0x03C7,
-	0xBA8A, 0x6760,
-	0xBA8C, 0x8547,
-	0xBA8E, 0x630C,
-	0xBA90, 0xF700,
-	0xBA92, 0xB7C7,
-	0xBA94, 0x0224,
-	0xBA96, 0x83A7,
-	0xBA98, 0x07B7,
-	0xBA9A, 0x2145,
-	0xBA9C, 0x8297,
-	0xBA9E, 0x1743,
-	0xBAA0, 0x02FC,
-	0xBAA2, 0x6700,
-	0xBAA4, 0x63A4,
-	0xBAA6, 0x9760,
-	0xBAA8, 0xFFFB,
-	0xBAAA, 0xE780,
-	0xBAAC, 0xE0E8,
-	0xBAAE, 0x75D1,
-	0xBAB0, 0xB7E7,
-	0xBAB2, 0x0024,
-	0xBAB4, 0x83C7,
-	0xBAB6, 0xB7AD,
-	0xBAB8, 0xE9FF,
-	0xBABA, 0xB7B7,
-	0xBABC, 0x0024,
-	0xBABE, 0x03D7,
-	0xBAC0, 0x4733,
-	0xBAC2, 0xB707,
-	0xBAC4, 0x0140,
-	0xBAC6, 0x2399,
-	0xBAC8, 0xE7DC,
-	0xBACA, 0xE1B7,
-	0xBACC, 0x1743,
-	0xBACE, 0x02FC,
-	0xBAD0, 0xE702,
-	0xBAD2, 0x439F,
-	0xBAD4, 0xB7B7,
-	0xBAD6, 0x0224,
-	0xBAD8, 0x9387,
-	0xBADA, 0x87B4,
-	0xBADC, 0x23AE,
-	0xBADE, 0xF194,
-	0xBAE0, 0x3764,
-	0xBAE2, 0x0124,
-	0xBAE4, 0x9D66,
-	0xBAE6, 0xB7B5,
-	0xBAE8, 0x0224,
-	0xBAEA, 0xB7B7,
-	0xBAEC, 0x0224,
-	0xBAEE, 0x1304,
-	0xBAF0, 0x0440,
-	0xBAF2, 0x9387,
-	0xBAF4, 0xC783,
-	0xBAF6, 0x9386,
-	0xBAF8, 0xF6BF,
-	0xBAFA, 0x1146,
-	0xBAFC, 0x9385,
-	0xBAFE, 0x05FB,
-	0xBB00, 0x0545,
-	0xBB02, 0x5CC4,
-	0xBB04, 0x97E0,
-	0xBB06, 0xFFFB,
-	0xBB08, 0xE780,
-	0xBB0A, 0xC0E8,
-	0xBB0C, 0xC166,
-	0xBB0E, 0xB7B5,
-	0xBB10, 0x0224,
-	0xBB12, 0xFD16,
-	0xBB14, 0x3146,
-	0xBB16, 0x9385,
-	0xBB18, 0x4598,
-	0xBB1A, 0x4145,
-	0xBB1C, 0x97E0,
-	0xBB1E, 0xFFFB,
-	0xBB20, 0xE780,
-	0xBB22, 0x40E7,
-	0xBB24, 0x37B7,
-	0xBB26, 0x0224,
-	0xBB28, 0x1307,
-	0xBB2A, 0x87B7,
-	0xBB2C, 0xB7A7,
-	0xBB2E, 0x0224,
-	0xBB30, 0x9387,
-	0xBB32, 0x8754,
-	0xBB34, 0x78C8,
-	0xBB36, 0x37B7,
-	0xBB38, 0x0224,
-	0xBB3A, 0xA380,
-	0xBB3C, 0x070C,
-	0xBB3E, 0x2381,
-	0xBB40, 0x070C,
-	0xBB42, 0x1307,
-	0xBB44, 0xC7C2,
-	0xBB46, 0xB7B7,
-	0xBB48, 0x0224,
-	0xBB4A, 0x18D4,
-	0xBB4C, 0x9387,
-	0xBB4E, 0x472D,
-	0xBB50, 0x37B7,
-	0xBB52, 0x0224,
-	0xBB54, 0x7CC4,
-	0xBB56, 0x1307,
-	0xBB58, 0x873B,
-	0xBB5A, 0xB7B7,
-	0xBB5C, 0x0224,
-	0xBB5E, 0x18C0,
-	0xBB60, 0x9387,
-	0xBB62, 0x4737,
-	0xBB64, 0x23AA,
-	0xBB66, 0xF1A4,
-	0xBB68, 0x1743,
-	0xBB6A, 0x02FC,
-	0xBB6C, 0x6700,
-	0xBB6E, 0xC397,
-	0xBB70, 0x14A6,
-	0xBB72, 0x0224,
-	0xBB74, 0x008D,
-	0xBB76, 0x0000,
-	0xBB78, 0x0000,
-	0xBB7A, 0x803B,
-	0xBB7C, 0x0000,
-	0xBB7E, 0x003F,
-	0xBB80, 0x0000,
-	0xBB82, 0x8043,
-	0xFCFC, 0x2002,
-	0x849C, 0x0100,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0x84A4, 0x0000,
-	0x84A6, 0x0000,
-	0x84A8, 0x0000,
-	0x84AA, 0x0001,
-	0x84AC, 0x01FF,
-	0x84B0, 0x8089,
-	0x84B2, 0x0000,
-	0x84B4, 0x8889,
-	0x84B6, 0x0000,
-	0x84B8, 0xC097,
-	0x84BA, 0x0000,
-	0x84BC, 0xA60E,
-	0x84BE, 0x0000,
-	0x84C0, 0x2206,
-	0x84C2, 0x0000,
-	0x84C4, 0x0010,
-	0x84C8, 0xF0C2,
-	0x84CA, 0x0224,
-	0x84CC, 0x44AB,
-	0x84CE, 0x0224,
-	0x84D0, 0x44AB,
-	0x84D2, 0x0224,
-	0x84D4, 0x44AB,
-	0x84D6, 0x0224,
-	0x84D8, 0x44AB,
-	0x84DA, 0x0224,
-	0x84DC, 0x44AB,
-	0x84DE, 0x0224,
-	0xA548, 0x001D,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xA56C, 0x0000,
-	0xA56E, 0x0000,
-	0xA570, 0x0000,
-	0xA572, 0x0000,
-	0xA574, 0x00D5,
-	0xA576, 0x0000,
-	0xA578, 0x0000,
-	0xA57A, 0x0000,
-	0xA57C, 0x0000,
-	0xA57E, 0x0000,
-	0xA580, 0x0000,
-	0xA582, 0x0000,
-	0xA584, 0x0000,
-	0xA586, 0x0000,
-	0xA588, 0x0000,
-	0xA58A, 0x0000,
-	0xA58C, 0x0000,
-	0xA58E, 0x0000,
-	0xA590, 0x0000,
-	0xA592, 0x0000,
-	0xA594, 0x0000,
-	0xA596, 0x0000,
-	0xA598, 0x0000,
-	0xA59A, 0x0000,
-	0xA59C, 0x0000,
-	0xA59E, 0x0000,
-	0xA5A0, 0x0100,
-	0xA5A2, 0x0036,
-	0xA5A4, 0x0000,
-	0xA5A6, 0x0000,
-	0xA5A8, 0x0000,
-	0xA5AA, 0x0000,
-	0xA5AC, 0x0000,
-	0xA5AE, 0x0000,
-	0xA5B0, 0x0000,
-	0xA5B2, 0x0000,
-	0xA5B4, 0x0000,
-	0xA5B6, 0x0000,
-	0xA5B8, 0x0000,
-	0xA5BA, 0x0000,
-	0xA5BC, 0x0000,
-	0xA5BE, 0x0000,
-	0xA5C0, 0x0000,
-	0xA5C2, 0x0000,
-	0xA5C4, 0x0000,
-	0xA5C6, 0x0000,
-	0xA5C8, 0x0000,
-	0xA5CA, 0x0000,
-	0xA5CC, 0x0000,
-	0xA5CE, 0x0000,
-	0xA5D0, 0x0000,
-	0xA5D2, 0x0000,
-	0xA5D4, 0x0000,
-	0xA5D6, 0x0000,
-	0xA5D8, 0x0000,
-	0xA5DA, 0x0000,
-	0xA5DC, 0x0000,
-	0xA5DE, 0x0000,
-	0xA5E0, 0x0000,
-	0xA5E2, 0x0000,
-	0xA5E4, 0x0000,
-	0xA5E6, 0x0000,
-	0xA5E8, 0x0000,
-	0xA5EA, 0x0000,
-	0xA5EC, 0x000F,
-	0xA5EE, 0x000F,
-	0xA5F0, 0x000F,
-	0xA5F2, 0x000F,
-	0xA5F4, 0x0000,
-	0xA5F6, 0x0000,
-	0xA5F8, 0x0000,
-	0xA5FA, 0x0000,
-	0xA5FC, 0x0000,
-	0xA5FE, 0x0000,
-	0xA600, 0x0000,
-	0xA602, 0x0000,
-	0xA604, 0x0000,
-	0xA606, 0x00C6,
-	0xBB84, 0x0000,
-	0xBB86, 0x00EB,
-	0xBB88, 0x0100,
-	0xBB8A, 0x0800,
-	0xBB8C, 0x1000,
-	0xBB8E, 0x2000,
-	0xBB90, 0x9A00,
-	0xBB92, 0x9A00,
-	0xBB94, 0x9A00,
-	0xBB96, 0x9A00,
-	0xBB98, 0x9600,
-	0xBB9A, 0x9600,
-	0xBB9C, 0x9600,
-	0xBB9E, 0x9600,
-	0xBBA0, 0x9300,
-	0xBBA2, 0x9300,
-	0xBBA4, 0x9300,
-	0xBBA6, 0x9300,
-	0xBBA8, 0x9000,
-	0xBBAA, 0x9000,
-	0xBBAC, 0x9000,
-	0xBBAE, 0x9000,
-	0xBBB0, 0x8D00,
-	0xBBB2, 0x8D00,
-	0xBBB4, 0x8D00,
-	0xBBB6, 0x8D00,
-	0xBBB8, 0x3F00,
-	0xBBBA, 0x3F00,
-	0xBBBC, 0x3F00,
-	0xBBBE, 0x3F00,
-	0xBBC0, 0x1E00,
-	0xBBC2, 0x1E00,
-	0xBBC4, 0x1E00,
-	0xBBC6, 0x1E00,
-	0xBBC8, 0x0000,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0800,
-	0xBBD2, 0x0800,
-	0xBBD4, 0x0800,
-	0xBBD6, 0x0800,
-	0xBBD8, 0x0000,
-	0xBBDA, 0x0000,
-	0xBBDC, 0x0000,
-	0xBBDE, 0x0000,
-	0xBBE0, 0x3F00,
-	0xBBE2, 0x3F00,
-	0xBBE4, 0x3F00,
-	0xBBE6, 0x3F00,
-	0xBBE8, 0x3400,
-	0xBBEA, 0x3400,
-	0xBBEC, 0x3400,
-	0xBBEE, 0x3400,
-	0xBBF0, 0x0A00,
-	0xBBF2, 0x0A00,
-	0xBBF4, 0x0A00,
-	0xBBF6, 0x0A00,
-	0xBBF8, 0x1000,
-	0xBBFA, 0x1000,
-	0xBBFC, 0x1000,
-	0xBBFE, 0x1000,
-	0xBC00, 0x0600,
-	0xBC02, 0x0600,
-	0xBC04, 0x0600,
-	0xBC06, 0x0600,
-	0xBC08, 0x0C00,
-	0xBC0A, 0x0C00,
-	0xBC0C, 0x0C00,
-	0xBC0E, 0x0C00,
-	0xBC10, 0x0000,
-	0xBC12, 0x0000,
-	0xBC14, 0x0000,
-	0xBC16, 0x0000,
-	0xBC18, 0x1000,
-	0xBC1A, 0x1000,
-	0xBC1C, 0x1000,
-	0xBC1E, 0x1000,
-	0xBC20, 0x1000,
-	0xBC22, 0x1000,
-	0xBC24, 0x1000,
-	0xBC26, 0x1000,
-	0xBC28, 0x2000,
-	0xBC2A, 0x1000,
-	0xBC2C, 0x1000,
-	0xBC2E, 0x1000,
-	0xBC30, 0x0600,
-	0xBC32, 0x0600,
-	0xBC34, 0x0600,
-	0xBC36, 0x0600,
-	0xBC38, 0x1C00,
-	0xBC3A, 0x1C00,
-	0xBC3C, 0x1C00,
-	0xBC3E, 0x1C00,
-	0xBC40, 0x0600,
-	0xBC42, 0x0600,
-	0xBC44, 0x0600,
-	0xBC46, 0x0600,
-	0xBC48, 0x2A00,
-	0xBC4A, 0x2A00,
-	0xBC4C, 0x2A00,
-	0xBC4E, 0x2A00,
-	0xBC50, 0x0200,
-	0xBC52, 0x0200,
-	0xBC54, 0x0200,
-	0xBC56, 0x0200,
-	0xBC58, 0x1000,
-	0xBC5A, 0x1000,
-	0xBC5C, 0x1000,
-	0xBC5E, 0x1000,
-	0xBC60, 0x0E00,
-	0xBC62, 0x0E00,
-	0xBC64, 0x0E00,
-	0xBC66, 0x0E00,
-	0xBC68, 0x2800,
-	0xBC6A, 0x2800,
-	0xBC6C, 0x2800,
-	0xBC6E, 0x2800,
-	0xBC70, 0x1800,
-	0xBC72, 0x1800,
-	0xBC74, 0x1800,
-	0xBC76, 0x1800,
-	0xBC78, 0x0800,
-	0xBC7A, 0x0800,
-	0xBC7C, 0x0800,
-	0xBC7E, 0x0800,
-	0xBC80, 0x0000,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x2400,
-	0xBC8A, 0x2400,
-	0xBC8C, 0x2400,
-	0xBC8E, 0x2400,
-	0xBC90, 0x0055,
-	0xFCFC, 0x2001,
-	0x5634, 0x041D,
-	0x5636, 0x0420,
-	0x5638, 0x3C85,
-	0x563A, 0x0224,
-	0x563C, 0x3CE6,
-	0x563E, 0x0320,
-	0x5640, 0xD885,
-	0x5642, 0x0224,
-	0x5644, 0xD06E,
-	0x5646, 0x0320,
-	0x5648, 0xC48D,
-	0x564A, 0x0224,
-	0x564C, 0x4877,
-	0x564E, 0x0320,
-	0x5650, 0xCC90,
-	0x5652, 0x0224,
-	0x5654, 0x6812,
-	0x5656, 0x0320,
-	0x5658, 0xB88F,
-	0x565A, 0x0224,
-	0x565C, 0xE8FE,
-	0x565E, 0x0220,
-	0x5660, 0x5491,
-	0x5662, 0x0224,
-	0x5664, 0xA462,
-	0x5666, 0x0320,
-	0x5668, 0x9C95,
-	0x566A, 0x0224,
-	0x566C, 0x901B,
-	0x566E, 0x0020,
-	0x5670, 0x2896,
-	0x5672, 0x0224,
-	0x5674, 0xC446,
-	0x5676, 0x0320,
-	0x5678, 0xE896,
-	0x567A, 0x0224,
-	0x567C, 0x1427,
-	0x567E, 0x0320,
-	0x5680, 0xC498,
-	0x5682, 0x0224,
-	0x5684, 0x304C,
-	0x5686, 0x0220,
-	0x5688, 0x749B,
-	0x568A, 0x0224,
-	0x568C, 0xC82C,
-	0x568E, 0x0220,
-	0x5690, 0xD09B,
-	0x5692, 0x0224,
-	0x5694, 0x484F,
-	0x5696, 0x0220,
-	0x5698, 0x289C,
-	0x569A, 0x0224,
-	0x569C, 0xB041,
-	0x569E, 0x0220,
-	0x56A0, 0x3C9A,
-	0x56A2, 0x0224,
-	0x56A4, 0xC81D,
-	0x56A6, 0x0420,
-	0x56A8, 0xFC9A,
-	0x56AA, 0x0224,
-	0x56AC, 0xAC7F,
-	0x56AE, 0x0420,
-	0x56B0, 0x8C86,
-	0x56B2, 0x0224,
-	0x56B4, 0x7C80,
-	0x56B6, 0x0420,
-	0x56B8, 0x1086,
-	0x56BA, 0x0224,
-	0x56BC, 0xF887,
-	0x56BE, 0x0320,
-	0x56C0, 0x7CAC,
-	0x56C2, 0x0224,
-	0x56C4, 0x1007,
-	0x56C6, 0x0320,
-	0x56C8, 0xE08E,
-	0x56CA, 0x0224,
-	0x56CC, 0x1409,
-	0x56CE, 0x0020,
-	0x56D0, 0x2495,
-	0x56D2, 0x0224,
-	0x56D4, 0x2046,
-	0x56D6, 0x0420,
-	0x56D8, 0xC087,
-	0x56DA, 0x0224,
-	0x56DC, 0xB05B,
-	0x56DE, 0x0420,
-	0x56E0, 0x4088,
-	0x56E2, 0x0224,
-	0x56E4, 0x505C,
-	0x56E6, 0x0320,
-	0x56E8, 0x448A,
-	0x56EA, 0x0224,
-	0x56EC, 0xA45B,
-	0x56EE, 0x0320,
-	0x56F0, 0x5089,
-	0x56F2, 0x0224,
-	0x56F4, 0x306A,
-	0x56F6, 0x0420,
-	0x56F8, 0x1485,
-	0x56FA, 0x0224,
-	0x56FC, 0x90F8,
-	0x56FE, 0x0220,
-	0x5700, 0x44A1,
-	0x5702, 0x0224,
-	0x5704, 0x0454,
-	0x5706, 0x0120,
-	0x5708, 0x18A6,
-	0x570A, 0x0224,
-	0x570C, 0x0453,
-	0x570E, 0x0020,
-	0x5710, 0xA0A7,
-	0x5712, 0x0224,
-	0x5714, 0xC850,
-	0x5716, 0x0220,
-	0x5718, 0xB8AC,
-	0x571A, 0x0224,
-	0x571C, 0x2C88,
-	0x571E, 0x0220,
-	0x5720, 0xF0AD,
-	0x5722, 0x0224,
-	0x5724, 0x7C82,
-	0x5726, 0x0120,
-	0x5728, 0xC8B4,
-	0x572A, 0x0224,
-	0x572C, 0xACF3,
-	0x572E, 0x0320,
-	0x5730, 0x64B5,
-	0x5732, 0x0224,
-	0x5734, 0x1081,
-	0x5736, 0x0320,
-	0x5738, 0x70B9,
-	0x573A, 0x0224,
-	0x573C, 0xBCFD,
-	0x573E, 0x0220,
-	0x5740, 0xE4B9,
-	0x5742, 0x0224,
-	0x5744, 0xBCA5,
-	0x5746, 0x0420,
-	0x5748, 0x7CBA,
-	0x574A, 0x0224,
-	0x574C, 0xB803,
-	0x574E, 0x0320,
-	0x5750, 0xE4BC,
-	0x5752, 0x0224,
-	0x5754, 0x8424,
-	0x5756, 0x0220,
-	0x5758, 0xB0BD,
-	0x575A, 0x0224,
-	0x575C, 0x9C4C,
-	0x575E, 0x0220,
-	0x5760, 0xD0BF,
-	0x5762, 0x0224,
-	0x5764, 0x0C22,
-	0x5766, 0x0220,
-	0x5768, 0x54BE,
-	0x576A, 0x0224,
-	0xFCFC, 0x2002,
-	0xBC98, 0x1743,
-	0xBC9A, 0x02FC,
-	0xBC9C, 0xE702,
-	0xBC9E, 0x8382,
-	0xBCA0, 0x2A84,
-	0xBCA2, 0xEFE0,
-	0xBCA4, 0xBFB9,
-	0xBCA6, 0xA147,
-	0xBCA8, 0x6306,
-	0xBCAA, 0xF400,
-	0xBCAC, 0x1743,
-	0xBCAE, 0x02FC,
-	0xBCB0, 0x6700,
-	0xBCB2, 0x8383,
-	0xBCB4, 0xB7C7,
-	0xBCB6, 0x0224,
-	0xBCB8, 0x83C7,
-	0xBCBA, 0x57B8,
-	0xBCBC, 0xE5DB,
-	0xBCBE, 0xB797,
-	0xBCC0, 0x0124,
-	0xBCC2, 0x9387,
-	0xBCC4, 0x0753,
-	0xBCC6, 0x0567,
-	0xBCC8, 0x3E97,
-	0xBCCA, 0x8346,
-	0xBCCC, 0x07B9,
-	0xBCCE, 0xF9DE,
-	0xBCD0, 0x83C7,
-	0xBCD2, 0x673F,
-	0xBCD4, 0xE1DF,
-	0xBCD6, 0x8357,
-	0xBCD8, 0x47B6,
-	0xBCDA, 0x93E7,
-	0xBCDC, 0x0720,
-	0xBCDE, 0x2312,
-	0xBCE0, 0xF7B6,
-	0xBCE2, 0xE9B7,
-	0xBCE4, 0x1733,
-	0xBCE6, 0x02FC,
-	0xBCE8, 0xE702,
-	0xBCEA, 0x437B,
-	0xBCEC, 0x37C8,
-	0xBCEE, 0x0224,
-	0xBCF0, 0x1308,
-	0xBCF2, 0x48B8,
-	0xBCF4, 0x8348,
-	0xBCF6, 0x1800,
-	0xBCF8, 0x2A8B,
-	0xBCFA, 0xAE8B,
-	0xBCFC, 0x3284,
-	0xBCFE, 0xB684,
-	0xBD00, 0x3A89,
-	0xBD02, 0xBE89,
-	0xBD04, 0x6380,
-	0xBD06, 0x0802,
-	0xBD08, 0xB7A7,
-	0xBD0A, 0x0124,
-	0xBD0C, 0x9387,
-	0xBD0E, 0x0753,
-	0xBD10, 0x03C7,
-	0xBD12, 0x07B9,
-	0xBD14, 0x83C7,
-	0xBD16, 0xB792,
-	0xBD18, 0x11C7,
-	0xBD1A, 0x0347,
-	0xBD1C, 0x2800,
-	0xBD1E, 0xBD8B,
-	0xBD20, 0x6306,
-	0xBD22, 0xF704,
-	0xBD24, 0x37E8,
-	0xBD26, 0x0124,
-	0xBD28, 0x1308,
-	0xBD2A, 0x0887,
-	0xBD2C, 0x832A,
-	0xBD2E, 0x0812,
-	0xBD30, 0x032A,
-	0xBD32, 0x4812,
-	0xBD34, 0x0146,
-	0xBD36, 0xD685,
-	0xBD38, 0x5285,
-	0xBD3A, 0x9730,
-	0xBD3C, 0x01FC,
-	0xBD3E, 0xE780,
-	0xBD40, 0xA0D0,
-	0xBD42, 0xCE87,
-	0xBD44, 0x4A87,
-	0xBD46, 0xA686,
-	0xBD48, 0x2286,
-	0xBD4A, 0xDE85,
-	0xBD4C, 0x5A85,
-	0xBD4E, 0x9740,
-	0xBD50, 0x00FC,
-	0xBD52, 0xE780,
-	0xBD54, 0xA066,
-	0xBD56, 0x0546,
-	0xBD58, 0xD685,
-	0xBD5A, 0x5285,
-	0xBD5C, 0x9730,
-	0xBD5E, 0x01FC,
-	0xBD60, 0xE780,
-	0xBD62, 0x80CE,
-	0xBD64, 0x1733,
-	0xBD66, 0x02FC,
-	0xBD68, 0x6700,
-	0xBD6A, 0xC376,
-	0xBD6C, 0x2315,
-	0xBD6E, 0x0600,
-	0xBD70, 0x9760,
-	0xBD72, 0xFFFB,
-	0xBD74, 0xE780,
-	0xBD76, 0x80BA,
-	0xBD78, 0x01CD,
-	0xBD7A, 0xB797,
-	0xBD7C, 0x0124,
-	0xBD7E, 0x9387,
-	0xBD80, 0x07D7,
-	0xBD82, 0x03C7,
-	0xBD84, 0xC700,
-	0xBD86, 0x59DF,
-	0xBD88, 0x7D17,
-	0xBD8A, 0x2386,
-	0xBD8C, 0xE700,
-	0xBD8E, 0x59BF,
-	0xBD90, 0x9760,
-	0xBD92, 0xFFFB,
-	0xBD94, 0xE780,
-	0xBD96, 0x80B5,
-	0xBD98, 0x6DD1,
-	0xBD9A, 0xB797,
-	0xBD9C, 0x0124,
-	0xBD9E, 0x9387,
-	0xBDA0, 0x07D7,
-	0xBDA2, 0x03C7,
-	0xBDA4, 0xD700,
-	0xBDA6, 0x3DDF,
-	0xBDA8, 0x7D17,
-	0xBDAA, 0xA386,
-	0xBDAC, 0xE700,
-	0xBDAE, 0x9DBF,
-	0xBDB0, 0x1733,
-	0xBDB2, 0x02FC,
-	0xBDB4, 0xE702,
-	0xBDB6, 0x636F,
-	0xBDB8, 0xB7E7,
-	0xBDBA, 0x0124,
-	0xBDBC, 0x9387,
-	0xBDBE, 0x0787,
-	0xBDC0, 0x03AA,
-	0xBDC2, 0x8712,
-	0xBDC4, 0x83A9,
-	0xBDC6, 0xC712,
-	0xBDC8, 0xAE84,
-	0xBDCA, 0x2A84,
-	0xBDCC, 0x3289,
-	0xBDCE, 0xD285,
-	0xBDD0, 0x0146,
-	0xBDD2, 0x4E85,
-	0xBDD4, 0x9730,
-	0xBDD6, 0x01FC,
-	0xBDD8, 0xE780,
-	0xBDDA, 0x00C7,
-	0xBDDC, 0xA685,
-	0xBDDE, 0x4A86,
-	0xBDE0, 0x2285,
-	0xBDE2, 0x9760,
-	0xBDE4, 0xFFFB,
-	0xBDE6, 0xE780,
-	0xBDE8, 0x206A,
-	0xBDEA, 0xAA84,
-	0xBDEC, 0x0546,
-	0xBDEE, 0xD285,
-	0xBDF0, 0x4E85,
-	0xBDF2, 0x9730,
-	0xBDF4, 0x01FC,
-	0xBDF6, 0xE780,
-	0xBDF8, 0x20C5,
-	0xBDFA, 0xB7C7,
-	0xBDFC, 0x0224,
-	0xBDFE, 0x9387,
-	0xBE00, 0x47B8,
-	0xBE02, 0x03C7,
-	0xBE04, 0xC710,
-	0xBE06, 0x15C3,
-	0xBE08, 0x37A7,
-	0xBE0A, 0x0124,
-	0xBE0C, 0x1307,
-	0xBE0E, 0x0753,
-	0xBE10, 0x0346,
-	0xBE12, 0x37B9,
-	0xBE14, 0x8946,
-	0xBE16, 0x631A,
-	0xBE18, 0xD600,
-	0xBE1A, 0x8356,
-	0xBE1C, 0x87BA,
-	0xBE1E, 0xE18E,
-	0xBE20, 0x89C6,
-	0xBE22, 0x9306,
-	0xBE24, 0x0040,
-	0xBE26, 0x6307,
-	0xBE28, 0xD400,
-	0xBE2A, 0x2685,
-	0xBE2C, 0x1733,
-	0xBE2E, 0x02FC,
-	0xBE30, 0x6700,
-	0xBE32, 0xE36A,
-	0xBE34, 0x8326,
-	0xBE36, 0x47B3,
-	0xBE38, 0x7D57,
-	0xBE3A, 0xE388,
-	0xBE3C, 0xE6FE,
-	0xBE3E, 0x03D7,
-	0xBE40, 0x0711,
-	0xBE42, 0x9396,
-	0xBE44, 0x0401,
-	0xBE46, 0xC182,
-	0xBE48, 0x11E3,
-	0xBE4A, 0x3687,
-	0xBE4C, 0xBA84,
-	0xBE4E, 0x2398,
-	0xBE50, 0xD710,
-	0xBE52, 0xE1BF,
-	0xBE54, 0x1733,
-	0xBE56, 0x02FC,
-	0xBE58, 0xE702,
-	0xBE5A, 0x2365,
-	0xBE5C, 0x3729,
-	0xBE5E, 0x0024,
-	0xBE60, 0xB7A4,
-	0xBE62, 0x0124,
-	0xBE64, 0x1309,
-	0xBE66, 0x0933,
-	0xBE68, 0x9384,
-	0xBE6A, 0x0453,
-	0xBE6C, 0x8347,
-	0xBE6E, 0x491A,
-	0xBE70, 0x03C7,
-	0xBE72, 0x24B7,
-	0xBE74, 0x2A84,
-	0xBE76, 0xD98F,
-	0xBE78, 0x6382,
-	0xBE7A, 0x0714,
-	0xBE7C, 0x8347,
-	0xBE7E, 0xE400,
-	0xBE80, 0x0547,
-	0xBE82, 0x2305,
-	0xBE84, 0xE400,
-	0xBE86, 0x99E7,
-	0xBE88, 0x8347,
-	0xBE8A, 0xC400,
-	0xBE8C, 0xD1CF,
-	0xBE8E, 0x83C7,
-	0xBE90, 0x24B7,
-	0xBE92, 0xC5CB,
-	0xBE94, 0xB76A,
-	0xBE96, 0x0124,
-	0xBE98, 0x130A,
-	0xBE9A, 0x0403,
-	0xBE9C, 0x0347,
-	0xBE9E, 0x0400,
-	0xBEA0, 0xA169,
-	0xBEA2, 0xFD19,
-	0xBEA4, 0xA301,
-	0xBEA6, 0xE400,
-	0xBEA8, 0x83A7,
-	0xBEAA, 0x0A4B,
-	0xBEAC, 0x2302,
-	0xBEAE, 0xE400,
-	0xBEB0, 0x0567,
-	0xBEB2, 0xBA97,
-	0xBEB4, 0x83D7,
-	0xBEB6, 0x47E0,
-	0xBEB8, 0x2303,
-	0xBEBA, 0x0400,
-	0xBEBC, 0xB3F7,
-	0xBEBE, 0x3701,
-	0xBEC0, 0x231C,
-	0xBEC2, 0xF400,
-	0xBEC4, 0x9740,
-	0xBEC6, 0xFDFB,
-	0xBEC8, 0xE780,
-	0xBECA, 0x0067,
-	0xBECC, 0x0358,
-	0xBECE, 0x8401,
-	0xBED0, 0xA308,
-	0xBED2, 0xA400,
-	0xBED4, 0x6301,
-	0xBED6, 0x0806,
-	0xBED8, 0x3736,
-	0xBEDA, 0x0520,
-	0xBEDC, 0x1306,
-	0xBEDE, 0x06C8,
-	0xBEE0, 0x8146,
-	0xBEE2, 0x8147,
-	0xBEE4, 0x4145,
-	0xBEE6, 0xB305,
-	0xBEE8, 0xF400,
-	0xBEEA, 0x3357,
-	0xBEEC, 0xF840,
-	0xBEEE, 0x2380,
-	0xBEF0, 0xD502,
-	0xBEF2, 0x058B,
-	0xBEF4, 0x8507,
-	0xBEF6, 0x11C7,
-	0xBEF8, 0x0347,
-	0xBEFA, 0x0600,
-	0xBEFC, 0xBA96,
-	0xBEFE, 0x93F6,
-	0xBF00, 0xF60F,
-	0xBF02, 0x0506,
-	0xBF04, 0xE391,
-	0xBF06, 0xA7FE,
-	0xBF08, 0x2308,
-	0xBF0A, 0xD400,
-	0xBF0C, 0x8347,
-	0xBF0E, 0x491A,
-	0xBF10, 0x03C7,
-	0xBF12, 0x24B7,
-	0xBF14, 0xD98F,
-	0xBF16, 0xC9C3,
-	0xBF18, 0x2307,
-	0xBF1A, 0x0400,
-	0xBF1C, 0x232E,
-	0xBF1E, 0x4401,
-	0xBF20, 0x1733,
-	0xBF22, 0x02FC,
-	0xBF24, 0x6700,
-	0xBF26, 0xA35B,
-	0xBF28, 0x8347,
-	0xBF2A, 0xB400,
-	0xBF2C, 0xA5D7,
-	0xBF2E, 0x83C7,
-	0xBF30, 0x24B7,
-	0xBF32, 0xADF3,
-	0xBF34, 0x39A0,
-	0xBF36, 0x0148,
-	0xBF38, 0x45F1,
-	0xBF3A, 0x231C,
-	0xBF3C, 0x3401,
-	0xBF3E, 0x4E88,
-	0xBF40, 0x61BF,
-	0xBF42, 0xB76A,
-	0xBF44, 0x0124,
-	0xBF46, 0x83A5,
-	0xBF48, 0x0A4B,
-	0xBF4A, 0x8567,
-	0xBF4C, 0x130A,
-	0xBF4E, 0x0403,
-	0xBF50, 0x9387,
-	0xBF52, 0x07E1,
-	0xBF54, 0x1306,
-	0xBF56, 0x8007,
-	0xBF58, 0xBE95,
-	0xBF5A, 0x5285,
-	0xBF5C, 0x9760,
-	0xBF5E, 0x00FC,
-	0xBF60, 0xE780,
-	0xBF62, 0x400A,
-	0xBF64, 0x21C9,
-	0xBF66, 0x2305,
-	0xBF68, 0x0400,
-	0xBF6A, 0x0347,
-	0xBF6C, 0x2401,
-	0xBF6E, 0x8347,
-	0xBF70, 0x6400,
-	0xBF72, 0x8356,
-	0xBF74, 0x4401,
-	0xBF76, 0xA308,
-	0xBF78, 0xE400,
-	0xBF7A, 0x0547,
-	0xBF7C, 0x231C,
-	0xBF7E, 0xD400,
-	0xBF80, 0x2307,
-	0xBF82, 0xE400,
-	0xBF84, 0xA301,
-	0xBF86, 0xF400,
-	0xBF88, 0x2303,
-	0xBF8A, 0x0400,
-	0xBF8C, 0x232E,
-	0xBF8E, 0x4401,
-	0xBF90, 0x1733,
-	0xBF92, 0x02FC,
-	0xBF94, 0x6700,
-	0xBF96, 0xA354,
-	0xBF98, 0x83A5,
-	0xBF9A, 0x0A4B,
-	0xBF9C, 0x8567,
-	0xBF9E, 0x9387,
-	0xBFA0, 0x07E1,
-	0xBFA2, 0x1306,
-	0xBFA4, 0x000F,
-	0xBFA6, 0xBE95,
-	0xBFA8, 0x5285,
-	0xBFAA, 0x9760,
-	0xBFAC, 0x00FC,
-	0xBFAE, 0xE780,
-	0xBFB0, 0x2005,
-	0xBFB2, 0x9DB7,
-	0xBFB4, 0x8347,
-	0xBFB6, 0xA400,
-	0xBFB8, 0xCDDB,
-	0xBFBA, 0xCDB5,
-	0xBFBC, 0x37A5,
-	0xBFBE, 0x0124,
-	0xBFC0, 0x1305,
-	0xBFC2, 0x050C,
-	0xBFC4, 0x9760,
-	0xBFC6, 0xFFFB,
-	0xBFC8, 0xE780,
-	0xBFCA, 0x8043,
-	0xBFCC, 0x45BD,
-	0xBFCE, 0x0100,
-	0xBFD0, 0x1733,
-	0xBFD2, 0x02FC,
-	0xBFD4, 0xE702,
-	0xBFD6, 0x034F,
-	0xBFD8, 0x8347,
-	0xBFDA, 0x1501,
-	0xBFDC, 0xA304,
-	0xBFDE, 0x0500,
-	0xBFE0, 0x2A84,
-	0xBFE2, 0x91EF,
-	0xBFE4, 0x8357,
-	0xBFE6, 0x8501,
-	0xBFE8, 0x99EB,
-	0xBFEA, 0x8347,
-	0xBFEC, 0xF500,
-	0xBFEE, 0xA307,
-	0xBFF0, 0x0500,
-	0xBFF2, 0xA304,
-	0xBFF4, 0xF500,
-	0xBFF6, 0x1733,
-	0xBFF8, 0x02FC,
-	0xBFFA, 0x6700,
-	0xBFFC, 0xE34E,
-	0xBFFE, 0x2285,
-	0xC000, 0x9790,
-	0xC002, 0xFFFB,
-	0xC004, 0xE780,
-	0xC006, 0xC0C4,
-	0xC008, 0x8347,
-	0xC00A, 0x3400,
-	0xC00C, 0x0347,
-	0xC00E, 0x6400,
-	0xC010, 0x8346,
-	0xC012, 0x7400,
-	0xC014, 0xFD17,
-	0xC016, 0x0507,
-	0xC018, 0x93F7,
-	0xC01A, 0xF70F,
-	0xC01C, 0x2303,
-	0xC01E, 0xE400,
-	0xC020, 0xA301,
-	0xC022, 0xF400,
-	0xC024, 0x99C2,
-	0xC026, 0xA303,
-	0xC028, 0x0400,
-	0xC02A, 0xB1EF,
-	0xC02C, 0x0347,
-	0xC02E, 0x1401,
-	0xC030, 0x8356,
-	0xC032, 0x8401,
-	0xC034, 0x8347,
-	0xC036, 0x5400,
-	0xC038, 0x2309,
-	0xC03A, 0xE400,
-	0xC03C, 0x0547,
-	0xC03E, 0x231A,
-	0xC040, 0xD400,
-	0xC042, 0x2304,
-	0xC044, 0xE400,
-	0xC046, 0x231C,
-	0xC048, 0x0400,
-	0xC04A, 0xA308,
-	0xC04C, 0x0400,
-	0xC04E, 0xC5E3,
-	0xC050, 0x8347,
-	0xC052, 0x1400,
-	0xC054, 0x13F7,
-	0xC056, 0x2700,
-	0xC058, 0x19C7,
-	0xC05A, 0x0347,
-	0xC05C, 0x0400,
-	0xC05E, 0x01C7,
-	0xC060, 0x0347,
-	0xC062, 0x2400,
-	0xC064, 0x4DC3,
-	0xC066, 0x858B,
-	0xC068, 0xA5CF,
-	0xC06A, 0xB727,
-	0xC06C, 0x0024,
-	0xC06E, 0x83C7,
-	0xC070, 0x274D,
-	0xC072, 0xD1D3,
-	0xC074, 0xB767,
-	0xC076, 0x0124,
-	0xC078, 0x83A7,
-	0xC07A, 0x074B,
-	0xC07C, 0x0567,
-	0xC07E, 0xBA97,
-	0xC080, 0x2380,
-	0xC082, 0x07E0,
-	0xC084, 0x8DBF,
-	0xC086, 0x0347,
-	0xC088, 0x0401,
-	0xC08A, 0x5C4C,
-	0xC08C, 0x9316,
-	0xC08E, 0x1700,
-	0xC090, 0xB697,
-	0xC092, 0x5CCC,
-	0xC094, 0xB727,
-	0xC096, 0x0024,
-	0xC098, 0x9387,
-	0xC09A, 0x0733,
-	0xC09C, 0x83C6,
-	0xC09E, 0x371A,
-	0xC0A0, 0x89EA,
-	0xC0A2, 0x8346,
-	0xC0A4, 0x6401,
-	0xC0A6, 0xA1DA,
-	0xC0A8, 0xB7A6,
-	0xC0AA, 0x0124,
-	0xC0AC, 0x83C6,
-	0xC0AE, 0x260A,
-	0xC0B0, 0xB9F2,
-	0xC0B2, 0x83C7,
-	0xC0B4, 0x471A,
-	0xC0B6, 0xA1F3,
-	0xC0B8, 0x0346,
-	0xC0BA, 0x0400,
-	0xC0BC, 0xB767,
-	0xC0BE, 0x0124,
-	0xC0C0, 0x83A5,
-	0xC0C2, 0x074B,
-	0xC0C4, 0x3306,
-	0xC0C6, 0xE602,
-	0xC0C8, 0x8567,
-	0xC0CA, 0x9387,
-	0xC0CC, 0x07E1,
-	0xC0CE, 0xBE95,
-	0xC0D0, 0x1305,
-	0xC0D2, 0x0403,
-	0xC0D4, 0x0606,
-	0xC0D6, 0x9760,
-	0xC0D8, 0x00FC,
-	0xC0DA, 0xE780,
-	0xC0DC, 0x60F2,
-	0xC0DE, 0x21BF,
-	0xC0E0, 0x8547,
-	0xC0E2, 0xA304,
-	0xC0E4, 0xF400,
-	0xC0E6, 0x1733,
-	0xC0E8, 0x02FC,
-	0xC0EA, 0x6700,
-	0xC0EC, 0xE33F,
-	0xC0EE, 0xFD17,
-	0xC0F0, 0xA302,
-	0xC0F2, 0xF400,
-	0xC0F4, 0x2285,
-	0xC0F6, 0x9760,
-	0xC0F8, 0xFFFB,
-	0xC0FA, 0xE780,
-	0xC0FC, 0x6011,
-	0xC0FE, 0x1733,
-	0xC100, 0x02FC,
-	0xC102, 0x6700,
-	0xC104, 0x633E,
-	0xC106, 0x2285,
-	0xC108, 0x9760,
-	0xC10A, 0xFFFB,
-	0xC10C, 0xE780,
-	0xC10E, 0x4010,
-	0xC110, 0xDDB5,
-	0xC112, 0x0100,
-	0xC114, 0x8947,
-	0xC116, 0x6303,
-	0xC118, 0xF500,
-	0xC11A, 0x8280,
-	0xC11C, 0x1733,
-	0xC11E, 0x02FC,
-	0xC120, 0xE702,
-	0xC122, 0xA338,
-	0xC124, 0xB784,
-	0xC126, 0x0124,
-	0xC128, 0x9384,
-	0xC12A, 0x04AA,
-	0xC12C, 0x87A7,
-	0xC12E, 0x040A,
-	0xC130, 0x4111,
-	0xC132, 0x37C5,
-	0xC134, 0x0224,
-	0xC136, 0x5396,
-	0xC138, 0x17C0,
-	0xC13A, 0x7400,
-	0xC13C, 0x9145,
-	0xC13E, 0x1305,
-	0xC140, 0x85B8,
-	0xC142, 0x9750,
-	0xC144, 0xFFFB,
-	0xC146, 0xE780,
-	0xC148, 0x60C3,
-	0xC14A, 0x3719,
-	0xC14C, 0x0140,
-	0xC14E, 0x4205,
-	0xC150, 0x4181,
-	0xC152, 0x130A,
-	0xC154, 0x4924,
-	0xC156, 0xB789,
-	0xC158, 0x0124,
-	0xC15A, 0x37C4,
-	0xC15C, 0x0224,
-	0xC15E, 0xB7CA,
-	0xC160, 0x0224,
-	0xC162, 0x2317,
-	0xC164, 0xA100,
-	0xC166, 0x9389,
-	0xC168, 0x89B1,
-	0xC16A, 0x1304,
-	0xC16C, 0x04B9,
-	0xC16E, 0x938A,
-	0xC170, 0x8ABB,
-	0xC172, 0x330A,
-	0xC174, 0x9A40,
-	0xC176, 0x0605,
-	0xC178, 0x2295,
-	0xC17A, 0x8355,
-	0xC17C, 0x2500,
-	0xC17E, 0x0356,
-	0xC180, 0xC100,
-	0xC182, 0x0355,
-	0xC184, 0x0500,
-	0xC186, 0x2104,
-	0xC188, 0x9760,
-	0xC18A, 0x00FC,
-	0xC18C, 0xE780,
-	0xC18E, 0x8082,
-	0xC190, 0x4205,
-	0xC192, 0x4181,
-	0xC194, 0x2390,
-	0xC196, 0xA900,
-	0xC198, 0xB387,
-	0xC19A, 0x4901,
-	0xC19C, 0x2390,
-	0xC19E, 0xA700,
-	0xC1A0, 0x8909,
-	0xC1A2, 0x6305,
-	0xC1A4, 0x5401,
-	0xC1A6, 0x0355,
-	0xC1A8, 0xE100,
-	0xC1AA, 0xF1B7,
-	0xC1AC, 0xB789,
-	0xC1AE, 0x0124,
-	0xC1B0, 0x37CA,
-	0xC1B2, 0x0224,
-	0xC1B4, 0x1309,
-	0xC1B6, 0x0926,
-	0xC1B8, 0x9389,
-	0xC1BA, 0xA9AF,
-	0xC1BC, 0x130A,
-	0xC1BE, 0x0AC3,
-	0xC1C0, 0x8357,
-	0xC1C2, 0xE100,
-	0xC1C4, 0x0356,
-	0xC1C6, 0xC100,
-	0xC1C8, 0x8509,
-	0xC1CA, 0x8607,
-	0xC1CC, 0xA297,
-	0xC1CE, 0x83D5,
-	0xC1D0, 0x2700,
-	0xC1D2, 0x03D5,
-	0xC1D4, 0x0700,
-	0xC1D6, 0x0909,
-	0xC1D8, 0x2104,
-	0xC1DA, 0x9750,
-	0xC1DC, 0x00FC,
-	0xC1DE, 0xE780,
-	0xC1E0, 0x607D,
-	0xC1E2, 0x1375,
-	0xC1E4, 0xF50F,
-	0xC1E6, 0xA38F,
-	0xC1E8, 0xA9FE,
-	0xC1EA, 0x4205,
-	0xC1EC, 0x4181,
-	0xC1EE, 0x231F,
-	0xC1F0, 0xA9FE,
-	0xC1F2, 0xE317,
-	0xC1F4, 0x44FD,
-	0xC1F6, 0xB719,
-	0xC1F8, 0x0140,
-	0xC1FA, 0x3789,
-	0xC1FC, 0x0124,
-	0xC1FE, 0x37CA,
-	0xC200, 0x0224,
-	0xC202, 0x9389,
-	0xC204, 0x291F,
-	0xC206, 0x1309,
-	0xC208, 0xC9B2,
-	0xC20A, 0x130A,
-	0xC20C, 0x0AC6,
-	0xC20E, 0xB389,
-	0xC210, 0x9940,
-	0xC212, 0x8357,
-	0xC214, 0xE100,
-	0xC216, 0x0356,
-	0xC218, 0xC100,
-	0xC21A, 0x8607,
-	0xC21C, 0xA297,
-	0xC21E, 0x83D5,
-	0xC220, 0x2700,
-	0xC222, 0x03D5,
-	0xC224, 0x0700,
-	0xC226, 0x2104,
-	0xC228, 0x9750,
-	0xC22A, 0x00FC,
-	0xC22C, 0xE780,
-	0xC22E, 0x8078,
-	0xC230, 0x4205,
-	0xC232, 0x4181,
-	0xC234, 0x2310,
-	0xC236, 0xA900,
-	0xC238, 0xB307,
-	0xC23A, 0x3901,
-	0xC23C, 0x2390,
-	0xC23E, 0xA700,
-	0xC240, 0x0909,
-	0xC242, 0xE318,
-	0xC244, 0x44FD,
-	0xC246, 0xB717,
-	0xC248, 0x0140,
-	0xC24A, 0x3789,
-	0xC24C, 0x0124,
-	0xC24E, 0xB7C9,
-	0xC250, 0x0224,
-	0xC252, 0x9387,
-	0xC254, 0xA720,
-	0xC256, 0x1309,
-	0xC258, 0x69B4,
-	0xC25A, 0x9389,
-	0xC25C, 0x09C9,
-	0xC25E, 0xB384,
-	0xC260, 0x9740,
-	0xC262, 0x8357,
-	0xC264, 0xE100,
-	0xC266, 0x0356,
-	0xC268, 0xC100,
-	0xC26A, 0x8607,
-	0xC26C, 0xA297,
-	0xC26E, 0x83D5,
-	0xC270, 0x2700,
-	0xC272, 0x03D5,
-	0xC274, 0x0700,
-	0xC276, 0x2104,
-	0xC278, 0x9750,
-	0xC27A, 0x00FC,
-	0xC27C, 0xE780,
-	0xC27E, 0x8073,
-	0xC280, 0x4205,
-	0xC282, 0x4181,
-	0xC284, 0x2310,
-	0xC286, 0xA900,
-	0xC288, 0xB307,
-	0xC28A, 0x9900,
-	0xC28C, 0x2390,
-	0xC28E, 0xA700,
-	0xC290, 0x0909,
-	0xC292, 0xE318,
-	0xC294, 0x34FD,
-	0xC296, 0x4101,
-	0xC298, 0x1733,
-	0xC29A, 0x02FC,
-	0xC29C, 0x6700,
-	0xC29E, 0x2324,
-	0xC2A0, 0xB7C7,
-	0xC2A2, 0x0224,
-	0xC2A4, 0x9387,
-	0xC2A6, 0x47B8,
-	0xC2A8, 0x03C6,
-	0xC2AA, 0x0700,
-	0xC2AC, 0x37A7,
-	0xC2AE, 0x0224,
-	0xC2B0, 0x8356,
-	0xC2B2, 0x4760,
-	0xC2B4, 0x37D7,
-	0xC2B6, 0x0124,
-	0xC2B8, 0x2328,
-	0xC2BA, 0xC7DA,
-	0xC2BC, 0x37C7,
-	0xC2BE, 0x0224,
-	0xC2C0, 0x3766,
-	0xC2C2, 0x0124,
-	0xC2C4, 0x1307,
-	0xC2C6, 0x87C9,
-	0xC2C8, 0x2326,
-	0xC2CA, 0xE640,
-	0xC2CC, 0x89CA,
-	0xC2CE, 0x37B7,
-	0xC2D0, 0x0224,
-	0xC2D2, 0xB726,
-	0xC2D4, 0x0024,
-	0xC2D6, 0x1307,
-	0xC2D8, 0x8768,
-	0xC2DA, 0x23A0,
-	0xC2DC, 0xE6CE,
-	0xC2DE, 0x37C7,
-	0xC2E0, 0x0224,
-	0xC2E2, 0x1307,
-	0xC2E4, 0x4711,
-	0xC2E6, 0x23A4,
-	0xC2E8, 0xE1A4,
-	0xC2EA, 0x2398,
-	0xC2EC, 0x0710,
-	0xC2EE, 0x8280,
-	0xC2F0, 0x1733,
-	0xC2F2, 0x02FC,
-	0xC2F4, 0xE702,
-	0xC2F6, 0x031D,
-	0xC2F8, 0xB7C6,
-	0xC2FA, 0x0224,
-	0xC2FC, 0xB787,
-	0xC2FE, 0x0324,
-	0xC300, 0x9386,
-	0xC302, 0x8634,
-	0xC304, 0x37A7,
-	0xC306, 0x0124,
-	0xC308, 0x9387,
-	0xC30A, 0x07FF,
-	0xC30C, 0x1307,
-	0xC30E, 0x0753,
-	0xC310, 0x958F,
-	0xC312, 0x232C,
-	0xC314, 0xD7B4,
-	0xC316, 0x232E,
-	0xC318, 0xF7B4,
-	0xC31A, 0x9720,
-	0xC31C, 0x01FC,
-	0xC31E, 0xE780,
-	0xC320, 0x6016,
-	0xC322, 0x11C5,
-	0xC324, 0xEFE0,
-	0xC326, 0x0F8A,
-	0xC328, 0xEFF0,
-	0xC32A, 0x4FFA,
-	0xC32C, 0x953F,
-	0xC32E, 0x1733,
-	0xC330, 0x02FC,
-	0xC332, 0x6700,
-	0xC334, 0x631B,
-	0xC336, 0x0000,
-	0xC338, 0x9410,
-	0xC33A, 0xE538,
-	0xC33C, 0x0000,
-	0xC33E, 0x0000,
-	0xC340, 0xBEFF,
-	0xC342, 0x0F00,
-	0xC344, 0x0000,
-	0xC346, 0x0000,
-	0xFCFC, 0x2000,
-	0x2366, 0x001C,
-	0x2368, 0x001C,
-	0x238E, 0x3F28,
-	0x2398, 0x5037,
-	0x24B8, 0x0101,
-	0x66E4, 0x1E8D,
-	0x66E6, 0x0000,
-	0x6874, 0x0000,
-	0x6876, 0x0000,
-	0x6878, 0x0000,
-	0x687A, 0x0000,
-	0x6884, 0x0100,
-	0x6886, 0x0100,
-	0x6888, 0x0100,
-	0x688A, 0x0100,
-	0x793E, 0x0100,
-	0x7940, 0x7017,
-	0x795C, 0x0400,
-	0x795E, 0x0400,
-	0x7960, 0x0800,
-	0x7962, 0x1000,
-	0x7964, 0x0800,
-	0x7966, 0x1000,
-	0x7968, 0x0800,
-	0x796A, 0x0800,
-	0x796C, 0x0800,
-	0x796E, 0x0800,
-	0x7972, 0x0400,
-	0x7974, 0x0400,
-	0x7976, 0x0800,
-	0x7978, 0x1000,
-	0x797A, 0x0800,
-	0x797C, 0x1000,
-	0x797E, 0x0800,
-	0x7980, 0x0800,
-	0x7982, 0x0800,
-	0x7984, 0x0800,
-	0xB3AC, 0x4000,
-	0xB3B4, 0x2000,
-	0xB3B8, 0x1000,
-	0xB3F8, 0x8000,
-	0xB400, 0x4000,
-	0xB404, 0x2000,
-	0xBF70, 0x3A46,
-	0xBF7C, 0x0800,
-	0xC4A8, 0x0000,
-	0xC4F8, 0x00A8,
-	0xC4FA, 0x0000,
-	0xD3DA, 0x0D00,
-	0xD3E0, 0x0D00,
-	0xD3E2, 0x0D00,
-	0xD3E4, 0x0D00,
-	0xD3E6, 0x0D00,
-	0xD3EA, 0x0D00,
-	0xD3F4, 0x301C,
-	0xD3F8, 0x301C,
-	0xDD6C, 0xB47E,
-	0xDD6E, 0xB67E,
-	0xDE34, 0x0000,
-	0xDE36, 0x9231,
-	0xEC42, 0x0100,
-	0xEC44, 0x0100,
-	0xFCFC, 0x2001,
-	0x2542, 0x2020,
-	0x2544, 0x2018,
-	0x2554, 0x0000,
-	0x2556, 0x0000,
-	0x256E, 0x0000,
-	0x2936, 0x4400,
-	0x2A14, 0x0002,
-	0x2A16, 0xDF03,
-	0x2A18, 0x0002,
-	0x2A1A, 0x0002,
-	0x3252, 0x8C00,
-	0x3254, 0x8C00,
-	0x3256, 0x8C00,
-	0x3258, 0x8700,
-	0x325A, 0x8200,
-	0x3E1C, 0x0200,
-	0x3E1E, 0x2000,
-	0x5ACC, 0x6505,
-	0xFCFC, 0x4000,
-	0x1858, 0x123F,
-	0xFCFC, 0x2001,
-	0x3EB8, 0x00FF,
-	0x3ECC, 0xFE03,
-	0x3F12, 0x9001,
-	0x33E0, 0x1E00,
-	0x33E2, 0x1E00,
-	0x33E4, 0x1E00,
-	0x33E6, 0x1E00,
-	0x33E8, 0x1E00,
-	0x33EA, 0x1E00,
-	0x3440, 0x0500,
-	0x3442, 0x0500,
-	0x3444, 0x0500,
-	0x3446, 0x0500,
-	0x3448, 0x0500,
-	0x344A, 0x0500,
-	0x3450, 0x0A00,
-	0x3452, 0x0A00,
-	0x3454, 0x0A00,
-	0x3456, 0x0A00,
-	0x3458, 0x0A00,
-	0x345A, 0x0A00,
-	0x34E0, 0x1400,
-	0x34E2, 0x1400,
-	0x34E4, 0x1400,
-	0x34E6, 0x1400,
-	0x34E8, 0x1400,
-	0x34EA, 0x1400,
-	0x3500, 0x1400,
-	0x3502, 0x1400,
-	0x3504, 0x1400,
-	0x3506, 0x1400,
-	0x3508, 0x1400,
-	0x350A, 0x1400,
-	0x3520, 0x1400,
-	0x3522, 0x1400,
-	0x3524, 0x1400,
-	0x3526, 0x1400,
-	0x3528, 0x1400,
-	0x352A, 0x1400,
-	0x3580, 0x2300,
-	0x3582, 0x2300,
-	0x3584, 0x2300,
-	0x3586, 0x2300,
-	0x3588, 0x2300,
-	0x358A, 0x2300,
-	0x35A0, 0x1900,
-	0x35A2, 0x1900,
-	0x35A4, 0x1900,
-	0x35A6, 0x1900,
-	0x35A8, 0x1900,
-	0x35AA, 0x1900,
-	0x35D0, 0x1E00,
-	0x35D2, 0x1E00,
-	0x35D4, 0x1E00,
-	0x35D6, 0x1E00,
-	0x35D8, 0x1E00,
-	0x35DA, 0x1E00,
-	0x35E0, 0x1E00,
-	0x35E2, 0x1E00,
-	0x35E4, 0x1E00,
-	0x35E6, 0x1E00,
-	0x35E8, 0x1E00,
-	0x35EA, 0x1E00,
-	0x35F0, 0x1E00,
-	0x35F2, 0x1E00,
-	0x35F4, 0x1E00,
-	0x35F6, 0x1E00,
-	0x35F8, 0x1E00,
-	0x35FA, 0x1E00,
-	0x3600, 0x1E00,
-	0x3602, 0x1E00,
-	0x3604, 0x1E00,
-	0x3606, 0x1E00,
-	0x3608, 0x1E00,
-	0x360A, 0x1E00,
-	0x3610, 0x1E00,
-	0x3612, 0x1E00,
-	0x3614, 0x1E00,
-	0x3616, 0x1E00,
-	0x3618, 0x1E00,
-	0x361A, 0x1E00,
-	0x3620, 0x0000,
-	0x3622, 0x0000,
-	0x3624, 0x0000,
-	0x3626, 0x0000,
-	0x3628, 0x0000,
-	0x362A, 0x0000,
-	0x3630, 0x0A00,
-	0x3632, 0x0A00,
-	0x3634, 0x0A00,
-	0x3636, 0x0A00,
-	0x3638, 0x0A00,
-	0x363A, 0x0A00,
-	0x3650, 0x1E00,
-	0x3652, 0x1E00,
-	0x3654, 0x1E00,
-	0x3656, 0x1E00,
-	0x3658, 0x1E00,
-	0x365A, 0x1E00,
-	0x3660, 0x1E00,
-	0x3662, 0x1E00,
-	0x3664, 0x1E00,
-	0x3666, 0x1E00,
-	0x3668, 0x1E00,
-	0x366A, 0x1E00,
-	0x36A0, 0x6400,
-	0x36A2, 0x6400,
-	0x36A4, 0x6400,
-	0x36A6, 0x6400,
-	0x36A8, 0x6400,
-	0x36AA, 0x6400,
-	0x36C0, 0x8C00,
-	0x36C2, 0x8C00,
-	0x36C4, 0x8C00,
-	0x36C6, 0x8C00,
-	0x36C8, 0x8C00,
-	0x36CA, 0x8C00,
-	0x36E0, 0x6400,
-	0x36E2, 0x6400,
-	0x36E4, 0x6400,
-	0x36E6, 0x6400,
-	0x36E8, 0x6400,
-	0x36EA, 0x6400,
-	0x36F0, 0x3200,
-	0x36F2, 0x3200,
-	0x36F4, 0x3200,
-	0x36F6, 0x3200,
-	0x36F8, 0x3200,
-	0x36FA, 0x3200,
-	0x3700, 0x3200,
-	0x3702, 0x3200,
-	0x3704, 0x3200,
-	0x3706, 0x3200,
-	0x3708, 0x3200,
-	0x370A, 0x3200,
-	0x3720, 0x3200,
-	0x3722, 0x3200,
-	0x3724, 0x3200,
-	0x3726, 0x3200,
-	0x3728, 0x3200,
-	0x372A, 0x3200,
-	0x3730, 0x3200,
-	0x3732, 0x3200,
-	0x3734, 0x3200,
-	0x3736, 0x3200,
-	0x3738, 0x3200,
-	0x373A, 0x3200,
-	0x3790, 0x3200,
-	0x3792, 0x3200,
-	0x3794, 0x3200,
-	0x3796, 0x3200,
-	0x3798, 0x3200,
-	0x379A, 0x3200,
-	0x37A0, 0x5000,
-	0x37A2, 0x5000,
-	0x37A4, 0x5000,
-	0x37A6, 0x5000,
-	0x37A8, 0x5000,
-	0x37AA, 0x5000,
-	0x37B0, 0x6400,
-	0x37B2, 0x6400,
-	0x37B4, 0x6400,
-	0x37B6, 0x6400,
-	0x37B8, 0x6400,
-	0x37BA, 0x6400,
-	0x37C0, 0x5000,
-	0x37C2, 0x5000,
-	0x37C4, 0x5000,
-	0x37C6, 0x5000,
-	0x37C8, 0x5000,
-	0x37CA, 0x5000,
-	0x37D0, 0x3200,
-	0x37D2, 0x3200,
-	0x37D4, 0x3200,
-	0x37D6, 0x3200,
-	0x37D8, 0x3200,
-	0x37DA, 0x3200,
-	0x37E0, 0x1E00,
-	0x37E2, 0x1E00,
-	0x37E4, 0x1E00,
-	0x37E6, 0x1E00,
-	0x37E8, 0x1E00,
-	0x37EA, 0x1E00,
-	0x37F0, 0x1E00,
-	0x37F2, 0x1E00,
-	0x37F4, 0x1E00,
-	0x37F6, 0x1E00,
-	0x37F8, 0x1E00,
-	0x37FA, 0x1E00,
-	0x3800, 0x1E00,
-	0x3802, 0x1E00,
-	0x3804, 0x1E00,
-	0x3806, 0x1E00,
-	0x3808, 0x1E00,
-	0x380A, 0x1E00,
-	0x3810, 0x1E00,
-	0x3812, 0x1E00,
-	0x3814, 0x1E00,
-	0x3816, 0x1E00,
-	0x3818, 0x1E00,
-	0x381A, 0x1E00,
-	0x3820, 0x1E00,
-	0x3822, 0x1E00,
-	0x3824, 0x1E00,
-	0x3826, 0x1E00,
-	0x3828, 0x1E00,
-	0x382A, 0x1E00,
-	0x3870, 0x3200,
-	0x3872, 0x3200,
-	0x3874, 0x3200,
-	0x3876, 0x3200,
-	0x3878, 0x3200,
-	0x387A, 0x3200,
-	0x3880, 0x3200,
-	0x3882, 0x3200,
-	0x3884, 0x3200,
-	0x3886, 0x3200,
-	0x3888, 0x3200,
-	0x388A, 0x3200,
-	0x3890, 0x3200,
-	0x3892, 0x3200,
-	0x3894, 0x3200,
-	0x3896, 0x3200,
-	0x3898, 0x3200,
-	0x389A, 0x3200,
-	0x38A0, 0x3200,
-	0x38A2, 0x3200,
-	0x38A4, 0x3200,
-	0x38A6, 0x3200,
-	0x38A8, 0x3200,
-	0x38AA, 0x3200,
-	0x38B0, 0x3200,
-	0x38B2, 0x3200,
-	0x38B4, 0x3200,
-	0x38B6, 0x3200,
-	0x38B8, 0x3200,
-	0x38BA, 0x3200,
-	0x320A, 0xFF03,
-	0x320C, 0x0700,
-	0x320E, 0xFF03,
-	0x3210, 0x0700,
-	0x321E, 0x0000,
-	0x31D4, 0x00FF,
-	0x321A, 0x0406,
-	0x3234, 0x0120,
-	0x3236, 0x1600,
-	0x3238, 0x0A14,
-	0x323A, 0x2A2A,
-	0x323C, 0x010F,
-	0x323E, 0x0419,
-	0x3240, 0x143A,
-	0x3242, 0x0A4B,
-	0x3244, 0x0101,
-	0x3246, 0x0101,
-	0x3248, 0x0010,
-	0x3252, 0xC800,
-	0x3254, 0xC400,
-	0x3256, 0xC200,
-	0x3258, 0xBE00,
-	0x325A, 0xBC00,
-	0x3266, 0x0100,
-	0x3268, 0x0200,
-	0x326A, 0x2A00,
-	0x326C, 0x0000,
-	0x326E, 0x3F00,
-	0x3270, 0x0A00,
-	0x3272, 0x1900,
-	0x3274, 0x0C00,
-	0x3276, 0x2000,
-	0x3278, 0x2300,
-	0x327A, 0x2100,
-	0x327C, 0x3000,
-	0x327E, 0x1100,
-	0x3280, 0x0C00,
-	0x3282, 0x2000,
-	0x3284, 0x2300,
-	0x3286, 0x2100,
-	0x3288, 0x3000,
-	0x328A, 0x1100,
-	0x328C, 0x0F00,
-	0x328E, 0x1900,
-	0x3290, 0x0A00,
-	0x3292, 0x0B00,
-	0x3296, 0x0800,
-	0x3298, 0x0F00,
-	0x329A, 0x1900,
-	0x329C, 0x0A00,
-	0x329E, 0x0B00,
-	0x32A0, 0x0000,
-	0x32A2, 0x0800,
-	0x32A4, 0x0F00,
-	0x32A6, 0x1900,
-	0x32A8, 0x0A00,
-	0x32AA, 0x0B00,
-	0x32AC, 0x0000,
-	0x32AE, 0x0800,
-	0x3330, 0x0108,
-	0x3334, 0x0100,
-	0x3336, 0x0000,
-	0xFCFC, 0x4000,
-	0xFCFC, 0x2000,
-	0x68D8, 0x0100,
-	0xFCFC, 0x2002,
-	0xBC90, 0x0100,
-	0xFCFC, 0x4000,
-	0x0E04, 0x1C03,
-	0x0E10, 0x0100,
-	0x0E12, 0x00A0,
-	0x0E14, 0x0C84,
-	0x0E16, 0x002B,
-	0x0E18, 0x0000,
-	0x0E1A, 0x3000,
-	0x0E1C, 0x0100,
-	0x0E1E, 0x00A0,
-	0x0E20, 0x0C84,
-	0x0E22, 0x012B,
-	0x0E24, 0x0100,
-	0x0E26, 0x3000,
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0xFCFC, 0x2000,
-	0x3D44, 0x0000,
-	0x3D88, 0xFCFC,
-	0x3D8A, 0xFEFF,
-	0x3D8C, 0xFCFC,
-	0x3D8E, 0xFEFF,
-	0x3D90, 0xFCFC,
-	0x3D92, 0xFEFF,
-	0x3D94, 0xFCFC,
-	0x3D96, 0xFEFF,
-	0x3FE0, 0x0324,
-	0x3FE2, 0x0080,
-	0x3FE4, 0x0000,
-	0x3FE6, 0x0000,
-	0x4238, 0x0324,
-	0x423A, 0x0080,
-	0x423C, 0x0324,
-	0x423E, 0xAC86,
-	0xFCFC, 0x2003,
-	0x8000, 0xFFFE,
-	0x8002, 0x2400,
-	0x8004, 0xFFFD,
-	0x8006, 0x22C2,
-	0x8008, 0x0006,
-	0x800A, 0x22C4,
-	0x800C, 0x1FFF,
-	0x800E, 0x22EC,
-	0x8010, 0x001F,
-	0x8012, 0x2306,
-	0x8014, 0x3FFF,
-	0x8016, 0x2314,
-	0x8018, 0x00FF,
-	0x801A, 0x2354,
-	0x801C, 0x0003,
-	0x801E, 0x23F0,
-	0x8020, 0x0100,
-	0x8022, 0x68DE,
-	0x8024, 0x0000,
-	0x8026, 0x703C,
-	0x8028, 0x0101,
-	0x802A, 0x703E,
-	0x802C, 0x0001,
-	0x802E, 0x7046,
-	0x8030, 0x027F,
-	0x8032, 0x7048,
-	0x8034, 0x021F,
-	0x8036, 0x704A,
-	0x8038, 0x0A00,
-	0x803A, 0x7058,
-	0x803C, 0x0280,
-	0x803E, 0x705A,
-	0x8040, 0x0220,
-	0x8042, 0x705C,
-	0x8044, 0x0A01,
-	0x8046, 0x7806,
-	0x8048, 0x0100,
-	0x804A, 0x7808,
-	0x804C, 0x0824,
-	0x804E, 0x78C0,
-	0x8050, 0x0101,
-	0x8052, 0x795A,
-	0x8054, 0x0020,
-	0x8056, 0x7970,
-	0x8058, 0x0020,
-	0x805A, 0x7994,
-	0x805C, 0x2020,
-	0x805E, 0x7996,
-	0x8060, 0x0101,
-	0x8062, 0x799A,
-	0x8064, 0x0000,
-	0x8066, 0x7BDA,
-	0x8068, 0x004C,
-	0x806A, 0x7EE6,
-	0x806C, 0x002C,
-	0x806E, 0x7EF2,
-	0x8070, 0x002C,
-	0x8072, 0x7EFE,
-	0x8074, 0x0064,
-	0x8076, 0x7F0A,
-	0x8078, 0x0058,
-	0x807A, 0x7F0E,
-	0x807C, 0x0058,
-	0x807E, 0x82A2,
-	0x8080, 0x0014,
-	0x8082, 0x82BA,
-	0x8084, 0x0033,
-	0x8086, 0x8CCE,
-	0x8088, 0x0096,
-	0x808A, 0x8CD0,
-	0x808C, 0x0096,
-	0x808E, 0x8CD2,
-	0x8090, 0x00BE,
-	0x8092, 0x8CD6,
-	0x8094, 0x0096,
-	0x8096, 0x8D0E,
-	0x8098, 0x0000,
-	0x809A, 0x9032,
-	0x809C, 0x0000,
-	0x809E, 0x903E,
-	0x80A0, 0x0000,
-	0x80A2, 0xB176,
-	0x80A4, 0x0206,
-	0x80A6, 0xB178,
-	0x80A8, 0x0000,
-	0x80AA, 0xB20C,
-	0x80AC, 0x002E,
-	0x80AE, 0xB21A,
-	0x80B0, 0x0204,
-	0x80B2, 0xB23C,
-	0x80B4, 0x6060,
-	0x80B6, 0xB242,
-	0x80B8, 0x6060,
-	0x80BA, 0xB266,
-	0x80BC, 0x04C0,
-	0x80BE, 0xB268,
-	0x80C0, 0xF380,
-	0x80C2, 0xB270,
-	0x80C4, 0x0887,
-	0x80C6, 0xB322,
-	0x80C8, 0x0101,
-	0x80CA, 0xB324,
-	0x80CC, 0x0001,
-	0x80CE, 0xB330,
-	0x80D0, 0x2828,
-	0x80D2, 0xB34A,
-	0x80D4, 0x2828,
-	0x80D6, 0xB360,
-	0x80D8, 0x2828,
-	0x80DA, 0xB378,
-	0x80DC, 0x0001,
-	0x80DE, 0xBF16,
-	0x80E0, 0xAA0B,
-	0x80E2, 0xBF30,
-	0x80E4, 0x0000,
-	0x80E6, 0xBF78,
-	0x80E8, 0x3353,
-	0x80EA, 0xC4D8,
-	0x80EC, 0x0020,
-	0x80EE, 0xC4E0,
-	0x80F0, 0x0001,
-	0x80F2, 0xC4E2,
-	0x80F4, 0x0000,
-	0x80F6, 0xC4F6,
-	0x80F8, 0x0000,
-	0x80FA, 0xC53C,
-	0x80FC, 0x0005,
-	0x80FE, 0xC53E,
-	0x8100, 0x0000,
-	0x8102, 0xC544,
-	0x8104, 0x0500,
-	0x8106, 0xC554,
-	0x8108, 0x1000,
-	0x810A, 0xC556,
-	0x810C, 0x0000,
-	0x810E, 0xD1F6,
-	0x8110, 0x003A,
-	0x8112, 0xD20C,
-	0x8114, 0x0809,
-	0x8116, 0xD27A,
-	0x8118, 0x0005,
-	0x811A, 0xD314,
-	0x811C, 0x0220,
-	0x811E, 0xD326,
-	0x8120, 0x1001,
-	0x8122, 0xD3EC,
-	0x8124, 0x1CB0,
-	0x8126, 0xD3F0,
-	0x8128, 0x1CB0,
-	0x812A, 0xD410,
-	0x812C, 0x0248,
-	0x812E, 0xD412,
-	0x8130, 0x04D2,
-	0x8132, 0xD426,
-	0x8134, 0x04D2,
-	0x8136, 0xD428,
-	0x8138, 0x0AEA,
-	0x813A, 0xD43C,
-	0x813C, 0x4001,
-	0x813E, 0xD43E,
-	0x8140, 0x4001,
-	0x8142, 0xD49C,
-	0x8144, 0x0021,
-	0x8146, 0xD4A8,
-	0x8148, 0x0001,
-	0x814A, 0xD4AC,
-	0x814C, 0x0001,
-	0x814E, 0xD4B0,
-	0x8150, 0x0386,
-	0x8152, 0xD4B4,
-	0x8154, 0x0001,
-	0x8156, 0xD4B8,
-	0x8158, 0x0014,
-	0x815A, 0xD4BC,
-	0x815C, 0x0037,
-	0x815E, 0xD4C0,
-	0x8160, 0x0014,
-	0x8162, 0xD4C4,
-	0x8164, 0x0000,
-	0x8166, 0xD4C8,
-	0x8168, 0x0001,
-	0x816A, 0xD4CC,
-	0x816C, 0x0000,
-	0x816E, 0xD4D0,
-	0x8170, 0x000A,
-	0x8172, 0xD4D2,
-	0x8174, 0x0000,
-	0x8176, 0xD4D6,
-	0x8178, 0x001A,
-	0x817A, 0xD4DA,
-	0x817C, 0x0000,
-	0x817E, 0xD4DE,
-	0x8180, 0x0001,
-	0x8182, 0xD4E2,
-	0x8184, 0x0000,
-	0x8186, 0xD4E6,
-	0x8188, 0x0001,
-	0x818A, 0xD4EA,
-	0x818C, 0x0001,
-	0x818E, 0xD4EC,
-	0x8190, 0x0000,
-	0x8192, 0xD4EE,
-	0x8194, 0x0000,
-	0x8196, 0xD4F8,
-	0x8198, 0x0000,
-	0x819A, 0xD4FA,
-	0x819C, 0x0000,
-	0x819E, 0xD554,
-	0x81A0, 0x00C4,
-	0x81A2, 0xD556,
-	0x81A4, 0x00C4,
-	0x81A6, 0xD560,
-	0x81A8, 0x0352,
-	0x81AA, 0xD562,
-	0x81AC, 0x0352,
-	0x81AE, 0xD5BC,
-	0x81B0, 0x0000,
-	0x81B2, 0xD5BE,
-	0x81B4, 0x0000,
-	0x81B6, 0xD5C8,
-	0x81B8, 0x0000,
-	0x81BA, 0xD5CA,
-	0x81BC, 0x0000,
-	0x81BE, 0xD624,
-	0x81C0, 0x0000,
-	0x81C2, 0xD62E,
-	0x81C4, 0x0000,
-	0x81C6, 0xD638,
-	0x81C8, 0x0000,
-	0x81CA, 0xD682,
-	0x81CC, 0x04C0,
-	0x81CE, 0xD684,
-	0x81D0, 0xF380,
-	0x81D2, 0xD6D4,
-	0x81D4, 0x0000,
-	0x81D6, 0xD704,
-	0x81D8, 0x7802,
-	0x81DA, 0xD718,
-	0x81DC, 0x0200,
-	0x81DE, 0xD856,
-	0x81E0, 0x0705,
-	0x81E2, 0xD896,
-	0x81E4, 0x0000,
-	0x81E6, 0xD8A2,
-	0x81E8, 0x0001,
-	0x81EA, 0xDC8C,
-	0x81EC, 0x0B3F,
-	0x81EE, 0xDC94,
-	0x81F0, 0x0301,
-	0x81F2, 0xDD70,
-	0x81F4, 0x0000,
-	0x81F6, 0xDE38,
-	0x81F8, 0x0000,
-	0x81FA, 0xE980,
-	0x81FC, 0x049E,
-	0x81FE, 0xEF80,
-	0x8200, 0x0000,
-	0x8202, 0xF014,
-	0x8204, 0x0000,
-	0x8206, 0xF09A,
-	0x8208, 0xFF00,
-	0x820A, 0xF0AA,
-	0x820C, 0xFFFF,
-	0x820E, 0xF0AC,
-	0x8210, 0xFFFF,
-	0x8212, 0xF288,
-	0x8214, 0x0000,
-	0x8216, 0xF2E0,
-	0x8218, 0x0000,
-	0x821A, 0xF2EA,
-	0x821C, 0x0040,
-	0x821E, 0xF370,
-	0x8220, 0x0302,
-	0x8222, 0xF372,
-	0x8224, 0x0000,
-	0x8226, 0xF3E4,
-	0x8228, 0x0103,
-	0x822A, 0xF3F4,
-	0x822C, 0x00C8,
-	0x822E, 0xF3F6,
-	0x8230, 0x10D6,
-	0x8232, 0xFFFE,
-	0x8234, 0x2401,
-	0x8236, 0xFFFD,
-	0x8238, 0x195E,
-	0x823A, 0x0001,
-	0x823C, 0x1966,
-	0x823E, 0x0000,
-	0x8240, 0x1DF2,
-	0x8242, 0x0000,
-	0x8244, 0x1DF6,
-	0x8246, 0x0000,
-	0x8248, 0x1DFA,
-	0x824A, 0x0000,
-	0x824C, 0x1DFE,
-	0x824E, 0x0000,
-	0x8250, 0x1E12,
-	0x8252, 0x0000,
-	0x8254, 0x1E16,
-	0x8256, 0x0000,
-	0x8258, 0x1E1A,
-	0x825A, 0x0000,
-	0x825C, 0x1E1E,
-	0x825E, 0x0000,
-	0x8260, 0x1E32,
-	0x8262, 0x0000,
-	0x8264, 0x1E36,
-	0x8266, 0x0000,
-	0x8268, 0x1E3A,
-	0x826A, 0x0000,
-	0x826C, 0x1E3E,
-	0x826E, 0x0000,
-	0x8270, 0x1E52,
-	0x8272, 0x0000,
-	0x8274, 0x1E56,
-	0x8276, 0x0000,
-	0x8278, 0x1E5A,
-	0x827A, 0x0000,
-	0x827C, 0x1E5E,
-	0x827E, 0x0000,
-	0x8280, 0x2540,
-	0x8282, 0x0000,
-	0x8284, 0x2920,
-	0x8286, 0x0001,
-	0x8288, 0x29A8,
-	0x828A, 0x0001,
-	0x828C, 0x29BA,
-	0x828E, 0x0020,
-	0x8290, 0x2A30,
-	0x8292, 0xFF01,
-	0x8294, 0x2A42,
-	0x8296, 0x0001,
-	0x8298, 0x2A44,
-	0x829A, 0x0739,
-	0x829C, 0x2A46,
-	0x829E, 0x0000,
-	0x82A0, 0x2A54,
-	0x82A2, 0x0000,
-	0x82A4, 0x2A56,
-	0x82A6, 0x0004,
-	0x82A8, 0x2BB2,
-	0x82AA, 0x0010,
-	0x82AC, 0x2D32,
-	0x82AE, 0x1000,
-	0x82B0, 0x3132,
-	0x82B2, 0x0002,
-	0x82B4, 0x31D0,
-	0x82B6, 0x0000,
-	0x82B8, 0x31F8,
-	0x82BA, 0x0000,
-	0x82BC, 0x31FA,
-	0x82BE, 0x0000,
-	0x82C0, 0x3C42,
-	0x82C2, 0x0000,
-	0x82C4, 0x3C46,
-	0x82C6, 0x05EB,
-	0x82C8, 0x3C52,
-	0x82CA, 0x0640,
-	0x82CC, 0x4270,
-	0x82CE, 0x0000,
-	0x82D0, 0x427C,
-	0x82D2, 0x0020,
-	0x82D4, 0x4280,
-	0x82D6, 0x0010,
-	0x82D8, 0x4290,
-	0x82DA, 0x0001,
-	0x82DC, 0x4292,
-	0x82DE, 0x0000,
-	0x82E0, 0x4362,
-	0x82E2, 0x0001,
-	0x82E4, 0x4364,
-	0x82E6, 0x0000,
-	0x82E8, 0x4366,
-	0x82EA, 0x0000,
-	0x82EC, 0x4370,
-	0x82EE, 0x0000,
-	0x82F0, 0x4396,
-	0x82F2, 0x000D,
-	0x82F4, 0x4398,
-	0x82F6, 0x000E,
-	0x82F8, 0x43AA,
-	0x82FA, 0x0000,
-	0x82FC, 0x43AC,
-	0x82FE, 0x0000,
-	0x8300, 0x43B4,
-	0x8302, 0x0000,
-	0x8304, 0x43B6,
-	0x8306, 0x0000,
-	0x8308, 0x43C6,
-	0x830A, 0x0A01,
-	0x830C, 0x44C6,
-	0x830E, 0x0000,
-	0x8310, 0x5A70,
-	0x8312, 0x0000,
-	0x8314, 0xFFFE,
-	0x8316, 0x2402,
-	0x8318, 0xFFFD,
-	0x831A, 0x849E,
-	0x831C, 0x0000,
-	0x831E, 0x84A0,
-	0x8320, 0x0000,
-	0x8322, 0x84A2,
-	0x8324, 0x0500,
-	0x8326, 0x84C4,
-	0x8328, 0x0001,
-	0x832A, 0xA570,
-	0x832C, 0x0000,
-	0x832E, 0xFFFE,
-	0x8330, 0x2400,
-	0x8332, 0xFFFD,
-	0x8334, 0x0086,
-	0x8336, 0x1400,
-	0x8338, 0x0112,
-	0x833A, 0x0A0A,
-	0x833C, 0x0114,
-	0x833E, 0x0103,
-	0x8340, 0x0118,
-	0x8342, 0x0400,
-	0x8344, 0x011A,
-	0x8346, 0x0100,
-	0x8348, 0x011C,
-	0x834A, 0x0001,
-	0x834C, 0x0136,
-	0x834E, 0x1800,
-	0x8350, 0x013E,
-	0x8352, 0x0000,
-	0x8354, 0x020A,
-	0x8356, 0x0000,
-	0x8358, 0x021E,
-	0x835A, 0x0000,
-	0x835C, 0x0228,
-	0x835E, 0x0001,
-	0x8360, 0x0270,
-	0x8362, 0x2B2B,
-	0x8364, 0x0272,
-	0x8366, 0x102B,
-	0x8368, 0x0274,
-	0x836A, 0x2B30,
-	0x836C, 0x0304,
-	0x836E, 0x0003,
-	0x8370, 0x0306,
-	0x8372, 0x00E6,
-	0x8374, 0x031A,
-	0x8376, 0x0003,
-	0x8378, 0x031C,
-	0x837A, 0x0028,
-	0x837C, 0x031E,
-	0x837E, 0x0002,
-	0x8380, 0x0400,
-	0x8382, 0x1010,
-	0x8384, 0x0408,
-	0x8386, 0x0100,
-	0x8388, 0x040A,
-	0x838A, 0x0100,
-	0x838C, 0x040C,
-	0x838E, 0x0000,
-	0x8390, 0x0702,
-	0x8392, 0x0000,
-	0x8394, 0x0704,
-	0x8396, 0x0000,
-	0x8398, 0x0720,
-	0x839A, 0x0001,
-	0x839C, 0x0722,
-	0x839E, 0x0008,
-	0x83A0, 0x0724,
-	0x83A2, 0x0000,
-	0x83A4, 0x0808,
-	0x83A6, 0x0102,
-	0x83A8, 0x0900,
-	0x83AA, 0x2222,
-	0x83AC, 0x0936,
-	0x83AE, 0x0000,
-	0x83B0, 0x0C40,
-	0x83B2, 0x0000,
-	0x83B4, 0x0E00,
-	0x83B6, 0x0302,
-	0x83B8, 0x0342,
-	0x83BA, 0x17B0,
-	0x83BC, 0x0000,
-	0x83BE, 0xFFFF,
-	0x83C0, 0x0008,
-	0x83C2, 0x2400,
-	0x83C4, 0x71D4,
-	0x83C6, 0x3F00,
-	0x83C8, 0x3D00,
-	0x83CA, 0x84F3,
-	0x83CC, 0x0040,
-	0x83CE, 0xFFFF,
-	0x83D0, 0x0010,
-	0x83D2, 0x2400,
-	0x83D4, 0x7274,
-	0x83D6, 0x0C00,
-	0x83D8, 0x0B00,
-	0x83DA, 0x36D2,
-	0x83DC, 0x0040,
-	0x83DE, 0x0000,
-	0x83E0, 0x0000,
-	0x83E2, 0x0000,
-	0x83E4, 0x0000,
-	0x83E6, 0xFFFF,
-	0x83E8, 0x0008,
-	0x83EA, 0x2400,
-	0x83EC, 0x7314,
-	0x83EE, 0x2E00,
-	0x83F0, 0x3000,
-	0x83F2, 0x9EFD,
-	0x83F4, 0x0040,
-	0x83F6, 0xFFFF,
-	0x83F8, 0x0008,
-	0x83FA, 0x2400,
-	0x83FC, 0x7A0E,
-	0x83FE, 0x0F00,
-	0x8400, 0x0F00,
-	0x8402, 0x0F00,
-	0x8404, 0x0F00,
-	0x8406, 0xFFFF,
-	0x8408, 0x0008,
-	0x840A, 0x2400,
-	0x840C, 0x7A6E,
-	0x840E, 0x1900,
-	0x8410, 0x1900,
-	0x8412, 0x1900,
-	0x8414, 0x1900,
-	0x8416, 0xFFFF,
-	0x8418, 0x0008,
-	0x841A, 0x2400,
-	0x841C, 0x7A86,
-	0x841E, 0x1900,
-	0x8420, 0x1900,
-	0x8422, 0x1900,
-	0x8424, 0x1900,
-	0x8426, 0xFFFF,
-	0x8428, 0x0008,
-	0x842A, 0x2400,
-	0x842C, 0x8C9E,
-	0x842E, 0x3500,
-	0x8430, 0x3500,
-	0x8432, 0x5000,
-	0x8434, 0x3500,
-	0x8436, 0xFFFF,
-	0x8438, 0x000A,
-	0x843A, 0x2400,
-	0x843C, 0xB21E,
-	0x843E, 0x0000,
-	0x8440, 0x0103,
-	0x8442, 0xC000,
-	0x8444, 0x0103,
-	0x8446, 0x0000,
-	0x8448, 0xFFFF,
-	0x844A, 0x000C,
-	0x844C, 0x2400,
-	0x844E, 0xBEDC,
-	0x8450, 0xC526,
-	0x8452, 0x903E,
-	0x8454, 0xC00F,
-	0x8456, 0x0008,
-	0x8458, 0x0C00,
-	0x845A, 0x8000,
-	0x845C, 0xFFFF,
-	0x845E, 0x000E,
-	0x8460, 0x2400,
-	0x8462, 0xDADA,
-	0x8464, 0x0001,
-	0x8466, 0x0000,
-	0x8468, 0x4000,
-	0x846A, 0xE001,
-	0x846C, 0x2003,
-	0x846E, 0x8007,
-	0x8470, 0x000B,
-	0x8472, 0xFFFF,
-	0x8474, 0x000C,
-	0x8476, 0x2400,
-	0x8478, 0xDB0C,
-	0x847A, 0x0000,
-	0x847C, 0x0040,
-	0x847E, 0x0000,
-	0x8480, 0x00B0,
-	0x8482, 0x00D0,
-	0x8484, 0x00F0,
-	0x8486, 0xFFFF,
-	0x8488, 0x000C,
-	0x848A, 0x2400,
-	0x848C, 0xDB3C,
-	0x848E, 0x12D2,
-	0x8490, 0x12D2,
-	0x8492, 0x12D2,
-	0x8494, 0x12D2,
-	0x8496, 0x12D2,
-	0x8498, 0x12D2,
-	0x849A, 0xFFFF,
-	0x849C, 0x000C,
-	0x849E, 0x2400,
-	0x84A0, 0xDB6C,
-	0x84A2, 0x0000,
-	0x84A4, 0x0000,
-	0x84A6, 0x0000,
-	0x84A8, 0x0000,
-	0x84AA, 0x0000,
-	0x84AC, 0x0000,
-	0x84AE, 0xFFFF,
-	0x84B0, 0x000C,
-	0x84B2, 0x2400,
-	0x84B4, 0xDB9C,
-	0x84B6, 0x0000,
-	0x84B8, 0x0000,
-	0x84BA, 0x0000,
-	0x84BC, 0x0000,
-	0x84BE, 0x0000,
-	0x84C0, 0x0000,
-	0x84C2, 0xFFFF,
-	0x84C4, 0x000C,
-	0x84C6, 0x2400,
-	0x84C8, 0xDBCC,
-	0x84CA, 0x0000,
-	0x84CC, 0x0000,
-	0x84CE, 0x0000,
-	0x84D0, 0x0000,
-	0x84D2, 0x0000,
-	0x84D4, 0x0000,
-	0x84D6, 0xFFFF,
-	0x84D8, 0x0012,
-	0x84DA, 0x2401,
-	0x84DC, 0x1C24,
-	0x84DE, 0x0002,
-	0x84E0, 0x8001,
-	0x84E2, 0x8004,
-	0x84E4, 0x2010,
-	0x84E6, 0x2010,
-	0x84E8, 0x0005,
-	0x84EA, 0x00A0,
-	0x84EC, 0x2810,
-	0x84EE, 0x2810,
-	0x84F0, 0xFFFF,
-	0x84F2, 0x0020,
-	0x84F4, 0x2401,
-	0x84F6, 0x1C4E,
-	0x84F8, 0x8001,
-	0x84FA, 0x8004,
-	0x84FC, 0x0010,
-	0x84FE, 0x0010,
-	0x8500, 0x0005,
-	0x8502, 0x00A0,
-	0x8504, 0x2810,
-	0x8506, 0x2810,
-	0x8508, 0x0000,
-	0x850A, 0x0000,
-	0x850C, 0x0000,
-	0x850E, 0x0000,
-	0x8510, 0x0000,
-	0x8512, 0x0000,
-	0x8514, 0x0000,
-	0x8516, 0x0000,
-	0x8518, 0xFFFF,
-	0x851A, 0x0020,
-	0x851C, 0x2401,
-	0x851E, 0x1C76,
-	0x8520, 0x8001,
-	0x8522, 0x8004,
-	0x8524, 0x2010,
-	0x8526, 0x2010,
-	0x8528, 0x0005,
-	0x852A, 0x00A0,
-	0x852C, 0x2810,
-	0x852E, 0x2810,
-	0x8530, 0x0000,
-	0x8532, 0x0000,
-	0x8534, 0x0000,
-	0x8536, 0x0000,
-	0x8538, 0x0000,
-	0x853A, 0x0000,
-	0x853C, 0x0000,
-	0x853E, 0x0000,
-	0x8540, 0xFFFF,
-	0x8542, 0x0010,
-	0x8544, 0x2401,
-	0x8546, 0x1C9E,
-	0x8548, 0x8001,
-	0x854A, 0x8004,
-	0x854C, 0x2010,
-	0x854E, 0x2010,
-	0x8550, 0x0005,
-	0x8552, 0x00A0,
-	0x8554, 0x2810,
-	0x8556, 0x2810,
-	0x8558, 0xFFFF,
-	0x855A, 0x0010,
-	0x855C, 0x2401,
-	0x855E, 0x1CC6,
-	0x8560, 0x8001,
-	0x8562, 0x8004,
-	0x8564, 0x2010,
-	0x8566, 0x2010,
-	0x8568, 0x0005,
-	0x856A, 0x00A0,
-	0x856C, 0x2810,
-	0x856E, 0x2810,
-	0x8570, 0xFFFF,
-	0x8572, 0x0020,
-	0x8574, 0x2401,
-	0x8576, 0x1CEE,
-	0x8578, 0x8001,
-	0x857A, 0x8004,
-	0x857C, 0x0010,
-	0x857E, 0x0010,
-	0x8580, 0x0005,
-	0x8582, 0x00A0,
-	0x8584, 0x2810,
-	0x8586, 0x2810,
-	0x8588, 0x0000,
-	0x858A, 0x0000,
-	0x858C, 0x0000,
-	0x858E, 0x0000,
-	0x8590, 0x0000,
-	0x8592, 0x0000,
-	0x8594, 0x0000,
-	0x8596, 0x0000,
-	0x8598, 0xFFFF,
-	0x859A, 0x0020,
-	0x859C, 0x2401,
-	0x859E, 0x1D16,
-	0x85A0, 0x8001,
-	0x85A2, 0x8004,
-	0x85A4, 0x2010,
-	0x85A6, 0x2010,
-	0x85A8, 0x0005,
-	0x85AA, 0x00A0,
-	0x85AC, 0x2810,
-	0x85AE, 0x2810,
-	0x85B0, 0x0000,
-	0x85B2, 0x0000,
-	0x85B4, 0x0000,
-	0x85B6, 0x0000,
-	0x85B8, 0x0000,
-	0x85BA, 0x0000,
-	0x85BC, 0x0000,
-	0x85BE, 0x0000,
-	0x85C0, 0xFFFF,
-	0x85C2, 0x0010,
-	0x85C4, 0x2401,
-	0x85C6, 0x1D3E,
-	0x85C8, 0x8001,
-	0x85CA, 0x8004,
-	0x85CC, 0x2010,
-	0x85CE, 0x2010,
-	0x85D0, 0x0005,
-	0x85D2, 0x00A0,
-	0x85D4, 0x2810,
-	0x85D6, 0x2810,
-	0x85D8, 0xFFFF,
-	0x85DA, 0x0010,
-	0x85DC, 0x2402,
-	0x85DE, 0xA548,
-	0x85E0, 0x0000,
-	0x85E2, 0x0000,
-	0x85E4, 0x0000,
-	0x85E6, 0x0000,
-	0x85E8, 0x0000,
-	0x85EA, 0x0000,
-	0x85EC, 0x0000,
-	0x85EE, 0x0000,
-	0x85F0, 0xFFFF,
-	0x85F2, 0x0010,
-	0x85F4, 0x2402,
-	0x85F6, 0xA55C,
-	0x85F8, 0x0000,
-	0x85FA, 0x0000,
-	0x85FC, 0x0000,
-	0x85FE, 0x0000,
-	0x8600, 0x0000,
-	0x8602, 0x0000,
-	0x8604, 0x0000,
-	0x8606, 0x0000,
-	0x8608, 0xFFFF,
-	0x860A, 0x002C,
-	0x860C, 0x2402,
-	0x860E, 0xA574,
-	0x8610, 0x0100,
-	0x8612, 0x4000,
-	0x8614, 0x8000,
-	0x8616, 0xA000,
-	0x8618, 0x4001,
-	0x861A, 0x8002,
-	0x861C, 0x0005,
-	0x861E, 0x000A,
-	0x8620, 0xA00F,
-	0x8622, 0x4011,
-	0x8624, 0x0E00,
-	0x8626, 0x2000,
-	0x8628, 0x2800,
-	0x862A, 0x1400,
-	0x862C, 0x2200,
-	0x862E, 0x2800,
-	0x8630, 0x2C00,
-	0x8632, 0x2E00,
-	0x8634, 0x3200,
-	0x8636, 0x3800,
-	0x8638, 0xA2FD,
-	0x863A, 0xFEFE,
-	0x863C, 0xFFFF,
-	0x863E, 0x0008,
-	0x8640, 0x2400,
-	0x8642, 0x0260,
-	0x8644, 0x0100,
-	0x8646, 0x0000,
-	0x8648, 0x0206,
-	0x864A, 0x0700,
-	0x864C, 0xFFFF,
-	0x864E, 0x0008,
-	0x8650, 0x2400,
-	0x8652, 0x030C,
-	0x8654, 0x0000,
-	0x8656, 0x0300,
-	0x8658, 0xBF00,
-	0x865A, 0x0000,
-	0x865C, 0xFFFF,
-	0x865E, 0x0010,
-	0x8660, 0x2400,
-	0x8662, 0x0344,
-	0x8664, 0x0000,
-	0x8666, 0x0003,
-	0x8668, 0x1F20,
-	0x866A, 0x1F15,
-	0x866C, 0x0010,
-	0x866E, 0x0009,
-	0x8670, 0x0800,
-	0x8672, 0x0800,
-	0x8674, 0xFFFF,
-	0x8676, 0x0008,
-	0x8678, 0x2400,
-	0x867A, 0x0380,
-	0x867C, 0x0200,
-	0x867E, 0x0200,
-	0x8680, 0x0200,
-	0x8682, 0x0200,
-	0x8684, 0xFFFF,
-	0x8686, 0x0008,
-	0x8688, 0x2400,
-	0x868A, 0x0728,
-	0x868C, 0x0000,
-	0x868E, 0x0000,
-	0x8690, 0x0000,
-	0x8692, 0x0000,
-	0x8694, 0xFFFF,
-	0x8696, 0x000C,
-	0x8698, 0x2400,
-	0x869A, 0x0B02,
-	0x869C, 0x0102,
-	0x869E, 0x0001,
-	0x86A0, 0x0101,
-	0x86A2, 0x0100,
-	0x86A4, 0x0101,
-	0x86A6, 0x0100,
-	0x86A8, 0x0000,
-	0x86AA, 0x0000,
-	0x86AC, 0xFFFE,
-	0x86AE, 0x2400,
-	0x86B0, 0xFFFD,
-	0x86B2, 0xD49C,
-	0x86B4, 0x0022,
-	0x86B6, 0xD4A8,
-	0x86B8, 0x0000,
-	0x86BA, 0xD4B0,
-	0x86BC, 0x0456,
-	0x86BE, 0xD4BC,
-	0x86C0, 0x0062,
-	0x86C2, 0xD4E2,
-	0x86C4, 0x0036,
-	0x86C6, 0xD556,
-	0x86C8, 0x00FA,
-	0x86CA, 0xD562,
-	0x86CC, 0x0388,
-	0x86CE, 0xF014,
-	0x86D0, 0x0007,
-	0x86D2, 0xFFFE,
-	0x86D4, 0x2401,
-	0x86D6, 0xFFFD,
-	0x86D8, 0x1DF2,
-	0x86DA, 0x0003,
-	0x86DC, 0x1DF6,
-	0x86DE, 0x0003,
-	0x86E0, 0x1DFA,
-	0x86E2, 0x0003,
-	0x86E4, 0x1DFE,
-	0x86E6, 0x0003,
-	0x86E8, 0x1E12,
-	0x86EA, 0x0003,
-	0x86EC, 0x1E16,
-	0x86EE, 0x0003,
-	0x86F0, 0x1E1A,
-	0x86F2, 0x0003,
-	0x86F4, 0x1E1E,
-	0x86F6, 0x0003,
-	0x86F8, 0x1E32,
-	0x86FA, 0x0003,
-	0x86FC, 0x1E36,
-	0x86FE, 0x0003,
-	0x8700, 0x1E3A,
-	0x8702, 0x0003,
-	0x8704, 0x1E3E,
-	0x8706, 0x0003,
-	0x8708, 0x1E52,
-	0x870A, 0x0003,
-	0x870C, 0x1E56,
-	0x870E, 0x0003,
-	0x8710, 0x1E5A,
-	0x8712, 0x0003,
-	0x8714, 0x1E5E,
-	0x8716, 0x0003,
-	0x8718, 0x2A44,
-	0x871A, 0x0952,
-	0x871C, 0xFFFE,
-	0x871E, 0x2400,
-	0x8720, 0xFFFD,
-	0x8722, 0x0260,
-	0x8724, 0x0100,
-	0x8726, 0x0264,
-	0x8728, 0x0600,
-	0x872A, 0x0E00,
-	0x872C, 0x0300,
-	0x872E, 0x0342,
-	0x8730, 0x12B0,
-	0x8732, 0x0000,
-	0x8734, 0x0000,
-	0x8736, 0x0000,
-	0xFCFC, 0x4000,
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_1.2e_0722.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_1.2e_0722.txt
deleted file mode 100755
index d306a37c..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_1.2e_0722.txt
+++ /dev/null
@@ -1,4059 +0,0 @@
-FCFC	4000
-0000	000C
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0101
-FCFC	2001
-3C60	0000
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	006C
-84C8	34B6
-84CA	0224
-84CC	B8AA
-84CE	0224
-84D0	B8AA
-84D2	0224
-84D4	B8AA
-84D6	0224
-84D8	B8AA
-84DA	0224
-84DC	B8AA
-84DE	0224
-A548	0046
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00DB
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	013C
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	F0AB
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	B0A5
-570A	0224
-570C	0453
-570E	0020
-5710	20A7
-5712	0224
-5714	C850
-5716	0220
-5718	2CAC
-571A	0224
-571C	2C88
-571E	0220
-5720	58AD
-5722	0224
-5724	7C82
-5726	0120
-5728	18B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	A8B4
-5732	0224
-5734	1081
-5736	0320
-5738	CCB5
-573A	0224
-FCFC	2002
-A5B0	1753
-A5B2	02FC
-A5B4	E702
-A5B6	03F1
-A5B8	B7E7
-A5BA	0124
-A5BC	9387
-A5BE	0787
-A5C0	83A4
-A5C2	870D
-A5C4	03A4
-A5C6	C70D
-A5C8	0146
-A5CA	A685
-A5CC	2285
-A5CE	9740
-A5D0	01FC
-A5D2	E780
-A5D4	6047
-A5D6	97B0
-A5D8	FEFB
-A5DA	E780
-A5DC	E0E2
-A5DE	0546
-A5E0	A685
-A5E2	2285
-A5E4	9740
-A5E6	01FC
-A5E8	E780
-A5EA	0046
-A5EC	37A7
-A5EE	0224
-A5F0	9307
-A5F2	8754
-A5F4	03C6
-A5F6	C702
-A5F8	8546
-A5FA	630B
-A5FC	D600
-A5FE	83C6
-A600	0700
-A602	0947
-A604	638E
-A606	E606
-A608	1753
-A60A	02FC
-A60C	6700
-A60E	C3ED
-A610	03D5
-A612	4705
-A614	05C9
-A616	83D8
-A618	2705
-A61A	B7E6
-A61C	0124
-A61E	83D5
-A620	665F
-A622	1307
-A624	8754
-A626	8146
-A628	2548
-A62A	0356
-A62C	E702
-A62E	0907
-A630	63EA
-A632	C50C
-A634	8506
-A636	E39A
-A638	06FF
-A63A	3707
-A63C	0040
-A63E	3A95
-A640	2310
-A642	1501
-A644	03D5
-A646	6705
-A648	5DD9
-A64A	83D8
-A64C	2705
-A64E	37E7
-A650	0124
-A652	8355
-A654	675F
-A656	BE86
-A658	0147
-A65A	2548
-A65C	03D6
-A65E	E602
-A660	8906
-A662	63E8
-A664	C50A
-A666	0507
-A668	E31A
-A66A	07FF
-A66C	3707
-A66E	0040
-A670	3A95
-A672	2310
-A674	1501
-A676	83C6
-A678	0700
-A67A	0947
-A67C	E396
-A67E	E6F8
-A680	03D5
-A682	8702
-A684	1DC5
-A686	83D8
-A688	6702
-A68A	37F7
-A68C	0124
-A68E	8355
-A690	A781
-A692	BE86
-A694	0147
-A696	2548
-A698	03D6
-A69A	2600
-A69C	8906
-A69E	63ED
-A6A0	C504
-A6A2	0507
-A6A4	E31A
-A6A6	07FF
-A6A8	3707
-A6AA	0040
-A6AC	3A95
-A6AE	2310
-A6B0	1501
-A6B2	03D5
-A6B4	A702
-A6B6	29D9
-A6B8	83D8
-A6BA	6702
-A6BC	37F7
-A6BE	0124
-A6C0	8355
-A6C2	A781
-A6C4	BE86
-A6C6	0147
-A6C8	2548
-A6CA	03D6
-A6CC	2600
-A6CE	8906
-A6D0	63EE
-A6D2	C500
-A6D4	0507
-A6D6	E31A
-A6D8	07FF
-A6DA	B707
-A6DC	0040
-A6DE	3E95
-A6E0	2310
-A6E2	1501
-A6E4	1753
-A6E6	02FC
-A6E8	6700
-A6EA	03E0
-A6EC	2107
-A6EE	0607
-A6F0	BA97
-A6F2	83D8
-A6F4	4700
-A6F6	D5B7
-A6F8	2107
-A6FA	0607
-A6FC	3E97
-A6FE	8358
-A700	4700
-A702	5DB7
-A704	1387
-A706	0602
-A708	0607
-A70A	3E97
-A70C	8358
-A70E	0700
-A710	2DB7
-A712	1307
-A714	0702
-A716	0607
-A718	3E97
-A71A	8358
-A71C	0700
-A71E	B9B7
-A720	1753
-A722	02FC
-A724	E702
-A726	83D7
-A728	3284
-A72A	B7E7
-A72C	0124
-A72E	032B
-A730	4600
-A732	832A
-A734	4609
-A736	032A
-A738	C604
-A73A	0348
-A73C	8600
-A73E	9387
-A740	0787
-A742	0346
-A744	8609
-A746	0347
-A748	0405
-A74A	03AC
-A74C	070E
-A74E	83AB
-A750	470E
-A752	3318
-A754	0B01
-A756	3317
-A758	EA00
-A75A	3396
-A75C	CA00
-A75E	2322
-A760	0401
-A762	78C4
-A764	AA84
-A766	2E89
-A768	232A
-A76A	C408
-A76C	E285
-A76E	5E85
-A770	0146
-A772	B689
-A774	9740
-A776	01FC
-A778	E780
-A77A	002D
-A77C	CE86
-A77E	2286
-A780	CA85
-A782	2685
-A784	97B0
-A786	FDFB
-A788	E780
-A78A	00B8
-A78C	0546
-A78E	E285
-A790	5E85
-A792	9740
-A794	01FC
-A796	E780
-A798	202B
-A79A	2322
-A79C	6401
-A79E	232A
-A7A0	5409
-A7A2	2326
-A7A4	4405
-A7A6	1753
-A7A8	02FC
-A7AA	6700
-A7AC	A3D2
-A7AE	0100
-A7B0	1753
-A7B2	02FC
-A7B4	E702
-A7B6	03D1
-A7B8	2A84
-A7BA	EFE0
-A7BC	AFB2
-A7BE	A147
-A7C0	6306
-A7C2	F400
-A7C4	1753
-A7C6	02FC
-A7C8	6700
-A7CA	03D2
-A7CC	9770
-A7CE	FFFB
-A7D0	E780
-A7D2	C014
-A7D4	39C5
-A7D6	B737
-A7D8	0124
-A7DA	83C7
-A7DC	271A
-A7DE	FDD3
-A7E0	3784
-A7E2	0040
-A7E4	8355
-A7E6	E4F3
-A7E8	0D45
-A7EA	93E5
-A7EC	0524
-A7EE	97D0
-A7F0	FFFB
-A7F2	E780
-A7F4	6013
-A7F6	8355
-A7F8	24F7
-A7FA	B7A7
-A7FC	0124
-A7FE	9387
-A800	0753
-A802	03D7
-A804	47B6
-A806	C205
-A808	C181
-A80A	1377
-A80C	F7DB
-A80E	93F5
-A810	F5DB
-A812	4145
-A814	2392
-A816	E7B6
-A818	97D0
-A81A	FFFB
-A81C	E780
-A81E	C010
-A820	55B7
-A822	9770
-A824	FFFB
-A826	E780
-A828	600C
-A82A	55D5
-A82C	9780
-A82E	FFFB
-A830	E780
-A832	4086
-A834	19C9
-A836	B797
-A838	0124
-A83A	9387
-A83C	07D7
-A83E	03C7
-A840	8703
-A842	83C7
-A844	2706
-A846	6306
-A848	F706
-A84A	9780
-A84C	FFFB
-A84E	E780
-A850	6084
-A852	51D1
-A854	B797
-A856	0124
-A858	9387
-A85A	07D7
-A85C	03C7
-A85E	C701
-A860	83C7
-A862	2706
-A864	E319
-A866	F7F6
-A868	B727
-A86A	0224
-A86C	0564
-A86E	9387
-A870	076B
-A872	A297
-A874	03C7
-A876	F780
-A878	8547
-A87A	6317
-A87C	F700
-A87E	B737
-A880	0124
-A882	83C7
-A884	57A5
-A886	B1C3
-A888	B787
-A88A	0040
-A88C	83D5
-A88E	E7F3
-A890	0D45
-A892	93E5
-A894	0501
-A896	97D0
-A898	FFFB
-A89A	E780
-A89C	E008
-A89E	B7A7
-A8A0	0124
-A8A2	9387
-A8A4	0753
-A8A6	03D7
-A8A8	47B6
-A8AA	3D9B
-A8AC	2392
-A8AE	E7B6
-A8B0	1DB7
-A8B2	B727
-A8B4	0224
-A8B6	0564
-A8B8	9387
-A8BA	076B
-A8BC	A297
-A8BE	03C7
-A8C0	F780
-A8C2	9147
-A8C4	E30D
-A8C6	F7FA
-A8C8	C1B7
-A8CA	B787
-A8CC	0040
-A8CE	83D5
-A8D0	E7F3
-A8D2	0D45
-A8D4	93E5
-A8D6	0504
-A8D8	97D0
-A8DA	FFFB
-A8DC	E780
-A8DE	C004
-A8E0	B797
-A8E2	0124
-A8E4	9387
-A8E6	0753
-A8E8	A297
-A8EA	03D7
-A8EC	47B6
-A8EE	1377
-A8F0	F7FB
-A8F2	2392
-A8F4	E7B6
-A8F6	C5B5
-A8F8	3571
-A8FA	22CF
-A8FC	26CD
-A8FE	7324
-A900	2034
-A902	F324
-A904	1034
-A906	7360
-A908	0430
-A90A	06CB
-A90C	16C9
-A90E	1AC7
-A910	1EC5
-A912	2AC3
-A914	2EC1
-A916	B2DE
-A918	B6DC
-A91A	BADA
-A91C	BED8
-A91E	C2D6
-A920	C6D4
-A922	F2D2
-A924	F6D0
-A926	FACE
-A928	FECC
-A92A	82E2
-A92C	86E0
-A92E	0AFE
-A930	0EFC
-A932	12FA
-A934	16F8
-A936	1AF6
-A938	1EF4
-A93A	2AF2
-A93C	2EF0
-A93E	32EE
-A940	36EC
-A942	3AEA
-A944	3EE8
-A946	42E6
-A948	46E4
-A94A	72E2
-A94C	76E0
-A94E	272E
-A950	E1FF
-A952	272C
-A954	F1FF
-A956	9770
-A958	FFFB
-A95A	E780
-A95C	20FC
-A95E	19C5
-A960	9770
-A962	FFFB
-A964	E780
-A966	80F8
-A968	631C
-A96A	0512
-A96C	9305
-A96E	0024
-A970	4145
-A972	97D0
-A974	FFFB
-A976	E780
-A978	2002
-A97A	8145
-A97C	9377
-A97E	1500
-A980	85C7
-A982	37D7
-A984	0124
-A986	B7A7
-A988	0124
-A98A	1307
-A98C	07C4
-A98E	9387
-A990	0753
-A992	0356
-A994	4707
-A996	83D6
-A998	A7B6
-A99A	0506
-A99C	93E6
-A99E	1600
-A9A0	231A
-A9A2	C706
-A9A4	2395
-A9A6	D7B6
-A9A8	9377
-A9AA	2500
-A9AC	85C7
-A9AE	37D7
-A9B0	0124
-A9B2	B7A7
-A9B4	0124
-A9B6	1307
-A9B8	07C4
-A9BA	9387
-A9BC	0753
-A9BE	0356
-A9C0	C70C
-A9C2	83D6
-A9C4	A7B6
-A9C6	0506
-A9C8	93E6
-A9CA	2600
-A9CC	2316
-A9CE	C70C
-A9D0	2395
-A9D2	D7B6
-A9D4	9377
-A9D6	0520
-A9D8	1375
-A9DA	0504
-A9DC	C5C3
-A9DE	B7D7
-A9E0	0124
-A9E2	9387
-A9E4	07C4
-A9E6	03D7
-A9E8	6708
-A9EA	0507
-A9EC	2393
-A9EE	E708
-A9F0	D1C5
-A9F2	37A7
-A9F4	0124
-A9F6	1307
-A9F8	0753
-A9FA	8356
-A9FC	A7B6
-A9FE	93E6
-AA00	0620
-AA02	2315
-AA04	D7B6
-AA06	11C9
-AA08	03D6
-AA0A	A708
-AA0C	0506
-AA0E	2395
-AA10	C708
-AA12	93E6
-AA14	0604
-AA16	2315
-AA18	D7B6
-AA1A	DA40
-AA1C	CA42
-AA1E	3A43
-AA20	AA43
-AA22	1A45
-AA24	8A45
-AA26	7656
-AA28	E656
-AA2A	5657
-AA2C	C657
-AA2E	3658
-AA30	A658
-AA32	165E
-AA34	865E
-AA36	764F
-AA38	E64F
-AA3A	1660
-AA3C	8660
-AA3E	7271
-AA40	E271
-AA42	5272
-AA44	C272
-AA46	3273
-AA48	A273
-AA4A	1275
-AA4C	8275
-AA4E	7266
-AA50	E266
-AA52	5267
-AA54	C267
-AA56	3268
-AA58	A268
-AA5A	126E
-AA5C	826E
-AA5E	072F
-AA60	C1FF
-AA62	872F
-AA64	81FF
-AA66	7370
-AA68	0430
-AA6A	7390
-AA6C	1434
-AA6E	7310
-AA70	2434
-AA72	7A44
-AA74	EA44
-AA76	0D61
-AA78	7300
-AA7A	2030
-AA7C	59DD
-AA7E	B7D7
-AA80	0124
-AA82	9387
-AA84	07C4
-AA86	03D7
-AA88	A708
-AA8A	0507
-AA8C	2395
-AA8E	E708
-AA90	C9D5
-AA92	37A7
-AA94	0124
-AA96	1307
-AA98	0753
-AA9A	8356
-AA9C	A7B6
-AA9E	95BF
-AAA0	B7A7
-AAA2	0124
-AAA4	83D5
-AAA6	8709
-AAA8	4145
-AAAA	97D0
-AAAC	FFFB
-AAAE	E780
-AAB0	A0EE
-AAB2	8545
-AAB4	E1B5
-AAB6	0100
-AAB8	8280
-AABA	0100
-AABC	1753
-AABE	02FC
-AAC0	E702
-AAC2	43A0
-AAC4	37E4
-AAC6	0124
-AAC8	1304
-AACA	044C
-AACC	8344
-AACE	E40A
-AAD0	8547
-AAD2	2307
-AAD4	F40A
-AAD6	97A0
-AAD8	FDFB
-AADA	E780
-AADC	E0EB
-AADE	2307
-AAE0	940A
-AAE2	1753
-AAE4	02FC
-AAE6	6700
-AAE8	23A0
-AAEA	0100
-AAEC	B7A7
-AAEE	0224
-AAF0	83C7
-AAF2	075A
-AAF4	0547
-AAF6	6383
-AAF8	E700
-AAFA	8280
-AAFC	1753
-AAFE	02FC
-AB00	E702
-AB02	A39A
-AB04	3794
-AB06	0124
-AB08	1304
-AB0A	0453
-AB0C	0347
-AB0E	041B
-AB10	4111
-AB12	6307
-AB14	F700
-AB16	4101
-AB18	1753
-AB1A	02FC
-AB1C	6700
-AB1E	239C
-AB20	8947
-AB22	E31A
-AB24	F5FE
-AB26	8347
-AB28	3441
-AB2A	ADC3
-AB2C	83A9
-AB2E	0500
-AB30	2EC6
-AB32	97C0
-AB34	01FC
-AB36	E780
-AB38	E0C0
-AB3A	AA84
-AB3C	9780
-AB3E	01FC
-AB40	E780
-AB42	40D0
-AB44	B245
-AB46	2A89
-AB48	9C41
-AB4A	63F3
-AB4C	9700
-AB4E	A687
-AB50	8851
-AB52	9CC1
-AB54	2EC6
-AB56	4A95
-AB58	97B0
-AB5A	00FC
-AB5C	E780
-AB5E	C0CD
-AB60	B245
-AB62	AA84
-AB64	E8C9
-AB66	3385
-AB68	2901
-AB6A	97B0
-AB6C	00FC
-AB6E	E780
-AB70	A0CC
-AB72	8567
-AB74	3E94
-AB76	8327
-AB78	C483
-AB7A	2695
-AB7C	B245
-AB7E	63F3
-AB80	A700
-AB82	AA87
-AB84	2322
-AB86	F498
-AB88	E8C5
-AB8A	71B7
-AB8C	0145
-AB8E	2EC6
-AB90	97B0
-AB92	01FC
-AB94	E780
-AB96	403E
-AB98	B245
-AB9A	AA89
-AB9C	51BF
-AB9E	0100
-ABA0	1753
-ABA2	02FC
-ABA4	E702
-ABA6	0392
-ABA8	2A84
-ABAA	EFE0
-ABAC	7F85
-ABAE	01E8
-ABB0	B7D7
-ABB2	0124
-ABB4	03A7
-ABB6	87C1
-ABB8	9147
-ABBA	6306
-ABBC	F700
-ABBE	1753
-ABC0	02FC
-ABC2	6700
-ABC4	6392
-ABC6	B7D7
-ABC8	0124
-ABCA	83C7
-ABCC	07FA
-ABCE	E5DB
-ABD0	B747
-ABD2	0124
-ABD4	83C7
-ABD6	27C4
-ABD8	FDF3
-ABDA	97E0
-ABDC	00FC
-ABDE	E780
-ABE0	60A0
-ABE2	B787
-ABE4	0224
-ABE6	0547
-ABE8	A380
-ABEA	E74E
-ABEC	C9BF
-ABEE	0100
-ABF0	1753
-ABF2	02FC
-ABF4	E702
-ABF6	038D
-ABF8	3784
-ABFA	0224
-ABFC	1304
-ABFE	C449
-AC00	8347
-AC02	5404
-AC04	99E7
-AC06	EFE0
-AC08	3F8B
-AC0A	1753
-AC0C	02FC
-AC0E	6700
-AC10	A38D
-AC12	97E0
-AC14	00FC
-AC16	E780
-AC18	E0B7
-AC1A	A302
-AC1C	0404
-AC1E	EFE0
-AC20	BF89
-AC22	1753
-AC24	02FC
-AC26	6700
-AC28	238C
-AC2A	0100
-AC2C	1753
-AC2E	02FC
-AC30	E702
-AC32	4389
-AC34	B7E7
-AC36	0124
-AC38	9387
-AC3A	0787
-AC3C	03A9
-AC3E	870E
-AC40	83A4
-AC42	C70E
-AC44	0146
-AC46	CA85
-AC48	2A84
-AC4A	2685
-AC4C	9740
-AC4E	01FC
-AC50	E780
-AC52	80DF
-AC54	2285
-AC56	97A0
-AC58	FFFB
-AC5A	E780
-AC5C	2047
-AC5E	0546
-AC60	CA85
-AC62	2685
-AC64	9740
-AC66	01FC
-AC68	E780
-AC6A	00DE
-AC6C	8547
-AC6E	6309
-AC70	F400
-AC72	9147
-AC74	6306
-AC76	F400
-AC78	1753
-AC7A	02FC
-AC7C	6700
-AC7E	C386
-AC80	9770
-AC82	FFFB
-AC84	E780
-AC86	80C9
-AC88	65F9
-AC8A	9770
-AC8C	FFFB
-AC8E	E780
-AC90	E0C5
-AC92	7DD1
-AC94	9770
-AC96	FFFB
-AC98	E780
-AC9A	C03F
-AC9C	19C9
-AC9E	B797
-ACA0	0124
-ACA2	9387
-ACA4	07D7
-ACA6	03C7
-ACA8	8703
-ACAA	83C7
-ACAC	2706
-ACAE	6306
-ACB0	F706
-ACB2	9770
-ACB4	FFFB
-ACB6	E780
-ACB8	E03D
-ACBA	5DDD
-ACBC	B797
-ACBE	0124
-ACC0	9387
-ACC2	07D7
-ACC4	03C7
-ACC6	C701
-ACC8	83C7
-ACCA	2706
-ACCC	E316
-ACCE	F7FA
-ACD0	B7B7
-ACD2	0224
-ACD4	83A7
-ACD6	0773
-ACD8	B706
-ACDA	0040
-ACDC	1386
-ACDE	4606
-ACE0	8965
-ACE2	3E96
-ACE4	1387
-ACE6	061F
-ACE8	9385
-ACEA	F5F1
-ACEC	2310
-ACEE	B600
-ACF0	3E97
-ACF2	7D56
-ACF4	2310
-ACF6	C700
-ACF8	37D6
-ACFA	0124
-ACFC	1306
-ACFE	06E7
-AD00	0357
-AD02	C605
-AD04	0356
-AD06	6606
-AD08	9386
-AD0A	861D
-AD0C	3297
-AD0E	4207
-AD10	B697
-AD12	4183
-AD14	2390
-AD16	E700
-AD18	85B7
-AD1A	B7B7
-AD1C	0224
-AD1E	83A7
-AD20	0773
-AD22	B706
-AD24	0040
-AD26	1386
-AD28	4606
-AD2A	8965
-AD2C	3E96
-AD2E	1387
-AD30	061F
-AD32	9385
-AD34	F5F1
-AD36	2310
-AD38	B600
-AD3A	3E97
-AD3C	7D56
-AD3E	2310
-AD40	C700
-AD42	37D6
-AD44	0124
-AD46	1306
-AD48	06E7
-AD4A	0357
-AD4C	0606
-AD4E	9386
-AD50	A61D
-AD52	0356
-AD54	6606
-AD56	5DBF
-AD58	1743
-AD5A	02FC
-AD5C	E702
-AD5E	8376
-AD60	B7D7
-AD62	0024
-AD64	83C7
-AD66	476D
-AD68	8544
-AD6A	6380
-AD6C	9714
-AD6E	B7E7
-AD70	0024
-AD72	03C4
-AD74	C784
-AD76	B7A7
-AD78	0124
-AD7A	83C7
-AD7C	6792
-AD7E	3334
-AD80	8000
-AD82	3304
-AD84	8040
-AD86	7998
-AD88	1304
-AD8A	6402
-AD8C	EDE7
-AD8E	B767
-AD90	0024
-AD92	9387
-AD94	0733
-AD96	03D7
-AD98	E75B
-AD9A	19C7
-AD9C	1347
-AD9E	F7FF
-ADA0	618F
-ADA2	1314
-ADA4	0701
-ADA6	4180
-ADA8	83D7
-ADAA	075C
-ADAC	0D45
-ADAE	5D8C
-ADB0	4204
-ADB2	4180
-ADB4	A285
-ADB6	97D0
-ADB8	FFFB
-ADBA	E780
-ADBC	20C5
-ADBE	9315
-ADC0	0501
-ADC2	C181
-ADC4	AA84
-ADC6	6309
-ADC8	B400
-ADCA	0565
-ADCC	A18D
-ADCE	2D05
-ADD0	97A0
-ADD2	FFFB
-ADD4	E780
-ADD6	0050
-ADD8	1395
-ADDA	0401
-ADDC	93F7
-ADDE	1400
-ADE0	4181
-ADE2	91CB
-ADE4	B7D7
-ADE6	0124
-ADE8	9387
-ADEA	07C4
-ADEC	03D7
-ADEE	4707
-ADF0	0507
-ADF2	239A
-ADF4	E706
-ADF6	9377
-ADF8	2500
-ADFA	91CB
-ADFC	B7D7
-ADFE	0124
-AE00	9387
-AE02	07C4
-AE04	03D7
-AE06	C70C
-AE08	0507
-AE0A	2396
-AE0C	E70C
-AE0E	9377
-AE10	4500
-AE12	91CB
-AE14	B7D7
-AE16	0124
-AE18	9387
-AE1A	07C4
-AE1C	03D7
-AE1E	E70C
-AE20	0507
-AE22	2397
-AE24	E70C
-AE26	9377
-AE28	0502
-AE2A	91CB
-AE2C	B7D7
-AE2E	0124
-AE30	9387
-AE32	07C4
-AE34	03D7
-AE36	070F
-AE38	0507
-AE3A	2398
-AE3C	E70E
-AE3E	9377
-AE40	0520
-AE42	91CB
-AE44	B7D7
-AE46	0124
-AE48	9387
-AE4A	07C4
-AE4C	03D7
-AE4E	6708
-AE50	0507
-AE52	2393
-AE54	E708
-AE56	1375
-AE58	0504
-AE5A	11C9
-AE5C	B7D7
-AE5E	0124
-AE60	9387
-AE62	07C4
-AE64	03D7
-AE66	A708
-AE68	0507
-AE6A	2395
-AE6C	E708
-AE6E	1743
-AE70	02FC
-AE72	6700
-AE74	6367
-AE76	B7D7
-AE78	0124
-AE7A	83D7
-AE7C	A7E7
-AE7E	81DB
-AE80	9760
-AE82	FEFB
-AE84	E780
-AE86	0072
-AE88	6311
-AE8A	9506
-AE8C	B797
-AE8E	0124
-AE90	9387
-AE92	07D7
-AE94	03C7
-AE96	C701
-AE98	83C7
-AE9A	2706
-AE9C	6307
-AE9E	F704
-AEA0	1364
-AEA2	0424
-AEA4	4204
-AEA6	4180
-AEA8	11A0
-AEAA	0144
-AEAC	B767
-AEAE	0024
-AEB0	9387
-AEB2	0733
-AEB4	03C7
-AEB6	273B
-AEB8	E30F
-AEBA	07EC
-AEBC	37A7
-AEBE	0124
-AEC0	0347
-AEC2	6792
-AEC4	E309
-AEC6	07EC
-AEC8	37D7
-AECA	0124
-AECC	0357
-AECE	A7E7
-AED0	E303
-AED2	07EC
-AED4	3797
-AED6	0124
-AED8	0347
-AEDA	1700
-AEDC	E30D
-AEDE	07EA
-AEE0	1374
-AEE2	F4DF
-AEE4	4204
-AEE6	4180
-AEE8	7DB5
-AEEA	9760
-AEEC	FEFB
-AEEE	E780
-AEF0	606B
-AEF2	8547
-AEF4	E31C
-AEF6	F5FA
-AEF8	B797
-AEFA	0124
-AEFC	9387
-AEFE	07D7
-AF00	03C7
-AF02	C701
-AF04	83C7
-AF06	2706
-AF08	E312
-AF0A	F7FA
-AF0C	1364
-AF0E	0420
-AF10	4204
-AF12	4180
-AF14	61BF
-AF16	0100
-AF18	7171
-AF1A	22D7
-AF1C	26D5
-AF1E	7324
-AF20	2034
-AF22	F324
-AF24	1034
-AF26	7360
-AF28	0430
-AF2A	2EC5
-AF2C	A565
-AF2E	BEDC
-AF30	06D3
-AF32	16D1
-AF34	1ACF
-AF36	1ECD
-AF38	22CB
-AF3A	2AC7
-AF3C	32C3
-AF3E	36C1
-AF40	BADE
-AF42	C2DA
-AF44	C6D8
-AF46	F2D0
-AF48	F6CE
-AF4A	FACC
-AF4C	FECA
-AF4E	82E2
-AF50	86E0
-AF52	0AFE
-AF54	0EFC
-AF56	12FA
-AF58	16F8
-AF5A	1AF6
-AF5C	1EF4
-AF5E	2AF2
-AF60	2EF0
-AF62	32EE
-AF64	26C9
-AF66	CAD6
-AF68	CED4
-AF6A	D2D2
-AF6C	9385
-AF6E	0540
-AF70	0545
-AF72	36EC
-AF74	3AEA
-AF76	3EE8
-AF78	42E6
-AF7A	46E4
-AF7C	72E2
-AF7E	76E0
-AF80	272E
-AF82	E1FF
-AF84	272C
-AF86	F1FF
-AF88	97D0
-AF8A	FFFB
-AF8C	E780
-AF8E	C0A0
-AF90	A167
-AF92	E98F
-AF94	2A84
-AF96	6394
-AF98	0718
-AF9A	B764
-AF9C	0124
-AF9E	9384
-AFA0	0440
-AFA2	8567
-AFA4	E18F
-AFA6	CDCF
-AFA8	37D7
-AFAA	0124
-AFAC	3789
-AFAE	0224
-AFB0	1307
-AFB2	07C4
-AFB4	1309
-AFB6	C949
-AFB8	8356
-AFBA	670E
-AFBC	8327
-AFBE	0905
-AFC0	8506
-AFC2	8507
-AFC4	2328
-AFC6	F904
-AFC8	2313
-AFCA	D70E
-AFCC	858B
-AFCE	639F
-AFD0	071A
-AFD2	8547
-AFD4	A30A
-AFD6	F904
-AFD8	9770
-AFDA	FFFB
-AFDC	E780
-AFDE	8008
-AFE0	19C5
-AFE2	0357
-AFE4	4905
-AFE6	9307
-AFE8	1010
-AFEA	6306
-AFEC	F724
-AFEE	DC50
-AFF0	0945
-AFF2	8297
-AFF4	9770
-AFF6	FFFB
-AFF8	E780
-AFFA	408F
-AFFC	11C5
-AFFE	9770
-B000	FFFB
-B002	E780
-B004	A091
-B006	55C5
-B008	9760
-B00A	00FC
-B00C	E780
-B00E	C063
-B010	B787
-B012	0024
-B014	83C7
-B016	078C
-B018	AA89
-B01A	6392
-B01C	071C
-B01E	B7D7
-B020	0124
-B022	9387
-B024	07E7
-B026	BC5F
-B028	639A
-B02A	0716
-B02C	3799
-B02E	0124
-B030	1309
-B032	0953
-B034	B727
-B036	0024
-B038	83C7
-B03A	7752
-B03C	6396
-B03E	071E
-B040	0345
-B042	C918
-B044	631D
-B046	051C
-B048	DC50
-B04A	0D45
-B04C	8297
-B04E	4E85
-B050	9760
-B052	00FC
-B054	E780
-B056	8063
-B058	8567
-B05A	3E99
-B05C	2320
-B05E	A9A2
-B060	1374
-B062	0440
-B064	21C4
-B066	B7D7
-B068	0124
-B06A	9387
-B06C	07C4
-B06E	37A7
-B070	0124
-B072	83D6
-B074	670E
-B076	1307
-B078	0753
-B07A	0347
-B07C	179B
-B07E	8506
-B080	3784
-B082	0224
-B084	1304
-B086	C449
-B088	1337
-B08A	1700
-B08C	2393
-B08E	D70E
-B090	230A
-B092	E404
-B094	9770
-B096	FFFB
-B098	E780
-B09A	C0FC
-B09C	6306
-B09E	0510
-B0A0	0357
-B0A2	4405
-B0A4	9307
-B0A6	1010
-B0A8	6300
-B0AA	F710
-B0AC	DC50
-B0AE	1D45
-B0B0	8297
-B0B2	9A50
-B0B4	8A52
-B0B6	7A43
-B0B8	EA43
-B0BA	5A44
-B0BC	CA44
-B0BE	3A45
-B0C0	AA45
-B0C2	1A46
-B0C4	8A46
-B0C6	7657
-B0C8	E657
-B0CA	5658
-B0CC	C658
-B0CE	3659
-B0D0	A659
-B0D2	165A
-B0D4	065E
-B0D6	F64E
-B0D8	664F
-B0DA	D64F
-B0DC	1660
-B0DE	8660
-B0E0	7271
-B0E2	E271
-B0E4	5272
-B0E6	C272
-B0E8	3273
-B0EA	A273
-B0EC	1275
-B0EE	8275
-B0F0	7266
-B0F2	E266
-B0F4	5267
-B0F6	C267
-B0F8	3268
-B0FA	A268
-B0FC	126E
-B0FE	826E
-B100	072F
-B102	C1FF
-B104	872F
-B106	81FF
-B108	7370
-B10A	0430
-B10C	7390
-B10E	1434
-B110	7310
-B112	2434
-B114	3A54
-B116	AA54
-B118	4D61
-B11A	7300
-B11C	2030
-B11E	37D9
-B120	0124
-B122	1309
-B124	09C4
-B126	8357
-B128	490E
-B12A	B764
-B12C	0124
-B12E	9384
-B130	0440
-B132	D850
-B134	8507
-B136	0145
-B138	2312
-B13A	F90E
-B13C	0297
-B13E	9760
-B140	FFFB
-B142	E780
-B144	A07A
-B146	25E5
-B148	B729
-B14A	0024
-B14C	3799
-B14E	0124
-B150	9389
-B152	0933
-B154	1309
-B156	0953
-B158	056A
-B15A	83C7
-B15C	791F
-B15E	4A9A
-B160	2320
-B162	0AA2
-B164	B9EF
-B166	0345
-B168	C918
-B16A	2DE5
-B16C	83C7
-B16E	0920
-B170	89C7
-B172	0327
-B174	4AB3
-B176	630A
-B178	F700
-B17A	97E0
-B17C	00FC
-B17E	E780
-B180	60DC
-B182	DC50
-B184	0545
-B186	8297
-B188	29BD
-B18A	01A0
-B18C	8547
-B18E	230A
-B190	0904
-B192	A30A
-B194	0904
-B196	2328
-B198	F904
-B19A	3DBD
-B19C	7D55
-B19E	9770
-B1A0	01FC
-B1A2	E780
-B1A4	200E
-B1A6	59B5
-B1A8	EFE0
-B1AA	DFE2
-B1AC	01B7
-B1AE	9760
-B1B0	FFFB
-B1B2	E780
-B1B4	A076
-B1B6	49F9
-B1B8	8357
-B1BA	490E
-B1BC	858B
-B1BE	C9F7
-B1C0	CDBD
-B1C2	9770
-B1C4	01FC
-B1C6	E780
-B1C8	A00C
-B1CA	2311
-B1CC	A94E
-B1CE	0345
-B1D0	C918
-B1D2	49DD
-B1D4	97C0
-B1D6	FFFB
-B1D8	E780
-B1DA	C0BD
-B1DC	41BF
-B1DE	9770
-B1E0	01FC
-B1E2	E780
-B1E4	E00A
-B1E6	3799
-B1E8	0124
-B1EA	1309
-B1EC	0953
-B1EE	8D67
-B1F0	CA97
-B1F2	03C7
-B1F4	D76F
-B1F6	232E
-B1F8	A94E
-B1FA	8547
-B1FC	6306
-B1FE	F700
-B200	8327
-B202	094F
-B204	E377
-B206	F5EA
-B208	9760
-B20A	00FC
-B20C	E780
-B20E	0006
-B210	9770
-B212	01FC
-B214	E780
-B216	C007
-B218	2320
-B21A	A950
-B21C	21BD
-B21E	97C0
-B220	FFFB
-B222	E780
-B224	20BC
-B226	0DB5
-B228	9770
-B22A	01FC
-B22C	E780
-B22E	4006
-B230	2312
-B232	A94E
-B234	31B5
-B236	EFE0
-B238	FFD9
-B23A	55BB
-B23C	1743
-B23E	02FC
-B240	E702
-B242	4328
-B244	2A84
-B246	EFD0
-B248	3FB1
-B24A	8947
-B24C	6306
-B24E	F400
-B250	1743
-B252	02FC
-B254	6700
-B256	4329
-B258	B7A4
-B25A	0224
-B25C	9384
-B25E	8454
-B260	83C7
-B262	1406
-B264	F5F7
-B266	9770
-B268	FFFB
-B26A	E780
-B26C	A0ED
-B26E	6DF1
-B270	9770
-B272	FFFB
-B274	E780
-B276	40EE
-B278	61FD
-B27A	3725
-B27C	0224
-B27E	1305
-B280	05ED
-B282	9700
-B284	FFFB
-B286	E780
-B288	2005
-B28A	B767
-B28C	0124
-B28E	83A7
-B290	0740
-B292	0549
-B294	37A7
-B296	0124
-B298	1D45
-B29A	2305
-B29C	2723
-B29E	8297
-B2A0	A380
-B2A2	2407
-B2A4	9780
-B2A6	01FC
-B2A8	E780
-B2AA	008E
-B2AC	55F1
-B2AE	B727
-B2B0	0124
-B2B2	2380
-B2B4	8754
-B2B6	97B0
-B2B8	FEFB
-B2BA	E780
-B2BC	600D
-B2BE	2381
-B2C0	2407
-B2C2	79B7
-B2C4	1743
-B2C6	02FC
-B2C8	E702
-B2CA	C31F
-B2CC	37A4
-B2CE	0224
-B2D0	1304
-B2D2	8454
-B2D4	0347
-B2D6	2406
-B2D8	8547
-B2DA	630A
-B2DC	F700
-B2DE	97B0
-B2E0	FEFB
-B2E2	E780
-B2E4	E074
-B2E6	1743
-B2E8	02FC
-B2EA	6700
-B2EC	E31F
-B2EE	9780
-B2F0	01FC
-B2F2	E780
-B2F4	6089
-B2F6	65F5
-B2F8	97B0
-B2FA	FEFB
-B2FC	E780
-B2FE	801A
-B300	2301
-B302	0406
-B304	E9BF
-B306	0100
-B308	1743
-B30A	02FC
-B30C	E702
-B30E	831B
-B310	9D47
-B312	631F
-B314	F500
-B316	3794
-B318	0124
-B31A	1304
-B31C	0453
-B31E	8567
-B320	A297
-B322	83C7
-B324	A7CF
-B326	9DE7
-B328	1743
-B32A	02FC
-B32C	6700
-B32E	C31B
-B330	2A84
-B332	EFD0
-B334	7FE8
-B336	8547
-B338	E318
-B33A	F4FE
-B33C	B7E7
-B33E	0124
-B340	9387
-B342	074C
-B344	23AE
-B346	0710
-B348	23A4
-B34A	077E
-B34C	1743
-B34E	02FC
-B350	6700
-B352	8319
-B354	9770
-B356	FFFB
-B358	E780
-B35A	C0DE
-B35C	71F5
-B35E	9770
-B360	FFFB
-B362	E780
-B364	60DF
-B366	69F1
-B368	8D67
-B36A	3E94
-B36C	8327
-B36E	846D
-B370	B724
-B372	0124
-B374	9384
-B376	045F
-B378	91EF
-B37A	83A7
-B37C	440E
-B37E	99CB
-B380	B7D7
-B382	0124
-B384	83C7
-B386	07FA
-B388	C5D3
-B38A	9700
-B38C	FFFB
-B38E	E780
-B390	20EE
-B392	59BF
-B394	83A7
-B396	C40A
-B398	C1DB
-B39A	0545
-B39C	9730
-B39E	FEFB
-B3A0	E780
-B3A2	805C
-B3A4	B735
-B3A6	202D
-B3A8	7578
-B3AA	37F5
-B3AC	202D
-B3AE	9385
-B3B0	0560
-B3B2	1308
-B3B4	08A0
-B3B6	9168
-B3B8	1305
-B3BA	0560
-B3BC	B387
-B3BE	0501
-B3C0	03C7
-B3C2	0700
-B3C4	9306
-B3C6	F00F
-B3C8	1316
-B3CA	8701
-B3CC	6186
-B3CE	0607
-B3D0	6344
-B3D2	0600
-B3D4	9376
-B3D6	F70F
-B3D8	2380
-B3DA	D700
-B3DC	8507
-B3DE	E391
-B3E0	B7FE
-B3E2	B385
-B3E4	1701
-B3E6	E39B
-B3E8	A5FC
-B3EA	B7A7
-B3EC	0224
-B3EE	0547
-B3F0	0145
-B3F2	A384
-B3F4	E75A
-B3F6	9730
-B3F8	FEFB
-B3FA	E780
-B3FC	E056
-B3FE	B7D7
-B400	0124
-B402	83C7
-B404	07FA
-B406	8DD3
-B408	8327
-B40A	846D
-B40C	91FF
-B40E	83A7
-B410	440E
-B412	99DB
-B414	9DBF
-B416	0100
-B418	1743
-B41A	02FC
-B41C	E702
-B41E	830A
-B420	B7D7
-B422	0124
-B424	9387
-B426	07F4
-B428	03C7
-B42A	1705
-B42C	2A84
-B42E	11C7
-B430	03C7
-B432	1700
-B434	8947
-B436	6301
-B438	F704
-B43A	B7E7
-B43C	0124
-B43E	9387
-B440	0787
-B442	03A9
-B444	870F
-B446	83A4
-B448	C70F
-B44A	0146
-B44C	CA85
-B44E	2685
-B450	9730
-B452	01FC
-B454	E780
-B456	405F
-B458	2285
-B45A	97D0
-B45C	FEFB
-B45E	E780
-B460	20E2
-B462	0546
-B464	CA85
-B466	2685
-B468	9730
-B46A	01FC
-B46C	E780
-B46E	C05D
-B470	1743
-B472	02FC
-B474	6700
-B476	4307
-B478	B7E7
-B47A	0024
-B47C	83D6
-B47E	C7C8
-B480	8567
-B482	1387
-B484	F7B3
-B486	E39A
-B488	E6FA
-B48A	3797
-B48C	0124
-B48E	1307
-B490	0753
-B492	BA97
-B494	03A5
-B496	07B2
-B498	8145
-B49A	3325
-B49C	A000
-B49E	97D0
-B4A0	00FC
-B4A2	E780
-B4A4	20C7
-B4A6	51BF
-B4A8	1743
-B4AA	02FC
-B4AC	E702
-B4AE	8301
-B4B0	9760
-B4B2	FFFB
-B4B4	E780
-B4B6	8043
-B4B8	11C5
-B4BA	B7E7
-B4BC	0024
-B4BE	83C7
-B4C0	C784
-B4C2	BDEF
-B4C4	1384
-B4C6	81E7
-B4C8	0347
-B4CA	8400
-B4CC	8547
-B4CE	6303
-B4D0	F706
-B4D2	0357
-B4D4	2403
-B4D6	B767
-B4D8	0040
-B4DA	2398
-B4DC	E718
-B4DE	8357
-B4E0	4403
-B4E2	3767
-B4E4	0040
-B4E6	2314
-B4E8	F720
-B4EA	9760
-B4EC	FFFB
-B4EE	E780
-B4F0	E03F
-B4F2	19C5
-B4F4	B7E7
-B4F6	0024
-B4F8	03C7
-B4FA	C784
-B4FC	8147
-B4FE	09EB
-B500	8346
-B502	8400
-B504	0547
-B506	8147
-B508	6384
-B50A	E600
-B50C	8357
-B50E	C405
-B510	37A7
-B512	0040
-B514	2312
-B516	F710
-B518	9770
-B51A	FFFB
-B51C	E780
-B51E	80C2
-B520	35C1
-B522	9770
-B524	FFFB
-B526	E780
-B528	20C3
-B52A	05C9
-B52C	1743
-B52E	02FC
-B530	6700
-B532	83FB
-B534	B767
-B536	0040
-B538	2398
-B53A	0718
-B53C	8147
-B53E	55B7
-B540	B767
-B542	0040
-B544	2398
-B546	0718
-B548	1384
-B54A	81E7
-B54C	8346
-B54E	8400
-B550	0547
-B552	8147
-B554	E395
-B556	E6F8
-B558	69B7
-B55A	9760
-B55C	FFFB
-B55E	E780
-B560	E038
-B562	31ED
-B564	8346
-B566	8400
-B568	0547
-B56A	8147
-B56C	6384
-B56E	E600
-B570	8357
-B572	4408
-B574	3787
-B576	0040
-B578	2314
-B57A	F710
-B57C	1743
-B57E	02FC
-B580	6700
-B582	83F6
-B584	9770
-B586	FFFB
-B588	E780
-B58A	00BD
-B58C	59F9
-B58E	9760
-B590	FFFB
-B592	E780
-B594	A035
-B596	19C5
-B598	B7E7
-B59A	0024
-B59C	03C7
-B59E	C784
-B5A0	8147
-B5A2	09EB
-B5A4	8346
-B5A6	8400
-B5A8	0547
-B5AA	8147
-B5AC	6384
-B5AE	E600
-B5B0	8357
-B5B2	6407
-B5B4	3707
-B5B6	0140
-B5B8	2314
-B5BA	F710
-B5BC	9DB7
-B5BE	B7E7
-B5C0	0024
-B5C2	03C7
-B5C4	C784
-B5C6	8147
-B5C8	55F7
-B5CA	69BF
-B5CC	1743
-B5CE	02FC
-B5D0	E702
-B5D2	A3ED
-B5D4	B747
-B5D6	0124
-B5D8	03D7
-B5DA	C7E1
-B5DC	8947
-B5DE	2A84
-B5E0	AE84
-B5E2	6319
-B5E4	F700
-B5E6	B7A7
-B5E8	0124
-B5EA	03A7
-B5EC	4706
-B5EE	FD57
-B5F0	630E
-B5F2	F702
-B5F4	B7E7
-B5F6	0124
-B5F8	9387
-B5FA	0787
-B5FC	83A9
-B5FE	8710
-B600	03A9
-B602	C710
-B604	0146
-B606	CE85
-B608	4A85
-B60A	9730
-B60C	01FC
-B60E	E780
-B610	A043
-B612	A685
-B614	2285
-B616	97D0
-B618	00FC
-B61A	E780
-B61C	A0AF
-B61E	0546
-B620	CE85
-B622	4A85
-B624	9730
-B626	01FC
-B628	E780
-B62A	0042
-B62C	1743
-B62E	02FC
-B630	6700
-B632	E3EA
-B634	1743
-B636	02FC
-B638	E702
-B63A	C3E8
-B63C	B7B6
-B63E	0224
-B640	B787
-B642	0324
-B644	9386
-B646	4673
-B648	37A7
-B64A	0124
-B64C	9387
-B64E	07FF
-B650	1307
-B652	0753
-B654	958F
-B656	232C
-B658	D7B4
-B65A	232E
-B65C	F7B4
-B65E	9730
-B660	01FC
-B662	E780
-B664	20E2
-B666	01C5
-B668	EFE0
-B66A	DFD5
-B66C	3120
-B66E	1743
-B670	02FC
-B672	6700
-B674	63E7
-B676	0100
-B678	1743
-B67A	02FC
-B67C	E702
-B67E	83E4
-B680	B7B7
-B682	0224
-B684	9387
-B686	C7AB
-B688	23AE
-B68A	F194
-B68C	3764
-B68E	0124
-B690	9D66
-B692	B7B5
-B694	0224
-B696	B7A7
-B698	0224
-B69A	1304
-B69C	0440
-B69E	9387
-B6A0	077B
-B6A2	9386
-B6A4	F6BF
-B6A6	1146
-B6A8	9385
-B6AA	85F1
-B6AC	0545
-B6AE	5CC4
-B6B0	97E0
-B6B2	FFFB
-B6B4	E780
-B6B6	002E
-B6B8	C166
-B6BA	B7B5
-B6BC	0224
-B6BE	FD16
-B6C0	3146
-B6C2	9385
-B6C4	858F
-B6C6	4145
-B6C8	97E0
-B6CA	FFFB
-B6CC	E780
-B6CE	802C
-B6D0	37B7
-B6D2	0224
-B6D4	1307
-B6D6	C7AE
-B6D8	B7A7
-B6DA	0224
-B6DC	9387
-B6DE	8754
-B6E0	78C8
-B6E2	37B7
-B6E4	0224
-B6E6	A380
-B6E8	0706
-B6EA	2381
-B6EC	0706
-B6EE	1307
-B6F0	07BA
-B6F2	B7B7
-B6F4	0224
-B6F6	18D4
-B6F8	9387
-B6FA	C723
-B6FC	37B7
-B6FE	0224
-B700	7CC4
-B702	1307
-B704	8730
-B706	B7B7
-B708	0224
-B70A	18C0
-B70C	9387
-B70E	472C
-B710	23AA
-B712	F1A4
-B714	1743
-B716	02FC
-B718	6700
-B71A	03DD
-B71C	0000
-B71E	0000
-B720	6610
-B722	E538
-B724	0000
-B726	0000
-B728	BF3F
-B72A	0000
-B72C	0000
-B72E	0000
-B730	008D
-B732	0000
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-5ACC	6505
-FCFC	4000
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3244	0101
-3246	0101
-3248	0010
-3266	0100
-3330	0108
-3334	0100
-3336	0000
-FCFC	2002
-BB88	0100
-BB8A	0800
-BB8C	1000
-BB8E	2000
-BB90	C800
-BB92	C800
-BB94	C800
-BB96	C800
-BB98	C400
-BB9A	C400
-BB9C	C400
-BB9E	C400
-BBA0	C200
-BBA2	C200
-BBA4	C200
-BBA6	C200
-BBA8	BE00
-BBAA	BE00
-BBAC	BE00
-BBAE	BE00
-BBB0	BC00
-BBB2	BC00
-BBB4	BC00
-BBB6	BC00
-BBB8	2000
-BBBA	2000
-BBBC	2000
-BBBE	2000
-BBC0	1600
-BBC2	1600
-BBC4	1600
-BBC6	1600
-BBC8	0000
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0A00
-BBD2	0A00
-BBD4	0A00
-BBD6	0A00
-BBD8	1400
-BBDA	1400
-BBDC	1400
-BBDE	1400
-BBE0	2A00
-BBE2	2A00
-BBE4	2A00
-BBE6	2A00
-BBE8	2A00
-BBEA	2A00
-BBEC	2A00
-BBEE	2A00
-BBF0	0100
-BBF2	0100
-BBF4	0100
-BBF6	0100
-BBF8	0F00
-BBFA	0F00
-BBFC	0F00
-BBFE	0F00
-BC00	0400
-BC02	0400
-BC04	0400
-BC06	0400
-BC08	1900
-BC0A	1900
-BC0C	1900
-BC0E	1900
-BC10	1400
-BC12	1400
-BC14	1400
-BC16	1400
-BC18	3A00
-BC1A	3A00
-BC1C	3A00
-BC1E	3A00
-BC20	0A00
-BC22	0A00
-BC24	0A00
-BC26	0A00
-BC28	4B00
-BC2A	4B00
-BC2C	4B00
-BC2E	4B00
-BC30	0200
-BC32	0600
-BC34	0C00
-BC36	0C00
-BC38	2A00
-BC3A	2500
-BC3C	2000
-BC3E	2000
-BC40	0000
-BC42	1000
-BC44	2300
-BC46	2300
-BC48	3F00
-BC4A	3100
-BC4C	2100
-BC4E	2100
-BC50	0A00
-BC52	1B00
-BC54	3000
-BC56	3000
-BC58	1900
-BC5A	1500
-BC5C	1100
-BC5E	1100
-BC60	0F00
-BC62	0F00
-BC64	0F00
-BC66	0F00
-BC68	1900
-BC6A	1900
-BC6C	1900
-BC6E	1900
-BC70	0A00
-BC72	0A00
-BC74	0A00
-BC76	0A00
-BC78	0B00
-BC7A	0B00
-BC7C	0B00
-BC7E	0B00
-BC80	0000
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0800
-BC8A	0800
-BC8C	0800
-BC8E	0800
-FCFC	4000
-FCFC	4000
-0B30	01FF
-FCFC	2000
-3D44	0000
-3D88	FCFC
-3D8A	FEFF
-3D8C	FCFC
-3D8E	FEFF
-3D90	FCFC
-3D92	FEFF
-3D94	FCFC
-3D96	FEFF
-3FE0	0324
-3FE2	0080
-3FE4	0000
-3FE6	0000
-4238	0324
-423A	0080
-423C	0324
-423E	A886
-FCFC	2003
-8000	FFFE
-8002	2400
-8004	FFFD
-8006	22C2
-8008	0006
-800A	22C4
-800C	1FFF
-800E	22EC
-8010	001F
-8012	2306
-8014	3FFF
-8016	2314
-8018	00FF
-801A	2354
-801C	0003
-801E	23F0
-8020	0100
-8022	68DE
-8024	0000
-8026	703C
-8028	0101
-802A	703E
-802C	0001
-802E	7046
-8030	027F
-8032	7048
-8034	021F
-8036	704A
-8038	0A00
-803A	7058
-803C	0280
-803E	705A
-8040	0220
-8042	705C
-8044	0A01
-8046	7806
-8048	0100
-804A	7808
-804C	0824
-804E	78C0
-8050	0101
-8052	795A
-8054	0020
-8056	7970
-8058	0020
-805A	7994
-805C	2020
-805E	7996
-8060	0101
-8062	799A
-8064	0000
-8066	7BDA
-8068	004C
-806A	7EE6
-806C	002C
-806E	7EF2
-8070	002C
-8072	7EFE
-8074	0064
-8076	7F0A
-8078	0058
-807A	7F0E
-807C	0058
-807E	82A2
-8080	0014
-8082	82BA
-8084	0033
-8086	8CCE
-8088	0096
-808A	8CD0
-808C	0096
-808E	8CD2
-8090	00BE
-8092	8CD6
-8094	0096
-8096	8D0E
-8098	0000
-809A	9032
-809C	0000
-809E	903E
-80A0	0000
-80A2	B176
-80A4	0206
-80A6	B178
-80A8	0000
-80AA	B20C
-80AC	002E
-80AE	B21A
-80B0	0204
-80B2	B23C
-80B4	6060
-80B6	B242
-80B8	6060
-80BA	B266
-80BC	04C0
-80BE	B268
-80C0	F380
-80C2	B270
-80C4	0887
-80C6	B322
-80C8	0101
-80CA	B324
-80CC	0001
-80CE	B330
-80D0	2828
-80D2	B34A
-80D4	2828
-80D6	B360
-80D8	2828
-80DA	B378
-80DC	0001
-80DE	BF16
-80E0	AA0B
-80E2	BF30
-80E4	0000
-80E6	BF78
-80E8	3353
-80EA	C4D8
-80EC	0020
-80EE	C4E0
-80F0	0001
-80F2	C4E2
-80F4	0000
-80F6	C4F6
-80F8	0000
-80FA	C53C
-80FC	0005
-80FE	C53E
-8100	0000
-8102	C544
-8104	0500
-8106	C554
-8108	1000
-810A	C556
-810C	0000
-810E	D1F6
-8110	003A
-8112	D20C
-8114	0809
-8116	D27A
-8118	0005
-811A	D314
-811C	0220
-811E	D326
-8120	1001
-8122	D3EC
-8124	1CB0
-8126	D3F0
-8128	1CB0
-812A	D410
-812C	0248
-812E	D412
-8130	04D2
-8132	D426
-8134	04D2
-8136	D428
-8138	0AEA
-813A	D43C
-813C	4001
-813E	D43E
-8140	4001
-8142	D49C
-8144	0022
-8146	D4A8
-8148	0000
-814A	D4AC
-814C	0001
-814E	D4B0
-8150	0456
-8152	D4B4
-8154	0001
-8156	D4B8
-8158	0014
-815A	D4BC
-815C	0062
-815E	D4C0
-8160	0014
-8162	D4C4
-8164	0000
-8166	D4C8
-8168	0001
-816A	D4CC
-816C	0000
-816E	D4D0
-8170	000A
-8172	D4D2
-8174	0000
-8176	D4D6
-8178	001A
-817A	D4DA
-817C	0000
-817E	D4DE
-8180	0001
-8182	D4E2
-8184	0036
-8186	D4E6
-8188	0001
-818A	D4EA
-818C	0001
-818E	D4EC
-8190	0000
-8192	D4EE
-8194	0000
-8196	D4F8
-8198	0000
-819A	D4FA
-819C	0000
-819E	D554
-81A0	00C4
-81A2	D556
-81A4	00FA
-81A6	D560
-81A8	0352
-81AA	D562
-81AC	0388
-81AE	D5BC
-81B0	0000
-81B2	D5BE
-81B4	0000
-81B6	D5C8
-81B8	0000
-81BA	D5CA
-81BC	0000
-81BE	D624
-81C0	0000
-81C2	D62E
-81C4	0000
-81C6	D638
-81C8	0000
-81CA	D682
-81CC	04C0
-81CE	D684
-81D0	F380
-81D2	D6D4
-81D4	0000
-81D6	D704
-81D8	7802
-81DA	D718
-81DC	0200
-81DE	D856
-81E0	0705
-81E2	D896
-81E4	0000
-81E6	D8A2
-81E8	0001
-81EA	DC8C
-81EC	0B3F
-81EE	DC94
-81F0	0301
-81F2	DD70
-81F4	0000
-81F6	DE38
-81F8	0000
-81FA	E980
-81FC	049E
-81FE	EF80
-8200	0000
-8202	F014
-8204	0007
-8206	F09A
-8208	FF00
-820A	F0AA
-820C	FFFF
-820E	F0AC
-8210	FFFF
-8212	F288
-8214	0000
-8216	F2E0
-8218	0000
-821A	F2EA
-821C	0040
-821E	F370
-8220	0302
-8222	F372
-8224	0000
-8226	F3E4
-8228	0103
-822A	F3F4
-822C	00C8
-822E	F3F6
-8230	10D6
-8232	FFFE
-8234	2401
-8236	FFFD
-8238	195E
-823A	0001
-823C	1966
-823E	0000
-8240	1DF2
-8242	0003
-8244	1DF6
-8246	0003
-8248	1DFA
-824A	0003
-824C	1DFE
-824E	0003
-8250	1E12
-8252	0003
-8254	1E16
-8256	0003
-8258	1E1A
-825A	0003
-825C	1E1E
-825E	0003
-8260	1E32
-8262	0003
-8264	1E36
-8266	0003
-8268	1E3A
-826A	0003
-826C	1E3E
-826E	0003
-8270	1E52
-8272	0003
-8274	1E56
-8276	0003
-8278	1E5A
-827A	0003
-827C	1E5E
-827E	0003
-8280	2540
-8282	0000
-8284	2920
-8286	0001
-8288	29A8
-828A	0001
-828C	29BA
-828E	0020
-8290	2A30
-8292	FF01
-8294	2A42
-8296	0001
-8298	2A44
-829A	0952
-829C	2A46
-829E	0000
-82A0	2A54
-82A2	0000
-82A4	2A56
-82A6	0004
-82A8	2BB2
-82AA	0010
-82AC	2D32
-82AE	1000
-82B0	3132
-82B2	0002
-82B4	31D0
-82B6	0000
-82B8	31F8
-82BA	0000
-82BC	31FA
-82BE	0000
-82C0	3C42
-82C2	0000
-82C4	3C46
-82C6	05EB
-82C8	3C52
-82CA	0640
-82CC	4270
-82CE	0000
-82D0	427C
-82D2	0020
-82D4	4280
-82D6	0010
-82D8	4290
-82DA	0001
-82DC	4292
-82DE	0000
-82E0	4362
-82E2	0001
-82E4	4364
-82E6	0000
-82E8	4366
-82EA	0000
-82EC	4370
-82EE	0000
-82F0	4396
-82F2	000D
-82F4	4398
-82F6	000E
-82F8	43AA
-82FA	0000
-82FC	43AC
-82FE	0000
-8300	43B4
-8302	0000
-8304	43B6
-8306	0000
-8308	43C6
-830A	0A01
-830C	44C6
-830E	0000
-8310	5A70
-8312	0000
-8314	FFFE
-8316	2402
-8318	FFFD
-831A	849E
-831C	0000
-831E	84A0
-8320	0000
-8322	84A2
-8324	0500
-8326	84C4
-8328	0001
-832A	A570
-832C	0000
-832E	FFFE
-8330	2400
-8332	FFFD
-8334	0086
-8336	1400
-8338	0112
-833A	0A0A
-833C	0114
-833E	0103
-8340	0118
-8342	0400
-8344	011A
-8346	0100
-8348	011C
-834A	0001
-834C	0136
-834E	1800
-8350	013E
-8352	0000
-8354	020A
-8356	0000
-8358	021E
-835A	0000
-835C	0228
-835E	0001
-8360	0270
-8362	2B2B
-8364	0272
-8366	102B
-8368	0274
-836A	2B30
-836C	0304
-836E	0003
-8370	0306
-8372	00E6
-8374	031A
-8376	0003
-8378	031C
-837A	0028
-837C	031E
-837E	0002
-8380	0400
-8382	1010
-8384	0408
-8386	0100
-8388	040A
-838A	0100
-838C	040C
-838E	0000
-8390	0702
-8392	0000
-8394	0704
-8396	0000
-8398	0720
-839A	0001
-839C	0722
-839E	0008
-83A0	0724
-83A2	0000
-83A4	0808
-83A6	0102
-83A8	0900
-83AA	2222
-83AC	0936
-83AE	0000
-83B0	0C40
-83B2	0000
-83B4	0342
-83B6	12B0
-83B8	0000
-83BA	FFFF
-83BC	0008
-83BE	2400
-83C0	71D4
-83C2	3F00
-83C4	3D00
-83C6	84F3
-83C8	0040
-83CA	FFFF
-83CC	0010
-83CE	2400
-83D0	7274
-83D2	0C00
-83D4	0B00
-83D6	36D2
-83D8	0040
-83DA	0000
-83DC	0000
-83DE	0000
-83E0	0000
-83E2	FFFF
-83E4	0008
-83E6	2400
-83E8	7314
-83EA	2E00
-83EC	3000
-83EE	9EFD
-83F0	0040
-83F2	FFFF
-83F4	0008
-83F6	2400
-83F8	7A0E
-83FA	0F00
-83FC	0F00
-83FE	0F00
-8400	0F00
-8402	FFFF
-8404	0008
-8406	2400
-8408	7A6E
-840A	1900
-840C	1900
-840E	1900
-8410	1900
-8412	FFFF
-8414	0008
-8416	2400
-8418	7A86
-841A	1900
-841C	1900
-841E	1900
-8420	1900
-8422	FFFF
-8424	0008
-8426	2400
-8428	8C9E
-842A	3500
-842C	3500
-842E	5000
-8430	3500
-8432	FFFF
-8434	000A
-8436	2400
-8438	B21E
-843A	0000
-843C	0103
-843E	C000
-8440	0103
-8442	0000
-8444	FFFF
-8446	000C
-8448	2400
-844A	BEDC
-844C	C526
-844E	903E
-8450	C00F
-8452	0008
-8454	0C00
-8456	8000
-8458	FFFF
-845A	000E
-845C	2400
-845E	DADA
-8460	0001
-8462	0000
-8464	4000
-8466	E001
-8468	2003
-846A	8007
-846C	000B
-846E	FFFF
-8470	000C
-8472	2400
-8474	DB0C
-8476	0000
-8478	0040
-847A	0000
-847C	00B0
-847E	00D0
-8480	00F0
-8482	FFFF
-8484	000C
-8486	2400
-8488	DB3C
-848A	12D2
-848C	12D2
-848E	12D2
-8490	12D2
-8492	12D2
-8494	12D2
-8496	FFFF
-8498	000C
-849A	2400
-849C	DB6C
-849E	0000
-84A0	0000
-84A2	0000
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	FFFF
-84AC	000C
-84AE	2400
-84B0	DB9C
-84B2	0000
-84B4	0000
-84B6	0000
-84B8	0000
-84BA	0000
-84BC	0000
-84BE	FFFF
-84C0	000C
-84C2	2400
-84C4	DBCC
-84C6	0000
-84C8	0000
-84CA	0000
-84CC	0000
-84CE	0000
-84D0	0000
-84D2	FFFF
-84D4	0012
-84D6	2401
-84D8	1C24
-84DA	0002
-84DC	8001
-84DE	8004
-84E0	2010
-84E2	2010
-84E4	0005
-84E6	00A0
-84E8	2810
-84EA	2810
-84EC	FFFF
-84EE	0020
-84F0	2401
-84F2	1C4E
-84F4	8001
-84F6	8004
-84F8	0010
-84FA	0010
-84FC	0005
-84FE	00A0
-8500	2810
-8502	2810
-8504	0000
-8506	0000
-8508	0000
-850A	0000
-850C	0000
-850E	0000
-8510	0000
-8512	0000
-8514	FFFF
-8516	0020
-8518	2401
-851A	1C76
-851C	8001
-851E	8004
-8520	2010
-8522	2010
-8524	0005
-8526	00A0
-8528	2810
-852A	2810
-852C	0000
-852E	0000
-8530	0000
-8532	0000
-8534	0000
-8536	0000
-8538	0000
-853A	0000
-853C	FFFF
-853E	0010
-8540	2401
-8542	1C9E
-8544	8001
-8546	8004
-8548	2010
-854A	2010
-854C	0005
-854E	00A0
-8550	2810
-8552	2810
-8554	FFFF
-8556	0010
-8558	2401
-855A	1CC6
-855C	8001
-855E	8004
-8560	2010
-8562	2010
-8564	0005
-8566	00A0
-8568	2810
-856A	2810
-856C	FFFF
-856E	0020
-8570	2401
-8572	1CEE
-8574	8001
-8576	8004
-8578	0010
-857A	0010
-857C	0005
-857E	00A0
-8580	2810
-8582	2810
-8584	0000
-8586	0000
-8588	0000
-858A	0000
-858C	0000
-858E	0000
-8590	0000
-8592	0000
-8594	FFFF
-8596	0020
-8598	2401
-859A	1D16
-859C	8001
-859E	8004
-85A0	2010
-85A2	2010
-85A4	0005
-85A6	00A0
-85A8	2810
-85AA	2810
-85AC	0000
-85AE	0000
-85B0	0000
-85B2	0000
-85B4	0000
-85B6	0000
-85B8	0000
-85BA	0000
-85BC	FFFF
-85BE	0010
-85C0	2401
-85C2	1D3E
-85C4	8001
-85C6	8004
-85C8	2010
-85CA	2010
-85CC	0005
-85CE	00A0
-85D0	2810
-85D2	2810
-85D4	FFFF
-85D6	0010
-85D8	2402
-85DA	A548
-85DC	0000
-85DE	0000
-85E0	0000
-85E2	0000
-85E4	0000
-85E6	0000
-85E8	0000
-85EA	0000
-85EC	FFFF
-85EE	0010
-85F0	2402
-85F2	A55C
-85F4	0000
-85F6	0000
-85F8	0000
-85FA	0000
-85FC	0000
-85FE	0000
-8600	0000
-8602	0000
-8604	FFFF
-8606	002C
-8608	2402
-860A	A574
-860C	0100
-860E	4000
-8610	8000
-8612	A000
-8614	4001
-8616	8002
-8618	0005
-861A	000A
-861C	A00F
-861E	4011
-8620	0E00
-8622	2000
-8624	2800
-8626	1400
-8628	2200
-862A	2800
-862C	2C00
-862E	2E00
-8630	3200
-8632	3800
-8634	A2FD
-8636	FEFE
-8638	FFFF
-863A	0008
-863C	2400
-863E	0260
-8640	0001
-8642	0000
-8644	0006
-8646	0700
-8648	FFFF
-864A	0008
-864C	2400
-864E	030C
-8650	0000
-8652	0300
-8654	BF00
-8656	0000
-8658	FFFF
-865A	0010
-865C	2400
-865E	0344
-8660	0000
-8662	0003
-8664	1F20
-8666	1F15
-8668	0010
-866A	0009
-866C	0800
-866E	0800
-8670	FFFF
-8672	0008
-8674	2400
-8676	0380
-8678	0200
-867A	0200
-867C	0200
-867E	0200
-8680	FFFF
-8682	0008
-8684	2400
-8686	0728
-8688	0000
-868A	0000
-868C	0000
-868E	0000
-8690	FFFF
-8692	000C
-8694	2400
-8696	0B02
-8698	0102
-869A	0001
-869C	0101
-869E	0100
-86A0	0101
-86A2	0100
-86A4	0000
-86A6	0000
-86A8	FFFE
-86AA	2400
-86AC	FFFD
-86AE	703E
-86B0	0000
-86B2	7048
-86B4	009F
-86B6	704A
-86B8	0400
-86BA	705A
-86BC	00A0
-86BE	705C
-86C0	0400
-86C2	7274
-86C4	B000
-86C6	7276
-86C8	0000
-86CA	7278
-86CC	D212
-86CE	7806
-86D0	0101
-86D2	7808
-86D4	0C3F
-86D6	7996
-86D8	0001
-86DA	7BDA
-86DC	003C
-86DE	B268
-86E0	E380
-86E2	C4D8
-86E4	0010
-86E6	D49C
-86E8	0021
-86EA	D4A8
-86EC	0001
-86EE	D4B0
-86F0	037E
-86F2	D4BC
-86F4	040B
-86F6	D684
-86F8	E380
-86FA	D704
-86FC	7800
-86FE	F014
-8700	0006
-8702	FFFE
-8704	2401
-8706	FFFD
-8708	195E
-870A	0101
-870C	1966
-870E	0002
-8710	1C28
-8712	04F0
-8714	1C2C
-8716	1056
-8718	1C32
-871A	10B6
-871C	1C34
-871E	1170
-8720	1C50
-8722	04F0
-8724	1C52
-8726	1028
-8728	1C54
-872A	1051
-872C	1C78
-872E	04F0
-8730	1C7A
-8732	1028
-8734	1C7C
-8736	1066
-8738	1CA0
-873A	04F0
-873C	1CA4
-873E	1056
-8740	1CAA
-8742	10C4
-8744	1CAC
-8746	1170
-8748	1CC8
-874A	04F0
-874C	1CCC
-874E	1056
-8750	1CD2
-8752	10B6
-8754	1CD4
-8756	1170
-8758	1CF0
-875A	04F0
-875C	1CF2
-875E	1028
-8760	1CF4
-8762	1051
-8764	1D18
-8766	04F0
-8768	1D1A
-876A	1028
-876C	1D1C
-876E	1066
-8770	1D40
-8772	04F0
-8774	1D44
-8776	1056
-8778	1D4A
-877A	10C4
-877C	1D4C
-877E	1170
-8780	1DF2
-8782	0000
-8784	1DF6
-8786	0000
-8788	1DFA
-878A	0000
-878C	1DFE
-878E	0000
-8790	1E12
-8792	0000
-8794	1E16
-8796	0000
-8798	1E1A
-879A	0000
-879C	1E1E
-879E	0000
-87A0	1E32
-87A2	0000
-87A4	1E36
-87A6	0000
-87A8	1E3A
-87AA	0000
-87AC	1E3E
-87AE	0000
-87B0	1E52
-87B2	0000
-87B4	1E56
-87B6	0000
-87B8	1E5A
-87BA	0000
-87BC	1E5E
-87BE	0000
-87C0	2A44
-87C2	0739
-87C4	5A70
-87C6	0001
-87C8	FFFE
-87CA	2402
-87CC	FFFD
-87CE	84C4
-87D0	0000
-87D2	FFFE
-87D4	2400
-87D6	FFFD
-87D8	0086
-87DA	0280
-87DC	021E
-87DE	0006
-87E0	0722
-87E2	0020
-87E4	0342
-87E6	2560
-87E8	0000
-87EA	FFFF
-87EC	0008
-87EE	2400
-87F0	7314
-87F2	0000
-87F4	0000
-87F6	0000
-87F8	0000
-87FA	FFFF
-87FC	000A
-87FE	2400
-8800	DADE
-8802	A000
-8804	4001
-8806	0000
-8808	0000
-880A	0000
-880C	FFFF
-880E	000C
-8810	2400
-8812	DB0C
-8814	0D00
-8816	0F00
-8818	0D00
-881A	0000
-881C	0000
-881E	0000
-8820	FFFF
-8822	000C
-8824	2400
-8826	DB3C
-8828	36D2
-882A	36D2
-882C	36D2
-882E	0000
-8830	0000
-8832	0000
-8834	FFFF
-8836	000E
-8838	2401
-883A	1C58
-883C	F009
-883E	9710
-8840	DA10
-8842	000A
-8844	00A0
-8846	DA10
-8848	7011
-884A	FFFF
-884C	000E
-884E	2401
-8850	1C80
-8852	F009
-8854	7210
-8856	DD10
-8858	000A
-885A	00A0
-885C	DD10
-885E	7011
-8860	FFFF
-8862	000E
-8864	2401
-8866	1CF8
-8868	F009
-886A	9710
-886C	DA10
-886E	000A
-8870	00A0
-8872	DA10
-8874	7011
-8876	FFFF
-8878	000E
-887A	2401
-887C	1D20
-887E	F009
-8880	7210
-8882	DD10
-8884	000A
-8886	00A0
-8888	DD10
-888A	7011
-888C	0000
-888E	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_1.3g_0822.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_1.3g_0822.txt
deleted file mode 100755
index 4b8ebf8e..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_1.3g_0822.txt
+++ /dev/null
@@ -1,2857 +0,0 @@
-FCFC	4000
-0000	000D
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0101
-FCFC	2001
-3C60	0000
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	006C
-84C8	34B6
-84CA	0224
-84CC	B8AA
-84CE	0224
-84D0	B8AA
-84D2	0224
-84D4	B8AA
-84D6	0224
-84D8	B8AA
-84DA	0224
-84DC	B8AA
-84DE	0224
-A548	0046
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00DB
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	013C
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	F0AB
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	B0A5
-570A	0224
-570C	0453
-570E	0020
-5710	20A7
-5712	0224
-5714	C850
-5716	0220
-5718	2CAC
-571A	0224
-571C	2C88
-571E	0220
-5720	58AD
-5722	0224
-5724	7C82
-5726	0120
-5728	18B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	A8B4
-5732	0224
-5734	1081
-5736	0320
-5738	CCB5
-573A	0224
-FCFC	2002
-A5B0	1753
-A5B2	02FC
-A5B4	E702
-A5B6	03F1
-A5B8	B7E7
-A5BA	0124
-A5BC	9387
-A5BE	0787
-A5C0	83A4
-A5C2	870D
-A5C4	03A4
-A5C6	C70D
-A5C8	0146
-A5CA	A685
-A5CC	2285
-A5CE	9740
-A5D0	01FC
-A5D2	E780
-A5D4	6047
-A5D6	97B0
-A5D8	FEFB
-A5DA	E780
-A5DC	E0E2
-A5DE	0546
-A5E0	A685
-A5E2	2285
-A5E4	9740
-A5E6	01FC
-A5E8	E780
-A5EA	0046
-A5EC	37A7
-A5EE	0224
-A5F0	9307
-A5F2	8754
-A5F4	03C6
-A5F6	C702
-A5F8	8546
-A5FA	630B
-A5FC	D600
-A5FE	83C6
-A600	0700
-A602	0947
-A604	638E
-A606	E606
-A608	1753
-A60A	02FC
-A60C	6700
-A60E	C3ED
-A610	03D5
-A612	4705
-A614	05C9
-A616	83D8
-A618	2705
-A61A	B7E6
-A61C	0124
-A61E	83D5
-A620	665F
-A622	1307
-A624	8754
-A626	8146
-A628	2548
-A62A	0356
-A62C	E702
-A62E	0907
-A630	63EA
-A632	C50C
-A634	8506
-A636	E39A
-A638	06FF
-A63A	3707
-A63C	0040
-A63E	3A95
-A640	2310
-A642	1501
-A644	03D5
-A646	6705
-A648	5DD9
-A64A	83D8
-A64C	2705
-A64E	37E7
-A650	0124
-A652	8355
-A654	675F
-A656	BE86
-A658	0147
-A65A	2548
-A65C	03D6
-A65E	E602
-A660	8906
-A662	63E8
-A664	C50A
-A666	0507
-A668	E31A
-A66A	07FF
-A66C	3707
-A66E	0040
-A670	3A95
-A672	2310
-A674	1501
-A676	83C6
-A678	0700
-A67A	0947
-A67C	E396
-A67E	E6F8
-A680	03D5
-A682	8702
-A684	1DC5
-A686	83D8
-A688	6702
-A68A	37F7
-A68C	0124
-A68E	8355
-A690	A781
-A692	BE86
-A694	0147
-A696	2548
-A698	03D6
-A69A	2600
-A69C	8906
-A69E	63ED
-A6A0	C504
-A6A2	0507
-A6A4	E31A
-A6A6	07FF
-A6A8	3707
-A6AA	0040
-A6AC	3A95
-A6AE	2310
-A6B0	1501
-A6B2	03D5
-A6B4	A702
-A6B6	29D9
-A6B8	83D8
-A6BA	6702
-A6BC	37F7
-A6BE	0124
-A6C0	8355
-A6C2	A781
-A6C4	BE86
-A6C6	0147
-A6C8	2548
-A6CA	03D6
-A6CC	2600
-A6CE	8906
-A6D0	63EE
-A6D2	C500
-A6D4	0507
-A6D6	E31A
-A6D8	07FF
-A6DA	B707
-A6DC	0040
-A6DE	3E95
-A6E0	2310
-A6E2	1501
-A6E4	1753
-A6E6	02FC
-A6E8	6700
-A6EA	03E0
-A6EC	2107
-A6EE	0607
-A6F0	BA97
-A6F2	83D8
-A6F4	4700
-A6F6	D5B7
-A6F8	2107
-A6FA	0607
-A6FC	3E97
-A6FE	8358
-A700	4700
-A702	5DB7
-A704	1387
-A706	0602
-A708	0607
-A70A	3E97
-A70C	8358
-A70E	0700
-A710	2DB7
-A712	1307
-A714	0702
-A716	0607
-A718	3E97
-A71A	8358
-A71C	0700
-A71E	B9B7
-A720	1753
-A722	02FC
-A724	E702
-A726	83D7
-A728	3284
-A72A	B7E7
-A72C	0124
-A72E	032B
-A730	4600
-A732	832A
-A734	4609
-A736	032A
-A738	C604
-A73A	0348
-A73C	8600
-A73E	9387
-A740	0787
-A742	0346
-A744	8609
-A746	0347
-A748	0405
-A74A	03AC
-A74C	070E
-A74E	83AB
-A750	470E
-A752	3318
-A754	0B01
-A756	3317
-A758	EA00
-A75A	3396
-A75C	CA00
-A75E	2322
-A760	0401
-A762	78C4
-A764	AA84
-A766	2E89
-A768	232A
-A76A	C408
-A76C	E285
-A76E	5E85
-A770	0146
-A772	B689
-A774	9740
-A776	01FC
-A778	E780
-A77A	002D
-A77C	CE86
-A77E	2286
-A780	CA85
-A782	2685
-A784	97B0
-A786	FDFB
-A788	E780
-A78A	00B8
-A78C	0546
-A78E	E285
-A790	5E85
-A792	9740
-A794	01FC
-A796	E780
-A798	202B
-A79A	2322
-A79C	6401
-A79E	232A
-A7A0	5409
-A7A2	2326
-A7A4	4405
-A7A6	1753
-A7A8	02FC
-A7AA	6700
-A7AC	A3D2
-A7AE	0100
-A7B0	1753
-A7B2	02FC
-A7B4	E702
-A7B6	03D1
-A7B8	2A84
-A7BA	EFE0
-A7BC	AFB2
-A7BE	A147
-A7C0	6306
-A7C2	F400
-A7C4	1753
-A7C6	02FC
-A7C8	6700
-A7CA	03D2
-A7CC	9770
-A7CE	FFFB
-A7D0	E780
-A7D2	C014
-A7D4	39C5
-A7D6	B737
-A7D8	0124
-A7DA	83C7
-A7DC	271A
-A7DE	FDD3
-A7E0	3784
-A7E2	0040
-A7E4	8355
-A7E6	E4F3
-A7E8	0D45
-A7EA	93E5
-A7EC	0524
-A7EE	97D0
-A7F0	FFFB
-A7F2	E780
-A7F4	6013
-A7F6	8355
-A7F8	24F7
-A7FA	B7A7
-A7FC	0124
-A7FE	9387
-A800	0753
-A802	03D7
-A804	47B6
-A806	C205
-A808	C181
-A80A	1377
-A80C	F7DB
-A80E	93F5
-A810	F5DB
-A812	4145
-A814	2392
-A816	E7B6
-A818	97D0
-A81A	FFFB
-A81C	E780
-A81E	C010
-A820	55B7
-A822	9770
-A824	FFFB
-A826	E780
-A828	600C
-A82A	55D5
-A82C	9780
-A82E	FFFB
-A830	E780
-A832	4086
-A834	19C9
-A836	B797
-A838	0124
-A83A	9387
-A83C	07D7
-A83E	03C7
-A840	8703
-A842	83C7
-A844	2706
-A846	6306
-A848	F706
-A84A	9780
-A84C	FFFB
-A84E	E780
-A850	6084
-A852	51D1
-A854	B797
-A856	0124
-A858	9387
-A85A	07D7
-A85C	03C7
-A85E	C701
-A860	83C7
-A862	2706
-A864	E319
-A866	F7F6
-A868	B727
-A86A	0224
-A86C	0564
-A86E	9387
-A870	076B
-A872	A297
-A874	03C7
-A876	F780
-A878	8547
-A87A	6317
-A87C	F700
-A87E	B737
-A880	0124
-A882	83C7
-A884	57A5
-A886	B1C3
-A888	B787
-A88A	0040
-A88C	83D5
-A88E	E7F3
-A890	0D45
-A892	93E5
-A894	0501
-A896	97D0
-A898	FFFB
-A89A	E780
-A89C	E008
-A89E	B7A7
-A8A0	0124
-A8A2	9387
-A8A4	0753
-A8A6	03D7
-A8A8	47B6
-A8AA	3D9B
-A8AC	2392
-A8AE	E7B6
-A8B0	1DB7
-A8B2	B727
-A8B4	0224
-A8B6	0564
-A8B8	9387
-A8BA	076B
-A8BC	A297
-A8BE	03C7
-A8C0	F780
-A8C2	9147
-A8C4	E30D
-A8C6	F7FA
-A8C8	C1B7
-A8CA	B787
-A8CC	0040
-A8CE	83D5
-A8D0	E7F3
-A8D2	0D45
-A8D4	93E5
-A8D6	0504
-A8D8	97D0
-A8DA	FFFB
-A8DC	E780
-A8DE	C004
-A8E0	B797
-A8E2	0124
-A8E4	9387
-A8E6	0753
-A8E8	A297
-A8EA	03D7
-A8EC	47B6
-A8EE	1377
-A8F0	F7FB
-A8F2	2392
-A8F4	E7B6
-A8F6	C5B5
-A8F8	3571
-A8FA	22CF
-A8FC	26CD
-A8FE	7324
-A900	2034
-A902	F324
-A904	1034
-A906	7360
-A908	0430
-A90A	06CB
-A90C	16C9
-A90E	1AC7
-A910	1EC5
-A912	2AC3
-A914	2EC1
-A916	B2DE
-A918	B6DC
-A91A	BADA
-A91C	BED8
-A91E	C2D6
-A920	C6D4
-A922	F2D2
-A924	F6D0
-A926	FACE
-A928	FECC
-A92A	82E2
-A92C	86E0
-A92E	0AFE
-A930	0EFC
-A932	12FA
-A934	16F8
-A936	1AF6
-A938	1EF4
-A93A	2AF2
-A93C	2EF0
-A93E	32EE
-A940	36EC
-A942	3AEA
-A944	3EE8
-A946	42E6
-A948	46E4
-A94A	72E2
-A94C	76E0
-A94E	272E
-A950	E1FF
-A952	272C
-A954	F1FF
-A956	9770
-A958	FFFB
-A95A	E780
-A95C	20FC
-A95E	19C5
-A960	9770
-A962	FFFB
-A964	E780
-A966	80F8
-A968	631C
-A96A	0512
-A96C	9305
-A96E	0024
-A970	4145
-A972	97D0
-A974	FFFB
-A976	E780
-A978	2002
-A97A	8145
-A97C	9377
-A97E	1500
-A980	85C7
-A982	37D7
-A984	0124
-A986	B7A7
-A988	0124
-A98A	1307
-A98C	07C4
-A98E	9387
-A990	0753
-A992	0356
-A994	4707
-A996	83D6
-A998	A7B6
-A99A	0506
-A99C	93E6
-A99E	1600
-A9A0	231A
-A9A2	C706
-A9A4	2395
-A9A6	D7B6
-A9A8	9377
-A9AA	2500
-A9AC	85C7
-A9AE	37D7
-A9B0	0124
-A9B2	B7A7
-A9B4	0124
-A9B6	1307
-A9B8	07C4
-A9BA	9387
-A9BC	0753
-A9BE	0356
-A9C0	C70C
-A9C2	83D6
-A9C4	A7B6
-A9C6	0506
-A9C8	93E6
-A9CA	2600
-A9CC	2316
-A9CE	C70C
-A9D0	2395
-A9D2	D7B6
-A9D4	9377
-A9D6	0520
-A9D8	1375
-A9DA	0504
-A9DC	C5C3
-A9DE	B7D7
-A9E0	0124
-A9E2	9387
-A9E4	07C4
-A9E6	03D7
-A9E8	6708
-A9EA	0507
-A9EC	2393
-A9EE	E708
-A9F0	D1C5
-A9F2	37A7
-A9F4	0124
-A9F6	1307
-A9F8	0753
-A9FA	8356
-A9FC	A7B6
-A9FE	93E6
-AA00	0620
-AA02	2315
-AA04	D7B6
-AA06	11C9
-AA08	03D6
-AA0A	A708
-AA0C	0506
-AA0E	2395
-AA10	C708
-AA12	93E6
-AA14	0604
-AA16	2315
-AA18	D7B6
-AA1A	DA40
-AA1C	CA42
-AA1E	3A43
-AA20	AA43
-AA22	1A45
-AA24	8A45
-AA26	7656
-AA28	E656
-AA2A	5657
-AA2C	C657
-AA2E	3658
-AA30	A658
-AA32	165E
-AA34	865E
-AA36	764F
-AA38	E64F
-AA3A	1660
-AA3C	8660
-AA3E	7271
-AA40	E271
-AA42	5272
-AA44	C272
-AA46	3273
-AA48	A273
-AA4A	1275
-AA4C	8275
-AA4E	7266
-AA50	E266
-AA52	5267
-AA54	C267
-AA56	3268
-AA58	A268
-AA5A	126E
-AA5C	826E
-AA5E	072F
-AA60	C1FF
-AA62	872F
-AA64	81FF
-AA66	7370
-AA68	0430
-AA6A	7390
-AA6C	1434
-AA6E	7310
-AA70	2434
-AA72	7A44
-AA74	EA44
-AA76	0D61
-AA78	7300
-AA7A	2030
-AA7C	59DD
-AA7E	B7D7
-AA80	0124
-AA82	9387
-AA84	07C4
-AA86	03D7
-AA88	A708
-AA8A	0507
-AA8C	2395
-AA8E	E708
-AA90	C9D5
-AA92	37A7
-AA94	0124
-AA96	1307
-AA98	0753
-AA9A	8356
-AA9C	A7B6
-AA9E	95BF
-AAA0	B7A7
-AAA2	0124
-AAA4	83D5
-AAA6	8709
-AAA8	4145
-AAAA	97D0
-AAAC	FFFB
-AAAE	E780
-AAB0	A0EE
-AAB2	8545
-AAB4	E1B5
-AAB6	0100
-AAB8	8280
-AABA	0100
-AABC	1753
-AABE	02FC
-AAC0	E702
-AAC2	43A0
-AAC4	37E4
-AAC6	0124
-AAC8	1304
-AACA	044C
-AACC	8344
-AACE	E40A
-AAD0	8547
-AAD2	2307
-AAD4	F40A
-AAD6	97A0
-AAD8	FDFB
-AADA	E780
-AADC	E0EB
-AADE	2307
-AAE0	940A
-AAE2	1753
-AAE4	02FC
-AAE6	6700
-AAE8	23A0
-AAEA	0100
-AAEC	B7A7
-AAEE	0224
-AAF0	83C7
-AAF2	075A
-AAF4	0547
-AAF6	6383
-AAF8	E700
-AAFA	8280
-AAFC	1753
-AAFE	02FC
-AB00	E702
-AB02	A39A
-AB04	3794
-AB06	0124
-AB08	1304
-AB0A	0453
-AB0C	0347
-AB0E	041B
-AB10	4111
-AB12	6307
-AB14	F700
-AB16	4101
-AB18	1753
-AB1A	02FC
-AB1C	6700
-AB1E	239C
-AB20	8947
-AB22	E31A
-AB24	F5FE
-AB26	8347
-AB28	3441
-AB2A	ADC3
-AB2C	83A9
-AB2E	0500
-AB30	2EC6
-AB32	97C0
-AB34	01FC
-AB36	E780
-AB38	E0C0
-AB3A	AA84
-AB3C	9780
-AB3E	01FC
-AB40	E780
-AB42	40D0
-AB44	B245
-AB46	2A89
-AB48	9C41
-AB4A	63F3
-AB4C	9700
-AB4E	A687
-AB50	8851
-AB52	9CC1
-AB54	2EC6
-AB56	4A95
-AB58	97B0
-AB5A	00FC
-AB5C	E780
-AB5E	C0CD
-AB60	B245
-AB62	AA84
-AB64	E8C9
-AB66	3385
-AB68	2901
-AB6A	97B0
-AB6C	00FC
-AB6E	E780
-AB70	A0CC
-AB72	8567
-AB74	3E94
-AB76	8327
-AB78	C483
-AB7A	2695
-AB7C	B245
-AB7E	63F3
-AB80	A700
-AB82	AA87
-AB84	2322
-AB86	F498
-AB88	E8C5
-AB8A	71B7
-AB8C	0145
-AB8E	2EC6
-AB90	97B0
-AB92	01FC
-AB94	E780
-AB96	403E
-AB98	B245
-AB9A	AA89
-AB9C	51BF
-AB9E	0100
-ABA0	1753
-ABA2	02FC
-ABA4	E702
-ABA6	0392
-ABA8	2A84
-ABAA	EFE0
-ABAC	7F85
-ABAE	01E8
-ABB0	B7D7
-ABB2	0124
-ABB4	03A7
-ABB6	87C1
-ABB8	9147
-ABBA	6306
-ABBC	F700
-ABBE	1753
-ABC0	02FC
-ABC2	6700
-ABC4	6392
-ABC6	B7D7
-ABC8	0124
-ABCA	83C7
-ABCC	07FA
-ABCE	E5DB
-ABD0	B747
-ABD2	0124
-ABD4	83C7
-ABD6	27C4
-ABD8	FDF3
-ABDA	97E0
-ABDC	00FC
-ABDE	E780
-ABE0	60A0
-ABE2	B787
-ABE4	0224
-ABE6	0547
-ABE8	A380
-ABEA	E74E
-ABEC	C9BF
-ABEE	0100
-ABF0	1753
-ABF2	02FC
-ABF4	E702
-ABF6	038D
-ABF8	3784
-ABFA	0224
-ABFC	1304
-ABFE	C449
-AC00	8347
-AC02	5404
-AC04	99E7
-AC06	EFE0
-AC08	3F8B
-AC0A	1753
-AC0C	02FC
-AC0E	6700
-AC10	A38D
-AC12	97E0
-AC14	00FC
-AC16	E780
-AC18	E0B7
-AC1A	A302
-AC1C	0404
-AC1E	EFE0
-AC20	BF89
-AC22	1753
-AC24	02FC
-AC26	6700
-AC28	238C
-AC2A	0100
-AC2C	1753
-AC2E	02FC
-AC30	E702
-AC32	4389
-AC34	B7E7
-AC36	0124
-AC38	9387
-AC3A	0787
-AC3C	03A9
-AC3E	870E
-AC40	83A4
-AC42	C70E
-AC44	0146
-AC46	CA85
-AC48	2A84
-AC4A	2685
-AC4C	9740
-AC4E	01FC
-AC50	E780
-AC52	80DF
-AC54	2285
-AC56	97A0
-AC58	FFFB
-AC5A	E780
-AC5C	2047
-AC5E	0546
-AC60	CA85
-AC62	2685
-AC64	9740
-AC66	01FC
-AC68	E780
-AC6A	00DE
-AC6C	8547
-AC6E	6309
-AC70	F400
-AC72	9147
-AC74	6306
-AC76	F400
-AC78	1753
-AC7A	02FC
-AC7C	6700
-AC7E	C386
-AC80	9770
-AC82	FFFB
-AC84	E780
-AC86	80C9
-AC88	65F9
-AC8A	9770
-AC8C	FFFB
-AC8E	E780
-AC90	E0C5
-AC92	7DD1
-AC94	9770
-AC96	FFFB
-AC98	E780
-AC9A	C03F
-AC9C	19C9
-AC9E	B797
-ACA0	0124
-ACA2	9387
-ACA4	07D7
-ACA6	03C7
-ACA8	8703
-ACAA	83C7
-ACAC	2706
-ACAE	6306
-ACB0	F706
-ACB2	9770
-ACB4	FFFB
-ACB6	E780
-ACB8	E03D
-ACBA	5DDD
-ACBC	B797
-ACBE	0124
-ACC0	9387
-ACC2	07D7
-ACC4	03C7
-ACC6	C701
-ACC8	83C7
-ACCA	2706
-ACCC	E316
-ACCE	F7FA
-ACD0	B7B7
-ACD2	0224
-ACD4	83A7
-ACD6	0773
-ACD8	B706
-ACDA	0040
-ACDC	1386
-ACDE	4606
-ACE0	8965
-ACE2	3E96
-ACE4	1387
-ACE6	061F
-ACE8	9385
-ACEA	F5F1
-ACEC	2310
-ACEE	B600
-ACF0	3E97
-ACF2	7D56
-ACF4	2310
-ACF6	C700
-ACF8	37D6
-ACFA	0124
-ACFC	1306
-ACFE	06E7
-AD00	0357
-AD02	C605
-AD04	0356
-AD06	6606
-AD08	9386
-AD0A	861D
-AD0C	3297
-AD0E	4207
-AD10	B697
-AD12	4183
-AD14	2390
-AD16	E700
-AD18	85B7
-AD1A	B7B7
-AD1C	0224
-AD1E	83A7
-AD20	0773
-AD22	B706
-AD24	0040
-AD26	1386
-AD28	4606
-AD2A	8965
-AD2C	3E96
-AD2E	1387
-AD30	061F
-AD32	9385
-AD34	F5F1
-AD36	2310
-AD38	B600
-AD3A	3E97
-AD3C	7D56
-AD3E	2310
-AD40	C700
-AD42	37D6
-AD44	0124
-AD46	1306
-AD48	06E7
-AD4A	0357
-AD4C	0606
-AD4E	9386
-AD50	A61D
-AD52	0356
-AD54	6606
-AD56	5DBF
-AD58	1743
-AD5A	02FC
-AD5C	E702
-AD5E	8376
-AD60	B7D7
-AD62	0024
-AD64	83C7
-AD66	476D
-AD68	8544
-AD6A	6380
-AD6C	9714
-AD6E	B7E7
-AD70	0024
-AD72	03C4
-AD74	C784
-AD76	B7A7
-AD78	0124
-AD7A	83C7
-AD7C	6792
-AD7E	3334
-AD80	8000
-AD82	3304
-AD84	8040
-AD86	7998
-AD88	1304
-AD8A	6402
-AD8C	EDE7
-AD8E	B767
-AD90	0024
-AD92	9387
-AD94	0733
-AD96	03D7
-AD98	E75B
-AD9A	19C7
-AD9C	1347
-AD9E	F7FF
-ADA0	618F
-ADA2	1314
-ADA4	0701
-ADA6	4180
-ADA8	83D7
-ADAA	075C
-ADAC	0D45
-ADAE	5D8C
-ADB0	4204
-ADB2	4180
-ADB4	A285
-ADB6	97D0
-ADB8	FFFB
-ADBA	E780
-ADBC	20C5
-ADBE	9315
-ADC0	0501
-ADC2	C181
-ADC4	AA84
-ADC6	6309
-ADC8	B400
-ADCA	0565
-ADCC	A18D
-ADCE	2D05
-ADD0	97A0
-ADD2	FFFB
-ADD4	E780
-ADD6	0050
-ADD8	1395
-ADDA	0401
-ADDC	93F7
-ADDE	1400
-ADE0	4181
-ADE2	91CB
-ADE4	B7D7
-ADE6	0124
-ADE8	9387
-ADEA	07C4
-ADEC	03D7
-ADEE	4707
-ADF0	0507
-ADF2	239A
-ADF4	E706
-ADF6	9377
-ADF8	2500
-ADFA	91CB
-ADFC	B7D7
-ADFE	0124
-AE00	9387
-AE02	07C4
-AE04	03D7
-AE06	C70C
-AE08	0507
-AE0A	2396
-AE0C	E70C
-AE0E	9377
-AE10	4500
-AE12	91CB
-AE14	B7D7
-AE16	0124
-AE18	9387
-AE1A	07C4
-AE1C	03D7
-AE1E	E70C
-AE20	0507
-AE22	2397
-AE24	E70C
-AE26	9377
-AE28	0502
-AE2A	91CB
-AE2C	B7D7
-AE2E	0124
-AE30	9387
-AE32	07C4
-AE34	03D7
-AE36	070F
-AE38	0507
-AE3A	2398
-AE3C	E70E
-AE3E	9377
-AE40	0520
-AE42	91CB
-AE44	B7D7
-AE46	0124
-AE48	9387
-AE4A	07C4
-AE4C	03D7
-AE4E	6708
-AE50	0507
-AE52	2393
-AE54	E708
-AE56	1375
-AE58	0504
-AE5A	11C9
-AE5C	B7D7
-AE5E	0124
-AE60	9387
-AE62	07C4
-AE64	03D7
-AE66	A708
-AE68	0507
-AE6A	2395
-AE6C	E708
-AE6E	1743
-AE70	02FC
-AE72	6700
-AE74	6367
-AE76	B7D7
-AE78	0124
-AE7A	83D7
-AE7C	A7E7
-AE7E	81DB
-AE80	9760
-AE82	FEFB
-AE84	E780
-AE86	0072
-AE88	6311
-AE8A	9506
-AE8C	B797
-AE8E	0124
-AE90	9387
-AE92	07D7
-AE94	03C7
-AE96	C701
-AE98	83C7
-AE9A	2706
-AE9C	6307
-AE9E	F704
-AEA0	1364
-AEA2	0424
-AEA4	4204
-AEA6	4180
-AEA8	11A0
-AEAA	0144
-AEAC	B767
-AEAE	0024
-AEB0	9387
-AEB2	0733
-AEB4	03C7
-AEB6	273B
-AEB8	E30F
-AEBA	07EC
-AEBC	37A7
-AEBE	0124
-AEC0	0347
-AEC2	6792
-AEC4	E309
-AEC6	07EC
-AEC8	37D7
-AECA	0124
-AECC	0357
-AECE	A7E7
-AED0	E303
-AED2	07EC
-AED4	3797
-AED6	0124
-AED8	0347
-AEDA	1700
-AEDC	E30D
-AEDE	07EA
-AEE0	1374
-AEE2	F4DF
-AEE4	4204
-AEE6	4180
-AEE8	7DB5
-AEEA	9760
-AEEC	FEFB
-AEEE	E780
-AEF0	606B
-AEF2	8547
-AEF4	E31C
-AEF6	F5FA
-AEF8	B797
-AEFA	0124
-AEFC	9387
-AEFE	07D7
-AF00	03C7
-AF02	C701
-AF04	83C7
-AF06	2706
-AF08	E312
-AF0A	F7FA
-AF0C	1364
-AF0E	0420
-AF10	4204
-AF12	4180
-AF14	61BF
-AF16	0100
-AF18	7171
-AF1A	22D7
-AF1C	26D5
-AF1E	7324
-AF20	2034
-AF22	F324
-AF24	1034
-AF26	7360
-AF28	0430
-AF2A	2EC5
-AF2C	A565
-AF2E	BEDC
-AF30	06D3
-AF32	16D1
-AF34	1ACF
-AF36	1ECD
-AF38	22CB
-AF3A	2AC7
-AF3C	32C3
-AF3E	36C1
-AF40	BADE
-AF42	C2DA
-AF44	C6D8
-AF46	F2D0
-AF48	F6CE
-AF4A	FACC
-AF4C	FECA
-AF4E	82E2
-AF50	86E0
-AF52	0AFE
-AF54	0EFC
-AF56	12FA
-AF58	16F8
-AF5A	1AF6
-AF5C	1EF4
-AF5E	2AF2
-AF60	2EF0
-AF62	32EE
-AF64	26C9
-AF66	CAD6
-AF68	CED4
-AF6A	D2D2
-AF6C	9385
-AF6E	0540
-AF70	0545
-AF72	36EC
-AF74	3AEA
-AF76	3EE8
-AF78	42E6
-AF7A	46E4
-AF7C	72E2
-AF7E	76E0
-AF80	272E
-AF82	E1FF
-AF84	272C
-AF86	F1FF
-AF88	97D0
-AF8A	FFFB
-AF8C	E780
-AF8E	C0A0
-AF90	A167
-AF92	E98F
-AF94	2A84
-AF96	6394
-AF98	0718
-AF9A	B764
-AF9C	0124
-AF9E	9384
-AFA0	0440
-AFA2	8567
-AFA4	E18F
-AFA6	CDCF
-AFA8	37D7
-AFAA	0124
-AFAC	3789
-AFAE	0224
-AFB0	1307
-AFB2	07C4
-AFB4	1309
-AFB6	C949
-AFB8	8356
-AFBA	670E
-AFBC	8327
-AFBE	0905
-AFC0	8506
-AFC2	8507
-AFC4	2328
-AFC6	F904
-AFC8	2313
-AFCA	D70E
-AFCC	858B
-AFCE	639F
-AFD0	071A
-AFD2	8547
-AFD4	A30A
-AFD6	F904
-AFD8	9770
-AFDA	FFFB
-AFDC	E780
-AFDE	8008
-AFE0	19C5
-AFE2	0357
-AFE4	4905
-AFE6	9307
-AFE8	1010
-AFEA	6306
-AFEC	F724
-AFEE	DC50
-AFF0	0945
-AFF2	8297
-AFF4	9770
-AFF6	FFFB
-AFF8	E780
-AFFA	408F
-AFFC	11C5
-AFFE	9770
-B000	FFFB
-B002	E780
-B004	A091
-B006	55C5
-B008	9760
-B00A	00FC
-B00C	E780
-B00E	C063
-B010	B787
-B012	0024
-B014	83C7
-B016	078C
-B018	AA89
-B01A	6392
-B01C	071C
-B01E	B7D7
-B020	0124
-B022	9387
-B024	07E7
-B026	BC5F
-B028	639A
-B02A	0716
-B02C	3799
-B02E	0124
-B030	1309
-B032	0953
-B034	B727
-B036	0024
-B038	83C7
-B03A	7752
-B03C	6396
-B03E	071E
-B040	0345
-B042	C918
-B044	631D
-B046	051C
-B048	DC50
-B04A	0D45
-B04C	8297
-B04E	4E85
-B050	9760
-B052	00FC
-B054	E780
-B056	8063
-B058	8567
-B05A	3E99
-B05C	2320
-B05E	A9A2
-B060	1374
-B062	0440
-B064	21C4
-B066	B7D7
-B068	0124
-B06A	9387
-B06C	07C4
-B06E	37A7
-B070	0124
-B072	83D6
-B074	670E
-B076	1307
-B078	0753
-B07A	0347
-B07C	179B
-B07E	8506
-B080	3784
-B082	0224
-B084	1304
-B086	C449
-B088	1337
-B08A	1700
-B08C	2393
-B08E	D70E
-B090	230A
-B092	E404
-B094	9770
-B096	FFFB
-B098	E780
-B09A	C0FC
-B09C	6306
-B09E	0510
-B0A0	0357
-B0A2	4405
-B0A4	9307
-B0A6	1010
-B0A8	6300
-B0AA	F710
-B0AC	DC50
-B0AE	1D45
-B0B0	8297
-B0B2	9A50
-B0B4	8A52
-B0B6	7A43
-B0B8	EA43
-B0BA	5A44
-B0BC	CA44
-B0BE	3A45
-B0C0	AA45
-B0C2	1A46
-B0C4	8A46
-B0C6	7657
-B0C8	E657
-B0CA	5658
-B0CC	C658
-B0CE	3659
-B0D0	A659
-B0D2	165A
-B0D4	065E
-B0D6	F64E
-B0D8	664F
-B0DA	D64F
-B0DC	1660
-B0DE	8660
-B0E0	7271
-B0E2	E271
-B0E4	5272
-B0E6	C272
-B0E8	3273
-B0EA	A273
-B0EC	1275
-B0EE	8275
-B0F0	7266
-B0F2	E266
-B0F4	5267
-B0F6	C267
-B0F8	3268
-B0FA	A268
-B0FC	126E
-B0FE	826E
-B100	072F
-B102	C1FF
-B104	872F
-B106	81FF
-B108	7370
-B10A	0430
-B10C	7390
-B10E	1434
-B110	7310
-B112	2434
-B114	3A54
-B116	AA54
-B118	4D61
-B11A	7300
-B11C	2030
-B11E	37D9
-B120	0124
-B122	1309
-B124	09C4
-B126	8357
-B128	490E
-B12A	B764
-B12C	0124
-B12E	9384
-B130	0440
-B132	D850
-B134	8507
-B136	0145
-B138	2312
-B13A	F90E
-B13C	0297
-B13E	9760
-B140	FFFB
-B142	E780
-B144	A07A
-B146	25E5
-B148	B729
-B14A	0024
-B14C	3799
-B14E	0124
-B150	9389
-B152	0933
-B154	1309
-B156	0953
-B158	056A
-B15A	83C7
-B15C	791F
-B15E	4A9A
-B160	2320
-B162	0AA2
-B164	B9EF
-B166	0345
-B168	C918
-B16A	2DE5
-B16C	83C7
-B16E	0920
-B170	89C7
-B172	0327
-B174	4AB3
-B176	630A
-B178	F700
-B17A	97E0
-B17C	00FC
-B17E	E780
-B180	60DC
-B182	DC50
-B184	0545
-B186	8297
-B188	29BD
-B18A	01A0
-B18C	8547
-B18E	230A
-B190	0904
-B192	A30A
-B194	0904
-B196	2328
-B198	F904
-B19A	3DBD
-B19C	7D55
-B19E	9770
-B1A0	01FC
-B1A2	E780
-B1A4	200E
-B1A6	59B5
-B1A8	EFE0
-B1AA	DFE2
-B1AC	01B7
-B1AE	9760
-B1B0	FFFB
-B1B2	E780
-B1B4	A076
-B1B6	49F9
-B1B8	8357
-B1BA	490E
-B1BC	858B
-B1BE	C9F7
-B1C0	CDBD
-B1C2	9770
-B1C4	01FC
-B1C6	E780
-B1C8	A00C
-B1CA	2311
-B1CC	A94E
-B1CE	0345
-B1D0	C918
-B1D2	49DD
-B1D4	97C0
-B1D6	FFFB
-B1D8	E780
-B1DA	C0BD
-B1DC	41BF
-B1DE	9770
-B1E0	01FC
-B1E2	E780
-B1E4	E00A
-B1E6	3799
-B1E8	0124
-B1EA	1309
-B1EC	0953
-B1EE	8D67
-B1F0	CA97
-B1F2	03C7
-B1F4	D76F
-B1F6	232E
-B1F8	A94E
-B1FA	8547
-B1FC	6306
-B1FE	F700
-B200	8327
-B202	094F
-B204	E377
-B206	F5EA
-B208	9760
-B20A	00FC
-B20C	E780
-B20E	0006
-B210	9770
-B212	01FC
-B214	E780
-B216	C007
-B218	2320
-B21A	A950
-B21C	21BD
-B21E	97C0
-B220	FFFB
-B222	E780
-B224	20BC
-B226	0DB5
-B228	9770
-B22A	01FC
-B22C	E780
-B22E	4006
-B230	2312
-B232	A94E
-B234	31B5
-B236	EFE0
-B238	FFD9
-B23A	55BB
-B23C	1743
-B23E	02FC
-B240	E702
-B242	4328
-B244	2A84
-B246	EFD0
-B248	3FB1
-B24A	8947
-B24C	6306
-B24E	F400
-B250	1743
-B252	02FC
-B254	6700
-B256	4329
-B258	B7A4
-B25A	0224
-B25C	9384
-B25E	8454
-B260	83C7
-B262	1406
-B264	F5F7
-B266	9770
-B268	FFFB
-B26A	E780
-B26C	A0ED
-B26E	6DF1
-B270	9770
-B272	FFFB
-B274	E780
-B276	40EE
-B278	61FD
-B27A	3725
-B27C	0224
-B27E	1305
-B280	05ED
-B282	9700
-B284	FFFB
-B286	E780
-B288	2005
-B28A	B767
-B28C	0124
-B28E	83A7
-B290	0740
-B292	0549
-B294	37A7
-B296	0124
-B298	1D45
-B29A	2305
-B29C	2723
-B29E	8297
-B2A0	A380
-B2A2	2407
-B2A4	9780
-B2A6	01FC
-B2A8	E780
-B2AA	008E
-B2AC	55F1
-B2AE	B727
-B2B0	0124
-B2B2	2380
-B2B4	8754
-B2B6	97B0
-B2B8	FEFB
-B2BA	E780
-B2BC	600D
-B2BE	2381
-B2C0	2407
-B2C2	79B7
-B2C4	1743
-B2C6	02FC
-B2C8	E702
-B2CA	C31F
-B2CC	37A4
-B2CE	0224
-B2D0	1304
-B2D2	8454
-B2D4	0347
-B2D6	2406
-B2D8	8547
-B2DA	630A
-B2DC	F700
-B2DE	97B0
-B2E0	FEFB
-B2E2	E780
-B2E4	E074
-B2E6	1743
-B2E8	02FC
-B2EA	6700
-B2EC	E31F
-B2EE	9780
-B2F0	01FC
-B2F2	E780
-B2F4	6089
-B2F6	65F5
-B2F8	97B0
-B2FA	FEFB
-B2FC	E780
-B2FE	801A
-B300	2301
-B302	0406
-B304	E9BF
-B306	0100
-B308	1743
-B30A	02FC
-B30C	E702
-B30E	831B
-B310	9D47
-B312	631F
-B314	F500
-B316	3794
-B318	0124
-B31A	1304
-B31C	0453
-B31E	8567
-B320	A297
-B322	83C7
-B324	A7CF
-B326	9DE7
-B328	1743
-B32A	02FC
-B32C	6700
-B32E	C31B
-B330	2A84
-B332	EFD0
-B334	7FE8
-B336	8547
-B338	E318
-B33A	F4FE
-B33C	B7E7
-B33E	0124
-B340	9387
-B342	074C
-B344	23AE
-B346	0710
-B348	23A4
-B34A	077E
-B34C	1743
-B34E	02FC
-B350	6700
-B352	8319
-B354	9770
-B356	FFFB
-B358	E780
-B35A	C0DE
-B35C	71F5
-B35E	9770
-B360	FFFB
-B362	E780
-B364	60DF
-B366	69F1
-B368	8D67
-B36A	3E94
-B36C	8327
-B36E	846D
-B370	B724
-B372	0124
-B374	9384
-B376	045F
-B378	91EF
-B37A	83A7
-B37C	440E
-B37E	99CB
-B380	B7D7
-B382	0124
-B384	83C7
-B386	07FA
-B388	C5D3
-B38A	9700
-B38C	FFFB
-B38E	E780
-B390	20EE
-B392	59BF
-B394	83A7
-B396	C40A
-B398	C1DB
-B39A	0545
-B39C	9730
-B39E	FEFB
-B3A0	E780
-B3A2	805C
-B3A4	B735
-B3A6	202D
-B3A8	7578
-B3AA	37F5
-B3AC	202D
-B3AE	9385
-B3B0	0560
-B3B2	1308
-B3B4	08A0
-B3B6	9168
-B3B8	1305
-B3BA	0560
-B3BC	B387
-B3BE	0501
-B3C0	03C7
-B3C2	0700
-B3C4	9306
-B3C6	F00F
-B3C8	1316
-B3CA	8701
-B3CC	6186
-B3CE	0607
-B3D0	6344
-B3D2	0600
-B3D4	9376
-B3D6	F70F
-B3D8	2380
-B3DA	D700
-B3DC	8507
-B3DE	E391
-B3E0	B7FE
-B3E2	B385
-B3E4	1701
-B3E6	E39B
-B3E8	A5FC
-B3EA	B7A7
-B3EC	0224
-B3EE	0547
-B3F0	0145
-B3F2	A384
-B3F4	E75A
-B3F6	9730
-B3F8	FEFB
-B3FA	E780
-B3FC	E056
-B3FE	B7D7
-B400	0124
-B402	83C7
-B404	07FA
-B406	8DD3
-B408	8327
-B40A	846D
-B40C	91FF
-B40E	83A7
-B410	440E
-B412	99DB
-B414	9DBF
-B416	0100
-B418	1743
-B41A	02FC
-B41C	E702
-B41E	830A
-B420	B7D7
-B422	0124
-B424	9387
-B426	07F4
-B428	03C7
-B42A	1705
-B42C	2A84
-B42E	11C7
-B430	03C7
-B432	1700
-B434	8947
-B436	6301
-B438	F704
-B43A	B7E7
-B43C	0124
-B43E	9387
-B440	0787
-B442	03A9
-B444	870F
-B446	83A4
-B448	C70F
-B44A	0146
-B44C	CA85
-B44E	2685
-B450	9730
-B452	01FC
-B454	E780
-B456	405F
-B458	2285
-B45A	97D0
-B45C	FEFB
-B45E	E780
-B460	20E2
-B462	0546
-B464	CA85
-B466	2685
-B468	9730
-B46A	01FC
-B46C	E780
-B46E	C05D
-B470	1743
-B472	02FC
-B474	6700
-B476	4307
-B478	B7E7
-B47A	0024
-B47C	83D6
-B47E	C7C8
-B480	8567
-B482	1387
-B484	F7B3
-B486	E39A
-B488	E6FA
-B48A	3797
-B48C	0124
-B48E	1307
-B490	0753
-B492	BA97
-B494	03A5
-B496	07B2
-B498	8145
-B49A	3325
-B49C	A000
-B49E	97D0
-B4A0	00FC
-B4A2	E780
-B4A4	20C7
-B4A6	51BF
-B4A8	1743
-B4AA	02FC
-B4AC	E702
-B4AE	8301
-B4B0	9760
-B4B2	FFFB
-B4B4	E780
-B4B6	8043
-B4B8	11C5
-B4BA	B7E7
-B4BC	0024
-B4BE	83C7
-B4C0	C784
-B4C2	BDEF
-B4C4	1384
-B4C6	81E7
-B4C8	0347
-B4CA	8400
-B4CC	8547
-B4CE	6303
-B4D0	F706
-B4D2	0357
-B4D4	2403
-B4D6	B767
-B4D8	0040
-B4DA	2398
-B4DC	E718
-B4DE	8357
-B4E0	4403
-B4E2	3767
-B4E4	0040
-B4E6	2314
-B4E8	F720
-B4EA	9760
-B4EC	FFFB
-B4EE	E780
-B4F0	E03F
-B4F2	19C5
-B4F4	B7E7
-B4F6	0024
-B4F8	03C7
-B4FA	C784
-B4FC	8147
-B4FE	09EB
-B500	8346
-B502	8400
-B504	0547
-B506	8147
-B508	6384
-B50A	E600
-B50C	8357
-B50E	C405
-B510	37A7
-B512	0040
-B514	2312
-B516	F710
-B518	9770
-B51A	FFFB
-B51C	E780
-B51E	80C2
-B520	35C1
-B522	9770
-B524	FFFB
-B526	E780
-B528	20C3
-B52A	05C9
-B52C	1743
-B52E	02FC
-B530	6700
-B532	83FB
-B534	B767
-B536	0040
-B538	2398
-B53A	0718
-B53C	8147
-B53E	55B7
-B540	B767
-B542	0040
-B544	2398
-B546	0718
-B548	1384
-B54A	81E7
-B54C	8346
-B54E	8400
-B550	0547
-B552	8147
-B554	E395
-B556	E6F8
-B558	69B7
-B55A	9760
-B55C	FFFB
-B55E	E780
-B560	E038
-B562	31ED
-B564	8346
-B566	8400
-B568	0547
-B56A	8147
-B56C	6384
-B56E	E600
-B570	8357
-B572	4408
-B574	3787
-B576	0040
-B578	2314
-B57A	F710
-B57C	1743
-B57E	02FC
-B580	6700
-B582	83F6
-B584	9770
-B586	FFFB
-B588	E780
-B58A	00BD
-B58C	59F9
-B58E	9760
-B590	FFFB
-B592	E780
-B594	A035
-B596	19C5
-B598	B7E7
-B59A	0024
-B59C	03C7
-B59E	C784
-B5A0	8147
-B5A2	09EB
-B5A4	8346
-B5A6	8400
-B5A8	0547
-B5AA	8147
-B5AC	6384
-B5AE	E600
-B5B0	8357
-B5B2	6407
-B5B4	3707
-B5B6	0140
-B5B8	2314
-B5BA	F710
-B5BC	9DB7
-B5BE	B7E7
-B5C0	0024
-B5C2	03C7
-B5C4	C784
-B5C6	8147
-B5C8	55F7
-B5CA	69BF
-B5CC	1743
-B5CE	02FC
-B5D0	E702
-B5D2	A3ED
-B5D4	B747
-B5D6	0124
-B5D8	03D7
-B5DA	C7E1
-B5DC	8947
-B5DE	2A84
-B5E0	AE84
-B5E2	6319
-B5E4	F700
-B5E6	B7A7
-B5E8	0124
-B5EA	03A7
-B5EC	4706
-B5EE	FD57
-B5F0	630E
-B5F2	F702
-B5F4	B7E7
-B5F6	0124
-B5F8	9387
-B5FA	0787
-B5FC	83A9
-B5FE	8710
-B600	03A9
-B602	C710
-B604	0146
-B606	CE85
-B608	4A85
-B60A	9730
-B60C	01FC
-B60E	E780
-B610	A043
-B612	A685
-B614	2285
-B616	97D0
-B618	00FC
-B61A	E780
-B61C	A0AF
-B61E	0546
-B620	CE85
-B622	4A85
-B624	9730
-B626	01FC
-B628	E780
-B62A	0042
-B62C	1743
-B62E	02FC
-B630	6700
-B632	E3EA
-B634	1743
-B636	02FC
-B638	E702
-B63A	C3E8
-B63C	B7B6
-B63E	0224
-B640	B787
-B642	0324
-B644	9386
-B646	4673
-B648	37A7
-B64A	0124
-B64C	9387
-B64E	07FF
-B650	1307
-B652	0753
-B654	958F
-B656	232C
-B658	D7B4
-B65A	232E
-B65C	F7B4
-B65E	9730
-B660	01FC
-B662	E780
-B664	20E2
-B666	01C5
-B668	EFE0
-B66A	DFD5
-B66C	3120
-B66E	1743
-B670	02FC
-B672	6700
-B674	63E7
-B676	0100
-B678	1743
-B67A	02FC
-B67C	E702
-B67E	83E4
-B680	B7B7
-B682	0224
-B684	9387
-B686	C7AB
-B688	23AE
-B68A	F194
-B68C	3764
-B68E	0124
-B690	9D66
-B692	B7B5
-B694	0224
-B696	B7A7
-B698	0224
-B69A	1304
-B69C	0440
-B69E	9387
-B6A0	077B
-B6A2	9386
-B6A4	F6BF
-B6A6	1146
-B6A8	9385
-B6AA	85F1
-B6AC	0545
-B6AE	5CC4
-B6B0	97E0
-B6B2	FFFB
-B6B4	E780
-B6B6	002E
-B6B8	C166
-B6BA	B7B5
-B6BC	0224
-B6BE	FD16
-B6C0	3146
-B6C2	9385
-B6C4	858F
-B6C6	4145
-B6C8	97E0
-B6CA	FFFB
-B6CC	E780
-B6CE	802C
-B6D0	37B7
-B6D2	0224
-B6D4	1307
-B6D6	C7AE
-B6D8	B7A7
-B6DA	0224
-B6DC	9387
-B6DE	8754
-B6E0	78C8
-B6E2	37B7
-B6E4	0224
-B6E6	A380
-B6E8	0706
-B6EA	2381
-B6EC	0706
-B6EE	1307
-B6F0	07BA
-B6F2	B7B7
-B6F4	0224
-B6F6	18D4
-B6F8	9387
-B6FA	C723
-B6FC	37B7
-B6FE	0224
-B700	7CC4
-B702	1307
-B704	8730
-B706	B7B7
-B708	0224
-B70A	18C0
-B70C	9387
-B70E	472C
-B710	23AA
-B712	F1A4
-B714	1743
-B716	02FC
-B718	6700
-B71A	03DD
-B71C	0000
-B71E	0000
-B720	6610
-B722	E538
-B724	0000
-B726	0000
-B728	BF3F
-B72A	0000
-B72C	0000
-B72E	0000
-B730	008D
-B732	0000
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-25D2	0102
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-5ACC	6505
-FCFC	4000
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3234	0120
-3236	1600
-3238	0A14
-323A	2A2A
-323C	010F
-323E	0419
-3240	143A
-3242	0A4B
-3244	0101
-3246	0101
-3248	0010
-3252	C800
-3254	C400
-3256	C200
-3258	BE00
-325A	BC00
-3266	0100
-3268	0200
-326A	2A00
-326C	0000
-326E	3F00
-3270	0A00
-3272	1900
-3274	0C00
-3276	2000
-3278	2300
-327A	2100
-327C	3000
-327E	1100
-3280	0C00
-3282	2000
-3284	2300
-3286	2100
-3288	3000
-328A	1100
-328C	0F00
-328E	1900
-3290	0A00
-3292	0B00
-3296	0800
-3298	0F00
-329A	1900
-329C	0A00
-329E	0B00
-32A0	0000
-32A2	0800
-32A4	0F00
-32A6	1900
-32A8	0A00
-32AA	0B00
-32AC	0000
-32AE	0800
-3330	0108
-3334	0100
-3336	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_short_0325_zhuque.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_short_0325_zhuque.txt
deleted file mode 100755
index b9cc093c..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/setting_file/init_front_short_0325_zhuque.txt
+++ /dev/null
@@ -1,1189 +0,0 @@
-FCFC	4000
-0000	000E
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0000
-FCFC	2001
-3C60	0000
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	0036
-84C8	60C5
-84CA	0224
-84CC	44AB
-84CE	0224
-84D0	44AB
-84D2	0224
-84D4	44AB
-84D6	0224
-84D8	44AB
-84DA	0224
-84DC	44AB
-84DE	0224
-A548	00B2
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	008A
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	0100
-A5A2	00AC
-A5A4	0000
-A5A6	0000
-A5A8	0000
-A5AA	0000
-A5AC	0000
-A5AE	0000
-A5B0	0000
-A5B2	0000
-A5B4	0000
-A5B6	0000
-A5B8	0000
-A5BA	0000
-A5BC	0000
-A5BE	0000
-A5C0	0000
-A5C2	0000
-A5C4	0000
-A5C6	0000
-A5C8	0000
-A5CA	0000
-A5CC	0000
-A5CE	0000
-A5D0	0000
-A5D2	0000
-A5D4	0000
-A5D6	0000
-A5D8	0000
-A5DA	0000
-A5DC	0000
-A5DE	0000
-A5E0	0000
-A5E2	0000
-A5E4	0000
-A5E6	0000
-A5E8	0000
-A5EA	0000
-A5EC	000F
-A5EE	000F
-A5F0	000F
-A5F2	000F
-A5F4	0000
-A5F6	0000
-A5F8	0000
-A5FA	0000
-A5FC	0000
-A5FE	0000
-A600	0000
-A602	0000
-A604	0000
-A606	0034
-BB84	00E7
-BB86	0000
-BB88	0000
-BB8A	0100
-BB8C	0800
-BB8E	1000
-BB90	2000
-BB92	9A00
-BB94	9A00
-BB96	9A00
-BB98	9A00
-BB9A	9600
-BB9C	9600
-BB9E	9600
-BBA0	9600
-BBA2	9300
-BBA4	9300
-BBA6	9300
-BBA8	9300
-BBAA	9000
-BBAC	9000
-BBAE	9000
-BBB0	9000
-BBB2	8D00
-BBB4	8D00
-BBB6	8D00
-BBB8	8D00
-BBBA	3F00
-BBBC	3F00
-BBBE	3F00
-BBC0	3F00
-BBC2	1E00
-BBC4	1E00
-BBC6	1E00
-BBC8	1E00
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0000
-BBD2	0800
-BBD4	0800
-BBD6	0800
-BBD8	0800
-BBDA	0000
-BBDC	0000
-BBDE	0000
-BBE0	0000
-BBE2	3F00
-BBE4	3F00
-BBE6	3F00
-BBE8	3F00
-BBEA	3400
-BBEC	3400
-BBEE	3400
-BBF0	3400
-BBF2	0A00
-BBF4	0A00
-BBF6	0A00
-BBF8	0A00
-BBFA	1000
-BBFC	1000
-BBFE	1000
-BC00	1000
-BC02	0600
-BC04	0600
-BC06	0600
-BC08	0600
-BC0A	0C00
-BC0C	0C00
-BC0E	0C00
-BC10	0C00
-BC12	0000
-BC14	0000
-BC16	0000
-BC18	0000
-BC1A	1000
-BC1C	1000
-BC1E	1000
-BC20	1000
-BC22	1000
-BC24	1000
-BC26	1000
-BC28	1000
-BC2A	2000
-BC2C	1000
-BC2E	1000
-BC30	1000
-BC32	0600
-BC34	0600
-BC36	0600
-BC38	0600
-BC3A	1C00
-BC3C	1C00
-BC3E	1C00
-BC40	1C00
-BC42	0600
-BC44	0600
-BC46	0600
-BC48	0600
-BC4A	2A00
-BC4C	2A00
-BC4E	2A00
-BC50	2A00
-BC52	0200
-BC54	0200
-BC56	0200
-BC58	0200
-BC5A	1000
-BC5C	1000
-BC5E	1000
-BC60	1000
-BC62	0E00
-BC64	0E00
-BC66	0E00
-BC68	0E00
-BC6A	2800
-BC6C	2800
-BC6E	2800
-BC70	2800
-BC72	1800
-BC74	1800
-BC76	1800
-BC78	1800
-BC7A	0800
-BC7C	0800
-BC7E	0800
-BC80	0800
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0000
-BC8A	2400
-BC8C	2400
-BC8E	2400
-BC90	2400
-BC92	00AF
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	94C4
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	7CAC
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	0CC4
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	18A6
-570A	0224
-570C	0453
-570E	0020
-5710	A0A7
-5712	0224
-5714	C850
-5716	0220
-5718	B8AC
-571A	0224
-571C	2C88
-571E	0220
-5720	F0AD
-5722	0224
-5724	7C82
-5726	0120
-5728	C8B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	64B5
-5732	0224
-5734	1081
-5736	0320
-5738	70B9
-573A	0224
-573C	BCFD
-573E	0220
-5740	E4B9
-5742	0224
-5744	BCA5
-5746	0420
-5748	7CBA
-574A	0224
-574C	B803
-574E	0320
-5750	E4BC
-5752	0224
-5754	8424
-5756	0220
-5758	B0BD
-575A	0224
-575C	9C4C
-575E	0220
-5760	D0BF
-5762	0224
-5764	0C22
-5766	0220
-5768	54BE
-576A	0224
-FCFC	2002
-C398	29E1
-C39A	1733
-C39C	02FC
-C39E	E702
-C3A0	6312
-C3A2	B797
-C3A4	0124
-C3A6	9387
-C3A8	0753
-C3AA	8564
-C3AC	BE94
-C3AE	03C7
-C3B0	E4B6
-C3B2	8D66
-C3B4	3384
-C3B6	D700
-C3B8	8327
-C3BA	846E
-C3BC	05C3
-C3BE	858B
-C3C0	89CB
-C3C2	B787
-C3C4	0040
-C3C6	83D7
-C3C8	87F4
-C3CA	2147
-C3CC	E18B
-C3CE	638B
-C3D0	E702
-C3D2	1733
-C3D4	02FC
-C3D6	6700
-C3D8	2311
-C3DA	8280
-C3DC	1147
-C3DE	E390
-C3E0	E7FE
-C3E2	B7D7
-C3E4	0124
-C3E6	83C7
-C3E8	07FA
-C3EA	E5D7
-C3EC	97C0
-C3EE	00FC
-C3F0	E780
-C3F2	401F
-C3F4	3787
-C3F6	0224
-C3F8	8546
-C3FA	8327
-C3FC	846E
-C3FE	A300
-C400	D74E
-C402	75BF
-C404	2389
-C406	04B6
-C408	E9B7
-C40A	0100
-C40C	1733
-C40E	02FC
-C410	E702
-C412	A309
-C414	2A84
-C416	2E8A
-C418	9750
-C41A	FFFB
-C41C	E780
-C41E	004D
-C420	1DC5
-C422	B797
-C424	0124
-C426	9387
-C428	0753
-C42A	0567
-C42C	3E97
-C42E	8346
-C430	37B7
-C432	0547
-C434	6385
-C436	E600
-C438	83C7
-C43A	2741
-C43C	89CB
-C43E	B787
-C440	0224
-C442	03C7
-C444	B74A
-C446	8547
-C448	A284
-C44A	630F
-C44C	F702
-C44E	B7E7
-C450	0124
-C452	9387
-C454	0787
-C456	83A9
-C458	870A
-C45A	03A9
-C45C	C70A
-C45E	0146
-C460	CE85
-C462	4A85
-C464	9720
-C466	01FC
-C468	E780
-C46A	005E
-C46C	D285
-C46E	2285
-C470	9780
-C472	01FC
-C474	E780
-C476	001B
-C478	AA84
-C47A	0546
-C47C	CE85
-C47E	4A85
-C480	9720
-C482	01FC
-C484	E780
-C486	405C
-C488	2685
-C48A	1733
-C48C	02FC
-C48E	6700
-C490	0305
-C492	0100
-C494	1733
-C496	02FC
-C498	E702
-C49A	C302
-C49C	9750
-C49E	FFFB
-C4A0	E780
-C4A2	C044
-C4A4	09CD
-C4A6	9750
-C4A8	FFFB
-C4AA	E780
-C4AC	2047
-C4AE	01E9
-C4B0	B7A7
-C4B2	0124
-C4B4	9387
-C4B6	0753
-C4B8	83A7
-C4BA	47B2
-C4BC	95EF
-C4BE	9750
-C4C0	FFFB
-C4C2	E780
-C4C4	A042
-C4C6	0DED
-C4C8	B7E7
-C4CA	0124
-C4CC	9387
-C4CE	0787
-C4D0	8457
-C4D2	C057
-C4D4	0146
-C4D6	A685
-C4D8	2285
-C4DA	9720
-C4DC	01FC
-C4DE	E780
-C4E0	A056
-C4E2	9750
-C4E4	00FC
-C4E6	E780
-C4E8	60D8
-C4EA	0546
-C4EC	A685
-C4EE	2285
-C4F0	9720
-C4F2	01FC
-C4F4	E780
-C4F6	4055
-C4F8	1733
-C4FA	02FC
-C4FC	6700
-C4FE	C3FE
-C500	9750
-C502	FFFB
-C504	E780
-C506	8041
-C508	61F1
-C50A	9760
-C50C	01FC
-C50E	E780
-C510	20D8
-C512	B7D7
-C514	0124
-C516	03D4
-C518	07ED
-C51A	AA84
-C51C	97C0
-C51E	01FC
-C520	E780
-C522	C051
-C524	3314
-C526	A400
-C528	97C0
-C52A	01FC
-C52C	E780
-C52E	C052
-C530	3354
-C532	A440
-C534	E3FA
-C536	84F8
-C538	C1B7
-C53A	0100
-C53C	B7C7
-C53E	0224
-C540	03C7
-C542	0739
-C544	B7D7
-C546	0124
-C548	23A8
-C54A	E7DA
-C54C	B7C7
-C54E	0224
-C550	3767
-C552	0124
-C554	9387
-C556	8739
-C558	2324
-C55A	F742
-C55C	8280
-C55E	0100
-C560	1733
-C562	02FC
-C564	E702
-C566	03F6
-C568	B7C6
-C56A	0224
-C56C	B787
-C56E	0324
-C570	9386
-C572	065C
-C574	37A7
-C576	0124
-C578	9387
-C57A	07FF
-C57C	1307
-C57E	0753
-C580	958F
-C582	232C
-C584	D7B4
-C586	232E
-C588	F7B4
-C58A	9720
-C58C	01FC
-C58E	E780
-C590	60EF
-C592	19C5
-C594	EFD0
-C596	1FE3
-C598	EFF0
-C59A	4FD3
-C59C	7133
-C59E	793F
-C5A0	1733
-C5A2	02FC
-C5A4	6700
-C5A6	43F4
-C5A8	0000
-C5AA	0000
-C5AC	0000
-C5AE	0000
-C5B0	BD10
-C5B2	E538
-C5B4	0000
-C5B6	0000
-C5B8	BEFF
-C5BA	0F00
-C5BC	0000
-C5BE	0000
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-77D2	0000
-780A	0000
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-25D2	0102
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-5ACC	6505
-FCFC	4000
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3244	0101
-3246	0101
-3248	0010
-3266	0100
-3330	0108
-3334	0100
-3336	0000
-FCFC	2002
-BB8A	0100
-BB8C	0800
-BB8E	1000
-BB90	2000
-BB92	C800
-BB94	C800
-BB96	C800
-BB98	C800
-BB9A	C400
-BB9C	C400
-BB9E	C400
-BBA0	C400
-BBA2	C200
-BBA4	C200
-BBA6	C200
-BBA8	C200
-BBAA	BE00
-BBAC	BE00
-BBAE	BE00
-BBB0	BE00
-BBB2	BC00
-BBB4	BC00
-BBB6	BC00
-BBB8	BC00
-BBBA	2000
-BBBC	2000
-BBBE	2000
-BBC0	2000
-BBC2	1600
-BBC4	1600
-BBC6	1600
-BBC8	1600
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0000
-BBD2	0A00
-BBD4	0A00
-BBD6	0A00
-BBD8	0A00
-BBDA	1400
-BBDC	1400
-BBDE	1400
-BBE0	1400
-BBE2	2A00
-BBE4	2A00
-BBE6	2A00
-BBE8	2A00
-BBEA	2A00
-BBEC	2A00
-BBEE	2A00
-BBF0	2A00
-BBF2	0100
-BBF4	0100
-BBF6	0100
-BBF8	0100
-BBFA	0F00
-BBFC	0F00
-BBFE	0F00
-BC00	0F00
-BC02	0400
-BC04	0400
-BC06	0400
-BC08	0400
-BC0A	1900
-BC0C	1900
-BC0E	1900
-BC10	1900
-BC12	1400
-BC14	1400
-BC16	1400
-BC18	1400
-BC1A	3A00
-BC1C	3A00
-BC1E	3A00
-BC20	3A00
-BC22	0A00
-BC24	0A00
-BC26	0A00
-BC28	0A00
-BC2A	4B00
-BC2C	4B00
-BC2E	4B00
-BC30	4B00
-BC32	0200
-BC34	0600
-BC36	0C00
-BC38	0C00
-BC3A	2A00
-BC3C	2500
-BC3E	2000
-BC40	2000
-BC42	0000
-BC44	1000
-BC46	2300
-BC48	2300
-BC4A	3F00
-BC4C	3100
-BC4E	2100
-BC50	2100
-BC52	0A00
-BC54	1B00
-BC56	3000
-BC58	3000
-BC5A	1900
-BC5C	1500
-BC5E	1100
-BC60	1100
-BC62	0F00
-BC64	0F00
-BC66	0F00
-BC68	0F00
-BC6A	1900
-BC6C	1900
-BC6E	1900
-BC70	1900
-BC72	0A00
-BC74	0A00
-BC76	0A00
-BC78	0A00
-BC7A	0B00
-BC7C	0B00
-BC7E	0B00
-BC80	0B00
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0000
-BC8A	0800
-BC8C	0800
-BC8E	0800
-BC90	0800
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1front_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1front_Sensor_setting.h
deleted file mode 100755
index e7d67070..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1front_Sensor_setting.h
+++ /dev/null
@@ -1,19534 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 zhuquec1front_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _ZHUQUEC1FRONTMIPI_SENSOR_SETTING_H
-#define _ZHUQUEC1FRONTMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 zhuquec1front_sensor_init_pre_setting1[] = {
-	0xFCFC, 0x4000,
-	0x0000, 0x000D,
-	0x0000, 0x38E5,
-	0x6018, 0x0001,
-};
-
-static u16 zhuquec1front_sensor_init_pre_setting2[] = {
-	0x7002, 0x0408,
-	0x6014, 0x0001,
-	0xFCFC, 0x2002,
-	0x1E92, 0x8000,
-	0x1E84, 0x282B,
-	0x1E86, 0x0320,
-	0xFCFC, 0x4000,
-	0x7002, 0x0008,
-};
-
-static u16 zhuquec1front_sensor_init_setting[] = {
-	0xFCFC, 0x2000,
-	0xDCF0, 0x0101,
-	0xFCFC, 0x2001,
-	0x3C60, 0x0000,
-	0xFCFC, 0x2002,
-	0x849C, 0x0100,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0x84A4, 0x0000,
-	0x84A6, 0x0000,
-	0x84A8, 0x0000,
-	0x84AA, 0x0001,
-	0x84AC, 0x01FF,
-	0x84B0, 0x8089,
-	0x84B2, 0x0000,
-	0x84B4, 0x8889,
-	0x84B6, 0x0000,
-	0x84B8, 0xC097,
-	0x84BA, 0x0000,
-	0x84BC, 0xA60E,
-	0x84BE, 0x0000,
-	0x84C0, 0x2206,
-	0x84C2, 0x0000,
-	0x84C4, 0x006C,
-	0x84C8, 0x34B6,
-	0x84CA, 0x0224,
-	0x84CC, 0xB8AA,
-	0x84CE, 0x0224,
-	0x84D0, 0xB8AA,
-	0x84D2, 0x0224,
-	0x84D4, 0xB8AA,
-	0x84D6, 0x0224,
-	0x84D8, 0xB8AA,
-	0x84DA, 0x0224,
-	0x84DC, 0xB8AA,
-	0x84DE, 0x0224,
-	0xA548, 0x0046,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xA56C, 0x0000,
-	0xA56E, 0x0000,
-	0xA570, 0x0000,
-	0xA572, 0x0000,
-	0xA574, 0x00DB,
-	0xA576, 0x0000,
-	0xA578, 0x0000,
-	0xA57A, 0x0000,
-	0xA57C, 0x0000,
-	0xA57E, 0x0000,
-	0xA580, 0x0000,
-	0xA582, 0x0000,
-	0xA584, 0x0000,
-	0xA586, 0x0000,
-	0xA588, 0x0000,
-	0xA58A, 0x0000,
-	0xA58C, 0x0000,
-	0xA58E, 0x0000,
-	0xA590, 0x0000,
-	0xA592, 0x0000,
-	0xA594, 0x0000,
-	0xA596, 0x0000,
-	0xA598, 0x0000,
-	0xA59A, 0x0000,
-	0xA59C, 0x0000,
-	0xA59E, 0x0000,
-	0xA5A0, 0x013C,
-	0xFCFC, 0x2001,
-	0x5634, 0x041D,
-	0x5636, 0x0420,
-	0x5638, 0x3C85,
-	0x563A, 0x0224,
-	0x563C, 0x3CE6,
-	0x563E, 0x0320,
-	0x5640, 0xD885,
-	0x5642, 0x0224,
-	0x5644, 0xD06E,
-	0x5646, 0x0320,
-	0x5648, 0xC48D,
-	0x564A, 0x0224,
-	0x564C, 0x4877,
-	0x564E, 0x0320,
-	0x5650, 0xCC90,
-	0x5652, 0x0224,
-	0x5654, 0x6812,
-	0x5656, 0x0320,
-	0x5658, 0xB88F,
-	0x565A, 0x0224,
-	0x565C, 0xE8FE,
-	0x565E, 0x0220,
-	0x5660, 0x5491,
-	0x5662, 0x0224,
-	0x5664, 0xA462,
-	0x5666, 0x0320,
-	0x5668, 0x9C95,
-	0x566A, 0x0224,
-	0x566C, 0x901B,
-	0x566E, 0x0020,
-	0x5670, 0x2896,
-	0x5672, 0x0224,
-	0x5674, 0xC446,
-	0x5676, 0x0320,
-	0x5678, 0xE896,
-	0x567A, 0x0224,
-	0x567C, 0x1427,
-	0x567E, 0x0320,
-	0x5680, 0xC498,
-	0x5682, 0x0224,
-	0x5684, 0x304C,
-	0x5686, 0x0220,
-	0x5688, 0x749B,
-	0x568A, 0x0224,
-	0x568C, 0xC82C,
-	0x568E, 0x0220,
-	0x5690, 0xD09B,
-	0x5692, 0x0224,
-	0x5694, 0x484F,
-	0x5696, 0x0220,
-	0x5698, 0x289C,
-	0x569A, 0x0224,
-	0x569C, 0xB041,
-	0x569E, 0x0220,
-	0x56A0, 0x3C9A,
-	0x56A2, 0x0224,
-	0x56A4, 0xC81D,
-	0x56A6, 0x0420,
-	0x56A8, 0xFC9A,
-	0x56AA, 0x0224,
-	0x56AC, 0xAC7F,
-	0x56AE, 0x0420,
-	0x56B0, 0x8C86,
-	0x56B2, 0x0224,
-	0x56B4, 0x7C80,
-	0x56B6, 0x0420,
-	0x56B8, 0x1086,
-	0x56BA, 0x0224,
-	0x56BC, 0xF887,
-	0x56BE, 0x0320,
-	0x56C0, 0xF0AB,
-	0x56C2, 0x0224,
-	0x56C4, 0x1007,
-	0x56C6, 0x0320,
-	0x56C8, 0xE08E,
-	0x56CA, 0x0224,
-	0x56CC, 0x1409,
-	0x56CE, 0x0020,
-	0x56D0, 0x2495,
-	0x56D2, 0x0224,
-	0x56D4, 0x2046,
-	0x56D6, 0x0420,
-	0x56D8, 0xC087,
-	0x56DA, 0x0224,
-	0x56DC, 0xB05B,
-	0x56DE, 0x0420,
-	0x56E0, 0x4088,
-	0x56E2, 0x0224,
-	0x56E4, 0x505C,
-	0x56E6, 0x0320,
-	0x56E8, 0x448A,
-	0x56EA, 0x0224,
-	0x56EC, 0xA45B,
-	0x56EE, 0x0320,
-	0x56F0, 0x5089,
-	0x56F2, 0x0224,
-	0x56F4, 0x306A,
-	0x56F6, 0x0420,
-	0x56F8, 0x1485,
-	0x56FA, 0x0224,
-	0x56FC, 0x90F8,
-	0x56FE, 0x0220,
-	0x5700, 0x44A1,
-	0x5702, 0x0224,
-	0x5704, 0x0454,
-	0x5706, 0x0120,
-	0x5708, 0xB0A5,
-	0x570A, 0x0224,
-	0x570C, 0x0453,
-	0x570E, 0x0020,
-	0x5710, 0x20A7,
-	0x5712, 0x0224,
-	0x5714, 0xC850,
-	0x5716, 0x0220,
-	0x5718, 0x2CAC,
-	0x571A, 0x0224,
-	0x571C, 0x2C88,
-	0x571E, 0x0220,
-	0x5720, 0x58AD,
-	0x5722, 0x0224,
-	0x5724, 0x7C82,
-	0x5726, 0x0120,
-	0x5728, 0x18B4,
-	0x572A, 0x0224,
-	0x572C, 0xACF3,
-	0x572E, 0x0320,
-	0x5730, 0xA8B4,
-	0x5732, 0x0224,
-	0x5734, 0x1081,
-	0x5736, 0x0320,
-	0x5738, 0xCCB5,
-	0x573A, 0x0224,
-	0xFCFC, 0x2002,
-	0xA5B0, 0x1753,
-	0xA5B2, 0x02FC,
-	0xA5B4, 0xE702,
-	0xA5B6, 0x03F1,
-	0xA5B8, 0xB7E7,
-	0xA5BA, 0x0124,
-	0xA5BC, 0x9387,
-	0xA5BE, 0x0787,
-	0xA5C0, 0x83A4,
-	0xA5C2, 0x870D,
-	0xA5C4, 0x03A4,
-	0xA5C6, 0xC70D,
-	0xA5C8, 0x0146,
-	0xA5CA, 0xA685,
-	0xA5CC, 0x2285,
-	0xA5CE, 0x9740,
-	0xA5D0, 0x01FC,
-	0xA5D2, 0xE780,
-	0xA5D4, 0x6047,
-	0xA5D6, 0x97B0,
-	0xA5D8, 0xFEFB,
-	0xA5DA, 0xE780,
-	0xA5DC, 0xE0E2,
-	0xA5DE, 0x0546,
-	0xA5E0, 0xA685,
-	0xA5E2, 0x2285,
-	0xA5E4, 0x9740,
-	0xA5E6, 0x01FC,
-	0xA5E8, 0xE780,
-	0xA5EA, 0x0046,
-	0xA5EC, 0x37A7,
-	0xA5EE, 0x0224,
-	0xA5F0, 0x9307,
-	0xA5F2, 0x8754,
-	0xA5F4, 0x03C6,
-	0xA5F6, 0xC702,
-	0xA5F8, 0x8546,
-	0xA5FA, 0x630B,
-	0xA5FC, 0xD600,
-	0xA5FE, 0x83C6,
-	0xA600, 0x0700,
-	0xA602, 0x0947,
-	0xA604, 0x638E,
-	0xA606, 0xE606,
-	0xA608, 0x1753,
-	0xA60A, 0x02FC,
-	0xA60C, 0x6700,
-	0xA60E, 0xC3ED,
-	0xA610, 0x03D5,
-	0xA612, 0x4705,
-	0xA614, 0x05C9,
-	0xA616, 0x83D8,
-	0xA618, 0x2705,
-	0xA61A, 0xB7E6,
-	0xA61C, 0x0124,
-	0xA61E, 0x83D5,
-	0xA620, 0x665F,
-	0xA622, 0x1307,
-	0xA624, 0x8754,
-	0xA626, 0x8146,
-	0xA628, 0x2548,
-	0xA62A, 0x0356,
-	0xA62C, 0xE702,
-	0xA62E, 0x0907,
-	0xA630, 0x63EA,
-	0xA632, 0xC50C,
-	0xA634, 0x8506,
-	0xA636, 0xE39A,
-	0xA638, 0x06FF,
-	0xA63A, 0x3707,
-	0xA63C, 0x0040,
-	0xA63E, 0x3A95,
-	0xA640, 0x2310,
-	0xA642, 0x1501,
-	0xA644, 0x03D5,
-	0xA646, 0x6705,
-	0xA648, 0x5DD9,
-	0xA64A, 0x83D8,
-	0xA64C, 0x2705,
-	0xA64E, 0x37E7,
-	0xA650, 0x0124,
-	0xA652, 0x8355,
-	0xA654, 0x675F,
-	0xA656, 0xBE86,
-	0xA658, 0x0147,
-	0xA65A, 0x2548,
-	0xA65C, 0x03D6,
-	0xA65E, 0xE602,
-	0xA660, 0x8906,
-	0xA662, 0x63E8,
-	0xA664, 0xC50A,
-	0xA666, 0x0507,
-	0xA668, 0xE31A,
-	0xA66A, 0x07FF,
-	0xA66C, 0x3707,
-	0xA66E, 0x0040,
-	0xA670, 0x3A95,
-	0xA672, 0x2310,
-	0xA674, 0x1501,
-	0xA676, 0x83C6,
-	0xA678, 0x0700,
-	0xA67A, 0x0947,
-	0xA67C, 0xE396,
-	0xA67E, 0xE6F8,
-	0xA680, 0x03D5,
-	0xA682, 0x8702,
-	0xA684, 0x1DC5,
-	0xA686, 0x83D8,
-	0xA688, 0x6702,
-	0xA68A, 0x37F7,
-	0xA68C, 0x0124,
-	0xA68E, 0x8355,
-	0xA690, 0xA781,
-	0xA692, 0xBE86,
-	0xA694, 0x0147,
-	0xA696, 0x2548,
-	0xA698, 0x03D6,
-	0xA69A, 0x2600,
-	0xA69C, 0x8906,
-	0xA69E, 0x63ED,
-	0xA6A0, 0xC504,
-	0xA6A2, 0x0507,
-	0xA6A4, 0xE31A,
-	0xA6A6, 0x07FF,
-	0xA6A8, 0x3707,
-	0xA6AA, 0x0040,
-	0xA6AC, 0x3A95,
-	0xA6AE, 0x2310,
-	0xA6B0, 0x1501,
-	0xA6B2, 0x03D5,
-	0xA6B4, 0xA702,
-	0xA6B6, 0x29D9,
-	0xA6B8, 0x83D8,
-	0xA6BA, 0x6702,
-	0xA6BC, 0x37F7,
-	0xA6BE, 0x0124,
-	0xA6C0, 0x8355,
-	0xA6C2, 0xA781,
-	0xA6C4, 0xBE86,
-	0xA6C6, 0x0147,
-	0xA6C8, 0x2548,
-	0xA6CA, 0x03D6,
-	0xA6CC, 0x2600,
-	0xA6CE, 0x8906,
-	0xA6D0, 0x63EE,
-	0xA6D2, 0xC500,
-	0xA6D4, 0x0507,
-	0xA6D6, 0xE31A,
-	0xA6D8, 0x07FF,
-	0xA6DA, 0xB707,
-	0xA6DC, 0x0040,
-	0xA6DE, 0x3E95,
-	0xA6E0, 0x2310,
-	0xA6E2, 0x1501,
-	0xA6E4, 0x1753,
-	0xA6E6, 0x02FC,
-	0xA6E8, 0x6700,
-	0xA6EA, 0x03E0,
-	0xA6EC, 0x2107,
-	0xA6EE, 0x0607,
-	0xA6F0, 0xBA97,
-	0xA6F2, 0x83D8,
-	0xA6F4, 0x4700,
-	0xA6F6, 0xD5B7,
-	0xA6F8, 0x2107,
-	0xA6FA, 0x0607,
-	0xA6FC, 0x3E97,
-	0xA6FE, 0x8358,
-	0xA700, 0x4700,
-	0xA702, 0x5DB7,
-	0xA704, 0x1387,
-	0xA706, 0x0602,
-	0xA708, 0x0607,
-	0xA70A, 0x3E97,
-	0xA70C, 0x8358,
-	0xA70E, 0x0700,
-	0xA710, 0x2DB7,
-	0xA712, 0x1307,
-	0xA714, 0x0702,
-	0xA716, 0x0607,
-	0xA718, 0x3E97,
-	0xA71A, 0x8358,
-	0xA71C, 0x0700,
-	0xA71E, 0xB9B7,
-	0xA720, 0x1753,
-	0xA722, 0x02FC,
-	0xA724, 0xE702,
-	0xA726, 0x83D7,
-	0xA728, 0x3284,
-	0xA72A, 0xB7E7,
-	0xA72C, 0x0124,
-	0xA72E, 0x032B,
-	0xA730, 0x4600,
-	0xA732, 0x832A,
-	0xA734, 0x4609,
-	0xA736, 0x032A,
-	0xA738, 0xC604,
-	0xA73A, 0x0348,
-	0xA73C, 0x8600,
-	0xA73E, 0x9387,
-	0xA740, 0x0787,
-	0xA742, 0x0346,
-	0xA744, 0x8609,
-	0xA746, 0x0347,
-	0xA748, 0x0405,
-	0xA74A, 0x03AC,
-	0xA74C, 0x070E,
-	0xA74E, 0x83AB,
-	0xA750, 0x470E,
-	0xA752, 0x3318,
-	0xA754, 0x0B01,
-	0xA756, 0x3317,
-	0xA758, 0xEA00,
-	0xA75A, 0x3396,
-	0xA75C, 0xCA00,
-	0xA75E, 0x2322,
-	0xA760, 0x0401,
-	0xA762, 0x78C4,
-	0xA764, 0xAA84,
-	0xA766, 0x2E89,
-	0xA768, 0x232A,
-	0xA76A, 0xC408,
-	0xA76C, 0xE285,
-	0xA76E, 0x5E85,
-	0xA770, 0x0146,
-	0xA772, 0xB689,
-	0xA774, 0x9740,
-	0xA776, 0x01FC,
-	0xA778, 0xE780,
-	0xA77A, 0x002D,
-	0xA77C, 0xCE86,
-	0xA77E, 0x2286,
-	0xA780, 0xCA85,
-	0xA782, 0x2685,
-	0xA784, 0x97B0,
-	0xA786, 0xFDFB,
-	0xA788, 0xE780,
-	0xA78A, 0x00B8,
-	0xA78C, 0x0546,
-	0xA78E, 0xE285,
-	0xA790, 0x5E85,
-	0xA792, 0x9740,
-	0xA794, 0x01FC,
-	0xA796, 0xE780,
-	0xA798, 0x202B,
-	0xA79A, 0x2322,
-	0xA79C, 0x6401,
-	0xA79E, 0x232A,
-	0xA7A0, 0x5409,
-	0xA7A2, 0x2326,
-	0xA7A4, 0x4405,
-	0xA7A6, 0x1753,
-	0xA7A8, 0x02FC,
-	0xA7AA, 0x6700,
-	0xA7AC, 0xA3D2,
-	0xA7AE, 0x0100,
-	0xA7B0, 0x1753,
-	0xA7B2, 0x02FC,
-	0xA7B4, 0xE702,
-	0xA7B6, 0x03D1,
-	0xA7B8, 0x2A84,
-	0xA7BA, 0xEFE0,
-	0xA7BC, 0xAFB2,
-	0xA7BE, 0xA147,
-	0xA7C0, 0x6306,
-	0xA7C2, 0xF400,
-	0xA7C4, 0x1753,
-	0xA7C6, 0x02FC,
-	0xA7C8, 0x6700,
-	0xA7CA, 0x03D2,
-	0xA7CC, 0x9770,
-	0xA7CE, 0xFFFB,
-	0xA7D0, 0xE780,
-	0xA7D2, 0xC014,
-	0xA7D4, 0x39C5,
-	0xA7D6, 0xB737,
-	0xA7D8, 0x0124,
-	0xA7DA, 0x83C7,
-	0xA7DC, 0x271A,
-	0xA7DE, 0xFDD3,
-	0xA7E0, 0x3784,
-	0xA7E2, 0x0040,
-	0xA7E4, 0x8355,
-	0xA7E6, 0xE4F3,
-	0xA7E8, 0x0D45,
-	0xA7EA, 0x93E5,
-	0xA7EC, 0x0524,
-	0xA7EE, 0x97D0,
-	0xA7F0, 0xFFFB,
-	0xA7F2, 0xE780,
-	0xA7F4, 0x6013,
-	0xA7F6, 0x8355,
-	0xA7F8, 0x24F7,
-	0xA7FA, 0xB7A7,
-	0xA7FC, 0x0124,
-	0xA7FE, 0x9387,
-	0xA800, 0x0753,
-	0xA802, 0x03D7,
-	0xA804, 0x47B6,
-	0xA806, 0xC205,
-	0xA808, 0xC181,
-	0xA80A, 0x1377,
-	0xA80C, 0xF7DB,
-	0xA80E, 0x93F5,
-	0xA810, 0xF5DB,
-	0xA812, 0x4145,
-	0xA814, 0x2392,
-	0xA816, 0xE7B6,
-	0xA818, 0x97D0,
-	0xA81A, 0xFFFB,
-	0xA81C, 0xE780,
-	0xA81E, 0xC010,
-	0xA820, 0x55B7,
-	0xA822, 0x9770,
-	0xA824, 0xFFFB,
-	0xA826, 0xE780,
-	0xA828, 0x600C,
-	0xA82A, 0x55D5,
-	0xA82C, 0x9780,
-	0xA82E, 0xFFFB,
-	0xA830, 0xE780,
-	0xA832, 0x4086,
-	0xA834, 0x19C9,
-	0xA836, 0xB797,
-	0xA838, 0x0124,
-	0xA83A, 0x9387,
-	0xA83C, 0x07D7,
-	0xA83E, 0x03C7,
-	0xA840, 0x8703,
-	0xA842, 0x83C7,
-	0xA844, 0x2706,
-	0xA846, 0x6306,
-	0xA848, 0xF706,
-	0xA84A, 0x9780,
-	0xA84C, 0xFFFB,
-	0xA84E, 0xE780,
-	0xA850, 0x6084,
-	0xA852, 0x51D1,
-	0xA854, 0xB797,
-	0xA856, 0x0124,
-	0xA858, 0x9387,
-	0xA85A, 0x07D7,
-	0xA85C, 0x03C7,
-	0xA85E, 0xC701,
-	0xA860, 0x83C7,
-	0xA862, 0x2706,
-	0xA864, 0xE319,
-	0xA866, 0xF7F6,
-	0xA868, 0xB727,
-	0xA86A, 0x0224,
-	0xA86C, 0x0564,
-	0xA86E, 0x9387,
-	0xA870, 0x076B,
-	0xA872, 0xA297,
-	0xA874, 0x03C7,
-	0xA876, 0xF780,
-	0xA878, 0x8547,
-	0xA87A, 0x6317,
-	0xA87C, 0xF700,
-	0xA87E, 0xB737,
-	0xA880, 0x0124,
-	0xA882, 0x83C7,
-	0xA884, 0x57A5,
-	0xA886, 0xB1C3,
-	0xA888, 0xB787,
-	0xA88A, 0x0040,
-	0xA88C, 0x83D5,
-	0xA88E, 0xE7F3,
-	0xA890, 0x0D45,
-	0xA892, 0x93E5,
-	0xA894, 0x0501,
-	0xA896, 0x97D0,
-	0xA898, 0xFFFB,
-	0xA89A, 0xE780,
-	0xA89C, 0xE008,
-	0xA89E, 0xB7A7,
-	0xA8A0, 0x0124,
-	0xA8A2, 0x9387,
-	0xA8A4, 0x0753,
-	0xA8A6, 0x03D7,
-	0xA8A8, 0x47B6,
-	0xA8AA, 0x3D9B,
-	0xA8AC, 0x2392,
-	0xA8AE, 0xE7B6,
-	0xA8B0, 0x1DB7,
-	0xA8B2, 0xB727,
-	0xA8B4, 0x0224,
-	0xA8B6, 0x0564,
-	0xA8B8, 0x9387,
-	0xA8BA, 0x076B,
-	0xA8BC, 0xA297,
-	0xA8BE, 0x03C7,
-	0xA8C0, 0xF780,
-	0xA8C2, 0x9147,
-	0xA8C4, 0xE30D,
-	0xA8C6, 0xF7FA,
-	0xA8C8, 0xC1B7,
-	0xA8CA, 0xB787,
-	0xA8CC, 0x0040,
-	0xA8CE, 0x83D5,
-	0xA8D0, 0xE7F3,
-	0xA8D2, 0x0D45,
-	0xA8D4, 0x93E5,
-	0xA8D6, 0x0504,
-	0xA8D8, 0x97D0,
-	0xA8DA, 0xFFFB,
-	0xA8DC, 0xE780,
-	0xA8DE, 0xC004,
-	0xA8E0, 0xB797,
-	0xA8E2, 0x0124,
-	0xA8E4, 0x9387,
-	0xA8E6, 0x0753,
-	0xA8E8, 0xA297,
-	0xA8EA, 0x03D7,
-	0xA8EC, 0x47B6,
-	0xA8EE, 0x1377,
-	0xA8F0, 0xF7FB,
-	0xA8F2, 0x2392,
-	0xA8F4, 0xE7B6,
-	0xA8F6, 0xC5B5,
-	0xA8F8, 0x3571,
-	0xA8FA, 0x22CF,
-	0xA8FC, 0x26CD,
-	0xA8FE, 0x7324,
-	0xA900, 0x2034,
-	0xA902, 0xF324,
-	0xA904, 0x1034,
-	0xA906, 0x7360,
-	0xA908, 0x0430,
-	0xA90A, 0x06CB,
-	0xA90C, 0x16C9,
-	0xA90E, 0x1AC7,
-	0xA910, 0x1EC5,
-	0xA912, 0x2AC3,
-	0xA914, 0x2EC1,
-	0xA916, 0xB2DE,
-	0xA918, 0xB6DC,
-	0xA91A, 0xBADA,
-	0xA91C, 0xBED8,
-	0xA91E, 0xC2D6,
-	0xA920, 0xC6D4,
-	0xA922, 0xF2D2,
-	0xA924, 0xF6D0,
-	0xA926, 0xFACE,
-	0xA928, 0xFECC,
-	0xA92A, 0x82E2,
-	0xA92C, 0x86E0,
-	0xA92E, 0x0AFE,
-	0xA930, 0x0EFC,
-	0xA932, 0x12FA,
-	0xA934, 0x16F8,
-	0xA936, 0x1AF6,
-	0xA938, 0x1EF4,
-	0xA93A, 0x2AF2,
-	0xA93C, 0x2EF0,
-	0xA93E, 0x32EE,
-	0xA940, 0x36EC,
-	0xA942, 0x3AEA,
-	0xA944, 0x3EE8,
-	0xA946, 0x42E6,
-	0xA948, 0x46E4,
-	0xA94A, 0x72E2,
-	0xA94C, 0x76E0,
-	0xA94E, 0x272E,
-	0xA950, 0xE1FF,
-	0xA952, 0x272C,
-	0xA954, 0xF1FF,
-	0xA956, 0x9770,
-	0xA958, 0xFFFB,
-	0xA95A, 0xE780,
-	0xA95C, 0x20FC,
-	0xA95E, 0x19C5,
-	0xA960, 0x9770,
-	0xA962, 0xFFFB,
-	0xA964, 0xE780,
-	0xA966, 0x80F8,
-	0xA968, 0x631C,
-	0xA96A, 0x0512,
-	0xA96C, 0x9305,
-	0xA96E, 0x0024,
-	0xA970, 0x4145,
-	0xA972, 0x97D0,
-	0xA974, 0xFFFB,
-	0xA976, 0xE780,
-	0xA978, 0x2002,
-	0xA97A, 0x8145,
-	0xA97C, 0x9377,
-	0xA97E, 0x1500,
-	0xA980, 0x85C7,
-	0xA982, 0x37D7,
-	0xA984, 0x0124,
-	0xA986, 0xB7A7,
-	0xA988, 0x0124,
-	0xA98A, 0x1307,
-	0xA98C, 0x07C4,
-	0xA98E, 0x9387,
-	0xA990, 0x0753,
-	0xA992, 0x0356,
-	0xA994, 0x4707,
-	0xA996, 0x83D6,
-	0xA998, 0xA7B6,
-	0xA99A, 0x0506,
-	0xA99C, 0x93E6,
-	0xA99E, 0x1600,
-	0xA9A0, 0x231A,
-	0xA9A2, 0xC706,
-	0xA9A4, 0x2395,
-	0xA9A6, 0xD7B6,
-	0xA9A8, 0x9377,
-	0xA9AA, 0x2500,
-	0xA9AC, 0x85C7,
-	0xA9AE, 0x37D7,
-	0xA9B0, 0x0124,
-	0xA9B2, 0xB7A7,
-	0xA9B4, 0x0124,
-	0xA9B6, 0x1307,
-	0xA9B8, 0x07C4,
-	0xA9BA, 0x9387,
-	0xA9BC, 0x0753,
-	0xA9BE, 0x0356,
-	0xA9C0, 0xC70C,
-	0xA9C2, 0x83D6,
-	0xA9C4, 0xA7B6,
-	0xA9C6, 0x0506,
-	0xA9C8, 0x93E6,
-	0xA9CA, 0x2600,
-	0xA9CC, 0x2316,
-	0xA9CE, 0xC70C,
-	0xA9D0, 0x2395,
-	0xA9D2, 0xD7B6,
-	0xA9D4, 0x9377,
-	0xA9D6, 0x0520,
-	0xA9D8, 0x1375,
-	0xA9DA, 0x0504,
-	0xA9DC, 0xC5C3,
-	0xA9DE, 0xB7D7,
-	0xA9E0, 0x0124,
-	0xA9E2, 0x9387,
-	0xA9E4, 0x07C4,
-	0xA9E6, 0x03D7,
-	0xA9E8, 0x6708,
-	0xA9EA, 0x0507,
-	0xA9EC, 0x2393,
-	0xA9EE, 0xE708,
-	0xA9F0, 0xD1C5,
-	0xA9F2, 0x37A7,
-	0xA9F4, 0x0124,
-	0xA9F6, 0x1307,
-	0xA9F8, 0x0753,
-	0xA9FA, 0x8356,
-	0xA9FC, 0xA7B6,
-	0xA9FE, 0x93E6,
-	0xAA00, 0x0620,
-	0xAA02, 0x2315,
-	0xAA04, 0xD7B6,
-	0xAA06, 0x11C9,
-	0xAA08, 0x03D6,
-	0xAA0A, 0xA708,
-	0xAA0C, 0x0506,
-	0xAA0E, 0x2395,
-	0xAA10, 0xC708,
-	0xAA12, 0x93E6,
-	0xAA14, 0x0604,
-	0xAA16, 0x2315,
-	0xAA18, 0xD7B6,
-	0xAA1A, 0xDA40,
-	0xAA1C, 0xCA42,
-	0xAA1E, 0x3A43,
-	0xAA20, 0xAA43,
-	0xAA22, 0x1A45,
-	0xAA24, 0x8A45,
-	0xAA26, 0x7656,
-	0xAA28, 0xE656,
-	0xAA2A, 0x5657,
-	0xAA2C, 0xC657,
-	0xAA2E, 0x3658,
-	0xAA30, 0xA658,
-	0xAA32, 0x165E,
-	0xAA34, 0x865E,
-	0xAA36, 0x764F,
-	0xAA38, 0xE64F,
-	0xAA3A, 0x1660,
-	0xAA3C, 0x8660,
-	0xAA3E, 0x7271,
-	0xAA40, 0xE271,
-	0xAA42, 0x5272,
-	0xAA44, 0xC272,
-	0xAA46, 0x3273,
-	0xAA48, 0xA273,
-	0xAA4A, 0x1275,
-	0xAA4C, 0x8275,
-	0xAA4E, 0x7266,
-	0xAA50, 0xE266,
-	0xAA52, 0x5267,
-	0xAA54, 0xC267,
-	0xAA56, 0x3268,
-	0xAA58, 0xA268,
-	0xAA5A, 0x126E,
-	0xAA5C, 0x826E,
-	0xAA5E, 0x072F,
-	0xAA60, 0xC1FF,
-	0xAA62, 0x872F,
-	0xAA64, 0x81FF,
-	0xAA66, 0x7370,
-	0xAA68, 0x0430,
-	0xAA6A, 0x7390,
-	0xAA6C, 0x1434,
-	0xAA6E, 0x7310,
-	0xAA70, 0x2434,
-	0xAA72, 0x7A44,
-	0xAA74, 0xEA44,
-	0xAA76, 0x0D61,
-	0xAA78, 0x7300,
-	0xAA7A, 0x2030,
-	0xAA7C, 0x59DD,
-	0xAA7E, 0xB7D7,
-	0xAA80, 0x0124,
-	0xAA82, 0x9387,
-	0xAA84, 0x07C4,
-	0xAA86, 0x03D7,
-	0xAA88, 0xA708,
-	0xAA8A, 0x0507,
-	0xAA8C, 0x2395,
-	0xAA8E, 0xE708,
-	0xAA90, 0xC9D5,
-	0xAA92, 0x37A7,
-	0xAA94, 0x0124,
-	0xAA96, 0x1307,
-	0xAA98, 0x0753,
-	0xAA9A, 0x8356,
-	0xAA9C, 0xA7B6,
-	0xAA9E, 0x95BF,
-	0xAAA0, 0xB7A7,
-	0xAAA2, 0x0124,
-	0xAAA4, 0x83D5,
-	0xAAA6, 0x8709,
-	0xAAA8, 0x4145,
-	0xAAAA, 0x97D0,
-	0xAAAC, 0xFFFB,
-	0xAAAE, 0xE780,
-	0xAAB0, 0xA0EE,
-	0xAAB2, 0x8545,
-	0xAAB4, 0xE1B5,
-	0xAAB6, 0x0100,
-	0xAAB8, 0x8280,
-	0xAABA, 0x0100,
-	0xAABC, 0x1753,
-	0xAABE, 0x02FC,
-	0xAAC0, 0xE702,
-	0xAAC2, 0x43A0,
-	0xAAC4, 0x37E4,
-	0xAAC6, 0x0124,
-	0xAAC8, 0x1304,
-	0xAACA, 0x044C,
-	0xAACC, 0x8344,
-	0xAACE, 0xE40A,
-	0xAAD0, 0x8547,
-	0xAAD2, 0x2307,
-	0xAAD4, 0xF40A,
-	0xAAD6, 0x97A0,
-	0xAAD8, 0xFDFB,
-	0xAADA, 0xE780,
-	0xAADC, 0xE0EB,
-	0xAADE, 0x2307,
-	0xAAE0, 0x940A,
-	0xAAE2, 0x1753,
-	0xAAE4, 0x02FC,
-	0xAAE6, 0x6700,
-	0xAAE8, 0x23A0,
-	0xAAEA, 0x0100,
-	0xAAEC, 0xB7A7,
-	0xAAEE, 0x0224,
-	0xAAF0, 0x83C7,
-	0xAAF2, 0x075A,
-	0xAAF4, 0x0547,
-	0xAAF6, 0x6383,
-	0xAAF8, 0xE700,
-	0xAAFA, 0x8280,
-	0xAAFC, 0x1753,
-	0xAAFE, 0x02FC,
-	0xAB00, 0xE702,
-	0xAB02, 0xA39A,
-	0xAB04, 0x3794,
-	0xAB06, 0x0124,
-	0xAB08, 0x1304,
-	0xAB0A, 0x0453,
-	0xAB0C, 0x0347,
-	0xAB0E, 0x041B,
-	0xAB10, 0x4111,
-	0xAB12, 0x6307,
-	0xAB14, 0xF700,
-	0xAB16, 0x4101,
-	0xAB18, 0x1753,
-	0xAB1A, 0x02FC,
-	0xAB1C, 0x6700,
-	0xAB1E, 0x239C,
-	0xAB20, 0x8947,
-	0xAB22, 0xE31A,
-	0xAB24, 0xF5FE,
-	0xAB26, 0x8347,
-	0xAB28, 0x3441,
-	0xAB2A, 0xADC3,
-	0xAB2C, 0x83A9,
-	0xAB2E, 0x0500,
-	0xAB30, 0x2EC6,
-	0xAB32, 0x97C0,
-	0xAB34, 0x01FC,
-	0xAB36, 0xE780,
-	0xAB38, 0xE0C0,
-	0xAB3A, 0xAA84,
-	0xAB3C, 0x9780,
-	0xAB3E, 0x01FC,
-	0xAB40, 0xE780,
-	0xAB42, 0x40D0,
-	0xAB44, 0xB245,
-	0xAB46, 0x2A89,
-	0xAB48, 0x9C41,
-	0xAB4A, 0x63F3,
-	0xAB4C, 0x9700,
-	0xAB4E, 0xA687,
-	0xAB50, 0x8851,
-	0xAB52, 0x9CC1,
-	0xAB54, 0x2EC6,
-	0xAB56, 0x4A95,
-	0xAB58, 0x97B0,
-	0xAB5A, 0x00FC,
-	0xAB5C, 0xE780,
-	0xAB5E, 0xC0CD,
-	0xAB60, 0xB245,
-	0xAB62, 0xAA84,
-	0xAB64, 0xE8C9,
-	0xAB66, 0x3385,
-	0xAB68, 0x2901,
-	0xAB6A, 0x97B0,
-	0xAB6C, 0x00FC,
-	0xAB6E, 0xE780,
-	0xAB70, 0xA0CC,
-	0xAB72, 0x8567,
-	0xAB74, 0x3E94,
-	0xAB76, 0x8327,
-	0xAB78, 0xC483,
-	0xAB7A, 0x2695,
-	0xAB7C, 0xB245,
-	0xAB7E, 0x63F3,
-	0xAB80, 0xA700,
-	0xAB82, 0xAA87,
-	0xAB84, 0x2322,
-	0xAB86, 0xF498,
-	0xAB88, 0xE8C5,
-	0xAB8A, 0x71B7,
-	0xAB8C, 0x0145,
-	0xAB8E, 0x2EC6,
-	0xAB90, 0x97B0,
-	0xAB92, 0x01FC,
-	0xAB94, 0xE780,
-	0xAB96, 0x403E,
-	0xAB98, 0xB245,
-	0xAB9A, 0xAA89,
-	0xAB9C, 0x51BF,
-	0xAB9E, 0x0100,
-	0xABA0, 0x1753,
-	0xABA2, 0x02FC,
-	0xABA4, 0xE702,
-	0xABA6, 0x0392,
-	0xABA8, 0x2A84,
-	0xABAA, 0xEFE0,
-	0xABAC, 0x7F85,
-	0xABAE, 0x01E8,
-	0xABB0, 0xB7D7,
-	0xABB2, 0x0124,
-	0xABB4, 0x03A7,
-	0xABB6, 0x87C1,
-	0xABB8, 0x9147,
-	0xABBA, 0x6306,
-	0xABBC, 0xF700,
-	0xABBE, 0x1753,
-	0xABC0, 0x02FC,
-	0xABC2, 0x6700,
-	0xABC4, 0x6392,
-	0xABC6, 0xB7D7,
-	0xABC8, 0x0124,
-	0xABCA, 0x83C7,
-	0xABCC, 0x07FA,
-	0xABCE, 0xE5DB,
-	0xABD0, 0xB747,
-	0xABD2, 0x0124,
-	0xABD4, 0x83C7,
-	0xABD6, 0x27C4,
-	0xABD8, 0xFDF3,
-	0xABDA, 0x97E0,
-	0xABDC, 0x00FC,
-	0xABDE, 0xE780,
-	0xABE0, 0x60A0,
-	0xABE2, 0xB787,
-	0xABE4, 0x0224,
-	0xABE6, 0x0547,
-	0xABE8, 0xA380,
-	0xABEA, 0xE74E,
-	0xABEC, 0xC9BF,
-	0xABEE, 0x0100,
-	0xABF0, 0x1753,
-	0xABF2, 0x02FC,
-	0xABF4, 0xE702,
-	0xABF6, 0x038D,
-	0xABF8, 0x3784,
-	0xABFA, 0x0224,
-	0xABFC, 0x1304,
-	0xABFE, 0xC449,
-	0xAC00, 0x8347,
-	0xAC02, 0x5404,
-	0xAC04, 0x99E7,
-	0xAC06, 0xEFE0,
-	0xAC08, 0x3F8B,
-	0xAC0A, 0x1753,
-	0xAC0C, 0x02FC,
-	0xAC0E, 0x6700,
-	0xAC10, 0xA38D,
-	0xAC12, 0x97E0,
-	0xAC14, 0x00FC,
-	0xAC16, 0xE780,
-	0xAC18, 0xE0B7,
-	0xAC1A, 0xA302,
-	0xAC1C, 0x0404,
-	0xAC1E, 0xEFE0,
-	0xAC20, 0xBF89,
-	0xAC22, 0x1753,
-	0xAC24, 0x02FC,
-	0xAC26, 0x6700,
-	0xAC28, 0x238C,
-	0xAC2A, 0x0100,
-	0xAC2C, 0x1753,
-	0xAC2E, 0x02FC,
-	0xAC30, 0xE702,
-	0xAC32, 0x4389,
-	0xAC34, 0xB7E7,
-	0xAC36, 0x0124,
-	0xAC38, 0x9387,
-	0xAC3A, 0x0787,
-	0xAC3C, 0x03A9,
-	0xAC3E, 0x870E,
-	0xAC40, 0x83A4,
-	0xAC42, 0xC70E,
-	0xAC44, 0x0146,
-	0xAC46, 0xCA85,
-	0xAC48, 0x2A84,
-	0xAC4A, 0x2685,
-	0xAC4C, 0x9740,
-	0xAC4E, 0x01FC,
-	0xAC50, 0xE780,
-	0xAC52, 0x80DF,
-	0xAC54, 0x2285,
-	0xAC56, 0x97A0,
-	0xAC58, 0xFFFB,
-	0xAC5A, 0xE780,
-	0xAC5C, 0x2047,
-	0xAC5E, 0x0546,
-	0xAC60, 0xCA85,
-	0xAC62, 0x2685,
-	0xAC64, 0x9740,
-	0xAC66, 0x01FC,
-	0xAC68, 0xE780,
-	0xAC6A, 0x00DE,
-	0xAC6C, 0x8547,
-	0xAC6E, 0x6309,
-	0xAC70, 0xF400,
-	0xAC72, 0x9147,
-	0xAC74, 0x6306,
-	0xAC76, 0xF400,
-	0xAC78, 0x1753,
-	0xAC7A, 0x02FC,
-	0xAC7C, 0x6700,
-	0xAC7E, 0xC386,
-	0xAC80, 0x9770,
-	0xAC82, 0xFFFB,
-	0xAC84, 0xE780,
-	0xAC86, 0x80C9,
-	0xAC88, 0x65F9,
-	0xAC8A, 0x9770,
-	0xAC8C, 0xFFFB,
-	0xAC8E, 0xE780,
-	0xAC90, 0xE0C5,
-	0xAC92, 0x7DD1,
-	0xAC94, 0x9770,
-	0xAC96, 0xFFFB,
-	0xAC98, 0xE780,
-	0xAC9A, 0xC03F,
-	0xAC9C, 0x19C9,
-	0xAC9E, 0xB797,
-	0xACA0, 0x0124,
-	0xACA2, 0x9387,
-	0xACA4, 0x07D7,
-	0xACA6, 0x03C7,
-	0xACA8, 0x8703,
-	0xACAA, 0x83C7,
-	0xACAC, 0x2706,
-	0xACAE, 0x6306,
-	0xACB0, 0xF706,
-	0xACB2, 0x9770,
-	0xACB4, 0xFFFB,
-	0xACB6, 0xE780,
-	0xACB8, 0xE03D,
-	0xACBA, 0x5DDD,
-	0xACBC, 0xB797,
-	0xACBE, 0x0124,
-	0xACC0, 0x9387,
-	0xACC2, 0x07D7,
-	0xACC4, 0x03C7,
-	0xACC6, 0xC701,
-	0xACC8, 0x83C7,
-	0xACCA, 0x2706,
-	0xACCC, 0xE316,
-	0xACCE, 0xF7FA,
-	0xACD0, 0xB7B7,
-	0xACD2, 0x0224,
-	0xACD4, 0x83A7,
-	0xACD6, 0x0773,
-	0xACD8, 0xB706,
-	0xACDA, 0x0040,
-	0xACDC, 0x1386,
-	0xACDE, 0x4606,
-	0xACE0, 0x8965,
-	0xACE2, 0x3E96,
-	0xACE4, 0x1387,
-	0xACE6, 0x061F,
-	0xACE8, 0x9385,
-	0xACEA, 0xF5F1,
-	0xACEC, 0x2310,
-	0xACEE, 0xB600,
-	0xACF0, 0x3E97,
-	0xACF2, 0x7D56,
-	0xACF4, 0x2310,
-	0xACF6, 0xC700,
-	0xACF8, 0x37D6,
-	0xACFA, 0x0124,
-	0xACFC, 0x1306,
-	0xACFE, 0x06E7,
-	0xAD00, 0x0357,
-	0xAD02, 0xC605,
-	0xAD04, 0x0356,
-	0xAD06, 0x6606,
-	0xAD08, 0x9386,
-	0xAD0A, 0x861D,
-	0xAD0C, 0x3297,
-	0xAD0E, 0x4207,
-	0xAD10, 0xB697,
-	0xAD12, 0x4183,
-	0xAD14, 0x2390,
-	0xAD16, 0xE700,
-	0xAD18, 0x85B7,
-	0xAD1A, 0xB7B7,
-	0xAD1C, 0x0224,
-	0xAD1E, 0x83A7,
-	0xAD20, 0x0773,
-	0xAD22, 0xB706,
-	0xAD24, 0x0040,
-	0xAD26, 0x1386,
-	0xAD28, 0x4606,
-	0xAD2A, 0x8965,
-	0xAD2C, 0x3E96,
-	0xAD2E, 0x1387,
-	0xAD30, 0x061F,
-	0xAD32, 0x9385,
-	0xAD34, 0xF5F1,
-	0xAD36, 0x2310,
-	0xAD38, 0xB600,
-	0xAD3A, 0x3E97,
-	0xAD3C, 0x7D56,
-	0xAD3E, 0x2310,
-	0xAD40, 0xC700,
-	0xAD42, 0x37D6,
-	0xAD44, 0x0124,
-	0xAD46, 0x1306,
-	0xAD48, 0x06E7,
-	0xAD4A, 0x0357,
-	0xAD4C, 0x0606,
-	0xAD4E, 0x9386,
-	0xAD50, 0xA61D,
-	0xAD52, 0x0356,
-	0xAD54, 0x6606,
-	0xAD56, 0x5DBF,
-	0xAD58, 0x1743,
-	0xAD5A, 0x02FC,
-	0xAD5C, 0xE702,
-	0xAD5E, 0x8376,
-	0xAD60, 0xB7D7,
-	0xAD62, 0x0024,
-	0xAD64, 0x83C7,
-	0xAD66, 0x476D,
-	0xAD68, 0x8544,
-	0xAD6A, 0x6380,
-	0xAD6C, 0x9714,
-	0xAD6E, 0xB7E7,
-	0xAD70, 0x0024,
-	0xAD72, 0x03C4,
-	0xAD74, 0xC784,
-	0xAD76, 0xB7A7,
-	0xAD78, 0x0124,
-	0xAD7A, 0x83C7,
-	0xAD7C, 0x6792,
-	0xAD7E, 0x3334,
-	0xAD80, 0x8000,
-	0xAD82, 0x3304,
-	0xAD84, 0x8040,
-	0xAD86, 0x7998,
-	0xAD88, 0x1304,
-	0xAD8A, 0x6402,
-	0xAD8C, 0xEDE7,
-	0xAD8E, 0xB767,
-	0xAD90, 0x0024,
-	0xAD92, 0x9387,
-	0xAD94, 0x0733,
-	0xAD96, 0x03D7,
-	0xAD98, 0xE75B,
-	0xAD9A, 0x19C7,
-	0xAD9C, 0x1347,
-	0xAD9E, 0xF7FF,
-	0xADA0, 0x618F,
-	0xADA2, 0x1314,
-	0xADA4, 0x0701,
-	0xADA6, 0x4180,
-	0xADA8, 0x83D7,
-	0xADAA, 0x075C,
-	0xADAC, 0x0D45,
-	0xADAE, 0x5D8C,
-	0xADB0, 0x4204,
-	0xADB2, 0x4180,
-	0xADB4, 0xA285,
-	0xADB6, 0x97D0,
-	0xADB8, 0xFFFB,
-	0xADBA, 0xE780,
-	0xADBC, 0x20C5,
-	0xADBE, 0x9315,
-	0xADC0, 0x0501,
-	0xADC2, 0xC181,
-	0xADC4, 0xAA84,
-	0xADC6, 0x6309,
-	0xADC8, 0xB400,
-	0xADCA, 0x0565,
-	0xADCC, 0xA18D,
-	0xADCE, 0x2D05,
-	0xADD0, 0x97A0,
-	0xADD2, 0xFFFB,
-	0xADD4, 0xE780,
-	0xADD6, 0x0050,
-	0xADD8, 0x1395,
-	0xADDA, 0x0401,
-	0xADDC, 0x93F7,
-	0xADDE, 0x1400,
-	0xADE0, 0x4181,
-	0xADE2, 0x91CB,
-	0xADE4, 0xB7D7,
-	0xADE6, 0x0124,
-	0xADE8, 0x9387,
-	0xADEA, 0x07C4,
-	0xADEC, 0x03D7,
-	0xADEE, 0x4707,
-	0xADF0, 0x0507,
-	0xADF2, 0x239A,
-	0xADF4, 0xE706,
-	0xADF6, 0x9377,
-	0xADF8, 0x2500,
-	0xADFA, 0x91CB,
-	0xADFC, 0xB7D7,
-	0xADFE, 0x0124,
-	0xAE00, 0x9387,
-	0xAE02, 0x07C4,
-	0xAE04, 0x03D7,
-	0xAE06, 0xC70C,
-	0xAE08, 0x0507,
-	0xAE0A, 0x2396,
-	0xAE0C, 0xE70C,
-	0xAE0E, 0x9377,
-	0xAE10, 0x4500,
-	0xAE12, 0x91CB,
-	0xAE14, 0xB7D7,
-	0xAE16, 0x0124,
-	0xAE18, 0x9387,
-	0xAE1A, 0x07C4,
-	0xAE1C, 0x03D7,
-	0xAE1E, 0xE70C,
-	0xAE20, 0x0507,
-	0xAE22, 0x2397,
-	0xAE24, 0xE70C,
-	0xAE26, 0x9377,
-	0xAE28, 0x0502,
-	0xAE2A, 0x91CB,
-	0xAE2C, 0xB7D7,
-	0xAE2E, 0x0124,
-	0xAE30, 0x9387,
-	0xAE32, 0x07C4,
-	0xAE34, 0x03D7,
-	0xAE36, 0x070F,
-	0xAE38, 0x0507,
-	0xAE3A, 0x2398,
-	0xAE3C, 0xE70E,
-	0xAE3E, 0x9377,
-	0xAE40, 0x0520,
-	0xAE42, 0x91CB,
-	0xAE44, 0xB7D7,
-	0xAE46, 0x0124,
-	0xAE48, 0x9387,
-	0xAE4A, 0x07C4,
-	0xAE4C, 0x03D7,
-	0xAE4E, 0x6708,
-	0xAE50, 0x0507,
-	0xAE52, 0x2393,
-	0xAE54, 0xE708,
-	0xAE56, 0x1375,
-	0xAE58, 0x0504,
-	0xAE5A, 0x11C9,
-	0xAE5C, 0xB7D7,
-	0xAE5E, 0x0124,
-	0xAE60, 0x9387,
-	0xAE62, 0x07C4,
-	0xAE64, 0x03D7,
-	0xAE66, 0xA708,
-	0xAE68, 0x0507,
-	0xAE6A, 0x2395,
-	0xAE6C, 0xE708,
-	0xAE6E, 0x1743,
-	0xAE70, 0x02FC,
-	0xAE72, 0x6700,
-	0xAE74, 0x6367,
-	0xAE76, 0xB7D7,
-	0xAE78, 0x0124,
-	0xAE7A, 0x83D7,
-	0xAE7C, 0xA7E7,
-	0xAE7E, 0x81DB,
-	0xAE80, 0x9760,
-	0xAE82, 0xFEFB,
-	0xAE84, 0xE780,
-	0xAE86, 0x0072,
-	0xAE88, 0x6311,
-	0xAE8A, 0x9506,
-	0xAE8C, 0xB797,
-	0xAE8E, 0x0124,
-	0xAE90, 0x9387,
-	0xAE92, 0x07D7,
-	0xAE94, 0x03C7,
-	0xAE96, 0xC701,
-	0xAE98, 0x83C7,
-	0xAE9A, 0x2706,
-	0xAE9C, 0x6307,
-	0xAE9E, 0xF704,
-	0xAEA0, 0x1364,
-	0xAEA2, 0x0424,
-	0xAEA4, 0x4204,
-	0xAEA6, 0x4180,
-	0xAEA8, 0x11A0,
-	0xAEAA, 0x0144,
-	0xAEAC, 0xB767,
-	0xAEAE, 0x0024,
-	0xAEB0, 0x9387,
-	0xAEB2, 0x0733,
-	0xAEB4, 0x03C7,
-	0xAEB6, 0x273B,
-	0xAEB8, 0xE30F,
-	0xAEBA, 0x07EC,
-	0xAEBC, 0x37A7,
-	0xAEBE, 0x0124,
-	0xAEC0, 0x0347,
-	0xAEC2, 0x6792,
-	0xAEC4, 0xE309,
-	0xAEC6, 0x07EC,
-	0xAEC8, 0x37D7,
-	0xAECA, 0x0124,
-	0xAECC, 0x0357,
-	0xAECE, 0xA7E7,
-	0xAED0, 0xE303,
-	0xAED2, 0x07EC,
-	0xAED4, 0x3797,
-	0xAED6, 0x0124,
-	0xAED8, 0x0347,
-	0xAEDA, 0x1700,
-	0xAEDC, 0xE30D,
-	0xAEDE, 0x07EA,
-	0xAEE0, 0x1374,
-	0xAEE2, 0xF4DF,
-	0xAEE4, 0x4204,
-	0xAEE6, 0x4180,
-	0xAEE8, 0x7DB5,
-	0xAEEA, 0x9760,
-	0xAEEC, 0xFEFB,
-	0xAEEE, 0xE780,
-	0xAEF0, 0x606B,
-	0xAEF2, 0x8547,
-	0xAEF4, 0xE31C,
-	0xAEF6, 0xF5FA,
-	0xAEF8, 0xB797,
-	0xAEFA, 0x0124,
-	0xAEFC, 0x9387,
-	0xAEFE, 0x07D7,
-	0xAF00, 0x03C7,
-	0xAF02, 0xC701,
-	0xAF04, 0x83C7,
-	0xAF06, 0x2706,
-	0xAF08, 0xE312,
-	0xAF0A, 0xF7FA,
-	0xAF0C, 0x1364,
-	0xAF0E, 0x0420,
-	0xAF10, 0x4204,
-	0xAF12, 0x4180,
-	0xAF14, 0x61BF,
-	0xAF16, 0x0100,
-	0xAF18, 0x7171,
-	0xAF1A, 0x22D7,
-	0xAF1C, 0x26D5,
-	0xAF1E, 0x7324,
-	0xAF20, 0x2034,
-	0xAF22, 0xF324,
-	0xAF24, 0x1034,
-	0xAF26, 0x7360,
-	0xAF28, 0x0430,
-	0xAF2A, 0x2EC5,
-	0xAF2C, 0xA565,
-	0xAF2E, 0xBEDC,
-	0xAF30, 0x06D3,
-	0xAF32, 0x16D1,
-	0xAF34, 0x1ACF,
-	0xAF36, 0x1ECD,
-	0xAF38, 0x22CB,
-	0xAF3A, 0x2AC7,
-	0xAF3C, 0x32C3,
-	0xAF3E, 0x36C1,
-	0xAF40, 0xBADE,
-	0xAF42, 0xC2DA,
-	0xAF44, 0xC6D8,
-	0xAF46, 0xF2D0,
-	0xAF48, 0xF6CE,
-	0xAF4A, 0xFACC,
-	0xAF4C, 0xFECA,
-	0xAF4E, 0x82E2,
-	0xAF50, 0x86E0,
-	0xAF52, 0x0AFE,
-	0xAF54, 0x0EFC,
-	0xAF56, 0x12FA,
-	0xAF58, 0x16F8,
-	0xAF5A, 0x1AF6,
-	0xAF5C, 0x1EF4,
-	0xAF5E, 0x2AF2,
-	0xAF60, 0x2EF0,
-	0xAF62, 0x32EE,
-	0xAF64, 0x26C9,
-	0xAF66, 0xCAD6,
-	0xAF68, 0xCED4,
-	0xAF6A, 0xD2D2,
-	0xAF6C, 0x9385,
-	0xAF6E, 0x0540,
-	0xAF70, 0x0545,
-	0xAF72, 0x36EC,
-	0xAF74, 0x3AEA,
-	0xAF76, 0x3EE8,
-	0xAF78, 0x42E6,
-	0xAF7A, 0x46E4,
-	0xAF7C, 0x72E2,
-	0xAF7E, 0x76E0,
-	0xAF80, 0x272E,
-	0xAF82, 0xE1FF,
-	0xAF84, 0x272C,
-	0xAF86, 0xF1FF,
-	0xAF88, 0x97D0,
-	0xAF8A, 0xFFFB,
-	0xAF8C, 0xE780,
-	0xAF8E, 0xC0A0,
-	0xAF90, 0xA167,
-	0xAF92, 0xE98F,
-	0xAF94, 0x2A84,
-	0xAF96, 0x6394,
-	0xAF98, 0x0718,
-	0xAF9A, 0xB764,
-	0xAF9C, 0x0124,
-	0xAF9E, 0x9384,
-	0xAFA0, 0x0440,
-	0xAFA2, 0x8567,
-	0xAFA4, 0xE18F,
-	0xAFA6, 0xCDCF,
-	0xAFA8, 0x37D7,
-	0xAFAA, 0x0124,
-	0xAFAC, 0x3789,
-	0xAFAE, 0x0224,
-	0xAFB0, 0x1307,
-	0xAFB2, 0x07C4,
-	0xAFB4, 0x1309,
-	0xAFB6, 0xC949,
-	0xAFB8, 0x8356,
-	0xAFBA, 0x670E,
-	0xAFBC, 0x8327,
-	0xAFBE, 0x0905,
-	0xAFC0, 0x8506,
-	0xAFC2, 0x8507,
-	0xAFC4, 0x2328,
-	0xAFC6, 0xF904,
-	0xAFC8, 0x2313,
-	0xAFCA, 0xD70E,
-	0xAFCC, 0x858B,
-	0xAFCE, 0x639F,
-	0xAFD0, 0x071A,
-	0xAFD2, 0x8547,
-	0xAFD4, 0xA30A,
-	0xAFD6, 0xF904,
-	0xAFD8, 0x9770,
-	0xAFDA, 0xFFFB,
-	0xAFDC, 0xE780,
-	0xAFDE, 0x8008,
-	0xAFE0, 0x19C5,
-	0xAFE2, 0x0357,
-	0xAFE4, 0x4905,
-	0xAFE6, 0x9307,
-	0xAFE8, 0x1010,
-	0xAFEA, 0x6306,
-	0xAFEC, 0xF724,
-	0xAFEE, 0xDC50,
-	0xAFF0, 0x0945,
-	0xAFF2, 0x8297,
-	0xAFF4, 0x9770,
-	0xAFF6, 0xFFFB,
-	0xAFF8, 0xE780,
-	0xAFFA, 0x408F,
-	0xAFFC, 0x11C5,
-	0xAFFE, 0x9770,
-	0xB000, 0xFFFB,
-	0xB002, 0xE780,
-	0xB004, 0xA091,
-	0xB006, 0x55C5,
-	0xB008, 0x9760,
-	0xB00A, 0x00FC,
-	0xB00C, 0xE780,
-	0xB00E, 0xC063,
-	0xB010, 0xB787,
-	0xB012, 0x0024,
-	0xB014, 0x83C7,
-	0xB016, 0x078C,
-	0xB018, 0xAA89,
-	0xB01A, 0x6392,
-	0xB01C, 0x071C,
-	0xB01E, 0xB7D7,
-	0xB020, 0x0124,
-	0xB022, 0x9387,
-	0xB024, 0x07E7,
-	0xB026, 0xBC5F,
-	0xB028, 0x639A,
-	0xB02A, 0x0716,
-	0xB02C, 0x3799,
-	0xB02E, 0x0124,
-	0xB030, 0x1309,
-	0xB032, 0x0953,
-	0xB034, 0xB727,
-	0xB036, 0x0024,
-	0xB038, 0x83C7,
-	0xB03A, 0x7752,
-	0xB03C, 0x6396,
-	0xB03E, 0x071E,
-	0xB040, 0x0345,
-	0xB042, 0xC918,
-	0xB044, 0x631D,
-	0xB046, 0x051C,
-	0xB048, 0xDC50,
-	0xB04A, 0x0D45,
-	0xB04C, 0x8297,
-	0xB04E, 0x4E85,
-	0xB050, 0x9760,
-	0xB052, 0x00FC,
-	0xB054, 0xE780,
-	0xB056, 0x8063,
-	0xB058, 0x8567,
-	0xB05A, 0x3E99,
-	0xB05C, 0x2320,
-	0xB05E, 0xA9A2,
-	0xB060, 0x1374,
-	0xB062, 0x0440,
-	0xB064, 0x21C4,
-	0xB066, 0xB7D7,
-	0xB068, 0x0124,
-	0xB06A, 0x9387,
-	0xB06C, 0x07C4,
-	0xB06E, 0x37A7,
-	0xB070, 0x0124,
-	0xB072, 0x83D6,
-	0xB074, 0x670E,
-	0xB076, 0x1307,
-	0xB078, 0x0753,
-	0xB07A, 0x0347,
-	0xB07C, 0x179B,
-	0xB07E, 0x8506,
-	0xB080, 0x3784,
-	0xB082, 0x0224,
-	0xB084, 0x1304,
-	0xB086, 0xC449,
-	0xB088, 0x1337,
-	0xB08A, 0x1700,
-	0xB08C, 0x2393,
-	0xB08E, 0xD70E,
-	0xB090, 0x230A,
-	0xB092, 0xE404,
-	0xB094, 0x9770,
-	0xB096, 0xFFFB,
-	0xB098, 0xE780,
-	0xB09A, 0xC0FC,
-	0xB09C, 0x6306,
-	0xB09E, 0x0510,
-	0xB0A0, 0x0357,
-	0xB0A2, 0x4405,
-	0xB0A4, 0x9307,
-	0xB0A6, 0x1010,
-	0xB0A8, 0x6300,
-	0xB0AA, 0xF710,
-	0xB0AC, 0xDC50,
-	0xB0AE, 0x1D45,
-	0xB0B0, 0x8297,
-	0xB0B2, 0x9A50,
-	0xB0B4, 0x8A52,
-	0xB0B6, 0x7A43,
-	0xB0B8, 0xEA43,
-	0xB0BA, 0x5A44,
-	0xB0BC, 0xCA44,
-	0xB0BE, 0x3A45,
-	0xB0C0, 0xAA45,
-	0xB0C2, 0x1A46,
-	0xB0C4, 0x8A46,
-	0xB0C6, 0x7657,
-	0xB0C8, 0xE657,
-	0xB0CA, 0x5658,
-	0xB0CC, 0xC658,
-	0xB0CE, 0x3659,
-	0xB0D0, 0xA659,
-	0xB0D2, 0x165A,
-	0xB0D4, 0x065E,
-	0xB0D6, 0xF64E,
-	0xB0D8, 0x664F,
-	0xB0DA, 0xD64F,
-	0xB0DC, 0x1660,
-	0xB0DE, 0x8660,
-	0xB0E0, 0x7271,
-	0xB0E2, 0xE271,
-	0xB0E4, 0x5272,
-	0xB0E6, 0xC272,
-	0xB0E8, 0x3273,
-	0xB0EA, 0xA273,
-	0xB0EC, 0x1275,
-	0xB0EE, 0x8275,
-	0xB0F0, 0x7266,
-	0xB0F2, 0xE266,
-	0xB0F4, 0x5267,
-	0xB0F6, 0xC267,
-	0xB0F8, 0x3268,
-	0xB0FA, 0xA268,
-	0xB0FC, 0x126E,
-	0xB0FE, 0x826E,
-	0xB100, 0x072F,
-	0xB102, 0xC1FF,
-	0xB104, 0x872F,
-	0xB106, 0x81FF,
-	0xB108, 0x7370,
-	0xB10A, 0x0430,
-	0xB10C, 0x7390,
-	0xB10E, 0x1434,
-	0xB110, 0x7310,
-	0xB112, 0x2434,
-	0xB114, 0x3A54,
-	0xB116, 0xAA54,
-	0xB118, 0x4D61,
-	0xB11A, 0x7300,
-	0xB11C, 0x2030,
-	0xB11E, 0x37D9,
-	0xB120, 0x0124,
-	0xB122, 0x1309,
-	0xB124, 0x09C4,
-	0xB126, 0x8357,
-	0xB128, 0x490E,
-	0xB12A, 0xB764,
-	0xB12C, 0x0124,
-	0xB12E, 0x9384,
-	0xB130, 0x0440,
-	0xB132, 0xD850,
-	0xB134, 0x8507,
-	0xB136, 0x0145,
-	0xB138, 0x2312,
-	0xB13A, 0xF90E,
-	0xB13C, 0x0297,
-	0xB13E, 0x9760,
-	0xB140, 0xFFFB,
-	0xB142, 0xE780,
-	0xB144, 0xA07A,
-	0xB146, 0x25E5,
-	0xB148, 0xB729,
-	0xB14A, 0x0024,
-	0xB14C, 0x3799,
-	0xB14E, 0x0124,
-	0xB150, 0x9389,
-	0xB152, 0x0933,
-	0xB154, 0x1309,
-	0xB156, 0x0953,
-	0xB158, 0x056A,
-	0xB15A, 0x83C7,
-	0xB15C, 0x791F,
-	0xB15E, 0x4A9A,
-	0xB160, 0x2320,
-	0xB162, 0x0AA2,
-	0xB164, 0xB9EF,
-	0xB166, 0x0345,
-	0xB168, 0xC918,
-	0xB16A, 0x2DE5,
-	0xB16C, 0x83C7,
-	0xB16E, 0x0920,
-	0xB170, 0x89C7,
-	0xB172, 0x0327,
-	0xB174, 0x4AB3,
-	0xB176, 0x630A,
-	0xB178, 0xF700,
-	0xB17A, 0x97E0,
-	0xB17C, 0x00FC,
-	0xB17E, 0xE780,
-	0xB180, 0x60DC,
-	0xB182, 0xDC50,
-	0xB184, 0x0545,
-	0xB186, 0x8297,
-	0xB188, 0x29BD,
-	0xB18A, 0x01A0,
-	0xB18C, 0x8547,
-	0xB18E, 0x230A,
-	0xB190, 0x0904,
-	0xB192, 0xA30A,
-	0xB194, 0x0904,
-	0xB196, 0x2328,
-	0xB198, 0xF904,
-	0xB19A, 0x3DBD,
-	0xB19C, 0x7D55,
-	0xB19E, 0x9770,
-	0xB1A0, 0x01FC,
-	0xB1A2, 0xE780,
-	0xB1A4, 0x200E,
-	0xB1A6, 0x59B5,
-	0xB1A8, 0xEFE0,
-	0xB1AA, 0xDFE2,
-	0xB1AC, 0x01B7,
-	0xB1AE, 0x9760,
-	0xB1B0, 0xFFFB,
-	0xB1B2, 0xE780,
-	0xB1B4, 0xA076,
-	0xB1B6, 0x49F9,
-	0xB1B8, 0x8357,
-	0xB1BA, 0x490E,
-	0xB1BC, 0x858B,
-	0xB1BE, 0xC9F7,
-	0xB1C0, 0xCDBD,
-	0xB1C2, 0x9770,
-	0xB1C4, 0x01FC,
-	0xB1C6, 0xE780,
-	0xB1C8, 0xA00C,
-	0xB1CA, 0x2311,
-	0xB1CC, 0xA94E,
-	0xB1CE, 0x0345,
-	0xB1D0, 0xC918,
-	0xB1D2, 0x49DD,
-	0xB1D4, 0x97C0,
-	0xB1D6, 0xFFFB,
-	0xB1D8, 0xE780,
-	0xB1DA, 0xC0BD,
-	0xB1DC, 0x41BF,
-	0xB1DE, 0x9770,
-	0xB1E0, 0x01FC,
-	0xB1E2, 0xE780,
-	0xB1E4, 0xE00A,
-	0xB1E6, 0x3799,
-	0xB1E8, 0x0124,
-	0xB1EA, 0x1309,
-	0xB1EC, 0x0953,
-	0xB1EE, 0x8D67,
-	0xB1F0, 0xCA97,
-	0xB1F2, 0x03C7,
-	0xB1F4, 0xD76F,
-	0xB1F6, 0x232E,
-	0xB1F8, 0xA94E,
-	0xB1FA, 0x8547,
-	0xB1FC, 0x6306,
-	0xB1FE, 0xF700,
-	0xB200, 0x8327,
-	0xB202, 0x094F,
-	0xB204, 0xE377,
-	0xB206, 0xF5EA,
-	0xB208, 0x9760,
-	0xB20A, 0x00FC,
-	0xB20C, 0xE780,
-	0xB20E, 0x0006,
-	0xB210, 0x9770,
-	0xB212, 0x01FC,
-	0xB214, 0xE780,
-	0xB216, 0xC007,
-	0xB218, 0x2320,
-	0xB21A, 0xA950,
-	0xB21C, 0x21BD,
-	0xB21E, 0x97C0,
-	0xB220, 0xFFFB,
-	0xB222, 0xE780,
-	0xB224, 0x20BC,
-	0xB226, 0x0DB5,
-	0xB228, 0x9770,
-	0xB22A, 0x01FC,
-	0xB22C, 0xE780,
-	0xB22E, 0x4006,
-	0xB230, 0x2312,
-	0xB232, 0xA94E,
-	0xB234, 0x31B5,
-	0xB236, 0xEFE0,
-	0xB238, 0xFFD9,
-	0xB23A, 0x55BB,
-	0xB23C, 0x1743,
-	0xB23E, 0x02FC,
-	0xB240, 0xE702,
-	0xB242, 0x4328,
-	0xB244, 0x2A84,
-	0xB246, 0xEFD0,
-	0xB248, 0x3FB1,
-	0xB24A, 0x8947,
-	0xB24C, 0x6306,
-	0xB24E, 0xF400,
-	0xB250, 0x1743,
-	0xB252, 0x02FC,
-	0xB254, 0x6700,
-	0xB256, 0x4329,
-	0xB258, 0xB7A4,
-	0xB25A, 0x0224,
-	0xB25C, 0x9384,
-	0xB25E, 0x8454,
-	0xB260, 0x83C7,
-	0xB262, 0x1406,
-	0xB264, 0xF5F7,
-	0xB266, 0x9770,
-	0xB268, 0xFFFB,
-	0xB26A, 0xE780,
-	0xB26C, 0xA0ED,
-	0xB26E, 0x6DF1,
-	0xB270, 0x9770,
-	0xB272, 0xFFFB,
-	0xB274, 0xE780,
-	0xB276, 0x40EE,
-	0xB278, 0x61FD,
-	0xB27A, 0x3725,
-	0xB27C, 0x0224,
-	0xB27E, 0x1305,
-	0xB280, 0x05ED,
-	0xB282, 0x9700,
-	0xB284, 0xFFFB,
-	0xB286, 0xE780,
-	0xB288, 0x2005,
-	0xB28A, 0xB767,
-	0xB28C, 0x0124,
-	0xB28E, 0x83A7,
-	0xB290, 0x0740,
-	0xB292, 0x0549,
-	0xB294, 0x37A7,
-	0xB296, 0x0124,
-	0xB298, 0x1D45,
-	0xB29A, 0x2305,
-	0xB29C, 0x2723,
-	0xB29E, 0x8297,
-	0xB2A0, 0xA380,
-	0xB2A2, 0x2407,
-	0xB2A4, 0x9780,
-	0xB2A6, 0x01FC,
-	0xB2A8, 0xE780,
-	0xB2AA, 0x008E,
-	0xB2AC, 0x55F1,
-	0xB2AE, 0xB727,
-	0xB2B0, 0x0124,
-	0xB2B2, 0x2380,
-	0xB2B4, 0x8754,
-	0xB2B6, 0x97B0,
-	0xB2B8, 0xFEFB,
-	0xB2BA, 0xE780,
-	0xB2BC, 0x600D,
-	0xB2BE, 0x2381,
-	0xB2C0, 0x2407,
-	0xB2C2, 0x79B7,
-	0xB2C4, 0x1743,
-	0xB2C6, 0x02FC,
-	0xB2C8, 0xE702,
-	0xB2CA, 0xC31F,
-	0xB2CC, 0x37A4,
-	0xB2CE, 0x0224,
-	0xB2D0, 0x1304,
-	0xB2D2, 0x8454,
-	0xB2D4, 0x0347,
-	0xB2D6, 0x2406,
-	0xB2D8, 0x8547,
-	0xB2DA, 0x630A,
-	0xB2DC, 0xF700,
-	0xB2DE, 0x97B0,
-	0xB2E0, 0xFEFB,
-	0xB2E2, 0xE780,
-	0xB2E4, 0xE074,
-	0xB2E6, 0x1743,
-	0xB2E8, 0x02FC,
-	0xB2EA, 0x6700,
-	0xB2EC, 0xE31F,
-	0xB2EE, 0x9780,
-	0xB2F0, 0x01FC,
-	0xB2F2, 0xE780,
-	0xB2F4, 0x6089,
-	0xB2F6, 0x65F5,
-	0xB2F8, 0x97B0,
-	0xB2FA, 0xFEFB,
-	0xB2FC, 0xE780,
-	0xB2FE, 0x801A,
-	0xB300, 0x2301,
-	0xB302, 0x0406,
-	0xB304, 0xE9BF,
-	0xB306, 0x0100,
-	0xB308, 0x1743,
-	0xB30A, 0x02FC,
-	0xB30C, 0xE702,
-	0xB30E, 0x831B,
-	0xB310, 0x9D47,
-	0xB312, 0x631F,
-	0xB314, 0xF500,
-	0xB316, 0x3794,
-	0xB318, 0x0124,
-	0xB31A, 0x1304,
-	0xB31C, 0x0453,
-	0xB31E, 0x8567,
-	0xB320, 0xA297,
-	0xB322, 0x83C7,
-	0xB324, 0xA7CF,
-	0xB326, 0x9DE7,
-	0xB328, 0x1743,
-	0xB32A, 0x02FC,
-	0xB32C, 0x6700,
-	0xB32E, 0xC31B,
-	0xB330, 0x2A84,
-	0xB332, 0xEFD0,
-	0xB334, 0x7FE8,
-	0xB336, 0x8547,
-	0xB338, 0xE318,
-	0xB33A, 0xF4FE,
-	0xB33C, 0xB7E7,
-	0xB33E, 0x0124,
-	0xB340, 0x9387,
-	0xB342, 0x074C,
-	0xB344, 0x23AE,
-	0xB346, 0x0710,
-	0xB348, 0x23A4,
-	0xB34A, 0x077E,
-	0xB34C, 0x1743,
-	0xB34E, 0x02FC,
-	0xB350, 0x6700,
-	0xB352, 0x8319,
-	0xB354, 0x9770,
-	0xB356, 0xFFFB,
-	0xB358, 0xE780,
-	0xB35A, 0xC0DE,
-	0xB35C, 0x71F5,
-	0xB35E, 0x9770,
-	0xB360, 0xFFFB,
-	0xB362, 0xE780,
-	0xB364, 0x60DF,
-	0xB366, 0x69F1,
-	0xB368, 0x8D67,
-	0xB36A, 0x3E94,
-	0xB36C, 0x8327,
-	0xB36E, 0x846D,
-	0xB370, 0xB724,
-	0xB372, 0x0124,
-	0xB374, 0x9384,
-	0xB376, 0x045F,
-	0xB378, 0x91EF,
-	0xB37A, 0x83A7,
-	0xB37C, 0x440E,
-	0xB37E, 0x99CB,
-	0xB380, 0xB7D7,
-	0xB382, 0x0124,
-	0xB384, 0x83C7,
-	0xB386, 0x07FA,
-	0xB388, 0xC5D3,
-	0xB38A, 0x9700,
-	0xB38C, 0xFFFB,
-	0xB38E, 0xE780,
-	0xB390, 0x20EE,
-	0xB392, 0x59BF,
-	0xB394, 0x83A7,
-	0xB396, 0xC40A,
-	0xB398, 0xC1DB,
-	0xB39A, 0x0545,
-	0xB39C, 0x9730,
-	0xB39E, 0xFEFB,
-	0xB3A0, 0xE780,
-	0xB3A2, 0x805C,
-	0xB3A4, 0xB735,
-	0xB3A6, 0x202D,
-	0xB3A8, 0x7578,
-	0xB3AA, 0x37F5,
-	0xB3AC, 0x202D,
-	0xB3AE, 0x9385,
-	0xB3B0, 0x0560,
-	0xB3B2, 0x1308,
-	0xB3B4, 0x08A0,
-	0xB3B6, 0x9168,
-	0xB3B8, 0x1305,
-	0xB3BA, 0x0560,
-	0xB3BC, 0xB387,
-	0xB3BE, 0x0501,
-	0xB3C0, 0x03C7,
-	0xB3C2, 0x0700,
-	0xB3C4, 0x9306,
-	0xB3C6, 0xF00F,
-	0xB3C8, 0x1316,
-	0xB3CA, 0x8701,
-	0xB3CC, 0x6186,
-	0xB3CE, 0x0607,
-	0xB3D0, 0x6344,
-	0xB3D2, 0x0600,
-	0xB3D4, 0x9376,
-	0xB3D6, 0xF70F,
-	0xB3D8, 0x2380,
-	0xB3DA, 0xD700,
-	0xB3DC, 0x8507,
-	0xB3DE, 0xE391,
-	0xB3E0, 0xB7FE,
-	0xB3E2, 0xB385,
-	0xB3E4, 0x1701,
-	0xB3E6, 0xE39B,
-	0xB3E8, 0xA5FC,
-	0xB3EA, 0xB7A7,
-	0xB3EC, 0x0224,
-	0xB3EE, 0x0547,
-	0xB3F0, 0x0145,
-	0xB3F2, 0xA384,
-	0xB3F4, 0xE75A,
-	0xB3F6, 0x9730,
-	0xB3F8, 0xFEFB,
-	0xB3FA, 0xE780,
-	0xB3FC, 0xE056,
-	0xB3FE, 0xB7D7,
-	0xB400, 0x0124,
-	0xB402, 0x83C7,
-	0xB404, 0x07FA,
-	0xB406, 0x8DD3,
-	0xB408, 0x8327,
-	0xB40A, 0x846D,
-	0xB40C, 0x91FF,
-	0xB40E, 0x83A7,
-	0xB410, 0x440E,
-	0xB412, 0x99DB,
-	0xB414, 0x9DBF,
-	0xB416, 0x0100,
-	0xB418, 0x1743,
-	0xB41A, 0x02FC,
-	0xB41C, 0xE702,
-	0xB41E, 0x830A,
-	0xB420, 0xB7D7,
-	0xB422, 0x0124,
-	0xB424, 0x9387,
-	0xB426, 0x07F4,
-	0xB428, 0x03C7,
-	0xB42A, 0x1705,
-	0xB42C, 0x2A84,
-	0xB42E, 0x11C7,
-	0xB430, 0x03C7,
-	0xB432, 0x1700,
-	0xB434, 0x8947,
-	0xB436, 0x6301,
-	0xB438, 0xF704,
-	0xB43A, 0xB7E7,
-	0xB43C, 0x0124,
-	0xB43E, 0x9387,
-	0xB440, 0x0787,
-	0xB442, 0x03A9,
-	0xB444, 0x870F,
-	0xB446, 0x83A4,
-	0xB448, 0xC70F,
-	0xB44A, 0x0146,
-	0xB44C, 0xCA85,
-	0xB44E, 0x2685,
-	0xB450, 0x9730,
-	0xB452, 0x01FC,
-	0xB454, 0xE780,
-	0xB456, 0x405F,
-	0xB458, 0x2285,
-	0xB45A, 0x97D0,
-	0xB45C, 0xFEFB,
-	0xB45E, 0xE780,
-	0xB460, 0x20E2,
-	0xB462, 0x0546,
-	0xB464, 0xCA85,
-	0xB466, 0x2685,
-	0xB468, 0x9730,
-	0xB46A, 0x01FC,
-	0xB46C, 0xE780,
-	0xB46E, 0xC05D,
-	0xB470, 0x1743,
-	0xB472, 0x02FC,
-	0xB474, 0x6700,
-	0xB476, 0x4307,
-	0xB478, 0xB7E7,
-	0xB47A, 0x0024,
-	0xB47C, 0x83D6,
-	0xB47E, 0xC7C8,
-	0xB480, 0x8567,
-	0xB482, 0x1387,
-	0xB484, 0xF7B3,
-	0xB486, 0xE39A,
-	0xB488, 0xE6FA,
-	0xB48A, 0x3797,
-	0xB48C, 0x0124,
-	0xB48E, 0x1307,
-	0xB490, 0x0753,
-	0xB492, 0xBA97,
-	0xB494, 0x03A5,
-	0xB496, 0x07B2,
-	0xB498, 0x8145,
-	0xB49A, 0x3325,
-	0xB49C, 0xA000,
-	0xB49E, 0x97D0,
-	0xB4A0, 0x00FC,
-	0xB4A2, 0xE780,
-	0xB4A4, 0x20C7,
-	0xB4A6, 0x51BF,
-	0xB4A8, 0x1743,
-	0xB4AA, 0x02FC,
-	0xB4AC, 0xE702,
-	0xB4AE, 0x8301,
-	0xB4B0, 0x9760,
-	0xB4B2, 0xFFFB,
-	0xB4B4, 0xE780,
-	0xB4B6, 0x8043,
-	0xB4B8, 0x11C5,
-	0xB4BA, 0xB7E7,
-	0xB4BC, 0x0024,
-	0xB4BE, 0x83C7,
-	0xB4C0, 0xC784,
-	0xB4C2, 0xBDEF,
-	0xB4C4, 0x1384,
-	0xB4C6, 0x81E7,
-	0xB4C8, 0x0347,
-	0xB4CA, 0x8400,
-	0xB4CC, 0x8547,
-	0xB4CE, 0x6303,
-	0xB4D0, 0xF706,
-	0xB4D2, 0x0357,
-	0xB4D4, 0x2403,
-	0xB4D6, 0xB767,
-	0xB4D8, 0x0040,
-	0xB4DA, 0x2398,
-	0xB4DC, 0xE718,
-	0xB4DE, 0x8357,
-	0xB4E0, 0x4403,
-	0xB4E2, 0x3767,
-	0xB4E4, 0x0040,
-	0xB4E6, 0x2314,
-	0xB4E8, 0xF720,
-	0xB4EA, 0x9760,
-	0xB4EC, 0xFFFB,
-	0xB4EE, 0xE780,
-	0xB4F0, 0xE03F,
-	0xB4F2, 0x19C5,
-	0xB4F4, 0xB7E7,
-	0xB4F6, 0x0024,
-	0xB4F8, 0x03C7,
-	0xB4FA, 0xC784,
-	0xB4FC, 0x8147,
-	0xB4FE, 0x09EB,
-	0xB500, 0x8346,
-	0xB502, 0x8400,
-	0xB504, 0x0547,
-	0xB506, 0x8147,
-	0xB508, 0x6384,
-	0xB50A, 0xE600,
-	0xB50C, 0x8357,
-	0xB50E, 0xC405,
-	0xB510, 0x37A7,
-	0xB512, 0x0040,
-	0xB514, 0x2312,
-	0xB516, 0xF710,
-	0xB518, 0x9770,
-	0xB51A, 0xFFFB,
-	0xB51C, 0xE780,
-	0xB51E, 0x80C2,
-	0xB520, 0x35C1,
-	0xB522, 0x9770,
-	0xB524, 0xFFFB,
-	0xB526, 0xE780,
-	0xB528, 0x20C3,
-	0xB52A, 0x05C9,
-	0xB52C, 0x1743,
-	0xB52E, 0x02FC,
-	0xB530, 0x6700,
-	0xB532, 0x83FB,
-	0xB534, 0xB767,
-	0xB536, 0x0040,
-	0xB538, 0x2398,
-	0xB53A, 0x0718,
-	0xB53C, 0x8147,
-	0xB53E, 0x55B7,
-	0xB540, 0xB767,
-	0xB542, 0x0040,
-	0xB544, 0x2398,
-	0xB546, 0x0718,
-	0xB548, 0x1384,
-	0xB54A, 0x81E7,
-	0xB54C, 0x8346,
-	0xB54E, 0x8400,
-	0xB550, 0x0547,
-	0xB552, 0x8147,
-	0xB554, 0xE395,
-	0xB556, 0xE6F8,
-	0xB558, 0x69B7,
-	0xB55A, 0x9760,
-	0xB55C, 0xFFFB,
-	0xB55E, 0xE780,
-	0xB560, 0xE038,
-	0xB562, 0x31ED,
-	0xB564, 0x8346,
-	0xB566, 0x8400,
-	0xB568, 0x0547,
-	0xB56A, 0x8147,
-	0xB56C, 0x6384,
-	0xB56E, 0xE600,
-	0xB570, 0x8357,
-	0xB572, 0x4408,
-	0xB574, 0x3787,
-	0xB576, 0x0040,
-	0xB578, 0x2314,
-	0xB57A, 0xF710,
-	0xB57C, 0x1743,
-	0xB57E, 0x02FC,
-	0xB580, 0x6700,
-	0xB582, 0x83F6,
-	0xB584, 0x9770,
-	0xB586, 0xFFFB,
-	0xB588, 0xE780,
-	0xB58A, 0x00BD,
-	0xB58C, 0x59F9,
-	0xB58E, 0x9760,
-	0xB590, 0xFFFB,
-	0xB592, 0xE780,
-	0xB594, 0xA035,
-	0xB596, 0x19C5,
-	0xB598, 0xB7E7,
-	0xB59A, 0x0024,
-	0xB59C, 0x03C7,
-	0xB59E, 0xC784,
-	0xB5A0, 0x8147,
-	0xB5A2, 0x09EB,
-	0xB5A4, 0x8346,
-	0xB5A6, 0x8400,
-	0xB5A8, 0x0547,
-	0xB5AA, 0x8147,
-	0xB5AC, 0x6384,
-	0xB5AE, 0xE600,
-	0xB5B0, 0x8357,
-	0xB5B2, 0x6407,
-	0xB5B4, 0x3707,
-	0xB5B6, 0x0140,
-	0xB5B8, 0x2314,
-	0xB5BA, 0xF710,
-	0xB5BC, 0x9DB7,
-	0xB5BE, 0xB7E7,
-	0xB5C0, 0x0024,
-	0xB5C2, 0x03C7,
-	0xB5C4, 0xC784,
-	0xB5C6, 0x8147,
-	0xB5C8, 0x55F7,
-	0xB5CA, 0x69BF,
-	0xB5CC, 0x1743,
-	0xB5CE, 0x02FC,
-	0xB5D0, 0xE702,
-	0xB5D2, 0xA3ED,
-	0xB5D4, 0xB747,
-	0xB5D6, 0x0124,
-	0xB5D8, 0x03D7,
-	0xB5DA, 0xC7E1,
-	0xB5DC, 0x8947,
-	0xB5DE, 0x2A84,
-	0xB5E0, 0xAE84,
-	0xB5E2, 0x6319,
-	0xB5E4, 0xF700,
-	0xB5E6, 0xB7A7,
-	0xB5E8, 0x0124,
-	0xB5EA, 0x03A7,
-	0xB5EC, 0x4706,
-	0xB5EE, 0xFD57,
-	0xB5F0, 0x630E,
-	0xB5F2, 0xF702,
-	0xB5F4, 0xB7E7,
-	0xB5F6, 0x0124,
-	0xB5F8, 0x9387,
-	0xB5FA, 0x0787,
-	0xB5FC, 0x83A9,
-	0xB5FE, 0x8710,
-	0xB600, 0x03A9,
-	0xB602, 0xC710,
-	0xB604, 0x0146,
-	0xB606, 0xCE85,
-	0xB608, 0x4A85,
-	0xB60A, 0x9730,
-	0xB60C, 0x01FC,
-	0xB60E, 0xE780,
-	0xB610, 0xA043,
-	0xB612, 0xA685,
-	0xB614, 0x2285,
-	0xB616, 0x97D0,
-	0xB618, 0x00FC,
-	0xB61A, 0xE780,
-	0xB61C, 0xA0AF,
-	0xB61E, 0x0546,
-	0xB620, 0xCE85,
-	0xB622, 0x4A85,
-	0xB624, 0x9730,
-	0xB626, 0x01FC,
-	0xB628, 0xE780,
-	0xB62A, 0x0042,
-	0xB62C, 0x1743,
-	0xB62E, 0x02FC,
-	0xB630, 0x6700,
-	0xB632, 0xE3EA,
-	0xB634, 0x1743,
-	0xB636, 0x02FC,
-	0xB638, 0xE702,
-	0xB63A, 0xC3E8,
-	0xB63C, 0xB7B6,
-	0xB63E, 0x0224,
-	0xB640, 0xB787,
-	0xB642, 0x0324,
-	0xB644, 0x9386,
-	0xB646, 0x4673,
-	0xB648, 0x37A7,
-	0xB64A, 0x0124,
-	0xB64C, 0x9387,
-	0xB64E, 0x07FF,
-	0xB650, 0x1307,
-	0xB652, 0x0753,
-	0xB654, 0x958F,
-	0xB656, 0x232C,
-	0xB658, 0xD7B4,
-	0xB65A, 0x232E,
-	0xB65C, 0xF7B4,
-	0xB65E, 0x9730,
-	0xB660, 0x01FC,
-	0xB662, 0xE780,
-	0xB664, 0x20E2,
-	0xB666, 0x01C5,
-	0xB668, 0xEFE0,
-	0xB66A, 0xDFD5,
-	0xB66C, 0x3120,
-	0xB66E, 0x1743,
-	0xB670, 0x02FC,
-	0xB672, 0x6700,
-	0xB674, 0x63E7,
-	0xB676, 0x0100,
-	0xB678, 0x1743,
-	0xB67A, 0x02FC,
-	0xB67C, 0xE702,
-	0xB67E, 0x83E4,
-	0xB680, 0xB7B7,
-	0xB682, 0x0224,
-	0xB684, 0x9387,
-	0xB686, 0xC7AB,
-	0xB688, 0x23AE,
-	0xB68A, 0xF194,
-	0xB68C, 0x3764,
-	0xB68E, 0x0124,
-	0xB690, 0x9D66,
-	0xB692, 0xB7B5,
-	0xB694, 0x0224,
-	0xB696, 0xB7A7,
-	0xB698, 0x0224,
-	0xB69A, 0x1304,
-	0xB69C, 0x0440,
-	0xB69E, 0x9387,
-	0xB6A0, 0x077B,
-	0xB6A2, 0x9386,
-	0xB6A4, 0xF6BF,
-	0xB6A6, 0x1146,
-	0xB6A8, 0x9385,
-	0xB6AA, 0x85F1,
-	0xB6AC, 0x0545,
-	0xB6AE, 0x5CC4,
-	0xB6B0, 0x97E0,
-	0xB6B2, 0xFFFB,
-	0xB6B4, 0xE780,
-	0xB6B6, 0x002E,
-	0xB6B8, 0xC166,
-	0xB6BA, 0xB7B5,
-	0xB6BC, 0x0224,
-	0xB6BE, 0xFD16,
-	0xB6C0, 0x3146,
-	0xB6C2, 0x9385,
-	0xB6C4, 0x858F,
-	0xB6C6, 0x4145,
-	0xB6C8, 0x97E0,
-	0xB6CA, 0xFFFB,
-	0xB6CC, 0xE780,
-	0xB6CE, 0x802C,
-	0xB6D0, 0x37B7,
-	0xB6D2, 0x0224,
-	0xB6D4, 0x1307,
-	0xB6D6, 0xC7AE,
-	0xB6D8, 0xB7A7,
-	0xB6DA, 0x0224,
-	0xB6DC, 0x9387,
-	0xB6DE, 0x8754,
-	0xB6E0, 0x78C8,
-	0xB6E2, 0x37B7,
-	0xB6E4, 0x0224,
-	0xB6E6, 0xA380,
-	0xB6E8, 0x0706,
-	0xB6EA, 0x2381,
-	0xB6EC, 0x0706,
-	0xB6EE, 0x1307,
-	0xB6F0, 0x07BA,
-	0xB6F2, 0xB7B7,
-	0xB6F4, 0x0224,
-	0xB6F6, 0x18D4,
-	0xB6F8, 0x9387,
-	0xB6FA, 0xC723,
-	0xB6FC, 0x37B7,
-	0xB6FE, 0x0224,
-	0xB700, 0x7CC4,
-	0xB702, 0x1307,
-	0xB704, 0x8730,
-	0xB706, 0xB7B7,
-	0xB708, 0x0224,
-	0xB70A, 0x18C0,
-	0xB70C, 0x9387,
-	0xB70E, 0x472C,
-	0xB710, 0x23AA,
-	0xB712, 0xF1A4,
-	0xB714, 0x1743,
-	0xB716, 0x02FC,
-	0xB718, 0x6700,
-	0xB71A, 0x03DD,
-	0xB71C, 0x0000,
-	0xB71E, 0x0000,
-	0xB720, 0x6610,
-	0xB722, 0xE538,
-	0xB724, 0x0000,
-	0xB726, 0x0000,
-	0xB728, 0xBF3F,
-	0xB72A, 0x0000,
-	0xB72C, 0x0000,
-	0xB72E, 0x0000,
-	0xB730, 0x008D,
-	0xB732, 0x0000,
-	0xFCFC, 0x2000,
-	0x2366, 0x001C,
-	0x2368, 0x001C,
-	0x238E, 0x3F28,
-	0x2398, 0x5037,
-	0x24B8, 0x0101,
-	0x66E4, 0x1E8D,
-	0x66E6, 0x0000,
-	0x6874, 0x0000,
-	0x6876, 0x0000,
-	0x6878, 0x0000,
-	0x687A, 0x0000,
-	0x6884, 0x0100,
-	0x6886, 0x0100,
-	0x6888, 0x0100,
-	0x688A, 0x0100,
-	0x793E, 0x0100,
-	0x7940, 0x7017,
-	0x795C, 0x0400,
-	0x795E, 0x0400,
-	0x7960, 0x0800,
-	0x7962, 0x1000,
-	0x7964, 0x0800,
-	0x7966, 0x1000,
-	0x7968, 0x0800,
-	0x796A, 0x0800,
-	0x796C, 0x0800,
-	0x796E, 0x0800,
-	0x7972, 0x0400,
-	0x7974, 0x0400,
-	0x7976, 0x0800,
-	0x7978, 0x1000,
-	0x797A, 0x0800,
-	0x797C, 0x1000,
-	0x797E, 0x0800,
-	0x7980, 0x0800,
-	0x7982, 0x0800,
-	0x7984, 0x0800,
-	0xB3AC, 0x4000,
-	0xB3B4, 0x2000,
-	0xB3B8, 0x1000,
-	0xB3F8, 0x8000,
-	0xB400, 0x4000,
-	0xB404, 0x2000,
-	0xBF70, 0x3A46,
-	0xBF7C, 0x0800,
-	0xC4A8, 0x0000,
-	0xC4F8, 0x00A8,
-	0xC4FA, 0x0000,
-	0xD3DA, 0x0D00,
-	0xD3E0, 0x0D00,
-	0xD3E2, 0x0D00,
-	0xD3E4, 0x0D00,
-	0xD3E6, 0x0D00,
-	0xD3EA, 0x0D00,
-	0xD3F4, 0x301C,
-	0xD3F8, 0x301C,
-	0xDD6C, 0xB47E,
-	0xDD6E, 0xB67E,
-	0xDE34, 0x0000,
-	0xDE36, 0x9231,
-	0xEC42, 0x0100,
-	0xEC44, 0x0100,
-	0xFCFC, 0x2001,
-	0x2542, 0x2020,
-	0x2544, 0x2018,
-	0x2554, 0x0000,
-	0x2556, 0x0000,
-	0x256E, 0x0000,
-	0x25D2, 0x0102,
-	0x2936, 0x4400,
-	0x2A14, 0x0002,
-	0x2A16, 0xDF03,
-	0x2A18, 0x0002,
-	0x2A1A, 0x0002,
-	0x3252, 0x8C00,
-	0x3254, 0x8C00,
-	0x3256, 0x8C00,
-	0x3258, 0x8700,
-	0x325A, 0x8200,
-	0x3E1C, 0x0200,
-	0x3E1E, 0x2000,
-	0x5ACC, 0x6505,
-	0xFCFC, 0x4000,
-	0x1858, 0x123F,
-	0xFCFC, 0x2001,
-	0x3EB8, 0x00FF,
-	0x3ECC, 0xFE03,
-	0x3F12, 0x9001,
-	0x33E0, 0x1E00,
-	0x33E2, 0x1E00,
-	0x33E4, 0x1E00,
-	0x33E6, 0x1E00,
-	0x33E8, 0x1E00,
-	0x33EA, 0x1E00,
-	0x3440, 0x0500,
-	0x3442, 0x0500,
-	0x3444, 0x0500,
-	0x3446, 0x0500,
-	0x3448, 0x0500,
-	0x344A, 0x0500,
-	0x3450, 0x0A00,
-	0x3452, 0x0A00,
-	0x3454, 0x0A00,
-	0x3456, 0x0A00,
-	0x3458, 0x0A00,
-	0x345A, 0x0A00,
-	0x34E0, 0x1400,
-	0x34E2, 0x1400,
-	0x34E4, 0x1400,
-	0x34E6, 0x1400,
-	0x34E8, 0x1400,
-	0x34EA, 0x1400,
-	0x3500, 0x1400,
-	0x3502, 0x1400,
-	0x3504, 0x1400,
-	0x3506, 0x1400,
-	0x3508, 0x1400,
-	0x350A, 0x1400,
-	0x3520, 0x1400,
-	0x3522, 0x1400,
-	0x3524, 0x1400,
-	0x3526, 0x1400,
-	0x3528, 0x1400,
-	0x352A, 0x1400,
-	0x3580, 0x2300,
-	0x3582, 0x2300,
-	0x3584, 0x2300,
-	0x3586, 0x2300,
-	0x3588, 0x2300,
-	0x358A, 0x2300,
-	0x35A0, 0x1900,
-	0x35A2, 0x1900,
-	0x35A4, 0x1900,
-	0x35A6, 0x1900,
-	0x35A8, 0x1900,
-	0x35AA, 0x1900,
-	0x35D0, 0x1E00,
-	0x35D2, 0x1E00,
-	0x35D4, 0x1E00,
-	0x35D6, 0x1E00,
-	0x35D8, 0x1E00,
-	0x35DA, 0x1E00,
-	0x35E0, 0x1E00,
-	0x35E2, 0x1E00,
-	0x35E4, 0x1E00,
-	0x35E6, 0x1E00,
-	0x35E8, 0x1E00,
-	0x35EA, 0x1E00,
-	0x35F0, 0x1E00,
-	0x35F2, 0x1E00,
-	0x35F4, 0x1E00,
-	0x35F6, 0x1E00,
-	0x35F8, 0x1E00,
-	0x35FA, 0x1E00,
-	0x3600, 0x1E00,
-	0x3602, 0x1E00,
-	0x3604, 0x1E00,
-	0x3606, 0x1E00,
-	0x3608, 0x1E00,
-	0x360A, 0x1E00,
-	0x3610, 0x1E00,
-	0x3612, 0x1E00,
-	0x3614, 0x1E00,
-	0x3616, 0x1E00,
-	0x3618, 0x1E00,
-	0x361A, 0x1E00,
-	0x3620, 0x0000,
-	0x3622, 0x0000,
-	0x3624, 0x0000,
-	0x3626, 0x0000,
-	0x3628, 0x0000,
-	0x362A, 0x0000,
-	0x3630, 0x0A00,
-	0x3632, 0x0A00,
-	0x3634, 0x0A00,
-	0x3636, 0x0A00,
-	0x3638, 0x0A00,
-	0x363A, 0x0A00,
-	0x3650, 0x1E00,
-	0x3652, 0x1E00,
-	0x3654, 0x1E00,
-	0x3656, 0x1E00,
-	0x3658, 0x1E00,
-	0x365A, 0x1E00,
-	0x3660, 0x1E00,
-	0x3662, 0x1E00,
-	0x3664, 0x1E00,
-	0x3666, 0x1E00,
-	0x3668, 0x1E00,
-	0x366A, 0x1E00,
-	0x36A0, 0x6400,
-	0x36A2, 0x6400,
-	0x36A4, 0x6400,
-	0x36A6, 0x6400,
-	0x36A8, 0x6400,
-	0x36AA, 0x6400,
-	0x36C0, 0x8C00,
-	0x36C2, 0x8C00,
-	0x36C4, 0x8C00,
-	0x36C6, 0x8C00,
-	0x36C8, 0x8C00,
-	0x36CA, 0x8C00,
-	0x36E0, 0x6400,
-	0x36E2, 0x6400,
-	0x36E4, 0x6400,
-	0x36E6, 0x6400,
-	0x36E8, 0x6400,
-	0x36EA, 0x6400,
-	0x36F0, 0x3200,
-	0x36F2, 0x3200,
-	0x36F4, 0x3200,
-	0x36F6, 0x3200,
-	0x36F8, 0x3200,
-	0x36FA, 0x3200,
-	0x3700, 0x3200,
-	0x3702, 0x3200,
-	0x3704, 0x3200,
-	0x3706, 0x3200,
-	0x3708, 0x3200,
-	0x370A, 0x3200,
-	0x3720, 0x3200,
-	0x3722, 0x3200,
-	0x3724, 0x3200,
-	0x3726, 0x3200,
-	0x3728, 0x3200,
-	0x372A, 0x3200,
-	0x3730, 0x3200,
-	0x3732, 0x3200,
-	0x3734, 0x3200,
-	0x3736, 0x3200,
-	0x3738, 0x3200,
-	0x373A, 0x3200,
-	0x3790, 0x3200,
-	0x3792, 0x3200,
-	0x3794, 0x3200,
-	0x3796, 0x3200,
-	0x3798, 0x3200,
-	0x379A, 0x3200,
-	0x37A0, 0x5000,
-	0x37A2, 0x5000,
-	0x37A4, 0x5000,
-	0x37A6, 0x5000,
-	0x37A8, 0x5000,
-	0x37AA, 0x5000,
-	0x37B0, 0x6400,
-	0x37B2, 0x6400,
-	0x37B4, 0x6400,
-	0x37B6, 0x6400,
-	0x37B8, 0x6400,
-	0x37BA, 0x6400,
-	0x37C0, 0x5000,
-	0x37C2, 0x5000,
-	0x37C4, 0x5000,
-	0x37C6, 0x5000,
-	0x37C8, 0x5000,
-	0x37CA, 0x5000,
-	0x37D0, 0x3200,
-	0x37D2, 0x3200,
-	0x37D4, 0x3200,
-	0x37D6, 0x3200,
-	0x37D8, 0x3200,
-	0x37DA, 0x3200,
-	0x37E0, 0x1E00,
-	0x37E2, 0x1E00,
-	0x37E4, 0x1E00,
-	0x37E6, 0x1E00,
-	0x37E8, 0x1E00,
-	0x37EA, 0x1E00,
-	0x37F0, 0x1E00,
-	0x37F2, 0x1E00,
-	0x37F4, 0x1E00,
-	0x37F6, 0x1E00,
-	0x37F8, 0x1E00,
-	0x37FA, 0x1E00,
-	0x3800, 0x1E00,
-	0x3802, 0x1E00,
-	0x3804, 0x1E00,
-	0x3806, 0x1E00,
-	0x3808, 0x1E00,
-	0x380A, 0x1E00,
-	0x3810, 0x1E00,
-	0x3812, 0x1E00,
-	0x3814, 0x1E00,
-	0x3816, 0x1E00,
-	0x3818, 0x1E00,
-	0x381A, 0x1E00,
-	0x3820, 0x1E00,
-	0x3822, 0x1E00,
-	0x3824, 0x1E00,
-	0x3826, 0x1E00,
-	0x3828, 0x1E00,
-	0x382A, 0x1E00,
-	0x3870, 0x3200,
-	0x3872, 0x3200,
-	0x3874, 0x3200,
-	0x3876, 0x3200,
-	0x3878, 0x3200,
-	0x387A, 0x3200,
-	0x3880, 0x3200,
-	0x3882, 0x3200,
-	0x3884, 0x3200,
-	0x3886, 0x3200,
-	0x3888, 0x3200,
-	0x388A, 0x3200,
-	0x3890, 0x3200,
-	0x3892, 0x3200,
-	0x3894, 0x3200,
-	0x3896, 0x3200,
-	0x3898, 0x3200,
-	0x389A, 0x3200,
-	0x38A0, 0x3200,
-	0x38A2, 0x3200,
-	0x38A4, 0x3200,
-	0x38A6, 0x3200,
-	0x38A8, 0x3200,
-	0x38AA, 0x3200,
-	0x38B0, 0x3200,
-	0x38B2, 0x3200,
-	0x38B4, 0x3200,
-	0x38B6, 0x3200,
-	0x38B8, 0x3200,
-	0x38BA, 0x3200,
-	0x320A, 0xFF03,
-	0x320C, 0x0700,
-	0x320E, 0xFF03,
-	0x3210, 0x0700,
-	0x321E, 0x0000,
-	0x31D4, 0x00FF,
-	0x321A, 0x0406,
-	0x3234, 0x0120,
-	0x3236, 0x1600,
-	0x3238, 0x0A14,
-	0x323A, 0x2A2A,
-	0x323C, 0x010F,
-	0x323E, 0x0419,
-	0x3240, 0x143A,
-	0x3242, 0x0A4B,
-	0x3244, 0x0101,
-	0x3246, 0x0101,
-	0x3248, 0x0010,
-	0x3252, 0xC800,
-	0x3254, 0xC400,
-	0x3256, 0xC200,
-	0x3258, 0xBE00,
-	0x325A, 0xBC00,
-	0x3266, 0x0100,
-	0x3268, 0x0200,
-	0x326A, 0x2A00,
-	0x326C, 0x0000,
-	0x326E, 0x3F00,
-	0x3270, 0x0A00,
-	0x3272, 0x1900,
-	0x3274, 0x0C00,
-	0x3276, 0x2000,
-	0x3278, 0x2300,
-	0x327A, 0x2100,
-	0x327C, 0x3000,
-	0x327E, 0x1100,
-	0x3280, 0x0C00,
-	0x3282, 0x2000,
-	0x3284, 0x2300,
-	0x3286, 0x2100,
-	0x3288, 0x3000,
-	0x328A, 0x1100,
-	0x328C, 0x0F00,
-	0x328E, 0x1900,
-	0x3290, 0x0A00,
-	0x3292, 0x0B00,
-	0x3296, 0x0800,
-	0x3298, 0x0F00,
-	0x329A, 0x1900,
-	0x329C, 0x0A00,
-	0x329E, 0x0B00,
-	0x32A0, 0x0000,
-	0x32A2, 0x0800,
-	0x32A4, 0x0F00,
-	0x32A6, 0x1900,
-	0x32A8, 0x0A00,
-	0x32AA, 0x0B00,
-	0x32AC, 0x0000,
-	0x32AE, 0x0800,
-	0x3330, 0x0108,
-	0x3334, 0x0100,
-	0x3336, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static u16 zhuquec1front_sensor_simple_init_setting[] = {
-	0xFCFC, 0x2000,
-	0xDCF0, 0x0101,
-	0xFCFC, 0x2001,
-	0x3C60, 0x0000,
-	0xFCFC, 0x2002,
-	0x849C, 0x0100,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0x84A4, 0x0000,
-	0x84A6, 0x0000,
-	0x84A8, 0x0000,
-	0x84AA, 0x0001,
-	0x84AC, 0x01FF,
-	0x84B0, 0x8089,
-	0x84B2, 0x0000,
-	0x84B4, 0x8889,
-	0x84B6, 0x0000,
-	0x84B8, 0xC097,
-	0x84BA, 0x0000,
-	0x84BC, 0xA60E,
-	0x84BE, 0x0000,
-	0x84C0, 0x2206,
-	0x84C2, 0x0000,
-	0x84C4, 0x006C,
-	0x84C8, 0x34B6,
-	0x84CA, 0x0224,
-	0x84CC, 0xB8AA,
-	0x84CE, 0x0224,
-	0x84D0, 0xB8AA,
-	0x84D2, 0x0224,
-	0x84D4, 0xB8AA,
-	0x84D6, 0x0224,
-	0x84D8, 0xB8AA,
-	0x84DA, 0x0224,
-	0x84DC, 0xB8AA,
-	0x84DE, 0x0224,
-	0xA548, 0x0046,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xA56C, 0x0000,
-	0xA56E, 0x0000,
-	0xA570, 0x0000,
-	0xA572, 0x0000,
-	0xA574, 0x00DB,
-	0xA576, 0x0000,
-	0xA578, 0x0000,
-	0xA57A, 0x0000,
-	0xA57C, 0x0000,
-	0xA57E, 0x0000,
-	0xA580, 0x0000,
-	0xA582, 0x0000,
-	0xA584, 0x0000,
-	0xA586, 0x0000,
-	0xA588, 0x0000,
-	0xA58A, 0x0000,
-	0xA58C, 0x0000,
-	0xA58E, 0x0000,
-	0xA590, 0x0000,
-	0xA592, 0x0000,
-	0xA594, 0x0000,
-	0xA596, 0x0000,
-	0xA598, 0x0000,
-	0xA59A, 0x0000,
-	0xA59C, 0x0000,
-	0xA59E, 0x0000,
-	0xA5A0, 0x013C,
-	0xFCFC, 0x2001,
-	0x5634, 0x041D,
-	0x5636, 0x0420,
-	0x5638, 0x3C85,
-	0x563A, 0x0224,
-	0x563C, 0x3CE6,
-	0x563E, 0x0320,
-	0x5640, 0xD885,
-	0x5642, 0x0224,
-	0x5644, 0xD06E,
-	0x5646, 0x0320,
-	0x5648, 0xC48D,
-	0x564A, 0x0224,
-	0x564C, 0x4877,
-	0x564E, 0x0320,
-	0x5650, 0xCC90,
-	0x5652, 0x0224,
-	0x5654, 0x6812,
-	0x5656, 0x0320,
-	0x5658, 0xB88F,
-	0x565A, 0x0224,
-	0x565C, 0xE8FE,
-	0x565E, 0x0220,
-	0x5660, 0x5491,
-	0x5662, 0x0224,
-	0x5664, 0xA462,
-	0x5666, 0x0320,
-	0x5668, 0x9C95,
-	0x566A, 0x0224,
-	0x566C, 0x901B,
-	0x566E, 0x0020,
-	0x5670, 0x2896,
-	0x5672, 0x0224,
-	0x5674, 0xC446,
-	0x5676, 0x0320,
-	0x5678, 0xE896,
-	0x567A, 0x0224,
-	0x567C, 0x1427,
-	0x567E, 0x0320,
-	0x5680, 0xC498,
-	0x5682, 0x0224,
-	0x5684, 0x304C,
-	0x5686, 0x0220,
-	0x5688, 0x749B,
-	0x568A, 0x0224,
-	0x568C, 0xC82C,
-	0x568E, 0x0220,
-	0x5690, 0xD09B,
-	0x5692, 0x0224,
-	0x5694, 0x484F,
-	0x5696, 0x0220,
-	0x5698, 0x289C,
-	0x569A, 0x0224,
-	0x569C, 0xB041,
-	0x569E, 0x0220,
-	0x56A0, 0x3C9A,
-	0x56A2, 0x0224,
-	0x56A4, 0xC81D,
-	0x56A6, 0x0420,
-	0x56A8, 0xFC9A,
-	0x56AA, 0x0224,
-	0x56AC, 0xAC7F,
-	0x56AE, 0x0420,
-	0x56B0, 0x8C86,
-	0x56B2, 0x0224,
-	0x56B4, 0x7C80,
-	0x56B6, 0x0420,
-	0x56B8, 0x1086,
-	0x56BA, 0x0224,
-	0x56BC, 0xF887,
-	0x56BE, 0x0320,
-	0x56C0, 0xF0AB,
-	0x56C2, 0x0224,
-	0x56C4, 0x1007,
-	0x56C6, 0x0320,
-	0x56C8, 0xE08E,
-	0x56CA, 0x0224,
-	0x56CC, 0x1409,
-	0x56CE, 0x0020,
-	0x56D0, 0x2495,
-	0x56D2, 0x0224,
-	0x56D4, 0x2046,
-	0x56D6, 0x0420,
-	0x56D8, 0xC087,
-	0x56DA, 0x0224,
-	0x56DC, 0xB05B,
-	0x56DE, 0x0420,
-	0x56E0, 0x4088,
-	0x56E2, 0x0224,
-	0x56E4, 0x505C,
-	0x56E6, 0x0320,
-	0x56E8, 0x448A,
-	0x56EA, 0x0224,
-	0x56EC, 0xA45B,
-	0x56EE, 0x0320,
-	0x56F0, 0x5089,
-	0x56F2, 0x0224,
-	0x56F4, 0x306A,
-	0x56F6, 0x0420,
-	0x56F8, 0x1485,
-	0x56FA, 0x0224,
-	0x56FC, 0x90F8,
-	0x56FE, 0x0220,
-	0x5700, 0x44A1,
-	0x5702, 0x0224,
-	0x5704, 0x0454,
-	0x5706, 0x0120,
-	0x5708, 0xB0A5,
-	0x570A, 0x0224,
-	0x570C, 0x0453,
-	0x570E, 0x0020,
-	0x5710, 0x20A7,
-	0x5712, 0x0224,
-	0x5714, 0xC850,
-	0x5716, 0x0220,
-	0x5718, 0x2CAC,
-	0x571A, 0x0224,
-	0x571C, 0x2C88,
-	0x571E, 0x0220,
-	0x5720, 0x58AD,
-	0x5722, 0x0224,
-	0x5724, 0x7C82,
-	0x5726, 0x0120,
-	0x5728, 0x18B4,
-	0x572A, 0x0224,
-	0x572C, 0xACF3,
-	0x572E, 0x0320,
-	0x5730, 0xA8B4,
-	0x5732, 0x0224,
-	0x5734, 0x1081,
-	0x5736, 0x0320,
-	0x5738, 0xCCB5,
-	0x573A, 0x0224,
-	0xFCFC, 0x2002,
-	0xA5B0, 0x1753,
-	0xA5B2, 0x02FC,
-	0xA5B4, 0xE702,
-	0xA5B6, 0x03F1,
-	0xA5B8, 0xB7E7,
-	0xA5BA, 0x0124,
-	0xA5BC, 0x9387,
-	0xA5BE, 0x0787,
-	0xA5C0, 0x83A4,
-	0xA5C2, 0x870D,
-	0xA5C4, 0x03A4,
-	0xA5C6, 0xC70D,
-	0xA5C8, 0x0146,
-	0xA5CA, 0xA685,
-	0xA5CC, 0x2285,
-	0xA5CE, 0x9740,
-	0xA5D0, 0x01FC,
-	0xA5D2, 0xE780,
-	0xA5D4, 0x6047,
-	0xA5D6, 0x97B0,
-	0xA5D8, 0xFEFB,
-	0xA5DA, 0xE780,
-	0xA5DC, 0xE0E2,
-	0xA5DE, 0x0546,
-	0xA5E0, 0xA685,
-	0xA5E2, 0x2285,
-	0xA5E4, 0x9740,
-	0xA5E6, 0x01FC,
-	0xA5E8, 0xE780,
-	0xA5EA, 0x0046,
-	0xA5EC, 0x37A7,
-	0xA5EE, 0x0224,
-	0xA5F0, 0x9307,
-	0xA5F2, 0x8754,
-	0xA5F4, 0x03C6,
-	0xA5F6, 0xC702,
-	0xA5F8, 0x8546,
-	0xA5FA, 0x630B,
-	0xA5FC, 0xD600,
-	0xA5FE, 0x83C6,
-	0xA600, 0x0700,
-	0xA602, 0x0947,
-	0xA604, 0x638E,
-	0xA606, 0xE606,
-	0xA608, 0x1753,
-	0xA60A, 0x02FC,
-	0xA60C, 0x6700,
-	0xA60E, 0xC3ED,
-	0xA610, 0x03D5,
-	0xA612, 0x4705,
-	0xA614, 0x05C9,
-	0xA616, 0x83D8,
-	0xA618, 0x2705,
-	0xA61A, 0xB7E6,
-	0xA61C, 0x0124,
-	0xA61E, 0x83D5,
-	0xA620, 0x665F,
-	0xA622, 0x1307,
-	0xA624, 0x8754,
-	0xA626, 0x8146,
-	0xA628, 0x2548,
-	0xA62A, 0x0356,
-	0xA62C, 0xE702,
-	0xA62E, 0x0907,
-	0xA630, 0x63EA,
-	0xA632, 0xC50C,
-	0xA634, 0x8506,
-	0xA636, 0xE39A,
-	0xA638, 0x06FF,
-	0xA63A, 0x3707,
-	0xA63C, 0x0040,
-	0xA63E, 0x3A95,
-	0xA640, 0x2310,
-	0xA642, 0x1501,
-	0xA644, 0x03D5,
-	0xA646, 0x6705,
-	0xA648, 0x5DD9,
-	0xA64A, 0x83D8,
-	0xA64C, 0x2705,
-	0xA64E, 0x37E7,
-	0xA650, 0x0124,
-	0xA652, 0x8355,
-	0xA654, 0x675F,
-	0xA656, 0xBE86,
-	0xA658, 0x0147,
-	0xA65A, 0x2548,
-	0xA65C, 0x03D6,
-	0xA65E, 0xE602,
-	0xA660, 0x8906,
-	0xA662, 0x63E8,
-	0xA664, 0xC50A,
-	0xA666, 0x0507,
-	0xA668, 0xE31A,
-	0xA66A, 0x07FF,
-	0xA66C, 0x3707,
-	0xA66E, 0x0040,
-	0xA670, 0x3A95,
-	0xA672, 0x2310,
-	0xA674, 0x1501,
-	0xA676, 0x83C6,
-	0xA678, 0x0700,
-	0xA67A, 0x0947,
-	0xA67C, 0xE396,
-	0xA67E, 0xE6F8,
-	0xA680, 0x03D5,
-	0xA682, 0x8702,
-	0xA684, 0x1DC5,
-	0xA686, 0x83D8,
-	0xA688, 0x6702,
-	0xA68A, 0x37F7,
-	0xA68C, 0x0124,
-	0xA68E, 0x8355,
-	0xA690, 0xA781,
-	0xA692, 0xBE86,
-	0xA694, 0x0147,
-	0xA696, 0x2548,
-	0xA698, 0x03D6,
-	0xA69A, 0x2600,
-	0xA69C, 0x8906,
-	0xA69E, 0x63ED,
-	0xA6A0, 0xC504,
-	0xA6A2, 0x0507,
-	0xA6A4, 0xE31A,
-	0xA6A6, 0x07FF,
-	0xA6A8, 0x3707,
-	0xA6AA, 0x0040,
-	0xA6AC, 0x3A95,
-	0xA6AE, 0x2310,
-	0xA6B0, 0x1501,
-	0xA6B2, 0x03D5,
-	0xA6B4, 0xA702,
-	0xA6B6, 0x29D9,
-	0xA6B8, 0x83D8,
-	0xA6BA, 0x6702,
-	0xA6BC, 0x37F7,
-	0xA6BE, 0x0124,
-	0xA6C0, 0x8355,
-	0xA6C2, 0xA781,
-	0xA6C4, 0xBE86,
-	0xA6C6, 0x0147,
-	0xA6C8, 0x2548,
-	0xA6CA, 0x03D6,
-	0xA6CC, 0x2600,
-	0xA6CE, 0x8906,
-	0xA6D0, 0x63EE,
-	0xA6D2, 0xC500,
-	0xA6D4, 0x0507,
-	0xA6D6, 0xE31A,
-	0xA6D8, 0x07FF,
-	0xA6DA, 0xB707,
-	0xA6DC, 0x0040,
-	0xA6DE, 0x3E95,
-	0xA6E0, 0x2310,
-	0xA6E2, 0x1501,
-	0xA6E4, 0x1753,
-	0xA6E6, 0x02FC,
-	0xA6E8, 0x6700,
-	0xA6EA, 0x03E0,
-	0xA6EC, 0x2107,
-	0xA6EE, 0x0607,
-	0xA6F0, 0xBA97,
-	0xA6F2, 0x83D8,
-	0xA6F4, 0x4700,
-	0xA6F6, 0xD5B7,
-	0xA6F8, 0x2107,
-	0xA6FA, 0x0607,
-	0xA6FC, 0x3E97,
-	0xA6FE, 0x8358,
-	0xA700, 0x4700,
-	0xA702, 0x5DB7,
-	0xA704, 0x1387,
-	0xA706, 0x0602,
-	0xA708, 0x0607,
-	0xA70A, 0x3E97,
-	0xA70C, 0x8358,
-	0xA70E, 0x0700,
-	0xA710, 0x2DB7,
-	0xA712, 0x1307,
-	0xA714, 0x0702,
-	0xA716, 0x0607,
-	0xA718, 0x3E97,
-	0xA71A, 0x8358,
-	0xA71C, 0x0700,
-	0xA71E, 0xB9B7,
-	0xA720, 0x1753,
-	0xA722, 0x02FC,
-	0xA724, 0xE702,
-	0xA726, 0x83D7,
-	0xA728, 0x3284,
-	0xA72A, 0xB7E7,
-	0xA72C, 0x0124,
-	0xA72E, 0x032B,
-	0xA730, 0x4600,
-	0xA732, 0x832A,
-	0xA734, 0x4609,
-	0xA736, 0x032A,
-	0xA738, 0xC604,
-	0xA73A, 0x0348,
-	0xA73C, 0x8600,
-	0xA73E, 0x9387,
-	0xA740, 0x0787,
-	0xA742, 0x0346,
-	0xA744, 0x8609,
-	0xA746, 0x0347,
-	0xA748, 0x0405,
-	0xA74A, 0x03AC,
-	0xA74C, 0x070E,
-	0xA74E, 0x83AB,
-	0xA750, 0x470E,
-	0xA752, 0x3318,
-	0xA754, 0x0B01,
-	0xA756, 0x3317,
-	0xA758, 0xEA00,
-	0xA75A, 0x3396,
-	0xA75C, 0xCA00,
-	0xA75E, 0x2322,
-	0xA760, 0x0401,
-	0xA762, 0x78C4,
-	0xA764, 0xAA84,
-	0xA766, 0x2E89,
-	0xA768, 0x232A,
-	0xA76A, 0xC408,
-	0xA76C, 0xE285,
-	0xA76E, 0x5E85,
-	0xA770, 0x0146,
-	0xA772, 0xB689,
-	0xA774, 0x9740,
-	0xA776, 0x01FC,
-	0xA778, 0xE780,
-	0xA77A, 0x002D,
-	0xA77C, 0xCE86,
-	0xA77E, 0x2286,
-	0xA780, 0xCA85,
-	0xA782, 0x2685,
-	0xA784, 0x97B0,
-	0xA786, 0xFDFB,
-	0xA788, 0xE780,
-	0xA78A, 0x00B8,
-	0xA78C, 0x0546,
-	0xA78E, 0xE285,
-	0xA790, 0x5E85,
-	0xA792, 0x9740,
-	0xA794, 0x01FC,
-	0xA796, 0xE780,
-	0xA798, 0x202B,
-	0xA79A, 0x2322,
-	0xA79C, 0x6401,
-	0xA79E, 0x232A,
-	0xA7A0, 0x5409,
-	0xA7A2, 0x2326,
-	0xA7A4, 0x4405,
-	0xA7A6, 0x1753,
-	0xA7A8, 0x02FC,
-	0xA7AA, 0x6700,
-	0xA7AC, 0xA3D2,
-	0xA7AE, 0x0100,
-	0xA7B0, 0x1753,
-	0xA7B2, 0x02FC,
-	0xA7B4, 0xE702,
-	0xA7B6, 0x03D1,
-	0xA7B8, 0x2A84,
-	0xA7BA, 0xEFE0,
-	0xA7BC, 0xAFB2,
-	0xA7BE, 0xA147,
-	0xA7C0, 0x6306,
-	0xA7C2, 0xF400,
-	0xA7C4, 0x1753,
-	0xA7C6, 0x02FC,
-	0xA7C8, 0x6700,
-	0xA7CA, 0x03D2,
-	0xA7CC, 0x9770,
-	0xA7CE, 0xFFFB,
-	0xA7D0, 0xE780,
-	0xA7D2, 0xC014,
-	0xA7D4, 0x39C5,
-	0xA7D6, 0xB737,
-	0xA7D8, 0x0124,
-	0xA7DA, 0x83C7,
-	0xA7DC, 0x271A,
-	0xA7DE, 0xFDD3,
-	0xA7E0, 0x3784,
-	0xA7E2, 0x0040,
-	0xA7E4, 0x8355,
-	0xA7E6, 0xE4F3,
-	0xA7E8, 0x0D45,
-	0xA7EA, 0x93E5,
-	0xA7EC, 0x0524,
-	0xA7EE, 0x97D0,
-	0xA7F0, 0xFFFB,
-	0xA7F2, 0xE780,
-	0xA7F4, 0x6013,
-	0xA7F6, 0x8355,
-	0xA7F8, 0x24F7,
-	0xA7FA, 0xB7A7,
-	0xA7FC, 0x0124,
-	0xA7FE, 0x9387,
-	0xA800, 0x0753,
-	0xA802, 0x03D7,
-	0xA804, 0x47B6,
-	0xA806, 0xC205,
-	0xA808, 0xC181,
-	0xA80A, 0x1377,
-	0xA80C, 0xF7DB,
-	0xA80E, 0x93F5,
-	0xA810, 0xF5DB,
-	0xA812, 0x4145,
-	0xA814, 0x2392,
-	0xA816, 0xE7B6,
-	0xA818, 0x97D0,
-	0xA81A, 0xFFFB,
-	0xA81C, 0xE780,
-	0xA81E, 0xC010,
-	0xA820, 0x55B7,
-	0xA822, 0x9770,
-	0xA824, 0xFFFB,
-	0xA826, 0xE780,
-	0xA828, 0x600C,
-	0xA82A, 0x55D5,
-	0xA82C, 0x9780,
-	0xA82E, 0xFFFB,
-	0xA830, 0xE780,
-	0xA832, 0x4086,
-	0xA834, 0x19C9,
-	0xA836, 0xB797,
-	0xA838, 0x0124,
-	0xA83A, 0x9387,
-	0xA83C, 0x07D7,
-	0xA83E, 0x03C7,
-	0xA840, 0x8703,
-	0xA842, 0x83C7,
-	0xA844, 0x2706,
-	0xA846, 0x6306,
-	0xA848, 0xF706,
-	0xA84A, 0x9780,
-	0xA84C, 0xFFFB,
-	0xA84E, 0xE780,
-	0xA850, 0x6084,
-	0xA852, 0x51D1,
-	0xA854, 0xB797,
-	0xA856, 0x0124,
-	0xA858, 0x9387,
-	0xA85A, 0x07D7,
-	0xA85C, 0x03C7,
-	0xA85E, 0xC701,
-	0xA860, 0x83C7,
-	0xA862, 0x2706,
-	0xA864, 0xE319,
-	0xA866, 0xF7F6,
-	0xA868, 0xB727,
-	0xA86A, 0x0224,
-	0xA86C, 0x0564,
-	0xA86E, 0x9387,
-	0xA870, 0x076B,
-	0xA872, 0xA297,
-	0xA874, 0x03C7,
-	0xA876, 0xF780,
-	0xA878, 0x8547,
-	0xA87A, 0x6317,
-	0xA87C, 0xF700,
-	0xA87E, 0xB737,
-	0xA880, 0x0124,
-	0xA882, 0x83C7,
-	0xA884, 0x57A5,
-	0xA886, 0xB1C3,
-	0xA888, 0xB787,
-	0xA88A, 0x0040,
-	0xA88C, 0x83D5,
-	0xA88E, 0xE7F3,
-	0xA890, 0x0D45,
-	0xA892, 0x93E5,
-	0xA894, 0x0501,
-	0xA896, 0x97D0,
-	0xA898, 0xFFFB,
-	0xA89A, 0xE780,
-	0xA89C, 0xE008,
-	0xA89E, 0xB7A7,
-	0xA8A0, 0x0124,
-	0xA8A2, 0x9387,
-	0xA8A4, 0x0753,
-	0xA8A6, 0x03D7,
-	0xA8A8, 0x47B6,
-	0xA8AA, 0x3D9B,
-	0xA8AC, 0x2392,
-	0xA8AE, 0xE7B6,
-	0xA8B0, 0x1DB7,
-	0xA8B2, 0xB727,
-	0xA8B4, 0x0224,
-	0xA8B6, 0x0564,
-	0xA8B8, 0x9387,
-	0xA8BA, 0x076B,
-	0xA8BC, 0xA297,
-	0xA8BE, 0x03C7,
-	0xA8C0, 0xF780,
-	0xA8C2, 0x9147,
-	0xA8C4, 0xE30D,
-	0xA8C6, 0xF7FA,
-	0xA8C8, 0xC1B7,
-	0xA8CA, 0xB787,
-	0xA8CC, 0x0040,
-	0xA8CE, 0x83D5,
-	0xA8D0, 0xE7F3,
-	0xA8D2, 0x0D45,
-	0xA8D4, 0x93E5,
-	0xA8D6, 0x0504,
-	0xA8D8, 0x97D0,
-	0xA8DA, 0xFFFB,
-	0xA8DC, 0xE780,
-	0xA8DE, 0xC004,
-	0xA8E0, 0xB797,
-	0xA8E2, 0x0124,
-	0xA8E4, 0x9387,
-	0xA8E6, 0x0753,
-	0xA8E8, 0xA297,
-	0xA8EA, 0x03D7,
-	0xA8EC, 0x47B6,
-	0xA8EE, 0x1377,
-	0xA8F0, 0xF7FB,
-	0xA8F2, 0x2392,
-	0xA8F4, 0xE7B6,
-	0xA8F6, 0xC5B5,
-	0xA8F8, 0x3571,
-	0xA8FA, 0x22CF,
-	0xA8FC, 0x26CD,
-	0xA8FE, 0x7324,
-	0xA900, 0x2034,
-	0xA902, 0xF324,
-	0xA904, 0x1034,
-	0xA906, 0x7360,
-	0xA908, 0x0430,
-	0xA90A, 0x06CB,
-	0xA90C, 0x16C9,
-	0xA90E, 0x1AC7,
-	0xA910, 0x1EC5,
-	0xA912, 0x2AC3,
-	0xA914, 0x2EC1,
-	0xA916, 0xB2DE,
-	0xA918, 0xB6DC,
-	0xA91A, 0xBADA,
-	0xA91C, 0xBED8,
-	0xA91E, 0xC2D6,
-	0xA920, 0xC6D4,
-	0xA922, 0xF2D2,
-	0xA924, 0xF6D0,
-	0xA926, 0xFACE,
-	0xA928, 0xFECC,
-	0xA92A, 0x82E2,
-	0xA92C, 0x86E0,
-	0xA92E, 0x0AFE,
-	0xA930, 0x0EFC,
-	0xA932, 0x12FA,
-	0xA934, 0x16F8,
-	0xA936, 0x1AF6,
-	0xA938, 0x1EF4,
-	0xA93A, 0x2AF2,
-	0xA93C, 0x2EF0,
-	0xA93E, 0x32EE,
-	0xA940, 0x36EC,
-	0xA942, 0x3AEA,
-	0xA944, 0x3EE8,
-	0xA946, 0x42E6,
-	0xA948, 0x46E4,
-	0xA94A, 0x72E2,
-	0xA94C, 0x76E0,
-	0xA94E, 0x272E,
-	0xA950, 0xE1FF,
-	0xA952, 0x272C,
-	0xA954, 0xF1FF,
-	0xA956, 0x9770,
-	0xA958, 0xFFFB,
-	0xA95A, 0xE780,
-	0xA95C, 0x20FC,
-	0xA95E, 0x19C5,
-	0xA960, 0x9770,
-	0xA962, 0xFFFB,
-	0xA964, 0xE780,
-	0xA966, 0x80F8,
-	0xA968, 0x631C,
-	0xA96A, 0x0512,
-	0xA96C, 0x9305,
-	0xA96E, 0x0024,
-	0xA970, 0x4145,
-	0xA972, 0x97D0,
-	0xA974, 0xFFFB,
-	0xA976, 0xE780,
-	0xA978, 0x2002,
-	0xA97A, 0x8145,
-	0xA97C, 0x9377,
-	0xA97E, 0x1500,
-	0xA980, 0x85C7,
-	0xA982, 0x37D7,
-	0xA984, 0x0124,
-	0xA986, 0xB7A7,
-	0xA988, 0x0124,
-	0xA98A, 0x1307,
-	0xA98C, 0x07C4,
-	0xA98E, 0x9387,
-	0xA990, 0x0753,
-	0xA992, 0x0356,
-	0xA994, 0x4707,
-	0xA996, 0x83D6,
-	0xA998, 0xA7B6,
-	0xA99A, 0x0506,
-	0xA99C, 0x93E6,
-	0xA99E, 0x1600,
-	0xA9A0, 0x231A,
-	0xA9A2, 0xC706,
-	0xA9A4, 0x2395,
-	0xA9A6, 0xD7B6,
-	0xA9A8, 0x9377,
-	0xA9AA, 0x2500,
-	0xA9AC, 0x85C7,
-	0xA9AE, 0x37D7,
-	0xA9B0, 0x0124,
-	0xA9B2, 0xB7A7,
-	0xA9B4, 0x0124,
-	0xA9B6, 0x1307,
-	0xA9B8, 0x07C4,
-	0xA9BA, 0x9387,
-	0xA9BC, 0x0753,
-	0xA9BE, 0x0356,
-	0xA9C0, 0xC70C,
-	0xA9C2, 0x83D6,
-	0xA9C4, 0xA7B6,
-	0xA9C6, 0x0506,
-	0xA9C8, 0x93E6,
-	0xA9CA, 0x2600,
-	0xA9CC, 0x2316,
-	0xA9CE, 0xC70C,
-	0xA9D0, 0x2395,
-	0xA9D2, 0xD7B6,
-	0xA9D4, 0x9377,
-	0xA9D6, 0x0520,
-	0xA9D8, 0x1375,
-	0xA9DA, 0x0504,
-	0xA9DC, 0xC5C3,
-	0xA9DE, 0xB7D7,
-	0xA9E0, 0x0124,
-	0xA9E2, 0x9387,
-	0xA9E4, 0x07C4,
-	0xA9E6, 0x03D7,
-	0xA9E8, 0x6708,
-	0xA9EA, 0x0507,
-	0xA9EC, 0x2393,
-	0xA9EE, 0xE708,
-	0xA9F0, 0xD1C5,
-	0xA9F2, 0x37A7,
-	0xA9F4, 0x0124,
-	0xA9F6, 0x1307,
-	0xA9F8, 0x0753,
-	0xA9FA, 0x8356,
-	0xA9FC, 0xA7B6,
-	0xA9FE, 0x93E6,
-	0xAA00, 0x0620,
-	0xAA02, 0x2315,
-	0xAA04, 0xD7B6,
-	0xAA06, 0x11C9,
-	0xAA08, 0x03D6,
-	0xAA0A, 0xA708,
-	0xAA0C, 0x0506,
-	0xAA0E, 0x2395,
-	0xAA10, 0xC708,
-	0xAA12, 0x93E6,
-	0xAA14, 0x0604,
-	0xAA16, 0x2315,
-	0xAA18, 0xD7B6,
-	0xAA1A, 0xDA40,
-	0xAA1C, 0xCA42,
-	0xAA1E, 0x3A43,
-	0xAA20, 0xAA43,
-	0xAA22, 0x1A45,
-	0xAA24, 0x8A45,
-	0xAA26, 0x7656,
-	0xAA28, 0xE656,
-	0xAA2A, 0x5657,
-	0xAA2C, 0xC657,
-	0xAA2E, 0x3658,
-	0xAA30, 0xA658,
-	0xAA32, 0x165E,
-	0xAA34, 0x865E,
-	0xAA36, 0x764F,
-	0xAA38, 0xE64F,
-	0xAA3A, 0x1660,
-	0xAA3C, 0x8660,
-	0xAA3E, 0x7271,
-	0xAA40, 0xE271,
-	0xAA42, 0x5272,
-	0xAA44, 0xC272,
-	0xAA46, 0x3273,
-	0xAA48, 0xA273,
-	0xAA4A, 0x1275,
-	0xAA4C, 0x8275,
-	0xAA4E, 0x7266,
-	0xAA50, 0xE266,
-	0xAA52, 0x5267,
-	0xAA54, 0xC267,
-	0xAA56, 0x3268,
-	0xAA58, 0xA268,
-	0xAA5A, 0x126E,
-	0xAA5C, 0x826E,
-	0xAA5E, 0x072F,
-	0xAA60, 0xC1FF,
-	0xAA62, 0x872F,
-	0xAA64, 0x81FF,
-	0xAA66, 0x7370,
-	0xAA68, 0x0430,
-	0xAA6A, 0x7390,
-	0xAA6C, 0x1434,
-	0xAA6E, 0x7310,
-	0xAA70, 0x2434,
-	0xAA72, 0x7A44,
-	0xAA74, 0xEA44,
-	0xAA76, 0x0D61,
-	0xAA78, 0x7300,
-	0xAA7A, 0x2030,
-	0xAA7C, 0x59DD,
-	0xAA7E, 0xB7D7,
-	0xAA80, 0x0124,
-	0xAA82, 0x9387,
-	0xAA84, 0x07C4,
-	0xAA86, 0x03D7,
-	0xAA88, 0xA708,
-	0xAA8A, 0x0507,
-	0xAA8C, 0x2395,
-	0xAA8E, 0xE708,
-	0xAA90, 0xC9D5,
-	0xAA92, 0x37A7,
-	0xAA94, 0x0124,
-	0xAA96, 0x1307,
-	0xAA98, 0x0753,
-	0xAA9A, 0x8356,
-	0xAA9C, 0xA7B6,
-	0xAA9E, 0x95BF,
-	0xAAA0, 0xB7A7,
-	0xAAA2, 0x0124,
-	0xAAA4, 0x83D5,
-	0xAAA6, 0x8709,
-	0xAAA8, 0x4145,
-	0xAAAA, 0x97D0,
-	0xAAAC, 0xFFFB,
-	0xAAAE, 0xE780,
-	0xAAB0, 0xA0EE,
-	0xAAB2, 0x8545,
-	0xAAB4, 0xE1B5,
-	0xAAB6, 0x0100,
-	0xAAB8, 0x8280,
-	0xAABA, 0x0100,
-	0xAABC, 0x1753,
-	0xAABE, 0x02FC,
-	0xAAC0, 0xE702,
-	0xAAC2, 0x43A0,
-	0xAAC4, 0x37E4,
-	0xAAC6, 0x0124,
-	0xAAC8, 0x1304,
-	0xAACA, 0x044C,
-	0xAACC, 0x8344,
-	0xAACE, 0xE40A,
-	0xAAD0, 0x8547,
-	0xAAD2, 0x2307,
-	0xAAD4, 0xF40A,
-	0xAAD6, 0x97A0,
-	0xAAD8, 0xFDFB,
-	0xAADA, 0xE780,
-	0xAADC, 0xE0EB,
-	0xAADE, 0x2307,
-	0xAAE0, 0x940A,
-	0xAAE2, 0x1753,
-	0xAAE4, 0x02FC,
-	0xAAE6, 0x6700,
-	0xAAE8, 0x23A0,
-	0xAAEA, 0x0100,
-	0xAAEC, 0xB7A7,
-	0xAAEE, 0x0224,
-	0xAAF0, 0x83C7,
-	0xAAF2, 0x075A,
-	0xAAF4, 0x0547,
-	0xAAF6, 0x6383,
-	0xAAF8, 0xE700,
-	0xAAFA, 0x8280,
-	0xAAFC, 0x1753,
-	0xAAFE, 0x02FC,
-	0xAB00, 0xE702,
-	0xAB02, 0xA39A,
-	0xAB04, 0x3794,
-	0xAB06, 0x0124,
-	0xAB08, 0x1304,
-	0xAB0A, 0x0453,
-	0xAB0C, 0x0347,
-	0xAB0E, 0x041B,
-	0xAB10, 0x4111,
-	0xAB12, 0x6307,
-	0xAB14, 0xF700,
-	0xAB16, 0x4101,
-	0xAB18, 0x1753,
-	0xAB1A, 0x02FC,
-	0xAB1C, 0x6700,
-	0xAB1E, 0x239C,
-	0xAB20, 0x8947,
-	0xAB22, 0xE31A,
-	0xAB24, 0xF5FE,
-	0xAB26, 0x8347,
-	0xAB28, 0x3441,
-	0xAB2A, 0xADC3,
-	0xAB2C, 0x83A9,
-	0xAB2E, 0x0500,
-	0xAB30, 0x2EC6,
-	0xAB32, 0x97C0,
-	0xAB34, 0x01FC,
-	0xAB36, 0xE780,
-	0xAB38, 0xE0C0,
-	0xAB3A, 0xAA84,
-	0xAB3C, 0x9780,
-	0xAB3E, 0x01FC,
-	0xAB40, 0xE780,
-	0xAB42, 0x40D0,
-	0xAB44, 0xB245,
-	0xAB46, 0x2A89,
-	0xAB48, 0x9C41,
-	0xAB4A, 0x63F3,
-	0xAB4C, 0x9700,
-	0xAB4E, 0xA687,
-	0xAB50, 0x8851,
-	0xAB52, 0x9CC1,
-	0xAB54, 0x2EC6,
-	0xAB56, 0x4A95,
-	0xAB58, 0x97B0,
-	0xAB5A, 0x00FC,
-	0xAB5C, 0xE780,
-	0xAB5E, 0xC0CD,
-	0xAB60, 0xB245,
-	0xAB62, 0xAA84,
-	0xAB64, 0xE8C9,
-	0xAB66, 0x3385,
-	0xAB68, 0x2901,
-	0xAB6A, 0x97B0,
-	0xAB6C, 0x00FC,
-	0xAB6E, 0xE780,
-	0xAB70, 0xA0CC,
-	0xAB72, 0x8567,
-	0xAB74, 0x3E94,
-	0xAB76, 0x8327,
-	0xAB78, 0xC483,
-	0xAB7A, 0x2695,
-	0xAB7C, 0xB245,
-	0xAB7E, 0x63F3,
-	0xAB80, 0xA700,
-	0xAB82, 0xAA87,
-	0xAB84, 0x2322,
-	0xAB86, 0xF498,
-	0xAB88, 0xE8C5,
-	0xAB8A, 0x71B7,
-	0xAB8C, 0x0145,
-	0xAB8E, 0x2EC6,
-	0xAB90, 0x97B0,
-	0xAB92, 0x01FC,
-	0xAB94, 0xE780,
-	0xAB96, 0x403E,
-	0xAB98, 0xB245,
-	0xAB9A, 0xAA89,
-	0xAB9C, 0x51BF,
-	0xAB9E, 0x0100,
-	0xABA0, 0x1753,
-	0xABA2, 0x02FC,
-	0xABA4, 0xE702,
-	0xABA6, 0x0392,
-	0xABA8, 0x2A84,
-	0xABAA, 0xEFE0,
-	0xABAC, 0x7F85,
-	0xABAE, 0x01E8,
-	0xABB0, 0xB7D7,
-	0xABB2, 0x0124,
-	0xABB4, 0x03A7,
-	0xABB6, 0x87C1,
-	0xABB8, 0x9147,
-	0xABBA, 0x6306,
-	0xABBC, 0xF700,
-	0xABBE, 0x1753,
-	0xABC0, 0x02FC,
-	0xABC2, 0x6700,
-	0xABC4, 0x6392,
-	0xABC6, 0xB7D7,
-	0xABC8, 0x0124,
-	0xABCA, 0x83C7,
-	0xABCC, 0x07FA,
-	0xABCE, 0xE5DB,
-	0xABD0, 0xB747,
-	0xABD2, 0x0124,
-	0xABD4, 0x83C7,
-	0xABD6, 0x27C4,
-	0xABD8, 0xFDF3,
-	0xABDA, 0x97E0,
-	0xABDC, 0x00FC,
-	0xABDE, 0xE780,
-	0xABE0, 0x60A0,
-	0xABE2, 0xB787,
-	0xABE4, 0x0224,
-	0xABE6, 0x0547,
-	0xABE8, 0xA380,
-	0xABEA, 0xE74E,
-	0xABEC, 0xC9BF,
-	0xABEE, 0x0100,
-	0xABF0, 0x1753,
-	0xABF2, 0x02FC,
-	0xABF4, 0xE702,
-	0xABF6, 0x038D,
-	0xABF8, 0x3784,
-	0xABFA, 0x0224,
-	0xABFC, 0x1304,
-	0xABFE, 0xC449,
-	0xAC00, 0x8347,
-	0xAC02, 0x5404,
-	0xAC04, 0x99E7,
-	0xAC06, 0xEFE0,
-	0xAC08, 0x3F8B,
-	0xAC0A, 0x1753,
-	0xAC0C, 0x02FC,
-	0xAC0E, 0x6700,
-	0xAC10, 0xA38D,
-	0xAC12, 0x97E0,
-	0xAC14, 0x00FC,
-	0xAC16, 0xE780,
-	0xAC18, 0xE0B7,
-	0xAC1A, 0xA302,
-	0xAC1C, 0x0404,
-	0xAC1E, 0xEFE0,
-	0xAC20, 0xBF89,
-	0xAC22, 0x1753,
-	0xAC24, 0x02FC,
-	0xAC26, 0x6700,
-	0xAC28, 0x238C,
-	0xAC2A, 0x0100,
-	0xAC2C, 0x1753,
-	0xAC2E, 0x02FC,
-	0xAC30, 0xE702,
-	0xAC32, 0x4389,
-	0xAC34, 0xB7E7,
-	0xAC36, 0x0124,
-	0xAC38, 0x9387,
-	0xAC3A, 0x0787,
-	0xAC3C, 0x03A9,
-	0xAC3E, 0x870E,
-	0xAC40, 0x83A4,
-	0xAC42, 0xC70E,
-	0xAC44, 0x0146,
-	0xAC46, 0xCA85,
-	0xAC48, 0x2A84,
-	0xAC4A, 0x2685,
-	0xAC4C, 0x9740,
-	0xAC4E, 0x01FC,
-	0xAC50, 0xE780,
-	0xAC52, 0x80DF,
-	0xAC54, 0x2285,
-	0xAC56, 0x97A0,
-	0xAC58, 0xFFFB,
-	0xAC5A, 0xE780,
-	0xAC5C, 0x2047,
-	0xAC5E, 0x0546,
-	0xAC60, 0xCA85,
-	0xAC62, 0x2685,
-	0xAC64, 0x9740,
-	0xAC66, 0x01FC,
-	0xAC68, 0xE780,
-	0xAC6A, 0x00DE,
-	0xAC6C, 0x8547,
-	0xAC6E, 0x6309,
-	0xAC70, 0xF400,
-	0xAC72, 0x9147,
-	0xAC74, 0x6306,
-	0xAC76, 0xF400,
-	0xAC78, 0x1753,
-	0xAC7A, 0x02FC,
-	0xAC7C, 0x6700,
-	0xAC7E, 0xC386,
-	0xAC80, 0x9770,
-	0xAC82, 0xFFFB,
-	0xAC84, 0xE780,
-	0xAC86, 0x80C9,
-	0xAC88, 0x65F9,
-	0xAC8A, 0x9770,
-	0xAC8C, 0xFFFB,
-	0xAC8E, 0xE780,
-	0xAC90, 0xE0C5,
-	0xAC92, 0x7DD1,
-	0xAC94, 0x9770,
-	0xAC96, 0xFFFB,
-	0xAC98, 0xE780,
-	0xAC9A, 0xC03F,
-	0xAC9C, 0x19C9,
-	0xAC9E, 0xB797,
-	0xACA0, 0x0124,
-	0xACA2, 0x9387,
-	0xACA4, 0x07D7,
-	0xACA6, 0x03C7,
-	0xACA8, 0x8703,
-	0xACAA, 0x83C7,
-	0xACAC, 0x2706,
-	0xACAE, 0x6306,
-	0xACB0, 0xF706,
-	0xACB2, 0x9770,
-	0xACB4, 0xFFFB,
-	0xACB6, 0xE780,
-	0xACB8, 0xE03D,
-	0xACBA, 0x5DDD,
-	0xACBC, 0xB797,
-	0xACBE, 0x0124,
-	0xACC0, 0x9387,
-	0xACC2, 0x07D7,
-	0xACC4, 0x03C7,
-	0xACC6, 0xC701,
-	0xACC8, 0x83C7,
-	0xACCA, 0x2706,
-	0xACCC, 0xE316,
-	0xACCE, 0xF7FA,
-	0xACD0, 0xB7B7,
-	0xACD2, 0x0224,
-	0xACD4, 0x83A7,
-	0xACD6, 0x0773,
-	0xACD8, 0xB706,
-	0xACDA, 0x0040,
-	0xACDC, 0x1386,
-	0xACDE, 0x4606,
-	0xACE0, 0x8965,
-	0xACE2, 0x3E96,
-	0xACE4, 0x1387,
-	0xACE6, 0x061F,
-	0xACE8, 0x9385,
-	0xACEA, 0xF5F1,
-	0xACEC, 0x2310,
-	0xACEE, 0xB600,
-	0xACF0, 0x3E97,
-	0xACF2, 0x7D56,
-	0xACF4, 0x2310,
-	0xACF6, 0xC700,
-	0xACF8, 0x37D6,
-	0xACFA, 0x0124,
-	0xACFC, 0x1306,
-	0xACFE, 0x06E7,
-	0xAD00, 0x0357,
-	0xAD02, 0xC605,
-	0xAD04, 0x0356,
-	0xAD06, 0x6606,
-	0xAD08, 0x9386,
-	0xAD0A, 0x861D,
-	0xAD0C, 0x3297,
-	0xAD0E, 0x4207,
-	0xAD10, 0xB697,
-	0xAD12, 0x4183,
-	0xAD14, 0x2390,
-	0xAD16, 0xE700,
-	0xAD18, 0x85B7,
-	0xAD1A, 0xB7B7,
-	0xAD1C, 0x0224,
-	0xAD1E, 0x83A7,
-	0xAD20, 0x0773,
-	0xAD22, 0xB706,
-	0xAD24, 0x0040,
-	0xAD26, 0x1386,
-	0xAD28, 0x4606,
-	0xAD2A, 0x8965,
-	0xAD2C, 0x3E96,
-	0xAD2E, 0x1387,
-	0xAD30, 0x061F,
-	0xAD32, 0x9385,
-	0xAD34, 0xF5F1,
-	0xAD36, 0x2310,
-	0xAD38, 0xB600,
-	0xAD3A, 0x3E97,
-	0xAD3C, 0x7D56,
-	0xAD3E, 0x2310,
-	0xAD40, 0xC700,
-	0xAD42, 0x37D6,
-	0xAD44, 0x0124,
-	0xAD46, 0x1306,
-	0xAD48, 0x06E7,
-	0xAD4A, 0x0357,
-	0xAD4C, 0x0606,
-	0xAD4E, 0x9386,
-	0xAD50, 0xA61D,
-	0xAD52, 0x0356,
-	0xAD54, 0x6606,
-	0xAD56, 0x5DBF,
-	0xAD58, 0x1743,
-	0xAD5A, 0x02FC,
-	0xAD5C, 0xE702,
-	0xAD5E, 0x8376,
-	0xAD60, 0xB7D7,
-	0xAD62, 0x0024,
-	0xAD64, 0x83C7,
-	0xAD66, 0x476D,
-	0xAD68, 0x8544,
-	0xAD6A, 0x6380,
-	0xAD6C, 0x9714,
-	0xAD6E, 0xB7E7,
-	0xAD70, 0x0024,
-	0xAD72, 0x03C4,
-	0xAD74, 0xC784,
-	0xAD76, 0xB7A7,
-	0xAD78, 0x0124,
-	0xAD7A, 0x83C7,
-	0xAD7C, 0x6792,
-	0xAD7E, 0x3334,
-	0xAD80, 0x8000,
-	0xAD82, 0x3304,
-	0xAD84, 0x8040,
-	0xAD86, 0x7998,
-	0xAD88, 0x1304,
-	0xAD8A, 0x6402,
-	0xAD8C, 0xEDE7,
-	0xAD8E, 0xB767,
-	0xAD90, 0x0024,
-	0xAD92, 0x9387,
-	0xAD94, 0x0733,
-	0xAD96, 0x03D7,
-	0xAD98, 0xE75B,
-	0xAD9A, 0x19C7,
-	0xAD9C, 0x1347,
-	0xAD9E, 0xF7FF,
-	0xADA0, 0x618F,
-	0xADA2, 0x1314,
-	0xADA4, 0x0701,
-	0xADA6, 0x4180,
-	0xADA8, 0x83D7,
-	0xADAA, 0x075C,
-	0xADAC, 0x0D45,
-	0xADAE, 0x5D8C,
-	0xADB0, 0x4204,
-	0xADB2, 0x4180,
-	0xADB4, 0xA285,
-	0xADB6, 0x97D0,
-	0xADB8, 0xFFFB,
-	0xADBA, 0xE780,
-	0xADBC, 0x20C5,
-	0xADBE, 0x9315,
-	0xADC0, 0x0501,
-	0xADC2, 0xC181,
-	0xADC4, 0xAA84,
-	0xADC6, 0x6309,
-	0xADC8, 0xB400,
-	0xADCA, 0x0565,
-	0xADCC, 0xA18D,
-	0xADCE, 0x2D05,
-	0xADD0, 0x97A0,
-	0xADD2, 0xFFFB,
-	0xADD4, 0xE780,
-	0xADD6, 0x0050,
-	0xADD8, 0x1395,
-	0xADDA, 0x0401,
-	0xADDC, 0x93F7,
-	0xADDE, 0x1400,
-	0xADE0, 0x4181,
-	0xADE2, 0x91CB,
-	0xADE4, 0xB7D7,
-	0xADE6, 0x0124,
-	0xADE8, 0x9387,
-	0xADEA, 0x07C4,
-	0xADEC, 0x03D7,
-	0xADEE, 0x4707,
-	0xADF0, 0x0507,
-	0xADF2, 0x239A,
-	0xADF4, 0xE706,
-	0xADF6, 0x9377,
-	0xADF8, 0x2500,
-	0xADFA, 0x91CB,
-	0xADFC, 0xB7D7,
-	0xADFE, 0x0124,
-	0xAE00, 0x9387,
-	0xAE02, 0x07C4,
-	0xAE04, 0x03D7,
-	0xAE06, 0xC70C,
-	0xAE08, 0x0507,
-	0xAE0A, 0x2396,
-	0xAE0C, 0xE70C,
-	0xAE0E, 0x9377,
-	0xAE10, 0x4500,
-	0xAE12, 0x91CB,
-	0xAE14, 0xB7D7,
-	0xAE16, 0x0124,
-	0xAE18, 0x9387,
-	0xAE1A, 0x07C4,
-	0xAE1C, 0x03D7,
-	0xAE1E, 0xE70C,
-	0xAE20, 0x0507,
-	0xAE22, 0x2397,
-	0xAE24, 0xE70C,
-	0xAE26, 0x9377,
-	0xAE28, 0x0502,
-	0xAE2A, 0x91CB,
-	0xAE2C, 0xB7D7,
-	0xAE2E, 0x0124,
-	0xAE30, 0x9387,
-	0xAE32, 0x07C4,
-	0xAE34, 0x03D7,
-	0xAE36, 0x070F,
-	0xAE38, 0x0507,
-	0xAE3A, 0x2398,
-	0xAE3C, 0xE70E,
-	0xAE3E, 0x9377,
-	0xAE40, 0x0520,
-	0xAE42, 0x91CB,
-	0xAE44, 0xB7D7,
-	0xAE46, 0x0124,
-	0xAE48, 0x9387,
-	0xAE4A, 0x07C4,
-	0xAE4C, 0x03D7,
-	0xAE4E, 0x6708,
-	0xAE50, 0x0507,
-	0xAE52, 0x2393,
-	0xAE54, 0xE708,
-	0xAE56, 0x1375,
-	0xAE58, 0x0504,
-	0xAE5A, 0x11C9,
-	0xAE5C, 0xB7D7,
-	0xAE5E, 0x0124,
-	0xAE60, 0x9387,
-	0xAE62, 0x07C4,
-	0xAE64, 0x03D7,
-	0xAE66, 0xA708,
-	0xAE68, 0x0507,
-	0xAE6A, 0x2395,
-	0xAE6C, 0xE708,
-	0xAE6E, 0x1743,
-	0xAE70, 0x02FC,
-	0xAE72, 0x6700,
-	0xAE74, 0x6367,
-	0xAE76, 0xB7D7,
-	0xAE78, 0x0124,
-	0xAE7A, 0x83D7,
-	0xAE7C, 0xA7E7,
-	0xAE7E, 0x81DB,
-	0xAE80, 0x9760,
-	0xAE82, 0xFEFB,
-	0xAE84, 0xE780,
-	0xAE86, 0x0072,
-	0xAE88, 0x6311,
-	0xAE8A, 0x9506,
-	0xAE8C, 0xB797,
-	0xAE8E, 0x0124,
-	0xAE90, 0x9387,
-	0xAE92, 0x07D7,
-	0xAE94, 0x03C7,
-	0xAE96, 0xC701,
-	0xAE98, 0x83C7,
-	0xAE9A, 0x2706,
-	0xAE9C, 0x6307,
-	0xAE9E, 0xF704,
-	0xAEA0, 0x1364,
-	0xAEA2, 0x0424,
-	0xAEA4, 0x4204,
-	0xAEA6, 0x4180,
-	0xAEA8, 0x11A0,
-	0xAEAA, 0x0144,
-	0xAEAC, 0xB767,
-	0xAEAE, 0x0024,
-	0xAEB0, 0x9387,
-	0xAEB2, 0x0733,
-	0xAEB4, 0x03C7,
-	0xAEB6, 0x273B,
-	0xAEB8, 0xE30F,
-	0xAEBA, 0x07EC,
-	0xAEBC, 0x37A7,
-	0xAEBE, 0x0124,
-	0xAEC0, 0x0347,
-	0xAEC2, 0x6792,
-	0xAEC4, 0xE309,
-	0xAEC6, 0x07EC,
-	0xAEC8, 0x37D7,
-	0xAECA, 0x0124,
-	0xAECC, 0x0357,
-	0xAECE, 0xA7E7,
-	0xAED0, 0xE303,
-	0xAED2, 0x07EC,
-	0xAED4, 0x3797,
-	0xAED6, 0x0124,
-	0xAED8, 0x0347,
-	0xAEDA, 0x1700,
-	0xAEDC, 0xE30D,
-	0xAEDE, 0x07EA,
-	0xAEE0, 0x1374,
-	0xAEE2, 0xF4DF,
-	0xAEE4, 0x4204,
-	0xAEE6, 0x4180,
-	0xAEE8, 0x7DB5,
-	0xAEEA, 0x9760,
-	0xAEEC, 0xFEFB,
-	0xAEEE, 0xE780,
-	0xAEF0, 0x606B,
-	0xAEF2, 0x8547,
-	0xAEF4, 0xE31C,
-	0xAEF6, 0xF5FA,
-	0xAEF8, 0xB797,
-	0xAEFA, 0x0124,
-	0xAEFC, 0x9387,
-	0xAEFE, 0x07D7,
-	0xAF00, 0x03C7,
-	0xAF02, 0xC701,
-	0xAF04, 0x83C7,
-	0xAF06, 0x2706,
-	0xAF08, 0xE312,
-	0xAF0A, 0xF7FA,
-	0xAF0C, 0x1364,
-	0xAF0E, 0x0420,
-	0xAF10, 0x4204,
-	0xAF12, 0x4180,
-	0xAF14, 0x61BF,
-	0xAF16, 0x0100,
-	0xAF18, 0x7171,
-	0xAF1A, 0x22D7,
-	0xAF1C, 0x26D5,
-	0xAF1E, 0x7324,
-	0xAF20, 0x2034,
-	0xAF22, 0xF324,
-	0xAF24, 0x1034,
-	0xAF26, 0x7360,
-	0xAF28, 0x0430,
-	0xAF2A, 0x2EC5,
-	0xAF2C, 0xA565,
-	0xAF2E, 0xBEDC,
-	0xAF30, 0x06D3,
-	0xAF32, 0x16D1,
-	0xAF34, 0x1ACF,
-	0xAF36, 0x1ECD,
-	0xAF38, 0x22CB,
-	0xAF3A, 0x2AC7,
-	0xAF3C, 0x32C3,
-	0xAF3E, 0x36C1,
-	0xAF40, 0xBADE,
-	0xAF42, 0xC2DA,
-	0xAF44, 0xC6D8,
-	0xAF46, 0xF2D0,
-	0xAF48, 0xF6CE,
-	0xAF4A, 0xFACC,
-	0xAF4C, 0xFECA,
-	0xAF4E, 0x82E2,
-	0xAF50, 0x86E0,
-	0xAF52, 0x0AFE,
-	0xAF54, 0x0EFC,
-	0xAF56, 0x12FA,
-	0xAF58, 0x16F8,
-	0xAF5A, 0x1AF6,
-	0xAF5C, 0x1EF4,
-	0xAF5E, 0x2AF2,
-	0xAF60, 0x2EF0,
-	0xAF62, 0x32EE,
-	0xAF64, 0x26C9,
-	0xAF66, 0xCAD6,
-	0xAF68, 0xCED4,
-	0xAF6A, 0xD2D2,
-	0xAF6C, 0x9385,
-	0xAF6E, 0x0540,
-	0xAF70, 0x0545,
-	0xAF72, 0x36EC,
-	0xAF74, 0x3AEA,
-	0xAF76, 0x3EE8,
-	0xAF78, 0x42E6,
-	0xAF7A, 0x46E4,
-	0xAF7C, 0x72E2,
-	0xAF7E, 0x76E0,
-	0xAF80, 0x272E,
-	0xAF82, 0xE1FF,
-	0xAF84, 0x272C,
-	0xAF86, 0xF1FF,
-	0xAF88, 0x97D0,
-	0xAF8A, 0xFFFB,
-	0xAF8C, 0xE780,
-	0xAF8E, 0xC0A0,
-	0xAF90, 0xA167,
-	0xAF92, 0xE98F,
-	0xAF94, 0x2A84,
-	0xAF96, 0x6394,
-	0xAF98, 0x0718,
-	0xAF9A, 0xB764,
-	0xAF9C, 0x0124,
-	0xAF9E, 0x9384,
-	0xAFA0, 0x0440,
-	0xAFA2, 0x8567,
-	0xAFA4, 0xE18F,
-	0xAFA6, 0xCDCF,
-	0xAFA8, 0x37D7,
-	0xAFAA, 0x0124,
-	0xAFAC, 0x3789,
-	0xAFAE, 0x0224,
-	0xAFB0, 0x1307,
-	0xAFB2, 0x07C4,
-	0xAFB4, 0x1309,
-	0xAFB6, 0xC949,
-	0xAFB8, 0x8356,
-	0xAFBA, 0x670E,
-	0xAFBC, 0x8327,
-	0xAFBE, 0x0905,
-	0xAFC0, 0x8506,
-	0xAFC2, 0x8507,
-	0xAFC4, 0x2328,
-	0xAFC6, 0xF904,
-	0xAFC8, 0x2313,
-	0xAFCA, 0xD70E,
-	0xAFCC, 0x858B,
-	0xAFCE, 0x639F,
-	0xAFD0, 0x071A,
-	0xAFD2, 0x8547,
-	0xAFD4, 0xA30A,
-	0xAFD6, 0xF904,
-	0xAFD8, 0x9770,
-	0xAFDA, 0xFFFB,
-	0xAFDC, 0xE780,
-	0xAFDE, 0x8008,
-	0xAFE0, 0x19C5,
-	0xAFE2, 0x0357,
-	0xAFE4, 0x4905,
-	0xAFE6, 0x9307,
-	0xAFE8, 0x1010,
-	0xAFEA, 0x6306,
-	0xAFEC, 0xF724,
-	0xAFEE, 0xDC50,
-	0xAFF0, 0x0945,
-	0xAFF2, 0x8297,
-	0xAFF4, 0x9770,
-	0xAFF6, 0xFFFB,
-	0xAFF8, 0xE780,
-	0xAFFA, 0x408F,
-	0xAFFC, 0x11C5,
-	0xAFFE, 0x9770,
-	0xB000, 0xFFFB,
-	0xB002, 0xE780,
-	0xB004, 0xA091,
-	0xB006, 0x55C5,
-	0xB008, 0x9760,
-	0xB00A, 0x00FC,
-	0xB00C, 0xE780,
-	0xB00E, 0xC063,
-	0xB010, 0xB787,
-	0xB012, 0x0024,
-	0xB014, 0x83C7,
-	0xB016, 0x078C,
-	0xB018, 0xAA89,
-	0xB01A, 0x6392,
-	0xB01C, 0x071C,
-	0xB01E, 0xB7D7,
-	0xB020, 0x0124,
-	0xB022, 0x9387,
-	0xB024, 0x07E7,
-	0xB026, 0xBC5F,
-	0xB028, 0x639A,
-	0xB02A, 0x0716,
-	0xB02C, 0x3799,
-	0xB02E, 0x0124,
-	0xB030, 0x1309,
-	0xB032, 0x0953,
-	0xB034, 0xB727,
-	0xB036, 0x0024,
-	0xB038, 0x83C7,
-	0xB03A, 0x7752,
-	0xB03C, 0x6396,
-	0xB03E, 0x071E,
-	0xB040, 0x0345,
-	0xB042, 0xC918,
-	0xB044, 0x631D,
-	0xB046, 0x051C,
-	0xB048, 0xDC50,
-	0xB04A, 0x0D45,
-	0xB04C, 0x8297,
-	0xB04E, 0x4E85,
-	0xB050, 0x9760,
-	0xB052, 0x00FC,
-	0xB054, 0xE780,
-	0xB056, 0x8063,
-	0xB058, 0x8567,
-	0xB05A, 0x3E99,
-	0xB05C, 0x2320,
-	0xB05E, 0xA9A2,
-	0xB060, 0x1374,
-	0xB062, 0x0440,
-	0xB064, 0x21C4,
-	0xB066, 0xB7D7,
-	0xB068, 0x0124,
-	0xB06A, 0x9387,
-	0xB06C, 0x07C4,
-	0xB06E, 0x37A7,
-	0xB070, 0x0124,
-	0xB072, 0x83D6,
-	0xB074, 0x670E,
-	0xB076, 0x1307,
-	0xB078, 0x0753,
-	0xB07A, 0x0347,
-	0xB07C, 0x179B,
-	0xB07E, 0x8506,
-	0xB080, 0x3784,
-	0xB082, 0x0224,
-	0xB084, 0x1304,
-	0xB086, 0xC449,
-	0xB088, 0x1337,
-	0xB08A, 0x1700,
-	0xB08C, 0x2393,
-	0xB08E, 0xD70E,
-	0xB090, 0x230A,
-	0xB092, 0xE404,
-	0xB094, 0x9770,
-	0xB096, 0xFFFB,
-	0xB098, 0xE780,
-	0xB09A, 0xC0FC,
-	0xB09C, 0x6306,
-	0xB09E, 0x0510,
-	0xB0A0, 0x0357,
-	0xB0A2, 0x4405,
-	0xB0A4, 0x9307,
-	0xB0A6, 0x1010,
-	0xB0A8, 0x6300,
-	0xB0AA, 0xF710,
-	0xB0AC, 0xDC50,
-	0xB0AE, 0x1D45,
-	0xB0B0, 0x8297,
-	0xB0B2, 0x9A50,
-	0xB0B4, 0x8A52,
-	0xB0B6, 0x7A43,
-	0xB0B8, 0xEA43,
-	0xB0BA, 0x5A44,
-	0xB0BC, 0xCA44,
-	0xB0BE, 0x3A45,
-	0xB0C0, 0xAA45,
-	0xB0C2, 0x1A46,
-	0xB0C4, 0x8A46,
-	0xB0C6, 0x7657,
-	0xB0C8, 0xE657,
-	0xB0CA, 0x5658,
-	0xB0CC, 0xC658,
-	0xB0CE, 0x3659,
-	0xB0D0, 0xA659,
-	0xB0D2, 0x165A,
-	0xB0D4, 0x065E,
-	0xB0D6, 0xF64E,
-	0xB0D8, 0x664F,
-	0xB0DA, 0xD64F,
-	0xB0DC, 0x1660,
-	0xB0DE, 0x8660,
-	0xB0E0, 0x7271,
-	0xB0E2, 0xE271,
-	0xB0E4, 0x5272,
-	0xB0E6, 0xC272,
-	0xB0E8, 0x3273,
-	0xB0EA, 0xA273,
-	0xB0EC, 0x1275,
-	0xB0EE, 0x8275,
-	0xB0F0, 0x7266,
-	0xB0F2, 0xE266,
-	0xB0F4, 0x5267,
-	0xB0F6, 0xC267,
-	0xB0F8, 0x3268,
-	0xB0FA, 0xA268,
-	0xB0FC, 0x126E,
-	0xB0FE, 0x826E,
-	0xB100, 0x072F,
-	0xB102, 0xC1FF,
-	0xB104, 0x872F,
-	0xB106, 0x81FF,
-	0xB108, 0x7370,
-	0xB10A, 0x0430,
-	0xB10C, 0x7390,
-	0xB10E, 0x1434,
-	0xB110, 0x7310,
-	0xB112, 0x2434,
-	0xB114, 0x3A54,
-	0xB116, 0xAA54,
-	0xB118, 0x4D61,
-	0xB11A, 0x7300,
-	0xB11C, 0x2030,
-	0xB11E, 0x37D9,
-	0xB120, 0x0124,
-	0xB122, 0x1309,
-	0xB124, 0x09C4,
-	0xB126, 0x8357,
-	0xB128, 0x490E,
-	0xB12A, 0xB764,
-	0xB12C, 0x0124,
-	0xB12E, 0x9384,
-	0xB130, 0x0440,
-	0xB132, 0xD850,
-	0xB134, 0x8507,
-	0xB136, 0x0145,
-	0xB138, 0x2312,
-	0xB13A, 0xF90E,
-	0xB13C, 0x0297,
-	0xB13E, 0x9760,
-	0xB140, 0xFFFB,
-	0xB142, 0xE780,
-	0xB144, 0xA07A,
-	0xB146, 0x25E5,
-	0xB148, 0xB729,
-	0xB14A, 0x0024,
-	0xB14C, 0x3799,
-	0xB14E, 0x0124,
-	0xB150, 0x9389,
-	0xB152, 0x0933,
-	0xB154, 0x1309,
-	0xB156, 0x0953,
-	0xB158, 0x056A,
-	0xB15A, 0x83C7,
-	0xB15C, 0x791F,
-	0xB15E, 0x4A9A,
-	0xB160, 0x2320,
-	0xB162, 0x0AA2,
-	0xB164, 0xB9EF,
-	0xB166, 0x0345,
-	0xB168, 0xC918,
-	0xB16A, 0x2DE5,
-	0xB16C, 0x83C7,
-	0xB16E, 0x0920,
-	0xB170, 0x89C7,
-	0xB172, 0x0327,
-	0xB174, 0x4AB3,
-	0xB176, 0x630A,
-	0xB178, 0xF700,
-	0xB17A, 0x97E0,
-	0xB17C, 0x00FC,
-	0xB17E, 0xE780,
-	0xB180, 0x60DC,
-	0xB182, 0xDC50,
-	0xB184, 0x0545,
-	0xB186, 0x8297,
-	0xB188, 0x29BD,
-	0xB18A, 0x01A0,
-	0xB18C, 0x8547,
-	0xB18E, 0x230A,
-	0xB190, 0x0904,
-	0xB192, 0xA30A,
-	0xB194, 0x0904,
-	0xB196, 0x2328,
-	0xB198, 0xF904,
-	0xB19A, 0x3DBD,
-	0xB19C, 0x7D55,
-	0xB19E, 0x9770,
-	0xB1A0, 0x01FC,
-	0xB1A2, 0xE780,
-	0xB1A4, 0x200E,
-	0xB1A6, 0x59B5,
-	0xB1A8, 0xEFE0,
-	0xB1AA, 0xDFE2,
-	0xB1AC, 0x01B7,
-	0xB1AE, 0x9760,
-	0xB1B0, 0xFFFB,
-	0xB1B2, 0xE780,
-	0xB1B4, 0xA076,
-	0xB1B6, 0x49F9,
-	0xB1B8, 0x8357,
-	0xB1BA, 0x490E,
-	0xB1BC, 0x858B,
-	0xB1BE, 0xC9F7,
-	0xB1C0, 0xCDBD,
-	0xB1C2, 0x9770,
-	0xB1C4, 0x01FC,
-	0xB1C6, 0xE780,
-	0xB1C8, 0xA00C,
-	0xB1CA, 0x2311,
-	0xB1CC, 0xA94E,
-	0xB1CE, 0x0345,
-	0xB1D0, 0xC918,
-	0xB1D2, 0x49DD,
-	0xB1D4, 0x97C0,
-	0xB1D6, 0xFFFB,
-	0xB1D8, 0xE780,
-	0xB1DA, 0xC0BD,
-	0xB1DC, 0x41BF,
-	0xB1DE, 0x9770,
-	0xB1E0, 0x01FC,
-	0xB1E2, 0xE780,
-	0xB1E4, 0xE00A,
-	0xB1E6, 0x3799,
-	0xB1E8, 0x0124,
-	0xB1EA, 0x1309,
-	0xB1EC, 0x0953,
-	0xB1EE, 0x8D67,
-	0xB1F0, 0xCA97,
-	0xB1F2, 0x03C7,
-	0xB1F4, 0xD76F,
-	0xB1F6, 0x232E,
-	0xB1F8, 0xA94E,
-	0xB1FA, 0x8547,
-	0xB1FC, 0x6306,
-	0xB1FE, 0xF700,
-	0xB200, 0x8327,
-	0xB202, 0x094F,
-	0xB204, 0xE377,
-	0xB206, 0xF5EA,
-	0xB208, 0x9760,
-	0xB20A, 0x00FC,
-	0xB20C, 0xE780,
-	0xB20E, 0x0006,
-	0xB210, 0x9770,
-	0xB212, 0x01FC,
-	0xB214, 0xE780,
-	0xB216, 0xC007,
-	0xB218, 0x2320,
-	0xB21A, 0xA950,
-	0xB21C, 0x21BD,
-	0xB21E, 0x97C0,
-	0xB220, 0xFFFB,
-	0xB222, 0xE780,
-	0xB224, 0x20BC,
-	0xB226, 0x0DB5,
-	0xB228, 0x9770,
-	0xB22A, 0x01FC,
-	0xB22C, 0xE780,
-	0xB22E, 0x4006,
-	0xB230, 0x2312,
-	0xB232, 0xA94E,
-	0xB234, 0x31B5,
-	0xB236, 0xEFE0,
-	0xB238, 0xFFD9,
-	0xB23A, 0x55BB,
-	0xB23C, 0x1743,
-	0xB23E, 0x02FC,
-	0xB240, 0xE702,
-	0xB242, 0x4328,
-	0xB244, 0x2A84,
-	0xB246, 0xEFD0,
-	0xB248, 0x3FB1,
-	0xB24A, 0x8947,
-	0xB24C, 0x6306,
-	0xB24E, 0xF400,
-	0xB250, 0x1743,
-	0xB252, 0x02FC,
-	0xB254, 0x6700,
-	0xB256, 0x4329,
-	0xB258, 0xB7A4,
-	0xB25A, 0x0224,
-	0xB25C, 0x9384,
-	0xB25E, 0x8454,
-	0xB260, 0x83C7,
-	0xB262, 0x1406,
-	0xB264, 0xF5F7,
-	0xB266, 0x9770,
-	0xB268, 0xFFFB,
-	0xB26A, 0xE780,
-	0xB26C, 0xA0ED,
-	0xB26E, 0x6DF1,
-	0xB270, 0x9770,
-	0xB272, 0xFFFB,
-	0xB274, 0xE780,
-	0xB276, 0x40EE,
-	0xB278, 0x61FD,
-	0xB27A, 0x3725,
-	0xB27C, 0x0224,
-	0xB27E, 0x1305,
-	0xB280, 0x05ED,
-	0xB282, 0x9700,
-	0xB284, 0xFFFB,
-	0xB286, 0xE780,
-	0xB288, 0x2005,
-	0xB28A, 0xB767,
-	0xB28C, 0x0124,
-	0xB28E, 0x83A7,
-	0xB290, 0x0740,
-	0xB292, 0x0549,
-	0xB294, 0x37A7,
-	0xB296, 0x0124,
-	0xB298, 0x1D45,
-	0xB29A, 0x2305,
-	0xB29C, 0x2723,
-	0xB29E, 0x8297,
-	0xB2A0, 0xA380,
-	0xB2A2, 0x2407,
-	0xB2A4, 0x9780,
-	0xB2A6, 0x01FC,
-	0xB2A8, 0xE780,
-	0xB2AA, 0x008E,
-	0xB2AC, 0x55F1,
-	0xB2AE, 0xB727,
-	0xB2B0, 0x0124,
-	0xB2B2, 0x2380,
-	0xB2B4, 0x8754,
-	0xB2B6, 0x97B0,
-	0xB2B8, 0xFEFB,
-	0xB2BA, 0xE780,
-	0xB2BC, 0x600D,
-	0xB2BE, 0x2381,
-	0xB2C0, 0x2407,
-	0xB2C2, 0x79B7,
-	0xB2C4, 0x1743,
-	0xB2C6, 0x02FC,
-	0xB2C8, 0xE702,
-	0xB2CA, 0xC31F,
-	0xB2CC, 0x37A4,
-	0xB2CE, 0x0224,
-	0xB2D0, 0x1304,
-	0xB2D2, 0x8454,
-	0xB2D4, 0x0347,
-	0xB2D6, 0x2406,
-	0xB2D8, 0x8547,
-	0xB2DA, 0x630A,
-	0xB2DC, 0xF700,
-	0xB2DE, 0x97B0,
-	0xB2E0, 0xFEFB,
-	0xB2E2, 0xE780,
-	0xB2E4, 0xE074,
-	0xB2E6, 0x1743,
-	0xB2E8, 0x02FC,
-	0xB2EA, 0x6700,
-	0xB2EC, 0xE31F,
-	0xB2EE, 0x9780,
-	0xB2F0, 0x01FC,
-	0xB2F2, 0xE780,
-	0xB2F4, 0x6089,
-	0xB2F6, 0x65F5,
-	0xB2F8, 0x97B0,
-	0xB2FA, 0xFEFB,
-	0xB2FC, 0xE780,
-	0xB2FE, 0x801A,
-	0xB300, 0x2301,
-	0xB302, 0x0406,
-	0xB304, 0xE9BF,
-	0xB306, 0x0100,
-	0xB308, 0x1743,
-	0xB30A, 0x02FC,
-	0xB30C, 0xE702,
-	0xB30E, 0x831B,
-	0xB310, 0x9D47,
-	0xB312, 0x631F,
-	0xB314, 0xF500,
-	0xB316, 0x3794,
-	0xB318, 0x0124,
-	0xB31A, 0x1304,
-	0xB31C, 0x0453,
-	0xB31E, 0x8567,
-	0xB320, 0xA297,
-	0xB322, 0x83C7,
-	0xB324, 0xA7CF,
-	0xB326, 0x9DE7,
-	0xB328, 0x1743,
-	0xB32A, 0x02FC,
-	0xB32C, 0x6700,
-	0xB32E, 0xC31B,
-	0xB330, 0x2A84,
-	0xB332, 0xEFD0,
-	0xB334, 0x7FE8,
-	0xB336, 0x8547,
-	0xB338, 0xE318,
-	0xB33A, 0xF4FE,
-	0xB33C, 0xB7E7,
-	0xB33E, 0x0124,
-	0xB340, 0x9387,
-	0xB342, 0x074C,
-	0xB344, 0x23AE,
-	0xB346, 0x0710,
-	0xB348, 0x23A4,
-	0xB34A, 0x077E,
-	0xB34C, 0x1743,
-	0xB34E, 0x02FC,
-	0xB350, 0x6700,
-	0xB352, 0x8319,
-	0xB354, 0x9770,
-	0xB356, 0xFFFB,
-	0xB358, 0xE780,
-	0xB35A, 0xC0DE,
-	0xB35C, 0x71F5,
-	0xB35E, 0x9770,
-	0xB360, 0xFFFB,
-	0xB362, 0xE780,
-	0xB364, 0x60DF,
-	0xB366, 0x69F1,
-	0xB368, 0x8D67,
-	0xB36A, 0x3E94,
-	0xB36C, 0x8327,
-	0xB36E, 0x846D,
-	0xB370, 0xB724,
-	0xB372, 0x0124,
-	0xB374, 0x9384,
-	0xB376, 0x045F,
-	0xB378, 0x91EF,
-	0xB37A, 0x83A7,
-	0xB37C, 0x440E,
-	0xB37E, 0x99CB,
-	0xB380, 0xB7D7,
-	0xB382, 0x0124,
-	0xB384, 0x83C7,
-	0xB386, 0x07FA,
-	0xB388, 0xC5D3,
-	0xB38A, 0x9700,
-	0xB38C, 0xFFFB,
-	0xB38E, 0xE780,
-	0xB390, 0x20EE,
-	0xB392, 0x59BF,
-	0xB394, 0x83A7,
-	0xB396, 0xC40A,
-	0xB398, 0xC1DB,
-	0xB39A, 0x0545,
-	0xB39C, 0x9730,
-	0xB39E, 0xFEFB,
-	0xB3A0, 0xE780,
-	0xB3A2, 0x805C,
-	0xB3A4, 0xB735,
-	0xB3A6, 0x202D,
-	0xB3A8, 0x7578,
-	0xB3AA, 0x37F5,
-	0xB3AC, 0x202D,
-	0xB3AE, 0x9385,
-	0xB3B0, 0x0560,
-	0xB3B2, 0x1308,
-	0xB3B4, 0x08A0,
-	0xB3B6, 0x9168,
-	0xB3B8, 0x1305,
-	0xB3BA, 0x0560,
-	0xB3BC, 0xB387,
-	0xB3BE, 0x0501,
-	0xB3C0, 0x03C7,
-	0xB3C2, 0x0700,
-	0xB3C4, 0x9306,
-	0xB3C6, 0xF00F,
-	0xB3C8, 0x1316,
-	0xB3CA, 0x8701,
-	0xB3CC, 0x6186,
-	0xB3CE, 0x0607,
-	0xB3D0, 0x6344,
-	0xB3D2, 0x0600,
-	0xB3D4, 0x9376,
-	0xB3D6, 0xF70F,
-	0xB3D8, 0x2380,
-	0xB3DA, 0xD700,
-	0xB3DC, 0x8507,
-	0xB3DE, 0xE391,
-	0xB3E0, 0xB7FE,
-	0xB3E2, 0xB385,
-	0xB3E4, 0x1701,
-	0xB3E6, 0xE39B,
-	0xB3E8, 0xA5FC,
-	0xB3EA, 0xB7A7,
-	0xB3EC, 0x0224,
-	0xB3EE, 0x0547,
-	0xB3F0, 0x0145,
-	0xB3F2, 0xA384,
-	0xB3F4, 0xE75A,
-	0xB3F6, 0x9730,
-	0xB3F8, 0xFEFB,
-	0xB3FA, 0xE780,
-	0xB3FC, 0xE056,
-	0xB3FE, 0xB7D7,
-	0xB400, 0x0124,
-	0xB402, 0x83C7,
-	0xB404, 0x07FA,
-	0xB406, 0x8DD3,
-	0xB408, 0x8327,
-	0xB40A, 0x846D,
-	0xB40C, 0x91FF,
-	0xB40E, 0x83A7,
-	0xB410, 0x440E,
-	0xB412, 0x99DB,
-	0xB414, 0x9DBF,
-	0xB416, 0x0100,
-	0xB418, 0x1743,
-	0xB41A, 0x02FC,
-	0xB41C, 0xE702,
-	0xB41E, 0x830A,
-	0xB420, 0xB7D7,
-	0xB422, 0x0124,
-	0xB424, 0x9387,
-	0xB426, 0x07F4,
-	0xB428, 0x03C7,
-	0xB42A, 0x1705,
-	0xB42C, 0x2A84,
-	0xB42E, 0x11C7,
-	0xB430, 0x03C7,
-	0xB432, 0x1700,
-	0xB434, 0x8947,
-	0xB436, 0x6301,
-	0xB438, 0xF704,
-	0xB43A, 0xB7E7,
-	0xB43C, 0x0124,
-	0xB43E, 0x9387,
-	0xB440, 0x0787,
-	0xB442, 0x03A9,
-	0xB444, 0x870F,
-	0xB446, 0x83A4,
-	0xB448, 0xC70F,
-	0xB44A, 0x0146,
-	0xB44C, 0xCA85,
-	0xB44E, 0x2685,
-	0xB450, 0x9730,
-	0xB452, 0x01FC,
-	0xB454, 0xE780,
-	0xB456, 0x405F,
-	0xB458, 0x2285,
-	0xB45A, 0x97D0,
-	0xB45C, 0xFEFB,
-	0xB45E, 0xE780,
-	0xB460, 0x20E2,
-	0xB462, 0x0546,
-	0xB464, 0xCA85,
-	0xB466, 0x2685,
-	0xB468, 0x9730,
-	0xB46A, 0x01FC,
-	0xB46C, 0xE780,
-	0xB46E, 0xC05D,
-	0xB470, 0x1743,
-	0xB472, 0x02FC,
-	0xB474, 0x6700,
-	0xB476, 0x4307,
-	0xB478, 0xB7E7,
-	0xB47A, 0x0024,
-	0xB47C, 0x83D6,
-	0xB47E, 0xC7C8,
-	0xB480, 0x8567,
-	0xB482, 0x1387,
-	0xB484, 0xF7B3,
-	0xB486, 0xE39A,
-	0xB488, 0xE6FA,
-	0xB48A, 0x3797,
-	0xB48C, 0x0124,
-	0xB48E, 0x1307,
-	0xB490, 0x0753,
-	0xB492, 0xBA97,
-	0xB494, 0x03A5,
-	0xB496, 0x07B2,
-	0xB498, 0x8145,
-	0xB49A, 0x3325,
-	0xB49C, 0xA000,
-	0xB49E, 0x97D0,
-	0xB4A0, 0x00FC,
-	0xB4A2, 0xE780,
-	0xB4A4, 0x20C7,
-	0xB4A6, 0x51BF,
-	0xB4A8, 0x1743,
-	0xB4AA, 0x02FC,
-	0xB4AC, 0xE702,
-	0xB4AE, 0x8301,
-	0xB4B0, 0x9760,
-	0xB4B2, 0xFFFB,
-	0xB4B4, 0xE780,
-	0xB4B6, 0x8043,
-	0xB4B8, 0x11C5,
-	0xB4BA, 0xB7E7,
-	0xB4BC, 0x0024,
-	0xB4BE, 0x83C7,
-	0xB4C0, 0xC784,
-	0xB4C2, 0xBDEF,
-	0xB4C4, 0x1384,
-	0xB4C6, 0x81E7,
-	0xB4C8, 0x0347,
-	0xB4CA, 0x8400,
-	0xB4CC, 0x8547,
-	0xB4CE, 0x6303,
-	0xB4D0, 0xF706,
-	0xB4D2, 0x0357,
-	0xB4D4, 0x2403,
-	0xB4D6, 0xB767,
-	0xB4D8, 0x0040,
-	0xB4DA, 0x2398,
-	0xB4DC, 0xE718,
-	0xB4DE, 0x8357,
-	0xB4E0, 0x4403,
-	0xB4E2, 0x3767,
-	0xB4E4, 0x0040,
-	0xB4E6, 0x2314,
-	0xB4E8, 0xF720,
-	0xB4EA, 0x9760,
-	0xB4EC, 0xFFFB,
-	0xB4EE, 0xE780,
-	0xB4F0, 0xE03F,
-	0xB4F2, 0x19C5,
-	0xB4F4, 0xB7E7,
-	0xB4F6, 0x0024,
-	0xB4F8, 0x03C7,
-	0xB4FA, 0xC784,
-	0xB4FC, 0x8147,
-	0xB4FE, 0x09EB,
-	0xB500, 0x8346,
-	0xB502, 0x8400,
-	0xB504, 0x0547,
-	0xB506, 0x8147,
-	0xB508, 0x6384,
-	0xB50A, 0xE600,
-	0xB50C, 0x8357,
-	0xB50E, 0xC405,
-	0xB510, 0x37A7,
-	0xB512, 0x0040,
-	0xB514, 0x2312,
-	0xB516, 0xF710,
-	0xB518, 0x9770,
-	0xB51A, 0xFFFB,
-	0xB51C, 0xE780,
-	0xB51E, 0x80C2,
-	0xB520, 0x35C1,
-	0xB522, 0x9770,
-	0xB524, 0xFFFB,
-	0xB526, 0xE780,
-	0xB528, 0x20C3,
-	0xB52A, 0x05C9,
-	0xB52C, 0x1743,
-	0xB52E, 0x02FC,
-	0xB530, 0x6700,
-	0xB532, 0x83FB,
-	0xB534, 0xB767,
-	0xB536, 0x0040,
-	0xB538, 0x2398,
-	0xB53A, 0x0718,
-	0xB53C, 0x8147,
-	0xB53E, 0x55B7,
-	0xB540, 0xB767,
-	0xB542, 0x0040,
-	0xB544, 0x2398,
-	0xB546, 0x0718,
-	0xB548, 0x1384,
-	0xB54A, 0x81E7,
-	0xB54C, 0x8346,
-	0xB54E, 0x8400,
-	0xB550, 0x0547,
-	0xB552, 0x8147,
-	0xB554, 0xE395,
-	0xB556, 0xE6F8,
-	0xB558, 0x69B7,
-	0xB55A, 0x9760,
-	0xB55C, 0xFFFB,
-	0xB55E, 0xE780,
-	0xB560, 0xE038,
-	0xB562, 0x31ED,
-	0xB564, 0x8346,
-	0xB566, 0x8400,
-	0xB568, 0x0547,
-	0xB56A, 0x8147,
-	0xB56C, 0x6384,
-	0xB56E, 0xE600,
-	0xB570, 0x8357,
-	0xB572, 0x4408,
-	0xB574, 0x3787,
-	0xB576, 0x0040,
-	0xB578, 0x2314,
-	0xB57A, 0xF710,
-	0xB57C, 0x1743,
-	0xB57E, 0x02FC,
-	0xB580, 0x6700,
-	0xB582, 0x83F6,
-	0xB584, 0x9770,
-	0xB586, 0xFFFB,
-	0xB588, 0xE780,
-	0xB58A, 0x00BD,
-	0xB58C, 0x59F9,
-	0xB58E, 0x9760,
-	0xB590, 0xFFFB,
-	0xB592, 0xE780,
-	0xB594, 0xA035,
-	0xB596, 0x19C5,
-	0xB598, 0xB7E7,
-	0xB59A, 0x0024,
-	0xB59C, 0x03C7,
-	0xB59E, 0xC784,
-	0xB5A0, 0x8147,
-	0xB5A2, 0x09EB,
-	0xB5A4, 0x8346,
-	0xB5A6, 0x8400,
-	0xB5A8, 0x0547,
-	0xB5AA, 0x8147,
-	0xB5AC, 0x6384,
-	0xB5AE, 0xE600,
-	0xB5B0, 0x8357,
-	0xB5B2, 0x6407,
-	0xB5B4, 0x3707,
-	0xB5B6, 0x0140,
-	0xB5B8, 0x2314,
-	0xB5BA, 0xF710,
-	0xB5BC, 0x9DB7,
-	0xB5BE, 0xB7E7,
-	0xB5C0, 0x0024,
-	0xB5C2, 0x03C7,
-	0xB5C4, 0xC784,
-	0xB5C6, 0x8147,
-	0xB5C8, 0x55F7,
-	0xB5CA, 0x69BF,
-	0xB5CC, 0x1743,
-	0xB5CE, 0x02FC,
-	0xB5D0, 0xE702,
-	0xB5D2, 0xA3ED,
-	0xB5D4, 0xB747,
-	0xB5D6, 0x0124,
-	0xB5D8, 0x03D7,
-	0xB5DA, 0xC7E1,
-	0xB5DC, 0x8947,
-	0xB5DE, 0x2A84,
-	0xB5E0, 0xAE84,
-	0xB5E2, 0x6319,
-	0xB5E4, 0xF700,
-	0xB5E6, 0xB7A7,
-	0xB5E8, 0x0124,
-	0xB5EA, 0x03A7,
-	0xB5EC, 0x4706,
-	0xB5EE, 0xFD57,
-	0xB5F0, 0x630E,
-	0xB5F2, 0xF702,
-	0xB5F4, 0xB7E7,
-	0xB5F6, 0x0124,
-	0xB5F8, 0x9387,
-	0xB5FA, 0x0787,
-	0xB5FC, 0x83A9,
-	0xB5FE, 0x8710,
-	0xB600, 0x03A9,
-	0xB602, 0xC710,
-	0xB604, 0x0146,
-	0xB606, 0xCE85,
-	0xB608, 0x4A85,
-	0xB60A, 0x9730,
-	0xB60C, 0x01FC,
-	0xB60E, 0xE780,
-	0xB610, 0xA043,
-	0xB612, 0xA685,
-	0xB614, 0x2285,
-	0xB616, 0x97D0,
-	0xB618, 0x00FC,
-	0xB61A, 0xE780,
-	0xB61C, 0xA0AF,
-	0xB61E, 0x0546,
-	0xB620, 0xCE85,
-	0xB622, 0x4A85,
-	0xB624, 0x9730,
-	0xB626, 0x01FC,
-	0xB628, 0xE780,
-	0xB62A, 0x0042,
-	0xB62C, 0x1743,
-	0xB62E, 0x02FC,
-	0xB630, 0x6700,
-	0xB632, 0xE3EA,
-	0xB634, 0x1743,
-	0xB636, 0x02FC,
-	0xB638, 0xE702,
-	0xB63A, 0xC3E8,
-	0xB63C, 0xB7B6,
-	0xB63E, 0x0224,
-	0xB640, 0xB787,
-	0xB642, 0x0324,
-	0xB644, 0x9386,
-	0xB646, 0x4673,
-	0xB648, 0x37A7,
-	0xB64A, 0x0124,
-	0xB64C, 0x9387,
-	0xB64E, 0x07FF,
-	0xB650, 0x1307,
-	0xB652, 0x0753,
-	0xB654, 0x958F,
-	0xB656, 0x232C,
-	0xB658, 0xD7B4,
-	0xB65A, 0x232E,
-	0xB65C, 0xF7B4,
-	0xB65E, 0x9730,
-	0xB660, 0x01FC,
-	0xB662, 0xE780,
-	0xB664, 0x20E2,
-	0xB666, 0x01C5,
-	0xB668, 0xEFE0,
-	0xB66A, 0xDFD5,
-	0xB66C, 0x3120,
-	0xB66E, 0x1743,
-	0xB670, 0x02FC,
-	0xB672, 0x6700,
-	0xB674, 0x63E7,
-	0xB676, 0x0100,
-	0xB678, 0x1743,
-	0xB67A, 0x02FC,
-	0xB67C, 0xE702,
-	0xB67E, 0x83E4,
-	0xB680, 0xB7B7,
-	0xB682, 0x0224,
-	0xB684, 0x9387,
-	0xB686, 0xC7AB,
-	0xB688, 0x23AE,
-	0xB68A, 0xF194,
-	0xB68C, 0x3764,
-	0xB68E, 0x0124,
-	0xB690, 0x9D66,
-	0xB692, 0xB7B5,
-	0xB694, 0x0224,
-	0xB696, 0xB7A7,
-	0xB698, 0x0224,
-	0xB69A, 0x1304,
-	0xB69C, 0x0440,
-	0xB69E, 0x9387,
-	0xB6A0, 0x077B,
-	0xB6A2, 0x9386,
-	0xB6A4, 0xF6BF,
-	0xB6A6, 0x1146,
-	0xB6A8, 0x9385,
-	0xB6AA, 0x85F1,
-	0xB6AC, 0x0545,
-	0xB6AE, 0x5CC4,
-	0xB6B0, 0x97E0,
-	0xB6B2, 0xFFFB,
-	0xB6B4, 0xE780,
-	0xB6B6, 0x002E,
-	0xB6B8, 0xC166,
-	0xB6BA, 0xB7B5,
-	0xB6BC, 0x0224,
-	0xB6BE, 0xFD16,
-	0xB6C0, 0x3146,
-	0xB6C2, 0x9385,
-	0xB6C4, 0x858F,
-	0xB6C6, 0x4145,
-	0xB6C8, 0x97E0,
-	0xB6CA, 0xFFFB,
-	0xB6CC, 0xE780,
-	0xB6CE, 0x802C,
-	0xB6D0, 0x37B7,
-	0xB6D2, 0x0224,
-	0xB6D4, 0x1307,
-	0xB6D6, 0xC7AE,
-	0xB6D8, 0xB7A7,
-	0xB6DA, 0x0224,
-	0xB6DC, 0x9387,
-	0xB6DE, 0x8754,
-	0xB6E0, 0x78C8,
-	0xB6E2, 0x37B7,
-	0xB6E4, 0x0224,
-	0xB6E6, 0xA380,
-	0xB6E8, 0x0706,
-	0xB6EA, 0x2381,
-	0xB6EC, 0x0706,
-	0xB6EE, 0x1307,
-	0xB6F0, 0x07BA,
-	0xB6F2, 0xB7B7,
-	0xB6F4, 0x0224,
-	0xB6F6, 0x18D4,
-	0xB6F8, 0x9387,
-	0xB6FA, 0xC723,
-	0xB6FC, 0x37B7,
-	0xB6FE, 0x0224,
-	0xB700, 0x7CC4,
-	0xB702, 0x1307,
-	0xB704, 0x8730,
-	0xB706, 0xB7B7,
-	0xB708, 0x0224,
-	0xB70A, 0x18C0,
-	0xB70C, 0x9387,
-	0xB70E, 0x472C,
-	0xB710, 0x23AA,
-	0xB712, 0xF1A4,
-	0xB714, 0x1743,
-	0xB716, 0x02FC,
-	0xB718, 0x6700,
-	0xB71A, 0x03DD,
-	0xB71C, 0x0000,
-	0xB71E, 0x0000,
-	0xB720, 0x6610,
-	0xB722, 0xE538,
-	0xB724, 0x0000,
-	0xB726, 0x0000,
-	0xB728, 0xBF3F,
-	0xB72A, 0x0000,
-	0xB72C, 0x0000,
-	0xB72E, 0x0000,
-	0xB730, 0x008D,
-	0xB732, 0x0000,
-	0xFCFC, 0x2000,
-	0x2366, 0x001C,
-	0x2368, 0x001C,
-	0x238E, 0x3F28,
-	0x2398, 0x5037,
-	0x24B8, 0x0101,
-	0x66E4, 0x1E8D,
-	0x66E6, 0x0000,
-	0x6874, 0x0000,
-	0x6876, 0x0000,
-	0x6878, 0x0000,
-	0x687A, 0x0000,
-	0x6884, 0x0100,
-	0x6886, 0x0100,
-	0x6888, 0x0100,
-	0x688A, 0x0100,
-	0x793E, 0x0100,
-	0x7940, 0x7017,
-	0x795C, 0x0400,
-	0x795E, 0x0400,
-	0x7960, 0x0800,
-	0x7962, 0x1000,
-	0x7964, 0x0800,
-	0x7966, 0x1000,
-	0x7968, 0x0800,
-	0x796A, 0x0800,
-	0x796C, 0x0800,
-	0x796E, 0x0800,
-	0x7972, 0x0400,
-	0x7974, 0x0400,
-	0x7976, 0x0800,
-	0x7978, 0x1000,
-	0x797A, 0x0800,
-	0x797C, 0x1000,
-	0x797E, 0x0800,
-	0x7980, 0x0800,
-	0x7982, 0x0800,
-	0x7984, 0x0800,
-	0xB3AC, 0x4000,
-	0xB3B4, 0x2000,
-	0xB3B8, 0x1000,
-	0xB3F8, 0x8000,
-	0xB400, 0x4000,
-	0xB404, 0x2000,
-	0xBF70, 0x3A46,
-	0xBF7C, 0x0800,
-	0xC4A8, 0x0000,
-	0xC4F8, 0x00A8,
-	0xC4FA, 0x0000,
-	0xD3DA, 0x0D00,
-	0xD3E0, 0x0D00,
-	0xD3E2, 0x0D00,
-	0xD3E4, 0x0D00,
-	0xD3E6, 0x0D00,
-	0xD3EA, 0x0D00,
-	0xD3F4, 0x301C,
-	0xD3F8, 0x301C,
-	0xDD6C, 0xB47E,
-	0xDD6E, 0xB67E,
-	0xDE34, 0x0000,
-	0xDE36, 0x9231,
-	0xEC42, 0x0100,
-	0xEC44, 0x0100,
-	0xFCFC, 0x2001,
-	0x2542, 0x2020,
-	0x2544, 0x2018,
-	0x2554, 0x0000,
-	0x2556, 0x0000,
-	0x256E, 0x0000,
-	0x25D2, 0x0102,
-	0x2936, 0x4400,
-	0x2A14, 0x0002,
-	0x2A16, 0xDF03,
-	0x2A18, 0x0002,
-	0x2A1A, 0x0002,
-	0x3252, 0x8C00,
-	0x3254, 0x8C00,
-	0x3256, 0x8C00,
-	0x3258, 0x8700,
-	0x325A, 0x8200,
-	0x3E1C, 0x0200,
-	0x3E1E, 0x2000,
-	0x5ACC, 0x6505,
-	0xFCFC, 0x4000,
-	0x1858, 0x123F,
-	0xFCFC, 0x2001,
-	0x3EB8, 0x00FF,
-	0x3ECC, 0xFE03,
-	0x3F12, 0x9001,
-	0x33E0, 0x1E00,
-	0x33E2, 0x1E00,
-	0x33E4, 0x1E00,
-	0x33E6, 0x1E00,
-	0x33E8, 0x1E00,
-	0x33EA, 0x1E00,
-	0x3440, 0x0500,
-	0x3442, 0x0500,
-	0x3444, 0x0500,
-	0x3446, 0x0500,
-	0x3448, 0x0500,
-	0x344A, 0x0500,
-	0x3450, 0x0A00,
-	0x3452, 0x0A00,
-	0x3454, 0x0A00,
-	0x3456, 0x0A00,
-	0x3458, 0x0A00,
-	0x345A, 0x0A00,
-	0x34E0, 0x1400,
-	0x34E2, 0x1400,
-	0x34E4, 0x1400,
-	0x34E6, 0x1400,
-	0x34E8, 0x1400,
-	0x34EA, 0x1400,
-	0x3500, 0x1400,
-	0x3502, 0x1400,
-	0x3504, 0x1400,
-	0x3506, 0x1400,
-	0x3508, 0x1400,
-	0x350A, 0x1400,
-	0x3520, 0x1400,
-	0x3522, 0x1400,
-	0x3524, 0x1400,
-	0x3526, 0x1400,
-	0x3528, 0x1400,
-	0x352A, 0x1400,
-	0x3580, 0x2300,
-	0x3582, 0x2300,
-	0x3584, 0x2300,
-	0x3586, 0x2300,
-	0x3588, 0x2300,
-	0x358A, 0x2300,
-	0x35A0, 0x1900,
-	0x35A2, 0x1900,
-	0x35A4, 0x1900,
-	0x35A6, 0x1900,
-	0x35A8, 0x1900,
-	0x35AA, 0x1900,
-	0x35D0, 0x1E00,
-	0x35D2, 0x1E00,
-	0x35D4, 0x1E00,
-	0x35D6, 0x1E00,
-	0x35D8, 0x1E00,
-	0x35DA, 0x1E00,
-	0x35E0, 0x1E00,
-	0x35E2, 0x1E00,
-	0x35E4, 0x1E00,
-	0x35E6, 0x1E00,
-	0x35E8, 0x1E00,
-	0x35EA, 0x1E00,
-	0x35F0, 0x1E00,
-	0x35F2, 0x1E00,
-	0x35F4, 0x1E00,
-	0x35F6, 0x1E00,
-	0x35F8, 0x1E00,
-	0x35FA, 0x1E00,
-	0x3600, 0x1E00,
-	0x3602, 0x1E00,
-	0x3604, 0x1E00,
-	0x3606, 0x1E00,
-	0x3608, 0x1E00,
-	0x360A, 0x1E00,
-	0x3610, 0x1E00,
-	0x3612, 0x1E00,
-	0x3614, 0x1E00,
-	0x3616, 0x1E00,
-	0x3618, 0x1E00,
-	0x361A, 0x1E00,
-	0x3620, 0x0000,
-	0x3622, 0x0000,
-	0x3624, 0x0000,
-	0x3626, 0x0000,
-	0x3628, 0x0000,
-	0x362A, 0x0000,
-	0x3630, 0x0A00,
-	0x3632, 0x0A00,
-	0x3634, 0x0A00,
-	0x3636, 0x0A00,
-	0x3638, 0x0A00,
-	0x363A, 0x0A00,
-	0x3650, 0x1E00,
-	0x3652, 0x1E00,
-	0x3654, 0x1E00,
-	0x3656, 0x1E00,
-	0x3658, 0x1E00,
-	0x365A, 0x1E00,
-	0x3660, 0x1E00,
-	0x3662, 0x1E00,
-	0x3664, 0x1E00,
-	0x3666, 0x1E00,
-	0x3668, 0x1E00,
-	0x366A, 0x1E00,
-	0x36A0, 0x6400,
-	0x36A2, 0x6400,
-	0x36A4, 0x6400,
-	0x36A6, 0x6400,
-	0x36A8, 0x6400,
-	0x36AA, 0x6400,
-	0x36C0, 0x8C00,
-	0x36C2, 0x8C00,
-	0x36C4, 0x8C00,
-	0x36C6, 0x8C00,
-	0x36C8, 0x8C00,
-	0x36CA, 0x8C00,
-	0x36E0, 0x6400,
-	0x36E2, 0x6400,
-	0x36E4, 0x6400,
-	0x36E6, 0x6400,
-	0x36E8, 0x6400,
-	0x36EA, 0x6400,
-	0x36F0, 0x3200,
-	0x36F2, 0x3200,
-	0x36F4, 0x3200,
-	0x36F6, 0x3200,
-	0x36F8, 0x3200,
-	0x36FA, 0x3200,
-	0x3700, 0x3200,
-	0x3702, 0x3200,
-	0x3704, 0x3200,
-	0x3706, 0x3200,
-	0x3708, 0x3200,
-	0x370A, 0x3200,
-	0x3720, 0x3200,
-	0x3722, 0x3200,
-	0x3724, 0x3200,
-	0x3726, 0x3200,
-	0x3728, 0x3200,
-	0x372A, 0x3200,
-	0x3730, 0x3200,
-	0x3732, 0x3200,
-	0x3734, 0x3200,
-	0x3736, 0x3200,
-	0x3738, 0x3200,
-	0x373A, 0x3200,
-	0x3790, 0x3200,
-	0x3792, 0x3200,
-	0x3794, 0x3200,
-	0x3796, 0x3200,
-	0x3798, 0x3200,
-	0x379A, 0x3200,
-	0x37A0, 0x5000,
-	0x37A2, 0x5000,
-	0x37A4, 0x5000,
-	0x37A6, 0x5000,
-	0x37A8, 0x5000,
-	0x37AA, 0x5000,
-	0x37B0, 0x6400,
-	0x37B2, 0x6400,
-	0x37B4, 0x6400,
-	0x37B6, 0x6400,
-	0x37B8, 0x6400,
-	0x37BA, 0x6400,
-	0x37C0, 0x5000,
-	0x37C2, 0x5000,
-	0x37C4, 0x5000,
-	0x37C6, 0x5000,
-	0x37C8, 0x5000,
-	0x37CA, 0x5000,
-	0x37D0, 0x3200,
-	0x37D2, 0x3200,
-	0x37D4, 0x3200,
-	0x37D6, 0x3200,
-	0x37D8, 0x3200,
-	0x37DA, 0x3200,
-	0x37E0, 0x1E00,
-	0x37E2, 0x1E00,
-	0x37E4, 0x1E00,
-	0x37E6, 0x1E00,
-	0x37E8, 0x1E00,
-	0x37EA, 0x1E00,
-	0x37F0, 0x1E00,
-	0x37F2, 0x1E00,
-	0x37F4, 0x1E00,
-	0x37F6, 0x1E00,
-	0x37F8, 0x1E00,
-	0x37FA, 0x1E00,
-	0x3800, 0x1E00,
-	0x3802, 0x1E00,
-	0x3804, 0x1E00,
-	0x3806, 0x1E00,
-	0x3808, 0x1E00,
-	0x380A, 0x1E00,
-	0x3810, 0x1E00,
-	0x3812, 0x1E00,
-	0x3814, 0x1E00,
-	0x3816, 0x1E00,
-	0x3818, 0x1E00,
-	0x381A, 0x1E00,
-	0x3820, 0x1E00,
-	0x3822, 0x1E00,
-	0x3824, 0x1E00,
-	0x3826, 0x1E00,
-	0x3828, 0x1E00,
-	0x382A, 0x1E00,
-	0x3870, 0x3200,
-	0x3872, 0x3200,
-	0x3874, 0x3200,
-	0x3876, 0x3200,
-	0x3878, 0x3200,
-	0x387A, 0x3200,
-	0x3880, 0x3200,
-	0x3882, 0x3200,
-	0x3884, 0x3200,
-	0x3886, 0x3200,
-	0x3888, 0x3200,
-	0x388A, 0x3200,
-	0x3890, 0x3200,
-	0x3892, 0x3200,
-	0x3894, 0x3200,
-	0x3896, 0x3200,
-	0x3898, 0x3200,
-	0x389A, 0x3200,
-	0x38A0, 0x3200,
-	0x38A2, 0x3200,
-	0x38A4, 0x3200,
-	0x38A6, 0x3200,
-	0x38A8, 0x3200,
-	0x38AA, 0x3200,
-	0x38B0, 0x3200,
-	0x38B2, 0x3200,
-	0x38B4, 0x3200,
-	0x38B6, 0x3200,
-	0x38B8, 0x3200,
-	0x38BA, 0x3200,
-	0x320A, 0xFF03,
-	0x320C, 0x0700,
-	0x320E, 0xFF03,
-	0x3210, 0x0700,
-	0x321E, 0x0000,
-	0x31D4, 0x00FF,
-	0x321A, 0x0406,
-	0x3234, 0x0120,
-	0x3236, 0x1600,
-	0x3238, 0x0A14,
-	0x323A, 0x2A2A,
-	0x323C, 0x010F,
-	0x323E, 0x0419,
-	0x3240, 0x143A,
-	0x3242, 0x0A4B,
-	0x3244, 0x0101,
-	0x3246, 0x0101,
-	0x3248, 0x0010,
-	0x3252, 0xC800,
-	0x3254, 0xC400,
-	0x3256, 0xC200,
-	0x3258, 0xBE00,
-	0x325A, 0xBC00,
-	0x3266, 0x0100,
-	0x3268, 0x0200,
-	0x326A, 0x2A00,
-	0x326C, 0x0000,
-	0x326E, 0x3F00,
-	0x3270, 0x0A00,
-	0x3272, 0x1900,
-	0x3274, 0x0C00,
-	0x3276, 0x2000,
-	0x3278, 0x2300,
-	0x327A, 0x2100,
-	0x327C, 0x3000,
-	0x327E, 0x1100,
-	0x3280, 0x0C00,
-	0x3282, 0x2000,
-	0x3284, 0x2300,
-	0x3286, 0x2100,
-	0x3288, 0x3000,
-	0x328A, 0x1100,
-	0x328C, 0x0F00,
-	0x328E, 0x1900,
-	0x3290, 0x0A00,
-	0x3292, 0x0B00,
-	0x3296, 0x0800,
-	0x3298, 0x0F00,
-	0x329A, 0x1900,
-	0x329C, 0x0A00,
-	0x329E, 0x0B00,
-	0x32A0, 0x0000,
-	0x32A2, 0x0800,
-	0x32A4, 0x0F00,
-	0x32A6, 0x1900,
-	0x32A8, 0x0A00,
-	0x32AA, 0x0B00,
-	0x32AC, 0x0000,
-	0x32AE, 0x0800,
-	0x3330, 0x0108,
-	0x3334, 0x0100,
-	0x3336, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static u16 zhuquec1front_sensor_simple_init_setting_0x07xx[] = {
-	0xFCFC, 0x2000,
-	0xDCF0, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C60, 0x0000,
-	0xFCFC, 0x2002,
-	0x849C, 0x0100,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0x84A4, 0x0000,
-	0x84A6, 0x0000,
-	0x84A8, 0x0000,
-	0x84AA, 0x0001,
-	0x84AC, 0x01FF,
-	0x84B0, 0x8089,
-	0x84B2, 0x0000,
-	0x84B4, 0x8889,
-	0x84B6, 0x0000,
-	0x84B8, 0xC097,
-	0x84BA, 0x0000,
-	0x84BC, 0xA60E,
-	0x84BE, 0x0000,
-	0x84C0, 0x2206,
-	0x84C2, 0x0000,
-	0x84C4, 0x0036,
-	0x84C8, 0x60C5,
-	0x84CA, 0x0224,
-	0x84CC, 0x44AB,
-	0x84CE, 0x0224,
-	0x84D0, 0x44AB,
-	0x84D2, 0x0224,
-	0x84D4, 0x44AB,
-	0x84D6, 0x0224,
-	0x84D8, 0x44AB,
-	0x84DA, 0x0224,
-	0x84DC, 0x44AB,
-	0x84DE, 0x0224,
-	0xA548, 0x00B2,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xA56C, 0x0000,
-	0xA56E, 0x0000,
-	0xA570, 0x0000,
-	0xA572, 0x0000,
-	0xA574, 0x008A,
-	0xA576, 0x0000,
-	0xA578, 0x0000,
-	0xA57A, 0x0000,
-	0xA57C, 0x0000,
-	0xA57E, 0x0000,
-	0xA580, 0x0000,
-	0xA582, 0x0000,
-	0xA584, 0x0000,
-	0xA586, 0x0000,
-	0xA588, 0x0000,
-	0xA58A, 0x0000,
-	0xA58C, 0x0000,
-	0xA58E, 0x0000,
-	0xA590, 0x0000,
-	0xA592, 0x0000,
-	0xA594, 0x0000,
-	0xA596, 0x0000,
-	0xA598, 0x0000,
-	0xA59A, 0x0000,
-	0xA59C, 0x0000,
-	0xA59E, 0x0000,
-	0xA5A0, 0x0100,
-	0xA5A2, 0x00AC,
-	0xA5A4, 0x0000,
-	0xA5A6, 0x0000,
-	0xA5A8, 0x0000,
-	0xA5AA, 0x0000,
-	0xA5AC, 0x0000,
-	0xA5AE, 0x0000,
-	0xA5B0, 0x0000,
-	0xA5B2, 0x0000,
-	0xA5B4, 0x0000,
-	0xA5B6, 0x0000,
-	0xA5B8, 0x0000,
-	0xA5BA, 0x0000,
-	0xA5BC, 0x0000,
-	0xA5BE, 0x0000,
-	0xA5C0, 0x0000,
-	0xA5C2, 0x0000,
-	0xA5C4, 0x0000,
-	0xA5C6, 0x0000,
-	0xA5C8, 0x0000,
-	0xA5CA, 0x0000,
-	0xA5CC, 0x0000,
-	0xA5CE, 0x0000,
-	0xA5D0, 0x0000,
-	0xA5D2, 0x0000,
-	0xA5D4, 0x0000,
-	0xA5D6, 0x0000,
-	0xA5D8, 0x0000,
-	0xA5DA, 0x0000,
-	0xA5DC, 0x0000,
-	0xA5DE, 0x0000,
-	0xA5E0, 0x0000,
-	0xA5E2, 0x0000,
-	0xA5E4, 0x0000,
-	0xA5E6, 0x0000,
-	0xA5E8, 0x0000,
-	0xA5EA, 0x0000,
-	0xA5EC, 0x000F,
-	0xA5EE, 0x000F,
-	0xA5F0, 0x000F,
-	0xA5F2, 0x000F,
-	0xA5F4, 0x0000,
-	0xA5F6, 0x0000,
-	0xA5F8, 0x0000,
-	0xA5FA, 0x0000,
-	0xA5FC, 0x0000,
-	0xA5FE, 0x0000,
-	0xA600, 0x0000,
-	0xA602, 0x0000,
-	0xA604, 0x0000,
-	0xA606, 0x0034,
-	0xBB84, 0x00E7,
-	0xBB86, 0x0000,
-	0xBB88, 0x0000,
-	0xBB8A, 0x0100,
-	0xBB8C, 0x0800,
-	0xBB8E, 0x1000,
-	0xBB90, 0x2000,
-	0xBB92, 0x9A00,
-	0xBB94, 0x9A00,
-	0xBB96, 0x9A00,
-	0xBB98, 0x9A00,
-	0xBB9A, 0x9600,
-	0xBB9C, 0x9600,
-	0xBB9E, 0x9600,
-	0xBBA0, 0x9600,
-	0xBBA2, 0x9300,
-	0xBBA4, 0x9300,
-	0xBBA6, 0x9300,
-	0xBBA8, 0x9300,
-	0xBBAA, 0x9000,
-	0xBBAC, 0x9000,
-	0xBBAE, 0x9000,
-	0xBBB0, 0x9000,
-	0xBBB2, 0x8D00,
-	0xBBB4, 0x8D00,
-	0xBBB6, 0x8D00,
-	0xBBB8, 0x8D00,
-	0xBBBA, 0x3F00,
-	0xBBBC, 0x3F00,
-	0xBBBE, 0x3F00,
-	0xBBC0, 0x3F00,
-	0xBBC2, 0x1E00,
-	0xBBC4, 0x1E00,
-	0xBBC6, 0x1E00,
-	0xBBC8, 0x1E00,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0000,
-	0xBBD2, 0x0800,
-	0xBBD4, 0x0800,
-	0xBBD6, 0x0800,
-	0xBBD8, 0x0800,
-	0xBBDA, 0x0000,
-	0xBBDC, 0x0000,
-	0xBBDE, 0x0000,
-	0xBBE0, 0x0000,
-	0xBBE2, 0x3F00,
-	0xBBE4, 0x3F00,
-	0xBBE6, 0x3F00,
-	0xBBE8, 0x3F00,
-	0xBBEA, 0x3400,
-	0xBBEC, 0x3400,
-	0xBBEE, 0x3400,
-	0xBBF0, 0x3400,
-	0xBBF2, 0x0A00,
-	0xBBF4, 0x0A00,
-	0xBBF6, 0x0A00,
-	0xBBF8, 0x0A00,
-	0xBBFA, 0x1000,
-	0xBBFC, 0x1000,
-	0xBBFE, 0x1000,
-	0xBC00, 0x1000,
-	0xBC02, 0x0600,
-	0xBC04, 0x0600,
-	0xBC06, 0x0600,
-	0xBC08, 0x0600,
-	0xBC0A, 0x0C00,
-	0xBC0C, 0x0C00,
-	0xBC0E, 0x0C00,
-	0xBC10, 0x0C00,
-	0xBC12, 0x0000,
-	0xBC14, 0x0000,
-	0xBC16, 0x0000,
-	0xBC18, 0x0000,
-	0xBC1A, 0x1000,
-	0xBC1C, 0x1000,
-	0xBC1E, 0x1000,
-	0xBC20, 0x1000,
-	0xBC22, 0x1000,
-	0xBC24, 0x1000,
-	0xBC26, 0x1000,
-	0xBC28, 0x1000,
-	0xBC2A, 0x2000,
-	0xBC2C, 0x1000,
-	0xBC2E, 0x1000,
-	0xBC30, 0x1000,
-	0xBC32, 0x0600,
-	0xBC34, 0x0600,
-	0xBC36, 0x0600,
-	0xBC38, 0x0600,
-	0xBC3A, 0x1C00,
-	0xBC3C, 0x1C00,
-	0xBC3E, 0x1C00,
-	0xBC40, 0x1C00,
-	0xBC42, 0x0600,
-	0xBC44, 0x0600,
-	0xBC46, 0x0600,
-	0xBC48, 0x0600,
-	0xBC4A, 0x2A00,
-	0xBC4C, 0x2A00,
-	0xBC4E, 0x2A00,
-	0xBC50, 0x2A00,
-	0xBC52, 0x0200,
-	0xBC54, 0x0200,
-	0xBC56, 0x0200,
-	0xBC58, 0x0200,
-	0xBC5A, 0x1000,
-	0xBC5C, 0x1000,
-	0xBC5E, 0x1000,
-	0xBC60, 0x1000,
-	0xBC62, 0x0E00,
-	0xBC64, 0x0E00,
-	0xBC66, 0x0E00,
-	0xBC68, 0x0E00,
-	0xBC6A, 0x2800,
-	0xBC6C, 0x2800,
-	0xBC6E, 0x2800,
-	0xBC70, 0x2800,
-	0xBC72, 0x1800,
-	0xBC74, 0x1800,
-	0xBC76, 0x1800,
-	0xBC78, 0x1800,
-	0xBC7A, 0x0800,
-	0xBC7C, 0x0800,
-	0xBC7E, 0x0800,
-	0xBC80, 0x0800,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x0000,
-	0xBC8A, 0x2400,
-	0xBC8C, 0x2400,
-	0xBC8E, 0x2400,
-	0xBC90, 0x2400,
-	0xBC92, 0x00AF,
-	0xFCFC, 0x2001,
-	0x5634, 0x041D,
-	0x5636, 0x0420,
-	0x5638, 0x3C85,
-	0x563A, 0x0224,
-	0x563C, 0x3CE6,
-	0x563E, 0x0320,
-	0x5640, 0xD885,
-	0x5642, 0x0224,
-	0x5644, 0xD06E,
-	0x5646, 0x0320,
-	0x5648, 0xC48D,
-	0x564A, 0x0224,
-	0x564C, 0x4877,
-	0x564E, 0x0320,
-	0x5650, 0xCC90,
-	0x5652, 0x0224,
-	0x5654, 0x6812,
-	0x5656, 0x0320,
-	0x5658, 0x94C4,
-	0x565A, 0x0224,
-	0x565C, 0xE8FE,
-	0x565E, 0x0220,
-	0x5660, 0x5491,
-	0x5662, 0x0224,
-	0x5664, 0xA462,
-	0x5666, 0x0320,
-	0x5668, 0x9C95,
-	0x566A, 0x0224,
-	0x566C, 0x901B,
-	0x566E, 0x0020,
-	0x5670, 0x2896,
-	0x5672, 0x0224,
-	0x5674, 0xC446,
-	0x5676, 0x0320,
-	0x5678, 0xE896,
-	0x567A, 0x0224,
-	0x567C, 0x1427,
-	0x567E, 0x0320,
-	0x5680, 0xC498,
-	0x5682, 0x0224,
-	0x5684, 0x304C,
-	0x5686, 0x0220,
-	0x5688, 0x749B,
-	0x568A, 0x0224,
-	0x568C, 0xC82C,
-	0x568E, 0x0220,
-	0x5690, 0xD09B,
-	0x5692, 0x0224,
-	0x5694, 0x484F,
-	0x5696, 0x0220,
-	0x5698, 0x289C,
-	0x569A, 0x0224,
-	0x569C, 0xB041,
-	0x569E, 0x0220,
-	0x56A0, 0x3C9A,
-	0x56A2, 0x0224,
-	0x56A4, 0xC81D,
-	0x56A6, 0x0420,
-	0x56A8, 0xFC9A,
-	0x56AA, 0x0224,
-	0x56AC, 0xAC7F,
-	0x56AE, 0x0420,
-	0x56B0, 0x8C86,
-	0x56B2, 0x0224,
-	0x56B4, 0x7C80,
-	0x56B6, 0x0420,
-	0x56B8, 0x1086,
-	0x56BA, 0x0224,
-	0x56BC, 0xF887,
-	0x56BE, 0x0320,
-	0x56C0, 0x7CAC,
-	0x56C2, 0x0224,
-	0x56C4, 0x1007,
-	0x56C6, 0x0320,
-	0x56C8, 0xE08E,
-	0x56CA, 0x0224,
-	0x56CC, 0x1409,
-	0x56CE, 0x0020,
-	0x56D0, 0x2495,
-	0x56D2, 0x0224,
-	0x56D4, 0x2046,
-	0x56D6, 0x0420,
-	0x56D8, 0x0CC4,
-	0x56DA, 0x0224,
-	0x56DC, 0xB05B,
-	0x56DE, 0x0420,
-	0x56E0, 0x4088,
-	0x56E2, 0x0224,
-	0x56E4, 0x505C,
-	0x56E6, 0x0320,
-	0x56E8, 0x448A,
-	0x56EA, 0x0224,
-	0x56EC, 0xA45B,
-	0x56EE, 0x0320,
-	0x56F0, 0x5089,
-	0x56F2, 0x0224,
-	0x56F4, 0x306A,
-	0x56F6, 0x0420,
-	0x56F8, 0x1485,
-	0x56FA, 0x0224,
-	0x56FC, 0x90F8,
-	0x56FE, 0x0220,
-	0x5700, 0x44A1,
-	0x5702, 0x0224,
-	0x5704, 0x0454,
-	0x5706, 0x0120,
-	0x5708, 0x18A6,
-	0x570A, 0x0224,
-	0x570C, 0x0453,
-	0x570E, 0x0020,
-	0x5710, 0xA0A7,
-	0x5712, 0x0224,
-	0x5714, 0xC850,
-	0x5716, 0x0220,
-	0x5718, 0xB8AC,
-	0x571A, 0x0224,
-	0x571C, 0x2C88,
-	0x571E, 0x0220,
-	0x5720, 0xF0AD,
-	0x5722, 0x0224,
-	0x5724, 0x7C82,
-	0x5726, 0x0120,
-	0x5728, 0xC8B4,
-	0x572A, 0x0224,
-	0x572C, 0xACF3,
-	0x572E, 0x0320,
-	0x5730, 0x64B5,
-	0x5732, 0x0224,
-	0x5734, 0x1081,
-	0x5736, 0x0320,
-	0x5738, 0x70B9,
-	0x573A, 0x0224,
-	0x573C, 0xBCFD,
-	0x573E, 0x0220,
-	0x5740, 0xE4B9,
-	0x5742, 0x0224,
-	0x5744, 0xBCA5,
-	0x5746, 0x0420,
-	0x5748, 0x7CBA,
-	0x574A, 0x0224,
-	0x574C, 0xB803,
-	0x574E, 0x0320,
-	0x5750, 0xE4BC,
-	0x5752, 0x0224,
-	0x5754, 0x8424,
-	0x5756, 0x0220,
-	0x5758, 0xB0BD,
-	0x575A, 0x0224,
-	0x575C, 0x9C4C,
-	0x575E, 0x0220,
-	0x5760, 0xD0BF,
-	0x5762, 0x0224,
-	0x5764, 0x0C22,
-	0x5766, 0x0220,
-	0x5768, 0x54BE,
-	0x576A, 0x0224,
-	0xFCFC, 0x2002,
-	0xC398, 0x29E1,
-	0xC39A, 0x1733,
-	0xC39C, 0x02FC,
-	0xC39E, 0xE702,
-	0xC3A0, 0x6312,
-	0xC3A2, 0xB797,
-	0xC3A4, 0x0124,
-	0xC3A6, 0x9387,
-	0xC3A8, 0x0753,
-	0xC3AA, 0x8564,
-	0xC3AC, 0xBE94,
-	0xC3AE, 0x03C7,
-	0xC3B0, 0xE4B6,
-	0xC3B2, 0x8D66,
-	0xC3B4, 0x3384,
-	0xC3B6, 0xD700,
-	0xC3B8, 0x8327,
-	0xC3BA, 0x846E,
-	0xC3BC, 0x05C3,
-	0xC3BE, 0x858B,
-	0xC3C0, 0x89CB,
-	0xC3C2, 0xB787,
-	0xC3C4, 0x0040,
-	0xC3C6, 0x83D7,
-	0xC3C8, 0x87F4,
-	0xC3CA, 0x2147,
-	0xC3CC, 0xE18B,
-	0xC3CE, 0x638B,
-	0xC3D0, 0xE702,
-	0xC3D2, 0x1733,
-	0xC3D4, 0x02FC,
-	0xC3D6, 0x6700,
-	0xC3D8, 0x2311,
-	0xC3DA, 0x8280,
-	0xC3DC, 0x1147,
-	0xC3DE, 0xE390,
-	0xC3E0, 0xE7FE,
-	0xC3E2, 0xB7D7,
-	0xC3E4, 0x0124,
-	0xC3E6, 0x83C7,
-	0xC3E8, 0x07FA,
-	0xC3EA, 0xE5D7,
-	0xC3EC, 0x97C0,
-	0xC3EE, 0x00FC,
-	0xC3F0, 0xE780,
-	0xC3F2, 0x401F,
-	0xC3F4, 0x3787,
-	0xC3F6, 0x0224,
-	0xC3F8, 0x8546,
-	0xC3FA, 0x8327,
-	0xC3FC, 0x846E,
-	0xC3FE, 0xA300,
-	0xC400, 0xD74E,
-	0xC402, 0x75BF,
-	0xC404, 0x2389,
-	0xC406, 0x04B6,
-	0xC408, 0xE9B7,
-	0xC40A, 0x0100,
-	0xC40C, 0x1733,
-	0xC40E, 0x02FC,
-	0xC410, 0xE702,
-	0xC412, 0xA309,
-	0xC414, 0x2A84,
-	0xC416, 0x2E8A,
-	0xC418, 0x9750,
-	0xC41A, 0xFFFB,
-	0xC41C, 0xE780,
-	0xC41E, 0x004D,
-	0xC420, 0x1DC5,
-	0xC422, 0xB797,
-	0xC424, 0x0124,
-	0xC426, 0x9387,
-	0xC428, 0x0753,
-	0xC42A, 0x0567,
-	0xC42C, 0x3E97,
-	0xC42E, 0x8346,
-	0xC430, 0x37B7,
-	0xC432, 0x0547,
-	0xC434, 0x6385,
-	0xC436, 0xE600,
-	0xC438, 0x83C7,
-	0xC43A, 0x2741,
-	0xC43C, 0x89CB,
-	0xC43E, 0xB787,
-	0xC440, 0x0224,
-	0xC442, 0x03C7,
-	0xC444, 0xB74A,
-	0xC446, 0x8547,
-	0xC448, 0xA284,
-	0xC44A, 0x630F,
-	0xC44C, 0xF702,
-	0xC44E, 0xB7E7,
-	0xC450, 0x0124,
-	0xC452, 0x9387,
-	0xC454, 0x0787,
-	0xC456, 0x83A9,
-	0xC458, 0x870A,
-	0xC45A, 0x03A9,
-	0xC45C, 0xC70A,
-	0xC45E, 0x0146,
-	0xC460, 0xCE85,
-	0xC462, 0x4A85,
-	0xC464, 0x9720,
-	0xC466, 0x01FC,
-	0xC468, 0xE780,
-	0xC46A, 0x005E,
-	0xC46C, 0xD285,
-	0xC46E, 0x2285,
-	0xC470, 0x9780,
-	0xC472, 0x01FC,
-	0xC474, 0xE780,
-	0xC476, 0x001B,
-	0xC478, 0xAA84,
-	0xC47A, 0x0546,
-	0xC47C, 0xCE85,
-	0xC47E, 0x4A85,
-	0xC480, 0x9720,
-	0xC482, 0x01FC,
-	0xC484, 0xE780,
-	0xC486, 0x405C,
-	0xC488, 0x2685,
-	0xC48A, 0x1733,
-	0xC48C, 0x02FC,
-	0xC48E, 0x6700,
-	0xC490, 0x0305,
-	0xC492, 0x0100,
-	0xC494, 0x1733,
-	0xC496, 0x02FC,
-	0xC498, 0xE702,
-	0xC49A, 0xC302,
-	0xC49C, 0x9750,
-	0xC49E, 0xFFFB,
-	0xC4A0, 0xE780,
-	0xC4A2, 0xC044,
-	0xC4A4, 0x09CD,
-	0xC4A6, 0x9750,
-	0xC4A8, 0xFFFB,
-	0xC4AA, 0xE780,
-	0xC4AC, 0x2047,
-	0xC4AE, 0x01E9,
-	0xC4B0, 0xB7A7,
-	0xC4B2, 0x0124,
-	0xC4B4, 0x9387,
-	0xC4B6, 0x0753,
-	0xC4B8, 0x83A7,
-	0xC4BA, 0x47B2,
-	0xC4BC, 0x95EF,
-	0xC4BE, 0x9750,
-	0xC4C0, 0xFFFB,
-	0xC4C2, 0xE780,
-	0xC4C4, 0xA042,
-	0xC4C6, 0x0DED,
-	0xC4C8, 0xB7E7,
-	0xC4CA, 0x0124,
-	0xC4CC, 0x9387,
-	0xC4CE, 0x0787,
-	0xC4D0, 0x8457,
-	0xC4D2, 0xC057,
-	0xC4D4, 0x0146,
-	0xC4D6, 0xA685,
-	0xC4D8, 0x2285,
-	0xC4DA, 0x9720,
-	0xC4DC, 0x01FC,
-	0xC4DE, 0xE780,
-	0xC4E0, 0xA056,
-	0xC4E2, 0x9750,
-	0xC4E4, 0x00FC,
-	0xC4E6, 0xE780,
-	0xC4E8, 0x60D8,
-	0xC4EA, 0x0546,
-	0xC4EC, 0xA685,
-	0xC4EE, 0x2285,
-	0xC4F0, 0x9720,
-	0xC4F2, 0x01FC,
-	0xC4F4, 0xE780,
-	0xC4F6, 0x4055,
-	0xC4F8, 0x1733,
-	0xC4FA, 0x02FC,
-	0xC4FC, 0x6700,
-	0xC4FE, 0xC3FE,
-	0xC500, 0x9750,
-	0xC502, 0xFFFB,
-	0xC504, 0xE780,
-	0xC506, 0x8041,
-	0xC508, 0x61F1,
-	0xC50A, 0x9760,
-	0xC50C, 0x01FC,
-	0xC50E, 0xE780,
-	0xC510, 0x20D8,
-	0xC512, 0xB7D7,
-	0xC514, 0x0124,
-	0xC516, 0x03D4,
-	0xC518, 0x07ED,
-	0xC51A, 0xAA84,
-	0xC51C, 0x97C0,
-	0xC51E, 0x01FC,
-	0xC520, 0xE780,
-	0xC522, 0xC051,
-	0xC524, 0x3314,
-	0xC526, 0xA400,
-	0xC528, 0x97C0,
-	0xC52A, 0x01FC,
-	0xC52C, 0xE780,
-	0xC52E, 0xC052,
-	0xC530, 0x3354,
-	0xC532, 0xA440,
-	0xC534, 0xE3FA,
-	0xC536, 0x84F8,
-	0xC538, 0xC1B7,
-	0xC53A, 0x0100,
-	0xC53C, 0xB7C7,
-	0xC53E, 0x0224,
-	0xC540, 0x03C7,
-	0xC542, 0x0739,
-	0xC544, 0xB7D7,
-	0xC546, 0x0124,
-	0xC548, 0x23A8,
-	0xC54A, 0xE7DA,
-	0xC54C, 0xB7C7,
-	0xC54E, 0x0224,
-	0xC550, 0x3767,
-	0xC552, 0x0124,
-	0xC554, 0x9387,
-	0xC556, 0x8739,
-	0xC558, 0x2324,
-	0xC55A, 0xF742,
-	0xC55C, 0x8280,
-	0xC55E, 0x0100,
-	0xC560, 0x1733,
-	0xC562, 0x02FC,
-	0xC564, 0xE702,
-	0xC566, 0x03F6,
-	0xC568, 0xB7C6,
-	0xC56A, 0x0224,
-	0xC56C, 0xB787,
-	0xC56E, 0x0324,
-	0xC570, 0x9386,
-	0xC572, 0x065C,
-	0xC574, 0x37A7,
-	0xC576, 0x0124,
-	0xC578, 0x9387,
-	0xC57A, 0x07FF,
-	0xC57C, 0x1307,
-	0xC57E, 0x0753,
-	0xC580, 0x958F,
-	0xC582, 0x232C,
-	0xC584, 0xD7B4,
-	0xC586, 0x232E,
-	0xC588, 0xF7B4,
-	0xC58A, 0x9720,
-	0xC58C, 0x01FC,
-	0xC58E, 0xE780,
-	0xC590, 0x60EF,
-	0xC592, 0x19C5,
-	0xC594, 0xEFD0,
-	0xC596, 0x1FE3,
-	0xC598, 0xEFF0,
-	0xC59A, 0x4FD3,
-	0xC59C, 0x7133,
-	0xC59E, 0x793F,
-	0xC5A0, 0x1733,
-	0xC5A2, 0x02FC,
-	0xC5A4, 0x6700,
-	0xC5A6, 0x43F4,
-	0xC5A8, 0x0000,
-	0xC5AA, 0x0000,
-	0xC5AC, 0x0000,
-	0xC5AE, 0x0000,
-	0xC5B0, 0xBD10,
-	0xC5B2, 0xE538,
-	0xC5B4, 0x0000,
-	0xC5B6, 0x0000,
-	0xC5B8, 0xBEFF,
-	0xC5BA, 0x0F00,
-	0xC5BC, 0x0000,
-	0xC5BE, 0x0000,
-	0xFCFC, 0x2000,
-	0x2366, 0x001C,
-	0x2368, 0x001C,
-	0x238E, 0x3F28,
-	0x2398, 0x5037,
-	0x24B8, 0x0101,
-	0x66E4, 0x1E8D,
-	0x66E6, 0x0000,
-	0x6874, 0x0000,
-	0x6876, 0x0000,
-	0x6878, 0x0000,
-	0x687A, 0x0000,
-	0x6884, 0x0100,
-	0x6886, 0x0100,
-	0x6888, 0x0100,
-	0x688A, 0x0100,
-	0x77D2, 0x0000,
-	0x780A, 0x0000,
-	0x793E, 0x0100,
-	0x7940, 0x7017,
-	0x795C, 0x0400,
-	0x795E, 0x0400,
-	0x7960, 0x0800,
-	0x7962, 0x1000,
-	0x7964, 0x0800,
-	0x7966, 0x1000,
-	0x7968, 0x0800,
-	0x796A, 0x0800,
-	0x796C, 0x0800,
-	0x796E, 0x0800,
-	0x7972, 0x0400,
-	0x7974, 0x0400,
-	0x7976, 0x0800,
-	0x7978, 0x1000,
-	0x797A, 0x0800,
-	0x797C, 0x1000,
-	0x797E, 0x0800,
-	0x7980, 0x0800,
-	0x7982, 0x0800,
-	0x7984, 0x0800,
-	0xB3AC, 0x4000,
-	0xB3B4, 0x2000,
-	0xB3B8, 0x1000,
-	0xB3F8, 0x8000,
-	0xB400, 0x4000,
-	0xB404, 0x2000,
-	0xBF70, 0x3A46,
-	0xBF7C, 0x0800,
-	0xC4A8, 0x0000,
-	0xC4F8, 0x00A8,
-	0xC4FA, 0x0000,
-	0xD3DA, 0x0D00,
-	0xD3E0, 0x0D00,
-	0xD3E2, 0x0D00,
-	0xD3E4, 0x0D00,
-	0xD3E6, 0x0D00,
-	0xD3EA, 0x0D00,
-	0xD3F4, 0x301C,
-	0xD3F8, 0x301C,
-	0xDD6C, 0xB47E,
-	0xDD6E, 0xB67E,
-	0xDE34, 0x0000,
-	0xDE36, 0x9231,
-	0xEC42, 0x0100,
-	0xEC44, 0x0100,
-	0xFCFC, 0x2001,
-	0x2542, 0x2020,
-	0x2544, 0x2018,
-	0x2554, 0x0000,
-	0x2556, 0x0000,
-	0x256E, 0x0000,
-	0x25D2, 0x0102,
-	0x2936, 0x4400,
-	0x2A14, 0x0002,
-	0x2A16, 0xDF03,
-	0x2A18, 0x0002,
-	0x2A1A, 0x0002,
-	0x3252, 0x8C00,
-	0x3254, 0x8C00,
-	0x3256, 0x8C00,
-	0x3258, 0x8700,
-	0x325A, 0x8200,
-	0x3E1C, 0x0200,
-	0x3E1E, 0x2000,
-	0x5ACC, 0x6505,
-	0xFCFC, 0x4000,
-	0x1858, 0x123F,
-	0xFCFC, 0x2001,
-	0x3EB8, 0x00FF,
-	0x3ECC, 0xFE03,
-	0x3F12, 0x9001,
-	0x33E0, 0x1E00,
-	0x33E2, 0x1E00,
-	0x33E4, 0x1E00,
-	0x33E6, 0x1E00,
-	0x33E8, 0x1E00,
-	0x33EA, 0x1E00,
-	0x3440, 0x0500,
-	0x3442, 0x0500,
-	0x3444, 0x0500,
-	0x3446, 0x0500,
-	0x3448, 0x0500,
-	0x344A, 0x0500,
-	0x3450, 0x0A00,
-	0x3452, 0x0A00,
-	0x3454, 0x0A00,
-	0x3456, 0x0A00,
-	0x3458, 0x0A00,
-	0x345A, 0x0A00,
-	0x34E0, 0x1400,
-	0x34E2, 0x1400,
-	0x34E4, 0x1400,
-	0x34E6, 0x1400,
-	0x34E8, 0x1400,
-	0x34EA, 0x1400,
-	0x3500, 0x1400,
-	0x3502, 0x1400,
-	0x3504, 0x1400,
-	0x3506, 0x1400,
-	0x3508, 0x1400,
-	0x350A, 0x1400,
-	0x3520, 0x1400,
-	0x3522, 0x1400,
-	0x3524, 0x1400,
-	0x3526, 0x1400,
-	0x3528, 0x1400,
-	0x352A, 0x1400,
-	0x3580, 0x2300,
-	0x3582, 0x2300,
-	0x3584, 0x2300,
-	0x3586, 0x2300,
-	0x3588, 0x2300,
-	0x358A, 0x2300,
-	0x35A0, 0x1900,
-	0x35A2, 0x1900,
-	0x35A4, 0x1900,
-	0x35A6, 0x1900,
-	0x35A8, 0x1900,
-	0x35AA, 0x1900,
-	0x35D0, 0x1E00,
-	0x35D2, 0x1E00,
-	0x35D4, 0x1E00,
-	0x35D6, 0x1E00,
-	0x35D8, 0x1E00,
-	0x35DA, 0x1E00,
-	0x35E0, 0x1E00,
-	0x35E2, 0x1E00,
-	0x35E4, 0x1E00,
-	0x35E6, 0x1E00,
-	0x35E8, 0x1E00,
-	0x35EA, 0x1E00,
-	0x35F0, 0x1E00,
-	0x35F2, 0x1E00,
-	0x35F4, 0x1E00,
-	0x35F6, 0x1E00,
-	0x35F8, 0x1E00,
-	0x35FA, 0x1E00,
-	0x3600, 0x1E00,
-	0x3602, 0x1E00,
-	0x3604, 0x1E00,
-	0x3606, 0x1E00,
-	0x3608, 0x1E00,
-	0x360A, 0x1E00,
-	0x3610, 0x1E00,
-	0x3612, 0x1E00,
-	0x3614, 0x1E00,
-	0x3616, 0x1E00,
-	0x3618, 0x1E00,
-	0x361A, 0x1E00,
-	0x3620, 0x0000,
-	0x3622, 0x0000,
-	0x3624, 0x0000,
-	0x3626, 0x0000,
-	0x3628, 0x0000,
-	0x362A, 0x0000,
-	0x3630, 0x0A00,
-	0x3632, 0x0A00,
-	0x3634, 0x0A00,
-	0x3636, 0x0A00,
-	0x3638, 0x0A00,
-	0x363A, 0x0A00,
-	0x3650, 0x1E00,
-	0x3652, 0x1E00,
-	0x3654, 0x1E00,
-	0x3656, 0x1E00,
-	0x3658, 0x1E00,
-	0x365A, 0x1E00,
-	0x3660, 0x1E00,
-	0x3662, 0x1E00,
-	0x3664, 0x1E00,
-	0x3666, 0x1E00,
-	0x3668, 0x1E00,
-	0x366A, 0x1E00,
-	0x36A0, 0x6400,
-	0x36A2, 0x6400,
-	0x36A4, 0x6400,
-	0x36A6, 0x6400,
-	0x36A8, 0x6400,
-	0x36AA, 0x6400,
-	0x36C0, 0x8C00,
-	0x36C2, 0x8C00,
-	0x36C4, 0x8C00,
-	0x36C6, 0x8C00,
-	0x36C8, 0x8C00,
-	0x36CA, 0x8C00,
-	0x36E0, 0x6400,
-	0x36E2, 0x6400,
-	0x36E4, 0x6400,
-	0x36E6, 0x6400,
-	0x36E8, 0x6400,
-	0x36EA, 0x6400,
-	0x36F0, 0x3200,
-	0x36F2, 0x3200,
-	0x36F4, 0x3200,
-	0x36F6, 0x3200,
-	0x36F8, 0x3200,
-	0x36FA, 0x3200,
-	0x3700, 0x3200,
-	0x3702, 0x3200,
-	0x3704, 0x3200,
-	0x3706, 0x3200,
-	0x3708, 0x3200,
-	0x370A, 0x3200,
-	0x3720, 0x3200,
-	0x3722, 0x3200,
-	0x3724, 0x3200,
-	0x3726, 0x3200,
-	0x3728, 0x3200,
-	0x372A, 0x3200,
-	0x3730, 0x3200,
-	0x3732, 0x3200,
-	0x3734, 0x3200,
-	0x3736, 0x3200,
-	0x3738, 0x3200,
-	0x373A, 0x3200,
-	0x3790, 0x3200,
-	0x3792, 0x3200,
-	0x3794, 0x3200,
-	0x3796, 0x3200,
-	0x3798, 0x3200,
-	0x379A, 0x3200,
-	0x37A0, 0x5000,
-	0x37A2, 0x5000,
-	0x37A4, 0x5000,
-	0x37A6, 0x5000,
-	0x37A8, 0x5000,
-	0x37AA, 0x5000,
-	0x37B0, 0x6400,
-	0x37B2, 0x6400,
-	0x37B4, 0x6400,
-	0x37B6, 0x6400,
-	0x37B8, 0x6400,
-	0x37BA, 0x6400,
-	0x37C0, 0x5000,
-	0x37C2, 0x5000,
-	0x37C4, 0x5000,
-	0x37C6, 0x5000,
-	0x37C8, 0x5000,
-	0x37CA, 0x5000,
-	0x37D0, 0x3200,
-	0x37D2, 0x3200,
-	0x37D4, 0x3200,
-	0x37D6, 0x3200,
-	0x37D8, 0x3200,
-	0x37DA, 0x3200,
-	0x37E0, 0x1E00,
-	0x37E2, 0x1E00,
-	0x37E4, 0x1E00,
-	0x37E6, 0x1E00,
-	0x37E8, 0x1E00,
-	0x37EA, 0x1E00,
-	0x37F0, 0x1E00,
-	0x37F2, 0x1E00,
-	0x37F4, 0x1E00,
-	0x37F6, 0x1E00,
-	0x37F8, 0x1E00,
-	0x37FA, 0x1E00,
-	0x3800, 0x1E00,
-	0x3802, 0x1E00,
-	0x3804, 0x1E00,
-	0x3806, 0x1E00,
-	0x3808, 0x1E00,
-	0x380A, 0x1E00,
-	0x3810, 0x1E00,
-	0x3812, 0x1E00,
-	0x3814, 0x1E00,
-	0x3816, 0x1E00,
-	0x3818, 0x1E00,
-	0x381A, 0x1E00,
-	0x3820, 0x1E00,
-	0x3822, 0x1E00,
-	0x3824, 0x1E00,
-	0x3826, 0x1E00,
-	0x3828, 0x1E00,
-	0x382A, 0x1E00,
-	0x3870, 0x3200,
-	0x3872, 0x3200,
-	0x3874, 0x3200,
-	0x3876, 0x3200,
-	0x3878, 0x3200,
-	0x387A, 0x3200,
-	0x3880, 0x3200,
-	0x3882, 0x3200,
-	0x3884, 0x3200,
-	0x3886, 0x3200,
-	0x3888, 0x3200,
-	0x388A, 0x3200,
-	0x3890, 0x3200,
-	0x3892, 0x3200,
-	0x3894, 0x3200,
-	0x3896, 0x3200,
-	0x3898, 0x3200,
-	0x389A, 0x3200,
-	0x38A0, 0x3200,
-	0x38A2, 0x3200,
-	0x38A4, 0x3200,
-	0x38A6, 0x3200,
-	0x38A8, 0x3200,
-	0x38AA, 0x3200,
-	0x38B0, 0x3200,
-	0x38B2, 0x3200,
-	0x38B4, 0x3200,
-	0x38B6, 0x3200,
-	0x38B8, 0x3200,
-	0x38BA, 0x3200,
-	0x320A, 0xFF03,
-	0x320C, 0x0700,
-	0x320E, 0xFF03,
-	0x3210, 0x0700,
-	0x321E, 0x0000,
-	0x31D4, 0x00FF,
-	0x321A, 0x0406,
-	0x3244, 0x0101,
-	0x3246, 0x0101,
-	0x3248, 0x0010,
-	0x3266, 0x0100,
-	0x3330, 0x0108,
-	0x3334, 0x0100,
-	0x3336, 0x0000,
-	0xFCFC, 0x2002,
-	0xBB8A, 0x0100,
-	0xBB8C, 0x0800,
-	0xBB8E, 0x1000,
-	0xBB90, 0x2000,
-	0xBB92, 0xC800,
-	0xBB94, 0xC800,
-	0xBB96, 0xC800,
-	0xBB98, 0xC800,
-	0xBB9A, 0xC400,
-	0xBB9C, 0xC400,
-	0xBB9E, 0xC400,
-	0xBBA0, 0xC400,
-	0xBBA2, 0xC200,
-	0xBBA4, 0xC200,
-	0xBBA6, 0xC200,
-	0xBBA8, 0xC200,
-	0xBBAA, 0xBE00,
-	0xBBAC, 0xBE00,
-	0xBBAE, 0xBE00,
-	0xBBB0, 0xBE00,
-	0xBBB2, 0xBC00,
-	0xBBB4, 0xBC00,
-	0xBBB6, 0xBC00,
-	0xBBB8, 0xBC00,
-	0xBBBA, 0x2000,
-	0xBBBC, 0x2000,
-	0xBBBE, 0x2000,
-	0xBBC0, 0x2000,
-	0xBBC2, 0x1600,
-	0xBBC4, 0x1600,
-	0xBBC6, 0x1600,
-	0xBBC8, 0x1600,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0000,
-	0xBBD2, 0x0A00,
-	0xBBD4, 0x0A00,
-	0xBBD6, 0x0A00,
-	0xBBD8, 0x0A00,
-	0xBBDA, 0x1400,
-	0xBBDC, 0x1400,
-	0xBBDE, 0x1400,
-	0xBBE0, 0x1400,
-	0xBBE2, 0x2A00,
-	0xBBE4, 0x2A00,
-	0xBBE6, 0x2A00,
-	0xBBE8, 0x2A00,
-	0xBBEA, 0x2A00,
-	0xBBEC, 0x2A00,
-	0xBBEE, 0x2A00,
-	0xBBF0, 0x2A00,
-	0xBBF2, 0x0100,
-	0xBBF4, 0x0100,
-	0xBBF6, 0x0100,
-	0xBBF8, 0x0100,
-	0xBBFA, 0x0F00,
-	0xBBFC, 0x0F00,
-	0xBBFE, 0x0F00,
-	0xBC00, 0x0F00,
-	0xBC02, 0x0400,
-	0xBC04, 0x0400,
-	0xBC06, 0x0400,
-	0xBC08, 0x0400,
-	0xBC0A, 0x1900,
-	0xBC0C, 0x1900,
-	0xBC0E, 0x1900,
-	0xBC10, 0x1900,
-	0xBC12, 0x1400,
-	0xBC14, 0x1400,
-	0xBC16, 0x1400,
-	0xBC18, 0x1400,
-	0xBC1A, 0x3A00,
-	0xBC1C, 0x3A00,
-	0xBC1E, 0x3A00,
-	0xBC20, 0x3A00,
-	0xBC22, 0x0A00,
-	0xBC24, 0x0A00,
-	0xBC26, 0x0A00,
-	0xBC28, 0x0A00,
-	0xBC2A, 0x4B00,
-	0xBC2C, 0x4B00,
-	0xBC2E, 0x4B00,
-	0xBC30, 0x4B00,
-	0xBC32, 0x0200,
-	0xBC34, 0x0600,
-	0xBC36, 0x0C00,
-	0xBC38, 0x0C00,
-	0xBC3A, 0x2A00,
-	0xBC3C, 0x2500,
-	0xBC3E, 0x2000,
-	0xBC40, 0x2000,
-	0xBC42, 0x0000,
-	0xBC44, 0x1000,
-	0xBC46, 0x2300,
-	0xBC48, 0x2300,
-	0xBC4A, 0x3F00,
-	0xBC4C, 0x3100,
-	0xBC4E, 0x2100,
-	0xBC50, 0x2100,
-	0xBC52, 0x0A00,
-	0xBC54, 0x1B00,
-	0xBC56, 0x3000,
-	0xBC58, 0x3000,
-	0xBC5A, 0x1900,
-	0xBC5C, 0x1500,
-	0xBC5E, 0x1100,
-	0xBC60, 0x1100,
-	0xBC62, 0x0F00,
-	0xBC64, 0x0F00,
-	0xBC66, 0x0F00,
-	0xBC68, 0x0F00,
-	0xBC6A, 0x1900,
-	0xBC6C, 0x1900,
-	0xBC6E, 0x1900,
-	0xBC70, 0x1900,
-	0xBC72, 0x0A00,
-	0xBC74, 0x0A00,
-	0xBC76, 0x0A00,
-	0xBC78, 0x0A00,
-	0xBC7A, 0x0B00,
-	0xBC7C, 0x0B00,
-	0xBC7E, 0x0B00,
-	0xBC80, 0x0B00,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x0000,
-	0xBC8A, 0x0800,
-	0xBC8C, 0x0800,
-	0xBC8E, 0x0800,
-	0xBC90, 0x0800,
-	0xFCFC, 0x4000,
-};
-
-/*4sum12.5Mp_30FPS_4096x3072*/
-static u16 zhuquec1front_preview_capture_setting[] = {
-//Complete	2
-//240715	pre
-//05_OceanFront3_JN5_Fdsum_12.5Mp_4096x3072_30fps_3056Msps
-//Mode :	05_OceanFront3_JN5_Fdsum_12.5Mp
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//4096	px
-//3072	px
-//30.01	fps
-//Raw10
-//4784	px
-//688	px
-//6408	line
-//3336	line
-//17.35	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0000,
-	0x034A, 0x181F,
-	0x034C, 0x1000,
-	0x034E, 0x0C00,
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x1908,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00BF,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x0300,
-	0xD4D0, 0x2600,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x2800,
-	0xD4BC, 0x4700,
-	0xD4B0, 0x3E03,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xEC00,
-	0xD560, 0x5203,
-	0xD562, 0x7A03,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0D00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x4000,
-	0xDB0E, 0x0040,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xE001,
-	0xDB10, 0x0000,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x2003,
-	0xDB12, 0x00B0,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x8007,
-	0xDB14, 0x00D0,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x000B,
-	0xDB16, 0x00F0,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum4k_30FPS_4096x2304*/
-static u16 zhuquec1front_normal_video_setting[] = {
-//Complete	4
-//240715	nor_vid
-//09_OceanFront6_JN5_Fdsum_4K_4096x2304_30fps_3056Msps
-//Mode :	09_OceanFront6_JN5_Fdsum_4K
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x576
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//4640	px
-//4096	px
-//2304	px
-//30.01	fps
-//Raw10
-//4784	px
-//688	px
-//6408	line
-//4104	line
-//21.34	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0300,
-	0x034A, 0x151F,
-	0x034C, 0x1000,
-	0x034E, 0x0900,
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x1908,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00BF,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x5209,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2200,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0000,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x3600,
-	0xD4BC, 0x6200,
-	0xD4B0, 0x5604,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xFA00,
-	0xD560, 0x5203,
-	0xD562, 0x8803,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0D00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x4000,
-	0xDB0E, 0x0040,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xE001,
-	0xDB10, 0x0000,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x2003,
-	0xDB12, 0x00B0,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x8007,
-	0xDB14, 0x00D0,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x000B,
-	0xDB16, 0x00F0,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum4k_60FPS_4096x2304*/
-static u16 zhuquec1front_hs_video_setting[] = {
-//Complete	5
-//240715	hs_video
-//09_OceanFront7_JN5_Fdsum_4K_4096x2304_60fps_3056Msps
-//Mode :	09_OceanFront7_JN5_Fdsum_4K
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x576
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//4640	px
-//4096	px
-//2304	px
-//60.02	fps
-//Raw10
-//4784	px
-//688	px
-//3204	line
-//900	line
-//4.68	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0300,
-	0x034A, 0x151F,
-	0x034C, 0x1000,
-	0x034E, 0x0900,
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x0C84,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00BF,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x5209,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2200,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0000,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x3600,
-	0xD4BC, 0x6200,
-	0xD4B0, 0x6603,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xFA00,
-	0xD560, 0x5203,
-	0xD562, 0x8803,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0D00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x4000,
-	0xDB0E, 0x0040,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xE001,
-	0xDB10, 0x0000,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x2003,
-	0xDB12, 0x00B0,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x8007,
-	0xDB14, 0x00D0,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x000B,
-	0xDB16, 0x00F0,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum2bin_120FPS_2048x1152*/
-static u16 zhuquec1front_slim_video_setting[] = { //Not updated
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0300,
-	0x034A, 0x151F,
-	0x034C, 0x0800,
-	0x034E, 0x0480,
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x0642,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00D1,
-	0x0312, 0x0001,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0000,
-	0x84A4, 0x0000,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0100,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x0004,
-	0x705A, 0x0004,
-	0x7274, 0x0000,
-	0x7276, 0x0000,
-	0x7278, 0x0000,
-	0x727A, 0x0000,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7EC6, 0x0900,
-	0x7EA2, 0x0900,
-	0xB1E0, 0x0707,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0600,
-	0xD4A8, 0x0700,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x4000,
-	0xD4B0, 0xC400,
-	0xD4C8, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0005,
-	0x1C28, 0x0050,
-	0x1C2A, 0x3710,
-	0x1C2C, 0x3710,
-	0x1C2E, 0x0000,
-	0x1C30, 0x0000,
-	0x1C32, 0x0000,
-	0x1C34, 0x0000,
-	0x1C4E, 0x0001,
-	0x1C50, 0x7F01,
-	0x1C52, 0xD70F,
-	0x1C54, 0x1510,
-	0x1C56, 0x8001,
-	0x1C58, 0x0002,
-	0x1C5A, 0x1510,
-	0x1C5C, 0xBE0F,
-	0x1C5E, 0x0005,
-	0x1C60, 0x0050,
-	0x1C62, 0x3710,
-	0x1C64, 0x3710,
-	0x1C76, 0x0001,
-	0x1C78, 0x7F01,
-	0x1C7A, 0xD70F,
-	0x1C7C, 0x1510,
-	0x1C7E, 0x8001,
-	0x1C80, 0x0002,
-	0x1C82, 0x1510,
-	0x1C84, 0xBE0F,
-	0x1C86, 0x0005,
-	0x1C88, 0x0050,
-	0x1C8A, 0x3710,
-	0x1C8C, 0x3710,
-	0x1C9E, 0x0005,
-	0x1CA0, 0x0050,
-	0x1CA2, 0x3710,
-	0x1CA4, 0x3710,
-	0x1CA6, 0x0000,
-	0x1CA8, 0x0000,
-	0x1CAA, 0x0000,
-	0x1CAC, 0x0000,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0xA2FD,
-	0xA58E, 0xFEFE,
-	0xA56E, 0x4000,
-	0xA57C, 0x0E00,
-	0xA570, 0x8000,
-	0xA57E, 0x2000,
-	0xA572, 0xA000,
-	0xA580, 0x2800,
-	0xA574, 0x4001,
-	0xA582, 0x1400,
-	0xA576, 0x8002,
-	0xA584, 0x2200,
-	0xA578, 0x0005,
-	0xA586, 0x2800,
-	0xA57A, 0x000A,
-	0xA588, 0x2C00,
-	0xA58A, 0x2E00,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0C00,
-	0x1E16, 0x0C00,
-	0x1E1A, 0x0C00,
-	0x1E1E, 0x0C00,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0C00,
-	0x1E56, 0x0C00,
-	0x1E5A, 0x0C00,
-	0x1E5E, 0x0C00,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0000,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0D00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0000,
-	0xFCFC, 0x4000,
-	0x8E48, 0x0F00,
-};
-
-/*4sum12.5Mp_24FPS_4096x3072*/
-static u16 zhuquec1front_custom1_setting[] = { //Not updated
-//05_OceanFront4_JN5_Fdsum_12.5Mp_4096x3072_24fps_3056Msps
-//Mode :	05_OceanFront4_JN5_Fdsum_12.5Mp
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//4096	px
-//3072	px
-//24.01	fps
-//Raw10
-//4784	px
-//688	px
-//8008	line
-//4936	line
-//25.67	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,	//0
-	0x0348, 0x201F,	//8223
-	0x0346, 0x0000,	//0
-	0x034A, 0x181F,	//6175
-	0x034C, 0x1000,	//4096
-	0x034E, 0x0C00,	//3072
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x1F48,	//8008
-	0x0342, 0x12B0,	//4784
-	0x0136, 0x1800,	//24
-	0x013E, 0x0000,	//0
-	0x0304, 0x0003,	//3
-	0x0306, 0x00E6,	//230
-	0x030C, 0x0000,	//0
-	0x030E, 0x0003,	//3
-	0x0310, 0x00BF,	//191
-	0x0312, 0x0000,	//0
-	0x031A, 0x0003,	//3
-	0x031C, 0x0028,	//40
-	0x031E, 0x0002,	//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100,	//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,	//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,	//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,	//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,	//L/R only
-	0x0728, 0x0000,	//0.25
-	0x072A, 0x0000,	//0.125
-	0x072C, 0x0000,	//0.0625
-	0x072E, 0x0000,	//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,	//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,	//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,	//QPDC_Off
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2003,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,	//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x0300,
-	0xD4D0, 0x2600,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x2800,
-	0xD4BC, 0x4700,
-	0xD4B0, 0x9600,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xEC00,
-	0xD560, 0x5203,
-	0xD562, 0x7A03,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0900,
-	0x1DF6, 0x0900,
-	0x1DFA, 0x0900,
-	0x1DFE, 0x0900,
-	0x1E12, 0x0000,
-	0x1E16, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E32, 0x0900,
-	0x1E36, 0x0900,
-	0x1E3A, 0x0900,
-	0x1E3E, 0x0900,
-	0x1E52, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5A, 0x0000,
-	0x1E5E, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0D00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x4000,
-	0xDB0E, 0x0040,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xE001,
-	0xDB10, 0x0000,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x2003,
-	0xDB12, 0x00B0,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x8007,
-	0xDB14, 0x00D0,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x000B,
-	0xDB16, 0x00F0,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0000,
-	0x8E48, 0x0F00,
-};
-
-/*4sum2bin_24FPS_2048x1536*/
-static u16 zhuquec1front_custom2_setting[] = { //Not updated
-//13_1_OceanFront1_JN5_A2A2_FHD_2048x1536_24fps_1672Msps
-//Mode :	13_1_OceanFront1_JN5_A2A2_FHD
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x384
-//ExtClk :	24	MHz
-//Vt_pix_clk :	920	MHz
-//MIPI_output_speed :	1672	Mbps/lane
-//MIPI_lane :	4	lane
-//Crop_Width :	8224	px
-//Crop_Height :	6176	px
-//Output_Width :	2048	px
-//Output_Height :	1536	px
-//Frame rate :	24.01	fps
-//Output format :	Raw10
-//H-size :	4852	px
-//H-blank :	2804	px
-//V-size :	7896	line
-//V-blank :	6360	line
-//V-blank(ms) :	33.54	ms
-//First Pixel :	Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000, //0
-	0x0348, 0x201F, //8223
-	0x0346, 0x0000, //0
-	0x034A, 0x181F, //6175
-	0x034C, 0x0800, //2048
-	0x034E, 0x0600, //1536
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x1ED8, //7896
-	0x0342, 0x12F4, //4852
-	0x0136, 0x1800, //24
-	0x013E, 0x0000, //0
-	0x0304, 0x0003, //3
-	0x0306, 0x00E6, //230
-	0x030C, 0x0000, //0
-	0x030E, 0x0003, //3
-	0x0310, 0x00D1, //209
-	0x0312, 0x0001, //1
-	0x031A, 0x0003, //3
-	0x031C, 0x0028, //40
-	0x031E, 0x0002, //2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100, //DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006, //PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B, //PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001, //Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000, //L/R only
-	0x0728, 0x0000, //0.25
-	0x072A, 0x0000, //0.125
-	0x072C, 0x0000, //0.0625
-	0x072E, 0x0000, //0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000, //QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100, //DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000, //QPDC_Off
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x00D0,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000, //240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0000,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0600,
-	0xD4A8, 0x0700,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x4000,
-	0xD4B0, 0x1202,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0xA2FD,
-	0xA58E, 0xFEFE,
-	0xA56E, 0x4000,
-	0xA57C, 0x0E00,
-	0xA570, 0x8000,
-	0xA57E, 0x2000,
-	0xA572, 0xA000,
-	0xA580, 0x2800,
-	0xA574, 0x4001,
-	0xA582, 0x1400,
-	0xA576, 0x8002,
-	0xA584, 0x2200,
-	0xA578, 0x0005,
-	0xA586, 0x2800,
-	0xA57A, 0x000A,
-	0xA588, 0x2C00,
-	0xA58A, 0x2E00,
-	0xA548, 0x0000,
-	0xA568, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0600,
-	0x1DF6, 0x0600,
-	0x1DFA, 0x0600,
-	0x1DFE, 0x0600,
-	0x1E12, 0x0C00,
-	0x1E16, 0x0C00,
-	0x1E1A, 0x0C00,
-	0x1E1E, 0x0C00,
-	0x1E32, 0x0600,
-	0x1E36, 0x0600,
-	0x1E3A, 0x0600,
-	0x1E3E, 0x0600,
-	0x1E52, 0x0C00,
-	0x1E56, 0x0C00,
-	0x1E5A, 0x0C00,
-	0x1E5E, 0x0C00,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0000,
-	0xDB3C, 0x0000,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x0000,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0000,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xFCFC, 0x4000,
-	0x8E48, 0x0F00,
-};
-
-/*full50Mp_15FPS_8192x6144_remosaicON*/
-static u16 zhuquec1front_custom3_setting[] = {
-//Complete	1
-//240715	cus3
-//01_WD4_OceanFront_JN5_Full_8192x6144_15.1fps_2256Msps
-//Mode :	01_WD4_OceanFront_JN5_Full
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_On
-//DBPC	DBPC_On
-//Qmosaic	QMSC_On
-//Tail :	Off	4096x768
-//24	MHz
-//920	MHz
-//2256	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//8192	px
-//6144	px
-//15.1	fps
-//Raw10
-//9600	px
-//1408	px
-//6346	line
-//202	line
-//2.11	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0000,
-	0x7808, 0x0000,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0000,
-	0x034A, 0x181F,
-	0x034C, 0x2000,
-	0x034E, 0x1800,
-	0x0350, 0x0010,
-	0x0352, 0x0010,
-	0x0340, 0x18CA,
-	0x0342, 0x2580,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x008D,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0600,
-	0xB178, 0x0000,
-	0x7996, 0x0100,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x0011,
-	0x0380, 0x0001,
-	0x0382, 0x0001,
-	0x0384, 0x0001,
-	0x0386, 0x0001,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0101,
-	0x0720, 0x0000,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0100,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0200,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0100,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0200,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0101,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0200,
-	0xC53C, 0x0100,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x530D,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0100,
-	0x31FA, 0xCD04,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0200,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0120,
-	0xD3EC, 0xB11C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0200,
-	0xFCFC, 0x2000,
-	0xE980, 0x0005,
-	0xC4D8, 0x2000,
-	0x795A, 0x1000,
-	0x7970, 0x1000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0001,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x2F00,
-	0x705A, 0x3000,
-	0x7274, 0x0D00,
-	0x7276, 0x0C00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0000,
-	0x704A, 0x0004,
-	0x705C, 0x0004,
-	0x7314, 0x0000,
-	0x7316, 0x0000,
-	0x7318, 0x0000,
-	0x731A, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0800,
-	0x2A42, 0x0100,
-	0x2A44, 0xB004,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x1E00,
-	0x7A6E, 0x2800,
-	0x7A86, 0x2800,
-	0x8C9E, 0x5000,
-	0x8CCE, 0x2C01,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0000,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x1600,
-	0xD4A8, 0x0300,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x2000,
-	0xD4DE, 0x0000,
-	0xD4B8, 0x3500,
-	0xD4AC, 0x1603,
-	0xD4C4, 0x0100,
-	0xD4EC, 0xBE00,
-	0xD4EE, 0xBE00,
-	0xD4F8, 0xF001,
-	0xD4FA, 0xF001,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0001,
-	0x1C28, 0xFF03,
-	0x1C2A, 0x0010,
-	0x1C2C, 0xD70F,
-	0x1C2E, 0x0004,
-	0x1C30, 0x0010,
-	0x1C32, 0xD70F,
-	0x1C34, 0xC20F,
-	0x1C4E, 0x0001,
-	0x1C50, 0xFF03,
-	0x1C52, 0x0010,
-	0x1C54, 0xD70F,
-	0x1C56, 0x0004,
-	0x1C58, 0x0010,
-	0x1C5A, 0xD70F,
-	0x1C5C, 0xC20F,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x0001,
-	0x1C78, 0xFF03,
-	0x1C7A, 0x0010,
-	0x1C7C, 0xD70F,
-	0x1C7E, 0x0004,
-	0x1C80, 0x0010,
-	0x1C82, 0xD70F,
-	0x1C84, 0xC20F,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x0001,
-	0x1CA0, 0xFF03,
-	0x1CA2, 0x0010,
-	0x1CA4, 0xD70F,
-	0x1CA6, 0x0004,
-	0x1CA8, 0x0010,
-	0x1CAA, 0xD70F,
-	0x1CAC, 0xC20F,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0800,
-	0xA578, 0x8000,
-	0xA58A, 0x2100,
-	0xA57A, 0x0001,
-	0xA58C, 0x2900,
-	0xA57C, 0x0002,
-	0xA58E, 0x2E00,
-	0xA57E, 0x0002,
-	0xA590, 0x2E00,
-	0xA580, 0x0002,
-	0xA592, 0x2E00,
-	0xA582, 0x0002,
-	0xA594, 0x2E00,
-	0xA584, 0x0002,
-	0xA596, 0x2E00,
-	0xA586, 0x0002,
-	0xA598, 0x2E00,
-	0xA59A, 0x3000,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3600,
-	0x82A2, 0x1200,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x4004,
-	0xB268, 0x4004,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x3000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0x8001,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD710,
-	0xF014, 0x0600,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F2B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum4k_30FPS_4096x2304_2expSHDR*/
-static u16 zhuquec1front_custom4_setting[] = { //Not updated
-//12_i_DE_OceanFront_JN5_Fdsum_ovlHDR_4096x2304_30fps_3312Msps
-//Mode :	12_i_DE_OceanFront_JN5_Fdsum_ovlHDR
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x576
-//ExtClk :	24	MHz
-//Vt_pix_clk :	920	MHz
-//MIPI_output_speed :	3312	Mbps/lane
-//MIPI_lane :	4	lane
-//Crop_Width :	8224	px
-//Crop_Height :	4640	px
-//Output_Width :	4096	px
-//Output_Height :	2304	px
-//Frame rate :	30.01	fps
-//Output format :	Raw10
-//H-size :	6000	px
-//H-blank :	1904	px
-//V-size :	5110	line
-//V-blank :	2806	line
-//V-blank(ms) :	18.3	ms
-//First Pixel :	Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0101,
-	0x7808, 0x3F1C,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000, //0
-	0x0348, 0x201F, //8223
-	0x0346, 0x0300, //768
-	0x034A, 0x151F, //5407
-	0x034C, 0x1000, //4096
-	0x034E, 0x0900, //2304
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x13F6, //5110
-	0x0342, 0x1770, //6000
-	0x0136, 0x1800, //24
-	0x013E, 0x0000, //0
-	0x0304, 0x0003, //3
-	0x0306, 0x00E6, //230
-	0x030C, 0x0000, //0
-	0x030E, 0x0003, //3
-	0x0310, 0x00CF, //207
-	0x0312, 0x0000, //0
-	0x031A, 0x0003, //3
-	0x031C, 0x0028, //40
-	0x031E, 0x0002, //2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100, //DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0003,
-	0x0262, 0x0100,
-	0x0264, 0x0006, //PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B, //PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001, //Tail_On
-	0x0722, 0x0400,
-	0x0724, 0x0000, //L/R only
-	0x0728, 0x0000, //0.25
-	0x072A, 0x0000, //0.125
-	0x072C, 0x0000, //0.0625
-	0x072E, 0x0000, //0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0300,
-	0x0228, 0x0200,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000, //QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100, //DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0101,
-	0xFCFC, 0x4000,
-	0x020A, 0x0100,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0000,
-	0x22C4, 0x0000,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0100,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000, //QPDC_Off
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0100,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x0004,
-	0x705A, 0x0004,
-	0x7274, 0x0000,
-	0x7276, 0x0000,
-	0x7278, 0x0000,
-	0x727A, 0x0000,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x0C00,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000, //240124_updated
-	0x2A56, 0x0100,
-	0x2A42, 0x0000,
-	0x2A44, 0x0000,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x1700,
-	0x7A72, 0x2100,
-	0x7A8A, 0x2100,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x0100,
-	0x7EF2, 0x0100,
-	0x7EFE, 0xBA01,
-	0x7F0A, 0xAA01,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0400,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3700,
-	0xD4B0, 0x7C00,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x2000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0040,
-	0xB222, 0xC060,
-	0xB20C, 0x2E2E,
-	0xB21A, 0x0406,
-	0xB378, 0x0100,
-	0xDD70, 0x037E,
-	0xDE38, 0x2E2E,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0x16FC,
-	0xA58E, 0x0000,
-	0xA56E, 0x4000,
-	0xA57C, 0x0100,
-	0xA570, 0x8000,
-	0xA57E, 0x2F00,
-	0xA572, 0xA000,
-	0xA580, 0x2700,
-	0xA574, 0x4001,
-	0xA582, 0x1B00,
-	0xA576, 0x8002,
-	0xA584, 0x2D00,
-	0xA578, 0x0005,
-	0xA586, 0x2700,
-	0xA57A, 0x000A,
-	0xA588, 0x2300,
-	0xA58A, 0x2100,
-	0xA548, 0x0200,
-	0xA568, 0xA2FD,
-	0xA54A, 0x4000,
-	0xA54C, 0x8000,
-	0xA54E, 0xA000,
-	0xA550, 0x4001,
-	0xA552, 0x8002,
-	0xA554, 0x0005,
-	0xA556, 0x000A,
-	0xA558, 0x0E00,
-	0xA55A, 0x2000,
-	0xA55C, 0x2800,
-	0xA55E, 0x1400,
-	0xA560, 0x2200,
-	0xA562, 0x2800,
-	0xA564, 0x2C00,
-	0xA566, 0x2E00,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0000,
-	0x1E16, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5A, 0x0000,
-	0x1E5E, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0C00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0100,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x80E3,
-	0xB268, 0x80E3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0002,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0080,
-	0xDB3E, 0x12D2,
-	0xDADE, 0xDF01,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDBCC, 0x12D2,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0080,
-	0xDBCE, 0x12D2,
-	0xDB6E, 0xDF01,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0300,
-	0xF3F4, 0xFFFF,
-	0xF3F6, 0xFFFF,
-	0xF014, 0x0000,
-	0xB270, 0x8788,
-	0xB266, 0xC005,
-	0xD682, 0xC005,
-	0xBF16, 0x0BAA,
-	0xFCFC, 0x4000,
-	0x8E48, 0x0F00,
-};
-
-/*fullcrop12.5Mp_30FPS_4096x3072_remosaicON*/
-static u16 zhuquec1front_custom5_setting[] = { //Not updated
-//03_WD4_OceanFront_JN5_Full_4096x3072_30fps_3312Msps
-//Mode :	03_WD4_OceanFront_JN5_Full
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_On
-//DBPC	DBPC_On
-//Qmosaic	QMSC_On
-//Tail :	On (L/R only)	2048x384
-//ExtClk :	24	MHz
-//Vt_pix_clk :	920	MHz
-//MIPI_output_speed :	3312	Mbps/lane
-//MIPI_lane :	4	lane
-//Crop_Width :	4128	px
-//Crop_Height :	3104	px
-//Output_Width :	4096	px
-//Output_Height :	3072	px
-//Frame rate :	30.01	fps
-//Output format :	Raw10
-//H-size :	9200	px
-//H-blank :	5104	px
-//V-size :	3332	line
-//V-blank :	260	line
-//V-blank(ms) :	2.6	ms
-//First Pixel :	Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0800, //2048
-	0x0348, 0x181F, //6175
-	0x0346, 0x0600, //1536
-	0x034A, 0x121F, //4639
-	0x034C, 0x1000, //4096
-	0x034E, 0x0C00, //3072
-	0x0350, 0x0010,
-	0x0352, 0x0010,
-	0x0340, 0x0D04, //3332
-	0x0342, 0x23F0, //9200
-	0x0136, 0x1800, //24
-	0x013E, 0x0000, //0
-	0x0304, 0x0003, //3
-	0x0306, 0x00E6, //230
-	0x030C, 0x0000, //0
-	0x030E, 0x0003, //3
-	0x0310, 0x00CF, //207
-	0x0312, 0x0000, //0
-	0x031A, 0x0003, //3
-	0x031C, 0x0028, //40
-	0x031E, 0x0002, //2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100, //DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0600,
-	0xB178, 0x0000,
-	0x7996, 0x0100,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x0011,
-	0x0380, 0x0001,
-	0x0382, 0x0001,
-	0x0384, 0x0001,
-	0x0386, 0x0001,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006, //PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B, //PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0101,
-	0x0720, 0x0001, //Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000, //L/R only
-	0x0728, 0x0000, //0.25
-	0x072A, 0x0000, //0.125
-	0x072C, 0x0000, //0.0625
-	0x072E, 0x0000, //0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0100,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0200, //QMSC_On
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0100,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0200,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0101, //DBPC_On
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0200,
-	0xC53C, 0x0100,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x530D,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0100,
-	0x31FA, 0xCD04,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0200, //QPDC_On
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0120,
-	0xD3EC, 0xB11C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0200,
-	0xFCFC, 0x2000,
-	0xE980, 0x0005,
-	0xC4D8, 0x2000,
-	0x795A, 0x1000,
-	0x7970, 0x1000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0001,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x5F00,
-	0x705A, 0x6000,
-	0x7274, 0x0080,
-	0x7276, 0x0000,
-	0x7278, 0x12D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000, //240124_updated
-	0x2A56, 0x0800,
-	0x2A42, 0x0100,
-	0x2A44, 0xB004,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x1E00,
-	0x7A6E, 0x2800,
-	0x7A86, 0x2800,
-	0x8C9E, 0x5000,
-	0x8CCE, 0x2C01,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0000,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x1600,
-	0xD4A8, 0x0300,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x2000,
-	0xD4DE, 0x0000,
-	0xD4B8, 0x3500,
-	0xD4AC, 0x3B00,
-	0xD4C4, 0x0100,
-	0xD4EC, 0xBE00,
-	0xD4EE, 0xBE00,
-	0xD4F8, 0xF001,
-	0xD4FA, 0xF001,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0001,
-	0x1C28, 0xFF03,
-	0x1C2A, 0x0010,
-	0x1C2C, 0xD70F,
-	0x1C2E, 0x0004,
-	0x1C30, 0x0010,
-	0x1C32, 0xD70F,
-	0x1C34, 0xC20F,
-	0x1C4E, 0x0001,
-	0x1C50, 0xFF03,
-	0x1C52, 0x0010,
-	0x1C54, 0xD70F,
-	0x1C56, 0x0004,
-	0x1C58, 0x0010,
-	0x1C5A, 0xD70F,
-	0x1C5C, 0xC20F,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x0001,
-	0x1C78, 0xFF03,
-	0x1C7A, 0x0010,
-	0x1C7C, 0xD70F,
-	0x1C7E, 0x0004,
-	0x1C80, 0x0010,
-	0x1C82, 0xD70F,
-	0x1C84, 0xC20F,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x0001,
-	0x1CA0, 0xFF03,
-	0x1CA2, 0x0010,
-	0x1CA4, 0xD70F,
-	0x1CA6, 0x0004,
-	0x1CA8, 0x0010,
-	0x1CAA, 0xD70F,
-	0x1CAC, 0xC20F,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0xA2FD,
-	0xA58E, 0xFEFE,
-	0xA56E, 0x4000,
-	0xA57C, 0x1400,
-	0xA570, 0x8000,
-	0xA57E, 0x2400,
-	0xA572, 0x0001,
-	0xA580, 0x2B00,
-	0xA574, 0x0002,
-	0xA582, 0x2E00,
-	0xA576, 0x0002,
-	0xA584, 0x2E00,
-	0xA578, 0x0002,
-	0xA586, 0x2E00,
-	0xA57A, 0x0002,
-	0xA588, 0x2E00,
-	0xA58A, 0x3000,
-	0xA548, 0x0000,
-	0xA568, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0000,
-	0x1E16, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5A, 0x0000,
-	0x1E5E, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3600,
-	0x82A2, 0x1200,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x4004,
-	0xB268, 0x4004,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0000,
-	0xDB3C, 0x0000,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x0000,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC808,
-	0xF3F6, 0xD210,
-	0xF014, 0x0000,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xFCFC, 0x4000,
-	0x8E48, 0x0F00,
-};
-
-/*4sum2bin_30FPS_2048x1152*/
-static u16 zhuquec1front_custom6_setting[] = {
-//Complete	8
-//240715	cus6
-//13_1_OceanFront6_JN5_A2A2_FHD_2048x1152_30fps_3056Msps
-//Mode :	13_1_OceanFront6_JN5_A2A2_FHD
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x288
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//4640	px
-//2048	px
-//1152	px
-//30.01	fps
-//Raw10
-//4784	px
-//2736	px
-//6408	line
-//5256	line
-//27.33	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0300,
-	0x034A, 0x151F,
-	0x034C, 0x0800,
-	0x034E, 0x0480,
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x1908,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00BF,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x00D0,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0xD301,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0600,
-	0xD4A8, 0x0700,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x4000,
-	0xD4B0, 0xB202,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0000,
-	0xDB3C, 0x0000,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x0000,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum2bin_240FPS_2048x1152*/
-static u16 zhuquec1front_custom7_setting[] = { //Not updated
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0300,
-	0x034A, 0x151F,
-	0x034C, 0x0800,
-	0x034E, 0x0480,
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x0516,
-	0x0342, 0x0B80,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00F9,
-	0x0312, 0x0001,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0604,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0xBA10,
-	0xD20C, 0x0908,
-	0xD314, 0x3003,
-	0xD27A, 0x0B00,
-	0xD3F0, 0x811C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0101,
-	0x0720, 0x0000,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0000,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0100,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0000,
-	0x84A4, 0x0000,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0080,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x000C,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0000,
-	0x2A44, 0xE002,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7EC6, 0x1E00,
-	0x7EA2, 0x3200,
-	0xB1E0, 0x0B07,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0300,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x1A00,
-	0xD4E6, 0x0000,
-	0xD4C0, 0x3800,
-	0xD4B4, 0xC200,
-	0xD4CC, 0x0100,
-	0xD5BC, 0xC400,
-	0xD5BE, 0xC400,
-	0xD5C8, 0x5203,
-	0xD5CA, 0x5203,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0005,
-	0x1C28, 0x0050,
-	0x1C2A, 0x3710,
-	0x1C2C, 0x3710,
-	0x1C2E, 0x0000,
-	0x1C30, 0x0000,
-	0x1C32, 0x0000,
-	0x1C34, 0x0000,
-	0x1C4E, 0x0001,
-	0x1C50, 0x7F01,
-	0x1C52, 0xD70F,
-	0x1C54, 0x1510,
-	0x1C56, 0x8001,
-	0x1C58, 0x0002,
-	0x1C5A, 0x1510,
-	0x1C5C, 0xBE0F,
-	0x1C5E, 0x0005,
-	0x1C60, 0x0050,
-	0x1C62, 0x3710,
-	0x1C64, 0x3710,
-	0x1C76, 0x0001,
-	0x1C78, 0x7F01,
-	0x1C7A, 0xD70F,
-	0x1C7C, 0x1510,
-	0x1C7E, 0x8001,
-	0x1C80, 0x0002,
-	0x1C82, 0x1510,
-	0x1C84, 0xBE0F,
-	0x1C86, 0x0005,
-	0x1C88, 0x0050,
-	0x1C8A, 0x3710,
-	0x1C8C, 0x3710,
-	0x1C9E, 0x0005,
-	0x1CA0, 0x0050,
-	0x1CA2, 0x3710,
-	0x1CA4, 0x3710,
-	0x1CA6, 0x0000,
-	0x1CA8, 0x0000,
-	0x1CAA, 0x0000,
-	0x1CAC, 0x0000,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0xA2FD,
-	0xA58E, 0xFEFE,
-	0xA56E, 0x4000,
-	0xA57C, 0x1400,
-	0xA570, 0x8000,
-	0xA57E, 0x2200,
-	0xA572, 0xA000,
-	0xA580, 0x2800,
-	0xA574, 0x4001,
-	0xA582, 0x1400,
-	0xA576, 0x8002,
-	0xA584, 0x2200,
-	0xA578, 0x0005,
-	0xA586, 0x2800,
-	0xA57A, 0x000A,
-	0xA588, 0x2C00,
-	0xA58A, 0x2E00,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0600,
-	0x1E16, 0x0300,
-	0x1E1A, 0x0600,
-	0x1E1E, 0x0300,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0600,
-	0x1E56, 0x0300,
-	0x1E5A, 0x0600,
-	0x1E5E, 0x0300,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x4000,
-	0x8E48, 0x0F00,
-};
-
-/*4sumFHD_30FPS_2048x1152_2expSHDR*/
-static u16 zhuquec1front_custom8_setting[] = { //Not updated
-//12_i_DE_OceanFront_JN5_Fdsum_ovlHDR_2048x1152_30fps_3312Msps
-//Mode :	12_i_DE_OceanFront_JN5_Fdsum_ovlHDR
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x288
-//ExtClk :	24	MHz
-//Vt_pix_clk :	920	MHz
-//MIPI_output_speed :	3312	Mbps/lane
-//MIPI_lane :	4	lane
-//Crop_Width :	8224	px
-//Crop_Height :	4640	px
-//Output_Width :	2048	px
-//Output_Height :	1152	px
-//Frame rate :	30.01	fps
-//Output format :	Raw10
-//H-size :	6000	px
-//H-blank :	3952	px
-//V-size :	5110	line
-//V-blank :	3958	line
-//V-blank(ms) :	25.81	ms
-//First Pixel :	Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0101,
-	0x7808, 0x3F1C,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000, //0
-	0x0348, 0x201F, //8223
-	0x0346, 0x0300, //768
-	0x034A, 0x151F, //5407
-	0x034C, 0x0800, //2048
-	0x034E, 0x0480, //1152
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x13F6, //5110
-	0x0342, 0x1770, //6000
-	0x0136, 0x1800, //24
-	0x013E, 0x0000, //0
-	0x0304, 0x0003, //3
-	0x0306, 0x00E6, //230
-	0x030C, 0x0000, //0
-	0x030E, 0x0003, //3
-	0x0310, 0x00CF, //207
-	0x0312, 0x0000, //0
-	0x031A, 0x0003, //3
-	0x031C, 0x0028, //40
-	0x031E, 0x0002, //2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100, //DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0003,
-	0x0262, 0x0100,
-	0x0264, 0x0006, //PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B, //PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001, //Tail_On
-	0x0722, 0x0400,
-	0x0724, 0x0000, //L/R only
-	0x0728, 0x0000, //0.25
-	0x072A, 0x0000, //0.125
-	0x072C, 0x0000, //0.0625
-	0x072E, 0x0000, //0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0300,
-	0x0228, 0x0200,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000, //QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100, //DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0101,
-	0xFCFC, 0x4000,
-	0x020A, 0x0100,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0000,
-	0x22C4, 0x0000,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0100,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000, //QPDC_Off
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0100,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x0004,
-	0x705A, 0x0004,
-	0x7274, 0x0000,
-	0x7276, 0x0000,
-	0x7278, 0x0000,
-	0x727A, 0x0000,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x000C,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x2C00,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000, //240124_updated
-	0x2A56, 0x0100,
-	0x2A42, 0x0000,
-	0x2A44, 0x0000,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x1700,
-	0x7A72, 0x2100,
-	0x7A8A, 0x2100,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x0100,
-	0x7EF2, 0x0100,
-	0x7EFE, 0xBA01,
-	0x7F0A, 0xAA01,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5000,
-	0x8CD6, 0xBE00,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0400,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3700,
-	0xD4B0, 0x7C00,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x1A00,
-	0xD4E6, 0x0000,
-	0xD4C0, 0x3700,
-	0xD4B4, 0x7C00,
-	0xD4CC, 0x0100,
-	0xD5BC, 0xC400,
-	0xD5BE, 0xC400,
-	0xD5C8, 0x5203,
-	0xD5CA, 0x5203,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x2000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0040,
-	0xB222, 0xC060,
-	0xB20C, 0x2E2E,
-	0xB21A, 0x0406,
-	0xB378, 0x0100,
-	0xDD70, 0x037E,
-	0xDE38, 0x2E2E,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0x16FC,
-	0xA58E, 0x0000,
-	0xA56E, 0x4000,
-	0xA57C, 0x0100,
-	0xA570, 0x8000,
-	0xA57E, 0x2F00,
-	0xA572, 0xA000,
-	0xA580, 0x2700,
-	0xA574, 0x4001,
-	0xA582, 0x1B00,
-	0xA576, 0x8002,
-	0xA584, 0x2D00,
-	0xA578, 0x0005,
-	0xA586, 0x2700,
-	0xA57A, 0x000A,
-	0xA588, 0x2300,
-	0xA58A, 0x2100,
-	0xA548, 0x0200,
-	0xA568, 0xA2FD,
-	0xA54A, 0x4000,
-	0xA54C, 0x8000,
-	0xA54E, 0xA000,
-	0xA550, 0x4001,
-	0xA552, 0x8002,
-	0xA554, 0x0005,
-	0xA556, 0x000A,
-	0xA558, 0x0E00,
-	0xA55A, 0x2000,
-	0xA55C, 0x2800,
-	0xA55E, 0x1400,
-	0xA560, 0x2200,
-	0xA562, 0x2800,
-	0xA564, 0x2C00,
-	0xA566, 0x2E00,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0000,
-	0x1E16, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5A, 0x0000,
-	0x1E5E, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0C00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0100,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x80E3,
-	0xB268, 0x80E3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0002,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0080,
-	0xDB3E, 0x12D2,
-	0xDADE, 0xDF01,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDBCC, 0x12D2,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0080,
-	0xDBCE, 0x12D2,
-	0xDB6E, 0xDF01,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0300,
-	0xF3F4, 0xFFFF,
-	0xF3F6, 0xFFFF,
-	0xF014, 0x0000,
-	0xB270, 0x8788,
-	0xB266, 0xC005,
-	0xD682, 0xC005,
-	0xBF16, 0x0BAA,
-	0xFCFC, 0x4000,
-	0x8E48, 0x0F00,
-};
-
-/*4sum2bin_30FPS_2048x1536*/
-static u16 zhuquec1front_custom9_setting[] = {
-//Complete	6
-//240715	cus9
-//13_1_OceanFront3_JN5_A2A2_FHD_2048x1536_30fps_1672Msps
-//Mode :	13_1_OceanFront3_JN5_A2A2_FHD
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x384
-//24	MHz
-//920	MHz
-//1672	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//2048	px
-//1536	px
-//30.01	fps
-//Raw10
-//4784	px
-//2736	px
-//6408	line
-//4872	line
-//25.33	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0000,
-	0x034A, 0x181F,
-	0x034C, 0x0800,
-	0x034E, 0x0600,
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x1908,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00D1,
-	0x0312, 0x0001,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x00D0,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0000,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0600,
-	0xD4A8, 0x0700,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x4000,
-	0xD4B0, 0xAE01,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0000,
-	0xDB3C, 0x0000,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x0000,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum2bin_15FPS_2048x1536*/
-static u16 zhuquec1front_custom10_setting[] = {
-//Complete	7
-//240715	cus10
-//13_1_OceanFront4_JN5_A2A2_FHD_2048x1536_15fps_1672Msps
-//Mode :	13_1_OceanFront4_JN5_A2A2_FHD
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x384
-//24	MHz
-//920	MHz
-//1672	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//2048	px
-//1536	px
-//15.01	fps
-//Raw10
-//4784	px
-//2736	px
-//12816	line
-//11280	line
-//58.66	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0000,
-	0x034A, 0x181F,
-	0x034C, 0x0800,
-	0x034E, 0x0600,
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x3210,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00D1,
-	0x0312, 0x0001,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x00D0,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0000,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0600,
-	0xD4A8, 0x0700,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x4000,
-	0xD4B0, 0x1202,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0000,
-	0xDB3C, 0x0000,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x0000,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum2bin_15FPS_2048x1152*/
-static u16 zhuquec1front_custom11_setting[] = {
-//Complete	9
-//240715	cus11
-//13_1_OceanFront2_JN5_A2A2_FHD_2048x1152_15fps_1672Msps
-//Mode :	13_1_OceanFront2_JN5_A2A2_FHD
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x384
-//24	MHz
-//920	MHz
-//1672	Mbps/lane
-//4	lane
-//8224	px
-//4640	px
-//2048	px
-//1152	px
-//15	fps
-//Raw10
-//4852	px
-//2804	px
-//12640	line
-//11488	line
-//60.59	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0300,
-	0x034A, 0x151F,
-	0x034C, 0x0800,
-	0x034E, 0x0480,
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x3160,
-	0x0342, 0x12F4,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00D1,
-	0x0312, 0x0001,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x00D0,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0000,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0600,
-	0xD4A8, 0x0700,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x4000,
-	0xD4B0, 0x1202,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0000,
-	0xDB3C, 0x0000,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x0000,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum4k_30FPS_3264x1836*/
-static u16 zhuquec1front_custom12_setting[] = {
-//Complete	10
-//240715	cus12
-//09_OceanFront8_JN5_Fdsum_4K_3264x1836_30.1fps_3056Msps
-//Mode :	09_OceanFront8_JN5_Fdsum_4K
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x576
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//6560	px
-//3704	px
-//3264	px
-//1836	px
-//30.08	fps
-//Raw10
-//4848	px
-//1584	px
-//6309	line
-//4473	line
-//23.57	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0340,
-	0x0348, 0x1CDF,
-	0x0346, 0x04D4,
-	0x034A, 0x134B,
-	0x034C, 0x0CC0,
-	0x034E, 0x072C,
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x18A5,
-	0x0342, 0x12F0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00BF,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x5209,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2200,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0000,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x3600,
-	0xD4BC, 0x6200,
-	0xD4B0, 0x5604,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xFA00,
-	0xD560, 0x5203,
-	0xD562, 0x8803,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0D00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x4000,
-	0xDB0E, 0x0040,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xE001,
-	0xDB10, 0x0000,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x2003,
-	0xDB12, 0x00B0,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x8007,
-	0xDB14, 0x00D0,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x000B,
-	0xDB16, 0x00F0,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0x0804,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum4k_15FPS_3264x1836*/
-static u16 zhuquec1front_custom13_setting[] = {
-//Complete	11
-//240715	cus13
-//09_OceanFront9_JN5_Fdsum_4K_3264x1836_15fps_3056Msps
-//Mode :	09_OceanFront9_JN5_Fdsum_4K
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x576
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//6560	px
-//3704	px
-//3264	px
-//1836	px
-//15.01	fps
-//Raw10
-//4848	px
-//1584	px
-//12640	line
-//10804	line
-//56.93	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0340,
-	0x0348, 0x1CDF,
-	0x0346, 0x04D4,
-	0x034A, 0x134B,
-	0x034C, 0x0CC0,
-	0x034E, 0x072C,
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x3160,
-	0x0342, 0x12F0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00BF,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x5209,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2200,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0000,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x3600,
-	0xD4BC, 0x6200,
-	0xD4B0, 0x8200,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xFA00,
-	0xD560, 0x5203,
-	0xD562, 0x8803,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0D00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x4000,
-	0xDB0E, 0x0040,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xE001,
-	0xDB10, 0x0000,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x2003,
-	0xDB12, 0x00B0,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x8007,
-	0xDB14, 0x00D0,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x000B,
-	0xDB16, 0x00F0,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0x0804,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum12.5M_30FPS_4096x3072_2expSHDR*/
-static u16 zhuquec1front_custom14_setting[] = { //Not updated
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0000,
-	0x034A, 0x181F,
-	0x034C, 0x1000,
-	0x034E, 0x0C00,
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x1908,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00CF,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0003,
-	0x0262, 0x0100,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0400,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0300,
-	0x0228, 0x0200,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0000,
-	0xF3E4, 0x0300,
-	0xF288, 0x0100,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0D07,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0101,
-	0xFCFC, 0x4000,
-	0x020A, 0x0100,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0000,
-	0x22C4, 0x0000,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0100,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0101,
-	0x1966, 0x0200,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0000,
-	0x84A4, 0x0100,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0100,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x0004,
-	0x705A, 0x0004,
-	0x7274, 0x0000,
-	0x7276, 0x0000,
-	0x7278, 0x0000,
-	0x727A, 0x0000,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x943E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x8C02,
-	0xBEE6, 0x8C02,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3F07,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0078,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x1700,
-	0x7A72, 0x2100,
-	0x7A8A, 0x2100,
-	0x8CA2, 0x4600,
-	0x8CD2, 0x9600,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7EC6, 0x0900,
-	0x7EA2, 0x0900,
-	0xB1E0, 0x0707,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3700,
-	0xD4B0, 0x3B00,
-	0xD4C8, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x2000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0005,
-	0x1C28, 0x0050,
-	0x1C2A, 0x3710,
-	0x1C2C, 0x3710,
-	0x1C2E, 0x0000,
-	0x1C30, 0x0000,
-	0x1C32, 0x0000,
-	0x1C34, 0x0000,
-	0x1C4E, 0x0001,
-	0x1C50, 0x7F01,
-	0x1C52, 0xD70F,
-	0x1C54, 0x1510,
-	0x1C56, 0x8001,
-	0x1C58, 0x0002,
-	0x1C5A, 0x1510,
-	0x1C5C, 0xBE0F,
-	0x1C5E, 0x0005,
-	0x1C60, 0x0050,
-	0x1C62, 0x3710,
-	0x1C64, 0x3710,
-	0x1C76, 0x0001,
-	0x1C78, 0x7F01,
-	0x1C7A, 0xD70F,
-	0x1C7C, 0x1510,
-	0x1C7E, 0x8001,
-	0x1C80, 0x0002,
-	0x1C82, 0x1510,
-	0x1C84, 0xBE0F,
-	0x1C86, 0x0005,
-	0x1C88, 0x0050,
-	0x1C8A, 0x3710,
-	0x1C8C, 0x3710,
-	0x1C9E, 0x0005,
-	0x1CA0, 0x0050,
-	0x1CA2, 0x3710,
-	0x1CA4, 0x3710,
-	0x1CA6, 0x0000,
-	0x1CA8, 0x0000,
-	0x1CAA, 0x0000,
-	0x1CAC, 0x0000,
-	0x1CC6, 0x0005,
-	0x1CC8, 0x0050,
-	0x1CCA, 0x3710,
-	0x1CCC, 0x3710,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0001,
-	0x1CF0, 0x7F01,
-	0x1CF2, 0xD70F,
-	0x1CF4, 0x1510,
-	0x1CF6, 0x8001,
-	0x1CF8, 0x0002,
-	0x1CFA, 0x1510,
-	0x1CFC, 0xBE0F,
-	0x1CFE, 0x0005,
-	0x1D00, 0x0050,
-	0x1D02, 0x3710,
-	0x1D04, 0x3710,
-	0x1D16, 0x0001,
-	0x1D18, 0x7F01,
-	0x1D1A, 0xD70F,
-	0x1D1C, 0x1510,
-	0x1D1E, 0x8001,
-	0x1D20, 0x0002,
-	0x1D22, 0x1510,
-	0x1D24, 0xBE0F,
-	0x1D26, 0x0005,
-	0x1D28, 0x0050,
-	0x1D2A, 0x3710,
-	0x1D2C, 0x3710,
-	0x1D3E, 0x0005,
-	0x1D40, 0x0050,
-	0x1D42, 0x3710,
-	0x1D44, 0x3710,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0040,
-	0xB222, 0xC060,
-	0xB20C, 0x2E2E,
-	0xB21A, 0x0400,
-	0xB378, 0x0100,
-	0xDD70, 0x037E,
-	0xDE38, 0x2E2E,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0xA2FD,
-	0xA58E, 0xFEFE,
-	0xA56E, 0x4000,
-	0xA57C, 0x0E00,
-	0xA570, 0x8000,
-	0xA57E, 0x2000,
-	0xA572, 0xA000,
-	0xA580, 0x2800,
-	0xA574, 0x4001,
-	0xA582, 0x1400,
-	0xA576, 0x8002,
-	0xA584, 0x2200,
-	0xA578, 0x0005,
-	0xA586, 0x2800,
-	0xA57A, 0x000A,
-	0xA588, 0x2C00,
-	0xA58A, 0x2E00,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0000,
-	0x1E16, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5A, 0x0000,
-	0x1E5E, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x200C,
-	0x4280, 0x1000,
-	0x4362, 0x0000,
-	0x43AA, 0x80FF,
-	0x43AC, 0x0000,
-	0x43C6, 0xFFFF,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0000,
-	0xB324, 0x0000,
-	0xB330, 0x0000,
-	0xB34A, 0x0000,
-	0xB360, 0x0000,
-	0xFCFC, 0x2001,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0000,
-	0xFCFC, 0x4000,
-	0x8E48, 0x0F00,
-};
-
-/*fullcrop12.5Mp_30FPS_4096x3072_remosaic0ff*/
-static u16 zhuquec1front_custom15_setting[] = { //Not updated
-//03_WD4_OceanFront_JN5_Full_4096x3072_30fps_3312Msps
-//Mode :	03_WD4_OceanFront_JN5_Full
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_On
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x384
-//ExtClk :	24	MHz
-//Vt_pix_clk :	920	MHz
-//MIPI_output_speed :	3312	Mbps/lane
-//MIPI_lane :	4	lane
-//Crop_Width :	4128	px
-//Crop_Height :	3104	px
-//Output_Width :	4096	px
-//Output_Height :	3072	px
-//Frame rate :	30.01	fps
-//Output format :	Raw10
-//H-size :	9200	px
-//H-blank :	5104	px
-//V-size :	3332	line
-//V-blank :	260	line
-//V-blank(ms) :	2.6	ms
-//First Pixel :	Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0800, //2048
-	0x0348, 0x181F, //6175
-	0x0346, 0x0600, //1536
-	0x034A, 0x121F, //4639
-	0x034C, 0x1000, //4096
-	0x034E, 0x0C00, //3072
-	0x0350, 0x0010,
-	0x0352, 0x0010,
-	0x0340, 0x0D04, //3332
-	0x0342, 0x23F0, //9200
-	0x0136, 0x1800, //24
-	0x013E, 0x0000, //0
-	0x0304, 0x0003, //3
-	0x0306, 0x00E6, //230
-	0x030C, 0x0000, //0
-	0x030E, 0x0003, //3
-	0x0310, 0x00CF, //207
-	0x0312, 0x0000, //0
-	0x031A, 0x0003, //3
-	0x031C, 0x0028, //40
-	0x031E, 0x0002, //2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100, //DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0600,
-	0xB178, 0x0000,
-	0x7996, 0x0100,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x0011,
-	0x0380, 0x0001,
-	0x0382, 0x0001,
-	0x0384, 0x0001,
-	0x0386, 0x0001,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006, //PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B, //PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0101,
-	0x0720, 0x0001, //Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000, //L/R only
-	0x0728, 0x0000, //0.25
-	0x072A, 0x0000, //0.125
-	0x072C, 0x0000, //0.0625
-	0x072E, 0x0000, //0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0100,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000, //QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0100,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0200,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100, //DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0200,
-	0xC53C, 0x0100,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x530D,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0100,
-	0x31FA, 0xCD04,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0200, //QPDC_On
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0120,
-	0xD3EC, 0xB11C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0200,
-	0xFCFC, 0x2000,
-	0xE980, 0x0005,
-	0xC4D8, 0x2000,
-	0x795A, 0x1000,
-	0x7970, 0x1000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0001,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x5F00,
-	0x705A, 0x6000,
-	0x7274, 0x0080,
-	0x7276, 0x0000,
-	0x7278, 0x12D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000, //240124_updated
-	0x2A56, 0x0800,
-	0x2A42, 0x0100,
-	0x2A44, 0xB004,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x1E00,
-	0x7A6E, 0x2800,
-	0x7A86, 0x2800,
-	0x8C9E, 0x5000,
-	0x8CCE, 0x2C01,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0000,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x1600,
-	0xD4A8, 0x0300,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x2000,
-	0xD4DE, 0x0000,
-	0xD4B8, 0x3500,
-	0xD4AC, 0x3B00,
-	0xD4C4, 0x0100,
-	0xD4EC, 0xBE00,
-	0xD4EE, 0xBE00,
-	0xD4F8, 0xF001,
-	0xD4FA, 0xF001,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0001,
-	0x1C28, 0xFF03,
-	0x1C2A, 0x0010,
-	0x1C2C, 0xD70F,
-	0x1C2E, 0x0004,
-	0x1C30, 0x0010,
-	0x1C32, 0xD70F,
-	0x1C34, 0xC20F,
-	0x1C4E, 0x0001,
-	0x1C50, 0xFF03,
-	0x1C52, 0x0010,
-	0x1C54, 0xD70F,
-	0x1C56, 0x0004,
-	0x1C58, 0x0010,
-	0x1C5A, 0xD70F,
-	0x1C5C, 0xC20F,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x0001,
-	0x1C78, 0xFF03,
-	0x1C7A, 0x0010,
-	0x1C7C, 0xD70F,
-	0x1C7E, 0x0004,
-	0x1C80, 0x0010,
-	0x1C82, 0xD70F,
-	0x1C84, 0xC20F,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x0001,
-	0x1CA0, 0xFF03,
-	0x1CA2, 0x0010,
-	0x1CA4, 0xD70F,
-	0x1CA6, 0x0004,
-	0x1CA8, 0x0010,
-	0x1CAA, 0xD70F,
-	0x1CAC, 0xC20F,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0xA2FD,
-	0xA58E, 0xFEFE,
-	0xA56E, 0x4000,
-	0xA57C, 0x1400,
-	0xA570, 0x8000,
-	0xA57E, 0x2400,
-	0xA572, 0x0001,
-	0xA580, 0x2B00,
-	0xA574, 0x0002,
-	0xA582, 0x2E00,
-	0xA576, 0x0002,
-	0xA584, 0x2E00,
-	0xA578, 0x0002,
-	0xA586, 0x2E00,
-	0xA57A, 0x0002,
-	0xA588, 0x2E00,
-	0xA58A, 0x3000,
-	0xA548, 0x0000,
-	0xA568, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0000,
-	0x1E16, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5A, 0x0000,
-	0x1E5E, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3600,
-	0x82A2, 0x1200,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x4004,
-	0xB268, 0x4004,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0000,
-	0xDB3C, 0x0000,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x0000,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC808,
-	0xF3F6, 0xD210,
-	0xF014, 0x0000,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xFCFC, 0x4000,
-	0x8E48, 0x0F00,
-};
-
-/*4sum2bin_30FPS_680x512*/
-static u16 zhuquec1front_custom16_setting[] = {
-//Complete	13
-//240715	cus16
-//21_0_OceanFront_JN5_A2A2_AON_680x512_30fps_780Msps
-//Mode :	21_0_OceanFront_JN5_A2A2_AON
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	Off	342x64
-//MCLK	24	MHz
-//920	MHz
-//MIPI	780	Mbps/lane
-//4	lane
-//8208	px
-//6144	px
-//size	680	px
-//512	px
-//30.01	fps
-//Raw10
-//Linelength	2944	px
-//2264	px
-//Framlength	10412	line
-//9900	line
-//31.68	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0000,
-	0x7808, 0x0000,
-	0xFCFC, 0x4000,
-	0x0344, 0x0008,
-	0x0348, 0x2017,
-	0x0346, 0x0010,
-	0x034A, 0x180F,
-	0x034C, 0x02A8,
-	0x034E, 0x0200,
-	0x0350, 0x0002,
-	0x0352, 0x0000,
-	0x0340, 0x28AC,
-	0x0342, 0x0B80,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00C3,
-	0x0312, 0x0002,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0604,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x33CC,
-	0x0380, 0x0002,
-	0x0382, 0x0016,
-	0x0384, 0x0002,
-	0x0386, 0x0016,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0100,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0100,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0106,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x2B2B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0100,
-	0x0720, 0x0000,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0000,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0101,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0000,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0001,
-	0x0B08, 0x0000,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0000,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0001,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0100,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0402,
-	0xBF30, 0x0700,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0100,
-	0x3C46, 0x0000,
-	0x3C52, 0x321B,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0001,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0xDF01,
-	0x705A, 0xE001,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x807E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0100,
-	0x2A42, 0x0000,
-	0x2A44, 0x0000,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x0000,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0300,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x1A00,
-	0xD4E6, 0x0000,
-	0xD4C0, 0x3800,
-	0xD4B4, 0x8E01,
-	0xD4CC, 0x0100,
-	0xD5BC, 0xC400,
-	0xD5BE, 0xC400,
-	0xD5C8, 0x5203,
-	0xD5CA, 0x5203,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0000,
-	0x1C26, 0x0000,
-	0x1C28, 0x0000,
-	0x1C2A, 0x0000,
-	0x1C2C, 0x0000,
-	0x1C2E, 0x0000,
-	0x1C30, 0x0000,
-	0x1C32, 0x0000,
-	0x1C34, 0x0000,
-	0x1C4E, 0x0000,
-	0x1C50, 0x0000,
-	0x1C52, 0x0000,
-	0x1C54, 0x0000,
-	0x1C56, 0x0000,
-	0x1C58, 0x0000,
-	0x1C5A, 0x0000,
-	0x1C5C, 0x0000,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x0000,
-	0x1C78, 0x0000,
-	0x1C7A, 0x0000,
-	0x1C7C, 0x0000,
-	0x1C7E, 0x0000,
-	0x1C80, 0x0000,
-	0x1C82, 0x0000,
-	0x1C84, 0x0000,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x0000,
-	0x1CA0, 0x0000,
-	0x1CA2, 0x0000,
-	0x1CA4, 0x0000,
-	0x1CA6, 0x0000,
-	0x1CA8, 0x0000,
-	0x1CAA, 0x0000,
-	0x1CAC, 0x0000,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x1400,
-	0xA578, 0x8000,
-	0xA58A, 0x2200,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0xE001,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0x0005,
-	0xDB10, 0x00A0,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0204,
-	0xF3E4, 0x0000,
-	0xF3F4, 0xFFFF,
-	0xF3F6, 0xFFFF,
-	0xF014, 0x0600,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x6AAA,
-	0xDC8C, 0x3F2B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-/*4sum4k_30FPS_3264x2448*/
-static u16 zhuquec1front_custom17_setting[] = {
-//Complete	12
-//240715	cus17
-//09_OceanFront10_JN5_Fdsum_4K_3264x2448_30.1fps_3056Msps
-//Mode :	09_OceanFront10_JN5_Fdsum_4K
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x576
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//6560	px
-//4928	px
-//3264	px
-//2448	px
-//30.06	fps
-//Raw10
-//4848	px
-//1584	px
-//6312	line
-//3864	line
-//20.36	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0340,
-	0x0348, 0x1CDF,
-	0x0346, 0x0270,
-	0x034A, 0x15AF,
-	0x034C, 0x0CC0,
-	0x034E, 0x0990,
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x18A8,
-	0x0342, 0x12F0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00BF,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x5209,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2200,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0000,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x3600,
-	0xD4BC, 0x6200,
-	0xD4B0, 0xBE00,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xFA00,
-	0xD560, 0x5203,
-	0xD562, 0x8803,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5E, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1DFA, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E32, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1E52, 0x0000,
-	0x1E5A, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3E, 0x0000,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0D00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x4000,
-	0xDB0E, 0x0040,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xE001,
-	0xDB10, 0x0000,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x2003,
-	0xDB12, 0x00B0,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x8007,
-	0xDB14, 0x00D0,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x000B,
-	0xDB16, 0x00F0,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0x0804,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-};
-
-static u16 zhuquec1front_custom18_setting[] = {
-//Complete	14
-//240913
-//05_OceanFront3_JN5_Fdsum_12.5Mp_4096x2048_30fps_3056Msps
-//Mode :	05_OceanFront3_JN5_Fdsum_12.5Mp
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x512
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//4128	px
-//4096	px
-//2048	px
-//30.01	fps
-//Raw10
-//4784	px
-//688	px
-//6408	line
-//4360	line
-//22.67	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC,	0x4000,
-	0x0B30, 0x01FF,
-	0x6170,	0xFFFF,
-	0x6180,	0x0000,
-	0x6190,	0x0000,
-	0x6200,	0xFFFF,
-	0x6202,	0xFFFF,
-	0x6204,	0x0000,
-	0x6206,	0x0000,
-	0x6208,	0x0000,
-	0xA100,	0xFFFF,
-	0xA102,	0x0000,
-	0xA104,	0x0000,
-	0xFCFC,	0x4001,
-	0x0100,	0xFFFF,
-	0x0102,	0xFFFF,
-	0x0104,	0x0000,
-	0x0106,	0x0000,
-	0x0108,	0x0000,
-	0xFCFC,	0x4000,
-	0x8100,	0xFFFF,
-	0x8104,	0x0000,
-	0x8108,	0x0000,
-	0xFCFC,	0x2000,
-	0x7806,	0x0001,
-	0x7808,	0x2408,
-	0xFCFC,	0x4000,
-	0x0344,	0x0000,
-	0x0348,	0x201F,
-	0x0346,	0x0400,
-	0x034A,	0x141F,
-	0x034C,	0x1000,
-	0x034E,	0x0800,
-	0x0350,	0x0008,
-	0x0352,	0x0008,
-	0x0340,	0x1908,
-	0x0342,	0x12B0,
-	0x0136,	0x1800,
-	0x013E,	0x0000,
-	0x0304,	0x0003,
-	0x0306,	0x00E6,
-	0x030C,	0x0000,
-	0x030E,	0x0003,
-	0x0310,	0x00BF,
-	0x0312,	0x0000,
-	0x031A,	0x0003,
-	0x031C,	0x0028,
-	0x031E,	0x0002,
-	0x0202,	0x0014,
-	0x0226,	0x0014,
-	0x022C,	0x0014,
-	0x0702,	0x0000,
-	0x0704,	0x0000,
-	0x0114,	0x0301,
-	0x0118,	0x0004,
-	0x011A,	0x0001,
-	0x011C,	0x0100,
-	0xFCFC,	0x2000,
-	0xB176,	0x0602,
-	0xB178,	0x0000,
-	0x7996,	0x0101,
-	0x7994,	0x2020,
-	0xFCFC,	0x4000,
-	0x0900,	0x2222,
-	0x0380,	0x0002,
-	0x0382,	0x0002,
-	0x0384,	0x0002,
-	0x0386,	0x0002,
-	0x040C,	0x0000,
-	0x0400,	0x1010,
-	0x0408,	0x0100,
-	0x040A,	0x0100,
-	0xFCFC,	0x2000,
-	0xD1F6,	0x3A00,
-	0xD20C,	0x0908,
-	0xD314,	0x2002,
-	0xD27A,	0x0500,
-	0xD3F0,	0xB01C,
-	0xD410,	0x4802,
-	0xD426,	0xD204,
-	0xD43C,	0x0140,
-	0xD412,	0xD204,
-	0xD428,	0xEA0A,
-	0xD43E,	0x0140,
-	0xFCFC,	0x4000,
-	0x0260,	0x0001,
-	0x0262,	0x0000,
-	0x0264,	0x0006,
-	0x0266,	0x0700,
-	0x0112,	0x0A0A,
-	0x0270,	0x2B2B,
-	0x0272,	0x2B10,
-	0x0274,	0x302B,
-	0xFCFC,	0x2001,
-	0x44C6,	0x0000,
-	0xFCFC,	0x4000,
-	0x0B02,	0x0102,
-	0x0720,	0x0001,
-	0x0722,	0x0800,
-	0x0724,	0x0000,
-	0x0728,	0x0000,
-	0x072A,	0x0000,
-	0x072C,	0x0000,
-	0x072E,	0x0000,
-	0xFCFC,	0x2001,
-	0x3132,	0x0200,
-	0xFCFC,	0x4000,
-	0x021E,	0x0000,
-	0x0228,	0x0100,
-	0xFCFC,	0x2001,
-	0x31D0,	0x0000,
-	0x5A70,	0x0000,
-	0xFCFC,	0x2000,
-	0xDC94,	0x0103,
-	0xEF80,	0x0000,
-	0x23F0,	0x0001,
-	0xF3E4,	0x0300,
-	0xF288,	0x0000,
-	0xFCFC,	0x2001,
-	0x2A30,	0x01FF,
-	0x4270,	0x0000,
-	0x29BA,	0x2000,
-	0x29A8,	0x0100,
-	0xFCFC,	0x4000,
-	0x0B04,	0x0001,
-	0x0B06,	0x0101,
-	0x0B08,	0x0100,
-	0x0B0A,	0x0101,
-	0x0B0C,	0x0100,
-	0xFCFC,	0x2000,
-	0xC4E0,	0x0100,
-	0xC4F6,	0x0000,
-	0xC4E2,	0x0000,
-	0xC53C,	0x0500,
-	0xC544,	0x0005,
-	0xC53E,	0x0000,
-	0xB23C,	0x6060,
-	0xB242,	0x6060,
-	0xC554,	0x0010,
-	0xC556,	0x0000,
-	0xFCFC,	0x2001,
-	0x2920,	0x0100,
-	0x31F8,	0x0000,
-	0x31FA,	0x0000,
-	0xFCFC,	0x2000,
-	0xD856,	0x0507,
-	0xD6D4,	0x0000,
-	0x799A,	0x0000,
-	0xD8A2,	0x0100,
-	0xFCFC,	0x4000,
-	0x020A,	0x0000,
-	0xFCFC,	0x2000,
-	0x78C0,	0x0101,
-	0x22C2,	0x0600,
-	0x22C4,	0xFF1F,
-	0x22EC,	0x1F00,
-	0x2306,	0xFF3F,
-	0x2314,	0xFF00,
-	0x2354,	0x0300,
-	0xFCFC,	0x4000,
-	0x0936,	0x0000,
-	0x0C40,	0x0000,
-	0xFCFC,	0x2000,
-	0x68DE,	0x0000,
-	0xFCFC,	0x2001,
-	0x2540,	0x0000,
-	0xFCFC,	0x2000,
-	0xD718,	0x0002,
-	0xBF30,	0x0000,
-	0xFCFC,	0x2001,
-	0x3C42,	0x0000,
-	0x3C46,	0xEB05,
-	0x3C52,	0x4006,
-	0xFCFC,	0x2000,
-	0xD326,	0x0110,
-	0xD3EC,	0xB01C,
-	0xFCFC,	0x2001,
-	0x195E,	0x0100,
-	0x1966,	0x0000,
-	0xFCFC,	0x4000,
-	0x0086,	0x1400,
-	0xFCFC,	0x2000,
-	0xE980,	0x9E04,
-	0xC4D8,	0x2000,
-	0x795A,	0x2000,
-	0x7970,	0x2000,
-	0xFCFC,	0x2002,
-	0x849E,	0x0000,
-	0x84A0,	0x0000,
-	0x84A2,	0x0005,
-	0xFCFC,	0x2001,
-	0x2BB2,	0x1000,
-	0x2D32,	0x0010,
-	0xFCFC,	0x2000,
-	0x703C,	0x0101,
-	0x7046,	0x7F02,
-	0x7058,	0x8002,
-	0x71D4,	0x3F00,
-	0x71D6,	0x3D00,
-	0x71D8,	0x84F3,
-	0x71DA,	0x0040,
-	0x7048,	0x1F02,
-	0x705A,	0x2002,
-	0x7274,	0x0C00,
-	0x7276,	0x0B00,
-	0x7278,	0x36D2,
-	0x727A,	0x0040,
-	0x727C,	0x0000,
-	0x727E,	0x0000,
-	0x7280,	0x0000,
-	0x7282,	0x0000,
-	0x703E,	0x0100,
-	0x704A,	0x000A,
-	0x705C,	0x010A,
-	0x7314,	0x2E00,
-	0x7316,	0x3000,
-	0x7318,	0x9EFD,
-	0x731A,	0x0040,
-	0xBEDC,	0xC526,
-	0xBEDE,	0x903E,
-	0xBEE0,	0xC00F,
-	0xBEE2,	0x0008,
-	0xBEE4,	0x0C00,
-	0xBEE6,	0x8000,
-	0xFCFC,	0x2001,
-	0x2A54,	0x0000,
-	0x2A56,	0x0400,
-	0x2A42,	0x0100,
-	0x2A44,	0x3907,
-	0x2A46,	0x0000,
-	0xFCFC,	0x2000,
-	0xD704,	0x0278,
-	0x7A0E,	0x0F00,
-	0x7A6E,	0x1900,
-	0x7A86,	0x1900,
-	0x8C9E,	0x3500,
-	0x8CCE,	0x9600,
-	0x7A10,	0x0F00,
-	0x7A70,	0x1900,
-	0x7A88,	0x1900,
-	0x8CA0,	0x3500,
-	0x8CD0,	0x9600,
-	0xB224,	0x0103,
-	0xB226,	0x0000,
-	0xB220,	0x0103,
-	0x7A12,	0x0F00,
-	0x7A72,	0x1900,
-	0x7A8A,	0x1900,
-	0x8CA2,	0x5000,
-	0x8CD2,	0xBE00,
-	0x7EE6,	0x2C00,
-	0x7EF2,	0x2C00,
-	0x7EFE,	0x6400,
-	0x7F0A,	0x5800,
-	0x8D0E,	0x0000,
-	0x9032,	0x0000,
-	0x903E,	0x0000,
-	0x7A14,	0x0F00,
-	0x7A74,	0x1900,
-	0x7A8C,	0x1900,
-	0x8CA4,	0x3500,
-	0x7F0E,	0x5800,
-	0x8CD6,	0x9600,
-	0x7BDA,	0x4C00,
-	0xD49C,	0x0300,
-	0xD4D0,	0x2600,
-	0xD4A8,	0x0100,
-	0xD4D6,	0x1A00,
-	0xD4E2,	0x2800,
-	0xD4BC,	0x4700,
-	0xD4B0,	0xBE03,
-	0xD4C8,	0x0100,
-	0xD624,	0x0000,
-	0xD62E,	0x0000,
-	0xD638,	0x0000,
-	0xD4EA,	0x0100,
-	0xD554,	0xC400,
-	0xD556,	0xEC00,
-	0xD560,	0x5203,
-	0xD562,	0x7A03,
-	0xD4DA,	0x0000,
-	0xD4E6,	0x0100,
-	0xD4C0,	0x1400,
-	0xD4B4,	0x0100,
-	0xD4CC,	0x0000,
-	0xD5BC,	0x0000,
-	0xD5BE,	0x0000,
-	0xD5C8,	0x0000,
-	0xD5CA,	0x0000,
-	0xD4D2,	0x0000,
-	0xD4DE,	0x0100,
-	0xD4B8,	0x1400,
-	0xD4AC,	0x0100,
-	0xD4C4,	0x0000,
-	0xD4EC,	0x0000,
-	0xD4EE,	0x0000,
-	0xD4F8,	0x0000,
-	0xD4FA,	0x0000,
-	0xBF78,	0x5333,
-	0xD896,	0x0000,
-	0xFCFC,	0x2001,
-	0x1C24,	0x0002,
-	0x1C26,	0x8001,
-	0x1C28,	0x8004,
-	0x1C2A,	0x2010,
-	0x1C2C,	0x2010,
-	0x1C2E,	0x0005,
-	0x1C30,	0x00A0,
-	0x1C32,	0x2810,
-	0x1C34,	0x2810,
-	0x1C4E,	0x8001,
-	0x1C50,	0x8004,
-	0x1C52,	0x0010,
-	0x1C54,	0x0010,
-	0x1C56,	0x0005,
-	0x1C58,	0x00A0,
-	0x1C5A,	0x2810,
-	0x1C5C,	0x2810,
-	0x1C5E,	0x0000,
-	0x1C60,	0x0000,
-	0x1C62,	0x0000,
-	0x1C64,	0x0000,
-	0x1C66,	0x0000,
-	0x1C68,	0x0000,
-	0x1C6A,	0x0000,
-	0x1C6C,	0x0000,
-	0x1C76,	0x8001,
-	0x1C78,	0x8004,
-	0x1C7A,	0x2010,
-	0x1C7C,	0x2010,
-	0x1C7E,	0x0005,
-	0x1C80,	0x00A0,
-	0x1C82,	0x2810,
-	0x1C84,	0x2810,
-	0x1C86,	0x0000,
-	0x1C88,	0x0000,
-	0x1C8A,	0x0000,
-	0x1C8C,	0x0000,
-	0x1C8E,	0x0000,
-	0x1C90,	0x0000,
-	0x1C92,	0x0000,
-	0x1C94,	0x0000,
-	0x1C9E,	0x8001,
-	0x1CA0,	0x8004,
-	0x1CA2,	0x2010,
-	0x1CA4,	0x2010,
-	0x1CA6,	0x0005,
-	0x1CA8,	0x00A0,
-	0x1CAA,	0x2810,
-	0x1CAC,	0x2810,
-	0x1CC6,	0x8001,
-	0x1CC8,	0x8004,
-	0x1CCA,	0x2010,
-	0x1CCC,	0x2010,
-	0x1CCE,	0x0005,
-	0x1CD0,	0x00A0,
-	0x1CD2,	0x2810,
-	0x1CD4,	0x2810,
-	0x1CEE,	0x8001,
-	0x1CF0,	0x8004,
-	0x1CF2,	0x0010,
-	0x1CF4,	0x0010,
-	0x1CF6,	0x0005,
-	0x1CF8,	0x00A0,
-	0x1CFA,	0x2810,
-	0x1CFC,	0x2810,
-	0x1CFE,	0x0000,
-	0x1D00,	0x0000,
-	0x1D02,	0x0000,
-	0x1D04,	0x0000,
-	0x1D06,	0x0000,
-	0x1D08,	0x0000,
-	0x1D0A,	0x0000,
-	0x1D0C,	0x0000,
-	0x1D16,	0x8001,
-	0x1D18,	0x8004,
-	0x1D1A,	0x2010,
-	0x1D1C,	0x2010,
-	0x1D1E,	0x0005,
-	0x1D20,	0x00A0,
-	0x1D22,	0x2810,
-	0x1D24,	0x2810,
-	0x1D26,	0x0000,
-	0x1D28,	0x0000,
-	0x1D2A,	0x0000,
-	0x1D2C,	0x0000,
-	0x1D2E,	0x0000,
-	0x1D30,	0x0000,
-	0x1D32,	0x0000,
-	0x1D34,	0x0000,
-	0x1D3E,	0x8001,
-	0x1D40,	0x8004,
-	0x1D42,	0x2010,
-	0x1D44,	0x2010,
-	0x1D46,	0x0005,
-	0x1D48,	0x00A0,
-	0x1D4A,	0x2810,
-	0x1D4C,	0x2810,
-	0xFCFC,	0x2000,
-	0xB21E,	0x0000,
-	0xB222,	0xC000,
-	0xB20C,	0x2E00,
-	0xB21A,	0x0402,
-	0xB378,	0x0100,
-	0xDD70,	0x0000,
-	0xDE38,	0x0000,
-	0xFCFC,	0x2002,
-	0xA574,	0x0100,
-	0xA59C,	0xA2FD,
-	0xA59E,	0xFEFE,
-	0xA576,	0x4000,
-	0xA588,	0x0E00,
-	0xA578,	0x8000,
-	0xA58A,	0x2000,
-	0xA57A,	0xA000,
-	0xA58C,	0x2800,
-	0xA57C,	0x4001,
-	0xA58E,	0x1400,
-	0xA57E,	0x8002,
-	0xA590,	0x2200,
-	0xA580,	0x0005,
-	0xA592,	0x2800,
-	0xA582,	0x000A,
-	0xA594,	0x2C00,
-	0xA584,	0xA00F,
-	0xA596,	0x2E00,
-	0xA586,	0x4011,
-	0xA598,	0x3200,
-	0xA59A,	0x3800,
-	0xA548,	0x0000,
-	0xA570,	0x0000,
-	0xA54A,	0x0000,
-	0xA54C,	0x0000,
-	0xA54E,	0x0000,
-	0xA550,	0x0000,
-	0xA552,	0x0000,
-	0xA554,	0x0000,
-	0xA556,	0x0000,
-	0xA55C,	0x0000,
-	0xA55E,	0x0000,
-	0xA560,	0x0000,
-	0xA562,	0x0000,
-	0xA564,	0x0000,
-	0xA566,	0x0000,
-	0xA568,	0x0000,
-	0xA56A,	0x0000,
-	0xFCFC,	0x2001,
-	0x1E16,	0x0700,
-	0x1E18,	0x0700,
-	0x1E26,	0x0700,
-	0x1E28,	0x0700,
-	0x1DF2,	0x0A00,
-	0x1DF4,	0x0A00,
-	0x1E02,	0x0A00,
-	0x1E04,	0x0A00,
-	0x1E12,	0x0800,
-	0x1E14,	0x0800,
-	0x1E22,	0x0800,
-	0x1E24,	0x0800,
-	0x1DF6,	0x0900,
-	0x1DF8,	0x0900,
-	0x1E06,	0x0900,
-	0x1E08,	0x0900,
-	0x1D96,	0x0000,
-	0x1D98,	0x0000,
-	0x1DA6,	0x0000,
-	0x1DA8,	0x0000,
-	0x1D72,	0x0000,
-	0x1D74,	0x0000,
-	0x1D82,	0x0000,
-	0x1D84,	0x0000,
-	0x1D92,	0x0000,
-	0x1D94,	0x0000,
-	0x1DA2,	0x0000,
-	0x1DA4,	0x0000,
-	0x1D76,	0x0000,
-	0x1D78,	0x0000,
-	0x1D86,	0x0000,
-	0x1D88,	0x0000,
-	0xFCFC,	0x2000,
-	0x82BA,	0x3300,
-	0x82A2,	0x1400,
-	0xFCFC,	0x2001,
-	0x427C,	0x2000,
-	0x4280,	0x1000,
-	0x4362,	0x0100,
-	0x43AA,	0x0000,
-	0x43AC,	0x0000,
-	0x43C6,	0x010A,
-	0x43B4,	0x0000,
-	0x43B6,	0x0000,
-	0x4396,	0x0D00,
-	0x4398,	0x0E00,
-	0xFCFC,	0x2000,
-	0xB322,	0x0101,
-	0xB324,	0x0100,
-	0xB330,	0x2828,
-	0xB34A,	0x2828,
-	0xB360,	0x2828,
-	0xFCFC,	0x2001,
-	0x4292,	0x0000,
-	0x4364,	0x0000,
-	0x4366,	0x0000,
-	0x4370,	0x0000,
-	0x4290,	0x0100,
-	0xFCFC,	0x2002,
-	0x84C4,	0x0100,
-	0xFCFC,	0x2000,
-	0xD684,	0x80F3,
-	0xB268,	0x80F3,
-	0xF09A,	0x00FF,
-	0xF2E0,	0x0000,
-	0xF372,	0x0000,
-	0xF0AA,	0xFFFF,
-	0xF0AC,	0xFFFF,
-	0xF2EA,	0x4000,
-	0xDADA,	0x0001,
-	0xDB3C,	0x12D2,
-	0xDADC,	0x0000,
-	0xDB0C,	0x0000,
-	0xDB3E,	0x12D2,
-	0xDADE,	0x4000,
-	0xDB0E,	0x0040,
-	0xDB40,	0x12D2,
-	0xDAE0,	0xE001,
-	0xDB10,	0x0000,
-	0xDB42,	0x12D2,
-	0xDAE2,	0x2003,
-	0xDB12,	0x00B0,
-	0xDB44,	0x12D2,
-	0xDAE4,	0x8007,
-	0xDB14,	0x00D0,
-	0xDB46,	0x12D2,
-	0xDAE6,	0x000B,
-	0xDB16,	0x00F0,
-	0xDBCC,	0x0000,
-	0xDB6C,	0x0000,
-	0xDB9C,	0x0000,
-	0xDBCE,	0x0000,
-	0xDB6E,	0x0000,
-	0xDB9E,	0x0000,
-	0xDBD0,	0x0000,
-	0xDB70,	0x0000,
-	0xDBA0,	0x0000,
-	0xDBD2,	0x0000,
-	0xDB72,	0x0000,
-	0xDBA2,	0x0000,
-	0xDBD4,	0x0000,
-	0xDB74,	0x0000,
-	0xDBA4,	0x0000,
-	0xDBD6,	0x0000,
-	0xDB76,	0x0000,
-	0xDBA6,	0x0000,
-	0xF370,	0x0203,
-	0xF3E4,	0x0301,
-	0xF3F4,	0xC800,
-	0xF3F6,	0xD210,
-	0xF014,	0x0700,
-	0xB270,	0x8708,
-	0xB266,	0xC004,
-	0xD682,	0xC004,
-	0xBF16,	0x0BAA,
-	0xDC8C,	0x3F0B,
-	0xFCFC,	0x4000,
-	0x0808,	0x0201,
-};
-
-////Fullcrop 12.5M remosaic on
-//static u16 zhuquec1front_Fullcrop_12_5M_remosaic_on_seamless_setting[] = {
-//	0xFCFC, 0x4000,
-//	0x0B30, 0x0100,
-//};
-
-////Fullcrop 12.5M remosaic off
-//static u16 zhuquec1front_Fullcrop_12_5M_remosaic_off_seamless_setting[] = {
-//	0xFCFC, 0x4000,
-//	0x0B30, 0x0101,
-//};
-
-////bining 12.5M
-//static u16 zhuquec1front_bining_12_5M_seamless_setting[] = {
-//	0xFCFC, 0x4000,
-//	0x0B30, 0x0102,
-//};
-//
-////bining 12.5M shdr
-//static u16 zhuquec1front_bining_12_5M_shdr_seamless_setting[] = {
-//	0xFCFC, 0x4000,
-//	0x0B30, 0x0103,
-//};
-//
-//bining 4k 30fps
-//static u16 zhuquec1front_bining_4k_30fps_seamless_setting[] = {
-//	0xFCFC, 0x4000,
-//	0x0B30, 0x0104,
-//};
-//
-////Fullcrop 4k 30fps shdr
-//static u16 zhuquec1front_bining_4k_30fps_shdr_seamless_setting[] = {
-//	0xFCFC, 0x4000,
-//	0x0B30, 0x0105,
-//};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1front_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1front_ana_gain_table.h
deleted file mode 100755
index f505e4ce..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1front_ana_gain_table.h
+++ /dev/null
@@ -1,2540 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************/
-#ifndef __ZHUQUEC1FRONT_ANA_GAIN_TABLE_H__
-#define __ZHUQUEC1FRONT_ANA_GAIN_TABLE_H__
-static kal_uint32 zhuquec1front_ana_gain_table[] = {
-	1024,
-	1056,
-	1088,
-	1120,
-	1152,
-	1184,
-	1216,
-	1248,
-	1280,
-	1312,
-	1344,
-	1376,
-	1408,
-	1440,
-	1472,
-	1504,
-	1536,
-	1568,
-	1600,
-	1632,
-	1664,
-	1696,
-	1728,
-	1760,
-	1792,
-	1824,
-	1856,
-	1888,
-	1920,
-	1952,
-	1984,
-	2016,
-	2048,
-	2080,
-	2112,
-	2144,
-	2176,
-	2208,
-	2240,
-	2272,
-	2304,
-	2336,
-	2368,
-	2400,
-	2432,
-	2464,
-	2496,
-	2528,
-	2560,
-	2592,
-	2624,
-	2656,
-	2688,
-	2720,
-	2752,
-	2784,
-	2816,
-	2848,
-	2880,
-	2912,
-	2944,
-	2976,
-	3008,
-	3040,
-	3072,
-	3104,
-	3136,
-	3168,
-	3200,
-	3232,
-	3264,
-	3296,
-	3328,
-	3360,
-	3392,
-	3424,
-	3456,
-	3488,
-	3520,
-	3552,
-	3584,
-	3616,
-	3648,
-	3680,
-	3712,
-	3744,
-	3776,
-	3808,
-	3840,
-	3872,
-	3904,
-	3936,
-	3968,
-	4000,
-	4032,
-	4064,
-	4096,
-	4128,
-	4160,
-	4192,
-	4224,
-	4256,
-	4288,
-	4320,
-	4352,
-	4384,
-	4416,
-	4448,
-	4480,
-	4512,
-	4544,
-	4576,
-	4608,
-	4640,
-	4672,
-	4704,
-	4736,
-	4768,
-	4800,
-	4832,
-	4864,
-	4896,
-	4928,
-	4960,
-	4992,
-	5024,
-	5056,
-	5088,
-	5120,
-	5152,
-	5184,
-	5216,
-	5248,
-	5280,
-	5312,
-	5344,
-	5376,
-	5408,
-	5440,
-	5472,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6080,
-	6112,
-	6144,
-	6176,
-	6208,
-	6240,
-	6272,
-	6304,
-	6336,
-	6368,
-	6400,
-	6432,
-	6464,
-	6496,
-	6528,
-	6560,
-	6592,
-	6624,
-	6656,
-	6688,
-	6720,
-	6752,
-	6784,
-	6816,
-	6848,
-	6880,
-	6912,
-	6944,
-	6976,
-	7008,
-	7040,
-	7072,
-	7104,
-	7136,
-	7168,
-	7200,
-	7232,
-	7264,
-	7296,
-	7328,
-	7360,
-	7392,
-	7424,
-	7456,
-	7488,
-	7520,
-	7552,
-	7584,
-	7616,
-	7648,
-	7680,
-	7712,
-	7744,
-	7776,
-	7808,
-	7840,
-	7872,
-	7904,
-	7936,
-	7968,
-	8000,
-	8032,
-	8064,
-	8096,
-	8128,
-	8160,
-	8192,
-	8224,
-	8256,
-	8288,
-	8320,
-	8352,
-	8384,
-	8416,
-	8448,
-	8480,
-	8512,
-	8544,
-	8576,
-	8608,
-	8640,
-	8672,
-	8704,
-	8736,
-	8768,
-	8800,
-	8832,
-	8864,
-	8896,
-	8928,
-	8960,
-	8992,
-	9024,
-	9056,
-	9088,
-	9120,
-	9152,
-	9184,
-	9216,
-	9248,
-	9280,
-	9312,
-	9344,
-	9376,
-	9408,
-	9440,
-	9472,
-	9504,
-	9536,
-	9568,
-	9600,
-	9632,
-	9664,
-	9696,
-	9728,
-	9760,
-	9792,
-	9824,
-	9856,
-	9888,
-	9920,
-	9952,
-	9984,
-	10016,
-	10048,
-	10080,
-	10112,
-	10144,
-	10176,
-	10208,
-	10240,
-	10272,
-	10304,
-	10336,
-	10368,
-	10400,
-	10432,
-	10464,
-	10496,
-	10528,
-	10560,
-	10592,
-	10624,
-	10656,
-	10688,
-	10720,
-	10752,
-	10784,
-	10816,
-	10848,
-	10880,
-	10912,
-	10944,
-	10976,
-	11008,
-	11040,
-	11072,
-	11104,
-	11136,
-	11168,
-	11200,
-	11232,
-	11264,
-	11296,
-	11328,
-	11360,
-	11392,
-	11424,
-	11456,
-	11488,
-	11520,
-	11552,
-	11584,
-	11616,
-	11648,
-	11680,
-	11712,
-	11744,
-	11776,
-	11808,
-	11840,
-	11872,
-	11904,
-	11936,
-	11968,
-	12000,
-	12032,
-	12064,
-	12096,
-	12128,
-	12160,
-	12192,
-	12224,
-	12256,
-	12288,
-	12320,
-	12352,
-	12384,
-	12416,
-	12448,
-	12480,
-	12512,
-	12544,
-	12576,
-	12608,
-	12640,
-	12672,
-	12704,
-	12736,
-	12768,
-	12800,
-	12832,
-	12864,
-	12896,
-	12928,
-	12960,
-	12992,
-	13024,
-	13056,
-	13088,
-	13120,
-	13152,
-	13184,
-	13216,
-	13248,
-	13280,
-	13312,
-	13344,
-	13376,
-	13408,
-	13440,
-	13472,
-	13504,
-	13536,
-	13568,
-	13600,
-	13632,
-	13664,
-	13696,
-	13728,
-	13760,
-	13792,
-	13824,
-	13856,
-	13888,
-	13920,
-	13952,
-	13984,
-	14016,
-	14048,
-	14080,
-	14112,
-	14144,
-	14176,
-	14208,
-	14240,
-	14272,
-	14304,
-	14336,
-	14368,
-	14400,
-	14432,
-	14464,
-	14496,
-	14528,
-	14560,
-	14592,
-	14624,
-	14656,
-	14688,
-	14720,
-	14752,
-	14784,
-	14816,
-	14848,
-	14880,
-	14912,
-	14944,
-	14976,
-	15008,
-	15040,
-	15072,
-	15104,
-	15136,
-	15168,
-	15200,
-	15232,
-	15264,
-	15296,
-	15328,
-	15360,
-	15392,
-	15424,
-	15456,
-	15488,
-	15520,
-	15552,
-	15584,
-	15616,
-	15648,
-	15680,
-	15712,
-	15744,
-	15776,
-	15808,
-	15840,
-	15872,
-	15904,
-	15936,
-	15968,
-	16000,
-	16032,
-	16064,
-	16096,
-	16128,
-	16160,
-	16192,
-	16224,
-	16256,
-	16288,
-	16320,
-	16352,
-	16384,
-	16416,
-	16448,
-	16480,
-	16512,
-	16544,
-	16576,
-	16608,
-	16640,
-	16672,
-	16704,
-	16736,
-	16768,
-	16800,
-	16832,
-	16864,
-	16896,
-	16928,
-	16960,
-	16992,
-	17024,
-	17056,
-	17088,
-	17120,
-	17152,
-	17184,
-	17216,
-	17248,
-	17280,
-	17312,
-	17344,
-	17376,
-	17408,
-	17440,
-	17472,
-	17504,
-	17536,
-	17568,
-	17600,
-	17632,
-	17664,
-	17696,
-	17728,
-	17760,
-	17792,
-	17824,
-	17856,
-	17888,
-	17920,
-	17952,
-	17984,
-	18016,
-	18048,
-	18080,
-	18112,
-	18144,
-	18176,
-	18208,
-	18240,
-	18272,
-	18304,
-	18336,
-	18368,
-	18400,
-	18432,
-	18464,
-	18496,
-	18528,
-	18560,
-	18592,
-	18624,
-	18656,
-	18688,
-	18720,
-	18752,
-	18784,
-	18816,
-	18848,
-	18880,
-	18912,
-	18944,
-	18976,
-	19008,
-	19040,
-	19072,
-	19104,
-	19136,
-	19168,
-	19200,
-	19232,
-	19264,
-	19296,
-	19328,
-	19360,
-	19392,
-	19424,
-	19456,
-	19488,
-	19520,
-	19552,
-	19584,
-	19616,
-	19648,
-	19680,
-	19712,
-	19744,
-	19776,
-	19808,
-	19840,
-	19872,
-	19904,
-	19936,
-	19968,
-	20000,
-	20032,
-	20064,
-	20096,
-	20128,
-	20160,
-	20192,
-	20224,
-	20256,
-	20288,
-	20320,
-	20352,
-	20384,
-	20416,
-	20448,
-	20480,
-	20512,
-	20544,
-	20576,
-	20608,
-	20640,
-	20672,
-	20704,
-	20736,
-	20768,
-	20800,
-	20832,
-	20864,
-	20896,
-	20928,
-	20960,
-	20992,
-	21024,
-	21056,
-	21088,
-	21120,
-	21152,
-	21184,
-	21216,
-	21248,
-	21280,
-	21312,
-	21344,
-	21376,
-	21408,
-	21440,
-	21472,
-	21504,
-	21536,
-	21568,
-	21600,
-	21632,
-	21664,
-	21696,
-	21728,
-	21760,
-	21792,
-	21824,
-	21856,
-	21888,
-	21920,
-	21952,
-	21984,
-	22016,
-	22048,
-	22080,
-	22112,
-	22144,
-	22176,
-	22208,
-	22240,
-	22272,
-	22304,
-	22336,
-	22368,
-	22400,
-	22432,
-	22464,
-	22496,
-	22528,
-	22560,
-	22592,
-	22624,
-	22656,
-	22688,
-	22720,
-	22752,
-	22784,
-	22816,
-	22848,
-	22880,
-	22912,
-	22944,
-	22976,
-	23008,
-	23040,
-	23072,
-	23104,
-	23136,
-	23168,
-	23200,
-	23232,
-	23264,
-	23296,
-	23328,
-	23360,
-	23392,
-	23424,
-	23456,
-	23488,
-	23520,
-	23552,
-	23584,
-	23616,
-	23648,
-	23680,
-	23712,
-	23744,
-	23776,
-	23808,
-	23840,
-	23872,
-	23904,
-	23936,
-	23968,
-	24000,
-	24032,
-	24064,
-	24096,
-	24128,
-	24160,
-	24192,
-	24224,
-	24256,
-	24288,
-	24320,
-	24352,
-	24384,
-	24416,
-	24448,
-	24480,
-	24512,
-	24544,
-	24576,
-	24608,
-	24640,
-	24672,
-	24704,
-	24736,
-	24768,
-	24800,
-	24832,
-	24864,
-	24896,
-	24928,
-	24960,
-	24992,
-	25024,
-	25056,
-	25088,
-	25120,
-	25152,
-	25184,
-	25216,
-	25248,
-	25280,
-	25312,
-	25344,
-	25376,
-	25408,
-	25440,
-	25472,
-	25504,
-	25536,
-	25568,
-	25600,
-	25632,
-	25664,
-	25696,
-	25728,
-	25760,
-	25792,
-	25824,
-	25856,
-	25888,
-	25920,
-	25952,
-	25984,
-	26016,
-	26048,
-	26080,
-	26112,
-	26144,
-	26176,
-	26208,
-	26240,
-	26272,
-	26304,
-	26336,
-	26368,
-	26400,
-	26432,
-	26464,
-	26496,
-	26528,
-	26560,
-	26592,
-	26624,
-	26656,
-	26688,
-	26720,
-	26752,
-	26784,
-	26816,
-	26848,
-	26880,
-	26912,
-	26944,
-	26976,
-	27008,
-	27040,
-	27072,
-	27104,
-	27136,
-	27168,
-	27200,
-	27232,
-	27264,
-	27296,
-	27328,
-	27360,
-	27392,
-	27424,
-	27456,
-	27488,
-	27520,
-	27552,
-	27584,
-	27616,
-	27648,
-	27680,
-	27712,
-	27744,
-	27776,
-	27808,
-	27840,
-	27872,
-	27904,
-	27936,
-	27968,
-	28000,
-	28032,
-	28064,
-	28096,
-	28128,
-	28160,
-	28192,
-	28224,
-	28256,
-	28288,
-	28320,
-	28352,
-	28384,
-	28416,
-	28448,
-	28480,
-	28512,
-	28544,
-	28576,
-	28608,
-	28640,
-	28672,
-	28704,
-	28736,
-	28768,
-	28800,
-	28832,
-	28864,
-	28896,
-	28928,
-	28960,
-	28992,
-	29024,
-	29056,
-	29088,
-	29120,
-	29152,
-	29184,
-	29216,
-	29248,
-	29280,
-	29312,
-	29344,
-	29376,
-	29408,
-	29440,
-	29472,
-	29504,
-	29536,
-	29568,
-	29600,
-	29632,
-	29664,
-	29696,
-	29728,
-	29760,
-	29792,
-	29824,
-	29856,
-	29888,
-	29920,
-	29952,
-	29984,
-	30016,
-	30048,
-	30080,
-	30112,
-	30144,
-	30176,
-	30208,
-	30240,
-	30272,
-	30304,
-	30336,
-	30368,
-	30400,
-	30432,
-	30464,
-	30496,
-	30528,
-	30560,
-	30592,
-	30624,
-	30656,
-	30688,
-	30720,
-	30752,
-	30784,
-	30816,
-	30848,
-	30880,
-	30912,
-	30944,
-	30976,
-	31008,
-	31040,
-	31072,
-	31104,
-	31136,
-	31168,
-	31200,
-	31232,
-	31264,
-	31296,
-	31328,
-	31360,
-	31392,
-	31424,
-	31456,
-	31488,
-	31520,
-	31552,
-	31584,
-	31616,
-	31648,
-	31680,
-	31712,
-	31744,
-	31776,
-	31808,
-	31840,
-	31872,
-	31904,
-	31936,
-	31968,
-	32000,
-	32032,
-	32064,
-	32096,
-	32128,
-	32160,
-	32192,
-	32224,
-	32256,
-	32288,
-	32320,
-	32352,
-	32384,
-	32416,
-	32448,
-	32480,
-	32512,
-	32544,
-	32576,
-	32608,
-	32640,
-	32672,
-	32704,
-	32736,
-	32768,
-	32800,
-	32832,
-	32864,
-	32896,
-	32928,
-	32960,
-	32992,
-	33024,
-	33056,
-	33088,
-	33120,
-	33152,
-	33184,
-	33216,
-	33248,
-	33280,
-	33312,
-	33344,
-	33376,
-	33408,
-	33440,
-	33472,
-	33504,
-	33536,
-	33568,
-	33600,
-	33632,
-	33664,
-	33696,
-	33728,
-	33760,
-	33792,
-	33824,
-	33856,
-	33888,
-	33920,
-	33952,
-	33984,
-	34016,
-	34048,
-	34080,
-	34112,
-	34144,
-	34176,
-	34208,
-	34240,
-	34272,
-	34304,
-	34336,
-	34368,
-	34400,
-	34432,
-	34464,
-	34496,
-	34528,
-	34560,
-	34592,
-	34624,
-	34656,
-	34688,
-	34720,
-	34752,
-	34784,
-	34816,
-	34848,
-	34880,
-	34912,
-	34944,
-	34976,
-	35008,
-	35040,
-	35072,
-	35104,
-	35136,
-	35168,
-	35200,
-	35232,
-	35264,
-	35296,
-	35328,
-	35360,
-	35392,
-	35424,
-	35456,
-	35488,
-	35520,
-	35552,
-	35584,
-	35616,
-	35648,
-	35680,
-	35712,
-	35744,
-	35776,
-	35808,
-	35840,
-	35872,
-	35904,
-	35936,
-	35968,
-	36000,
-	36032,
-	36064,
-	36096,
-	36128,
-	36160,
-	36192,
-	36224,
-	36256,
-	36288,
-	36320,
-	36352,
-	36384,
-	36416,
-	36448,
-	36480,
-	36512,
-	36544,
-	36576,
-	36608,
-	36640,
-	36672,
-	36704,
-	36736,
-	36768,
-	36800,
-	36832,
-	36864,
-	36896,
-	36928,
-	36960,
-	36992,
-	37024,
-	37056,
-	37088,
-	37120,
-	37152,
-	37184,
-	37216,
-	37248,
-	37280,
-	37312,
-	37344,
-	37376,
-	37408,
-	37440,
-	37472,
-	37504,
-	37536,
-	37568,
-	37600,
-	37632,
-	37664,
-	37696,
-	37728,
-	37760,
-	37792,
-	37824,
-	37856,
-	37888,
-	37920,
-	37952,
-	37984,
-	38016,
-	38048,
-	38080,
-	38112,
-	38144,
-	38176,
-	38208,
-	38240,
-	38272,
-	38304,
-	38336,
-	38368,
-	38400,
-	38432,
-	38464,
-	38496,
-	38528,
-	38560,
-	38592,
-	38624,
-	38656,
-	38688,
-	38720,
-	38752,
-	38784,
-	38816,
-	38848,
-	38880,
-	38912,
-	38944,
-	38976,
-	39008,
-	39040,
-	39072,
-	39104,
-	39136,
-	39168,
-	39200,
-	39232,
-	39264,
-	39296,
-	39328,
-	39360,
-	39392,
-	39424,
-	39456,
-	39488,
-	39520,
-	39552,
-	39584,
-	39616,
-	39648,
-	39680,
-	39712,
-	39744,
-	39776,
-	39808,
-	39840,
-	39872,
-	39904,
-	39936,
-	39968,
-	40000,
-	40032,
-	40064,
-	40096,
-	40128,
-	40160,
-	40192,
-	40224,
-	40256,
-	40288,
-	40320,
-	40352,
-	40384,
-	40416,
-	40448,
-	40480,
-	40512,
-	40544,
-	40576,
-	40608,
-	40640,
-	40672,
-	40704,
-	40736,
-	40768,
-	40800,
-	40832,
-	40864,
-	40896,
-	40928,
-	40960,
-	40992,
-	41024,
-	41056,
-	41088,
-	41120,
-	41152,
-	41184,
-	41216,
-	41248,
-	41280,
-	41312,
-	41344,
-	41376,
-	41408,
-	41440,
-	41472,
-	41504,
-	41536,
-	41568,
-	41600,
-	41632,
-	41664,
-	41696,
-	41728,
-	41760,
-	41792,
-	41824,
-	41856,
-	41888,
-	41920,
-	41952,
-	41984,
-	42016,
-	42048,
-	42080,
-	42112,
-	42144,
-	42176,
-	42208,
-	42240,
-	42272,
-	42304,
-	42336,
-	42368,
-	42400,
-	42432,
-	42464,
-	42496,
-	42528,
-	42560,
-	42592,
-	42624,
-	42656,
-	42688,
-	42720,
-	42752,
-	42784,
-	42816,
-	42848,
-	42880,
-	42912,
-	42944,
-	42976,
-	43008,
-	43040,
-	43072,
-	43104,
-	43136,
-	43168,
-	43200,
-	43232,
-	43264,
-	43296,
-	43328,
-	43360,
-	43392,
-	43424,
-	43456,
-	43488,
-	43520,
-	43552,
-	43584,
-	43616,
-	43648,
-	43680,
-	43712,
-	43744,
-	43776,
-	43808,
-	43840,
-	43872,
-	43904,
-	43936,
-	43968,
-	44000,
-	44032,
-	44064,
-	44096,
-	44128,
-	44160,
-	44192,
-	44224,
-	44256,
-	44288,
-	44320,
-	44352,
-	44384,
-	44416,
-	44448,
-	44480,
-	44512,
-	44544,
-	44576,
-	44608,
-	44640,
-	44672,
-	44704,
-	44736,
-	44768,
-	44800,
-	44832,
-	44864,
-	44896,
-	44928,
-	44960,
-	44992,
-	45024,
-	45056,
-	45088,
-	45120,
-	45152,
-	45184,
-	45216,
-	45248,
-	45280,
-	45312,
-	45344,
-	45376,
-	45408,
-	45440,
-	45472,
-	45504,
-	45536,
-	45568,
-	45600,
-	45632,
-	45664,
-	45696,
-	45728,
-	45760,
-	45792,
-	45824,
-	45856,
-	45888,
-	45920,
-	45952,
-	45984,
-	46016,
-	46048,
-	46080,
-	46112,
-	46144,
-	46176,
-	46208,
-	46240,
-	46272,
-	46304,
-	46336,
-	46368,
-	46400,
-	46432,
-	46464,
-	46496,
-	46528,
-	46560,
-	46592,
-	46624,
-	46656,
-	46688,
-	46720,
-	46752,
-	46784,
-	46816,
-	46848,
-	46880,
-	46912,
-	46944,
-	46976,
-	47008,
-	47040,
-	47072,
-	47104,
-	47136,
-	47168,
-	47200,
-	47232,
-	47264,
-	47296,
-	47328,
-	47360,
-	47392,
-	47424,
-	47456,
-	47488,
-	47520,
-	47552,
-	47584,
-	47616,
-	47648,
-	47680,
-	47712,
-	47744,
-	47776,
-	47808,
-	47840,
-	47872,
-	47904,
-	47936,
-	47968,
-	48000,
-	48032,
-	48064,
-	48096,
-	48128,
-	48160,
-	48192,
-	48224,
-	48256,
-	48288,
-	48320,
-	48352,
-	48384,
-	48416,
-	48448,
-	48480,
-	48512,
-	48544,
-	48576,
-	48608,
-	48640,
-	48672,
-	48704,
-	48736,
-	48768,
-	48800,
-	48832,
-	48864,
-	48896,
-	48928,
-	48960,
-	48992,
-	49024,
-	49056,
-	49088,
-	49120,
-	49152,
-	49184,
-	49216,
-	49248,
-	49280,
-	49312,
-	49344,
-	49376,
-	49408,
-	49440,
-	49472,
-	49504,
-	49536,
-	49568,
-	49600,
-	49632,
-	49664,
-	49696,
-	49728,
-	49760,
-	49792,
-	49824,
-	49856,
-	49888,
-	49920,
-	49952,
-	49984,
-	50016,
-	50048,
-	50080,
-	50112,
-	50144,
-	50176,
-	50208,
-	50240,
-	50272,
-	50304,
-	50336,
-	50368,
-	50400,
-	50432,
-	50464,
-	50496,
-	50528,
-	50560,
-	50592,
-	50624,
-	50656,
-	50688,
-	50720,
-	50752,
-	50784,
-	50816,
-	50848,
-	50880,
-	50912,
-	50944,
-	50976,
-	51008,
-	51040,
-	51072,
-	51104,
-	51136,
-	51168,
-	51200,
-	51232,
-	51264,
-	51296,
-	51328,
-	51360,
-	51392,
-	51424,
-	51456,
-	51488,
-	51520,
-	51552,
-	51584,
-	51616,
-	51648,
-	51680,
-	51712,
-	51744,
-	51776,
-	51808,
-	51840,
-	51872,
-	51904,
-	51936,
-	51968,
-	52000,
-	52032,
-	52064,
-	52096,
-	52128,
-	52160,
-	52192,
-	52224,
-	52256,
-	52288,
-	52320,
-	52352,
-	52384,
-	52416,
-	52448,
-	52480,
-	52512,
-	52544,
-	52576,
-	52608,
-	52640,
-	52672,
-	52704,
-	52736,
-	52768,
-	52800,
-	52832,
-	52864,
-	52896,
-	52928,
-	52960,
-	52992,
-	53024,
-	53056,
-	53088,
-	53120,
-	53152,
-	53184,
-	53216,
-	53248,
-	53280,
-	53312,
-	53344,
-	53376,
-	53408,
-	53440,
-	53472,
-	53504,
-	53536,
-	53568,
-	53600,
-	53632,
-	53664,
-	53696,
-	53728,
-	53760,
-	53792,
-	53824,
-	53856,
-	53888,
-	53920,
-	53952,
-	53984,
-	54016,
-	54048,
-	54080,
-	54112,
-	54144,
-	54176,
-	54208,
-	54240,
-	54272,
-	54304,
-	54336,
-	54368,
-	54400,
-	54432,
-	54464,
-	54496,
-	54528,
-	54560,
-	54592,
-	54624,
-	54656,
-	54688,
-	54720,
-	54752,
-	54784,
-	54816,
-	54848,
-	54880,
-	54912,
-	54944,
-	54976,
-	55008,
-	55040,
-	55072,
-	55104,
-	55136,
-	55168,
-	55200,
-	55232,
-	55264,
-	55296,
-	55328,
-	55360,
-	55392,
-	55424,
-	55456,
-	55488,
-	55520,
-	55552,
-	55584,
-	55616,
-	55648,
-	55680,
-	55712,
-	55744,
-	55776,
-	55808,
-	55840,
-	55872,
-	55904,
-	55936,
-	55968,
-	56000,
-	56032,
-	56064,
-	56096,
-	56128,
-	56160,
-	56192,
-	56224,
-	56256,
-	56288,
-	56320,
-	56352,
-	56384,
-	56416,
-	56448,
-	56480,
-	56512,
-	56544,
-	56576,
-	56608,
-	56640,
-	56672,
-	56704,
-	56736,
-	56768,
-	56800,
-	56832,
-	56864,
-	56896,
-	56928,
-	56960,
-	56992,
-	57024,
-	57056,
-	57088,
-	57120,
-	57152,
-	57184,
-	57216,
-	57248,
-	57280,
-	57312,
-	57344,
-	57376,
-	57408,
-	57440,
-	57472,
-	57504,
-	57536,
-	57568,
-	57600,
-	57632,
-	57664,
-	57696,
-	57728,
-	57760,
-	57792,
-	57824,
-	57856,
-	57888,
-	57920,
-	57952,
-	57984,
-	58016,
-	58048,
-	58080,
-	58112,
-	58144,
-	58176,
-	58208,
-	58240,
-	58272,
-	58304,
-	58336,
-	58368,
-	58400,
-	58432,
-	58464,
-	58496,
-	58528,
-	58560,
-	58592,
-	58624,
-	58656,
-	58688,
-	58720,
-	58752,
-	58784,
-	58816,
-	58848,
-	58880,
-	58912,
-	58944,
-	58976,
-	59008,
-	59040,
-	59072,
-	59104,
-	59136,
-	59168,
-	59200,
-	59232,
-	59264,
-	59296,
-	59328,
-	59360,
-	59392,
-	59424,
-	59456,
-	59488,
-	59520,
-	59552,
-	59584,
-	59616,
-	59648,
-	59680,
-	59712,
-	59744,
-	59776,
-	59808,
-	59840,
-	59872,
-	59904,
-	59936,
-	59968,
-	60000,
-	60032,
-	60064,
-	60096,
-	60128,
-	60160,
-	60192,
-	60224,
-	60256,
-	60288,
-	60320,
-	60352,
-	60384,
-	60416,
-	60448,
-	60480,
-	60512,
-	60544,
-	60576,
-	60608,
-	60640,
-	60672,
-	60704,
-	60736,
-	60768,
-	60800,
-	60832,
-	60864,
-	60896,
-	60928,
-	60960,
-	60992,
-	61024,
-	61056,
-	61088,
-	61120,
-	61152,
-	61184,
-	61216,
-	61248,
-	61280,
-	61312,
-	61344,
-	61376,
-	61408,
-	61440,
-	61472,
-	61504,
-	61536,
-	61568,
-	61600,
-	61632,
-	61664,
-	61696,
-	61728,
-	61760,
-	61792,
-	61824,
-	61856,
-	61888,
-	61920,
-	61952,
-	61984,
-	62016,
-	62048,
-	62080,
-	62112,
-	62144,
-	62176,
-	62208,
-	62240,
-	62272,
-	62304,
-	62336,
-	62368,
-	62400,
-	62432,
-	62464,
-	62496,
-	62528,
-	62560,
-	62592,
-	62624,
-	62656,
-	62688,
-	62720,
-	62752,
-	62784,
-	62816,
-	62848,
-	62880,
-	62912,
-	62944,
-	62976,
-	63008,
-	63040,
-	63072,
-	63104,
-	63136,
-	63168,
-	63200,
-	63232,
-	63264,
-	63296,
-	63328,
-	63360,
-	63392,
-	63424,
-	63456,
-	63488,
-	63520,
-	63552,
-	63584,
-	63616,
-	63648,
-	63680,
-	63712,
-	63744,
-	63776,
-	63808,
-	63840,
-	63872,
-	63904,
-	63936,
-	63968,
-	64000,
-	64032,
-	64064,
-	64096,
-	64128,
-	64160,
-	64192,
-	64224,
-	64256,
-	64288,
-	64320,
-	64352,
-	64384,
-	64416,
-	64448,
-	64480,
-	64512,
-	64544,
-	64576,
-	64608,
-	64640,
-	64672,
-	64704,
-	64736,
-	64768,
-	64800,
-	64832,
-	64864,
-	64896,
-	64928,
-	64960,
-	64992,
-	65024,
-	65056,
-	65088,
-	65120,
-	65152,
-	65184,
-	65216,
-	65248,
-	65280,
-	65312,
-	65344,
-	65376,
-	65408,
-	65440,
-	65472,
-	65504,
-	65536,
-	65568,
-	65600,
-	65632,
-	65664,
-	65696,
-	65728,
-	65760,
-	65792,
-	65824,
-	65856,
-	65888,
-	65920,
-	65952,
-	65984,
-	66016,
-	66048,
-	66080,
-	66112,
-	66144,
-	66176,
-	66208,
-	66240,
-	66272,
-	66304,
-	66336,
-	66368,
-	66400,
-	66432,
-	66464,
-	66496,
-	66528,
-	66560,
-	66592,
-	66624,
-	66656,
-	66688,
-	66720,
-	66752,
-	66784,
-	66816,
-	66848,
-	66880,
-	66912,
-	66944,
-	66976,
-	67008,
-	67040,
-	67072,
-	67104,
-	67136,
-	67168,
-	67200,
-	67232,
-	67264,
-	67296,
-	67328,
-	67360,
-	67392,
-	67424,
-	67456,
-	67488,
-	67520,
-	67552,
-	67584,
-	67616,
-	67648,
-	67680,
-	67712,
-	67744,
-	67776,
-	67808,
-	67840,
-	67872,
-	67904,
-	67936,
-	67968,
-	68000,
-	68032,
-	68064,
-	68096,
-	68128,
-	68160,
-	68192,
-	68224,
-	68256,
-	68288,
-	68320,
-	68352,
-	68384,
-	68416,
-	68448,
-	68480,
-	68512,
-	68544,
-	68576,
-	68608,
-	68640,
-	68672,
-	68704,
-	68736,
-	68768,
-	68800,
-	68832,
-	68864,
-	68896,
-	68928,
-	68960,
-	68992,
-	69024,
-	69056,
-	69088,
-	69120,
-	69152,
-	69184,
-	69216,
-	69248,
-	69280,
-	69312,
-	69344,
-	69376,
-	69408,
-	69440,
-	69472,
-	69504,
-	69536,
-	69568,
-	69600,
-	69632,
-	69664,
-	69696,
-	69728,
-	69760,
-	69792,
-	69824,
-	69856,
-	69888,
-	69920,
-	69952,
-	69984,
-	70016,
-	70048,
-	70080,
-	70112,
-	70144,
-	70176,
-	70208,
-	70240,
-	70272,
-	70304,
-	70336,
-	70368,
-	70400,
-	70432,
-	70464,
-	70496,
-	70528,
-	70560,
-	70592,
-	70624,
-	70656,
-	70688,
-	70720,
-	70752,
-	70784,
-	70816,
-	70848,
-	70880,
-	70912,
-	70944,
-	70976,
-	71008,
-	71040,
-	71072,
-	71104,
-	71136,
-	71168,
-	71200,
-	71232,
-	71264,
-	71296,
-	71328,
-	71360,
-	71392,
-	71424,
-	71456,
-	71488,
-	71520,
-	71552,
-	71584,
-	71616,
-	71648,
-	71680,
-	71712,
-	71744,
-	71776,
-	71808,
-	71840,
-	71872,
-	71904,
-	71936,
-	71968,
-	72000,
-	72032,
-	72064,
-	72096,
-	72128,
-	72160,
-	72192,
-	72224,
-	72256,
-	72288,
-	72320,
-	72352,
-	72384,
-	72416,
-	72448,
-	72480,
-	72512,
-	72544,
-	72576,
-	72608,
-	72640,
-	72672,
-	72704,
-	72736,
-	72768,
-	72800,
-	72832,
-	72864,
-	72896,
-	72928,
-	72960,
-	72992,
-	73024,
-	73056,
-	73088,
-	73120,
-	73152,
-	73184,
-	73216,
-	73248,
-	73280,
-	73312,
-	73344,
-	73376,
-	73408,
-	73440,
-	73472,
-	73504,
-	73536,
-	73568,
-	73600,
-	73632,
-	73664,
-	73696,
-	73728,
-	73760,
-	73792,
-	73824,
-	73856,
-	73888,
-	73920,
-	73952,
-	73984,
-	74016,
-	74048,
-	74080,
-	74112,
-	74144,
-	74176,
-	74208,
-	74240,
-	74272,
-	74304,
-	74336,
-	74368,
-	74400,
-	74432,
-	74464,
-	74496,
-	74528,
-	74560,
-	74592,
-	74624,
-	74656,
-	74688,
-	74720,
-	74752,
-	74784,
-	74816,
-	74848,
-	74880,
-	74912,
-	74944,
-	74976,
-	75008,
-	75040,
-	75072,
-	75104,
-	75136,
-	75168,
-	75200,
-	75232,
-	75264,
-	75296,
-	75328,
-	75360,
-	75392,
-	75424,
-	75456,
-	75488,
-	75520,
-	75552,
-	75584,
-	75616,
-	75648,
-	75680,
-	75712,
-	75744,
-	75776,
-	75808,
-	75840,
-	75872,
-	75904,
-	75936,
-	75968,
-	76000,
-	76032,
-	76064,
-	76096,
-	76128,
-	76160,
-	76192,
-	76224,
-	76256,
-	76288,
-	76320,
-	76352,
-	76384,
-	76416,
-	76448,
-	76480,
-	76512,
-	76544,
-	76576,
-	76608,
-	76640,
-	76672,
-	76704,
-	76736,
-	76768,
-	76800,
-	76832,
-	76864,
-	76896,
-	76928,
-	76960,
-	76992,
-	77024,
-	77056,
-	77088,
-	77120,
-	77152,
-	77184,
-	77216,
-	77248,
-	77280,
-	77312,
-	77344,
-	77376,
-	77408,
-	77440,
-	77472,
-	77504,
-	77536,
-	77568,
-	77600,
-	77632,
-	77664,
-	77696,
-	77728,
-	77760,
-	77792,
-	77824,
-	77856,
-	77888,
-	77920,
-	77952,
-	77984,
-	78016,
-	78048,
-	78080,
-	78112,
-	78144,
-	78176,
-	78208,
-	78240,
-	78272,
-	78304,
-	78336,
-	78368,
-	78400,
-	78432,
-	78464,
-	78496,
-	78528,
-	78560,
-	78592,
-	78624,
-	78656,
-	78688,
-	78720,
-	78752,
-	78784,
-	78816,
-	78848,
-	78880,
-	78912,
-	78944,
-	78976,
-	79008,
-	79040,
-	79072,
-	79104,
-	79136,
-	79168,
-	79200,
-	79232,
-	79264,
-	79296,
-	79328,
-	79360,
-	79392,
-	79424,
-	79456,
-	79488,
-	79520,
-	79552,
-	79584,
-	79616,
-	79648,
-	79680,
-	79712,
-	79744,
-	79776,
-	79808,
-	79840,
-	79872,
-	79904,
-	79936,
-	79968,
-	80000,
-	80032,
-	80064,
-	80096,
-	80128,
-	80160,
-	80192,
-	80224,
-	80256,
-	80288,
-	80320,
-	80352,
-	80384,
-	80416,
-	80448,
-	80480,
-	80512,
-	80544,
-	80576,
-	80608,
-	80640,
-	80672,
-	80704,
-	80736,
-	80768,
-	80800,
-	80832,
-	80864,
-	80896,
-	80928,
-	80960,
-	80992,
-	81024,
-	81056,
-	81088,
-	81120,
-	81152,
-	81184,
-	81216,
-	81248,
-	81280,
-	81312,
-	81344,
-	81376,
-	81408,
-	81440,
-	81472,
-	81504,
-	81536,
-	81568,
-	81600,
-	81632,
-	81664,
-	81696,
-	81728,
-	81760,
-	81792,
-	81824,
-	81856,
-	81888,
-	81920,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1frontmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1frontmipiraw_Sensor.c
deleted file mode 100755
index 66c50983..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1frontmipiraw_Sensor.c
+++ /dev/null
@@ -1,3706 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 zhuquec1frontmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "zhuquec1frontmipiraw_Sensor.h"
-#define SENSOR_NAME  SENSOR_DRVNAME_ZHUQUEC1FRONT_MIPI_RAW
-#define PFX "zhuquec1front_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-
-#define ZHUQUEC1FRONT_EEPROM_READ_ID    (0xA9)
-#define OTP_SIZE    (0x4000)
-#define ZHUQUEC1FRONT_UNIQUE_SENSOR_ID_ADDR 0x0A24
-#define ZHUQUEC1FRONT_UNIQUE_SENSOR_ID_LENGTH 6
-
-// static BYTE zhuquec1front_unique_id[ZHUQUEC1FRONT_UNIQUE_SENSOR_ID_LENGTH] = { 0 };
-
-static u16 module_flag = 0;
-static bool bNeedSetNormalMode = FALSE;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-#define MAX_BURST_LEN  2048
-static u8 * msg_buf = NULL;
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int zhuquec1front_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_set_test_pattern_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_get_eeprom_comdata(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int get_sensor_temperature(void *arg);
-
-static void zhuquec1front_set_gain_convert(struct subdrv_ctx *ctx, u32 gain);
-static int zhuquec1front_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1front_set_multi_gain(struct subdrv_ctx *ctx, u32 *gains, u16 exp_cnt);
-static void zhuquec1front_set_hdr_tri_gain(struct subdrv_ctx *ctx, u64 *gains, u16 exp_cnt);
-static int zhuquec1front_set_hdr_tri_gain2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_set_hdr_tri_gain3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static void zhuquec1front_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter);
-static int zhuquec1front_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1front_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length);
-static void zhuquec1front_set_multi_shutter_frame_length(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt, u16 frame_length);
-static int zhuquec1front_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_set_video_mode(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int zhuquec1front_i2c_burst_wr_regs_u16(struct subdrv_ctx *ctx, u16 * list, u32 len);
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx,
-		u16 addr, u16 *list, u32 len);
-static void zhuquec1front_lens_pos_writeback(struct subdrv_ctx *ctx);
-static int zhuquec1front_set_register(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1front_get_register(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static bool g_id_from_dts_flag = false;
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id);
-// static int zhuquec1front_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-// static int zhuquec1front_get_cloud_otp_info(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-// static int zhuquec1front_set_af_code_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-/* STRUCT */
-
-// static struct oplus_get_eeprom_common_data zhuquec1front_eeprom_common_data = {0};
-static kal_uint16 g_af_code_macro    = 0;
-static kal_uint16 g_af_code_infinity = 0;
-// static kal_uint16 g_af_code_middle   = 0;
-
-// static struct eeprom_map_info zhuquec1front_eeprom_info[] = {
-// 	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-// 	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-// 	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-// 	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-// 	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-// 	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-// 	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-// 	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-// 	{ EEPROM_META_STEREO_DATA, 0, 0, 0, 0, false },
-// 	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0, 0, 0, 0, false },
-// 	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0, 0, 0, 0, false },
-// };
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, zhuquec1front_set_test_pattern},
-	{SENSOR_FEATURE_SET_TEST_PATTERN_DATA, zhuquec1front_set_test_pattern_data},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, zhuquec1front_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, zhuquec1front_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, zhuquec1front_get_eeprom_comdata},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, zhuquec1front_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, zhuquec1front_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, zhuquec1front_streaming_resume},
-	{SENSOR_FEATURE_SET_GAIN, zhuquec1front_set_gain},
-	{SENSOR_FEATURE_SET_DUAL_GAIN, zhuquec1front_set_hdr_tri_gain2},
-	{SENSOR_FEATURE_SET_HDR_TRI_GAIN, zhuquec1front_set_hdr_tri_gain3},
-	{SENSOR_FEATURE_SET_ESHUTTER, zhuquec1front_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, zhuquec1front_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_HDR_SHUTTER, zhuquec1front_set_hdr_tri_shutter2},
-	{SENSOR_FEATURE_SET_HDR_TRI_SHUTTER, zhuquec1front_set_hdr_tri_shutter3},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, zhuquec1front_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO, zhuquec1front_set_max_framerate_by_scenario},
-	{SENSOR_FEATURE_SET_SEAMLESS_EXTEND_FRAME_LENGTH, zhuquec1front_extend_frame_length},
-	{SENSOR_FEATURE_SET_VIDEO_MODE, zhuquec1front_set_video_mode},
-	{SENSOR_FEATURE_SET_AWB_GAIN, zhuquec1front_set_awb_gain},
-	{SENSOR_FEATURE_SET_REGISTER, zhuquec1front_set_register},
-	{SENSOR_FEATURE_GET_REGISTER, zhuquec1front_get_register},
-	// {SENSOR_FEATURE_GET_UNIQUE_SENSORID, zhuquec1front_get_unique_sensorid},
-	// {SENSOR_FEATURE_GET_CLOUD_OTP_INFO, zhuquec1front_get_cloud_otp_info},
-	// {SENSOR_FEATURE_SET_AF_CODE_DATA, zhuquec1front_set_af_code_data},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x0175010a,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA8,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {416, 618}, {416, 618}, {0, 0}, {0, 0},
-		/*   */
-		{0, 0}, {416, 312}
-	},
-	.iMirrorFlip = 0,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 192}, {0, 192}, {0, 192}, {0, 0}, {0, 0},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*   */
-		{0, 0}, {0, 0}
-	},
-	.iMirrorFlip = 0,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*   */
-		{0, 0}, {0, 0}
-	},
-	.iMirrorFlip = 0,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 8,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus12[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 1836,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 3264,
-			.vsize = 459,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus13[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 1836,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 3264,
-			.vsize = 459,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus14[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus15[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus16[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 680,
-			.vsize = 512,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus17[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 3264,
-			.vsize = 612,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus18[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2048,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 512,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-static struct subdrv_mode_struct mode_struct[] = {
-	{/* 0 4sum12.5Mp_30FPS_4096x3072*/
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = zhuquec1front_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_preview_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* 1 4sum12.5Mp_30FPS_4096x3072*/
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = zhuquec1front_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_preview_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 2 4sum4k_30FPS_4096x2304*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = zhuquec1front_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* 3 4sum4k_60FPS_4096x2304*/
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = zhuquec1front_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 60,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* 4 4sum2bin_120FPS_2048x1152*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = zhuquec1front_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 1602,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 5 4sum12.5Mp_24FPS_4096x3072*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = zhuquec1front_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 8008,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 6 4sum2bin_24FPS_2048x1536*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = zhuquec1front_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom2_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4852,
-		.framelength = 7896,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 7 full50Mp_15FPS_8192x6144_remosaicON*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = zhuquec1front_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9600,
-		.framelength = 6346,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 16,
-		.exposure_margin = 48,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = RMSC_MASK,
-			.equivalent_fps = 15,
-			.sensorScenario = SENSOR_SCENARIO_FULL_NCELL,
-		},
-		.awb_enabled = true,
-	},
-	{/* 8 4sum4k_30FPS_4096x2304_2expSHDR*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = zhuquec1front_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_STAGGER,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 6064,
-		.framelength = 2514,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 8,
-		.exposure_margin = 24,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 80,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 9 fullcrop12.5Mp_30FPS_4096x3072_remosaicON*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = zhuquec1front_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom5_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1324800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 16,
-		.exposure_margin = 48,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-		.awb_enabled = true,
-	},
-	{/* 10 4sum2bin_30FPS_2048x1152*/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = zhuquec1front_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom6_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* 11 4sum2bin_240FPS_2048x1152*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = zhuquec1front_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom7_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 2944,
-		.framelength = 1302,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 796800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 12 4sumFHD_30FPS_2048x1152_2expSHDR*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = zhuquec1front_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_STAGGER,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 6000,
-		.framelength = 5110,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1324800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 16,
-		.exposure_margin = 24,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 80,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 13 4sum2bin_30FPS_2048x1536*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = zhuquec1front_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* 14 4sum2bin_15FPS_2048x1536*/
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = zhuquec1front_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom10_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 12816,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 15 4sum2bin_15FPS_2048x1152*/
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = zhuquec1front_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4852,
-		.framelength = 12640,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 16 4sum4k_30FPS_3264x1836 */
-		.frame_desc = frame_desc_cus12,
-		.num_entries = ARRAY_SIZE(frame_desc_cus12),
-		.mode_setting_table = zhuquec1front_custom12_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom12_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4848,
-		.framelength = 6309,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 416,
-			.y1_offset = 234,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 17 4sum4k_15FPS_3264x1836 */
-		.frame_desc = frame_desc_cus13,
-		.num_entries = ARRAY_SIZE(frame_desc_cus13),
-		.mode_setting_table = zhuquec1front_custom13_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom13_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4848,
-		.framelength = 12640,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 416,
-			.y1_offset = 234,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 18 4sum12.5M_30FPS_4096x3072_2expSHDR*/
-		.frame_desc = frame_desc_cus14,
-		.num_entries = ARRAY_SIZE(frame_desc_cus14),
-		.mode_setting_table = zhuquec1front_custom14_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom14_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_STAGGER,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1324800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 8,
-		.exposure_margin = 24,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 80,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 19 fullcrop12.5Mp_30FPS_4096x3072_remosaic0ff*/
-		.frame_desc = frame_desc_cus15,
-		.num_entries = ARRAY_SIZE(frame_desc_cus15),
-		.mode_setting_table = zhuquec1front_custom15_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom15_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1324800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 16,
-		.exposure_margin = 48,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 20 4sum2bin_30FPS_680x512*/
-		.frame_desc = frame_desc_cus16,
-		.num_entries = ARRAY_SIZE(frame_desc_cus16),
-		.mode_setting_table = zhuquec1front_custom16_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom16_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 2944,
-		.framelength = 10412,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 312000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 684,
-			.y1_offset = 320,
-			.w1_size = 680,
-			.h1_size = 512,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 680,
-			.h2_tg_size = 512,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 120,
-		},
-		.ana_gain_max = BASEGAIN * 80,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* 21 4sum4k_30FPS_3264x2448 */
-		.frame_desc = frame_desc_cus17,
-		.num_entries = ARRAY_SIZE(frame_desc_cus17),
-		.mode_setting_table = zhuquec1front_custom17_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom17_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4848,
-		.framelength = 6312,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 416,
-			.y1_offset = 312,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* 22 4096*2048@30fps vb max */
-		.frame_desc = frame_desc_cus18,
-		.num_entries = ARRAY_SIZE(frame_desc_cus18),
-		.mode_setting_table = zhuquec1front_custom18_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1front_custom18_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1024,
-			.w0_size = 8192,
-			.h0_size = 4096,
-			.scale_w = 4096,
-			.scale_h = 2048,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2048,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2048,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = ZHUQUEC1FRONT_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0000, 0x0001},
-	.i2c_addr_table = {0x20, 0xff},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_16,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_Gr,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 160,
-	.ana_gain_type = 2, //0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC
-	.ana_gain_step = 2,
-	.ana_gain_table = zhuquec1front_ana_gain_table,
-	.ana_gain_table_size = sizeof(zhuquec1front_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max = (0xffff * 128) - 4,
-	.exposure_step = 1,
-	.exposure_margin = 24,  //tentative
-
-	.frame_length_max = 0xffff,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 2445000,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL,
-	.seamless_switch_support = FALSE,
-	.temperature_support = TRUE,
-	
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-//	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure ={
-			{0x0202, 0x0203}, //Short exposure
-			{0x0202, 0x0203},
-			{0x0226, 0x0227}, //Long exposure
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x0704,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, //Short Gain
-			{0x0204, 0x0205},
-			{0x0206, 0x0207}, //Long Gain
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_temp_en = PARAM_UNDEFINED,
-	.reg_addr_temp_read = 0x0020,
-	.reg_addr_auto_extend = PARAM_UNDEFINED, //0x0335,
-	.reg_addr_frame_count = 0x0005,
-//	.init_setting_table = zhuquec1front_sensor_init_setting,
-//	.init_setting_len =  ARRAY_SIZE(zhuquec1front_sensor_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-
-	.checksum_value = 0x350174bc,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 2000},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_AVDD, {2204000, 2204000}, 1000},
-	{HW_ID_DVDD, {1008000, 1008000}, 1000},
-	{HW_ID_AFVDD, {2804000, 2804000}, 0},
-	{HW_ID_RST, {1}, 2000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 10000},
-};
-
-struct subdrv_entry zhuquec1front_mipi_raw_entry = {
-	.name = SENSOR_NAME,
-	.id = ZHUQUEC1FRONT_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-/* FUNCTION */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	short temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u16(ctx, ctx->s_ctx.reg_addr_temp_read);
-	temperature_convert = temperature / 256;
-
-	DRV_LOG(ctx, "reg_val:0x%x, temperature: %d degrees\n", temperature, temperature_convert);
-	return temperature_convert;
-}
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG(ctx, "AOV mode set stream in SCP side! (sid:%u)\n",
-			ctx->current_scenario_id);
-		return;
-	}
-
-	if (enable) {
-		if (ctx->s_ctx.chk_s_off_sta) {
-			DRV_LOG(ctx, "check_stream_off before stream on");
-			check_stream_off(ctx);
-		}
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-		mdelay(10);
-	} else {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-	}
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int zhuquec1front_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-		if (*(u32 *)para)
-			zhuquec1front_set_shutter_convert(ctx, *(u32 *)para);
-		streaming_ctrl(ctx, true);
-		return 0;
-}
-
-static int zhuquec1front_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-		return 0;
-}
-
-// static unsigned int read_zhuquec1front_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-// 	BYTE *data, int size)
-// {
-// 	kal_uint16 addr;
-// 	int readsize;
-
-// 	if (meta_id != zhuquec1front_eeprom_info[meta_id].meta)
-// 		return -1;
-
-// 	if (size != zhuquec1front_eeprom_info[meta_id].size)
-// 		return -1;
-
-// 	addr = zhuquec1front_eeprom_info[meta_id].start;
-// 	readsize = zhuquec1front_eeprom_info[meta_id].size;
-
-// 	if (!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-// 		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-// 	}
-
-// 	return 0;
-// }
-
-// static void read_eeprom_common_data(struct subdrv_ctx *ctx)
-// {
-// 	kal_uint16 idx = 0;
-// 	kal_uint16 AF_CODE_MACRO_idx = 0;
-// 	kal_uint16 AF_CODE_INFINITY_idx = 0;
-// 	kal_uint16 AF_CODE_MIDDLE_idx = 0;
-
-// 	memset(&zhuquec1front_eeprom_common_data, 0x00, sizeof(zhuquec1front_eeprom_common_data));
-
-// 	zhuquec1front_eeprom_common_data.header[EEPROM_MODULE_ID] = 2;
-// 	read_zhuquec1front_eeprom_info(ctx, EEPROM_META_MODULE_ID,
-// 				&(zhuquec1front_eeprom_common_data.data[idx]), 2);
-// 	idx += zhuquec1front_eeprom_common_data.header[EEPROM_MODULE_ID];
-
-// 	zhuquec1front_eeprom_common_data.header[EEPROM_SENSOR_ID] = 2;
-// 	read_zhuquec1front_eeprom_info(ctx, EEPROM_META_SENSOR_ID,
-// 				&(zhuquec1front_eeprom_common_data.data[idx]), 2);
-// 	idx += zhuquec1front_eeprom_common_data.header[EEPROM_SENSOR_ID];
-
-// 	zhuquec1front_eeprom_common_data.header[EEPROM_LENS_ID] = 2;
-// 	read_zhuquec1front_eeprom_info(ctx, EEPROM_META_LENS_ID,
-// 				&(zhuquec1front_eeprom_common_data.data[idx]), 2);
-// 	idx += zhuquec1front_eeprom_common_data.header[EEPROM_LENS_ID];
-
-// 	zhuquec1front_eeprom_common_data.header[EEPROM_VCM_ID] = 2;
-// 	read_zhuquec1front_eeprom_info(ctx, EEPROM_META_VCM_ID,
-// 				&(zhuquec1front_eeprom_common_data.data[idx]), 2);
-// 	idx += zhuquec1front_eeprom_common_data.header[EEPROM_VCM_ID];
-
-// 	zhuquec1front_eeprom_common_data.header[EEPROM_MODULE_SN] = 23;
-// 	read_zhuquec1front_eeprom_info(ctx, EEPROM_META_MODULE_SN,
-// 				&(zhuquec1front_eeprom_common_data.data[idx]), 23);
-// 	idx += zhuquec1front_eeprom_common_data.header[EEPROM_MODULE_SN];
-
-// 	zhuquec1front_eeprom_common_data.header[EEPROM_AF_CODE_MACRO] = 2;
-// 	zhuquec1front_eeprom_common_data.header[EEPROM_AF_CODE_INFINITY] = 2;
-// 	zhuquec1front_eeprom_common_data.header[EEPROM_AF_CODE_MIDDLE] = 2;
-// 	read_zhuquec1front_eeprom_info(ctx, EEPROM_META_AF_CODE,
-// 				&(zhuquec1front_eeprom_common_data.data[idx]), 6);
-
-// 	AF_CODE_MACRO_idx = idx;
-// 	AF_CODE_INFINITY_idx = idx + 2;
-// 	AF_CODE_MIDDLE_idx = idx + 4;
-
-// 	g_af_code_macro = zhuquec1front_eeprom_common_data.data[AF_CODE_MACRO_idx + 1] << 8 |
-// 		zhuquec1front_eeprom_common_data.data[AF_CODE_MACRO_idx];
-// 	g_af_code_infinity = zhuquec1front_eeprom_common_data.data[AF_CODE_INFINITY_idx + 1] << 8 |
-// 		zhuquec1front_eeprom_common_data.data[AF_CODE_INFINITY_idx];;
-// 	g_af_code_middle = zhuquec1front_eeprom_common_data.data[AF_CODE_MIDDLE_idx + 1] << 8 |
-// 		zhuquec1front_eeprom_common_data.data[AF_CODE_MIDDLE_idx];;
-
-// 	for (idx = 0; idx < 64; idx = idx + 4)
-// 		LOG_INF("In %s:common data: %02x %02x %02x %02x\n", __func__,
-// 			zhuquec1front_eeprom_common_data.data[idx], zhuquec1front_eeprom_common_data.data[idx + 1],
-// 			zhuquec1front_eeprom_common_data.data[idx + 2],
-// 			zhuquec1front_eeprom_common_data.data[idx + 3]);
-// }
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA9,
-	.i2c_write_id = 0xA8,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-// static struct SENSOR_OTP_INFO_STRUCT cloud_otp_info[OPLUS_CAM_CAL_DATA_MAX] = {
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 17}}, /*{addr_modinfo, addr_modinfolen}*/
-// 	}, /*OPLUS_CAM_CAL_DATA_MODULE_VERSION*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 17}}, /*{addr_modinfo, addr_modinfolen}*/
-// 	}, /*OPLUS_CAM_CAL_DATA_PART_NUMBER*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0c00, 1868}},
-// 	}, /*OPLUS_CAM_CAL_DATA_SHADING_TABLE--LSC*/
-// 	{
-// 		.OtpInfoLen = 5,
-// 		.OtpInfo = {{0x0020, 16}, {0x0044, 16}, {0x0060, 4}, {0x006c, 4}, {0x0092, 6}},
-// 		.isAFCodeOffset = KAL_FALSE,
-// 	}, /*OPLUS_CAM_CAL_DATA_3A_GAIN-awb5000\awb2850\awb5000Light\awb2850light\af*/
-// 	{
-// 		.OtpInfoLen = 2,
-// 		.OtpInfo = {{0x1400, 496}, {0x1600, 1004}},
-// 	}, /*OPLUS_CAM_CAL_DATA_PDAF*/
-// 	{
-// 		.OtpInfoLen = 8,
-// 		.OtpInfo = {{0x0000, 17}, {0x0006, 2}, {0x0008, 2}, {0x000a, 2}, {0x0092, 7}, {0x0092, 2}, {0x0094, 2}, {0x00b0, 24}},
-// 		.isAFCodeOffset = KAL_FALSE,
-// 	}, /*OPLUS_CAM_CAL_DATA_CAMERA_INFO-modid\sensor\lens\vcmid\af\macpos\infpos\qrcode\*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0008, 2}},
-// 	}, /*OPLUS_CAM_CAL_DATA_DUMP*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0008, 2}},
-// 	}, /*OPLUS_CAM_CAL_DATA_LENS_ID*/
-// 	{
-// 		.OtpInfoLen = 0,
-// 	}, /*OPLUS_CAM_CAL_DATA_QSC*/
-// 	{
-// 		.OtpInfoLen = 0,
-// 	}, /*OPLUS_CAM_CAL_DATA_LRC*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 16384}},
-// 	}, /*OPLUS_CAM_CAL_DATA_ALL*/
-// };
-
-// static int zhuquec1front_get_cloud_otp_info(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u64 *feature_data = (u64 *)para;
-// 	struct SENSOR_OTP_INFO_STRUCT *cloudinfo;
-// 	LOG_INF("SENSOR_FEATURE_GET_CLOUD_OTP_INFO otp_type:%d", (UINT32)(*feature_data));
-// 	cloudinfo = (struct SENSOR_OTP_INFO_STRUCT *)(uintptr_t)(*(feature_data + 1));
-// 	switch (*feature_data) {
-// 	case OPLUS_CAM_CAL_DATA_MODULE_VERSION:
-// 	case OPLUS_CAM_CAL_DATA_PART_NUMBER:
-// 	case OPLUS_CAM_CAL_DATA_SHADING_TABLE:
-// 	case OPLUS_CAM_CAL_DATA_3A_GAIN:
-// 	case OPLUS_CAM_CAL_DATA_PDAF:
-// 	case OPLUS_CAM_CAL_DATA_CAMERA_INFO:
-// 	case OPLUS_CAM_CAL_DATA_DUMP:
-// 	case OPLUS_CAM_CAL_DATA_LENS_ID:
-// 	case OPLUS_CAM_CAL_DATA_QSC:
-// 	case OPLUS_CAM_CAL_DATA_LRC:
-// 	case OPLUS_CAM_CAL_DATA_ALL:
-// 		memcpy((void *)cloudinfo, (void *)&cloud_otp_info[*feature_data], sizeof(struct SENSOR_OTP_INFO_STRUCT));
-// 		break;
-// 	default:
-// 		break;
-// 	}
-// 	return 0;
-// }
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int zhuquec1front_get_eeprom_comdata(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	// u32 *feature_return_para_32 = (u32 *)para;
-	struct oplus_eeprom_info_struct* infoPtr;
-	LOG_INF("+");
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-
-	// if(*len == sizeof(zhuquec1front_eeprom_common_data)) {
-	// 	memcpy(feature_return_para_32, &zhuquec1front_eeprom_common_data,
-	// 	sizeof(zhuquec1front_eeprom_common_data));
-	// }
-	return 0;
-}
-
-// static int zhuquec1front_set_af_code_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	g_af_code_macro = (u16)((u64*)para)[0];
-// 	g_af_code_infinity = (u16)((u64*)para)[1];
-// 	LOG_INF("g_af_code_macro(%d), g_af_code_infinity(%d)", g_af_code_macro, g_af_code_infinity);
-// 	return 0;
-// }
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, ZHUQUEC1FRONT_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "jn5 read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "jn5 read_otp_info end\n");
-}
-
-static int zhuquec1front_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	u32 length = sizeof(otp_data_checksum);
-
-	if(*len < sizeof(otp_data_checksum)) {
-		length = *len;
-	}
-	DRV_LOGE(ctx, "get otp data length:0x%x", length);
-
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, length);
-	return 0;
-}
-
-static int zhuquec1front_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-// static int zhuquec1front_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u32 *feature_return_para_32 = (u32 *)para;
-// 	*len = ZHUQUEC1FRONT_UNIQUE_SENSOR_ID_LENGTH;
-// 	memcpy(feature_return_para_32, zhuquec1front_unique_id,
-// 		ZHUQUEC1FRONT_UNIQUE_SENSOR_ID_LENGTH);
-// 	LOG_INF("para :%x, get unique sensorid", *para);
-// 	return 0;
-// }
-
-// static void read_unique_sensorid(struct subdrv_ctx *ctx)
-// {
-// 	kal_uint8 i = 0;
-// 	LOG_INF("read sensor unique sensorid");
-// 	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-// 		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-// 		subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-// 		subdrv_i2c_wr_u16(ctx, 0x0100, 0x0100);
-// 		mdelay(30);
-// 		subdrv_i2c_wr_u16(ctx, 0x0A02, 0x0000);
-// 		subdrv_i2c_wr_u16(ctx, 0x0A00, 0x0100);
-// 		mdelay(1);
-// 		if (adaptor_i2c_rd_p8(ctx->i2c_client, ctx->i2c_write_id >> 1, ZHUQUEC1FRONT_UNIQUE_SENSOR_ID_ADDR,
-// 			&(zhuquec1front_unique_id[0]), ZHUQUEC1FRONT_UNIQUE_SENSOR_ID_LENGTH) < 0) {
-// 			LOG_INF("Read sensor unique sensorid fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-// 		}
-// 		i++;
-// 	}
-// }
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOGE(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x38E5) {
-				get_imgsensor_id_from_dts(ctx, sensor_id);
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					g_af_code_macro =    (((kal_uint16)oplus_eeprom_info.afInfo[1] << 8) & 0xFF00) | ((kal_uint16)oplus_eeprom_info.afInfo[0] & 0x00FF);
-					g_af_code_infinity = (((kal_uint16)oplus_eeprom_info.afInfo[3] << 8) & 0xFF00) | (kal_uint16)(oplus_eeprom_info.afInfo[2] & 0x00FF);
-					//read_unique_sensorid(ctx);
-					first_read = FALSE;
-					subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-					module_flag = subdrv_i2c_rd_u16(ctx, 0x0010);
-
-					msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-					if(!msg_buf) {
-						LOG_INF("boot stage, malloc msg_buf error");
-					}
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOG(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-	if((module_flag & 0xFF00) == 0x0700) {
-		DRV_LOGE(ctx, "module_flag = 0x%x, new module\n", module_flag);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1front_sensor_init_pre_setting1, ARRAY_SIZE(zhuquec1front_sensor_init_pre_setting1));
-		mdelay(5);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1front_sensor_init_pre_setting2, ARRAY_SIZE(zhuquec1front_sensor_init_pre_setting2));
-		mdelay(5);
-		zhuquec1front_i2c_burst_wr_regs_u16(ctx, zhuquec1front_sensor_simple_init_setting_0x07xx, ARRAY_SIZE(zhuquec1front_sensor_simple_init_setting_0x07xx));
-	} else if (module_flag == 0x010F || module_flag == 0x011F || (module_flag & 0xFF00) == 0x0200){
-		DRV_LOGE(ctx, "module_flag = 0x%x, modules with OTP data\n", module_flag);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1front_sensor_init_pre_setting1, ARRAY_SIZE(zhuquec1front_sensor_init_pre_setting1));
-		mdelay(5);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1front_sensor_init_pre_setting2, ARRAY_SIZE(zhuquec1front_sensor_init_pre_setting2));
-		mdelay(5);
-		zhuquec1front_i2c_burst_wr_regs_u16(ctx, zhuquec1front_sensor_simple_init_setting, ARRAY_SIZE(zhuquec1front_sensor_simple_init_setting));
-	} else {
-		DRV_LOGE(ctx, "module_flag = 0x%x, modules without OTP data\n", module_flag);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1front_sensor_init_pre_setting1, ARRAY_SIZE(zhuquec1front_sensor_init_pre_setting1));
-		mdelay(5);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1front_sensor_init_pre_setting2, ARRAY_SIZE(zhuquec1front_sensor_init_pre_setting2));
-		mdelay(5);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1front_sensor_init_setting, ARRAY_SIZE(zhuquec1front_sensor_init_setting));
-	};
-	DRV_LOGE(ctx, "setting end\n");
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return gain * 32 / BASEGAIN;
-}
-
-static bool test_pattern_change = false;
-static int zhuquec1front_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern) {
-
-		LOG_INF("mode(%u->%u)\n", ctx->test_pattern, mode);
-		test_pattern_change = true;
-
-		/* 1:Solid Color 2:Color Bar 5:Black */
-		if (mode) {
-			if (mode == 5) {
-				//subdrv_i2c_wr_u16(ctx, 0x0600, 0x0001); /*black*/
-				subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-				subdrv_i2c_wr_u16(ctx, 0x020C, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x020E, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0210, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0212, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0214, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0230, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0232, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0234, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0236, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0240, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0242, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0244, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0246, 0x0000);
-			} else {
-				subdrv_i2c_wr_u16(ctx, 0x0600, mode); /*100% Color bar*/
-			}
-		} else {
-			if (ctx->test_pattern) {
-				subdrv_i2c_wr_u16(ctx, 0x0600, 0x0000); /*No pattern*/
-				subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-				subdrv_i2c_wr_u16(ctx, 0x020C, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x020E, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0210, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0212, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0214, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0230, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0232, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0234, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0236, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0240, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0242, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0244, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0246, 0x0100);
-			}
-		}
-		ctx->test_pattern = mode;
-	}
-	return 0;
-}
-
-static int zhuquec1front_set_test_pattern_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct mtk_test_pattern_data *data = (struct mtk_test_pattern_data *)para;
-
-	if(test_pattern_change && ctx->test_pattern) {
-		u16 R = (data->Channel_R >> 22) & 0x3ff;
-		u16 Gr = (data->Channel_R >> 22) & 0x3ff;
-		u16 Gb = (data->Channel_R >> 22) & 0x3ff;
-		u16 B = (data->Channel_R >> 22) & 0x3ff;
-
-		subdrv_i2c_wr_u16(ctx, 0x0602, Gr);
-		subdrv_i2c_wr_u16(ctx, 0x0604, R);
-		subdrv_i2c_wr_u16(ctx, 0x0606, B);
-		subdrv_i2c_wr_u16(ctx, 0x0608, Gb);
-
-		test_pattern_change = false;
-
-		LOG_INF("mode(%u) R/Gr/Gb/B = 0x%04x/0x%04x/0x%04x/0x%04x\n",
-			ctx->test_pattern, R, Gr, Gb, B);
-	}
-	return 0;
-}
-
-static int zhuquec1front_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *) para;
-//	u32 fine_integ_line = 0;
-//	u32 cit_step = 0;
-//	u32 rg_shutter = 0;
-//	u32 prsh_length_lines = 0;
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return 0;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	LOG_INF("E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-
-//	if (!ctx->extend_frame_length_en)
-//		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-//	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return 0;
-	}
-
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return 0;
-	}
-
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return 0;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;	
-	ctx->is_seamless = TRUE;
-	update_mode_info(ctx, scenario_id);
-
-	set_group_hold(ctx, 1);
-	commit_i2c_buffer(ctx);
-
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			zhuquec1front_set_multi_shutter_frame_length(ctx, (u64*)&ae_ctrl->exposure, exp_cnt, 0);
-			zhuquec1front_set_multi_gain(ctx,(u32*)&ae_ctrl->gain, exp_cnt);
-			break;
-		default:
-			zhuquec1front_set_shutter_convert(ctx, ae_ctrl->exposure.le_exposure);
-			zhuquec1front_set_gain_convert(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	LOG_INF("write seamless switch para done\n");
-
-	set_group_hold(ctx, 0);
-	commit_i2c_buffer(ctx);
-
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	LOG_INF("X: set seamless switch done\n");
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-void zhuquec1front_write_frame_length(struct subdrv_ctx *ctx, u32 fll)
-{
-	u32 addr_h = ctx->s_ctx.reg_addr_frame_length.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_frame_length.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_frame_length.addr[2];
-	u32 fll_step = 0;
-	u32 dol_cnt = 1;
-
-	check_current_scenario_id_bound(ctx);
-
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode) {
-	case HDR_RAW_STAGGER:
-		dol_cnt = ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt;
-		break;
-	default:
-		break;
-	}
-
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	ctx->frame_length = fll;
-
-	if (fll_step)
-		fll = round_up(fll, fll_step);
-
-	if (ctx->extend_frame_length_en == FALSE) {
-		if (addr_ll) {
-			set_i2c_buffer(ctx,	addr_h,	(fll >> 16) & 0xFF);
-			set_i2c_buffer(ctx,	addr_l, (fll >> 8) & 0xFF);
-			set_i2c_buffer(ctx,	addr_ll, fll & 0xFF);
-		} else {
-			set_i2c_buffer(ctx,	addr_h, (fll >> 8) & 0xFF);
-			set_i2c_buffer(ctx,	addr_l, fll & 0xFF);
-		}
-	}
-	LOG_INF("fll[0x%x] multiply %u, fll_step:%u ctx->extend_frame_length_en:%d\n",
-		fll, dol_cnt, fll_step, ctx->extend_frame_length_en);
-}
-
-static void zhuquec1front_set_multi_gain(struct subdrv_ctx *ctx, u32 *gains, u16 exp_cnt)
-{
-	int i = 0;
-	u16 rg_gains[3] = {0};
-	u8 has_gains[3] = {0};
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 ana_gain_min = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_min : ctx->ana_gain_min;
-	u32 ana_gain_max = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max : ctx->ana_gain_max;
-
-	if(exp_cnt == 2) {
-		LOG_INF("gains[0]:%u, gains[1]:%u, exp_cnt:%d ana_gain_min:%d ana_gain_max:%d\n",
-			gains[0], gains[1], exp_cnt, ana_gain_min, ana_gain_max);
-	} else {
-		LOG_INF("gains[0]:%u, exp_cnt:%d ana_gain_min:%d ana_gain_max:%d\n",
-			gains[0], exp_cnt, ana_gain_min, ana_gain_max);
-	}
-	if (exp_cnt > ARRAY_SIZE(ctx->ana_gain)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%d>%lu\n", exp_cnt, ARRAY_SIZE(ctx->ana_gain));
-		exp_cnt = ARRAY_SIZE(ctx->ana_gain);
-	}
-	for (i = 0; i < exp_cnt; i++) {
-		/* check boundary of gain */
-		gains[i] = max(gains[i], ana_gain_min);
-		gains[i] = min(gains[i], ana_gain_max);
-		/* mapping of gain to register value */
-		if (ctx->s_ctx.g_gain2reg != NULL)
-			gains[i] = ctx->s_ctx.g_gain2reg(gains[i]);
-		else
-			gains[i] = gain2reg(gains[i]);
-	}
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->ana_gain[i] = gains[i];
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	memset(has_gains, 1, sizeof(has_gains));
-	switch (exp_cnt) {
-	case 2:
-		has_gains[1] = 0;
-//		rg_gains[0] = gains[0];
-//		rg_gains[2] = gains[1];
-		rg_gains[0] = gains[1];
-		rg_gains[2] = gains[0];
-		break;
-	case 3:
-//		rg_gains[0] = gains[0];
-		rg_gains[0] = gains[2];
-		rg_gains[1] = gains[1];
-//		rg_gains[2] = gains[2];
-		rg_gains[2] = gains[0];
-		break;
-	default:
-		has_gains[0] = 0;
-		has_gains[1] = 0;
-		has_gains[2] = 0;
-		break;
-	}
-	for (i = 0; i < 3; i++) {
-		if (has_gains[i]) {
-			set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[i].addr[0],
-				(rg_gains[i] >> 8) & 0xFF);
-			set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[i].addr[1],
-				rg_gains[i] & 0xFF);
-		}
-	}
-	LOG_INF("reg[sg/mg/lg]: 0x%x 0x%x 0x%x\n", rg_gains[0], rg_gains[1], rg_gains[2]);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-}
-
-static void zhuquec1front_set_hdr_tri_gain(struct subdrv_ctx *ctx, u64 *gains, u16 exp_cnt)
-{
-	int i = 0;
-	u32 values[3] = {0};
-
-	if (gains != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u32) *(gains + i);
-	}
-	zhuquec1front_set_multi_gain(ctx,	values, exp_cnt);
-}
-
-static int zhuquec1front_set_hdr_tri_gain2(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-
-	u64 *feature_data = (u64 *) para;
-	zhuquec1front_set_hdr_tri_gain(ctx, feature_data, 2);
-	return 0;
-}
-
-static int zhuquec1front_set_hdr_tri_gain3(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	u64 *feature_data = (u64 *) para;
-	zhuquec1front_set_hdr_tri_gain(ctx, feature_data, 3);
-	return 0;
-}
-
-static void zhuquec1front_set_multi_shutter_frame_length(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt, u16 frame_length)
-{
-	int i = 0;
-	u32 fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[3] = {0};
-//	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-	u8 exposure_margin = ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin : ctx->s_ctx.exposure_margin;
-
-	if (exp_cnt == 2) {
-		LOG_INF("shutter[0]:%llu, shutter[1]:%llu, exp_cnt:%d, frame_length:%u exposure_margin:%d cit_step:%d\n",
-			shutters[0], shutters[1], exp_cnt, frame_length, exposure_margin, cit_step);
-		if (shutters[1] > shutters[0]) {
-			LOG_INF("error short shutter > long shutter");
-			shutters[1] = shutters[0];
-		}
-	} else {
-		LOG_INF("shutter[0]:%llu, exp_cnt:%d, frame_length:%u, exposure_margin:%d cit_step:%d\n",
-			shutters[0], exp_cnt, frame_length, exposure_margin, cit_step);
-	}
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%d>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max(shutters[i], (u64)ctx->s_ctx.exposure_min);
-		shutters[i] = min(shutters[i], (u64)ctx->s_ctx.exposure_max);
-		if (cit_step)
-			shutters[i] = round_up(shutters[i], cit_step);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */
-//	calc_fl[0] = shutters[0];
-//	for (i = 1; i < last_exp_cnt; i++)
-//		calc_fl[0] += ctx->exposure[i];
-//	calc_fl[0] += ctx->s_ctx.exposure_margin * exp_cnt * exp_cnt;
-
-	/* - (2) current se + current me + current le */
-	calc_fl[1] = shutters[0];
-	for (i = 1; i < exp_cnt; i++)
-		calc_fl[1] += shutters[i];
-	calc_fl[1] += exposure_margin * exp_cnt;
-
-//	/* - (3) readout time cannot be overlapped */
-//	calc_fl[2] =
-//		(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-//		ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-
-//	if (last_exp_cnt == exp_cnt)
-//		for (i = 1; i < exp_cnt; i++) {
-//			readout_diff = ctx->exposure[i] - shutters[i];
-//			calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-//		}
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		ctx->frame_length = max(ctx->frame_length, calc_fl[i]);
-
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = shutters[i];
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		zhuquec1front_write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = shutters[0];
-		break;
-	case 2:
-		rg_shutters[0] = shutters[1];
-		rg_shutters[2] = shutters[0];
-		break;
-	case 3:
-		rg_shutters[0] = shutters[2];
-		rg_shutters[1] = shutters[1];
-		rg_shutters[2] = shutters[0];
-		break;
-	default:
-		break;
-	}
-//	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED)
-//		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-
-	if (bNeedSetNormalMode) {
-		LOG_INF("exit long exposure\n");
-		set_i2c_buffer(ctx, 0x0702, 0x00);
-		set_i2c_buffer(ctx, 0x0704, 0x00);
-		bNeedSetNormalMode = FALSE;
-	}
-
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[2],
-					rg_shutters[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					rg_shutters[i] & 0xFF);
-			}
-		}
-	}
-	LOG_INF("exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-
-	zhuquec1front_lens_pos_writeback(ctx);
-
-}
-
-static int zhuquec1front_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1front_set_multi_shutter_frame_length(ctx, (u64 *)(*feature_data),
-		(u64) (*(feature_data + 1)), (u64) (*(feature_data + 2)));
-	return 0;
-}
-
-static void zhuquec1front_set_hdr_tri_shutter(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt)
-{
-	int i = 0;
-	u64 values[3] = {0};
-
-	if (shutters != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u64) *(shutters + i);
-	}
-	zhuquec1front_set_multi_shutter_frame_length(ctx, values, exp_cnt, 0);
-}
-
-static int zhuquec1front_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1front_set_hdr_tri_shutter(ctx, feature_data, 2);
-	return 0;
-}
-
-static int zhuquec1front_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1front_set_hdr_tri_shutter(ctx, feature_data, 3);
-	return 0;
-}
-
-bool zhuquec1front_set_long_exposure(struct subdrv_ctx *ctx,  u64 shutter)
-{
-	u16 l_shift = 0;
-	u8 exposure_margin = ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin : ctx->s_ctx.exposure_margin;
-
-	if (shutter > (ctx->s_ctx.frame_length_max - exposure_margin)) {
-		if (ctx->s_ctx.long_exposure_support == FALSE) {
-			DRV_LOGE(ctx, "sensor no support of exposure lshift!\n");
-			return FALSE;
-		}
-		if (ctx->s_ctx.reg_addr_exposure_lshift == PARAM_UNDEFINED) {
-			DRV_LOGE(ctx, "please implement lshift register address\n");
-			return FALSE;
-		}
-		for (l_shift = 1; l_shift < 7; l_shift++) {
-			if ((shutter >> l_shift)
-				< (ctx->s_ctx.frame_length_max - exposure_margin))
-				break;
-		}
-		if (l_shift > 7) {
-			DRV_LOGE(ctx, "unable to set exposure:%llu, set to max\n", shutter);
-			l_shift = 7;
-		}
-		shutter = shutter >> l_shift;
-//		if (!ctx->s_ctx.reg_addr_auto_extend)
-//			ctx->frame_length = shutter + exposure_margin;
-		LOG_INF("long exposure mode: lshift %u times   shutter:%llu", l_shift, shutter);
-
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_frame_length.addr[0], (shutter >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_frame_length.addr[1],  shutter & 0xFF);
-
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0], (shutter >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],  shutter & 0xFF);
-
-		set_i2c_buffer(ctx, 0x0702, l_shift);
-		set_i2c_buffer(ctx, 0x0704, l_shift);
-
-		bNeedSetNormalMode = TRUE;
-		/* Frame exposure mode customization for LE*/
-		ctx->ae_frm_mode.frame_mode_1 = IMGSENSOR_AE_MODE_SE;
-		ctx->ae_frm_mode.frame_mode_2 = IMGSENSOR_AE_MODE_SE;
-//		ctx->current_ae_effective_frame = 2;
-		return TRUE;
-
-	} else {
-		if (bNeedSetNormalMode) {
-			LOG_INF("exit long exposure\n");
-			set_i2c_buffer(ctx, 0x0702, 0x00);
-			set_i2c_buffer(ctx, 0x0704, 0x00);
-			bNeedSetNormalMode = FALSE;
-		}
-		return FALSE;
-//		ctx->current_ae_effective_frame = 2;
-	}
-
-//	ctx->exposure[IMGSENSOR_STAGGER_EXPOSURE_LE] = shutter;
-	return FALSE;
-}
-static void zhuquec1front_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length)
-{
-	u32 fine_integ_line = 0;
-	u32 cit_step = 0;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u8 exposure_margin = ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin : ctx->s_ctx.exposure_margin;
-	LOG_INF("shutter:%llu, frame_length:%u  exposure_margin:%d\n", shutter, frame_length, exposure_margin);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	check_current_scenario_id_bound(ctx);
-	/* check boundary of shutter */
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	shutter = FINE_INTEG_CONVERT(shutter, fine_integ_line);
-	shutter = max(shutter, (u64)ctx->s_ctx.exposure_min);
-	shutter = min(shutter, (u64)ctx->s_ctx.exposure_max);
-	/* check boundary of framelength */
-
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	if (cit_step)
-		shutter = round_up(shutter, cit_step);
-
-	ctx->frame_length =	max(shutter + exposure_margin, ctx->frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->exposure[0] = shutter;
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-
-	if(zhuquec1front_set_long_exposure(ctx, shutter)) {
-		goto exit;
-	}
-
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		zhuquec1front_write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	//set_long_exposure(ctx);
-	if (ctx->s_ctx.reg_addr_exposure[0].addr[2]) {
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0],
-			(ctx->exposure[0] >> 16) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],
-			(ctx->exposure[0] >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[2],
-			ctx->exposure[0] & 0xFF);
-	} else {
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0],
-			(ctx->exposure[0] >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],
-			ctx->exposure[0] & 0xFF);
-	}
-	LOG_INF("exp[0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		ctx->exposure[0], frame_length, ctx->frame_length, ctx->autoflicker_en);
-
-exit:
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-
-	zhuquec1front_lens_pos_writeback(ctx);
-
-}
-
-static int zhuquec1front_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
- 	zhuquec1front_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], ((u64*)para)[1]);
-	return 0;
-}
-
-static void zhuquec1front_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter)
-{
-    zhuquec1front_set_shutter_frame_length_convert(ctx, shutter, 0);
-}
-
-static int zhuquec1front_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	zhuquec1front_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], 0);
-	return 0;
-}
-
-static void zhuquec1front_set_gain_convert(struct subdrv_ctx *ctx, u32 gain)
-{
-	u16 rg_gain;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 ana_gain_min = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_min : ctx->ana_gain_min;
-	u32 ana_gain_max = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max : ctx->ana_gain_max;
-
-	LOG_INF("gain(%d) ana_gain_min(%d), ana_gain_max(%d)\n", gain, ana_gain_min, ana_gain_max);
-	/* check boundary of gain */
-	gain = max(gain, ana_gain_min);
-	gain = min(gain, ana_gain_max);
-
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-}
-
-static int zhuquec1front_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-	zhuquec1front_set_gain_convert(ctx, gain);
-	return 0;
-}
-
-void zhuquec1front_set_dummy(struct subdrv_ctx *ctx)
-{
-//	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-//
-//	if (gph)
-//		ctx->s_ctx.s_gph((void *)ctx, 1);
-//	zhuquec1front_write_frame_length(ctx, ctx->frame_length);
-//	if (gph)
-//		ctx->s_ctx.s_gph((void *)ctx, 0);
-//
-//	commit_i2c_buffer(ctx);
-}
-
-static int zhuquec1front_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = (u32)((u64*)para)[0];
-	u32 framerate = (u32)((u64*)para)[1];
-	u32 frame_length;
-	u32 frame_length_step;
-
-	LOG_INF("scenario_id(%d), framerate(%d)", scenario_id, framerate);
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOG(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-	}
-
-	if (framerate == 0) {
-		DRV_LOG(ctx, "framerate (%u) is invalid\n", framerate);
-		return 0;
-	}
-
-	if (ctx->s_ctx.mode[scenario_id].linelength == 0) {
-		DRV_LOG(ctx, "linelength (%u) is invalid\n",
-			ctx->s_ctx.mode[scenario_id].linelength);
-		return 0;
-	}
-
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	ctx->frame_length =
-		max(frame_length, ctx->s_ctx.mode[scenario_id].framelength);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	ctx->min_frame_length = ctx->frame_length;
-	LOG_INF("max_fps(input/output):%u/%u(sid:%u), min_fl_en:1\n",
-		framerate, ctx->current_fps, scenario_id);
-	if (ctx->s_ctx.reg_addr_auto_extend ||
-			(ctx->frame_length > (ctx->exposure[0] + ctx->s_ctx.exposure_margin))){
-		zhuquec1front_set_dummy(ctx);
-	}
-	return 0;
-}
-
-void zhuquec1front_set_max_framerate(struct subdrv_ctx *ctx, u16 framerate, bool min_framelength_en)
-{
-	u32 frame_length = 0;
-
-	if (framerate && ctx->line_length)
-		frame_length = ctx->pclk / framerate * 10 / ctx->line_length;
-	ctx->frame_length = max(frame_length, ctx->min_frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	if (ctx->frame_length && ctx->line_length)
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	if (min_framelength_en)
-		ctx->min_frame_length = ctx->frame_length;
-	DRV_LOG(ctx, "max_fps(input/output):%u/%u, min_fl_en:%u\n",
-		framerate, ctx->current_fps, min_framelength_en);
-}	/*	set_max_framerate  */
-
-void zhuquec1front_extend_frame_length_convert(struct subdrv_ctx *ctx, u32 ns)
-{
-	return ;
-}
-
-static int zhuquec1front_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 ns = (u32)((u64*)para)[0];
-
-	zhuquec1front_extend_frame_length_convert(ctx, ns);
-	return 0;
-}
-
-bool zhuquec1front_set_auto_flicker(struct subdrv_ctx *ctx, bool min_framelength_en)
-{
-	u16 framerate = 0;
-
-	if (!ctx->line_length) {
-		DRV_LOGE(ctx, "line_length(%u) is invalid\n", ctx->line_length);
-		return FALSE;
-	}
-
-	if (!ctx->frame_length) {
-		DRV_LOGE(ctx, "frame_length(%u) is invalid\n", ctx->frame_length);
-		return FALSE;
-	}
-
-	framerate = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-
-	DRV_LOG(ctx, "cur_fps:%u, flick_en:%u, min_fl_en:%u\n",
-		framerate, ctx->autoflicker_en, min_framelength_en);
-	if (!ctx->autoflicker_en)
-		return FALSE;
-
-	if (framerate > 592 && framerate <= 607)
-		zhuquec1front_set_max_framerate(ctx, 592, min_framelength_en);
-	else if (framerate > 296 && framerate <= 305)
-		zhuquec1front_set_max_framerate(ctx, 296, min_framelength_en);
-	else if (framerate > 246 && framerate <= 253)
-		zhuquec1front_set_max_framerate(ctx, 246, min_framelength_en);
-	else if (framerate > 236 && framerate <= 243)
-		zhuquec1front_set_max_framerate(ctx, 236, min_framelength_en);
-	else if (framerate > 146 && framerate <= 153)
-		zhuquec1front_set_max_framerate(ctx, 146, min_framelength_en);
-	else
-		return FALSE;
-	return TRUE;
-}
-
-static int zhuquec1front_set_video_mode(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u16 framerate = (u32)((u64*)para)[0];
-
-	if (!framerate)
-		return 0;
-	zhuquec1front_set_max_framerate(ctx, framerate, 0);
-	zhuquec1front_set_auto_flicker(ctx, 1);
-	zhuquec1front_set_dummy(ctx);
-	LOG_INF("fps(input/max):%u/%u\n", framerate, ctx->current_fps);
-	return 0;
-}
-
-
-
-static int zhuquec1front_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D82, awb_gain->ABS_GAIN_R * 2); //red 1024(1x)
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D86, awb_gain->ABS_GAIN_B * 2); //blue
-
-	DRV_LOG(ctx, "ABS_GAIN_GR(%d) ABS_GAIN_R(%d) ABS_GAIN_B(%d) ABS_GAIN_GB(%d)",
-		awb_gain->ABS_GAIN_GR, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B, awb_gain->ABS_GAIN_GB);
-
-	return 0;
-}
-
-static bool dump_i2c_enable = false;
-
-static void dump_i2c_buf(struct subdrv_ctx *ctx, u8 * buf, u32 length)
-{
-	int i;
-	char *out_str = NULL;
-	char *strptr = NULL;
-	size_t buf_size = SUBDRV_I2C_BUF_SIZE * sizeof(char);
-	size_t remind = buf_size;
-	int num = 0;
-
-	out_str = kzalloc(buf_size + 1, GFP_KERNEL);
-	if (!out_str)
-		return;
-
-	strptr = out_str;
-	memset(out_str, 0, buf_size + 1);
-
-	num = snprintf(strptr, remind,"[ ");
-	remind -= num;
-	strptr += num;
-
-	for (i = 0 ; i < length; i ++) {
-		num = snprintf(strptr, remind,"0x%02x, ", buf[i]);
-
-		if (num <= 0) {
-			DRV_LOG(ctx, "snprintf return negative at line %d\n", __LINE__);
-			kfree(out_str);
-			return;
-		}
-
-		remind -= num;
-		strptr += num;
-
-		if (remind <= 20) {
-			DRV_LOG(ctx, " write %s\n", out_str);
-			memset(out_str, 0, buf_size + 1);
-			strptr = out_str;
-			remind = buf_size;
-		}
-	}
-
-	num = snprintf(strptr, remind," ]");
-	remind -= num;
-	strptr += num;
-
-	DRV_LOG(ctx, " write %s\n", out_str);
-	strptr = out_str;
-	remind = buf_size;
-
-	kfree(out_str);
-}
-
-static int zhuquec1front_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx, u16 * list, u32 len)
-{
-	adapter_i2c_burst_wr_regs_u16(ctx, ctx->i2c_write_id >> 1, list, len);
-	return 	0;
-}
-
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx ,
-		u16 addr, u16 *list, u32 len)
-{
-	struct i2c_client *i2c_client = ctx->i2c_client;
-	struct i2c_msg  msg;
-	struct i2c_msg *pmsg = &msg;
-
-	u8 *pbuf = NULL;
-	u16 *plist = NULL;
-	u16 *plist_end = NULL;
-
-	u32 sent = 0;
-	u32 total = 0;
-	u32 per_sent = 0;
-	int ret, i;
-
-	if(!msg_buf) {
-		LOG_INF("malloc msg_buf retry");
-		msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-		if(!msg_buf) {
-			LOG_INF("malloc error");
-			return -ENOMEM;
-		}
-	}
-
-	/* each msg contains addr(u16) + val(u16 *) */
-	sent = 0;
-	total = len / 2;
-	plist = list;
-	plist_end = list + len - 2;
-
-	DRV_LOG(ctx, "len(%u)  total(%u)", len, total);
-
-	while (sent < total) {
-
-		per_sent = 0;
-		pmsg = &msg;
-		pbuf = msg_buf;
-
-		pmsg->addr = addr;
-		pmsg->flags = i2c_client->flags;
-		pmsg->buf = pbuf;
-
-		pbuf[0] = plist[0] >> 8;    //address
-		pbuf[1] = plist[0] & 0xff;
-
-		pbuf[2] = plist[1] >> 8;  //data 1
-		pbuf[3] = plist[1] & 0xff;
-
-		pbuf += 4;
-		pmsg->len = 4;
-		per_sent += 1;
-
-		for (i = 0; i < total - sent - 1; i++) {  //Maximum number of remaining cycles - 1
-			if(plist[0] + 2 == plist[2] ) {  //Addresses are consecutive
-				pbuf[0] = plist[3] >> 8;
-				pbuf[1] = plist[3] & 0xff;
-
-				pbuf += 2;
-				pmsg->len += 2;
-				per_sent += 1;
-				plist += 2;
-
-				if(pmsg->len >= MAX_BURST_LEN) {
-					break;
-				}
-			}
-		}
-		plist += 2;
-
-		if(dump_i2c_enable) {
-			DRV_LOG(ctx, "pmsg->len(%d) buff: ", pmsg->len);
-			dump_i2c_buf(ctx, msg_buf, pmsg->len);
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmsg, 1);
-
-		if (ret < 0) {
-			dev_info(&i2c_client->dev,
-				"i2c transfer failed (%d)\n", ret);
-			return -EIO;
-		}
-
-		sent += per_sent;
-
-		DRV_LOG(ctx, "sent(%u)  total(%u)  per_sent(%u)", sent, total, per_sent);
-	}
-
-	return 0;
-}
-
-#define ZHUQUEC1FRONT_AF_READ_ID  (0x19)  //dw9800s
-#define ZHUQUEC1FRONT_AF_POSITON_ADD  (0x03)
-
-static bool read_af_pos(struct subdrv_ctx *ctx, u16 *positon)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-	struct i2c_client *i2c_client = ctx->i2c_client;
-
-	buf[0] = ZHUQUEC1FRONT_AF_POSITON_ADD;
-
-	msg[0].addr = ZHUQUEC1FRONT_AF_READ_ID >> 1;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = 1;
-
-	msg[1].addr  = ZHUQUEC1FRONT_AF_READ_ID >> 1;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 2;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return false;
-	}
-
-	*positon = ((u16)buf[0] << 8) | buf[1];
-
-	return true;
-}
-
-static u16 lens_position_setting[] = {
-	0xFCFC, 0x2001,
-	0x2566, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static void zhuquec1front_lens_pos_writeback(struct subdrv_ctx *ctx)
-{
-	static kal_uint16 pre_af_pos = -1;
-	kal_uint16 af_pos = 0;
-	kal_uint16 write_pos = 0;
-	kal_uint16 write_pos_cover = 0;
-
-	bool ret;
-
-	if (ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM3 ||  // RMSC
-		ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM5) { // izoom
-
-		ret = read_af_pos(ctx, &af_pos);
-		if(ret == false || g_af_code_macro == 0 || g_af_code_infinity == 0 || g_af_code_macro == g_af_code_infinity) {
-			pr_err("%s ret(%d) ",__func__, ret);
-			return ;
-		}
-
-		if(pre_af_pos == af_pos) {
-			DRV_LOG(ctx,"%s same af positon", __func__);
-			return ;
-		}
-		pre_af_pos = af_pos;
-
-		if(af_pos < g_af_code_infinity) {
-			af_pos = g_af_code_infinity;
-		}
-		if(af_pos > g_af_code_macro) {
-			af_pos = g_af_code_macro;
-		}
-
-		write_pos = (u32)(af_pos - g_af_code_infinity) * 1023 / (g_af_code_macro - g_af_code_infinity);
-
-		write_pos_cover = ((write_pos >> 8) & 0xff) | ((write_pos << 8) & 0xff00);
-
-		lens_position_setting[3] = write_pos_cover;
-
-		DRV_LOG(ctx,"%s af_pos(%d), write_pos(0x%x) write_pos_cover(0x%x)",
-			__func__, af_pos, write_pos, write_pos_cover);
-
-		subdrv_i2c_wr_regs_u16(ctx, lens_position_setting, ARRAY_SIZE(lens_position_setting));
-	}
-}
-
-static int zhuquec1front_set_register(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	subdrv_i2c_wr_u16(ctx, 0x6028, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr>>16);
-	subdrv_i2c_wr_u16(ctx, 0x602A, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr);
-	subdrv_i2c_wr_u16(ctx, 0x6F12, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-	pr_err("Indirect write RegAddr: 0x%08x, RegData: 0x%04x \n",
-		((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-	return 0;
-}
-
-static int zhuquec1front_get_register(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	subdrv_i2c_wr_u16(ctx, 0x602C, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr>>16);
-	subdrv_i2c_wr_u16(ctx, 0x602E, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr);
-	((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData = subdrv_i2c_rd_u16(ctx, 0x6F12);
-	pr_err("Indirect read  RegAddr: 0x%08x, RegData: 0x%04x \n",
-		((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-	return 0;
-}
-
-
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id) {
-	struct subdrv_entry *m_subdrv_entry = &zhuquec1front_mipi_raw_entry;
-	u32 final_sensor_id = 0xFFFFFFFF;
-	const char *of_sensor_names[OF_SENSOR_NAMES_MAXCNT];
-	const char *of_sensor_hal_names[OF_SENSOR_NAMES_MAXCNT];
-	u32   of_sensor_ids[OF_SENSOR_NAMES_MAXCNT] = {0};
-	int i, index, of_sensor_names_cnt, of_sensor_hal_names_cnt, of_sensor_ids_ret;
-	struct device *dev = &ctx->i2c_client->dev;
-
-	memset(&of_sensor_ids, 0xFF, sizeof(of_sensor_ids));
-
-	if(g_id_from_dts_flag == false) {
-		of_sensor_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-names", of_sensor_names, ARRAY_SIZE(of_sensor_names));
-
-		of_sensor_hal_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-hal-names", of_sensor_hal_names, ARRAY_SIZE(of_sensor_hal_names));
-
-		of_sensor_ids_ret = of_property_read_u32_array(dev->of_node,
-				"sensor-ids", of_sensor_ids, of_sensor_names_cnt);
-
-		pr_err("%s of_sensor_names_cnt(%d), of_sensor_ids_ret(%d)",
-			__func__, of_sensor_names_cnt, of_sensor_ids_ret);
-		for(i = 0 ;i < of_sensor_names_cnt; i++) {
-				pr_err("%s of_sensor_names[%d] = %s  of_sensor_ids[%d] = %d",
-				__func__, i, of_sensor_names[i], i, of_sensor_ids[i]);
-		}
-		for(i = 0 ;i < of_sensor_hal_names_cnt; i++) {
-			pr_err("%s of_sensor_hal_names_cnt[%d] = %s",
-				__func__, i, of_sensor_hal_names[i]);
-		}
-
-		if (of_sensor_names_cnt && (of_sensor_ids_ret == 0)) {
-			for(index = 0; index < of_sensor_names_cnt; index++) {
-				if (strncmp(SENSOR_NAME, of_sensor_names[index], strlen(SENSOR_NAME)) == 0) {
-					final_sensor_id = of_sensor_ids[index];
-					break;
-				}
-			}
-		} else {
-			pr_err("%s sensor-ids error in dts", __func__);
-		}
-		g_id_from_dts_flag = true;
-	}
-
-	if(final_sensor_id != 0xFFFFFFFF) {
-		*sensor_id = final_sensor_id;
-		ctx->s_ctx.sensor_id = final_sensor_id;
-
-		m_subdrv_entry->id = final_sensor_id;
-		if(of_sensor_hal_names_cnt == of_sensor_names_cnt) {
-			m_subdrv_entry->name = of_sensor_hal_names[index];
-		}
-
-		pr_err("%s final index(%d), id(%d) name(%s)",
-			__func__, index, m_subdrv_entry->id, m_subdrv_entry->name);
-	} else {
-		*sensor_id = ctx->s_ctx.sensor_id;
-	}
-
-	return;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1frontmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1frontmipiraw_Sensor.h
deleted file mode 100755
index 3fbaf563..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1front_mipi_raw/zhuquec1frontmipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     zhuquefrontmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _ZHUQUEC1FRONTMIPI_SENSOR_H
-#define _ZHUQUEC1FRONTMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "zhuquec1front_ana_gain_table.h"
-#include "zhuquec1front_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/Makefile
deleted file mode 100755
index 591c76db..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/zhuquec1mainmipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/0_OV50E40_4096x3072_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x768_20250214.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/0_OV50E40_4096x3072_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x768_20250214.txt
deleted file mode 100755
index 40661d37..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/0_OV50E40_4096x3072_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x768_20250214.txt
+++ /dev/null
@@ -1,392 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 3072
-102 9c1 1000
-102 9c5 c00
-102 9c2 1000
-102 9c6 300
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 f9
-6c 350e 21
-6c 350f 80
-6c 3546 f9
-6c 354e 21
-6c 354f 80
-6c 3586 f9
-6c 358e 21
-6c 358f 80
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 04
-6c 3709 80
-6c 370b 55
-6c 370c 04
-6c 3712 50
-6c 3714 65
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 a0
-6c 3758 00
-6c 3759 50
-6c 375e 3b
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 55
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 18
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 18
-6c 380f 68
-6c 3811 07
-6c 3813 08
-6c 3815 11
-6c 3820 46
-6c 3821 11
-6c 3822 10
-6c 3823 04
-6c 3828 05
-6c 3830 07
-6c 3831 02
-6c 3837 07
-6c 383f 08
-6c 3846 00 ;;0214
-6c 3847 00 ;;0214
-6c 384c 01
-6c 384d 90
-6c 3889 08
-6c 388b 08
-6c 388c 10
-6c 388d 00
-6c 388e 0c
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 fb
-6c 3b02 02
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 0f
-6c 4018 07
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 15
-6c 450c 00
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 8e
-6c 45c1 80
-6c 45c2 0a
-6c 45c3 14
-6c 45c4 13
-6c 45c5 40
-6c 45c6 04
-6c 45dd 60
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 01
-6c 4641 00
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 0f
-6c 4918 07
-6c 491e 02
-6c 491f 80
-6c 4a16 0f
-6c 4a18 07
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 2b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 03
-6c c233 1e
-6c c245 02
-6c c246 03
-6c c247 1e
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 55
-6c c4a3 55
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 18
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-;VSYNC pad output
-6c 3002 80 ; 80 ;[7]=1, VSYNC pad output enable
-6c 3008 00 ; 80 ;[7]=0, VSYNC pad output from normal data path
-
-6c 382e 00 ; 30 ;[5:4] = 0, select long exposure VSYNC
-6c 368d 10    ;
-
-6c 3841 00 ;TIMING_ROW  (high byte)
-6c 381a 00 ;TIMING_ROW  (mid byte)
-6c 381b 1c ;TIMING_ROW  (low byte)
-6c 381c 01 ;TIMING_COL  (high byte)
-6c 381d 90 ;TIMING_COL  (low byte)
-6c 381e 00 ;TIMING_WIDTH (high byte)
-6c 381f 01 ;TIMING_WIDTH (low byte)
-6c 385b 00 ; 08 ;[3]=1, VSYNC output Low level
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/10_OV50E40_1088x612_4C1SCG_10bit_480fps_AG64_20250106.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/10_OV50E40_1088x612_4C1SCG_10bit_480fps_AG64_20250106.txt
deleted file mode 100755
index 68436e10..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/10_OV50E40_1088x612_4C1SCG_10bit_480fps_AG64_20250106.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 1088 612
-102 9c1 440
-102 9c5 264
-;102 9c2 1000
-;102 9c6 300
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 1
-110 40 1
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 f9
-6c 350e 1c
-6c 350f 40
-6c 3546 f9
-6c 354e 1c
-6c 354f 40
-6c 3586 f9
-6c 358e 1c
-6c 358f 40
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 00
-6c 3688 03
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 04
-6c 3709 80
-6c 370b 4a
-6c 370c 04
-6c 3712 50
-6c 3714 63
-6c 3715 00
-6c 3724 88 ;0107 dinu
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 50
-6c 375e 00
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 4a
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 07
-6c 3801 80
-6c 3802 07
-6c 3803 30
-6c 3804 18
-6c 3805 9f
-6c 3806 10
-6c 3807 ef
-6c 3808 04
-6c 3809 40
-6c 380a 02
-6c 380b 64
-6c 380c 00
-6c 380d ed
-6c 380e 02
-6c 380f 92
-6c 3811 03
-6c 3813 06
-6c 3815 31
-6c 3820 47
-6c 3821 11
-6c 3822 10
-6c 3823 04
-6c 3828 03
-6c 3830 05
-6c 3831 00
-6c 3837 05
-6c 383f 08
-6c 384c 00
-6c 384d ed
-6c 3889 04
-6c 388b 06
-6c 388c 04
-6c 388d 40
-6c 388e 02
-6c 388f 64
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 00
-6c 3b02 00
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 14
-6c 3b42 14
-6c 3b43 14
-6c 3b44 14
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa 00
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 07
-6c 4018 03
-6c 401e 01
-6c 401f 20
-6c 40c4 07
-6c 40c5 ff
-6c 40c6 07
-6c 40c7 ff
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 30
-6c 4510 00
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 00
-6c 451b 00
-6c 451c 00
-6c 451d 00
-6c 451e 00
-6c 451f 00
-6c 4520 00
-6c 4521 00
-6c 4542 00
-6c 4549 00
-6c 45c0 80
-6c 45c1 00
-6c 45c2 02
-6c 45c3 00
-6c 45c4 13
-6c 45c5 00
-6c 45c6 00
-6c 45dd 00
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 01
-6c 4641 00
-6c 4643 08
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 07
-6c 4918 03
-6c 491e 01
-6c 491f 20
-6c 4a16 07
-6c 4a18 03
-6c 4a1e 01
-6c 4a1f 20
-6c 5000 ab
-6c 5001 ca
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 01
-6c c233 d8
-6c c245 02
-6c c246 01
-6c c247 d8
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 4a
-6c c4a3 4a
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 02
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/11-a_OV50E40_1776x1332_4C2PlusSCG_10bit_24fps_AG64_PDDT_1776x333_20250106.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/11-a_OV50E40_1776x1332_4C2PlusSCG_10bit_24fps_AG64_PDDT_1776x333_20250106.txt
deleted file mode 100755
index 50e0dcac..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/11-a_OV50E40_1776x1332_4C2PlusSCG_10bit_24fps_AG64_PDDT_1776x333_20250106.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 1776 1332
-102 9c1 6f0
-102 9c5 534
-102 9c2 6f0
-102 9c6 14d
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 f9
-6c 350e 21
-6c 350f 80
-6c 3546 f9
-6c 354e 21
-6c 354f 80
-6c 3586 f9
-6c 358e 21
-6c 358f 80
-6c 3600 c7
-6c 3608 f3
-6c 360a fb
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 04
-6c 3709 80
-6c 370b 55
-6c 370c 04
-6c 3712 50
-6c 3714 65
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 a0
-6c 3758 00
-6c 3759 50
-6c 375e 3b
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 55
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 09
-6c 3801 10
-6c 3802 06
-6c 3803 d0
-6c 3804 17
-6c 3805 0f
-6c 3806 11
-6c 3807 4f
-6c 3808 06
-6c 3809 f0
-6c 380a 05
-6c 380b 34
-6c 380c 01
-6c 380d 90
-6c 380e 1e
-6c 380f 84
-6c 3811 07
-6c 3813 06
-6c 3815 11
-6c 3820 46
-6c 3821 11
-6c 3822 10
-6c 3823 04
-6c 3828 05
-6c 3830 07
-6c 3831 02
-6c 3837 07
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 08
-6c 388b 06
-6c 388c 06
-6c 388d f0
-6c 388e 05
-6c 388f 34
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 fb
-6c 3b02 02
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 0f
-6c 4018 07
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 15
-6c 450c 00
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 8e
-6c 45c1 80
-6c 45c2 0a
-6c 45c3 14
-6c 45c4 13
-6c 45c5 fc
-6c 45c6 01
-6c 45dd 60
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 00
-6c 4641 6f
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 0f
-6c 4918 07
-6c 491e 02
-6c 491f 80
-6c 4a16 0f
-6c 4a18 07
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 2b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 03
-6c c233 1e
-6c c245 02
-6c c246 03
-6c c247 1e
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 55
-6c c4a3 55
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 18
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/11_OV50E40_1776x1332_4C2PlusSCG_10bit_24fps_AG64_PDDT_1776x666_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/11_OV50E40_1776x1332_4C2PlusSCG_10bit_24fps_AG64_PDDT_1776x666_20241202.txt
deleted file mode 100755
index 52cd7718..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/11_OV50E40_1776x1332_4C2PlusSCG_10bit_24fps_AG64_PDDT_1776x666_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 1776 1332
-102 9c1 6f0
-102 9c5 534
-102 9c2 6f0
-102 9c6 29a
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 f9
-6c 350e 21
-6c 350f 80
-6c 3546 f9
-6c 354e 21
-6c 354f 80
-6c 3586 f9
-6c 358e 21
-6c 358f 80
-6c 3600 47
-6c 3608 f1
-6c 360a fb
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 04
-6c 3709 80
-6c 370b 55
-6c 370c 04
-6c 3712 50
-6c 3714 63
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 a0
-6c 3758 00
-6c 3759 50
-6c 375e 3b
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 55
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 02
-6c 3801 20
-6c 3802 01
-6c 3803 90
-6c 3804 1d
-6c 3805 ff
-6c 3806 16
-6c 3807 8f
-6c 3808 06
-6c 3809 f0
-6c 380a 05
-6c 380b 34
-6c 380c 01
-6c 380d 90
-6c 380e 1e
-6c 380f 84
-6c 3811 03
-6c 3813 06
-6c 3815 31
-6c 3820 47
-6c 3821 11
-6c 3822 20
-6c 3823 04
-6c 3828 03
-6c 3830 05
-6c 3831 02
-6c 3837 05
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 04
-6c 388b 06
-6c 388c 06
-6c 388d f0
-6c 388e 05
-6c 388f 34
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 fb
-6c 3b02 02
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 07
-6c 4018 03
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 15
-6c 450c 00
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 86
-6c 45c1 81
-6c 45c2 02
-6c 45c3 14
-6c 45c4 13
-6c 45c5 b8
-6c 45c6 02
-6c 45dd 60
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 00
-6c 4641 6f
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 07
-6c 4918 03
-6c 491e 02
-6c 491f 80
-6c 4a16 07
-6c 4a18 03
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 ab
-6c 5001 ca
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 03
-6c c233 1e
-6c c245 02
-6c c246 03
-6c c247 1e
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 55
-6c c4a3 55
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 1e
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/12_OV50E40_4096x3072_Cropping_Quad_10bit_30fps_AG16_PDDT_2048x768LR_20250214.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/12_OV50E40_4096x3072_Cropping_Quad_10bit_30fps_AG16_PDDT_2048x768LR_20250214.txt
deleted file mode 100755
index 1f4dc908..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/12_OV50E40_4096x3072_Cropping_Quad_10bit_30fps_AG16_PDDT_2048x768LR_20250214.txt
+++ /dev/null
@@ -1,391 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 3072
-102 9c1 1000
-102 9c5 c00
-102 9c2 800
-102 9c6 300
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 f4
-6c 0326 d4
-6c 0327 0b
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 58
-6c 350e 00
-6c 350f 00
-6c 3546 38
-6c 354e 00
-6c 354f 00
-6c 3586 38
-6c 358e 00
-6c 358f 00
-6c 3600 c7
-6c 3608 f3
-6c 360a bb
-6c 3616 58
-6c 361a 56
-6c 361c 08
-6c 361e 16
-6c 363b 14
-6c 363c ba
-6c 3645 14
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 03
-6c 369a 00
-6c 36d0 00
-6c 3706 20
-6c 3707 04
-6c 3709 9d
-6c 370b 3e
-6c 370c 04
-6c 3712 51
-6c 3714 74
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 70
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 50
-6c 375e 00
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4c
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 20
-6c 3793 1c
-6c 3795 1c
-6c 3797 3e
-6c 3799 3c
-6c 379b 3c
-6c 37a0 70
-6c 37d0 00
-6c 37e3 30
-6c 3800 08
-6c 3801 00
-6c 3802 06
-6c 3803 00
-6c 3804 18
-6c 3805 1f
-6c 3806 12
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 18
-6c 380f 68
-6c 3811 0e
-6c 3813 10
-6c 3815 11
-6c 3820 44
-6c 3821 00
-6c 3822 00
-6c 3823 04
-6c 3828 14
-6c 3830 1c
-6c 3831 00
-6c 3837 1c
-6c 383f 08
-6c 3846 00 ;;0214
-6c 3847 00 ;;0214
-6c 384c 01
-6c 384d 90
-6c 3889 10
-6c 388b 10
-6c 388c 10
-6c 388d 00
-6c 388e 0c
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 06
-6c 39ed 04
-6c 3a0d 00
-6c 3a13 00
-6c 3a14 04
-6c 3a15 01
-6c 3a16 02
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 00
-6c 3b02 00
-6c 3b03 07
-6c 3b04 07
-6c 3b05 07
-6c 3b08 07
-6c 3b14 02
-6c 3b15 07
-6c 3b19 07
-6c 3b1a 07
-6c 3b1d 00
-6c 3b22 07
-6c 3b25 07
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 07
-6c 3b33 07
-6c 3b34 07
-6c 3b38 07
-6c 3b39 07
-6c 3b3a 07
-6c 3b3b 07
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 11
-6c 3b57 11
-6c 3b58 11
-6c 3b59 11
-6c 3b5a 11
-6c 3b5b 11
-6c 3b5c 11
-6c 3b5d 11
-6c 3b82 11
-6c 3ba0 07
-6c 3ba1 11
-6c 3ba2 07
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa 00
-6c 3bff 08
-6c 4010 28
-6c 4012 fc
-6c 4016 1f
-6c 4018 0f
-6c 401e 01
-6c 401f 30
-6c 40c4 07
-6c 40c5 ff
-6c 40c6 07
-6c 40c7 ff
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 30
-6c 4510 03
-6c 4511 08
-6c 4512 05
-6c 4513 05
-6c 4514 af
-6c 4515 af
-6c 4516 05
-6c 4517 05
-6c 4518 af
-6c 4519 af
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 94
-6c 45c1 a4
-6c 45c2 02
-6c 45c3 07
-6c 45c4 13
-6c 45c5 00
-6c 45c6 04
-6c 45dd 00
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 00
-6c 4641 80
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 1f
-6c 4918 0f
-6c 491e 01
-6c 491f 30
-6c 4a16 1f
-6c 4a18 0f
-6c 4a1e 01
-6c 4a1f 30
-6c 5000 5b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 00
-6c c210 00
-6c c211 00
-6c c231 00
-6c c232 01
-6c c233 8f
-6c c245 00
-6c c246 01
-6c c247 8f
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 20
-6c c49f 20
-6c c4a2 3e
-6c c4a3 3e
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2a
-6c c4c7 2a
-6c c4c8 35
-6c c4c9 35
-6c c4ca 35
-6c c4cb 35
-6c c4ce 03
-6c c4cf 01
-6c c4d0 00
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 11
-6c c4e9 11
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 07
-6c c4ff 07
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 00
-6c c5c4 00
-6c c5c5 00
-6c c5c6 00
-6c c5c7 00
-6c c5c8 00
-6c c5c9 48
-6c c5ca 48
-6c c5cb 40
-6c c5cc 40
-6c c5cd 40
-6c c5ce 40
-6c c5fe 04
-6c c5ff 06
-
-6c 3501 18
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 3002 00
-6c 3008 00
-
-6c 382e 79
-6c 368d 00
-
-6c 3841 00 
-6c 381a 00 
-6c 381b 00
-6c 381c 00
-6c 381d 00 
-6c 381e 00 
-6c 381f 00
-6c 385b 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/13_OV50E40_4096x3072_Cropping_10bit_24fps_AG16_PDDT_2048x768LR_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/13_OV50E40_4096x3072_Cropping_10bit_24fps_AG16_PDDT_2048x768LR_20241202.txt
deleted file mode 100755
index 9674ef80..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/13_OV50E40_4096x3072_Cropping_10bit_24fps_AG16_PDDT_2048x768LR_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 3072
-102 9c1 1000
-102 9c5 c00
-102 9c2 800
-102 9c6 300
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 f4
-6c 0326 d4
-6c 0327 0b
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 58
-6c 350e 00
-6c 350f 00
-6c 3546 38
-6c 354e 00
-6c 354f 00
-6c 3586 38
-6c 358e 00
-6c 358f 00
-6c 3600 c7
-6c 3608 f3
-6c 360a bb
-6c 3616 58
-6c 361a 56
-6c 361c 08
-6c 361e 16
-6c 363b 14
-6c 363c ba
-6c 3645 14
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 03
-6c 369a 00
-6c 36d0 00
-6c 3706 20
-6c 3707 04
-6c 3709 9d
-6c 370b 3e
-6c 370c 04
-6c 3712 51
-6c 3714 74
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 70
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 50
-6c 375e 00
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4c
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 20
-6c 3793 1c
-6c 3795 1c
-6c 3797 3e
-6c 3799 3c
-6c 379b 3c
-6c 37a0 70
-6c 37d0 00
-6c 37e3 30
-6c 3800 08
-6c 3801 00
-6c 3802 06
-6c 3803 00
-6c 3804 18
-6c 3805 1f
-6c 3806 12
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 1e
-6c 380f 84
-6c 3811 0f
-6c 3813 10
-6c 3815 11
-6c 3820 44
-6c 3821 00
-6c 3822 00
-6c 3823 04
-6c 3828 14
-6c 3830 1c
-6c 3831 00
-6c 3837 1c
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 10
-6c 388b 10
-6c 388c 10
-6c 388d 00
-6c 388e 0c
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 06
-6c 39ed 04
-6c 3a0d 00
-6c 3a13 00
-6c 3a14 04
-6c 3a15 01
-6c 3a16 02
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 00
-6c 3b02 00
-6c 3b03 07
-6c 3b04 07
-6c 3b05 07
-6c 3b08 07
-6c 3b14 02
-6c 3b15 07
-6c 3b19 07
-6c 3b1a 07
-6c 3b1d 00
-6c 3b22 07
-6c 3b25 07
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 07
-6c 3b33 07
-6c 3b34 07
-6c 3b38 07
-6c 3b39 07
-6c 3b3a 07
-6c 3b3b 07
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 11
-6c 3b57 11
-6c 3b58 11
-6c 3b59 11
-6c 3b5a 11
-6c 3b5b 11
-6c 3b5c 11
-6c 3b5d 11
-6c 3b82 11
-6c 3ba0 07
-6c 3ba1 11
-6c 3ba2 07
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa 00
-6c 3bff 08
-6c 4010 28
-6c 4012 fc
-6c 4016 1f
-6c 4018 0f
-6c 401e 01
-6c 401f 30
-6c 40c4 07
-6c 40c5 ff
-6c 40c6 07
-6c 40c7 ff
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 30
-6c 4510 03
-6c 4511 08
-6c 4512 05
-6c 4513 05
-6c 4514 af
-6c 4515 af
-6c 4516 05
-6c 4517 05
-6c 4518 af
-6c 4519 af
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 94
-6c 45c1 a4
-6c 45c2 02
-6c 45c3 07
-6c 45c4 13
-6c 45c5 00
-6c 45c6 04
-6c 45dd 00
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 00
-6c 4641 80
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 1f
-6c 4918 0f
-6c 491e 01
-6c 491f 30
-6c 4a16 1f
-6c 4a18 0f
-6c 4a1e 01
-6c 4a1f 30
-6c 5000 5b
-6c 5001 28
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 00
-6c c210 00
-6c c211 00
-6c c231 00
-6c c232 01
-6c c233 8f
-6c c245 00
-6c c246 01
-6c c247 8f
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 20
-6c c49f 20
-6c c4a2 3e
-6c c4a3 3e
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2a
-6c c4c7 2a
-6c c4c8 35
-6c c4c9 35
-6c c4ca 35
-6c c4cb 35
-6c c4ce 03
-6c c4cf 01
-6c c4d0 00
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 11
-6c c4e9 11
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 07
-6c c4ff 07
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 00
-6c c5c4 00
-6c c5c5 00
-6c c5c6 00
-6c c5c7 00
-6c c5c8 00
-6c c5c9 48
-6c c5ca 48
-6c c5cb 40
-6c c5cc 40
-6c c5cd 40
-6c c5ce 40
-6c c5fe 04
-6c c5ff 06
-
-6c 3501 18
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/14_OV50E40_4096x3072_Cropping_Quad_10bit_24fps_AG16_PDDT_2048x768LR_20241212.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/14_OV50E40_4096x3072_Cropping_Quad_10bit_24fps_AG16_PDDT_2048x768LR_20241212.txt
deleted file mode 100755
index d541363a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/14_OV50E40_4096x3072_Cropping_Quad_10bit_24fps_AG16_PDDT_2048x768LR_20241212.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 3072
-102 9c1 1000
-102 9c5 c00
-102 9c2 800
-102 9c6 300
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 f4
-6c 0326 d4
-6c 0327 0b
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 58
-6c 350e 00
-6c 350f 00
-6c 3546 38
-6c 354e 00
-6c 354f 00
-6c 3586 38
-6c 358e 00
-6c 358f 00
-6c 3600 c7
-6c 3608 f3
-6c 360a bb
-6c 3616 58
-6c 361a 56
-6c 361c 08
-6c 361e 16
-6c 363b 14
-6c 363c ba
-6c 3645 14
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 03
-6c 369a 00
-6c 36d0 00
-6c 3706 20
-6c 3707 04
-6c 3709 9d
-6c 370b 3e
-6c 370c 04
-6c 3712 51
-6c 3714 74
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 70
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 50
-6c 375e 00
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4c
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 20
-6c 3793 1c
-6c 3795 1c
-6c 3797 3e
-6c 3799 3c
-6c 379b 3c
-6c 37a0 70
-6c 37d0 00
-6c 37e3 30
-6c 3800 08
-6c 3801 00
-6c 3802 06
-6c 3803 00
-6c 3804 18
-6c 3805 1f
-6c 3806 12
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 1e
-6c 380f 84
-6c 3811 0e
-6c 3813 10
-6c 3815 11
-6c 3820 44
-6c 3821 00
-6c 3822 00
-6c 3823 04
-6c 3828 14
-6c 3830 1c
-6c 3831 00
-6c 3837 1c
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 10
-6c 388b 10
-6c 388c 10
-6c 388d 00
-6c 388e 0c
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 06
-6c 39ed 04
-6c 3a0d 00
-6c 3a13 00
-6c 3a14 04
-6c 3a15 01
-6c 3a16 02
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 00
-6c 3b02 00
-6c 3b03 07
-6c 3b04 07
-6c 3b05 07
-6c 3b08 07
-6c 3b14 02
-6c 3b15 07
-6c 3b19 07
-6c 3b1a 07
-6c 3b1d 00
-6c 3b22 07
-6c 3b25 07
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 07
-6c 3b33 07
-6c 3b34 07
-6c 3b38 07
-6c 3b39 07
-6c 3b3a 07
-6c 3b3b 07
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 11
-6c 3b57 11
-6c 3b58 11
-6c 3b59 11
-6c 3b5a 11
-6c 3b5b 11
-6c 3b5c 11
-6c 3b5d 11
-6c 3b82 11
-6c 3ba0 07
-6c 3ba1 11
-6c 3ba2 07
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa 00
-6c 3bff 08
-6c 4010 28
-6c 4012 fc
-6c 4016 1f
-6c 4018 0f
-6c 401e 01
-6c 401f 30
-6c 40c4 07
-6c 40c5 ff
-6c 40c6 07
-6c 40c7 ff
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 30
-6c 4510 03
-6c 4511 08
-6c 4512 05
-6c 4513 05
-6c 4514 af
-6c 4515 af
-6c 4516 05
-6c 4517 05
-6c 4518 af
-6c 4519 af
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 94
-6c 45c1 a4
-6c 45c2 02
-6c 45c3 07
-6c 45c4 13
-6c 45c5 00
-6c 45c6 04
-6c 45dd 00
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 00
-6c 4641 80
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 1f
-6c 4918 0f
-6c 491e 01
-6c 491f 30
-6c 4a16 1f
-6c 4a18 0f
-6c 4a1e 01
-6c 4a1f 30
-6c 5000 5b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 00
-6c c210 00
-6c c211 00
-6c c231 00
-6c c232 01
-6c c233 8f
-6c c245 00
-6c c246 01
-6c c247 8f
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 20
-6c c49f 20
-6c c4a2 3e
-6c c4a3 3e
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2a
-6c c4c7 2a
-6c c4c8 35
-6c c4c9 35
-6c c4ca 35
-6c c4cb 35
-6c c4ce 03
-6c c4cf 01
-6c c4d0 00
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 11
-6c c4e9 11
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 07
-6c c4ff 07
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 00
-6c c5c4 00
-6c c5c5 00
-6c c5c6 00
-6c c5c7 00
-6c c5c8 00
-6c c5c9 48
-6c c5ca 48
-6c c5cb 40
-6c c5cc 40
-6c c5cd 40
-6c c5ce 40
-6c c5fe 04
-6c c5ff 06
-
-6c 3501 18
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/15_OV50E40_4096x2304_Cropping_10bit_30fps_AG16_PDDT_2048x576LR_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/15_OV50E40_4096x2304_Cropping_10bit_30fps_AG16_PDDT_2048x576LR_20241202.txt
deleted file mode 100755
index 62654276..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/15_OV50E40_4096x2304_Cropping_10bit_30fps_AG16_PDDT_2048x576LR_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 2304
-102 9c1 1000
-102 9c5 900
-102 9c2 800
-102 9c6 240
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 f4
-6c 0326 d4
-6c 0327 0b
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 58
-6c 350e 00
-6c 350f 00
-6c 3546 38
-6c 354e 00
-6c 354f 00
-6c 3586 38
-6c 358e 00
-6c 358f 00
-6c 3600 c7
-6c 3608 f3
-6c 360a bb
-6c 3616 58
-6c 361a 56
-6c 361c 08
-6c 361e 16
-6c 363b 14
-6c 363c ba
-6c 3645 14
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 03
-6c 369a 00
-6c 36d0 00
-6c 3706 20
-6c 3707 04
-6c 3709 9d
-6c 370b 3e
-6c 370c 04
-6c 3712 51
-6c 3714 74
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 70
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 50
-6c 375e 00
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4c
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 20
-6c 3793 1c
-6c 3795 1c
-6c 3797 3e
-6c 3799 3c
-6c 379b 3c
-6c 37a0 70
-6c 37d0 00
-6c 37e3 30
-6c 3800 08
-6c 3801 00
-6c 3802 07
-6c 3803 80
-6c 3804 18
-6c 3805 1f
-6c 3806 10
-6c 3807 9f
-6c 3808 10
-6c 3809 00
-6c 380a 09
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 18
-6c 380f 68
-6c 3811 0f
-6c 3813 10
-6c 3815 11
-6c 3820 44
-6c 3821 00
-6c 3822 00
-6c 3823 04
-6c 3828 14
-6c 3830 1c
-6c 3831 00
-6c 3837 1c
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 10
-6c 388b 10
-6c 388c 10
-6c 388d 00
-6c 388e 09
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 06
-6c 39ed 04
-6c 3a0d 00
-6c 3a13 00
-6c 3a14 04
-6c 3a15 01
-6c 3a16 02
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 00
-6c 3b02 00
-6c 3b03 07
-6c 3b04 07
-6c 3b05 07
-6c 3b08 07
-6c 3b14 02
-6c 3b15 07
-6c 3b19 07
-6c 3b1a 07
-6c 3b1d 00
-6c 3b22 07
-6c 3b25 07
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 07
-6c 3b33 07
-6c 3b34 07
-6c 3b38 07
-6c 3b39 07
-6c 3b3a 07
-6c 3b3b 07
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 11
-6c 3b57 11
-6c 3b58 11
-6c 3b59 11
-6c 3b5a 11
-6c 3b5b 11
-6c 3b5c 11
-6c 3b5d 11
-6c 3b82 11
-6c 3ba0 07
-6c 3ba1 11
-6c 3ba2 07
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa 00
-6c 3bff 08
-6c 4010 28
-6c 4012 fc
-6c 4016 1f
-6c 4018 0f
-6c 401e 01
-6c 401f 30
-6c 40c4 07
-6c 40c5 ff
-6c 40c6 07
-6c 40c7 ff
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 30
-6c 4510 03
-6c 4511 08
-6c 4512 05
-6c 4513 05
-6c 4514 af
-6c 4515 af
-6c 4516 05
-6c 4517 05
-6c 4518 af
-6c 4519 af
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 94
-6c 45c1 a4
-6c 45c2 02
-6c 45c3 07
-6c 45c4 13
-6c 45c5 00
-6c 45c6 04
-6c 45dd 00
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 00
-6c 4641 80
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 1f
-6c 4918 0f
-6c 491e 01
-6c 491f 30
-6c 4a16 1f
-6c 4a18 0f
-6c 4a1e 01
-6c 4a1f 30
-6c 5000 5b
-6c 5001 28
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 00
-6c c210 00
-6c c211 00
-6c c231 00
-6c c232 01
-6c c233 8f
-6c c245 00
-6c c246 01
-6c c247 8f
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 20
-6c c49f 20
-6c c4a2 3e
-6c c4a3 3e
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2a
-6c c4c7 2a
-6c c4c8 35
-6c c4c9 35
-6c c4ca 35
-6c c4cb 35
-6c c4ce 03
-6c c4cf 01
-6c c4d0 00
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 11
-6c c4e9 11
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 07
-6c c4ff 07
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 00
-6c c5c4 00
-6c c5c5 00
-6c c5c6 00
-6c c5c7 00
-6c c5c8 00
-6c c5c9 48
-6c c5ca 48
-6c c5cb 40
-6c c5cc 40
-6c c5cd 40
-6c c5ce 40
-6c c5fe 04
-6c c5ff 06
-
-6c 3501 18
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/16_OV50E40_4096x2048_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x512_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/16_OV50E40_4096x2048_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x512_20241202.txt
deleted file mode 100755
index 1a41cf05..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/16_OV50E40_4096x2048_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x512_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 2048
-102 9c1 1000
-102 9c5 800
-102 9c2 1000
-102 9c6 200
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 f9
-6c 350e 21
-6c 350f 80
-6c 3546 f9
-6c 354e 21
-6c 354f 80
-6c 3586 f9
-6c 358e 21
-6c 358f 80
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 04
-6c 3709 80
-6c 370b 55
-6c 370c 04
-6c 3712 50
-6c 3714 65
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 a0
-6c 3758 00
-6c 3759 50
-6c 375e 3b
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 55
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 04
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 14
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 08
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 18
-6c 380f 68
-6c 3811 07
-6c 3813 08
-6c 3815 11
-6c 3820 46
-6c 3821 11
-6c 3822 10
-6c 3823 04
-6c 3828 05
-6c 3830 07
-6c 3831 02
-6c 3837 07
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 08
-6c 388b 08
-6c 388c 10
-6c 388d 00
-6c 388e 08
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 fb
-6c 3b02 02
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 0f
-6c 4018 07
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 15
-6c 450c 00
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 8e
-6c 45c1 80
-6c 45c2 0a
-6c 45c3 14
-6c 45c4 13
-6c 45c5 40
-6c 45c6 04
-6c 45dd 60
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 01
-6c 4641 00
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 0f
-6c 4918 07
-6c 491e 02
-6c 491f 80
-6c 4a16 0f
-6c 4a18 07
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 2b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 03
-6c c233 1e
-6c c245 02
-6c c246 03
-6c c247 1e
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 55
-6c c4a3 55
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 18
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/17_OV50E40_4096x2304_4C2PlusDCG_10bit_30fps_AG64_PDDT_4096x576_20250211.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/17_OV50E40_4096x2304_4C2PlusDCG_10bit_30fps_AG64_PDDT_4096x576_20250211.txt
deleted file mode 100755
index ebd5c773..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/17_OV50E40_4096x2304_4C2PlusDCG_10bit_30fps_AG64_PDDT_4096x576_20250211.txt
+++ /dev/null
@@ -1,378 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 2304
-102 9c1 1000
-102 9c5 900
-102 9c2 1000
-102 9c6 240
-102 9c3 1000
-102 9c7 900
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 7
-110 40 3
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 50
-6c 350e 21
-6c 350f 80
-6c 3546 50
-6c 354e 21
-6c 354f 80
-6c 3586 50
-6c 358e 21
-6c 358f 80
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 58
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c0
-6c 363c c0
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 27
-6c 3707 04
-6c 3709 c6
-6c 370b 40
-6c 370c 04
-6c 3712 50
-6c 3714 65
-6c 3715 00
-6c 3724 38
-6c 372a 00
-6c 372b 00
-6c 374f 10
-6c 3755 84
-6c 3756 00
-6c 3757 70
-6c 3758 00
-6c 3759 f0
-6c 375e cb
-6c 375f 22
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 03
-6c 3782 03
-6c 3785 04
-6c 3786 04
-6c 3789 03
-6c 378a 03
-6c 378d 04
-6c 378e 04
-6c 3791 27
-6c 3793 5d
-6c 3795 5d
-6c 3797 40
-6c 3799 8d
-6c 379b 8d
-6c 37a0 c6
-6c 37d0 22
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 03
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 15
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 09
-6c 380b 00
-6c 380c 03
-6c 380d 07
-6c 380e 0c
-6c 380f 98
-6c 3811 07
-6c 3813 08
-6c 3815 11
-6c 3820 46
-6c 3821 11
-6c 3822 10
-6c 3823 06
-6c 3828 05
-6c 3830 07
-6c 3831 02
-6c 3837 07
-6c 383f 08
-6c 384c 03
-6c 384d 07
-6c 3889 08
-6c 388b 08
-6c 388c 10
-6c 388d 00
-6c 388e 09
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 e0
-6c 398b 00
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 0d
-6c 3a13 0d
-6c 3a14 0d
-6c 3a15 09
-6c 3a16 07
-6c 3a17 08
-6c 3a2a 24
-6c 3a2e 24
-6c 3a2f 38
-6c 3a30 38
-6c 3a31 38
-6c 3a32 38
-6c 3a34 38
-6c 3a35 38
-6c 3a36 38
-6c 3a37 38
-6c 3a40 24
-6c 3a42 24
-6c 3a43 38
-6c 3a44 38
-6c 3a45 38
-6c 3a46 38
-6c 3a48 38
-6c 3a49 38
-6c 3a4a 38
-6c 3a4b 38
-6c 3a5e 3b
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 01
-6c 3afe 04
-6c 3aff 01
-6c 3b00 04
-6c 3b01 cb
-6c 3b02 02
-6c 3b03 10
-6c 3b04 10
-6c 3b05 10
-6c 3b08 10
-6c 3b14 02
-6c 3b15 10
-6c 3b19 10
-6c 3b1a 10
-6c 3b1d 00
-6c 3b22 10
-6c 3b25 10
-6c 3b2b 0f
-6c 3b2c 10
-6c 3b2d 10
-6c 3b32 10
-6c 3b33 10
-6c 3b34 10
-6c 3b38 10
-6c 3b39 10
-6c 3b3a 10
-6c 3b3b 10
-6c 3b41 10
-6c 3b42 10
-6c 3b43 10
-6c 3b44 10
-6c 3b45 0e
-6c 3b49 0e
-6c 3b56 13
-6c 3b57 13
-6c 3b58 13
-6c 3b59 13
-6c 3b5a 13
-6c 3b5b 13
-6c 3b5c 13
-6c 3b5d 13
-6c 3b82 13
-6c 3ba0 10
-6c 3ba1 13
-6c 3ba2 10
-6c 3bab 2a
-6c 3baf 56
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 0f
-6c 4018 07
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 15
-6c 450c 00
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 8e
-6c 45c1 80
-6c 45c2 0a
-6c 45c3 14
-6c 45c4 13
-6c 45c5 40
-6c 45c6 04
-6c 45dd 60
-6c 4602 00
-6c 4603 05
-6c 460b 07
-6c 4640 01
-6c 4641 00
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 0f
-6c 4918 07
-6c 491e 02
-6c 491f 80
-6c 4a16 0f
-6c 4a18 07
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 2b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 00
-6c c210 00
-6c c211 00
-6c c231 00
-6c c232 00
-6c c233 00
-6c c245 00
-6c c246 00
-6c c247 00
-6c c40f 10
-6c c46d 00
-6c c48f 00
-6c c49c 1c
-6c c49e 5d
-6c c49f 5d
-6c c4a2 8d
-6c c4a3 8d
-6c c4ae ff
-6c c4af 10
-6c c4b0 10
-6c c4b1 10
-6c c4b2 10
-6c c4c2 77
-6c c4c3 77
-6c c4c4 77
-6c c4c6 18
-6c c4c7 18
-6c c4c8 18
-6c c4c9 18
-6c c4ca 18
-6c c4cb 18
-6c c4ce 0e
-6c c4cf 0a
-6c c4d0 07
-6c c4d1 08
-6c c4e0 10
-6c c4e1 10
-6c c4e2 10
-6c c4e3 13
-6c c4e9 13
-6c c4ed 10
-6c c4ee 10
-6c c4fa 10
-6c c4fb 10
-6c c4fe 10
-6c c4ff 10
-6c c50f 5c
-6c c51b 38
-6c c51c 38
-6c c51d 2a
-6c c51e 2a
-6c c51f 2a
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 08
-6c c52d 07
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0b
-6c c534 08
-6c c535 06
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 0c
-6c 3502 00
-6c 3508 01
-6c 3509 00
-6c 3541 0c
-6c 3542 00
-6c 3548 01
-6c 3549 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/18_OV50E40_4096x3072_4C2PlusSCG_STG2_10bit_30fps_AG64_PDDT_4096x768_20250214.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/18_OV50E40_4096x3072_4C2PlusSCG_STG2_10bit_30fps_AG64_PDDT_4096x768_20250214.txt
deleted file mode 100755
index d8d3de30..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/18_OV50E40_4096x3072_4C2PlusSCG_STG2_10bit_30fps_AG64_PDDT_4096x768_20250214.txt
+++ /dev/null
@@ -1,395 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 3072
-102 9c1 1000
-102 9c5 c00
-102 9c2 1000
-102 9c6 300
-102 9c3 1000
-102 9c7 c00
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 7
-110 40 3
-
-
-6c 0324 01
-6c 0325 91
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 3d
-6c 3506 f9
-6c 350e 21
-6c 350f 80
-6c 3546 f9
-6c 354e 21
-6c 354f 80
-6c 3586 f9
-6c 358e 21
-6c 358f 80
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 20
-6c 3709 80
-6c 370b 55
-6c 370c 04
-6c 3712 50
-6c 3714 65
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 a0
-6c 3758 00
-6c 3759 50
-6c 375e 3b
-6c 375f 02
-6c 3763 30
-6c 376c 30
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 55
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 18
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 0c
-6c 380f 3c
-6c 3811 07
-6c 3813 08
-6c 3815 11
-6c 3820 46
-6c 3821 11
-6c 3822 10
-6c 3823 8c
-6c 3828 05
-6c 3830 07
-6c 3831 02
-6c 3837 08
-6c 383f 48
-6c 3846 01 ;;0214
-6c 3847 ec ;;0214
-6c 384c 01
-6c 384d 90
-6c 3889 08
-6c 388b 08
-6c 388c 10
-6c 388d 00
-6c 388e 0c
-6c 388f 00
-6c 3896 30
-6c 3917 03
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 fb
-6c 3b02 02
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 e8 ;28 if exp_m is longer than image height
-6c 4012 8c
-6c 4016 0f
-6c 4018 07
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 00 ;01 if exp_m is longer than image height
-6c 4509 15
-6c 450c 80 ;00 if exp_m is longer than image height
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 8e
-6c 45c1 80
-6c 45c2 0a
-6c 45c3 14
-6c 45c4 13
-6c 45c5 40
-6c 45c6 04
-6c 45dd 60
-6c 4602 08
-6c 4603 01
-6c 460b 06
-6c 4640 01
-6c 4641 00
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 0f
-6c 4918 07
-6c 491e 02
-6c 491f 80
-6c 4a16 0f
-6c 4a18 07
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 2b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 03
-6c c233 1e
-6c c245 02
-6c c246 03
-6c c247 1e
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 55
-6c c4a3 55
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 03
-6c c527 03
-6c c528 03
-6c c529 03
-6c c52a 04
-6c c52b 04
-6c c52c 04
-6c c52d 04
-6c c52e 09
-6c c52f 09
-6c c530 09
-6c c531 09
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 06
-6c 3502 00
-6c 3508 01
-6c 3509 00
-6c 3541 03
-6c 3542 00
-6c 3548 01
-6c 3549 00
-
-6c 3002 00
-6c 3008 00
-
-6c 382e 79
-6c 368d 00
-
-6c 3841 00 
-6c 381a 00 
-6c 381b 00
-6c 381c 00
-6c 381d 00 
-6c 381e 00 
-6c 381f 00
-6c 385b 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/19_OV50E40_4096x3072_Cropping_Quad_STG2_10bit_30fps_AG16_PDDT_2048x768LR_20250217.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/19_OV50E40_4096x3072_Cropping_Quad_STG2_10bit_30fps_AG16_PDDT_2048x768LR_20250217.txt
deleted file mode 100755
index 19f66054..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/19_OV50E40_4096x3072_Cropping_Quad_STG2_10bit_30fps_AG16_PDDT_2048x768LR_20250217.txt
+++ /dev/null
@@ -1,395 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 3072
-102 9c1 1000
-102 9c5 c00
-102 9c2 800
-102 9c6 300
-102 9c3 1000
-102 9c7 c00
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 7
-110 40 3
-
-
-6c 0324 01
-6c 0325 ff
-6c 0326 d4
-6c 0327 0b
-6c 0360 09
-6c 3025 03
-6c 3400 3d
-6c 3506 58
-6c 350e 00
-6c 350f 00
-6c 3546 38
-6c 354e 00
-6c 354f 00
-6c 3586 38
-6c 358e 00
-6c 358f 00
-6c 3600 c7
-6c 3608 f3
-6c 360a bb
-6c 3616 58
-6c 361a 56
-6c 361c 08
-6c 361e 16
-6c 363b 14
-6c 363c ba
-6c 3645 14
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 03
-6c 369a 00
-6c 36d0 01
-6c 3706 20
-6c 3707 04
-6c 3709 9d
-6c 370b 3e
-6c 370c 04
-6c 3712 51
-6c 3714 74
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 70
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 50
-6c 375e 00
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4c
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 20
-6c 3793 1c
-6c 3795 1c
-6c 3797 3e
-6c 3799 3c
-6c 379b 3c
-6c 37a0 70
-6c 37d0 00
-6c 37e3 30
-6c 3800 08
-6c 3801 00
-6c 3802 06
-6c 3803 00
-6c 3804 18
-6c 3805 1f
-6c 3806 12
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 0c
-6c 380f 78
-6c 3811 0e
-6c 3813 10
-6c 3815 11
-6c 3820 44
-6c 3821 00
-6c 3822 00
-6c 3823 8c
-6c 3828 14
-6c 3830 1c
-6c 3831 00
-6c 3837 1d
-6c 383f 48
-6c 3846 03 ;;0217
-6c 3847 e2 ;;0217
-6c 384c 01
-6c 384d 90
-6c 3889 10
-6c 388b 10
-6c 388c 10
-6c 388d 00
-6c 388e 0c
-6c 388f 00
-6c 3896 30
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 06
-6c 39ed 04
-6c 3a0d 00
-6c 3a13 00
-6c 3a14 04
-6c 3a15 01
-6c 3a16 02
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 00
-6c 3b02 00
-6c 3b03 07
-6c 3b04 07
-6c 3b05 07
-6c 3b08 07
-6c 3b14 02
-6c 3b15 07
-6c 3b19 07
-6c 3b1a 07
-6c 3b1d 00
-6c 3b22 07
-6c 3b25 07
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 07
-6c 3b33 07
-6c 3b34 07
-6c 3b38 07
-6c 3b39 07
-6c 3b3a 07
-6c 3b3b 07
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 11
-6c 3b57 11
-6c 3b58 11
-6c 3b59 11
-6c 3b5a 11
-6c 3b5b 11
-6c 3b5c 11
-6c 3b5d 11
-6c 3b82 11
-6c 3ba0 07
-6c 3ba1 11
-6c 3ba2 07
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa 00
-6c 3bff 08
-6c 4010 28
-6c 4012 fc
-6c 4016 1f
-6c 4018 0f
-6c 401e 01
-6c 401f 30
-6c 40c4 07
-6c 40c5 ff
-6c 40c6 07
-6c 40c7 ff
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 04
-6c 450c 00
-6c 450d 00
-6c 4510 03
-6c 4511 08
-6c 4512 05
-6c 4513 05
-6c 4514 af
-6c 4515 af
-6c 4516 05
-6c 4517 05
-6c 4518 af
-6c 4519 af
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 40
-6c 45c0 94
-6c 45c1 a4
-6c 45c2 02
-6c 45c3 07
-6c 45c4 13
-6c 45c5 00
-6c 45c6 04
-6c 45dd 00
-6c 4602 08
-6c 4603 01
-6c 460b 06
-6c 4640 00
-6c 4641 80
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 1f
-6c 4918 0f
-6c 491e 01
-6c 491f 30
-6c 4a16 1f
-6c 4a18 0f
-6c 4a1e 01
-6c 4a1f 30
-6c 5000 5b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 00
-6c c210 00
-6c c211 00
-6c c231 00
-6c c232 01
-6c c233 8f
-6c c245 00
-6c c246 01
-6c c247 8f
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 20
-6c c49f 20
-6c c4a2 3e
-6c c4a3 3e
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2a
-6c c4c7 2a
-6c c4c8 35
-6c c4c9 35
-6c c4ca 35
-6c c4cb 35
-6c c4ce 03
-6c c4cf 01
-6c c4d0 00
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 11
-6c c4e9 11
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 07
-6c c4ff 07
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 00
-6c c5c4 00
-6c c5c5 00
-6c c5c6 00
-6c c5c7 00
-6c c5c8 00
-6c c5c9 48
-6c c5ca 48
-6c c5cb 40
-6c c5cc 40
-6c c5cd 40
-6c c5ce 40
-6c c5fe 04
-6c c5ff 06
-
-6c 3501 06
-6c 3502 00
-6c 3508 01
-6c 3509 00
-6c 3541 03
-6c 3542 00
-6c 3548 01
-6c 3549 00
-
-6c 3002 00
-6c 3008 00
-
-6c 382e 79
-6c 368d 00
-
-6c 3841 00 
-6c 381a 00 
-6c 381b 00
-6c 381c 00
-6c 381d 00 
-6c 381e 00 
-6c 381f 00
-6c 385b 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/20_OV50E40_4096x3072_4C2PlusDCG_10bit_30fps_AG16_PDDT_4096x768_20250116.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/20_OV50E40_4096x3072_4C2PlusDCG_10bit_30fps_AG16_PDDT_4096x768_20250116.txt
deleted file mode 100755
index d9c40f4b..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/20_OV50E40_4096x3072_4C2PlusDCG_10bit_30fps_AG16_PDDT_4096x768_20250116.txt
+++ /dev/null
@@ -1,378 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 3072
-102 9c1 1000
-102 9c5 c00
-102 9c2 1000
-102 9c6 300
-102 9c3 1000
-102 9c7 c00
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 7
-110 40 3
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 50
-6c 350e 21
-6c 350f 80
-6c 3546 50
-6c 354e 21
-6c 354f 80
-6c 3586 50
-6c 358e 21
-6c 358f 80
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 58
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c0
-6c 363c c0
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 27
-6c 3707 04
-6c 3709 a8
-6c 370b 40
-6c 370c 04
-6c 3712 50
-6c 3714 65
-6c 3715 00
-6c 3724 28
-6c 372a 00
-6c 372b 00
-6c 374f 10
-6c 3755 80
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 90
-6c 375e cb
-6c 375f 22
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 03
-6c 3782 03
-6c 3785 04
-6c 3786 04
-6c 3789 03
-6c 378a 03
-6c 378d 04
-6c 378e 04
-6c 3791 27
-6c 3793 25
-6c 3795 25
-6c 3797 40
-6c 3799 55
-6c 379b 55
-6c 37a0 a8
-6c 37d0 22
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 18
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 02
-6c 380d 64
-6c 380e 0f
-6c 380f f4
-6c 3811 07
-6c 3813 08
-6c 3815 11
-6c 3820 46
-6c 3821 11
-6c 3822 10
-6c 3823 06
-6c 3828 05
-6c 3830 07
-6c 3831 02
-6c 3837 07
-6c 383f 08
-6c 384c 02
-6c 384d 64
-6c 3889 08
-6c 388b 08
-6c 388c 10
-6c 388d 00
-6c 388e 0c
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 e0
-6c 398b 00
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 0d
-6c 3a13 0d
-6c 3a14 0d
-6c 3a15 09
-6c 3a16 07
-6c 3a17 08
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 3b
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 01
-6c 3afe 04
-6c 3aff 01
-6c 3b00 04
-6c 3b01 cb
-6c 3b02 02
-6c 3b03 10
-6c 3b04 10
-6c 3b05 10
-6c 3b08 10
-6c 3b14 02
-6c 3b15 10
-6c 3b19 10
-6c 3b1a 10
-6c 3b1d 00
-6c 3b22 10
-6c 3b25 10
-6c 3b2b 0f
-6c 3b2c 10
-6c 3b2d 10
-6c 3b32 10
-6c 3b33 10
-6c 3b34 10
-6c 3b38 10
-6c 3b39 10
-6c 3b3a 10
-6c 3b3b 10
-6c 3b41 10
-6c 3b42 10
-6c 3b43 10
-6c 3b44 10
-6c 3b45 0e
-6c 3b49 0e
-6c 3b56 13
-6c 3b57 13
-6c 3b58 13
-6c 3b59 13
-6c 3b5a 13
-6c 3b5b 13
-6c 3b5c 13
-6c 3b5d 13
-6c 3b82 13
-6c 3ba0 10
-6c 3ba1 13
-6c 3ba2 10
-6c 3bab 2a
-6c 3baf 56
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 0f
-6c 4018 07
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 15
-6c 450c 00
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 8e
-6c 45c1 80
-6c 45c2 0a
-6c 45c3 14
-6c 45c4 13
-6c 45c5 40
-6c 45c6 04
-6c 45dd 60
-6c 4602 00
-6c 4603 05
-6c 460b 07
-6c 4640 01
-6c 4641 00
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 0f
-6c 4918 07
-6c 491e 02
-6c 491f 80
-6c 4a16 0f
-6c 4a18 07
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 2b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 00
-6c c210 00
-6c c211 00
-6c c231 00
-6c c232 00
-6c c233 00
-6c c245 00
-6c c246 00
-6c c247 00
-6c c40f 10
-6c c46d 00
-6c c48f 00
-6c c49c 1c
-6c c49e 25
-6c c49f 25
-6c c4a2 55
-6c c4a3 55
-6c c4ae ff
-6c c4af 10
-6c c4b0 10
-6c c4b1 10
-6c c4b2 10
-6c c4c2 77
-6c c4c3 77
-6c c4c4 77
-6c c4c6 18
-6c c4c7 18
-6c c4c8 18
-6c c4c9 18
-6c c4ca 18
-6c c4cb 18
-6c c4ce 0e
-6c c4cf 0a
-6c c4d0 07
-6c c4d1 08
-6c c4e0 10
-6c c4e1 10
-6c c4e2 10
-6c c4e3 13
-6c c4e9 13
-6c c4ed 10
-6c c4ee 10
-6c c4fa 10
-6c c4fb 10
-6c c4fe 10
-6c c4ff 10
-6c c50f 5c
-6c c51b 38
-6c c51c 38
-6c c51d 2a
-6c c51e 2a
-6c c51f 2a
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 08
-6c c52d 07
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0b
-6c c534 08
-6c c535 06
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 0f
-6c 3502 00
-6c 3508 01
-6c 3509 00
-6c 3541 0f
-6c 3542 00
-6c 3548 01
-6c 3549 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/2_OV50E40_4096x2304_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x576_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/2_OV50E40_4096x2304_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x576_20241202.txt
deleted file mode 100755
index 51db27ae..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/2_OV50E40_4096x2304_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x576_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 2304
-102 9c1 1000
-102 9c5 900
-102 9c2 1000
-102 9c6 240
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 f9
-6c 350e 21
-6c 350f 80
-6c 3546 f9
-6c 354e 21
-6c 354f 80
-6c 3586 f9
-6c 358e 21
-6c 358f 80
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 04
-6c 3709 80
-6c 370b 55
-6c 370c 04
-6c 3712 50
-6c 3714 65
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 a0
-6c 3758 00
-6c 3759 50
-6c 375e 3b
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 55
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 03
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 15
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 09
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 18
-6c 380f 68
-6c 3811 07
-6c 3813 08
-6c 3815 11
-6c 3820 46
-6c 3821 11
-6c 3822 10
-6c 3823 04
-6c 3828 05
-6c 3830 07
-6c 3831 02
-6c 3837 07
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 08
-6c 388b 08
-6c 388c 10
-6c 388d 00
-6c 388e 09
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 fb
-6c 3b02 02
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 0f
-6c 4018 07
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 15
-6c 450c 00
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 8e
-6c 45c1 80
-6c 45c2 0a
-6c 45c3 14
-6c 45c4 13
-6c 45c5 40
-6c 45c6 04
-6c 45dd 60
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 01
-6c 4641 00
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 0f
-6c 4918 07
-6c 491e 02
-6c 491f 80
-6c 4a16 0f
-6c 4a18 07
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 2b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 03
-6c c233 1e
-6c c245 02
-6c c246 03
-6c c247 1e
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 55
-6c c4a3 55
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 18
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/3_OV50E40_4096x2304_4C2PlusSCG_10bit_60fps_AG64_PDDT_4096x576_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/3_OV50E40_4096x2304_4C2PlusSCG_10bit_60fps_AG64_PDDT_4096x576_20241202.txt
deleted file mode 100755
index 2f87fef4..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/3_OV50E40_4096x2304_4C2PlusSCG_10bit_60fps_AG64_PDDT_4096x576_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 2304
-102 9c1 1000
-102 9c5 900
-102 9c2 1000
-102 9c6 240
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 f9
-6c 350e 21
-6c 350f 80
-6c 3546 f9
-6c 354e 21
-6c 354f 80
-6c 3586 f9
-6c 358e 21
-6c 358f 80
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 04
-6c 3709 80
-6c 370b 55
-6c 370c 04
-6c 3712 50
-6c 3714 65
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 a0
-6c 3758 00
-6c 3759 50
-6c 375e 3b
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 55
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 03
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 15
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 09
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 0c
-6c 380f 34
-6c 3811 07
-6c 3813 08
-6c 3815 11
-6c 3820 46
-6c 3821 11
-6c 3822 10
-6c 3823 04
-6c 3828 05
-6c 3830 07
-6c 3831 02
-6c 3837 07
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 08
-6c 388b 08
-6c 388c 10
-6c 388d 00
-6c 388e 09
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 fb
-6c 3b02 02
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 0f
-6c 4018 07
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 15
-6c 450c 00
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 8e
-6c 45c1 80
-6c 45c2 0a
-6c 45c3 14
-6c 45c4 13
-6c 45c5 40
-6c 45c6 04
-6c 45dd 60
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 01
-6c 4641 00
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 0f
-6c 4918 07
-6c 491e 02
-6c 491f 80
-6c 4a16 0f
-6c 4a18 07
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 2b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 03
-6c c233 1e
-6c c245 02
-6c c246 03
-6c c247 1e
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 55
-6c c4a3 55
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 0c
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/4_OV50E40_2048x1152_4C2PlusSCG_10bit_120fps_AG64_PDDT_2048x576_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/4_OV50E40_2048x1152_4C2PlusSCG_10bit_120fps_AG64_PDDT_2048x576_20241202.txt
deleted file mode 100755
index 22925d64..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/4_OV50E40_2048x1152_4C2PlusSCG_10bit_120fps_AG64_PDDT_2048x576_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 2048 1152
-102 9c1 800
-102 9c5 480
-102 9c2 800
-102 9c6 240
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 f9
-6c 350e 21
-6c 350f 80
-6c 3546 f9
-6c 354e 21
-6c 354f 80
-6c 3586 f9
-6c 358e 21
-6c 358f 80
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 04
-6c 3709 80
-6c 370b 55
-6c 370c 04
-6c 3712 50
-6c 3714 63
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 a0
-6c 3758 00
-6c 3759 50
-6c 375e 3b
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 55
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 03
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 15
-6c 3807 1f
-6c 3808 08
-6c 3809 00
-6c 380a 04
-6c 380b 80
-6c 380c 01
-6c 380d 90
-6c 380e 06
-6c 380f 1a
-6c 3811 03
-6c 3813 04
-6c 3815 31
-6c 3820 47
-6c 3821 11
-6c 3822 20
-6c 3823 04
-6c 3828 03
-6c 3830 05
-6c 3831 02
-6c 3837 05
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 04
-6c 388b 04
-6c 388c 08
-6c 388d 00
-6c 388e 04
-6c 388f 80
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 fb
-6c 3b02 02
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 07
-6c 4018 03
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 15
-6c 450c 00
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 86
-6c 45c1 81
-6c 45c2 02
-6c 45c3 14
-6c 45c4 13
-6c 45c5 40
-6c 45c6 03
-6c 45dd 60
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 00
-6c 4641 80
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 07
-6c 4918 03
-6c 491e 02
-6c 491f 80
-6c 4a16 07
-6c 4a18 03
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 ab
-6c 5001 ca
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 03
-6c c233 1e
-6c c245 02
-6c c246 03
-6c c247 1e
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 55
-6c c4a3 55
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 05
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/5_OV50E40_2048x1152_4C1SCG_10bit_240fps_AG64_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/5_OV50E40_2048x1152_4C1SCG_10bit_240fps_AG64_20241202.txt
deleted file mode 100755
index 616fd7a6..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/5_OV50E40_2048x1152_4C1SCG_10bit_240fps_AG64_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 2048 1152
-102 9c1 800
-102 9c5 480
-;102 9c2 1000
-;102 9c6 300
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 1
-110 40 1
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 f9
-6c 350e 1c
-6c 350f 40
-6c 3546 f9
-6c 354e 1c
-6c 354f 40
-6c 3586 f9
-6c 358e 1c
-6c 358f 40
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 00
-6c 3688 03
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 04
-6c 3709 80
-6c 370b 4a
-6c 370c 04
-6c 3712 50
-6c 3714 63
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 50
-6c 375e 00
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 4a
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 03
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 15
-6c 3807 1f
-6c 3808 08
-6c 3809 00
-6c 380a 04
-6c 380b 80
-6c 380c 00
-6c 380d ed
-6c 380e 05
-6c 380f 26
-6c 3811 03
-6c 3813 04
-6c 3815 31
-6c 3820 47
-6c 3821 11
-6c 3822 10
-6c 3823 04
-6c 3828 03
-6c 3830 05
-6c 3831 00
-6c 3837 05
-6c 383f 08
-6c 384c 00
-6c 384d ed
-6c 3889 04
-6c 388b 04
-6c 388c 08
-6c 388d 00
-6c 388e 04
-6c 388f 80
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 00
-6c 3b02 00
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 14
-6c 3b42 14
-6c 3b43 14
-6c 3b44 14
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa 00
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 07
-6c 4018 03
-6c 401e 01
-6c 401f 20
-6c 40c4 07
-6c 40c5 ff
-6c 40c6 07
-6c 40c7 ff
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 30
-6c 4510 00
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 00
-6c 451b 00
-6c 451c 00
-6c 451d 00
-6c 451e 00
-6c 451f 00
-6c 4520 00
-6c 4521 00
-6c 4542 00
-6c 4549 00
-6c 45c0 80
-6c 45c1 00
-6c 45c2 02
-6c 45c3 00
-6c 45c4 13
-6c 45c5 00
-6c 45c6 00
-6c 45dd 00
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 01
-6c 4641 00
-6c 4643 08
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 07
-6c 4918 03
-6c 491e 01
-6c 491f 20
-6c 4a16 07
-6c 4a18 03
-6c 4a1e 01
-6c 4a1f 20
-6c 5000 ab
-6c 5001 ca
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 01
-6c c233 d8
-6c c245 02
-6c c246 01
-6c c247 d8
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 4a
-6c c4a3 4a
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 05
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/6_OV50E40_4096x3072_4C2PlusSCG_10bit_24fps_AG64_PDDT_4096x768_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/6_OV50E40_4096x3072_4C2PlusSCG_10bit_24fps_AG64_PDDT_4096x768_20241202.txt
deleted file mode 100755
index 7589fe55..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/6_OV50E40_4096x3072_4C2PlusSCG_10bit_24fps_AG64_PDDT_4096x768_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 3072
-102 9c1 1000
-102 9c5 c00
-102 9c2 1000
-102 9c6 300
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 90
-6c 0326 d3
-6c 0327 05
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 f9
-6c 350e 21
-6c 350f 80
-6c 3546 f9
-6c 354e 21
-6c 354f 80
-6c 3586 f9
-6c 358e 21
-6c 358f 80
-6c 3600 07
-6c 3608 f0
-6c 360a ff
-6c 3616 18
-6c 361a 56
-6c 361c 00
-6c 361e 14
-6c 363b c2
-6c 363c cb
-6c 3645 10
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 01
-6c 369a 00
-6c 36d0 00
-6c 3706 25
-6c 3707 04
-6c 3709 80
-6c 370b 55
-6c 370c 04
-6c 3712 50
-6c 3714 65
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 80
-6c 3756 00
-6c 3757 a0
-6c 3758 00
-6c 3759 50
-6c 375e 3b
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4f
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 25
-6c 3793 1c
-6c 3795 1c
-6c 3797 55
-6c 3799 3c
-6c 379b 3c
-6c 37a0 a8
-6c 37d0 66
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 18
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 1e
-6c 380f 84
-6c 3811 07
-6c 3813 08
-6c 3815 11
-6c 3820 46
-6c 3821 11
-6c 3822 10
-6c 3823 04
-6c 3828 05
-6c 3830 07
-6c 3831 02
-6c 3837 07
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 08
-6c 388b 08
-6c 388c 10
-6c 388d 00
-6c 388e 0c
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 04
-6c 39ed 04
-6c 3a0d 05
-6c 3a13 05
-6c 3a14 05
-6c 3a15 01
-6c 3a16 00
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 fb
-6c 3b02 02
-6c 3b03 14
-6c 3b04 19
-6c 3b05 1d
-6c 3b08 1f
-6c 3b14 02
-6c 3b15 2b
-6c 3b19 2b
-6c 3b1a 2c
-6c 3b1d 00
-6c 3b22 2c
-6c 3b25 28
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 29
-6c 3b33 2a
-6c 3b34 2a
-6c 3b38 22
-6c 3b39 25
-6c 3b3a 26
-6c 3b3b 27
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 12
-6c 3b57 12
-6c 3b58 12
-6c 3b59 12
-6c 3b5a 1d
-6c 3b5b 1d
-6c 3b5c 1d
-6c 3b5d 1d
-6c 3b82 1d
-6c 3ba0 25
-6c 3ba1 12
-6c 3ba2 26
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa a0
-6c 3bff 08
-6c 4010 28
-6c 4012 8c
-6c 4016 0f
-6c 4018 07
-6c 401e 02
-6c 401f 80
-6c 40c4 03
-6c 40c5 00
-6c 40c6 06
-6c 40c7 00
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 15
-6c 450c 00
-6c 450d 60
-6c 4510 07
-6c 4511 00
-6c 4512 00
-6c 4513 00
-6c 4514 00
-6c 4515 00
-6c 4516 00
-6c 4517 00
-6c 4518 00
-6c 4519 00
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 8e
-6c 45c1 80
-6c 45c2 0a
-6c 45c3 14
-6c 45c4 13
-6c 45c5 40
-6c 45c6 04
-6c 45dd 60
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 01
-6c 4641 00
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 0f
-6c 4918 07
-6c 491e 02
-6c 491f 80
-6c 4a16 0f
-6c 4a18 07
-6c 4a1e 02
-6c 4a1f 80
-6c 5000 2b
-6c 5001 08
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 aa
-6c c210 1f
-6c c211 20
-6c c231 02
-6c c232 03
-6c c233 1e
-6c c245 02
-6c c246 03
-6c c247 1e
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 25
-6c c49f 25
-6c c4a2 55
-6c c4a3 55
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2c
-6c c4c7 2c
-6c c4c8 2c
-6c c4c9 2c
-6c c4ca 2c
-6c c4cb 2c
-6c c4ce 03
-6c c4cf 01
-6c c4d0 02
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 1d
-6c c4e9 12
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 21
-6c c4ff 23
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 48
-6c c5c4 48
-6c c5c5 48
-6c c5c6 48
-6c c5c7 48
-6c c5c8 48
-6c c5c9 48
-6c c5ca 48
-6c c5cb 48
-6c c5cc 48
-6c c5cd 48
-6c c5ce 48
-6c c5fe 04
-6c c5ff 04
-
-6c 3501 18
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/7_OV50E40_8192x6144_10bit_11fps_AG16_PDDT_4096x1536LR_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/7_OV50E40_8192x6144_10bit_11fps_AG16_PDDT_4096x1536LR_20241202.txt
deleted file mode 100755
index 5b339245..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/7_OV50E40_8192x6144_10bit_11fps_AG16_PDDT_4096x1536LR_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 8192 6144
-102 9c1 2000
-102 9c5 1800
-102 9c2 1000
-102 9c6 600
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 f4
-6c 0326 d4
-6c 0327 0b
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 58
-6c 350e 00
-6c 350f 00
-6c 3546 38
-6c 354e 00
-6c 354f 00
-6c 3586 38
-6c 358e 00
-6c 358f 00
-6c 3600 07
-6c 3608 f0
-6c 360a bf
-6c 3616 58
-6c 361a 56
-6c 361c 08
-6c 361e 16
-6c 363b 14
-6c 363c ba
-6c 3645 14
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 03
-6c 369a 00
-6c 36d0 00
-6c 3706 20
-6c 3707 04
-6c 3709 9d
-6c 370b 3e
-6c 370c 04
-6c 3712 51
-6c 3714 74
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 70
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 50
-6c 375e 00
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4c
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 20
-6c 3793 1c
-6c 3795 1c
-6c 3797 3e
-6c 3799 3c
-6c 379b 3c
-6c 37a0 70
-6c 37d0 00
-6c 37e3 30
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 18
-6c 3807 1f
-6c 3808 20
-6c 3809 00
-6c 380a 18
-6c 380b 00
-6c 380c 02
-6c 380d 58
-6c 380e 2c
-6c 380f 60
-6c 3811 0f
-6c 3813 10
-6c 3815 11
-6c 3820 44
-6c 3821 00
-6c 3822 00
-6c 3823 04
-6c 3828 14
-6c 3830 1c
-6c 3831 00
-6c 3837 1c
-6c 383f 08
-6c 384c 02
-6c 384d 58
-6c 3889 10
-6c 388b 10
-6c 388c 20
-6c 388d 00
-6c 388e 18
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 06
-6c 39ed 04
-6c 3a0d 00
-6c 3a13 00
-6c 3a14 04
-6c 3a15 01
-6c 3a16 02
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 00
-6c 3b02 00
-6c 3b03 07
-6c 3b04 07
-6c 3b05 07
-6c 3b08 07
-6c 3b14 02
-6c 3b15 07
-6c 3b19 07
-6c 3b1a 07
-6c 3b1d 00
-6c 3b22 07
-6c 3b25 07
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 07
-6c 3b33 07
-6c 3b34 07
-6c 3b38 07
-6c 3b39 07
-6c 3b3a 07
-6c 3b3b 07
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 11
-6c 3b57 11
-6c 3b58 11
-6c 3b59 11
-6c 3b5a 11
-6c 3b5b 11
-6c 3b5c 11
-6c 3b5d 11
-6c 3b82 11
-6c 3ba0 07
-6c 3ba1 11
-6c 3ba2 07
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa 00
-6c 3bff 08
-6c 4010 28
-6c 4012 fc
-6c 4016 1f
-6c 4018 0f
-6c 401e 01
-6c 401f 30
-6c 40c4 07
-6c 40c5 ff
-6c 40c6 07
-6c 40c7 ff
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 30
-6c 4510 03
-6c 4511 08
-6c 4512 05
-6c 4513 05
-6c 4514 af
-6c 4515 af
-6c 4516 05
-6c 4517 05
-6c 4518 af
-6c 4519 af
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 94
-6c 45c1 a4
-6c 45c2 02
-6c 45c3 07
-6c 45c4 13
-6c 45c5 00
-6c 45c6 08
-6c 45dd 00
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 01
-6c 4641 00
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 1f
-6c 4918 0f
-6c 491e 01
-6c 491f 30
-6c 4a16 1f
-6c 4a18 0f
-6c 4a1e 01
-6c 4a1f 30
-6c 5000 5b
-6c 5001 28
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 00
-6c c210 00
-6c c211 00
-6c c231 00
-6c c232 02
-6c c233 57
-6c c245 00
-6c c246 02
-6c c247 57
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 20
-6c c49f 20
-6c c4a2 3e
-6c c4a3 3e
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2a
-6c c4c7 2a
-6c c4c8 35
-6c c4c9 35
-6c c4ca 35
-6c c4cb 35
-6c c4ce 03
-6c c4cf 01
-6c c4d0 00
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 11
-6c c4e9 11
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 07
-6c c4ff 07
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 00
-6c c5c4 00
-6c c5c5 00
-6c c5c6 00
-6c c5c7 00
-6c c5c8 00
-6c c5c9 48
-6c c5ca 48
-6c c5cb 40
-6c c5cc 40
-6c c5cd 40
-6c c5ce 40
-6c c5fe 04
-6c c5ff 06
-
-6c 3501 2c
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/9_OV50E40_4096x3072_Cropping_10bit_30fps_AG16_PDDT_2048x768LR_20241202.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/9_OV50E40_4096x3072_Cropping_10bit_30fps_AG16_PDDT_2048x768LR_20241202.txt
deleted file mode 100755
index 4d91ba9c..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/9_OV50E40_4096x3072_Cropping_10bit_30fps_AG16_PDDT_2048x768LR_20241202.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-6c 0100 00
-102 670 100
-100 99 4096 3072
-102 9c1 1000
-102 9c5 c00
-102 9c2 800
-102 9c6 300
-;102 9c3 1000
-;102 9c7 600
-110 40 0
-102 baf 0
-110 58 8000000
-110 5a 4000000
-110 5c 4000000
-110 5e 4000000
-110 44 2b
-110 46 30
-110 4c 6b
-110 80 10
-102 670 100
-110 42 3
-110 40 1
-
-
-6c 0324 01
-6c 0325 f4
-6c 0326 d4
-6c 0327 0b
-6c 0360 09
-6c 3025 03
-6c 3400 04
-6c 3506 58
-6c 350e 00
-6c 350f 00
-6c 3546 38
-6c 354e 00
-6c 354f 00
-6c 3586 38
-6c 358e 00
-6c 358f 00
-6c 3600 c7
-6c 3608 f3
-6c 360a bb
-6c 3616 58
-6c 361a 56
-6c 361c 08
-6c 361e 16
-6c 363b 14
-6c 363c ba
-6c 3645 14
-6c 3680 00
-6c 3682 80
-6c 3684 01
-6c 3688 03
-6c 369a 00
-6c 36d0 00
-6c 3706 20
-6c 3707 04
-6c 3709 9d
-6c 370b 3e
-6c 370c 04
-6c 3712 51
-6c 3714 74
-6c 3715 00
-6c 3724 28 ;0107
-6c 372a 00
-6c 372b 00
-6c 374f 50
-6c 3755 70
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 50
-6c 375e 00
-6c 375f 02
-6c 3763 08
-6c 376c 00
-6c 3780 4c
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 20
-6c 3793 1c
-6c 3795 1c
-6c 3797 3e
-6c 3799 3c
-6c 379b 3c
-6c 37a0 70
-6c 37d0 00
-6c 37e3 30
-6c 3800 08
-6c 3801 00
-6c 3802 06
-6c 3803 00
-6c 3804 18
-6c 3805 1f
-6c 3806 12
-6c 3807 1f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 18
-6c 380f 68
-6c 3811 0f
-6c 3813 10
-6c 3815 11
-6c 3820 44
-6c 3821 00
-6c 3822 00
-6c 3823 04
-6c 3828 14
-6c 3830 1c
-6c 3831 00
-6c 3837 1c
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3889 10
-6c 388b 10
-6c 388c 10
-6c 388d 00
-6c 388e 0c
-6c 388f 00
-6c 3896 00
-6c 3917 00
-6c 3981 01
-6c 3982 20
-6c 398b 80
-6c 39ec 06
-6c 39ed 04
-6c 3a0d 00
-6c 3a13 00
-6c 3a14 04
-6c 3a15 01
-6c 3a16 02
-6c 3a17 00
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 00
-6c 3b02 00
-6c 3b03 07
-6c 3b04 07
-6c 3b05 07
-6c 3b08 07
-6c 3b14 02
-6c 3b15 07
-6c 3b19 07
-6c 3b1a 07
-6c 3b1d 00
-6c 3b22 07
-6c 3b25 07
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 07
-6c 3b33 07
-6c 3b34 07
-6c 3b38 07
-6c 3b39 07
-6c 3b3a 07
-6c 3b3b 07
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 11
-6c 3b57 11
-6c 3b58 11
-6c 3b59 11
-6c 3b5a 11
-6c 3b5b 11
-6c 3b5c 11
-6c 3b5d 11
-6c 3b82 11
-6c 3ba0 07
-6c 3ba1 11
-6c 3ba2 07
-6c 3bab 2c
-6c 3baf 58
-6c 3bf2 33
-6c 3bfa 00
-6c 3bff 08
-6c 4010 28
-6c 4012 fc
-6c 4016 1f
-6c 4018 0f
-6c 401e 01
-6c 401f 30
-6c 40c4 07
-6c 40c5 ff
-6c 40c6 07
-6c 40c7 ff
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 30
-6c 4510 03
-6c 4511 08
-6c 4512 05
-6c 4513 05
-6c 4514 af
-6c 4515 af
-6c 4516 05
-6c 4517 05
-6c 4518 af
-6c 4519 af
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 94
-6c 45c1 a4
-6c 45c2 02
-6c 45c3 07
-6c 45c4 13
-6c 45c5 00
-6c 45c6 04
-6c 45dd 00
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 00
-6c 4641 80
-6c 4643 0c
-6c 4680 05
-6c 468e 30
-6c 4813 10
-6c 4836 32
-6c 4916 1f
-6c 4918 0f
-6c 491e 01
-6c 491f 30
-6c 4a16 1f
-6c 4a18 0f
-6c 4a1e 01
-6c 4a1f 30
-6c 5000 5b
-6c 5001 28
-6c 5002 00
-6c 5006 00
-6c 6a03 00
-6c c200 00
-6c c210 00
-6c c211 00
-6c c231 00
-6c c232 01
-6c c233 8f
-6c c245 00
-6c c246 01
-6c c247 8f
-6c c40f 07
-6c c46d 55
-6c c48f 3f
-6c c49c 08
-6c c49e 20
-6c c49f 20
-6c c4a2 3e
-6c c4a3 3e
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2a
-6c c4c7 2a
-6c c4c8 35
-6c c4c9 35
-6c c4ca 35
-6c c4cb 35
-6c c4ce 03
-6c c4cf 01
-6c c4d0 00
-6c c4d1 00
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 11
-6c c4e9 11
-6c c4ed 07
-6c c4ee 07
-6c c4fa 07
-6c c4fb 07
-6c c4fe 07
-6c c4ff 07
-6c c50f 58
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c5c3 00
-6c c5c4 00
-6c c5c5 00
-6c c5c6 00
-6c c5c7 00
-6c c5c8 00
-6c c5c9 48
-6c c5ca 48
-6c c5cb 40
-6c c5cc 40
-6c c5cd 40
-6c c5ce 40
-6c c5fe 04
-6c c5ff 06
-
-6c 3501 18
-6c 3502 00
-6c 3508 01
-6c 3509 00
-
-6c 0100 01
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/OV50E40-CPHY_v0.5-20250205.XLSX b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/OV50E40-CPHY_v0.5-20250205.XLSX
deleted file mode 100755
index a6471955..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/OV50E40-CPHY_v0.5-20250205.XLSX and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/OV50E40-sensor-outputinfo--20250211.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/OV50E40-sensor-outputinfo--20250211.xlsx
deleted file mode 100755
index 31755326..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/OV50E40-sensor-outputinfo--20250211.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/OV50E40_Initial_CPHY_3Trio_2400Msps_20250116.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/OV50E40_Initial_CPHY_3Trio_2400Msps_20250116.txt
deleted file mode 100755
index 38ce12be..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/OV50E40_Initial_CPHY_3Trio_2400Msps_20250116.txt
+++ /dev/null
@@ -1,4364 +0,0 @@
-
-6c 0103 01
-20 0103 01
-44 0103 01
-46 0103 01
-sl 1 1
-
-20 3037 6c
-44 3039 6c
-46 303a 6c
-
-6c 0102 01
-;6c 0103 01
-;sleep 10ms
-
-6c 0102 01
-6c 0304 02
-6c 0305 58
-6c 0306 03
-6c 0307 00
-6c 0323 12
-6c 0324 01
-6c 0325 f4
-6c 0326 d4
-6c 0327 0b
-6c 0343 00
-6c 0345 20
-6c 034a 07
-6c 300d 11
-6c 300e 11
-6c 3012 31
-6c 301d 02
-6c 3025 03
-6c 3027 2c
-6c 3106 80
-6c 3107 c9
-6c 3201 10
-6c 3202 20
-6c 3203 30
-6c 3400 04
-6c 3408 08
-6c 340e 40
-6c 3421 01
-6c 3424 00
-6c 3425 00
-6c 3426 00
-6c 3427 a0
-6c 3428 10
-6c 3429 05
-6c 342a 00
-6c 342b 00
-6c 3504 0c
-6c 3506 58
-6c 3508 01
-6c 3509 00
-6c 350d 01
-6c 350e 00
-6c 350f 00
-6c 3544 0c
-6c 3546 38
-6c 3548 0f
-6c 3549 ff
-6c 3584 0c
-6c 3586 38
-6c 3508 0f
-6c 3509 ff
-6c 3600 07
-6c 3601 38
-6c 3604 38
-6c 3605 38
-6c 3608 f0
-6c 3609 46
-6c 360a bf
-6c 360c 50
-6c 360e 07
-6c 3616 58
-6c 3619 44
-6c 361a 56
-6c 361b 40
-6c 361c 08
-6c 361d 0c
-6c 361e 16
-6c 3622 b9
-6c 3623 83
-6c 3625 84
-6c 3626 c2
-6c 363b 14
-6c 363c ba
-6c 3642 97
-6c 3643 01
-6c 3645 14
-6c 3647 c1
-6c 3648 8e
-6c 364d 0f
-6c 3680 00
-6c 3682 80
-6c 3683 00
-6c 3684 00
-6c 3688 03
-6c 369a 00
-6c 36a5 08
-6c 36d0 00
-6c 3700 1a
-6c 3701 13
-6c 3702 2c
-6c 3703 31
-6c 3704 03
-6c 3706 20
-6c 3707 04
-6c 3708 25
-6c 3709 9d
-6c 370b 3e
-6c 370c 04
-6c 3712 51
-6c 3714 74
-6c 3715 00
-6c 3724 28
-6c 372a 00
-6c 372b 00
-6c 372e 1a
-6c 372f 13
-6c 3734 1a
-6c 3740 20
-6c 3741 80
-6c 3743 e0
-6c 374f 50
-6c 3754 2c
-6c 3755 70
-6c 3756 00
-6c 3757 30
-6c 3758 00
-6c 3759 50
-6c 375e 00
-6c 375f 02
-6c 3763 08
-6c 3767 28
-6c 376c 00
-6c 3780 4c
-6c 3781 00
-6c 3782 01
-6c 3785 01
-6c 3786 01
-6c 3789 01
-6c 378a 01
-6c 378d 01
-6c 378e 01
-6c 3791 20
-6c 3793 1c
-6c 3795 1c
-6c 3797 3e
-6c 3799 3c
-6c 379b 3c
-6c 379f 01
-6c 37a0 70
-6c 37cb 03
-6c 37d0 00
-6c 37d1 00
-6c 37db 0f
-6c 37dc 19
-6c 37e3 30
-6c 37f8 25
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 1f
-6c 3806 18
-6c 3807 1f
-6c 3808 20
-6c 3809 00
-6c 380a 18
-6c 380b 00
-6c 380c 01
-6c 380d 90
-6c 380e 18
-6c 380f 6c
-6c 3810 00
-6c 3811 0f
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 3820 40
-6c 3821 04
-6c 3822 00
-6c 3823 04
-6c 3828 14
-6c 382a 80
-6c 382e 79
-6c 3830 1c
-6c 3831 00
-6c 3837 1c
-6c 383f 08
-6c 384c 01
-6c 384d 90
-6c 3858 00
-6c 3888 00
-6c 3889 10
-6c 388a 00
-6c 388b 10
-6c 388c 20
-6c 388d 00
-6c 388e 18
-6c 388f 00
-6c 3896 00
-6c 3900 40
-6c 3903 01
-6c 3904 f7
-6c 3905 d4
-6c 3906 00
-6c 3907 00
-6c 3917 00
-6c 3918 00
-6c 391c ba
-6c 3924 aa
-6c 3939 c0
-6c 393a ff
-6c 393b c0
-6c 394e 01
-6c 394f 01
-6c 3981 01
-6c 3982 20
-6c 398a 01
-6c 398b 80
-6c 3992 03
-6c 3993 01
-6c 399d 07
-6c 399e 01
-6c 39ec 06
-6c 39ed 04
-6c 39fb 1a
-6c 39fc 1a
-6c 39fd 1a
-6c 39fe 1a
-6c 3a0d 00
-6c 3a13 00
-6c 3a14 04
-6c 3a15 01
-6c 3a16 02
-6c 3a17 00
-6c 3a1d 1a
-6c 3a1e 1a
-6c 3a21 1a
-6c 3a22 1a
-6c 3a2a 01
-6c 3a2e 01
-6c 3a2f 01
-6c 3a30 01
-6c 3a31 01
-6c 3a32 01
-6c 3a34 01
-6c 3a35 01
-6c 3a36 01
-6c 3a37 01
-6c 3a40 01
-6c 3a42 01
-6c 3a43 01
-6c 3a44 01
-6c 3a45 01
-6c 3a46 01
-6c 3a48 01
-6c 3a49 01
-6c 3a4a 01
-6c 3a4b 01
-6c 3a5e 50
-6c 3a68 07
-6c 3a69 34
-6c 3a78 03
-6c 3a79 03
-6c 3a7c 04
-6c 3a7d 04
-6c 3ab1 5b
-6c 3ab6 1a
-6c 3ab7 1a
-6c 3ab8 1a
-6c 3ab9 1a
-6c 3aed 3a
-6c 3af1 3f
-6c 3afd 04
-6c 3afe 09
-6c 3aff 04
-6c 3b00 09
-6c 3b01 00
-6c 3b02 00
-6c 3b03 07
-6c 3b04 07
-6c 3b05 07
-6c 3b08 07
-6c 3b14 02
-6c 3b15 07
-6c 3b19 07
-6c 3b1a 07
-6c 3b1d 00
-6c 3b22 07
-6c 3b25 07
-6c 3b2b 00
-6c 3b2c 00
-6c 3b2d 04
-6c 3b32 07
-6c 3b33 07
-6c 3b34 07
-6c 3b38 07
-6c 3b39 07
-6c 3b3a 07
-6c 3b3b 07
-6c 3b3c 00
-6c 3b3d 00
-6c 3b41 07
-6c 3b42 07
-6c 3b43 07
-6c 3b44 07
-6c 3b45 00
-6c 3b49 00
-6c 3b56 11
-6c 3b57 11
-6c 3b58 11
-6c 3b59 11
-6c 3b5a 11
-6c 3b5b 11
-6c 3b5c 11
-6c 3b5d 11
-6c 3b82 11
-6c 3ba0 07
-6c 3ba1 11
-6c 3ba2 07
-6c 3ba3 0e
-6c 3ba4 77
-6c 3ba5 77
-6c 3ba6 77
-6c 3ba7 77
-6c 3baa 38
-6c 3bab 2c
-6c 3bac 77
-6c 3baf 58
-6c 3bba 58
-6c 3bca 1a
-6c 3beb 00
-6c 3bf2 33
-6c 3bfa 00
-6c 3bff 08
-6c 3d8c 9b
-6c 3d8d a0
-6c 4008 00
-6c 4009 02
-6c 4010 28
-6c 4012 fc
-6c 4015 00
-6c 4016 1f
-6c 4017 00
-6c 4018 0f
-6c 401b 04
-6c 401e 01
-6c 401f 30
-6c 4030 00
-6c 4031 00
-6c 4032 00
-6c 4033 00
-6c 4034 00
-6c 4035 00
-6c 4036 00
-6c 4037 00
-6c 4038 00
-6c 4039 00
-6c 403a 00
-6c 403b 00
-6c 403c 00
-6c 403d 00
-6c 403e 00
-6c 403f 00
-6c 4040 00
-6c 4041 80
-6c 4042 0f
-6c 4043 80
-6c 4044 00
-6c 4045 90
-6c 4046 0f
-6c 4047 70
-6c 40c4 07
-6c 40c5 ff
-6c 40c6 07
-6c 40c7 ff
-6c 4288 07
-6c 4505 0c
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 30
-6c 450e 00
-6c 4510 03
-6c 4511 08
-6c 4512 05
-6c 4513 05
-6c 4514 af
-6c 4515 af
-6c 4516 05
-6c 4517 05
-6c 4518 af
-6c 4519 af
-6c 451a 11
-6c 451b bb
-6c 451c 11
-6c 451d bb
-6c 451e 11
-6c 451f bb
-6c 4520 11
-6c 4521 bb
-6c 4542 00
-6c 4549 00
-6c 45c0 00
-6c 45c1 00
-6c 45c2 02
-6c 45c3 80
-6c 45c4 10
-6c 45c5 00
-6c 45c6 00
-6c 45c7 00
-6c 45c8 00
-6c 45c9 00
-6c 45ca 00
-6c 45cb 00
-6c 45cc 00
-6c 45cd 07
-6c 45ce 13
-6c 45cf 13
-6c 45d0 13
-6c 45d3 00
-6c 45d4 00
-6c 45d5 00
-6c 45d6 00
-6c 45d7 00
-6c 45d8 00
-6c 45d9 00
-6c 45da 00
-6c 45dd 00
-6c 45d2 00
-6c 45de 00
-6c 45df 00
-6c 45e0 00
-6c 45e1 00
-6c 45e2 00
-6c 45e3 00
-6c 45e4 00
-6c 45e5 00
-6c 4602 00
-6c 4603 11
-6c 460b 07
-6c 4640 02
-6c 4641 00
-6c 4643 08
-6c 4644 e0
-6c 4647 02
-6c 464c 01
-6c 4680 05
-6c 4684 30
-6c 4685 17
-6c 468e 30
-6c 4690 00
-6c 4802 02
-6c 4813 10
-6c 481b 14
-6c 481f 26
-6c 4825 40
-6c 4836 32
-6c 4837 05
-6c 4850 42
-6c 4851 aa
-6c 4853 10
-6c 4854 05
-6c 4855 1c
-6c 4860 01
-6c 4862 30
-6c 4883 24
-6c 4888 80
-6c 4908 00
-6c 4909 02
-6c 4910 28
-6c 4915 00
-6c 4916 1f
-6c 4917 00
-6c 4918 0f
-6c 491b 04
-6c 491e 01
-6c 491f 30
-6c 4930 00
-6c 4931 00
-6c 4932 00
-6c 4933 00
-6c 4934 00
-6c 4935 00
-6c 4936 00
-6c 4937 00
-6c 4938 00
-6c 4939 00
-6c 493a 00
-6c 493b 00
-6c 493c 00
-6c 493d 00
-6c 493e 00
-6c 493f 00
-6c 4940 00
-6c 4941 80
-6c 4942 0f
-6c 4943 80
-6c 4944 00
-6c 4945 90
-6c 4946 0f
-6c 4947 70
-6c 4a08 00
-6c 4a09 02
-6c 4a15 00
-6c 4a16 1f
-6c 4a17 00
-6c 4a18 0f
-6c 4a1b 04
-6c 4a1e 01
-6c 4a1f 30
-6c 4d00 04
-6c 4d01 9a
-6c 4d02 bb
-6c 4d03 33
-6c 4d04 61
-6c 4d05 9b
-6c 5000 5b
-6c 5001 28
-6c 5002 00
-6c 5004 02
-6c 5060 10
-6c 50c1 00
-6c 5110 90
-6c 5111 10
-6c 5112 9b
-6c 5113 27
-6c 5114 01
-6c 5155 08
-6c 5156 0c
-6c 5157 0c
-6c 5159 08
-6c 515a 0c
-6c 515b 0c
-6c 5180 c1
-6c 518a 00
-6c 53c1 00
-6c 5455 08
-6c 5456 0c
-6c 5457 0c
-6c 5459 08
-6c 545a 0c
-6c 545b 0c
-6c 5480 c1
-6c 548a 00
-6c 56c1 00
-6c 5755 08
-6c 5756 0c
-6c 5757 0c
-6c 5759 08
-6c 575a 0c
-6c 575b 0c
-6c 5780 c1
-6c 578a 00
-6c 5853 ff
-6c 5854 ff
-6c 5855 ff
-6c 5856 ff
-6c 5857 ff
-6c 5858 ff
-6c 587b 16
-6c 58a7 11
-6c 58c0 3f
-6c 58fd 0a
-6c 5925 00
-6c 5926 00
-6c 5927 00
-6c 5928 00
-6c 5929 00
-6c 592c 06
-6c 592d 00
-6c 592e 03
-6c 59c2 00
-6c 59c3 ce
-6c 59c4 01
-6c 59c5 20
-6c 59c6 01
-6c 59c7 91
-6c 59c8 02
-6c 59c9 2f
-6c 59ca 03
-6c 59cb 0a
-6c 59cc 04
-6c 59cd 3d
-6c 59ce 05
-6c 59cf e8
-6c 59d0 08
-6c 59d1 3c
-6c 59d2 0b
-6c 59d3 7a
-6c 59d4 0f
-6c 59d5 ff
-6c 59d6 0f
-6c 59d7 ff
-6c 59d8 0f
-6c 59d9 ff
-6c 59da 0f
-6c 59db ff
-6c 59ef 5f
-6c 6924 00
-6c 6925 00
-6c 6926 00
-6c 6942 00
-6c 6943 00
-6c 6944 00
-6c 694b 00
-6c 6a20 03
-6c 6a21 04
-6c 6a22 00
-6c 6a53 ff
-6c 6a54 ff
-6c 6a55 ff
-6c 6a56 ff
-6c 6a57 ff
-6c 6a58 ff
-6c 6a7b 16
-6c 6aa7 11
-6c 6ac0 3f
-6c 6afd 0a
-6c 6b25 00
-6c 6b26 00
-6c 6b27 00
-6c 6b28 00
-6c 6b29 00
-6c 6b2c 06
-6c 6b2d 00
-6c 6b2e 03
-6c 6bc2 00
-6c 6bc3 ce
-6c 6bc4 01
-6c 6bc5 20
-6c 6bc6 01
-6c 6bc7 91
-6c 6bc8 02
-6c 6bc9 2f
-6c 6bca 03
-6c 6bcb 0a
-6c 6bcc 04
-6c 6bcd 3d
-6c 6bce 05
-6c 6bcf e8
-6c 6bd0 08
-6c 6bd1 3c
-6c 6bd2 0b
-6c 6bd3 7a
-6c 6bd4 0f
-6c 6bd5 ff
-6c 6bd6 0f
-6c 6bd7 ff
-6c 6bd8 0f
-6c 6bd9 ff
-6c 6bda 0f
-6c 6bdb ff
-6c 6bef 5f
-6c c200 00
-6c c210 00
-6c c211 00
-6c c212 00
-6c c213 00
-6c c231 00
-6c c232 01
-6c c233 8f
-6c c240 00
-6c c241 00
-6c c242 00
-6c c243 00
-6c c245 00
-6c c246 01
-6c c247 8f
-6c c250 00
-6c c251 00
-6c c252 00
-6c c253 00
-6c c258 00
-6c c259 00
-6c c25a 00
-6c c25b 00
-6c c264 00
-6c c265 00
-6c c266 00
-6c c267 00
-6c c26c 00
-6c c26d 00
-6c c26e 00
-6c c26f 00
-6c c40d 04
-6c c40f 07
-6c c415 01
-6c c44a 01
-6c c44c 01
-6c c44e 03
-6c c44f 03
-6c c450 04
-6c c451 04
-6c c45e 13
-6c c46d 55
-6c c47f 06
-6c c480 03
-6c c48d 80
-6c c48c c0
-6c c48f 3f
-6c c491 00
-6c c49c 08
-6c c49e 20
-6c c49f 20
-6c c4a2 3e
-6c c4a3 3e
-6c c4a6 1a
-6c c4a7 1a
-6c c4ae 00
-6c c4af 00
-6c c4b0 00
-6c c4b1 00
-6c c4b2 00
-6c c4c1 00
-6c c4c2 07
-6c c4c3 07
-6c c4c4 07
-6c c4c6 2a
-6c c4c7 2a
-6c c4c8 35
-6c c4c9 35
-6c c4ca 35
-6c c4cb 35
-6c c4cc ff
-6c c4cd 0f
-6c c4ce 03
-6c c4cf 01
-6c c4d0 00
-6c c4d1 00
-6c c4d2 0c
-6c c4d3 0c
-6c c4d4 0c
-6c c4d5 0c
-6c c4e0 07
-6c c4e1 07
-6c c4e2 07
-6c c4e3 11
-6c c4e9 11
-6c c4ed 07
-6c c4ee 07
-6c c4ef ee
-6c c4f0 ee
-6c c4f1 0e
-6c c4fa 07
-6c c4fb 07
-6c c4fd 80
-6c c4fc 80
-6c c4fe 07
-6c c4ff 07
-6c c50b 77
-6c c50e 58
-6c c50f 58
-6c c510 30
-6c c511 1a
-6c c512 09
-6c c513 58
-6c c514 58
-6c c515 30
-6c c516 1c
-6c c517 0c
-6c c518 38
-6c c519 38
-6c c51a 38
-6c c51b 38
-6c c51c 38
-6c c51d 2c
-6c c51e 2c
-6c c51f 2c
-6c c520 2c
-6c c521 2c
-6c c526 0e
-6c c527 0e
-6c c528 0e
-6c c529 0e
-6c c52a 0e
-6c c52b 0e
-6c c52c 0e
-6c c52d 0e
-6c c52e 0e
-6c c52f 0e
-6c c530 0e
-6c c531 0e
-6c c532 0e
-6c c533 0e
-6c c534 0e
-6c c535 0e
-6c c57b ff
-6c c583 18
-6c c584 08
-6c c58b 18
-6c c58c 08
-6c c58f 2c
-6c c590 2c
-6c c591 2c
-6c c592 2c
-6c c593 2c
-6c c594 10
-6c c597 2c
-6c c598 2c
-6c c599 2c
-6c c59a 2c
-6c c59b 2c
-6c c59c 10
-6c c5c3 00
-6c c5c4 00
-6c c5c5 00
-6c c5c6 00
-6c c5c7 00
-6c c5c8 00
-6c c5c9 48
-6c c5ca 48
-6c c5cb 40
-6c c5cc 40
-6c c5cd 40
-6c c5ce 40
-6c c5e8 00
-6c c5fe 04
-6c c5ff 06
-6c c624 00
-
-;QPDC initial. When sensor uses real calibration value, these registers can be removed.
-6c 5ac0 80
-6c 5ac1 80
-6c 5ac2 80
-6c 5ac3 80
-6c 5ac4 80
-6c 5ac5 80
-6c 5ac6 80
-6c 5ac7 80
-6c 5ac8 80
-6c 5ac9 80
-6c 5aca 80
-6c 5acb 80
-6c 5acc 80
-6c 5acd 80
-6c 5ace 80
-6c 5acf 80
-6c 5ad0 80
-6c 5ad1 80
-6c 5ad2 80
-6c 5ad3 80
-6c 5ad4 80
-6c 5ad5 80
-6c 5ad6 80
-6c 5ad7 80
-6c 5ad8 80
-6c 5ad9 80
-6c 5ada 80
-6c 5adb 80
-6c 5adc 80
-6c 5add 80
-6c 5ade 80
-6c 5adf 80
-6c 5ae0 80
-6c 5ae1 80
-6c 5ae2 80
-6c 5ae3 80
-6c 5ae4 80
-6c 5ae5 80
-6c 5ae6 80
-6c 5ae7 80
-6c 5ae8 80
-6c 5ae9 80
-6c 5aea 80
-6c 5aeb 80
-6c 5aec 80
-6c 5aed 80
-6c 5aee 80
-6c 5aef 80
-6c 5af0 80
-6c 5af1 80
-6c 5af2 80
-6c 5af3 80
-6c 5af4 80
-6c 5af5 80
-6c 5af6 80
-6c 5af7 80
-6c 5af8 80
-6c 5af9 80
-6c 5afa 80
-6c 5afb 80
-6c 5afc 80
-6c 5afd 80
-6c 5afe 80
-6c 5aff 80
-6c 5b00 80
-6c 5b01 80
-6c 5b02 80
-6c 5b03 80
-6c 5b04 80
-6c 5b05 80
-6c 5b06 80
-6c 5b07 80
-6c 5b08 80
-6c 5b09 80
-6c 5b0a 80
-6c 5b0b 80
-6c 5b0c 80
-6c 5b0d 80
-6c 5b0e 80
-6c 5b0f 80
-6c 5b10 80
-6c 5b11 80
-6c 5b12 80
-6c 5b13 80
-6c 5b14 80
-6c 5b15 80
-6c 5b16 80
-6c 5b17 80
-6c 5b18 80
-6c 5b19 80
-6c 5b1a 80
-6c 5b1b 80
-6c 5b1c 80
-6c 5b1d 80
-6c 5b1e 80
-6c 5b1f 80
-6c 5b20 80
-6c 5b21 80
-6c 5b22 80
-6c 5b23 80
-6c 5b24 80
-6c 5b25 80
-6c 5b26 80
-6c 5b27 80
-6c 5b28 80
-6c 5b29 80
-6c 5b2a 80
-6c 5b2b 80
-6c 5b2c 80
-6c 5b2d 80
-6c 5b2e 80
-6c 5b2f 80
-6c 5b30 80
-6c 5b31 80
-6c 5b32 80
-6c 5b33 80
-6c 5b34 80
-6c 5b35 80
-6c 5b36 80
-6c 5b37 80
-6c 5b38 80
-6c 5b39 80
-6c 5b3a 80
-6c 5b3b 80
-6c 5b3c 80
-6c 5b3d 80
-6c 5b3e 80
-6c 5b3f 80
-6c 5b40 80
-6c 5b41 80
-6c 5b42 80
-6c 5b43 80
-6c 5b44 80
-6c 5b45 80
-6c 5b46 80
-6c 5b47 80
-6c 5b48 80
-6c 5b49 80
-6c 5b4a 80
-6c 5b4b 80
-6c 5b4c 80
-6c 5b4d 80
-6c 5b4e 80
-6c 5b4f 80
-6c 5b50 80
-6c 5b51 80
-6c 5b52 80
-6c 5b53 80
-6c 5b54 80
-6c 5b55 80
-6c 5b56 80
-6c 5b57 80
-6c 5b58 80
-6c 5b59 80
-6c 5b5a 80
-6c 5b5b 80
-6c 5b5c 80
-6c 5b5d 80
-6c 5b5e 80
-6c 5b5f 80
-6c 5b60 80
-6c 5b61 80
-6c 5b62 80
-6c 5b63 80
-6c 5b64 80
-6c 5b65 80
-6c 5b66 80
-6c 5b67 80
-6c 5b68 80
-6c 5b69 80
-6c 5b6a 80
-6c 5b6b 80
-6c 5b6c 80
-6c 5b6d 80
-6c 5b6e 80
-6c 5b6f 80
-6c 5b70 80
-6c 5b71 80
-6c 5b72 80
-6c 5b73 80
-6c 5b74 80
-6c 5b75 80
-6c 5b76 80
-6c 5b77 80
-6c 5b78 80
-6c 5b79 80
-6c 5b7a 80
-6c 5b7b 80
-6c 5b7c 80
-6c 5b7d 80
-6c 5b7e 80
-6c 5b7f 80
-6c 5b80 80
-6c 5b81 80
-6c 5b82 80
-6c 5b83 80
-6c 5b84 80
-6c 5b85 80
-6c 5b86 80
-6c 5b87 80
-6c 5b88 80
-6c 5b89 80
-6c 5b8a 80
-6c 5b8b 80
-6c 5b8c 80
-6c 5b8d 80
-6c 5b8e 80
-6c 5b8f 80
-6c 5b90 80
-6c 5b91 80
-6c 5b92 80
-6c 5b93 80
-6c 5b94 80
-6c 5b95 80
-6c 5b96 80
-6c 5b97 80
-6c 5b98 80
-6c 5b99 80
-6c 5b9a 80
-6c 5b9b 80
-6c 5b9c 80
-6c 5b9d 80
-6c 5b9e 80
-6c 5b9f 80
-6c 5ba0 80
-6c 5ba1 80
-6c 5ba2 80
-6c 5ba3 80
-6c 5ba4 80
-6c 5ba5 80
-6c 5ba6 80
-6c 5ba7 80
-6c 5ba8 80
-6c 5ba9 80
-6c 5baa 80
-6c 5bab 80
-6c 5bac 80
-6c 5bad 80
-6c 5bae 80
-6c 5baf 80
-6c 5bb0 80
-6c 5bb1 80
-6c 5bb2 80
-6c 5bb3 80
-6c 5bb4 80
-6c 5bb5 80
-6c 5bb6 80
-6c 5bb7 80
-6c 5bb8 80
-6c 5bb9 80
-6c 5bba 80
-6c 5bbb 80
-6c 5bbc 80
-6c 5bbd 80
-6c 5bbe 80
-6c 5bbf 80
-6c 5bc0 80
-6c 5bc1 80
-6c 5bc2 80
-6c 5bc3 80
-6c 5bc4 80
-6c 5bc5 80
-6c 5bc6 80
-6c 5bc7 80
-6c 5bc8 80
-6c 5bc9 80
-6c 5bca 80
-6c 5bcb 80
-6c 5bcc 80
-6c 5bcd 80
-6c 5bce 80
-6c 5bcf 80
-6c 5bd0 80
-6c 5bd1 80
-6c 5bd2 80
-6c 5bd3 80
-6c 5bd4 80
-6c 5bd5 80
-6c 5bd6 80
-6c 5bd7 80
-6c 5bd8 80
-6c 5bd9 80
-6c 5bda 80
-6c 5bdb 80
-6c 5bdc 80
-6c 5bdd 80
-6c 5bde 80
-6c 5bdf 80
-6c 5be0 80
-6c 5be1 80
-6c 5be2 80
-6c 5be3 80
-6c 5be4 80
-6c 5be5 80
-6c 5be6 80
-6c 5be7 80
-6c 5be8 80
-6c 5be9 80
-6c 5bea 80
-6c 5beb 80
-6c 5bec 80
-6c 5bed 80
-6c 5bee 80
-6c 5bef 80
-6c 5bf0 80
-6c 5bf1 80
-6c 5bf2 80
-6c 5bf3 80
-6c 5bf4 80
-6c 5bf5 80
-6c 5bf6 80
-6c 5bf7 80
-6c 5bf8 80
-6c 5bf9 80
-6c 5bfa 80
-6c 5bfb 80
-6c 5bfc 80
-6c 5bfd 80
-6c 5bfe 80
-6c 5bff 80
-6c 5c00 80
-6c 5c01 80
-6c 5c02 80
-6c 5c03 80
-6c 5c04 80
-6c 5c05 80
-6c 5c06 80
-6c 5c07 80
-6c 5c08 80
-6c 5c09 80
-6c 5c0a 80
-6c 5c0b 80
-6c 5c0c 80
-6c 5c0d 80
-6c 5c0e 80
-6c 5c0f 80
-6c 5c10 80
-6c 5c11 80
-6c 5c12 80
-6c 5c13 80
-6c 5c14 80
-6c 5c15 80
-6c 5c16 80
-6c 5c17 80
-6c 5c18 80
-6c 5c19 80
-6c 5c1a 80
-6c 5c1b 80
-6c 5c1c 80
-6c 5c1d 80
-6c 5c1e 80
-6c 5c1f 80
-6c 5c20 80
-6c 5c21 80
-6c 5c22 80
-6c 5c23 80
-6c 5c24 80
-6c 5c25 80
-6c 5c26 80
-6c 5c27 80
-6c 5c28 80
-6c 5c29 80
-6c 5c2a 80
-6c 5c2b 80
-6c 5c2c 80
-6c 5c2d 80
-6c 5c2e 80
-6c 5c2f 80
-6c 5c30 80
-6c 5c31 80
-6c 5c32 80
-6c 5c33 80
-6c 5c34 80
-6c 5c35 80
-6c 5c36 80
-6c 5c37 80
-6c 5c38 80
-6c 5c39 80
-6c 5c3a 80
-6c 5c3b 80
-6c 5c3c 80
-6c 5c3d 80
-6c 5c3e 80
-6c 5c3f 80
-6c 5c40 80
-6c 5c41 80
-6c 5c42 80
-6c 5c43 80
-6c 5c44 80
-6c 5c45 80
-6c 5c46 80
-6c 5c47 80
-6c 5c48 80
-6c 5c49 80
-6c 5c4a 80
-6c 5c4b 80
-6c 5c4c 80
-6c 5c4d 80
-6c 5c4e 80
-6c 5c4f 80
-6c 5c50 80
-6c 5c51 80
-6c 5c52 80
-6c 5c53 80
-6c 5c54 80
-6c 5c55 80
-6c 5c56 80
-6c 5c57 80
-6c 5c58 80
-6c 5c59 80
-6c 5c5a 80
-6c 5c5b 80
-6c 5c5c 80
-6c 5c5d 80
-6c 5c5e 80
-6c 5c5f 80
-6c 5c60 80
-6c 5c61 80
-6c 5c62 80
-6c 5c63 80
-6c 5c64 80
-6c 5c65 80
-6c 5c66 80
-6c 5c67 80
-6c 5c68 80
-6c 5c69 80
-6c 5c6a 80
-6c 5c6b 80
-6c 5c6c 80
-6c 5c6d 80
-6c 5c6e 80
-6c 5c6f 80
-6c 5c70 80
-6c 5c71 80
-6c 5c72 80
-6c 5c73 80
-6c 5c74 80
-6c 5c75 80
-6c 5c76 80
-6c 5c77 80
-6c 5c78 80
-6c 5c79 80
-6c 5c7a 80
-6c 5c7b 80
-6c 5c7c 80
-6c 5c7d 80
-6c 5c7e 80
-6c 5c7f 80
-6c 5c80 80
-6c 5c81 80
-6c 5c82 80
-6c 5c83 80
-6c 5c84 80
-6c 5c85 80
-6c 5c86 80
-6c 5c87 80
-6c 5c88 80
-6c 5c89 80
-6c 5c8a 80
-6c 5c8b 80
-6c 5c8c 80
-6c 5c8d 80
-6c 5c8e 80
-6c 5c8f 80
-6c 5c90 80
-6c 5c91 80
-6c 5c92 80
-6c 5c93 80
-6c 5c94 80
-6c 5c95 80
-6c 5c96 80
-6c 5c97 80
-6c 5c98 80
-6c 5c99 80
-6c 5c9a 80
-6c 5c9b 80
-6c 5c9c 80
-6c 5c9d 80
-6c 5c9e 80
-6c 5c9f 80
-6c 5ca0 80
-6c 5ca1 80
-6c 5ca2 80
-6c 5ca3 80
-6c 5ca4 80
-6c 5ca5 80
-6c 5ca6 80
-6c 5ca7 80
-6c 5ca8 80
-6c 5ca9 80
-6c 5caa 80
-6c 5cab 80
-6c 5cac 80
-6c 5cad 80
-6c 5cae 80
-6c 5caf 80
-6c 5cb0 80
-6c 5cb1 80
-6c 5cb2 80
-6c 5cb3 80
-6c 5cb4 80
-6c 5cb5 80
-6c 5cb6 80
-6c 5cb7 80
-6c 5cb8 80
-6c 5cb9 80
-6c 5cba 80
-6c 5cbb 80
-6c 5cbc 80
-6c 5cbd 80
-6c 5cbe 80
-6c 5cbf 80
-6c 5cc0 80
-6c 5cc1 80
-6c 5cc2 80
-6c 5cc3 80
-6c 5cc4 80
-6c 5cc5 80
-6c 5cc6 80
-6c 5cc7 80
-6c 5cc8 80
-6c 5cc9 80
-6c 5cca 80
-6c 5ccb 80
-6c 5ccc 80
-6c 5ccd 80
-6c 5cce 80
-6c 5ccf 80
-6c 5cd0 80
-6c 5cd1 80
-6c 5cd2 80
-6c 5cd3 80
-6c 5cd4 80
-6c 5cd5 80
-6c 5cd6 80
-6c 5cd7 80
-6c 5cd8 80
-6c 5cd9 80
-6c 5cda 80
-6c 5cdb 80
-6c 5cdc 80
-6c 5cdd 80
-6c 5cde 80
-6c 5cdf 80
-6c 5ce0 80
-6c 5ce1 80
-6c 5ce2 80
-6c 5ce3 80
-6c 5ce4 80
-6c 5ce5 80
-6c 5ce6 80
-6c 5ce7 80
-6c 5ce8 80
-6c 5ce9 80
-6c 5cea 80
-6c 5ceb 80
-6c 5cec 80
-6c 5ced 80
-6c 5cee 80
-6c 5cef 80
-6c 5cf0 80
-6c 5cf1 80
-6c 5cf2 80
-6c 5cf3 80
-6c 5cf4 80
-6c 5cf5 80
-6c 5cf6 80
-6c 5cf7 80
-6c 5cf8 80
-6c 5cf9 80
-6c 5cfa 80
-6c 5cfb 80
-6c 5cfc 80
-6c 5cfd 80
-6c 5cfe 80
-6c 5cff 80
-6c 5d00 80
-6c 5d01 80
-6c 5d02 80
-6c 5d03 80
-6c 5d04 80
-6c 5d05 80
-6c 5d06 80
-6c 5d07 80
-6c 5d08 80
-6c 5d09 80
-6c 5d0a 80
-6c 5d0b 80
-6c 5d0c 80
-6c 5d0d 80
-6c 5d0e 80
-6c 5d0f 80
-6c 5d10 80
-6c 5d11 80
-6c 5d12 80
-6c 5d13 80
-6c 5d14 80
-6c 5d15 80
-6c 5d16 80
-6c 5d17 80
-6c 5d18 80
-6c 5d19 80
-6c 5d1a 80
-6c 5d1b 80
-6c 5d1c 80
-6c 5d1d 80
-6c 5d1e 80
-6c 5d1f 80
-6c 5d20 80
-6c 5d21 80
-6c 5d22 80
-6c 5d23 80
-6c 5d24 80
-6c 5d25 80
-6c 5d26 80
-6c 5d27 80
-6c 5d28 80
-6c 5d29 80
-6c 5d2a 80
-6c 5d2b 80
-6c 5d2c 80
-6c 5d2d 80
-6c 5d2e 80
-6c 5d2f 80
-6c 5d30 80
-6c 5d31 80
-6c 5d32 80
-6c 5d33 80
-6c 5d34 80
-6c 5d35 80
-6c 5d36 80
-6c 5d37 80
-6c 5d38 80
-6c 5d39 80
-6c 5d3a 80
-6c 5d3b 80
-6c 5d3c 80
-6c 5d3d 80
-6c 5d3e 80
-6c 5d3f 80
-6c 5d40 80
-6c 5d41 80
-6c 5d42 80
-6c 5d43 80
-6c 5d44 80
-6c 5d45 80
-6c 5d46 80
-6c 5d47 80
-6c 5d48 80
-6c 5d49 80
-6c 5d4a 80
-6c 5d4b 80
-6c 5d4c 80
-6c 5d4d 80
-6c 5d4e 80
-6c 5d4f 80
-6c 5d50 80
-6c 5d51 80
-6c 5d52 80
-6c 5d53 80
-6c 5d54 80
-6c 5d55 80
-6c 5d56 80
-6c 5d57 80
-6c 5d58 80
-6c 5d59 80
-6c 5d5a 80
-6c 5d5b 80
-6c 5d5c 80
-6c 5d5d 80
-6c 5d5e 80
-6c 5d5f 80
-6c 5d60 80
-6c 5d61 80
-6c 5d62 80
-6c 5d63 80
-6c 5d64 80
-6c 5d65 80
-6c 5d66 80
-6c 5d67 80
-6c 5d68 80
-6c 5d69 80
-6c 5d6a 80
-6c 5d6b 80
-6c 5d6c 80
-6c 5d6d 80
-6c 5d6e 80
-6c 5d6f 80
-6c 5d70 80
-6c 5d71 80
-6c 5d72 80
-6c 5d73 80
-6c 5d74 80
-6c 5d75 80
-6c 5d76 80
-6c 5d77 80
-6c 5d78 80
-6c 5d79 80
-6c 5d7a 80
-6c 5d7b 80
-6c 5d7c 80
-6c 5d7d 80
-6c 5d7e 80
-6c 5d7f 80
-6c 5d80 80
-6c 5d81 80
-6c 5d82 80
-6c 5d83 80
-6c 5d84 80
-6c 5d85 80
-6c 5d86 80
-6c 5d87 80
-6c 5d88 80
-6c 5d89 80
-6c 5d8a 80
-6c 5d8b 80
-6c 5d8c 80
-6c 5d8d 80
-6c 5d8e 80
-6c 5d8f 80
-6c 5d90 80
-6c 5d91 80
-6c 5d92 80
-6c 5d93 80
-6c 5d94 80
-6c 5d95 80
-6c 5d96 80
-6c 5d97 80
-6c 5d98 80
-6c 5d99 80
-6c 5d9a 80
-6c 5d9b 80
-6c 5d9c 80
-6c 5d9d 80
-6c 5d9e 80
-6c 5d9f 80
-6c 5da0 80
-6c 5da1 80
-6c 5da2 80
-6c 5da3 80
-6c 5da4 80
-6c 5da5 80
-6c 5da6 80
-6c 5da7 80
-6c 5da8 80
-6c 5da9 80
-6c 5daa 80
-6c 5dab 80
-6c 5dac 80
-6c 5dad 80
-6c 5dae 80
-6c 5daf 80
-6c 5db0 80
-6c 5db1 80
-6c 5db2 80
-6c 5db3 80
-6c 5db4 80
-6c 5db5 80
-6c 5db6 80
-6c 5db7 80
-6c 5db8 80
-6c 5db9 80
-6c 5dba 80
-6c 5dbb 80
-6c 5dbc 80
-6c 5dbd 80
-6c 5dbe 80
-6c 5dbf 80
-6c 5dc0 80
-6c 5dc1 80
-6c 5dc2 80
-6c 5dc3 80
-6c 5dc4 80
-6c 5dc5 80
-6c 5dc6 80
-6c 5dc7 80
-6c 5dc8 80
-6c 5dc9 80
-6c 5dca 80
-6c 5dcb 80
-6c 5dcc 80
-6c 5dcd 80
-6c 5dce 80
-6c 5dcf 80
-6c 5dd0 80
-6c 5dd1 80
-6c 5dd2 80
-6c 5dd3 80
-6c 5dd4 80
-6c 5dd5 80
-6c 5dd6 80
-6c 5dd7 80
-6c 5dd8 80
-6c 5dd9 80
-6c 5dda 80
-6c 5ddb 80
-6c 5ddc 80
-6c 5ddd 80
-6c 5dde 80
-6c 5ddf 80
-6c 5de0 80
-6c 5de1 80
-6c 5de2 80
-6c 5de3 80
-6c 5de4 80
-6c 5de5 80
-6c 5de6 80
-6c 5de7 80
-6c 5de8 80
-6c 5de9 80
-6c 5dea 80
-6c 5deb 80
-6c 5dec 80
-6c 5ded 80
-6c 5dee 80
-6c 5def 80
-6c 5df0 80
-6c 5df1 80
-6c 5df2 80
-6c 5df3 80
-6c 5df4 80
-6c 5df5 80
-6c 5df6 80
-6c 5df7 80
-6c 5df8 80
-6c 5df9 80
-6c 5dfa 80
-6c 5dfb 80
-6c 5dfc 80
-6c 5dfd 80
-6c 5dfe 80
-6c 5dff 80
-6c 5e00 80
-6c 5e01 80
-6c 5e02 80
-6c 5e03 80
-6c 5e04 80
-6c 5e05 80
-6c 5e06 80
-6c 5e07 80
-6c 5e08 80
-6c 5e09 80
-6c 5e0a 80
-6c 5e0b 80
-6c 5e0c 80
-6c 5e0d 80
-6c 5e0e 80
-6c 5e0f 80
-6c 5e10 80
-6c 5e11 80
-6c 5e12 80
-6c 5e13 80
-6c 5e14 80
-6c 5e15 80
-6c 5e16 80
-6c 5e17 80
-6c 5e18 80
-6c 5e19 80
-6c 5e1a 80
-6c 5e1b 80
-6c 5e1c 80
-6c 5e1d 80
-6c 5e1e 80
-6c 5e1f 80
-6c 5e20 80
-6c 5e21 80
-6c 5e22 80
-6c 5e23 80
-6c 5e24 80
-6c 5e25 80
-6c 5e26 80
-6c 5e27 80
-6c 5e28 80
-6c 5e29 80
-6c 5e2a 80
-6c 5e2b 80
-6c 5e2c 80
-6c 5e2d 80
-6c 5e2e 80
-6c 5e2f 80
-6c 5e30 80
-6c 5e31 80
-6c 5e32 80
-6c 5e33 80
-6c 5e34 80
-6c 5e35 80
-6c 5e36 80
-6c 5e37 80
-6c 5e38 80
-6c 5e39 80
-6c 5e3a 80
-6c 5e3b 80
-6c 5e3c 80
-6c 5e3d 80
-6c 5e3e 80
-6c 5e3f 80
-6c 5e40 80
-6c 5e41 80
-6c 5e42 80
-6c 5e43 80
-6c 5e44 80
-6c 5e45 80
-6c 5e46 80
-6c 5e47 80
-6c 5e48 80
-6c 5e49 80
-6c 5e4a 80
-6c 5e4b 80
-6c 5e4c 80
-6c 5e4d 80
-6c 5e4e 80
-6c 5e4f 80
-6c 5e50 80
-6c 5e51 80
-6c 5e52 80
-6c 5e53 80
-6c 5e54 80
-6c 5e55 80
-6c 5e56 80
-6c 5e57 80
-6c 5e58 80
-6c 5e59 80
-6c 5e5a 80
-6c 5e5b 80
-6c 5e5c 80
-6c 5e5d 80
-6c 5e5e 80
-6c 5e5f 80
-6c 5e60 80
-6c 5e61 80
-6c 5e62 80
-6c 5e63 80
-6c 5e64 80
-6c 5e65 80
-6c 5e66 80
-6c 5e67 80
-6c 5e68 80
-6c 5e69 80
-6c 5e6a 80
-6c 5e6b 80
-6c 5e6c 80
-6c 5e6d 80
-6c 5e6e 80
-6c 5e6f 80
-6c 5e70 80
-6c 5e71 80
-6c 5e72 80
-6c 5e73 80
-6c 5e74 80
-6c 5e75 80
-6c 5e76 80
-6c 5e77 80
-6c 5e78 80
-6c 5e79 80
-6c 5e7a 80
-6c 5e7b 80
-6c 5e7c 80
-6c 5e7d 80
-6c 5e7e 80
-6c 5e7f 80
-6c 5e80 80
-6c 5e81 80
-6c 5e82 80
-6c 5e83 80
-6c 5e84 80
-6c 5e85 80
-6c 5e86 80
-6c 5e87 80
-6c 5e88 80
-6c 5e89 80
-6c 5e8a 80
-6c 5e8b 80
-6c 5e8c 80
-6c 5e8d 80
-6c 5e8e 80
-6c 5e8f 80
-6c 5e90 80
-6c 5e91 80
-6c 5e92 80
-6c 5e93 80
-6c 5e94 80
-6c 5e95 80
-6c 5e96 80
-6c 5e97 80
-6c 5e98 80
-6c 5e99 80
-6c 5e9a 80
-6c 5e9b 80
-6c 5e9c 80
-6c 5e9d 80
-6c 5e9e 80
-6c 5e9f 80
-6c 5ea0 80
-6c 5ea1 80
-6c 5ea2 80
-6c 5ea3 80
-6c 5ea4 80
-6c 5ea5 80
-6c 5ea6 80
-6c 5ea7 80
-6c 5ea8 80
-6c 5ea9 80
-6c 5eaa 80
-6c 5eab 80
-6c 5eac 80
-6c 5ead 80
-6c 5eae 80
-6c 5eaf 80
-6c 5eb0 80
-6c 5eb1 80
-6c 5eb2 80
-6c 5eb3 80
-6c 5eb4 80
-6c 5eb5 80
-6c 5eb6 80
-6c 5eb7 80
-6c 5eb8 80
-6c 5eb9 80
-6c 5eba 80
-6c 5ebb 80
-6c 5ebc 80
-6c 5ebd 80
-6c 5ebe 80
-6c 5ebf 80
-6c 5ec0 80
-6c 5ec1 80
-6c 5ec2 80
-6c 5ec3 80
-6c 5ec4 80
-6c 5ec5 80
-6c 5ec6 80
-6c 5ec7 80
-6c 5ec8 80
-6c 5ec9 80
-6c 5eca 80
-6c 5ecb 80
-6c 5ecc 80
-6c 5ecd 80
-6c 5ece 80
-6c 5ecf 80
-6c 5ed0 80
-6c 5ed1 80
-6c 5ed2 80
-6c 5ed3 80
-6c 5ed4 80
-6c 5ed5 80
-6c 5ed6 80
-6c 5ed7 80
-6c 5ed8 80
-6c 5ed9 80
-6c 5eda 80
-6c 5edb 80
-6c 5edc 80
-6c 5edd 80
-6c 5ede 80
-6c 5edf 80
-6c 5ee0 80
-6c 5ee1 80
-6c 5ee2 80
-6c 5ee3 80
-6c 5ee4 80
-6c 5ee5 80
-6c 5ee6 80
-6c 5ee7 80
-6c 5ee8 80
-6c 5ee9 80
-6c 5eea 80
-6c 5eeb 80
-6c 5eec 80
-6c 5eed 80
-6c 5eee 80
-6c 5eef 80
-6c 5ef0 80
-6c 5ef1 80
-6c 5ef2 80
-6c 5ef3 80
-6c 5ef4 80
-6c 5ef5 80
-6c 5ef6 80
-6c 5ef7 80
-6c 5ef8 80
-6c 5ef9 80
-6c 5efa 80
-6c 5efb 80
-6c 5efc 80
-6c 5efd 80
-6c 5efe 80
-6c 5eff 80
-6c 5f00 80
-6c 5f01 80
-6c 5f02 80
-6c 5f03 80
-6c 5f04 80
-6c 5f05 80
-6c 5f06 80
-6c 5f07 80
-6c 5f08 80
-6c 5f09 80
-6c 5f0a 80
-6c 5f0b 80
-6c 5f0c 80
-6c 5f0d 80
-6c 5f0e 80
-6c 5f0f 80
-6c 5f10 80
-6c 5f11 80
-6c 5f12 80
-6c 5f13 80
-6c 5f14 80
-6c 5f15 80
-6c 5f16 80
-6c 5f17 80
-6c 5f18 80
-6c 5f19 80
-6c 5f1a 80
-6c 5f1b 80
-6c 5f1c 80
-6c 5f1d 80
-6c 5f1e 80
-6c 5f1f 80
-6c 5f20 80
-6c 5f21 80
-6c 5f22 80
-6c 5f23 80
-6c 5f24 80
-6c 5f25 80
-6c 5f26 80
-6c 5f27 80
-6c 5f28 80
-6c 5f29 80
-6c 5f2a 80
-6c 5f2b 80
-6c 5f2c 80
-6c 5f2d 80
-6c 5f2e 80
-6c 5f2f 80
-6c 5f30 80
-6c 5f31 80
-6c 5f32 80
-6c 5f33 80
-6c 5f34 80
-6c 5f35 80
-6c 5f36 80
-6c 5f37 80
-6c 5f38 80
-6c 5f39 80
-6c 5f3a 80
-6c 5f3b 80
-6c 5f3c 80
-6c 5f3d 80
-6c 5f3e 80
-6c 5f3f 80
-6c 5f40 80
-6c 5f41 80
-6c 5f42 80
-6c 5f43 80
-6c 5f44 80
-6c 5f45 80
-6c 5f46 80
-6c 5f47 80
-6c 5f48 80
-6c 5f49 80
-6c 5f4a 80
-6c 5f4b 80
-6c 5f4c 80
-6c 5f4d 80
-6c 5f4e 80
-6c 5f4f 80
-6c 5f50 80
-6c 5f51 80
-6c 5f52 80
-6c 5f53 80
-6c 5f54 80
-6c 5f55 80
-6c 5f56 80
-6c 5f57 80
-6c 5f58 80
-6c 5f59 80
-6c 5f5a 80
-6c 5f5b 80
-6c 5f5c 80
-6c 5f5d 80
-6c 5f5e 80
-6c 5f5f 80
-6c 5f60 80
-6c 5f61 80
-6c 5f62 80
-6c 5f63 80
-6c 5f64 80
-6c 5f65 80
-6c 5f66 80
-6c 5f67 80
-6c 5f68 80
-6c 5f69 80
-6c 5f6a 80
-6c 5f6b 80
-6c 5f6c 80
-6c 5f6d 80
-6c 5f6e 80
-6c 5f6f 80
-6c 5f70 80
-6c 5f71 80
-6c 5f72 80
-6c 5f73 80
-6c 5f74 80
-6c 5f75 80
-6c 5f76 80
-6c 5f77 80
-6c 5f78 80
-6c 5f79 80
-6c 5f7a 80
-6c 5f7b 80
-6c 5f7c 80
-6c 5f7d 80
-6c 5f7e 80
-6c 5f7f 80
-6c 5f80 80
-6c 5f81 80
-6c 5f82 80
-6c 5f83 80
-6c 5f84 80
-6c 5f85 80
-6c 5f86 80
-6c 5f87 80
-6c 5f88 80
-6c 5f89 80
-6c 5f8a 80
-6c 5f8b 80
-6c 5f8c 80
-6c 5f8d 80
-6c 5f8e 80
-6c 5f8f 80
-6c 5f90 80
-6c 5f91 80
-6c 5f92 80
-6c 5f93 80
-6c 5f94 80
-6c 5f95 80
-6c 5f96 80
-6c 5f97 80
-6c 5f98 80
-6c 5f99 80
-6c 5f9a 80
-6c 5f9b 80
-6c 5f9c 80
-6c 5f9d 80
-6c 5f9e 80
-6c 5f9f 80
-6c 5fa0 80
-6c 5fa1 80
-6c 5fa2 80
-6c 5fa3 80
-6c 5fa4 80
-6c 5fa5 80
-6c 5fa6 80
-6c 5fa7 80
-6c 5fa8 80
-6c 5fa9 80
-6c 5faa 80
-6c 5fab 80
-6c 5fac 80
-6c 5fad 80
-6c 5fae 80
-6c 5faf 80
-6c 5fb0 80
-6c 5fb1 80
-6c 5fb2 80
-6c 5fb3 80
-6c 5fb4 80
-6c 5fb5 80
-6c 5fb6 80
-6c 5fb7 80
-6c 5fb8 80
-6c 5fb9 80
-6c 5fba 80
-6c 5fbb 80
-6c 5fbc 80
-6c 5fbd 80
-6c 5fbe 80
-6c 5fbf 80
-6c 5fc0 80
-6c 5fc1 80
-6c 5fc2 80
-6c 5fc3 80
-6c 5fc4 80
-6c 5fc5 80
-6c 5fc6 80
-6c 5fc7 80
-6c 5fc8 80
-6c 5fc9 80
-6c 5fca 80
-6c 5fcb 80
-6c 5fcc 80
-6c 5fcd 80
-6c 5fce 80
-6c 5fcf 80
-6c 5fd0 80
-6c 5fd1 80
-6c 5fd2 80
-6c 5fd3 80
-6c 5fd4 80
-6c 5fd5 80
-6c 5fd6 80
-6c 5fd7 80
-6c 5fd8 80
-6c 5fd9 80
-6c 5fda 80
-6c 5fdb 80
-6c 5fdc 80
-6c 5fdd 80
-6c 5fde 80
-6c 5fdf 80
-6c 5fe0 80
-6c 5fe1 80
-6c 5fe2 80
-6c 5fe3 80
-6c 5fe4 80
-6c 5fe5 80
-6c 5fe6 80
-6c 5fe7 80
-6c 5fe8 80
-6c 5fe9 80
-6c 5fea 80
-6c 5feb 80
-6c 5fec 80
-6c 5fed 80
-6c 5fee 80
-6c 5fef 80
-6c 5ff0 80
-6c 5ff1 80
-6c 5ff2 80
-6c 5ff3 80
-6c 5ff4 80
-6c 5ff5 80
-6c 5ff6 80
-6c 5ff7 80
-6c 5ff8 80
-6c 5ff9 80
-6c 5ffa 80
-6c 5ffb 80
-6c 5ffc 80
-6c 5ffd 80
-6c 5ffe 80
-6c 5fff 80
-6c 6000 80
-6c 6001 80
-6c 6002 80
-6c 6003 80
-6c 6004 80
-6c 6005 80
-6c 6006 80
-6c 6007 80
-6c 6008 80
-6c 6009 80
-6c 600a 80
-6c 600b 80
-6c 600c 80
-6c 600d 80
-6c 600e 80
-6c 600f 80
-6c 6010 80
-6c 6011 80
-6c 6012 80
-6c 6013 80
-6c 6014 80
-6c 6015 80
-6c 6016 80
-6c 6017 80
-6c 6018 80
-6c 6019 80
-6c 601a 80
-6c 601b 80
-6c 601c 80
-6c 601d 80
-6c 601e 80
-6c 601f 80
-6c 6020 80
-6c 6021 80
-6c 6022 80
-6c 6023 80
-6c 6024 80
-6c 6025 80
-6c 6026 80
-6c 6027 80
-6c 6028 80
-6c 6029 80
-6c 602a 80
-6c 602b 80
-6c 602c 80
-6c 602d 80
-6c 602e 80
-6c 602f 80
-6c 6030 80
-6c 6031 80
-6c 6032 80
-6c 6033 80
-6c 6034 80
-6c 6035 80
-6c 6036 80
-6c 6037 80
-6c 6038 80
-6c 6039 80
-6c 603a 80
-6c 603b 80
-6c 603c 80
-6c 603d 80
-6c 603e 80
-6c 603f 80
-6c 6040 80
-6c 6041 80
-6c 6042 80
-6c 6043 80
-6c 6044 80
-6c 6045 80
-6c 6046 80
-6c 6047 80
-6c 6048 80
-6c 6049 80
-6c 604a 80
-6c 604b 80
-6c 604c 80
-6c 604d 80
-6c 604e 80
-6c 604f 80
-6c 6050 80
-6c 6051 80
-6c 6052 80
-6c 6053 80
-6c 6054 80
-6c 6055 80
-6c 6056 80
-6c 6057 80
-6c 6058 80
-6c 6059 80
-6c 605a 80
-6c 605b 80
-6c 605c 80
-6c 605d 80
-6c 605e 80
-6c 605f 80
-6c 6060 80
-6c 6061 80
-6c 6062 80
-6c 6063 80
-6c 6064 80
-6c 6065 80
-6c 6066 80
-6c 6067 80
-6c 6068 80
-6c 6069 80
-6c 606a 80
-6c 606b 80
-6c 606c 80
-6c 606d 80
-6c 606e 80
-6c 606f 80
-6c 6070 80
-6c 6071 80
-6c 6072 80
-6c 6073 80
-6c 6074 80
-6c 6075 80
-6c 6076 80
-6c 6077 80
-6c 6078 80
-6c 6079 80
-6c 607a 80
-6c 607b 80
-6c 607c 80
-6c 607d 80
-6c 607e 80
-6c 607f 80
-6c 6080 80
-6c 6081 80
-6c 6082 80
-6c 6083 80
-6c 6084 80
-6c 6085 80
-6c 6086 80
-6c 6087 80
-6c 6088 80
-6c 6089 80
-6c 608a 80
-6c 608b 80
-6c 608c 80
-6c 608d 80
-6c 608e 80
-6c 608f 80
-6c 6090 80
-6c 6091 80
-6c 6092 80
-6c 6093 80
-6c 6094 80
-6c 6095 80
-6c 6096 80
-6c 6097 80
-6c 6098 80
-6c 6099 80
-6c 609a 80
-6c 609b 80
-6c 609c 80
-6c 609d 80
-6c 609e 80
-6c 609f 80
-6c 60a0 80
-6c 60a1 80
-6c 60a2 80
-6c 60a3 80
-6c 60a4 80
-6c 60a5 80
-6c 60a6 80
-6c 60a7 80
-6c 60a8 80
-6c 60a9 80
-6c 60aa 80
-6c 60ab 80
-6c 60ac 80
-6c 60ad 80
-6c 60ae 80
-6c 60af 80
-6c 60b0 80
-6c 60b1 80
-6c 60b2 80
-6c 60b3 80
-6c 60b4 80
-6c 60b5 80
-6c 60b6 80
-6c 60b7 80
-6c 60b8 80
-6c 60b9 80
-6c 60ba 80
-6c 60bb 80
-6c 60bc 80
-6c 60bd 80
-6c 60be 80
-6c 60bf 80
-6c 60c0 80
-6c 60c1 80
-6c 60c2 80
-6c 60c3 80
-6c 60c4 80
-6c 60c5 80
-6c 60c6 80
-6c 60c7 80
-6c 60c8 80
-6c 60c9 80
-6c 60ca 80
-6c 60cb 80
-6c 60cc 80
-6c 60cd 80
-6c 60ce 80
-6c 60cf 80
-6c 60d0 80
-6c 60d1 80
-6c 60d2 80
-6c 60d3 80
-6c 60d4 80
-6c 60d5 80
-6c 60d6 80
-6c 60d7 80
-6c 60d8 80
-6c 60d9 80
-6c 60da 80
-6c 60db 80
-6c 60dc 80
-6c 60dd 80
-6c 60de 80
-6c 60df 80
-6c 60e0 80
-6c 60e1 80
-6c 60e2 80
-6c 60e3 80
-6c 60e4 80
-6c 60e5 80
-6c 60e6 80
-6c 60e7 80
-6c 60e8 80
-6c 60e9 80
-6c 60ea 80
-6c 60eb 80
-6c 60ec 80
-6c 60ed 80
-6c 60ee 80
-6c 60ef 80
-6c 60f0 80
-6c 60f1 80
-6c 60f2 80
-6c 60f3 80
-6c 60f4 80
-6c 60f5 80
-6c 60f6 80
-6c 60f7 80
-6c 60f8 80
-6c 60f9 80
-6c 60fa 80
-6c 60fb 80
-6c 60fc 80
-6c 60fd 80
-6c 60fe 80
-6c 60ff 80
-6c 6100 80
-6c 6101 80
-6c 6102 80
-6c 6103 80
-6c 6104 80
-6c 6105 80
-6c 6106 80
-6c 6107 80
-6c 6108 80
-6c 6109 80
-6c 610a 80
-6c 610b 80
-6c 610c 80
-6c 610d 80
-6c 610e 80
-6c 610f 80
-6c 6110 80
-6c 6111 80
-6c 6112 80
-6c 6113 80
-6c 6114 80
-6c 6115 80
-6c 6116 80
-6c 6117 80
-6c 6118 80
-6c 6119 80
-6c 611a 80
-6c 611b 80
-6c 611c 80
-6c 611d 80
-6c 611e 80
-6c 611f 80
-6c 6120 80
-6c 6121 80
-6c 6122 80
-6c 6123 80
-6c 6124 80
-6c 6125 80
-6c 6126 80
-6c 6127 80
-6c 6128 80
-6c 6129 80
-6c 612a 80
-6c 612b 80
-6c 612c 80
-6c 612d 80
-6c 612e 80
-6c 612f 80
-6c 6130 80
-6c 6131 80
-6c 6132 80
-6c 6133 80
-6c 6134 80
-6c 6135 80
-6c 6136 80
-6c 6137 80
-6c 6138 80
-6c 6139 80
-6c 613a 80
-6c 613b 80
-6c 613c 80
-6c 613d 80
-6c 613e 80
-6c 613f 80
-6c 6140 80
-6c 6141 80
-6c 6142 80
-6c 6143 80
-6c 6144 80
-6c 6145 80
-6c 6146 80
-6c 6147 80
-6c 6148 80
-6c 6149 80
-6c 614a 80
-6c 614b 80
-6c 614c 80
-6c 614d 80
-6c 614e 80
-6c 614f 80
-6c 6150 80
-6c 6151 80
-6c 6152 80
-6c 6153 80
-6c 6154 80
-6c 6155 80
-6c 6156 80
-6c 6157 80
-6c 6158 80
-6c 6159 80
-6c 615a 80
-6c 615b 80
-6c 615c 80
-6c 615d 80
-6c 615e 80
-6c 615f 80
-6c 6160 80
-6c 6161 80
-6c 6162 80
-6c 6163 80
-6c 6164 80
-6c 6165 80
-6c 6166 80
-6c 6167 80
-6c 6168 80
-6c 6169 80
-6c 616a 80
-6c 616b 80
-6c 616c 80
-6c 616d 80
-6c 616e 80
-6c 616f 80
-6c 6170 80
-6c 6171 80
-6c 6172 80
-6c 6173 80
-6c 6174 80
-6c 6175 80
-6c 6176 80
-6c 6177 80
-6c 6178 80
-6c 6179 80
-6c 617a 80
-6c 617b 80
-6c 617c 80
-6c 617d 80
-6c 617e 80
-6c 617f 80
-6c 6180 80
-6c 6181 80
-6c 6182 80
-6c 6183 80
-6c 6184 80
-6c 6185 80
-6c 6186 80
-6c 6187 80
-6c 6188 80
-6c 6189 80
-6c 618a 80
-6c 618b 80
-6c 618c 80
-6c 618d 80
-6c 618e 80
-6c 618f 80
-6c 6190 80
-6c 6191 80
-6c 6192 80
-6c 6193 80
-6c 6194 80
-6c 6195 80
-6c 6196 80
-6c 6197 80
-6c 6198 80
-6c 6199 80
-6c 619a 80
-6c 619b 80
-6c 619c 80
-6c 619d 80
-6c 619e 80
-6c 619f 80
-6c 61a0 80
-6c 61a1 80
-6c 61a2 80
-6c 61a3 80
-6c 61a4 80
-6c 61a5 80
-6c 61a6 80
-6c 61a7 80
-6c 61a8 80
-6c 61a9 80
-6c 61aa 80
-6c 61ab 80
-6c 61ac 80
-6c 61ad 80
-6c 61ae 80
-6c 61af 80
-6c 61b0 80
-6c 61b1 80
-6c 61b2 80
-6c 61b3 80
-6c 61b4 80
-6c 61b5 80
-6c 61b6 80
-6c 61b7 80
-6c 61b8 80
-6c 61b9 80
-6c 61ba 80
-6c 61bb 80
-6c 61bc 80
-6c 61bd 80
-6c 61be 80
-6c 61bf 80
-6c 61c0 80
-6c 61c1 80
-6c 61c2 80
-6c 61c3 80
-6c 61c4 80
-6c 61c5 80
-6c 61c6 80
-6c 61c7 80
-6c 61c8 80
-6c 61c9 80
-6c 61ca 80
-6c 61cb 80
-6c 61cc 80
-6c 61cd 80
-6c 61ce 80
-6c 61cf 80
-6c 61d0 80
-6c 61d1 80
-6c 61d2 80
-6c 61d3 80
-6c 61d4 80
-6c 61d5 80
-6c 61d6 80
-6c 61d7 80
-6c 61d8 80
-6c 61d9 80
-6c 61da 80
-6c 61db 80
-6c 61dc 80
-6c 61dd 80
-6c 61de 80
-6c 61df 80
-6c 61e0 80
-6c 61e1 80
-6c 61e2 80
-6c 61e3 80
-6c 61e4 80
-6c 61e5 80
-6c 61e6 80
-6c 61e7 80
-6c 61e8 80
-6c 61e9 80
-6c 61ea 80
-6c 61eb 80
-6c 61ec 80
-6c 61ed 80
-6c 61ee 80
-6c 61ef 80
-6c 61f0 80
-6c 61f1 80
-6c 61f2 80
-6c 61f3 80
-6c 61f4 80
-6c 61f5 80
-6c 61f6 80
-6c 61f7 80
-6c 61f8 80
-6c 61f9 80
-6c 61fa 80
-6c 61fb 80
-6c 61fc 80
-6c 61fd 80
-6c 61fe 80
-6c 61ff 80
-6c 6200 80
-6c 6201 80
-6c 6202 80
-6c 6203 80
-6c 6204 80
-6c 6205 80
-6c 6206 80
-6c 6207 80
-6c 6208 80
-6c 6209 80
-6c 620a 80
-6c 620b 80
-6c 620c 80
-6c 620d 80
-6c 620e 80
-6c 620f 80
-6c 6210 80
-6c 6211 80
-6c 6212 80
-6c 6213 80
-6c 6214 80
-6c 6215 80
-6c 6216 80
-6c 6217 80
-6c 6218 80
-6c 6219 80
-6c 621a 80
-6c 621b 80
-6c 621c 80
-6c 621d 80
-6c 621e 80
-6c 621f 80
-6c 6220 80
-6c 6221 80
-6c 6222 80
-6c 6223 80
-6c 6224 80
-6c 6225 80
-6c 6226 80
-6c 6227 80
-6c 6228 80
-6c 6229 80
-6c 622a 80
-6c 622b 80
-6c 622c 80
-6c 622d 80
-6c 622e 80
-6c 622f 80
-6c 6230 80
-6c 6231 80
-6c 6232 80
-6c 6233 80
-6c 6234 80
-6c 6235 80
-6c 6236 80
-6c 6237 80
-6c 6238 80
-6c 6239 80
-6c 623a 80
-6c 623b 80
-6c 623c 80
-6c 623d 80
-6c 623e 80
-6c 623f 80
-6c 6240 80
-6c 6241 80
-6c 6242 80
-6c 6243 80
-6c 6244 80
-6c 6245 80
-6c 6246 80
-6c 6247 80
-6c 6248 80
-6c 6249 80
-6c 624a 80
-6c 624b 80
-6c 624c 80
-6c 624d 80
-6c 624e 80
-6c 624f 80
-6c 6250 80
-6c 6251 80
-6c 6252 80
-6c 6253 80
-6c 6254 80
-6c 6255 80
-6c 6256 80
-6c 6257 80
-6c 6258 80
-6c 6259 80
-6c 625a 80
-6c 625b 80
-6c 625c 80
-6c 625d 80
-6c 625e 80
-6c 625f 80
-6c 6260 80
-6c 6261 80
-6c 6262 80
-6c 6263 80
-6c 6264 80
-6c 6265 80
-6c 6266 80
-6c 6267 80
-6c 6268 80
-6c 6269 80
-6c 626a 80
-6c 626b 80
-6c 626c 80
-6c 626d 80
-6c 626e 80
-6c 626f 80
-6c 6270 80
-6c 6271 80
-6c 6272 80
-6c 6273 80
-6c 6274 80
-6c 6275 80
-6c 6276 80
-6c 6277 80
-6c 6278 80
-6c 6279 80
-6c 627a 80
-6c 627b 80
-6c 627c 80
-6c 627d 80
-6c 627e 80
-6c 627f 80
-6c 6280 80
-6c 6281 80
-6c 6282 80
-6c 6283 80
-6c 6284 80
-6c 6285 80
-6c 6286 80
-6c 6287 80
-6c 6288 80
-6c 6289 80
-6c 628a 80
-6c 628b 80
-6c 628c 80
-6c 628d 80
-6c 628e 80
-6c 628f 80
-6c 6290 80
-6c 6291 80
-6c 6292 80
-6c 6293 80
-6c 6294 80
-6c 6295 80
-6c 6296 80
-6c 6297 80
-6c 6298 80
-6c 6299 80
-6c 629a 80
-6c 629b 80
-6c 629c 80
-6c 629d 80
-6c 629e 80
-6c 629f 80
-6c 62a0 80
-6c 62a1 80
-6c 62a2 80
-6c 62a3 80
-6c 62a4 80
-6c 62a5 80
-6c 62a6 80
-6c 62a7 80
-6c 62a8 80
-6c 62a9 80
-6c 62aa 80
-6c 62ab 80
-6c 62ac 80
-6c 62ad 80
-6c 62ae 80
-6c 62af 80
-6c 62b0 80
-6c 62b1 80
-6c 62b2 80
-6c 62b3 80
-6c 62b4 80
-6c 62b5 80
-6c 62b6 80
-6c 62b7 80
-6c 62b8 80
-6c 62b9 80
-6c 62ba 80
-6c 62bb 80
-6c 62bc 80
-6c 62bd 80
-6c 62be 80
-6c 62bf 80
-6c 62c0 80
-6c 62c1 80
-6c 62c2 80
-6c 62c3 80
-6c 62c4 80
-6c 62c5 80
-6c 62c6 80
-6c 62c7 80
-6c 62c8 80
-6c 62c9 80
-6c 62ca 80
-6c 62cb 80
-6c 62cc 80
-6c 62cd 80
-6c 62ce 80
-6c 62cf 80
-6c 62d0 80
-6c 62d1 80
-6c 62d2 80
-6c 62d3 80
-6c 62d4 80
-6c 62d5 80
-6c 62d6 80
-6c 62d7 80
-6c 62d8 80
-6c 62d9 80
-6c 62da 80
-6c 62db 80
-6c 62dc 80
-6c 62dd 80
-6c 62de 80
-6c 62df 80
-6c 62e0 80
-6c 62e1 80
-6c 62e2 80
-6c 62e3 80
-6c 62e4 80
-6c 62e5 80
-6c 62e6 80
-6c 62e7 80
-6c 62e8 80
-6c 62e9 80
-6c 62ea 80
-6c 62eb 80
-6c 62ec 80
-6c 62ed 80
-6c 62ee 80
-6c 62ef 80
-6c 62f0 80
-6c 62f1 80
-6c 62f2 80
-6c 62f3 80
-6c 62f4 80
-6c 62f5 80
-6c 62f6 80
-6c 62f7 80
-6c 62f8 80
-6c 62f9 80
-6c 62fa 80
-6c 62fb 80
-6c 62fc 80
-6c 62fd 80
-6c 62fe 80
-6c 62ff 80
-6c 6300 80
-6c 6301 80
-6c 6302 80
-6c 6303 80
-6c 6304 80
-6c 6305 80
-6c 6306 80
-6c 6307 80
-6c 6308 80
-6c 6309 80
-6c 630a 80
-6c 630b 80
-6c 630c 80
-6c 630d 80
-6c 630e 80
-6c 630f 80
-6c 6310 80
-6c 6311 80
-6c 6312 80
-6c 6313 80
-6c 6314 80
-6c 6315 80
-6c 6316 80
-6c 6317 80
-6c 6318 80
-6c 6319 80
-6c 631a 80
-6c 631b 80
-6c 631c 80
-6c 631d 80
-6c 631e 80
-6c 631f 80
-6c 6320 80
-6c 6321 80
-6c 6322 80
-6c 6323 80
-6c 6324 80
-6c 6325 80
-6c 6326 80
-6c 6327 80
-6c 6328 80
-6c 6329 80
-6c 632a 80
-6c 632b 80
-6c 632c 80
-6c 632d 80
-6c 632e 80
-6c 632f 80
-6c 6330 80
-6c 6331 80
-6c 6332 80
-6c 6333 80
-6c 6334 80
-6c 6335 80
-6c 6336 80
-6c 6337 80
-6c 6338 80
-6c 6339 80
-6c 633a 80
-6c 633b 80
-6c 633c 80
-6c 633d 80
-6c 633e 80
-6c 633f 80
-6c 6340 80
-6c 6341 80
-6c 6342 80
-6c 6343 80
-6c 6344 80
-6c 6345 80
-6c 6346 80
-6c 6347 80
-6c 6348 80
-6c 6349 80
-6c 634a 80
-6c 634b 80
-6c 634c 80
-6c 634d 80
-6c 634e 80
-6c 634f 80
-6c 6350 80
-6c 6351 80
-6c 6352 80
-6c 6353 80
-6c 6354 80
-6c 6355 80
-6c 6356 80
-6c 6357 80
-6c 6358 80
-6c 6359 80
-6c 635a 80
-6c 635b 80
-6c 635c 80
-6c 635d 80
-6c 635e 80
-6c 635f 80
-6c 6360 80
-6c 6361 80
-6c 6362 80
-6c 6363 80
-6c 6364 80
-6c 6365 80
-6c 6366 80
-6c 6367 80
-6c 6368 80
-6c 6369 80
-6c 636a 80
-6c 636b 80
-6c 636c 80
-6c 636d 80
-6c 636e 80
-6c 636f 80
-6c 6370 80
-6c 6371 80
-6c 6372 80
-6c 6373 80
-6c 6374 80
-6c 6375 80
-6c 6376 80
-6c 6377 80
-6c 6378 80
-6c 6379 80
-6c 637a 80
-6c 637b 80
-6c 637c 80
-6c 637d 80
-6c 637e 80
-6c 637f 80
-6c 6380 80
-6c 6381 80
-6c 6382 80
-6c 6383 80
-6c 6384 80
-6c 6385 80
-6c 6386 80
-6c 6387 80
-6c 6388 80
-6c 6389 80
-6c 638a 80
-6c 638b 80
-6c 638c 80
-6c 638d 80
-6c 638e 80
-6c 638f 80
-6c 6390 80
-6c 6391 80
-6c 6392 80
-6c 6393 80
-6c 6394 80
-6c 6395 80
-6c 6396 80
-6c 6397 80
-6c 6398 80
-6c 6399 80
-6c 639a 80
-6c 639b 80
-6c 639c 80
-6c 639d 80
-6c 639e 80
-6c 639f 80
-6c 63a0 80
-6c 63a1 80
-6c 63a2 80
-6c 63a3 80
-6c 63a4 80
-6c 63a5 80
-6c 63a6 80
-6c 63a7 80
-6c 63a8 80
-6c 63a9 80
-6c 63aa 80
-6c 63ab 80
-6c 63ac 80
-6c 63ad 80
-6c 63ae 80
-6c 63af 80
-6c 63b0 80
-6c 63b1 80
-6c 63b2 80
-6c 63b3 80
-6c 63b4 80
-6c 63b5 80
-6c 63b6 80
-6c 63b7 80
-6c 63b8 80
-6c 63b9 80
-6c 63ba 80
-6c 63bb 80
-6c 63bc 80
-6c 63bd 80
-6c 63be 80
-6c 63bf 80
-6c 63c0 80
-6c 63c1 80
-6c 63c2 80
-6c 63c3 80
-6c 63c4 80
-6c 63c5 80
-6c 63c6 80
-6c 63c7 80
-6c 63c8 80
-6c 63c9 80
-6c 63ca 80
-6c 63cb 80
-6c 63cc 80
-6c 63cd 80
-6c 63ce 80
-6c 63cf 80
-6c 63d0 80
-6c 63d1 80
-6c 63d2 80
-6c 63d3 80
-6c 63d4 80
-6c 63d5 80
-6c 63d6 80
-6c 63d7 80
-6c 63d8 80
-6c 63d9 80
-6c 63da 80
-6c 63db 80
-6c 63dc 80
-6c 63dd 80
-6c 63de 80
-6c 63df 80
-6c 63e0 80
-6c 63e1 80
-6c 63e2 80
-6c 63e3 80
-6c 63e4 80
-6c 63e5 80
-6c 63e6 80
-6c 63e7 80
-6c 63e8 80
-6c 63e9 80
-6c 63ea 80
-6c 63eb 80
-6c 63ec 80
-6c 63ed 80
-6c 63ee 80
-6c 63ef 80
-6c 63f0 80
-6c 63f1 80
-6c 63f2 80
-6c 63f3 80
-6c 63f4 80
-6c 63f5 80
-6c 63f6 80
-6c 63f7 80
-6c 63f8 80
-6c 63f9 80
-6c 63fa 80
-6c 63fb 80
-6c 63fc 80
-6c 63fd 80
-6c 63fe 80
-6c 63ff 80
-6c 6400 80
-6c 6401 80
-6c 6402 80
-6c 6403 80
-6c 6404 80
-6c 6405 80
-6c 6406 80
-6c 6407 80
-6c 6408 80
-6c 6409 80
-6c 640a 80
-6c 640b 80
-6c 640c 80
-6c 640d 80
-6c 640e 80
-6c 640f 80
-6c 6410 80
-6c 6411 80
-6c 6412 80
-6c 6413 80
-6c 6414 80
-6c 6415 80
-6c 6416 80
-6c 6417 80
-6c 6418 80
-6c 6419 80
-6c 641a 80
-6c 641b 80
-6c 641c 80
-6c 641d 80
-6c 641e 80
-6c 641f 80
-6c 6420 80
-6c 6421 80
-6c 6422 80
-6c 6423 80
-6c 6424 80
-6c 6425 80
-6c 6426 80
-6c 6427 80
-6c 6428 80
-6c 6429 80
-6c 642a 80
-6c 642b 80
-6c 642c 80
-6c 642d 80
-6c 642e 80
-6c 642f 80
-6c 6430 80
-6c 6431 80
-6c 6432 80
-6c 6433 80
-6c 6434 80
-6c 6435 80
-6c 6436 80
-6c 6437 80
-6c 6438 80
-6c 6439 80
-6c 643a 80
-6c 643b 80
-6c 643c 80
-6c 643d 80
-6c 643e 80
-6c 643f 80
-6c 6440 80
-6c 6441 80
-6c 6442 80
-6c 6443 80
-6c 6444 80
-6c 6445 80
-6c 6446 80
-6c 6447 80
-6c 6448 80
-6c 6449 80
-6c 644a 80
-6c 644b 80
-6c 644c 80
-6c 644d 80
-6c 644e 80
-6c 644f 80
-6c 6450 80
-6c 6451 80
-6c 6452 80
-6c 6453 80
-6c 6454 80
-6c 6455 80
-6c 6456 80
-6c 6457 80
-6c 6458 80
-6c 6459 80
-6c 645a 80
-6c 645b 80
-6c 645c 80
-6c 645d 80
-6c 645e 80
-6c 645f 80
-6c 6460 80
-6c 6461 80
-6c 6462 80
-6c 6463 80
-6c 6464 80
-6c 6465 80
-6c 6466 80
-6c 6467 80
-6c 6468 80
-6c 6469 80
-6c 646a 80
-6c 646b 80
-6c 646c 80
-6c 646d 80
-6c 646e 80
-6c 646f 80
-6c 6470 80
-6c 6471 80
-6c 6472 80
-6c 6473 80
-6c 6474 80
-6c 6475 80
-6c 6476 80
-6c 6477 80
-6c 6478 80
-6c 6479 80
-6c 647a 80
-6c 647b 80
-6c 647c 80
-6c 647d 80
-6c 647e 80
-6c 647f 80
-6c 6480 80
-6c 6481 80
-6c 6482 80
-6c 6483 80
-6c 6484 80
-6c 6485 80
-6c 6486 80
-6c 6487 80
-6c 6488 80
-6c 6489 80
-6c 648a 80
-6c 648b 80
-6c 648c 80
-6c 648d 80
-6c 648e 80
-6c 648f 80
-6c 6490 80
-6c 6491 80
-6c 6492 80
-6c 6493 80
-6c 6494 80
-6c 6495 80
-6c 6496 80
-6c 6497 80
-6c 6498 80
-6c 6499 80
-6c 649a 80
-6c 649b 80
-6c 649c 80
-6c 649d 80
-6c 649e 80
-6c 649f 80
-6c 64a0 80
-6c 64a1 80
-6c 64a2 80
-6c 64a3 80
-6c 64a4 80
-6c 64a5 80
-6c 64a6 80
-6c 64a7 80
-6c 64a8 80
-6c 64a9 80
-6c 64aa 80
-6c 64ab 80
-6c 64ac 80
-6c 64ad 80
-6c 64ae 80
-6c 64af 80
-6c 64b0 80
-6c 64b1 80
-6c 64b2 80
-6c 64b3 80
-6c 64b4 80
-6c 64b5 80
-6c 64b6 80
-6c 64b7 80
-6c 64b8 80
-6c 64b9 80
-6c 64ba 80
-6c 64bb 80
-6c 64bc 80
-6c 64bd 80
-6c 64be 80
-6c 64bf 80
-6c 64c0 80
-6c 64c1 80
-6c 64c2 80
-6c 64c3 80
-6c 64c4 80
-6c 64c5 80
-6c 64c6 80
-6c 64c7 80
-6c 64c8 80
-6c 64c9 80
-6c 64ca 80
-6c 64cb 80
-6c 64cc 80
-6c 64cd 80
-6c 64ce 80
-6c 64cf 80
-6c 64d0 80
-6c 64d1 80
-6c 64d2 80
-6c 64d3 80
-6c 64d4 80
-6c 64d5 80
-6c 64d6 80
-6c 64d7 80
-6c 64d8 80
-6c 64d9 80
-6c 64da 80
-6c 64db 80
-6c 64dc 80
-6c 64dd 80
-6c 64de 80
-6c 64df 80
-6c 64e0 80
-6c 64e1 80
-6c 64e2 80
-6c 64e3 80
-6c 64e4 80
-6c 64e5 80
-6c 64e6 80
-6c 64e7 80
-6c 64e8 80
-6c 64e9 80
-6c 64ea 80
-6c 64eb 80
-6c 64ec 80
-6c 64ed 80
-6c 64ee 80
-6c 64ef 80
-6c 64f0 80
-6c 64f1 80
-6c 64f2 80
-6c 64f3 80
-6c 64f4 80
-6c 64f5 80
-6c 64f6 80
-6c 64f7 80
-6c 64f8 80
-6c 64f9 80
-6c 64fa 80
-6c 64fb 80
-6c 64fc 80
-6c 64fd 80
-6c 64fe 80
-6c 64ff 80
-6c 6500 80
-6c 6501 80
-6c 6502 80
-6c 6503 80
-6c 6504 80
-6c 6505 80
-6c 6506 80
-6c 6507 80
-6c 6508 80
-6c 6509 80
-6c 650a 80
-6c 650b 80
-6c 650c 80
-6c 650d 80
-6c 650e 80
-6c 650f 80
-6c 6510 80
-6c 6511 80
-6c 6512 80
-6c 6513 80
-6c 6514 80
-6c 6515 80
-6c 6516 80
-6c 6517 80
-6c 6518 80
-6c 6519 80
-6c 651a 80
-6c 651b 80
-6c 651c 80
-6c 651d 80
-6c 651e 80
-6c 651f 80
-6c 6520 80
-6c 6521 80
-6c 6522 80
-6c 6523 80
-6c 6524 80
-6c 6525 80
-6c 6526 80
-6c 6527 80
-6c 6528 80
-6c 6529 80
-6c 652a 80
-6c 652b 80
-6c 652c 80
-6c 652d 80
-6c 652e 80
-6c 652f 80
-6c 6530 80
-6c 6531 80
-6c 6532 80
-6c 6533 80
-6c 6534 80
-6c 6535 80
-6c 6536 80
-6c 6537 80
-6c 6538 80
-6c 6539 80
-6c 653a 80
-6c 653b 80
-6c 653c 80
-6c 653d 80
-6c 653e 80
-6c 653f 80
-6c 6540 80
-6c 6541 80
-6c 6542 80
-6c 6543 80
-6c 6544 80
-6c 6545 80
-6c 6546 80
-6c 6547 80
-6c 6548 80
-6c 6549 80
-6c 654a 80
-6c 654b 80
-6c 654c 80
-6c 654d 80
-6c 654e 80
-6c 654f 80
-6c 6550 80
-6c 6551 80
-6c 6552 80
-6c 6553 80
-6c 6554 80
-6c 6555 80
-6c 6556 80
-6c 6557 80
-6c 6558 80
-6c 6559 80
-6c 655a 80
-6c 655b 80
-6c 655c 80
-6c 655d 80
-6c 655e 80
-6c 655f 80
-6c 6560 80
-6c 6561 80
-6c 6562 80
-6c 6563 80
-6c 6564 80
-6c 6565 80
-6c 6566 80
-6c 6567 80
-6c 6568 80
-6c 6569 80
-6c 656a 80
-6c 656b 80
-6c 656c 80
-6c 656d 80
-6c 656e 80
-6c 656f 80
-6c 6570 80
-6c 6571 80
-6c 6572 80
-6c 6573 80
-6c 6574 80
-6c 6575 80
-6c 6576 80
-6c 6577 80
-6c 6578 80
-6c 6579 80
-6c 657a 80
-6c 657b 80
-6c 657c 80
-6c 657d 80
-6c 657e 80
-6c 657f 80
-6c 6580 80
-6c 6581 80
-6c 6582 80
-6c 6583 80
-6c 6584 80
-6c 6585 80
-6c 6586 80
-6c 6587 80
-6c 6588 80
-6c 6589 80
-6c 658a 80
-6c 658b 80
-6c 658c 80
-6c 658d 80
-6c 658e 80
-6c 658f 80
-6c 6590 80
-6c 6591 80
-6c 6592 80
-6c 6593 80
-6c 6594 80
-6c 6595 80
-6c 6596 80
-6c 6597 80
-6c 6598 80
-6c 6599 80
-6c 659a 80
-6c 659b 80
-6c 659c 80
-6c 659d 80
-6c 659e 80
-6c 659f 80
-6c 65a0 80
-6c 65a1 80
-6c 65a2 80
-6c 65a3 80
-6c 65a4 80
-6c 65a5 80
-6c 65a6 80
-6c 65a7 80
-6c 65a8 80
-6c 65a9 80
-6c 65aa 80
-6c 65ab 80
-6c 65ac 80
-6c 65ad 80
-6c 65ae 80
-6c 65af 80
-6c 65b0 80
-6c 65b1 80
-6c 65b2 80
-6c 65b3 80
-6c 65b4 80
-6c 65b5 80
-6c 65b6 80
-6c 65b7 80
-6c 65b8 80
-6c 65b9 80
-6c 65ba 80
-6c 65bb 80
-6c 65bc 80
-6c 65bd 80
-6c 65be 80
-6c 65bf 80
-6c 65c0 80
-6c 65c1 80
-6c 65c2 80
-6c 65c3 80
-6c 65c4 80
-6c 65c5 80
-6c 65c6 80
-6c 65c7 80
-6c 65c8 80
-6c 65c9 80
-6c 65ca 80
-6c 65cb 80
-6c 65cc 80
-6c 65cd 80
-6c 65ce 80
-6c 65cf 80
-6c 65d0 80
-6c 65d1 80
-6c 65d2 80
-6c 65d3 80
-6c 65d4 80
-6c 65d5 80
-6c 65d6 80
-6c 65d7 80
-6c 65d8 80
-6c 65d9 80
-6c 65da 80
-6c 65db 80
-6c 65dc 80
-6c 65dd 80
-6c 65de 80
-6c 65df 80
-6c 65e0 80
-6c 65e1 80
-6c 65e2 80
-6c 65e3 80
-6c 65e4 80
-6c 65e5 80
-6c 65e6 80
-6c 65e7 80
-6c 65e8 80
-6c 65e9 80
-6c 65ea 80
-6c 65eb 80
-6c 65ec 80
-6c 65ed 80
-6c 65ee 80
-6c 65ef 80
-6c 65f0 80
-6c 65f1 80
-6c 65f2 80
-6c 65f3 80
-6c 65f4 80
-6c 65f5 80
-6c 65f6 80
-6c 65f7 80
-6c 65f8 80
-6c 65f9 80
-6c 65fa 80
-6c 65fb 80
-6c 65fc 80
-6c 65fd 80
-6c 65fe 80
-6c 65ff 80
-6c 6600 80
-6c 6601 80
-6c 6602 80
-6c 6603 80
-6c 6604 80
-6c 6605 80
-6c 6606 80
-6c 6607 80
-6c 6608 80
-6c 6609 80
-6c 660a 80
-6c 660b 80
-6c 660c 80
-6c 660d 80
-6c 660e 80
-6c 660f 80
-6c 6610 80
-6c 6611 80
-6c 6612 80
-6c 6613 80
-6c 6614 80
-6c 6615 80
-6c 6616 80
-6c 6617 80
-6c 6618 80
-6c 6619 80
-6c 661a 80
-6c 661b 80
-6c 661c 80
-6c 661d 80
-6c 661e 80
-6c 661f 80
-6c 6620 80
-6c 6621 80
-6c 6622 80
-6c 6623 80
-6c 6624 80
-6c 6625 80
-6c 6626 80
-6c 6627 80
-6c 6628 80
-6c 6629 80
-6c 662a 80
-6c 662b 80
-6c 662c 80
-6c 662d 80
-6c 662e 80
-6c 662f 80
-6c 6630 80
-6c 6631 80
-6c 6632 80
-6c 6633 80
-6c 6634 80
-6c 6635 80
-6c 6636 80
-6c 6637 80
-6c 6638 80
-6c 6639 80
-6c 663a 80
-6c 663b 80
-6c 663c 80
-6c 663d 80
-6c 663e 80
-6c 663f 80
-6c 6640 80
-6c 6641 80
-6c 6642 80
-6c 6643 80
-6c 6644 80
-6c 6645 80
-6c 6646 80
-6c 6647 80
-6c 6648 80
-6c 6649 80
-6c 664a 80
-6c 664b 80
-6c 664c 80
-6c 664d 80
-6c 664e 80
-6c 664f 80
-6c 6650 80
-6c 6651 80
-6c 6652 80
-6c 6653 80
-6c 6654 80
-6c 6655 80
-6c 6656 80
-6c 6657 80
-6c 6658 80
-6c 6659 80
-6c 665a 80
-6c 665b 80
-6c 665c 80
-6c 665d 80
-6c 665e 80
-6c 665f 80
-6c 6660 80
-6c 6661 80
-6c 6662 80
-6c 6663 80
-6c 6664 80
-6c 6665 80
-6c 6666 80
-6c 6667 80
-6c 6668 80
-6c 6669 80
-6c 666a 80
-6c 666b 80
-6c 666c 80
-6c 666d 80
-6c 666e 80
-6c 666f 80
-6c 6670 80
-6c 6671 80
-6c 6672 80
-6c 6673 80
-6c 6674 80
-6c 6675 80
-6c 6676 80
-6c 6677 80
-6c 6678 80
-6c 6679 80
-6c 667a 80
-6c 667b 80
-6c 667c 80
-6c 667d 80
-6c 667e 80
-6c 667f 80
-6c 6680 80
-6c 6681 80
-6c 6682 80
-6c 6683 80
-6c 6684 80
-6c 6685 80
-6c 6686 80
-6c 6687 80
-6c 6688 80
-6c 6689 80
-6c 668a 80
-6c 668b 80
-6c 668c 80
-6c 668d 80
-6c 668e 80
-6c 668f 80
-6c 6690 80
-6c 6691 80
-6c 6692 80
-6c 6693 80
-6c 6694 80
-6c 6695 80
-6c 6696 80
-6c 6697 80
-6c 6698 80
-6c 6699 80
-6c 669a 80
-6c 669b 80
-6c 669c 80
-6c 669d 80
-6c 669e 80
-6c 669f 80
-6c 66a0 80
-6c 66a1 80
-6c 66a2 80
-6c 66a3 80
-6c 66a4 80
-6c 66a5 80
-6c 66a6 80
-6c 66a7 80
-6c 66a8 80
-6c 66a9 80
-6c 66aa 80
-6c 66ab 80
-6c 66ac 80
-6c 66ad 80
-6c 66ae 80
-6c 66af 80
-6c 66b0 80
-6c 66b1 80
-6c 66b2 80
-6c 66b3 80
-6c 66b4 80
-6c 66b5 80
-6c 66b6 80
-6c 66b7 80
-6c 66b8 80
-6c 66b9 80
-6c 66ba 80
-6c 66bb 80
-6c 66bc 80
-6c 66bd 80
-6c 66be 80
-6c 66bf 80
-6c 66c0 80
-6c 66c1 80
-6c 66c2 80
-6c 66c3 80
-6c 66c4 80
-6c 66c5 80
-6c 66c6 80
-6c 66c7 80
-6c 66c8 80
-6c 66c9 80
-6c 66ca 80
-6c 66cb 80
-6c 66cc 80
-6c 66cd 80
-6c 66ce 80
-6c 66cf 80
-6c 66d0 80
-6c 66d1 80
-6c 66d2 80
-6c 66d3 80
-6c 66d4 80
-6c 66d5 80
-6c 66d6 80
-6c 66d7 80
-6c 66d8 80
-6c 66d9 80
-6c 66da 80
-6c 66db 80
-6c 66dc 80
-6c 66dd 80
-6c 66de 80
-6c 66df 80
-6c 66e0 80
-6c 66e1 80
-6c 66e2 80
-6c 66e3 80
-6c 66e4 80
-6c 66e5 80
-6c 66e6 80
-6c 66e7 80
-6c 66e8 80
-6c 66e9 80
-6c 66ea 80
-6c 66eb 80
-6c 66ec 80
-6c 66ed 80
-6c 66ee 80
-6c 66ef 80
-6c 66f0 80
-6c 66f1 80
-6c 66f2 80
-6c 66f3 80
-6c 66f4 80
-6c 66f5 80
-6c 66f6 80
-6c 66f7 80
-6c 66f8 80
-6c 66f9 80
-6c 66fa 80
-6c 66fb 80
-6c 66fc 80
-6c 66fd 80
-6c 66fe 80
-6c 66ff 80
-6c 6700 80
-6c 6701 80
-6c 6702 80
-6c 6703 80
-6c 6704 80
-6c 6705 80
-6c 6706 80
-6c 6707 80
-6c 6708 80
-6c 6709 80
-6c 670a 80
-6c 670b 80
-6c 670c 80
-6c 670d 80
-6c 670e 80
-6c 670f 80
-6c 6710 80
-6c 6711 80
-6c 6712 80
-6c 6713 80
-6c 6714 80
-6c 6715 80
-6c 6716 80
-6c 6717 80
-6c 6718 80
-6c 6719 80
-6c 671a 80
-6c 671b 80
-6c 671c 80
-6c 671d 80
-6c 671e 80
-6c 671f 80
-6c 6720 80
-6c 6721 80
-6c 6722 80
-6c 6723 80
-6c 6724 80
-6c 6725 80
-6c 6726 80
-6c 6727 80
-6c 6728 80
-6c 6729 80
-6c 672a 80
-6c 672b 80
-6c 672c 80
-6c 672d 80
-6c 672e 80
-6c 672f 80
-6c 6730 80
-6c 6731 80
-6c 6732 80
-6c 6733 80
-6c 6734 80
-6c 6735 80
-6c 6736 80
-6c 6737 80
-6c 6738 80
-6c 6739 80
-6c 673a 80
-6c 673b 80
-6c 673c 80
-6c 673d 80
-6c 673e 80
-6c 673f 80
-6c 6740 80
-6c 6741 80
-6c 6742 80
-6c 6743 80
-6c 6744 80
-6c 6745 80
-6c 6746 80
-6c 6747 80
-6c 6748 80
-6c 6749 80
-6c 674a 80
-6c 674b 80
-6c 674c 80
-6c 674d 80
-6c 674e 80
-6c 674f 80
-6c 6750 80
-6c 6751 80
-6c 6752 80
-6c 6753 80
-6c 6754 80
-6c 6755 80
-6c 6756 80
-6c 6757 80
-6c 6758 80
-6c 6759 80
-6c 675a 80
-6c 675b 80
-6c 675c 80
-6c 675d 80
-6c 675e 80
-6c 675f 80
-6c 6760 80
-6c 6761 80
-6c 6762 80
-6c 6763 80
-6c 6764 80
-6c 6765 80
-6c 6766 80
-6c 6767 80
-6c 6768 80
-6c 6769 80
-6c 676a 80
-6c 676b 80
-6c 676c 80
-6c 676d 80
-6c 676e 80
-6c 676f 80
-6c 6770 80
-6c 6771 80
-6c 6772 80
-6c 6773 80
-6c 6774 80
-6c 6775 80
-6c 6776 80
-6c 6777 80
-6c 6778 80
-6c 6779 80
-6c 677a 80
-6c 677b 80
-6c 677c 80
-6c 677d 80
-6c 677e 80
-6c 677f 80
-6c 6780 80
-6c 6781 80
-6c 6782 80
-6c 6783 80
-6c 6784 80
-6c 6785 80
-6c 6786 80
-6c 6787 80
-6c 6788 80
-6c 6789 80
-6c 678a 80
-6c 678b 80
-6c 678c 80
-6c 678d 80
-6c 678e 80
-6c 678f 80
-6c 6790 80
-6c 6791 80
-6c 6792 80
-6c 6793 80
-6c 6794 80
-6c 6795 80
-6c 6796 80
-6c 6797 80
-6c 6798 80
-6c 6799 80
-6c 679a 80
-6c 679b 80
-6c 679c 80
-6c 679d 80
-6c 679e 80
-6c 679f 80
-6c 67a0 80
-6c 67a1 80
-6c 67a2 80
-6c 67a3 80
-6c 67a4 80
-6c 67a5 80
-6c 67a6 80
-6c 67a7 80
-6c 67a8 80
-6c 67a9 80
-6c 67aa 80
-6c 67ab 80
-6c 67ac 80
-6c 67ad 80
-6c 67ae 80
-6c 67af 80
-6c 67b0 80
-6c 67b1 80
-6c 67b2 80
-6c 67b3 80
-6c 67b4 80
-6c 67b5 80
-6c 67b6 80
-6c 67b7 80
-6c 67b8 80
-6c 67b9 80
-6c 67ba 80
-6c 67bb 80
-6c 67bc 80
-6c 67bd 80
-6c 67be 80
-6c 67bf 80
-6c 67c0 80
-6c 67c1 80
-6c 67c2 80
-6c 67c3 80
-6c 67c4 80
-6c 67c5 80
-6c 67c6 80
-6c 67c7 80
-6c 67c8 80
-6c 67c9 80
-6c 67ca 80
-6c 67cb 80
-6c 67cc 80
-6c 67cd 80
-6c 67ce 80
-6c 67cf 80
-6c 67d0 80
-6c 67d1 80
-6c 67d2 80
-6c 67d3 80
-6c 67d4 80
-6c 67d5 80
-6c 67d6 80
-6c 67d7 80
-6c 67d8 80
-6c 67d9 80
-6c 67da 80
-6c 67db 80
-6c 67dc 80
-6c 67dd 80
-6c 67de 80
-6c 67df 80
-6c 67e0 80
-6c 67e1 80
-6c 67e2 80
-6c 67e3 80
-6c 67e4 80
-6c 67e5 80
-6c 67e6 80
-6c 67e7 80
-6c 67e8 80
-6c 67e9 80
-6c 67ea 80
-6c 67eb 80
-6c 67ec 80
-6c 67ed 80
-6c 67ee 80
-6c 67ef 80
-6c 67f0 80
-6c 67f1 80
-6c 67f2 80
-6c 67f3 80
-6c 67f4 80
-6c 67f5 80
-6c 67f6 80
-6c 67f7 80
-6c 67f8 80
-6c 67f9 80
-6c 67fa 80
-6c 67fb 80
-6c 67fc 80
-6c 67fd 80
-6c 67fe 80
-6c 67ff 80
-6c 6800 80
-6c 6801 80
-6c 6802 80
-6c 6803 80
-6c 6804 80
-6c 6805 80
-6c 6806 80
-6c 6807 80
-6c 6808 80
-6c 6809 80
-6c 680a 80
-6c 680b 80
-6c 680c 80
-6c 680d 80
-6c 680e 80
-6c 680f 80
-6c 6810 80
-6c 6811 80
-6c 6812 80
-6c 6813 80
-6c 6814 80
-6c 6815 80
-6c 6816 80
-6c 6817 80
-6c 6818 80
-6c 6819 80
-6c 681a 80
-6c 681b 80
-6c 681c 80
-6c 681d 80
-6c 681e 80
-6c 681f 80
-6c 6820 80
-6c 6821 80
-6c 6822 80
-6c 6823 80
-6c 6824 80
-6c 6825 80
-6c 6826 80
-6c 6827 80
-6c 6828 80
-6c 6829 80
-6c 682a 80
-6c 682b 80
-6c 682c 80
-6c 682d 80
-6c 682e 80
-6c 682f 80
-6c 6830 80
-6c 6831 80
-6c 6832 80
-6c 6833 80
-6c 6834 80
-6c 6835 80
-6c 6836 80
-6c 6837 80
-6c 6838 80
-6c 6839 80
-6c 683a 80
-6c 683b 80
-6c 683c 80
-6c 683d 80
-6c 683e 80
-6c 683f 80
-6c 6840 80
-6c 6841 80
-6c 6842 80
-6c 6843 80
-6c 6844 80
-6c 6845 80
-6c 6846 80
-6c 6847 80
-6c 6848 80
-6c 6849 80
-6c 684a 80
-6c 684b 80
-6c 684c 80
-6c 684d 80
-6c 684e 80
-6c 684f 80
-6c 6850 80
-6c 6851 80
-6c 6852 80
-6c 6853 80
-6c 6854 80
-6c 6855 80
-6c 6856 80
-6c 6857 80
-6c 6858 80
-6c 6859 80
-6c 685a 80
-6c 685b 80
-6c 685c 80
-6c 685d 80
-6c 685e 80
-6c 685f 80
-6c 6860 80
-6c 6861 80
-6c 6862 80
-6c 6863 80
-6c 6864 80
-6c 6865 80
-6c 6866 80
-6c 6867 80
-6c 6868 80
-6c 6869 80
-6c 686a 80
-6c 686b 80
-6c 686c 80
-6c 686d 80
-6c 686e 80
-6c 686f 80
-6c 6870 80
-6c 6871 80
-6c 6872 80
-6c 6873 80
-6c 6874 80
-6c 6875 80
-6c 6876 80
-6c 6877 80
-6c 6878 80
-6c 6879 80
-6c 687a 80
-6c 687b 80
-6c 687c 80
-6c 687d 80
-6c 687e 80
-6c 687f 80
-6c 6880 80
-6c 6881 80
-6c 6882 80
-6c 6883 80
-6c 6884 80
-6c 6885 80
-6c 6886 80
-6c 6887 80
-6c 6888 80
-6c 6889 80
-6c 688a 80
-6c 688b 80
-6c 688c 80
-6c 688d 80
-6c 688e 80
-6c 688f 80
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/50E40_PDAF_AppNote_V1.0.1_OPLUS.pdf b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/50E40_PDAF_AppNote_V1.0.1_OPLUS.pdf
deleted file mode 100755
index dd068f03..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/50E40_PDAF_AppNote_V1.0.1_OPLUS.pdf and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/OV50E_HDR_ExposureGain_20250208-1_OPLUS.pdf b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/OV50E_HDR_ExposureGain_20250208-1_OPLUS.pdf
deleted file mode 100755
index 50b249f7..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/OV50E_HDR_ExposureGain_20250208-1_OPLUS.pdf and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/OV50E_app_note.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/OV50E_app_note.xlsx
deleted file mode 100755
index a0f2c952..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/OV50E_app_note.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/OV_DCG_OPLUS_20250208.pdf b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/OV_DCG_OPLUS_20250208.pdf
deleted file mode 100755
index dcbf3288..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/Reference_material/OV_DCG_OPLUS_20250208.pdf and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/seamless_switch_setting/FastSwitch_20250123.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/seamless_switch_setting/FastSwitch_20250123.txt
deleted file mode 100755
index 91a61ac0..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/setting_excel/OPLUS_OV50E_On_On_24MHz_20250211/seamless_switch_setting/FastSwitch_20250123.txt
+++ /dev/null
@@ -1,56 +0,0 @@
-;Seamless switch has two cases, linear to other formats and stagger(incldues DCG+VS) to other formats										
-;linear format is full, SCG, DCG										
-;stagger format is STG, DCG+VS										
-
-
-@@ linear to other				
-6c 3208 01 ;group 1				
-6c 3016 f3				
-6c 3014 f1				
-6c 3017 f2				
-6c 301f 9b				
-6c 382e 49				
-				
-;add linear or STG format setting 			
-				
-6c 301f 98				
-6c 3017 f0				
-6c 3014 f0				
-6c 3016 f0				
-6c 3046 01				
-6c 3208 11								
-			
-6c 3208 a1 ;launch group 1	Switch in VB from linear To other formats
-
-
-@@STG to other
-6c 3208 02 ;group 2        
-6c 3016 f3          
-6c 3014 f1          
-6c 3017 f2          
-6c 301f 9b          
-6c 382e 49         
-               
-;add format setting          
-               
-6c 301f 98          
-6c 3017 f0          
-6c 3014 f0          
-6c 3016 f0          
-6c 3046 01         
-6c 3208 12         
-               
-6c 3208 01 ;group 1        
-6c 4220 00         
-6c 4222 01 ;sensor mask frame N+1
-6c 4223 20         
-6c 3208 11         
-6c 320d 01         
-6c 3209 00 ;stay 0 frame on group 0
-6c 320a 01 ;stay 1 frame on group 1
-6c 320b 01 ;stay 1 frame on group 2
-6c 320d 92 ;switch back to group 2
-6c 320e a1 ;context switch launch group 1
-	
-				
-				
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1main_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1main_Sensor_setting.h
deleted file mode 100755
index 41475faf..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1main_Sensor_setting.h
+++ /dev/null
@@ -1,11642 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     zhuquec1main_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _ZHUQUEC1MAIN_SENSOR_SETTING_H
-#define _ZHUQUEC1MAIN_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static kal_uint16 zhuquec1main_soft_reset[] = {
-	0x0103, 0x01,
-//20 0103 01
-//44 0103 01
-//46 0103 01
-//sl 1 1
-
-//20 3037 6c
-//44 3039 6c
-//46 303a 6c
-
-	0x0102, 0x01,
-//;6c 0103 01
-//;sleep 10ms
-};
-
-//OV50E40_Initial_CPHY_3Trio_2400Msps_20241121.txt
-static kal_uint16 zhuquec1main_init_setting[] = {
-	0x0102, 0x01,
-	0x0304, 0x02,
-	0x0305, 0x58,
-	0x0306, 0x03,
-	0x0307, 0x00,
-	0x0323, 0x12,
-	0x0324, 0x01,
-	0x0325, 0xf4,
-	0x0326, 0xd4,
-	0x0327, 0x0b,
-	0x0343, 0x00,
-	0x0345, 0x20,
-	0x034a, 0x07,
-	0x300d, 0x11,
-	0x300e, 0x11,
-	0x3012, 0x31,
-	0x301d, 0x02,
-	0x3025, 0x03,
-	0x3027, 0x2c,
-	0x3106, 0x80,
-	0x3107, 0xc9,
-	0x3201, 0x10,
-	0x3202, 0x20,
-	0x3203, 0x30,
-	0x3400, 0x04,
-	0x3408, 0x08,
-	0x340e, 0x40,
-	0x3421, 0x01,
-	0x3424, 0x00,
-	0x3425, 0x00,
-	0x3426, 0x00,
-	0x3427, 0xa0,
-	0x3428, 0x10,
-	0x3429, 0x05,
-	0x342a, 0x00,
-	0x342b, 0x00,
-	0x3504, 0x0c,
-	0x3506, 0x58,
-	0x3508, 0x01,
-	0x3509, 0x00,
-	0x350d, 0x01,
-	0x350e, 0x00,
-	0x350f, 0x00,
-	0x3544, 0x0c,
-	0x3546, 0x38,
-	0x3548, 0x0f,
-	0x3549, 0xff,
-	0x3584, 0x0c,
-	0x3586, 0x38,
-	0x3508, 0x0f,
-	0x3509, 0xff,
-	0x3600, 0x07,
-	0x3601, 0x38,
-	0x3604, 0x38,
-	0x3605, 0x38,
-	0x3608, 0xf0,
-	0x3609, 0x46,
-	0x360a, 0xbf,
-	0x360c, 0x50,
-	0x360e, 0x07,
-	0x3616, 0x58,
-	0x3619, 0x44,
-	0x361a, 0x56,
-	0x361b, 0x40,
-	0x361c, 0x08,
-	0x361d, 0x0c,
-	0x361e, 0x16,
-	0x3622, 0xb9,
-	0x3623, 0x83,
-	0x3625, 0x84,
-	0x3626, 0xc2,
-	0x363b, 0x14,
-	0x363c, 0xba,
-	0x3642, 0x97,
-	0x3643, 0x01,
-	0x3645, 0x14,
-	0x3647, 0xc1,
-	0x3648, 0x8e,
-	0x364d, 0x0f,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3683, 0x00,
-	0x3684, 0x00,
-	0x3688, 0x03,
-	0x369a, 0x00,
-	0x36a5, 0x08,
-	0x36d0, 0x00,
-	0x3700, 0x1a,
-	0x3701, 0x13,
-	0x3702, 0x2c,
-	0x3703, 0x31,
-	0x3704, 0x03,
-	0x3706, 0x20,
-	0x3707, 0x04,
-	0x3708, 0x25,
-	0x3709, 0x9d,
-	0x370b, 0x3e,
-	0x370c, 0x04,
-	0x3712, 0x51,
-	0x3714, 0x74,
-	0x3715, 0x00,
-	0x3724, 0x28,
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x372e, 0x1a,
-	0x372f, 0x13,
-	0x3734, 0x1a,
-	0x3740, 0x20,
-	0x3741, 0x80,
-	0x3743, 0xe0,
-	0x374f, 0x50,
-	0x3754, 0x2c,
-	0x3755, 0x70,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x3767, 0x28,
-	0x376c, 0x00,
-	0x3780, 0x4c,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x20,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x3e,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x379f, 0x01,
-	0x37a0, 0x70,
-	0x37cb, 0x03,
-	0x37d0, 0x00,
-	0x37d1, 0x00,
-	0x37db, 0x0f,
-	0x37dc, 0x19,
-	0x37e3, 0x30,
-	0x37f8, 0x25,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x18,
-	0x3807, 0x1f,
-	0x3808, 0x20,
-	0x3809, 0x00,
-	0x380a, 0x18,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x18,
-	0x380f, 0x6c,
-	0x3810, 0x00,
-	0x3811, 0x0f,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x3820, 0x40,
-	0x3821, 0x04,
-	0x3822, 0x00,
-	0x3823, 0x04,
-	0x3828, 0x14,
-	0x382a, 0x80,
-	0x382e, 0x79,
-	0x3830, 0x1c,
-	0x3831, 0x00,
-	0x3837, 0x1c,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3858, 0x00,
-	0x3888, 0x00,
-	0x3889, 0x10,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x20,
-	0x388d, 0x00,
-	0x388e, 0x18,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3900, 0x40,
-	0x3903, 0x01,
-	0x3904, 0xf7,
-	0x3905, 0xd4,
-	0x3906, 0x00,
-	0x3907, 0x00,
-	0x3917, 0x00,
-	0x3918, 0x00,
-	0x391c, 0xba,
-	0x3924, 0xaa,
-	0x3939, 0xc0,
-	0x393a, 0xff,
-	0x393b, 0xc0,
-	0x394e, 0x01,
-	0x394f, 0x01,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398a, 0x01,
-	0x398b, 0x80,
-	0x3992, 0x03,
-	0x3993, 0x01,
-	0x399d, 0x07,
-	0x399e, 0x01,
-	0x39ec, 0x06,
-	0x39ed, 0x04,
-	0x39fb, 0x1a,
-	0x39fc, 0x1a,
-	0x39fd, 0x1a,
-	0x39fe, 0x1a,
-	0x3a0d, 0x00,
-	0x3a13, 0x00,
-	0x3a14, 0x04,
-	0x3a15, 0x01,
-	0x3a16, 0x02,
-	0x3a17, 0x00,
-	0x3a1d, 0x1a,
-	0x3a1e, 0x1a,
-	0x3a21, 0x1a,
-	0x3a22, 0x1a,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3a68, 0x07,
-	0x3a69, 0x34,
-	0x3a78, 0x03,
-	0x3a79, 0x03,
-	0x3a7c, 0x04,
-	0x3a7d, 0x04,
-	0x3ab1, 0x5b,
-	0x3ab6, 0x1a,
-	0x3ab7, 0x1a,
-	0x3ab8, 0x1a,
-	0x3ab9, 0x1a,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0x00,
-	0x3b02, 0x00,
-	0x3b03, 0x07,
-	0x3b04, 0x07,
-	0x3b05, 0x07,
-	0x3b08, 0x07,
-	0x3b14, 0x02,
-	0x3b15, 0x07,
-	0x3b19, 0x07,
-	0x3b1a, 0x07,
-	0x3b1d, 0x00,
-	0x3b22, 0x07,
-	0x3b25, 0x07,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x07,
-	0x3b33, 0x07,
-	0x3b34, 0x07,
-	0x3b38, 0x07,
-	0x3b39, 0x07,
-	0x3b3a, 0x07,
-	0x3b3b, 0x07,
-	0x3b3c, 0x00,
-	0x3b3d, 0x00,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x11,
-	0x3b57, 0x11,
-	0x3b58, 0x11,
-	0x3b59, 0x11,
-	0x3b5a, 0x11,
-	0x3b5b, 0x11,
-	0x3b5c, 0x11,
-	0x3b5d, 0x11,
-	0x3b82, 0x11,
-	0x3ba0, 0x07,
-	0x3ba1, 0x11,
-	0x3ba2, 0x07,
-	0x3ba3, 0x0e,
-	0x3ba4, 0x77,
-	0x3ba5, 0x77,
-	0x3ba6, 0x77,
-	0x3ba7, 0x77,
-	0x3baa, 0x38,
-	0x3bab, 0x2c,
-	0x3bac, 0x77,
-	0x3baf, 0x58,
-	0x3bba, 0x58,
-	0x3bca, 0x1a,
-	0x3beb, 0x00,
-	0x3bf2, 0x33,
-	0x3bfa, 0x00,
-	0x3bff, 0x08,
-	0x3d8c, 0x9b,
-	0x3d8d, 0xa0,
-	0x4008, 0x00,
-	0x4009, 0x02,
-	0x4010, 0x28,
-	0x4012, 0xfc,
-	0x4015, 0x00,
-	0x4016, 0x1f,
-	0x4017, 0x00,
-	0x4018, 0x0f,
-	0x401b, 0x04,
-	0x401e, 0x01,
-	0x401f, 0x30,
-	0x4030, 0x00,
-	0x4031, 0x00,
-	0x4032, 0x00,
-	0x4033, 0x00,
-	0x4034, 0x00,
-	0x4035, 0x00,
-	0x4036, 0x00,
-	0x4037, 0x00,
-	0x4038, 0x00,
-	0x4039, 0x00,
-	0x403a, 0x00,
-	0x403b, 0x00,
-	0x403c, 0x00,
-	0x403d, 0x00,
-	0x403e, 0x00,
-	0x403f, 0x00,
-	0x4040, 0x00,
-	0x4041, 0x80,
-	0x4042, 0x0f,
-	0x4043, 0x80,
-	0x4044, 0x00,
-	0x4045, 0x90,
-	0x4046, 0x0f,
-	0x4047, 0x70,
-	0x40c4, 0x07,
-	0x40c5, 0xff,
-	0x40c6, 0x07,
-	0x40c7, 0xff,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x30,
-	0x450e, 0x00,
-	0x4510, 0x03,
-	0x4511, 0x08,
-	0x4512, 0x05,
-	0x4513, 0x05,
-	0x4514, 0xaf,
-	0x4515, 0xaf,
-	0x4516, 0x05,
-	0x4517, 0x05,
-	0x4518, 0xaf,
-	0x4519, 0xaf,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x00,
-	0x45c1, 0x00,
-	0x45c2, 0x02,
-	0x45c3, 0x80,
-	0x45c4, 0x10,
-	0x45c5, 0x00,
-	0x45c6, 0x00,
-	0x45c7, 0x00,
-	0x45c8, 0x00,
-	0x45c9, 0x00,
-	0x45ca, 0x00,
-	0x45cb, 0x00,
-	0x45cc, 0x00,
-	0x45cd, 0x07,
-	0x45ce, 0x13,
-	0x45cf, 0x13,
-	0x45d0, 0x13,
-	0x45d3, 0x00,
-	0x45d4, 0x00,
-	0x45d5, 0x00,
-	0x45d6, 0x00,
-	0x45d7, 0x00,
-	0x45d8, 0x00,
-	0x45d9, 0x00,
-	0x45da, 0x00,
-	0x45dd, 0x00,
-	0x45d2, 0x00,
-	0x45de, 0x00,
-	0x45df, 0x00,
-	0x45e0, 0x00,
-	0x45e1, 0x00,
-	0x45e2, 0x00,
-	0x45e3, 0x00,
-	0x45e4, 0x00,
-	0x45e5, 0x00,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x02,
-	0x4641, 0x00,
-	0x4643, 0x08,
-	0x4644, 0xe0,
-	0x4647, 0x02,
-	0x464c, 0x01,
-	0x4680, 0x05,
-	0x4684, 0x30,
-	0x4685, 0x17,
-	0x468e, 0x30,
-	0x4690, 0x00,
-	0x4802, 0x02,
-	0x4813, 0x10,
-	0x481b, 0x14,
-	0x481f, 0x26,
-	0x4825, 0x40,
-	0x4836, 0x32,
-	0x4837, 0x05,
-	0x4850, 0x42,
-	0x4851, 0xaa,
-	0x4853, 0x10,
-	0x4854, 0x05,
-	0x4855, 0x1c,
-	0x4860, 0x01,
-	0x4862, 0x30,
-	0x4883, 0x24,
-	0x4888, 0x80,
-	0x4908, 0x00,
-	0x4909, 0x02,
-	0x4910, 0x28,
-	0x4915, 0x00,
-	0x4916, 0x1f,
-	0x4917, 0x00,
-	0x4918, 0x0f,
-	0x491b, 0x04,
-	0x491e, 0x01,
-	0x491f, 0x30,
-	0x4930, 0x00,
-	0x4931, 0x00,
-	0x4932, 0x00,
-	0x4933, 0x00,
-	0x4934, 0x00,
-	0x4935, 0x00,
-	0x4936, 0x00,
-	0x4937, 0x00,
-	0x4938, 0x00,
-	0x4939, 0x00,
-	0x493a, 0x00,
-	0x493b, 0x00,
-	0x493c, 0x00,
-	0x493d, 0x00,
-	0x493e, 0x00,
-	0x493f, 0x00,
-	0x4940, 0x00,
-	0x4941, 0x80,
-	0x4942, 0x0f,
-	0x4943, 0x80,
-	0x4944, 0x00,
-	0x4945, 0x90,
-	0x4946, 0x0f,
-	0x4947, 0x70,
-	0x4a08, 0x00,
-	0x4a09, 0x02,
-	0x4a15, 0x00,
-	0x4a16, 0x1f,
-	0x4a17, 0x00,
-	0x4a18, 0x0f,
-	0x4a1b, 0x04,
-	0x4a1e, 0x01,
-	0x4a1f, 0x30,
-	0x4d00, 0x04,
-	0x4d01, 0x9a,
-	0x4d02, 0xbb,
-	0x4d03, 0x33,
-	0x4d04, 0x61,
-	0x4d05, 0x9b,
-	0x5000, 0x5b,
-	0x5001, 0x28,
-	0x5002, 0x00,
-	0x5004, 0x02,
-	0x5060, 0x10,
-	0x50c1, 0x00,
-	0x5110, 0x90,
-	0x5111, 0x10,
-	0x5112, 0x9b,
-	0x5113, 0x27,
-	0x5114, 0x01,
-	0x5155, 0x08,
-	0x5156, 0x0c,
-	0x5157, 0x0c,
-	0x5159, 0x08,
-	0x515a, 0x0c,
-	0x515b, 0x0c,
-	0x5180, 0xc1,
-	0x518a, 0x00,
-	0x53c1, 0x00,
-	0x5455, 0x08,
-	0x5456, 0x0c,
-	0x5457, 0x0c,
-	0x5459, 0x08,
-	0x545a, 0x0c,
-	0x545b, 0x0c,
-	0x5480, 0xc1,
-	0x548a, 0x00,
-	0x56c1, 0x00,
-	0x5755, 0x08,
-	0x5756, 0x0c,
-	0x5757, 0x0c,
-	0x5759, 0x08,
-	0x575a, 0x0c,
-	0x575b, 0x0c,
-	0x5780, 0xc1,
-	0x578a, 0x00,
-	0x5853, 0xff,
-	0x5854, 0xff,
-	0x5855, 0xff,
-	0x5856, 0xff,
-	0x5857, 0xff,
-	0x5858, 0xff,
-	0x587b, 0x16,
-	0x58a7, 0x11,
-	0x58c0, 0x3f,
-	0x58fd, 0x0a,
-	0x5925, 0x00,
-	0x5926, 0x00,
-	0x5927, 0x00,
-	0x5928, 0x00,
-	0x5929, 0x00,
-	0x592c, 0x06,
-	0x592d, 0x00,
-	0x592e, 0x03,
-	0x59c2, 0x00,
-	0x59c3, 0xce,
-	0x59c4, 0x01,
-	0x59c5, 0x20,
-	0x59c6, 0x01,
-	0x59c7, 0x91,
-	0x59c8, 0x02,
-	0x59c9, 0x2f,
-	0x59ca, 0x03,
-	0x59cb, 0x0a,
-	0x59cc, 0x04,
-	0x59cd, 0x3d,
-	0x59ce, 0x05,
-	0x59cf, 0xe8,
-	0x59d0, 0x08,
-	0x59d1, 0x3c,
-	0x59d2, 0x0b,
-	0x59d3, 0x7a,
-	0x59d4, 0x0f,
-	0x59d5, 0xff,
-	0x59d6, 0x0f,
-	0x59d7, 0xff,
-	0x59d8, 0x0f,
-	0x59d9, 0xff,
-	0x59da, 0x0f,
-	0x59db, 0xff,
-	0x59ef, 0x5f,
-	0x6924, 0x00,
-	0x6925, 0x00,
-	0x6926, 0x00,
-	0x6942, 0x00,
-	0x6943, 0x00,
-	0x6944, 0x00,
-	0x694b, 0x00,
-	0x6a20, 0x03,
-	0x6a21, 0x04,
-	0x6a22, 0x00,
-	0x6a53, 0xff,
-	0x6a54, 0xff,
-	0x6a55, 0xff,
-	0x6a56, 0xff,
-	0x6a57, 0xff,
-	0x6a58, 0xff,
-	0x6a7b, 0x16,
-	0x6aa7, 0x11,
-	0x6ac0, 0x3f,
-	0x6afd, 0x0a,
-	0x6b25, 0x00,
-	0x6b26, 0x00,
-	0x6b27, 0x00,
-	0x6b28, 0x00,
-	0x6b29, 0x00,
-	0x6b2c, 0x06,
-	0x6b2d, 0x00,
-	0x6b2e, 0x03,
-	0x6bc2, 0x00,
-	0x6bc3, 0xce,
-	0x6bc4, 0x01,
-	0x6bc5, 0x20,
-	0x6bc6, 0x01,
-	0x6bc7, 0x91,
-	0x6bc8, 0x02,
-	0x6bc9, 0x2f,
-	0x6bca, 0x03,
-	0x6bcb, 0x0a,
-	0x6bcc, 0x04,
-	0x6bcd, 0x3d,
-	0x6bce, 0x05,
-	0x6bcf, 0xe8,
-	0x6bd0, 0x08,
-	0x6bd1, 0x3c,
-	0x6bd2, 0x0b,
-	0x6bd3, 0x7a,
-	0x6bd4, 0x0f,
-	0x6bd5, 0xff,
-	0x6bd6, 0x0f,
-	0x6bd7, 0xff,
-	0x6bd8, 0x0f,
-	0x6bd9, 0xff,
-	0x6bda, 0x0f,
-	0x6bdb, 0xff,
-	0x6bef, 0x5f,
-	0xc200, 0x00,
-	0xc210, 0x00,
-	0xc211, 0x00,
-	0xc212, 0x00,
-	0xc213, 0x00,
-	0xc231, 0x00,
-	0xc232, 0x01,
-	0xc233, 0x8f,
-	0xc240, 0x00,
-	0xc241, 0x00,
-	0xc242, 0x00,
-	0xc243, 0x00,
-	0xc245, 0x00,
-	0xc246, 0x01,
-	0xc247, 0x8f,
-	0xc250, 0x00,
-	0xc251, 0x00,
-	0xc252, 0x00,
-	0xc253, 0x00,
-	0xc258, 0x00,
-	0xc259, 0x00,
-	0xc25a, 0x00,
-	0xc25b, 0x00,
-	0xc264, 0x00,
-	0xc265, 0x00,
-	0xc266, 0x00,
-	0xc267, 0x00,
-	0xc26c, 0x00,
-	0xc26d, 0x00,
-	0xc26e, 0x00,
-	0xc26f, 0x00,
-	0xc40d, 0x04,
-	0xc40f, 0x07,
-	0xc415, 0x01,
-	0xc44a, 0x01,
-	0xc44c, 0x01,
-	0xc44e, 0x03,
-	0xc44f, 0x03,
-	0xc450, 0x04,
-	0xc451, 0x04,
-	0xc45e, 0x13,
-	0xc46d, 0x55,
-	0xc47f, 0x06,
-	0xc480, 0x03,
-	0xc48d, 0x80,
-	0xc48c, 0xc0,
-	0xc48f, 0x3f,
-	0xc491, 0x00,
-	0xc49c, 0x08,
-	0xc49e, 0x20,
-	0xc49f, 0x20,
-	0xc4a2, 0x3e,
-	0xc4a3, 0x3e,
-	0xc4a6, 0x1a,
-	0xc4a7, 0x1a,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c1, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2a,
-	0xc4c7, 0x2a,
-	0xc4c8, 0x35,
-	0xc4c9, 0x35,
-	0xc4ca, 0x35,
-	0xc4cb, 0x35,
-	0xc4cc, 0xff,
-	0xc4cd, 0x0f,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x00,
-	0xc4d1, 0x00,
-	0xc4d2, 0x0c,
-	0xc4d3, 0x0c,
-	0xc4d4, 0x0c,
-	0xc4d5, 0x0c,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x11,
-	0xc4e9, 0x11,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4ef, 0xee,
-	0xc4f0, 0xee,
-	0xc4f1, 0x0e,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fd, 0x80,
-	0xc4fc, 0x80,
-	0xc4fe, 0x07,
-	0xc4ff, 0x07,
-	0xc50b, 0x77,
-	0xc50e, 0x58,
-	0xc50f, 0x58,
-	0xc510, 0x30,
-	0xc511, 0x1a,
-	0xc512, 0x09,
-	0xc513, 0x58,
-	0xc514, 0x58,
-	0xc515, 0x30,
-	0xc516, 0x1c,
-	0xc517, 0x0c,
-	0xc518, 0x38,
-	0xc519, 0x38,
-	0xc51a, 0x38,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc532, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc57b, 0xff,
-	0xc583, 0x18,
-	0xc584, 0x08,
-	0xc58b, 0x18,
-	0xc58c, 0x08,
-	0xc58f, 0x2c,
-	0xc590, 0x2c,
-	0xc591, 0x2c,
-	0xc592, 0x2c,
-	0xc593, 0x2c,
-	0xc594, 0x10,
-	0xc597, 0x2c,
-	0xc598, 0x2c,
-	0xc599, 0x2c,
-	0xc59a, 0x2c,
-	0xc59b, 0x2c,
-	0xc59c, 0x10,
-	0xc5c3, 0x00,
-	0xc5c4, 0x00,
-	0xc5c5, 0x00,
-	0xc5c6, 0x00,
-	0xc5c7, 0x00,
-	0xc5c8, 0x00,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x40,
-	0xc5cc, 0x40,
-	0xc5cd, 0x40,
-	0xc5ce, 0x40,
-	0xc5e8, 0x00,
-	0xc5fe, 0x04,
-	0xc5ff, 0x06,
-	0xc624, 0x00,
-};
-
-static kal_uint16 zhuquec1main_default_QPDC_setting[] = {
-//;QPDC initial. When sensor uses real calibration value, these registers can be removed.
-	0x5ac0, 0x80,
-	0x5ac1, 0x80,
-	0x5ac2, 0x80,
-	0x5ac3, 0x80,
-	0x5ac4, 0x80,
-	0x5ac5, 0x80,
-	0x5ac6, 0x80,
-	0x5ac7, 0x80,
-	0x5ac8, 0x80,
-	0x5ac9, 0x80,
-	0x5aca, 0x80,
-	0x5acb, 0x80,
-	0x5acc, 0x80,
-	0x5acd, 0x80,
-	0x5ace, 0x80,
-	0x5acf, 0x80,
-	0x5ad0, 0x80,
-	0x5ad1, 0x80,
-	0x5ad2, 0x80,
-	0x5ad3, 0x80,
-	0x5ad4, 0x80,
-	0x5ad5, 0x80,
-	0x5ad6, 0x80,
-	0x5ad7, 0x80,
-	0x5ad8, 0x80,
-	0x5ad9, 0x80,
-	0x5ada, 0x80,
-	0x5adb, 0x80,
-	0x5adc, 0x80,
-	0x5add, 0x80,
-	0x5ade, 0x80,
-	0x5adf, 0x80,
-	0x5ae0, 0x80,
-	0x5ae1, 0x80,
-	0x5ae2, 0x80,
-	0x5ae3, 0x80,
-	0x5ae4, 0x80,
-	0x5ae5, 0x80,
-	0x5ae6, 0x80,
-	0x5ae7, 0x80,
-	0x5ae8, 0x80,
-	0x5ae9, 0x80,
-	0x5aea, 0x80,
-	0x5aeb, 0x80,
-	0x5aec, 0x80,
-	0x5aed, 0x80,
-	0x5aee, 0x80,
-	0x5aef, 0x80,
-	0x5af0, 0x80,
-	0x5af1, 0x80,
-	0x5af2, 0x80,
-	0x5af3, 0x80,
-	0x5af4, 0x80,
-	0x5af5, 0x80,
-	0x5af6, 0x80,
-	0x5af7, 0x80,
-	0x5af8, 0x80,
-	0x5af9, 0x80,
-	0x5afa, 0x80,
-	0x5afb, 0x80,
-	0x5afc, 0x80,
-	0x5afd, 0x80,
-	0x5afe, 0x80,
-	0x5aff, 0x80,
-	0x5b00, 0x80,
-	0x5b01, 0x80,
-	0x5b02, 0x80,
-	0x5b03, 0x80,
-	0x5b04, 0x80,
-	0x5b05, 0x80,
-	0x5b06, 0x80,
-	0x5b07, 0x80,
-	0x5b08, 0x80,
-	0x5b09, 0x80,
-	0x5b0a, 0x80,
-	0x5b0b, 0x80,
-	0x5b0c, 0x80,
-	0x5b0d, 0x80,
-	0x5b0e, 0x80,
-	0x5b0f, 0x80,
-	0x5b10, 0x80,
-	0x5b11, 0x80,
-	0x5b12, 0x80,
-	0x5b13, 0x80,
-	0x5b14, 0x80,
-	0x5b15, 0x80,
-	0x5b16, 0x80,
-	0x5b17, 0x80,
-	0x5b18, 0x80,
-	0x5b19, 0x80,
-	0x5b1a, 0x80,
-	0x5b1b, 0x80,
-	0x5b1c, 0x80,
-	0x5b1d, 0x80,
-	0x5b1e, 0x80,
-	0x5b1f, 0x80,
-	0x5b20, 0x80,
-	0x5b21, 0x80,
-	0x5b22, 0x80,
-	0x5b23, 0x80,
-	0x5b24, 0x80,
-	0x5b25, 0x80,
-	0x5b26, 0x80,
-	0x5b27, 0x80,
-	0x5b28, 0x80,
-	0x5b29, 0x80,
-	0x5b2a, 0x80,
-	0x5b2b, 0x80,
-	0x5b2c, 0x80,
-	0x5b2d, 0x80,
-	0x5b2e, 0x80,
-	0x5b2f, 0x80,
-	0x5b30, 0x80,
-	0x5b31, 0x80,
-	0x5b32, 0x80,
-	0x5b33, 0x80,
-	0x5b34, 0x80,
-	0x5b35, 0x80,
-	0x5b36, 0x80,
-	0x5b37, 0x80,
-	0x5b38, 0x80,
-	0x5b39, 0x80,
-	0x5b3a, 0x80,
-	0x5b3b, 0x80,
-	0x5b3c, 0x80,
-	0x5b3d, 0x80,
-	0x5b3e, 0x80,
-	0x5b3f, 0x80,
-	0x5b40, 0x80,
-	0x5b41, 0x80,
-	0x5b42, 0x80,
-	0x5b43, 0x80,
-	0x5b44, 0x80,
-	0x5b45, 0x80,
-	0x5b46, 0x80,
-	0x5b47, 0x80,
-	0x5b48, 0x80,
-	0x5b49, 0x80,
-	0x5b4a, 0x80,
-	0x5b4b, 0x80,
-	0x5b4c, 0x80,
-	0x5b4d, 0x80,
-	0x5b4e, 0x80,
-	0x5b4f, 0x80,
-	0x5b50, 0x80,
-	0x5b51, 0x80,
-	0x5b52, 0x80,
-	0x5b53, 0x80,
-	0x5b54, 0x80,
-	0x5b55, 0x80,
-	0x5b56, 0x80,
-	0x5b57, 0x80,
-	0x5b58, 0x80,
-	0x5b59, 0x80,
-	0x5b5a, 0x80,
-	0x5b5b, 0x80,
-	0x5b5c, 0x80,
-	0x5b5d, 0x80,
-	0x5b5e, 0x80,
-	0x5b5f, 0x80,
-	0x5b60, 0x80,
-	0x5b61, 0x80,
-	0x5b62, 0x80,
-	0x5b63, 0x80,
-	0x5b64, 0x80,
-	0x5b65, 0x80,
-	0x5b66, 0x80,
-	0x5b67, 0x80,
-	0x5b68, 0x80,
-	0x5b69, 0x80,
-	0x5b6a, 0x80,
-	0x5b6b, 0x80,
-	0x5b6c, 0x80,
-	0x5b6d, 0x80,
-	0x5b6e, 0x80,
-	0x5b6f, 0x80,
-	0x5b70, 0x80,
-	0x5b71, 0x80,
-	0x5b72, 0x80,
-	0x5b73, 0x80,
-	0x5b74, 0x80,
-	0x5b75, 0x80,
-	0x5b76, 0x80,
-	0x5b77, 0x80,
-	0x5b78, 0x80,
-	0x5b79, 0x80,
-	0x5b7a, 0x80,
-	0x5b7b, 0x80,
-	0x5b7c, 0x80,
-	0x5b7d, 0x80,
-	0x5b7e, 0x80,
-	0x5b7f, 0x80,
-	0x5b80, 0x80,
-	0x5b81, 0x80,
-	0x5b82, 0x80,
-	0x5b83, 0x80,
-	0x5b84, 0x80,
-	0x5b85, 0x80,
-	0x5b86, 0x80,
-	0x5b87, 0x80,
-	0x5b88, 0x80,
-	0x5b89, 0x80,
-	0x5b8a, 0x80,
-	0x5b8b, 0x80,
-	0x5b8c, 0x80,
-	0x5b8d, 0x80,
-	0x5b8e, 0x80,
-	0x5b8f, 0x80,
-	0x5b90, 0x80,
-	0x5b91, 0x80,
-	0x5b92, 0x80,
-	0x5b93, 0x80,
-	0x5b94, 0x80,
-	0x5b95, 0x80,
-	0x5b96, 0x80,
-	0x5b97, 0x80,
-	0x5b98, 0x80,
-	0x5b99, 0x80,
-	0x5b9a, 0x80,
-	0x5b9b, 0x80,
-	0x5b9c, 0x80,
-	0x5b9d, 0x80,
-	0x5b9e, 0x80,
-	0x5b9f, 0x80,
-	0x5ba0, 0x80,
-	0x5ba1, 0x80,
-	0x5ba2, 0x80,
-	0x5ba3, 0x80,
-	0x5ba4, 0x80,
-	0x5ba5, 0x80,
-	0x5ba6, 0x80,
-	0x5ba7, 0x80,
-	0x5ba8, 0x80,
-	0x5ba9, 0x80,
-	0x5baa, 0x80,
-	0x5bab, 0x80,
-	0x5bac, 0x80,
-	0x5bad, 0x80,
-	0x5bae, 0x80,
-	0x5baf, 0x80,
-	0x5bb0, 0x80,
-	0x5bb1, 0x80,
-	0x5bb2, 0x80,
-	0x5bb3, 0x80,
-	0x5bb4, 0x80,
-	0x5bb5, 0x80,
-	0x5bb6, 0x80,
-	0x5bb7, 0x80,
-	0x5bb8, 0x80,
-	0x5bb9, 0x80,
-	0x5bba, 0x80,
-	0x5bbb, 0x80,
-	0x5bbc, 0x80,
-	0x5bbd, 0x80,
-	0x5bbe, 0x80,
-	0x5bbf, 0x80,
-	0x5bc0, 0x80,
-	0x5bc1, 0x80,
-	0x5bc2, 0x80,
-	0x5bc3, 0x80,
-	0x5bc4, 0x80,
-	0x5bc5, 0x80,
-	0x5bc6, 0x80,
-	0x5bc7, 0x80,
-	0x5bc8, 0x80,
-	0x5bc9, 0x80,
-	0x5bca, 0x80,
-	0x5bcb, 0x80,
-	0x5bcc, 0x80,
-	0x5bcd, 0x80,
-	0x5bce, 0x80,
-	0x5bcf, 0x80,
-	0x5bd0, 0x80,
-	0x5bd1, 0x80,
-	0x5bd2, 0x80,
-	0x5bd3, 0x80,
-	0x5bd4, 0x80,
-	0x5bd5, 0x80,
-	0x5bd6, 0x80,
-	0x5bd7, 0x80,
-	0x5bd8, 0x80,
-	0x5bd9, 0x80,
-	0x5bda, 0x80,
-	0x5bdb, 0x80,
-	0x5bdc, 0x80,
-	0x5bdd, 0x80,
-	0x5bde, 0x80,
-	0x5bdf, 0x80,
-	0x5be0, 0x80,
-	0x5be1, 0x80,
-	0x5be2, 0x80,
-	0x5be3, 0x80,
-	0x5be4, 0x80,
-	0x5be5, 0x80,
-	0x5be6, 0x80,
-	0x5be7, 0x80,
-	0x5be8, 0x80,
-	0x5be9, 0x80,
-	0x5bea, 0x80,
-	0x5beb, 0x80,
-	0x5bec, 0x80,
-	0x5bed, 0x80,
-	0x5bee, 0x80,
-	0x5bef, 0x80,
-	0x5bf0, 0x80,
-	0x5bf1, 0x80,
-	0x5bf2, 0x80,
-	0x5bf3, 0x80,
-	0x5bf4, 0x80,
-	0x5bf5, 0x80,
-	0x5bf6, 0x80,
-	0x5bf7, 0x80,
-	0x5bf8, 0x80,
-	0x5bf9, 0x80,
-	0x5bfa, 0x80,
-	0x5bfb, 0x80,
-	0x5bfc, 0x80,
-	0x5bfd, 0x80,
-	0x5bfe, 0x80,
-	0x5bff, 0x80,
-	0x5c00, 0x80,
-	0x5c01, 0x80,
-	0x5c02, 0x80,
-	0x5c03, 0x80,
-	0x5c04, 0x80,
-	0x5c05, 0x80,
-	0x5c06, 0x80,
-	0x5c07, 0x80,
-	0x5c08, 0x80,
-	0x5c09, 0x80,
-	0x5c0a, 0x80,
-	0x5c0b, 0x80,
-	0x5c0c, 0x80,
-	0x5c0d, 0x80,
-	0x5c0e, 0x80,
-	0x5c0f, 0x80,
-	0x5c10, 0x80,
-	0x5c11, 0x80,
-	0x5c12, 0x80,
-	0x5c13, 0x80,
-	0x5c14, 0x80,
-	0x5c15, 0x80,
-	0x5c16, 0x80,
-	0x5c17, 0x80,
-	0x5c18, 0x80,
-	0x5c19, 0x80,
-	0x5c1a, 0x80,
-	0x5c1b, 0x80,
-	0x5c1c, 0x80,
-	0x5c1d, 0x80,
-	0x5c1e, 0x80,
-	0x5c1f, 0x80,
-	0x5c20, 0x80,
-	0x5c21, 0x80,
-	0x5c22, 0x80,
-	0x5c23, 0x80,
-	0x5c24, 0x80,
-	0x5c25, 0x80,
-	0x5c26, 0x80,
-	0x5c27, 0x80,
-	0x5c28, 0x80,
-	0x5c29, 0x80,
-	0x5c2a, 0x80,
-	0x5c2b, 0x80,
-	0x5c2c, 0x80,
-	0x5c2d, 0x80,
-	0x5c2e, 0x80,
-	0x5c2f, 0x80,
-	0x5c30, 0x80,
-	0x5c31, 0x80,
-	0x5c32, 0x80,
-	0x5c33, 0x80,
-	0x5c34, 0x80,
-	0x5c35, 0x80,
-	0x5c36, 0x80,
-	0x5c37, 0x80,
-	0x5c38, 0x80,
-	0x5c39, 0x80,
-	0x5c3a, 0x80,
-	0x5c3b, 0x80,
-	0x5c3c, 0x80,
-	0x5c3d, 0x80,
-	0x5c3e, 0x80,
-	0x5c3f, 0x80,
-	0x5c40, 0x80,
-	0x5c41, 0x80,
-	0x5c42, 0x80,
-	0x5c43, 0x80,
-	0x5c44, 0x80,
-	0x5c45, 0x80,
-	0x5c46, 0x80,
-	0x5c47, 0x80,
-	0x5c48, 0x80,
-	0x5c49, 0x80,
-	0x5c4a, 0x80,
-	0x5c4b, 0x80,
-	0x5c4c, 0x80,
-	0x5c4d, 0x80,
-	0x5c4e, 0x80,
-	0x5c4f, 0x80,
-	0x5c50, 0x80,
-	0x5c51, 0x80,
-	0x5c52, 0x80,
-	0x5c53, 0x80,
-	0x5c54, 0x80,
-	0x5c55, 0x80,
-	0x5c56, 0x80,
-	0x5c57, 0x80,
-	0x5c58, 0x80,
-	0x5c59, 0x80,
-	0x5c5a, 0x80,
-	0x5c5b, 0x80,
-	0x5c5c, 0x80,
-	0x5c5d, 0x80,
-	0x5c5e, 0x80,
-	0x5c5f, 0x80,
-	0x5c60, 0x80,
-	0x5c61, 0x80,
-	0x5c62, 0x80,
-	0x5c63, 0x80,
-	0x5c64, 0x80,
-	0x5c65, 0x80,
-	0x5c66, 0x80,
-	0x5c67, 0x80,
-	0x5c68, 0x80,
-	0x5c69, 0x80,
-	0x5c6a, 0x80,
-	0x5c6b, 0x80,
-	0x5c6c, 0x80,
-	0x5c6d, 0x80,
-	0x5c6e, 0x80,
-	0x5c6f, 0x80,
-	0x5c70, 0x80,
-	0x5c71, 0x80,
-	0x5c72, 0x80,
-	0x5c73, 0x80,
-	0x5c74, 0x80,
-	0x5c75, 0x80,
-	0x5c76, 0x80,
-	0x5c77, 0x80,
-	0x5c78, 0x80,
-	0x5c79, 0x80,
-	0x5c7a, 0x80,
-	0x5c7b, 0x80,
-	0x5c7c, 0x80,
-	0x5c7d, 0x80,
-	0x5c7e, 0x80,
-	0x5c7f, 0x80,
-	0x5c80, 0x80,
-	0x5c81, 0x80,
-	0x5c82, 0x80,
-	0x5c83, 0x80,
-	0x5c84, 0x80,
-	0x5c85, 0x80,
-	0x5c86, 0x80,
-	0x5c87, 0x80,
-	0x5c88, 0x80,
-	0x5c89, 0x80,
-	0x5c8a, 0x80,
-	0x5c8b, 0x80,
-	0x5c8c, 0x80,
-	0x5c8d, 0x80,
-	0x5c8e, 0x80,
-	0x5c8f, 0x80,
-	0x5c90, 0x80,
-	0x5c91, 0x80,
-	0x5c92, 0x80,
-	0x5c93, 0x80,
-	0x5c94, 0x80,
-	0x5c95, 0x80,
-	0x5c96, 0x80,
-	0x5c97, 0x80,
-	0x5c98, 0x80,
-	0x5c99, 0x80,
-	0x5c9a, 0x80,
-	0x5c9b, 0x80,
-	0x5c9c, 0x80,
-	0x5c9d, 0x80,
-	0x5c9e, 0x80,
-	0x5c9f, 0x80,
-	0x5ca0, 0x80,
-	0x5ca1, 0x80,
-	0x5ca2, 0x80,
-	0x5ca3, 0x80,
-	0x5ca4, 0x80,
-	0x5ca5, 0x80,
-	0x5ca6, 0x80,
-	0x5ca7, 0x80,
-	0x5ca8, 0x80,
-	0x5ca9, 0x80,
-	0x5caa, 0x80,
-	0x5cab, 0x80,
-	0x5cac, 0x80,
-	0x5cad, 0x80,
-	0x5cae, 0x80,
-	0x5caf, 0x80,
-	0x5cb0, 0x80,
-	0x5cb1, 0x80,
-	0x5cb2, 0x80,
-	0x5cb3, 0x80,
-	0x5cb4, 0x80,
-	0x5cb5, 0x80,
-	0x5cb6, 0x80,
-	0x5cb7, 0x80,
-	0x5cb8, 0x80,
-	0x5cb9, 0x80,
-	0x5cba, 0x80,
-	0x5cbb, 0x80,
-	0x5cbc, 0x80,
-	0x5cbd, 0x80,
-	0x5cbe, 0x80,
-	0x5cbf, 0x80,
-	0x5cc0, 0x80,
-	0x5cc1, 0x80,
-	0x5cc2, 0x80,
-	0x5cc3, 0x80,
-	0x5cc4, 0x80,
-	0x5cc5, 0x80,
-	0x5cc6, 0x80,
-	0x5cc7, 0x80,
-	0x5cc8, 0x80,
-	0x5cc9, 0x80,
-	0x5cca, 0x80,
-	0x5ccb, 0x80,
-	0x5ccc, 0x80,
-	0x5ccd, 0x80,
-	0x5cce, 0x80,
-	0x5ccf, 0x80,
-	0x5cd0, 0x80,
-	0x5cd1, 0x80,
-	0x5cd2, 0x80,
-	0x5cd3, 0x80,
-	0x5cd4, 0x80,
-	0x5cd5, 0x80,
-	0x5cd6, 0x80,
-	0x5cd7, 0x80,
-	0x5cd8, 0x80,
-	0x5cd9, 0x80,
-	0x5cda, 0x80,
-	0x5cdb, 0x80,
-	0x5cdc, 0x80,
-	0x5cdd, 0x80,
-	0x5cde, 0x80,
-	0x5cdf, 0x80,
-	0x5ce0, 0x80,
-	0x5ce1, 0x80,
-	0x5ce2, 0x80,
-	0x5ce3, 0x80,
-	0x5ce4, 0x80,
-	0x5ce5, 0x80,
-	0x5ce6, 0x80,
-	0x5ce7, 0x80,
-	0x5ce8, 0x80,
-	0x5ce9, 0x80,
-	0x5cea, 0x80,
-	0x5ceb, 0x80,
-	0x5cec, 0x80,
-	0x5ced, 0x80,
-	0x5cee, 0x80,
-	0x5cef, 0x80,
-	0x5cf0, 0x80,
-	0x5cf1, 0x80,
-	0x5cf2, 0x80,
-	0x5cf3, 0x80,
-	0x5cf4, 0x80,
-	0x5cf5, 0x80,
-	0x5cf6, 0x80,
-	0x5cf7, 0x80,
-	0x5cf8, 0x80,
-	0x5cf9, 0x80,
-	0x5cfa, 0x80,
-	0x5cfb, 0x80,
-	0x5cfc, 0x80,
-	0x5cfd, 0x80,
-	0x5cfe, 0x80,
-	0x5cff, 0x80,
-	0x5d00, 0x80,
-	0x5d01, 0x80,
-	0x5d02, 0x80,
-	0x5d03, 0x80,
-	0x5d04, 0x80,
-	0x5d05, 0x80,
-	0x5d06, 0x80,
-	0x5d07, 0x80,
-	0x5d08, 0x80,
-	0x5d09, 0x80,
-	0x5d0a, 0x80,
-	0x5d0b, 0x80,
-	0x5d0c, 0x80,
-	0x5d0d, 0x80,
-	0x5d0e, 0x80,
-	0x5d0f, 0x80,
-	0x5d10, 0x80,
-	0x5d11, 0x80,
-	0x5d12, 0x80,
-	0x5d13, 0x80,
-	0x5d14, 0x80,
-	0x5d15, 0x80,
-	0x5d16, 0x80,
-	0x5d17, 0x80,
-	0x5d18, 0x80,
-	0x5d19, 0x80,
-	0x5d1a, 0x80,
-	0x5d1b, 0x80,
-	0x5d1c, 0x80,
-	0x5d1d, 0x80,
-	0x5d1e, 0x80,
-	0x5d1f, 0x80,
-	0x5d20, 0x80,
-	0x5d21, 0x80,
-	0x5d22, 0x80,
-	0x5d23, 0x80,
-	0x5d24, 0x80,
-	0x5d25, 0x80,
-	0x5d26, 0x80,
-	0x5d27, 0x80,
-	0x5d28, 0x80,
-	0x5d29, 0x80,
-	0x5d2a, 0x80,
-	0x5d2b, 0x80,
-	0x5d2c, 0x80,
-	0x5d2d, 0x80,
-	0x5d2e, 0x80,
-	0x5d2f, 0x80,
-	0x5d30, 0x80,
-	0x5d31, 0x80,
-	0x5d32, 0x80,
-	0x5d33, 0x80,
-	0x5d34, 0x80,
-	0x5d35, 0x80,
-	0x5d36, 0x80,
-	0x5d37, 0x80,
-	0x5d38, 0x80,
-	0x5d39, 0x80,
-	0x5d3a, 0x80,
-	0x5d3b, 0x80,
-	0x5d3c, 0x80,
-	0x5d3d, 0x80,
-	0x5d3e, 0x80,
-	0x5d3f, 0x80,
-	0x5d40, 0x80,
-	0x5d41, 0x80,
-	0x5d42, 0x80,
-	0x5d43, 0x80,
-	0x5d44, 0x80,
-	0x5d45, 0x80,
-	0x5d46, 0x80,
-	0x5d47, 0x80,
-	0x5d48, 0x80,
-	0x5d49, 0x80,
-	0x5d4a, 0x80,
-	0x5d4b, 0x80,
-	0x5d4c, 0x80,
-	0x5d4d, 0x80,
-	0x5d4e, 0x80,
-	0x5d4f, 0x80,
-	0x5d50, 0x80,
-	0x5d51, 0x80,
-	0x5d52, 0x80,
-	0x5d53, 0x80,
-	0x5d54, 0x80,
-	0x5d55, 0x80,
-	0x5d56, 0x80,
-	0x5d57, 0x80,
-	0x5d58, 0x80,
-	0x5d59, 0x80,
-	0x5d5a, 0x80,
-	0x5d5b, 0x80,
-	0x5d5c, 0x80,
-	0x5d5d, 0x80,
-	0x5d5e, 0x80,
-	0x5d5f, 0x80,
-	0x5d60, 0x80,
-	0x5d61, 0x80,
-	0x5d62, 0x80,
-	0x5d63, 0x80,
-	0x5d64, 0x80,
-	0x5d65, 0x80,
-	0x5d66, 0x80,
-	0x5d67, 0x80,
-	0x5d68, 0x80,
-	0x5d69, 0x80,
-	0x5d6a, 0x80,
-	0x5d6b, 0x80,
-	0x5d6c, 0x80,
-	0x5d6d, 0x80,
-	0x5d6e, 0x80,
-	0x5d6f, 0x80,
-	0x5d70, 0x80,
-	0x5d71, 0x80,
-	0x5d72, 0x80,
-	0x5d73, 0x80,
-	0x5d74, 0x80,
-	0x5d75, 0x80,
-	0x5d76, 0x80,
-	0x5d77, 0x80,
-	0x5d78, 0x80,
-	0x5d79, 0x80,
-	0x5d7a, 0x80,
-	0x5d7b, 0x80,
-	0x5d7c, 0x80,
-	0x5d7d, 0x80,
-	0x5d7e, 0x80,
-	0x5d7f, 0x80,
-	0x5d80, 0x80,
-	0x5d81, 0x80,
-	0x5d82, 0x80,
-	0x5d83, 0x80,
-	0x5d84, 0x80,
-	0x5d85, 0x80,
-	0x5d86, 0x80,
-	0x5d87, 0x80,
-	0x5d88, 0x80,
-	0x5d89, 0x80,
-	0x5d8a, 0x80,
-	0x5d8b, 0x80,
-	0x5d8c, 0x80,
-	0x5d8d, 0x80,
-	0x5d8e, 0x80,
-	0x5d8f, 0x80,
-	0x5d90, 0x80,
-	0x5d91, 0x80,
-	0x5d92, 0x80,
-	0x5d93, 0x80,
-	0x5d94, 0x80,
-	0x5d95, 0x80,
-	0x5d96, 0x80,
-	0x5d97, 0x80,
-	0x5d98, 0x80,
-	0x5d99, 0x80,
-	0x5d9a, 0x80,
-	0x5d9b, 0x80,
-	0x5d9c, 0x80,
-	0x5d9d, 0x80,
-	0x5d9e, 0x80,
-	0x5d9f, 0x80,
-	0x5da0, 0x80,
-	0x5da1, 0x80,
-	0x5da2, 0x80,
-	0x5da3, 0x80,
-	0x5da4, 0x80,
-	0x5da5, 0x80,
-	0x5da6, 0x80,
-	0x5da7, 0x80,
-	0x5da8, 0x80,
-	0x5da9, 0x80,
-	0x5daa, 0x80,
-	0x5dab, 0x80,
-	0x5dac, 0x80,
-	0x5dad, 0x80,
-	0x5dae, 0x80,
-	0x5daf, 0x80,
-	0x5db0, 0x80,
-	0x5db1, 0x80,
-	0x5db2, 0x80,
-	0x5db3, 0x80,
-	0x5db4, 0x80,
-	0x5db5, 0x80,
-	0x5db6, 0x80,
-	0x5db7, 0x80,
-	0x5db8, 0x80,
-	0x5db9, 0x80,
-	0x5dba, 0x80,
-	0x5dbb, 0x80,
-	0x5dbc, 0x80,
-	0x5dbd, 0x80,
-	0x5dbe, 0x80,
-	0x5dbf, 0x80,
-	0x5dc0, 0x80,
-	0x5dc1, 0x80,
-	0x5dc2, 0x80,
-	0x5dc3, 0x80,
-	0x5dc4, 0x80,
-	0x5dc5, 0x80,
-	0x5dc6, 0x80,
-	0x5dc7, 0x80,
-	0x5dc8, 0x80,
-	0x5dc9, 0x80,
-	0x5dca, 0x80,
-	0x5dcb, 0x80,
-	0x5dcc, 0x80,
-	0x5dcd, 0x80,
-	0x5dce, 0x80,
-	0x5dcf, 0x80,
-	0x5dd0, 0x80,
-	0x5dd1, 0x80,
-	0x5dd2, 0x80,
-	0x5dd3, 0x80,
-	0x5dd4, 0x80,
-	0x5dd5, 0x80,
-	0x5dd6, 0x80,
-	0x5dd7, 0x80,
-	0x5dd8, 0x80,
-	0x5dd9, 0x80,
-	0x5dda, 0x80,
-	0x5ddb, 0x80,
-	0x5ddc, 0x80,
-	0x5ddd, 0x80,
-	0x5dde, 0x80,
-	0x5ddf, 0x80,
-	0x5de0, 0x80,
-	0x5de1, 0x80,
-	0x5de2, 0x80,
-	0x5de3, 0x80,
-	0x5de4, 0x80,
-	0x5de5, 0x80,
-	0x5de6, 0x80,
-	0x5de7, 0x80,
-	0x5de8, 0x80,
-	0x5de9, 0x80,
-	0x5dea, 0x80,
-	0x5deb, 0x80,
-	0x5dec, 0x80,
-	0x5ded, 0x80,
-	0x5dee, 0x80,
-	0x5def, 0x80,
-	0x5df0, 0x80,
-	0x5df1, 0x80,
-	0x5df2, 0x80,
-	0x5df3, 0x80,
-	0x5df4, 0x80,
-	0x5df5, 0x80,
-	0x5df6, 0x80,
-	0x5df7, 0x80,
-	0x5df8, 0x80,
-	0x5df9, 0x80,
-	0x5dfa, 0x80,
-	0x5dfb, 0x80,
-	0x5dfc, 0x80,
-	0x5dfd, 0x80,
-	0x5dfe, 0x80,
-	0x5dff, 0x80,
-	0x5e00, 0x80,
-	0x5e01, 0x80,
-	0x5e02, 0x80,
-	0x5e03, 0x80,
-	0x5e04, 0x80,
-	0x5e05, 0x80,
-	0x5e06, 0x80,
-	0x5e07, 0x80,
-	0x5e08, 0x80,
-	0x5e09, 0x80,
-	0x5e0a, 0x80,
-	0x5e0b, 0x80,
-	0x5e0c, 0x80,
-	0x5e0d, 0x80,
-	0x5e0e, 0x80,
-	0x5e0f, 0x80,
-	0x5e10, 0x80,
-	0x5e11, 0x80,
-	0x5e12, 0x80,
-	0x5e13, 0x80,
-	0x5e14, 0x80,
-	0x5e15, 0x80,
-	0x5e16, 0x80,
-	0x5e17, 0x80,
-	0x5e18, 0x80,
-	0x5e19, 0x80,
-	0x5e1a, 0x80,
-	0x5e1b, 0x80,
-	0x5e1c, 0x80,
-	0x5e1d, 0x80,
-	0x5e1e, 0x80,
-	0x5e1f, 0x80,
-	0x5e20, 0x80,
-	0x5e21, 0x80,
-	0x5e22, 0x80,
-	0x5e23, 0x80,
-	0x5e24, 0x80,
-	0x5e25, 0x80,
-	0x5e26, 0x80,
-	0x5e27, 0x80,
-	0x5e28, 0x80,
-	0x5e29, 0x80,
-	0x5e2a, 0x80,
-	0x5e2b, 0x80,
-	0x5e2c, 0x80,
-	0x5e2d, 0x80,
-	0x5e2e, 0x80,
-	0x5e2f, 0x80,
-	0x5e30, 0x80,
-	0x5e31, 0x80,
-	0x5e32, 0x80,
-	0x5e33, 0x80,
-	0x5e34, 0x80,
-	0x5e35, 0x80,
-	0x5e36, 0x80,
-	0x5e37, 0x80,
-	0x5e38, 0x80,
-	0x5e39, 0x80,
-	0x5e3a, 0x80,
-	0x5e3b, 0x80,
-	0x5e3c, 0x80,
-	0x5e3d, 0x80,
-	0x5e3e, 0x80,
-	0x5e3f, 0x80,
-	0x5e40, 0x80,
-	0x5e41, 0x80,
-	0x5e42, 0x80,
-	0x5e43, 0x80,
-	0x5e44, 0x80,
-	0x5e45, 0x80,
-	0x5e46, 0x80,
-	0x5e47, 0x80,
-	0x5e48, 0x80,
-	0x5e49, 0x80,
-	0x5e4a, 0x80,
-	0x5e4b, 0x80,
-	0x5e4c, 0x80,
-	0x5e4d, 0x80,
-	0x5e4e, 0x80,
-	0x5e4f, 0x80,
-	0x5e50, 0x80,
-	0x5e51, 0x80,
-	0x5e52, 0x80,
-	0x5e53, 0x80,
-	0x5e54, 0x80,
-	0x5e55, 0x80,
-	0x5e56, 0x80,
-	0x5e57, 0x80,
-	0x5e58, 0x80,
-	0x5e59, 0x80,
-	0x5e5a, 0x80,
-	0x5e5b, 0x80,
-	0x5e5c, 0x80,
-	0x5e5d, 0x80,
-	0x5e5e, 0x80,
-	0x5e5f, 0x80,
-	0x5e60, 0x80,
-	0x5e61, 0x80,
-	0x5e62, 0x80,
-	0x5e63, 0x80,
-	0x5e64, 0x80,
-	0x5e65, 0x80,
-	0x5e66, 0x80,
-	0x5e67, 0x80,
-	0x5e68, 0x80,
-	0x5e69, 0x80,
-	0x5e6a, 0x80,
-	0x5e6b, 0x80,
-	0x5e6c, 0x80,
-	0x5e6d, 0x80,
-	0x5e6e, 0x80,
-	0x5e6f, 0x80,
-	0x5e70, 0x80,
-	0x5e71, 0x80,
-	0x5e72, 0x80,
-	0x5e73, 0x80,
-	0x5e74, 0x80,
-	0x5e75, 0x80,
-	0x5e76, 0x80,
-	0x5e77, 0x80,
-	0x5e78, 0x80,
-	0x5e79, 0x80,
-	0x5e7a, 0x80,
-	0x5e7b, 0x80,
-	0x5e7c, 0x80,
-	0x5e7d, 0x80,
-	0x5e7e, 0x80,
-	0x5e7f, 0x80,
-	0x5e80, 0x80,
-	0x5e81, 0x80,
-	0x5e82, 0x80,
-	0x5e83, 0x80,
-	0x5e84, 0x80,
-	0x5e85, 0x80,
-	0x5e86, 0x80,
-	0x5e87, 0x80,
-	0x5e88, 0x80,
-	0x5e89, 0x80,
-	0x5e8a, 0x80,
-	0x5e8b, 0x80,
-	0x5e8c, 0x80,
-	0x5e8d, 0x80,
-	0x5e8e, 0x80,
-	0x5e8f, 0x80,
-	0x5e90, 0x80,
-	0x5e91, 0x80,
-	0x5e92, 0x80,
-	0x5e93, 0x80,
-	0x5e94, 0x80,
-	0x5e95, 0x80,
-	0x5e96, 0x80,
-	0x5e97, 0x80,
-	0x5e98, 0x80,
-	0x5e99, 0x80,
-	0x5e9a, 0x80,
-	0x5e9b, 0x80,
-	0x5e9c, 0x80,
-	0x5e9d, 0x80,
-	0x5e9e, 0x80,
-	0x5e9f, 0x80,
-	0x5ea0, 0x80,
-	0x5ea1, 0x80,
-	0x5ea2, 0x80,
-	0x5ea3, 0x80,
-	0x5ea4, 0x80,
-	0x5ea5, 0x80,
-	0x5ea6, 0x80,
-	0x5ea7, 0x80,
-	0x5ea8, 0x80,
-	0x5ea9, 0x80,
-	0x5eaa, 0x80,
-	0x5eab, 0x80,
-	0x5eac, 0x80,
-	0x5ead, 0x80,
-	0x5eae, 0x80,
-	0x5eaf, 0x80,
-	0x5eb0, 0x80,
-	0x5eb1, 0x80,
-	0x5eb2, 0x80,
-	0x5eb3, 0x80,
-	0x5eb4, 0x80,
-	0x5eb5, 0x80,
-	0x5eb6, 0x80,
-	0x5eb7, 0x80,
-	0x5eb8, 0x80,
-	0x5eb9, 0x80,
-	0x5eba, 0x80,
-	0x5ebb, 0x80,
-	0x5ebc, 0x80,
-	0x5ebd, 0x80,
-	0x5ebe, 0x80,
-	0x5ebf, 0x80,
-	0x5ec0, 0x80,
-	0x5ec1, 0x80,
-	0x5ec2, 0x80,
-	0x5ec3, 0x80,
-	0x5ec4, 0x80,
-	0x5ec5, 0x80,
-	0x5ec6, 0x80,
-	0x5ec7, 0x80,
-	0x5ec8, 0x80,
-	0x5ec9, 0x80,
-	0x5eca, 0x80,
-	0x5ecb, 0x80,
-	0x5ecc, 0x80,
-	0x5ecd, 0x80,
-	0x5ece, 0x80,
-	0x5ecf, 0x80,
-	0x5ed0, 0x80,
-	0x5ed1, 0x80,
-	0x5ed2, 0x80,
-	0x5ed3, 0x80,
-	0x5ed4, 0x80,
-	0x5ed5, 0x80,
-	0x5ed6, 0x80,
-	0x5ed7, 0x80,
-	0x5ed8, 0x80,
-	0x5ed9, 0x80,
-	0x5eda, 0x80,
-	0x5edb, 0x80,
-	0x5edc, 0x80,
-	0x5edd, 0x80,
-	0x5ede, 0x80,
-	0x5edf, 0x80,
-	0x5ee0, 0x80,
-	0x5ee1, 0x80,
-	0x5ee2, 0x80,
-	0x5ee3, 0x80,
-	0x5ee4, 0x80,
-	0x5ee5, 0x80,
-	0x5ee6, 0x80,
-	0x5ee7, 0x80,
-	0x5ee8, 0x80,
-	0x5ee9, 0x80,
-	0x5eea, 0x80,
-	0x5eeb, 0x80,
-	0x5eec, 0x80,
-	0x5eed, 0x80,
-	0x5eee, 0x80,
-	0x5eef, 0x80,
-	0x5ef0, 0x80,
-	0x5ef1, 0x80,
-	0x5ef2, 0x80,
-	0x5ef3, 0x80,
-	0x5ef4, 0x80,
-	0x5ef5, 0x80,
-	0x5ef6, 0x80,
-	0x5ef7, 0x80,
-	0x5ef8, 0x80,
-	0x5ef9, 0x80,
-	0x5efa, 0x80,
-	0x5efb, 0x80,
-	0x5efc, 0x80,
-	0x5efd, 0x80,
-	0x5efe, 0x80,
-	0x5eff, 0x80,
-	0x5f00, 0x80,
-	0x5f01, 0x80,
-	0x5f02, 0x80,
-	0x5f03, 0x80,
-	0x5f04, 0x80,
-	0x5f05, 0x80,
-	0x5f06, 0x80,
-	0x5f07, 0x80,
-	0x5f08, 0x80,
-	0x5f09, 0x80,
-	0x5f0a, 0x80,
-	0x5f0b, 0x80,
-	0x5f0c, 0x80,
-	0x5f0d, 0x80,
-	0x5f0e, 0x80,
-	0x5f0f, 0x80,
-	0x5f10, 0x80,
-	0x5f11, 0x80,
-	0x5f12, 0x80,
-	0x5f13, 0x80,
-	0x5f14, 0x80,
-	0x5f15, 0x80,
-	0x5f16, 0x80,
-	0x5f17, 0x80,
-	0x5f18, 0x80,
-	0x5f19, 0x80,
-	0x5f1a, 0x80,
-	0x5f1b, 0x80,
-	0x5f1c, 0x80,
-	0x5f1d, 0x80,
-	0x5f1e, 0x80,
-	0x5f1f, 0x80,
-	0x5f20, 0x80,
-	0x5f21, 0x80,
-	0x5f22, 0x80,
-	0x5f23, 0x80,
-	0x5f24, 0x80,
-	0x5f25, 0x80,
-	0x5f26, 0x80,
-	0x5f27, 0x80,
-	0x5f28, 0x80,
-	0x5f29, 0x80,
-	0x5f2a, 0x80,
-	0x5f2b, 0x80,
-	0x5f2c, 0x80,
-	0x5f2d, 0x80,
-	0x5f2e, 0x80,
-	0x5f2f, 0x80,
-	0x5f30, 0x80,
-	0x5f31, 0x80,
-	0x5f32, 0x80,
-	0x5f33, 0x80,
-	0x5f34, 0x80,
-	0x5f35, 0x80,
-	0x5f36, 0x80,
-	0x5f37, 0x80,
-	0x5f38, 0x80,
-	0x5f39, 0x80,
-	0x5f3a, 0x80,
-	0x5f3b, 0x80,
-	0x5f3c, 0x80,
-	0x5f3d, 0x80,
-	0x5f3e, 0x80,
-	0x5f3f, 0x80,
-	0x5f40, 0x80,
-	0x5f41, 0x80,
-	0x5f42, 0x80,
-	0x5f43, 0x80,
-	0x5f44, 0x80,
-	0x5f45, 0x80,
-	0x5f46, 0x80,
-	0x5f47, 0x80,
-	0x5f48, 0x80,
-	0x5f49, 0x80,
-	0x5f4a, 0x80,
-	0x5f4b, 0x80,
-	0x5f4c, 0x80,
-	0x5f4d, 0x80,
-	0x5f4e, 0x80,
-	0x5f4f, 0x80,
-	0x5f50, 0x80,
-	0x5f51, 0x80,
-	0x5f52, 0x80,
-	0x5f53, 0x80,
-	0x5f54, 0x80,
-	0x5f55, 0x80,
-	0x5f56, 0x80,
-	0x5f57, 0x80,
-	0x5f58, 0x80,
-	0x5f59, 0x80,
-	0x5f5a, 0x80,
-	0x5f5b, 0x80,
-	0x5f5c, 0x80,
-	0x5f5d, 0x80,
-	0x5f5e, 0x80,
-	0x5f5f, 0x80,
-	0x5f60, 0x80,
-	0x5f61, 0x80,
-	0x5f62, 0x80,
-	0x5f63, 0x80,
-	0x5f64, 0x80,
-	0x5f65, 0x80,
-	0x5f66, 0x80,
-	0x5f67, 0x80,
-	0x5f68, 0x80,
-	0x5f69, 0x80,
-	0x5f6a, 0x80,
-	0x5f6b, 0x80,
-	0x5f6c, 0x80,
-	0x5f6d, 0x80,
-	0x5f6e, 0x80,
-	0x5f6f, 0x80,
-	0x5f70, 0x80,
-	0x5f71, 0x80,
-	0x5f72, 0x80,
-	0x5f73, 0x80,
-	0x5f74, 0x80,
-	0x5f75, 0x80,
-	0x5f76, 0x80,
-	0x5f77, 0x80,
-	0x5f78, 0x80,
-	0x5f79, 0x80,
-	0x5f7a, 0x80,
-	0x5f7b, 0x80,
-	0x5f7c, 0x80,
-	0x5f7d, 0x80,
-	0x5f7e, 0x80,
-	0x5f7f, 0x80,
-	0x5f80, 0x80,
-	0x5f81, 0x80,
-	0x5f82, 0x80,
-	0x5f83, 0x80,
-	0x5f84, 0x80,
-	0x5f85, 0x80,
-	0x5f86, 0x80,
-	0x5f87, 0x80,
-	0x5f88, 0x80,
-	0x5f89, 0x80,
-	0x5f8a, 0x80,
-	0x5f8b, 0x80,
-	0x5f8c, 0x80,
-	0x5f8d, 0x80,
-	0x5f8e, 0x80,
-	0x5f8f, 0x80,
-	0x5f90, 0x80,
-	0x5f91, 0x80,
-	0x5f92, 0x80,
-	0x5f93, 0x80,
-	0x5f94, 0x80,
-	0x5f95, 0x80,
-	0x5f96, 0x80,
-	0x5f97, 0x80,
-	0x5f98, 0x80,
-	0x5f99, 0x80,
-	0x5f9a, 0x80,
-	0x5f9b, 0x80,
-	0x5f9c, 0x80,
-	0x5f9d, 0x80,
-	0x5f9e, 0x80,
-	0x5f9f, 0x80,
-	0x5fa0, 0x80,
-	0x5fa1, 0x80,
-	0x5fa2, 0x80,
-	0x5fa3, 0x80,
-	0x5fa4, 0x80,
-	0x5fa5, 0x80,
-	0x5fa6, 0x80,
-	0x5fa7, 0x80,
-	0x5fa8, 0x80,
-	0x5fa9, 0x80,
-	0x5faa, 0x80,
-	0x5fab, 0x80,
-	0x5fac, 0x80,
-	0x5fad, 0x80,
-	0x5fae, 0x80,
-	0x5faf, 0x80,
-	0x5fb0, 0x80,
-	0x5fb1, 0x80,
-	0x5fb2, 0x80,
-	0x5fb3, 0x80,
-	0x5fb4, 0x80,
-	0x5fb5, 0x80,
-	0x5fb6, 0x80,
-	0x5fb7, 0x80,
-	0x5fb8, 0x80,
-	0x5fb9, 0x80,
-	0x5fba, 0x80,
-	0x5fbb, 0x80,
-	0x5fbc, 0x80,
-	0x5fbd, 0x80,
-	0x5fbe, 0x80,
-	0x5fbf, 0x80,
-	0x5fc0, 0x80,
-	0x5fc1, 0x80,
-	0x5fc2, 0x80,
-	0x5fc3, 0x80,
-	0x5fc4, 0x80,
-	0x5fc5, 0x80,
-	0x5fc6, 0x80,
-	0x5fc7, 0x80,
-	0x5fc8, 0x80,
-	0x5fc9, 0x80,
-	0x5fca, 0x80,
-	0x5fcb, 0x80,
-	0x5fcc, 0x80,
-	0x5fcd, 0x80,
-	0x5fce, 0x80,
-	0x5fcf, 0x80,
-	0x5fd0, 0x80,
-	0x5fd1, 0x80,
-	0x5fd2, 0x80,
-	0x5fd3, 0x80,
-	0x5fd4, 0x80,
-	0x5fd5, 0x80,
-	0x5fd6, 0x80,
-	0x5fd7, 0x80,
-	0x5fd8, 0x80,
-	0x5fd9, 0x80,
-	0x5fda, 0x80,
-	0x5fdb, 0x80,
-	0x5fdc, 0x80,
-	0x5fdd, 0x80,
-	0x5fde, 0x80,
-	0x5fdf, 0x80,
-	0x5fe0, 0x80,
-	0x5fe1, 0x80,
-	0x5fe2, 0x80,
-	0x5fe3, 0x80,
-	0x5fe4, 0x80,
-	0x5fe5, 0x80,
-	0x5fe6, 0x80,
-	0x5fe7, 0x80,
-	0x5fe8, 0x80,
-	0x5fe9, 0x80,
-	0x5fea, 0x80,
-	0x5feb, 0x80,
-	0x5fec, 0x80,
-	0x5fed, 0x80,
-	0x5fee, 0x80,
-	0x5fef, 0x80,
-	0x5ff0, 0x80,
-	0x5ff1, 0x80,
-	0x5ff2, 0x80,
-	0x5ff3, 0x80,
-	0x5ff4, 0x80,
-	0x5ff5, 0x80,
-	0x5ff6, 0x80,
-	0x5ff7, 0x80,
-	0x5ff8, 0x80,
-	0x5ff9, 0x80,
-	0x5ffa, 0x80,
-	0x5ffb, 0x80,
-	0x5ffc, 0x80,
-	0x5ffd, 0x80,
-	0x5ffe, 0x80,
-	0x5fff, 0x80,
-	0x6000, 0x80,
-	0x6001, 0x80,
-	0x6002, 0x80,
-	0x6003, 0x80,
-	0x6004, 0x80,
-	0x6005, 0x80,
-	0x6006, 0x80,
-	0x6007, 0x80,
-	0x6008, 0x80,
-	0x6009, 0x80,
-	0x600a, 0x80,
-	0x600b, 0x80,
-	0x600c, 0x80,
-	0x600d, 0x80,
-	0x600e, 0x80,
-	0x600f, 0x80,
-	0x6010, 0x80,
-	0x6011, 0x80,
-	0x6012, 0x80,
-	0x6013, 0x80,
-	0x6014, 0x80,
-	0x6015, 0x80,
-	0x6016, 0x80,
-	0x6017, 0x80,
-	0x6018, 0x80,
-	0x6019, 0x80,
-	0x601a, 0x80,
-	0x601b, 0x80,
-	0x601c, 0x80,
-	0x601d, 0x80,
-	0x601e, 0x80,
-	0x601f, 0x80,
-	0x6020, 0x80,
-	0x6021, 0x80,
-	0x6022, 0x80,
-	0x6023, 0x80,
-	0x6024, 0x80,
-	0x6025, 0x80,
-	0x6026, 0x80,
-	0x6027, 0x80,
-	0x6028, 0x80,
-	0x6029, 0x80,
-	0x602a, 0x80,
-	0x602b, 0x80,
-	0x602c, 0x80,
-	0x602d, 0x80,
-	0x602e, 0x80,
-	0x602f, 0x80,
-	0x6030, 0x80,
-	0x6031, 0x80,
-	0x6032, 0x80,
-	0x6033, 0x80,
-	0x6034, 0x80,
-	0x6035, 0x80,
-	0x6036, 0x80,
-	0x6037, 0x80,
-	0x6038, 0x80,
-	0x6039, 0x80,
-	0x603a, 0x80,
-	0x603b, 0x80,
-	0x603c, 0x80,
-	0x603d, 0x80,
-	0x603e, 0x80,
-	0x603f, 0x80,
-	0x6040, 0x80,
-	0x6041, 0x80,
-	0x6042, 0x80,
-	0x6043, 0x80,
-	0x6044, 0x80,
-	0x6045, 0x80,
-	0x6046, 0x80,
-	0x6047, 0x80,
-	0x6048, 0x80,
-	0x6049, 0x80,
-	0x604a, 0x80,
-	0x604b, 0x80,
-	0x604c, 0x80,
-	0x604d, 0x80,
-	0x604e, 0x80,
-	0x604f, 0x80,
-	0x6050, 0x80,
-	0x6051, 0x80,
-	0x6052, 0x80,
-	0x6053, 0x80,
-	0x6054, 0x80,
-	0x6055, 0x80,
-	0x6056, 0x80,
-	0x6057, 0x80,
-	0x6058, 0x80,
-	0x6059, 0x80,
-	0x605a, 0x80,
-	0x605b, 0x80,
-	0x605c, 0x80,
-	0x605d, 0x80,
-	0x605e, 0x80,
-	0x605f, 0x80,
-	0x6060, 0x80,
-	0x6061, 0x80,
-	0x6062, 0x80,
-	0x6063, 0x80,
-	0x6064, 0x80,
-	0x6065, 0x80,
-	0x6066, 0x80,
-	0x6067, 0x80,
-	0x6068, 0x80,
-	0x6069, 0x80,
-	0x606a, 0x80,
-	0x606b, 0x80,
-	0x606c, 0x80,
-	0x606d, 0x80,
-	0x606e, 0x80,
-	0x606f, 0x80,
-	0x6070, 0x80,
-	0x6071, 0x80,
-	0x6072, 0x80,
-	0x6073, 0x80,
-	0x6074, 0x80,
-	0x6075, 0x80,
-	0x6076, 0x80,
-	0x6077, 0x80,
-	0x6078, 0x80,
-	0x6079, 0x80,
-	0x607a, 0x80,
-	0x607b, 0x80,
-	0x607c, 0x80,
-	0x607d, 0x80,
-	0x607e, 0x80,
-	0x607f, 0x80,
-	0x6080, 0x80,
-	0x6081, 0x80,
-	0x6082, 0x80,
-	0x6083, 0x80,
-	0x6084, 0x80,
-	0x6085, 0x80,
-	0x6086, 0x80,
-	0x6087, 0x80,
-	0x6088, 0x80,
-	0x6089, 0x80,
-	0x608a, 0x80,
-	0x608b, 0x80,
-	0x608c, 0x80,
-	0x608d, 0x80,
-	0x608e, 0x80,
-	0x608f, 0x80,
-	0x6090, 0x80,
-	0x6091, 0x80,
-	0x6092, 0x80,
-	0x6093, 0x80,
-	0x6094, 0x80,
-	0x6095, 0x80,
-	0x6096, 0x80,
-	0x6097, 0x80,
-	0x6098, 0x80,
-	0x6099, 0x80,
-	0x609a, 0x80,
-	0x609b, 0x80,
-	0x609c, 0x80,
-	0x609d, 0x80,
-	0x609e, 0x80,
-	0x609f, 0x80,
-	0x60a0, 0x80,
-	0x60a1, 0x80,
-	0x60a2, 0x80,
-	0x60a3, 0x80,
-	0x60a4, 0x80,
-	0x60a5, 0x80,
-	0x60a6, 0x80,
-	0x60a7, 0x80,
-	0x60a8, 0x80,
-	0x60a9, 0x80,
-	0x60aa, 0x80,
-	0x60ab, 0x80,
-	0x60ac, 0x80,
-	0x60ad, 0x80,
-	0x60ae, 0x80,
-	0x60af, 0x80,
-	0x60b0, 0x80,
-	0x60b1, 0x80,
-	0x60b2, 0x80,
-	0x60b3, 0x80,
-	0x60b4, 0x80,
-	0x60b5, 0x80,
-	0x60b6, 0x80,
-	0x60b7, 0x80,
-	0x60b8, 0x80,
-	0x60b9, 0x80,
-	0x60ba, 0x80,
-	0x60bb, 0x80,
-	0x60bc, 0x80,
-	0x60bd, 0x80,
-	0x60be, 0x80,
-	0x60bf, 0x80,
-	0x60c0, 0x80,
-	0x60c1, 0x80,
-	0x60c2, 0x80,
-	0x60c3, 0x80,
-	0x60c4, 0x80,
-	0x60c5, 0x80,
-	0x60c6, 0x80,
-	0x60c7, 0x80,
-	0x60c8, 0x80,
-	0x60c9, 0x80,
-	0x60ca, 0x80,
-	0x60cb, 0x80,
-	0x60cc, 0x80,
-	0x60cd, 0x80,
-	0x60ce, 0x80,
-	0x60cf, 0x80,
-	0x60d0, 0x80,
-	0x60d1, 0x80,
-	0x60d2, 0x80,
-	0x60d3, 0x80,
-	0x60d4, 0x80,
-	0x60d5, 0x80,
-	0x60d6, 0x80,
-	0x60d7, 0x80,
-	0x60d8, 0x80,
-	0x60d9, 0x80,
-	0x60da, 0x80,
-	0x60db, 0x80,
-	0x60dc, 0x80,
-	0x60dd, 0x80,
-	0x60de, 0x80,
-	0x60df, 0x80,
-	0x60e0, 0x80,
-	0x60e1, 0x80,
-	0x60e2, 0x80,
-	0x60e3, 0x80,
-	0x60e4, 0x80,
-	0x60e5, 0x80,
-	0x60e6, 0x80,
-	0x60e7, 0x80,
-	0x60e8, 0x80,
-	0x60e9, 0x80,
-	0x60ea, 0x80,
-	0x60eb, 0x80,
-	0x60ec, 0x80,
-	0x60ed, 0x80,
-	0x60ee, 0x80,
-	0x60ef, 0x80,
-	0x60f0, 0x80,
-	0x60f1, 0x80,
-	0x60f2, 0x80,
-	0x60f3, 0x80,
-	0x60f4, 0x80,
-	0x60f5, 0x80,
-	0x60f6, 0x80,
-	0x60f7, 0x80,
-	0x60f8, 0x80,
-	0x60f9, 0x80,
-	0x60fa, 0x80,
-	0x60fb, 0x80,
-	0x60fc, 0x80,
-	0x60fd, 0x80,
-	0x60fe, 0x80,
-	0x60ff, 0x80,
-	0x6100, 0x80,
-	0x6101, 0x80,
-	0x6102, 0x80,
-	0x6103, 0x80,
-	0x6104, 0x80,
-	0x6105, 0x80,
-	0x6106, 0x80,
-	0x6107, 0x80,
-	0x6108, 0x80,
-	0x6109, 0x80,
-	0x610a, 0x80,
-	0x610b, 0x80,
-	0x610c, 0x80,
-	0x610d, 0x80,
-	0x610e, 0x80,
-	0x610f, 0x80,
-	0x6110, 0x80,
-	0x6111, 0x80,
-	0x6112, 0x80,
-	0x6113, 0x80,
-	0x6114, 0x80,
-	0x6115, 0x80,
-	0x6116, 0x80,
-	0x6117, 0x80,
-	0x6118, 0x80,
-	0x6119, 0x80,
-	0x611a, 0x80,
-	0x611b, 0x80,
-	0x611c, 0x80,
-	0x611d, 0x80,
-	0x611e, 0x80,
-	0x611f, 0x80,
-	0x6120, 0x80,
-	0x6121, 0x80,
-	0x6122, 0x80,
-	0x6123, 0x80,
-	0x6124, 0x80,
-	0x6125, 0x80,
-	0x6126, 0x80,
-	0x6127, 0x80,
-	0x6128, 0x80,
-	0x6129, 0x80,
-	0x612a, 0x80,
-	0x612b, 0x80,
-	0x612c, 0x80,
-	0x612d, 0x80,
-	0x612e, 0x80,
-	0x612f, 0x80,
-	0x6130, 0x80,
-	0x6131, 0x80,
-	0x6132, 0x80,
-	0x6133, 0x80,
-	0x6134, 0x80,
-	0x6135, 0x80,
-	0x6136, 0x80,
-	0x6137, 0x80,
-	0x6138, 0x80,
-	0x6139, 0x80,
-	0x613a, 0x80,
-	0x613b, 0x80,
-	0x613c, 0x80,
-	0x613d, 0x80,
-	0x613e, 0x80,
-	0x613f, 0x80,
-	0x6140, 0x80,
-	0x6141, 0x80,
-	0x6142, 0x80,
-	0x6143, 0x80,
-	0x6144, 0x80,
-	0x6145, 0x80,
-	0x6146, 0x80,
-	0x6147, 0x80,
-	0x6148, 0x80,
-	0x6149, 0x80,
-	0x614a, 0x80,
-	0x614b, 0x80,
-	0x614c, 0x80,
-	0x614d, 0x80,
-	0x614e, 0x80,
-	0x614f, 0x80,
-	0x6150, 0x80,
-	0x6151, 0x80,
-	0x6152, 0x80,
-	0x6153, 0x80,
-	0x6154, 0x80,
-	0x6155, 0x80,
-	0x6156, 0x80,
-	0x6157, 0x80,
-	0x6158, 0x80,
-	0x6159, 0x80,
-	0x615a, 0x80,
-	0x615b, 0x80,
-	0x615c, 0x80,
-	0x615d, 0x80,
-	0x615e, 0x80,
-	0x615f, 0x80,
-	0x6160, 0x80,
-	0x6161, 0x80,
-	0x6162, 0x80,
-	0x6163, 0x80,
-	0x6164, 0x80,
-	0x6165, 0x80,
-	0x6166, 0x80,
-	0x6167, 0x80,
-	0x6168, 0x80,
-	0x6169, 0x80,
-	0x616a, 0x80,
-	0x616b, 0x80,
-	0x616c, 0x80,
-	0x616d, 0x80,
-	0x616e, 0x80,
-	0x616f, 0x80,
-	0x6170, 0x80,
-	0x6171, 0x80,
-	0x6172, 0x80,
-	0x6173, 0x80,
-	0x6174, 0x80,
-	0x6175, 0x80,
-	0x6176, 0x80,
-	0x6177, 0x80,
-	0x6178, 0x80,
-	0x6179, 0x80,
-	0x617a, 0x80,
-	0x617b, 0x80,
-	0x617c, 0x80,
-	0x617d, 0x80,
-	0x617e, 0x80,
-	0x617f, 0x80,
-	0x6180, 0x80,
-	0x6181, 0x80,
-	0x6182, 0x80,
-	0x6183, 0x80,
-	0x6184, 0x80,
-	0x6185, 0x80,
-	0x6186, 0x80,
-	0x6187, 0x80,
-	0x6188, 0x80,
-	0x6189, 0x80,
-	0x618a, 0x80,
-	0x618b, 0x80,
-	0x618c, 0x80,
-	0x618d, 0x80,
-	0x618e, 0x80,
-	0x618f, 0x80,
-	0x6190, 0x80,
-	0x6191, 0x80,
-	0x6192, 0x80,
-	0x6193, 0x80,
-	0x6194, 0x80,
-	0x6195, 0x80,
-	0x6196, 0x80,
-	0x6197, 0x80,
-	0x6198, 0x80,
-	0x6199, 0x80,
-	0x619a, 0x80,
-	0x619b, 0x80,
-	0x619c, 0x80,
-	0x619d, 0x80,
-	0x619e, 0x80,
-	0x619f, 0x80,
-	0x61a0, 0x80,
-	0x61a1, 0x80,
-	0x61a2, 0x80,
-	0x61a3, 0x80,
-	0x61a4, 0x80,
-	0x61a5, 0x80,
-	0x61a6, 0x80,
-	0x61a7, 0x80,
-	0x61a8, 0x80,
-	0x61a9, 0x80,
-	0x61aa, 0x80,
-	0x61ab, 0x80,
-	0x61ac, 0x80,
-	0x61ad, 0x80,
-	0x61ae, 0x80,
-	0x61af, 0x80,
-	0x61b0, 0x80,
-	0x61b1, 0x80,
-	0x61b2, 0x80,
-	0x61b3, 0x80,
-	0x61b4, 0x80,
-	0x61b5, 0x80,
-	0x61b6, 0x80,
-	0x61b7, 0x80,
-	0x61b8, 0x80,
-	0x61b9, 0x80,
-	0x61ba, 0x80,
-	0x61bb, 0x80,
-	0x61bc, 0x80,
-	0x61bd, 0x80,
-	0x61be, 0x80,
-	0x61bf, 0x80,
-	0x61c0, 0x80,
-	0x61c1, 0x80,
-	0x61c2, 0x80,
-	0x61c3, 0x80,
-	0x61c4, 0x80,
-	0x61c5, 0x80,
-	0x61c6, 0x80,
-	0x61c7, 0x80,
-	0x61c8, 0x80,
-	0x61c9, 0x80,
-	0x61ca, 0x80,
-	0x61cb, 0x80,
-	0x61cc, 0x80,
-	0x61cd, 0x80,
-	0x61ce, 0x80,
-	0x61cf, 0x80,
-	0x61d0, 0x80,
-	0x61d1, 0x80,
-	0x61d2, 0x80,
-	0x61d3, 0x80,
-	0x61d4, 0x80,
-	0x61d5, 0x80,
-	0x61d6, 0x80,
-	0x61d7, 0x80,
-	0x61d8, 0x80,
-	0x61d9, 0x80,
-	0x61da, 0x80,
-	0x61db, 0x80,
-	0x61dc, 0x80,
-	0x61dd, 0x80,
-	0x61de, 0x80,
-	0x61df, 0x80,
-	0x61e0, 0x80,
-	0x61e1, 0x80,
-	0x61e2, 0x80,
-	0x61e3, 0x80,
-	0x61e4, 0x80,
-	0x61e5, 0x80,
-	0x61e6, 0x80,
-	0x61e7, 0x80,
-	0x61e8, 0x80,
-	0x61e9, 0x80,
-	0x61ea, 0x80,
-	0x61eb, 0x80,
-	0x61ec, 0x80,
-	0x61ed, 0x80,
-	0x61ee, 0x80,
-	0x61ef, 0x80,
-	0x61f0, 0x80,
-	0x61f1, 0x80,
-	0x61f2, 0x80,
-	0x61f3, 0x80,
-	0x61f4, 0x80,
-	0x61f5, 0x80,
-	0x61f6, 0x80,
-	0x61f7, 0x80,
-	0x61f8, 0x80,
-	0x61f9, 0x80,
-	0x61fa, 0x80,
-	0x61fb, 0x80,
-	0x61fc, 0x80,
-	0x61fd, 0x80,
-	0x61fe, 0x80,
-	0x61ff, 0x80,
-	0x6200, 0x80,
-	0x6201, 0x80,
-	0x6202, 0x80,
-	0x6203, 0x80,
-	0x6204, 0x80,
-	0x6205, 0x80,
-	0x6206, 0x80,
-	0x6207, 0x80,
-	0x6208, 0x80,
-	0x6209, 0x80,
-	0x620a, 0x80,
-	0x620b, 0x80,
-	0x620c, 0x80,
-	0x620d, 0x80,
-	0x620e, 0x80,
-	0x620f, 0x80,
-	0x6210, 0x80,
-	0x6211, 0x80,
-	0x6212, 0x80,
-	0x6213, 0x80,
-	0x6214, 0x80,
-	0x6215, 0x80,
-	0x6216, 0x80,
-	0x6217, 0x80,
-	0x6218, 0x80,
-	0x6219, 0x80,
-	0x621a, 0x80,
-	0x621b, 0x80,
-	0x621c, 0x80,
-	0x621d, 0x80,
-	0x621e, 0x80,
-	0x621f, 0x80,
-	0x6220, 0x80,
-	0x6221, 0x80,
-	0x6222, 0x80,
-	0x6223, 0x80,
-	0x6224, 0x80,
-	0x6225, 0x80,
-	0x6226, 0x80,
-	0x6227, 0x80,
-	0x6228, 0x80,
-	0x6229, 0x80,
-	0x622a, 0x80,
-	0x622b, 0x80,
-	0x622c, 0x80,
-	0x622d, 0x80,
-	0x622e, 0x80,
-	0x622f, 0x80,
-	0x6230, 0x80,
-	0x6231, 0x80,
-	0x6232, 0x80,
-	0x6233, 0x80,
-	0x6234, 0x80,
-	0x6235, 0x80,
-	0x6236, 0x80,
-	0x6237, 0x80,
-	0x6238, 0x80,
-	0x6239, 0x80,
-	0x623a, 0x80,
-	0x623b, 0x80,
-	0x623c, 0x80,
-	0x623d, 0x80,
-	0x623e, 0x80,
-	0x623f, 0x80,
-	0x6240, 0x80,
-	0x6241, 0x80,
-	0x6242, 0x80,
-	0x6243, 0x80,
-	0x6244, 0x80,
-	0x6245, 0x80,
-	0x6246, 0x80,
-	0x6247, 0x80,
-	0x6248, 0x80,
-	0x6249, 0x80,
-	0x624a, 0x80,
-	0x624b, 0x80,
-	0x624c, 0x80,
-	0x624d, 0x80,
-	0x624e, 0x80,
-	0x624f, 0x80,
-	0x6250, 0x80,
-	0x6251, 0x80,
-	0x6252, 0x80,
-	0x6253, 0x80,
-	0x6254, 0x80,
-	0x6255, 0x80,
-	0x6256, 0x80,
-	0x6257, 0x80,
-	0x6258, 0x80,
-	0x6259, 0x80,
-	0x625a, 0x80,
-	0x625b, 0x80,
-	0x625c, 0x80,
-	0x625d, 0x80,
-	0x625e, 0x80,
-	0x625f, 0x80,
-	0x6260, 0x80,
-	0x6261, 0x80,
-	0x6262, 0x80,
-	0x6263, 0x80,
-	0x6264, 0x80,
-	0x6265, 0x80,
-	0x6266, 0x80,
-	0x6267, 0x80,
-	0x6268, 0x80,
-	0x6269, 0x80,
-	0x626a, 0x80,
-	0x626b, 0x80,
-	0x626c, 0x80,
-	0x626d, 0x80,
-	0x626e, 0x80,
-	0x626f, 0x80,
-	0x6270, 0x80,
-	0x6271, 0x80,
-	0x6272, 0x80,
-	0x6273, 0x80,
-	0x6274, 0x80,
-	0x6275, 0x80,
-	0x6276, 0x80,
-	0x6277, 0x80,
-	0x6278, 0x80,
-	0x6279, 0x80,
-	0x627a, 0x80,
-	0x627b, 0x80,
-	0x627c, 0x80,
-	0x627d, 0x80,
-	0x627e, 0x80,
-	0x627f, 0x80,
-	0x6280, 0x80,
-	0x6281, 0x80,
-	0x6282, 0x80,
-	0x6283, 0x80,
-	0x6284, 0x80,
-	0x6285, 0x80,
-	0x6286, 0x80,
-	0x6287, 0x80,
-	0x6288, 0x80,
-	0x6289, 0x80,
-	0x628a, 0x80,
-	0x628b, 0x80,
-	0x628c, 0x80,
-	0x628d, 0x80,
-	0x628e, 0x80,
-	0x628f, 0x80,
-	0x6290, 0x80,
-	0x6291, 0x80,
-	0x6292, 0x80,
-	0x6293, 0x80,
-	0x6294, 0x80,
-	0x6295, 0x80,
-	0x6296, 0x80,
-	0x6297, 0x80,
-	0x6298, 0x80,
-	0x6299, 0x80,
-	0x629a, 0x80,
-	0x629b, 0x80,
-	0x629c, 0x80,
-	0x629d, 0x80,
-	0x629e, 0x80,
-	0x629f, 0x80,
-	0x62a0, 0x80,
-	0x62a1, 0x80,
-	0x62a2, 0x80,
-	0x62a3, 0x80,
-	0x62a4, 0x80,
-	0x62a5, 0x80,
-	0x62a6, 0x80,
-	0x62a7, 0x80,
-	0x62a8, 0x80,
-	0x62a9, 0x80,
-	0x62aa, 0x80,
-	0x62ab, 0x80,
-	0x62ac, 0x80,
-	0x62ad, 0x80,
-	0x62ae, 0x80,
-	0x62af, 0x80,
-	0x62b0, 0x80,
-	0x62b1, 0x80,
-	0x62b2, 0x80,
-	0x62b3, 0x80,
-	0x62b4, 0x80,
-	0x62b5, 0x80,
-	0x62b6, 0x80,
-	0x62b7, 0x80,
-	0x62b8, 0x80,
-	0x62b9, 0x80,
-	0x62ba, 0x80,
-	0x62bb, 0x80,
-	0x62bc, 0x80,
-	0x62bd, 0x80,
-	0x62be, 0x80,
-	0x62bf, 0x80,
-	0x62c0, 0x80,
-	0x62c1, 0x80,
-	0x62c2, 0x80,
-	0x62c3, 0x80,
-	0x62c4, 0x80,
-	0x62c5, 0x80,
-	0x62c6, 0x80,
-	0x62c7, 0x80,
-	0x62c8, 0x80,
-	0x62c9, 0x80,
-	0x62ca, 0x80,
-	0x62cb, 0x80,
-	0x62cc, 0x80,
-	0x62cd, 0x80,
-	0x62ce, 0x80,
-	0x62cf, 0x80,
-	0x62d0, 0x80,
-	0x62d1, 0x80,
-	0x62d2, 0x80,
-	0x62d3, 0x80,
-	0x62d4, 0x80,
-	0x62d5, 0x80,
-	0x62d6, 0x80,
-	0x62d7, 0x80,
-	0x62d8, 0x80,
-	0x62d9, 0x80,
-	0x62da, 0x80,
-	0x62db, 0x80,
-	0x62dc, 0x80,
-	0x62dd, 0x80,
-	0x62de, 0x80,
-	0x62df, 0x80,
-	0x62e0, 0x80,
-	0x62e1, 0x80,
-	0x62e2, 0x80,
-	0x62e3, 0x80,
-	0x62e4, 0x80,
-	0x62e5, 0x80,
-	0x62e6, 0x80,
-	0x62e7, 0x80,
-	0x62e8, 0x80,
-	0x62e9, 0x80,
-	0x62ea, 0x80,
-	0x62eb, 0x80,
-	0x62ec, 0x80,
-	0x62ed, 0x80,
-	0x62ee, 0x80,
-	0x62ef, 0x80,
-	0x62f0, 0x80,
-	0x62f1, 0x80,
-	0x62f2, 0x80,
-	0x62f3, 0x80,
-	0x62f4, 0x80,
-	0x62f5, 0x80,
-	0x62f6, 0x80,
-	0x62f7, 0x80,
-	0x62f8, 0x80,
-	0x62f9, 0x80,
-	0x62fa, 0x80,
-	0x62fb, 0x80,
-	0x62fc, 0x80,
-	0x62fd, 0x80,
-	0x62fe, 0x80,
-	0x62ff, 0x80,
-	0x6300, 0x80,
-	0x6301, 0x80,
-	0x6302, 0x80,
-	0x6303, 0x80,
-	0x6304, 0x80,
-	0x6305, 0x80,
-	0x6306, 0x80,
-	0x6307, 0x80,
-	0x6308, 0x80,
-	0x6309, 0x80,
-	0x630a, 0x80,
-	0x630b, 0x80,
-	0x630c, 0x80,
-	0x630d, 0x80,
-	0x630e, 0x80,
-	0x630f, 0x80,
-	0x6310, 0x80,
-	0x6311, 0x80,
-	0x6312, 0x80,
-	0x6313, 0x80,
-	0x6314, 0x80,
-	0x6315, 0x80,
-	0x6316, 0x80,
-	0x6317, 0x80,
-	0x6318, 0x80,
-	0x6319, 0x80,
-	0x631a, 0x80,
-	0x631b, 0x80,
-	0x631c, 0x80,
-	0x631d, 0x80,
-	0x631e, 0x80,
-	0x631f, 0x80,
-	0x6320, 0x80,
-	0x6321, 0x80,
-	0x6322, 0x80,
-	0x6323, 0x80,
-	0x6324, 0x80,
-	0x6325, 0x80,
-	0x6326, 0x80,
-	0x6327, 0x80,
-	0x6328, 0x80,
-	0x6329, 0x80,
-	0x632a, 0x80,
-	0x632b, 0x80,
-	0x632c, 0x80,
-	0x632d, 0x80,
-	0x632e, 0x80,
-	0x632f, 0x80,
-	0x6330, 0x80,
-	0x6331, 0x80,
-	0x6332, 0x80,
-	0x6333, 0x80,
-	0x6334, 0x80,
-	0x6335, 0x80,
-	0x6336, 0x80,
-	0x6337, 0x80,
-	0x6338, 0x80,
-	0x6339, 0x80,
-	0x633a, 0x80,
-	0x633b, 0x80,
-	0x633c, 0x80,
-	0x633d, 0x80,
-	0x633e, 0x80,
-	0x633f, 0x80,
-	0x6340, 0x80,
-	0x6341, 0x80,
-	0x6342, 0x80,
-	0x6343, 0x80,
-	0x6344, 0x80,
-	0x6345, 0x80,
-	0x6346, 0x80,
-	0x6347, 0x80,
-	0x6348, 0x80,
-	0x6349, 0x80,
-	0x634a, 0x80,
-	0x634b, 0x80,
-	0x634c, 0x80,
-	0x634d, 0x80,
-	0x634e, 0x80,
-	0x634f, 0x80,
-	0x6350, 0x80,
-	0x6351, 0x80,
-	0x6352, 0x80,
-	0x6353, 0x80,
-	0x6354, 0x80,
-	0x6355, 0x80,
-	0x6356, 0x80,
-	0x6357, 0x80,
-	0x6358, 0x80,
-	0x6359, 0x80,
-	0x635a, 0x80,
-	0x635b, 0x80,
-	0x635c, 0x80,
-	0x635d, 0x80,
-	0x635e, 0x80,
-	0x635f, 0x80,
-	0x6360, 0x80,
-	0x6361, 0x80,
-	0x6362, 0x80,
-	0x6363, 0x80,
-	0x6364, 0x80,
-	0x6365, 0x80,
-	0x6366, 0x80,
-	0x6367, 0x80,
-	0x6368, 0x80,
-	0x6369, 0x80,
-	0x636a, 0x80,
-	0x636b, 0x80,
-	0x636c, 0x80,
-	0x636d, 0x80,
-	0x636e, 0x80,
-	0x636f, 0x80,
-	0x6370, 0x80,
-	0x6371, 0x80,
-	0x6372, 0x80,
-	0x6373, 0x80,
-	0x6374, 0x80,
-	0x6375, 0x80,
-	0x6376, 0x80,
-	0x6377, 0x80,
-	0x6378, 0x80,
-	0x6379, 0x80,
-	0x637a, 0x80,
-	0x637b, 0x80,
-	0x637c, 0x80,
-	0x637d, 0x80,
-	0x637e, 0x80,
-	0x637f, 0x80,
-	0x6380, 0x80,
-	0x6381, 0x80,
-	0x6382, 0x80,
-	0x6383, 0x80,
-	0x6384, 0x80,
-	0x6385, 0x80,
-	0x6386, 0x80,
-	0x6387, 0x80,
-	0x6388, 0x80,
-	0x6389, 0x80,
-	0x638a, 0x80,
-	0x638b, 0x80,
-	0x638c, 0x80,
-	0x638d, 0x80,
-	0x638e, 0x80,
-	0x638f, 0x80,
-	0x6390, 0x80,
-	0x6391, 0x80,
-	0x6392, 0x80,
-	0x6393, 0x80,
-	0x6394, 0x80,
-	0x6395, 0x80,
-	0x6396, 0x80,
-	0x6397, 0x80,
-	0x6398, 0x80,
-	0x6399, 0x80,
-	0x639a, 0x80,
-	0x639b, 0x80,
-	0x639c, 0x80,
-	0x639d, 0x80,
-	0x639e, 0x80,
-	0x639f, 0x80,
-	0x63a0, 0x80,
-	0x63a1, 0x80,
-	0x63a2, 0x80,
-	0x63a3, 0x80,
-	0x63a4, 0x80,
-	0x63a5, 0x80,
-	0x63a6, 0x80,
-	0x63a7, 0x80,
-	0x63a8, 0x80,
-	0x63a9, 0x80,
-	0x63aa, 0x80,
-	0x63ab, 0x80,
-	0x63ac, 0x80,
-	0x63ad, 0x80,
-	0x63ae, 0x80,
-	0x63af, 0x80,
-	0x63b0, 0x80,
-	0x63b1, 0x80,
-	0x63b2, 0x80,
-	0x63b3, 0x80,
-	0x63b4, 0x80,
-	0x63b5, 0x80,
-	0x63b6, 0x80,
-	0x63b7, 0x80,
-	0x63b8, 0x80,
-	0x63b9, 0x80,
-	0x63ba, 0x80,
-	0x63bb, 0x80,
-	0x63bc, 0x80,
-	0x63bd, 0x80,
-	0x63be, 0x80,
-	0x63bf, 0x80,
-	0x63c0, 0x80,
-	0x63c1, 0x80,
-	0x63c2, 0x80,
-	0x63c3, 0x80,
-	0x63c4, 0x80,
-	0x63c5, 0x80,
-	0x63c6, 0x80,
-	0x63c7, 0x80,
-	0x63c8, 0x80,
-	0x63c9, 0x80,
-	0x63ca, 0x80,
-	0x63cb, 0x80,
-	0x63cc, 0x80,
-	0x63cd, 0x80,
-	0x63ce, 0x80,
-	0x63cf, 0x80,
-	0x63d0, 0x80,
-	0x63d1, 0x80,
-	0x63d2, 0x80,
-	0x63d3, 0x80,
-	0x63d4, 0x80,
-	0x63d5, 0x80,
-	0x63d6, 0x80,
-	0x63d7, 0x80,
-	0x63d8, 0x80,
-	0x63d9, 0x80,
-	0x63da, 0x80,
-	0x63db, 0x80,
-	0x63dc, 0x80,
-	0x63dd, 0x80,
-	0x63de, 0x80,
-	0x63df, 0x80,
-	0x63e0, 0x80,
-	0x63e1, 0x80,
-	0x63e2, 0x80,
-	0x63e3, 0x80,
-	0x63e4, 0x80,
-	0x63e5, 0x80,
-	0x63e6, 0x80,
-	0x63e7, 0x80,
-	0x63e8, 0x80,
-	0x63e9, 0x80,
-	0x63ea, 0x80,
-	0x63eb, 0x80,
-	0x63ec, 0x80,
-	0x63ed, 0x80,
-	0x63ee, 0x80,
-	0x63ef, 0x80,
-	0x63f0, 0x80,
-	0x63f1, 0x80,
-	0x63f2, 0x80,
-	0x63f3, 0x80,
-	0x63f4, 0x80,
-	0x63f5, 0x80,
-	0x63f6, 0x80,
-	0x63f7, 0x80,
-	0x63f8, 0x80,
-	0x63f9, 0x80,
-	0x63fa, 0x80,
-	0x63fb, 0x80,
-	0x63fc, 0x80,
-	0x63fd, 0x80,
-	0x63fe, 0x80,
-	0x63ff, 0x80,
-	0x6400, 0x80,
-	0x6401, 0x80,
-	0x6402, 0x80,
-	0x6403, 0x80,
-	0x6404, 0x80,
-	0x6405, 0x80,
-	0x6406, 0x80,
-	0x6407, 0x80,
-	0x6408, 0x80,
-	0x6409, 0x80,
-	0x640a, 0x80,
-	0x640b, 0x80,
-	0x640c, 0x80,
-	0x640d, 0x80,
-	0x640e, 0x80,
-	0x640f, 0x80,
-	0x6410, 0x80,
-	0x6411, 0x80,
-	0x6412, 0x80,
-	0x6413, 0x80,
-	0x6414, 0x80,
-	0x6415, 0x80,
-	0x6416, 0x80,
-	0x6417, 0x80,
-	0x6418, 0x80,
-	0x6419, 0x80,
-	0x641a, 0x80,
-	0x641b, 0x80,
-	0x641c, 0x80,
-	0x641d, 0x80,
-	0x641e, 0x80,
-	0x641f, 0x80,
-	0x6420, 0x80,
-	0x6421, 0x80,
-	0x6422, 0x80,
-	0x6423, 0x80,
-	0x6424, 0x80,
-	0x6425, 0x80,
-	0x6426, 0x80,
-	0x6427, 0x80,
-	0x6428, 0x80,
-	0x6429, 0x80,
-	0x642a, 0x80,
-	0x642b, 0x80,
-	0x642c, 0x80,
-	0x642d, 0x80,
-	0x642e, 0x80,
-	0x642f, 0x80,
-	0x6430, 0x80,
-	0x6431, 0x80,
-	0x6432, 0x80,
-	0x6433, 0x80,
-	0x6434, 0x80,
-	0x6435, 0x80,
-	0x6436, 0x80,
-	0x6437, 0x80,
-	0x6438, 0x80,
-	0x6439, 0x80,
-	0x643a, 0x80,
-	0x643b, 0x80,
-	0x643c, 0x80,
-	0x643d, 0x80,
-	0x643e, 0x80,
-	0x643f, 0x80,
-	0x6440, 0x80,
-	0x6441, 0x80,
-	0x6442, 0x80,
-	0x6443, 0x80,
-	0x6444, 0x80,
-	0x6445, 0x80,
-	0x6446, 0x80,
-	0x6447, 0x80,
-	0x6448, 0x80,
-	0x6449, 0x80,
-	0x644a, 0x80,
-	0x644b, 0x80,
-	0x644c, 0x80,
-	0x644d, 0x80,
-	0x644e, 0x80,
-	0x644f, 0x80,
-	0x6450, 0x80,
-	0x6451, 0x80,
-	0x6452, 0x80,
-	0x6453, 0x80,
-	0x6454, 0x80,
-	0x6455, 0x80,
-	0x6456, 0x80,
-	0x6457, 0x80,
-	0x6458, 0x80,
-	0x6459, 0x80,
-	0x645a, 0x80,
-	0x645b, 0x80,
-	0x645c, 0x80,
-	0x645d, 0x80,
-	0x645e, 0x80,
-	0x645f, 0x80,
-	0x6460, 0x80,
-	0x6461, 0x80,
-	0x6462, 0x80,
-	0x6463, 0x80,
-	0x6464, 0x80,
-	0x6465, 0x80,
-	0x6466, 0x80,
-	0x6467, 0x80,
-	0x6468, 0x80,
-	0x6469, 0x80,
-	0x646a, 0x80,
-	0x646b, 0x80,
-	0x646c, 0x80,
-	0x646d, 0x80,
-	0x646e, 0x80,
-	0x646f, 0x80,
-	0x6470, 0x80,
-	0x6471, 0x80,
-	0x6472, 0x80,
-	0x6473, 0x80,
-	0x6474, 0x80,
-	0x6475, 0x80,
-	0x6476, 0x80,
-	0x6477, 0x80,
-	0x6478, 0x80,
-	0x6479, 0x80,
-	0x647a, 0x80,
-	0x647b, 0x80,
-	0x647c, 0x80,
-	0x647d, 0x80,
-	0x647e, 0x80,
-	0x647f, 0x80,
-	0x6480, 0x80,
-	0x6481, 0x80,
-	0x6482, 0x80,
-	0x6483, 0x80,
-	0x6484, 0x80,
-	0x6485, 0x80,
-	0x6486, 0x80,
-	0x6487, 0x80,
-	0x6488, 0x80,
-	0x6489, 0x80,
-	0x648a, 0x80,
-	0x648b, 0x80,
-	0x648c, 0x80,
-	0x648d, 0x80,
-	0x648e, 0x80,
-	0x648f, 0x80,
-	0x6490, 0x80,
-	0x6491, 0x80,
-	0x6492, 0x80,
-	0x6493, 0x80,
-	0x6494, 0x80,
-	0x6495, 0x80,
-	0x6496, 0x80,
-	0x6497, 0x80,
-	0x6498, 0x80,
-	0x6499, 0x80,
-	0x649a, 0x80,
-	0x649b, 0x80,
-	0x649c, 0x80,
-	0x649d, 0x80,
-	0x649e, 0x80,
-	0x649f, 0x80,
-	0x64a0, 0x80,
-	0x64a1, 0x80,
-	0x64a2, 0x80,
-	0x64a3, 0x80,
-	0x64a4, 0x80,
-	0x64a5, 0x80,
-	0x64a6, 0x80,
-	0x64a7, 0x80,
-	0x64a8, 0x80,
-	0x64a9, 0x80,
-	0x64aa, 0x80,
-	0x64ab, 0x80,
-	0x64ac, 0x80,
-	0x64ad, 0x80,
-	0x64ae, 0x80,
-	0x64af, 0x80,
-	0x64b0, 0x80,
-	0x64b1, 0x80,
-	0x64b2, 0x80,
-	0x64b3, 0x80,
-	0x64b4, 0x80,
-	0x64b5, 0x80,
-	0x64b6, 0x80,
-	0x64b7, 0x80,
-	0x64b8, 0x80,
-	0x64b9, 0x80,
-	0x64ba, 0x80,
-	0x64bb, 0x80,
-	0x64bc, 0x80,
-	0x64bd, 0x80,
-	0x64be, 0x80,
-	0x64bf, 0x80,
-	0x64c0, 0x80,
-	0x64c1, 0x80,
-	0x64c2, 0x80,
-	0x64c3, 0x80,
-	0x64c4, 0x80,
-	0x64c5, 0x80,
-	0x64c6, 0x80,
-	0x64c7, 0x80,
-	0x64c8, 0x80,
-	0x64c9, 0x80,
-	0x64ca, 0x80,
-	0x64cb, 0x80,
-	0x64cc, 0x80,
-	0x64cd, 0x80,
-	0x64ce, 0x80,
-	0x64cf, 0x80,
-	0x64d0, 0x80,
-	0x64d1, 0x80,
-	0x64d2, 0x80,
-	0x64d3, 0x80,
-	0x64d4, 0x80,
-	0x64d5, 0x80,
-	0x64d6, 0x80,
-	0x64d7, 0x80,
-	0x64d8, 0x80,
-	0x64d9, 0x80,
-	0x64da, 0x80,
-	0x64db, 0x80,
-	0x64dc, 0x80,
-	0x64dd, 0x80,
-	0x64de, 0x80,
-	0x64df, 0x80,
-	0x64e0, 0x80,
-	0x64e1, 0x80,
-	0x64e2, 0x80,
-	0x64e3, 0x80,
-	0x64e4, 0x80,
-	0x64e5, 0x80,
-	0x64e6, 0x80,
-	0x64e7, 0x80,
-	0x64e8, 0x80,
-	0x64e9, 0x80,
-	0x64ea, 0x80,
-	0x64eb, 0x80,
-	0x64ec, 0x80,
-	0x64ed, 0x80,
-	0x64ee, 0x80,
-	0x64ef, 0x80,
-	0x64f0, 0x80,
-	0x64f1, 0x80,
-	0x64f2, 0x80,
-	0x64f3, 0x80,
-	0x64f4, 0x80,
-	0x64f5, 0x80,
-	0x64f6, 0x80,
-	0x64f7, 0x80,
-	0x64f8, 0x80,
-	0x64f9, 0x80,
-	0x64fa, 0x80,
-	0x64fb, 0x80,
-	0x64fc, 0x80,
-	0x64fd, 0x80,
-	0x64fe, 0x80,
-	0x64ff, 0x80,
-	0x6500, 0x80,
-	0x6501, 0x80,
-	0x6502, 0x80,
-	0x6503, 0x80,
-	0x6504, 0x80,
-	0x6505, 0x80,
-	0x6506, 0x80,
-	0x6507, 0x80,
-	0x6508, 0x80,
-	0x6509, 0x80,
-	0x650a, 0x80,
-	0x650b, 0x80,
-	0x650c, 0x80,
-	0x650d, 0x80,
-	0x650e, 0x80,
-	0x650f, 0x80,
-	0x6510, 0x80,
-	0x6511, 0x80,
-	0x6512, 0x80,
-	0x6513, 0x80,
-	0x6514, 0x80,
-	0x6515, 0x80,
-	0x6516, 0x80,
-	0x6517, 0x80,
-	0x6518, 0x80,
-	0x6519, 0x80,
-	0x651a, 0x80,
-	0x651b, 0x80,
-	0x651c, 0x80,
-	0x651d, 0x80,
-	0x651e, 0x80,
-	0x651f, 0x80,
-	0x6520, 0x80,
-	0x6521, 0x80,
-	0x6522, 0x80,
-	0x6523, 0x80,
-	0x6524, 0x80,
-	0x6525, 0x80,
-	0x6526, 0x80,
-	0x6527, 0x80,
-	0x6528, 0x80,
-	0x6529, 0x80,
-	0x652a, 0x80,
-	0x652b, 0x80,
-	0x652c, 0x80,
-	0x652d, 0x80,
-	0x652e, 0x80,
-	0x652f, 0x80,
-	0x6530, 0x80,
-	0x6531, 0x80,
-	0x6532, 0x80,
-	0x6533, 0x80,
-	0x6534, 0x80,
-	0x6535, 0x80,
-	0x6536, 0x80,
-	0x6537, 0x80,
-	0x6538, 0x80,
-	0x6539, 0x80,
-	0x653a, 0x80,
-	0x653b, 0x80,
-	0x653c, 0x80,
-	0x653d, 0x80,
-	0x653e, 0x80,
-	0x653f, 0x80,
-	0x6540, 0x80,
-	0x6541, 0x80,
-	0x6542, 0x80,
-	0x6543, 0x80,
-	0x6544, 0x80,
-	0x6545, 0x80,
-	0x6546, 0x80,
-	0x6547, 0x80,
-	0x6548, 0x80,
-	0x6549, 0x80,
-	0x654a, 0x80,
-	0x654b, 0x80,
-	0x654c, 0x80,
-	0x654d, 0x80,
-	0x654e, 0x80,
-	0x654f, 0x80,
-	0x6550, 0x80,
-	0x6551, 0x80,
-	0x6552, 0x80,
-	0x6553, 0x80,
-	0x6554, 0x80,
-	0x6555, 0x80,
-	0x6556, 0x80,
-	0x6557, 0x80,
-	0x6558, 0x80,
-	0x6559, 0x80,
-	0x655a, 0x80,
-	0x655b, 0x80,
-	0x655c, 0x80,
-	0x655d, 0x80,
-	0x655e, 0x80,
-	0x655f, 0x80,
-	0x6560, 0x80,
-	0x6561, 0x80,
-	0x6562, 0x80,
-	0x6563, 0x80,
-	0x6564, 0x80,
-	0x6565, 0x80,
-	0x6566, 0x80,
-	0x6567, 0x80,
-	0x6568, 0x80,
-	0x6569, 0x80,
-	0x656a, 0x80,
-	0x656b, 0x80,
-	0x656c, 0x80,
-	0x656d, 0x80,
-	0x656e, 0x80,
-	0x656f, 0x80,
-	0x6570, 0x80,
-	0x6571, 0x80,
-	0x6572, 0x80,
-	0x6573, 0x80,
-	0x6574, 0x80,
-	0x6575, 0x80,
-	0x6576, 0x80,
-	0x6577, 0x80,
-	0x6578, 0x80,
-	0x6579, 0x80,
-	0x657a, 0x80,
-	0x657b, 0x80,
-	0x657c, 0x80,
-	0x657d, 0x80,
-	0x657e, 0x80,
-	0x657f, 0x80,
-	0x6580, 0x80,
-	0x6581, 0x80,
-	0x6582, 0x80,
-	0x6583, 0x80,
-	0x6584, 0x80,
-	0x6585, 0x80,
-	0x6586, 0x80,
-	0x6587, 0x80,
-	0x6588, 0x80,
-	0x6589, 0x80,
-	0x658a, 0x80,
-	0x658b, 0x80,
-	0x658c, 0x80,
-	0x658d, 0x80,
-	0x658e, 0x80,
-	0x658f, 0x80,
-	0x6590, 0x80,
-	0x6591, 0x80,
-	0x6592, 0x80,
-	0x6593, 0x80,
-	0x6594, 0x80,
-	0x6595, 0x80,
-	0x6596, 0x80,
-	0x6597, 0x80,
-	0x6598, 0x80,
-	0x6599, 0x80,
-	0x659a, 0x80,
-	0x659b, 0x80,
-	0x659c, 0x80,
-	0x659d, 0x80,
-	0x659e, 0x80,
-	0x659f, 0x80,
-	0x65a0, 0x80,
-	0x65a1, 0x80,
-	0x65a2, 0x80,
-	0x65a3, 0x80,
-	0x65a4, 0x80,
-	0x65a5, 0x80,
-	0x65a6, 0x80,
-	0x65a7, 0x80,
-	0x65a8, 0x80,
-	0x65a9, 0x80,
-	0x65aa, 0x80,
-	0x65ab, 0x80,
-	0x65ac, 0x80,
-	0x65ad, 0x80,
-	0x65ae, 0x80,
-	0x65af, 0x80,
-	0x65b0, 0x80,
-	0x65b1, 0x80,
-	0x65b2, 0x80,
-	0x65b3, 0x80,
-	0x65b4, 0x80,
-	0x65b5, 0x80,
-	0x65b6, 0x80,
-	0x65b7, 0x80,
-	0x65b8, 0x80,
-	0x65b9, 0x80,
-	0x65ba, 0x80,
-	0x65bb, 0x80,
-	0x65bc, 0x80,
-	0x65bd, 0x80,
-	0x65be, 0x80,
-	0x65bf, 0x80,
-	0x65c0, 0x80,
-	0x65c1, 0x80,
-	0x65c2, 0x80,
-	0x65c3, 0x80,
-	0x65c4, 0x80,
-	0x65c5, 0x80,
-	0x65c6, 0x80,
-	0x65c7, 0x80,
-	0x65c8, 0x80,
-	0x65c9, 0x80,
-	0x65ca, 0x80,
-	0x65cb, 0x80,
-	0x65cc, 0x80,
-	0x65cd, 0x80,
-	0x65ce, 0x80,
-	0x65cf, 0x80,
-	0x65d0, 0x80,
-	0x65d1, 0x80,
-	0x65d2, 0x80,
-	0x65d3, 0x80,
-	0x65d4, 0x80,
-	0x65d5, 0x80,
-	0x65d6, 0x80,
-	0x65d7, 0x80,
-	0x65d8, 0x80,
-	0x65d9, 0x80,
-	0x65da, 0x80,
-	0x65db, 0x80,
-	0x65dc, 0x80,
-	0x65dd, 0x80,
-	0x65de, 0x80,
-	0x65df, 0x80,
-	0x65e0, 0x80,
-	0x65e1, 0x80,
-	0x65e2, 0x80,
-	0x65e3, 0x80,
-	0x65e4, 0x80,
-	0x65e5, 0x80,
-	0x65e6, 0x80,
-	0x65e7, 0x80,
-	0x65e8, 0x80,
-	0x65e9, 0x80,
-	0x65ea, 0x80,
-	0x65eb, 0x80,
-	0x65ec, 0x80,
-	0x65ed, 0x80,
-	0x65ee, 0x80,
-	0x65ef, 0x80,
-	0x65f0, 0x80,
-	0x65f1, 0x80,
-	0x65f2, 0x80,
-	0x65f3, 0x80,
-	0x65f4, 0x80,
-	0x65f5, 0x80,
-	0x65f6, 0x80,
-	0x65f7, 0x80,
-	0x65f8, 0x80,
-	0x65f9, 0x80,
-	0x65fa, 0x80,
-	0x65fb, 0x80,
-	0x65fc, 0x80,
-	0x65fd, 0x80,
-	0x65fe, 0x80,
-	0x65ff, 0x80,
-	0x6600, 0x80,
-	0x6601, 0x80,
-	0x6602, 0x80,
-	0x6603, 0x80,
-	0x6604, 0x80,
-	0x6605, 0x80,
-	0x6606, 0x80,
-	0x6607, 0x80,
-	0x6608, 0x80,
-	0x6609, 0x80,
-	0x660a, 0x80,
-	0x660b, 0x80,
-	0x660c, 0x80,
-	0x660d, 0x80,
-	0x660e, 0x80,
-	0x660f, 0x80,
-	0x6610, 0x80,
-	0x6611, 0x80,
-	0x6612, 0x80,
-	0x6613, 0x80,
-	0x6614, 0x80,
-	0x6615, 0x80,
-	0x6616, 0x80,
-	0x6617, 0x80,
-	0x6618, 0x80,
-	0x6619, 0x80,
-	0x661a, 0x80,
-	0x661b, 0x80,
-	0x661c, 0x80,
-	0x661d, 0x80,
-	0x661e, 0x80,
-	0x661f, 0x80,
-	0x6620, 0x80,
-	0x6621, 0x80,
-	0x6622, 0x80,
-	0x6623, 0x80,
-	0x6624, 0x80,
-	0x6625, 0x80,
-	0x6626, 0x80,
-	0x6627, 0x80,
-	0x6628, 0x80,
-	0x6629, 0x80,
-	0x662a, 0x80,
-	0x662b, 0x80,
-	0x662c, 0x80,
-	0x662d, 0x80,
-	0x662e, 0x80,
-	0x662f, 0x80,
-	0x6630, 0x80,
-	0x6631, 0x80,
-	0x6632, 0x80,
-	0x6633, 0x80,
-	0x6634, 0x80,
-	0x6635, 0x80,
-	0x6636, 0x80,
-	0x6637, 0x80,
-	0x6638, 0x80,
-	0x6639, 0x80,
-	0x663a, 0x80,
-	0x663b, 0x80,
-	0x663c, 0x80,
-	0x663d, 0x80,
-	0x663e, 0x80,
-	0x663f, 0x80,
-	0x6640, 0x80,
-	0x6641, 0x80,
-	0x6642, 0x80,
-	0x6643, 0x80,
-	0x6644, 0x80,
-	0x6645, 0x80,
-	0x6646, 0x80,
-	0x6647, 0x80,
-	0x6648, 0x80,
-	0x6649, 0x80,
-	0x664a, 0x80,
-	0x664b, 0x80,
-	0x664c, 0x80,
-	0x664d, 0x80,
-	0x664e, 0x80,
-	0x664f, 0x80,
-	0x6650, 0x80,
-	0x6651, 0x80,
-	0x6652, 0x80,
-	0x6653, 0x80,
-	0x6654, 0x80,
-	0x6655, 0x80,
-	0x6656, 0x80,
-	0x6657, 0x80,
-	0x6658, 0x80,
-	0x6659, 0x80,
-	0x665a, 0x80,
-	0x665b, 0x80,
-	0x665c, 0x80,
-	0x665d, 0x80,
-	0x665e, 0x80,
-	0x665f, 0x80,
-	0x6660, 0x80,
-	0x6661, 0x80,
-	0x6662, 0x80,
-	0x6663, 0x80,
-	0x6664, 0x80,
-	0x6665, 0x80,
-	0x6666, 0x80,
-	0x6667, 0x80,
-	0x6668, 0x80,
-	0x6669, 0x80,
-	0x666a, 0x80,
-	0x666b, 0x80,
-	0x666c, 0x80,
-	0x666d, 0x80,
-	0x666e, 0x80,
-	0x666f, 0x80,
-	0x6670, 0x80,
-	0x6671, 0x80,
-	0x6672, 0x80,
-	0x6673, 0x80,
-	0x6674, 0x80,
-	0x6675, 0x80,
-	0x6676, 0x80,
-	0x6677, 0x80,
-	0x6678, 0x80,
-	0x6679, 0x80,
-	0x667a, 0x80,
-	0x667b, 0x80,
-	0x667c, 0x80,
-	0x667d, 0x80,
-	0x667e, 0x80,
-	0x667f, 0x80,
-	0x6680, 0x80,
-	0x6681, 0x80,
-	0x6682, 0x80,
-	0x6683, 0x80,
-	0x6684, 0x80,
-	0x6685, 0x80,
-	0x6686, 0x80,
-	0x6687, 0x80,
-	0x6688, 0x80,
-	0x6689, 0x80,
-	0x668a, 0x80,
-	0x668b, 0x80,
-	0x668c, 0x80,
-	0x668d, 0x80,
-	0x668e, 0x80,
-	0x668f, 0x80,
-	0x6690, 0x80,
-	0x6691, 0x80,
-	0x6692, 0x80,
-	0x6693, 0x80,
-	0x6694, 0x80,
-	0x6695, 0x80,
-	0x6696, 0x80,
-	0x6697, 0x80,
-	0x6698, 0x80,
-	0x6699, 0x80,
-	0x669a, 0x80,
-	0x669b, 0x80,
-	0x669c, 0x80,
-	0x669d, 0x80,
-	0x669e, 0x80,
-	0x669f, 0x80,
-	0x66a0, 0x80,
-	0x66a1, 0x80,
-	0x66a2, 0x80,
-	0x66a3, 0x80,
-	0x66a4, 0x80,
-	0x66a5, 0x80,
-	0x66a6, 0x80,
-	0x66a7, 0x80,
-	0x66a8, 0x80,
-	0x66a9, 0x80,
-	0x66aa, 0x80,
-	0x66ab, 0x80,
-	0x66ac, 0x80,
-	0x66ad, 0x80,
-	0x66ae, 0x80,
-	0x66af, 0x80,
-	0x66b0, 0x80,
-	0x66b1, 0x80,
-	0x66b2, 0x80,
-	0x66b3, 0x80,
-	0x66b4, 0x80,
-	0x66b5, 0x80,
-	0x66b6, 0x80,
-	0x66b7, 0x80,
-	0x66b8, 0x80,
-	0x66b9, 0x80,
-	0x66ba, 0x80,
-	0x66bb, 0x80,
-	0x66bc, 0x80,
-	0x66bd, 0x80,
-	0x66be, 0x80,
-	0x66bf, 0x80,
-	0x66c0, 0x80,
-	0x66c1, 0x80,
-	0x66c2, 0x80,
-	0x66c3, 0x80,
-	0x66c4, 0x80,
-	0x66c5, 0x80,
-	0x66c6, 0x80,
-	0x66c7, 0x80,
-	0x66c8, 0x80,
-	0x66c9, 0x80,
-	0x66ca, 0x80,
-	0x66cb, 0x80,
-	0x66cc, 0x80,
-	0x66cd, 0x80,
-	0x66ce, 0x80,
-	0x66cf, 0x80,
-	0x66d0, 0x80,
-	0x66d1, 0x80,
-	0x66d2, 0x80,
-	0x66d3, 0x80,
-	0x66d4, 0x80,
-	0x66d5, 0x80,
-	0x66d6, 0x80,
-	0x66d7, 0x80,
-	0x66d8, 0x80,
-	0x66d9, 0x80,
-	0x66da, 0x80,
-	0x66db, 0x80,
-	0x66dc, 0x80,
-	0x66dd, 0x80,
-	0x66de, 0x80,
-	0x66df, 0x80,
-	0x66e0, 0x80,
-	0x66e1, 0x80,
-	0x66e2, 0x80,
-	0x66e3, 0x80,
-	0x66e4, 0x80,
-	0x66e5, 0x80,
-	0x66e6, 0x80,
-	0x66e7, 0x80,
-	0x66e8, 0x80,
-	0x66e9, 0x80,
-	0x66ea, 0x80,
-	0x66eb, 0x80,
-	0x66ec, 0x80,
-	0x66ed, 0x80,
-	0x66ee, 0x80,
-	0x66ef, 0x80,
-	0x66f0, 0x80,
-	0x66f1, 0x80,
-	0x66f2, 0x80,
-	0x66f3, 0x80,
-	0x66f4, 0x80,
-	0x66f5, 0x80,
-	0x66f6, 0x80,
-	0x66f7, 0x80,
-	0x66f8, 0x80,
-	0x66f9, 0x80,
-	0x66fa, 0x80,
-	0x66fb, 0x80,
-	0x66fc, 0x80,
-	0x66fd, 0x80,
-	0x66fe, 0x80,
-	0x66ff, 0x80,
-	0x6700, 0x80,
-	0x6701, 0x80,
-	0x6702, 0x80,
-	0x6703, 0x80,
-	0x6704, 0x80,
-	0x6705, 0x80,
-	0x6706, 0x80,
-	0x6707, 0x80,
-	0x6708, 0x80,
-	0x6709, 0x80,
-	0x670a, 0x80,
-	0x670b, 0x80,
-	0x670c, 0x80,
-	0x670d, 0x80,
-	0x670e, 0x80,
-	0x670f, 0x80,
-	0x6710, 0x80,
-	0x6711, 0x80,
-	0x6712, 0x80,
-	0x6713, 0x80,
-	0x6714, 0x80,
-	0x6715, 0x80,
-	0x6716, 0x80,
-	0x6717, 0x80,
-	0x6718, 0x80,
-	0x6719, 0x80,
-	0x671a, 0x80,
-	0x671b, 0x80,
-	0x671c, 0x80,
-	0x671d, 0x80,
-	0x671e, 0x80,
-	0x671f, 0x80,
-	0x6720, 0x80,
-	0x6721, 0x80,
-	0x6722, 0x80,
-	0x6723, 0x80,
-	0x6724, 0x80,
-	0x6725, 0x80,
-	0x6726, 0x80,
-	0x6727, 0x80,
-	0x6728, 0x80,
-	0x6729, 0x80,
-	0x672a, 0x80,
-	0x672b, 0x80,
-	0x672c, 0x80,
-	0x672d, 0x80,
-	0x672e, 0x80,
-	0x672f, 0x80,
-	0x6730, 0x80,
-	0x6731, 0x80,
-	0x6732, 0x80,
-	0x6733, 0x80,
-	0x6734, 0x80,
-	0x6735, 0x80,
-	0x6736, 0x80,
-	0x6737, 0x80,
-	0x6738, 0x80,
-	0x6739, 0x80,
-	0x673a, 0x80,
-	0x673b, 0x80,
-	0x673c, 0x80,
-	0x673d, 0x80,
-	0x673e, 0x80,
-	0x673f, 0x80,
-	0x6740, 0x80,
-	0x6741, 0x80,
-	0x6742, 0x80,
-	0x6743, 0x80,
-	0x6744, 0x80,
-	0x6745, 0x80,
-	0x6746, 0x80,
-	0x6747, 0x80,
-	0x6748, 0x80,
-	0x6749, 0x80,
-	0x674a, 0x80,
-	0x674b, 0x80,
-	0x674c, 0x80,
-	0x674d, 0x80,
-	0x674e, 0x80,
-	0x674f, 0x80,
-	0x6750, 0x80,
-	0x6751, 0x80,
-	0x6752, 0x80,
-	0x6753, 0x80,
-	0x6754, 0x80,
-	0x6755, 0x80,
-	0x6756, 0x80,
-	0x6757, 0x80,
-	0x6758, 0x80,
-	0x6759, 0x80,
-	0x675a, 0x80,
-	0x675b, 0x80,
-	0x675c, 0x80,
-	0x675d, 0x80,
-	0x675e, 0x80,
-	0x675f, 0x80,
-	0x6760, 0x80,
-	0x6761, 0x80,
-	0x6762, 0x80,
-	0x6763, 0x80,
-	0x6764, 0x80,
-	0x6765, 0x80,
-	0x6766, 0x80,
-	0x6767, 0x80,
-	0x6768, 0x80,
-	0x6769, 0x80,
-	0x676a, 0x80,
-	0x676b, 0x80,
-	0x676c, 0x80,
-	0x676d, 0x80,
-	0x676e, 0x80,
-	0x676f, 0x80,
-	0x6770, 0x80,
-	0x6771, 0x80,
-	0x6772, 0x80,
-	0x6773, 0x80,
-	0x6774, 0x80,
-	0x6775, 0x80,
-	0x6776, 0x80,
-	0x6777, 0x80,
-	0x6778, 0x80,
-	0x6779, 0x80,
-	0x677a, 0x80,
-	0x677b, 0x80,
-	0x677c, 0x80,
-	0x677d, 0x80,
-	0x677e, 0x80,
-	0x677f, 0x80,
-	0x6780, 0x80,
-	0x6781, 0x80,
-	0x6782, 0x80,
-	0x6783, 0x80,
-	0x6784, 0x80,
-	0x6785, 0x80,
-	0x6786, 0x80,
-	0x6787, 0x80,
-	0x6788, 0x80,
-	0x6789, 0x80,
-	0x678a, 0x80,
-	0x678b, 0x80,
-	0x678c, 0x80,
-	0x678d, 0x80,
-	0x678e, 0x80,
-	0x678f, 0x80,
-	0x6790, 0x80,
-	0x6791, 0x80,
-	0x6792, 0x80,
-	0x6793, 0x80,
-	0x6794, 0x80,
-	0x6795, 0x80,
-	0x6796, 0x80,
-	0x6797, 0x80,
-	0x6798, 0x80,
-	0x6799, 0x80,
-	0x679a, 0x80,
-	0x679b, 0x80,
-	0x679c, 0x80,
-	0x679d, 0x80,
-	0x679e, 0x80,
-	0x679f, 0x80,
-	0x67a0, 0x80,
-	0x67a1, 0x80,
-	0x67a2, 0x80,
-	0x67a3, 0x80,
-	0x67a4, 0x80,
-	0x67a5, 0x80,
-	0x67a6, 0x80,
-	0x67a7, 0x80,
-	0x67a8, 0x80,
-	0x67a9, 0x80,
-	0x67aa, 0x80,
-	0x67ab, 0x80,
-	0x67ac, 0x80,
-	0x67ad, 0x80,
-	0x67ae, 0x80,
-	0x67af, 0x80,
-	0x67b0, 0x80,
-	0x67b1, 0x80,
-	0x67b2, 0x80,
-	0x67b3, 0x80,
-	0x67b4, 0x80,
-	0x67b5, 0x80,
-	0x67b6, 0x80,
-	0x67b7, 0x80,
-	0x67b8, 0x80,
-	0x67b9, 0x80,
-	0x67ba, 0x80,
-	0x67bb, 0x80,
-	0x67bc, 0x80,
-	0x67bd, 0x80,
-	0x67be, 0x80,
-	0x67bf, 0x80,
-	0x67c0, 0x80,
-	0x67c1, 0x80,
-	0x67c2, 0x80,
-	0x67c3, 0x80,
-	0x67c4, 0x80,
-	0x67c5, 0x80,
-	0x67c6, 0x80,
-	0x67c7, 0x80,
-	0x67c8, 0x80,
-	0x67c9, 0x80,
-	0x67ca, 0x80,
-	0x67cb, 0x80,
-	0x67cc, 0x80,
-	0x67cd, 0x80,
-	0x67ce, 0x80,
-	0x67cf, 0x80,
-	0x67d0, 0x80,
-	0x67d1, 0x80,
-	0x67d2, 0x80,
-	0x67d3, 0x80,
-	0x67d4, 0x80,
-	0x67d5, 0x80,
-	0x67d6, 0x80,
-	0x67d7, 0x80,
-	0x67d8, 0x80,
-	0x67d9, 0x80,
-	0x67da, 0x80,
-	0x67db, 0x80,
-	0x67dc, 0x80,
-	0x67dd, 0x80,
-	0x67de, 0x80,
-	0x67df, 0x80,
-	0x67e0, 0x80,
-	0x67e1, 0x80,
-	0x67e2, 0x80,
-	0x67e3, 0x80,
-	0x67e4, 0x80,
-	0x67e5, 0x80,
-	0x67e6, 0x80,
-	0x67e7, 0x80,
-	0x67e8, 0x80,
-	0x67e9, 0x80,
-	0x67ea, 0x80,
-	0x67eb, 0x80,
-	0x67ec, 0x80,
-	0x67ed, 0x80,
-	0x67ee, 0x80,
-	0x67ef, 0x80,
-	0x67f0, 0x80,
-	0x67f1, 0x80,
-	0x67f2, 0x80,
-	0x67f3, 0x80,
-	0x67f4, 0x80,
-	0x67f5, 0x80,
-	0x67f6, 0x80,
-	0x67f7, 0x80,
-	0x67f8, 0x80,
-	0x67f9, 0x80,
-	0x67fa, 0x80,
-	0x67fb, 0x80,
-	0x67fc, 0x80,
-	0x67fd, 0x80,
-	0x67fe, 0x80,
-	0x67ff, 0x80,
-	0x6800, 0x80,
-	0x6801, 0x80,
-	0x6802, 0x80,
-	0x6803, 0x80,
-	0x6804, 0x80,
-	0x6805, 0x80,
-	0x6806, 0x80,
-	0x6807, 0x80,
-	0x6808, 0x80,
-	0x6809, 0x80,
-	0x680a, 0x80,
-	0x680b, 0x80,
-	0x680c, 0x80,
-	0x680d, 0x80,
-	0x680e, 0x80,
-	0x680f, 0x80,
-	0x6810, 0x80,
-	0x6811, 0x80,
-	0x6812, 0x80,
-	0x6813, 0x80,
-	0x6814, 0x80,
-	0x6815, 0x80,
-	0x6816, 0x80,
-	0x6817, 0x80,
-	0x6818, 0x80,
-	0x6819, 0x80,
-	0x681a, 0x80,
-	0x681b, 0x80,
-	0x681c, 0x80,
-	0x681d, 0x80,
-	0x681e, 0x80,
-	0x681f, 0x80,
-	0x6820, 0x80,
-	0x6821, 0x80,
-	0x6822, 0x80,
-	0x6823, 0x80,
-	0x6824, 0x80,
-	0x6825, 0x80,
-	0x6826, 0x80,
-	0x6827, 0x80,
-	0x6828, 0x80,
-	0x6829, 0x80,
-	0x682a, 0x80,
-	0x682b, 0x80,
-	0x682c, 0x80,
-	0x682d, 0x80,
-	0x682e, 0x80,
-	0x682f, 0x80,
-	0x6830, 0x80,
-	0x6831, 0x80,
-	0x6832, 0x80,
-	0x6833, 0x80,
-	0x6834, 0x80,
-	0x6835, 0x80,
-	0x6836, 0x80,
-	0x6837, 0x80,
-	0x6838, 0x80,
-	0x6839, 0x80,
-	0x683a, 0x80,
-	0x683b, 0x80,
-	0x683c, 0x80,
-	0x683d, 0x80,
-	0x683e, 0x80,
-	0x683f, 0x80,
-	0x6840, 0x80,
-	0x6841, 0x80,
-	0x6842, 0x80,
-	0x6843, 0x80,
-	0x6844, 0x80,
-	0x6845, 0x80,
-	0x6846, 0x80,
-	0x6847, 0x80,
-	0x6848, 0x80,
-	0x6849, 0x80,
-	0x684a, 0x80,
-	0x684b, 0x80,
-	0x684c, 0x80,
-	0x684d, 0x80,
-	0x684e, 0x80,
-	0x684f, 0x80,
-	0x6850, 0x80,
-	0x6851, 0x80,
-	0x6852, 0x80,
-	0x6853, 0x80,
-	0x6854, 0x80,
-	0x6855, 0x80,
-	0x6856, 0x80,
-	0x6857, 0x80,
-	0x6858, 0x80,
-	0x6859, 0x80,
-	0x685a, 0x80,
-	0x685b, 0x80,
-	0x685c, 0x80,
-	0x685d, 0x80,
-	0x685e, 0x80,
-	0x685f, 0x80,
-	0x6860, 0x80,
-	0x6861, 0x80,
-	0x6862, 0x80,
-	0x6863, 0x80,
-	0x6864, 0x80,
-	0x6865, 0x80,
-	0x6866, 0x80,
-	0x6867, 0x80,
-	0x6868, 0x80,
-	0x6869, 0x80,
-	0x686a, 0x80,
-	0x686b, 0x80,
-	0x686c, 0x80,
-	0x686d, 0x80,
-	0x686e, 0x80,
-	0x686f, 0x80,
-	0x6870, 0x80,
-	0x6871, 0x80,
-	0x6872, 0x80,
-	0x6873, 0x80,
-	0x6874, 0x80,
-	0x6875, 0x80,
-	0x6876, 0x80,
-	0x6877, 0x80,
-	0x6878, 0x80,
-	0x6879, 0x80,
-	0x687a, 0x80,
-	0x687b, 0x80,
-	0x687c, 0x80,
-	0x687d, 0x80,
-	0x687e, 0x80,
-	0x687f, 0x80,
-	0x6880, 0x80,
-	0x6881, 0x80,
-	0x6882, 0x80,
-	0x6883, 0x80,
-	0x6884, 0x80,
-	0x6885, 0x80,
-	0x6886, 0x80,
-	0x6887, 0x80,
-	0x6888, 0x80,
-	0x6889, 0x80,
-	0x688a, 0x80,
-	0x688b, 0x80,
-	0x688c, 0x80,
-	0x688d, 0x80,
-	0x688e, 0x80,
-	0x688f, 0x80,
-};
-
-
-//0_OV50E40_4096x3072_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x768_20241202.txt
-static kal_uint16 zhuquec1main_preview_capture_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 3072
-//102 9c1 1000
-//102 9c5 c00
-//102 9c2 1000
-//102 9c6 300
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0xf9,
-	0x350e, 0x21,
-	0x350f, 0x80,
-	0x3546, 0xf9,
-	0x354e, 0x21,
-	0x354f, 0x80,
-	0x3586, 0xf9,
-	0x358e, 0x21,
-	0x358f, 0x80,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x18,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc2,
-	0x363c, 0xcb,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x01,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x25,
-	0x3707, 0x04,
-	0x3709, 0x80,
-	0x370b, 0x55,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x65,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0xa0,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x3b,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x25,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x55,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0xa8,
-	0x37d0, 0x66,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x18,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x18,
-	0x380f, 0x68,
-	0x3811, 0x07,
-	0x3813, 0x08,
-	0x3815, 0x11,
-	0x3820, 0x46,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x04,
-	0x3828, 0x05,
-	0x3830, 0x07,
-	0x3831, 0x02,
-	0x3837, 0x07,
-	0x383f, 0x08,
-	0x3846, 0x00, //;0214
-	0x3847, 0x00, //;0214
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x08,
-	0x388b, 0x08,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x0c,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x05,
-	0x3a13, 0x05,
-	0x3a14, 0x05,
-	0x3a15, 0x01,
-	0x3a16, 0x00,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0xfb,
-	0x3b02, 0x02,
-	0x3b03, 0x14,
-	0x3b04, 0x19,
-	0x3b05, 0x1d,
-	0x3b08, 0x1f,
-	0x3b14, 0x02,
-	0x3b15, 0x2b,
-	0x3b19, 0x2b,
-	0x3b1a, 0x2c,
-	0x3b1d, 0x00,
-	0x3b22, 0x2c,
-	0x3b25, 0x28,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x29,
-	0x3b33, 0x2a,
-	0x3b34, 0x2a,
-	0x3b38, 0x22,
-	0x3b39, 0x25,
-	0x3b3a, 0x26,
-	0x3b3b, 0x27,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x12,
-	0x3b57, 0x12,
-	0x3b58, 0x12,
-	0x3b59, 0x12,
-	0x3b5a, 0x1d,
-	0x3b5b, 0x1d,
-	0x3b5c, 0x1d,
-	0x3b5d, 0x1d,
-	0x3b82, 0x1d,
-	0x3ba0, 0x25,
-	0x3ba1, 0x12,
-	0x3ba2, 0x26,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0xa0,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x0f,
-	0x4018, 0x07,
-	0x401e, 0x02,
-	0x401f, 0x80,
-	0x40c4, 0x03,
-	0x40c5, 0x00,
-	0x40c6, 0x06,
-	0x40c7, 0x00,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x15,
-	0x450c, 0x00,
-	0x450d, 0x60,
-	0x4510, 0x07,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x8e,
-	0x45c1, 0x80,
-	0x45c2, 0x0a,
-	0x45c3, 0x14,
-	0x45c4, 0x13,
-	0x45c5, 0x40,
-	0x45c6, 0x04,
-	0x45dd, 0x60,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x0f,
-	0x4918, 0x07,
-	0x491e, 0x02,
-	0x491f, 0x80,
-	0x4a16, 0x0f,
-	0x4a18, 0x07,
-	0x4a1e, 0x02,
-	0x4a1f, 0x80,
-	0x5000, 0x2b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0xaa,
-	0xc210, 0x1f,
-	0xc211, 0x20,
-	0xc231, 0x02,
-	0xc232, 0x03,
-	0xc233, 0x1e,
-	0xc245, 0x02,
-	0xc246, 0x03,
-	0xc247, 0x1e,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x55,
-	0xc4a3, 0x55,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2c,
-	0xc4c7, 0x2c,
-	0xc4c8, 0x2c,
-	0xc4c9, 0x2c,
-	0xc4ca, 0x2c,
-	0xc4cb, 0x2c,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x02,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x1d,
-	0xc4e9, 0x12,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x21,
-	0xc4ff, 0x23,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x18,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-	0x3541, 0x00,
-	0x3542, 0x20,
-	0x3548, 0x0f,
-	0x3549, 0xff,
-//VSYNC pad output
-	0x3002, 0x80,
-	0x3008, 0x00,
-	0x382e, 0x00,
-	0x368d, 0x10,
-	0x3841, 0x00,
-	0x381a, 0x00,
-	0x381b, 0x1c,
-	0x381c, 0x01,
-	0x381d, 0x90,
-	0x381e, 0x00,
-	0x381f, 0x01,
-	0x385b, 0x00,
-//	0x0100, 0x01,
-};
-
-//2_OV50E40_4096x2304_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x576_20241202.txt
-static kal_uint16 zhuquec1main_normal_video_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 2304
-//102 9c1 1000
-//102 9c5 900
-//102 9c2 1000
-//102 9c6 240
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0xf9,
-	0x350e, 0x21,
-	0x350f, 0x80,
-	0x3546, 0xf9,
-	0x354e, 0x21,
-	0x354f, 0x80,
-	0x3586, 0xf9,
-	0x358e, 0x21,
-	0x358f, 0x80,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x18,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc2,
-	0x363c, 0xcb,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x01,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x25,
-	0x3707, 0x04,
-	0x3709, 0x80,
-	0x370b, 0x55,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x65,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0xa0,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x3b,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x25,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x55,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0xa8,
-	0x37d0, 0x66,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x03,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x15,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x09,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x18,
-	0x380f, 0x68,
-	0x3811, 0x07,
-	0x3813, 0x08,
-	0x3815, 0x11,
-	0x3820, 0x46,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x04,
-	0x3828, 0x05,
-	0x3830, 0x07,
-	0x3831, 0x02,
-	0x3837, 0x07,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x08,
-	0x388b, 0x08,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x09,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x05,
-	0x3a13, 0x05,
-	0x3a14, 0x05,
-	0x3a15, 0x01,
-	0x3a16, 0x00,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0xfb,
-	0x3b02, 0x02,
-	0x3b03, 0x14,
-	0x3b04, 0x19,
-	0x3b05, 0x1d,
-	0x3b08, 0x1f,
-	0x3b14, 0x02,
-	0x3b15, 0x2b,
-	0x3b19, 0x2b,
-	0x3b1a, 0x2c,
-	0x3b1d, 0x00,
-	0x3b22, 0x2c,
-	0x3b25, 0x28,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x29,
-	0x3b33, 0x2a,
-	0x3b34, 0x2a,
-	0x3b38, 0x22,
-	0x3b39, 0x25,
-	0x3b3a, 0x26,
-	0x3b3b, 0x27,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x12,
-	0x3b57, 0x12,
-	0x3b58, 0x12,
-	0x3b59, 0x12,
-	0x3b5a, 0x1d,
-	0x3b5b, 0x1d,
-	0x3b5c, 0x1d,
-	0x3b5d, 0x1d,
-	0x3b82, 0x1d,
-	0x3ba0, 0x25,
-	0x3ba1, 0x12,
-	0x3ba2, 0x26,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0xa0,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x0f,
-	0x4018, 0x07,
-	0x401e, 0x02,
-	0x401f, 0x80,
-	0x40c4, 0x03,
-	0x40c5, 0x00,
-	0x40c6, 0x06,
-	0x40c7, 0x00,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x15,
-	0x450c, 0x00,
-	0x450d, 0x60,
-	0x4510, 0x07,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x8e,
-	0x45c1, 0x80,
-	0x45c2, 0x0a,
-	0x45c3, 0x14,
-	0x45c4, 0x13,
-	0x45c5, 0x40,
-	0x45c6, 0x04,
-	0x45dd, 0x60,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x0f,
-	0x4918, 0x07,
-	0x491e, 0x02,
-	0x491f, 0x80,
-	0x4a16, 0x0f,
-	0x4a18, 0x07,
-	0x4a1e, 0x02,
-	0x4a1f, 0x80,
-	0x5000, 0x2b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0xaa,
-	0xc210, 0x1f,
-	0xc211, 0x20,
-	0xc231, 0x02,
-	0xc232, 0x03,
-	0xc233, 0x1e,
-	0xc245, 0x02,
-	0xc246, 0x03,
-	0xc247, 0x1e,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x55,
-	0xc4a3, 0x55,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2c,
-	0xc4c7, 0x2c,
-	0xc4c8, 0x2c,
-	0xc4c9, 0x2c,
-	0xc4ca, 0x2c,
-	0xc4cb, 0x2c,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x02,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x1d,
-	0xc4e9, 0x12,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x21,
-	0xc4ff, 0x23,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x18,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//3_OV50E40_4096x2304_4C2PlusSCG_10bit_60fps_AG64_PDDT_4096x576_20241202.txt
-static kal_uint16 zhuquec1main_hs_video_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 2304
-//102 9c1 1000
-//102 9c5 900
-//102 9c2 1000
-//102 9c6 240
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0xf9,
-	0x350e, 0x21,
-	0x350f, 0x80,
-	0x3546, 0xf9,
-	0x354e, 0x21,
-	0x354f, 0x80,
-	0x3586, 0xf9,
-	0x358e, 0x21,
-	0x358f, 0x80,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x18,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc2,
-	0x363c, 0xcb,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x01,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x25,
-	0x3707, 0x04,
-	0x3709, 0x80,
-	0x370b, 0x55,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x65,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0xa0,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x3b,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x25,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x55,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0xa8,
-	0x37d0, 0x66,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x03,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x15,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x09,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x0c,
-	0x380f, 0x34,
-	0x3811, 0x07,
-	0x3813, 0x08,
-	0x3815, 0x11,
-	0x3820, 0x46,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x04,
-	0x3828, 0x05,
-	0x3830, 0x07,
-	0x3831, 0x02,
-	0x3837, 0x07,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x08,
-	0x388b, 0x08,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x09,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x05,
-	0x3a13, 0x05,
-	0x3a14, 0x05,
-	0x3a15, 0x01,
-	0x3a16, 0x00,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0xfb,
-	0x3b02, 0x02,
-	0x3b03, 0x14,
-	0x3b04, 0x19,
-	0x3b05, 0x1d,
-	0x3b08, 0x1f,
-	0x3b14, 0x02,
-	0x3b15, 0x2b,
-	0x3b19, 0x2b,
-	0x3b1a, 0x2c,
-	0x3b1d, 0x00,
-	0x3b22, 0x2c,
-	0x3b25, 0x28,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x29,
-	0x3b33, 0x2a,
-	0x3b34, 0x2a,
-	0x3b38, 0x22,
-	0x3b39, 0x25,
-	0x3b3a, 0x26,
-	0x3b3b, 0x27,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x12,
-	0x3b57, 0x12,
-	0x3b58, 0x12,
-	0x3b59, 0x12,
-	0x3b5a, 0x1d,
-	0x3b5b, 0x1d,
-	0x3b5c, 0x1d,
-	0x3b5d, 0x1d,
-	0x3b82, 0x1d,
-	0x3ba0, 0x25,
-	0x3ba1, 0x12,
-	0x3ba2, 0x26,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0xa0,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x0f,
-	0x4018, 0x07,
-	0x401e, 0x02,
-	0x401f, 0x80,
-	0x40c4, 0x03,
-	0x40c5, 0x00,
-	0x40c6, 0x06,
-	0x40c7, 0x00,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x15,
-	0x450c, 0x00,
-	0x450d, 0x60,
-	0x4510, 0x07,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x8e,
-	0x45c1, 0x80,
-	0x45c2, 0x0a,
-	0x45c3, 0x14,
-	0x45c4, 0x13,
-	0x45c5, 0x40,
-	0x45c6, 0x04,
-	0x45dd, 0x60,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x0f,
-	0x4918, 0x07,
-	0x491e, 0x02,
-	0x491f, 0x80,
-	0x4a16, 0x0f,
-	0x4a18, 0x07,
-	0x4a1e, 0x02,
-	0x4a1f, 0x80,
-	0x5000, 0x2b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0xaa,
-	0xc210, 0x1f,
-	0xc211, 0x20,
-	0xc231, 0x02,
-	0xc232, 0x03,
-	0xc233, 0x1e,
-	0xc245, 0x02,
-	0xc246, 0x03,
-	0xc247, 0x1e,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x55,
-	0xc4a3, 0x55,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2c,
-	0xc4c7, 0x2c,
-	0xc4c8, 0x2c,
-	0xc4c9, 0x2c,
-	0xc4ca, 0x2c,
-	0xc4cb, 0x2c,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x02,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x1d,
-	0xc4e9, 0x12,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x21,
-	0xc4ff, 0x23,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x0c,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//4_OV50E40_2048x1152_4C2PlusSCG_10bit_120fps_AG64_PDDT_2048x576_20241202.txt
-static kal_uint16 zhuquec1main_slim_video_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 2048 1152
-//102 9c1 800
-//102 9c5 480
-//102 9c2 800
-//102 9c6 240
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0xf9,
-	0x350e, 0x21,
-	0x350f, 0x80,
-	0x3546, 0xf9,
-	0x354e, 0x21,
-	0x354f, 0x80,
-	0x3586, 0xf9,
-	0x358e, 0x21,
-	0x358f, 0x80,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x18,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc2,
-	0x363c, 0xcb,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x01,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x25,
-	0x3707, 0x04,
-	0x3709, 0x80,
-	0x370b, 0x55,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x63,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0xa0,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x3b,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x25,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x55,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0xa8,
-	0x37d0, 0x66,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x03,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x15,
-	0x3807, 0x1f,
-	0x3808, 0x08,
-	0x3809, 0x00,
-	0x380a, 0x04,
-	0x380b, 0x80,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x06,
-	0x380f, 0x1a,
-	0x3811, 0x03,
-	0x3813, 0x04,
-	0x3815, 0x31,
-	0x3820, 0x47,
-	0x3821, 0x11,
-	0x3822, 0x20,
-	0x3823, 0x04,
-	0x3828, 0x03,
-	0x3830, 0x05,
-	0x3831, 0x02,
-	0x3837, 0x05,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x04,
-	0x388b, 0x04,
-	0x388c, 0x08,
-	0x388d, 0x00,
-	0x388e, 0x04,
-	0x388f, 0x80,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x05,
-	0x3a13, 0x05,
-	0x3a14, 0x05,
-	0x3a15, 0x01,
-	0x3a16, 0x00,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0xfb,
-	0x3b02, 0x02,
-	0x3b03, 0x14,
-	0x3b04, 0x19,
-	0x3b05, 0x1d,
-	0x3b08, 0x1f,
-	0x3b14, 0x02,
-	0x3b15, 0x2b,
-	0x3b19, 0x2b,
-	0x3b1a, 0x2c,
-	0x3b1d, 0x00,
-	0x3b22, 0x2c,
-	0x3b25, 0x28,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x29,
-	0x3b33, 0x2a,
-	0x3b34, 0x2a,
-	0x3b38, 0x22,
-	0x3b39, 0x25,
-	0x3b3a, 0x26,
-	0x3b3b, 0x27,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x12,
-	0x3b57, 0x12,
-	0x3b58, 0x12,
-	0x3b59, 0x12,
-	0x3b5a, 0x1d,
-	0x3b5b, 0x1d,
-	0x3b5c, 0x1d,
-	0x3b5d, 0x1d,
-	0x3b82, 0x1d,
-	0x3ba0, 0x25,
-	0x3ba1, 0x12,
-	0x3ba2, 0x26,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0xa0,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x07,
-	0x4018, 0x03,
-	0x401e, 0x02,
-	0x401f, 0x80,
-	0x40c4, 0x03,
-	0x40c5, 0x00,
-	0x40c6, 0x06,
-	0x40c7, 0x00,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x15,
-	0x450c, 0x00,
-	0x450d, 0x60,
-	0x4510, 0x07,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x86,
-	0x45c1, 0x81,
-	0x45c2, 0x02,
-	0x45c3, 0x14,
-	0x45c4, 0x13,
-	0x45c5, 0x40,
-	0x45c6, 0x03,
-	0x45dd, 0x60,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x00,
-	0x4641, 0x80,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x07,
-	0x4918, 0x03,
-	0x491e, 0x02,
-	0x491f, 0x80,
-	0x4a16, 0x07,
-	0x4a18, 0x03,
-	0x4a1e, 0x02,
-	0x4a1f, 0x80,
-	0x5000, 0xab,
-	0x5001, 0xca,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0xaa,
-	0xc210, 0x1f,
-	0xc211, 0x20,
-	0xc231, 0x02,
-	0xc232, 0x03,
-	0xc233, 0x1e,
-	0xc245, 0x02,
-	0xc246, 0x03,
-	0xc247, 0x1e,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x55,
-	0xc4a3, 0x55,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2c,
-	0xc4c7, 0x2c,
-	0xc4c8, 0x2c,
-	0xc4c9, 0x2c,
-	0xc4ca, 0x2c,
-	0xc4cb, 0x2c,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x02,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x1d,
-	0xc4e9, 0x12,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x21,
-	0xc4ff, 0x23,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x05,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//5_OV50E40_2048x1152_4C1SCG_10bit_240fps_AG64_20241202.txt
-static kal_uint16 zhuquec1main_custom1_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 2048 1152
-//102 9c1 800
-//102 9c5 480
-//;102 9c2 1000
-//;102 9c6 300
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 1
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0xf9,
-	0x350e, 0x1c,
-	0x350f, 0x40,
-	0x3546, 0xf9,
-	0x354e, 0x1c,
-	0x354f, 0x40,
-	0x3586, 0xf9,
-	0x358e, 0x1c,
-	0x358f, 0x40,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x18,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc2,
-	0x363c, 0xcb,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x00,
-	0x3688, 0x03,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x25,
-	0x3707, 0x04,
-	0x3709, 0x80,
-	0x370b, 0x4a,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x63,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x25,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x4a,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0xa8,
-	0x37d0, 0x66,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x03,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x15,
-	0x3807, 0x1f,
-	0x3808, 0x08,
-	0x3809, 0x00,
-	0x380a, 0x04,
-	0x380b, 0x80,
-	0x380c, 0x00,
-	0x380d, 0xed,
-	0x380e, 0x05,
-	0x380f, 0x26,
-	0x3811, 0x03,
-	0x3813, 0x04,
-	0x3815, 0x31,
-	0x3820, 0x47,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x04,
-	0x3828, 0x03,
-	0x3830, 0x05,
-	0x3831, 0x00,
-	0x3837, 0x05,
-	0x383f, 0x08,
-	0x384c, 0x00,
-	0x384d, 0xed,
-	0x3889, 0x04,
-	0x388b, 0x04,
-	0x388c, 0x08,
-	0x388d, 0x00,
-	0x388e, 0x04,
-	0x388f, 0x80,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x05,
-	0x3a13, 0x05,
-	0x3a14, 0x05,
-	0x3a15, 0x01,
-	0x3a16, 0x00,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0x00,
-	0x3b02, 0x00,
-	0x3b03, 0x14,
-	0x3b04, 0x19,
-	0x3b05, 0x1d,
-	0x3b08, 0x1f,
-	0x3b14, 0x02,
-	0x3b15, 0x2b,
-	0x3b19, 0x2b,
-	0x3b1a, 0x2c,
-	0x3b1d, 0x00,
-	0x3b22, 0x2c,
-	0x3b25, 0x28,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x29,
-	0x3b33, 0x2a,
-	0x3b34, 0x2a,
-	0x3b38, 0x22,
-	0x3b39, 0x25,
-	0x3b3a, 0x26,
-	0x3b3b, 0x27,
-	0x3b41, 0x14,
-	0x3b42, 0x14,
-	0x3b43, 0x14,
-	0x3b44, 0x14,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x12,
-	0x3b57, 0x12,
-	0x3b58, 0x12,
-	0x3b59, 0x12,
-	0x3b5a, 0x1d,
-	0x3b5b, 0x1d,
-	0x3b5c, 0x1d,
-	0x3b5d, 0x1d,
-	0x3b82, 0x1d,
-	0x3ba0, 0x25,
-	0x3ba1, 0x12,
-	0x3ba2, 0x26,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0x00,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x07,
-	0x4018, 0x03,
-	0x401e, 0x01,
-	0x401f, 0x20,
-	0x40c4, 0x07,
-	0x40c5, 0xff,
-	0x40c6, 0x07,
-	0x40c7, 0xff,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x30,
-	0x4510, 0x00,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x00,
-	0x451b, 0x00,
-	0x451c, 0x00,
-	0x451d, 0x00,
-	0x451e, 0x00,
-	0x451f, 0x00,
-	0x4520, 0x00,
-	0x4521, 0x00,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x80,
-	0x45c1, 0x00,
-	0x45c2, 0x02,
-	0x45c3, 0x00,
-	0x45c4, 0x13,
-	0x45c5, 0x00,
-	0x45c6, 0x00,
-	0x45dd, 0x00,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x08,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x07,
-	0x4918, 0x03,
-	0x491e, 0x01,
-	0x491f, 0x20,
-	0x4a16, 0x07,
-	0x4a18, 0x03,
-	0x4a1e, 0x01,
-	0x4a1f, 0x20,
-	0x5000, 0xab,
-	0x5001, 0xca,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0xaa,
-	0xc210, 0x1f,
-	0xc211, 0x20,
-	0xc231, 0x02,
-	0xc232, 0x01,
-	0xc233, 0xd8,
-	0xc245, 0x02,
-	0xc246, 0x01,
-	0xc247, 0xd8,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x4a,
-	0xc4a3, 0x4a,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2c,
-	0xc4c7, 0x2c,
-	0xc4c8, 0x2c,
-	0xc4c9, 0x2c,
-	0xc4ca, 0x2c,
-	0xc4cb, 0x2c,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x02,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x1d,
-	0xc4e9, 0x12,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x21,
-	0xc4ff, 0x23,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x05,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//6_OV50E40_4096x3072_4C2PlusSCG_10bit_24fps_AG64_PDDT_4096x768_20241202.txt
-static kal_uint16 zhuquec1main_custom2_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 3072
-//102 9c1 1000
-//102 9c5 c00
-//102 9c2 1000
-//102 9c6 300
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0xf9,
-	0x350e, 0x21,
-	0x350f, 0x80,
-	0x3546, 0xf9,
-	0x354e, 0x21,
-	0x354f, 0x80,
-	0x3586, 0xf9,
-	0x358e, 0x21,
-	0x358f, 0x80,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x18,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc2,
-	0x363c, 0xcb,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x01,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x25,
-	0x3707, 0x04,
-	0x3709, 0x80,
-	0x370b, 0x55,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x65,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0xa0,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x3b,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x25,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x55,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0xa8,
-	0x37d0, 0x66,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x18,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x1e,
-	0x380f, 0x84,
-	0x3811, 0x07,
-	0x3813, 0x08,
-	0x3815, 0x11,
-	0x3820, 0x46,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x04,
-	0x3828, 0x05,
-	0x3830, 0x07,
-	0x3831, 0x02,
-	0x3837, 0x07,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x08,
-	0x388b, 0x08,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x0c,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x05,
-	0x3a13, 0x05,
-	0x3a14, 0x05,
-	0x3a15, 0x01,
-	0x3a16, 0x00,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0xfb,
-	0x3b02, 0x02,
-	0x3b03, 0x14,
-	0x3b04, 0x19,
-	0x3b05, 0x1d,
-	0x3b08, 0x1f,
-	0x3b14, 0x02,
-	0x3b15, 0x2b,
-	0x3b19, 0x2b,
-	0x3b1a, 0x2c,
-	0x3b1d, 0x00,
-	0x3b22, 0x2c,
-	0x3b25, 0x28,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x29,
-	0x3b33, 0x2a,
-	0x3b34, 0x2a,
-	0x3b38, 0x22,
-	0x3b39, 0x25,
-	0x3b3a, 0x26,
-	0x3b3b, 0x27,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x12,
-	0x3b57, 0x12,
-	0x3b58, 0x12,
-	0x3b59, 0x12,
-	0x3b5a, 0x1d,
-	0x3b5b, 0x1d,
-	0x3b5c, 0x1d,
-	0x3b5d, 0x1d,
-	0x3b82, 0x1d,
-	0x3ba0, 0x25,
-	0x3ba1, 0x12,
-	0x3ba2, 0x26,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0xa0,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x0f,
-	0x4018, 0x07,
-	0x401e, 0x02,
-	0x401f, 0x80,
-	0x40c4, 0x03,
-	0x40c5, 0x00,
-	0x40c6, 0x06,
-	0x40c7, 0x00,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x15,
-	0x450c, 0x00,
-	0x450d, 0x60,
-	0x4510, 0x07,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x8e,
-	0x45c1, 0x80,
-	0x45c2, 0x0a,
-	0x45c3, 0x14,
-	0x45c4, 0x13,
-	0x45c5, 0x40,
-	0x45c6, 0x04,
-	0x45dd, 0x60,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x0f,
-	0x4918, 0x07,
-	0x491e, 0x02,
-	0x491f, 0x80,
-	0x4a16, 0x0f,
-	0x4a18, 0x07,
-	0x4a1e, 0x02,
-	0x4a1f, 0x80,
-	0x5000, 0x2b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0xaa,
-	0xc210, 0x1f,
-	0xc211, 0x20,
-	0xc231, 0x02,
-	0xc232, 0x03,
-	0xc233, 0x1e,
-	0xc245, 0x02,
-	0xc246, 0x03,
-	0xc247, 0x1e,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x55,
-	0xc4a3, 0x55,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2c,
-	0xc4c7, 0x2c,
-	0xc4c8, 0x2c,
-	0xc4c9, 0x2c,
-	0xc4ca, 0x2c,
-	0xc4cb, 0x2c,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x02,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x1d,
-	0xc4e9, 0x12,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x21,
-	0xc4ff, 0x23,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x18,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//7_OV50E40_8192x6144_10bit_11fps_AG16_PDDT_4096x1536LR_20241202.txt
-static kal_uint16 zhuquec1main_custom3_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 8192 6144
-//102 9c1 2000
-//102 9c5 1800
-//102 9c2 1000
-//102 9c6 600
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0xf4,
-	0x0326, 0xd4,
-	0x0327, 0x0b,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0x58,
-	0x350e, 0x00,
-	0x350f, 0x00,
-	0x3546, 0x38,
-	0x354e, 0x00,
-	0x354f, 0x00,
-	0x3586, 0x38,
-	0x358e, 0x00,
-	0x358f, 0x00,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xbf,
-	0x3616, 0x58,
-	0x361a, 0x56,
-	0x361c, 0x08,
-	0x361e, 0x16,
-	0x363b, 0x14,
-	0x363c, 0xba,
-	0x3645, 0x14,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x03,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x20,
-	0x3707, 0x04,
-	0x3709, 0x9d,
-	0x370b, 0x3e,
-	0x370c, 0x04,
-	0x3712, 0x51,
-	0x3714, 0x74,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x70,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4c,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x20,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x3e,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0x70,
-	0x37d0, 0x00,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x18,
-	0x3807, 0x1f,
-	0x3808, 0x20,
-	0x3809, 0x00,
-	0x380a, 0x18,
-	0x380b, 0x00,
-	0x380c, 0x02,
-	0x380d, 0x58,
-	0x380e, 0x2c,
-	0x380f, 0x60,
-	0x3811, 0x0f,
-	0x3813, 0x10,
-	0x3815, 0x11,
-	0x3820, 0x44,
-	0x3821, 0x00,
-	0x3822, 0x00,
-	0x3823, 0x04,
-	0x3828, 0x14,
-	0x3830, 0x1c,
-	0x3831, 0x00,
-	0x3837, 0x1c,
-	0x383f, 0x08,
-	0x384c, 0x02,
-	0x384d, 0x58,
-	0x3889, 0x10,
-	0x388b, 0x10,
-	0x388c, 0x20,
-	0x388d, 0x00,
-	0x388e, 0x18,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x06,
-	0x39ed, 0x04,
-	0x3a0d, 0x00,
-	0x3a13, 0x00,
-	0x3a14, 0x04,
-	0x3a15, 0x01,
-	0x3a16, 0x02,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0x00,
-	0x3b02, 0x00,
-	0x3b03, 0x07,
-	0x3b04, 0x07,
-	0x3b05, 0x07,
-	0x3b08, 0x07,
-	0x3b14, 0x02,
-	0x3b15, 0x07,
-	0x3b19, 0x07,
-	0x3b1a, 0x07,
-	0x3b1d, 0x00,
-	0x3b22, 0x07,
-	0x3b25, 0x07,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x07,
-	0x3b33, 0x07,
-	0x3b34, 0x07,
-	0x3b38, 0x07,
-	0x3b39, 0x07,
-	0x3b3a, 0x07,
-	0x3b3b, 0x07,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x11,
-	0x3b57, 0x11,
-	0x3b58, 0x11,
-	0x3b59, 0x11,
-	0x3b5a, 0x11,
-	0x3b5b, 0x11,
-	0x3b5c, 0x11,
-	0x3b5d, 0x11,
-	0x3b82, 0x11,
-	0x3ba0, 0x07,
-	0x3ba1, 0x11,
-	0x3ba2, 0x07,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0x00,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0xf4,
-	0x4016, 0x1f,
-	0x4018, 0x0f,
-	0x401e, 0x01,
-	0x401f, 0x30,
-	0x40c4, 0x07,
-	0x40c5, 0xff,
-	0x40c6, 0x07,
-	0x40c7, 0xff,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x30,
-	0x4510, 0x03,
-	0x4511, 0x08,
-	0x4512, 0x05,
-	0x4513, 0x05,
-	0x4514, 0xaf,
-	0x4515, 0xaf,
-	0x4516, 0x05,
-	0x4517, 0x05,
-	0x4518, 0xaf,
-	0x4519, 0xaf,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x94,
-	0x45c1, 0xa4,
-	0x45c2, 0x02,
-	0x45c3, 0x07,
-	0x45c4, 0x13,
-	0x45c5, 0x00,
-	0x45c6, 0x08,
-	0x45dd, 0x00,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x1f,
-	0x4918, 0x0f,
-	0x491e, 0x01,
-	0x491f, 0x30,
-	0x4a16, 0x1f,
-	0x4a18, 0x0f,
-	0x4a1e, 0x01,
-	0x4a1f, 0x30,
-	0x5000, 0x5b,
-	0x5001, 0x28,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0x00,
-	0xc210, 0x00,
-	0xc211, 0x00,
-	0xc231, 0x00,
-	0xc232, 0x02,
-	0xc233, 0x57,
-	0xc245, 0x00,
-	0xc246, 0x02,
-	0xc247, 0x57,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x20,
-	0xc49f, 0x20,
-	0xc4a2, 0x3e,
-	0xc4a3, 0x3e,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2a,
-	0xc4c7, 0x2a,
-	0xc4c8, 0x35,
-	0xc4c9, 0x35,
-	0xc4ca, 0x35,
-	0xc4cb, 0x35,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x00,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x11,
-	0xc4e9, 0x11,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x07,
-	0xc4ff, 0x07,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x00,
-	0xc5c4, 0x00,
-	0xc5c5, 0x00,
-	0xc5c6, 0x00,
-	0xc5c7, 0x00,
-	0xc5c8, 0x00,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x40,
-	0xc5cc, 0x40,
-	0xc5cd, 0x40,
-	0xc5ce, 0x40,
-	0xc5fe, 0x04,
-	0xc5ff, 0x06,
-	0x3501, 0x2c,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-static kal_uint16 zhuquec1main_custom4_setting[] = {};
-
-//9_OV50E40_4096x3072_Cropping_10bit_30fps_AG16_PDDT_2048x768LR_20241202.txt
-static kal_uint16 zhuquec1main_custom5_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 3072
-//102 9c1 1000
-//102 9c5 c00
-//102 9c2 800
-//102 9c6 300
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0xf4,
-	0x0326, 0xd4,
-	0x0327, 0x0b,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0x58,
-	0x350e, 0x00,
-	0x350f, 0x00,
-	0x3546, 0x38,
-	0x354e, 0x00,
-	0x354f, 0x00,
-	0x3586, 0x38,
-	0x358e, 0x00,
-	0x358f, 0x00,
-	0x3600, 0xc7,
-	0x3608, 0xf3,
-	0x360a, 0xbb,
-	0x3616, 0x58,
-	0x361a, 0x56,
-	0x361c, 0x08,
-	0x361e, 0x16,
-	0x363b, 0x14,
-	0x363c, 0xba,
-	0x3645, 0x14,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x03,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x20,
-	0x3707, 0x04,
-	0x3709, 0x9d,
-	0x370b, 0x3e,
-	0x370c, 0x04,
-	0x3712, 0x51,
-	0x3714, 0x74,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x70,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4c,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x20,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x3e,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0x70,
-	0x37d0, 0x00,
-	0x37e3, 0x30,
-	0x3800, 0x08,
-	0x3801, 0x00,
-	0x3802, 0x06,
-	0x3803, 0x00,
-	0x3804, 0x18,
-	0x3805, 0x1f,
-	0x3806, 0x12,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x18,
-	0x380f, 0x68,
-	0x3811, 0x0f,
-	0x3813, 0x10,
-	0x3815, 0x11,
-	0x3820, 0x44,
-	0x3821, 0x00,
-	0x3822, 0x00,
-	0x3823, 0x04,
-	0x3828, 0x14,
-	0x3830, 0x1c,
-	0x3831, 0x00,
-	0x3837, 0x1c,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x10,
-	0x388b, 0x10,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x0c,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x06,
-	0x39ed, 0x04,
-	0x3a0d, 0x00,
-	0x3a13, 0x00,
-	0x3a14, 0x04,
-	0x3a15, 0x01,
-	0x3a16, 0x02,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0x00,
-	0x3b02, 0x00,
-	0x3b03, 0x07,
-	0x3b04, 0x07,
-	0x3b05, 0x07,
-	0x3b08, 0x07,
-	0x3b14, 0x02,
-	0x3b15, 0x07,
-	0x3b19, 0x07,
-	0x3b1a, 0x07,
-	0x3b1d, 0x00,
-	0x3b22, 0x07,
-	0x3b25, 0x07,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x07,
-	0x3b33, 0x07,
-	0x3b34, 0x07,
-	0x3b38, 0x07,
-	0x3b39, 0x07,
-	0x3b3a, 0x07,
-	0x3b3b, 0x07,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x11,
-	0x3b57, 0x11,
-	0x3b58, 0x11,
-	0x3b59, 0x11,
-	0x3b5a, 0x11,
-	0x3b5b, 0x11,
-	0x3b5c, 0x11,
-	0x3b5d, 0x11,
-	0x3b82, 0x11,
-	0x3ba0, 0x07,
-	0x3ba1, 0x11,
-	0x3ba2, 0x07,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0x00,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0xf4,
-	0x4016, 0x1f,
-	0x4018, 0x0f,
-	0x401e, 0x01,
-	0x401f, 0x30,
-	0x40c4, 0x07,
-	0x40c5, 0xff,
-	0x40c6, 0x07,
-	0x40c7, 0xff,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x30,
-	0x4510, 0x03,
-	0x4511, 0x08,
-	0x4512, 0x05,
-	0x4513, 0x05,
-	0x4514, 0xaf,
-	0x4515, 0xaf,
-	0x4516, 0x05,
-	0x4517, 0x05,
-	0x4518, 0xaf,
-	0x4519, 0xaf,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x94,
-	0x45c1, 0xa4,
-	0x45c2, 0x02,
-	0x45c3, 0x07,
-	0x45c4, 0x13,
-	0x45c5, 0x00,
-	0x45c6, 0x04,
-	0x45dd, 0x00,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x00,
-	0x4641, 0x80,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x1f,
-	0x4918, 0x0f,
-	0x491e, 0x01,
-	0x491f, 0x30,
-	0x4a16, 0x1f,
-	0x4a18, 0x0f,
-	0x4a1e, 0x01,
-	0x4a1f, 0x30,
-	0x5000, 0x5b,
-	0x5001, 0x28,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0x00,
-	0xc210, 0x00,
-	0xc211, 0x00,
-	0xc231, 0x00,
-	0xc232, 0x01,
-	0xc233, 0x8f,
-	0xc245, 0x00,
-	0xc246, 0x01,
-	0xc247, 0x8f,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x20,
-	0xc49f, 0x20,
-	0xc4a2, 0x3e,
-	0xc4a3, 0x3e,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2a,
-	0xc4c7, 0x2a,
-	0xc4c8, 0x35,
-	0xc4c9, 0x35,
-	0xc4ca, 0x35,
-	0xc4cb, 0x35,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x00,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x11,
-	0xc4e9, 0x11,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x07,
-	0xc4ff, 0x07,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x00,
-	0xc5c4, 0x00,
-	0xc5c5, 0x00,
-	0xc5c6, 0x00,
-	0xc5c7, 0x00,
-	0xc5c8, 0x00,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x40,
-	0xc5cc, 0x40,
-	0xc5cd, 0x40,
-	0xc5ce, 0x40,
-	0xc5fe, 0x04,
-	0xc5ff, 0x06,
-	0x3501, 0x18,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//10_OV50E40_1088x612_4C1SCG_10bit_480fps_AG64_20241202.txt
-static kal_uint16 zhuquec1main_custom6_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 1088 612
-//102 9c1 440
-//102 9c5 264
-//;102 9c2 1000
-//;102 9c6 300
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 1
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0xf9,
-	0x350e, 0x1c,
-	0x350f, 0x40,
-	0x3546, 0xf9,
-	0x354e, 0x1c,
-	0x354f, 0x40,
-	0x3586, 0xf9,
-	0x358e, 0x1c,
-	0x358f, 0x40,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x18,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc2,
-	0x363c, 0xcb,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x00,
-	0x3688, 0x03,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x25,
-	0x3707, 0x04,
-	0x3709, 0x80,
-	0x370b, 0x4a,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x63,
-	0x3715, 0x00,
-	0x3724, 0x88,// ;0107 dinu
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x25,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x4a,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0xa8,
-	0x37d0, 0x66,
-	0x37e3, 0x30,
-	0x3800, 0x07,
-	0x3801, 0x80,
-	0x3802, 0x07,
-	0x3803, 0x30,
-	0x3804, 0x18,
-	0x3805, 0x9f,
-	0x3806, 0x10,
-	0x3807, 0xef,
-	0x3808, 0x04,
-	0x3809, 0x40,
-	0x380a, 0x02,
-	0x380b, 0x64,
-	0x380c, 0x00,
-	0x380d, 0xed,
-	0x380e, 0x02,
-	0x380f, 0x92,
-	0x3811, 0x03,
-	0x3813, 0x06,
-	0x3815, 0x31,
-	0x3820, 0x47,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x04,
-	0x3828, 0x03,
-	0x3830, 0x05,
-	0x3831, 0x00,
-	0x3837, 0x05,
-	0x383f, 0x08,
-	0x384c, 0x00,
-	0x384d, 0xed,
-	0x3889, 0x04,
-	0x388b, 0x06,
-	0x388c, 0x04,
-	0x388d, 0x40,
-	0x388e, 0x02,
-	0x388f, 0x64,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x05,
-	0x3a13, 0x05,
-	0x3a14, 0x05,
-	0x3a15, 0x01,
-	0x3a16, 0x00,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0x00,
-	0x3b02, 0x00,
-	0x3b03, 0x14,
-	0x3b04, 0x19,
-	0x3b05, 0x1d,
-	0x3b08, 0x1f,
-	0x3b14, 0x02,
-	0x3b15, 0x2b,
-	0x3b19, 0x2b,
-	0x3b1a, 0x2c,
-	0x3b1d, 0x00,
-	0x3b22, 0x2c,
-	0x3b25, 0x28,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x29,
-	0x3b33, 0x2a,
-	0x3b34, 0x2a,
-	0x3b38, 0x22,
-	0x3b39, 0x25,
-	0x3b3a, 0x26,
-	0x3b3b, 0x27,
-	0x3b41, 0x14,
-	0x3b42, 0x14,
-	0x3b43, 0x14,
-	0x3b44, 0x14,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x12,
-	0x3b57, 0x12,
-	0x3b58, 0x12,
-	0x3b59, 0x12,
-	0x3b5a, 0x1d,
-	0x3b5b, 0x1d,
-	0x3b5c, 0x1d,
-	0x3b5d, 0x1d,
-	0x3b82, 0x1d,
-	0x3ba0, 0x25,
-	0x3ba1, 0x12,
-	0x3ba2, 0x26,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0x00,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x07,
-	0x4018, 0x03,
-	0x401e, 0x01,
-	0x401f, 0x20,
-	0x40c4, 0x07,
-	0x40c5, 0xff,
-	0x40c6, 0x07,
-	0x40c7, 0xff,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x30,
-	0x4510, 0x00,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x00,
-	0x451b, 0x00,
-	0x451c, 0x00,
-	0x451d, 0x00,
-	0x451e, 0x00,
-	0x451f, 0x00,
-	0x4520, 0x00,
-	0x4521, 0x00,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x80,
-	0x45c1, 0x00,
-	0x45c2, 0x02,
-	0x45c3, 0x00,
-	0x45c4, 0x13,
-	0x45c5, 0x00,
-	0x45c6, 0x00,
-	0x45dd, 0x00,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x08,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x07,
-	0x4918, 0x03,
-	0x491e, 0x01,
-	0x491f, 0x20,
-	0x4a16, 0x07,
-	0x4a18, 0x03,
-	0x4a1e, 0x01,
-	0x4a1f, 0x20,
-	0x5000, 0xab,
-	0x5001, 0xca,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0xaa,
-	0xc210, 0x1f,
-	0xc211, 0x20,
-	0xc231, 0x02,
-	0xc232, 0x01,
-	0xc233, 0xd8,
-	0xc245, 0x02,
-	0xc246, 0x01,
-	0xc247, 0xd8,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x4a,
-	0xc4a3, 0x4a,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2c,
-	0xc4c7, 0x2c,
-	0xc4c8, 0x2c,
-	0xc4c9, 0x2c,
-	0xc4ca, 0x2c,
-	0xc4cb, 0x2c,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x02,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x1d,
-	0xc4e9, 0x12,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x21,
-	0xc4ff, 0x23,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x02,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//11-a_OV50E40_1776x1332_4C2PlusSCG_10bit_24fps_AG64_PDDT_1776x333_20250106.txt
-static kal_uint16 zhuquec1main_custom7_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 1776 1332
-//102 9c1 6f0
-//102 9c5 534
-//102 9c2 6f0
-//102 9c6 14d
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0xf9,
-	0x350e, 0x21,
-	0x350f, 0x80,
-	0x3546, 0xf9,
-	0x354e, 0x21,
-	0x354f, 0x80,
-	0x3586, 0xf9,
-	0x358e, 0x21,
-	0x358f, 0x80,
-	0x3600, 0xc7,
-	0x3608, 0xf3,
-	0x360a, 0xfb,
-	0x3616, 0x18,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc2,
-	0x363c, 0xcb,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x01,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x25,
-	0x3707, 0x04,
-	0x3709, 0x80,
-	0x370b, 0x55,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x65,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0xa0,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x3b,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x25,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x55,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0xa8,
-	0x37d0, 0x66,
-	0x37e3, 0x30,
-	0x3800, 0x09,
-	0x3801, 0x10,
-	0x3802, 0x06,
-	0x3803, 0xd0,
-	0x3804, 0x17,
-	0x3805, 0x0f,
-	0x3806, 0x11,
-	0x3807, 0x4f,
-	0x3808, 0x06,
-	0x3809, 0xf0,
-	0x380a, 0x05,
-	0x380b, 0x34,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x1e,
-	0x380f, 0x84,
-	0x3811, 0x07,
-	0x3813, 0x06,
-	0x3815, 0x11,
-	0x3820, 0x46,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x04,
-	0x3828, 0x05,
-	0x3830, 0x07,
-	0x3831, 0x02,
-	0x3837, 0x07,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x08,
-	0x388b, 0x06,
-	0x388c, 0x06,
-	0x388d, 0xf0,
-	0x388e, 0x05,
-	0x388f, 0x34,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x05,
-	0x3a13, 0x05,
-	0x3a14, 0x05,
-	0x3a15, 0x01,
-	0x3a16, 0x00,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0xfb,
-	0x3b02, 0x02,
-	0x3b03, 0x14,
-	0x3b04, 0x19,
-	0x3b05, 0x1d,
-	0x3b08, 0x1f,
-	0x3b14, 0x02,
-	0x3b15, 0x2b,
-	0x3b19, 0x2b,
-	0x3b1a, 0x2c,
-	0x3b1d, 0x00,
-	0x3b22, 0x2c,
-	0x3b25, 0x28,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x29,
-	0x3b33, 0x2a,
-	0x3b34, 0x2a,
-	0x3b38, 0x22,
-	0x3b39, 0x25,
-	0x3b3a, 0x26,
-	0x3b3b, 0x27,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x12,
-	0x3b57, 0x12,
-	0x3b58, 0x12,
-	0x3b59, 0x12,
-	0x3b5a, 0x1d,
-	0x3b5b, 0x1d,
-	0x3b5c, 0x1d,
-	0x3b5d, 0x1d,
-	0x3b82, 0x1d,
-	0x3ba0, 0x25,
-	0x3ba1, 0x12,
-	0x3ba2, 0x26,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0xa0,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x0f,
-	0x4018, 0x07,
-	0x401e, 0x02,
-	0x401f, 0x80,
-	0x40c4, 0x03,
-	0x40c5, 0x00,
-	0x40c6, 0x06,
-	0x40c7, 0x00,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x15,
-	0x450c, 0x00,
-	0x450d, 0x60,
-	0x4510, 0x07,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x8e,
-	0x45c1, 0x80,
-	0x45c2, 0x0a,
-	0x45c3, 0x14,
-	0x45c4, 0x13,
-	0x45c5, 0xfc,
-	0x45c6, 0x01,
-	0x45dd, 0x60,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x00,
-	0x4641, 0x6f,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x0f,
-	0x4918, 0x07,
-	0x491e, 0x02,
-	0x491f, 0x80,
-	0x4a16, 0x0f,
-	0x4a18, 0x07,
-	0x4a1e, 0x02,
-	0x4a1f, 0x80,
-	0x5000, 0x2b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0xaa,
-	0xc210, 0x1f,
-	0xc211, 0x20,
-	0xc231, 0x02,
-	0xc232, 0x03,
-	0xc233, 0x1e,
-	0xc245, 0x02,
-	0xc246, 0x03,
-	0xc247, 0x1e,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x55,
-	0xc4a3, 0x55,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2c,
-	0xc4c7, 0x2c,
-	0xc4c8, 0x2c,
-	0xc4c9, 0x2c,
-	0xc4ca, 0x2c,
-	0xc4cb, 0x2c,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x02,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x1d,
-	0xc4e9, 0x12,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x21,
-	0xc4ff, 0x23,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x18,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//12_OV50E40_4096x3072_Cropping_Quad_10bit_30fps_AG16_PDDT_2048x768LR_20250206.txt
-static kal_uint16 zhuquec1main_custom8_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 3072
-//102 9c1 1000
-//102 9c5 c00
-//102 9c2 800
-//102 9c6 300
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0xf4,
-	0x0326, 0xd4,
-	0x0327, 0x0b,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0x58,
-	0x350e, 0x00,
-	0x350f, 0x00,
-	0x3546, 0x38,
-	0x354e, 0x00,
-	0x354f, 0x00,
-	0x3586, 0x38,
-	0x358e, 0x00,
-	0x358f, 0x00,
-	0x3600, 0xc7,
-	0x3608, 0xf3,
-	0x360a, 0xbb,
-	0x3616, 0x58,
-	0x361a, 0x56,
-	0x361c, 0x08,
-	0x361e, 0x16,
-	0x363b, 0x14,
-	0x363c, 0xba,
-	0x3645, 0x14,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x03,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x20,
-	0x3707, 0x04,
-	0x3709, 0x9d,
-	0x370b, 0x3e,
-	0x370c, 0x04,
-	0x3712, 0x51,
-	0x3714, 0x74,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x70,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4c,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x20,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x3e,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0x70,
-	0x37d0, 0x00,
-	0x37e3, 0x30,
-	0x3800, 0x08,
-	0x3801, 0x00,
-	0x3802, 0x06,
-	0x3803, 0x00,
-	0x3804, 0x18,
-	0x3805, 0x1f,
-	0x3806, 0x12,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x18,
-	0x380f, 0x68,
-	0x3811, 0x0e,
-	0x3813, 0x10,
-	0x3815, 0x11,
-	0x3820, 0x44,
-	0x3821, 0x00,
-	0x3822, 0x00,
-	0x3823, 0x04,
-	0x3828, 0x14,
-	0x3830, 0x1c,
-	0x3831, 0x00,
-	0x3837, 0x1c,
-	0x383f, 0x08,
-	0x3846, 0x00, //;0214
-	0x3847, 0x00, //;0214
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x10,
-	0x388b, 0x10,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x0c,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x06,
-	0x39ed, 0x04,
-	0x3a0d, 0x00,
-	0x3a13, 0x00,
-	0x3a14, 0x04,
-	0x3a15, 0x01,
-	0x3a16, 0x02,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0x00,
-	0x3b02, 0x00,
-	0x3b03, 0x07,
-	0x3b04, 0x07,
-	0x3b05, 0x07,
-	0x3b08, 0x07,
-	0x3b14, 0x02,
-	0x3b15, 0x07,
-	0x3b19, 0x07,
-	0x3b1a, 0x07,
-	0x3b1d, 0x00,
-	0x3b22, 0x07,
-	0x3b25, 0x07,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x07,
-	0x3b33, 0x07,
-	0x3b34, 0x07,
-	0x3b38, 0x07,
-	0x3b39, 0x07,
-	0x3b3a, 0x07,
-	0x3b3b, 0x07,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x11,
-	0x3b57, 0x11,
-	0x3b58, 0x11,
-	0x3b59, 0x11,
-	0x3b5a, 0x11,
-	0x3b5b, 0x11,
-	0x3b5c, 0x11,
-	0x3b5d, 0x11,
-	0x3b82, 0x11,
-	0x3ba0, 0x07,
-	0x3ba1, 0x11,
-	0x3ba2, 0x07,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0x00,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0xf4,
-	0x4016, 0x1f,
-	0x4018, 0x0f,
-	0x401e, 0x01,
-	0x401f, 0x30,
-	0x40c4, 0x07,
-	0x40c5, 0xff,
-	0x40c6, 0x07,
-	0x40c7, 0xff,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x30,
-	0x4510, 0x03,
-	0x4511, 0x08,
-	0x4512, 0x05,
-	0x4513, 0x05,
-	0x4514, 0xaf,
-	0x4515, 0xaf,
-	0x4516, 0x05,
-	0x4517, 0x05,
-	0x4518, 0xaf,
-	0x4519, 0xaf,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x94,
-	0x45c1, 0xa4,
-	0x45c2, 0x02,
-	0x45c3, 0x07,
-	0x45c4, 0x13,
-	0x45c5, 0x00,
-	0x45c6, 0x04,
-	0x45dd, 0x00,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x00,
-	0x4641, 0x80,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x1f,
-	0x4918, 0x0f,
-	0x491e, 0x01,
-	0x491f, 0x30,
-	0x4a16, 0x1f,
-	0x4a18, 0x0f,
-	0x4a1e, 0x01,
-	0x4a1f, 0x30,
-	0x5000, 0x5b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0x00,
-	0xc210, 0x00,
-	0xc211, 0x00,
-	0xc231, 0x00,
-	0xc232, 0x01,
-	0xc233, 0x8f,
-	0xc245, 0x00,
-	0xc246, 0x01,
-	0xc247, 0x8f,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x20,
-	0xc49f, 0x20,
-	0xc4a2, 0x3e,
-	0xc4a3, 0x3e,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2a,
-	0xc4c7, 0x2a,
-	0xc4c8, 0x35,
-	0xc4c9, 0x35,
-	0xc4ca, 0x35,
-	0xc4cb, 0x35,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x00,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x11,
-	0xc4e9, 0x11,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x07,
-	0xc4ff, 0x07,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x00,
-	0xc5c4, 0x00,
-	0xc5c5, 0x00,
-	0xc5c6, 0x00,
-	0xc5c7, 0x00,
-	0xc5c8, 0x00,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x40,
-	0xc5cc, 0x40,
-	0xc5cd, 0x40,
-	0xc5ce, 0x40,
-	0xc5fe, 0x04,
-	0xc5ff, 0x06,
-	0x3501, 0x18,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-	0x3541, 0x00,
-	0x3542, 0x20,
-	0x3548, 0x0f,
-	0x3549, 0xff,
-	0x3002, 0x00,
-	0x3008, 0x00,
-	0x382e, 0x79,
-	0x368d, 0x00,
-	0x3841, 0x00,
-	0x381a, 0x00,
-	0x381b, 0x00,
-	0x381c, 0x00,
-	0x381d, 0x00,
-	0x381e, 0x00,
-	0x381f, 0x00,
-	0x385b, 0x00,
-//	0x0100, 0x01,
-};
-
-//13_OV50E40_4096x3072_Cropping_10bit_24fps_AG16_PDDT_2048x768LR_20241202.txt
-static kal_uint16 zhuquec1main_custom9_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 3072
-//102 9c1 1000
-//102 9c5 c00
-//102 9c2 800
-//102 9c6 300
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0xf4,
-	0x0326, 0xd4,
-	0x0327, 0x0b,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0x58,
-	0x350e, 0x00,
-	0x350f, 0x00,
-	0x3546, 0x38,
-	0x354e, 0x00,
-	0x354f, 0x00,
-	0x3586, 0x38,
-	0x358e, 0x00,
-	0x358f, 0x00,
-	0x3600, 0xc7,
-	0x3608, 0xf3,
-	0x360a, 0xbb,
-	0x3616, 0x58,
-	0x361a, 0x56,
-	0x361c, 0x08,
-	0x361e, 0x16,
-	0x363b, 0x14,
-	0x363c, 0xba,
-	0x3645, 0x14,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x03,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x20,
-	0x3707, 0x04,
-	0x3709, 0x9d,
-	0x370b, 0x3e,
-	0x370c, 0x04,
-	0x3712, 0x51,
-	0x3714, 0x74,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x70,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4c,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x20,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x3e,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0x70,
-	0x37d0, 0x00,
-	0x37e3, 0x30,
-	0x3800, 0x08,
-	0x3801, 0x00,
-	0x3802, 0x06,
-	0x3803, 0x00,
-	0x3804, 0x18,
-	0x3805, 0x1f,
-	0x3806, 0x12,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x1e,
-	0x380f, 0x84,
-	0x3811, 0x0f,
-	0x3813, 0x10,
-	0x3815, 0x11,
-	0x3820, 0x44,
-	0x3821, 0x00,
-	0x3822, 0x00,
-	0x3823, 0x04,
-	0x3828, 0x14,
-	0x3830, 0x1c,
-	0x3831, 0x00,
-	0x3837, 0x1c,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x10,
-	0x388b, 0x10,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x0c,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x06,
-	0x39ed, 0x04,
-	0x3a0d, 0x00,
-	0x3a13, 0x00,
-	0x3a14, 0x04,
-	0x3a15, 0x01,
-	0x3a16, 0x02,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0x00,
-	0x3b02, 0x00,
-	0x3b03, 0x07,
-	0x3b04, 0x07,
-	0x3b05, 0x07,
-	0x3b08, 0x07,
-	0x3b14, 0x02,
-	0x3b15, 0x07,
-	0x3b19, 0x07,
-	0x3b1a, 0x07,
-	0x3b1d, 0x00,
-	0x3b22, 0x07,
-	0x3b25, 0x07,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x07,
-	0x3b33, 0x07,
-	0x3b34, 0x07,
-	0x3b38, 0x07,
-	0x3b39, 0x07,
-	0x3b3a, 0x07,
-	0x3b3b, 0x07,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x11,
-	0x3b57, 0x11,
-	0x3b58, 0x11,
-	0x3b59, 0x11,
-	0x3b5a, 0x11,
-	0x3b5b, 0x11,
-	0x3b5c, 0x11,
-	0x3b5d, 0x11,
-	0x3b82, 0x11,
-	0x3ba0, 0x07,
-	0x3ba1, 0x11,
-	0x3ba2, 0x07,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0x00,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0xf4,
-	0x4016, 0x1f,
-	0x4018, 0x0f,
-	0x401e, 0x01,
-	0x401f, 0x30,
-	0x40c4, 0x07,
-	0x40c5, 0xff,
-	0x40c6, 0x07,
-	0x40c7, 0xff,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x30,
-	0x4510, 0x03,
-	0x4511, 0x08,
-	0x4512, 0x05,
-	0x4513, 0x05,
-	0x4514, 0xaf,
-	0x4515, 0xaf,
-	0x4516, 0x05,
-	0x4517, 0x05,
-	0x4518, 0xaf,
-	0x4519, 0xaf,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x94,
-	0x45c1, 0xa4,
-	0x45c2, 0x02,
-	0x45c3, 0x07,
-	0x45c4, 0x13,
-	0x45c5, 0x00,
-	0x45c6, 0x04,
-	0x45dd, 0x00,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x00,
-	0x4641, 0x80,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x1f,
-	0x4918, 0x0f,
-	0x491e, 0x01,
-	0x491f, 0x30,
-	0x4a16, 0x1f,
-	0x4a18, 0x0f,
-	0x4a1e, 0x01,
-	0x4a1f, 0x30,
-	0x5000, 0x5b,
-	0x5001, 0x28,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0x00,
-	0xc210, 0x00,
-	0xc211, 0x00,
-	0xc231, 0x00,
-	0xc232, 0x01,
-	0xc233, 0x8f,
-	0xc245, 0x00,
-	0xc246, 0x01,
-	0xc247, 0x8f,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x20,
-	0xc49f, 0x20,
-	0xc4a2, 0x3e,
-	0xc4a3, 0x3e,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2a,
-	0xc4c7, 0x2a,
-	0xc4c8, 0x35,
-	0xc4c9, 0x35,
-	0xc4ca, 0x35,
-	0xc4cb, 0x35,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x00,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x11,
-	0xc4e9, 0x11,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x07,
-	0xc4ff, 0x07,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x00,
-	0xc5c4, 0x00,
-	0xc5c5, 0x00,
-	0xc5c6, 0x00,
-	0xc5c7, 0x00,
-	0xc5c8, 0x00,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x40,
-	0xc5cc, 0x40,
-	0xc5cd, 0x40,
-	0xc5ce, 0x40,
-	0xc5fe, 0x04,
-	0xc5ff, 0x06,
-	0x3501, 0x18,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//14_OV50E40_4096x3072_Cropping_Quad_10bit_24fps_AG16_PDDT_2048x768LR_20241212.txt
-static kal_uint16 zhuquec1main_custom10_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 3072
-//102 9c1 1000
-//102 9c5 c00
-//102 9c2 800
-//102 9c6 300
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0xf4,
-	0x0326, 0xd4,
-	0x0327, 0x0b,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0x58,
-	0x350e, 0x00,
-	0x350f, 0x00,
-	0x3546, 0x38,
-	0x354e, 0x00,
-	0x354f, 0x00,
-	0x3586, 0x38,
-	0x358e, 0x00,
-	0x358f, 0x00,
-	0x3600, 0xc7,
-	0x3608, 0xf3,
-	0x360a, 0xbb,
-	0x3616, 0x58,
-	0x361a, 0x56,
-	0x361c, 0x08,
-	0x361e, 0x16,
-	0x363b, 0x14,
-	0x363c, 0xba,
-	0x3645, 0x14,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x03,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x20,
-	0x3707, 0x04,
-	0x3709, 0x9d,
-	0x370b, 0x3e,
-	0x370c, 0x04,
-	0x3712, 0x51,
-	0x3714, 0x74,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x70,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4c,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x20,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x3e,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0x70,
-	0x37d0, 0x00,
-	0x37e3, 0x30,
-	0x3800, 0x08,
-	0x3801, 0x00,
-	0x3802, 0x06,
-	0x3803, 0x00,
-	0x3804, 0x18,
-	0x3805, 0x1f,
-	0x3806, 0x12,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x1e,
-	0x380f, 0x84,
-	0x3811, 0x0e,
-	0x3813, 0x10,
-	0x3815, 0x11,
-	0x3820, 0x44,
-	0x3821, 0x00,
-	0x3822, 0x00,
-	0x3823, 0x04,
-	0x3828, 0x14,
-	0x3830, 0x1c,
-	0x3831, 0x00,
-	0x3837, 0x1c,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x10,
-	0x388b, 0x10,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x0c,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x06,
-	0x39ed, 0x04,
-	0x3a0d, 0x00,
-	0x3a13, 0x00,
-	0x3a14, 0x04,
-	0x3a15, 0x01,
-	0x3a16, 0x02,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0x00,
-	0x3b02, 0x00,
-	0x3b03, 0x07,
-	0x3b04, 0x07,
-	0x3b05, 0x07,
-	0x3b08, 0x07,
-	0x3b14, 0x02,
-	0x3b15, 0x07,
-	0x3b19, 0x07,
-	0x3b1a, 0x07,
-	0x3b1d, 0x00,
-	0x3b22, 0x07,
-	0x3b25, 0x07,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x07,
-	0x3b33, 0x07,
-	0x3b34, 0x07,
-	0x3b38, 0x07,
-	0x3b39, 0x07,
-	0x3b3a, 0x07,
-	0x3b3b, 0x07,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x11,
-	0x3b57, 0x11,
-	0x3b58, 0x11,
-	0x3b59, 0x11,
-	0x3b5a, 0x11,
-	0x3b5b, 0x11,
-	0x3b5c, 0x11,
-	0x3b5d, 0x11,
-	0x3b82, 0x11,
-	0x3ba0, 0x07,
-	0x3ba1, 0x11,
-	0x3ba2, 0x07,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0x00,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0xf4,
-	0x4016, 0x1f,
-	0x4018, 0x0f,
-	0x401e, 0x01,
-	0x401f, 0x30,
-	0x40c4, 0x07,
-	0x40c5, 0xff,
-	0x40c6, 0x07,
-	0x40c7, 0xff,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x30,
-	0x4510, 0x03,
-	0x4511, 0x08,
-	0x4512, 0x05,
-	0x4513, 0x05,
-	0x4514, 0xaf,
-	0x4515, 0xaf,
-	0x4516, 0x05,
-	0x4517, 0x05,
-	0x4518, 0xaf,
-	0x4519, 0xaf,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x94,
-	0x45c1, 0xa4,
-	0x45c2, 0x02,
-	0x45c3, 0x07,
-	0x45c4, 0x13,
-	0x45c5, 0x00,
-	0x45c6, 0x04,
-	0x45dd, 0x00,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x00,
-	0x4641, 0x80,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x1f,
-	0x4918, 0x0f,
-	0x491e, 0x01,
-	0x491f, 0x30,
-	0x4a16, 0x1f,
-	0x4a18, 0x0f,
-	0x4a1e, 0x01,
-	0x4a1f, 0x30,
-	0x5000, 0x5b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0x00,
-	0xc210, 0x00,
-	0xc211, 0x00,
-	0xc231, 0x00,
-	0xc232, 0x01,
-	0xc233, 0x8f,
-	0xc245, 0x00,
-	0xc246, 0x01,
-	0xc247, 0x8f,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x20,
-	0xc49f, 0x20,
-	0xc4a2, 0x3e,
-	0xc4a3, 0x3e,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2a,
-	0xc4c7, 0x2a,
-	0xc4c8, 0x35,
-	0xc4c9, 0x35,
-	0xc4ca, 0x35,
-	0xc4cb, 0x35,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x00,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x11,
-	0xc4e9, 0x11,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x07,
-	0xc4ff, 0x07,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x00,
-	0xc5c4, 0x00,
-	0xc5c5, 0x00,
-	0xc5c6, 0x00,
-	0xc5c7, 0x00,
-	0xc5c8, 0x00,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x40,
-	0xc5cc, 0x40,
-	0xc5cd, 0x40,
-	0xc5ce, 0x40,
-	0xc5fe, 0x04,
-	0xc5ff, 0x06,
-	0x3501, 0x18,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//15_OV50E40_4096x2304_Cropping_10bit_30fps_AG16_PDDT_2048x576LR_20241202.txt
-static kal_uint16 zhuquec1main_custom11_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 2304
-//102 9c1 1000
-//102 9c5 900
-//102 9c2 800
-//102 9c6 240
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0xf4,
-	0x0326, 0xd4,
-	0x0327, 0x0b,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0x58,
-	0x350e, 0x00,
-	0x350f, 0x00,
-	0x3546, 0x38,
-	0x354e, 0x00,
-	0x354f, 0x00,
-	0x3586, 0x38,
-	0x358e, 0x00,
-	0x358f, 0x00,
-	0x3600, 0xc7,
-	0x3608, 0xf3,
-	0x360a, 0xbb,
-	0x3616, 0x58,
-	0x361a, 0x56,
-	0x361c, 0x08,
-	0x361e, 0x16,
-	0x363b, 0x14,
-	0x363c, 0xba,
-	0x3645, 0x14,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x03,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x20,
-	0x3707, 0x04,
-	0x3709, 0x9d,
-	0x370b, 0x3e,
-	0x370c, 0x04,
-	0x3712, 0x51,
-	0x3714, 0x74,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x70,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4c,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x20,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x3e,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0x70,
-	0x37d0, 0x00,
-	0x37e3, 0x30,
-	0x3800, 0x08,
-	0x3801, 0x00,
-	0x3802, 0x07,
-	0x3803, 0x80,
-	0x3804, 0x18,
-	0x3805, 0x1f,
-	0x3806, 0x10,
-	0x3807, 0x9f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x09,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x18,
-	0x380f, 0x68,
-	0x3811, 0x0f,
-	0x3813, 0x10,
-	0x3815, 0x11,
-	0x3820, 0x44,
-	0x3821, 0x00,
-	0x3822, 0x00,
-	0x3823, 0x04,
-	0x3828, 0x14,
-	0x3830, 0x1c,
-	0x3831, 0x00,
-	0x3837, 0x1c,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x10,
-	0x388b, 0x10,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x09,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x06,
-	0x39ed, 0x04,
-	0x3a0d, 0x00,
-	0x3a13, 0x00,
-	0x3a14, 0x04,
-	0x3a15, 0x01,
-	0x3a16, 0x02,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0x00,
-	0x3b02, 0x00,
-	0x3b03, 0x07,
-	0x3b04, 0x07,
-	0x3b05, 0x07,
-	0x3b08, 0x07,
-	0x3b14, 0x02,
-	0x3b15, 0x07,
-	0x3b19, 0x07,
-	0x3b1a, 0x07,
-	0x3b1d, 0x00,
-	0x3b22, 0x07,
-	0x3b25, 0x07,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x07,
-	0x3b33, 0x07,
-	0x3b34, 0x07,
-	0x3b38, 0x07,
-	0x3b39, 0x07,
-	0x3b3a, 0x07,
-	0x3b3b, 0x07,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x11,
-	0x3b57, 0x11,
-	0x3b58, 0x11,
-	0x3b59, 0x11,
-	0x3b5a, 0x11,
-	0x3b5b, 0x11,
-	0x3b5c, 0x11,
-	0x3b5d, 0x11,
-	0x3b82, 0x11,
-	0x3ba0, 0x07,
-	0x3ba1, 0x11,
-	0x3ba2, 0x07,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0x00,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0xf4,
-	0x4016, 0x1f,
-	0x4018, 0x0f,
-	0x401e, 0x01,
-	0x401f, 0x30,
-	0x40c4, 0x07,
-	0x40c5, 0xff,
-	0x40c6, 0x07,
-	0x40c7, 0xff,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x30,
-	0x4510, 0x03,
-	0x4511, 0x08,
-	0x4512, 0x05,
-	0x4513, 0x05,
-	0x4514, 0xaf,
-	0x4515, 0xaf,
-	0x4516, 0x05,
-	0x4517, 0x05,
-	0x4518, 0xaf,
-	0x4519, 0xaf,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x94,
-	0x45c1, 0xa4,
-	0x45c2, 0x02,
-	0x45c3, 0x07,
-	0x45c4, 0x13,
-	0x45c5, 0x00,
-	0x45c6, 0x04,
-	0x45dd, 0x00,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x00,
-	0x4641, 0x80,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x1f,
-	0x4918, 0x0f,
-	0x491e, 0x01,
-	0x491f, 0x30,
-	0x4a16, 0x1f,
-	0x4a18, 0x0f,
-	0x4a1e, 0x01,
-	0x4a1f, 0x30,
-	0x5000, 0x5b,
-	0x5001, 0x28,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0x00,
-	0xc210, 0x00,
-	0xc211, 0x00,
-	0xc231, 0x00,
-	0xc232, 0x01,
-	0xc233, 0x8f,
-	0xc245, 0x00,
-	0xc246, 0x01,
-	0xc247, 0x8f,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x20,
-	0xc49f, 0x20,
-	0xc4a2, 0x3e,
-	0xc4a3, 0x3e,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2a,
-	0xc4c7, 0x2a,
-	0xc4c8, 0x35,
-	0xc4c9, 0x35,
-	0xc4ca, 0x35,
-	0xc4cb, 0x35,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x00,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x11,
-	0xc4e9, 0x11,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x07,
-	0xc4ff, 0x07,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x00,
-	0xc5c4, 0x00,
-	0xc5c5, 0x00,
-	0xc5c6, 0x00,
-	0xc5c7, 0x00,
-	0xc5c8, 0x00,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x40,
-	0xc5cc, 0x40,
-	0xc5cd, 0x40,
-	0xc5ce, 0x40,
-	0xc5fe, 0x04,
-	0xc5ff, 0x06,
-	0x3501, 0x18,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//16_OV50E40_4096x2048_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x512_20241202.txt
-static kal_uint16 zhuquec1main_custom12_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 2048
-//102 9c1 1000
-//102 9c5 800
-//102 9c2 1000
-//102 9c6 200
-//;102 9c3 1000
-//;102 9c7 600
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 3
-//110 40 1
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0xf9,
-	0x350e, 0x21,
-	0x350f, 0x80,
-	0x3546, 0xf9,
-	0x354e, 0x21,
-	0x354f, 0x80,
-	0x3586, 0xf9,
-	0x358e, 0x21,
-	0x358f, 0x80,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x18,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc2,
-	0x363c, 0xcb,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x01,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x25,
-	0x3707, 0x04,
-	0x3709, 0x80,
-	0x370b, 0x55,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x65,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0xa0,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x3b,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x25,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x55,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0xa8,
-	0x37d0, 0x66,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x04,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x14,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x08,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x18,
-	0x380f, 0x68,
-	0x3811, 0x07,
-	0x3813, 0x08,
-	0x3815, 0x11,
-	0x3820, 0x46,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x04,
-	0x3828, 0x05,
-	0x3830, 0x07,
-	0x3831, 0x02,
-	0x3837, 0x07,
-	0x383f, 0x08,
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x08,
-	0x388b, 0x08,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x08,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x05,
-	0x3a13, 0x05,
-	0x3a14, 0x05,
-	0x3a15, 0x01,
-	0x3a16, 0x00,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0xfb,
-	0x3b02, 0x02,
-	0x3b03, 0x14,
-	0x3b04, 0x19,
-	0x3b05, 0x1d,
-	0x3b08, 0x1f,
-	0x3b14, 0x02,
-	0x3b15, 0x2b,
-	0x3b19, 0x2b,
-	0x3b1a, 0x2c,
-	0x3b1d, 0x00,
-	0x3b22, 0x2c,
-	0x3b25, 0x28,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x29,
-	0x3b33, 0x2a,
-	0x3b34, 0x2a,
-	0x3b38, 0x22,
-	0x3b39, 0x25,
-	0x3b3a, 0x26,
-	0x3b3b, 0x27,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x12,
-	0x3b57, 0x12,
-	0x3b58, 0x12,
-	0x3b59, 0x12,
-	0x3b5a, 0x1d,
-	0x3b5b, 0x1d,
-	0x3b5c, 0x1d,
-	0x3b5d, 0x1d,
-	0x3b82, 0x1d,
-	0x3ba0, 0x25,
-	0x3ba1, 0x12,
-	0x3ba2, 0x26,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0xa0,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x0f,
-	0x4018, 0x07,
-	0x401e, 0x02,
-	0x401f, 0x80,
-	0x40c4, 0x03,
-	0x40c5, 0x00,
-	0x40c6, 0x06,
-	0x40c7, 0x00,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x15,
-	0x450c, 0x00,
-	0x450d, 0x60,
-	0x4510, 0x07,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x8e,
-	0x45c1, 0x80,
-	0x45c2, 0x0a,
-	0x45c3, 0x14,
-	0x45c4, 0x13,
-	0x45c5, 0x40,
-	0x45c6, 0x04,
-	0x45dd, 0x60,
-	0x4602, 0x00,
-	0x4603, 0x11,
-	0x460b, 0x07,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x0f,
-	0x4918, 0x07,
-	0x491e, 0x02,
-	0x491f, 0x80,
-	0x4a16, 0x0f,
-	0x4a18, 0x07,
-	0x4a1e, 0x02,
-	0x4a1f, 0x80,
-	0x5000, 0x2b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0xaa,
-	0xc210, 0x1f,
-	0xc211, 0x20,
-	0xc231, 0x02,
-	0xc232, 0x03,
-	0xc233, 0x1e,
-	0xc245, 0x02,
-	0xc246, 0x03,
-	0xc247, 0x1e,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x55,
-	0xc4a3, 0x55,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2c,
-	0xc4c7, 0x2c,
-	0xc4c8, 0x2c,
-	0xc4c9, 0x2c,
-	0xc4ca, 0x2c,
-	0xc4cb, 0x2c,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x02,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x1d,
-	0xc4e9, 0x12,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x21,
-	0xc4ff, 0x23,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x18,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-//	0x0100, 0x01,
-};
-
-//17_OV50E40_4096x2304_4C2PlusDCG_10bit_30fps_AG64_PDDT_4096x576_20250211.txt
-static kal_uint16 zhuquec1main_custom13_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 2304
-//102 9c1 1000
-//102 9c5 900
-//102 9c2 1000
-//102 9c6 240
-//102 9c3 1000
-//102 9c7 900
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 7
-//110 40 3
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0x50,
-	0x350e, 0x21,
-	0x350f, 0x80,
-	0x3546, 0x50,
-	0x354e, 0x21,
-	0x354f, 0x80,
-	0x3586, 0x50,
-	0x358e, 0x21,
-	0x358f, 0x80,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x58,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc0,
-	0x363c, 0xc0,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x01,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x27,
-	0x3707, 0x04,
-	0x3709, 0xc6,
-	0x370b, 0x40,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x65,
-	0x3715, 0x00,
-	0x3724, 0x38,
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x10,
-	0x3755, 0x84,
-	0x3756, 0x00,
-	0x3757, 0x70,
-	0x3758, 0x00,
-	0x3759, 0xf0,
-	0x375e, 0xcb,
-	0x375f, 0x22,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x03,
-	0x3782, 0x03,
-	0x3785, 0x04,
-	0x3786, 0x04,
-	0x3789, 0x03,
-	0x378a, 0x03,
-	0x378d, 0x04,
-	0x378e, 0x04,
-	0x3791, 0x27,
-	0x3793, 0x5d,
-	0x3795, 0x5d,
-	0x3797, 0x40,
-	0x3799, 0x8d,
-	0x379b, 0x8d,
-	0x37a0, 0xc6,
-	0x37d0, 0x22,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x03,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x15,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x09,
-	0x380b, 0x00,
-	0x380c, 0x03,
-	0x380d, 0x07,
-	0x380e, 0x0c,
-	0x380f, 0x98,
-	0x3811, 0x07,
-	0x3813, 0x08,
-	0x3815, 0x11,
-	0x3820, 0x46,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x06,
-	0x3828, 0x05,
-	0x3830, 0x07,
-	0x3831, 0x02,
-	0x3837, 0x07,
-	0x383f, 0x08,
-	0x384c, 0x03,
-	0x384d, 0x07,
-	0x3889, 0x08,
-	0x388b, 0x08,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x09,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0xe0,
-	0x398b, 0x00,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x0d,
-	0x3a13, 0x0d,
-	0x3a14, 0x0d,
-	0x3a15, 0x09,
-	0x3a16, 0x07,
-	0x3a17, 0x08,
-	0x3a2a, 0x24,
-	0x3a2e, 0x24,
-	0x3a2f, 0x38,
-	0x3a30, 0x38,
-	0x3a31, 0x38,
-	0x3a32, 0x38,
-	0x3a34, 0x38,
-	0x3a35, 0x38,
-	0x3a36, 0x38,
-	0x3a37, 0x38,
-	0x3a40, 0x24,
-	0x3a42, 0x24,
-	0x3a43, 0x38,
-	0x3a44, 0x38,
-	0x3a45, 0x38,
-	0x3a46, 0x38,
-	0x3a48, 0x38,
-	0x3a49, 0x38,
-	0x3a4a, 0x38,
-	0x3a4b, 0x38,
-	0x3a5e, 0x3b,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x01,
-	0x3afe, 0x04,
-	0x3aff, 0x01,
-	0x3b00, 0x04,
-	0x3b01, 0xcb,
-	0x3b02, 0x02,
-	0x3b03, 0x10,
-	0x3b04, 0x10,
-	0x3b05, 0x10,
-	0x3b08, 0x10,
-	0x3b14, 0x02,
-	0x3b15, 0x10,
-	0x3b19, 0x10,
-	0x3b1a, 0x10,
-	0x3b1d, 0x00,
-	0x3b22, 0x10,
-	0x3b25, 0x10,
-	0x3b2b, 0x0f,
-	0x3b2c, 0x10,
-	0x3b2d, 0x10,
-	0x3b32, 0x10,
-	0x3b33, 0x10,
-	0x3b34, 0x10,
-	0x3b38, 0x10,
-	0x3b39, 0x10,
-	0x3b3a, 0x10,
-	0x3b3b, 0x10,
-	0x3b41, 0x10,
-	0x3b42, 0x10,
-	0x3b43, 0x10,
-	0x3b44, 0x10,
-	0x3b45, 0x0e,
-	0x3b49, 0x0e,
-	0x3b56, 0x13,
-	0x3b57, 0x13,
-	0x3b58, 0x13,
-	0x3b59, 0x13,
-	0x3b5a, 0x13,
-	0x3b5b, 0x13,
-	0x3b5c, 0x13,
-	0x3b5d, 0x13,
-	0x3b82, 0x13,
-	0x3ba0, 0x10,
-	0x3ba1, 0x13,
-	0x3ba2, 0x10,
-	0x3bab, 0x2a,
-	0x3baf, 0x56,
-	0x3bf2, 0x33,
-	0x3bfa, 0xa0,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x0f,
-	0x4018, 0x07,
-	0x401e, 0x02,
-	0x401f, 0x80,
-	0x40c4, 0x03,
-	0x40c5, 0x00,
-	0x40c6, 0x06,
-	0x40c7, 0x00,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x15,
-	0x450c, 0x00,
-	0x450d, 0x60,
-	0x4510, 0x07,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x8e,
-	0x45c1, 0x80,
-	0x45c2, 0x0a,
-	0x45c3, 0x14,
-	0x45c4, 0x13,
-	0x45c5, 0x40,
-	0x45c6, 0x04,
-	0x45dd, 0x60,
-	0x4602, 0x00,
-	0x4603, 0x05,
-	0x460b, 0x07,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x0f,
-	0x4918, 0x07,
-	0x491e, 0x02,
-	0x491f, 0x80,
-	0x4a16, 0x0f,
-	0x4a18, 0x07,
-	0x4a1e, 0x02,
-	0x4a1f, 0x80,
-	0x5000, 0x2b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0x00,
-	0xc210, 0x00,
-	0xc211, 0x00,
-	0xc231, 0x00,
-	0xc232, 0x00,
-	0xc233, 0x00,
-	0xc245, 0x00,
-	0xc246, 0x00,
-	0xc247, 0x00,
-	0xc40f, 0x10,
-	0xc46d, 0x00,
-	0xc48f, 0x00,
-	0xc49c, 0x1c,
-	0xc49e, 0x5d,
-	0xc49f, 0x5d,
-	0xc4a2, 0x8d,
-	0xc4a3, 0x8d,
-	0xc4ae, 0xff,
-	0xc4af, 0x10,
-	0xc4b0, 0x10,
-	0xc4b1, 0x10,
-	0xc4b2, 0x10,
-	0xc4c2, 0x77,
-	0xc4c3, 0x77,
-	0xc4c4, 0x77,
-	0xc4c6, 0x18,
-	0xc4c7, 0x18,
-	0xc4c8, 0x18,
-	0xc4c9, 0x18,
-	0xc4ca, 0x18,
-	0xc4cb, 0x18,
-	0xc4ce, 0x0e,
-	0xc4cf, 0x0a,
-	0xc4d0, 0x07,
-	0xc4d1, 0x08,
-	0xc4e0, 0x10,
-	0xc4e1, 0x10,
-	0xc4e2, 0x10,
-	0xc4e3, 0x13,
-	0xc4e9, 0x13,
-	0xc4ed, 0x10,
-	0xc4ee, 0x10,
-	0xc4fa, 0x10,
-	0xc4fb, 0x10,
-	0xc4fe, 0x10,
-	0xc4ff, 0x10,
-	0xc50f, 0x5c,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2a,
-	0xc51e, 0x2a,
-	0xc51f, 0x2a,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x08,
-	0xc52d, 0x07,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0b,
-	0xc534, 0x08,
-	0xc535, 0x06,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x0c,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-	0x3541, 0x0c,
-	0x3542, 0x00,
-	0x3548, 0x01,
-	0x3549, 0x00,
-	//0x0100, 0x01,
-};
-
-//18_OV50E40_4096x3072_4C2PlusSCG_STG2_10bit_30fps_AG64_PDDT_4096x768_20250214.txt
-static kal_uint16 zhuquec1main_custom14_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 3072
-//102 9c1 1000
-//102 9c5 c00
-//102 9c2 1000
-//102 9c6 300
-//102 9c3 1000
-//102 9c7 c00
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 7
-//110 40 3
-	0x0324, 0x01,
-	0x0325, 0x91,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x3d,
-	0x3506, 0x51,
-	0x350e, 0x21,
-	0x350f, 0x80,
-	0x3546, 0x51,
-	0x354e, 0x21,
-	0x354f, 0x80,
-	0x3586, 0xf9,
-	0x358e, 0x21,
-	0x358f, 0x80,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x18,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc2,
-	0x363c, 0xcb,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x01,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x25,
-	0x3707, 0x48,
-	0x3709, 0x80,
-	0x370b, 0x55,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x65,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0xa0,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x3b,
-	0x375f, 0x02,
-	0x3763, 0x30,
-	0x376c, 0x30,
-	0x3780, 0x4f,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x25,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x55,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0xa8,
-	0x37d0, 0x66,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x18,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x0c,
-	0x380f, 0x3c,
-	0x3811, 0x07,
-	0x3813, 0x08,
-	0x3815, 0x11,
-	0x3820, 0x46,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x8c, //;84
-	0x3828, 0x05,
-	0x3830, 0x07,
-	0x3831, 0x02,
-	0x3837, 0x08,
-	0x383f, 0x48,
-	0x3846, 0x01, //;0214
-	0x3847, 0xec, //;0214
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x08,
-	0x388b, 0x08,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x0c,
-	0x388f, 0x00,
-	0x3896, 0x30,
-	0x3917, 0x03,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x05,
-	0x3a13, 0x05,
-	0x3a14, 0x05,
-	0x3a15, 0x01,
-	0x3a16, 0x00,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0xfb,
-	0x3b02, 0x02,
-	0x3b03, 0x14,
-	0x3b04, 0x19,
-	0x3b05, 0x1d,
-	0x3b08, 0x1f,
-	0x3b14, 0x02,
-	0x3b15, 0x2b,
-	0x3b19, 0x2b,
-	0x3b1a, 0x2c,
-	0x3b1d, 0x00,
-	0x3b22, 0x2c,
-	0x3b25, 0x28,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x29,
-	0x3b33, 0x2a,
-	0x3b34, 0x2a,
-	0x3b38, 0x22,
-	0x3b39, 0x25,
-	0x3b3a, 0x26,
-	0x3b3b, 0x27,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x12,
-	0x3b57, 0x12,
-	0x3b58, 0x12,
-	0x3b59, 0x12,
-	0x3b5a, 0x1d,
-	0x3b5b, 0x1d,
-	0x3b5c, 0x1d,
-	0x3b5d, 0x1d,
-	0x3b82, 0x1d,
-	0x3ba0, 0x25,
-	0x3ba1, 0x12,
-	0x3ba2, 0x26,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0xa0,
-	0x3bff, 0x08,
-	0x4010, 0xe8,// ;28 if exp_m is longer than image height
-	0x4012, 0x84,
-	0x4016, 0x0f,
-	0x4018, 0x07,
-	0x401e, 0x02,
-	0x401f, 0x80,
-	0x40c4, 0x03,
-	0x40c5, 0x00,
-	0x40c6, 0x06,
-	0x40c7, 0x00,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x00,// ;01 if exp_m is longer than image height
-	0x4509, 0x15,
-	0x450c, 0x80,// ;00 if exp_m is longer than image height
-	0x450d, 0x60,
-	0x4510, 0x07,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x8e,
-	0x45c1, 0x80,
-	0x45c2, 0x0a,
-	0x45c3, 0x14,
-	0x45c4, 0x13,
-	0x45c5, 0x40,
-	0x45c6, 0x04,
-	0x45dd, 0x60,
-	0x4602, 0x08,
-	0x4603, 0x01,
-	0x460b, 0x06,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x0f,
-	0x4918, 0x07,
-	0x491e, 0x02,
-	0x491f, 0x80,
-	0x4a16, 0x0f,
-	0x4a18, 0x07,
-	0x4a1e, 0x02,
-	0x4a1f, 0x80,
-	0x5000, 0x2b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0xaa,
-	0xc210, 0x1f,
-	0xc211, 0x20,
-	0xc231, 0x02,
-	0xc232, 0x03,
-	0xc233, 0x1e,
-	0xc245, 0x02,
-	0xc246, 0x03,
-	0xc247, 0x1e,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x55,
-	0xc4a3, 0x55,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2c,
-	0xc4c7, 0x2c,
-	0xc4c8, 0x2c,
-	0xc4c9, 0x2c,
-	0xc4ca, 0x2c,
-	0xc4cb, 0x2c,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x02,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x1d,
-	0xc4e9, 0x12,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x21,
-	0xc4ff, 0x23,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x03,
-	0xc527, 0x03,
-	0xc528, 0x03,
-	0xc529, 0x03,
-	0xc52a, 0x04,
-	0xc52b, 0x04,
-	0xc52c, 0x04,
-	0xc52d, 0x04,
-	0xc52e, 0x09,
-	0xc52f, 0x09,
-	0xc530, 0x09,
-	0xc531, 0x09,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x06,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-	0x3541, 0x03,
-	0x3542, 0x00,
-	0x3548, 0x01,
-	0x3549, 0x00,
-	0x3002, 0x00,
-	0x3008, 0x00,
-	0x382e, 0x79,
-	0x368d, 0x00,
-	0x3841, 0x00,
-	0x381a, 0x00,
-	0x381b, 0x00,
-	0x381c, 0x00,
-	0x381d, 0x00,
-	0x381e, 0x00,
-	0x381f, 0x00,
-	0x385b, 0x00,
-//  0x0100, 0x01,
-};
-
-//19_OV50E40_4096x3072_Cropping_Quad_STG2_10bit_30fps_AG16_PDDT_2048x768LR_20250218.txt
-static kal_uint16 zhuquec1main_custom15_setting[] = {
-	0x0100, 0x00,
-//102 670 100
-//100 99 4096 3072
-//102 9c1 1000
-//102 9c5 c00
-//102 9c2 800
-//102 9c6 300
-//102 9c3 1000
-//102 9c7 c00
-//110 40 0
-//102 baf 0
-//110 58 8000000
-//110 5a 4000000
-//110 5c 4000000
-//110 5e 4000000
-//110 44 2b
-//110 46 30
-//110 4c 6b
-//110 80 10
-//102 670 100
-//110 42 7
-//110 40 3
-	0x0324, 0x01,
-	0x0325, 0xff,
-	0x0326, 0xd4,
-	0x0327, 0x0b,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x3d,
-	0x3506, 0x58,
-	0x350e, 0x00,
-	0x350f, 0x00,
-	0x3546, 0x38,
-	0x354e, 0x00,
-	0x354f, 0x00,
-	0x3586, 0x38,
-	0x358e, 0x00,
-	0x358f, 0x00,
-	0x3600, 0xc7,
-	0x3608, 0xf3,
-	0x360a, 0xbb,
-	0x3616, 0x58,
-	0x361a, 0x56,
-	0x361c, 0x08,
-	0x361e, 0x16,
-	0x363b, 0x14,
-	0x363c, 0xba,
-	0x3645, 0x14,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x03,
-	0x369a, 0x00,
-	0x36d0, 0x01,
-	0x3706, 0x20,
-	0x3707, 0x04,
-	0x3709, 0x9d,
-	0x370b, 0x3e,
-	0x370c, 0x04,
-	0x3712, 0x51,
-	0x3714, 0x74,
-	0x3715, 0x00,
-	0x3724, 0x28,// ;0107
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x50,
-	0x3755, 0x70,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x50,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4c,
-	0x3781, 0x00,
-	0x3782, 0x01,
-	0x3785, 0x01,
-	0x3786, 0x01,
-	0x3789, 0x01,
-	0x378a, 0x01,
-	0x378d, 0x01,
-	0x378e, 0x01,
-	0x3791, 0x20,
-	0x3793, 0x1c,
-	0x3795, 0x1c,
-	0x3797, 0x3e,
-	0x3799, 0x3c,
-	0x379b, 0x3c,
-	0x37a0, 0x70,
-	0x37d0, 0x00,
-	0x37e3, 0x30,
-	0x3800, 0x08,
-	0x3801, 0x00,
-	0x3802, 0x06,
-	0x3803, 0x00,
-	0x3804, 0x18,
-	0x3805, 0x1f,
-	0x3806, 0x12,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x90,
-	0x380e, 0x0c,
-	0x380f, 0x78,
-	0x3811, 0x0e,
-	0x3813, 0x10,
-	0x3815, 0x11,
-	0x3820, 0x44,
-	0x3821, 0x00,
-	0x3822, 0x00,
-	0x3823, 0x8c,
-	0x3828, 0x14,
-	0x3830, 0x1c,
-	0x3831, 0x00,
-	0x3837, 0x1d,
-	0x383f, 0x48,
-	0x3846, 0x03, //;0214
-	0x3847, 0xe2, //;0214
-	0x384c, 0x01,
-	0x384d, 0x90,
-	0x3889, 0x10,
-	0x388b, 0x10,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x0c,
-	0x388f, 0x00,
-	0x3896, 0x30,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0x20,
-	0x398b, 0x80,
-	0x39ec, 0x06,
-	0x39ed, 0x04,
-	0x3a0d, 0x00,
-	0x3a13, 0x00,
-	0x3a14, 0x04,
-	0x3a15, 0x01,
-	0x3a16, 0x02,
-	0x3a17, 0x00,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x50,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x04,
-	0x3afe, 0x09,
-	0x3aff, 0x04,
-	0x3b00, 0x09,
-	0x3b01, 0x00,
-	0x3b02, 0x00,
-	0x3b03, 0x07,
-	0x3b04, 0x07,
-	0x3b05, 0x07,
-	0x3b08, 0x07,
-	0x3b14, 0x02,
-	0x3b15, 0x07,
-	0x3b19, 0x07,
-	0x3b1a, 0x07,
-	0x3b1d, 0x00,
-	0x3b22, 0x07,
-	0x3b25, 0x07,
-	0x3b2b, 0x00,
-	0x3b2c, 0x00,
-	0x3b2d, 0x04,
-	0x3b32, 0x07,
-	0x3b33, 0x07,
-	0x3b34, 0x07,
-	0x3b38, 0x07,
-	0x3b39, 0x07,
-	0x3b3a, 0x07,
-	0x3b3b, 0x07,
-	0x3b41, 0x07,
-	0x3b42, 0x07,
-	0x3b43, 0x07,
-	0x3b44, 0x07,
-	0x3b45, 0x00,
-	0x3b49, 0x00,
-	0x3b56, 0x11,
-	0x3b57, 0x11,
-	0x3b58, 0x11,
-	0x3b59, 0x11,
-	0x3b5a, 0x11,
-	0x3b5b, 0x11,
-	0x3b5c, 0x11,
-	0x3b5d, 0x11,
-	0x3b82, 0x11,
-	0x3ba0, 0x07,
-	0x3ba1, 0x11,
-	0x3ba2, 0x07,
-	0x3bab, 0x2c,
-	0x3baf, 0x58,
-	0x3bf2, 0x33,
-	0x3bfa, 0x00,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0xf4,
-	0x4016, 0x1f,
-	0x4018, 0x0f,
-	0x401e, 0x01,
-	0x401f, 0x30,
-	0x40c4, 0x07,
-	0x40c5, 0xff,
-	0x40c6, 0x07,
-	0x40c7, 0xff,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x04,
-	0x450c, 0x00,
-	0x450d, 0x00,
-	0x4510, 0x03,
-	0x4511, 0x08,
-	0x4512, 0x05,
-	0x4513, 0x05,
-	0x4514, 0xaf,
-	0x4515, 0xaf,
-	0x4516, 0x05,
-	0x4517, 0x05,
-	0x4518, 0xaf,
-	0x4519, 0xaf,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x40,
-	0x45c0, 0x94,
-	0x45c1, 0xa4,
-	0x45c2, 0x02,
-	0x45c3, 0x07,
-	0x45c4, 0x13,
-	0x45c5, 0x00,
-	0x45c6, 0x04,
-	0x45dd, 0x00,
-	0x4602, 0x08,
-	0x4603, 0x01,
-	0x460b, 0x06,
-	0x4640, 0x00,
-	0x4641, 0x80,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x1f,
-	0x4918, 0x0f,
-	0x491e, 0x01,
-	0x491f, 0x30,
-	0x4a16, 0x1f,
-	0x4a18, 0x0f,
-	0x4a1e, 0x01,
-	0x4a1f, 0x30,
-	0x5000, 0x5b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0x00,
-	0xc210, 0x00,
-	0xc211, 0x00,
-	0xc231, 0x00,
-	0xc232, 0x01,
-	0xc233, 0x8f,
-	0xc245, 0x00,
-	0xc246, 0x01,
-	0xc247, 0x8f,
-	0xc40f, 0x07,
-	0xc46d, 0x55,
-	0xc48f, 0x3f,
-	0xc49c, 0x08,
-	0xc49e, 0x20,
-	0xc49f, 0x20,
-	0xc4a2, 0x3e,
-	0xc4a3, 0x3e,
-	0xc4ae, 0x00,
-	0xc4af, 0x00,
-	0xc4b0, 0x00,
-	0xc4b1, 0x00,
-	0xc4b2, 0x00,
-	0xc4c2, 0x07,
-	0xc4c3, 0x07,
-	0xc4c4, 0x07,
-	0xc4c6, 0x2a,
-	0xc4c7, 0x2a,
-	0xc4c8, 0x35,
-	0xc4c9, 0x35,
-	0xc4ca, 0x35,
-	0xc4cb, 0x35,
-	0xc4ce, 0x03,
-	0xc4cf, 0x01,
-	0xc4d0, 0x00,
-	0xc4d1, 0x00,
-	0xc4e0, 0x07,
-	0xc4e1, 0x07,
-	0xc4e2, 0x07,
-	0xc4e3, 0x11,
-	0xc4e9, 0x11,
-	0xc4ed, 0x07,
-	0xc4ee, 0x07,
-	0xc4fa, 0x07,
-	0xc4fb, 0x07,
-	0xc4fe, 0x07,
-	0xc4ff, 0x07,
-	0xc50f, 0x58,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2c,
-	0xc51e, 0x2c,
-	0xc51f, 0x2c,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x0e,
-	0xc52d, 0x0e,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0e,
-	0xc534, 0x0e,
-	0xc535, 0x0e,
-	0xc5c3, 0x00,
-	0xc5c4, 0x00,
-	0xc5c5, 0x00,
-	0xc5c6, 0x00,
-	0xc5c7, 0x00,
-	0xc5c8, 0x00,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x40,
-	0xc5cc, 0x40,
-	0xc5cd, 0x40,
-	0xc5ce, 0x40,
-	0xc5fe, 0x04,
-	0xc5ff, 0x06,
-	0x3501, 0x06,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-	0x3541, 0x03,
-	0x3542, 0x00,
-	0x3548, 0x01,
-	0x3549, 0x00,
-//VSYNC pad output
-	0x3002, 0x00,
-	0x3008, 0x00,
-	0x382e, 0x79,
-	0x368d, 0x00,
-	0x3841, 0x00,
-	0x381a, 0x00,
-	0x381b, 0x00,
-	0x381c, 0x00,
-	0x381d, 0x00,
-	0x381e, 0x00,
-	0x381f, 0x00,
-	0x385b, 0x00,
-//	0x0100, 0x01,
-};
-
-//20_OV50E40_4096x3072_4C2PlusDCG_10bit_30fps_AG16_PDDT_4096x768_20250116.txt
-static kal_uint16 zhuquec1main_custom16_setting[] = {
-	0x0100, 0x00,
-// 102 670 100
-// 100 99 4096 3072
-// 102 9c1 1000
-// 102 9c5 c00
-// 102 9c2 1000
-// 102 9c6 300
-// 102 9c3 1000
-// 102 9c7 c00
-// 110 40 0
-// 102 baf 0
-// 110 58 8000000
-// 110 5a 4000000
-// 110 5c 4000000
-// 110 5e 4000000
-// 110 44 2b
-// 110 46 30
-// 110 4c 6b
-// 110 80 10
-// 102 670 100
-// 110 42 7
-// 110 40 3
-	0x0324, 0x01,
-	0x0325, 0x90,
-	0x0326, 0xd3,
-	0x0327, 0x05,
-	0x0360, 0x09,
-	0x3025, 0x03,
-	0x3400, 0x04,
-	0x3506, 0x50,
-	0x350e, 0x21,
-	0x350f, 0x80,
-	0x3546, 0x50,
-	0x354e, 0x21,
-	0x354f, 0x80,
-	0x3586, 0x50,
-	0x358e, 0x21,
-	0x358f, 0x80,
-	0x3600, 0x07,
-	0x3608, 0xf0,
-	0x360a, 0xff,
-	0x3616, 0x58,
-	0x361a, 0x56,
-	0x361c, 0x00,
-	0x361e, 0x14,
-	0x363b, 0xc0,
-	0x363c, 0xc0,
-	0x3645, 0x10,
-	0x3680, 0x00,
-	0x3682, 0x80,
-	0x3684, 0x01,
-	0x3688, 0x01,
-	0x369a, 0x00,
-	0x36d0, 0x00,
-	0x3706, 0x27,
-	0x3707, 0x04,
-	0x3709, 0xa8,
-	0x370b, 0x40,
-	0x370c, 0x04,
-	0x3712, 0x50,
-	0x3714, 0x65,
-	0x3715, 0x00,
-	0x3724, 0x28,
-	0x372a, 0x00,
-	0x372b, 0x00,
-	0x374f, 0x10,
-	0x3755, 0x80,
-	0x3756, 0x00,
-	0x3757, 0x30,
-	0x3758, 0x00,
-	0x3759, 0x90,
-	0x375e, 0xcb,
-	0x375f, 0x22,
-	0x3763, 0x08,
-	0x376c, 0x00,
-	0x3780, 0x4f,
-	0x3781, 0x03,
-	0x3782, 0x03,
-	0x3785, 0x04,
-	0x3786, 0x04,
-	0x3789, 0x03,
-	0x378a, 0x03,
-	0x378d, 0x04,
-	0x378e, 0x04,
-	0x3791, 0x27,
-	0x3793, 0x25,
-	0x3795, 0x25,
-	0x3797, 0x40,
-	0x3799, 0x55,
-	0x379b, 0x55,
-	0x37a0, 0xa8,
-	0x37d0, 0x22,
-	0x37e3, 0x30,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x1f,
-	0x3806, 0x18,
-	0x3807, 0x1f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x02,
-	0x380d, 0x64,
-	0x380e, 0x0f,
-	0x380f, 0xf4,
-	0x3811, 0x07,
-	0x3813, 0x08,
-	0x3815, 0x11,
-	0x3820, 0x46,
-	0x3821, 0x11,
-	0x3822, 0x10,
-	0x3823, 0x06,
-	0x3828, 0x05,
-	0x3830, 0x07,
-	0x3831, 0x02,
-	0x3837, 0x07,
-	0x383f, 0x08,
-	0x384c, 0x02,
-	0x384d, 0x64,
-	0x3889, 0x08,
-	0x388b, 0x08,
-	0x388c, 0x10,
-	0x388d, 0x00,
-	0x388e, 0x0c,
-	0x388f, 0x00,
-	0x3896, 0x00,
-	0x3917, 0x00,
-	0x3981, 0x01,
-	0x3982, 0xe0,
-	0x398b, 0x00,
-	0x39ec, 0x04,
-	0x39ed, 0x04,
-	0x3a0d, 0x0d,
-	0x3a13, 0x0d,
-	0x3a14, 0x0d,
-	0x3a15, 0x09,
-	0x3a16, 0x07,
-	0x3a17, 0x08,
-	0x3a2a, 0x01,
-	0x3a2e, 0x01,
-	0x3a2f, 0x01,
-	0x3a30, 0x01,
-	0x3a31, 0x01,
-	0x3a32, 0x01,
-	0x3a34, 0x01,
-	0x3a35, 0x01,
-	0x3a36, 0x01,
-	0x3a37, 0x01,
-	0x3a40, 0x01,
-	0x3a42, 0x01,
-	0x3a43, 0x01,
-	0x3a44, 0x01,
-	0x3a45, 0x01,
-	0x3a46, 0x01,
-	0x3a48, 0x01,
-	0x3a49, 0x01,
-	0x3a4a, 0x01,
-	0x3a4b, 0x01,
-	0x3a5e, 0x3b,
-	0x3aed, 0x3a,
-	0x3af1, 0x3f,
-	0x3afd, 0x01,
-	0x3afe, 0x04,
-	0x3aff, 0x01,
-	0x3b00, 0x04,
-	0x3b01, 0xcb,
-	0x3b02, 0x02,
-	0x3b03, 0x10,
-	0x3b04, 0x10,
-	0x3b05, 0x10,
-	0x3b08, 0x10,
-	0x3b14, 0x02,
-	0x3b15, 0x10,
-	0x3b19, 0x10,
-	0x3b1a, 0x10,
-	0x3b1d, 0x00,
-	0x3b22, 0x10,
-	0x3b25, 0x10,
-	0x3b2b, 0x0f,
-	0x3b2c, 0x10,
-	0x3b2d, 0x10,
-	0x3b32, 0x10,
-	0x3b33, 0x10,
-	0x3b34, 0x10,
-	0x3b38, 0x10,
-	0x3b39, 0x10,
-	0x3b3a, 0x10,
-	0x3b3b, 0x10,
-	0x3b41, 0x10,
-	0x3b42, 0x10,
-	0x3b43, 0x10,
-	0x3b44, 0x10,
-	0x3b45, 0x0e,
-	0x3b49, 0x0e,
-	0x3b56, 0x13,
-	0x3b57, 0x13,
-	0x3b58, 0x13,
-	0x3b59, 0x13,
-	0x3b5a, 0x13,
-	0x3b5b, 0x13,
-	0x3b5c, 0x13,
-	0x3b5d, 0x13,
-	0x3b82, 0x13,
-	0x3ba0, 0x10,
-	0x3ba1, 0x13,
-	0x3ba2, 0x10,
-	0x3bab, 0x2a,
-	0x3baf, 0x56,
-	0x3bf2, 0x33,
-	0x3bfa, 0xa0,
-	0x3bff, 0x08,
-	0x4010, 0x28,
-	0x4012, 0x84,
-	0x4016, 0x0f,
-	0x4018, 0x07,
-	0x401e, 0x02,
-	0x401f, 0x80,
-	0x40c4, 0x03,
-	0x40c5, 0x00,
-	0x40c6, 0x06,
-	0x40c7, 0x00,
-	0x4288, 0x07,
-	0x4505, 0x0c,
-	0x4506, 0x01,
-	0x4509, 0x15,
-	0x450c, 0x00,
-	0x450d, 0x60,
-	0x4510, 0x07,
-	0x4511, 0x00,
-	0x4512, 0x00,
-	0x4513, 0x00,
-	0x4514, 0x00,
-	0x4515, 0x00,
-	0x4516, 0x00,
-	0x4517, 0x00,
-	0x4518, 0x00,
-	0x4519, 0x00,
-	0x451a, 0x11,
-	0x451b, 0xbb,
-	0x451c, 0x11,
-	0x451d, 0xbb,
-	0x451e, 0x11,
-	0x451f, 0xbb,
-	0x4520, 0x11,
-	0x4521, 0xbb,
-	0x4542, 0x00,
-	0x4549, 0x00,
-	0x45c0, 0x8e,
-	0x45c1, 0x80,
-	0x45c2, 0x0a,
-	0x45c3, 0x14,
-	0x45c4, 0x13,
-	0x45c5, 0x40,
-	0x45c6, 0x04,
-	0x45dd, 0x60,
-	0x4602, 0x00,
-	0x4603, 0x05,
-	0x460b, 0x07,
-	0x4640, 0x01,
-	0x4641, 0x00,
-	0x4643, 0x0c,
-	0x4680, 0x05,
-	0x468e, 0x30,
-	0x4813, 0x10,
-	0x4836, 0x32,
-	0x4916, 0x0f,
-	0x4918, 0x07,
-	0x491e, 0x02,
-	0x491f, 0x80,
-	0x4a16, 0x0f,
-	0x4a18, 0x07,
-	0x4a1e, 0x02,
-	0x4a1f, 0x80,
-	0x5000, 0x2b,
-	0x5001, 0x08,
-	0x5002, 0x00,
-	0x5006, 0x00,
-	0x6a03, 0x00,
-	0xc200, 0x00,
-	0xc210, 0x00,
-	0xc211, 0x00,
-	0xc231, 0x00,
-	0xc232, 0x00,
-	0xc233, 0x00,
-	0xc245, 0x00,
-	0xc246, 0x00,
-	0xc247, 0x00,
-	0xc40f, 0x10,
-	0xc46d, 0x00,
-	0xc48f, 0x00,
-	0xc49c, 0x1c,
-	0xc49e, 0x25,
-	0xc49f, 0x25,
-	0xc4a2, 0x55,
-	0xc4a3, 0x55,
-	0xc4ae, 0xff,
-	0xc4af, 0x10,
-	0xc4b0, 0x10,
-	0xc4b1, 0x10,
-	0xc4b2, 0x10,
-	0xc4c2, 0x77,
-	0xc4c3, 0x77,
-	0xc4c4, 0x77,
-	0xc4c6, 0x18,
-	0xc4c7, 0x18,
-	0xc4c8, 0x18,
-	0xc4c9, 0x18,
-	0xc4ca, 0x18,
-	0xc4cb, 0x18,
-	0xc4ce, 0x0e,
-	0xc4cf, 0x0a,
-	0xc4d0, 0x07,
-	0xc4d1, 0x08,
-	0xc4e0, 0x10,
-	0xc4e1, 0x10,
-	0xc4e2, 0x10,
-	0xc4e3, 0x13,
-	0xc4e9, 0x13,
-	0xc4ed, 0x10,
-	0xc4ee, 0x10,
-	0xc4fa, 0x10,
-	0xc4fb, 0x10,
-	0xc4fe, 0x10,
-	0xc4ff, 0x10,
-	0xc50f, 0x5c,
-	0xc51b, 0x38,
-	0xc51c, 0x38,
-	0xc51d, 0x2a,
-	0xc51e, 0x2a,
-	0xc51f, 0x2a,
-	0xc520, 0x2c,
-	0xc521, 0x2c,
-	0xc526, 0x0e,
-	0xc527, 0x0e,
-	0xc528, 0x0e,
-	0xc529, 0x0e,
-	0xc52a, 0x0e,
-	0xc52b, 0x0e,
-	0xc52c, 0x08,
-	0xc52d, 0x07,
-	0xc52e, 0x0e,
-	0xc52f, 0x0e,
-	0xc530, 0x0e,
-	0xc531, 0x0e,
-	0xc533, 0x0b,
-	0xc534, 0x08,
-	0xc535, 0x06,
-	0xc5c3, 0x48,
-	0xc5c4, 0x48,
-	0xc5c5, 0x48,
-	0xc5c6, 0x48,
-	0xc5c7, 0x48,
-	0xc5c8, 0x48,
-	0xc5c9, 0x48,
-	0xc5ca, 0x48,
-	0xc5cb, 0x48,
-	0xc5cc, 0x48,
-	0xc5cd, 0x48,
-	0xc5ce, 0x48,
-	0xc5fe, 0x04,
-	0xc5ff, 0x04,
-	0x3501, 0x0f,
-	0x3502, 0x00,
-	0x3508, 0x01,
-	0x3509, 0x00,
-	0x3541, 0x0f,
-	0x3542, 0x00,
-	0x3548, 0x01,
-	0x3549, 0x00,
-	// 0x0100, 0x01,
-};
-
-
-static kal_uint16 zhuquec1main_linear_to_other_begin[] = {
-//@@ linear to other
-	0x3208, 0x01, //;group 1
-	0x3016, 0xf3,
-	0x3014, 0xf1,
-	0x3017, 0xf2,
-	0x301f, 0x9b,
-	0x382e, 0x49,
-};
-
-//;add linear or STG format setting
-
-static kal_uint16 zhuquec1main_linear_to_other_end[] = {
-	0x301f, 0x98,
-	0x3017, 0xf0,
-	0x3014, 0xf0,
-	0x3016, 0xf0,
-	0x3046, 0x01,
-	0x3208, 0x11,
-	0x3208, 0xa1,
-};
-
-
-static kal_uint16 zhuquec1main_stg_to_other_begin[] = {
-//@@STG to other
-	0x3208, 0x02, //;group 2
-	0x3016, 0xf3,
-	0x3014, 0xf1,
-	0x3017, 0xf2,
-	0x301f, 0x9b,
-	0x382e, 0x49,
-};
-
-//;add format setting
-
-static kal_uint16 zhuquec1main_stg_to_other_end[] = {
-	0x301f, 0x98,
-	0x3017, 0xf0,
-	0x3014, 0xf0,
-	0x3016, 0xf0,
-	0x3046, 0x01,
-	0x3208, 0x12,
-	0x3208, 0x01, //;group 1
-	0x4220, 0x00,
-	0x4222, 0x01, //;sensor mask frame N+1
-	0x4223, 0x20,
-	0x3208, 0x11,
-	0x320d, 0x01,
-	0x3209, 0x00, //;stay 0 frame on group 0
-	0x320a, 0x01, //;stay 1 frame on group 1
-	0x320b, 0x01, //;stay 1 frame on group 2
-	0x320d, 0x92, //;switch back to group 2
-	0x320e, 0xa1, //;context switch launch group 1
-};
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1main_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1main_ana_gain_table.h
deleted file mode 100755
index b0c8ebba..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1main_ana_gain_table.h
+++ /dev/null
@@ -1,634 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 zhuquec1main_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __ZHUQUEC1MAIN_ANA_GAIN_TABLE_H__
-#define __ZHUQUEC1MAIN_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 zhuquec1main_ana_gain_table[] = {
-	1024,
-	1056,
-	1088,
-	1120,
-	1152,
-	1184,
-	1216,
-	1248,
-	1280,
-	1312,
-	1344,
-	1376,
-	1408,
-	1440,
-	1472,
-	1504,
-	1536,
-	1568,
-	1600,
-	1632,
-	1664,
-	1696,
-	1728,
-	1760,
-	1792,
-	1824,
-	1856,
-	1888,
-	1920,
-	1952,
-	1984,
-	2016,
-	2048,
-	2080,
-	2112,
-	2144,
-	2176,
-	2208,
-	2240,
-	2272,
-	2304,
-	2336,
-	2368,
-	2400,
-	2432,
-	2464,
-	2496,
-	2528,
-	2560,
-	2592,
-	2624,
-	2656,
-	2688,
-	2720,
-	2752,
-	2784,
-	2816,
-	2848,
-	2880,
-	2912,
-	2944,
-	2976,
-	3008,
-	3040,
-	3072,
-	3104,
-	3136,
-	3168,
-	3200,
-	3232,
-	3264,
-	3296,
-	3328,
-	3360,
-	3392,
-	3424,
-	3456,
-	3488,
-	3520,
-	3552,
-	3584,
-	3616,
-	3648,
-	3680,
-	3712,
-	3744,
-	3776,
-	3808,
-	3840,
-	3872,
-	3904,
-	3936,
-	3968,
-	4000,
-	4032,
-	4064,
-	4096,
-	4128,
-	4160,
-	4192,
-	4224,
-	4256,
-	4288,
-	4320,
-	4352,
-	4384,
-	4416,
-	4448,
-	4480,
-	4512,
-	4544,
-	4576,
-	4608,
-	4640,
-	4672,
-	4704,
-	4736,
-	4768,
-	4800,
-	4832,
-	4864,
-	4896,
-	4928,
-	4960,
-	4992,
-	5024,
-	5056,
-	5088,
-	5120,
-	5152,
-	5184,
-	5216,
-	5248,
-	5280,
-	5312,
-	5344,
-	5376,
-	5408,
-	5440,
-	5472,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6080,
-	6112,
-	6144,
-	6176,
-	6208,
-	6240,
-	6272,
-	6304,
-	6336,
-	6368,
-	6400,
-	6432,
-	6464,
-	6496,
-	6528,
-	6560,
-	6592,
-	6624,
-	6656,
-	6688,
-	6720,
-	6752,
-	6784,
-	6816,
-	6848,
-	6880,
-	6912,
-	6944,
-	6976,
-	7008,
-	7040,
-	7072,
-	7104,
-	7136,
-	7168,
-	7200,
-	7232,
-	7264,
-	7296,
-	7328,
-	7360,
-	7392,
-	7424,
-	7456,
-	7488,
-	7520,
-	7552,
-	7584,
-	7616,
-	7648,
-	7680,
-	7712,
-	7744,
-	7776,
-	7808,
-	7840,
-	7872,
-	7904,
-	7936,
-	7968,
-	8000,
-	8032,
-	8064,
-	8096,
-	8128,
-	8160,
-	8192,
-	8256,
-	8320,
-	8384,
-	8448,
-	8512,
-	8576,
-	8640,
-	8704,
-	8768,
-	8832,
-	8896,
-	8960,
-	9024,
-	9088,
-	9152,
-	9216,
-	9280,
-	9344,
-	9408,
-	9472,
-	9536,
-	9600,
-	9664,
-	9728,
-	9792,
-	9856,
-	9920,
-	9984,
-	10048,
-	10112,
-	10176,
-	10240,
-	10304,
-	10368,
-	10432,
-	10496,
-	10560,
-	10624,
-	10688,
-	10752,
-	10816,
-	10880,
-	10944,
-	11008,
-	11072,
-	11136,
-	11200,
-	11264,
-	11328,
-	11392,
-	11456,
-	11520,
-	11584,
-	11648,
-	11712,
-	11776,
-	11840,
-	11904,
-	11968,
-	12032,
-	12096,
-	12160,
-	12224,
-	12288,
-	12352,
-	12416,
-	12480,
-	12544,
-	12608,
-	12672,
-	12736,
-	12800,
-	12864,
-	12928,
-	12992,
-	13056,
-	13120,
-	13184,
-	13248,
-	13312,
-	13376,
-	13440,
-	13504,
-	13568,
-	13632,
-	13696,
-	13760,
-	13824,
-	13888,
-	13952,
-	14016,
-	14080,
-	14144,
-	14208,
-	14272,
-	14336,
-	14400,
-	14464,
-	14528,
-	14592,
-	14656,
-	14720,
-	14784,
-	14848,
-	14912,
-	14976,
-	15040,
-	15104,
-	15168,
-	15232,
-	15296,
-	15360,
-	15424,
-	15488,
-	15552,
-	15616,
-	15680,
-	15744,
-	15808,
-	15872,
-	15936,
-	16000,
-	16064,
-	16128,
-	16192,
-	16256,
-	16320,
-	16384,
-	16512,
-	16640,
-	16768,
-	16896,
-	17024,
-	17152,
-	17280,
-	17408,
-	17536,
-	17664,
-	17792,
-	17920,
-	18048,
-	18176,
-	18304,
-	18432,
-	18560,
-	18688,
-	18816,
-	18944,
-	19072,
-	19200,
-	19328,
-	19456,
-	19584,
-	19712,
-	19840,
-	19968,
-	20096,
-	20224,
-	20352,
-	20480,
-	20608,
-	20736,
-	20864,
-	20992,
-	21120,
-	21248,
-	21376,
-	21504,
-	21632,
-	21760,
-	21888,
-	22016,
-	22144,
-	22272,
-	22400,
-	22528,
-	22656,
-	22784,
-	22912,
-	23040,
-	23168,
-	23296,
-	23424,
-	23552,
-	23680,
-	23808,
-	23936,
-	24064,
-	24192,
-	24320,
-	24448,
-	24576,
-	24704,
-	24832,
-	24960,
-	25088,
-	25216,
-	25344,
-	25472,
-	25600,
-	25728,
-	25856,
-	25984,
-	26112,
-	26240,
-	26368,
-	26496,
-	26624,
-	26752,
-	26880,
-	27008,
-	27136,
-	27264,
-	27392,
-	27520,
-	27648,
-	27776,
-	27904,
-	28032,
-	28160,
-	28288,
-	28416,
-	28544,
-	28672,
-	28800,
-	28928,
-	29056,
-	29184,
-	29312,
-	29440,
-	29568,
-	29696,
-	29824,
-	29952,
-	30080,
-	30208,
-	30336,
-	30464,
-	30592,
-	30720,
-	30848,
-	30976,
-	31104,
-	31232,
-	31360,
-	31488,
-	31616,
-	31744,
-	31872,
-	32000,
-	32128,
-	32256,
-	32384,
-	32512,
-	32640,
-	32768,
-	33024,
-	33280,
-	33536,
-	33792,
-	34048,
-	34304,
-	34560,
-	34816,
-	35072,
-	35328,
-	35584,
-	35840,
-	36096,
-	36352,
-	36608,
-	36864,
-	37120,
-	37376,
-	37632,
-	37888,
-	38144,
-	38400,
-	38656,
-	38912,
-	39168,
-	39424,
-	39680,
-	39936,
-	40192,
-	40448,
-	40704,
-	40960,
-	41216,
-	41472,
-	41728,
-	41984,
-	42240,
-	42496,
-	42752,
-	43008,
-	43264,
-	43520,
-	43776,
-	44032,
-	44288,
-	44544,
-	44800,
-	45056,
-	45312,
-	45568,
-	45824,
-	46080,
-	46336,
-	46592,
-	46848,
-	47104,
-	47360,
-	47616,
-	47872,
-	48128,
-	48384,
-	48640,
-	48896,
-	49152,
-	49408,
-	49664,
-	49920,
-	50176,
-	50432,
-	50688,
-	50944,
-	51200,
-	51456,
-	51712,
-	51968,
-	52224,
-	52480,
-	52736,
-	52992,
-	53248,
-	53504,
-	53760,
-	54016,
-	54272,
-	54528,
-	54784,
-	55040,
-	55296,
-	55552,
-	55808,
-	56064,
-	56320,
-	56576,
-	56832,
-	57088,
-	57344,
-	57600,
-	57856,
-	58112,
-	58368,
-	58624,
-	58880,
-	59136,
-	59392,
-	59648,
-	59904,
-	60160,
-	60416,
-	60672,
-	60928,
-	61184,
-	61440,
-	61696,
-	61952,
-	62208,
-	62464,
-	62720,
-	62976,
-	63232,
-	63488,
-	63744,
-	64000,
-	64256,
-	64512,
-	64768,
-	65024,
-	65280,
-};
-
-#endif
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1mainmipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1mainmipiraw_Sensor.c
deleted file mode 100755
index 6ce294ea..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1mainmipiraw_Sensor.c
+++ /dev/null
@@ -1,3927 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 zhuquec1mainmipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "zhuquec1mainmipiraw_Sensor.h"
-//OV50E40
-#define SENSOR_NAME  SENSOR_DRVNAME_ZHUQUEC1MAIN_MIPI_RAW
-
-#define ZHUQUEC1MAIN_EEPROM_ADDR         (0xA0)
-#define ZHUQUEC1MAIN_EEPROM_MAX_OFFSET   (0x4000)
-//#define OPLUS_CAMERA_COMMON_DATA_LENGTH  (40)
-
-#define PFX "zhuquec1main_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-
-
-#ifdef  EEPROM_WRITE_DATA_MAX_LENGTH
-#undef  EEPROM_WRITE_DATA_MAX_LENGTH
-#endif
-#define EEPROM_WRITE_DATA_MAX_LENGTH          (64)
-#define ZHUQUEC1MAIN_STEREO_MW_START_ADDR     (0x2B00)
-#define ZHUQUEC1MAIN_STEREO_MT_START_ADDR     (0x31A0)
-#define ZHUQUEC1MAIN_STEREO_MT105_START_ADDR  (0x3840)
-#define ZHUQUEC1MAIN_AESYNC_START_ADDR        (0x3EE0)
-
-#define  OTP_XTC_ADDR             (0x1A00)
-#define  OTP_XTC_LENGTH           (3584)
-#define  OTP_XTC_VALID_ADDR       (0x2800)
-#define  OTP_XTC_IS_VALID_VAL     (0x01)
-
-#define  XTC_SENSOR_ADDR_PART1    (0x5A20)
-#define  XTC_SENSOR_LENGTH_PART1  (0x5A3F - 0x5A20 + 1) //32
-#define  XTC_SENSOR_ADDR_PART2    (0x5AC0)
-#define  XTC_SENSOR_LENGTH_PART2  (0x688F - 0x5AC0 + 1) //3536
-#define  XTC_SENSOR_ADDR_PART3    (0x68AE)
-#define  XTC_SENSOR_LENGTH_PART3  (0x68BD - 0x68AE + 1) //16
-static u8 xtc_is_valid = 0;
-
-#define ZHUQUEC1MAIN_IMGSENSOR_ID   (0x565045)
-
-#define ZHUQUEC1MAIN_UNIQUE_SENSOR_ID_ADDR    (0x7000)  //??????
-#define ZHUQUEC1MAIN_UNIQUE_SENSOR_ID_LENGTH  (16)
-//static BYTE zhuquec1main_unique_id[ZHUQUEC1MAIN_UNIQUE_SENSOR_ID_LENGTH] = { 0 };
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static bool is_first_exp = true;
-static u8 hgc_value[2] = {0};
-static u8 scg_flag = false;
-static u8 exp_offset = 0;
-static u16 fix_short_exp = 0;
-static kal_uint8 otp_data_checksum[ZHUQUEC1MAIN_EEPROM_MAX_OFFSET] = {0};
-static void zhuquec1main_set_sensor_cali(void *arg);
-static int get_sensor_temperature(void *arg);
-#define MAX_BURST_LEN  (2048)
-static u8 * msg_buf = NULL;
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int zhuquec1main_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_get_eeprom_comdata(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-static void zhuquec1main_get_sensor_cali(void* arg);
-static int zhuquec1main_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1main_set_gain_convert(struct subdrv_ctx *ctx, u32 gain);
-static int zhuquec1main_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1main_set_multi_gain(struct subdrv_ctx *ctx, u32 *gains, u16 exp_cnt);
-static void zhuquec1main_set_hdr_tri_gain(struct subdrv_ctx *ctx, u64 *gains, u16 exp_cnt);
-static int zhuquec1main_set_hdr_tri_gain2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_set_hdr_tri_gain3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1main_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter);
-static int zhuquec1main_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1main_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length);
-static void zhuquec1main_set_multi_shutter_frame_length(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt, u16 frame_length);
-static int zhuquec1main_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1main_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int zhuquec1main_i2c_burst_wr_regs_u8(struct subdrv_ctx *ctx, u16 * list, u32 len);
-static int adapter_i2c_burst_wr_regs_u8(struct subdrv_ctx * ctx,
-		u16 addr, u16 *list, u32 len);
-static bool g_id_from_dts_flag = false;
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id);
-//static int zhuquec1main_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-//static int zhuquec1main_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-//static void zhuquec1main_write_frame_length(struct subdrv_ctx *ctx, u32 fll);
-// static int zhuquec1main_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-// static int zhuquec1main_get_cloud_otp_info(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1main_send_diff_settings(struct subdrv_ctx *ctx, kal_uint16 * target_list, u32 target_length, kal_uint16 * base_list, u32 base_length);
-static void zhuquec1main_get_hgc_from_settings(struct subdrv_ctx *ctx);
-static void zhuquec1main_set_hgc_to_buf(struct subdrv_ctx *ctx, u32 reg_gain, u32 reg_gain1);
-static int zhuquec1main_common_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data);
-static void zhuquec1main_get_exp_offset_from_settings(struct subdrv_ctx *ctx);
-static int zhuquec1main_get_hw_mode(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-/* STRUCT */
-
-static struct mtk_sensor_saturation_info imgsensor_saturation_info_10bit = {
-	.gain_ratio = 1000,
-	.OB_pedestal = 64,
-	.saturation_level = 1023,
-};
-
-static struct eeprom_map_info zhuquec1main_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008,0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8,23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0x0000, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, ZHUQUEC1MAIN_STEREO_MW_START_ADDR, 0xFFFF, 0xFFFF, CALI_DATA_MASTER_LENGTH, true },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, ZHUQUEC1MAIN_STEREO_MT_START_ADDR, 0xFFFF, 0xFFFF, CALI_DATA_MASTER_LENGTH, true },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, ZHUQUEC1MAIN_STEREO_MT105_START_ADDR, 0xFFFF, 0xFFFF, CALI_DATA_MASTER_LENGTH, true },
-	{ EEPROM_META_DISTORTION_DATA, 0, 0, 0, 0, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, zhuquec1main_set_test_pattern},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, zhuquec1main_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, zhuquec1main_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, zhuquec1main_get_eeprom_comdata},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, zhuquec1main_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, zhuquec1main_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, zhuquec1main_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, zhuquec1main_get_min_shutter_by_scenario_adapter},
-	{SENSOR_FEATURE_SET_ESHUTTER, zhuquec1main_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, zhuquec1main_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_HDR_SHUTTER, zhuquec1main_set_hdr_tri_shutter2},
-	{SENSOR_FEATURE_SET_HDR_TRI_SHUTTER, zhuquec1main_set_hdr_tri_shutter3},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, zhuquec1main_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO, zhuquec1main_set_max_framerate_by_scenario},
-	{SENSOR_FEATURE_SET_SEAMLESS_EXTEND_FRAME_LENGTH, zhuquec1main_extend_frame_length},
-	{SENSOR_FEATURE_SET_GAIN, zhuquec1main_set_gain},
-	{SENSOR_FEATURE_SET_DUAL_GAIN, zhuquec1main_set_hdr_tri_gain2},
-	{SENSOR_FEATURE_SET_HDR_TRI_GAIN, zhuquec1main_set_hdr_tri_gain3},
-	{SENSOR_FEATURE_GET_HW_MODE, zhuquec1main_get_hw_mode},
-//	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, zhuquec1main_streaming_suspend},
-//	{SENSOR_FEATURE_SET_STREAMING_RESUME, zhuquec1main_streaming_resume},
-	// {SENSOR_FEATURE_GET_UNIQUE_SENSORID, zhuquec1main_get_unique_sensorid},
-	// {SENSOR_FEATURE_GET_CLOUD_OTP_INFO, zhuquec1main_get_cloud_otp_info},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01480116,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = ZHUQUEC1MAIN_EEPROM_ADDR,
-
-// XTC/QPDC
-		.pdc_support = TRUE,
-		.pdc_size = OTP_XTC_LENGTH,
-		.addr_pdc = OTP_XTC_ADDR,
-		.sensor_reg_addr_pdc = XTC_SENSOR_ADDR_PART1,
-
-	},
-
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {  //QPD
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{1160, 870}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*    */
-		{0, 512}, {0, 384}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{136, 102}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*    */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0},
-	},
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {2048, 1536}, {2048, 1536}, {2048, 1920},
-		/*    */
-		{0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-	},
-	.iMirrorFlip = IMAGE_NORMAL,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-    // partial pd
-	{
-	    .bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8196,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1088,
-			.vsize = 612,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1776,
-			.vsize = 1332,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 1776,
-			.vsize = 333,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus12[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2048,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 512,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus13[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus14[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus15[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus16[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-    {//0_OV50E40_4096x3072_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x768_20241202.txt
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = zhuquec1main_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_preview_capture_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 6248,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,  //2.4Gsps * 3 * 2.28 / 10
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{//0_OV50E40_4096x3072_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x768_20241202.txt
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = zhuquec1main_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_preview_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 6248,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,  //2.4Gsps * 3 * 2.28 / 10
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,//cc
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{//2_OV50E40_4096x2304_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x576_20241202.txt
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = zhuquec1main_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 6248,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//3_OV50E40_4096x2304_4C2PlusSCG_10bit_60fps_AG64_PDDT_4096x576_20241202.txt
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = zhuquec1main_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 3124,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 60,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//4_OV50E40_2048x1152_4C2PlusSCG_10bit_120fps_AG64_PDDT_2048x576_20241202.txt
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = zhuquec1main_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 1562,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 120,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//5_OV50E40_2048x1152_4C1SCG_10bit_240fps_AG64_20241202.txt
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = zhuquec1main_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 237,
-		.framelength = 1318,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 240,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//6_OV50E40_4096x3072_4C2PlusSCG_10bit_24fps_AG64_PDDT_4096x768_20241202.txt
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = zhuquec1main_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom2_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 7812,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//7_OV50E40_8192x6144_10bit_11fps_AG16_PDDT_4096x1536LR_20241202.txt
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = zhuquec1main_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 600,
-		.framelength = 11360,
-		.max_framerate = 110,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 8,
-		.exposure_margin = 32,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.9375,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.9375,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = RMSC_MASK,
-			.equivalent_fps = 11,
-			.sensorScenario = SENSOR_SCENARIO_FULL_NCELL,
-		},
-	},
-    {//8
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = zhuquec1main_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 800,
-		.framelength = 3128,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-    {//9_OV50E40_4096x3072_Cropping_10bit_30fps_AG16_PDDT_2048x768LR_20241202.txt    //color error
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = zhuquec1main_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom5_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 6248,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 8,
-		.exposure_margin = 32,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 2048,
-			.y1_offset = 1536,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.9375,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.9375,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = INSENSORZOOM_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_CROP_BAYER,
-		},
-	},
-    {//10_OV50E40_1088x612_4C1SCG_10bit_480fps_AG64_20241202.txt   //error
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = zhuquec1main_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom6_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 237,
-		.framelength = 658,
-		.max_framerate = 4800,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 1920,
-			.y0_offset = 1848,
-			.w0_size = 4352,
-			.h0_size = 2448,
-			.scale_w = 1088,
-			.scale_h = 612,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1088,
-			.h1_size = 612,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1088,
-			.h2_tg_size = 612,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = PARAM_UNDEFINED,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 480,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//11-a_OV50E40_1776x1332_4C2PlusSCG_10bit_24fps_AG64_PDDT_1776x333_20250106.txt
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = zhuquec1main_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom7_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 7812,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2320,
-			.y0_offset = 1740,
-			.w0_size = 3552,
-			.h0_size = 2664,
-			.scale_w = 1776,
-			.scale_h = 1332,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1776,
-			.h1_size = 1332,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1776,
-			.h2_tg_size = 1332,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//12_OV50E40_4096x3072_Cropping_Quad_10bit_30fps_AG16_PDDT_2048x768LR_20250206.txt
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = zhuquec1main_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom8_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 6248,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 2048,
-			.y1_offset = 1536,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.9375,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.9375,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = INSENSORZOOM_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-    {//13_OV50E40_4096x3072_Cropping_10bit_24fps_AG16_PDDT_2048x768LR_20241202.txt   //color error
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = zhuquec1main_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 7812,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 8,
-		.exposure_margin = 32,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 2048,
-			.y1_offset = 1536,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.9375,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.9375,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_CROP_2X_NCELL,
-		},
-	},
-    {//14_OV50E40_4096x3072_Cropping_Quad_10bit_24fps_AG16_PDDT_2048x768LR_20241212.txt  //color error
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = zhuquec1main_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom10_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 7812,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 2048,
-			.y1_offset = 1536,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.9375,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.9375,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = INSENSORZOOM_MASK,
-			.equivalent_fps = 24,
-			.sensorScenario = SENSOR_SCENARIO_CROP_2X_NCELL,
-		},
-	},
-    {//15_OV50E40_4096x2304_Cropping_10bit_30fps_AG16_PDDT_2048x576LR_20241202.txt  //color error
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = zhuquec1main_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 6248,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 8,
-		.exposure_margin = 32,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 2048,
-			.y1_offset = 1920,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.9375,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.9375,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = INSENSORZOOM_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_CROP_2X_NCELL,
-		},
-	},
-    {//16_OV50E40_4096x2048_4C2PlusSCG_10bit_30fps_AG64_PDDT_4096x512_20241202.txt
-		.frame_desc = frame_desc_cus12,
-		.num_entries = ARRAY_SIZE(frame_desc_cus12),
-		.mode_setting_table = zhuquec1main_custom12_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom12_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 75000000,
-		.linelength = 400,
-		.framelength = 6248,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1024,
-			.w0_size = 8192,
-			.h0_size = 4096,
-			.scale_w = 4096,
-			.scale_h = 2048,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2048,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2048,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//17_OV50E40_4096x2304_4C2PlusDCG_10bit_30fps_AG16_PDDT_4096x576_20241202.txt
-		.frame_desc = frame_desc_cus13,
-		.num_entries = ARRAY_SIZE(frame_desc_cus13),
-		.mode_setting_table = zhuquec1main_custom13_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom13_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 75000000,
-		.linelength = 775,
-		.framelength = 3224,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 8,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 63.75,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 63.75,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = DCG_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_DCG_AP_MERGE_2EXP_BAYER,
-		},
-	},
-    {//18_OV50E40_4096x3072_4C2PlusSCG_STG2_10bit_30fps_AG64_PDDT_4096x768_20241216.txt
-		.frame_desc = frame_desc_cus14,
-		.num_entries = ARRAY_SIZE(frame_desc_cus14),
-		.mode_setting_table = zhuquec1main_custom14_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom14_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_STAGGER,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 75187500,
-		.linelength = 400,
-		.framelength = 3132 * 2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 63.75,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = HDR_RAW_STAGGER_2EXP_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_STAGGER_2EXP_BAYER,
-		},
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-//		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 4200,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 8,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 1936,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 4,
-		.hw_mode = 2,//2:DC MODE, 1:OTF MODE
-	},
-    {//19_OV50E40_4096x3072_Cropping_Quad_STG2_10bit_30fps_AG16_PDDT_2048x768LR_20241216.txt
-		.frame_desc = frame_desc_cus15,
-		.num_entries = ARRAY_SIZE(frame_desc_cus15),
-		.mode_setting_table = zhuquec1main_custom15_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom15_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_R,
-		.hdr_mode = HDR_RAW_STAGGER,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 76650000,
-		.linelength = 400,
-		.framelength = 3192 * 2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 16,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-//		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 4240,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 8,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 1956,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 2048,
-			.y1_offset = 1536,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.9375,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.9375,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 15.9375,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = HDR_RAW_STAGGER_2EXP_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_STAGGER_2EXP_CROP_4CELL,
-		},
-		.hw_mode = 2,//2:DC MODE, 1:OTF MODE
-	},
-	{//20_OV50E40_4096x3072_4C2PlusDCG_10bit_30fps_AG16_PDDT_4096x768_20250116.txt
-		.frame_desc = frame_desc_cus16,
-		.num_entries = ARRAY_SIZE(frame_desc_cus16),
-		.mode_setting_table = zhuquec1main_custom16_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1main_custom16_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_DCG_RAW,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 75000000,
-		.linelength = 612,
-		.framelength = 4084,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1641600000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 8,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 8,
-		.exposure_margin = 16,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.saturation_info = &imgsensor_saturation_info_10bit,
-		.dcg_info = {
-			.dcg_mode = IMGSENSOR_DCG_RAW,
-			.dcg_gain_mode = IMGSENSOR_DCG_DIRECT_MODE,
-			.dcg_gain_ratio_min = 1000,
-			.dcg_gain_ratio_max = 16000,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 4,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.9375,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 15.9375,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.9375,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = DCG_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_DCG_AP_MERGE_2EXP_BAYER,
-		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = ZHUQUEC1MAIN_SENSOR_ID,
-	.reg_addr_sensor_id = {0x300a, 0x300b, 0x300c},
-	.i2c_addr_table = {0x20, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_CPHY,
-	.mipi_lane_num = SENSOR_MIPI_3_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_R,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 63.75,
-	.ana_gain_type = 1,
-	.ana_gain_step = 1,
-	.ana_gain_table = zhuquec1main_ana_gain_table,
-	.ana_gain_table_size = sizeof(zhuquec1main_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 8,
-	.exposure_max = 0xFFFFFF - 32,
-	.exposure_step = 2,
-	.exposure_margin = 32,
-
-	.frame_length_max = 0xFFFFFF,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 2293000,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_DCG,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = zhuquec1main_get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = zhuquec1main_set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = PARAM_UNDEFINED, //0x3821  0x3820
-	.reg_addr_exposure = {
-			{0x3500, 0x3501, 0x3502},//Long exposure
-			{0x3500, 0x3501, 0x3502},//Long exposure   skip
-			{0x3540, 0x3541, 0x3542},//Medium exposure
-//			{0x3580, 0x3581, 0x3582},//short exposure
-	},
-	.long_exposure_support = PARAM_UNDEFINED,
-	.reg_addr_exposure_lshift = PARAM_UNDEFINED,
-	.reg_addr_ana_gain = {
-			{0x3508, 0x3509},//Long gain
-			{0x3508, 0x3509},//Long gain  skip
-			{0x3548, 0x3549},//Medium gain
-//			{0x3588, 0x3589},//short gain
-	},
-	.reg_addr_frame_length = {0x3840, 0x380e, 0x380f},
-	.reg_addr_temp_en = 0x4D12,
-	.reg_addr_temp_read = 0x4D13,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = PARAM_UNDEFINED,
-	.reg_addr_fast_mode = PARAM_UNDEFINED,
-
-	.init_setting_table = zhuquec1main_init_setting,
-	.init_setting_len = ARRAY_SIZE(zhuquec1main_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 0,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xcd9966da,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = zhuquec1main_common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 1000},
-	{HW_ID_AVDD, {2804000, 2804000}, 0},
-	{HW_ID_DOVDD, {1800000, 1800000}, 0},
-	{HW_ID_AFVDD, {2804000, 2804000}, 0},
-	{HW_ID_DVDD, {1104000, 1104000}, 1000},
-	{HW_ID_RST, {1}, 5000},
-};
-
-struct subdrv_entry zhuquec1main_mipi_raw_entry = {
-	.name = "zhuquec1main_mipi_raw",
-	.id = ZHUQUEC1MAIN_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-
-/* FUNCTION */
-
-static unsigned int read_zhuquec1main_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != zhuquec1main_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != zhuquec1main_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = zhuquec1main_eeprom_info[meta_id].start;
-	readsize = zhuquec1main_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-// static struct SENSOR_OTP_INFO_STRUCT cloud_otp_info[OPLUS_CAM_CAL_DATA_MAX] = {
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 17}}, /*{addr_modinfo, addr_modinfolen}*/
-// 	}, /*OPLUS_CAM_CAL_DATA_MODULE_VERSION*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 17}}, /*{addr_modinfo, addr_modinfolen}*/
-// 	}, /*OPLUS_CAM_CAL_DATA_PART_NUMBER*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x1d60, 1868}},
-// 	}, /*OPLUS_CAM_CAL_DATA_SHADING_TABLE--LSC*/
-// 	{
-// 		.OtpInfoLen = 5,
-// 		.OtpInfo = {{0x0020, 16}, {0x0044, 16}, {0x0060, 4}, {0x006c, 4}, {0x0092, 6}},
-// 		.isAFCodeOffset = KAL_FALSE,
-// 	}, /*OPLUS_CAM_CAL_DATA_3A_GAIN-awb5000\awb2850\awb5000Light\awb2850light\af*/
-// 	{
-// 		.OtpInfoLen = 2,
-// 		.OtpInfo = {{0x1300, 496}, {0x1500, 1004}},
-// 	}, /*OPLUS_CAM_CAL_DATA_PDAF*/
-// 	{
-// 		.OtpInfoLen = 8,
-// 		.OtpInfo = {{0x0000, 17}, {0x0006, 2}, {0x0008, 2}, {0x000a, 2}, {0x0092, 7}, {0x0092, 2}, {0x0094, 2}, {0x00b0, 24}},
-// 		.isAFCodeOffset = KAL_FALSE,
-// 	}, /*OPLUS_CAM_CAL_DATA_CAMERA_INFO-modid\sensor\lens\vcmid\af\macpos\infpos\qrcode\*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0008, 2}},
-// 	}, /*OPLUS_CAM_CAL_DATA_DUMP*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0008, 2}},
-// 	}, /*OPLUS_CAM_CAL_DATA_LENS_ID*/
-// 	{
-// 		.OtpInfoLen = 0,
-// 	}, /*OPLUS_CAM_CAL_DATA_QSC*/
-// 	{
-// 		.OtpInfoLen = 0,
-// 	}, /*OPLUS_CAM_CAL_DATA_LRC*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 16384}},
-// 	}, /*OPLUS_CAM_CAL_DATA_ALL*/
-// };
-
-// static int zhuquec1main_get_cloud_otp_info(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u64 *feature_data = (u64 *)para;
-// 	struct SENSOR_OTP_INFO_STRUCT *cloudinfo;
-// 	LOG_INF("SENSOR_FEATURE_GET_CLOUD_OTP_INFO otp_type:%d", (UINT32)(*feature_data));
-// 	cloudinfo = (struct SENSOR_OTP_INFO_STRUCT *)(uintptr_t)(*(feature_data + 1));
-// 	switch (*feature_data) {
-// 	case OPLUS_CAM_CAL_DATA_MODULE_VERSION:
-// 	case OPLUS_CAM_CAL_DATA_PART_NUMBER:
-// 	case OPLUS_CAM_CAL_DATA_SHADING_TABLE:
-// 	case OPLUS_CAM_CAL_DATA_3A_GAIN:
-// 	case OPLUS_CAM_CAL_DATA_PDAF:
-// 	case OPLUS_CAM_CAL_DATA_CAMERA_INFO:
-// 	case OPLUS_CAM_CAL_DATA_DUMP:
-// 	case OPLUS_CAM_CAL_DATA_LENS_ID:
-// 	case OPLUS_CAM_CAL_DATA_QSC:
-// 	case OPLUS_CAM_CAL_DATA_LRC:
-// 	case OPLUS_CAM_CAL_DATA_ALL:
-// 		memcpy((void *)cloudinfo, (void *)&cloud_otp_info[*feature_data], sizeof(struct SENSOR_OTP_INFO_STRUCT));
-// 		break;
-// 	default:
-// 		break;
-// 	}
-// 	return 0;
-// }
-
-// static void read_unique_sensorid(struct subdrv_ctx *ctx)
-// {
-// 	u8 i = 0;
-// 	LOG_INF("read sensor unique sensorid");
-// 	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-// 		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-// 		subdrv_i2c_wr_u8(ctx, 0x0103, 0x01);
-// 		subdrv_i2c_wr_u8(ctx, 0x3d84, 0x00);
-// 		subdrv_i2c_wr_u8(ctx, 0x3d85, 0x1b);
-// 		subdrv_i2c_wr_u8(ctx, 0x0100, 0x01);
-// 		msleep(5);
-// 		if (adaptor_i2c_rd_p8(ctx->i2c_client, ctx->i2c_write_id >> 1, ZHUQUEC1MAIN_UNIQUE_SENSOR_ID_ADDR,
-// 			&(zhuquec1main_unique_id[0]), ZHUQUEC1MAIN_UNIQUE_SENSOR_ID_LENGTH) < 0) {
-// 			LOG_INF("Read sensor unique sensorid fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-// 		}
-// 		i++;
-// 	}
-// }
-
-// static int zhuquec1main_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u32 *feature_return_para_32 = (u32 *)para;
-// 	*len = ZHUQUEC1MAIN_UNIQUE_SENSOR_ID_LENGTH;
-// 	memcpy(feature_return_para_32, zhuquec1main_unique_id,
-// 		ZHUQUEC1MAIN_UNIQUE_SENSOR_ID_LENGTH);
-// 	LOG_INF("para :%x, get unique sensorid", *para);
-// 	return 0;
-// }
-
-static int zhuquec1main_get_eeprom_comdata(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	LOG_INF("+");
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, ZHUQUEC1MAIN_EEPROM_ADDR >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static kal_int32 table_write_eeprom_one_packet(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-    kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, ZHUQUEC1MAIN_EEPROM_ADDR >> 1,
-            addr, para, len);
-
-    return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xA000;
-
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, ZHUQUEC1MAIN_EEPROM_ADDR >> 1, reg, 0x0E);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, ZHUQUEC1MAIN_EEPROM_ADDR >> 1, reg, 0x00);
-    }
-
-    return ret;
-}
-
-static kal_uint16 get_64align_addr(kal_uint16 data_base) {
-
-	kal_uint16 multiple = 0;
-	kal_uint16 surplus = 0;
-	kal_uint16 addr_64align = 0;
-
-	multiple = data_base / 64;
-	surplus = data_base % 64;
-	if(surplus) {
-		addr_64align = (multiple + 1) * 64;
-	} else {
-		addr_64align = multiple * 64;
-	}
-	//LOG_INF("data_base(0x%x), multiple(%d), surplus(%d), addr_64align(0x%x)", data_base, multiple, surplus, addr_64align);
-	return addr_64align;
-}
-
-static kal_int32 eeprom_table_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-
-	kal_uint16 idx;
-	kal_uint16 idy;
-	kal_int32 ret = ERROR_NONE;
-	UINT32 i = 0;
-
-	idx = data_length / EEPROM_WRITE_DATA_MAX_LENGTH;
-	idy = data_length % EEPROM_WRITE_DATA_MAX_LENGTH;
-
-    LOG_INF("data_base(0x%x) data_length(%d) idx(%d) idy(%d)\n", data_base, data_length, idx, idy);
-
-	for (i = 0; i < idx; i++ ) {
-		ret = table_write_eeprom_one_packet(ctx, (data_base + EEPROM_WRITE_DATA_MAX_LENGTH * i),
-				&pData[EEPROM_WRITE_DATA_MAX_LENGTH*i], EEPROM_WRITE_DATA_MAX_LENGTH);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: i=%d\n", i);
-			return -1;
-		}
-		msleep(6);
-	}
-
-	msleep(6);
-	if(idy) {
-		ret = table_write_eeprom_one_packet(ctx, (data_base + EEPROM_WRITE_DATA_MAX_LENGTH*idx),
-				&pData[EEPROM_WRITE_DATA_MAX_LENGTH*idx], idy);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-			return -1;
-		}
-	}
-	return 0;
-}
-
-static kal_int32 eeprom_64align_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-
-	kal_uint16 addr_64align = 0;
-	kal_uint16 part1_length = 0;
-	kal_uint16 part2_length = 0;
-	kal_int32 ret = ERROR_NONE;
-
-    addr_64align = get_64align_addr(data_base);
-
-	part1_length = addr_64align - data_base;
-	if(part1_length > data_length) {
-		part1_length = data_length;
-	}
-	part2_length = data_length - part1_length;
-
-	write_eeprom_protect(ctx, 0);
-	msleep(6);
-
-	if (part1_length) {
-		ret = eeprom_table_write(ctx, data_base, pData, part1_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part1\n");
-			msleep(6);
-			return -1;
-		}
-	}
-
-	msleep(6);
-	if (part2_length) {
-		ret = eeprom_table_write(ctx, addr_64align, pData + part1_length, part2_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part2\n");
-			msleep(6);
-			return -1;
-		}
-	}
-	msleep(6);
-	write_eeprom_protect(ctx, 1);
-	msleep(6);
-
-	return 0;
-}
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint8 *pData;
-
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-                       pStereodata->uSensorId,
-                       pStereodata->uDeviceId,
-                       pStereodata->baseAddr,
-                       pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        if (((pStereodata->uSensorId == ZHUQUEC1MAIN_SENSOR_ID) || (pStereodata->uSensorId == ZHUQUES1MAIN_SENSOR_ID))
-            && (data_length == CALI_DATA_MASTER_LENGTH)
-            && ((data_base == ZHUQUEC1MAIN_STEREO_MW_START_ADDR)
-                || (data_base == ZHUQUEC1MAIN_STEREO_MT_START_ADDR)
-                || (data_base == ZHUQUEC1MAIN_STEREO_MT105_START_ADDR))) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-
-            eeprom_64align_write(ctx, data_base, pData, data_length);
-
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-
-        } else if (((pStereodata->uSensorId == ZHUQUEC1MAIN_SENSOR_ID) || (pStereodata->uSensorId == ZHUQUES1MAIN_SENSOR_ID))
-            && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == ZHUQUEC1MAIN_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-
-            eeprom_64align_write(ctx, data_base, pData, data_length);
-
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1MAIN_AESYNC_START_ADDR),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1MAIN_AESYNC_START_ADDR+1),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1MAIN_AESYNC_START_ADDR+2),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1MAIN_AESYNC_START_ADDR+3),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1MAIN_AESYNC_START_ADDR+4),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1MAIN_AESYNC_START_ADDR+5),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1MAIN_AESYNC_START_ADDR+6),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1MAIN_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("zhuquec1main write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int zhuquec1main_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        LOG_INF("ret=%d\n", ret);
-    }
-	return 0;
-}
-
-static int zhuquec1main_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_MASTER_LENGTH)
-		*len = CALI_DATA_MASTER_LENGTH;
-	LOG_INF("feature_data mode: %d", *feature_data_16);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_zhuquec1main_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MW_MAIN:
-		read_zhuquec1main_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_zhuquec1main_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	default:
-		break;
-	}
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, ZHUQUEC1MAIN_EEPROM_ADDR >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "zhuquec1main read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, ZHUQUEC1MAIN_EEPROM_MAX_OFFSET);
-	DRV_LOGE(ctx, "zhuquec1main read_otp_info end\n");
-}
-
-static int zhuquec1main_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	u32 length = sizeof(otp_data_checksum);
-
-	if(*len < sizeof(otp_data_checksum)) {
-		length = *len;
-	}
-
-	DRV_LOGE(ctx, "get otp data length:0x%x", length);
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, length);
-
-	return 0;
-}
-
-//static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-//{
-//	check_current_scenario_id_bound(ctx);
-//
-//	if (enable) {
-//		if (ctx->s_ctx.chk_s_off_sta) {
-//			DRV_LOG(ctx, "check_stream_off before stream on");
-//			check_stream_off(ctx);
-//		}
-//		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-//	} else {
-//		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-//	}
-//	ctx->is_streaming = enable;
-//	DRV_LOG(ctx, "X! enable:%u\n", enable);
-//}
-//
-//static int zhuquec1main_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-//{
-//		DRV_LOGE(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-//		if (*(u32 *)para)
-//			zhuquec1main_set_shutter_convert(ctx, (u32 *)para);
-//		streaming_ctrl(ctx, true);
-//		return 0;
-//}
-//
-//static int zhuquec1main_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-//{
-//		DRV_LOGE(ctx, "streaming control para:%d\n", *para);
-//		streaming_ctrl(ctx, false);
-//		return 0;
-//}
-
-static int zhuquec1main_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	LOG_INF("rst delay = %d, func: %s, line: %d\n", pw_seq[1].delay, __FUNCTION__, __LINE__);
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			LOG_INF("i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == ZHUQUEC1MAIN_IMGSENSOR_ID) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				get_imgsensor_id_from_dts(ctx, sensor_id);
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					//read_unique_sensorid(ctx);
-					first_read = KAL_FALSE;
-					msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-					if(!msg_buf) {
-						LOG_INF("boot stage, malloc msg_buf error");
-					}
-				}
-				return ERROR_NONE;
-			}
-			LOG_INF("Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			LOG_INF("sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return gain * (0x100) / BASEGAIN;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	// software reset
-	subdrv_i2c_wr_regs_u8(ctx, zhuquec1main_soft_reset, ARRAY_SIZE(zhuquec1main_soft_reset));
-	msleep(10);
-	//sensor_init(ctx);
-	zhuquec1main_i2c_burst_wr_regs_u8(ctx, ctx->s_ctx.init_setting_table, ctx->s_ctx.init_setting_len);
-	// XTC
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = FALSE;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void zhuquec1main_get_sensor_cali(void* arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u8 write_id = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* pdc data */
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-
-	if (support && size > 0) {
-
-		//xtc_is_valid = i2c_read_eeprom(ctx, OTP_XTC_VALID_ADDR);
-		write_id = ctx->s_ctx.eeprom_info[idx].i2c_write_id;
-		adaptor_i2c_rd_u8(ctx->i2c_client, write_id >> 1, OTP_XTC_VALID_ADDR, (u8 *)&xtc_is_valid);
-
-		if(xtc_is_valid != OTP_XTC_IS_VALID_VAL) {
-			DRV_LOGE(ctx, "xtc is invalid %d", xtc_is_valid);
-			return;
-		}
-
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL)
-				i2c_multi_read_eeprom(ctx, addr, size, info[idx].preload_pdc_table);
-			else
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			DRV_LOG(ctx, "preload pdc data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "pdc data is already preloaded %u bytes", size);
-		}
-	}
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void zhuquec1main_set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx)) {
-		subdrv_i2c_wr_regs_u8(ctx, zhuquec1main_default_QPDC_setting, ARRAY_SIZE(zhuquec1main_default_QPDC_setting));
-		DRV_LOG(ctx, "set default xtc\n");
-		return;
-	}
-
-	idx = ctx->eeprom_index;
-	/* XTC data */
-	support = info[idx].pdc_support;
-	if (support && (xtc_is_valid == OTP_XTC_IS_VALID_VAL)) {
-		pbuf = info[idx].preload_pdc_table;
-		size = info[idx].pdc_size;
-		addr = info[idx].sensor_reg_addr_pdc;
-
-		if(pbuf[0] == 0xFF) {
-			subdrv_i2c_wr_regs_u8(ctx, zhuquec1main_default_QPDC_setting, ARRAY_SIZE(zhuquec1main_default_QPDC_setting));
-			DRV_LOG(ctx, "error EEPROM xtc data, set default xtc\n");
-			return;
-		}
-
-		subdrv_i2c_wr_seq_p8(ctx, XTC_SENSOR_ADDR_PART1, pbuf, XTC_SENSOR_LENGTH_PART1);  //part1
-		DRV_LOG(ctx, "xtc part1 buf[0] = %d ,XTC_SENSOR_ADDR_PART1(0x%x)\n", pbuf[0], XTC_SENSOR_ADDR_PART1);
-		pbuf += XTC_SENSOR_LENGTH_PART1;
-
-		subdrv_i2c_wr_seq_p8(ctx, XTC_SENSOR_ADDR_PART2, pbuf, XTC_SENSOR_LENGTH_PART2);  //part2
-		DRV_LOG(ctx, "xtc part2 buf[%d] = %d ,XTC_SENSOR_ADDR_PART2(0x%x)\n", XTC_SENSOR_LENGTH_PART1, pbuf[0], XTC_SENSOR_ADDR_PART2);
-		pbuf += XTC_SENSOR_LENGTH_PART2;
-
-		subdrv_i2c_wr_seq_p8(ctx, XTC_SENSOR_ADDR_PART3, pbuf, XTC_SENSOR_LENGTH_PART3);  //part3
-		DRV_LOG(ctx, "xtc part3 buf[%d] = %d ,XTC_SENSOR_ADDR_PART3(0x%x)\n", XTC_SENSOR_LENGTH_PART1 + XTC_SENSOR_LENGTH_PART2, pbuf[0], XTC_SENSOR_ADDR_PART3);
-	} else {
-		subdrv_i2c_wr_regs_u8(ctx, zhuquec1main_default_QPDC_setting, ARRAY_SIZE(zhuquec1main_default_QPDC_setting));
-		DRV_LOG(ctx, "set default xtc\n");
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-	if (ctx->s_ctx.reg_addr_temp_read) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_temp_en, 0x01); //trigger temperature calculation 0x4D12
-		temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-	if (temperature < 0xC0) {
-		temperature_convert = temperature;
-	} else {
-		temperature_convert = ((char)temperature) | 0xFFFFF00;
-	}
-	}
-	DRV_LOG(ctx, "reg_val:0x%x, temperature: %d degrees\n", temperature, temperature_convert);
-
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	if (en) {
-		set_i2c_buffer(ctx, 0x3208, 0x00);
-	} else {
-		set_i2c_buffer(ctx, 0x3208, 0x10);
-		set_i2c_buffer(ctx, 0x3208, 0xa0);
-	}
-}
-
-void zhuquec1main_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	u32 exp_cnt = 0;
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	check_current_scenario_id_bound(ctx);
-	LOG_INF("sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-			case HDR_RAW_STAGGER:
-				*exposure_step = ctx->s_ctx.exposure_step * exp_cnt;
-				*min_shutter = ctx->s_ctx.exposure_min * exp_cnt;
-				break;
-			case HDR_NONE:
-				if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-					ctx->s_ctx.mode[scenario_id].min_exposure_line) {
-					*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-					*min_shutter = ctx->s_ctx.mode[scenario_id].min_exposure_line;
-				} else {
-					*exposure_step = ctx->s_ctx.exposure_step;
-					*min_shutter = ctx->s_ctx.exposure_min;
-				}
-				break;
-			default:
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-				break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int zhuquec1main_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	zhuquec1main_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-static void zhuquec1main_get_hgc_from_settings(struct subdrv_ctx *ctx)
-{
-	u32 i = 0;
-	bool hgc_flag1 = false;
-	bool hgc_flag2 = false;
-
-	kal_uint16 * list = ctx->s_ctx.mode[ctx->current_scenario_id].mode_setting_table;
-	u32 length = ctx->s_ctx.mode[ctx->current_scenario_id].mode_setting_len;
-
-	for (i = 0; i < length; i += 2) {
-		if(list[i] == 0x3506 && hgc_flag1 == false) {
-			hgc_value[0] = list[i + 1];
-			DRV_LOG(ctx, "get hgc[0]= 0x%02x", hgc_value[0]);
-			hgc_flag1 = true;
-		}
-		if(list[i] == 0x3546 && hgc_flag2 == false) {
-			hgc_value[1] = list[i + 1];
-			DRV_LOG(ctx, "get hgc[1]= 0x%02x", hgc_value[1]);
-			hgc_flag2 = true;
-		}
-		if(hgc_flag1 == true && hgc_flag2 == true) {
-			break;
-		}
-	}
-
-	switch(ctx->current_scenario_id) {
-		case SENSOR_SCENARIO_ID_CUSTOM3  :
-		case SENSOR_SCENARIO_ID_CUSTOM5  :
-		case SENSOR_SCENARIO_ID_CUSTOM8  :
-		case SENSOR_SCENARIO_ID_CUSTOM9  :
-		case SENSOR_SCENARIO_ID_CUSTOM10 :
-		case SENSOR_SCENARIO_ID_CUSTOM11 :
-		case SENSOR_SCENARIO_ID_CUSTOM13 :
-		case SENSOR_SCENARIO_ID_CUSTOM14 :
-		case SENSOR_SCENARIO_ID_CUSTOM15 :
-		case SENSOR_SCENARIO_ID_CUSTOM16 :
-			scg_flag = false;
-			break;
-		default :
-			scg_flag = true;
-			break;
-	}
-	DRV_LOG(ctx, "current_scenario_id(%d),  scg_flag(%d)", ctx->current_scenario_id, scg_flag);
-}
-
-static void zhuquec1main_set_hgc_to_buf(struct subdrv_ctx *ctx, u32 reg_gain, u32 reg_gain1)
-{
-	if (scg_flag == true) {
-
-		if (reg_gain != 0) {  //1dol
-			if(reg_gain >= 4 * 0x100){  //  >= 4x
-				hgc_value[0] |= 0x02;
-			} else {  // < 4x
-				hgc_value[0] &= 0xFD;
-			}
-			DRV_LOG(ctx, "reg_gain(0x%x)  changed 1dol hgc_value(0x%x)\n", reg_gain, hgc_value[0]);
-			set_i2c_buffer(ctx, 0x3506, hgc_value[0]);
-		}
-
-		if (reg_gain1 != 0) {  //2dol
-
-			if(reg_gain1 >= 4 * 0x100){  //  >= 4x
-				hgc_value[1] |= 0x02;
-			} else {  // < 4x
-				hgc_value[1] &= 0xFD;
-			}
-			DRV_LOG(ctx, "reg_gain1 (0x%x) changed 2dol hgc_value(0x%x)\n", reg_gain1, hgc_value[1]);
-			set_i2c_buffer(ctx, 0x3546, hgc_value[1]);
-		}
-	}
-}
-
-static void zhuquec1main_send_diff_settings(struct subdrv_ctx *ctx, kal_uint16 * target_list, u32 target_length, kal_uint16 * base_list, u32 base_length)
-{
-	u32 target_loop = 0;
-	u32 base_loop = 0;
-	u32 i = 0;
-	u32 min_length = 0;
-
-	if(target_length != base_length) {
-		LOG_INF("[test] error target_length(%d)  base_length(%d)", target_length, base_length);
-		return ;
-	}
-	min_length = min(target_length, base_length);
-
-	for (i = 0; i < min_length; i += 2) {
-		if (target_list[target_loop] == base_list[base_loop]) { //addr equal
-			if(target_list[target_loop + 1] == base_list[base_loop + 1]) { //data equal
-				DRV_LOG(ctx, "[test] addr data equ skip");
-			} else { //addr equal, data not equal
-				DRV_LOG(ctx, "diff  addr data(0x%04x 0x%02x)", target_list[target_loop], target_list[target_loop + 1]);
-				set_i2c_buffer(ctx, target_list[target_loop], target_list[target_loop + 1]);
-			}
-		} else {
-			LOG_INF("error  addr data(0x%04x 0x%02x)", target_list[target_loop], target_list[target_loop + 1]);
-			return;
-		}
-
-		target_loop += 2;
-		base_loop   += 2;
-	}
-}
-
-static int zhuquec1main_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-	//u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 exp_cnt = 0;
-	int i;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-	update_mode_info(ctx, scenario_id);
-
-	commit_i2c_buffer(ctx);
-
-//seamless begin setting
-	switch (ctx->s_ctx.mode[pre_seamless_scenario_id].hdr_mode) {
-	case HDR_RAW_STAGGER:
-		DRV_LOGE(ctx, "seamless_switch stagger to other start\n");
-		for(i = 0 ; i < ARRAY_SIZE(zhuquec1main_stg_to_other_begin); i += 2) {
-			 set_i2c_buffer(ctx, zhuquec1main_stg_to_other_begin[i], zhuquec1main_stg_to_other_begin[i + 1]);
-		}
-		break;
-	default:
-		DRV_LOGE(ctx, "seamless_switch linear to other start\n");
-		for(i = 0 ; i < ARRAY_SIZE(zhuquec1main_linear_to_other_begin); i += 2) {
-			 set_i2c_buffer(ctx, zhuquec1main_linear_to_other_begin[i], zhuquec1main_linear_to_other_begin[i + 1]);
-		}
-		break;
-	}
-
-
-//	i2c_table_write(ctx,
-//		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-//		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-	zhuquec1main_send_diff_settings(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table, ctx->s_ctx.mode[scenario_id].mode_setting_len,
-		ctx->s_ctx.mode[pre_seamless_scenario_id].mode_setting_table, ctx->s_ctx.mode[pre_seamless_scenario_id].mode_setting_len);
-
-	zhuquec1main_get_hgc_from_settings(ctx);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			zhuquec1main_set_multi_shutter_frame_length(ctx, (u64*)&ae_ctrl->exposure, exp_cnt, 0);
-			zhuquec1main_set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		default:
-			zhuquec1main_set_shutter_convert(ctx, ae_ctrl->exposure.le_exposure);
-			zhuquec1main_set_gain_convert(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-
-
-//seamless end setting
-	switch (ctx->s_ctx.mode[pre_seamless_scenario_id].hdr_mode) {
-	case HDR_RAW_STAGGER:
-		DRV_LOGE(ctx, "seamless_switch stagger to other end\n");
-		for(i = 0 ; i < ARRAY_SIZE(zhuquec1main_stg_to_other_end); i += 2) {
-			set_i2c_buffer(ctx, zhuquec1main_stg_to_other_end[i], zhuquec1main_stg_to_other_end[i + 1]);
-		}
-		break;
-	default:
-		DRV_LOGE(ctx, "seamless_switch linear to other  end\n");
-		for(i = 0 ; i < ARRAY_SIZE(zhuquec1main_linear_to_other_end); i += 2) {
-			set_i2c_buffer(ctx, zhuquec1main_linear_to_other_end[i], zhuquec1main_linear_to_other_end[i + 1]);
-		}
-		break;
-	}
-
-	DRV_LOG(ctx, "write seamless switch setting done\n");
-
-	commit_i2c_buffer(ctx);
-
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-
-static int zhuquec1main_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode) {
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-		LOG_INF("mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-		switch (mode) {
-		case 5:
-			subdrv_i2c_wr_u8(ctx, 0x50C1, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x50C2, 0x04);
-			subdrv_i2c_wr_u8(ctx, 0x53C1, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x53C2, 0x04);
-			subdrv_i2c_wr_u8(ctx, 0x56C1, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x56C2, 0x04);
-			break;
-		default:
-			subdrv_i2c_wr_u8(ctx, 0x50C1, mode);
-			subdrv_i2c_wr_u8(ctx, 0x53C1, mode);
-			subdrv_i2c_wr_u8(ctx, 0x56C1, mode);
-			break;
-		}
-	} else if (ctx->test_pattern) {
-		LOG_INF("mode(%u->%u)\n", ctx->test_pattern, mode);
-		subdrv_i2c_wr_u8(ctx, 0x50C1, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x50C2, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x53C1, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x53C2, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x56C1, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x56C2, 0x00);
-	}
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	//hw_init_time
-	for (int scenario_id = 0; scenario_id < ctx->s_ctx.sensor_mode_num; scenario_id++){
-		 ctx->hw_time_info[scenario_id].init_time_ns = 3 * 1000000;
-	}
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-
-	return 0;
-}
-
-static void zhuquec1main_set_multi_shutter_frame_length(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt, u16 frame_length)
-{
-	int i = 0;
-	int fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[4] = {0};
-//	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-	u32 fll = 0, fll_temp = 0, s_fll;
-	u32 value1;
-
-	if(exp_cnt == 1) {  //force to 1exp func
-		zhuquec1main_set_shutter_frame_length_convert(ctx, shutters[0], frame_length);
-		return ;
-	}
-
-	fll = frame_length ? frame_length : ctx->min_frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].min);
-		shutters[i] = min_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].max);
-		if (cit_step)
-			shutters[i] = roundup(shutters[i], cit_step);
-	}
-
-	if (exp_cnt == 2) { //2dol
-		if( ctx->is_seamless == TRUE || is_first_exp) {
-			ctx->exposure[1] = shutters[1];
-			is_first_exp = false;
-			zhuquec1main_get_exp_offset_from_settings(ctx);
-			LOG_INF("seamless change to Exp_M(n+1), exp_offset= 0x%2x", exp_offset);
-		}
-
-		//4C2Plus  : Exp_L(n+2) + Exp_M(n+1)< VTS(n+1) – 32 - (R3830 + 1)*2
-		//Full crop: Exp_L(n+2) + Exp_M(n+1)< VTS(n+1) – 49 -  R3830
-		//fix short exp : Exp_M(n+1) = (R3846 R3847)*2
-		if(ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM15) {  //izoom 2dol qbc
-			value1 = exp_offset + 49 + fix_short_exp;
-		} else {  //2dol
-			value1 = 2 * (exp_offset + 1) + 32 + fix_short_exp * 2;
-		}
-		value1 = roundup(value1, 2);
-
-		calc_fl[0] = shutters[0] + value1 * 2 + 4;
-		//LOG_INF("error  change VTS(n+1) calc_fl[0] (%u)   value1(%d)", calc_fl[0], value1);
-
-		// Exp_M(n+2) >= Exp_M(n+1) + Img Height - VTS(n+1)    // VTS(n+1)  >= Exp_M(n+1) + Img Height - Exp_M(n+2)
-		// calc_fl[1] = ctx->exposure[1] + ctx->s_ctx.mode[ctx->current_scenario_id].imgsensor_winsize_info.h2_tg_size * 2 - shutters[1];
-		// LOG_INF("error  change VTS(n+1) calc_fl[1] (%u)", calc_fl[1]);
-
-		//4C2Plus   Non-overlap adds:  VTS(n+1) > Exp_M(n+1) + Image Height + 152
-		//Full crop Non-overlap adds:  VTS(n+1) > Exp_M(n+1) + Image Height + 200
-
-		// if(ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM15) {  //izoom 2dol qbc
-		// 	value2 = exp_offset + 105;
-		// } else {  //2dol
-		// 	value2 = 2 * (exp_offset + 1) + 56;
-		// }
-		// calc_fl[2] = ctx->exposure[1] + ctx->s_ctx.mode[ctx->current_scenario_id].imgsensor_winsize_info.h2_tg_size * 2  + value2 * 2 + 4;
-
-		// LOG_INF("error  change VTS(n+1) calc_fl[2] (%u)", calc_fl[2]);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */ //N+1 framelength
-	//calc_fl[0] = (u32) shutters[0];
-	//for (i = 1; i < last_exp_cnt; i++)
-	//	calc_fl[0] += ctx->exposure[i];
-	//calc_fl[0] += ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin*exp_cnt*exp_cnt;
-
-	///* - (2) current se + current me + current le */
-	//calc_fl[1] = (u32) shutters[0];
-	//for (i = 1; i < exp_cnt; i++)
-	//	calc_fl[1] += (u32) shutters[i];
-	//calc_fl[1] += ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin*exp_cnt*exp_cnt;
-
-	///* - (3) readout time cannot be overlapped */
-	//calc_fl[2] =
-	//	(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-	//	ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-	//if (last_exp_cnt == exp_cnt)
-	//	for (i = 1; i < exp_cnt; i++) {
-	//		readout_diff = ctx->exposure[i] - (u32) shutters[i];
-	//		calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-	//	}
-	///* - (4) For DOL (non-FDOL), N-th frame SE and N+1-th frame LE readout cannot be overlapped */
-	//if ((ctx->s_ctx.hdr_type & HDR_SUPPORT_STAGGER_DOL) &&
-	//	ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_STAGGER) {
-	//	for (i = 1; i < last_exp_cnt; i++)
-	//		calc_fl[3] += ctx->exposure[i];
-	//	calc_fl[3] += ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin*exp_cnt*(exp_cnt-1);
-	//	calc_fl[3] += ctx->readout_length + ctx->min_vblanking_line;
-	//	DRV_LOG(ctx,
-	//		"calc_fl[3]: %u, pre-LE/ME/SE (%u/%u/%u), cur-LE/ME/SE (%llu/%llu/%llu), readout_length:%u, min_vblanking_line:%u\n",
-	//		calc_fl[3],
-	//		ctx->exposure[0], ctx->exposure[1], ctx->exposure[2],
-	//		shutters[0], shutters[1], shutters[2],
-	//		ctx->readout_length,
-	//		ctx->min_vblanking_line);
-	//}
-
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		fll = max(fll, calc_fl[i]);
-	fll =	max(fll, ctx->min_frame_length);
-	fll =	min(fll, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = (u32) shutters[i];
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].sw_fl_delay) {
-		fll_temp = ctx->frame_length_next;
-		ctx->frame_length_next = fll;
-		s_fll = calc_fl[0];
-		for (i = 1; i < ARRAY_SIZE(calc_fl); i++)
-			s_fll = max(s_fll, calc_fl[i]);
-		if (s_fll > frame_length) {
-			fll = s_fll;
-			fll = max(fll, ctx->min_frame_length);
-			fll = min(fll, ctx->s_ctx.frame_length_max);
-			if(fll fll_temp)
-				fll = s_fll;
-			else
-				fll = fll_temp;
-		}
-		DRV_LOG(ctx, "fll:%u, s_fll:%u, fll_temp:%u, frame_length:%u\n",
-			fll, s_fll, fll_temp, frame_length);
-	}
-	ctx->frame_length = fll;
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	else if (ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->min_frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = (u32) shutters[0] / exp_cnt;
-
-		if( ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_DCG_RAW) {  //DCG  EXP_L = EXP_M
-			rg_shutters[2] = (u32) shutters[0] / exp_cnt;
-		}
-		break;
-	case 2:
-		rg_shutters[0] = (u32) shutters[0] / exp_cnt;
-		rg_shutters[2] = (u32) shutters[1] / exp_cnt;
-		break;
-	case 3:
-		rg_shutters[0] = (u32) shutters[0] / exp_cnt;
-		rg_shutters[1] = (u32) shutters[1] / exp_cnt;
-		rg_shutters[2] = (u32) shutters[2] / exp_cnt;
-		break;
-	default:
-		break;
-	}
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED) {
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-		ctx->l_shift = 0;
-	}
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[2],
-					rg_shutters[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					rg_shutters[i] & 0xFF);
-			}
-		}
-	}
-	DRV_LOG(ctx, "exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%d\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static int zhuquec1main_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1main_set_multi_shutter_frame_length(ctx, (u64 *)(*feature_data),
-		(u64) (*(feature_data + 1)), (u64) (*(feature_data + 2)));
-	return 0;
-}
-
-static void zhuquec1main_set_hdr_tri_shutter(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt)
-{
-	int i = 0;
-	u64 values[3] = {0};
-
-	if (shutters != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u64) *(shutters + i);
-	}
-	zhuquec1main_set_multi_shutter_frame_length(ctx, values, exp_cnt, 0);
-}
-
-static int zhuquec1main_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1main_set_hdr_tri_shutter(ctx, feature_data, 2);
-	return 0;
-}
-
-static int zhuquec1main_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1main_set_hdr_tri_shutter(ctx, feature_data, 3);
-	return 0;
-}
-
-static void zhuquec1main_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length)
-{
-	int fine_integ_line = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->min_frame_length;
-	check_current_scenario_id_bound(ctx);
-	/* check boundary of shutter */
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	shutter = FINE_INTEG_CONVERT(shutter, fine_integ_line);
-	shutter = max_t(u64, shutter,
-		(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[0].min);
-	shutter = min_t(u64, shutter,
-		(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[0].max);
-	/* check boundary of framelength */
-	ctx->frame_length = max((u32)shutter + ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin, ctx->frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->exposure[0] = (u32) shutter;
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	else if (ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->min_frame_length);
-	/* write shutter */
-	//set_long_exposure(ctx);
-	if (ctx->s_ctx.reg_addr_exposure[0].addr[2]) {
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0],
-			(ctx->exposure[0] >> 16) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],
-			(ctx->exposure[0] >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[2],
-			ctx->exposure[0] & 0xFF);
-
-		if(ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_DCG_RAW) {  //DCG  EXP_L = EXP_M
-			set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[2].addr[0],
-				(ctx->exposure[0] >> 16) & 0xFF);
-			set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[2].addr[1],
-				(ctx->exposure[0] >> 8) & 0xFF);
-			set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[2].addr[2],
-				ctx->exposure[0] & 0xFF);
-		}
-	} else {
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0],
-			(ctx->exposure[0] >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],
-			ctx->exposure[0] & 0xFF);
-	}
-	DRV_LOG(ctx, "exp[0x%x], fll(input/output):%u/%u, flick_en:%d\n",
-		ctx->exposure[0], frame_length, ctx->frame_length, ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static int zhuquec1main_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	zhuquec1main_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], ((u64*)para)[1]);
-	return 0;
-}
-
-static void zhuquec1main_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter)
-{
-    zhuquec1main_set_shutter_frame_length_convert(ctx, shutter, 0);
-}
-
-static int zhuquec1main_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	zhuquec1main_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], 0);
-	return 0;
-}
-void zhuquec1main_set_dummy(struct subdrv_ctx *ctx)
-{
-}
-
-static int zhuquec1main_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = (u32)((u64*)para)[0];
-	u32 framerate = (u32)((u64*)para)[1];
-	u32 frame_length;
-	u32 frame_length_step;
-	u32 frame_length_min;
-	u32 frame_length_max;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-	}
-	if (!framerate) {
-		DRV_LOGE(ctx, "framerate (%u) is invalid\n", framerate);
-		return 0;
-	}
-	if (!ctx->s_ctx.mode[scenario_id].linelength) {
-		DRV_LOGE(ctx, "linelength (%u) is invalid\n",
-			ctx->s_ctx.mode[scenario_id].linelength);
-		return 0;
-	}
-	if (framerate > ctx->s_ctx.mode[scenario_id].max_framerate) {
-		DRV_LOGE(ctx, "framerate (%u) is greater than max_framerate (%u)\n",
-			framerate, ctx->s_ctx.mode[scenario_id].max_framerate);
-		framerate = ctx->s_ctx.mode[scenario_id].max_framerate;
-	}
-	if (ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		set_max_framerate_in_lut_by_scenario(ctx, scenario_id, framerate);
-		return 0;
-	}
-
-	///* MCSS low power mode update para */
-	//if (ctx->s_ctx.mcss_update_subdrv_para != NULL) {
-	//	set_max_framerate_mcss_by_scenario(ctx, scenario_id, framerate);
-	//	return 0;
-	//}
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	/* set on the step of frame length */
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	frame_length_min = ctx->s_ctx.mode[scenario_id].framelength;
-	frame_length_max = ctx->s_ctx.frame_length_max;
-	frame_length_max = frame_length_step ?
-		(frame_length_max - (frame_length_max % frame_length_step)) : frame_length_max;
-
-
-	/* set in the range of frame length */
-	ctx->frame_length = max(frame_length, frame_length_min);
-	ctx->frame_length = min(ctx->frame_length, frame_length_max);
-	ctx->frame_length = frame_length_step ?
-		roundup(ctx->frame_length,frame_length_step) : ctx->frame_length;
-
-	/* set default frame length if given default framerate */
-	if (framerate == ctx->s_ctx.mode[scenario_id].max_framerate)
-		ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-
-	ctx->current_fps = ctx->s_ctx.mode[scenario_id].pclk /
-						ctx->frame_length * 10 /
-						ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->min_frame_length = ctx->frame_length;
-	DRV_LOG(ctx, "max_fps(input/output):%u/%u(sid:%u), min_fl_en:1, ctx->frame_length:%u\n",
-		framerate, ctx->current_fps, scenario_id, ctx->frame_length);
-	if (ctx->s_ctx.reg_addr_auto_extend ||
-			(ctx->frame_length >
-			(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].exposure_margin))) {
-		if (ctx->s_ctx.aov_sensor_support &&
-			ctx->s_ctx.mode[scenario_id].aov_mode &&
-			!ctx->s_ctx.mode[scenario_id].s_dummy_support)
-			DRV_LOG_MUST(ctx, "AOV mode not support set_dummy!\n");
-		else
-			zhuquec1main_set_dummy(ctx);
-	}
-	return 0;
-}
-
-void zhuquec1main_extend_frame_length_convert(struct subdrv_ctx *ctx, u32 ns)
-{
-	return ;
-}
-
-static int zhuquec1main_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 ns = (u32)((u64*)para)[0];
-
-	zhuquec1main_extend_frame_length_convert(ctx, ns);
-	return 0;
-}
-
-static bool dump_i2c_enable = false;
-
-static void dump_i2c_buf(struct subdrv_ctx *ctx, u8 * buf, u32 length)
-{
-	int i;
-	char *out_str = NULL;
-	char *strptr = NULL;
-	size_t buf_size = SUBDRV_I2C_BUF_SIZE * sizeof(char);
-	size_t remind = buf_size;
-	int num = 0;
-
-	out_str = kzalloc(buf_size + 1, GFP_KERNEL);
-	if (!out_str)
-		return;
-
-	strptr = out_str;
-	memset(out_str, 0, buf_size + 1);
-
-	num = snprintf(strptr, remind,"[ ");
-	remind -= num;
-	strptr += num;
-
-	for (i = 0 ; i < length; i ++) {
-		num = snprintf(strptr, remind,"0x%02x, ", buf[i]);
-
-		if (num <= 0) {
-			DRV_LOG(ctx, "snprintf return negative at line %d\n", __LINE__);
-			kfree(out_str);
-			return;
-		}
-
-		remind -= num;
-		strptr += num;
-
-		if (remind <= 20) {
-			DRV_LOG(ctx, " write %s\n", out_str);
-			memset(out_str, 0, buf_size + 1);
-			strptr = out_str;
-			remind = buf_size;
-		}
-	}
-
-	num = snprintf(strptr, remind," ]");
-	remind -= num;
-	strptr += num;
-
-	DRV_LOG(ctx, " write %s\n", out_str);
-	strptr = out_str;
-	remind = buf_size;
-
-	kfree(out_str);
-}
-
-static int zhuquec1main_i2c_burst_wr_regs_u8(struct subdrv_ctx * ctx, u16 * list, u32 len)
-{
-	adapter_i2c_burst_wr_regs_u8(ctx, ctx->i2c_write_id >> 1, list, len);
-	return 	0;
-}
-
-//addr16 data8
-static int adapter_i2c_burst_wr_regs_u8(struct subdrv_ctx * ctx ,
-		u16 addr, u16 *list, u32 len)
-{
-	struct i2c_client *i2c_client = ctx->i2c_client;
-	struct i2c_msg  msg;
-	struct i2c_msg *pmsg = &msg;
-
-	u8 *pbuf = NULL;
-	u16 *plist = NULL;
-	u16 *plist_end = NULL;
-
-	u32 sent = 0;
-	u32 total = 0;
-	u32 per_sent = 0;
-	int ret, i;
-
-	if(!msg_buf) {
-		LOG_INF("malloc msg_buf retry");
-		msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-		if(!msg_buf) {
-			LOG_INF("malloc error");
-			return -ENOMEM;
-		}
-	}
-
-	/* each msg contains addr(u16) + val(u8 *) */
-	sent = 0;
-	total = len / 2;
-	plist = list;
-	plist_end = list + len - 2;
-
-	DRV_LOG(ctx, "len(%u)  total(%u)", len, total);
-
-	while (sent < total) {
-
-		per_sent = 0;
-		pmsg = &msg;
-		pbuf = msg_buf;
-
-		pmsg->addr = addr;
-		pmsg->flags = i2c_client->flags;
-		pmsg->buf = pbuf;
-
-		pbuf[0] = plist[0] >> 8;    //address
-		pbuf[1] = plist[0] & 0xff;
-		pbuf[2] = plist[1] & 0xff;
-
-		pbuf += 3;
-		pmsg->len = 3;
-		per_sent += 1;
-
-		for (i = 0; i < total - sent - 1; i++) {  //Maximum number of remaining cycles - 1
-			if(plist[0] + 1 == plist[2] ) {  //Addresses are consecutive
-				pbuf[0] = plist[3] & 0xff;
-
-				pbuf += 1;
-				pmsg->len += 1;
-				per_sent += 1;
-				plist += 2;
-
-				if(pmsg->len >= MAX_BURST_LEN) {
-					break;
-				}
-			}
-		}
-		plist += 2;
-
-		if(dump_i2c_enable) {
-			DRV_LOG(ctx, "pmsg->len(%d) buff: ", pmsg->len);
-			dump_i2c_buf(ctx, msg_buf, pmsg->len);
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmsg, 1);
-
-		if (ret < 0) {
-			dev_info(&i2c_client->dev,
-				"i2c transfer failed (%d)\n", ret);
-			return -EIO;
-		}
-
-		sent += per_sent;
-
-		DRV_LOG(ctx, "sent(%u)  total(%u)  per_sent(%u)", sent, total, per_sent);
-	}
-
-	return 0;
-}
-
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id) {
-	struct subdrv_entry *m_subdrv_entry = &zhuquec1main_mipi_raw_entry;
-	u32 final_sensor_id = 0xFFFFFFFF;
-	const char *of_sensor_names[OF_SENSOR_NAMES_MAXCNT];
-	const char *of_sensor_hal_names[OF_SENSOR_NAMES_MAXCNT];
-	u32   of_sensor_ids[OF_SENSOR_NAMES_MAXCNT] = {0};
-	int i, index, of_sensor_names_cnt, of_sensor_hal_names_cnt, of_sensor_ids_ret;
-	struct device *dev = &ctx->i2c_client->dev;
-
-	memset(&of_sensor_ids, 0xFF, sizeof(of_sensor_ids));
-
-	if(g_id_from_dts_flag == false) {
-		of_sensor_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-names", of_sensor_names, ARRAY_SIZE(of_sensor_names));
-
-		of_sensor_hal_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-hal-names", of_sensor_hal_names, ARRAY_SIZE(of_sensor_hal_names));
-
-		of_sensor_ids_ret = of_property_read_u32_array(dev->of_node,
-				"sensor-ids", of_sensor_ids, of_sensor_names_cnt);
-
-		pr_err("%s of_sensor_names_cnt(%d), of_sensor_ids_ret(%d)",
-			__func__, of_sensor_names_cnt, of_sensor_ids_ret);
-		for(i = 0 ;i < of_sensor_names_cnt; i++) {
-				pr_err("%s of_sensor_names[%d] = %s  of_sensor_ids[%d] = %d",
-				__func__, i, of_sensor_names[i], i, of_sensor_ids[i]);
-		}
-		for(i = 0 ;i < of_sensor_hal_names_cnt; i++) {
-			pr_err("%s of_sensor_hal_names_cnt[%d] = %s",
-				__func__, i, of_sensor_hal_names[i]);
-		}
-
-		if (of_sensor_names_cnt && (of_sensor_ids_ret == 0)) {
-			for(index = 0; index < of_sensor_names_cnt; index++) {
-				if (strncmp(SENSOR_NAME, of_sensor_names[index], strlen(SENSOR_NAME)) == 0) {
-					final_sensor_id = of_sensor_ids[index];
-					break;
-				}
-			}
-		} else {
-			pr_err("%s sensor-ids error in dts", __func__);
-		}
-		g_id_from_dts_flag = true;
-	}
-
-	if(final_sensor_id != 0xFFFFFFFF) {
-		*sensor_id = final_sensor_id;
-		ctx->s_ctx.sensor_id = final_sensor_id;
-
-		m_subdrv_entry->id = final_sensor_id;
-		if(of_sensor_hal_names_cnt == of_sensor_names_cnt) {
-			m_subdrv_entry->name = of_sensor_hal_names[index];
-		}
-
-		pr_err("%s final index(%d), id(%d) name(%s)",
-			__func__, index, m_subdrv_entry->id, m_subdrv_entry->name);
-	} else {
-		*sensor_id = ctx->s_ctx.sensor_id;
-	}
-
-	return;
-}
-
-static int zhuquec1main_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-	zhuquec1main_set_gain_convert(ctx, gain);
-	return 0;
-}
-
-static void zhuquec1main_set_gain_convert(struct subdrv_ctx *ctx, u32 gain)
-{
-	u16 rg_gain;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	/* check boundary of gain */
-	gain = max(gain,
-		ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_ana_gain_range[0].min);
-	gain = min(gain,
-		ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_ana_gain_range[0].max);
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-
-	zhuquec1main_set_hgc_to_buf(ctx, rg_gain, 0);
-
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-}
-
-void zhuquec1main_set_multi_gain(struct subdrv_ctx *ctx, u32 *gains, u16 exp_cnt)
-{
-	int i = 0;
-	u16 rg_gains[3] = {0};
-	u8 has_gains[3] = {0};
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	if (exp_cnt > ARRAY_SIZE(ctx->ana_gain)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->ana_gain));
-		exp_cnt = ARRAY_SIZE(ctx->ana_gain);
-	}
-
-	if( ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_DCG_RAW) {  //DCG  HCG = 3.45LCG
-		gains[0] = gains[0] * 1024 / 3532;
-	}
-
-	for (i = 0; i < exp_cnt; i++) {
-		/* check boundary of gain */
-		gains[i] = max(gains[i],
-			ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_ana_gain_range[i].min);
-		gains[i] = min(gains[i],
-			ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_ana_gain_range[i].max);
-		/* mapping of gain to register value */
-		if (ctx->s_ctx.g_gain2reg != NULL)
-			gains[i] = ctx->s_ctx.g_gain2reg(gains[i]);
-		else
-			gains[i] = gain2reg(gains[i]);
-	}
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->ana_gain[i] = gains[i];
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	memset(has_gains, 1, sizeof(has_gains));
-	switch (exp_cnt) {
-	case 2:
-		rg_gains[0] = gains[0];
-		has_gains[1] = 0;
-		rg_gains[2] = gains[1];
-		break;
-	case 3:
-		rg_gains[0] = gains[0];
-		rg_gains[1] = gains[1];
-		rg_gains[2] = gains[2];
-		break;
-	default:
-		has_gains[0] = 0;
-		has_gains[1] = 0;
-		has_gains[2] = 0;
-		break;
-	}
-
-	zhuquec1main_set_hgc_to_buf(ctx, rg_gains[0], rg_gains[2]);
-
-	for (i = 0; i < 3; i++) {
-		if (has_gains[i]) {
-			set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[i].addr[0],
-				(rg_gains[i] >> 8) & 0xFF);
-			set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[i].addr[1],
-				rg_gains[i] & 0xFF);
-		}
-	}
-	DRV_LOG(ctx, "reg[lg/mg/sg]: 0x%x 0x%x 0x%x\n", rg_gains[0], rg_gains[1], rg_gains[2]);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-}
-
-
-static void zhuquec1main_set_hdr_tri_gain(struct subdrv_ctx *ctx, u64 *gains, u16 exp_cnt)
-{
-	int i = 0;
-	u32 values[3] = {0};
-
-	if (gains != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u32) *(gains + i);
-	}
-	zhuquec1main_set_multi_gain(ctx, values, exp_cnt);
-}
-
-static int zhuquec1main_set_hdr_tri_gain2(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-
-	u64 *feature_data = (u64 *) para;
-	zhuquec1main_set_hdr_tri_gain(ctx, feature_data, 2);
-	return 0;
-}
-
-static int zhuquec1main_set_hdr_tri_gain3(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	u64 *feature_data = (u64 *) para;
-	zhuquec1main_set_hdr_tri_gain(ctx, feature_data, 3);
-	return 0;
-}
-
-static int zhuquec1main_common_control(struct subdrv_ctx *ctx,
-			enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-			MSDK_SENSOR_EXPOSURE_WINDOW_STRUCT *image_window,
-			MSDK_SENSOR_CONFIG_STRUCT *sensor_config_data)
-{
-	int ret = ERROR_NONE;
-	u64 time_boot_begin = 0;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx) {
-		DRV_LOGE(ctx, "null _adaptor_ctx\n");
-		return -ENODEV;
-	}
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOG(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-		ret = ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.chk_s_off_sta)
-		check_stream_off(ctx);
-	update_mode_info(ctx, scenario_id);
-
-	if (ctx->s_ctx.mode[scenario_id].mode_setting_table != NULL) {
-		DRV_LOG_MUST(ctx, "E: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-		if (ctx->power_on_profile_en)
-			time_boot_begin = ktime_get_boottime_ns();
-
-		/* initail setting */
-		zhuquec1main_i2c_burst_wr_regs_u8(ctx, ctx->s_ctx.mode[scenario_id].mode_setting_table,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-
-		zhuquec1main_get_hgc_from_settings(ctx);
-
-		if (ctx->power_on_profile_en) {
-			ctx->sensor_pw_on_profile.i2c_cfg_period =
-					ktime_get_boottime_ns() - time_boot_begin;
-
-			ctx->sensor_pw_on_profile.i2c_cfg_table_len =
-					ctx->s_ctx.mode[scenario_id].mode_setting_len;
-		}
-		DRV_LOG(ctx, "X: sid:%u size:%u\n", scenario_id,
-			ctx->s_ctx.mode[scenario_id].mode_setting_len);
-	} else {
-		DRV_LOGE(ctx, "please implement mode setting(sid:%u)!\n", scenario_id);
-	}
-
-	set_mirror_flip(ctx, ctx->s_ctx.mirror);
-
-	is_first_exp = true;
-
-	return ret;
-}
-
-static void zhuquec1main_get_exp_offset_from_settings(struct subdrv_ctx *ctx)
-{
-	u32 i = 0;
-	bool flag[] = {false, false, false};
-
-	kal_uint16 * list = ctx->s_ctx.mode[ctx->current_scenario_id].mode_setting_table;
-	u32 length = ctx->s_ctx.mode[ctx->current_scenario_id].mode_setting_len;
-
-	fix_short_exp = 0;
-
-	for (i = 0; i < length; i += 2) {
-		if(list[i] == 0x3830) { //short exposure adjust number
-			exp_offset = list[i + 1];
-			flag[0] = true;
-		}
-		if(list[i] == 0x3846) {  //stg_hdr_rst_pt_m
-			fix_short_exp |= (list[i + 1] & 0xFF) << 8;
-			flag[1] = true;
-		}
-		if(list[i] == 0x3847) {  //stg_hdr_rst_pt_m
-			fix_short_exp |=  list[i + 1] & 0xFF;
-			flag[2] = true;
-		}
-
-		if(flag[0] == true && flag[1] == true && flag[2] == true) {
-			DRV_LOG(ctx, "exp_offset= 0x%x = %d", exp_offset, exp_offset);
-			DRV_LOG(ctx, "fix_short_exp= 0x%x  = %d", fix_short_exp, fix_short_exp);
-			break;
-		}
-	}
-}
-
-static int zhuquec1main_get_hw_mode(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	u64 *feature_data = (u64 *)para;
-
-	u32 *sensor_mode = (u32 *)(uintptr_t)(*feature_data);
-	u8  *hw_mode = (u8 *)(uintptr_t)(*(feature_data + 1));
-	if (*sensor_mode < ARRAY_SIZE(mode_struct)) {
-		*hw_mode = mode_struct[*sensor_mode].hw_mode;
-	}
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1mainmipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1mainmipiraw_Sensor.h
deleted file mode 100755
index fb2f3a2d..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1main_mipi_raw/zhuquec1mainmipiraw_Sensor.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     zhuquec1mainmipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _ZHUQUEC1MAINMIPI_SENSOR_H
-#define _ZHUQUEC1MAINMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "zhuquec1main_ana_gain_table.h"
-#include "zhuquec1main_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/Makefile
deleted file mode 100755
index 422fa08f..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/zhuquec1telemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/C1_4mode_0418.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/C1_4mode_0418.xlsx
deleted file mode 100755
index 88aef285..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/C1_4mode_0418.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/C1_long-init_tele_0509_0.9.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/C1_long-init_tele_0509_0.9.txt
deleted file mode 100755
index be53cf6f..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/C1_long-init_tele_0509_0.9.txt
+++ /dev/null
@@ -1,8933 +0,0 @@
-FCFC	4000
-0000	0009
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0101
-FCFC	2001
-3C60	0000
-FCFC	2002
-8468	1773
-846A	02FC
-846C	E702
-846E	8305
-8470	3784
-8472	0224
-8474	1304
-8476	C449
-8478	5C54
-847A	8297
-847C	1C58
-847E	8297
-8480	5C58
-8482	8297
-8484	1C5C
-8486	8297
-8488	5C5C
-848A	8297
-848C	3C40
-848E	8297
-8490	1773
-8492	02FC
-8494	6700
-8496	4305
-8498	0000
-849A	0000
-8510	8280
-8512	0100
-8514	1773
-8516	02FC
-8518	E702
-851A	C3FA
-851C	2A84
-851E	0145
-8520	97A0
-8522	01FC
-8524	E780
-8526	808A
-8528	1335
-852A	1400
-852C	9790
-852E	01FC
-8530	E780
-8532	807D
-8534	1773
-8536	02FC
-8538	6700
-853A	03FB
-853C	1773
-853E	02FC
-8540	E702
-8542	A3F6
-8544	B7E7
-8546	0124
-8548	9387
-854A	0787
-854C	3794
-854E	0124
-8550	1304
-8552	0453
-8554	83A9
-8556	8700
-8558	03A9
-855A	C700
-855C	8327
-855E	841D
-8560	0146
-8562	CE85
-8564	AA84
-8566	4A85
-8568	032A
-856A	0464
-856C	2320
-856E	F464
-8570	9760
-8572	01FC
-8574	E780
-8576	404D
-8578	2685
-857A	9790
-857C	01FC
-857E	E780
-8580	A078
-8582	0546
-8584	CE85
-8586	4A85
-8588	9760
-858A	01FC
-858C	E780
-858E	C04B
-8590	8567
-8592	A297
-8594	83A6
-8596	47B2
-8598	03C7
-859A	E7B6
-859C	2320
-859E	4465
-85A0	8947
-85A2	6386
-85A4	F600
-85A6	1773
-85A8	02FC
-85AA	6700
-85AC	43F3
-85AE	1377
-85B0	F70F
-85B2	8547
-85B4	E319
-85B6	F7FE
-85B8	3724
-85BA	0024
-85BC	1304
-85BE	0433
-85C0	97A0
-85C2	01FC
-85C4	E780
-85C6	8091
-85C8	65FD
-85CA	8347
-85CC	F419
-85CE	EDFB
-85D0	1773
-85D2	02FC
-85D4	6700
-85D6	A3F0
-85D8	91C1
-85DA	8280
-85DC	1773
-85DE	02FC
-85E0	E702
-85E2	43EE
-85E4	1334
-85E6	1500
-85E8	1965
-85EA	2286
-85EC	9145
-85EE	1305
-85F0	0518
-85F2	9790
-85F4	00FC
-85F6	E780
-85F8	2064
-85FA	1315
-85FC	0401
-85FE	4181
-8600	B787
-8602	0040
-8604	2399
-8606	A710
-8608	1773
-860A	02FC
-860C	6700
-860E	C3ED
-8610	1773
-8612	02FC
-8614	E702
-8616	03EB
-8618	B7E7
-861A	0124
-861C	83A7
-861E	4758
-8620	0547
-8622	F917
-8624	6379
-8626	F704
-8628	4165
-862A	1166
-862C	9165
-862E	1305
-8630	25F5
-8632	9790
-8634	00FC
-8636	E780
-8638	A063
-863A	B7E7
-863C	0124
-863E	9387
-8640	0787
-8642	03A4
-8644	C708
-8646	83A4
-8648	8708
-864A	0146
-864C	2285
-864E	A685
-8650	9760
-8652	01FC
-8654	E780
-8656	403F
-8658	9700
-865A	02FC
-865C	E780
-865E	40A2
-8660	0546
-8662	A685
-8664	2285
-8666	9760
-8668	01FC
-866A	E780
-866C	E03D
-866E	1773
-8670	02FC
-8672	6700
-8674	63E7
-8676	4165
-8678	0146
-867A	9165
-867C	1305
-867E	25F5
-8680	9790
-8682	00FC
-8684	E780
-8686	C05E
-8688	4DBF
-868A	0100
-868C	9947
-868E	630E
-8690	F50C
-8692	0548
-8694	6304
-8696	050B
-8698	3303
-869A	B500
-869C	014F
-869E	63F9
-86A0	650A
-86A2	B7E8
-86A4	0124
-86A6	9388
-86A8	084C
-86AA	03A5
-86AC	480C
-86AE	0D68
-86B0	1308
-86B2	88DC
-86B4	4295
-86B6	B78E
-86B8	0024
-86BA	0605
-86BC	9387
-86BE	552A
-86C0	938E
-86C2	0E93
-86C4	8E07
-86C6	AA9E
-86C8	0565
-86CA	83DF
-86CC	480E
-86CE	C697
-86D0	0607
-86D2	AA98
-86D4	0355
-86D6	0600
-86D8	03D8
-86DA	0600
-86DC	631B
-86DE	0F06
-86E0	6309
-86E2	0507
-86E4	039E
-86E6	2E01
-86E8	03D8
-86EA	EE01
-86EC	3305
-86EE	C541
-86F0	2A98
-86F2	88C3
-86F4	23A2
-86F6	0701
-86F8	6346
-86FA	0506
-86FC	6345
-86FE	F501
-8700	3305
-8702	F541
-8704	88C3
-8706	634B
-8708	0804
-870A	6346
-870C	F801
-870E	3308
-8710	F841
-8712	23A2
-8714	0701
-8716	03AE
-8718	0700
-871A	635A
-871C	0E01
-871E	03D5
-8720	0859
-8722	0505
-8724	3305
-8726	C541
-8728	4295
-872A	2398
-872C	A858
-872E	8505
-8730	3A96
-8732	BA96
-8734	A107
-8736	E3EF
-8738	65F8
-873A	8280
-873C	1383
-873E	1500
-8740	6388
-8742	F504
-8744	B7D7
-8746	0024
-8748	03DF
-874A	A74E
-874C	E3EB
-874E	65F4
-8750	8280
-8752	23A0
-8754	0700
-8756	23A2
-8758	0700
-875A	D1BF
-875C	7E98
-875E	23A2
-8760	0701
-8762	55BF
-8764	7E95
-8766	88C3
-8768	79BF
-876A	81ED
-876C	B7F6
-876E	0124
-8770	37F6
-8772	0124
-8774	0943
-8776	9386
-8778	E649
-877A	1306
-877C	C649
-877E	014F
-8780	0DB7
-8782	9D47
-8784	6381
-8786	F502
-8788	1383
-878A	6500
-878C	014F
-878E	01BF
-8790	B7F6
-8792	0124
-8794	37F6
-8796	0124
-8798	0D43
-879A	9386
-879C	664A
-879E	1306
-87A0	464A
-87A2	8945
-87A4	45B7
-87A6	B7F6
-87A8	0124
-87AA	37F6
-87AC	0124
-87AE	1543
-87B0	9386
-87B2	A64A
-87B4	1306
-87B6	864A
-87B8	8D45
-87BA	014F
-87BC	DDB5
-87BE	0100
-87C0	1773
-87C2	02FC
-87C4	E702
-87C6	63CE
-87C8	AA89
-87CA	2E84
-87CC	9790
-87CE	FFFB
-87D0	E780
-87D2	C011
-87D4	01C9
-87D6	B7A7
-87D8	0124
-87DA	83C7
-87DC	370A
-87DE	0547
-87E0	6384
-87E2	E704
-87E4	B7E7
-87E6	0124
-87E8	9387
-87EA	0787
-87EC	03A9
-87EE	870A
-87F0	83A4
-87F2	C70A
-87F4	0146
-87F6	CA85
-87F8	2685
-87FA	9760
-87FC	01FC
-87FE	E780
-8800	A024
-8802	A285
-8804	4E85
-8806	97C0
-8808	01FC
-880A	E780
-880C	A0E1
-880E	2A84
-8810	0546
-8812	CA85
-8814	2685
-8816	9760
-8818	01FC
-881A	E780
-881C	E022
-881E	2285
-8820	1773
-8822	02FC
-8824	6700
-8826	A3CB
-8828	3787
-882A	0224
-882C	0347
-882E	B74A
-8830	E31A
-8832	F7FA
-8834	B7F7
-8836	0124
-8838	03A4
-883A	87CA
-883C	CDB7
-883E	0100
-8840	1773
-8842	02FC
-8844	E702
-8846	83C5
-8848	5D71
-884A	AA8A
-884C	2E8B
-884E	B28B
-8850	3684
-8852	BA84
-8854	3E89
-8856	C289
-8858	468A
-885A	97A0
-885C	FFFB
-885E	E780
-8860	2097
-8862	01CD
-8864	B797
-8866	0124
-8868	0567
-886A	9387
-886C	0753
-886E	BA97
-8870	83C7
-8872	37B7
-8874	8546
-8876	6383
-8878	D70A
-887A	37E3
-887C	0124
-887E	1303
-8880	0387
-8882	832C
-8884	030B
-8886	032C
-8888	430B
-888A	0146
-888C	E685
-888E	6285
-8890	9760
-8892	01FC
-8894	E780
-8896	401B
-8898	CA57
-889A	2E43
-889C	5E86
-889E	3ED8
-88A0	BA57
-88A2	9AC4
-88A4	1E43
-88A6	3ED6
-88A8	AA57
-88AA	9AC2
-88AC	0343
-88AE	010C
-88B0	3ED4
-88B2	9A57
-88B4	9AC0
-88B6	DA85
-88B8	3ED2
-88BA	8A57
-88BC	5685
-88BE	D288
-88C0	3ED0
-88C2	FA47
-88C4	4E88
-88C6	2687
-88C8	3ECE
-88CA	EA47
-88CC	A286
-88CE	3ECC
-88D0	DA47
-88D2	3ECA
-88D4	CA47
-88D6	3EC8
-88D8	BA47
-88DA	3EC6
-88DC	AA47
-88DE	3EC4
-88E0	8357
-88E2	4108
-88E4	3EC2
-88E6	8A47
-88E8	3EC0
-88EA	0343
-88EC	C10B
-88EE	CA87
-88F0	1ADE
-88F2	0343
-88F4	810B
-88F6	1ADC
-88F8	5A53
-88FA	1ADA
-88FC	97D0
-88FE	01FC
-8900	E780
-8902	402B
-8904	0546
-8906	E685
-8908	6285
-890A	9760
-890C	01FC
-890E	E780
-8910	A013
-8912	6161
-8914	1773
-8916	02FC
-8918	6700
-891A	C3BB
-891C	B786
-891E	0224
-8920	9386
-8922	C649
-8924	03C6
-8926	0601
-8928	6319
-892A	F600
-892C	B7E7
-892E	0124
-8930	9387
-8932	074C
-8934	BA97
-8936	03D4
-8938	2780
-893A	03C7
-893C	F600
-893E	8547
-8940	E31D
-8942	F7F2
-8944	B7F7
-8946	0124
-8948	83A4
-894A	07CB
-894C	3DB7
-894E	0100
-8950	1773
-8952	02FC
-8954	E702
-8956	63B5
-8958	B7A7
-895A	0124
-895C	83C7
-895E	3794
-8960	AA84
-8962	2E89
-8964	B289
-8966	C1CF
-8968	8052
-896A	03AA
-896C	0600
-896E	97A0
-8970	01FC
-8972	E780
-8974	20ED
-8976	B307
-8978	8500
-897A	5295
-897C	3387
-897E	A700
-8980	6366
-8982	9700
-8984	13D7
-8986	1400
-8988	6366
-898A	A704
-898C	B7E6
-898E	0024
-8990	9386
-8992	0682
-8994	03C7
-8996	0609
-8998	37D6
-899A	0024
-899C	0346
-899E	466D
-89A0	3337
-89A2	E000
-89A4	3307
-89A6	E040
-89A8	8545
-89AA	F98F
-89AC	6306
-89AE	B602
-89B0	03C7
-89B2	1609
-89B4	0145
-89B6	11EB
-89B8	83A7
-89BA	C608
-89BC	9D8C
-89BE	3385
-89C0	A440
-89C2	1773
-89C4	02FC
-89C6	6700
-89C8	83B1
-89CA	3E85
-89CC	E3F6
-89CE	27FF
-89D0	4A85
-89D2	DDB7
-89D4	BA87
-89D6	5DBF
-89D8	03C7
-89DA	2609
-89DC	15EF
-89DE	03A5
-89E0	C608
-89E2	3385
-89E4	A440
-89E6	6373
-89E8	3901
-89EA	4E89
-89EC	6373
-89EE	F900
-89F0	3E89
-89F2	3305
-89F4	2541
-89F6	1773
-89F8	02FC
-89FA	6700
-89FC	43AE
-89FE	0545
-8A00	97D0
-8A02	01FC
-8A04	E780
-8A06	4057
-8A08	2A84
-8A0A	0145
-8A0C	97D0
-8A0E	01FC
-8A10	E780
-8A12	8056
-8A14	2A8A
-8A16	A1BF
-8A18	630F
-8A1A	C700
-8A1C	8947
-8A1E	0145
-8A20	E311
-8A22	F7FA
-8A24	3305
-8A26	3901
-8A28	97D0
-8A2A	00FC
-8A2C	E780
-8A2E	C0E0
-8A30	3385
-8A32	A440
-8A34	79B7
-8A36	03A5
-8A38	C608
-8A3A	4E99
-8A3C	3385
-8A3E	A440
-8A40	75B7
-8A42	0100
-8A44	1773
-8A46	02FC
-8A48	E702
-8A4A	23A6
-8A4C	B7E7
-8A4E	0124
-8A50	9387
-8A52	0787
-8A54	03A9
-8A56	870B
-8A58	83A4
-8A5A	C70B
-8A5C	2A84
-8A5E	CA85
-8A60	0146
-8A62	2685
-8A64	9760
-8A66	01FC
-8A68	E780
-8A6A	00FE
-8A6C	2285
-8A6E	97D0
-8A70	00FC
-8A72	E780
-8A74	201E
-8A76	CA85
-8A78	0546
-8A7A	2685
-8A7C	9760
-8A7E	01FC
-8A80	E780
-8A82	80FC
-8A84	97A0
-8A86	01FC
-8A88	E780
-8A8A	C0DB
-8A8C	B7A7
-8A8E	0124
-8A90	03C6
-8A92	3794
-8A94	8329
-8A96	0404
-8A98	0329
-8A9A	C403
-8A9C	AA84
-8A9E	8145
-8AA0	2285
-8AA2	97D0
-8AA4	00FC
-8AA6	E780
-8AA8	20FF
-8AAA	2A86
-8AAC	A686
-8AAE	CE85
-8AB0	4A85
-8AB2	97D0
-8AB4	00FC
-8AB6	E780
-8AB8	60EC
-8ABA	1840
-8ABC	1C50
-8ABE	9396
-8AC0	1400
-8AC2	BA97
-8AC4	B697
-8AC6	637B
-8AC8	F500
-8ACA	9357
-8ACC	1500
-8ACE	2697
-8AD0	63F6
-8AD2	E700
-8AD4	3385
-8AD6	9740
-8AD8	08D0
-8ADA	08C0
-8ADC	1773
-8ADE	02FC
-8AE0	6700
-8AE2	E39F
-8AE4	51E9
-8AE6	1773
-8AE8	02FC
-8AEA	E702
-8AEC	A39D
-8AEE	B707
-8AF0	0224
-8AF2	83A7
-8AF4	479C
-8AF6	D5C3
-8AF8	9790
-8AFA	FFFB
-8AFC	E780
-8AFE	00E2
-8B00	15ED
-8B02	9790
-8B04	FFFB
-8B06	E780
-8B08	60DE
-8B0A	0DC9
-8B0C	B7A7
-8B0E	0224
-8B10	83A7
-8B12	4754
-8B14	3707
-8B16	0040
-8B18	7907
-8B1A	BA97
-8B1C	2390
-8B1E	0700
-8B20	B787
-8B22	0224
-8B24	9387
-8B26	C749
-8B28	238A
-8B2A	0704
-8B2C	A38A
-8B2E	0704
-8B30	23A8
-8B32	0704
-8B34	1773
-8B36	02FC
-8B38	6700
-8B3A	039B
-8B3C	9790
-8B3E	FFFB
-8B40	E780
-8B42	8061
-8B44	71FD
-8B46	B7A7
-8B48	0224
-8B4A	83A7
-8B4C	4754
-8B4E	3707
-8B50	0040
-8B52	7907
-8B54	BA97
-8B56	0547
-8B58	2390
-8B5A	E700
-8B5C	B787
-8B5E	0224
-8B60	9387
-8B62	C749
-8B64	238A
-8B66	0704
-8B68	A38A
-8B6A	0704
-8B6C	23A8
-8B6E	0704
-8B70	1773
-8B72	02FC
-8B74	6700
-8B76	4397
-8B78	A547
-8B7A	631F
-8B7C	F500
-8B7E	B797
-8B80	0124
-8B82	9387
-8B84	0753
-8B86	23AE
-8B88	074E
-8B8A	23A0
-8B8C	0750
-8B8E	B7D7
-8B90	0124
-8B92	23A0
-8B94	07F2
-8B96	8280
-8B98	8280
-8B9A	4165
-8B9C	1166
-8B9E	9165
-8BA0	1305
-8BA2	25F5
-8BA4	9790
-8BA6	00FC
-8BA8	E780
-8BAA	800C
-8BAC	9790
-8BAE	FFFB
-8BB0	E780
-8BB2	C0D6
-8BB4	41F5
-8BB6	B1B7
-8BB8	9147
-8BBA	6303
-8BBC	F500
-8BBE	8280
-8BC0	1773
-8BC2	02FC
-8BC4	E702
-8BC6	638E
-8BC8	03D6
-8BCA	E503
-8BCC	83D6
-8BCE	8503
-8BD0	03D7
-8BD2	A503
-8BD4	83D7
-8BD6	C503
-8BD8	B386
-8BDA	C602
-8BDC	2E84
-8BDE	B785
-8BE0	0224
-8BE2	03C5
-8BE4	454C
-8BE6	8545
-8BE8	3307
-8BEA	C702
-8BEC	A186
-8BEE	9394
-8BF0	0601
-8BF2	C180
-8BF4	B387
-8BF6	C702
-8BF8	2187
-8BFA	9319
-8BFC	0701
-8BFE	93D9
-8C00	0901
-8C02	A187
-8C04	1399
-8C06	0701
-8C08	1359
-8C0A	0901
-8C0C	6300
-8C0E	B506
-8C10	9790
-8C12	FFFB
-8C14	E780
-8C16	80CC
-8C18	69C5
-8C1A	B7E7
-8C1C	0024
-8C1E	9387
-8C20	0793
-8C22	03C7
-8C24	37EE
-8C26	8546
-8C28	6301
-8C2A	D702
-8C2C	03C7
-8C2E	97EE
-8C30	B7C7
-8C32	0040
-8C34	2393
-8C36	9720
-8C38	09C7
-8C3A	2398
-8C3C	9720
-8C3E	2399
-8C40	9720
-8C42	1773
-8C44	02FC
-8C46	6700
-8C48	8389
-8C4A	B7F6
-8C4C	0124
-8C4E	83C6
-8C50	46EF
-8C52	638D
-8C54	E60C
-8C56	0947
-8C58	E39A
-8C5A	E6FC
-8C5C	03C7
-8C5E	67EE
-8C60	3387
-8C62	E402
-8C64	9314
-8C66	0701
-8C68	C180
-8C6A	C9B7
-8C6C	9307
-8C6E	0020
-8C70	63F7
-8C72	9700
-8C74	9396
-8C76	1400
-8C78	9394
-8C7A	0601
-8C7C	C180
-8C7E	9307
-8C80	0020
-8C82	63F8
-8C84	3701
-8C86	1397
-8C88	1900
-8C8A	9319
-8C8C	0701
-8C8E	93D9
-8C90	0901
-8C92	9307
-8C94	0020
-8C96	63F8
-8C98	2701
-8C9A	9317
-8C9C	1900
-8C9E	1399
-8CA0	0701
-8CA2	1359
-8CA4	0901
-8CA6	9307
-8CA8	F07F
-8CAA	63F7
-8CAC	9700
-8CAE	9386
-8CB0	F4FF
-8CB2	9394
-8CB4	0601
-8CB6	C180
-8CB8	9307
-8CBA	F07F
-8CBC	63F8
-8CBE	3701
-8CC0	1387
-8CC2	F9FF
-8CC4	9319
-8CC6	0701
-8CC8	93D9
-8CCA	0901
-8CCC	9307
-8CCE	F07F
-8CD0	E3F0
-8CD2	27F5
-8CD4	9307
-8CD6	F9FF
-8CD8	1399
-8CDA	0701
-8CDC	1359
-8CDE	0901
-8CE0	05BF
-8CE2	9790
-8CE4	FFFB
-8CE6	E780
-8CE8	20C4
-8CEA	05F9
-8CEC	9790
-8CEE	FFFB
-8CF0	E780
-8CF2	C0BF
-8CF4	21C5
-8CF6	9790
-8CF8	FFFB
-8CFA	E780
-8CFC	20C1
-8CFE	19C5
-8D00	B7C7
-8D02	0024
-8D04	83C7
-8D06	57EF
-8D08	91C3
-8D0A	2689
-8D0C	B7C7
-8D0E	0040
-8D10	3767
-8D12	0124
-8D14	0327
-8D16	8746
-8D18	2393
-8D1A	3721
-8D1C	2398
-8D1E	2721
-8D20	2399
-8D22	9720
-8D24	A285
-8D26	0D45
-8D28	0297
-8D2A	21BF
-8D2C	03C7
-8D2E	47EE
-8D30	3387
-8D32	E402
-8D34	9314
-8D36	0701
-8D38	C180
-8D3A	CDBD
-8D3C	9790
-8D3E	FFFB
-8D40	E780
-8D42	80BF
-8D44	E30F
-8D46	05EE
-8D48	B7C7
-8D4A	0040
-8D4C	2398
-8D4E	2727
-8D50	2393
-8D52	9720
-8D54	FDB5
-8D56	0100
-8D58	A547
-8D5A	6303
-8D5C	F504
-8D5E	BD47
-8D60	6303
-8D62	F500
-8D64	8280
-8D66	1763
-8D68	02FC
-8D6A	E702
-8D6C	A375
-8D6E	9790
-8D70	FFFB
-8D72	E780
-8D74	E037
-8D76	29C1
-8D78	9790
-8D7A	FFFB
-8D7C	E780
-8D7E	C03D
-8D80	01ED
-8D82	B7A7
-8D84	0224
-8D86	83A7
-8D88	4754
-8D8A	3707
-8D8C	0040
-8D8E	7907
-8D90	BA97
-8D92	0547
-8D94	2390
-8D96	E700
-8D98	1763
-8D9A	02FC
-8D9C	6700
-8D9E	C374
-8DA0	B7A7
-8DA2	0124
-8DA4	9387
-8DA6	0753
-8DA8	0947
-8DAA	2395
-8DAC	07B6
-8DAE	2394
-8DB0	07B6
-8DB2	23A0
-8DB4	E7B2
-8DB6	8280
-8DB8	97A0
-8DBA	01FC
-8DBC	E780
-8DBE	404F
-8DC0	65BF
-8DC2	0100
-8DC4	1763
-8DC6	02FC
-8DC8	E702
-8DCA	C36F
-8DCC	3724
-8DCE	0024
-8DD0	1304
-8DD2	0433
-8DD4	9790
-8DD6	01FC
-8DD8	E780
-8DDA	4010
-8DDC	65FD
-8DDE	8347
-8DE0	F419
-8DE2	EDFB
-8DE4	B7A7
-8DE6	0124
-8DE8	0D47
-8DEA	23AA
-8DEC	E704
-8DEE	9790
-8DF0	FFFB
-8DF2	E780
-8DF4	6036
-8DF6	01ED
-8DF8	B7A7
-8DFA	0224
-8DFC	83A7
-8DFE	4754
-8E00	3707
-8E02	0040
-8E04	7907
-8E06	BA97
-8E08	0547
-8E0A	2390
-8E0C	E700
-8E0E	B7A7
-8E10	0224
-8E12	83A7
-8E14	0754
-8E16	0945
-8E18	8297
-8E1A	9740
-8E1C	01FC
-8E1E	E780
-8E20	200A
-8E22	0545
-8E24	9790
-8E26	01FC
-8E28	E780
-8E2A	40FA
-8E2C	1763
-8E2E	02FC
-8E30	6700
-8E32	836B
-8E34	1763
-8E36	02FC
-8E38	E702
-8E3A	C368
-8E3C	3734
-8E3E	0124
-8E40	9790
-8E42	FFFB
-8E44	E780
-8E46	00A5
-8E48	1304
-8E4A	0495
-8E4C	2302
-8E4E	A4BE
-8E50	9790
-8E52	FFFB
-8E54	E780
-8E56	C0A4
-8E58	A302
-8E5A	A4BE
-8E5C	97C0
-8E5E	FEFB
-8E60	E780
-8E62	80BC
-8E64	B7F7
-8E66	0024
-8E68	9387
-8E6A	0737
-8E6C	B776
-8E6E	0224
-8E70	83D8
-8E72	0709
-8E74	37E7
-8E76	0124
-8E78	238C
-8E7A	0690
-8E7C	C166
-8E7E	1307
-8E80	074C
-8E82	FD16
-8E84	0358
-8E86	670E
-8E88	0355
-8E8A	A70E
-8E8C	8355
-8E8E	870E
-8E90	0356
-8E92	C70E
-8E94	6383
-8E96	D800
-8E98	4688
-8E9A	83D6
-8E9C	2709
-8E9E	4167
-8EA0	7D17
-8EA2	6383
-8EA4	E600
-8EA6	3685
-8EA8	83D6
-8EAA	4709
-8EAC	4167
-8EAE	7D17
-8EB0	6383
-8EB2	E600
-8EB4	B685
-8EB6	03D7
-8EB8	6709
-8EBA	C167
-8EBC	FD17
-8EBE	6303
-8EC0	F700
-8EC2	3A86
-8EC4	B7C7
-8EC6	0040
-8EC8	2398
-8ECA	07C1
-8ECC	2399
-8ECE	A7C0
-8ED0	239A
-8ED2	B7C0
-8ED4	239B
-8ED6	C7C0
-8ED8	1763
-8EDA	02FC
-8EDC	6700
-8EDE	C360
-8EE0	1763
-8EE2	02FC
-8EE4	E702
-8EE6	835B
-8EE8	B797
-8EEA	0124
-8EEC	9387
-8EEE	0753
-8EF0	03C7
-8EF2	D71B
-8EF4	835A
-8EF6	E60C
-8EF8	035A
-8EFA	060D
-8EFC	8359
-8EFE	260D
-8F00	0359
-8F02	460D
-8F04	3284
-8F06	AA84
-8F08	2E8B
-8F0A	B68B
-8F0C	11C7
-8F0E	0567
-8F10	BA97
-8F12	83C7
-8F14	F78E
-8F16	D9EB
-8F18	1387
-8F1A	8402
-8F1C	9386
-8F1E	8400
-8F20	D687
-8F22	6394
-8F24	0A00
-8F26	8347
-8F28	2700
-8F2A	2317
-8F2C	F40C
-8F2E	D287
-8F30	6314
-8F32	0A00
-8F34	8347
-8F36	0700
-8F38	2318
-8F3A	F40C
-8F3C	CE87
-8F3E	6394
-8F40	0900
-8F42	83C7
-8F44	0600
-8F46	2319
-8F48	F40C
-8F4A	4A87
-8F4C	6314
-8F4E	0900
-8F50	03C7
-8F52	4600
-8F54	B7E7
-8F56	0124
-8F58	9387
-8F5A	0787
-8F5C	83AC
-8F5E	8709
-8F60	03AC
-8F62	C709
-8F64	231A
-8F66	E40C
-8F68	E685
-8F6A	6285
-8F6C	0146
-8F6E	9760
-8F70	01FC
-8F72	E780
-8F74	60AD
-8F76	DE86
-8F78	2286
-8F7A	DA85
-8F7C	2685
-8F7E	9770
-8F80	00FC
-8F82	E780
-8F84	2079
-8F86	0546
-8F88	E685
-8F8A	6285
-8F8C	9760
-8F8E	01FC
-8F90	E780
-8F92	80AB
-8F94	2317
-8F96	540D
-8F98	2318
-8F9A	440D
-8F9C	2319
-8F9E	340D
-8FA0	231A
-8FA2	240D
-8FA4	1763
-8FA6	02FC
-8FA8	6700
-8FAA	C352
-8FAC	1307
-8FAE	5503
-8FB0	9306
-8FB2	8501
-8FB4	B5B7
-8FB6	0100
-8FB8	1763
-8FBA	02FC
-8FBC	E702
-8FBE	8350
-8FC0	9790
-8FC2	FFFB
-8FC4	E780
-8FC6	8092
-8FC8	11C5
-8FCA	9790
-8FCC	FFFB
-8FCE	E780
-8FD0	E094
-8FD2	0DCD
-8FD4	B7E7
-8FD6	0124
-8FD8	9387
-8FDA	0787
-8FDC	8457
-8FDE	C057
-8FE0	0146
-8FE2	A685
-8FE4	2285
-8FE6	9760
-8FE8	01FC
-8FEA	E780
-8FEC	E0A5
-8FEE	9780
-8FF0	00FC
-8FF2	E780
-8FF4	A027
-8FF6	0546
-8FF8	A685
-8FFA	2285
-8FFC	9760
-8FFE	01FC
-9000	E780
-9002	80A4
-9004	1763
-9006	02FC
-9008	6700
-900A	034E
-900C	B7A7
-900E	0124
-9010	9387
-9012	0753
-9014	83A7
-9016	47B2
-9018	D5DF
-901A	EDB7
-901C	8547
-901E	6303
-9020	F500
-9022	8280
-9024	1763
-9026	02FC
-9028	E702
-902A	C349
-902C	9790
-902E	FFFB
-9030	E780
-9032	C08A
-9034	0DC9
-9036	B787
-9038	0224
-903A	9387
-903C	C749
-903E	83C5
-9040	A700
-9042	03C6
-9044	B700
-9046	83C6
-9048	C700
-904A	03C7
-904C	D700
-904E	B7F7
-9050	0124
-9052	9387
-9054	074C
-9056	238C
-9058	B7E8
-905A	A38C
-905C	C7E8
-905E	A38D
-9060	D7E8
-9062	238E
-9064	E7E8
-9066	1763
-9068	02FC
-906A	6700
-906C	E347
-906E	0100
-9070	B787
-9072	0224
-9074	9387
-9076	C749
-9078	03DE
-907A	2700
-907C	03D3
-907E	4700
-9080	83C8
-9082	6700
-9084	03C8
-9086	7700
-9088	03C5
-908A	8700
-908C	83C5
-908E	9700
-9090	37A7
-9092	0224
-9094	B787
-9096	0024
-9098	9387
-909A	0793
-909C	0326
-909E	0754
-90A0	9966
-90A2	37E7
-90A4	0024
-90A6	1307
-90A8	0782
-90AA	BE96
-90AC	2398
-90AE	C709
-90B0	2399
-90B2	6708
-90B4	B7F7
-90B6	0024
-90B8	230D
-90BA	A706
-90BC	2389
-90BE	1737
-90C0	2306
-90C2	0703
-90C4	2382
-90C6	B6DA
-90C8	0145
-90CA	0286
-90CC	1763
-90CE	02FC
-90D0	E702
-90D2	A33D
-90D4	B787
-90D6	0224
-90D8	83D7
-90DA	C749
-90DC	2A84
-90DE	AE84
-90E0	8DC3
-90E2	19E9
-90E4	B7A7
-90E6	0124
-90E8	9387
-90EA	0753
-90EC	03C7
-90EE	07D0
-90F0	83C7
-90F2	17D0
-90F4	6307
-90F6	F700
-90F8	A53F
-90FA	97A0
-90FC	01FC
-90FE	E780
-9100	6028
-9102	B7E7
-9104	0124
-9106	9387
-9108	0787
-910A	83A9
-910C	0702
-910E	03A9
-9110	4702
-9112	0146
-9114	CE85
-9116	4A85
-9118	9760
-911A	01FC
-911C	E780
-911E	C092
-9120	A685
-9122	2285
-9124	97E0
-9126	00FC
-9128	E780
-912A	4062
-912C	2A84
-912E	0546
-9130	CE85
-9132	4A85
-9134	9760
-9136	01FC
-9138	E780
-913A	0091
-913C	B7A7
-913E	0224
-9140	83A7
-9142	0754
-9144	0545
-9146	8297
-9148	2285
-914A	1763
-914C	02FC
-914E	6700
-9150	0339
-9152	0100
-9154	1763
-9156	02FC
-9158	E702
-915A	2335
-915C	B7A7
-915E	0124
-9160	83C7
-9162	2794
-9164	2A84
-9166	AE84
-9168	3289
-916A	B1E3
-916C	B7E7
-916E	0124
-9170	9387
-9172	0787
-9174	03AA
-9176	0703
-9178	83A9
-917A	4703
-917C	0146
-917E	D285
-9180	4E85
-9182	9760
-9184	01FC
-9186	E780
-9188	208C
-918A	4A86
-918C	A685
-918E	2285
-9190	9770
-9192	00FC
-9194	E780
-9196	80D5
-9198	0546
-919A	D285
-919C	4E85
-919E	9760
-91A0	01FC
-91A2	E780
-91A4	608A
-91A6	1763
-91A8	02FC
-91AA	6700
-91AC	4333
-91AE	9780
-91B0	00FC
-91B2	E780
-91B4	A03F
-91B6	5DBF
-91B8	1763
-91BA	02FC
-91BC	E702
-91BE	8330
-91C0	9D47
-91C2	2A84
-91C4	6306
-91C6	F508
-91C8	8544
-91CA	6304
-91CC	9504
-91CE	9147
-91D0	6308
-91D2	F512
-91D4	31ED
-91D6	9790
-91D8	FFFB
-91DA	E780
-91DC	E0FA
-91DE	55C1
-91E0	9790
-91E2	FFFB
-91E4	E780
-91E6	00F6
-91E8	630F
-91EA	0514
-91EC	B797
-91EE	0124
-91F0	9387
-91F2	0753
-91F4	0567
-91F6	3E97
-91F8	8346
-91FA	5794
-91FC	0547
-91FE	6395
-9200	E602
-9202	03C5
-9204	5719
-9206	0DC1
-9208	97E0
-920A	FFFB
-920C	E780
-920E	80BD
-9210	21A8
-9212	B787
-9214	0224
-9216	83D7
-9218	C749
-921A	EDEF
-921C	B7D7
-921E	0124
-9220	83C7
-9222	07FA
-9224	639E
-9226	070E
-9228	1763
-922A	02FC
-922C	6700
-922E	C32B
-9230	B547
-9232	6314
-9234	F402
-9236	B7D7
-9238	0124
-923A	83C7
-923C	07FA
-923E	EDD7
-9240	B767
-9242	0124
-9244	2380
-9246	9788
-9248	1763
-924A	02FC
-924C	6700
-924E	C329
-9250	9790
-9252	FFFB
-9254	E780
-9256	00EF
-9258	25C5
-925A	8D47
-925C	631F
-925E	F408
-9260	B787
-9262	0224
-9264	9387
-9266	C749
-9268	03C5
-926A	E700
-926C	9D45
-926E	2382
-9270	A704
-9272	97E0
-9274	FFFB
-9276	E780
-9278	E09D
-927A	1763
-927C	02FC
-927E	6700
-9280	A326
-9282	B747
-9284	0124
-9286	83C7
-9288	07C6
-928A	E39B
-928C	97F4
-928E	9790
-9290	00FC
-9292	E780
-9294	6047
-9296	29D5
-9298	B767
-929A	0124
-929C	83A7
-929E	074B
-92A0	83C7
-92A2	E710
-92A4	95FF
-92A6	B767
-92A8	0124
-92AA	83A7
-92AC	474B
-92AE	0567
-92B0	BA97
-92B2	2382
-92B4	079C
-92B6	97A0
-92B8	FFFB
-92BA	E780
-92BC	20A1
-92BE	0DB7
-92C0	9790
-92C2	FFFB
-92C4	E780
-92C6	40E9
-92C8	49F9
-92CA	B7C4
-92CC	0124
-92CE	9384
-92D0	0453
-92D2	83A7
-92D4	846D
-92D6	3729
-92D8	0124
-92DA	1309
-92DC	095F
-92DE	CDE3
-92E0	8327
-92E2	490E
-92E4	D1CF
-92E6	B7D7
-92E8	0124
-92EA	83C7
-92EC	07FA
-92EE	B5D7
-92F0	9720
-92F2	FFFB
-92F4	E780
-92F6	C0F7
-92F8	8DB7
-92FA	E309
-92FC	04EE
-92FE	2DB7
-9300	4165
-9302	1166
-9304	9165
-9306	1305
-9308	25F5
-930A	9790
-930C	00FC
-930E	E780
-9310	2096
-9312	A1B7
-9314	B13B
-9316	B7D7
-9318	0124
-931A	83C7
-931C	07FA
-931E	89D7
-9320	3707
-9322	0140
-9324	9307
-9326	A020
-9328	2313
-932A	F7D6
-932C	9167
-932E	9387
-9330	0721
-9332	2315
-9334	F7D6
-9336	9780
-9338	01FC
-933A	E780
-933C	A06C
-933E	1763
-9340	02FC
-9342	6700
-9344	631A
-9346	9790
-9348	FFFB
-934A	E780
-934C	E0E0
-934E	E31F
-9350	05E8
-9352	9790
-9354	FFFB
-9356	E780
-9358	20E3
-935A	E319
-935C	05E8
-935E	B7E7
-9360	0024
-9362	83C7
-9364	17CF
-9366	E383
-9368	07E8
-936A	B727
-936C	0124
-936E	83A7
-9370	476D
-9372	E38D
-9374	07E6
-9376	9720
-9378	FFFB
-937A	E780
-937C	E0E8
-937E	BDB5
-9380	8327
-9382	C90A
-9384	E382
-9386	07EA
-9388	0545
-938A	9750
-938C	FEFB
-938E	E780
-9390	A05D
-9392	B735
-9394	202D
-9396	7578
-9398	37F5
-939A	202D
-939C	9385
-939E	0560
-93A0	1308
-93A2	08A0
-93A4	9168
-93A6	1305
-93A8	0560
-93AA	B387
-93AC	0501
-93AE	03C7
-93B0	0700
-93B2	9306
-93B4	F00F
-93B6	1316
-93B8	8701
-93BA	6186
-93BC	0607
-93BE	6344
-93C0	0600
-93C2	9376
-93C4	F70F
-93C6	2380
-93C8	D700
-93CA	8507
-93CC	E391
-93CE	B7FE
-93D0	B385
-93D2	1701
-93D4	E39B
-93D6	A5FC
-93D8	0145
-93DA	9750
-93DC	FEFB
-93DE	E780
-93E0	A058
-93E2	B7D7
-93E4	0124
-93E6	83C7
-93E8	07FA
-93EA	E388
-93EC	07E6
-93EE	83A7
-93F0	846D
-93F2	E394
-93F4	07E6
-93F6	8327
-93F8	490E
-93FA	E380
-93FC	07E6
-93FE	CDBD
-9400	1763
-9402	02FC
-9404	E702
-9406	030C
-9408	B744
-940A	0124
-940C	9384
-940E	04C6
-9410	83C7
-9412	0400
-9414	3784
-9416	0224
-9418	1304
-941A	C449
-941C	2303
-941E	F404
-9420	01ED
-9422	B7D7
-9424	0124
-9426	03A7
-9428	87C1
-942A	9147
-942C	630E
-942E	F702
-9430	1763
-9432	02FC
-9434	6700
-9436	430B
-9438	8547
-943A	E31B
-943C	F5FE
-943E	37C9
-9440	0124
-9442	1309
-9444	0953
-9446	8327
-9448	896E
-944A	1147
-944C	638B
-944E	E702
-9450	0547
-9452	E39F
-9454	E7FC
-9456	3747
-9458	0124
-945A	0347
-945C	27C4
-945E	E319
-9460	F7FC
-9462	2380
-9464	0400
-9466	E9B7
-9468	B747
-946A	0124
-946C	83C7
-946E	27C4
-9470	E1D3
-9472	97F0
-9474	00FC
-9476	E780
-9478	E016
-947A	8547
-947C	A302
-947E	F404
-9480	45BF
-9482	B747
-9484	0124
-9486	83C7
-9488	27C4
-948A	E393
-948C	A7FA
-948E	0145
-9490	9780
-9492	FFFB
-9494	E780
-9496	805C
-9498	0145
-949A	9790
-949C	FFFB
-949E	E780
-94A0	A0CF
-94A2	97A0
-94A4	FFFB
-94A6	E780
-94A8	6082
-94AA	0347
-94AC	6404
-94AE	8327
-94B0	896E
-94B2	2380
-94B4	E400
-94B6	69BF
-94B8	1763
-94BA	02FC
-94BC	E702
-94BE	8300
-94C0	3784
-94C2	0224
-94C4	1304
-94C6	C449
-94C8	8347
-94CA	5404
-94CC	91C7
-94CE	B747
-94D0	0124
-94D2	83C7
-94D4	27C4
-94D6	9DEF
-94D8	B7E7
-94DA	0124
-94DC	9387
-94DE	0787
-94E0	03A4
-94E2	4709
-94E4	83A4
-94E6	0709
-94E8	0146
-94EA	2285
-94EC	A685
-94EE	9750
-94F0	01FC
-94F2	E780
-94F4	6055
-94F6	97F0
-94F8	00FC
-94FA	E780
-94FC	2030
-94FE	0546
-9500	A685
-9502	2285
-9504	9750
-9506	01FC
-9508	E780
-950A	0054
-950C	1763
-950E	02FC
-9510	6700
-9512	83FD
-9514	97F0
-9516	00FC
-9518	E780
-951A	C027
-951C	A302
-951E	0404
-9520	65BF
-9522	0100
-9524	1763
-9526	02FC
-9528	E702
-952A	C3F9
-952C	B7E7
-952E	0124
-9530	9387
-9532	0787
-9534	83A4
-9536	070A
-9538	03A4
-953A	470A
-953C	0146
-953E	A685
-9540	2285
-9542	9750
-9544	01FC
-9546	E780
-9548	2050
-954A	9770
-954C	FDFB
-954E	E780
-9550	A03C
-9552	0546
-9554	A685
-9556	2285
-9558	9750
-955A	01FC
-955C	E780
-955E	C04E
-9560	9780
-9562	FFFB
-9564	E780
-9566	803B
-9568	11E9
-956A	B737
-956C	0224
-956E	9387
-9570	076B
-9572	03C7
-9574	F780
-9576	8546
-9578	6306
-957A	D700
-957C	1763
-957E	02FC
-9580	6700
-9582	83F6
-9584	83C6
-9586	879E
-9588	9147
-958A	E399
-958C	F6FE
-958E	B767
-9590	0124
-9592	83A7
-9594	074B
-9596	A38E
-9598	E724
-959A	CDB7
-959C	1763
-959E	02FC
-95A0	E702
-95A2	A3F0
-95A4	B7E7
-95A6	0124
-95A8	9387
-95AA	0787
-95AC	03AA
-95AE	8703
-95B0	83A9
-95B2	C703
-95B4	AA84
-95B6	2E84
-95B8	3289
-95BA	D285
-95BC	0146
-95BE	4E85
-95C0	9750
-95C2	01FC
-95C4	E780
-95C6	4048
-95C8	4A86
-95CA	A285
-95CC	2685
-95CE	97D0
-95D0	00FC
-95D2	E780
-95D4	60CD
-95D6	AA84
-95D8	0546
-95DA	D285
-95DC	4E85
-95DE	9750
-95E0	01FC
-95E2	E780
-95E4	6046
-95E6	9790
-95E8	FFFB
-95EA	E780
-95EC	6087
-95EE	11C5
-95F0	2685
-95F2	1763
-95F4	02FC
-95F6	6700
-95F8	83EE
-95FA	9790
-95FC	FFFB
-95FE	E780
-9600	A084
-9602	8357
-9604	E400
-9606	AA97
-9608	2317
-960A	F400
-960C	9790
-960E	FFFB
-9610	E780
-9612	8083
-9614	8357
-9616	C400
-9618	AA97
-961A	2316
-961C	F400
-961E	2685
-9620	1763
-9622	02FC
-9624	6700
-9626	A3EB
-9628	1763
-962A	02FC
-962C	E702
-962E	E3E7
-9630	B7E7
-9632	0124
-9634	9387
-9636	0787
-9638	03AA
-963A	0704
-963C	83A9
-963E	4704
-9640	AA8A
-9642	2E89
-9644	3284
-9646	D285
-9648	0146
-964A	4E85
-964C	B684
-964E	9750
-9650	01FC
-9652	E780
-9654	603F
-9656	A686
-9658	2286
-965A	CA85
-965C	5685
-965E	9780
-9660	FDFB
-9662	E780
-9664	2053
-9666	0546
-9668	D285
-966A	4E85
-966C	9750
-966E	01FC
-9670	E780
-9672	803D
-9674	9780
-9676	FDFB
-9678	E780
-967A	0047
-967C	9780
-967E	FFFB
-9680	E780
-9682	007E
-9684	01E5
-9686	8547
-9688	6386
-968A	F400
-968C	1763
-968E	02FC
-9690	6700
-9692	E3E4
-9694	9780
-9696	FFFB
-9698	E780
-969A	007B
-969C	8357
-969E	0400
-96A0	898F
-96A2	2310
-96A4	F400
-96A6	9780
-96A8	FFFB
-96AA	E780
-96AC	E079
-96AE	8357
-96B0	4400
-96B2	8356
-96B4	0400
-96B6	3777
-96B8	0224
-96BA	AA97
-96BC	2312
-96BE	F400
-96C0	1307
-96C2	076B
-96C4	2317
-96C6	D760
-96C8	B7E6
-96CA	0024
-96CC	8357
-96CE	4400
-96D0	03D6
-96D2	06A4
-96D4	83D6
-96D6	6A01
-96D8	918F
-96DA	B697
-96DC	2319
-96DE	F760
-96E0	1763
-96E2	02FC
-96E4	6700
-96E6	A3DF
-96E8	1763
-96EA	02FC
-96EC	E702
-96EE	E3DB
-96F0	AA84
-96F2	2E84
-96F4	9780
-96F6	FFFB
-96F8	E780
-96FA	4022
-96FC	09C5
-96FE	1763
-9700	02FC
-9702	6700
-9704	C3DD
-9706	9780
-9708	FFFB
-970A	E780
-970C	201E
-970E	65D9
-9710	9780
-9712	FFFB
-9714	E780
-9716	C024
-9718	1307
-971A	F5FF
-971C	3307
-971E	E402
-9720	B7A7
-9722	0124
-9724	83C7
-9726	9794
-9728	83D6
-972A	4400
-972C	AA89
-972E	1D8C
-9730	3389
-9732	D700
-9734	4204
-9736	4180
-9738	3309
-973A	E940
-973C	4209
-973E	1359
-9740	0901
-9742	9780
-9744	FFFB
-9746	E780
-9748	A071
-974A	29C9
-974C	8947
-974E	638B
-9750	F902
-9752	8D47
-9754	6386
-9756	F902
-9758	8547
-975A	6387
-975C	F902
-975E	9790
-9760	FFFB
-9762	E780
-9764	2093
-9766	05E5
-9768	9790
-976A	FFFB
-976C	E780
-976E	C092
-9770	59D5
-9772	9780
-9774	FEFB
-9776	E780
-9778	60E7
-977A	2395
-977C	A406
-977E	41B7
-9780	239F
-9782	8404
-9784	239E
-9786	8404
-9788	2390
-978A	2407
-978C	C9BF
-978E	9780
-9790	FEFB
-9792	E780
-9794	A0E2
-9796	2393
-9798	A406
-979A	F9B7
-979C	9780
-979E	FFFB
-97A0	E780
-97A2	806A
-97A4	3305
-97A6	A440
-97A8	1314
-97AA	0501
-97AC	9780
-97AE	FFFB
-97B0	E780
-97B2	8069
-97B4	2A99
-97B6	4209
-97B8	4180
-97BA	1359
-97BC	0901
-97BE	79B7
-97C0	1763
-97C2	02FC
-97C4	E702
-97C6	03D0
-97C8	3794
-97CA	0124
-97CC	1304
-97CE	0453
-97D0	8567
-97D2	A297
-97D4	03C7
-97D6	5794
-97D8	8547
-97DA	630D
-97DC	F702
-97DE	37C4
-97E0	0124
-97E2	1304
-97E4	0453
-97E6	9740
-97E8	01FC
-97EA	E780
-97EC	2060
-97EE	8347
-97F0	048B
-97F2	89EF
-97F4	B787
-97F6	0224
-97F8	03C5
-97FA	074E
-97FC	01C9
-97FE	8347
-9800	D46C
-9802	91CF
-9804	97D0
-9806	FFFB
-9808	E780
-980A	C05A
-980C	1763
-980E	02FC
-9810	6700
-9812	83CD
-9814	8D67
-9816	3E94
-9818	2307
-981A	046C
-981C	E9B7
-981E	97D0
-9820	FFFB
-9822	E780
-9824	205C
-9826	1763
-9828	02FC
-982A	6700
-982C	E3CB
-982E	0100
-9830	1763
-9832	02FC
-9834	E702
-9836	03C9
-9838	3724
-983A	0124
-983C	1304
-983E	0495
-9840	8344
-9842	0401
-9844	9780
-9846	FFFB
-9848	E780
-984A	000F
-984C	09C5
-984E	93B7
-9850	1400
-9852	2308
-9854	F400
-9856	B787
-9858	0224
-985A	83C7
-985C	D74A
-985E	1307
-9860	F00F
-9862	6384
-9864	E700
-9866	2308
-9868	F400
-986A	9790
-986C	FEFB
-986E	E780
-9870	E062
-9872	2308
-9874	9400
-9876	1763
-9878	02FC
-987A	6700
-987C	E3C6
-987E	0100
-9880	1763
-9882	02FC
-9884	E702
-9886	03C4
-9888	0545
-988A	9780
-988C	FFFB
-988E	E780
-9890	E01C
-9892	0545
-9894	9790
-9896	FFFB
-9898	E780
-989A	0090
-989C	B7A7
-989E	0124
-98A0	9387
-98A2	0753
-98A4	1147
-98A6	23AE
-98A8	E792
-98AA	2382
-98AC	0794
-98AE	A382
-98B0	0794
-98B2	23A0
-98B4	0796
-98B6	23A2
-98B8	0796
-98BA	1763
-98BC	02FC
-98BE	6700
-98C0	A3C2
-98C2	0100
-98C4	1763
-98C6	02FC
-98C8	E702
-98CA	23BE
-98CC	B744
-98CE	0124
-98D0	9384
-98D2	04C4
-98D4	03C7
-98D6	2400
-98D8	8547
-98DA	6301
-98DC	F702
-98DE	37A4
-98E0	0124
-98E2	1304
-98E4	0453
-98E6	9147
-98E8	2302
-98EA	0494
-98EC	A302
-98EE	0494
-98F0	232E
-98F2	F492
-98F4	1763
-98F6	02FC
-98F8	6700
-98FA	63BE
-98FC	8947
-98FE	630D
-9900	F504
-9902	71FD
-9904	3799
-9906	0124
-9908	B787
-990A	0224
-990C	9387
-990E	C749
-9910	1309
-9912	0953
-9914	0564
-9916	B44F
-9918	9853
-991A	4A94
-991C	0326
-991E	8498
-9920	3697
-9922	8546
-9924	6374
-9926	C700
-9928	B306
-992A	E640
-992C	DC53
-992E	63F7
-9930	D70C
-9932	8347
-9934	E4B6
-9936	DDDF
-9938	9147
-993A	0145
-993C	232E
-993E	0492
-9940	A303
-9942	F93E
-9944	9780
-9946	FFFB
-9948	E780
-994A	4011
-994C	0145
-994E	9790
-9950	FFFB
-9952	E780
-9954	6084
-9956	79BF
-9958	3799
-995A	0124
-995C	1309
-995E	0953
-9960	056A
-9962	3304
-9964	4901
-9966	0327
-9968	C493
-996A	9147
-996C	E30D
-996E	F7F6
-9970	B787
-9972	0224
-9974	83A9
-9976	874F
-9978	9790
-997A	01FC
-997C	E780
-997E	4091
-9980	0326
-9982	4907
-9984	8355
-9986	A950
-9988	4E95
-998A	9780
-998C	00FC
-998E	E780
-9990	2026
-9992	AA87
-9994	8399
-9996	2401
-9998	0326
-999A	4907
-999C	8355
-999E	A950
-99A0	0325
-99A2	8498
-99A4	BE99
-99A6	9780
-99A8	00FC
-99AA	E780
-99AC	6024
-99AE	63F9
-99B0	A904
-99B2	0327
-99B4	8916
-99B6	B307
-99B8	3541
-99BA	2328
-99BC	F496
-99BE	19E7
-99C0	03D9
-99C2	6400
-99C4	636A
-99C6	F904
-99C8	232A
-99CA	0496
-99CC	83D4
-99CE	C400
-99D0	BE94
-99D2	2322
-99D4	9496
-99D6	9790
-99D8	FFFB
-99DA	E780
-99DC	E052
-99DE	AA85
-99E0	1305
-99E2	803E
-99E4	3385
-99E6	A402
-99E8	9780
-99EA	00FC
-99EC	E780
-99EE	8019
-99F0	8547
-99F2	2320
-99F4	A496
-99F6	2302
-99F8	F494
-99FA	EDBD
-99FC	5135
-99FE	DDBD
-9A00	8145
-9A02	1305
-9A04	1AAF
-9A06	97C0
-9A08	FFFB
-9A0A	E780
-9A0C	A08C
-9A0E	2320
-9A10	0496
-9A12	232A
-9A14	0496
-9A16	F9BD
-9A18	9790
-9A1A	FFFB
-9A1C	E780
-9A1E	C04E
-9A20	AA85
-9A22	1305
-9A24	803E
-9A26	3305
-9A28	A902
-9A2A	9780
-9A2C	00FC
-9A2E	E780
-9A30	6015
-9A32	8327
-9A34	0497
-9A36	232A
-9A38	A496
-9A3A	49BF
-9A3C	1763
-9A3E	02FC
-9A40	E702
-9A42	43A8
-9A44	B7E7
-9A46	0124
-9A48	9387
-9A4A	0787
-9A4C	03A9
-9A4E	0707
-9A50	E45B
-9A52	0146
-9A54	CA85
-9A56	2A84
-9A58	2685
-9A5A	9750
-9A5C	01FC
-9A5E	E780
-9A60	A0FE
-9A62	2285
-9A64	97A0
-9A66	FFFB
-9A68	E780
-9A6A	C074
-9A6C	0546
-9A6E	CA85
-9A70	2685
-9A72	9750
-9A74	01FC
-9A76	E780
-9A78	20FD
-9A7A	B747
-9A7C	0124
-9A7E	03C7
-9A80	27C4
-9A82	8547
-9A84	6306
-9A86	F700
-9A88	1763
-9A8A	02FC
-9A8C	6700
-9A8E	C3A5
-9A90	B797
-9A92	0124
-9A94	9387
-9A96	0753
-9A98	8566
-9A9A	BE96
-9A9C	03C5
-9A9E	5694
-9AA0	8D66
-9AA2	B697
-9AA4	0C40
-9AA6	0356
-9AA8	C400
-9AAA	83D6
-9AAC	E76F
-9AAE	6300
-9AB0	E502
-9AB2	B787
-9AB4	0224
-9AB6	9387
-9AB8	C749
-9ABA	ECCF
-9ABC	ACCF
-9ABE	F0D3
-9AC0	B0D3
-9AC2	F4D7
-9AC4	B4D7
-9AC6	1763
-9AC8	02FC
-9ACA	6700
-9ACC	E3A1
-9ACE	3787
-9AD0	0224
-9AD2	1307
-9AD4	C749
-9AD6	8328
-9AD8	C705
-9ADA	0328
-9ADC	4706
-9ADE	6857
-9AE0	2CCF
-9AE2	30D3
-9AE4	34D7
-9AE6	2320
-9AE8	1401
-9AEA	2316
-9AEC	0401
-9AEE	239F
-9AF0	A76E
-9AF2	1763
-9AF4	02FC
-9AF6	6700
-9AF8	239F
-9AFA	0100
-9AFC	1763
-9AFE	02FC
-9B00	E702
-9B02	439C
-9B04	B747
-9B06	0124
-9B08	83C7
-9B0A	27C4
-9B0C	0547
-9B0E	2A84
-9B10	6380
-9B12	E704
-9B14	B7E7
-9B16	0124
-9B18	9387
-9B1A	0787
-9B1C	03A9
-9B1E	8707
-9B20	E45F
-9B22	0146
-9B24	CA85
-9B26	2685
-9B28	9750
-9B2A	01FC
-9B2C	E780
-9B2E	C0F1
-9B30	2285
-9B32	9780
-9B34	01FC
-9B36	E780
-9B38	6029
-9B3A	0546
-9B3C	CA85
-9B3E	2685
-9B40	9750
-9B42	01FC
-9B44	E780
-9B46	40F0
-9B48	1763
-9B4A	02FC
-9B4C	6700
-9B4E	C399
-9B50	37A7
-9B52	0124
-9B54	0347
-9B56	57E7
-9B58	E31E
-9B5A	F7FA
-9B5C	B787
-9B5E	0224
-9B60	9387
-9B62	C749
-9B64	B04F
-9B66	B453
-9B68	B857
-9B6A	F0CF
-9B6C	F4D3
-9B6E	F8D7
-9B70	55B7
-9B72	0100
-9B74	1763
-9B76	02FC
-9B78	E702
-9B7A	C394
-9B7C	0545
-9B7E	97E0
-9B80	FFFB
-9B82	E780
-9B84	E05B
-9B86	9357
-9B88	1500
-9B8A	9375
-9B8C	1500
-9B8E	13F5
-9B90	1700
-9B92	97A0
-9B94	00FC
-9B96	E780
-9B98	E019
-9B9A	B7A7
-9B9C	0124
-9B9E	83C7
-9BA0	270A
-9BA2	91C7
-9BA4	B747
-9BA6	0124
-9BA8	83C7
-9BAA	27C4
-9BAC	91EF
-9BAE	9790
-9BB0	FFFB
-9BB2	E780
-9BB4	20E9
-9BB6	9780
-9BB8	01FC
-9BBA	E780
-9BBC	E094
-9BBE	B727
-9BC0	0024
-9BC2	83A7
-9BC4	C7CE
-9BC6	8297
-9BC8	1763
-9BCA	02FC
-9BCC	6700
-9BCE	C391
-9BD0	B747
-9BD2	0124
-9BD4	83C7
-9BD6	27C4
-9BD8	91C7
-9BDA	B7A7
-9BDC	0124
-9BDE	83C7
-9BE0	57E7
-9BE2	A9E3
-9BE4	1763
-9BE6	02FC
-9BE8	E702
-9BEA	C38D
-9BEC	B7E7
-9BEE	0124
-9BF0	9387
-9BF2	0787
-9BF4	E053
-9BF6	A453
-9BF8	0146
-9BFA	2285
-9BFC	A685
-9BFE	9750
-9C00	01FC
-9C02	E780
-9C04	60E4
-9C06	9790
-9C08	FFFB
-9C0A	E780
-9C0C	200C
-9C0E	0546
-9C10	A685
-9C12	2285
-9C14	9750
-9C16	01FC
-9C18	E780
-9C1A	00E3
-9C1C	1763
-9C1E	02FC
-9C20	6700
-9C22	838C
-9C24	8280
-9C26	0100
-9C28	1763
-9C2A	02FC
-9C2C	E702
-9C2E	8389
-9C30	2A84
-9C32	01ED
-9C34	B797
-9C36	0124
-9C38	9387
-9C3A	0753
-9C3C	0567
-9C3E	3E97
-9C40	0326
-9C42	C7B3
-9C44	FD56
-9C46	6300
-9C48	D604
-9C4A	B7E7
-9C4C	0124
-9C4E	9387
-9C50	0787
-9C52	03A9
-9C54	8706
-9C56	E457
-9C58	0146
-9C5A	CA85
-9C5C	2685
-9C5E	9750
-9C60	01FC
-9C62	E780
-9C64	60DE
-9C66	2285
-9C68	97B0
-9C6A	FFFB
-9C6C	E780
-9C6E	002E
-9C70	0546
-9C72	CA85
-9C74	2685
-9C76	9750
-9C78	01FC
-9C7A	E780
-9C7C	E0DC
-9C7E	1763
-9C80	02FC
-9C82	6700
-9C84	6386
-9C86	8D66
-9C88	B697
-9C8A	83A6
-9C8C	876D
-9C8E	8547
-9C90	99EA
-9C92	B747
-9C94	0124
-9C96	83C6
-9C98	27C4
-9C9A	8147
-9C9C	89E6
-9C9E	8347
-9CA0	27B7
-9CA2	B337
-9CA4	F000
-9CA6	A308
-9CA8	F7B6
-9CAA	45B7
-9CAC	7171
-9CAE	22D7
-9CB0	26D5
-9CB2	7324
-9CB4	2034
-9CB6	F324
-9CB8	1034
-9CBA	7360
-9CBC	0430
-9CBE	2EC5
-9CC0	A565
-9CC2	BEDC
-9CC4	06D3
-9CC6	16D1
-9CC8	1ACF
-9CCA	1ECD
-9CCC	22CB
-9CCE	2AC7
-9CD0	32C3
-9CD2	36C1
-9CD4	BADE
-9CD6	C2DA
-9CD8	C6D8
-9CDA	F2D0
-9CDC	F6CE
-9CDE	FACC
-9CE0	FECA
-9CE2	82E2
-9CE4	86E0
-9CE6	0AFE
-9CE8	0EFC
-9CEA	12FA
-9CEC	16F8
-9CEE	1AF6
-9CF0	1EF4
-9CF2	2AF2
-9CF4	2EF0
-9CF6	32EE
-9CF8	26C9
-9CFA	CAD6
-9CFC	CED4
-9CFE	D2D2
-9D00	9385
-9D02	0540
-9D04	0545
-9D06	36EC
-9D08	3AEA
-9D0A	3EE8
-9D0C	42E6
-9D0E	46E4
-9D10	72E2
-9D12	76E0
-9D14	272E
-9D16	E1FF
-9D18	272C
-9D1A	F1FF
-9D1C	97E0
-9D1E	FFFB
-9D20	E780
-9D22	80C7
-9D24	A167
-9D26	E98F
-9D28	2A84
-9D2A	6394
-9D2C	0718
-9D2E	B764
-9D30	0124
-9D32	9384
-9D34	0440
-9D36	8567
-9D38	E18F
-9D3A	CDCF
-9D3C	37D7
-9D3E	0124
-9D40	3789
-9D42	0224
-9D44	1307
-9D46	07C4
-9D48	1309
-9D4A	C949
-9D4C	8356
-9D4E	670E
-9D50	8327
-9D52	0905
-9D54	8506
-9D56	8507
-9D58	2328
-9D5A	F904
-9D5C	2313
-9D5E	D70E
-9D60	858B
-9D62	6393
-9D64	071C
-9D66	8547
-9D68	A30A
-9D6A	F904
-9D6C	9780
-9D6E	FFFB
-9D70	E780
-9D72	402F
-9D74	19C5
-9D76	0357
-9D78	4905
-9D7A	9307
-9D7C	1010
-9D7E	6309
-9D80	F724
-9D82	DC50
-9D84	0945
-9D86	8297
-9D88	9780
-9D8A	FFFB
-9D8C	E780
-9D8E	00B6
-9D90	11C5
-9D92	9780
-9D94	FFFB
-9D96	E780
-9D98	60B8
-9D9A	55C5
-9D9C	9780
-9D9E	00FC
-9DA0	E780
-9DA2	808A
-9DA4	B787
-9DA6	0024
-9DA8	83C7
-9DAA	078C
-9DAC	AA89
-9DAE	6395
-9DB0	071C
-9DB2	B7D7
-9DB4	0124
-9DB6	9387
-9DB8	07E7
-9DBA	BC5F
-9DBC	639E
-9DBE	0716
-9DC0	3799
-9DC2	0124
-9DC4	1309
-9DC6	0953
-9DC8	B727
-9DCA	0024
-9DCC	83C7
-9DCE	7752
-9DD0	6399
-9DD2	071E
-9DD4	0345
-9DD6	C918
-9DD8	6310
-9DDA	051E
-9DDC	DC50
-9DDE	0D45
-9DE0	8297
-9DE2	4E85
-9DE4	9780
-9DE6	00FC
-9DE8	E780
-9DEA	408A
-9DEC	8567
-9DEE	3E99
-9DF0	2320
-9DF2	A9A2
-9DF4	1374
-9DF6	0440
-9DF8	21C4
-9DFA	B7D7
-9DFC	0124
-9DFE	9387
-9E00	07C4
-9E02	37A7
-9E04	0124
-9E06	83D6
-9E08	670E
-9E0A	1307
-9E0C	0753
-9E0E	0347
-9E10	179B
-9E12	8506
-9E14	3784
-9E16	0224
-9E18	1304
-9E1A	C449
-9E1C	1337
-9E1E	1700
-9E20	2393
-9E22	D70E
-9E24	230A
-9E26	E404
-9E28	9780
-9E2A	FFFB
-9E2C	E780
-9E2E	8023
-9E30	630A
-9E32	0510
-9E34	0357
-9E36	4405
-9E38	9307
-9E3A	1010
-9E3C	6304
-9E3E	F710
-9E40	DC50
-9E42	1D45
-9E44	8297
-9E46	9A50
-9E48	8A52
-9E4A	7A43
-9E4C	EA43
-9E4E	5A44
-9E50	CA44
-9E52	3A45
-9E54	AA45
-9E56	1A46
-9E58	8A46
-9E5A	7657
-9E5C	E657
-9E5E	5658
-9E60	C658
-9E62	3659
-9E64	A659
-9E66	165A
-9E68	065E
-9E6A	F64E
-9E6C	664F
-9E6E	D64F
-9E70	1660
-9E72	8660
-9E74	7271
-9E76	E271
-9E78	5272
-9E7A	C272
-9E7C	3273
-9E7E	A273
-9E80	1275
-9E82	8275
-9E84	7266
-9E86	E266
-9E88	5267
-9E8A	C267
-9E8C	3268
-9E8E	A268
-9E90	126E
-9E92	826E
-9E94	072F
-9E96	C1FF
-9E98	872F
-9E9A	81FF
-9E9C	7370
-9E9E	0430
-9EA0	7390
-9EA2	1434
-9EA4	7310
-9EA6	2434
-9EA8	3A54
-9EAA	AA54
-9EAC	4D61
-9EAE	7300
-9EB0	2030
-9EB2	37D9
-9EB4	0124
-9EB6	1309
-9EB8	09C4
-9EBA	8357
-9EBC	490E
-9EBE	B764
-9EC0	0124
-9EC2	9384
-9EC4	0440
-9EC6	D850
-9EC8	8507
-9ECA	B786
-9ECC	0224
-9ECE	0145
-9ED0	23A6
-9ED2	064E
-9ED4	2312
-9ED6	F90E
-9ED8	0297
-9EDA	9780
-9EDC	FFFB
-9EDE	E780
-9EE0	E0A0
-9EE2	3DE1
-9EE4	B729
-9EE6	0024
-9EE8	3799
-9EEA	0124
-9EEC	9389
-9EEE	0933
-9EF0	1309
-9EF2	0953
-9EF4	056A
-9EF6	83C7
-9EF8	791F
-9EFA	4A9A
-9EFC	2320
-9EFE	0AA2
-9F00	B1EF
-9F02	0345
-9F04	C918
-9F06	25E5
-9F08	83C7
-9F0A	0920
-9F0C	89C7
-9F0E	0327
-9F10	4AB3
-9F12	630A
-9F14	F700
-9F16	97F0
-9F18	00FC
-9F1A	E780
-9F1C	A002
-9F1E	DC50
-9F20	0545
-9F22	8297
-9F24	09BD
-9F26	01A0
-9F28	8547
-9F2A	230A
-9F2C	0904
-9F2E	A30A
-9F30	0904
-9F32	2328
-9F34	F904
-9F36	1DBD
-9F38	7D55
-9F3A	9780
-9F3C	01FC
-9F3E	E780
-9F40	6034
-9F42	BDBD
-9F44	4128
-9F46	EDBD
-9F48	9780
-9F4A	FFFB
-9F4C	E780
-9F4E	009D
-9F50	51F9
-9F52	8357
-9F54	490E
-9F56	858B
-9F58	D1F7
-9F5A	F5B5
-9F5C	9780
-9F5E	01FC
-9F60	E780
-9F62	0033
-9F64	2311
-9F66	A94E
-9F68	0345
-9F6A	C918
-9F6C	51DD
-9F6E	97D0
-9F70	FFFB
-9F72	E780
-9F74	20E4
-9F76	49BF
-9F78	9780
-9F7A	01FC
-9F7C	E780
-9F7E	4031
-9F80	3799
-9F82	0124
-9F84	1309
-9F86	0953
-9F88	8D67
-9F8A	CA97
-9F8C	03C7
-9F8E	D76F
-9F90	232E
-9F92	A94E
-9F94	8547
-9F96	6306
-9F98	F700
-9F9A	8327
-9F9C	094F
-9F9E	E374
-9FA0	F5EA
-9FA2	9770
-9FA4	00FC
-9FA6	E780
-9FA8	602C
-9FAA	9780
-9FAC	01FC
-9FAE	E780
-9FB0	202E
-9FB2	2320
-9FB4	A950
-9FB6	09BD
-9FB8	97D0
-9FBA	FFFB
-9FBC	E780
-9FBE	80E2
-9FC0	31BD
-9FC2	9780
-9FC4	01FC
-9FC6	E780
-9FC8	A02C
-9FCA	2312
-9FCC	A94E
-9FCE	19B5
-9FD0	1120
-9FD2	45BB
-9FD4	1753
-9FD6	02FC
-9FD8	E702
-9FDA	234D
-9FDC	9780
-9FDE	FFFB
-9FE0	E780
-9FE2	C090
-9FE4	15E5
-9FE6	3764
-9FE8	0124
-9FEA	1304
-9FEC	0440
-9FEE	5C50
-9FF0	1945
-9FF2	8297
-9FF4	B787
-9FF6	0224
-9FF8	9387
-9FFA	C749
-9FFC	238A
-9FFE	0704
-A000	A38A
-A002	0704
-A004	23A8
-A006	0704
-A008	1753
-A00A	02FC
-A00C	6700
-A00E	234D
-A010	9780
-A012	FFFB
-A014	E780
-A016	8090
-A018	79F5
-A01A	B794
-A01C	0124
-A01E	9384
-A020	0453
-A022	0569
-A024	3774
-A026	0024
-A028	9770
-A02A	00FC
-A02C	E780
-A02E	C061
-A030	2699
-A032	1304
-A034	047D
-A036	8347
-A038	199B
-A03A	0347
-A03C	5412
-A03E	AA89
-A040	13FA
-A042	F70F
-A044	19C3
-A046	630D
-A048	0A08
-A04A	8347
-A04C	040F
-A04E	81C7
-A050	8347
-A052	140F
-A054	9DEB
-A056	B7D7
-A058	0124
-A05A	9387
-A05C	07E7
-A05E	BC5F
-A060	F9EB
-A062	3764
-A064	0124
-A066	1304
-A068	0440
-A06A	B727
-A06C	0024
-A06E	83C7
-A070	7752
-A072	DDEB
-A074	03C5
-A076	C418
-A078	5DE1
-A07A	4E85
-A07C	9770
-A07E	00FC
-A080	E780
-A082	C060
-A084	2320
-A086	A9A2
-A088	9DB7
-A08A	9780
-A08C	01FC
-A08E	E780
-A090	2020
-A092	8D67
-A094	A697
-A096	03C7
-A098	D76F
-A09A	23AE
-A09C	A44E
-A09E	8547
-A0A0	6309
-A0A2	F700
-A0A4	8347
-A0A6	240F
-A0A8	89C7
-A0AA	83A7
-A0AC	044F
-A0AE	E37D
-A0B0	F5F4
-A0B2	3764
-A0B4	0124
-A0B6	1304
-A0B8	0440
-A0BA	631C
-A0BC	0A00
-A0BE	5C50
-A0C0	1145
-A0C2	8297
-A0C4	9770
-A0C6	00FC
-A0C8	E780
-A0CA	401A
-A0CC	5C50
-A0CE	1545
-A0D0	8297
-A0D2	9780
-A0D4	01FC
-A0D6	E780
-A0D8	A01B
-A0DA	23A0
-A0DC	A450
-A0DE	71B7
-A0E0	0355
-A0E2	6412
-A0E4	835A
-A0E6	A412
-A0E8	9770
-A0EA	00FC
-A0EC	E780
-A0EE	005D
-A0F0	0145
-A0F2	9770
-A0F4	00FC
-A0F6	E780
-A0F8	604A
-A0FA	8147
-A0FC	0100
-A0FE	3E87
-A100	8507
-A102	E39D
-A104	EAFE
-A106	0545
-A108	9770
-A10A	00FC
-A10C	E780
-A10E	0049
-A110	0355
-A112	8412
-A114	9770
-A116	00FC
-A118	E780
-A11A	405A
-A11C	3DB7
-A11E	97D0
-A120	FFFB
-A122	E780
-A124	20CC
-A126	91BF
-A128	9780
-A12A	01FC
-A12C	E780
-A12E	4016
-A130	2392
-A132	A44E
-A134	81B7
-A136	7D55
-A138	9780
-A13A	01FC
-A13C	E780
-A13E	8014
-A140	0DB7
-A142	0100
-A144	1753
-A146	02FC
-A148	E702
-A14A	C337
-A14C	B7D7
-A14E	0124
-A150	83C7
-A152	07FA
-A154	2E84
-A156	B284
-A158	A9C3
-A15A	B727
-A15C	0024
-A15E	83C7
-A160	8785
-A162	85EF
-A164	8947
-A166	23A4
-A168	F50A
-A16A	B797
-A16C	0040
-A16E	239F
-A170	07D0
-A172	9770
-A174	00FC
-A176	E780
-A178	6043
-A17A	A685
-A17C	2285
-A17E	9760
-A180	00FC
-A182	E780
-A184	A041
-A186	A685
-A188	0145
-A18A	9740
-A18C	01FC
-A18E	E780
-A190	E04D
-A192	1753
-A194	02FC
-A196	6700
-A198	2335
-A19A	0DE9
-A19C	B797
-A19E	0124
-A1A0	03A5
-A1A2	C769
-A1A4	2324
-A1A6	A40A
-A1A8	8547
-A1AA	630F
-A1AC	F502
-A1AE	8947
-A1B0	E30D
-A1B2	F5FA
-A1B4	79FD
-A1B6	2686
-A1B8	8545
-A1BA	2285
-A1BC	9750
-A1BE	00FC
-A1C0	E780
-A1C2	8037
-A1C4	1753
-A1C6	02FC
-A1C8	6700
-A1CA	0332
-A1CC	8347
-A1CE	D40B
-A1D0	F1D7
-A1D2	9780
-A1D4	FFFB
-A1D6	E780
-A1D8	20FB
-A1DA	69F1
-A1DC	2685
-A1DE	97B0
-A1E0	FFFB
-A1E2	E780
-A1E4	E09D
-A1E6	7DBF
-A1E8	A565
-A1EA	9385
-A1EC	05D0
-A1EE	2285
-A1F0	9710
-A1F2	01FC
-A1F4	E780
-A1F6	4004
-A1F8	1753
-A1FA	02FC
-A1FC	6700
-A1FE	C32E
-A200	1753
-A202	02FC
-A204	E702
-A206	632A
-A208	9780
-A20A	01FC
-A20C	E780
-A20E	0049
-A210	AA89
-A212	9780
-A214	01FC
-A216	E780
-A218	E049
-A21A	2A8A
-A21C	9780
-A21E	01FC
-A220	E780
-A222	8048
-A224	2A89
-A226	3784
-A228	0224
-A22A	9780
-A22C	01FC
-A22E	E780
-A230	2049
-A232	1304
-A234	04CF
-A236	AA84
-A238	9770
-A23A	FFFB
-A23C	E780
-A23E	8065
-A240	2306
-A242	A400
-A244	9770
-A246	FFFB
-A248	E780
-A24A	8065
-A24C	8355
-A24E	0409
-A250	8356
-A252	E408
-A254	0357
-A256	6401
-A258	8357
-A25A	8401
-A25C	1396
-A25E	1500
-A260	2E96
-A262	0E06
-A264	9398
-A266	4600
-A268	0983
-A26A	8983
-A26C	0D8E
-A26E	B698
-A270	198E
-A272	B388
-A274	F840
-A276	0343
-A278	C400
-A27A	1378
-A27C	F50F
-A27E	9357
-A280	F601
-A282	13D7
-A284	F801
-A286	B297
-A288	4697
-A28A	A306
-A28C	0401
-A28E	8587
-A290	0587
-A292	630B
-A294	0306
-A296	0509
-A298	1359
-A29A	2900
-A29C	CA97
-A29E	630A
-A2A0	0806
-A2A2	8504
-A2A4	8980
-A2A6	2697
-A2A8	231A
-A2AA	F408
-A2AC	2319
-A2AE	E408
-A2B0	33C6
-A2B2	B702
-A2B4	630A
-A2B6	0306
-A2B8	B3E8
-A2BA	B702
-A2BC	B338
-A2BE	1001
-A2C0	3345
-A2C2	D702
-A2C4	4696
-A2C6	6306
-A2C8	0800
-A2CA	B368
-A2CC	D702
-A2CE	639F
-A2D0	080A
-A2D2	B385
-A2D4	C502
-A2D6	231B
-A2D8	C408
-A2DA	231C
-A2DC	A408
-A2DE	B387
-A2E0	F540
-A2E2	B386
-A2E4	A602
-A2E6	8355
-A2E8	6408
-A2EA	6314
-A2EC	0806
-A2EE	158F
-A2F0	B387
-A2F2	F502
-A2F4	6300
-A2F6	030C
-A2F8	8356
-A2FA	8408
-A2FC	3387
-A2FE	E602
-A300	8356
-A302	C408
-A304	BA96
-A306	B9A8
-A308	13D6
-A30A	2900
-A30C	B297
-A30E	E31A
-A310	08F8
-A312	1356
-A314	2A00
-A316	3297
-A318	231A
-A31A	F408
-A31C	2319
-A31E	E408
-A320	33C6
-A322	B702
-A324	E31A
-A326	03F8
-A328	3345
-A32A	D702
-A32C	6306
-A32E	0800
-A330	B368
-A332	D702
-A334	639C
-A336	0804
-A338	B385
-A33A	C502
-A33C	231B
-A33E	C408
-A340	231C
-A342	A408
-A344	8D8F
-A346	8355
-A348	6408
-A34A	B386
-A34C	A602
-A34E	E300
-A350	08FA
-A352	998E
-A354	B387
-A356	F502
-A358	6306
-A35A	0304
-A35C	0357
-A35E	8408
-A360	B306
-A362	D702
-A364	2308
-A366	C400
-A368	A308
-A36A	A400
-A36C	2319
-A36E	F400
-A370	231A
-A372	D400
-A374	231D
-A376	3401
-A378	231F
-A37A	4401
-A37C	97C0
-A37E	FEFB
-A380	E780
-A382	4012
-A384	1753
-A386	02FC
-A388	6700
-A38A	6315
-A38C	0505
-A38E	231B
-A390	C408
-A392	231C
-A394	A408
-A396	B385
-A398	C502
-A39A	E305
-A39C	03FA
-A39E	B387
-A3A0	F540
-A3A2	81B7
-A3A4	8355
-A3A6	A408
-A3A8	0357
-A3AA	8408
-A3AC	AE97
-A3AE	B306
-A3B0	D702
-A3B2	4DBF
-A3B4	8355
-A3B6	A408
-A3B8	8356
-A3BA	8408
-A3BC	AE97
-A3BE	3387
-A3C0	E602
-A3C2	3DBF
-A3C4	1753
-A3C6	02FC
-A3C8	E702
-A3CA	C30F
-A3CC	B7F7
-A3CE	0324
-A3D0	9387
-A3D2	C77F
-A3D4	3784
-A3D6	0224
-A3D8	37A7
-A3DA	0124
-A3DC	1304
-A3DE	C449
-A3E0	9386
-A3E2	0780
-A3E4	2328
-A3E6	D70A
-A3E8	4848
-A3EA	37C7
-A3EC	EFBE
-A3EE	1307
-A3F0	F7EE
-A3F2	23A0
-A3F4	E780
-A3F6	65E9
-A3F8	B797
-A3FA	0224
-A3FC	3767
-A3FE	0124
-A400	9387
-A402	47E3
-A404	2326
-A406	F748
-A408	3764
-A40A	0124
-A40C	B797
-A40E	0224
-A410	1304
-A412	0440
-A414	9387
-A416	47AE
-A418	5CC4
-A41A	B797
-A41C	0224
-A41E	9387
-A420	87D5
-A422	7CC4
-A424	B797
-A426	0224
-A428	9387
-A42A	C701
-A42C	3CCC
-A42E	3785
-A430	0224
-A432	B797
-A434	0224
-A436	9387
-A438	871B
-A43A	0546
-A43C	8145
-A43E	1305
-A440	154E
-A442	1CC0
-A444	9780
-A446	00FC
-A448	E780
-A44A	40BB
-A44C	3785
-A44E	0224
-A450	1146
-A452	8145
-A454	1305
-A456	C54E
-A458	9780
-A45A	00FC
-A45C	E780
-A45E	00BA
-A460	3785
-A462	0224
-A464	0546
-A466	8145
-A468	1305
-A46A	054F
-A46C	9780
-A46E	00FC
-A470	E780
-A472	C0B8
-A474	3785
-A476	0224
-A478	0546
-A47A	8145
-A47C	1305
-A47E	154F
-A480	9780
-A482	00FC
-A484	E780
-A486	80B7
-A488	9D66
-A48A	B7A5
-A48C	0224
-A48E	9386
-A490	F6BF
-A492	1146
-A494	9385
-A496	C5CA
-A498	0545
-A49A	97F0
-A49C	FFFB
-A49E	E780
-A4A0	604F
-A4A2	B797
-A4A4	0224
-A4A6	9387
-A4A8	077C
-A4AA	23A4
-A4AC	F1A2
-A4AE	B797
-A4B0	0224
-A4B2	9387
-A4B4	0740
-A4B6	1CD4
-A4B8	B7A7
-A4BA	0224
-A4BC	3727
-A4BE	0024
-A4C0	9387
-A4C2	0783
-A4C4	232E
-A4C6	F7CC
-A4C8	B7A7
-A4CA	0224
-A4CC	9387
-A4CE	0720
-A4D0	23A8
-A4D2	F1A4
-A4D4	B797
-A4D6	0224
-A4D8	9387
-A4DA	87BB
-A4DC	3CD4
-A4DE	1753
-A4E0	02FC
-A4E2	6700
-A4E4	6300
-A4E6	B785
-A4E8	0224
-A4EA	1146
-A4EC	9385
-A4EE	454E
-A4F0	9730
-A4F2	00FC
-A4F4	E780
-A4F6	C06F
-A4F8	4848
-A4FA	B785
-A4FC	0224
-A4FE	1146
-A500	9385
-A502	854E
-A504	1105
-A506	9730
-A508	00FC
-A50A	E780
-A50C	606E
-A50E	3C44
-A510	7D57
-A512	6387
-A514	E700
-A516	B727
-A518	0124
-A51A	23AE
-A51C	0768
-A51E	E9BD
-A520	7844
-A522	6308
-A524	F700
-A526	184C
-A528	B727
-A52A	0124
-A52C	23AE
-A52E	E768
-A530	E1B5
-A532	584C
-A534	B727
-A536	0124
-A538	23AE
-A53A	E768
-A53C	75BD
-A53E	0000
-A540	1085
-A542	0224
-A544	008D
-A546	0000
-A5B0	1753
-A5B2	02FC
-A5B4	E702
-A5B6	03F1
-A5B8	B7E7
-A5BA	0124
-A5BC	9387
-A5BE	0787
-A5C0	83A4
-A5C2	870D
-A5C4	03A4
-A5C6	C70D
-A5C8	0146
-A5CA	A685
-A5CC	2285
-A5CE	9740
-A5D0	01FC
-A5D2	E780
-A5D4	6047
-A5D6	97B0
-A5D8	FEFB
-A5DA	E780
-A5DC	E0E2
-A5DE	0546
-A5E0	A685
-A5E2	2285
-A5E4	9740
-A5E6	01FC
-A5E8	E780
-A5EA	0046
-A5EC	37A7
-A5EE	0224
-A5F0	9307
-A5F2	8754
-A5F4	03C6
-A5F6	C702
-A5F8	8546
-A5FA	630B
-A5FC	D600
-A5FE	83C6
-A600	0700
-A602	0947
-A604	638E
-A606	E606
-A608	1753
-A60A	02FC
-A60C	6700
-A60E	C3ED
-A610	03D5
-A612	4705
-A614	05C9
-A616	83D8
-A618	2705
-A61A	B7E6
-A61C	0124
-A61E	83D5
-A620	665F
-A622	1307
-A624	8754
-A626	8146
-A628	2548
-A62A	0356
-A62C	E702
-A62E	0907
-A630	63EA
-A632	C50C
-A634	8506
-A636	E39A
-A638	06FF
-A63A	3707
-A63C	0040
-A63E	3A95
-A640	2310
-A642	1501
-A644	03D5
-A646	6705
-A648	5DD9
-A64A	83D8
-A64C	2705
-A64E	37E7
-A650	0124
-A652	8355
-A654	675F
-A656	BE86
-A658	0147
-A65A	2548
-A65C	03D6
-A65E	E602
-A660	8906
-A662	63E8
-A664	C50A
-A666	0507
-A668	E31A
-A66A	07FF
-A66C	3707
-A66E	0040
-A670	3A95
-A672	2310
-A674	1501
-A676	83C6
-A678	0700
-A67A	0947
-A67C	E396
-A67E	E6F8
-A680	03D5
-A682	8702
-A684	1DC5
-A686	83D8
-A688	6702
-A68A	37F7
-A68C	0124
-A68E	8355
-A690	A781
-A692	BE86
-A694	0147
-A696	2548
-A698	03D6
-A69A	2600
-A69C	8906
-A69E	63ED
-A6A0	C504
-A6A2	0507
-A6A4	E31A
-A6A6	07FF
-A6A8	3707
-A6AA	0040
-A6AC	3A95
-A6AE	2310
-A6B0	1501
-A6B2	03D5
-A6B4	A702
-A6B6	29D9
-A6B8	83D8
-A6BA	6702
-A6BC	37F7
-A6BE	0124
-A6C0	8355
-A6C2	A781
-A6C4	BE86
-A6C6	0147
-A6C8	2548
-A6CA	03D6
-A6CC	2600
-A6CE	8906
-A6D0	63EE
-A6D2	C500
-A6D4	0507
-A6D6	E31A
-A6D8	07FF
-A6DA	B707
-A6DC	0040
-A6DE	3E95
-A6E0	2310
-A6E2	1501
-A6E4	1753
-A6E6	02FC
-A6E8	6700
-A6EA	03E0
-A6EC	2107
-A6EE	0607
-A6F0	BA97
-A6F2	83D8
-A6F4	4700
-A6F6	D5B7
-A6F8	2107
-A6FA	0607
-A6FC	3E97
-A6FE	8358
-A700	4700
-A702	5DB7
-A704	1387
-A706	0602
-A708	0607
-A70A	3E97
-A70C	8358
-A70E	0700
-A710	2DB7
-A712	1307
-A714	0702
-A716	0607
-A718	3E97
-A71A	8358
-A71C	0700
-A71E	B9B7
-A720	1753
-A722	02FC
-A724	E702
-A726	83D7
-A728	3284
-A72A	B7E7
-A72C	0124
-A72E	032B
-A730	4600
-A732	832A
-A734	4609
-A736	032A
-A738	C604
-A73A	0348
-A73C	8600
-A73E	9387
-A740	0787
-A742	0346
-A744	8609
-A746	0347
-A748	0405
-A74A	03AC
-A74C	070E
-A74E	83AB
-A750	470E
-A752	3318
-A754	0B01
-A756	3317
-A758	EA00
-A75A	3396
-A75C	CA00
-A75E	2322
-A760	0401
-A762	78C4
-A764	AA84
-A766	2E89
-A768	232A
-A76A	C408
-A76C	E285
-A76E	5E85
-A770	0146
-A772	B689
-A774	9740
-A776	01FC
-A778	E780
-A77A	002D
-A77C	CE86
-A77E	2286
-A780	CA85
-A782	2685
-A784	97B0
-A786	FDFB
-A788	E780
-A78A	00B8
-A78C	0546
-A78E	E285
-A790	5E85
-A792	9740
-A794	01FC
-A796	E780
-A798	202B
-A79A	2322
-A79C	6401
-A79E	232A
-A7A0	5409
-A7A2	2326
-A7A4	4405
-A7A6	1753
-A7A8	02FC
-A7AA	6700
-A7AC	A3D2
-A7AE	0100
-A7B0	1753
-A7B2	02FC
-A7B4	E702
-A7B6	03D1
-A7B8	2A84
-A7BA	EFE0
-A7BC	AFB2
-A7BE	A147
-A7C0	6306
-A7C2	F400
-A7C4	1753
-A7C6	02FC
-A7C8	6700
-A7CA	03D2
-A7CC	9770
-A7CE	FFFB
-A7D0	E780
-A7D2	C014
-A7D4	39C5
-A7D6	B737
-A7D8	0124
-A7DA	83C7
-A7DC	271A
-A7DE	FDD3
-A7E0	3784
-A7E2	0040
-A7E4	8355
-A7E6	E4F3
-A7E8	0D45
-A7EA	93E5
-A7EC	0524
-A7EE	97D0
-A7F0	FFFB
-A7F2	E780
-A7F4	6013
-A7F6	8355
-A7F8	24F7
-A7FA	B7A7
-A7FC	0124
-A7FE	9387
-A800	0753
-A802	03D7
-A804	47B6
-A806	C205
-A808	C181
-A80A	1377
-A80C	F7DB
-A80E	93F5
-A810	F5DB
-A812	4145
-A814	2392
-A816	E7B6
-A818	97D0
-A81A	FFFB
-A81C	E780
-A81E	C010
-A820	55B7
-A822	9770
-A824	FFFB
-A826	E780
-A828	600C
-A82A	55D5
-A82C	9780
-A82E	FFFB
-A830	E780
-A832	4086
-A834	19C9
-A836	B797
-A838	0124
-A83A	9387
-A83C	07D7
-A83E	03C7
-A840	8703
-A842	83C7
-A844	2706
-A846	6306
-A848	F706
-A84A	9780
-A84C	FFFB
-A84E	E780
-A850	6084
-A852	51D1
-A854	B797
-A856	0124
-A858	9387
-A85A	07D7
-A85C	03C7
-A85E	C701
-A860	83C7
-A862	2706
-A864	E319
-A866	F7F6
-A868	B727
-A86A	0224
-A86C	0564
-A86E	9387
-A870	076B
-A872	A297
-A874	03C7
-A876	F780
-A878	8547
-A87A	6317
-A87C	F700
-A87E	B737
-A880	0124
-A882	83C7
-A884	57A5
-A886	B1C3
-A888	B787
-A88A	0040
-A88C	83D5
-A88E	E7F3
-A890	0D45
-A892	93E5
-A894	0501
-A896	97D0
-A898	FFFB
-A89A	E780
-A89C	E008
-A89E	B7A7
-A8A0	0124
-A8A2	9387
-A8A4	0753
-A8A6	03D7
-A8A8	47B6
-A8AA	3D9B
-A8AC	2392
-A8AE	E7B6
-A8B0	1DB7
-A8B2	B727
-A8B4	0224
-A8B6	0564
-A8B8	9387
-A8BA	076B
-A8BC	A297
-A8BE	03C7
-A8C0	F780
-A8C2	9147
-A8C4	E30D
-A8C6	F7FA
-A8C8	C1B7
-A8CA	B787
-A8CC	0040
-A8CE	83D5
-A8D0	E7F3
-A8D2	0D45
-A8D4	93E5
-A8D6	0504
-A8D8	97D0
-A8DA	FFFB
-A8DC	E780
-A8DE	C004
-A8E0	B797
-A8E2	0124
-A8E4	9387
-A8E6	0753
-A8E8	A297
-A8EA	03D7
-A8EC	47B6
-A8EE	1377
-A8F0	F7FB
-A8F2	2392
-A8F4	E7B6
-A8F6	C5B5
-A8F8	3571
-A8FA	22CF
-A8FC	26CD
-A8FE	7324
-A900	2034
-A902	F324
-A904	1034
-A906	7360
-A908	0430
-A90A	06CB
-A90C	16C9
-A90E	1AC7
-A910	1EC5
-A912	2AC3
-A914	2EC1
-A916	B2DE
-A918	B6DC
-A91A	BADA
-A91C	BED8
-A91E	C2D6
-A920	C6D4
-A922	F2D2
-A924	F6D0
-A926	FACE
-A928	FECC
-A92A	82E2
-A92C	86E0
-A92E	0AFE
-A930	0EFC
-A932	12FA
-A934	16F8
-A936	1AF6
-A938	1EF4
-A93A	2AF2
-A93C	2EF0
-A93E	32EE
-A940	36EC
-A942	3AEA
-A944	3EE8
-A946	42E6
-A948	46E4
-A94A	72E2
-A94C	76E0
-A94E	272E
-A950	E1FF
-A952	272C
-A954	F1FF
-A956	9770
-A958	FFFB
-A95A	E780
-A95C	20FC
-A95E	19C5
-A960	9770
-A962	FFFB
-A964	E780
-A966	80F8
-A968	631C
-A96A	0512
-A96C	9305
-A96E	0024
-A970	4145
-A972	97D0
-A974	FFFB
-A976	E780
-A978	2002
-A97A	8145
-A97C	9377
-A97E	1500
-A980	85C7
-A982	37D7
-A984	0124
-A986	B7A7
-A988	0124
-A98A	1307
-A98C	07C4
-A98E	9387
-A990	0753
-A992	0356
-A994	4707
-A996	83D6
-A998	A7B6
-A99A	0506
-A99C	93E6
-A99E	1600
-A9A0	231A
-A9A2	C706
-A9A4	2395
-A9A6	D7B6
-A9A8	9377
-A9AA	2500
-A9AC	85C7
-A9AE	37D7
-A9B0	0124
-A9B2	B7A7
-A9B4	0124
-A9B6	1307
-A9B8	07C4
-A9BA	9387
-A9BC	0753
-A9BE	0356
-A9C0	C70C
-A9C2	83D6
-A9C4	A7B6
-A9C6	0506
-A9C8	93E6
-A9CA	2600
-A9CC	2316
-A9CE	C70C
-A9D0	2395
-A9D2	D7B6
-A9D4	9377
-A9D6	0520
-A9D8	1375
-A9DA	0504
-A9DC	C5C3
-A9DE	B7D7
-A9E0	0124
-A9E2	9387
-A9E4	07C4
-A9E6	03D7
-A9E8	6708
-A9EA	0507
-A9EC	2393
-A9EE	E708
-A9F0	D1C5
-A9F2	37A7
-A9F4	0124
-A9F6	1307
-A9F8	0753
-A9FA	8356
-A9FC	A7B6
-A9FE	93E6
-AA00	0620
-AA02	2315
-AA04	D7B6
-AA06	11C9
-AA08	03D6
-AA0A	A708
-AA0C	0506
-AA0E	2395
-AA10	C708
-AA12	93E6
-AA14	0604
-AA16	2315
-AA18	D7B6
-AA1A	DA40
-AA1C	CA42
-AA1E	3A43
-AA20	AA43
-AA22	1A45
-AA24	8A45
-AA26	7656
-AA28	E656
-AA2A	5657
-AA2C	C657
-AA2E	3658
-AA30	A658
-AA32	165E
-AA34	865E
-AA36	764F
-AA38	E64F
-AA3A	1660
-AA3C	8660
-AA3E	7271
-AA40	E271
-AA42	5272
-AA44	C272
-AA46	3273
-AA48	A273
-AA4A	1275
-AA4C	8275
-AA4E	7266
-AA50	E266
-AA52	5267
-AA54	C267
-AA56	3268
-AA58	A268
-AA5A	126E
-AA5C	826E
-AA5E	072F
-AA60	C1FF
-AA62	872F
-AA64	81FF
-AA66	7370
-AA68	0430
-AA6A	7390
-AA6C	1434
-AA6E	7310
-AA70	2434
-AA72	7A44
-AA74	EA44
-AA76	0D61
-AA78	7300
-AA7A	2030
-AA7C	59DD
-AA7E	B7D7
-AA80	0124
-AA82	9387
-AA84	07C4
-AA86	03D7
-AA88	A708
-AA8A	0507
-AA8C	2395
-AA8E	E708
-AA90	C9D5
-AA92	37A7
-AA94	0124
-AA96	1307
-AA98	0753
-AA9A	8356
-AA9C	A7B6
-AA9E	95BF
-AAA0	B7A7
-AAA2	0124
-AAA4	83D5
-AAA6	8709
-AAA8	4145
-AAAA	97D0
-AAAC	FFFB
-AAAE	E780
-AAB0	A0EE
-AAB2	8545
-AAB4	E1B5
-AAB6	0100
-AAB8	8280
-AABA	0100
-AABC	1753
-AABE	02FC
-AAC0	E702
-AAC2	43A0
-AAC4	37E4
-AAC6	0124
-AAC8	1304
-AACA	044C
-AACC	8344
-AACE	E40A
-AAD0	8547
-AAD2	2307
-AAD4	F40A
-AAD6	97A0
-AAD8	FDFB
-AADA	E780
-AADC	E0EB
-AADE	2307
-AAE0	940A
-AAE2	1753
-AAE4	02FC
-AAE6	6700
-AAE8	23A0
-AAEA	0100
-AAEC	B7A7
-AAEE	0224
-AAF0	83C7
-AAF2	075A
-AAF4	0547
-AAF6	6383
-AAF8	E700
-AAFA	8280
-AAFC	1753
-AAFE	02FC
-AB00	E702
-AB02	A39A
-AB04	3794
-AB06	0124
-AB08	1304
-AB0A	0453
-AB0C	0347
-AB0E	041B
-AB10	4111
-AB12	6307
-AB14	F700
-AB16	4101
-AB18	1753
-AB1A	02FC
-AB1C	6700
-AB1E	239C
-AB20	8947
-AB22	E31A
-AB24	F5FE
-AB26	8347
-AB28	3441
-AB2A	ADC3
-AB2C	83A9
-AB2E	0500
-AB30	2EC6
-AB32	97C0
-AB34	01FC
-AB36	E780
-AB38	E0C0
-AB3A	AA84
-AB3C	9780
-AB3E	01FC
-AB40	E780
-AB42	40D0
-AB44	B245
-AB46	2A89
-AB48	9C41
-AB4A	63F3
-AB4C	9700
-AB4E	A687
-AB50	8851
-AB52	9CC1
-AB54	2EC6
-AB56	4A95
-AB58	97B0
-AB5A	00FC
-AB5C	E780
-AB5E	C0CD
-AB60	B245
-AB62	AA84
-AB64	E8C9
-AB66	3385
-AB68	2901
-AB6A	97B0
-AB6C	00FC
-AB6E	E780
-AB70	A0CC
-AB72	8567
-AB74	3E94
-AB76	8327
-AB78	C483
-AB7A	2695
-AB7C	B245
-AB7E	63F3
-AB80	A700
-AB82	AA87
-AB84	2322
-AB86	F498
-AB88	E8C5
-AB8A	71B7
-AB8C	0145
-AB8E	2EC6
-AB90	97B0
-AB92	01FC
-AB94	E780
-AB96	403E
-AB98	B245
-AB9A	AA89
-AB9C	51BF
-AB9E	0100
-ABA0	1753
-ABA2	02FC
-ABA4	E702
-ABA6	0392
-ABA8	2A84
-ABAA	EFE0
-ABAC	7F85
-ABAE	01E8
-ABB0	B7D7
-ABB2	0124
-ABB4	03A7
-ABB6	87C1
-ABB8	9147
-ABBA	6306
-ABBC	F700
-ABBE	1753
-ABC0	02FC
-ABC2	6700
-ABC4	6392
-ABC6	B7D7
-ABC8	0124
-ABCA	83C7
-ABCC	07FA
-ABCE	E5DB
-ABD0	B747
-ABD2	0124
-ABD4	83C7
-ABD6	27C4
-ABD8	FDF3
-ABDA	97E0
-ABDC	00FC
-ABDE	E780
-ABE0	60A0
-ABE2	B787
-ABE4	0224
-ABE6	0547
-ABE8	A380
-ABEA	E74E
-ABEC	C9BF
-ABEE	0100
-ABF0	1753
-ABF2	02FC
-ABF4	E702
-ABF6	038D
-ABF8	3784
-ABFA	0224
-ABFC	1304
-ABFE	C449
-AC00	8347
-AC02	5404
-AC04	99E7
-AC06	EFE0
-AC08	3F8B
-AC0A	1753
-AC0C	02FC
-AC0E	6700
-AC10	A38D
-AC12	97E0
-AC14	00FC
-AC16	E780
-AC18	E0B7
-AC1A	A302
-AC1C	0404
-AC1E	EFE0
-AC20	BF89
-AC22	1753
-AC24	02FC
-AC26	6700
-AC28	238C
-AC2A	0100
-AC2C	1753
-AC2E	02FC
-AC30	E702
-AC32	4389
-AC34	B7E7
-AC36	0124
-AC38	9387
-AC3A	0787
-AC3C	03A9
-AC3E	870E
-AC40	83A4
-AC42	C70E
-AC44	0146
-AC46	CA85
-AC48	2A84
-AC4A	2685
-AC4C	9740
-AC4E	01FC
-AC50	E780
-AC52	80DF
-AC54	2285
-AC56	97A0
-AC58	FFFB
-AC5A	E780
-AC5C	2047
-AC5E	0546
-AC60	CA85
-AC62	2685
-AC64	9740
-AC66	01FC
-AC68	E780
-AC6A	00DE
-AC6C	8547
-AC6E	6309
-AC70	F400
-AC72	9147
-AC74	6306
-AC76	F400
-AC78	1753
-AC7A	02FC
-AC7C	6700
-AC7E	C386
-AC80	9770
-AC82	FFFB
-AC84	E780
-AC86	80C9
-AC88	65F9
-AC8A	9770
-AC8C	FFFB
-AC8E	E780
-AC90	E0C5
-AC92	7DD1
-AC94	9770
-AC96	FFFB
-AC98	E780
-AC9A	C03F
-AC9C	19C9
-AC9E	B797
-ACA0	0124
-ACA2	9387
-ACA4	07D7
-ACA6	03C7
-ACA8	8703
-ACAA	83C7
-ACAC	2706
-ACAE	6306
-ACB0	F706
-ACB2	9770
-ACB4	FFFB
-ACB6	E780
-ACB8	E03D
-ACBA	5DDD
-ACBC	B797
-ACBE	0124
-ACC0	9387
-ACC2	07D7
-ACC4	03C7
-ACC6	C701
-ACC8	83C7
-ACCA	2706
-ACCC	E316
-ACCE	F7FA
-ACD0	B7B7
-ACD2	0224
-ACD4	83A7
-ACD6	0773
-ACD8	B706
-ACDA	0040
-ACDC	1386
-ACDE	4606
-ACE0	8965
-ACE2	3E96
-ACE4	1387
-ACE6	061F
-ACE8	9385
-ACEA	F5F1
-ACEC	2310
-ACEE	B600
-ACF0	3E97
-ACF2	7D56
-ACF4	2310
-ACF6	C700
-ACF8	37D6
-ACFA	0124
-ACFC	1306
-ACFE	06E7
-AD00	0357
-AD02	C605
-AD04	0356
-AD06	6606
-AD08	9386
-AD0A	861D
-AD0C	3297
-AD0E	4207
-AD10	B697
-AD12	4183
-AD14	2390
-AD16	E700
-AD18	85B7
-AD1A	B7B7
-AD1C	0224
-AD1E	83A7
-AD20	0773
-AD22	B706
-AD24	0040
-AD26	1386
-AD28	4606
-AD2A	8965
-AD2C	3E96
-AD2E	1387
-AD30	061F
-AD32	9385
-AD34	F5F1
-AD36	2310
-AD38	B600
-AD3A	3E97
-AD3C	7D56
-AD3E	2310
-AD40	C700
-AD42	37D6
-AD44	0124
-AD46	1306
-AD48	06E7
-AD4A	0357
-AD4C	0606
-AD4E	9386
-AD50	A61D
-AD52	0356
-AD54	6606
-AD56	5DBF
-AD58	1743
-AD5A	02FC
-AD5C	E702
-AD5E	8376
-AD60	B7D7
-AD62	0024
-AD64	83C7
-AD66	476D
-AD68	8544
-AD6A	6380
-AD6C	9714
-AD6E	B7E7
-AD70	0024
-AD72	03C4
-AD74	C784
-AD76	B7A7
-AD78	0124
-AD7A	83C7
-AD7C	6792
-AD7E	3334
-AD80	8000
-AD82	3304
-AD84	8040
-AD86	7998
-AD88	1304
-AD8A	6402
-AD8C	EDE7
-AD8E	B767
-AD90	0024
-AD92	9387
-AD94	0733
-AD96	03D7
-AD98	E75B
-AD9A	19C7
-AD9C	1347
-AD9E	F7FF
-ADA0	618F
-ADA2	1314
-ADA4	0701
-ADA6	4180
-ADA8	83D7
-ADAA	075C
-ADAC	0D45
-ADAE	5D8C
-ADB0	4204
-ADB2	4180
-ADB4	A285
-ADB6	97D0
-ADB8	FFFB
-ADBA	E780
-ADBC	20C5
-ADBE	9315
-ADC0	0501
-ADC2	C181
-ADC4	AA84
-ADC6	6309
-ADC8	B400
-ADCA	0565
-ADCC	A18D
-ADCE	2D05
-ADD0	97A0
-ADD2	FFFB
-ADD4	E780
-ADD6	0050
-ADD8	1395
-ADDA	0401
-ADDC	93F7
-ADDE	1400
-ADE0	4181
-ADE2	91CB
-ADE4	B7D7
-ADE6	0124
-ADE8	9387
-ADEA	07C4
-ADEC	03D7
-ADEE	4707
-ADF0	0507
-ADF2	239A
-ADF4	E706
-ADF6	9377
-ADF8	2500
-ADFA	91CB
-ADFC	B7D7
-ADFE	0124
-AE00	9387
-AE02	07C4
-AE04	03D7
-AE06	C70C
-AE08	0507
-AE0A	2396
-AE0C	E70C
-AE0E	9377
-AE10	4500
-AE12	91CB
-AE14	B7D7
-AE16	0124
-AE18	9387
-AE1A	07C4
-AE1C	03D7
-AE1E	E70C
-AE20	0507
-AE22	2397
-AE24	E70C
-AE26	9377
-AE28	0502
-AE2A	91CB
-AE2C	B7D7
-AE2E	0124
-AE30	9387
-AE32	07C4
-AE34	03D7
-AE36	070F
-AE38	0507
-AE3A	2398
-AE3C	E70E
-AE3E	9377
-AE40	0520
-AE42	91CB
-AE44	B7D7
-AE46	0124
-AE48	9387
-AE4A	07C4
-AE4C	03D7
-AE4E	6708
-AE50	0507
-AE52	2393
-AE54	E708
-AE56	1375
-AE58	0504
-AE5A	11C9
-AE5C	B7D7
-AE5E	0124
-AE60	9387
-AE62	07C4
-AE64	03D7
-AE66	A708
-AE68	0507
-AE6A	2395
-AE6C	E708
-AE6E	1743
-AE70	02FC
-AE72	6700
-AE74	6367
-AE76	B7D7
-AE78	0124
-AE7A	83D7
-AE7C	A7E7
-AE7E	81DB
-AE80	9760
-AE82	FEFB
-AE84	E780
-AE86	0072
-AE88	6311
-AE8A	9506
-AE8C	B797
-AE8E	0124
-AE90	9387
-AE92	07D7
-AE94	03C7
-AE96	C701
-AE98	83C7
-AE9A	2706
-AE9C	6307
-AE9E	F704
-AEA0	1364
-AEA2	0424
-AEA4	4204
-AEA6	4180
-AEA8	11A0
-AEAA	0144
-AEAC	B767
-AEAE	0024
-AEB0	9387
-AEB2	0733
-AEB4	03C7
-AEB6	273B
-AEB8	E30F
-AEBA	07EC
-AEBC	37A7
-AEBE	0124
-AEC0	0347
-AEC2	6792
-AEC4	E309
-AEC6	07EC
-AEC8	37D7
-AECA	0124
-AECC	0357
-AECE	A7E7
-AED0	E303
-AED2	07EC
-AED4	3797
-AED6	0124
-AED8	0347
-AEDA	1700
-AEDC	E30D
-AEDE	07EA
-AEE0	1374
-AEE2	F4DF
-AEE4	4204
-AEE6	4180
-AEE8	7DB5
-AEEA	9760
-AEEC	FEFB
-AEEE	E780
-AEF0	606B
-AEF2	8547
-AEF4	E31C
-AEF6	F5FA
-AEF8	B797
-AEFA	0124
-AEFC	9387
-AEFE	07D7
-AF00	03C7
-AF02	C701
-AF04	83C7
-AF06	2706
-AF08	E312
-AF0A	F7FA
-AF0C	1364
-AF0E	0420
-AF10	4204
-AF12	4180
-AF14	61BF
-AF16	0100
-AF18	7171
-AF1A	22D7
-AF1C	26D5
-AF1E	7324
-AF20	2034
-AF22	F324
-AF24	1034
-AF26	7360
-AF28	0430
-AF2A	2EC5
-AF2C	A565
-AF2E	BEDC
-AF30	06D3
-AF32	16D1
-AF34	1ACF
-AF36	1ECD
-AF38	22CB
-AF3A	2AC7
-AF3C	32C3
-AF3E	36C1
-AF40	BADE
-AF42	C2DA
-AF44	C6D8
-AF46	F2D0
-AF48	F6CE
-AF4A	FACC
-AF4C	FECA
-AF4E	82E2
-AF50	86E0
-AF52	0AFE
-AF54	0EFC
-AF56	12FA
-AF58	16F8
-AF5A	1AF6
-AF5C	1EF4
-AF5E	2AF2
-AF60	2EF0
-AF62	32EE
-AF64	26C9
-AF66	CAD6
-AF68	CED4
-AF6A	D2D2
-AF6C	9385
-AF6E	0540
-AF70	0545
-AF72	36EC
-AF74	3AEA
-AF76	3EE8
-AF78	42E6
-AF7A	46E4
-AF7C	72E2
-AF7E	76E0
-AF80	272E
-AF82	E1FF
-AF84	272C
-AF86	F1FF
-AF88	97D0
-AF8A	FFFB
-AF8C	E780
-AF8E	C0A0
-AF90	A167
-AF92	E98F
-AF94	2A84
-AF96	6394
-AF98	0718
-AF9A	B764
-AF9C	0124
-AF9E	9384
-AFA0	0440
-AFA2	8567
-AFA4	E18F
-AFA6	CDCF
-AFA8	37D7
-AFAA	0124
-AFAC	3789
-AFAE	0224
-AFB0	1307
-AFB2	07C4
-AFB4	1309
-AFB6	C949
-AFB8	8356
-AFBA	670E
-AFBC	8327
-AFBE	0905
-AFC0	8506
-AFC2	8507
-AFC4	2328
-AFC6	F904
-AFC8	2313
-AFCA	D70E
-AFCC	858B
-AFCE	639F
-AFD0	071A
-AFD2	8547
-AFD4	A30A
-AFD6	F904
-AFD8	9770
-AFDA	FFFB
-AFDC	E780
-AFDE	8008
-AFE0	19C5
-AFE2	0357
-AFE4	4905
-AFE6	9307
-AFE8	1010
-AFEA	6306
-AFEC	F724
-AFEE	DC50
-AFF0	0945
-AFF2	8297
-AFF4	9770
-AFF6	FFFB
-AFF8	E780
-AFFA	408F
-AFFC	11C5
-AFFE	9770
-B000	FFFB
-B002	E780
-B004	A091
-B006	55C5
-B008	9760
-B00A	00FC
-B00C	E780
-B00E	C063
-B010	B787
-B012	0024
-B014	83C7
-B016	078C
-B018	AA89
-B01A	6392
-B01C	071C
-B01E	B7D7
-B020	0124
-B022	9387
-B024	07E7
-B026	BC5F
-B028	639A
-B02A	0716
-B02C	3799
-B02E	0124
-B030	1309
-B032	0953
-B034	B727
-B036	0024
-B038	83C7
-B03A	7752
-B03C	6396
-B03E	071E
-B040	0345
-B042	C918
-B044	631D
-B046	051C
-B048	DC50
-B04A	0D45
-B04C	8297
-B04E	4E85
-B050	9760
-B052	00FC
-B054	E780
-B056	8063
-B058	8567
-B05A	3E99
-B05C	2320
-B05E	A9A2
-B060	1374
-B062	0440
-B064	21C4
-B066	B7D7
-B068	0124
-B06A	9387
-B06C	07C4
-B06E	37A7
-B070	0124
-B072	83D6
-B074	670E
-B076	1307
-B078	0753
-B07A	0347
-B07C	179B
-B07E	8506
-B080	3784
-B082	0224
-B084	1304
-B086	C449
-B088	1337
-B08A	1700
-B08C	2393
-B08E	D70E
-B090	230A
-B092	E404
-B094	9770
-B096	FFFB
-B098	E780
-B09A	C0FC
-B09C	6306
-B09E	0510
-B0A0	0357
-B0A2	4405
-B0A4	9307
-B0A6	1010
-B0A8	6300
-B0AA	F710
-B0AC	DC50
-B0AE	1D45
-B0B0	8297
-B0B2	9A50
-B0B4	8A52
-B0B6	7A43
-B0B8	EA43
-B0BA	5A44
-B0BC	CA44
-B0BE	3A45
-B0C0	AA45
-B0C2	1A46
-B0C4	8A46
-B0C6	7657
-B0C8	E657
-B0CA	5658
-B0CC	C658
-B0CE	3659
-B0D0	A659
-B0D2	165A
-B0D4	065E
-B0D6	F64E
-B0D8	664F
-B0DA	D64F
-B0DC	1660
-B0DE	8660
-B0E0	7271
-B0E2	E271
-B0E4	5272
-B0E6	C272
-B0E8	3273
-B0EA	A273
-B0EC	1275
-B0EE	8275
-B0F0	7266
-B0F2	E266
-B0F4	5267
-B0F6	C267
-B0F8	3268
-B0FA	A268
-B0FC	126E
-B0FE	826E
-B100	072F
-B102	C1FF
-B104	872F
-B106	81FF
-B108	7370
-B10A	0430
-B10C	7390
-B10E	1434
-B110	7310
-B112	2434
-B114	3A54
-B116	AA54
-B118	4D61
-B11A	7300
-B11C	2030
-B11E	37D9
-B120	0124
-B122	1309
-B124	09C4
-B126	8357
-B128	490E
-B12A	B764
-B12C	0124
-B12E	9384
-B130	0440
-B132	D850
-B134	8507
-B136	0145
-B138	2312
-B13A	F90E
-B13C	0297
-B13E	9760
-B140	FFFB
-B142	E780
-B144	A07A
-B146	25E5
-B148	B729
-B14A	0024
-B14C	3799
-B14E	0124
-B150	9389
-B152	0933
-B154	1309
-B156	0953
-B158	056A
-B15A	83C7
-B15C	791F
-B15E	4A9A
-B160	2320
-B162	0AA2
-B164	B9EF
-B166	0345
-B168	C918
-B16A	2DE5
-B16C	83C7
-B16E	0920
-B170	89C7
-B172	0327
-B174	4AB3
-B176	630A
-B178	F700
-B17A	97E0
-B17C	00FC
-B17E	E780
-B180	60DC
-B182	DC50
-B184	0545
-B186	8297
-B188	29BD
-B18A	01A0
-B18C	8547
-B18E	230A
-B190	0904
-B192	A30A
-B194	0904
-B196	2328
-B198	F904
-B19A	3DBD
-B19C	7D55
-B19E	9770
-B1A0	01FC
-B1A2	E780
-B1A4	200E
-B1A6	59B5
-B1A8	EFE0
-B1AA	DFE2
-B1AC	01B7
-B1AE	9760
-B1B0	FFFB
-B1B2	E780
-B1B4	A076
-B1B6	49F9
-B1B8	8357
-B1BA	490E
-B1BC	858B
-B1BE	C9F7
-B1C0	CDBD
-B1C2	9770
-B1C4	01FC
-B1C6	E780
-B1C8	A00C
-B1CA	2311
-B1CC	A94E
-B1CE	0345
-B1D0	C918
-B1D2	49DD
-B1D4	97C0
-B1D6	FFFB
-B1D8	E780
-B1DA	C0BD
-B1DC	41BF
-B1DE	9770
-B1E0	01FC
-B1E2	E780
-B1E4	E00A
-B1E6	3799
-B1E8	0124
-B1EA	1309
-B1EC	0953
-B1EE	8D67
-B1F0	CA97
-B1F2	03C7
-B1F4	D76F
-B1F6	232E
-B1F8	A94E
-B1FA	8547
-B1FC	6306
-B1FE	F700
-B200	8327
-B202	094F
-B204	E377
-B206	F5EA
-B208	9760
-B20A	00FC
-B20C	E780
-B20E	0006
-B210	9770
-B212	01FC
-B214	E780
-B216	C007
-B218	2320
-B21A	A950
-B21C	21BD
-B21E	97C0
-B220	FFFB
-B222	E780
-B224	20BC
-B226	0DB5
-B228	9770
-B22A	01FC
-B22C	E780
-B22E	4006
-B230	2312
-B232	A94E
-B234	31B5
-B236	EFE0
-B238	FFD9
-B23A	55BB
-B23C	1743
-B23E	02FC
-B240	E702
-B242	4328
-B244	2A84
-B246	EFD0
-B248	3FB1
-B24A	8947
-B24C	6306
-B24E	F400
-B250	1743
-B252	02FC
-B254	6700
-B256	4329
-B258	B7A4
-B25A	0224
-B25C	9384
-B25E	8454
-B260	83C7
-B262	1406
-B264	F5F7
-B266	9770
-B268	FFFB
-B26A	E780
-B26C	A0ED
-B26E	6DF1
-B270	9770
-B272	FFFB
-B274	E780
-B276	40EE
-B278	61FD
-B27A	3725
-B27C	0224
-B27E	1305
-B280	05ED
-B282	9700
-B284	FFFB
-B286	E780
-B288	2005
-B28A	B767
-B28C	0124
-B28E	83A7
-B290	0740
-B292	0549
-B294	37A7
-B296	0124
-B298	1D45
-B29A	2305
-B29C	2723
-B29E	8297
-B2A0	A380
-B2A2	2407
-B2A4	9780
-B2A6	01FC
-B2A8	E780
-B2AA	008E
-B2AC	55F1
-B2AE	B727
-B2B0	0124
-B2B2	2380
-B2B4	8754
-B2B6	97B0
-B2B8	FEFB
-B2BA	E780
-B2BC	600D
-B2BE	2381
-B2C0	2407
-B2C2	79B7
-B2C4	1743
-B2C6	02FC
-B2C8	E702
-B2CA	C31F
-B2CC	37A4
-B2CE	0224
-B2D0	1304
-B2D2	8454
-B2D4	0347
-B2D6	2406
-B2D8	8547
-B2DA	630A
-B2DC	F700
-B2DE	97B0
-B2E0	FEFB
-B2E2	E780
-B2E4	E074
-B2E6	1743
-B2E8	02FC
-B2EA	6700
-B2EC	E31F
-B2EE	9780
-B2F0	01FC
-B2F2	E780
-B2F4	6089
-B2F6	65F5
-B2F8	97B0
-B2FA	FEFB
-B2FC	E780
-B2FE	801A
-B300	2301
-B302	0406
-B304	E9BF
-B306	0100
-B308	1743
-B30A	02FC
-B30C	E702
-B30E	831B
-B310	9D47
-B312	631F
-B314	F500
-B316	3794
-B318	0124
-B31A	1304
-B31C	0453
-B31E	8567
-B320	A297
-B322	83C7
-B324	A7CF
-B326	9DE7
-B328	1743
-B32A	02FC
-B32C	6700
-B32E	C31B
-B330	2A84
-B332	EFD0
-B334	7FE8
-B336	8547
-B338	E318
-B33A	F4FE
-B33C	B7E7
-B33E	0124
-B340	9387
-B342	074C
-B344	23AE
-B346	0710
-B348	23A4
-B34A	077E
-B34C	1743
-B34E	02FC
-B350	6700
-B352	8319
-B354	9770
-B356	FFFB
-B358	E780
-B35A	C0DE
-B35C	71F5
-B35E	9770
-B360	FFFB
-B362	E780
-B364	60DF
-B366	69F1
-B368	8D67
-B36A	3E94
-B36C	8327
-B36E	846D
-B370	B724
-B372	0124
-B374	9384
-B376	045F
-B378	91EF
-B37A	83A7
-B37C	440E
-B37E	99CB
-B380	B7D7
-B382	0124
-B384	83C7
-B386	07FA
-B388	C5D3
-B38A	9700
-B38C	FFFB
-B38E	E780
-B390	20EE
-B392	59BF
-B394	83A7
-B396	C40A
-B398	C1DB
-B39A	0545
-B39C	9730
-B39E	FEFB
-B3A0	E780
-B3A2	805C
-B3A4	B735
-B3A6	202D
-B3A8	7578
-B3AA	37F5
-B3AC	202D
-B3AE	9385
-B3B0	0560
-B3B2	1308
-B3B4	08A0
-B3B6	9168
-B3B8	1305
-B3BA	0560
-B3BC	B387
-B3BE	0501
-B3C0	03C7
-B3C2	0700
-B3C4	9306
-B3C6	F00F
-B3C8	1316
-B3CA	8701
-B3CC	6186
-B3CE	0607
-B3D0	6344
-B3D2	0600
-B3D4	9376
-B3D6	F70F
-B3D8	2380
-B3DA	D700
-B3DC	8507
-B3DE	E391
-B3E0	B7FE
-B3E2	B385
-B3E4	1701
-B3E6	E39B
-B3E8	A5FC
-B3EA	B7A7
-B3EC	0224
-B3EE	0547
-B3F0	0145
-B3F2	A384
-B3F4	E75A
-B3F6	9730
-B3F8	FEFB
-B3FA	E780
-B3FC	E056
-B3FE	B7D7
-B400	0124
-B402	83C7
-B404	07FA
-B406	8DD3
-B408	8327
-B40A	846D
-B40C	91FF
-B40E	83A7
-B410	440E
-B412	99DB
-B414	9DBF
-B416	0100
-B418	1743
-B41A	02FC
-B41C	E702
-B41E	830A
-B420	B7D7
-B422	0124
-B424	9387
-B426	07F4
-B428	03C7
-B42A	1705
-B42C	2A84
-B42E	11C7
-B430	03C7
-B432	1700
-B434	8947
-B436	6301
-B438	F704
-B43A	B7E7
-B43C	0124
-B43E	9387
-B440	0787
-B442	03A9
-B444	870F
-B446	83A4
-B448	C70F
-B44A	0146
-B44C	CA85
-B44E	2685
-B450	9730
-B452	01FC
-B454	E780
-B456	405F
-B458	2285
-B45A	97D0
-B45C	FEFB
-B45E	E780
-B460	20E2
-B462	0546
-B464	CA85
-B466	2685
-B468	9730
-B46A	01FC
-B46C	E780
-B46E	C05D
-B470	1743
-B472	02FC
-B474	6700
-B476	4307
-B478	B7E7
-B47A	0024
-B47C	83D6
-B47E	C7C8
-B480	8567
-B482	1387
-B484	F7B3
-B486	E39A
-B488	E6FA
-B48A	3797
-B48C	0124
-B48E	1307
-B490	0753
-B492	BA97
-B494	03A5
-B496	07B2
-B498	8145
-B49A	3325
-B49C	A000
-B49E	97D0
-B4A0	00FC
-B4A2	E780
-B4A4	20C7
-B4A6	51BF
-B4A8	1743
-B4AA	02FC
-B4AC	E702
-B4AE	8301
-B4B0	9760
-B4B2	FFFB
-B4B4	E780
-B4B6	8043
-B4B8	11C5
-B4BA	B7E7
-B4BC	0024
-B4BE	83C7
-B4C0	C784
-B4C2	BDEF
-B4C4	1384
-B4C6	81E7
-B4C8	0347
-B4CA	8400
-B4CC	8547
-B4CE	6303
-B4D0	F706
-B4D2	0357
-B4D4	2403
-B4D6	B767
-B4D8	0040
-B4DA	2398
-B4DC	E718
-B4DE	8357
-B4E0	4403
-B4E2	3767
-B4E4	0040
-B4E6	2314
-B4E8	F720
-B4EA	9760
-B4EC	FFFB
-B4EE	E780
-B4F0	E03F
-B4F2	19C5
-B4F4	B7E7
-B4F6	0024
-B4F8	03C7
-B4FA	C784
-B4FC	8147
-B4FE	09EB
-B500	8346
-B502	8400
-B504	0547
-B506	8147
-B508	6384
-B50A	E600
-B50C	8357
-B50E	C405
-B510	37A7
-B512	0040
-B514	2312
-B516	F710
-B518	9770
-B51A	FFFB
-B51C	E780
-B51E	80C2
-B520	35C1
-B522	9770
-B524	FFFB
-B526	E780
-B528	20C3
-B52A	05C9
-B52C	1743
-B52E	02FC
-B530	6700
-B532	83FB
-B534	B767
-B536	0040
-B538	2398
-B53A	0718
-B53C	8147
-B53E	55B7
-B540	B767
-B542	0040
-B544	2398
-B546	0718
-B548	1384
-B54A	81E7
-B54C	8346
-B54E	8400
-B550	0547
-B552	8147
-B554	E395
-B556	E6F8
-B558	69B7
-B55A	9760
-B55C	FFFB
-B55E	E780
-B560	E038
-B562	31ED
-B564	8346
-B566	8400
-B568	0547
-B56A	8147
-B56C	6384
-B56E	E600
-B570	8357
-B572	4408
-B574	3787
-B576	0040
-B578	2314
-B57A	F710
-B57C	1743
-B57E	02FC
-B580	6700
-B582	83F6
-B584	9770
-B586	FFFB
-B588	E780
-B58A	00BD
-B58C	59F9
-B58E	9760
-B590	FFFB
-B592	E780
-B594	A035
-B596	19C5
-B598	B7E7
-B59A	0024
-B59C	03C7
-B59E	C784
-B5A0	8147
-B5A2	09EB
-B5A4	8346
-B5A6	8400
-B5A8	0547
-B5AA	8147
-B5AC	6384
-B5AE	E600
-B5B0	8357
-B5B2	6407
-B5B4	3707
-B5B6	0140
-B5B8	2314
-B5BA	F710
-B5BC	9DB7
-B5BE	B7E7
-B5C0	0024
-B5C2	03C7
-B5C4	C784
-B5C6	8147
-B5C8	55F7
-B5CA	69BF
-B5CC	1743
-B5CE	02FC
-B5D0	E702
-B5D2	A3ED
-B5D4	B747
-B5D6	0124
-B5D8	03D7
-B5DA	C7E1
-B5DC	8947
-B5DE	2A84
-B5E0	AE84
-B5E2	6319
-B5E4	F700
-B5E6	B7A7
-B5E8	0124
-B5EA	03A7
-B5EC	4706
-B5EE	FD57
-B5F0	630E
-B5F2	F702
-B5F4	B7E7
-B5F6	0124
-B5F8	9387
-B5FA	0787
-B5FC	83A9
-B5FE	8710
-B600	03A9
-B602	C710
-B604	0146
-B606	CE85
-B608	4A85
-B60A	9730
-B60C	01FC
-B60E	E780
-B610	A043
-B612	A685
-B614	2285
-B616	97D0
-B618	00FC
-B61A	E780
-B61C	A0AF
-B61E	0546
-B620	CE85
-B622	4A85
-B624	9730
-B626	01FC
-B628	E780
-B62A	0042
-B62C	1743
-B62E	02FC
-B630	6700
-B632	E3EA
-B634	1743
-B636	02FC
-B638	E702
-B63A	C3E8
-B63C	B7B6
-B63E	0224
-B640	B787
-B642	0324
-B644	9386
-B646	4673
-B648	37A7
-B64A	0124
-B64C	9387
-B64E	07FF
-B650	1307
-B652	0753
-B654	958F
-B656	232C
-B658	D7B4
-B65A	232E
-B65C	F7B4
-B65E	9730
-B660	01FC
-B662	E780
-B664	20E2
-B666	01C5
-B668	EFE0
-B66A	DFD5
-B66C	3120
-B66E	1743
-B670	02FC
-B672	6700
-B674	63E7
-B676	0100
-B678	1743
-B67A	02FC
-B67C	E702
-B67E	83E4
-B680	B7B7
-B682	0224
-B684	9387
-B686	C7AB
-B688	23AE
-B68A	F194
-B68C	3764
-B68E	0124
-B690	9D66
-B692	B7B5
-B694	0224
-B696	B7A7
-B698	0224
-B69A	1304
-B69C	0440
-B69E	9387
-B6A0	077B
-B6A2	9386
-B6A4	F6BF
-B6A6	1146
-B6A8	9385
-B6AA	85F1
-B6AC	0545
-B6AE	5CC4
-B6B0	97E0
-B6B2	FFFB
-B6B4	E780
-B6B6	002E
-B6B8	C166
-B6BA	B7B5
-B6BC	0224
-B6BE	FD16
-B6C0	3146
-B6C2	9385
-B6C4	858F
-B6C6	4145
-B6C8	97E0
-B6CA	FFFB
-B6CC	E780
-B6CE	802C
-B6D0	37B7
-B6D2	0224
-B6D4	1307
-B6D6	C7AE
-B6D8	B7A7
-B6DA	0224
-B6DC	9387
-B6DE	8754
-B6E0	78C8
-B6E2	37B7
-B6E4	0224
-B6E6	A380
-B6E8	0706
-B6EA	2381
-B6EC	0706
-B6EE	1307
-B6F0	07BA
-B6F2	B7B7
-B6F4	0224
-B6F6	18D4
-B6F8	9387
-B6FA	C723
-B6FC	37B7
-B6FE	0224
-B700	7CC4
-B702	1307
-B704	8730
-B706	B7B7
-B708	0224
-B70A	18C0
-B70C	9387
-B70E	472C
-B710	23AA
-B712	F1A4
-B714	1743
-B716	02FC
-B718	6700
-B71A	03DD
-B71C	0000
-B71E	0000
-B720	6610
-B722	E538
-B724	0000
-B726	0000
-B728	BF3F
-B72A	0000
-B72C	0000
-B72E	0000
-B730	008D
-B732	0000
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	006C
-84C8	34B6
-84CA	0224
-84CC	B8AA
-84CE	0224
-84D0	B8AA
-84D2	0224
-84D4	B8AA
-84D6	0224
-84D8	B8AA
-84DA	0224
-84DC	B8AA
-84DE	0224
-A548	0046
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00DB
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	013C
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	F0AB
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	B0A5
-570A	0224
-570C	0453
-570E	0020
-5710	20A7
-5712	0224
-5714	C850
-5716	0220
-5718	2CAC
-571A	0224
-571C	2C88
-571E	0220
-5720	58AD
-5722	0224
-5724	7C82
-5726	0120
-5728	18B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	A8B4
-5732	0224
-5734	1081
-5736	0320
-5738	CCB5
-573A	0224
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-23F0	0000
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-FCFC	4000
-011C	0100
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3234	0120
-3236	1600
-3238	0A14
-323A	2A2A
-323C	010F
-323E	0419
-3240	143A
-3242	0A4B
-3244	0101
-3246	0101
-3248	0010
-3252	C800
-3254	C400
-3256	C200
-3258	BE00
-325A	BC00
-3266	0100
-3268	0200
-326A	2A00
-326C	0000
-326E	3F00
-3270	0A00
-3272	1900
-3274	0C00
-3276	2000
-3278	2300
-327A	2100
-327C	3000
-327E	1100
-3280	0C00
-3282	2000
-3284	2300
-3286	2100
-3288	3000
-328A	1100
-328C	0F00
-328E	1900
-3290	0A00
-3292	0B00
-3296	0800
-3298	0F00
-329A	1900
-329C	0A00
-329E	0B00
-32A0	0000
-32A2	0800
-32A4	0F00
-32A6	1900
-32A8	0A00
-32AA	0B00
-32AC	0000
-32AE	0800
-3330	0108
-3334	0100
-3336	0000
-FCFC	4000
-FCFC	4000
-0B30	01FF
-FCFC	2000
-3D44	0000
-3D88	FCFC
-3D8A	FEFF
-3D8C	FCFC
-3D8E	FEFF
-3D90	FCFC
-3D92	FEFF
-3D94	FCFC
-3D96	FEFF
-3FE0	0324
-3FE2	4686
-3FE4	0324
-3FE6	0080
-4238	0324
-423A	4686
-423C	0324
-423E	0080
-4240	0324
-4242	9482
-4490	0324
-4492	4686
-4494	0324
-4496	B882
-46E8	0324
-46EA	4686
-46EC	0324
-46EE	9083
-4940	0324
-4942	4686
-4944	0324
-4946	9284
-4B98	0324
-4B9A	4686
-4B9C	0000
-4B9E	0000
-4DF0	0324
-4DF2	4686
-4DF4	0324
-4DF6	EE8C
-FCFC	2003
-8000	FFFE
-8002	2400
-8004	FFFD
-8006	703C
-8008	0100
-800A	703E
-800C	0000
-800E	7048
-8010	002F
-8012	704A
-8014	0400
-8016	705A
-8018	0030
-801A	705C
-801C	0400
-801E	7274
-8020	000D
-8022	7276
-8024	000C
-8026	727E
-8028	0000
-802A	7280
-802C	0000
-802E	7282
-8030	0000
-8032	795A
-8034	0010
-8036	7970
-8038	0010
-803A	7996
-803C	0001
-803E	7A0E
-8040	001E
-8042	7A6E
-8044	0028
-8046	7A86
-8048	0028
-804A	82A2
-804C	0012
-804E	82BA
-8050	0036
-8052	8C9E
-8054	0050
-8056	8CA2
-8058	0035
-805A	8CCE
-805C	012C
-805E	8CD2
-8060	0096
-8062	B176
-8064	0006
-8066	B220
-8068	0000
-806A	B268
-806C	0440
-806E	BEDE
-8070	3E90
-8072	BEE4
-8074	000C
-8076	C4E2
-8078	0002
-807A	C53C
-807C	0001
-807E	C554
-8080	0D53
-8082	D20C
-8084	0809
-8086	D27A
-8088	0005
-808A	D326
-808C	2001
-808E	D3EC
-8090	1CB1
-8092	D4A8
-8094	0003
-8096	D4AC
-8098	003B
-809A	D4B0
-809C	0001
-809E	D4B8
-80A0	0035
-80A2	D4BC
-80A4	0014
-80A6	D4C4
-80A8	0001
-80AA	D4C8
-80AC	0000
-80AE	D4D0
-80B0	0016
-80B2	D4D2
-80B4	0020
-80B6	D4D6
-80B8	0000
-80BA	D4DE
-80BC	0000
-80BE	D4E2
-80C0	0001
-80C2	D4EC
-80C4	00BE
-80C6	D4EE
-80C8	00BE
-80CA	D4F8
-80CC	01F0
-80CE	D4FA
-80D0	01F0
-80D2	D554
-80D4	0000
-80D6	D556
-80D8	0000
-80DA	D560
-80DC	0000
-80DE	D562
-80E0	0000
-80E2	D684
-80E4	0440
-80E6	DADA
-80E8	0100
-80EA	DADE
-80EC	0030
-80EE	DAE0
-80F0	0180
-80F2	DB0E
-80F4	8000
-80F6	DB3C
-80F8	D212
-80FA	DB3E
-80FC	D212
-80FE	DB40
-8100	D212
-8102	DC8C
-8104	2B3F
-8106	DC94
-8108	0001
-810A	E980
-810C	0500
-810E	F014
-8110	0006
-8112	F3F4
-8114	08C8
-8116	F3F6
-8118	10D7
-811A	FFFE
-811C	2401
-811E	FFFD
-8120	1C4E
-8122	0100
-8124	1C50
-8126	03FF
-8128	2540
-812A	0002
-812C	29A8
-812E	0002
-8130	29BA
-8132	00FF
-8134	2A44
-8136	04B0
-8138	2A56
-813A	0008
-813C	3132
-813E	0001
-8140	31D0
-8142	0002
-8144	31F8
-8146	0001
-8148	31FA
-814A	04CD
-814C	FFFE
-814E	2402
-8150	FFFD
-8152	84C4
-8154	0000
-8156	A598
-8158	002E
-815A	A59A
-815C	0030
-815E	FFFE
-8160	2400
-8162	FFFD
-8164	0086
-8166	0200
-8168	0900
-816A	1100
-816C	0B02
-816E	0101
-8170	0B08
-8172	0101
-8174	0342
-8176	23F0
-8178	0000
-817A	FFFF
-817C	0008
-817E	2400
-8180	7314
-8182	0000
-8184	0000
-8186	0000
-8188	0000
-818A	FFFF
-818C	0010
-818E	2401
-8190	1C26
-8192	0001
-8194	FF03
-8196	0010
-8198	D70F
-819A	0004
-819C	0010
-819E	D70F
-81A0	C20F
-81A2	FFFF
-81A4	000A
-81A6	2401
-81A8	1C54
-81AA	D70F
-81AC	0004
-81AE	0010
-81B0	D70F
-81B2	C20F
-81B4	FFFF
-81B6	0010
-81B8	2401
-81BA	1C76
-81BC	0001
-81BE	FF03
-81C0	0010
-81C2	D70F
-81C4	0004
-81C6	0010
-81C8	D70F
-81CA	C20F
-81CC	FFFF
-81CE	0010
-81D0	2401
-81D2	1C9E
-81D4	0001
-81D6	FF03
-81D8	0010
-81DA	D70F
-81DC	0004
-81DE	0010
-81E0	D70F
-81E2	C20F
-81E4	FFFF
-81E6	0010
-81E8	2401
-81EA	1CC6
-81EC	0000
-81EE	0000
-81F0	0000
-81F2	0000
-81F4	0000
-81F6	0000
-81F8	0000
-81FA	0000
-81FC	FFFF
-81FE	0010
-8200	2401
-8202	1CEE
-8204	0000
-8206	0000
-8208	0000
-820A	0000
-820C	0000
-820E	0000
-8210	0000
-8212	0000
-8214	FFFF
-8216	0010
-8218	2401
-821A	1D16
-821C	0000
-821E	0000
-8220	0000
-8222	0000
-8224	0000
-8226	0000
-8228	0000
-822A	0000
-822C	FFFF
-822E	0010
-8230	2401
-8232	1D3E
-8234	0000
-8236	0000
-8238	0000
-823A	0000
-823C	0000
-823E	0000
-8240	0000
-8242	0000
-8244	FFFF
-8246	001C
-8248	2402
-824A	A57A
-824C	0001
-824E	0002
-8250	0002
-8252	0002
-8254	0002
-8256	0002
-8258	0002
-825A	0800
-825C	2100
-825E	2900
-8260	2E00
-8262	2E00
-8264	2E00
-8266	2E00
-8268	FFFF
-826A	0010
-826C	2400
-826E	0344
-8270	0008
-8272	0006
-8274	1F18
-8276	1F12
-8278	0010
-827A	000C
-827C	1000
-827E	1000
-8280	FFFF
-8282	0008
-8284	2400
-8286	0380
-8288	0100
-828A	0100
-828C	0100
-828E	0100
-8290	0000
-8292	0000
-8294	FFFE
-8296	2400
-8298	FFFD
-829A	D4AC
-829C	03E8
-829E	FFFE
-82A0	2401
-82A2	FFFD
-82A4	31D0
-82A6	0000
-82A8	FFFE
-82AA	2400
-82AC	FFFD
-82AE	0B08
-82B0	0001
-82B2	0000
-82B4	0000
-82B6	0000
-82B8	FFFE
-82BA	2400
-82BC	FFFD
-82BE	7048
-82C0	021F
-82C2	705A
-82C4	0320
-82C6	727E
-82C8	0000
-82CA	7280
-82CC	0000
-82CE	7282
-82D0	0000
-82D2	7BDA
-82D4	004C
-82D6	BEDE
-82D8	3E90
-82DA	BEE4
-82DC	000C
-82DE	D20C
-82E0	0809
-82E2	D27A
-82E4	0005
-82E6	D49C
-82E8	0003
-82EA	D4A8
-82EC	0001
-82EE	D4B0
-82F0	0202
-82F2	D4BC
-82F4	0047
-82F6	D4D0
-82F8	0026
-82FA	D4E2
-82FC	0028
-82FE	D556
-8300	00EC
-8302	D562
-8304	037A
-8306	DADA
-8308	0100
-830A	DB0E
-830C	4000
-830E	DB12
-8310	B000
-8312	DB14
-8314	D000
-8316	DB16
-8318	F000
-831A	F3F6
-831C	10D6
-831E	FFFE
-8320	2401
-8322	FFFD
-8324	1E16
-8326	FFFA
-8328	1E1E
-832A	FFFA
-832C	1E56
-832E	FFFA
-8330	1E5E
-8332	FFFA
-8334	2A44
-8336	0739
-8338	4396
-833A	000D
-833C	FFFE
-833E	2400
-8340	FFFD
-8342	0346
-8344	0000
-8346	0382
-8348	0002
-834A	0386
-834C	0002
-834E	0900
-8350	2222
-8352	0000
-8354	FFFF
-8356	000A
-8358	2400
-835A	DADE
-835C	4000
-835E	E001
-8360	2003
-8362	8007
-8364	000B
-8366	FFFF
-8368	000C
-836A	2400
-836C	DB3C
-836E	12D2
-8370	12D2
-8372	12D2
-8374	12D2
-8376	12D2
-8378	12D2
-837A	FFFF
-837C	000A
-837E	2400
-8380	034A
-8382	1F18
-8384	0010
-8386	000C
-8388	0800
-838A	0800
-838C	0000
-838E	0000
-8390	FFFE
-8392	2400
-8394	FFFD
-8396	7048
-8398	021F
-839A	705A
-839C	0320
-839E	727E
-83A0	0000
-83A2	7280
-83A4	0000
-83A6	7282
-83A8	0000
-83AA	7BDA
-83AC	004C
-83AE	BEDE
-83B0	3E90
-83B2	BEE4
-83B4	000C
-83B6	D20C
-83B8	0809
-83BA	D27A
-83BC	0005
-83BE	D49C
-83C0	0022
-83C2	D4A8
-83C4	0000
-83C6	D4B0
-83C8	046A
-83CA	D4BC
-83CC	0062
-83CE	D4D0
-83D0	000A
-83D2	D4E2
-83D4	0036
-83D6	D556
-83D8	00FA
-83DA	D562
-83DC	0388
-83DE	DADA
-83E0	0100
-83E2	DB0E
-83E4	4000
-83E6	DB12
-83E8	B000
-83EA	DB14
-83EC	D000
-83EE	DB16
-83F0	F000
-83F2	F3F6
-83F4	10D6
-83F6	FFFE
-83F8	2401
-83FA	FFFD
-83FC	1DF2
-83FE	0009
-8400	1DF6
-8402	0009
-8404	1DFA
-8406	0009
-8408	1DFE
-840A	0009
-840C	1E12
-840E	000C
-8410	1E16
-8412	000C
-8414	1E1A
-8416	000C
-8418	1E1E
-841A	000C
-841C	1E32
-841E	0009
-8420	1E36
-8422	0009
-8424	1E3A
-8426	0009
-8428	1E3E
-842A	0009
-842C	1E52
-842E	000C
-8430	1E56
-8432	000C
-8434	1E5A
-8436	000C
-8438	1E5E
-843A	000C
-843C	2A44
-843E	0952
-8440	4396
-8442	000D
-8444	FFFE
-8446	2400
-8448	FFFD
-844A	0382
-844C	0002
-844E	0386
-8450	0002
-8452	0900
-8454	2222
-8456	0000
-8458	FFFF
-845A	000A
-845C	2400
-845E	DADE
-8460	4000
-8462	E001
-8464	2003
-8466	8007
-8468	000B
-846A	FFFF
-846C	000C
-846E	2400
-8470	DB3C
-8472	12D2
-8474	12D2
-8476	12D2
-8478	12D2
-847A	12D2
-847C	12D2
-847E	FFFF
-8480	0008
-8482	2400
-8484	034C
-8486	0010
-8488	0009
-848A	0800
-848C	0800
-848E	0000
-8490	0000
-8492	FFFE
-8494	2400
-8496	FFFD
-8498	22C2
-849A	0000
-849C	22C4
-849E	0000
-84A0	2354
-84A2	0001
-84A4	703C
-84A6	0001
-84A8	703E
-84AA	0000
-84AC	7048
-84AE	0400
-84B0	704A
-84B2	0400
-84B4	705A
-84B6	0400
-84B8	705C
-84BA	0400
-84BC	727E
-84BE	0000
-84C0	7280
-84C2	0000
-84C4	7282
-84C6	0000
-84C8	7806
-84CA	0101
-84CC	7808
-84CE	1C3F
-84D0	7A12
-84D2	0017
-84D4	7A72
-84D6	0021
-84D8	7A8A
-84DA	0021
-84DC	7BDA
-84DE	004C
-84E0	7EE6
-84E2	0001
-84E4	7EF2
-84E6	0001
-84E8	7EFE
-84EA	01BA
-84EC	7F0A
-84EE	01AA
-84F0	B20C
-84F2	2E2E
-84F4	B21A
-84F6	0604
-84F8	B21E
-84FA	4000
-84FC	B222
-84FE	60C0
-8500	B266
-8502	05C0
-8504	B268
-8506	E380
-8508	B270
-850A	8887
-850C	BEDE
-850E	3E94
-8510	BEE4
-8512	000C
-8514	BEE6
-8516	000C
-8518	D20C
-851A	0809
-851C	D27A
-851E	0005
-8520	D4B0
-8522	0234
-8524	D4BC
-8526	0037
-8528	D4D0
-852A	000A
-852C	D682
-852E	05C0
-8530	D684
-8532	E380
-8534	D896
-8536	0020
-8538	D8A2
-853A	0101
-853C	DADA
-853E	0200
-8540	DADE
-8542	01DF
-8544	DB0C
-8546	8000
-8548	DB3C
-854A	D212
-854C	DB3E
-854E	D212
-8550	DB6E
-8552	01DF
-8554	DB9C
-8556	8000
-8558	DBCC
-855A	D212
-855C	DBCE
-855E	D212
-8560	DD70
-8562	7E03
-8564	DE38
-8566	2E2E
-8568	F3F6
-856A	10D6
-856C	FFFE
-856E	2401
-8570	FFFD
-8572	2A44
-8574	0952
-8576	2A56
-8578	0001
-857A	4292
-857C	0001
-857E	4398
-8580	000C
-8582	FFFE
-8584	2402
-8586	FFFD
-8588	84C4
-858A	0000
-858C	A570
-858E	FDA2
-8590	A584
-8592	0A00
-8594	A586
-8596	0A00
-8598	FFFE
-859A	2400
-859C	FFFD
-859E	0086
-85A0	0A00
-85A2	020A
-85A4	0001
-85A6	021E
-85A8	0003
-85AA	0228
-85AC	0002
-85AE	0260
-85B0	0300
-85B2	0262
-85B4	0001
-85B6	0382
-85B8	0002
-85BA	0386
-85BC	0002
-85BE	0722
-85C0	0004
-85C2	0808
-85C4	0000
-85C6	0900
-85C8	2222
-85CA	0342
-85CC	1770
-85CE	0000
-85D0	FFFF
-85D2	0008
-85D4	2400
-85D6	7274
-85D8	0000
-85DA	0000
-85DC	0000
-85DE	0000
-85E0	FFFF
-85E2	0008
-85E4	2400
-85E6	7314
-85E8	0000
-85EA	0000
-85EC	0000
-85EE	0000
-85F0	FFFF
-85F2	0010
-85F4	2402
-85F6	A548
-85F8	0200
-85FA	4000
-85FC	8000
-85FE	A000
-8600	4001
-8602	8002
-8604	0005
-8606	000A
-8608	FFFF
-860A	0010
-860C	2402
-860E	A55C
-8610	0E00
-8612	2000
-8614	2800
-8616	1400
-8618	2200
-861A	2800
-861C	2C00
-861E	2E00
-8620	FFFF
-8622	000A
-8624	2402
-8626	A596
-8628	2C00
-862A	2C00
-862C	2E00
-862E	16FC
-8630	0000
-8632	FFFF
-8634	0008
-8636	2400
-8638	034C
-863A	0010
-863C	0009
-863E	0800
-8640	0800
-8642	0000
-8644	0000
-8646	FFFE
-8648	2400
-864A	FFFD
-864C	22C2
-864E	0006
-8650	22C4
-8652	1FFF
-8654	22EC
-8656	001F
-8658	2306
-865A	3FFF
-865C	2314
-865E	00FF
-8660	2354
-8662	0003
-8664	23F0
-8666	0100
-8668	68DE
-866A	0000
-866C	703C
-866E	0101
-8670	703E
-8672	0001
-8674	7046
-8676	027F
-8678	7048
-867A	013F
-867C	704A
-867E	0A00
-8680	7058
-8682	0280
-8684	705A
-8686	0140
-8688	705C
-868A	0A01
-868C	7806
-868E	0100
-8690	7808
-8692	0824
-8694	78C0
-8696	0101
-8698	795A
-869A	0020
-869C	7970
-869E	0020
-86A0	7994
-86A2	2020
-86A4	7996
-86A6	0101
-86A8	799A
-86AA	0000
-86AC	7BDA
-86AE	003C
-86B0	7EE6
-86B2	002C
-86B4	7EF2
-86B6	002C
-86B8	7EFE
-86BA	0064
-86BC	7F0A
-86BE	0058
-86C0	7F0E
-86C2	0058
-86C4	82A2
-86C6	0014
-86C8	82BA
-86CA	0033
-86CC	8CCE
-86CE	0096
-86D0	8CD0
-86D2	0096
-86D4	8CD2
-86D6	00BE
-86D8	8CD6
-86DA	0096
-86DC	8D0E
-86DE	0000
-86E0	9032
-86E2	0000
-86E4	903E
-86E6	0000
-86E8	B176
-86EA	0206
-86EC	B178
-86EE	0000
-86F0	B20C
-86F2	002E
-86F4	B21A
-86F6	0204
-86F8	B23C
-86FA	6060
-86FC	B242
-86FE	6060
-8700	B266
-8702	04C0
-8704	B268
-8706	F380
-8708	B270
-870A	0887
-870C	B322
-870E	0101
-8710	B324
-8712	0001
-8714	B330
-8716	2828
-8718	B34A
-871A	2828
-871C	B360
-871E	2828
-8720	B378
-8722	0001
-8724	BF16
-8726	AA0B
-8728	BF30
-872A	0000
-872C	BF78
-872E	3353
-8730	C4D8
-8732	0020
-8734	C4E0
-8736	0001
-8738	C4E2
-873A	0000
-873C	C4F6
-873E	0000
-8740	C53C
-8742	0005
-8744	C53E
-8746	0000
-8748	C544
-874A	0500
-874C	C554
-874E	1000
-8750	C556
-8752	0000
-8754	D1F6
-8756	003A
-8758	D20C
-875A	1009
-875C	D27A
-875E	0007
-8760	D314
-8762	0220
-8764	D326
-8766	1001
-8768	D3EC
-876A	1CB0
-876C	D3F0
-876E	1CB0
-8770	D410
-8772	0248
-8774	D412
-8776	04D2
-8778	D426
-877A	04D2
-877C	D428
-877E	0AEA
-8780	D43C
-8782	4001
-8784	D43E
-8786	4001
-8788	D49C
-878A	0021
-878C	D4A8
-878E	0004
-8790	D4AC
-8792	0001
-8794	D4B0
-8796	0179
-8798	D4B4
-879A	0001
-879C	D4B8
-879E	0014
-87A0	D4BC
-87A2	0066
-87A4	D4C0
-87A6	0014
-87A8	D4C4
-87AA	0000
-87AC	D4C8
-87AE	0001
-87B0	D4CC
-87B2	0000
-87B4	D4D0
-87B6	0009
-87B8	D4D2
-87BA	0000
-87BC	D4D6
-87BE	001A
-87C0	D4DA
-87C2	0000
-87C4	D4DE
-87C6	0001
-87C8	D4E2
-87CA	0000
-87CC	D4E6
-87CE	0001
-87D0	D4EA
-87D2	0001
-87D4	D4EC
-87D6	0000
-87D8	D4EE
-87DA	0000
-87DC	D4F8
-87DE	0000
-87E0	D4FA
-87E2	0000
-87E4	D554
-87E6	00C4
-87E8	D556
-87EA	00C4
-87EC	D560
-87EE	0352
-87F0	D562
-87F2	0352
-87F4	D5BC
-87F6	0000
-87F8	D5BE
-87FA	0000
-87FC	D5C8
-87FE	0000
-8800	D5CA
-8802	0000
-8804	D624
-8806	0000
-8808	D62E
-880A	0000
-880C	D638
-880E	0000
-8810	D682
-8812	04C0
-8814	D684
-8816	F380
-8818	D6D4
-881A	0000
-881C	D704
-881E	7802
-8820	D718
-8822	0200
-8824	D856
-8826	0705
-8828	D896
-882A	0000
-882C	D8A2
-882E	0001
-8830	DC8C
-8832	0B3F
-8834	DC94
-8836	0301
-8838	DD70
-883A	0000
-883C	DE38
-883E	0000
-8840	E980
-8842	049E
-8844	EF80
-8846	0000
-8848	F014
-884A	0007
-884C	F09A
-884E	FF00
-8850	F0AA
-8852	FFFF
-8854	F0AC
-8856	FFFF
-8858	F288
-885A	0000
-885C	F2E0
-885E	0000
-8860	F2EA
-8862	0040
-8864	F370
-8866	0302
-8868	F372
-886A	0000
-886C	F3E4
-886E	0103
-8870	F3F4
-8872	00C8
-8874	F3F6
-8876	10D2
-8878	FFFE
-887A	2401
-887C	FFFD
-887E	195E
-8880	0001
-8882	1966
-8884	0000
-8886	1DF2
-8888	0000
-888A	1DF6
-888C	0000
-888E	1DFA
-8890	0000
-8892	1DFE
-8894	0000
-8896	1E12
-8898	0000
-889A	1E16
-889C	0000
-889E	1E1A
-88A0	0000
-88A2	1E1E
-88A4	0000
-88A6	1E32
-88A8	0000
-88AA	1E36
-88AC	0000
-88AE	1E3A
-88B0	0000
-88B2	1E3E
-88B4	0000
-88B6	1E52
-88B8	0000
-88BA	1E56
-88BC	0000
-88BE	1E5A
-88C0	0000
-88C2	1E5E
-88C4	0000
-88C6	2540
-88C8	0000
-88CA	2920
-88CC	0001
-88CE	29A8
-88D0	0001
-88D2	29BA
-88D4	0020
-88D6	2A30
-88D8	FF01
-88DA	2A42
-88DC	0001
-88DE	2A44
-88E0	01D3
-88E2	2A46
-88E4	0000
-88E6	2A54
-88E8	0000
-88EA	2A56
-88EC	0004
-88EE	2BB2
-88F0	0010
-88F2	2D32
-88F4	1000
-88F6	3132
-88F8	0002
-88FA	31D0
-88FC	0000
-88FE	31F8
-8900	0000
-8902	31FA
-8904	0000
-8906	3C42
-8908	0000
-890A	3C46
-890C	05EB
-890E	3C52
-8910	0640
-8912	4270
-8914	0000
-8916	427C
-8918	0020
-891A	4280
-891C	0010
-891E	4290
-8920	0001
-8922	4292
-8924	0000
-8926	4362
-8928	0001
-892A	4364
-892C	0000
-892E	4366
-8930	0000
-8932	4370
-8934	0000
-8936	4396
-8938	000C
-893A	4398
-893C	000E
-893E	43AA
-8940	0000
-8942	43AC
-8944	0000
-8946	43B4
-8948	0000
-894A	43B6
-894C	0000
-894E	43C6
-8950	0A01
-8952	44C6
-8954	0000
-8956	5A70
-8958	0000
-895A	FFFE
-895C	2402
-895E	FFFD
-8960	849E
-8962	0000
-8964	84A0
-8966	0000
-8968	84A2
-896A	0500
-896C	84C4
-896E	0001
-8970	A570
-8972	0000
-8974	FFFE
-8976	2400
-8978	FFFD
-897A	0086
-897C	1400
-897E	0112
-8980	0A0A
-8982	0114
-8984	0103
-8986	0118
-8988	0401
-898A	011A
-898C	0100
-898E	011C
-8990	0001
-8992	0136
-8994	1800
-8996	013E
-8998	0000
-899A	020A
-899C	0000
-899E	021E
-89A0	0000
-89A2	0228
-89A4	0001
-89A6	0270
-89A8	2B2B
-89AA	0272
-89AC	102B
-89AE	0274
-89B0	2B30
-89B2	0304
-89B4	0003
-89B6	0306
-89B8	00E6
-89BA	031A
-89BC	0003
-89BE	031C
-89C0	0028
-89C2	031E
-89C4	0002
-89C6	0400
-89C8	1010
-89CA	0408
-89CC	0100
-89CE	040A
-89D0	0100
-89D2	040C
-89D4	0000
-89D6	0702
-89D8	0000
-89DA	0704
-89DC	0000
-89DE	0720
-89E0	0001
-89E2	0722
-89E4	0008
-89E6	0724
-89E8	0000
-89EA	0808
-89EC	0102
-89EE	0900
-89F0	4433
-89F2	0936
-89F4	0000
-89F6	0C40
-89F8	0000
-89FA	0342
-89FC	12B0
-89FE	0000
-8A00	FFFF
-8A02	0008
-8A04	2400
-8A06	71D4
-8A08	3F00
-8A0A	3D00
-8A0C	84F3
-8A0E	0040
-8A10	FFFF
-8A12	0010
-8A14	2400
-8A16	7274
-8A18	0C00
-8A1A	0B00
-8A1C	36D2
-8A1E	0040
-8A20	0000
-8A22	00D0
-8A24	12D2
-8A26	0040
-8A28	FFFF
-8A2A	0008
-8A2C	2400
-8A2E	7314
-8A30	2E00
-8A32	3000
-8A34	9EFD
-8A36	0040
-8A38	FFFF
-8A3A	0008
-8A3C	2400
-8A3E	7A0E
-8A40	0F00
-8A42	0F00
-8A44	0F00
-8A46	0F00
-8A48	FFFF
-8A4A	0008
-8A4C	2400
-8A4E	7A6E
-8A50	1900
-8A52	1900
-8A54	1900
-8A56	1900
-8A58	FFFF
-8A5A	0008
-8A5C	2400
-8A5E	7A86
-8A60	1900
-8A62	1900
-8A64	1900
-8A66	1900
-8A68	FFFF
-8A6A	0008
-8A6C	2400
-8A6E	8C9E
-8A70	3500
-8A72	3500
-8A74	5000
-8A76	3500
-8A78	FFFF
-8A7A	000A
-8A7C	2400
-8A7E	B21E
-8A80	0000
-8A82	0103
-8A84	C000
-8A86	0103
-8A88	0000
-8A8A	FFFF
-8A8C	000C
-8A8E	2400
-8A90	BEDC
-8A92	C526
-8A94	907E
-8A96	C00F
-8A98	0008
-8A9A	2C00
-8A9C	8000
-8A9E	FFFF
-8AA0	000E
-8AA2	2400
-8AA4	DADA
-8AA6	0000
-8AA8	0000
-8AAA	0000
-8AAC	0000
-8AAE	0000
-8AB0	0000
-8AB2	0000
-8AB4	FFFF
-8AB6	000C
-8AB8	2400
-8ABA	DB0C
-8ABC	0000
-8ABE	0000
-8AC0	0000
-8AC2	0000
-8AC4	0000
-8AC6	0000
-8AC8	FFFF
-8ACA	000C
-8ACC	2400
-8ACE	DB3C
-8AD0	0000
-8AD2	0000
-8AD4	0000
-8AD6	0000
-8AD8	0000
-8ADA	0000
-8ADC	FFFF
-8ADE	000C
-8AE0	2400
-8AE2	DB6C
-8AE4	0000
-8AE6	0000
-8AE8	0000
-8AEA	0000
-8AEC	0000
-8AEE	0000
-8AF0	FFFF
-8AF2	000C
-8AF4	2400
-8AF6	DB9C
-8AF8	0000
-8AFA	0000
-8AFC	0000
-8AFE	0000
-8B00	0000
-8B02	0000
-8B04	FFFF
-8B06	000C
-8B08	2400
-8B0A	DBCC
-8B0C	0000
-8B0E	0000
-8B10	0000
-8B12	0000
-8B14	0000
-8B16	0000
-8B18	FFFF
-8B1A	0012
-8B1C	2401
-8B1E	1C24
-8B20	0002
-8B22	8001
-8B24	8004
-8B26	2010
-8B28	2010
-8B2A	0005
-8B2C	00A0
-8B2E	2810
-8B30	2810
-8B32	FFFF
-8B34	0020
-8B36	2401
-8B38	1C4E
-8B3A	8001
-8B3C	8004
-8B3E	0010
-8B40	0010
-8B42	0005
-8B44	00A0
-8B46	2810
-8B48	2810
-8B4A	0000
-8B4C	0000
-8B4E	0000
-8B50	0000
-8B52	0000
-8B54	0000
-8B56	0000
-8B58	0000
-8B5A	FFFF
-8B5C	0020
-8B5E	2401
-8B60	1C76
-8B62	8001
-8B64	8004
-8B66	2010
-8B68	2010
-8B6A	0005
-8B6C	00A0
-8B6E	2810
-8B70	2810
-8B72	0000
-8B74	0000
-8B76	0000
-8B78	0000
-8B7A	0000
-8B7C	0000
-8B7E	0000
-8B80	0000
-8B82	FFFF
-8B84	0010
-8B86	2401
-8B88	1C9E
-8B8A	8001
-8B8C	8004
-8B8E	2010
-8B90	2010
-8B92	0005
-8B94	00A0
-8B96	2810
-8B98	2810
-8B9A	FFFF
-8B9C	0010
-8B9E	2401
-8BA0	1CC6
-8BA2	8001
-8BA4	8004
-8BA6	2010
-8BA8	2010
-8BAA	0005
-8BAC	00A0
-8BAE	2810
-8BB0	2810
-8BB2	FFFF
-8BB4	0020
-8BB6	2401
-8BB8	1CEE
-8BBA	8001
-8BBC	8004
-8BBE	0010
-8BC0	0010
-8BC2	0005
-8BC4	00A0
-8BC6	2810
-8BC8	2810
-8BCA	0000
-8BCC	0000
-8BCE	0000
-8BD0	0000
-8BD2	0000
-8BD4	0000
-8BD6	0000
-8BD8	0000
-8BDA	FFFF
-8BDC	0020
-8BDE	2401
-8BE0	1D16
-8BE2	8001
-8BE4	8004
-8BE6	2010
-8BE8	2010
-8BEA	0005
-8BEC	00A0
-8BEE	2810
-8BF0	2810
-8BF2	0000
-8BF4	0000
-8BF6	0000
-8BF8	0000
-8BFA	0000
-8BFC	0000
-8BFE	0000
-8C00	0000
-8C02	FFFF
-8C04	0010
-8C06	2401
-8C08	1D3E
-8C0A	8001
-8C0C	8004
-8C0E	2010
-8C10	2010
-8C12	0005
-8C14	00A0
-8C16	2810
-8C18	2810
-8C1A	FFFF
-8C1C	0010
-8C1E	2402
-8C20	A548
-8C22	0000
-8C24	0000
-8C26	0000
-8C28	0000
-8C2A	0000
-8C2C	0000
-8C2E	0000
-8C30	0000
-8C32	FFFF
-8C34	0010
-8C36	2402
-8C38	A55C
-8C3A	0000
-8C3C	0000
-8C3E	0000
-8C40	0000
-8C42	0000
-8C44	0000
-8C46	0000
-8C48	0000
-8C4A	FFFF
-8C4C	002C
-8C4E	2402
-8C50	A574
-8C52	0100
-8C54	4000
-8C56	8000
-8C58	A000
-8C5A	4001
-8C5C	8002
-8C5E	0005
-8C60	000A
-8C62	A00F
-8C64	4011
-8C66	0E00
-8C68	2000
-8C6A	2800
-8C6C	1400
-8C6E	2200
-8C70	2800
-8C72	2C00
-8C74	2E00
-8C76	3200
-8C78	3800
-8C7A	A2FD
-8C7C	FEFE
-8C7E	FFFF
-8C80	0008
-8C82	2400
-8C84	0260
-8C86	0001
-8C88	0000
-8C8A	0006
-8C8C	0700
-8C8E	FFFF
-8C90	0008
-8C92	2400
-8C94	030C
-8C96	0000
-8C98	0300
-8C9A	CF00
-8C9C	0000
-8C9E	FFFF
-8CA0	0010
-8CA2	2400
-8CA4	0344
-8CA6	0000
-8CA8	0003
-8CAA	1F20
-8CAC	1F15
-8CAE	0008
-8CB0	8004
-8CB2	0400
-8CB4	0400
-8CB6	FFFF
-8CB8	0008
-8CBA	2400
-8CBC	0380
-8CBE	0200
-8CC0	0600
-8CC2	0200
-8CC4	0600
-8CC6	FFFF
-8CC8	0008
-8CCA	2400
-8CCC	0728
-8CCE	0000
-8CD0	0000
-8CD2	0000
-8CD4	0000
-8CD6	FFFF
-8CD8	000C
-8CDA	2400
-8CDC	0B02
-8CDE	0102
-8CE0	0001
-8CE2	0101
-8CE4	0100
-8CE6	0101
-8CE8	0100
-8CEA	0000
-8CEC	0000
-8CEE	FFFE
-8CF0	2400
-8CF2	FFFD
-8CF4	22C2
-8CF6	0000
-8CF8	22C4
-8CFA	0000
-8CFC	2354
-8CFE	0001
-8D00	703C
-8D02	0001
-8D04	703E
-8D06	0000
-8D08	7048
-8D0A	0400
-8D0C	704A
-8D0E	0400
-8D10	705A
-8D12	0400
-8D14	705C
-8D16	0400
-8D18	727E
-8D1A	0000
-8D1C	7280
-8D1E	0000
-8D20	7282
-8D22	0000
-8D24	7806
-8D26	0101
-8D28	7808
-8D2A	1C3F
-8D2C	7A12
-8D2E	0017
-8D30	7A72
-8D32	0021
-8D34	7A8A
-8D36	0021
-8D38	7BDA
-8D3A	004C
-8D3C	7EE6
-8D3E	0001
-8D40	7EF2
-8D42	0001
-8D44	7EFE
-8D46	01BA
-8D48	7F0A
-8D4A	01AA
-8D4C	7F0E
-8D4E	0050
-8D50	8CD6
-8D52	00BE
-8D54	B20C
-8D56	2E2E
-8D58	B21A
-8D5A	0604
-8D5C	B21E
-8D5E	4000
-8D60	B222
-8D62	60C0
-8D64	B266
-8D66	05C0
-8D68	B268
-8D6A	E380
-8D6C	B270
-8D6E	8887
-8D70	BEDE
-8D72	7E94
-8D74	BEE2
-8D76	0C00
-8D78	BEE6
-8D7A	002C
-8D7C	D20C
-8D7E	0809
-8D80	D27A
-8D82	0005
-8D84	D4B0
-8D86	0234
-8D88	D4B4
-8D8A	007C
-8D8C	D4BC
-8D8E	0037
-8D90	D4C0
-8D92	0037
-8D94	D4CC
-8D96	0001
-8D98	D4D0
-8D9A	000A
-8D9C	D4DA
-8D9E	001A
-8DA0	D4E6
-8DA2	0000
-8DA4	D5BC
-8DA6	00C4
-8DA8	D5BE
-8DAA	00C4
-8DAC	D5C8
-8DAE	0352
-8DB0	D5CA
-8DB2	0352
-8DB4	D682
-8DB6	05C0
-8DB8	D684
-8DBA	E380
-8DBC	D896
-8DBE	0020
-8DC0	D8A2
-8DC2	0101
-8DC4	DADA
-8DC6	0200
-8DC8	DADE
-8DCA	01DF
-8DCC	DB0C
-8DCE	8000
-8DD0	DB3C
-8DD2	D212
-8DD4	DB3E
-8DD6	D212
-8DD8	DB6E
-8DDA	01DF
-8DDC	DB9C
-8DDE	8000
-8DE0	DBCC
-8DE2	D212
-8DE4	DBCE
-8DE6	D212
-8DE8	DD70
-8DEA	7E03
-8DEC	DE38
-8DEE	2E2E
-8DF0	F014
-8DF2	0006
-8DF4	FFFE
-8DF6	2401
-8DF8	FFFD
-8DFA	2A42
-8DFC	0000
-8DFE	2A44
-8E00	0000
-8E02	2A56
-8E04	0001
-8E06	4292
-8E08	0001
-8E0A	4398
-8E0C	000C
-8E0E	FFFE
-8E10	2402
-8E12	FFFD
-8E14	84C4
-8E16	0000
-8E18	A570
-8E1A	FDA2
-8E1C	A584
-8E1E	0A00
-8E20	A586
-8E22	0A00
-8E24	FFFE
-8E26	2400
-8E28	FFFD
-8E2A	0086
-8E2C	0A00
-8E2E	020A
-8E30	0001
-8E32	021E
-8E34	0003
-8E36	0228
-8E38	0002
-8E3A	0260
-8E3C	0300
-8E3E	0262
-8E40	0001
-8E42	0722
-8E44	0004
-8E46	0808
-8E48	0000
-8E4A	0342
-8E4C	1770
-8E4E	0000
-8E50	FFFF
-8E52	0008
-8E54	2400
-8E56	7274
-8E58	0000
-8E5A	0000
-8E5C	0000
-8E5E	0000
-8E60	FFFF
-8E62	0008
-8E64	2400
-8E66	7314
-8E68	0000
-8E6A	0000
-8E6C	0000
-8E6E	0000
-8E70	FFFF
-8E72	0010
-8E74	2402
-8E76	A548
-8E78	0200
-8E7A	4000
-8E7C	8000
-8E7E	A000
-8E80	4001
-8E82	8002
-8E84	0005
-8E86	000A
-8E88	FFFF
-8E8A	0010
-8E8C	2402
-8E8E	A55C
-8E90	0E00
-8E92	2000
-8E94	2800
-8E96	1400
-8E98	2200
-8E9A	2800
-8E9C	2C00
-8E9E	2E00
-8EA0	FFFF
-8EA2	000A
-8EA4	2402
-8EA6	A596
-8EA8	2C00
-8EAA	2C00
-8EAC	2E00
-8EAE	16FC
-8EB0	0000
-8EB2	0000
-8EB4	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/C1_short-init_tele_0509_0.9.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/C1_short-init_tele_0509_0.9.txt
deleted file mode 100755
index 0c8c951a..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/C1_short-init_tele_0509_0.9.txt
+++ /dev/null
@@ -1,4784 +0,0 @@
-FCFC	4000
-0000	0009
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0101
-FCFC	2001
-3C60	0000
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	006C
-84C8	34B6
-84CA	0224
-84CC	B8AA
-84CE	0224
-84D0	B8AA
-84D2	0224
-84D4	B8AA
-84D6	0224
-84D8	B8AA
-84DA	0224
-84DC	B8AA
-84DE	0224
-A548	0046
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00DB
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	013C
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	F0AB
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	B0A5
-570A	0224
-570C	0453
-570E	0020
-5710	20A7
-5712	0224
-5714	C850
-5716	0220
-5718	2CAC
-571A	0224
-571C	2C88
-571E	0220
-5720	58AD
-5722	0224
-5724	7C82
-5726	0120
-5728	18B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	A8B4
-5732	0224
-5734	1081
-5736	0320
-5738	CCB5
-573A	0224
-FCFC	2002
-A5B0	1753
-A5B2	02FC
-A5B4	E702
-A5B6	03F1
-A5B8	B7E7
-A5BA	0124
-A5BC	9387
-A5BE	0787
-A5C0	83A4
-A5C2	870D
-A5C4	03A4
-A5C6	C70D
-A5C8	0146
-A5CA	A685
-A5CC	2285
-A5CE	9740
-A5D0	01FC
-A5D2	E780
-A5D4	6047
-A5D6	97B0
-A5D8	FEFB
-A5DA	E780
-A5DC	E0E2
-A5DE	0546
-A5E0	A685
-A5E2	2285
-A5E4	9740
-A5E6	01FC
-A5E8	E780
-A5EA	0046
-A5EC	37A7
-A5EE	0224
-A5F0	9307
-A5F2	8754
-A5F4	03C6
-A5F6	C702
-A5F8	8546
-A5FA	630B
-A5FC	D600
-A5FE	83C6
-A600	0700
-A602	0947
-A604	638E
-A606	E606
-A608	1753
-A60A	02FC
-A60C	6700
-A60E	C3ED
-A610	03D5
-A612	4705
-A614	05C9
-A616	83D8
-A618	2705
-A61A	B7E6
-A61C	0124
-A61E	83D5
-A620	665F
-A622	1307
-A624	8754
-A626	8146
-A628	2548
-A62A	0356
-A62C	E702
-A62E	0907
-A630	63EA
-A632	C50C
-A634	8506
-A636	E39A
-A638	06FF
-A63A	3707
-A63C	0040
-A63E	3A95
-A640	2310
-A642	1501
-A644	03D5
-A646	6705
-A648	5DD9
-A64A	83D8
-A64C	2705
-A64E	37E7
-A650	0124
-A652	8355
-A654	675F
-A656	BE86
-A658	0147
-A65A	2548
-A65C	03D6
-A65E	E602
-A660	8906
-A662	63E8
-A664	C50A
-A666	0507
-A668	E31A
-A66A	07FF
-A66C	3707
-A66E	0040
-A670	3A95
-A672	2310
-A674	1501
-A676	83C6
-A678	0700
-A67A	0947
-A67C	E396
-A67E	E6F8
-A680	03D5
-A682	8702
-A684	1DC5
-A686	83D8
-A688	6702
-A68A	37F7
-A68C	0124
-A68E	8355
-A690	A781
-A692	BE86
-A694	0147
-A696	2548
-A698	03D6
-A69A	2600
-A69C	8906
-A69E	63ED
-A6A0	C504
-A6A2	0507
-A6A4	E31A
-A6A6	07FF
-A6A8	3707
-A6AA	0040
-A6AC	3A95
-A6AE	2310
-A6B0	1501
-A6B2	03D5
-A6B4	A702
-A6B6	29D9
-A6B8	83D8
-A6BA	6702
-A6BC	37F7
-A6BE	0124
-A6C0	8355
-A6C2	A781
-A6C4	BE86
-A6C6	0147
-A6C8	2548
-A6CA	03D6
-A6CC	2600
-A6CE	8906
-A6D0	63EE
-A6D2	C500
-A6D4	0507
-A6D6	E31A
-A6D8	07FF
-A6DA	B707
-A6DC	0040
-A6DE	3E95
-A6E0	2310
-A6E2	1501
-A6E4	1753
-A6E6	02FC
-A6E8	6700
-A6EA	03E0
-A6EC	2107
-A6EE	0607
-A6F0	BA97
-A6F2	83D8
-A6F4	4700
-A6F6	D5B7
-A6F8	2107
-A6FA	0607
-A6FC	3E97
-A6FE	8358
-A700	4700
-A702	5DB7
-A704	1387
-A706	0602
-A708	0607
-A70A	3E97
-A70C	8358
-A70E	0700
-A710	2DB7
-A712	1307
-A714	0702
-A716	0607
-A718	3E97
-A71A	8358
-A71C	0700
-A71E	B9B7
-A720	1753
-A722	02FC
-A724	E702
-A726	83D7
-A728	3284
-A72A	B7E7
-A72C	0124
-A72E	032B
-A730	4600
-A732	832A
-A734	4609
-A736	032A
-A738	C604
-A73A	0348
-A73C	8600
-A73E	9387
-A740	0787
-A742	0346
-A744	8609
-A746	0347
-A748	0405
-A74A	03AC
-A74C	070E
-A74E	83AB
-A750	470E
-A752	3318
-A754	0B01
-A756	3317
-A758	EA00
-A75A	3396
-A75C	CA00
-A75E	2322
-A760	0401
-A762	78C4
-A764	AA84
-A766	2E89
-A768	232A
-A76A	C408
-A76C	E285
-A76E	5E85
-A770	0146
-A772	B689
-A774	9740
-A776	01FC
-A778	E780
-A77A	002D
-A77C	CE86
-A77E	2286
-A780	CA85
-A782	2685
-A784	97B0
-A786	FDFB
-A788	E780
-A78A	00B8
-A78C	0546
-A78E	E285
-A790	5E85
-A792	9740
-A794	01FC
-A796	E780
-A798	202B
-A79A	2322
-A79C	6401
-A79E	232A
-A7A0	5409
-A7A2	2326
-A7A4	4405
-A7A6	1753
-A7A8	02FC
-A7AA	6700
-A7AC	A3D2
-A7AE	0100
-A7B0	1753
-A7B2	02FC
-A7B4	E702
-A7B6	03D1
-A7B8	2A84
-A7BA	EFE0
-A7BC	AFB2
-A7BE	A147
-A7C0	6306
-A7C2	F400
-A7C4	1753
-A7C6	02FC
-A7C8	6700
-A7CA	03D2
-A7CC	9770
-A7CE	FFFB
-A7D0	E780
-A7D2	C014
-A7D4	39C5
-A7D6	B737
-A7D8	0124
-A7DA	83C7
-A7DC	271A
-A7DE	FDD3
-A7E0	3784
-A7E2	0040
-A7E4	8355
-A7E6	E4F3
-A7E8	0D45
-A7EA	93E5
-A7EC	0524
-A7EE	97D0
-A7F0	FFFB
-A7F2	E780
-A7F4	6013
-A7F6	8355
-A7F8	24F7
-A7FA	B7A7
-A7FC	0124
-A7FE	9387
-A800	0753
-A802	03D7
-A804	47B6
-A806	C205
-A808	C181
-A80A	1377
-A80C	F7DB
-A80E	93F5
-A810	F5DB
-A812	4145
-A814	2392
-A816	E7B6
-A818	97D0
-A81A	FFFB
-A81C	E780
-A81E	C010
-A820	55B7
-A822	9770
-A824	FFFB
-A826	E780
-A828	600C
-A82A	55D5
-A82C	9780
-A82E	FFFB
-A830	E780
-A832	4086
-A834	19C9
-A836	B797
-A838	0124
-A83A	9387
-A83C	07D7
-A83E	03C7
-A840	8703
-A842	83C7
-A844	2706
-A846	6306
-A848	F706
-A84A	9780
-A84C	FFFB
-A84E	E780
-A850	6084
-A852	51D1
-A854	B797
-A856	0124
-A858	9387
-A85A	07D7
-A85C	03C7
-A85E	C701
-A860	83C7
-A862	2706
-A864	E319
-A866	F7F6
-A868	B727
-A86A	0224
-A86C	0564
-A86E	9387
-A870	076B
-A872	A297
-A874	03C7
-A876	F780
-A878	8547
-A87A	6317
-A87C	F700
-A87E	B737
-A880	0124
-A882	83C7
-A884	57A5
-A886	B1C3
-A888	B787
-A88A	0040
-A88C	83D5
-A88E	E7F3
-A890	0D45
-A892	93E5
-A894	0501
-A896	97D0
-A898	FFFB
-A89A	E780
-A89C	E008
-A89E	B7A7
-A8A0	0124
-A8A2	9387
-A8A4	0753
-A8A6	03D7
-A8A8	47B6
-A8AA	3D9B
-A8AC	2392
-A8AE	E7B6
-A8B0	1DB7
-A8B2	B727
-A8B4	0224
-A8B6	0564
-A8B8	9387
-A8BA	076B
-A8BC	A297
-A8BE	03C7
-A8C0	F780
-A8C2	9147
-A8C4	E30D
-A8C6	F7FA
-A8C8	C1B7
-A8CA	B787
-A8CC	0040
-A8CE	83D5
-A8D0	E7F3
-A8D2	0D45
-A8D4	93E5
-A8D6	0504
-A8D8	97D0
-A8DA	FFFB
-A8DC	E780
-A8DE	C004
-A8E0	B797
-A8E2	0124
-A8E4	9387
-A8E6	0753
-A8E8	A297
-A8EA	03D7
-A8EC	47B6
-A8EE	1377
-A8F0	F7FB
-A8F2	2392
-A8F4	E7B6
-A8F6	C5B5
-A8F8	3571
-A8FA	22CF
-A8FC	26CD
-A8FE	7324
-A900	2034
-A902	F324
-A904	1034
-A906	7360
-A908	0430
-A90A	06CB
-A90C	16C9
-A90E	1AC7
-A910	1EC5
-A912	2AC3
-A914	2EC1
-A916	B2DE
-A918	B6DC
-A91A	BADA
-A91C	BED8
-A91E	C2D6
-A920	C6D4
-A922	F2D2
-A924	F6D0
-A926	FACE
-A928	FECC
-A92A	82E2
-A92C	86E0
-A92E	0AFE
-A930	0EFC
-A932	12FA
-A934	16F8
-A936	1AF6
-A938	1EF4
-A93A	2AF2
-A93C	2EF0
-A93E	32EE
-A940	36EC
-A942	3AEA
-A944	3EE8
-A946	42E6
-A948	46E4
-A94A	72E2
-A94C	76E0
-A94E	272E
-A950	E1FF
-A952	272C
-A954	F1FF
-A956	9770
-A958	FFFB
-A95A	E780
-A95C	20FC
-A95E	19C5
-A960	9770
-A962	FFFB
-A964	E780
-A966	80F8
-A968	631C
-A96A	0512
-A96C	9305
-A96E	0024
-A970	4145
-A972	97D0
-A974	FFFB
-A976	E780
-A978	2002
-A97A	8145
-A97C	9377
-A97E	1500
-A980	85C7
-A982	37D7
-A984	0124
-A986	B7A7
-A988	0124
-A98A	1307
-A98C	07C4
-A98E	9387
-A990	0753
-A992	0356
-A994	4707
-A996	83D6
-A998	A7B6
-A99A	0506
-A99C	93E6
-A99E	1600
-A9A0	231A
-A9A2	C706
-A9A4	2395
-A9A6	D7B6
-A9A8	9377
-A9AA	2500
-A9AC	85C7
-A9AE	37D7
-A9B0	0124
-A9B2	B7A7
-A9B4	0124
-A9B6	1307
-A9B8	07C4
-A9BA	9387
-A9BC	0753
-A9BE	0356
-A9C0	C70C
-A9C2	83D6
-A9C4	A7B6
-A9C6	0506
-A9C8	93E6
-A9CA	2600
-A9CC	2316
-A9CE	C70C
-A9D0	2395
-A9D2	D7B6
-A9D4	9377
-A9D6	0520
-A9D8	1375
-A9DA	0504
-A9DC	C5C3
-A9DE	B7D7
-A9E0	0124
-A9E2	9387
-A9E4	07C4
-A9E6	03D7
-A9E8	6708
-A9EA	0507
-A9EC	2393
-A9EE	E708
-A9F0	D1C5
-A9F2	37A7
-A9F4	0124
-A9F6	1307
-A9F8	0753
-A9FA	8356
-A9FC	A7B6
-A9FE	93E6
-AA00	0620
-AA02	2315
-AA04	D7B6
-AA06	11C9
-AA08	03D6
-AA0A	A708
-AA0C	0506
-AA0E	2395
-AA10	C708
-AA12	93E6
-AA14	0604
-AA16	2315
-AA18	D7B6
-AA1A	DA40
-AA1C	CA42
-AA1E	3A43
-AA20	AA43
-AA22	1A45
-AA24	8A45
-AA26	7656
-AA28	E656
-AA2A	5657
-AA2C	C657
-AA2E	3658
-AA30	A658
-AA32	165E
-AA34	865E
-AA36	764F
-AA38	E64F
-AA3A	1660
-AA3C	8660
-AA3E	7271
-AA40	E271
-AA42	5272
-AA44	C272
-AA46	3273
-AA48	A273
-AA4A	1275
-AA4C	8275
-AA4E	7266
-AA50	E266
-AA52	5267
-AA54	C267
-AA56	3268
-AA58	A268
-AA5A	126E
-AA5C	826E
-AA5E	072F
-AA60	C1FF
-AA62	872F
-AA64	81FF
-AA66	7370
-AA68	0430
-AA6A	7390
-AA6C	1434
-AA6E	7310
-AA70	2434
-AA72	7A44
-AA74	EA44
-AA76	0D61
-AA78	7300
-AA7A	2030
-AA7C	59DD
-AA7E	B7D7
-AA80	0124
-AA82	9387
-AA84	07C4
-AA86	03D7
-AA88	A708
-AA8A	0507
-AA8C	2395
-AA8E	E708
-AA90	C9D5
-AA92	37A7
-AA94	0124
-AA96	1307
-AA98	0753
-AA9A	8356
-AA9C	A7B6
-AA9E	95BF
-AAA0	B7A7
-AAA2	0124
-AAA4	83D5
-AAA6	8709
-AAA8	4145
-AAAA	97D0
-AAAC	FFFB
-AAAE	E780
-AAB0	A0EE
-AAB2	8545
-AAB4	E1B5
-AAB6	0100
-AAB8	8280
-AABA	0100
-AABC	1753
-AABE	02FC
-AAC0	E702
-AAC2	43A0
-AAC4	37E4
-AAC6	0124
-AAC8	1304
-AACA	044C
-AACC	8344
-AACE	E40A
-AAD0	8547
-AAD2	2307
-AAD4	F40A
-AAD6	97A0
-AAD8	FDFB
-AADA	E780
-AADC	E0EB
-AADE	2307
-AAE0	940A
-AAE2	1753
-AAE4	02FC
-AAE6	6700
-AAE8	23A0
-AAEA	0100
-AAEC	B7A7
-AAEE	0224
-AAF0	83C7
-AAF2	075A
-AAF4	0547
-AAF6	6383
-AAF8	E700
-AAFA	8280
-AAFC	1753
-AAFE	02FC
-AB00	E702
-AB02	A39A
-AB04	3794
-AB06	0124
-AB08	1304
-AB0A	0453
-AB0C	0347
-AB0E	041B
-AB10	4111
-AB12	6307
-AB14	F700
-AB16	4101
-AB18	1753
-AB1A	02FC
-AB1C	6700
-AB1E	239C
-AB20	8947
-AB22	E31A
-AB24	F5FE
-AB26	8347
-AB28	3441
-AB2A	ADC3
-AB2C	83A9
-AB2E	0500
-AB30	2EC6
-AB32	97C0
-AB34	01FC
-AB36	E780
-AB38	E0C0
-AB3A	AA84
-AB3C	9780
-AB3E	01FC
-AB40	E780
-AB42	40D0
-AB44	B245
-AB46	2A89
-AB48	9C41
-AB4A	63F3
-AB4C	9700
-AB4E	A687
-AB50	8851
-AB52	9CC1
-AB54	2EC6
-AB56	4A95
-AB58	97B0
-AB5A	00FC
-AB5C	E780
-AB5E	C0CD
-AB60	B245
-AB62	AA84
-AB64	E8C9
-AB66	3385
-AB68	2901
-AB6A	97B0
-AB6C	00FC
-AB6E	E780
-AB70	A0CC
-AB72	8567
-AB74	3E94
-AB76	8327
-AB78	C483
-AB7A	2695
-AB7C	B245
-AB7E	63F3
-AB80	A700
-AB82	AA87
-AB84	2322
-AB86	F498
-AB88	E8C5
-AB8A	71B7
-AB8C	0145
-AB8E	2EC6
-AB90	97B0
-AB92	01FC
-AB94	E780
-AB96	403E
-AB98	B245
-AB9A	AA89
-AB9C	51BF
-AB9E	0100
-ABA0	1753
-ABA2	02FC
-ABA4	E702
-ABA6	0392
-ABA8	2A84
-ABAA	EFE0
-ABAC	7F85
-ABAE	01E8
-ABB0	B7D7
-ABB2	0124
-ABB4	03A7
-ABB6	87C1
-ABB8	9147
-ABBA	6306
-ABBC	F700
-ABBE	1753
-ABC0	02FC
-ABC2	6700
-ABC4	6392
-ABC6	B7D7
-ABC8	0124
-ABCA	83C7
-ABCC	07FA
-ABCE	E5DB
-ABD0	B747
-ABD2	0124
-ABD4	83C7
-ABD6	27C4
-ABD8	FDF3
-ABDA	97E0
-ABDC	00FC
-ABDE	E780
-ABE0	60A0
-ABE2	B787
-ABE4	0224
-ABE6	0547
-ABE8	A380
-ABEA	E74E
-ABEC	C9BF
-ABEE	0100
-ABF0	1753
-ABF2	02FC
-ABF4	E702
-ABF6	038D
-ABF8	3784
-ABFA	0224
-ABFC	1304
-ABFE	C449
-AC00	8347
-AC02	5404
-AC04	99E7
-AC06	EFE0
-AC08	3F8B
-AC0A	1753
-AC0C	02FC
-AC0E	6700
-AC10	A38D
-AC12	97E0
-AC14	00FC
-AC16	E780
-AC18	E0B7
-AC1A	A302
-AC1C	0404
-AC1E	EFE0
-AC20	BF89
-AC22	1753
-AC24	02FC
-AC26	6700
-AC28	238C
-AC2A	0100
-AC2C	1753
-AC2E	02FC
-AC30	E702
-AC32	4389
-AC34	B7E7
-AC36	0124
-AC38	9387
-AC3A	0787
-AC3C	03A9
-AC3E	870E
-AC40	83A4
-AC42	C70E
-AC44	0146
-AC46	CA85
-AC48	2A84
-AC4A	2685
-AC4C	9740
-AC4E	01FC
-AC50	E780
-AC52	80DF
-AC54	2285
-AC56	97A0
-AC58	FFFB
-AC5A	E780
-AC5C	2047
-AC5E	0546
-AC60	CA85
-AC62	2685
-AC64	9740
-AC66	01FC
-AC68	E780
-AC6A	00DE
-AC6C	8547
-AC6E	6309
-AC70	F400
-AC72	9147
-AC74	6306
-AC76	F400
-AC78	1753
-AC7A	02FC
-AC7C	6700
-AC7E	C386
-AC80	9770
-AC82	FFFB
-AC84	E780
-AC86	80C9
-AC88	65F9
-AC8A	9770
-AC8C	FFFB
-AC8E	E780
-AC90	E0C5
-AC92	7DD1
-AC94	9770
-AC96	FFFB
-AC98	E780
-AC9A	C03F
-AC9C	19C9
-AC9E	B797
-ACA0	0124
-ACA2	9387
-ACA4	07D7
-ACA6	03C7
-ACA8	8703
-ACAA	83C7
-ACAC	2706
-ACAE	6306
-ACB0	F706
-ACB2	9770
-ACB4	FFFB
-ACB6	E780
-ACB8	E03D
-ACBA	5DDD
-ACBC	B797
-ACBE	0124
-ACC0	9387
-ACC2	07D7
-ACC4	03C7
-ACC6	C701
-ACC8	83C7
-ACCA	2706
-ACCC	E316
-ACCE	F7FA
-ACD0	B7B7
-ACD2	0224
-ACD4	83A7
-ACD6	0773
-ACD8	B706
-ACDA	0040
-ACDC	1386
-ACDE	4606
-ACE0	8965
-ACE2	3E96
-ACE4	1387
-ACE6	061F
-ACE8	9385
-ACEA	F5F1
-ACEC	2310
-ACEE	B600
-ACF0	3E97
-ACF2	7D56
-ACF4	2310
-ACF6	C700
-ACF8	37D6
-ACFA	0124
-ACFC	1306
-ACFE	06E7
-AD00	0357
-AD02	C605
-AD04	0356
-AD06	6606
-AD08	9386
-AD0A	861D
-AD0C	3297
-AD0E	4207
-AD10	B697
-AD12	4183
-AD14	2390
-AD16	E700
-AD18	85B7
-AD1A	B7B7
-AD1C	0224
-AD1E	83A7
-AD20	0773
-AD22	B706
-AD24	0040
-AD26	1386
-AD28	4606
-AD2A	8965
-AD2C	3E96
-AD2E	1387
-AD30	061F
-AD32	9385
-AD34	F5F1
-AD36	2310
-AD38	B600
-AD3A	3E97
-AD3C	7D56
-AD3E	2310
-AD40	C700
-AD42	37D6
-AD44	0124
-AD46	1306
-AD48	06E7
-AD4A	0357
-AD4C	0606
-AD4E	9386
-AD50	A61D
-AD52	0356
-AD54	6606
-AD56	5DBF
-AD58	1743
-AD5A	02FC
-AD5C	E702
-AD5E	8376
-AD60	B7D7
-AD62	0024
-AD64	83C7
-AD66	476D
-AD68	8544
-AD6A	6380
-AD6C	9714
-AD6E	B7E7
-AD70	0024
-AD72	03C4
-AD74	C784
-AD76	B7A7
-AD78	0124
-AD7A	83C7
-AD7C	6792
-AD7E	3334
-AD80	8000
-AD82	3304
-AD84	8040
-AD86	7998
-AD88	1304
-AD8A	6402
-AD8C	EDE7
-AD8E	B767
-AD90	0024
-AD92	9387
-AD94	0733
-AD96	03D7
-AD98	E75B
-AD9A	19C7
-AD9C	1347
-AD9E	F7FF
-ADA0	618F
-ADA2	1314
-ADA4	0701
-ADA6	4180
-ADA8	83D7
-ADAA	075C
-ADAC	0D45
-ADAE	5D8C
-ADB0	4204
-ADB2	4180
-ADB4	A285
-ADB6	97D0
-ADB8	FFFB
-ADBA	E780
-ADBC	20C5
-ADBE	9315
-ADC0	0501
-ADC2	C181
-ADC4	AA84
-ADC6	6309
-ADC8	B400
-ADCA	0565
-ADCC	A18D
-ADCE	2D05
-ADD0	97A0
-ADD2	FFFB
-ADD4	E780
-ADD6	0050
-ADD8	1395
-ADDA	0401
-ADDC	93F7
-ADDE	1400
-ADE0	4181
-ADE2	91CB
-ADE4	B7D7
-ADE6	0124
-ADE8	9387
-ADEA	07C4
-ADEC	03D7
-ADEE	4707
-ADF0	0507
-ADF2	239A
-ADF4	E706
-ADF6	9377
-ADF8	2500
-ADFA	91CB
-ADFC	B7D7
-ADFE	0124
-AE00	9387
-AE02	07C4
-AE04	03D7
-AE06	C70C
-AE08	0507
-AE0A	2396
-AE0C	E70C
-AE0E	9377
-AE10	4500
-AE12	91CB
-AE14	B7D7
-AE16	0124
-AE18	9387
-AE1A	07C4
-AE1C	03D7
-AE1E	E70C
-AE20	0507
-AE22	2397
-AE24	E70C
-AE26	9377
-AE28	0502
-AE2A	91CB
-AE2C	B7D7
-AE2E	0124
-AE30	9387
-AE32	07C4
-AE34	03D7
-AE36	070F
-AE38	0507
-AE3A	2398
-AE3C	E70E
-AE3E	9377
-AE40	0520
-AE42	91CB
-AE44	B7D7
-AE46	0124
-AE48	9387
-AE4A	07C4
-AE4C	03D7
-AE4E	6708
-AE50	0507
-AE52	2393
-AE54	E708
-AE56	1375
-AE58	0504
-AE5A	11C9
-AE5C	B7D7
-AE5E	0124
-AE60	9387
-AE62	07C4
-AE64	03D7
-AE66	A708
-AE68	0507
-AE6A	2395
-AE6C	E708
-AE6E	1743
-AE70	02FC
-AE72	6700
-AE74	6367
-AE76	B7D7
-AE78	0124
-AE7A	83D7
-AE7C	A7E7
-AE7E	81DB
-AE80	9760
-AE82	FEFB
-AE84	E780
-AE86	0072
-AE88	6311
-AE8A	9506
-AE8C	B797
-AE8E	0124
-AE90	9387
-AE92	07D7
-AE94	03C7
-AE96	C701
-AE98	83C7
-AE9A	2706
-AE9C	6307
-AE9E	F704
-AEA0	1364
-AEA2	0424
-AEA4	4204
-AEA6	4180
-AEA8	11A0
-AEAA	0144
-AEAC	B767
-AEAE	0024
-AEB0	9387
-AEB2	0733
-AEB4	03C7
-AEB6	273B
-AEB8	E30F
-AEBA	07EC
-AEBC	37A7
-AEBE	0124
-AEC0	0347
-AEC2	6792
-AEC4	E309
-AEC6	07EC
-AEC8	37D7
-AECA	0124
-AECC	0357
-AECE	A7E7
-AED0	E303
-AED2	07EC
-AED4	3797
-AED6	0124
-AED8	0347
-AEDA	1700
-AEDC	E30D
-AEDE	07EA
-AEE0	1374
-AEE2	F4DF
-AEE4	4204
-AEE6	4180
-AEE8	7DB5
-AEEA	9760
-AEEC	FEFB
-AEEE	E780
-AEF0	606B
-AEF2	8547
-AEF4	E31C
-AEF6	F5FA
-AEF8	B797
-AEFA	0124
-AEFC	9387
-AEFE	07D7
-AF00	03C7
-AF02	C701
-AF04	83C7
-AF06	2706
-AF08	E312
-AF0A	F7FA
-AF0C	1364
-AF0E	0420
-AF10	4204
-AF12	4180
-AF14	61BF
-AF16	0100
-AF18	7171
-AF1A	22D7
-AF1C	26D5
-AF1E	7324
-AF20	2034
-AF22	F324
-AF24	1034
-AF26	7360
-AF28	0430
-AF2A	2EC5
-AF2C	A565
-AF2E	BEDC
-AF30	06D3
-AF32	16D1
-AF34	1ACF
-AF36	1ECD
-AF38	22CB
-AF3A	2AC7
-AF3C	32C3
-AF3E	36C1
-AF40	BADE
-AF42	C2DA
-AF44	C6D8
-AF46	F2D0
-AF48	F6CE
-AF4A	FACC
-AF4C	FECA
-AF4E	82E2
-AF50	86E0
-AF52	0AFE
-AF54	0EFC
-AF56	12FA
-AF58	16F8
-AF5A	1AF6
-AF5C	1EF4
-AF5E	2AF2
-AF60	2EF0
-AF62	32EE
-AF64	26C9
-AF66	CAD6
-AF68	CED4
-AF6A	D2D2
-AF6C	9385
-AF6E	0540
-AF70	0545
-AF72	36EC
-AF74	3AEA
-AF76	3EE8
-AF78	42E6
-AF7A	46E4
-AF7C	72E2
-AF7E	76E0
-AF80	272E
-AF82	E1FF
-AF84	272C
-AF86	F1FF
-AF88	97D0
-AF8A	FFFB
-AF8C	E780
-AF8E	C0A0
-AF90	A167
-AF92	E98F
-AF94	2A84
-AF96	6394
-AF98	0718
-AF9A	B764
-AF9C	0124
-AF9E	9384
-AFA0	0440
-AFA2	8567
-AFA4	E18F
-AFA6	CDCF
-AFA8	37D7
-AFAA	0124
-AFAC	3789
-AFAE	0224
-AFB0	1307
-AFB2	07C4
-AFB4	1309
-AFB6	C949
-AFB8	8356
-AFBA	670E
-AFBC	8327
-AFBE	0905
-AFC0	8506
-AFC2	8507
-AFC4	2328
-AFC6	F904
-AFC8	2313
-AFCA	D70E
-AFCC	858B
-AFCE	639F
-AFD0	071A
-AFD2	8547
-AFD4	A30A
-AFD6	F904
-AFD8	9770
-AFDA	FFFB
-AFDC	E780
-AFDE	8008
-AFE0	19C5
-AFE2	0357
-AFE4	4905
-AFE6	9307
-AFE8	1010
-AFEA	6306
-AFEC	F724
-AFEE	DC50
-AFF0	0945
-AFF2	8297
-AFF4	9770
-AFF6	FFFB
-AFF8	E780
-AFFA	408F
-AFFC	11C5
-AFFE	9770
-B000	FFFB
-B002	E780
-B004	A091
-B006	55C5
-B008	9760
-B00A	00FC
-B00C	E780
-B00E	C063
-B010	B787
-B012	0024
-B014	83C7
-B016	078C
-B018	AA89
-B01A	6392
-B01C	071C
-B01E	B7D7
-B020	0124
-B022	9387
-B024	07E7
-B026	BC5F
-B028	639A
-B02A	0716
-B02C	3799
-B02E	0124
-B030	1309
-B032	0953
-B034	B727
-B036	0024
-B038	83C7
-B03A	7752
-B03C	6396
-B03E	071E
-B040	0345
-B042	C918
-B044	631D
-B046	051C
-B048	DC50
-B04A	0D45
-B04C	8297
-B04E	4E85
-B050	9760
-B052	00FC
-B054	E780
-B056	8063
-B058	8567
-B05A	3E99
-B05C	2320
-B05E	A9A2
-B060	1374
-B062	0440
-B064	21C4
-B066	B7D7
-B068	0124
-B06A	9387
-B06C	07C4
-B06E	37A7
-B070	0124
-B072	83D6
-B074	670E
-B076	1307
-B078	0753
-B07A	0347
-B07C	179B
-B07E	8506
-B080	3784
-B082	0224
-B084	1304
-B086	C449
-B088	1337
-B08A	1700
-B08C	2393
-B08E	D70E
-B090	230A
-B092	E404
-B094	9770
-B096	FFFB
-B098	E780
-B09A	C0FC
-B09C	6306
-B09E	0510
-B0A0	0357
-B0A2	4405
-B0A4	9307
-B0A6	1010
-B0A8	6300
-B0AA	F710
-B0AC	DC50
-B0AE	1D45
-B0B0	8297
-B0B2	9A50
-B0B4	8A52
-B0B6	7A43
-B0B8	EA43
-B0BA	5A44
-B0BC	CA44
-B0BE	3A45
-B0C0	AA45
-B0C2	1A46
-B0C4	8A46
-B0C6	7657
-B0C8	E657
-B0CA	5658
-B0CC	C658
-B0CE	3659
-B0D0	A659
-B0D2	165A
-B0D4	065E
-B0D6	F64E
-B0D8	664F
-B0DA	D64F
-B0DC	1660
-B0DE	8660
-B0E0	7271
-B0E2	E271
-B0E4	5272
-B0E6	C272
-B0E8	3273
-B0EA	A273
-B0EC	1275
-B0EE	8275
-B0F0	7266
-B0F2	E266
-B0F4	5267
-B0F6	C267
-B0F8	3268
-B0FA	A268
-B0FC	126E
-B0FE	826E
-B100	072F
-B102	C1FF
-B104	872F
-B106	81FF
-B108	7370
-B10A	0430
-B10C	7390
-B10E	1434
-B110	7310
-B112	2434
-B114	3A54
-B116	AA54
-B118	4D61
-B11A	7300
-B11C	2030
-B11E	37D9
-B120	0124
-B122	1309
-B124	09C4
-B126	8357
-B128	490E
-B12A	B764
-B12C	0124
-B12E	9384
-B130	0440
-B132	D850
-B134	8507
-B136	0145
-B138	2312
-B13A	F90E
-B13C	0297
-B13E	9760
-B140	FFFB
-B142	E780
-B144	A07A
-B146	25E5
-B148	B729
-B14A	0024
-B14C	3799
-B14E	0124
-B150	9389
-B152	0933
-B154	1309
-B156	0953
-B158	056A
-B15A	83C7
-B15C	791F
-B15E	4A9A
-B160	2320
-B162	0AA2
-B164	B9EF
-B166	0345
-B168	C918
-B16A	2DE5
-B16C	83C7
-B16E	0920
-B170	89C7
-B172	0327
-B174	4AB3
-B176	630A
-B178	F700
-B17A	97E0
-B17C	00FC
-B17E	E780
-B180	60DC
-B182	DC50
-B184	0545
-B186	8297
-B188	29BD
-B18A	01A0
-B18C	8547
-B18E	230A
-B190	0904
-B192	A30A
-B194	0904
-B196	2328
-B198	F904
-B19A	3DBD
-B19C	7D55
-B19E	9770
-B1A0	01FC
-B1A2	E780
-B1A4	200E
-B1A6	59B5
-B1A8	EFE0
-B1AA	DFE2
-B1AC	01B7
-B1AE	9760
-B1B0	FFFB
-B1B2	E780
-B1B4	A076
-B1B6	49F9
-B1B8	8357
-B1BA	490E
-B1BC	858B
-B1BE	C9F7
-B1C0	CDBD
-B1C2	9770
-B1C4	01FC
-B1C6	E780
-B1C8	A00C
-B1CA	2311
-B1CC	A94E
-B1CE	0345
-B1D0	C918
-B1D2	49DD
-B1D4	97C0
-B1D6	FFFB
-B1D8	E780
-B1DA	C0BD
-B1DC	41BF
-B1DE	9770
-B1E0	01FC
-B1E2	E780
-B1E4	E00A
-B1E6	3799
-B1E8	0124
-B1EA	1309
-B1EC	0953
-B1EE	8D67
-B1F0	CA97
-B1F2	03C7
-B1F4	D76F
-B1F6	232E
-B1F8	A94E
-B1FA	8547
-B1FC	6306
-B1FE	F700
-B200	8327
-B202	094F
-B204	E377
-B206	F5EA
-B208	9760
-B20A	00FC
-B20C	E780
-B20E	0006
-B210	9770
-B212	01FC
-B214	E780
-B216	C007
-B218	2320
-B21A	A950
-B21C	21BD
-B21E	97C0
-B220	FFFB
-B222	E780
-B224	20BC
-B226	0DB5
-B228	9770
-B22A	01FC
-B22C	E780
-B22E	4006
-B230	2312
-B232	A94E
-B234	31B5
-B236	EFE0
-B238	FFD9
-B23A	55BB
-B23C	1743
-B23E	02FC
-B240	E702
-B242	4328
-B244	2A84
-B246	EFD0
-B248	3FB1
-B24A	8947
-B24C	6306
-B24E	F400
-B250	1743
-B252	02FC
-B254	6700
-B256	4329
-B258	B7A4
-B25A	0224
-B25C	9384
-B25E	8454
-B260	83C7
-B262	1406
-B264	F5F7
-B266	9770
-B268	FFFB
-B26A	E780
-B26C	A0ED
-B26E	6DF1
-B270	9770
-B272	FFFB
-B274	E780
-B276	40EE
-B278	61FD
-B27A	3725
-B27C	0224
-B27E	1305
-B280	05ED
-B282	9700
-B284	FFFB
-B286	E780
-B288	2005
-B28A	B767
-B28C	0124
-B28E	83A7
-B290	0740
-B292	0549
-B294	37A7
-B296	0124
-B298	1D45
-B29A	2305
-B29C	2723
-B29E	8297
-B2A0	A380
-B2A2	2407
-B2A4	9780
-B2A6	01FC
-B2A8	E780
-B2AA	008E
-B2AC	55F1
-B2AE	B727
-B2B0	0124
-B2B2	2380
-B2B4	8754
-B2B6	97B0
-B2B8	FEFB
-B2BA	E780
-B2BC	600D
-B2BE	2381
-B2C0	2407
-B2C2	79B7
-B2C4	1743
-B2C6	02FC
-B2C8	E702
-B2CA	C31F
-B2CC	37A4
-B2CE	0224
-B2D0	1304
-B2D2	8454
-B2D4	0347
-B2D6	2406
-B2D8	8547
-B2DA	630A
-B2DC	F700
-B2DE	97B0
-B2E0	FEFB
-B2E2	E780
-B2E4	E074
-B2E6	1743
-B2E8	02FC
-B2EA	6700
-B2EC	E31F
-B2EE	9780
-B2F0	01FC
-B2F2	E780
-B2F4	6089
-B2F6	65F5
-B2F8	97B0
-B2FA	FEFB
-B2FC	E780
-B2FE	801A
-B300	2301
-B302	0406
-B304	E9BF
-B306	0100
-B308	1743
-B30A	02FC
-B30C	E702
-B30E	831B
-B310	9D47
-B312	631F
-B314	F500
-B316	3794
-B318	0124
-B31A	1304
-B31C	0453
-B31E	8567
-B320	A297
-B322	83C7
-B324	A7CF
-B326	9DE7
-B328	1743
-B32A	02FC
-B32C	6700
-B32E	C31B
-B330	2A84
-B332	EFD0
-B334	7FE8
-B336	8547
-B338	E318
-B33A	F4FE
-B33C	B7E7
-B33E	0124
-B340	9387
-B342	074C
-B344	23AE
-B346	0710
-B348	23A4
-B34A	077E
-B34C	1743
-B34E	02FC
-B350	6700
-B352	8319
-B354	9770
-B356	FFFB
-B358	E780
-B35A	C0DE
-B35C	71F5
-B35E	9770
-B360	FFFB
-B362	E780
-B364	60DF
-B366	69F1
-B368	8D67
-B36A	3E94
-B36C	8327
-B36E	846D
-B370	B724
-B372	0124
-B374	9384
-B376	045F
-B378	91EF
-B37A	83A7
-B37C	440E
-B37E	99CB
-B380	B7D7
-B382	0124
-B384	83C7
-B386	07FA
-B388	C5D3
-B38A	9700
-B38C	FFFB
-B38E	E780
-B390	20EE
-B392	59BF
-B394	83A7
-B396	C40A
-B398	C1DB
-B39A	0545
-B39C	9730
-B39E	FEFB
-B3A0	E780
-B3A2	805C
-B3A4	B735
-B3A6	202D
-B3A8	7578
-B3AA	37F5
-B3AC	202D
-B3AE	9385
-B3B0	0560
-B3B2	1308
-B3B4	08A0
-B3B6	9168
-B3B8	1305
-B3BA	0560
-B3BC	B387
-B3BE	0501
-B3C0	03C7
-B3C2	0700
-B3C4	9306
-B3C6	F00F
-B3C8	1316
-B3CA	8701
-B3CC	6186
-B3CE	0607
-B3D0	6344
-B3D2	0600
-B3D4	9376
-B3D6	F70F
-B3D8	2380
-B3DA	D700
-B3DC	8507
-B3DE	E391
-B3E0	B7FE
-B3E2	B385
-B3E4	1701
-B3E6	E39B
-B3E8	A5FC
-B3EA	B7A7
-B3EC	0224
-B3EE	0547
-B3F0	0145
-B3F2	A384
-B3F4	E75A
-B3F6	9730
-B3F8	FEFB
-B3FA	E780
-B3FC	E056
-B3FE	B7D7
-B400	0124
-B402	83C7
-B404	07FA
-B406	8DD3
-B408	8327
-B40A	846D
-B40C	91FF
-B40E	83A7
-B410	440E
-B412	99DB
-B414	9DBF
-B416	0100
-B418	1743
-B41A	02FC
-B41C	E702
-B41E	830A
-B420	B7D7
-B422	0124
-B424	9387
-B426	07F4
-B428	03C7
-B42A	1705
-B42C	2A84
-B42E	11C7
-B430	03C7
-B432	1700
-B434	8947
-B436	6301
-B438	F704
-B43A	B7E7
-B43C	0124
-B43E	9387
-B440	0787
-B442	03A9
-B444	870F
-B446	83A4
-B448	C70F
-B44A	0146
-B44C	CA85
-B44E	2685
-B450	9730
-B452	01FC
-B454	E780
-B456	405F
-B458	2285
-B45A	97D0
-B45C	FEFB
-B45E	E780
-B460	20E2
-B462	0546
-B464	CA85
-B466	2685
-B468	9730
-B46A	01FC
-B46C	E780
-B46E	C05D
-B470	1743
-B472	02FC
-B474	6700
-B476	4307
-B478	B7E7
-B47A	0024
-B47C	83D6
-B47E	C7C8
-B480	8567
-B482	1387
-B484	F7B3
-B486	E39A
-B488	E6FA
-B48A	3797
-B48C	0124
-B48E	1307
-B490	0753
-B492	BA97
-B494	03A5
-B496	07B2
-B498	8145
-B49A	3325
-B49C	A000
-B49E	97D0
-B4A0	00FC
-B4A2	E780
-B4A4	20C7
-B4A6	51BF
-B4A8	1743
-B4AA	02FC
-B4AC	E702
-B4AE	8301
-B4B0	9760
-B4B2	FFFB
-B4B4	E780
-B4B6	8043
-B4B8	11C5
-B4BA	B7E7
-B4BC	0024
-B4BE	83C7
-B4C0	C784
-B4C2	BDEF
-B4C4	1384
-B4C6	81E7
-B4C8	0347
-B4CA	8400
-B4CC	8547
-B4CE	6303
-B4D0	F706
-B4D2	0357
-B4D4	2403
-B4D6	B767
-B4D8	0040
-B4DA	2398
-B4DC	E718
-B4DE	8357
-B4E0	4403
-B4E2	3767
-B4E4	0040
-B4E6	2314
-B4E8	F720
-B4EA	9760
-B4EC	FFFB
-B4EE	E780
-B4F0	E03F
-B4F2	19C5
-B4F4	B7E7
-B4F6	0024
-B4F8	03C7
-B4FA	C784
-B4FC	8147
-B4FE	09EB
-B500	8346
-B502	8400
-B504	0547
-B506	8147
-B508	6384
-B50A	E600
-B50C	8357
-B50E	C405
-B510	37A7
-B512	0040
-B514	2312
-B516	F710
-B518	9770
-B51A	FFFB
-B51C	E780
-B51E	80C2
-B520	35C1
-B522	9770
-B524	FFFB
-B526	E780
-B528	20C3
-B52A	05C9
-B52C	1743
-B52E	02FC
-B530	6700
-B532	83FB
-B534	B767
-B536	0040
-B538	2398
-B53A	0718
-B53C	8147
-B53E	55B7
-B540	B767
-B542	0040
-B544	2398
-B546	0718
-B548	1384
-B54A	81E7
-B54C	8346
-B54E	8400
-B550	0547
-B552	8147
-B554	E395
-B556	E6F8
-B558	69B7
-B55A	9760
-B55C	FFFB
-B55E	E780
-B560	E038
-B562	31ED
-B564	8346
-B566	8400
-B568	0547
-B56A	8147
-B56C	6384
-B56E	E600
-B570	8357
-B572	4408
-B574	3787
-B576	0040
-B578	2314
-B57A	F710
-B57C	1743
-B57E	02FC
-B580	6700
-B582	83F6
-B584	9770
-B586	FFFB
-B588	E780
-B58A	00BD
-B58C	59F9
-B58E	9760
-B590	FFFB
-B592	E780
-B594	A035
-B596	19C5
-B598	B7E7
-B59A	0024
-B59C	03C7
-B59E	C784
-B5A0	8147
-B5A2	09EB
-B5A4	8346
-B5A6	8400
-B5A8	0547
-B5AA	8147
-B5AC	6384
-B5AE	E600
-B5B0	8357
-B5B2	6407
-B5B4	3707
-B5B6	0140
-B5B8	2314
-B5BA	F710
-B5BC	9DB7
-B5BE	B7E7
-B5C0	0024
-B5C2	03C7
-B5C4	C784
-B5C6	8147
-B5C8	55F7
-B5CA	69BF
-B5CC	1743
-B5CE	02FC
-B5D0	E702
-B5D2	A3ED
-B5D4	B747
-B5D6	0124
-B5D8	03D7
-B5DA	C7E1
-B5DC	8947
-B5DE	2A84
-B5E0	AE84
-B5E2	6319
-B5E4	F700
-B5E6	B7A7
-B5E8	0124
-B5EA	03A7
-B5EC	4706
-B5EE	FD57
-B5F0	630E
-B5F2	F702
-B5F4	B7E7
-B5F6	0124
-B5F8	9387
-B5FA	0787
-B5FC	83A9
-B5FE	8710
-B600	03A9
-B602	C710
-B604	0146
-B606	CE85
-B608	4A85
-B60A	9730
-B60C	01FC
-B60E	E780
-B610	A043
-B612	A685
-B614	2285
-B616	97D0
-B618	00FC
-B61A	E780
-B61C	A0AF
-B61E	0546
-B620	CE85
-B622	4A85
-B624	9730
-B626	01FC
-B628	E780
-B62A	0042
-B62C	1743
-B62E	02FC
-B630	6700
-B632	E3EA
-B634	1743
-B636	02FC
-B638	E702
-B63A	C3E8
-B63C	B7B6
-B63E	0224
-B640	B787
-B642	0324
-B644	9386
-B646	4673
-B648	37A7
-B64A	0124
-B64C	9387
-B64E	07FF
-B650	1307
-B652	0753
-B654	958F
-B656	232C
-B658	D7B4
-B65A	232E
-B65C	F7B4
-B65E	9730
-B660	01FC
-B662	E780
-B664	20E2
-B666	01C5
-B668	EFE0
-B66A	DFD5
-B66C	3120
-B66E	1743
-B670	02FC
-B672	6700
-B674	63E7
-B676	0100
-B678	1743
-B67A	02FC
-B67C	E702
-B67E	83E4
-B680	B7B7
-B682	0224
-B684	9387
-B686	C7AB
-B688	23AE
-B68A	F194
-B68C	3764
-B68E	0124
-B690	9D66
-B692	B7B5
-B694	0224
-B696	B7A7
-B698	0224
-B69A	1304
-B69C	0440
-B69E	9387
-B6A0	077B
-B6A2	9386
-B6A4	F6BF
-B6A6	1146
-B6A8	9385
-B6AA	85F1
-B6AC	0545
-B6AE	5CC4
-B6B0	97E0
-B6B2	FFFB
-B6B4	E780
-B6B6	002E
-B6B8	C166
-B6BA	B7B5
-B6BC	0224
-B6BE	FD16
-B6C0	3146
-B6C2	9385
-B6C4	858F
-B6C6	4145
-B6C8	97E0
-B6CA	FFFB
-B6CC	E780
-B6CE	802C
-B6D0	37B7
-B6D2	0224
-B6D4	1307
-B6D6	C7AE
-B6D8	B7A7
-B6DA	0224
-B6DC	9387
-B6DE	8754
-B6E0	78C8
-B6E2	37B7
-B6E4	0224
-B6E6	A380
-B6E8	0706
-B6EA	2381
-B6EC	0706
-B6EE	1307
-B6F0	07BA
-B6F2	B7B7
-B6F4	0224
-B6F6	18D4
-B6F8	9387
-B6FA	C723
-B6FC	37B7
-B6FE	0224
-B700	7CC4
-B702	1307
-B704	8730
-B706	B7B7
-B708	0224
-B70A	18C0
-B70C	9387
-B70E	472C
-B710	23AA
-B712	F1A4
-B714	1743
-B716	02FC
-B718	6700
-B71A	03DD
-B71C	0000
-B71E	0000
-B720	6610
-B722	E538
-B724	0000
-B726	0000
-B728	BF3F
-B72A	0000
-B72C	0000
-B72E	0000
-B730	008D
-B732	0000
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-23F0	0000
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-FCFC	4000
-011C	0100
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3234	0120
-3236	1600
-3238	0A14
-323A	2A2A
-323C	010F
-323E	0419
-3240	143A
-3242	0A4B
-3244	0101
-3246	0101
-3248	0010
-3252	C800
-3254	C400
-3256	C200
-3258	BE00
-325A	BC00
-3266	0100
-3268	0200
-326A	2A00
-326C	0000
-326E	3F00
-3270	0A00
-3272	1900
-3274	0C00
-3276	2000
-3278	2300
-327A	2100
-327C	3000
-327E	1100
-3280	0C00
-3282	2000
-3284	2300
-3286	2100
-3288	3000
-328A	1100
-328C	0F00
-328E	1900
-3290	0A00
-3292	0B00
-3296	0800
-3298	0F00
-329A	1900
-329C	0A00
-329E	0B00
-32A0	0000
-32A2	0800
-32A4	0F00
-32A6	1900
-32A8	0A00
-32AA	0B00
-32AC	0000
-32AE	0800
-3330	0108
-3334	0100
-3336	0000
-FCFC	4000
-FCFC	4000
-0B30	01FF
-FCFC	2000
-3D44	0000
-3D88	FCFC
-3D8A	FEFF
-3D8C	FCFC
-3D8E	FEFF
-3D90	FCFC
-3D92	FEFF
-3D94	FCFC
-3D96	FEFF
-3FE0	0324
-3FE2	4686
-3FE4	0324
-3FE6	0080
-4238	0324
-423A	4686
-423C	0324
-423E	0080
-4240	0324
-4242	9482
-4490	0324
-4492	4686
-4494	0324
-4496	B882
-46E8	0324
-46EA	4686
-46EC	0324
-46EE	9083
-4940	0324
-4942	4686
-4944	0324
-4946	9284
-4B98	0324
-4B9A	4686
-4B9C	0000
-4B9E	0000
-4DF0	0324
-4DF2	4686
-4DF4	0324
-4DF6	EE8C
-FCFC	2003
-8000	FFFE
-8002	2400
-8004	FFFD
-8006	703C
-8008	0100
-800A	703E
-800C	0000
-800E	7048
-8010	002F
-8012	704A
-8014	0400
-8016	705A
-8018	0030
-801A	705C
-801C	0400
-801E	7274
-8020	000D
-8022	7276
-8024	000C
-8026	727E
-8028	0000
-802A	7280
-802C	0000
-802E	7282
-8030	0000
-8032	795A
-8034	0010
-8036	7970
-8038	0010
-803A	7996
-803C	0001
-803E	7A0E
-8040	001E
-8042	7A6E
-8044	0028
-8046	7A86
-8048	0028
-804A	82A2
-804C	0012
-804E	82BA
-8050	0036
-8052	8C9E
-8054	0050
-8056	8CA2
-8058	0035
-805A	8CCE
-805C	012C
-805E	8CD2
-8060	0096
-8062	B176
-8064	0006
-8066	B220
-8068	0000
-806A	B268
-806C	0440
-806E	BEDE
-8070	3E90
-8072	BEE4
-8074	000C
-8076	C4E2
-8078	0002
-807A	C53C
-807C	0001
-807E	C554
-8080	0D53
-8082	D20C
-8084	0809
-8086	D27A
-8088	0005
-808A	D326
-808C	2001
-808E	D3EC
-8090	1CB1
-8092	D4A8
-8094	0003
-8096	D4AC
-8098	003B
-809A	D4B0
-809C	0001
-809E	D4B8
-80A0	0035
-80A2	D4BC
-80A4	0014
-80A6	D4C4
-80A8	0001
-80AA	D4C8
-80AC	0000
-80AE	D4D0
-80B0	0016
-80B2	D4D2
-80B4	0020
-80B6	D4D6
-80B8	0000
-80BA	D4DE
-80BC	0000
-80BE	D4E2
-80C0	0001
-80C2	D4EC
-80C4	00BE
-80C6	D4EE
-80C8	00BE
-80CA	D4F8
-80CC	01F0
-80CE	D4FA
-80D0	01F0
-80D2	D554
-80D4	0000
-80D6	D556
-80D8	0000
-80DA	D560
-80DC	0000
-80DE	D562
-80E0	0000
-80E2	D684
-80E4	0440
-80E6	DADA
-80E8	0100
-80EA	DADE
-80EC	0030
-80EE	DAE0
-80F0	0180
-80F2	DB0E
-80F4	8000
-80F6	DB3C
-80F8	D212
-80FA	DB3E
-80FC	D212
-80FE	DB40
-8100	D212
-8102	DC8C
-8104	2B3F
-8106	DC94
-8108	0001
-810A	E980
-810C	0500
-810E	F014
-8110	0006
-8112	F3F4
-8114	08C8
-8116	F3F6
-8118	10D7
-811A	FFFE
-811C	2401
-811E	FFFD
-8120	1C4E
-8122	0100
-8124	1C50
-8126	03FF
-8128	2540
-812A	0002
-812C	29A8
-812E	0002
-8130	29BA
-8132	00FF
-8134	2A44
-8136	04B0
-8138	2A56
-813A	0008
-813C	3132
-813E	0001
-8140	31D0
-8142	0002
-8144	31F8
-8146	0001
-8148	31FA
-814A	04CD
-814C	FFFE
-814E	2402
-8150	FFFD
-8152	84C4
-8154	0000
-8156	A598
-8158	002E
-815A	A59A
-815C	0030
-815E	FFFE
-8160	2400
-8162	FFFD
-8164	0086
-8166	0200
-8168	0900
-816A	1100
-816C	0B02
-816E	0101
-8170	0B08
-8172	0101
-8174	0342
-8176	23F0
-8178	0000
-817A	FFFF
-817C	0008
-817E	2400
-8180	7314
-8182	0000
-8184	0000
-8186	0000
-8188	0000
-818A	FFFF
-818C	0010
-818E	2401
-8190	1C26
-8192	0001
-8194	FF03
-8196	0010
-8198	D70F
-819A	0004
-819C	0010
-819E	D70F
-81A0	C20F
-81A2	FFFF
-81A4	000A
-81A6	2401
-81A8	1C54
-81AA	D70F
-81AC	0004
-81AE	0010
-81B0	D70F
-81B2	C20F
-81B4	FFFF
-81B6	0010
-81B8	2401
-81BA	1C76
-81BC	0001
-81BE	FF03
-81C0	0010
-81C2	D70F
-81C4	0004
-81C6	0010
-81C8	D70F
-81CA	C20F
-81CC	FFFF
-81CE	0010
-81D0	2401
-81D2	1C9E
-81D4	0001
-81D6	FF03
-81D8	0010
-81DA	D70F
-81DC	0004
-81DE	0010
-81E0	D70F
-81E2	C20F
-81E4	FFFF
-81E6	0010
-81E8	2401
-81EA	1CC6
-81EC	0000
-81EE	0000
-81F0	0000
-81F2	0000
-81F4	0000
-81F6	0000
-81F8	0000
-81FA	0000
-81FC	FFFF
-81FE	0010
-8200	2401
-8202	1CEE
-8204	0000
-8206	0000
-8208	0000
-820A	0000
-820C	0000
-820E	0000
-8210	0000
-8212	0000
-8214	FFFF
-8216	0010
-8218	2401
-821A	1D16
-821C	0000
-821E	0000
-8220	0000
-8222	0000
-8224	0000
-8226	0000
-8228	0000
-822A	0000
-822C	FFFF
-822E	0010
-8230	2401
-8232	1D3E
-8234	0000
-8236	0000
-8238	0000
-823A	0000
-823C	0000
-823E	0000
-8240	0000
-8242	0000
-8244	FFFF
-8246	001C
-8248	2402
-824A	A57A
-824C	0001
-824E	0002
-8250	0002
-8252	0002
-8254	0002
-8256	0002
-8258	0002
-825A	0800
-825C	2100
-825E	2900
-8260	2E00
-8262	2E00
-8264	2E00
-8266	2E00
-8268	FFFF
-826A	0010
-826C	2400
-826E	0344
-8270	0008
-8272	0006
-8274	1F18
-8276	1F12
-8278	0010
-827A	000C
-827C	1000
-827E	1000
-8280	FFFF
-8282	0008
-8284	2400
-8286	0380
-8288	0100
-828A	0100
-828C	0100
-828E	0100
-8290	0000
-8292	0000
-8294	FFFE
-8296	2400
-8298	FFFD
-829A	D4AC
-829C	03E8
-829E	FFFE
-82A0	2401
-82A2	FFFD
-82A4	31D0
-82A6	0000
-82A8	FFFE
-82AA	2400
-82AC	FFFD
-82AE	0B08
-82B0	0001
-82B2	0000
-82B4	0000
-82B6	0000
-82B8	FFFE
-82BA	2400
-82BC	FFFD
-82BE	7048
-82C0	021F
-82C2	705A
-82C4	0320
-82C6	727E
-82C8	0000
-82CA	7280
-82CC	0000
-82CE	7282
-82D0	0000
-82D2	7BDA
-82D4	004C
-82D6	BEDE
-82D8	3E90
-82DA	BEE4
-82DC	000C
-82DE	D20C
-82E0	0809
-82E2	D27A
-82E4	0005
-82E6	D49C
-82E8	0003
-82EA	D4A8
-82EC	0001
-82EE	D4B0
-82F0	0202
-82F2	D4BC
-82F4	0047
-82F6	D4D0
-82F8	0026
-82FA	D4E2
-82FC	0028
-82FE	D556
-8300	00EC
-8302	D562
-8304	037A
-8306	DADA
-8308	0100
-830A	DB0E
-830C	4000
-830E	DB12
-8310	B000
-8312	DB14
-8314	D000
-8316	DB16
-8318	F000
-831A	F3F6
-831C	10D6
-831E	FFFE
-8320	2401
-8322	FFFD
-8324	1E16
-8326	FFFA
-8328	1E1E
-832A	FFFA
-832C	1E56
-832E	FFFA
-8330	1E5E
-8332	FFFA
-8334	2A44
-8336	0739
-8338	4396
-833A	000D
-833C	FFFE
-833E	2400
-8340	FFFD
-8342	0346
-8344	0000
-8346	0382
-8348	0002
-834A	0386
-834C	0002
-834E	0900
-8350	2222
-8352	0000
-8354	FFFF
-8356	000A
-8358	2400
-835A	DADE
-835C	4000
-835E	E001
-8360	2003
-8362	8007
-8364	000B
-8366	FFFF
-8368	000C
-836A	2400
-836C	DB3C
-836E	12D2
-8370	12D2
-8372	12D2
-8374	12D2
-8376	12D2
-8378	12D2
-837A	FFFF
-837C	000A
-837E	2400
-8380	034A
-8382	1F18
-8384	0010
-8386	000C
-8388	0800
-838A	0800
-838C	0000
-838E	0000
-8390	FFFE
-8392	2400
-8394	FFFD
-8396	7048
-8398	021F
-839A	705A
-839C	0320
-839E	727E
-83A0	0000
-83A2	7280
-83A4	0000
-83A6	7282
-83A8	0000
-83AA	7BDA
-83AC	004C
-83AE	BEDE
-83B0	3E90
-83B2	BEE4
-83B4	000C
-83B6	D20C
-83B8	0809
-83BA	D27A
-83BC	0005
-83BE	D49C
-83C0	0022
-83C2	D4A8
-83C4	0000
-83C6	D4B0
-83C8	046A
-83CA	D4BC
-83CC	0062
-83CE	D4D0
-83D0	000A
-83D2	D4E2
-83D4	0036
-83D6	D556
-83D8	00FA
-83DA	D562
-83DC	0388
-83DE	DADA
-83E0	0100
-83E2	DB0E
-83E4	4000
-83E6	DB12
-83E8	B000
-83EA	DB14
-83EC	D000
-83EE	DB16
-83F0	F000
-83F2	F3F6
-83F4	10D6
-83F6	FFFE
-83F8	2401
-83FA	FFFD
-83FC	1DF2
-83FE	0009
-8400	1DF6
-8402	0009
-8404	1DFA
-8406	0009
-8408	1DFE
-840A	0009
-840C	1E12
-840E	000C
-8410	1E16
-8412	000C
-8414	1E1A
-8416	000C
-8418	1E1E
-841A	000C
-841C	1E32
-841E	0009
-8420	1E36
-8422	0009
-8424	1E3A
-8426	0009
-8428	1E3E
-842A	0009
-842C	1E52
-842E	000C
-8430	1E56
-8432	000C
-8434	1E5A
-8436	000C
-8438	1E5E
-843A	000C
-843C	2A44
-843E	0952
-8440	4396
-8442	000D
-8444	FFFE
-8446	2400
-8448	FFFD
-844A	0382
-844C	0002
-844E	0386
-8450	0002
-8452	0900
-8454	2222
-8456	0000
-8458	FFFF
-845A	000A
-845C	2400
-845E	DADE
-8460	4000
-8462	E001
-8464	2003
-8466	8007
-8468	000B
-846A	FFFF
-846C	000C
-846E	2400
-8470	DB3C
-8472	12D2
-8474	12D2
-8476	12D2
-8478	12D2
-847A	12D2
-847C	12D2
-847E	FFFF
-8480	0008
-8482	2400
-8484	034C
-8486	0010
-8488	0009
-848A	0800
-848C	0800
-848E	0000
-8490	0000
-8492	FFFE
-8494	2400
-8496	FFFD
-8498	22C2
-849A	0000
-849C	22C4
-849E	0000
-84A0	2354
-84A2	0001
-84A4	703C
-84A6	0001
-84A8	703E
-84AA	0000
-84AC	7048
-84AE	0400
-84B0	704A
-84B2	0400
-84B4	705A
-84B6	0400
-84B8	705C
-84BA	0400
-84BC	727E
-84BE	0000
-84C0	7280
-84C2	0000
-84C4	7282
-84C6	0000
-84C8	7806
-84CA	0101
-84CC	7808
-84CE	1C3F
-84D0	7A12
-84D2	0017
-84D4	7A72
-84D6	0021
-84D8	7A8A
-84DA	0021
-84DC	7BDA
-84DE	004C
-84E0	7EE6
-84E2	0001
-84E4	7EF2
-84E6	0001
-84E8	7EFE
-84EA	01BA
-84EC	7F0A
-84EE	01AA
-84F0	B20C
-84F2	2E2E
-84F4	B21A
-84F6	0604
-84F8	B21E
-84FA	4000
-84FC	B222
-84FE	60C0
-8500	B266
-8502	05C0
-8504	B268
-8506	E380
-8508	B270
-850A	8887
-850C	BEDE
-850E	3E94
-8510	BEE4
-8512	000C
-8514	BEE6
-8516	000C
-8518	D20C
-851A	0809
-851C	D27A
-851E	0005
-8520	D4B0
-8522	0234
-8524	D4BC
-8526	0037
-8528	D4D0
-852A	000A
-852C	D682
-852E	05C0
-8530	D684
-8532	E380
-8534	D896
-8536	0020
-8538	D8A2
-853A	0101
-853C	DADA
-853E	0200
-8540	DADE
-8542	01DF
-8544	DB0C
-8546	8000
-8548	DB3C
-854A	D212
-854C	DB3E
-854E	D212
-8550	DB6E
-8552	01DF
-8554	DB9C
-8556	8000
-8558	DBCC
-855A	D212
-855C	DBCE
-855E	D212
-8560	DD70
-8562	7E03
-8564	DE38
-8566	2E2E
-8568	F3F6
-856A	10D6
-856C	FFFE
-856E	2401
-8570	FFFD
-8572	2A44
-8574	0952
-8576	2A56
-8578	0001
-857A	4292
-857C	0001
-857E	4398
-8580	000C
-8582	FFFE
-8584	2402
-8586	FFFD
-8588	84C4
-858A	0000
-858C	A570
-858E	FDA2
-8590	A584
-8592	0A00
-8594	A586
-8596	0A00
-8598	FFFE
-859A	2400
-859C	FFFD
-859E	0086
-85A0	0A00
-85A2	020A
-85A4	0001
-85A6	021E
-85A8	0003
-85AA	0228
-85AC	0002
-85AE	0260
-85B0	0300
-85B2	0262
-85B4	0001
-85B6	0382
-85B8	0002
-85BA	0386
-85BC	0002
-85BE	0722
-85C0	0004
-85C2	0808
-85C4	0000
-85C6	0900
-85C8	2222
-85CA	0342
-85CC	1770
-85CE	0000
-85D0	FFFF
-85D2	0008
-85D4	2400
-85D6	7274
-85D8	0000
-85DA	0000
-85DC	0000
-85DE	0000
-85E0	FFFF
-85E2	0008
-85E4	2400
-85E6	7314
-85E8	0000
-85EA	0000
-85EC	0000
-85EE	0000
-85F0	FFFF
-85F2	0010
-85F4	2402
-85F6	A548
-85F8	0200
-85FA	4000
-85FC	8000
-85FE	A000
-8600	4001
-8602	8002
-8604	0005
-8606	000A
-8608	FFFF
-860A	0010
-860C	2402
-860E	A55C
-8610	0E00
-8612	2000
-8614	2800
-8616	1400
-8618	2200
-861A	2800
-861C	2C00
-861E	2E00
-8620	FFFF
-8622	000A
-8624	2402
-8626	A596
-8628	2C00
-862A	2C00
-862C	2E00
-862E	16FC
-8630	0000
-8632	FFFF
-8634	0008
-8636	2400
-8638	034C
-863A	0010
-863C	0009
-863E	0800
-8640	0800
-8642	0000
-8644	0000
-8646	FFFE
-8648	2400
-864A	FFFD
-864C	22C2
-864E	0006
-8650	22C4
-8652	1FFF
-8654	22EC
-8656	001F
-8658	2306
-865A	3FFF
-865C	2314
-865E	00FF
-8660	2354
-8662	0003
-8664	23F0
-8666	0100
-8668	68DE
-866A	0000
-866C	703C
-866E	0101
-8670	703E
-8672	0001
-8674	7046
-8676	027F
-8678	7048
-867A	013F
-867C	704A
-867E	0A00
-8680	7058
-8682	0280
-8684	705A
-8686	0140
-8688	705C
-868A	0A01
-868C	7806
-868E	0100
-8690	7808
-8692	0824
-8694	78C0
-8696	0101
-8698	795A
-869A	0020
-869C	7970
-869E	0020
-86A0	7994
-86A2	2020
-86A4	7996
-86A6	0101
-86A8	799A
-86AA	0000
-86AC	7BDA
-86AE	003C
-86B0	7EE6
-86B2	002C
-86B4	7EF2
-86B6	002C
-86B8	7EFE
-86BA	0064
-86BC	7F0A
-86BE	0058
-86C0	7F0E
-86C2	0058
-86C4	82A2
-86C6	0014
-86C8	82BA
-86CA	0033
-86CC	8CCE
-86CE	0096
-86D0	8CD0
-86D2	0096
-86D4	8CD2
-86D6	00BE
-86D8	8CD6
-86DA	0096
-86DC	8D0E
-86DE	0000
-86E0	9032
-86E2	0000
-86E4	903E
-86E6	0000
-86E8	B176
-86EA	0206
-86EC	B178
-86EE	0000
-86F0	B20C
-86F2	002E
-86F4	B21A
-86F6	0204
-86F8	B23C
-86FA	6060
-86FC	B242
-86FE	6060
-8700	B266
-8702	04C0
-8704	B268
-8706	F380
-8708	B270
-870A	0887
-870C	B322
-870E	0101
-8710	B324
-8712	0001
-8714	B330
-8716	2828
-8718	B34A
-871A	2828
-871C	B360
-871E	2828
-8720	B378
-8722	0001
-8724	BF16
-8726	AA0B
-8728	BF30
-872A	0000
-872C	BF78
-872E	3353
-8730	C4D8
-8732	0020
-8734	C4E0
-8736	0001
-8738	C4E2
-873A	0000
-873C	C4F6
-873E	0000
-8740	C53C
-8742	0005
-8744	C53E
-8746	0000
-8748	C544
-874A	0500
-874C	C554
-874E	1000
-8750	C556
-8752	0000
-8754	D1F6
-8756	003A
-8758	D20C
-875A	1009
-875C	D27A
-875E	0007
-8760	D314
-8762	0220
-8764	D326
-8766	1001
-8768	D3EC
-876A	1CB0
-876C	D3F0
-876E	1CB0
-8770	D410
-8772	0248
-8774	D412
-8776	04D2
-8778	D426
-877A	04D2
-877C	D428
-877E	0AEA
-8780	D43C
-8782	4001
-8784	D43E
-8786	4001
-8788	D49C
-878A	0021
-878C	D4A8
-878E	0004
-8790	D4AC
-8792	0001
-8794	D4B0
-8796	0179
-8798	D4B4
-879A	0001
-879C	D4B8
-879E	0014
-87A0	D4BC
-87A2	0066
-87A4	D4C0
-87A6	0014
-87A8	D4C4
-87AA	0000
-87AC	D4C8
-87AE	0001
-87B0	D4CC
-87B2	0000
-87B4	D4D0
-87B6	0009
-87B8	D4D2
-87BA	0000
-87BC	D4D6
-87BE	001A
-87C0	D4DA
-87C2	0000
-87C4	D4DE
-87C6	0001
-87C8	D4E2
-87CA	0000
-87CC	D4E6
-87CE	0001
-87D0	D4EA
-87D2	0001
-87D4	D4EC
-87D6	0000
-87D8	D4EE
-87DA	0000
-87DC	D4F8
-87DE	0000
-87E0	D4FA
-87E2	0000
-87E4	D554
-87E6	00C4
-87E8	D556
-87EA	00C4
-87EC	D560
-87EE	0352
-87F0	D562
-87F2	0352
-87F4	D5BC
-87F6	0000
-87F8	D5BE
-87FA	0000
-87FC	D5C8
-87FE	0000
-8800	D5CA
-8802	0000
-8804	D624
-8806	0000
-8808	D62E
-880A	0000
-880C	D638
-880E	0000
-8810	D682
-8812	04C0
-8814	D684
-8816	F380
-8818	D6D4
-881A	0000
-881C	D704
-881E	7802
-8820	D718
-8822	0200
-8824	D856
-8826	0705
-8828	D896
-882A	0000
-882C	D8A2
-882E	0001
-8830	DC8C
-8832	0B3F
-8834	DC94
-8836	0301
-8838	DD70
-883A	0000
-883C	DE38
-883E	0000
-8840	E980
-8842	049E
-8844	EF80
-8846	0000
-8848	F014
-884A	0007
-884C	F09A
-884E	FF00
-8850	F0AA
-8852	FFFF
-8854	F0AC
-8856	FFFF
-8858	F288
-885A	0000
-885C	F2E0
-885E	0000
-8860	F2EA
-8862	0040
-8864	F370
-8866	0302
-8868	F372
-886A	0000
-886C	F3E4
-886E	0103
-8870	F3F4
-8872	00C8
-8874	F3F6
-8876	10D2
-8878	FFFE
-887A	2401
-887C	FFFD
-887E	195E
-8880	0001
-8882	1966
-8884	0000
-8886	1DF2
-8888	0000
-888A	1DF6
-888C	0000
-888E	1DFA
-8890	0000
-8892	1DFE
-8894	0000
-8896	1E12
-8898	0000
-889A	1E16
-889C	0000
-889E	1E1A
-88A0	0000
-88A2	1E1E
-88A4	0000
-88A6	1E32
-88A8	0000
-88AA	1E36
-88AC	0000
-88AE	1E3A
-88B0	0000
-88B2	1E3E
-88B4	0000
-88B6	1E52
-88B8	0000
-88BA	1E56
-88BC	0000
-88BE	1E5A
-88C0	0000
-88C2	1E5E
-88C4	0000
-88C6	2540
-88C8	0000
-88CA	2920
-88CC	0001
-88CE	29A8
-88D0	0001
-88D2	29BA
-88D4	0020
-88D6	2A30
-88D8	FF01
-88DA	2A42
-88DC	0001
-88DE	2A44
-88E0	01D3
-88E2	2A46
-88E4	0000
-88E6	2A54
-88E8	0000
-88EA	2A56
-88EC	0004
-88EE	2BB2
-88F0	0010
-88F2	2D32
-88F4	1000
-88F6	3132
-88F8	0002
-88FA	31D0
-88FC	0000
-88FE	31F8
-8900	0000
-8902	31FA
-8904	0000
-8906	3C42
-8908	0000
-890A	3C46
-890C	05EB
-890E	3C52
-8910	0640
-8912	4270
-8914	0000
-8916	427C
-8918	0020
-891A	4280
-891C	0010
-891E	4290
-8920	0001
-8922	4292
-8924	0000
-8926	4362
-8928	0001
-892A	4364
-892C	0000
-892E	4366
-8930	0000
-8932	4370
-8934	0000
-8936	4396
-8938	000C
-893A	4398
-893C	000E
-893E	43AA
-8940	0000
-8942	43AC
-8944	0000
-8946	43B4
-8948	0000
-894A	43B6
-894C	0000
-894E	43C6
-8950	0A01
-8952	44C6
-8954	0000
-8956	5A70
-8958	0000
-895A	FFFE
-895C	2402
-895E	FFFD
-8960	849E
-8962	0000
-8964	84A0
-8966	0000
-8968	84A2
-896A	0500
-896C	84C4
-896E	0001
-8970	A570
-8972	0000
-8974	FFFE
-8976	2400
-8978	FFFD
-897A	0086
-897C	1400
-897E	0112
-8980	0A0A
-8982	0114
-8984	0103
-8986	0118
-8988	0401
-898A	011A
-898C	0100
-898E	011C
-8990	0001
-8992	0136
-8994	1800
-8996	013E
-8998	0000
-899A	020A
-899C	0000
-899E	021E
-89A0	0000
-89A2	0228
-89A4	0001
-89A6	0270
-89A8	2B2B
-89AA	0272
-89AC	102B
-89AE	0274
-89B0	2B30
-89B2	0304
-89B4	0003
-89B6	0306
-89B8	00E6
-89BA	031A
-89BC	0003
-89BE	031C
-89C0	0028
-89C2	031E
-89C4	0002
-89C6	0400
-89C8	1010
-89CA	0408
-89CC	0100
-89CE	040A
-89D0	0100
-89D2	040C
-89D4	0000
-89D6	0702
-89D8	0000
-89DA	0704
-89DC	0000
-89DE	0720
-89E0	0001
-89E2	0722
-89E4	0008
-89E6	0724
-89E8	0000
-89EA	0808
-89EC	0102
-89EE	0900
-89F0	4433
-89F2	0936
-89F4	0000
-89F6	0C40
-89F8	0000
-89FA	0342
-89FC	12B0
-89FE	0000
-8A00	FFFF
-8A02	0008
-8A04	2400
-8A06	71D4
-8A08	3F00
-8A0A	3D00
-8A0C	84F3
-8A0E	0040
-8A10	FFFF
-8A12	0010
-8A14	2400
-8A16	7274
-8A18	0C00
-8A1A	0B00
-8A1C	36D2
-8A1E	0040
-8A20	0000
-8A22	00D0
-8A24	12D2
-8A26	0040
-8A28	FFFF
-8A2A	0008
-8A2C	2400
-8A2E	7314
-8A30	2E00
-8A32	3000
-8A34	9EFD
-8A36	0040
-8A38	FFFF
-8A3A	0008
-8A3C	2400
-8A3E	7A0E
-8A40	0F00
-8A42	0F00
-8A44	0F00
-8A46	0F00
-8A48	FFFF
-8A4A	0008
-8A4C	2400
-8A4E	7A6E
-8A50	1900
-8A52	1900
-8A54	1900
-8A56	1900
-8A58	FFFF
-8A5A	0008
-8A5C	2400
-8A5E	7A86
-8A60	1900
-8A62	1900
-8A64	1900
-8A66	1900
-8A68	FFFF
-8A6A	0008
-8A6C	2400
-8A6E	8C9E
-8A70	3500
-8A72	3500
-8A74	5000
-8A76	3500
-8A78	FFFF
-8A7A	000A
-8A7C	2400
-8A7E	B21E
-8A80	0000
-8A82	0103
-8A84	C000
-8A86	0103
-8A88	0000
-8A8A	FFFF
-8A8C	000C
-8A8E	2400
-8A90	BEDC
-8A92	C526
-8A94	907E
-8A96	C00F
-8A98	0008
-8A9A	2C00
-8A9C	8000
-8A9E	FFFF
-8AA0	000E
-8AA2	2400
-8AA4	DADA
-8AA6	0000
-8AA8	0000
-8AAA	0000
-8AAC	0000
-8AAE	0000
-8AB0	0000
-8AB2	0000
-8AB4	FFFF
-8AB6	000C
-8AB8	2400
-8ABA	DB0C
-8ABC	0000
-8ABE	0000
-8AC0	0000
-8AC2	0000
-8AC4	0000
-8AC6	0000
-8AC8	FFFF
-8ACA	000C
-8ACC	2400
-8ACE	DB3C
-8AD0	0000
-8AD2	0000
-8AD4	0000
-8AD6	0000
-8AD8	0000
-8ADA	0000
-8ADC	FFFF
-8ADE	000C
-8AE0	2400
-8AE2	DB6C
-8AE4	0000
-8AE6	0000
-8AE8	0000
-8AEA	0000
-8AEC	0000
-8AEE	0000
-8AF0	FFFF
-8AF2	000C
-8AF4	2400
-8AF6	DB9C
-8AF8	0000
-8AFA	0000
-8AFC	0000
-8AFE	0000
-8B00	0000
-8B02	0000
-8B04	FFFF
-8B06	000C
-8B08	2400
-8B0A	DBCC
-8B0C	0000
-8B0E	0000
-8B10	0000
-8B12	0000
-8B14	0000
-8B16	0000
-8B18	FFFF
-8B1A	0012
-8B1C	2401
-8B1E	1C24
-8B20	0002
-8B22	8001
-8B24	8004
-8B26	2010
-8B28	2010
-8B2A	0005
-8B2C	00A0
-8B2E	2810
-8B30	2810
-8B32	FFFF
-8B34	0020
-8B36	2401
-8B38	1C4E
-8B3A	8001
-8B3C	8004
-8B3E	0010
-8B40	0010
-8B42	0005
-8B44	00A0
-8B46	2810
-8B48	2810
-8B4A	0000
-8B4C	0000
-8B4E	0000
-8B50	0000
-8B52	0000
-8B54	0000
-8B56	0000
-8B58	0000
-8B5A	FFFF
-8B5C	0020
-8B5E	2401
-8B60	1C76
-8B62	8001
-8B64	8004
-8B66	2010
-8B68	2010
-8B6A	0005
-8B6C	00A0
-8B6E	2810
-8B70	2810
-8B72	0000
-8B74	0000
-8B76	0000
-8B78	0000
-8B7A	0000
-8B7C	0000
-8B7E	0000
-8B80	0000
-8B82	FFFF
-8B84	0010
-8B86	2401
-8B88	1C9E
-8B8A	8001
-8B8C	8004
-8B8E	2010
-8B90	2010
-8B92	0005
-8B94	00A0
-8B96	2810
-8B98	2810
-8B9A	FFFF
-8B9C	0010
-8B9E	2401
-8BA0	1CC6
-8BA2	8001
-8BA4	8004
-8BA6	2010
-8BA8	2010
-8BAA	0005
-8BAC	00A0
-8BAE	2810
-8BB0	2810
-8BB2	FFFF
-8BB4	0020
-8BB6	2401
-8BB8	1CEE
-8BBA	8001
-8BBC	8004
-8BBE	0010
-8BC0	0010
-8BC2	0005
-8BC4	00A0
-8BC6	2810
-8BC8	2810
-8BCA	0000
-8BCC	0000
-8BCE	0000
-8BD0	0000
-8BD2	0000
-8BD4	0000
-8BD6	0000
-8BD8	0000
-8BDA	FFFF
-8BDC	0020
-8BDE	2401
-8BE0	1D16
-8BE2	8001
-8BE4	8004
-8BE6	2010
-8BE8	2010
-8BEA	0005
-8BEC	00A0
-8BEE	2810
-8BF0	2810
-8BF2	0000
-8BF4	0000
-8BF6	0000
-8BF8	0000
-8BFA	0000
-8BFC	0000
-8BFE	0000
-8C00	0000
-8C02	FFFF
-8C04	0010
-8C06	2401
-8C08	1D3E
-8C0A	8001
-8C0C	8004
-8C0E	2010
-8C10	2010
-8C12	0005
-8C14	00A0
-8C16	2810
-8C18	2810
-8C1A	FFFF
-8C1C	0010
-8C1E	2402
-8C20	A548
-8C22	0000
-8C24	0000
-8C26	0000
-8C28	0000
-8C2A	0000
-8C2C	0000
-8C2E	0000
-8C30	0000
-8C32	FFFF
-8C34	0010
-8C36	2402
-8C38	A55C
-8C3A	0000
-8C3C	0000
-8C3E	0000
-8C40	0000
-8C42	0000
-8C44	0000
-8C46	0000
-8C48	0000
-8C4A	FFFF
-8C4C	002C
-8C4E	2402
-8C50	A574
-8C52	0100
-8C54	4000
-8C56	8000
-8C58	A000
-8C5A	4001
-8C5C	8002
-8C5E	0005
-8C60	000A
-8C62	A00F
-8C64	4011
-8C66	0E00
-8C68	2000
-8C6A	2800
-8C6C	1400
-8C6E	2200
-8C70	2800
-8C72	2C00
-8C74	2E00
-8C76	3200
-8C78	3800
-8C7A	A2FD
-8C7C	FEFE
-8C7E	FFFF
-8C80	0008
-8C82	2400
-8C84	0260
-8C86	0001
-8C88	0000
-8C8A	0006
-8C8C	0700
-8C8E	FFFF
-8C90	0008
-8C92	2400
-8C94	030C
-8C96	0000
-8C98	0300
-8C9A	CF00
-8C9C	0000
-8C9E	FFFF
-8CA0	0010
-8CA2	2400
-8CA4	0344
-8CA6	0000
-8CA8	0003
-8CAA	1F20
-8CAC	1F15
-8CAE	0008
-8CB0	8004
-8CB2	0400
-8CB4	0400
-8CB6	FFFF
-8CB8	0008
-8CBA	2400
-8CBC	0380
-8CBE	0200
-8CC0	0600
-8CC2	0200
-8CC4	0600
-8CC6	FFFF
-8CC8	0008
-8CCA	2400
-8CCC	0728
-8CCE	0000
-8CD0	0000
-8CD2	0000
-8CD4	0000
-8CD6	FFFF
-8CD8	000C
-8CDA	2400
-8CDC	0B02
-8CDE	0102
-8CE0	0001
-8CE2	0101
-8CE4	0100
-8CE6	0101
-8CE8	0100
-8CEA	0000
-8CEC	0000
-8CEE	FFFE
-8CF0	2400
-8CF2	FFFD
-8CF4	22C2
-8CF6	0000
-8CF8	22C4
-8CFA	0000
-8CFC	2354
-8CFE	0001
-8D00	703C
-8D02	0001
-8D04	703E
-8D06	0000
-8D08	7048
-8D0A	0400
-8D0C	704A
-8D0E	0400
-8D10	705A
-8D12	0400
-8D14	705C
-8D16	0400
-8D18	727E
-8D1A	0000
-8D1C	7280
-8D1E	0000
-8D20	7282
-8D22	0000
-8D24	7806
-8D26	0101
-8D28	7808
-8D2A	1C3F
-8D2C	7A12
-8D2E	0017
-8D30	7A72
-8D32	0021
-8D34	7A8A
-8D36	0021
-8D38	7BDA
-8D3A	004C
-8D3C	7EE6
-8D3E	0001
-8D40	7EF2
-8D42	0001
-8D44	7EFE
-8D46	01BA
-8D48	7F0A
-8D4A	01AA
-8D4C	7F0E
-8D4E	0050
-8D50	8CD6
-8D52	00BE
-8D54	B20C
-8D56	2E2E
-8D58	B21A
-8D5A	0604
-8D5C	B21E
-8D5E	4000
-8D60	B222
-8D62	60C0
-8D64	B266
-8D66	05C0
-8D68	B268
-8D6A	E380
-8D6C	B270
-8D6E	8887
-8D70	BEDE
-8D72	7E94
-8D74	BEE2
-8D76	0C00
-8D78	BEE6
-8D7A	002C
-8D7C	D20C
-8D7E	0809
-8D80	D27A
-8D82	0005
-8D84	D4B0
-8D86	0234
-8D88	D4B4
-8D8A	007C
-8D8C	D4BC
-8D8E	0037
-8D90	D4C0
-8D92	0037
-8D94	D4CC
-8D96	0001
-8D98	D4D0
-8D9A	000A
-8D9C	D4DA
-8D9E	001A
-8DA0	D4E6
-8DA2	0000
-8DA4	D5BC
-8DA6	00C4
-8DA8	D5BE
-8DAA	00C4
-8DAC	D5C8
-8DAE	0352
-8DB0	D5CA
-8DB2	0352
-8DB4	D682
-8DB6	05C0
-8DB8	D684
-8DBA	E380
-8DBC	D896
-8DBE	0020
-8DC0	D8A2
-8DC2	0101
-8DC4	DADA
-8DC6	0200
-8DC8	DADE
-8DCA	01DF
-8DCC	DB0C
-8DCE	8000
-8DD0	DB3C
-8DD2	D212
-8DD4	DB3E
-8DD6	D212
-8DD8	DB6E
-8DDA	01DF
-8DDC	DB9C
-8DDE	8000
-8DE0	DBCC
-8DE2	D212
-8DE4	DBCE
-8DE6	D212
-8DE8	DD70
-8DEA	7E03
-8DEC	DE38
-8DEE	2E2E
-8DF0	F014
-8DF2	0006
-8DF4	FFFE
-8DF6	2401
-8DF8	FFFD
-8DFA	2A42
-8DFC	0000
-8DFE	2A44
-8E00	0000
-8E02	2A56
-8E04	0001
-8E06	4292
-8E08	0001
-8E0A	4398
-8E0C	000C
-8E0E	FFFE
-8E10	2402
-8E12	FFFD
-8E14	84C4
-8E16	0000
-8E18	A570
-8E1A	FDA2
-8E1C	A584
-8E1E	0A00
-8E20	A586
-8E22	0A00
-8E24	FFFE
-8E26	2400
-8E28	FFFD
-8E2A	0086
-8E2C	0A00
-8E2E	020A
-8E30	0001
-8E32	021E
-8E34	0003
-8E36	0228
-8E38	0002
-8E3A	0260
-8E3C	0300
-8E3E	0262
-8E40	0001
-8E42	0722
-8E44	0004
-8E46	0808
-8E48	0000
-8E4A	0342
-8E4C	1770
-8E4E	0000
-8E50	FFFF
-8E52	0008
-8E54	2400
-8E56	7274
-8E58	0000
-8E5A	0000
-8E5C	0000
-8E5E	0000
-8E60	FFFF
-8E62	0008
-8E64	2400
-8E66	7314
-8E68	0000
-8E6A	0000
-8E6C	0000
-8E6E	0000
-8E70	FFFF
-8E72	0010
-8E74	2402
-8E76	A548
-8E78	0200
-8E7A	4000
-8E7C	8000
-8E7E	A000
-8E80	4001
-8E82	8002
-8E84	0005
-8E86	000A
-8E88	FFFF
-8E8A	0010
-8E8C	2402
-8E8E	A55C
-8E90	0E00
-8E92	2000
-8E94	2800
-8E96	1400
-8E98	2200
-8E9A	2800
-8E9C	2C00
-8E9E	2E00
-8EA0	FFFF
-8EA2	000A
-8EA4	2402
-8EA6	A596
-8EA8	2C00
-8EAA	2C00
-8EAC	2E00
-8EAE	16FC
-8EB0	0000
-8EB2	0000
-8EB4	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/Milkway_tele_mode_0823.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/Milkway_tele_mode_0823.xlsx
deleted file mode 100755
index c640e78c..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/Milkway_tele_mode_0823.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/initSettings_long_1.3zp_1224.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/initSettings_long_1.3zp_1224.txt
deleted file mode 100755
index 0833cc2f..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/initSettings_long_1.3zp_1224.txt
+++ /dev/null
@@ -1,6356 +0,0 @@
-FCFC	4000
-0000	000D
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0000
-FCFC	2001
-3C60	0000
-FCFC	2002
-A614	8280
-A616	0100
-A618	1753
-A61A	02FC
-A61C	E702
-A61E	83EA
-A620	B7E7
-A622	0124
-A624	9387
-A626	0787
-A628	83A4
-A62A	870D
-A62C	03A4
-A62E	C70D
-A630	0146
-A632	A685
-A634	2285
-A636	9740
-A638	01FC
-A63A	E780
-A63C	E040
-A63E	97B0
-A640	FEFB
-A642	E780
-A644	60DC
-A646	0546
-A648	A685
-A64A	2285
-A64C	9740
-A64E	01FC
-A650	E780
-A652	803F
-A654	37A7
-A656	0224
-A658	9307
-A65A	8754
-A65C	03C6
-A65E	C702
-A660	8546
-A662	6301
-A664	D602
-A666	83C6
-A668	0700
-A66A	0947
-A66C	6384
-A66E	E608
-A670	B7C7
-A672	0224
-A674	83A7
-A676	07B7
-A678	0545
-A67A	8297
-A67C	1753
-A67E	02FC
-A680	6700
-A682	83E6
-A684	03D5
-A686	4705
-A688	05C9
-A68A	83D8
-A68C	2705
-A68E	B7E6
-A690	0124
-A692	83D5
-A694	665F
-A696	1307
-A698	8754
-A69A	8146
-A69C	2548
-A69E	0356
-A6A0	E702
-A6A2	0907
-A6A4	63E0
-A6A6	C50E
-A6A8	8506
-A6AA	E39A
-A6AC	06FF
-A6AE	3707
-A6B0	0040
-A6B2	3A95
-A6B4	2310
-A6B6	1501
-A6B8	03D5
-A6BA	6705
-A6BC	4DD5
-A6BE	83D8
-A6C0	2705
-A6C2	37E7
-A6C4	0124
-A6C6	8355
-A6C8	675F
-A6CA	BE86
-A6CC	0147
-A6CE	2548
-A6D0	03D6
-A6D2	E602
-A6D4	8906
-A6D6	63EE
-A6D8	C50A
-A6DA	0507
-A6DC	E31A
-A6DE	07FF
-A6E0	3707
-A6E2	0040
-A6E4	3A95
-A6E6	2310
-A6E8	1501
-A6EA	83C6
-A6EC	0700
-A6EE	0947
-A6F0	E390
-A6F2	E6F8
-A6F4	03D5
-A6F6	8702
-A6F8	1DC5
-A6FA	83D8
-A6FC	6702
-A6FE	37F7
-A700	0124
-A702	8355
-A704	A781
-A706	BE86
-A708	0147
-A70A	2548
-A70C	03D6
-A70E	2600
-A710	8906
-A712	63E3
-A714	C506
-A716	0507
-A718	E31A
-A71A	07FF
-A71C	3707
-A71E	0040
-A720	3A95
-A722	2310
-A724	1501
-A726	03D5
-A728	A702
-A72A	39D1
-A72C	83D8
-A72E	6702
-A730	37F7
-A732	0124
-A734	8355
-A736	A781
-A738	BE86
-A73A	0147
-A73C	2548
-A73E	03D6
-A740	2600
-A742	8906
-A744	63E4
-A746	C502
-A748	0507
-A74A	E31A
-A74C	07FF
-A74E	B707
-A750	0040
-A752	3E95
-A754	B7C7
-A756	0224
-A758	83A7
-A75A	07B7
-A75C	2310
-A75E	1501
-A760	0545
-A762	8297
-A764	1753
-A766	02FC
-A768	6700
-A76A	03D8
-A76C	2107
-A76E	0607
-A770	BA97
-A772	83D8
-A774	4700
-A776	E1BF
-A778	2107
-A77A	0607
-A77C	3E97
-A77E	8358
-A780	4700
-A782	69BF
-A784	1387
-A786	0602
-A788	0607
-A78A	3E97
-A78C	8358
-A78E	0700
-A790	39BF
-A792	1307
-A794	0702
-A796	0607
-A798	3E97
-A79A	8358
-A79C	0700
-A79E	89B7
-A7A0	1753
-A7A2	02FC
-A7A4	E702
-A7A6	83CF
-A7A8	3284
-A7AA	B7E7
-A7AC	0124
-A7AE	032B
-A7B0	4600
-A7B2	832A
-A7B4	4609
-A7B6	032A
-A7B8	C604
-A7BA	0348
-A7BC	8600
-A7BE	9387
-A7C0	0787
-A7C2	0346
-A7C4	8609
-A7C6	0347
-A7C8	0405
-A7CA	83AB
-A7CC	070E
-A7CE	03AC
-A7D0	470E
-A7D2	3318
-A7D4	0B01
-A7D6	3317
-A7D8	EA00
-A7DA	3396
-A7DC	CA00
-A7DE	2322
-A7E0	0401
-A7E2	78C4
-A7E4	AA84
-A7E6	2E89
-A7E8	232A
-A7EA	C408
-A7EC	DE85
-A7EE	6285
-A7F0	0146
-A7F2	B689
-A7F4	9740
-A7F6	01FC
-A7F8	E780
-A7FA	0025
-A7FC	CE86
-A7FE	2286
-A800	CA85
-A802	2685
-A804	97B0
-A806	FDFB
-A808	E780
-A80A	00B0
-A80C	6285
-A80E	0546
-A810	DE85
-A812	9740
-A814	01FC
-A816	E780
-A818	2023
-A81A	B7C7
-A81C	0224
-A81E	83A7
-A820	07B7
-A822	2322
-A824	6401
-A826	232A
-A828	5409
-A82A	2326
-A82C	4405
-A82E	0145
-A830	8297
-A832	1753
-A834	02FC
-A836	6700
-A838	E3C9
-A83A	0100
-A83C	1753
-A83E	02FC
-A840	E702
-A842	43C8
-A844	2A84
-A846	EFE0
-A848	EFA9
-A84A	A147
-A84C	6306
-A84E	F400
-A850	1753
-A852	02FC
-A854	6700
-A856	43C9
-A858	9770
-A85A	FFFB
-A85C	E780
-A85E	000C
-A860	39C5
-A862	B737
-A864	0124
-A866	83C7
-A868	271A
-A86A	FDD3
-A86C	3784
-A86E	0040
-A870	8355
-A872	E4F3
-A874	0D45
-A876	93E5
-A878	0524
-A87A	97D0
-A87C	FFFB
-A87E	E780
-A880	A00A
-A882	8355
-A884	24F7
-A886	B7A7
-A888	0124
-A88A	9387
-A88C	0753
-A88E	03D7
-A890	47B6
-A892	C205
-A894	C181
-A896	1377
-A898	F7DB
-A89A	93F5
-A89C	F5DB
-A89E	4145
-A8A0	2392
-A8A2	E7B6
-A8A4	97D0
-A8A6	FFFB
-A8A8	E780
-A8AA	0008
-A8AC	55B7
-A8AE	9770
-A8B0	FFFB
-A8B2	E780
-A8B4	A003
-A8B6	55D5
-A8B8	9770
-A8BA	FFFB
-A8BC	E780
-A8BE	807D
-A8C0	19C9
-A8C2	B797
-A8C4	0124
-A8C6	9387
-A8C8	07D7
-A8CA	03C7
-A8CC	8703
-A8CE	83C7
-A8D0	2706
-A8D2	6306
-A8D4	F706
-A8D6	9770
-A8D8	FFFB
-A8DA	E780
-A8DC	A07B
-A8DE	51D1
-A8E0	B797
-A8E2	0124
-A8E4	9387
-A8E6	07D7
-A8E8	03C7
-A8EA	C701
-A8EC	83C7
-A8EE	2706
-A8F0	E319
-A8F2	F7F6
-A8F4	B727
-A8F6	0224
-A8F8	0564
-A8FA	9387
-A8FC	076B
-A8FE	A297
-A900	03C7
-A902	F780
-A904	8547
-A906	6317
-A908	F700
-A90A	B737
-A90C	0124
-A90E	83C7
-A910	57A5
-A912	B1C3
-A914	B787
-A916	0040
-A918	83D5
-A91A	E7F3
-A91C	0D45
-A91E	93E5
-A920	0501
-A922	97D0
-A924	FFFB
-A926	E780
-A928	2000
-A92A	B7A7
-A92C	0124
-A92E	9387
-A930	0753
-A932	03D7
-A934	47B6
-A936	3D9B
-A938	2392
-A93A	E7B6
-A93C	1DB7
-A93E	B727
-A940	0224
-A942	0564
-A944	9387
-A946	076B
-A948	A297
-A94A	03C7
-A94C	F780
-A94E	9147
-A950	E30D
-A952	F7FA
-A954	C1B7
-A956	B787
-A958	0040
-A95A	83D5
-A95C	E7F3
-A95E	0D45
-A960	93E5
-A962	0504
-A964	97D0
-A966	FFFB
-A968	E780
-A96A	00FC
-A96C	B797
-A96E	0124
-A970	9387
-A972	0753
-A974	A297
-A976	03D7
-A978	47B6
-A97A	1377
-A97C	F7FB
-A97E	2392
-A980	E7B6
-A982	C5B5
-A984	3571
-A986	22CF
-A988	26CD
-A98A	7324
-A98C	2034
-A98E	F324
-A990	1034
-A992	7360
-A994	0430
-A996	06CB
-A998	16C9
-A99A	1AC7
-A99C	1EC5
-A99E	2AC3
-A9A0	2EC1
-A9A2	B2DE
-A9A4	B6DC
-A9A6	BADA
-A9A8	BED8
-A9AA	C2D6
-A9AC	C6D4
-A9AE	F2D2
-A9B0	F6D0
-A9B2	FACE
-A9B4	FECC
-A9B6	82E2
-A9B8	86E0
-A9BA	0AFE
-A9BC	0EFC
-A9BE	12FA
-A9C0	16F8
-A9C2	1AF6
-A9C4	1EF4
-A9C6	2AF2
-A9C8	2EF0
-A9CA	32EE
-A9CC	36EC
-A9CE	3AEA
-A9D0	3EE8
-A9D2	42E6
-A9D4	46E4
-A9D6	72E2
-A9D8	76E0
-A9DA	272E
-A9DC	E1FF
-A9DE	272C
-A9E0	F1FF
-A9E2	9770
-A9E4	FFFB
-A9E6	E780
-A9E8	60F3
-A9EA	19C5
-A9EC	9770
-A9EE	FFFB
-A9F0	E780
-A9F2	C0EF
-A9F4	631C
-A9F6	0512
-A9F8	9305
-A9FA	0024
-A9FC	4145
-A9FE	97D0
-AA00	FFFB
-AA02	E780
-AA04	60F9
-AA06	8145
-AA08	9377
-AA0A	1500
-AA0C	85C7
-AA0E	37D7
-AA10	0124
-AA12	B7A7
-AA14	0124
-AA16	1307
-AA18	07C4
-AA1A	9387
-AA1C	0753
-AA1E	0356
-AA20	4707
-AA22	83D6
-AA24	A7B6
-AA26	0506
-AA28	93E6
-AA2A	1600
-AA2C	231A
-AA2E	C706
-AA30	2395
-AA32	D7B6
-AA34	9377
-AA36	2500
-AA38	85C7
-AA3A	37D7
-AA3C	0124
-AA3E	B7A7
-AA40	0124
-AA42	1307
-AA44	07C4
-AA46	9387
-AA48	0753
-AA4A	0356
-AA4C	C70C
-AA4E	83D6
-AA50	A7B6
-AA52	0506
-AA54	93E6
-AA56	2600
-AA58	2316
-AA5A	C70C
-AA5C	2395
-AA5E	D7B6
-AA60	9377
-AA62	0520
-AA64	1375
-AA66	0504
-AA68	C5C3
-AA6A	B7D7
-AA6C	0124
-AA6E	9387
-AA70	07C4
-AA72	03D7
-AA74	6708
-AA76	0507
-AA78	2393
-AA7A	E708
-AA7C	D1C5
-AA7E	37A7
-AA80	0124
-AA82	1307
-AA84	0753
-AA86	8356
-AA88	A7B6
-AA8A	93E6
-AA8C	0620
-AA8E	2315
-AA90	D7B6
-AA92	11C9
-AA94	03D6
-AA96	A708
-AA98	0506
-AA9A	2395
-AA9C	C708
-AA9E	93E6
-AAA0	0604
-AAA2	2315
-AAA4	D7B6
-AAA6	DA40
-AAA8	CA42
-AAAA	3A43
-AAAC	AA43
-AAAE	1A45
-AAB0	8A45
-AAB2	7656
-AAB4	E656
-AAB6	5657
-AAB8	C657
-AABA	3658
-AABC	A658
-AABE	165E
-AAC0	865E
-AAC2	764F
-AAC4	E64F
-AAC6	1660
-AAC8	8660
-AACA	7271
-AACC	E271
-AACE	5272
-AAD0	C272
-AAD2	3273
-AAD4	A273
-AAD6	1275
-AAD8	8275
-AADA	7266
-AADC	E266
-AADE	5267
-AAE0	C267
-AAE2	3268
-AAE4	A268
-AAE6	126E
-AAE8	826E
-AAEA	072F
-AAEC	C1FF
-AAEE	872F
-AAF0	81FF
-AAF2	7370
-AAF4	0430
-AAF6	7390
-AAF8	1434
-AAFA	7310
-AAFC	2434
-AAFE	7A44
-AB00	EA44
-AB02	0D61
-AB04	7300
-AB06	2030
-AB08	59DD
-AB0A	B7D7
-AB0C	0124
-AB0E	9387
-AB10	07C4
-AB12	03D7
-AB14	A708
-AB16	0507
-AB18	2395
-AB1A	E708
-AB1C	C9D5
-AB1E	37A7
-AB20	0124
-AB22	1307
-AB24	0753
-AB26	8356
-AB28	A7B6
-AB2A	95BF
-AB2C	B7A7
-AB2E	0124
-AB30	83D5
-AB32	8709
-AB34	4145
-AB36	97D0
-AB38	FFFB
-AB3A	E780
-AB3C	E0E5
-AB3E	8545
-AB40	E1B5
-AB42	0100
-AB44	8280
-AB46	0100
-AB48	1753
-AB4A	02FC
-AB4C	E702
-AB4E	8397
-AB50	37E4
-AB52	0124
-AB54	1304
-AB56	044C
-AB58	8344
-AB5A	E40A
-AB5C	8547
-AB5E	2307
-AB60	F40A
-AB62	97A0
-AB64	FDFB
-AB66	E780
-AB68	20E3
-AB6A	2307
-AB6C	940A
-AB6E	1753
-AB70	02FC
-AB72	6700
-AB74	6397
-AB76	0100
-AB78	B7A7
-AB7A	0224
-AB7C	83C7
-AB7E	075A
-AB80	0547
-AB82	6383
-AB84	E700
-AB86	8280
-AB88	1753
-AB8A	02FC
-AB8C	E702
-AB8E	E391
-AB90	3794
-AB92	0124
-AB94	1304
-AB96	0453
-AB98	0347
-AB9A	041B
-AB9C	4111
-AB9E	6307
-ABA0	F700
-ABA2	4101
-ABA4	1753
-ABA6	02FC
-ABA8	6700
-ABAA	6393
-ABAC	8947
-ABAE	E31A
-ABB0	F5FE
-ABB2	8347
-ABB4	3441
-ABB6	ADC3
-ABB8	83A9
-ABBA	0500
-ABBC	2EC6
-ABBE	97C0
-ABC0	01FC
-ABC2	E780
-ABC4	20B8
-ABC6	AA84
-ABC8	9780
-ABCA	01FC
-ABCC	E780
-ABCE	80C7
-ABD0	B245
-ABD2	2A89
-ABD4	9C41
-ABD6	63F3
-ABD8	9700
-ABDA	A687
-ABDC	8851
-ABDE	9CC1
-ABE0	2EC6
-ABE2	4A95
-ABE4	97B0
-ABE6	00FC
-ABE8	E780
-ABEA	00C5
-ABEC	B245
-ABEE	AA84
-ABF0	E8C9
-ABF2	3385
-ABF4	2901
-ABF6	97B0
-ABF8	00FC
-ABFA	E780
-ABFC	E0C3
-ABFE	8567
-AC00	3E94
-AC02	8327
-AC04	C483
-AC06	2695
-AC08	B245
-AC0A	63F3
-AC0C	A700
-AC0E	AA87
-AC10	2322
-AC12	F498
-AC14	E8C5
-AC16	71B7
-AC18	0145
-AC1A	2EC6
-AC1C	97B0
-AC1E	01FC
-AC20	E780
-AC22	8035
-AC24	B245
-AC26	AA89
-AC28	51BF
-AC2A	0100
-AC2C	1753
-AC2E	02FC
-AC30	E702
-AC32	4389
-AC34	2A84
-AC36	EFE0
-AC38	AFFC
-AC3A	01E8
-AC3C	B7D7
-AC3E	0124
-AC40	03A7
-AC42	87C1
-AC44	9147
-AC46	6306
-AC48	F700
-AC4A	1753
-AC4C	02FC
-AC4E	6700
-AC50	A389
-AC52	B7D7
-AC54	0124
-AC56	83C7
-AC58	07FA
-AC5A	E5DB
-AC5C	B747
-AC5E	0124
-AC60	83C7
-AC62	27C4
-AC64	FDF3
-AC66	97E0
-AC68	00FC
-AC6A	E780
-AC6C	A097
-AC6E	B787
-AC70	0224
-AC72	0547
-AC74	A380
-AC76	E74E
-AC78	C9BF
-AC7A	0100
-AC7C	1753
-AC7E	02FC
-AC80	E702
-AC82	4384
-AC84	3784
-AC86	0224
-AC88	1304
-AC8A	C449
-AC8C	8347
-AC8E	5404
-AC90	99E7
-AC92	EFE0
-AC94	7F82
-AC96	1753
-AC98	02FC
-AC9A	6700
-AC9C	E384
-AC9E	97E0
-ACA0	00FC
-ACA2	E780
-ACA4	20AF
-ACA6	A302
-ACA8	0404
-ACAA	EFE0
-ACAC	FF80
-ACAE	1753
-ACB0	02FC
-ACB2	6700
-ACB4	6383
-ACB6	0100
-ACB8	1753
-ACBA	02FC
-ACBC	E702
-ACBE	8380
-ACC0	B7E7
-ACC2	0124
-ACC4	9387
-ACC6	0787
-ACC8	03A9
-ACCA	870E
-ACCC	83A4
-ACCE	C70E
-ACD0	0146
-ACD2	CA85
-ACD4	2A84
-ACD6	2685
-ACD8	9740
-ACDA	01FC
-ACDC	E780
-ACDE	C0D6
-ACE0	2285
-ACE2	97A0
-ACE4	FFFB
-ACE6	E780
-ACE8	603E
-ACEA	0546
-ACEC	CA85
-ACEE	2685
-ACF0	9740
-ACF2	01FC
-ACF4	E780
-ACF6	40D5
-ACF8	8547
-ACFA	630F
-ACFC	F400
-ACFE	9147
-AD00	630C
-AD02	F400
-AD04	B7C7
-AD06	0224
-AD08	83A7
-AD0A	07B7
-AD0C	0945
-AD0E	8297
-AD10	1743
-AD12	02FC
-AD14	6700
-AD16	437D
-AD18	9770
-AD1A	FFFB
-AD1C	E780
-AD1E	00C0
-AD20	75F1
-AD22	9770
-AD24	FFFB
-AD26	E780
-AD28	60BC
-AD2A	69DD
-AD2C	9770
-AD2E	FFFB
-AD30	E780
-AD32	4036
-AD34	19C9
-AD36	B797
-AD38	0124
-AD3A	9387
-AD3C	07D7
-AD3E	03C7
-AD40	8703
-AD42	83C7
-AD44	2706
-AD46	6306
-AD48	F706
-AD4A	9770
-AD4C	FFFB
-AD4E	E780
-AD50	6034
-AD52	4DD9
-AD54	B797
-AD56	0124
-AD58	9387
-AD5A	07D7
-AD5C	03C7
-AD5E	C701
-AD60	83C7
-AD62	2706
-AD64	E310
-AD66	F7FA
-AD68	B7C7
-AD6A	0224
-AD6C	83A7
-AD6E	47B7
-AD70	B706
-AD72	0040
-AD74	1386
-AD76	4606
-AD78	8965
-AD7A	3E96
-AD7C	1387
-AD7E	061F
-AD80	9385
-AD82	F5F1
-AD84	2310
-AD86	B600
-AD88	3E97
-AD8A	7D56
-AD8C	2310
-AD8E	C700
-AD90	37D6
-AD92	0124
-AD94	1306
-AD96	06E7
-AD98	0357
-AD9A	C605
-AD9C	0356
-AD9E	6606
-ADA0	9386
-ADA2	861D
-ADA4	3297
-ADA6	4207
-ADA8	B697
-ADAA	4183
-ADAC	2390
-ADAE	E700
-ADB0	91BF
-ADB2	B7C7
-ADB4	0224
-ADB6	83A7
-ADB8	47B7
-ADBA	B706
-ADBC	0040
-ADBE	1386
-ADC0	4606
-ADC2	8965
-ADC4	3E96
-ADC6	1387
-ADC8	061F
-ADCA	9385
-ADCC	F5F1
-ADCE	2310
-ADD0	B600
-ADD2	3E97
-ADD4	7D56
-ADD6	2310
-ADD8	C700
-ADDA	37D6
-ADDC	0124
-ADDE	1306
-ADE0	06E7
-ADE2	0357
-ADE4	0606
-ADE6	9386
-ADE8	A61D
-ADEA	0356
-ADEC	6606
-ADEE	5DBF
-ADF0	1743
-ADF2	02FC
-ADF4	E702
-ADF6	036D
-ADF8	B7D7
-ADFA	0024
-ADFC	83C7
-ADFE	476D
-AE00	8544
-AE02	6380
-AE04	9714
-AE06	B7E7
-AE08	0024
-AE0A	03C4
-AE0C	C784
-AE0E	B7A7
-AE10	0124
-AE12	83C7
-AE14	6792
-AE16	3334
-AE18	8000
-AE1A	3304
-AE1C	8040
-AE1E	7998
-AE20	1304
-AE22	6402
-AE24	EDE7
-AE26	B767
-AE28	0024
-AE2A	9387
-AE2C	0733
-AE2E	03D7
-AE30	E75B
-AE32	19C7
-AE34	1347
-AE36	F7FF
-AE38	618F
-AE3A	1314
-AE3C	0701
-AE3E	4180
-AE40	83D7
-AE42	075C
-AE44	0D45
-AE46	5D8C
-AE48	4204
-AE4A	4180
-AE4C	A285
-AE4E	97D0
-AE50	FFFB
-AE52	E780
-AE54	A0BB
-AE56	9315
-AE58	0501
-AE5A	C181
-AE5C	AA84
-AE5E	6309
-AE60	B400
-AE62	0565
-AE64	A18D
-AE66	2D05
-AE68	97A0
-AE6A	FFFB
-AE6C	E780
-AE6E	8046
-AE70	1395
-AE72	0401
-AE74	93F7
-AE76	1400
-AE78	4181
-AE7A	91CB
-AE7C	B7D7
-AE7E	0124
-AE80	9387
-AE82	07C4
-AE84	03D7
-AE86	4707
-AE88	0507
-AE8A	239A
-AE8C	E706
-AE8E	9377
-AE90	2500
-AE92	91CB
-AE94	B7D7
-AE96	0124
-AE98	9387
-AE9A	07C4
-AE9C	03D7
-AE9E	C70C
-AEA0	0507
-AEA2	2396
-AEA4	E70C
-AEA6	9377
-AEA8	4500
-AEAA	91CB
-AEAC	B7D7
-AEAE	0124
-AEB0	9387
-AEB2	07C4
-AEB4	03D7
-AEB6	E70C
-AEB8	0507
-AEBA	2397
-AEBC	E70C
-AEBE	9377
-AEC0	0502
-AEC2	91CB
-AEC4	B7D7
-AEC6	0124
-AEC8	9387
-AECA	07C4
-AECC	03D7
-AECE	070F
-AED0	0507
-AED2	2398
-AED4	E70E
-AED6	9377
-AED8	0520
-AEDA	91CB
-AEDC	B7D7
-AEDE	0124
-AEE0	9387
-AEE2	07C4
-AEE4	03D7
-AEE6	6708
-AEE8	0507
-AEEA	2393
-AEEC	E708
-AEEE	1375
-AEF0	0504
-AEF2	11C9
-AEF4	B7D7
-AEF6	0124
-AEF8	9387
-AEFA	07C4
-AEFC	03D7
-AEFE	A708
-AF00	0507
-AF02	2395
-AF04	E708
-AF06	1743
-AF08	02FC
-AF0A	6700
-AF0C	E35D
-AF0E	B7D7
-AF10	0124
-AF12	83D7
-AF14	A7E7
-AF16	81DB
-AF18	9760
-AF1A	FEFB
-AF1C	E780
-AF1E	8068
-AF20	6311
-AF22	9506
-AF24	B797
-AF26	0124
-AF28	9387
-AF2A	07D7
-AF2C	03C7
-AF2E	C701
-AF30	83C7
-AF32	2706
-AF34	6307
-AF36	F704
-AF38	1364
-AF3A	0424
-AF3C	4204
-AF3E	4180
-AF40	11A0
-AF42	0144
-AF44	B767
-AF46	0024
-AF48	9387
-AF4A	0733
-AF4C	03C7
-AF4E	273B
-AF50	E30F
-AF52	07EC
-AF54	37A7
-AF56	0124
-AF58	0347
-AF5A	6792
-AF5C	E309
-AF5E	07EC
-AF60	37D7
-AF62	0124
-AF64	0357
-AF66	A7E7
-AF68	E303
-AF6A	07EC
-AF6C	3797
-AF6E	0124
-AF70	0347
-AF72	1700
-AF74	E30D
-AF76	07EA
-AF78	1374
-AF7A	F4DF
-AF7C	4204
-AF7E	4180
-AF80	7DB5
-AF82	9760
-AF84	FEFB
-AF86	E780
-AF88	E061
-AF8A	8547
-AF8C	E31C
-AF8E	F5FA
-AF90	B797
-AF92	0124
-AF94	9387
-AF96	07D7
-AF98	03C7
-AF9A	C701
-AF9C	83C7
-AF9E	2706
-AFA0	E312
-AFA2	F7FA
-AFA4	1364
-AFA6	0420
-AFA8	4204
-AFAA	4180
-AFAC	61BF
-AFAE	0100
-AFB0	7171
-AFB2	22D7
-AFB4	26D5
-AFB6	7324
-AFB8	2034
-AFBA	F324
-AFBC	1034
-AFBE	7360
-AFC0	0430
-AFC2	2EC5
-AFC4	A565
-AFC6	BEDC
-AFC8	06D3
-AFCA	16D1
-AFCC	1ACF
-AFCE	1ECD
-AFD0	22CB
-AFD2	2AC7
-AFD4	32C3
-AFD6	36C1
-AFD8	BADE
-AFDA	C2DA
-AFDC	C6D8
-AFDE	F2D0
-AFE0	F6CE
-AFE2	FACC
-AFE4	FECA
-AFE6	82E2
-AFE8	86E0
-AFEA	0AFE
-AFEC	0EFC
-AFEE	12FA
-AFF0	16F8
-AFF2	1AF6
-AFF4	1EF4
-AFF6	2AF2
-AFF8	2EF0
-AFFA	32EE
-AFFC	26C9
-AFFE	CAD6
-B000	CED4
-B002	D2D2
-B004	9385
-B006	0540
-B008	0545
-B00A	36EC
-B00C	3AEA
-B00E	3EE8
-B010	42E6
-B012	46E4
-B014	72E2
-B016	76E0
-B018	272E
-B01A	E1FF
-B01C	272C
-B01E	F1FF
-B020	97D0
-B022	FFFB
-B024	E780
-B026	4097
-B028	A167
-B02A	E98F
-B02C	2A84
-B02E	6394
-B030	0718
-B032	B764
-B034	0124
-B036	9384
-B038	0440
-B03A	8567
-B03C	E18F
-B03E	CDCF
-B040	37D7
-B042	0124
-B044	3789
-B046	0224
-B048	1307
-B04A	07C4
-B04C	1309
-B04E	C949
-B050	8356
-B052	670E
-B054	8327
-B056	0905
-B058	8506
-B05A	8507
-B05C	2328
-B05E	F904
-B060	2313
-B062	D70E
-B064	858B
-B066	639F
-B068	071A
-B06A	8547
-B06C	A30A
-B06E	F904
-B070	9770
-B072	FFFB
-B074	E780
-B076	00FF
-B078	19C5
-B07A	0357
-B07C	4905
-B07E	9307
-B080	1010
-B082	6306
-B084	F724
-B086	DC50
-B088	0945
-B08A	8297
-B08C	9770
-B08E	FFFB
-B090	E780
-B092	C085
-B094	11C5
-B096	9770
-B098	FFFB
-B09A	E780
-B09C	2088
-B09E	55C5
-B0A0	9760
-B0A2	00FC
-B0A4	E780
-B0A6	405A
-B0A8	B787
-B0AA	0024
-B0AC	83C7
-B0AE	078C
-B0B0	AA89
-B0B2	6392
-B0B4	071C
-B0B6	B7D7
-B0B8	0124
-B0BA	9387
-B0BC	07E7
-B0BE	BC5F
-B0C0	639A
-B0C2	0716
-B0C4	3799
-B0C6	0124
-B0C8	1309
-B0CA	0953
-B0CC	B727
-B0CE	0024
-B0D0	83C7
-B0D2	7752
-B0D4	6396
-B0D6	071E
-B0D8	0345
-B0DA	C918
-B0DC	631D
-B0DE	051C
-B0E0	DC50
-B0E2	0D45
-B0E4	8297
-B0E6	4E85
-B0E8	9760
-B0EA	00FC
-B0EC	E780
-B0EE	005A
-B0F0	8567
-B0F2	3E99
-B0F4	2320
-B0F6	A9A2
-B0F8	1374
-B0FA	0440
-B0FC	21C4
-B0FE	B7D7
-B100	0124
-B102	9387
-B104	07C4
-B106	37A7
-B108	0124
-B10A	83D6
-B10C	670E
-B10E	1307
-B110	0753
-B112	0347
-B114	179B
-B116	8506
-B118	3784
-B11A	0224
-B11C	1304
-B11E	C449
-B120	1337
-B122	1700
-B124	2393
-B126	D70E
-B128	230A
-B12A	E404
-B12C	9770
-B12E	FFFB
-B130	E780
-B132	40F3
-B134	6306
-B136	0510
-B138	0357
-B13A	4405
-B13C	9307
-B13E	1010
-B140	6300
-B142	F710
-B144	DC50
-B146	1D45
-B148	8297
-B14A	9A50
-B14C	8A52
-B14E	7A43
-B150	EA43
-B152	5A44
-B154	CA44
-B156	3A45
-B158	AA45
-B15A	1A46
-B15C	8A46
-B15E	7657
-B160	E657
-B162	5658
-B164	C658
-B166	3659
-B168	A659
-B16A	165A
-B16C	065E
-B16E	F64E
-B170	664F
-B172	D64F
-B174	1660
-B176	8660
-B178	7271
-B17A	E271
-B17C	5272
-B17E	C272
-B180	3273
-B182	A273
-B184	1275
-B186	8275
-B188	7266
-B18A	E266
-B18C	5267
-B18E	C267
-B190	3268
-B192	A268
-B194	126E
-B196	826E
-B198	072F
-B19A	C1FF
-B19C	872F
-B19E	81FF
-B1A0	7370
-B1A2	0430
-B1A4	7390
-B1A6	1434
-B1A8	7310
-B1AA	2434
-B1AC	3A54
-B1AE	AA54
-B1B0	4D61
-B1B2	7300
-B1B4	2030
-B1B6	37D9
-B1B8	0124
-B1BA	1309
-B1BC	09C4
-B1BE	8357
-B1C0	490E
-B1C2	B764
-B1C4	0124
-B1C6	9384
-B1C8	0440
-B1CA	D850
-B1CC	8507
-B1CE	0145
-B1D0	2312
-B1D2	F90E
-B1D4	0297
-B1D6	9760
-B1D8	FFFB
-B1DA	E780
-B1DC	2071
-B1DE	25E5
-B1E0	B729
-B1E2	0024
-B1E4	3799
-B1E6	0124
-B1E8	9389
-B1EA	0933
-B1EC	1309
-B1EE	0953
-B1F0	056A
-B1F2	83C7
-B1F4	791F
-B1F6	4A9A
-B1F8	2320
-B1FA	0AA2
-B1FC	B9EF
-B1FE	0345
-B200	C918
-B202	2DE5
-B204	83C7
-B206	0920
-B208	89C7
-B20A	0327
-B20C	4AB3
-B20E	630A
-B210	F700
-B212	97E0
-B214	00FC
-B216	E780
-B218	E0D2
-B21A	DC50
-B21C	0545
-B21E	8297
-B220	29BD
-B222	01A0
-B224	8547
-B226	230A
-B228	0904
-B22A	A30A
-B22C	0904
-B22E	2328
-B230	F904
-B232	3DBD
-B234	7D55
-B236	9770
-B238	01FC
-B23A	E780
-B23C	A004
-B23E	59B5
-B240	EFE0
-B242	5FD9
-B244	01B7
-B246	9760
-B248	FFFB
-B24A	E780
-B24C	206D
-B24E	49F9
-B250	8357
-B252	490E
-B254	858B
-B256	C9F7
-B258	CDBD
-B25A	9770
-B25C	01FC
-B25E	E780
-B260	2003
-B262	2311
-B264	A94E
-B266	0345
-B268	C918
-B26A	49DD
-B26C	97C0
-B26E	FFFB
-B270	E780
-B272	40B4
-B274	41BF
-B276	9770
-B278	01FC
-B27A	E780
-B27C	6001
-B27E	3799
-B280	0124
-B282	1309
-B284	0953
-B286	8D67
-B288	CA97
-B28A	03C7
-B28C	D76F
-B28E	232E
-B290	A94E
-B292	8547
-B294	6306
-B296	F700
-B298	8327
-B29A	094F
-B29C	E377
-B29E	F5EA
-B2A0	9760
-B2A2	00FC
-B2A4	E780
-B2A6	80FC
-B2A8	9770
-B2AA	01FC
-B2AC	E780
-B2AE	40FE
-B2B0	2320
-B2B2	A950
-B2B4	21BD
-B2B6	97C0
-B2B8	FFFB
-B2BA	E780
-B2BC	A0B2
-B2BE	0DB5
-B2C0	9770
-B2C2	01FC
-B2C4	E780
-B2C6	C0FC
-B2C8	2312
-B2CA	A94E
-B2CC	31B5
-B2CE	EFE0
-B2D0	7FD0
-B2D2	55BB
-B2D4	1743
-B2D6	02FC
-B2D8	E702
-B2DA	C31E
-B2DC	2A84
-B2DE	EFD0
-B2E0	BFA7
-B2E2	8947
-B2E4	6306
-B2E6	F400
-B2E8	1743
-B2EA	02FC
-B2EC	6700
-B2EE	C31F
-B2F0	B7E7
-B2F2	0024
-B2F4	03D7
-B2F6	C7C8
-B2F8	8564
-B2FA	9387
-B2FC	F4B3
-B2FE	E315
-B300	F7FE
-B302	37A9
-B304	0224
-B306	1309
-B308	8954
-B30A	8347
-B30C	190C
-B30E	E9FF
-B310	9770
-B312	FFFB
-B314	E780
-B316	00E3
-B318	61F9
-B31A	9770
-B31C	FFFB
-B31E	E780
-B320	A0E3
-B322	79F1
-B324	3725
-B326	0224
-B328	1305
-B32A	05ED
-B32C	9700
-B32E	FFFB
-B330	E780
-B332	80FA
-B334	B797
-B336	0124
-B338	3767
-B33A	0124
-B33C	0327
-B33E	0740
-B340	9387
-B342	0753
-B344	A697
-B346	8544
-B348	1D45
-B34A	238D
-B34C	97CE
-B34E	0297
-B350	A300
-B352	990C
-B354	9780
-B356	01FC
-B358	E780
-B35A	0083
-B35C	51F5
-B35E	B727
-B360	0124
-B362	2380
-B364	8754
-B366	97B0
-B368	FEFB
-B36A	E780
-B36C	6002
-B36E	2301
-B370	990C
-B372	9DBF
-B374	1743
-B376	02FC
-B378	E702
-B37A	C314
-B37C	37A4
-B37E	0224
-B380	1304
-B382	8454
-B384	0347
-B386	240C
-B388	8547
-B38A	630A
-B38C	F700
-B38E	97B0
-B390	FEFB
-B392	E780
-B394	E069
-B396	1743
-B398	02FC
-B39A	6700
-B39C	E314
-B39E	9770
-B3A0	01FC
-B3A2	E780
-B3A4	607E
-B3A6	65F5
-B3A8	97B0
-B3AA	FEFB
-B3AC	E780
-B3AE	800F
-B3B0	2301
-B3B2	040C
-B3B4	E9BF
-B3B6	0100
-B3B8	1743
-B3BA	02FC
-B3BC	E702
-B3BE	8310
-B3C0	9D47
-B3C2	631F
-B3C4	F500
-B3C6	3794
-B3C8	0124
-B3CA	1304
-B3CC	0453
-B3CE	8567
-B3D0	A297
-B3D2	83C7
-B3D4	A7CF
-B3D6	9DE7
-B3D8	1743
-B3DA	02FC
-B3DC	6700
-B3DE	C310
-B3E0	2A84
-B3E2	EFD0
-B3E4	7FDD
-B3E6	8547
-B3E8	E318
-B3EA	F4FE
-B3EC	B7E7
-B3EE	0124
-B3F0	9387
-B3F2	074C
-B3F4	23AE
-B3F6	0710
-B3F8	23A4
-B3FA	077E
-B3FC	1743
-B3FE	02FC
-B400	6700
-B402	830E
-B404	9770
-B406	FFFB
-B408	E780
-B40A	C0D3
-B40C	71F5
-B40E	9770
-B410	FFFB
-B412	E780
-B414	60D4
-B416	69F1
-B418	8D67
-B41A	3E94
-B41C	8327
-B41E	846D
-B420	B724
-B422	0124
-B424	9384
-B426	045F
-B428	91EF
-B42A	83A7
-B42C	440E
-B42E	99CB
-B430	B7D7
-B432	0124
-B434	83C7
-B436	07FA
-B438	C5D3
-B43A	9700
-B43C	FFFB
-B43E	E780
-B440	20E3
-B442	59BF
-B444	83A7
-B446	C40A
-B448	C1DB
-B44A	0545
-B44C	9730
-B44E	FEFB
-B450	E780
-B452	8051
-B454	B735
-B456	202D
-B458	7578
-B45A	37F5
-B45C	202D
-B45E	9385
-B460	0560
-B462	1308
-B464	08A0
-B466	9168
-B468	1305
-B46A	0560
-B46C	B387
-B46E	0501
-B470	03C7
-B472	0700
-B474	9306
-B476	F00F
-B478	1316
-B47A	8701
-B47C	6186
-B47E	0607
-B480	6344
-B482	0600
-B484	9376
-B486	F70F
-B488	2380
-B48A	D700
-B48C	8507
-B48E	E391
-B490	B7FE
-B492	B385
-B494	1701
-B496	E39B
-B498	A5FC
-B49A	B7A7
-B49C	0224
-B49E	0547
-B4A0	0145
-B4A2	A384
-B4A4	E760
-B4A6	9730
-B4A8	FEFB
-B4AA	E780
-B4AC	E04B
-B4AE	B7D7
-B4B0	0124
-B4B2	83C7
-B4B4	07FA
-B4B6	8DD3
-B4B8	8327
-B4BA	846D
-B4BC	91FF
-B4BE	83A7
-B4C0	440E
-B4C2	99DB
-B4C4	9DBF
-B4C6	0100
-B4C8	1743
-B4CA	02FC
-B4CC	E702
-B4CE	83FF
-B4D0	B7D7
-B4D2	0124
-B4D4	9387
-B4D6	07F4
-B4D8	03C7
-B4DA	1705
-B4DC	2A84
-B4DE	11C7
-B4E0	03C7
-B4E2	1700
-B4E4	8947
-B4E6	6307
-B4E8	F704
-B4EA	B7E7
-B4EC	0124
-B4EE	9387
-B4F0	0787
-B4F2	83A4
-B4F4	870F
-B4F6	03A9
-B4F8	C70F
-B4FA	0146
-B4FC	A685
-B4FE	4A85
-B500	9730
-B502	01FC
-B504	E780
-B506	4054
-B508	2285
-B50A	97D0
-B50C	FEFB
-B50E	E780
-B510	20D7
-B512	4A85
-B514	0546
-B516	A685
-B518	9730
-B51A	01FC
-B51C	E780
-B51E	C052
-B520	B7C7
-B522	0224
-B524	83A7
-B526	07B7
-B528	1145
-B52A	8297
-B52C	1743
-B52E	02FC
-B530	6700
-B532	83FB
-B534	B7E7
-B536	0024
-B538	83D6
-B53A	C7C8
-B53C	8567
-B53E	1387
-B540	F7B3
-B542	E394
-B544	E6FA
-B546	3797
-B548	0124
-B54A	1307
-B54C	0753
-B54E	BA97
-B550	03A5
-B552	07B2
-B554	8145
-B556	3325
-B558	A000
-B55A	97D0
-B55C	00FC
-B55E	E780
-B560	60BB
-B562	61B7
-B564	1743
-B566	02FC
-B568	E702
-B56A	C3F5
-B56C	9760
-B56E	FFFB
-B570	E780
-B572	C037
-B574	11C5
-B576	B7E7
-B578	0024
-B57A	83C7
-B57C	C784
-B57E	BDEF
-B580	1384
-B582	81E7
-B584	0347
-B586	8400
-B588	8547
-B58A	6303
-B58C	F706
-B58E	0357
-B590	2403
-B592	B767
-B594	0040
-B596	2398
-B598	E718
-B59A	8357
-B59C	4403
-B59E	3767
-B5A0	0040
-B5A2	2314
-B5A4	F720
-B5A6	9760
-B5A8	FFFB
-B5AA	E780
-B5AC	2034
-B5AE	19C5
-B5B0	B7E7
-B5B2	0024
-B5B4	03C7
-B5B6	C784
-B5B8	8147
-B5BA	09EB
-B5BC	8346
-B5BE	8400
-B5C0	0547
-B5C2	8147
-B5C4	6384
-B5C6	E600
-B5C8	8357
-B5CA	C405
-B5CC	37A7
-B5CE	0040
-B5D0	2312
-B5D2	F710
-B5D4	9770
-B5D6	FFFB
-B5D8	E780
-B5DA	C0B6
-B5DC	35C1
-B5DE	9770
-B5E0	FFFB
-B5E2	E780
-B5E4	60B7
-B5E6	05C9
-B5E8	1743
-B5EA	02FC
-B5EC	6700
-B5EE	C3EF
-B5F0	B767
-B5F2	0040
-B5F4	2398
-B5F6	0718
-B5F8	8147
-B5FA	55B7
-B5FC	B767
-B5FE	0040
-B600	2398
-B602	0718
-B604	1384
-B606	81E7
-B608	8346
-B60A	8400
-B60C	0547
-B60E	8147
-B610	E395
-B612	E6F8
-B614	69B7
-B616	9760
-B618	FFFB
-B61A	E780
-B61C	202D
-B61E	31ED
-B620	8346
-B622	8400
-B624	0547
-B626	8147
-B628	6384
-B62A	E600
-B62C	8357
-B62E	4408
-B630	3787
-B632	0040
-B634	2314
-B636	F710
-B638	1743
-B63A	02FC
-B63C	6700
-B63E	C3EA
-B640	9770
-B642	FFFB
-B644	E780
-B646	40B1
-B648	59F9
-B64A	9760
-B64C	FFFB
-B64E	E780
-B650	E029
-B652	19C5
-B654	B7E7
-B656	0024
-B658	03C7
-B65A	C784
-B65C	8147
-B65E	09EB
-B660	8346
-B662	8400
-B664	0547
-B666	8147
-B668	6384
-B66A	E600
-B66C	8357
-B66E	6407
-B670	3707
-B672	0140
-B674	2314
-B676	F710
-B678	9DB7
-B67A	B7E7
-B67C	0024
-B67E	03C7
-B680	C784
-B682	8147
-B684	55F7
-B686	69BF
-B688	1743
-B68A	02FC
-B68C	E702
-B68E	03E1
-B690	4111
-B692	3A84
-B694	22E6
-B696	26E4
-B698	4AE2
-B69A	4EE0
-B69C	AA84
-B69E	3689
-B6A0	97A0
-B6A2	FEFB
-B6A4	E780
-B6A6	8066
-B6A8	B727
-B6AA	0224
-B6AC	9387
-B6AE	076B
-B6B0	A297
-B6B2	0567
-B6B4	BA97
-B6B6	83C7
-B6B8	078D
-B6BA	639D
-B6BC	0718
-B6BE	83C7
-B6C0	0400
-B6C2	6399
-B6C4	0718
-B6C6	B7A7
-B6C8	0224
-B6CA	9389
-B6CC	8754
-B6CE	03C7
-B6D0	9905
-B6D2	6301
-B6D4	0718
-B6D6	03CA
-B6D8	A905
-B6DA	03D6
-B6DC	A90B
-B6DE	37E7
-B6E0	0124
-B6E2	0355
-B6E4	675F
-B6E6	9387
-B6E8	8754
-B6EA	0147
-B6EC	A145
-B6EE	6369
-B6F0	A622
-B6F2	83D6
-B6F4	C70A
-B6F6	8907
-B6F8	63F1
-B6FA	A626
-B6FC	0507
-B6FE	E318
-B700	B7FE
-B702	37CB
-B704	0224
-B706	5309
-B708	00F0
-B70A	8727
-B70C	8BB7
-B70E	9D46
-B710	4379
-B712	F990
-B714	1307
-B716	0705
-B718	0607
-B71A	4E97
-B71C	8357
-B71E	C700
-B720	118D
-B722	5377
-B724	05D0
-B726	918F
-B728	D3F7
-B72A	07D0
-B72C	9317
-B72E	3A00
-B730	B697
-B732	5377
-B734	F718
-B736	9387
-B738	8702
-B73A	8607
-B73C	CE97
-B73E	83D7
-B740	C700
-B742	0726
-B744	8BB7
-B746	13F7
-B748	F70F
-B74A	A183
-B74C	D377
-B74E	07D0
-B750	D3F6
-B752	07D0
-B754	C3F7
-B756	C768
-B758	5379
-B75A	F908
-B75C	4379
-B75E	E978
-B760	9770
-B762	FFFB
-B764	E780
-B766	C08A
-B768	AA8A
-B76A	93DA
-B76C	8A40
-B76E	9770
-B770	FFFB
-B772	E780
-B774	E089
-B776	C20A
-B778	9307
-B77A	8A04
-B77C	1375
-B77E	F50F
-B780	93DA
-B782	0A41
-B784	D3F7
-B786	0AD0
-B788	D374
-B78A	05D0
-B78C	0727
-B78E	8BB7
-B790	8607
-B792	CE97
-B794	03DC
-B796	C700
-B798	C3F4
-B79A	E478
-B79C	DC4C
-B79E	5374
-B7A0	0CD0
-B7A2	D307
-B7A4	00F0
-B7A6	83D4
-B7A8	C700
-B7AA	53F4
-B7AC	8408
-B7AE	130A
-B7B0	0A05
-B7B2	060A
-B7B4	4E9A
-B7B6	035A
-B7B8	4A00
-B7BA	D317
-B7BC	F4A0
-B7BE	99C3
-B7C0	5314
-B7C2	8420
-B7C4	B7CB
-B7C6	0224
-B7C8	83A7
-B7CA	0BB7
-B7CC	0D45
-B7CE	8297
-B7D0	D397
-B7D2	14C0
-B7D4	C207
-B7D6	C183
-B7D8	6395
-B7DA	870B
-B7DC	B747
-B7DE	0124
-B7E0	9387
-B7E2	0727
-B7E4	03D7
-B7E6	6712
-B7E8	83D6
-B7EA	E710
-B7EC	8947
-B7EE	7D17
-B7F0	B397
-B7F2	E700
-B7F4	D3F7
-B7F6	07D0
-B7F8	53F7
-B7FA	16D0
-B7FC	5304
-B7FE	00F0
-B800	D3F7
-B802	2711
-B804	37CA
-B806	0224
-B808	D3F7
-B80A	E718
-B80C	B7C7
-B80E	0224
-B810	07A7
-B812	C7B7
-B814	83A7
-B816	0BB7
-B818	2545
-B81A	D3F7
-B81C	E700
-B81E	D39A
-B820	17C0
-B822	8297
-B824	8727
-B826	0AB8
-B828	C20A
-B82A	93DA
-B82C	0A01
-B82E	5374
-B830	F410
-B832	D694
-B834	C204
-B836	2393
-B838	590D
-B83A	C180
-B83C	D317
-B83E	14C0
-B840	2392
-B842	F90C
-B844	B707
-B846	0040
-B848	19EC
-B84A	9387
-B84C	E703
-B84E	CA97
-B850	2390
-B852	9700
-B854	3264
-B856	A264
-B858	1269
-B85A	8269
-B85C	4101
-B85E	1743
-B860	02FC
-B862	6700
-B864	23C7
-B866	9387
-B868	0704
-B86A	3264
-B86C	A264
-B86E	1269
-B870	8269
-B872	CA97
-B874	2390
-B876	9700
-B878	4101
-B87A	1743
-B87C	02FC
-B87E	6700
-B880	63C5
-B882	9377
-B884	FA0F
-B886	135A
-B888	8A00
-B88A	8729
-B88C	8BB7
-B88E	D3F7
-B890	07D0
-B892	D376
-B894	0AD0
-B896	37CA
-B898	0224
-B89A	0727
-B89C	0AB8
-B89E	C3F7
-B8A0	3769
-B8A2	5374
-B8A4	F418
-B8A6	5374
-B8A8	E410
-B8AA	531B
-B8AC	14C0
-B8AE	420B
-B8B0	135B
-B8B2	0B01
-B8B4	5A85
-B8B6	9760
-B8B8	00FC
-B8BA	E780
-B8BC	A01A
-B8BE	AA8A
-B8C0	5A85
-B8C2	9760
-B8C4	00FC
-B8C6	E780
-B8C8	E019
-B8CA	93DA
-B8CC	8A00
-B8CE	D397
-B8D0	04C0
-B8D2	C20A
-B8D4	1375
-B8D6	F50F
-B8D8	93DA
-B8DA	0A01
-B8DC	5374
-B8DE	05D0
-B8E0	D3F7
-B8E2	0AD0
-B8E4	C207
-B8E6	C187
-B8E8	4374
-B8EA	3479
-B8EC	63D7
-B8EE	8703
-B8F0	5374
-B8F2	8918
-B8F4	B747
-B8F6	0124
-B8F8	9387
-B8FA	0727
-B8FC	03D7
-B8FE	6712
-B900	83D6
-B902	E710
-B904	8947
-B906	7D17
-B908	B397
-B90A	E700
-B90C	D3F7
-B90E	07D0
-B910	53F7
-B912	16D0
-B914	D3F7
-B916	8710
-B918	C5BD
-B91A	5374
-B91C	8910
-B91E	D9BF
-B920	9317
-B922	4A00
-B924	CE97
-B926	83D7
-B928	A706
-B92A	93F6
-B92C	F70F
-B92E	37CB
-B930	0224
-B932	A183
-B934	53F9
-B936	06D0
-B938	D3F7
-B93A	07D0
-B93C	0727
-B93E	8BB7
-B940	4379
-B942	E978
-B944	E30E
-B946	07E0
-B948	9307
-B94A	F704
-B94C	8607
-B94E	CE97
-B950	03D6
-B952	C700
-B954	9306
-B956	F7FF
-B958	75BB
-B95A	9317
-B95C	3A00
-B95E	BA97
-B960	9387
-B962	8702
-B964	8607
-B966	CE97
-B968	83D7
-B96A	C700
-B96C	7DBF
-B96E	0100
-B970	1743
-B972	02FC
-B974	E702
-B976	63B3
-B978	B747
-B97A	0124
-B97C	03D7
-B97E	C7E1
-B980	8947
-B982	2A84
-B984	AE84
-B986	6319
-B988	F700
-B98A	B7A7
-B98C	0124
-B98E	03A7
-B990	4706
-B992	FD57
-B994	6304
-B996	F704
-B998	B7E7
-B99A	0124
-B99C	9387
-B99E	0787
-B9A0	03A9
-B9A2	8710
-B9A4	83A9
-B9A6	C710
-B9A8	0146
-B9AA	CA85
-B9AC	4E85
-B9AE	9730
-B9B0	01FC
-B9B2	E780
-B9B4	6009
-B9B6	A685
-B9B8	2285
-B9BA	97C0
-B9BC	00FC
-B9BE	E780
-B9C0	6075
-B9C2	4E85
-B9C4	0546
-B9C6	CA85
-B9C8	9730
-B9CA	01FC
-B9CC	E780
-B9CE	C007
-B9D0	B7C7
-B9D2	0224
-B9D4	83A7
-B9D6	07B7
-B9D8	1545
-B9DA	8297
-B9DC	1743
-B9DE	02FC
-B9E0	6700
-B9E2	E3AF
-B9E4	B7C7
-B9E6	0224
-B9E8	03A6
-B9EA	47B7
-B9EC	B707
-B9EE	0040
-B9F0	9387
-B9F2	0706
-B9F4	3E96
-B9F6	0967
-B9F8	1308
-B9FA	0502
-B9FC	AA87
-B9FE	098E
-BA00	1307
-BA02	F7F1
-BA04	2390
-BA06	E700
-BA08	B306
-BA0A	F600
-BA0C	2390
-BA0E	E600
-BA10	8907
-BA12	E399
-BA14	07FF
-BA16	83C7
-BA18	C500
-BA1A	B1CB
-BA1C	83AF
-BA1E	0500
-BA20	0963
-BA22	1388
-BA24	E500
-BA26	8147
-BA28	0D4F
-BA2A	854E
-BA2C	094E
-BA2E	1303
-BA30	03F0
-BA32	3317
-BA34	FF00
-BA36	3377
-BA38	F701
-BA3A	3396
-BA3C	FE00
-BA3E	B316
-BA40	FE00
-BA42	798E
-BA44	B308
-BA46	F500
-BA48	F98E
-BA4A	8907
-BA4C	7D47
-BA4E	19C2
-BA50	0347
-BA52	0800
-BA54	1A86
-BA56	81C6
-BA58	0346
-BA5A	1800
-BA5C	2206
-BA5E	518F
-BA60	2390
-BA62	E800
-BA64	03C7
-BA66	C500
-BA68	0908
-BA6A	E3C4
-BA6C	E7FC
-BA6E	B7C7
-BA70	0224
-BA72	83A7
-BA74	07B7
-BA76	1D45
-BA78	8287
-BA7A	0100
-BA7C	1743
-BA7E	02FC
-BA80	E702
-BA82	43A4
-BA84	B7A7
-BA86	0224
-BA88	03C7
-BA8A	6760
-BA8C	8547
-BA8E	630C
-BA90	F700
-BA92	B7C7
-BA94	0224
-BA96	83A7
-BA98	07B7
-BA9A	2145
-BA9C	8297
-BA9E	1743
-BAA0	02FC
-BAA2	6700
-BAA4	63A4
-BAA6	9760
-BAA8	FFFB
-BAAA	E780
-BAAC	E0E8
-BAAE	75D1
-BAB0	B7E7
-BAB2	0024
-BAB4	83C7
-BAB6	B7AD
-BAB8	E9FF
-BABA	B7B7
-BABC	0024
-BABE	03D7
-BAC0	4733
-BAC2	B707
-BAC4	0140
-BAC6	2399
-BAC8	E7DC
-BACA	E1B7
-BACC	1743
-BACE	02FC
-BAD0	E702
-BAD2	439F
-BAD4	B7B7
-BAD6	0224
-BAD8	9387
-BADA	87B4
-BADC	23AE
-BADE	F194
-BAE0	3764
-BAE2	0124
-BAE4	9D66
-BAE6	B7B5
-BAE8	0224
-BAEA	B7B7
-BAEC	0224
-BAEE	1304
-BAF0	0440
-BAF2	9387
-BAF4	C783
-BAF6	9386
-BAF8	F6BF
-BAFA	1146
-BAFC	9385
-BAFE	05FB
-BB00	0545
-BB02	5CC4
-BB04	97E0
-BB06	FFFB
-BB08	E780
-BB0A	C0E8
-BB0C	C166
-BB0E	B7B5
-BB10	0224
-BB12	FD16
-BB14	3146
-BB16	9385
-BB18	4598
-BB1A	4145
-BB1C	97E0
-BB1E	FFFB
-BB20	E780
-BB22	40E7
-BB24	37B7
-BB26	0224
-BB28	1307
-BB2A	87B7
-BB2C	B7A7
-BB2E	0224
-BB30	9387
-BB32	8754
-BB34	78C8
-BB36	37B7
-BB38	0224
-BB3A	A380
-BB3C	070C
-BB3E	2381
-BB40	070C
-BB42	1307
-BB44	C7C2
-BB46	B7B7
-BB48	0224
-BB4A	18D4
-BB4C	9387
-BB4E	472D
-BB50	37B7
-BB52	0224
-BB54	7CC4
-BB56	1307
-BB58	873B
-BB5A	B7B7
-BB5C	0224
-BB5E	18C0
-BB60	9387
-BB62	4737
-BB64	23AA
-BB66	F1A4
-BB68	1743
-BB6A	02FC
-BB6C	6700
-BB6E	C397
-BB70	14A6
-BB72	0224
-BB74	008D
-BB76	0000
-BB78	0000
-BB7A	803B
-BB7C	0000
-BB7E	003F
-BB80	0000
-BB82	8043
-BC98	1743
-BC9A	02FC
-BC9C	E702
-BC9E	8382
-BCA0	2A84
-BCA2	EFE0
-BCA4	BFB9
-BCA6	A147
-BCA8	6306
-BCAA	F400
-BCAC	1743
-BCAE	02FC
-BCB0	6700
-BCB2	8383
-BCB4	B7C7
-BCB6	0224
-BCB8	83C7
-BCBA	87B8
-BCBC	E5DB
-BCBE	B797
-BCC0	0124
-BCC2	9387
-BCC4	0753
-BCC6	0567
-BCC8	3E97
-BCCA	8346
-BCCC	07B9
-BCCE	F9DE
-BCD0	83C7
-BCD2	673F
-BCD4	E1DF
-BCD6	8357
-BCD8	47B6
-BCDA	93E7
-BCDC	0720
-BCDE	2312
-BCE0	F7B6
-BCE2	E9B7
-BCE4	1733
-BCE6	02FC
-BCE8	E702
-BCEA	437B
-BCEC	37C8
-BCEE	0224
-BCF0	1308
-BCF2	48B8
-BCF4	8348
-BCF6	4800
-BCF8	2A8B
-BCFA	AE8B
-BCFC	3284
-BCFE	B684
-BD00	3A89
-BD02	BE89
-BD04	6380
-BD06	0802
-BD08	B7A7
-BD0A	0124
-BD0C	9387
-BD0E	0753
-BD10	03C7
-BD12	07B9
-BD14	83C7
-BD16	B792
-BD18	11C7
-BD1A	0347
-BD1C	5800
-BD1E	BD8B
-BD20	6306
-BD22	F704
-BD24	37E8
-BD26	0124
-BD28	1308
-BD2A	0887
-BD2C	832A
-BD2E	0812
-BD30	032A
-BD32	4812
-BD34	0146
-BD36	D685
-BD38	5285
-BD3A	9730
-BD3C	01FC
-BD3E	E780
-BD40	A0D0
-BD42	CE87
-BD44	4A87
-BD46	A686
-BD48	2286
-BD4A	DE85
-BD4C	5A85
-BD4E	9740
-BD50	00FC
-BD52	E780
-BD54	A066
-BD56	0546
-BD58	D685
-BD5A	5285
-BD5C	9730
-BD5E	01FC
-BD60	E780
-BD62	80CE
-BD64	1733
-BD66	02FC
-BD68	6700
-BD6A	C376
-BD6C	2315
-BD6E	0600
-BD70	9760
-BD72	FFFB
-BD74	E780
-BD76	80BA
-BD78	01CD
-BD7A	B797
-BD7C	0124
-BD7E	9387
-BD80	07D7
-BD82	03C7
-BD84	C700
-BD86	59DF
-BD88	7D17
-BD8A	2386
-BD8C	E700
-BD8E	59BF
-BD90	9760
-BD92	FFFB
-BD94	E780
-BD96	80B5
-BD98	6DD1
-BD9A	B797
-BD9C	0124
-BD9E	9387
-BDA0	07D7
-BDA2	03C7
-BDA4	D700
-BDA6	3DDF
-BDA8	7D17
-BDAA	A386
-BDAC	E700
-BDAE	9DBF
-BDB0	1733
-BDB2	02FC
-BDB4	E702
-BDB6	636F
-BDB8	B7E7
-BDBA	0124
-BDBC	9387
-BDBE	0787
-BDC0	03AA
-BDC2	8712
-BDC4	83A9
-BDC6	C712
-BDC8	AE84
-BDCA	2A84
-BDCC	3289
-BDCE	D285
-BDD0	0146
-BDD2	4E85
-BDD4	9730
-BDD6	01FC
-BDD8	E780
-BDDA	00C7
-BDDC	A685
-BDDE	4A86
-BDE0	2285
-BDE2	9760
-BDE4	FFFB
-BDE6	E780
-BDE8	206A
-BDEA	AA84
-BDEC	0546
-BDEE	D285
-BDF0	4E85
-BDF2	9730
-BDF4	01FC
-BDF6	E780
-BDF8	20C5
-BDFA	B7C7
-BDFC	0224
-BDFE	9387
-BE00	47B8
-BE02	03C7
-BE04	E710
-BE06	15C3
-BE08	37A7
-BE0A	0124
-BE0C	1307
-BE0E	0753
-BE10	0346
-BE12	37B9
-BE14	8946
-BE16	631A
-BE18	D600
-BE1A	8356
-BE1C	87BA
-BE1E	E18E
-BE20	89C6
-BE22	9306
-BE24	0040
-BE26	6307
-BE28	D400
-BE2A	2685
-BE2C	1733
-BE2E	02FC
-BE30	6700
-BE32	E36A
-BE34	8326
-BE36	47B3
-BE38	7D57
-BE3A	E388
-BE3C	E6FE
-BE3E	03D7
-BE40	2711
-BE42	9396
-BE44	0401
-BE46	C182
-BE48	11E3
-BE4A	3687
-BE4C	BA84
-BE4E	2399
-BE50	D710
-BE52	E1BF
-BE54	1733
-BE56	02FC
-BE58	E702
-BE5A	2365
-BE5C	3729
-BE5E	0024
-BE60	B7A4
-BE62	0124
-BE64	1309
-BE66	0933
-BE68	9384
-BE6A	0453
-BE6C	8347
-BE6E	491A
-BE70	03C7
-BE72	24B7
-BE74	2A84
-BE76	D98F
-BE78	6382
-BE7A	0714
-BE7C	8347
-BE7E	E400
-BE80	0547
-BE82	2305
-BE84	E400
-BE86	99E7
-BE88	8347
-BE8A	C400
-BE8C	D1CF
-BE8E	83C7
-BE90	24B7
-BE92	C5CB
-BE94	B76A
-BE96	0124
-BE98	130A
-BE9A	0403
-BE9C	0347
-BE9E	0400
-BEA0	A169
-BEA2	FD19
-BEA4	A301
-BEA6	E400
-BEA8	83A7
-BEAA	0A4B
-BEAC	2302
-BEAE	E400
-BEB0	0567
-BEB2	BA97
-BEB4	83D7
-BEB6	47E0
-BEB8	2303
-BEBA	0400
-BEBC	B3F7
-BEBE	3701
-BEC0	231C
-BEC2	F400
-BEC4	9740
-BEC6	FDFB
-BEC8	E780
-BECA	0067
-BECC	0358
-BECE	8401
-BED0	A308
-BED2	A400
-BED4	6301
-BED6	0806
-BED8	3736
-BEDA	0520
-BEDC	1306
-BEDE	06C8
-BEE0	8146
-BEE2	8147
-BEE4	4145
-BEE6	B305
-BEE8	F400
-BEEA	3357
-BEEC	F840
-BEEE	2380
-BEF0	D502
-BEF2	058B
-BEF4	8507
-BEF6	11C7
-BEF8	0347
-BEFA	0600
-BEFC	BA96
-BEFE	93F6
-BF00	F60F
-BF02	0506
-BF04	E391
-BF06	A7FE
-BF08	2308
-BF0A	D400
-BF0C	8347
-BF0E	491A
-BF10	03C7
-BF12	24B7
-BF14	D98F
-BF16	C9C3
-BF18	2307
-BF1A	0400
-BF1C	232E
-BF1E	4401
-BF20	1733
-BF22	02FC
-BF24	6700
-BF26	A35B
-BF28	8347
-BF2A	B400
-BF2C	A5D7
-BF2E	83C7
-BF30	24B7
-BF32	ADF3
-BF34	39A0
-BF36	0148
-BF38	45F1
-BF3A	231C
-BF3C	3401
-BF3E	4E88
-BF40	61BF
-BF42	B76A
-BF44	0124
-BF46	83A5
-BF48	0A4B
-BF4A	8567
-BF4C	130A
-BF4E	0403
-BF50	9387
-BF52	07E1
-BF54	1306
-BF56	8007
-BF58	BE95
-BF5A	5285
-BF5C	9760
-BF5E	00FC
-BF60	E780
-BF62	400A
-BF64	21C9
-BF66	2305
-BF68	0400
-BF6A	0347
-BF6C	2401
-BF6E	8347
-BF70	6400
-BF72	8356
-BF74	4401
-BF76	A308
-BF78	E400
-BF7A	0547
-BF7C	231C
-BF7E	D400
-BF80	2307
-BF82	E400
-BF84	A301
-BF86	F400
-BF88	2303
-BF8A	0400
-BF8C	232E
-BF8E	4401
-BF90	1733
-BF92	02FC
-BF94	6700
-BF96	A354
-BF98	83A5
-BF9A	0A4B
-BF9C	8567
-BF9E	9387
-BFA0	07E1
-BFA2	1306
-BFA4	000F
-BFA6	BE95
-BFA8	5285
-BFAA	9760
-BFAC	00FC
-BFAE	E780
-BFB0	2005
-BFB2	9DB7
-BFB4	8347
-BFB6	A400
-BFB8	CDDB
-BFBA	CDB5
-BFBC	37A5
-BFBE	0124
-BFC0	1305
-BFC2	050C
-BFC4	9760
-BFC6	FFFB
-BFC8	E780
-BFCA	8043
-BFCC	45BD
-BFCE	0100
-BFD0	1733
-BFD2	02FC
-BFD4	E702
-BFD6	034F
-BFD8	8347
-BFDA	1501
-BFDC	A304
-BFDE	0500
-BFE0	2A84
-BFE2	91EF
-BFE4	8357
-BFE6	8501
-BFE8	99EB
-BFEA	8347
-BFEC	F500
-BFEE	A307
-BFF0	0500
-BFF2	A304
-BFF4	F500
-BFF6	1733
-BFF8	02FC
-BFFA	6700
-BFFC	E34E
-BFFE	2285
-C000	9790
-C002	FFFB
-C004	E780
-C006	C0C4
-C008	8347
-C00A	3400
-C00C	0347
-C00E	6400
-C010	8346
-C012	7400
-C014	FD17
-C016	0507
-C018	93F7
-C01A	F70F
-C01C	2303
-C01E	E400
-C020	A301
-C022	F400
-C024	99C2
-C026	A303
-C028	0400
-C02A	B1EF
-C02C	0347
-C02E	1401
-C030	8356
-C032	8401
-C034	8347
-C036	5400
-C038	2309
-C03A	E400
-C03C	0547
-C03E	231A
-C040	D400
-C042	2304
-C044	E400
-C046	231C
-C048	0400
-C04A	A308
-C04C	0400
-C04E	C5E3
-C050	8347
-C052	1400
-C054	13F7
-C056	2700
-C058	19C7
-C05A	0347
-C05C	0400
-C05E	01C7
-C060	0347
-C062	2400
-C064	4DC3
-C066	858B
-C068	A5CF
-C06A	B727
-C06C	0024
-C06E	83C7
-C070	274D
-C072	D1D3
-C074	B767
-C076	0124
-C078	83A7
-C07A	074B
-C07C	0567
-C07E	BA97
-C080	2380
-C082	07E0
-C084	8DBF
-C086	0347
-C088	0401
-C08A	5C4C
-C08C	9316
-C08E	1700
-C090	B697
-C092	5CCC
-C094	B727
-C096	0024
-C098	9387
-C09A	0733
-C09C	83C6
-C09E	371A
-C0A0	89EA
-C0A2	8346
-C0A4	6401
-C0A6	A1DA
-C0A8	B7A6
-C0AA	0124
-C0AC	83C6
-C0AE	260A
-C0B0	B9F2
-C0B2	83C7
-C0B4	471A
-C0B6	A1F3
-C0B8	0346
-C0BA	0400
-C0BC	B767
-C0BE	0124
-C0C0	83A5
-C0C2	074B
-C0C4	3306
-C0C6	E602
-C0C8	8567
-C0CA	9387
-C0CC	07E1
-C0CE	BE95
-C0D0	1305
-C0D2	0403
-C0D4	0606
-C0D6	9760
-C0D8	00FC
-C0DA	E780
-C0DC	60F2
-C0DE	21BF
-C0E0	8547
-C0E2	A304
-C0E4	F400
-C0E6	1733
-C0E8	02FC
-C0EA	6700
-C0EC	E33F
-C0EE	FD17
-C0F0	A302
-C0F2	F400
-C0F4	2285
-C0F6	9760
-C0F8	FFFB
-C0FA	E780
-C0FC	6011
-C0FE	1733
-C100	02FC
-C102	6700
-C104	633E
-C106	2285
-C108	9760
-C10A	FFFB
-C10C	E780
-C10E	4010
-C110	DDB5
-C112	0100
-C114	8947
-C116	6303
-C118	F500
-C11A	8280
-C11C	1733
-C11E	02FC
-C120	E702
-C122	A338
-C124	B784
-C126	0124
-C128	9384
-C12A	04AA
-C12C	87A7
-C12E	040A
-C130	4111
-C132	37C5
-C134	0224
-C136	5396
-C138	17C0
-C13A	7400
-C13C	9145
-C13E	1305
-C140	A5B8
-C142	9750
-C144	FFFB
-C146	E780
-C148	60C3
-C14A	3719
-C14C	0140
-C14E	4205
-C150	4181
-C152	130A
-C154	4924
-C156	B789
-C158	0124
-C15A	37C4
-C15C	0224
-C15E	B7CA
-C160	0224
-C162	2317
-C164	A100
-C166	9389
-C168	89B1
-C16A	1304
-C16C	24B9
-C16E	938A
-C170	AABB
-C172	330A
-C174	9A40
-C176	0605
-C178	2295
-C17A	8355
-C17C	2500
-C17E	0356
-C180	C100
-C182	0355
-C184	0500
-C186	2104
-C188	9760
-C18A	00FC
-C18C	E780
-C18E	8082
-C190	4205
-C192	4181
-C194	2390
-C196	A900
-C198	B387
-C19A	4901
-C19C	2390
-C19E	A700
-C1A0	8909
-C1A2	6305
-C1A4	5401
-C1A6	0355
-C1A8	E100
-C1AA	F1B7
-C1AC	B789
-C1AE	0124
-C1B0	37CA
-C1B2	0224
-C1B4	1309
-C1B6	0926
-C1B8	9389
-C1BA	A9AF
-C1BC	130A
-C1BE	2AC3
-C1C0	8357
-C1C2	E100
-C1C4	0356
-C1C6	C100
-C1C8	8509
-C1CA	8607
-C1CC	A297
-C1CE	83D5
-C1D0	2700
-C1D2	03D5
-C1D4	0700
-C1D6	0909
-C1D8	2104
-C1DA	9750
-C1DC	00FC
-C1DE	E780
-C1E0	607D
-C1E2	1375
-C1E4	F50F
-C1E6	A38F
-C1E8	A9FE
-C1EA	4205
-C1EC	4181
-C1EE	231F
-C1F0	A9FE
-C1F2	E317
-C1F4	44FD
-C1F6	B719
-C1F8	0140
-C1FA	3789
-C1FC	0124
-C1FE	37CA
-C200	0224
-C202	9389
-C204	291F
-C206	1309
-C208	C9B2
-C20A	130A
-C20C	2AC6
-C20E	B389
-C210	9940
-C212	8357
-C214	E100
-C216	0356
-C218	C100
-C21A	8607
-C21C	A297
-C21E	83D5
-C220	2700
-C222	03D5
-C224	0700
-C226	2104
-C228	9750
-C22A	00FC
-C22C	E780
-C22E	8078
-C230	4205
-C232	4181
-C234	2310
-C236	A900
-C238	B307
-C23A	3901
-C23C	2390
-C23E	A700
-C240	0909
-C242	E318
-C244	44FD
-C246	B717
-C248	0140
-C24A	3789
-C24C	0124
-C24E	B7C9
-C250	0224
-C252	9387
-C254	A720
-C256	1309
-C258	69B4
-C25A	9389
-C25C	29C9
-C25E	B384
-C260	9740
-C262	8357
-C264	E100
-C266	0356
-C268	C100
-C26A	8607
-C26C	A297
-C26E	83D5
-C270	2700
-C272	03D5
-C274	0700
-C276	2104
-C278	9750
-C27A	00FC
-C27C	E780
-C27E	8073
-C280	4205
-C282	4181
-C284	2310
-C286	A900
-C288	B307
-C28A	9900
-C28C	2390
-C28E	A700
-C290	0909
-C292	E318
-C294	34FD
-C296	4101
-C298	1733
-C29A	02FC
-C29C	6700
-C29E	2324
-C2A0	1733
-C2A2	02FC
-C2A4	E702
-C2A6	0322
-C2A8	2A84
-C2AA	EFE0
-C2AC	3F98
-C2AE	1DE0
-C2B0	B797
-C2B2	0124
-C2B4	9387
-C2B6	0753
-C2B8	0D67
-C2BA	3E97
-C2BC	0327
-C2BE	876E
-C2C0	058B
-C2C2	09CB
-C2C4	3787
-C2C6	0040
-C2C8	0357
-C2CA	87F4
-C2CC	A146
-C2CE	618B
-C2D0	6306
-C2D2	D700
-C2D4	1733
-C2D6	02FC
-C2D8	6700
-C2DA	0321
-C2DC	0567
-C2DE	BA97
-C2E0	2389
-C2E2	07B6
-C2E4	C5BF
-C2E6	0100
-C2E8	9147
-C2EA	6303
-C2EC	F500
-C2EE	8280
-C2F0	1733
-C2F2	02FC
-C2F4	E702
-C2F6	031D
-C2F8	9750
-C2FA	FFFB
-C2FC	E780
-C2FE	C063
-C300	09C5
-C302	1733
-C304	02FC
-C306	6700
-C308	231E
-C30A	9750
-C30C	FFFB
-C30E	E780
-C310	E05D
-C312	65F9
-C314	B7C7
-C316	0224
-C318	03D7
-C31A	67B8
-C31C	B7F7
-C31E	0040
-C320	2390
-C322	E73E
-C324	F9BF
-C326	0100
-C328	37C7
-C32A	0224
-C32C	1307
-C32E	47B8
-C330	8345
-C332	0700
-C334	B7A7
-C336	0224
-C338	B7D6
-C33A	0124
-C33C	03D6
-C33E	4760
-C340	23A8
-C342	B6DA
-C344	B767
-C346	0124
-C348	B7C6
-C34A	0224
-C34C	9387
-C34E	0740
-C350	9386
-C352	86C9
-C354	D4C7
-C356	09CA
-C358	B7B6
-C35A	0224
-C35C	3726
-C35E	0024
-C360	9386
-C362	8668
-C364	2320
-C366	D6CE
-C368	2319
-C36A	0710
-C36C	37C7
-C36E	0224
-C370	1307
-C372	072A
-C374	B7C6
-C376	0224
-C378	98D7
-C37A	37C7
-C37C	0224
-C37E	9386
-C380	4611
-C382	1307
-C384	872E
-C386	23A4
-C388	D1A4
-C38A	D8C3
-C38C	8280
-C38E	0100
-C390	1733
-C392	02FC
-C394	E702
-C396	0313
-C398	B7C6
-C39A	0224
-C39C	B787
-C39E	0324
-C3A0	9386
-C3A2	863E
-C3A4	37A7
-C3A6	0124
-C3A8	9387
-C3AA	07FF
-C3AC	1307
-C3AE	0753
-C3B0	958F
-C3B2	232C
-C3B4	D7B4
-C3B6	232E
-C3B8	F7B4
-C3BA	9720
-C3BC	01FC
-C3BE	E780
-C3C0	600C
-C3C2	11C5
-C3C4	EFE0
-C3C6	0F80
-C3C8	EFF0
-C3CA	4FF0
-C3CC	B13F
-C3CE	1733
-C3D0	02FC
-C3D2	6700
-C3D4	6311
-C3D6	0000
-C3D8	A310
-C3DA	E538
-C3DC	0000
-C3DE	0000
-C3E0	BEFF
-C3E2	0F00
-C3E4	0000
-C3E6	0000
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	0010
-84C8	90C3
-84CA	0224
-84CC	44AB
-84CE	0224
-84D0	44AB
-84D2	0224
-84D4	44AB
-84D6	0224
-84D8	44AB
-84DA	0224
-84DC	44AB
-84DE	0224
-A548	001D
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00D5
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	0100
-A5A2	0036
-A5A4	0000
-A5A6	0000
-A5A8	0000
-A5AA	0000
-A5AC	0000
-A5AE	0000
-A5B0	0000
-A5B2	0000
-A5B4	0000
-A5B6	0000
-A5B8	0000
-A5BA	0000
-A5BC	0000
-A5BE	0000
-A5C0	0000
-A5C2	0000
-A5C4	0000
-A5C6	0000
-A5C8	0000
-A5CA	0000
-A5CC	0000
-A5CE	0000
-A5D0	0000
-A5D2	0000
-A5D4	0000
-A5D6	0000
-A5D8	0000
-A5DA	0000
-A5DC	0000
-A5DE	0000
-A5E0	0000
-A5E2	0000
-A5E4	0000
-A5E6	0000
-A5E8	0000
-A5EA	0000
-A5EC	000F
-A5EE	000F
-A5F0	000F
-A5F2	000F
-A5F4	0000
-A5F6	0000
-A5F8	0000
-A5FA	0000
-A5FC	0000
-A5FE	0000
-A600	0000
-A602	0000
-A604	0000
-A606	00C6
-BB84	0001
-BB86	0000
-BB88	0000
-BB8A	0100
-BB8C	0800
-BB8E	1000
-BB90	2000
-BB92	9A00
-BB94	9A00
-BB96	9A00
-BB98	9A00
-BB9A	9600
-BB9C	9600
-BB9E	9600
-BBA0	9600
-BBA2	9300
-BBA4	9300
-BBA6	9300
-BBA8	9300
-BBAA	9000
-BBAC	9000
-BBAE	9000
-BBB0	9000
-BBB2	8D00
-BBB4	8D00
-BBB6	8D00
-BBB8	8D00
-BBBA	3F00
-BBBC	3F00
-BBBE	3F00
-BBC0	3F00
-BBC2	1E00
-BBC4	1E00
-BBC6	1E00
-BBC8	1E00
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0000
-BBD2	0800
-BBD4	0800
-BBD6	0800
-BBD8	0800
-BBDA	0000
-BBDC	0000
-BBDE	0000
-BBE0	0000
-BBE2	3F00
-BBE4	3F00
-BBE6	3F00
-BBE8	3F00
-BBEA	3400
-BBEC	3400
-BBEE	3400
-BBF0	3400
-BBF2	0A00
-BBF4	0A00
-BBF6	0A00
-BBF8	0A00
-BBFA	1000
-BBFC	1000
-BBFE	1000
-BC00	1000
-BC02	0600
-BC04	0600
-BC06	0600
-BC08	0600
-BC0A	0C00
-BC0C	0C00
-BC0E	0C00
-BC10	0C00
-BC12	0000
-BC14	0000
-BC16	0000
-BC18	0000
-BC1A	1000
-BC1C	1000
-BC1E	1000
-BC20	1000
-BC22	1000
-BC24	1000
-BC26	1000
-BC28	1000
-BC2A	2000
-BC2C	1000
-BC2E	1000
-BC30	1000
-BC32	0600
-BC34	0600
-BC36	0600
-BC38	0600
-BC3A	1C00
-BC3C	1C00
-BC3E	1C00
-BC40	1C00
-BC42	0600
-BC44	0600
-BC46	0600
-BC48	0600
-BC4A	2A00
-BC4C	2A00
-BC4E	2A00
-BC50	2A00
-BC52	0200
-BC54	0200
-BC56	0200
-BC58	0200
-BC5A	1000
-BC5C	1000
-BC5E	1000
-BC60	1000
-BC62	0E00
-BC64	0E00
-BC66	0E00
-BC68	0E00
-BC6A	2800
-BC6C	2800
-BC6E	2800
-BC70	2800
-BC72	1800
-BC74	1800
-BC76	1800
-BC78	1800
-BC7A	0800
-BC7C	0800
-BC7E	0800
-BC80	0800
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0000
-BC8A	2400
-BC8C	2400
-BC8E	2400
-BC90	2400
-BC92	0088
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	7CAC
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	18A6
-570A	0224
-570C	0453
-570E	0020
-5710	A0A7
-5712	0224
-5714	C850
-5716	0220
-5718	B8AC
-571A	0224
-571C	2C88
-571E	0220
-5720	F0AD
-5722	0224
-5724	7C82
-5726	0120
-5728	C8B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	64B5
-5732	0224
-5734	1081
-5736	0320
-5738	70B9
-573A	0224
-573C	BCFD
-573E	0220
-5740	E4B9
-5742	0224
-5744	BCA5
-5746	0420
-5748	7CBA
-574A	0224
-574C	B803
-574E	0320
-5750	E4BC
-5752	0224
-5754	8424
-5756	0220
-5758	B0BD
-575A	0224
-575C	9C4C
-575E	0220
-5760	D0BF
-5762	0224
-5764	0C22
-5766	0220
-5768	54BE
-576A	0224
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-25D2	0102
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-5ACC	6505
-FCFC	4000
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3244	0101
-3246	0101
-3248	0010
-3266	0100
-3330	0108
-3334	0100
-3336	0000
-FCFC	2002
-BB8A	0100
-BB8C	0800
-BB8E	1000
-BB90	2000
-BB92	C800
-BB94	C800
-BB96	C800
-BB98	C800
-BB9A	C400
-BB9C	C400
-BB9E	C400
-BBA0	C400
-BBA2	C200
-BBA4	C200
-BBA6	C200
-BBA8	C200
-BBAA	BE00
-BBAC	BE00
-BBAE	BE00
-BBB0	BE00
-BBB2	BC00
-BBB4	BC00
-BBB6	BC00
-BBB8	BC00
-BBBA	2000
-BBBC	2000
-BBBE	2000
-BBC0	2000
-BBC2	1600
-BBC4	1600
-BBC6	1600
-BBC8	1600
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0000
-BBD2	0A00
-BBD4	0A00
-BBD6	0A00
-BBD8	0A00
-BBDA	1400
-BBDC	1400
-BBDE	1400
-BBE0	1400
-BBE2	2A00
-BBE4	2A00
-BBE6	2A00
-BBE8	2A00
-BBEA	2A00
-BBEC	2A00
-BBEE	2A00
-BBF0	2A00
-BBF2	0100
-BBF4	0100
-BBF6	0100
-BBF8	0100
-BBFA	0F00
-BBFC	0F00
-BBFE	0F00
-BC00	0F00
-BC02	0400
-BC04	0400
-BC06	0400
-BC08	0400
-BC0A	1900
-BC0C	1900
-BC0E	1900
-BC10	1900
-BC12	1400
-BC14	1400
-BC16	1400
-BC18	1400
-BC1A	3A00
-BC1C	3A00
-BC1E	3A00
-BC20	3A00
-BC22	0A00
-BC24	0A00
-BC26	0A00
-BC28	0A00
-BC2A	4B00
-BC2C	4B00
-BC2E	4B00
-BC30	4B00
-BC32	0200
-BC34	0600
-BC36	0C00
-BC38	0C00
-BC3A	2A00
-BC3C	2500
-BC3E	2000
-BC40	2000
-BC42	0000
-BC44	1000
-BC46	2300
-BC48	2300
-BC4A	3F00
-BC4C	3100
-BC4E	2100
-BC50	2100
-BC52	0A00
-BC54	1B00
-BC56	3000
-BC58	3000
-BC5A	1900
-BC5C	1500
-BC5E	1100
-BC60	1100
-BC62	0F00
-BC64	0F00
-BC66	0F00
-BC68	0F00
-BC6A	1900
-BC6C	1900
-BC6E	1900
-BC70	1900
-BC72	0A00
-BC74	0A00
-BC76	0A00
-BC78	0A00
-BC7A	0B00
-BC7C	0B00
-BC7E	0B00
-BC80	0B00
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0000
-BC8A	0800
-BC8C	0800
-BC8E	0800
-BC90	0800
-FCFC	4000
-FCFC	2000
-68D8	0100
-FCFC	2002
-BC92	0100
-FCFC	4000
-0E04	1C03
-0E10	0100
-0E12	00A0
-0E14	0C84
-0E16	002B
-0E18	0000
-0E1A	3000
-0E1C	0100
-0E1E	00A0
-0E20	0C84
-0E22	012B
-0E24	0100
-0E26	3000
-FCFC	4000
-0B30	01FF
-FCFC	2000
-3D44	0000
-3D88	FCFC
-3D8A	FEFF
-3D8C	FCFC
-3D8E	FEFF
-3D90	FCFC
-3D92	FEFF
-3D94	FCFC
-3D96	FEFF
-3FE0	0324
-3FE2	0080
-3FE4	0000
-3FE6	0000
-4238	0324
-423A	0080
-423C	0324
-423E	F886
-4490	0324
-4492	0080
-4494	0324
-4496	2887
-46E8	0324
-46EA	0080
-46EC	0324
-46EE	2887
-46F0	0324
-46F2	CE89
-4940	0324
-4942	0080
-4944	0324
-4946	EE89
-4B98	0324
-4B9A	0080
-4B9C	0324
-4B9E	708C
-4DF0	0324
-4DF2	0080
-4DF4	0324
-4DF6	888C
-5048	0324
-504A	0080
-504C	0324
-504E	2887
-5050	0324
-5052	BA8C
-FCFC	2003
-8000	FFFE
-8002	2400
-8004	FFFD
-8006	22C2
-8008	0006
-800A	22C4
-800C	1FFF
-800E	22EC
-8010	001F
-8012	2306
-8014	3FFF
-8016	2314
-8018	00FF
-801A	2354
-801C	0003
-801E	23F0
-8020	0100
-8022	68DE
-8024	0000
-8026	703C
-8028	0100
-802A	703E
-802C	0000
-802E	7046
-8030	027F
-8032	7048
-8034	002F
-8036	704A
-8038	0400
-803A	7058
-803C	0280
-803E	705A
-8040	0030
-8042	705C
-8044	0400
-8046	7806
-8048	0100
-804A	7808
-804C	0824
-804E	78C0
-8050	0101
-8052	795A
-8054	0010
-8056	7970
-8058	0010
-805A	7994
-805C	2020
-805E	7996
-8060	0001
-8062	799A
-8064	0000
-8066	7BDA
-8068	003C
-806A	7EE6
-806C	002C
-806E	7EF2
-8070	002C
-8072	7EFE
-8074	0064
-8076	7F0A
-8078	0058
-807A	7F0E
-807C	0058
-807E	82A2
-8080	0012
-8082	82BA
-8084	0036
-8086	8CCE
-8088	012C
-808A	8CD0
-808C	0096
-808E	8CD2
-8090	0096
-8092	8CD6
-8094	0096
-8096	8D0E
-8098	0000
-809A	9032
-809C	0000
-809E	903E
-80A0	0000
-80A2	B176
-80A4	0006
-80A6	B178
-80A8	0000
-80AA	B20C
-80AC	002E
-80AE	B21A
-80B0	0204
-80B2	B23C
-80B4	6060
-80B6	B242
-80B8	6060
-80BA	B266
-80BC	04C0
-80BE	B268
-80C0	0440
-80C2	B270
-80C4	0887
-80C6	B322
-80C8	0101
-80CA	B324
-80CC	0001
-80CE	B330
-80D0	2828
-80D2	B34A
-80D4	2828
-80D6	B360
-80D8	2828
-80DA	B378
-80DC	0001
-80DE	BF16
-80E0	AA0B
-80E2	BF30
-80E4	0000
-80E6	BF78
-80E8	3353
-80EA	C4D8
-80EC	0020
-80EE	C4E0
-80F0	0001
-80F2	C4E2
-80F4	0002
-80F6	C4F6
-80F8	0000
-80FA	C53C
-80FC	0001
-80FE	C53E
-8100	0000
-8102	C544
-8104	0500
-8106	C554
-8108	0D53
-810A	C556
-810C	0000
-810E	D1F6
-8110	003A
-8112	D20C
-8114	0809
-8116	D27A
-8118	0005
-811A	D314
-811C	0220
-811E	D326
-8120	2001
-8122	D3EC
-8124	1CB1
-8126	D3F0
-8128	1CB0
-812A	D410
-812C	0248
-812E	D412
-8130	04D2
-8132	D426
-8134	04D2
-8136	D428
-8138	0AEA
-813A	D43C
-813C	4001
-813E	D43E
-8140	4001
-8142	D49C
-8144	0021
-8146	D4A8
-8148	0003
-814A	D4AC
-814C	00E7
-814E	D4B0
-8150	0001
-8152	D4B4
-8154	0001
-8156	D4B8
-8158	0035
-815A	D4BC
-815C	0014
-815E	D4C0
-8160	0014
-8162	D4C4
-8164	0001
-8166	D4C8
-8168	0000
-816A	D4CC
-816C	0000
-816E	D4D0
-8170	0016
-8172	D4D2
-8174	0020
-8176	D4D6
-8178	0000
-817A	D4DA
-817C	0000
-817E	D4DE
-8180	0000
-8182	D4E2
-8184	0001
-8186	D4E6
-8188	0001
-818A	D4EA
-818C	0001
-818E	D4EC
-8190	00BE
-8192	D4EE
-8194	00BE
-8196	D4F8
-8198	01F0
-819A	D4FA
-819C	01F0
-819E	D554
-81A0	0000
-81A2	D556
-81A4	0000
-81A6	D560
-81A8	0000
-81AA	D562
-81AC	0000
-81AE	D5BC
-81B0	0000
-81B2	D5BE
-81B4	0000
-81B6	D5C8
-81B8	0000
-81BA	D5CA
-81BC	0000
-81BE	D624
-81C0	0000
-81C2	D62E
-81C4	0000
-81C6	D638
-81C8	0000
-81CA	D682
-81CC	04C0
-81CE	D684
-81D0	0440
-81D2	D6D4
-81D4	0000
-81D6	D704
-81D8	7802
-81DA	D718
-81DC	0200
-81DE	D856
-81E0	0705
-81E2	D896
-81E4	0000
-81E6	D8A2
-81E8	0001
-81EA	DC8C
-81EC	2B3F
-81EE	DC94
-81F0	0001
-81F2	DD70
-81F4	0000
-81F6	DE38
-81F8	0000
-81FA	E980
-81FC	0500
-81FE	EF80
-8200	0000
-8202	F014
-8204	0006
-8206	F09A
-8208	FF00
-820A	F0AA
-820C	FFFF
-820E	F0AC
-8210	FFFF
-8212	F288
-8214	0000
-8216	F2E0
-8218	0000
-821A	F2EA
-821C	0040
-821E	F370
-8220	0302
-8222	F372
-8224	0000
-8226	F3E4
-8228	0103
-822A	F3F4
-822C	08C8
-822E	F3F6
-8230	10D7
-8232	FFFE
-8234	2401
-8236	FFFD
-8238	195E
-823A	0001
-823C	1966
-823E	0000
-8240	2540
-8242	0002
-8244	25E0
-8246	0000
-8248	25E2
-824A	0000
-824C	2920
-824E	0001
-8250	29A8
-8252	0002
-8254	29BA
-8256	00FF
-8258	2A30
-825A	FF01
-825C	2A42
-825E	0001
-8260	2A44
-8262	04B0
-8264	2A46
-8266	0000
-8268	2A54
-826A	0000
-826C	2A56
-826E	0008
-8270	2BB2
-8272	0010
-8274	2D32
-8276	1000
-8278	3132
-827A	0001
-827C	31D0
-827E	0002
-8280	31F8
-8282	0001
-8284	31FA
-8286	04CD
-8288	3C42
-828A	0000
-828C	3C46
-828E	05EB
-8290	3C52
-8292	0640
-8294	4270
-8296	0000
-8298	427C
-829A	0020
-829C	4280
-829E	0010
-82A0	4290
-82A2	0001
-82A4	4292
-82A6	0000
-82A8	4362
-82AA	0001
-82AC	4364
-82AE	0000
-82B0	4366
-82B2	0000
-82B4	4370
-82B6	0000
-82B8	437E
-82BA	00A4
-82BC	4396
-82BE	000C
-82C0	4398
-82C2	000E
-82C4	43AA
-82C6	0000
-82C8	43AC
-82CA	0000
-82CC	43B4
-82CE	0000
-82D0	43B6
-82D2	0000
-82D4	43C6
-82D6	0A01
-82D8	44C6
-82DA	0000
-82DC	5A70
-82DE	0000
-82E0	FFFE
-82E2	2402
-82E4	FFFD
-82E6	849E
-82E8	0000
-82EA	84A0
-82EC	0000
-82EE	84A2
-82F0	0500
-82F2	84C4
-82F4	0000
-82F6	A570
-82F8	0000
-82FA	FFFE
-82FC	2400
-82FE	FFFD
-8300	0086
-8302	0200
-8304	0112
-8306	0A0A
-8308	0114
-830A	0103
-830C	0118
-830E	0400
-8310	011A
-8312	0100
-8314	011C
-8316	0001
-8318	0136
-831A	1800
-831C	013E
-831E	0000
-8320	020A
-8322	0000
-8324	021E
-8326	0000
-8328	0228
-832A	0001
-832C	0270
-832E	2B2B
-8330	0272
-8332	102B
-8334	0274
-8336	2B30
-8338	0304
-833A	0003
-833C	0306
-833E	00E6
-8340	031A
-8342	0003
-8344	031C
-8346	0028
-8348	031E
-834A	0002
-834C	0400
-834E	1010
-8350	0408
-8352	0100
-8354	040A
-8356	0100
-8358	040C
-835A	0000
-835C	0702
-835E	0000
-8360	0704
-8362	0000
-8364	0720
-8366	0001
-8368	0722
-836A	0008
-836C	0724
-836E	0000
-8370	0808
-8372	0102
-8374	0900
-8376	1100
-8378	0936
-837A	0000
-837C	0C40
-837E	0000
-8380	0E00
-8382	0300
-8384	0342
-8386	23F0
-8388	0000
-838A	FFFF
-838C	0008
-838E	2400
-8390	71D4
-8392	3F00
-8394	3D00
-8396	84F3
-8398	0040
-839A	FFFF
-839C	0010
-839E	2400
-83A0	7274
-83A2	0D00
-83A4	0C00
-83A6	36D2
-83A8	0040
-83AA	0000
-83AC	0000
-83AE	0000
-83B0	0000
-83B2	FFFF
-83B4	0008
-83B6	2400
-83B8	7314
-83BA	0000
-83BC	0000
-83BE	0000
-83C0	0000
-83C2	FFFF
-83C4	0008
-83C6	2400
-83C8	7A0E
-83CA	1E00
-83CC	0F00
-83CE	0F00
-83D0	0F00
-83D2	FFFF
-83D4	0008
-83D6	2400
-83D8	7A6E
-83DA	2800
-83DC	1900
-83DE	1900
-83E0	1900
-83E2	FFFF
-83E4	0008
-83E6	2400
-83E8	7A86
-83EA	2800
-83EC	1900
-83EE	1900
-83F0	1900
-83F2	FFFF
-83F4	0008
-83F6	2400
-83F8	8C9E
-83FA	5000
-83FC	3500
-83FE	3500
-8400	3500
-8402	FFFF
-8404	000A
-8406	2400
-8408	B21E
-840A	0000
-840C	0000
-840E	C000
-8410	0103
-8412	0000
-8414	FFFF
-8416	000C
-8418	2400
-841A	BEDC
-841C	C526
-841E	903E
-8420	C00F
-8422	0008
-8424	0C00
-8426	8000
-8428	FFFF
-842A	000E
-842C	2400
-842E	DADA
-8430	0001
-8432	0000
-8434	3000
-8436	8001
-8438	0000
-843A	0000
-843C	0000
-843E	FFFF
-8440	000C
-8442	2400
-8444	DB0C
-8446	0000
-8448	0080
-844A	0000
-844C	0000
-844E	0000
-8450	0000
-8452	FFFF
-8454	000C
-8456	2400
-8458	DB3C
-845A	12D2
-845C	12D2
-845E	12D2
-8460	0000
-8462	0000
-8464	0000
-8466	FFFF
-8468	000C
-846A	2400
-846C	DB6C
-846E	0000
-8470	0000
-8472	0000
-8474	0000
-8476	0000
-8478	0000
-847A	FFFF
-847C	000C
-847E	2400
-8480	DB9C
-8482	0000
-8484	0000
-8486	0000
-8488	0000
-848A	0000
-848C	0000
-848E	FFFF
-8490	000C
-8492	2400
-8494	DBCC
-8496	0000
-8498	0000
-849A	0000
-849C	0000
-849E	0000
-84A0	0000
-84A2	FFFF
-84A4	0012
-84A6	2401
-84A8	1C24
-84AA	0002
-84AC	0001
-84AE	FF03
-84B0	0010
-84B2	D70F
-84B4	0004
-84B6	0010
-84B8	D70F
-84BA	C20F
-84BC	FFFF
-84BE	0020
-84C0	2401
-84C2	1C4E
-84C4	0001
-84C6	FF03
-84C8	0010
-84CA	D70F
-84CC	0004
-84CE	0010
-84D0	D70F
-84D2	C20F
-84D4	0000
-84D6	0000
-84D8	0000
-84DA	0000
-84DC	0000
-84DE	0000
-84E0	0000
-84E2	0000
-84E4	FFFF
-84E6	0020
-84E8	2401
-84EA	1C76
-84EC	0001
-84EE	FF03
-84F0	0010
-84F2	D70F
-84F4	0004
-84F6	0010
-84F8	D70F
-84FA	C20F
-84FC	0000
-84FE	0000
-8500	0000
-8502	0000
-8504	0000
-8506	0000
-8508	0000
-850A	0000
-850C	FFFF
-850E	0010
-8510	2401
-8512	1C9E
-8514	0001
-8516	FF03
-8518	0010
-851A	D70F
-851C	0004
-851E	0010
-8520	D70F
-8522	C20F
-8524	FFFF
-8526	0010
-8528	2401
-852A	1CC6
-852C	0000
-852E	0000
-8530	0000
-8532	0000
-8534	0000
-8536	0000
-8538	0000
-853A	0000
-853C	FFFF
-853E	0020
-8540	2401
-8542	1CEE
-8544	0000
-8546	0000
-8548	0000
-854A	0000
-854C	0000
-854E	0000
-8550	0000
-8552	0000
-8554	0000
-8556	0000
-8558	0000
-855A	0000
-855C	0000
-855E	0000
-8560	0000
-8562	0000
-8564	FFFF
-8566	0020
-8568	2401
-856A	1D16
-856C	0000
-856E	0000
-8570	0000
-8572	0000
-8574	0000
-8576	0000
-8578	0000
-857A	0000
-857C	0000
-857E	0000
-8580	0000
-8582	0000
-8584	0000
-8586	0000
-8588	0000
-858A	0000
-858C	FFFF
-858E	0010
-8590	2401
-8592	1D3E
-8594	0000
-8596	0000
-8598	0000
-859A	0000
-859C	0000
-859E	0000
-85A0	0000
-85A2	0000
-85A4	FFFF
-85A6	0008
-85A8	2401
-85AA	1D72
-85AC	0000
-85AE	0000
-85B0	0000
-85B2	0000
-85B4	FFFF
-85B6	0008
-85B8	2401
-85BA	1D82
-85BC	0000
-85BE	0000
-85C0	0000
-85C2	0000
-85C4	FFFF
-85C6	0008
-85C8	2401
-85CA	1D92
-85CC	0000
-85CE	0000
-85D0	0000
-85D2	0000
-85D4	FFFF
-85D6	0008
-85D8	2401
-85DA	1DA2
-85DC	0000
-85DE	0000
-85E0	0000
-85E2	0000
-85E4	FFFF
-85E6	0008
-85E8	2401
-85EA	1DF2
-85EC	0000
-85EE	0000
-85F0	0000
-85F2	0000
-85F4	FFFF
-85F6	0008
-85F8	2401
-85FA	1E02
-85FC	0000
-85FE	0000
-8600	0000
-8602	0000
-8604	FFFF
-8606	0008
-8608	2401
-860A	1E12
-860C	0000
-860E	0000
-8610	0000
-8612	0000
-8614	FFFF
-8616	0008
-8618	2401
-861A	1E22
-861C	0000
-861E	0000
-8620	0000
-8622	0000
-8624	FFFF
-8626	0010
-8628	2402
-862A	A548
-862C	0000
-862E	0000
-8630	0000
-8632	0000
-8634	0000
-8636	0000
-8638	0000
-863A	0000
-863C	FFFF
-863E	0010
-8640	2402
-8642	A55C
-8644	0000
-8646	0000
-8648	0000
-864A	0000
-864C	0000
-864E	0000
-8650	0000
-8652	0000
-8654	FFFF
-8656	002C
-8658	2402
-865A	A574
-865C	0100
-865E	4000
-8660	8000
-8662	0001
-8664	0002
-8666	0002
-8668	0002
-866A	0002
-866C	0002
-866E	0002
-8670	0800
-8672	2100
-8674	2900
-8676	2E00
-8678	2E00
-867A	2E00
-867C	2E00
-867E	2E00
-8680	2E00
-8682	3000
-8684	A2FD
-8686	FEFE
-8688	FFFF
-868A	0008
-868C	2400
-868E	0260
-8690	0001
-8692	0000
-8694	0006
-8696	0700
-8698	FFFF
-869A	0008
-869C	2400
-869E	030C
-86A0	0000
-86A2	0300
-86A4	BF00
-86A6	0000
-86A8	FFFF
-86AA	0010
-86AC	2400
-86AE	0344
-86B0	0008
-86B2	0006
-86B4	1F18
-86B6	1F12
-86B8	0010
-86BA	000C
-86BC	1000
-86BE	1000
-86C0	FFFF
-86C2	0008
-86C4	2400
-86C6	0380
-86C8	0100
-86CA	0100
-86CC	0100
-86CE	0100
-86D0	FFFF
-86D2	0008
-86D4	2400
-86D6	0728
-86D8	0000
-86DA	0000
-86DC	0000
-86DE	0000
-86E0	FFFF
-86E2	000C
-86E4	2400
-86E6	0B02
-86E8	0101
-86EA	0001
-86EC	0101
-86EE	0101
-86F0	0101
-86F2	0100
-86F4	0000
-86F6	0000
-86F8	FFFE
-86FA	2400
-86FC	FFFD
-86FE	D4AC
-8700	01AE
-8702	FFFE
-8704	2401
-8706	FFFD
-8708	25E0
-870A	0001
-870C	25E2
-870E	00CD
-8710	31D0
-8712	0000
-8714	31FA
-8716	0400
-8718	FFFE
-871A	2400
-871C	FFFD
-871E	0B08
-8720	0001
-8722	0000
-8724	0000
-8726	0000
-8728	FFFE
-872A	2400
-872C	FFFD
-872E	703C
-8730	0101
-8732	703E
-8734	0001
-8736	7048
-8738	021F
-873A	704A
-873C	0A00
-873E	705A
-8740	0220
-8742	705C
-8744	0A01
-8746	7274
-8748	000B
-874A	7276
-874C	000B
-874E	795A
-8750	0020
-8752	7970
-8754	0020
-8756	7996
-8758	0101
-875A	7A0E
-875C	000F
-875E	7A6E
-8760	0019
-8762	7A86
-8764	0019
-8766	7BDA
-8768	004C
-876A	82A2
-876C	0014
-876E	82BA
-8770	0033
-8772	8C9E
-8774	0035
-8776	8CA2
-8778	0070
-877A	8CCE
-877C	0096
-877E	8CD2
-8780	00BE
-8782	B176
-8784	0206
-8786	B220
-8788	0301
-878A	B268
-878C	F380
-878E	C4E2
-8790	0000
-8792	C53C
-8794	0005
-8796	C554
-8798	1000
-879A	D326
-879C	1001
-879E	D3EC
-87A0	1CB0
-87A2	D4A8
-87A4	0001
-87A6	D4AC
-87A8	0001
-87AA	D4B0
-87AC	040E
-87AE	D4B8
-87B0	0014
-87B2	D4BC
-87B4	003F
-87B6	D4C4
-87B8	0000
-87BA	D4C8
-87BC	0001
-87BE	D4D0
-87C0	000A
-87C2	D4D2
-87C4	0000
-87C6	D4D6
-87C8	001A
-87CA	D4DE
-87CC	0001
-87CE	D4E2
-87D0	0000
-87D2	D4EC
-87D4	0000
-87D6	D4EE
-87D8	0000
-87DA	D4F8
-87DC	0000
-87DE	D4FA
-87E0	0000
-87E2	D554
-87E4	00C4
-87E6	D556
-87E8	00C4
-87EA	D560
-87EC	0352
-87EE	D562
-87F0	0352
-87F2	D684
-87F4	F380
-87F6	DB0C
-87F8	1F1F
-87FA	DB3C
-87FC	FDD2
-87FE	DB42
-8800	D212
-8802	DB44
-8804	D212
-8806	DB46
-8808	D212
-880A	DC8C
-880C	0B3F
-880E	DC94
-8810	0301
-8812	E980
-8814	049E
-8816	F014
-8818	0007
-881A	F3F4
-881C	00C8
-881E	F3F6
-8820	10D6
-8822	FFFE
-8824	2401
-8826	FFFD
-8828	1C4E
-882A	0180
-882C	1C50
-882E	0480
-8830	2540
-8832	0000
-8834	29A8
-8836	0001
-8838	29BA
-883A	0020
-883C	2A44
-883E	0739
-8840	2A56
-8842	0004
-8844	3132
-8846	0002
-8848	31D0
-884A	0000
-884C	31F8
-884E	0000
-8850	31FA
-8852	0000
-8854	437E
-8856	00E4
-8858	4396
-885A	000B
-885C	4398
-885E	000B
-8860	43C6
-8862	1401
-8864	FFFE
-8866	2402
-8868	FFFD
-886A	84C4
-886C	0001
-886E	A598
-8870	0032
-8872	A59A
-8874	0035
-8876	FFFE
-8878	2400
-887A	FFFD
-887C	0086
-887E	1400
-8880	0350
-8882	0008
-8884	0352
-8886	0008
-8888	0900
-888A	2222
-888C	0B02
-888E	0201
-8890	0B08
-8892	0001
-8894	0342
-8896	12B0
-8898	0000
-889A	FFFF
-889C	0008
-889E	2400
-88A0	7314
-88A2	2E00
-88A4	3000
-88A6	9EFD
-88A8	0040
-88AA	FFFF
-88AC	000A
-88AE	2400
-88B0	DADE
-88B2	0000
-88B4	A000
-88B6	0001
-88B8	0005
-88BA	4011
-88BC	FFFF
-88BE	0008
-88C0	2400
-88C2	DB10
-88C4	0040
-88C6	0020
-88C8	0040
-88CA	0060
-88CC	FFFF
-88CE	0010
-88D0	2401
-88D2	1C26
-88D4	8001
-88D6	8004
-88D8	2010
-88DA	2010
-88DC	0005
-88DE	00A0
-88E0	2810
-88E2	2810
-88E4	FFFF
-88E6	000A
-88E8	2401
-88EA	1C54
-88EC	0010
-88EE	0005
-88F0	00A0
-88F2	2810
-88F4	2810
-88F6	FFFF
-88F8	0010
-88FA	2401
-88FC	1C76
-88FE	8001
-8900	8004
-8902	2010
-8904	2010
-8906	0005
-8908	00A0
-890A	2810
-890C	2810
-890E	FFFF
-8910	0010
-8912	2401
-8914	1C9E
-8916	8001
-8918	8004
-891A	2010
-891C	2010
-891E	0005
-8920	00A0
-8922	2810
-8924	2810
-8926	FFFF
-8928	0010
-892A	2401
-892C	1CC6
-892E	8001
-8930	8004
-8932	2010
-8934	2010
-8936	0005
-8938	00A0
-893A	2810
-893C	2810
-893E	FFFF
-8940	0010
-8942	2401
-8944	1CEE
-8946	8001
-8948	8004
-894A	0010
-894C	0010
-894E	0005
-8950	00A0
-8952	2810
-8954	2810
-8956	FFFF
-8958	0010
-895A	2401
-895C	1D16
-895E	8001
-8960	8004
-8962	2010
-8964	2010
-8966	0005
-8968	00A0
-896A	2810
-896C	2810
-896E	FFFF
-8970	0010
-8972	2401
-8974	1D3E
-8976	8001
-8978	8004
-897A	2010
-897C	2010
-897E	0005
-8980	00A0
-8982	2810
-8984	2810
-8986	FFFF
-8988	001C
-898A	2402
-898C	A57A
-898E	A000
-8990	4001
-8992	8002
-8994	0005
-8996	000A
-8998	A00F
-899A	4011
-899C	0E00
-899E	2000
-89A0	2800
-89A2	1400
-89A4	2200
-89A6	2800
-89A8	2C00
-89AA	FFFF
-89AC	0008
-89AE	2400
-89B0	0344
-89B2	0000
-89B4	0000
-89B6	1F20
-89B8	1F18
-89BA	FFFF
-89BC	0008
-89BE	2400
-89C0	0380
-89C2	0200
-89C4	0200
-89C6	0200
-89C8	0200
-89CA	0000
-89CC	0000
-89CE	FFFE
-89D0	2400
-89D2	FFFD
-89D4	D4B0
-89D6	0492
-89D8	D4BC
-89DA	0037
-89DC	0346
-89DE	0300
-89E0	034A
-89E2	151F
-89E4	034E
-89E6	0900
-89E8	0000
-89EA	0000
-89EC	0000
-89EE	FFFE
-89F0	2400
-89F2	FFFD
-89F4	703C
-89F6	0101
-89F8	7048
-89FA	009F
-89FC	705A
-89FE	00A0
-8A00	7274
-8A02	B000
-8A04	7276
-8A06	0000
-8A08	7278
-8A0A	D212
-8A0C	7806
-8A0E	0101
-8A10	7808
-8A12	0C3F
-8A14	795A
-8A16	0020
-8A18	7970
-8A1A	0020
-8A1C	7A0E
-8A1E	000F
-8A20	7A6E
-8A22	0019
-8A24	7A86
-8A26	0019
-8A28	82A2
-8A2A	0014
-8A2C	82BA
-8A2E	0033
-8A30	8C9E
-8A32	0035
-8A34	8CA2
-8A36	0050
-8A38	8CCE
-8A3A	0096
-8A3C	8CD2
-8A3E	00BE
-8A40	B176
-8A42	0206
-8A44	B220
-8A46	0301
-8A48	B268
-8A4A	E380
-8A4C	C4D8
-8A4E	0010
-8A50	C4E2
-8A52	0000
-8A54	C53C
-8A56	0005
-8A58	C554
-8A5A	1000
-8A5C	D326
-8A5E	1001
-8A60	D3EC
-8A62	1CB0
-8A64	D49C
-8A66	0000
-8A68	D4A8
-8A6A	0000
-8A6C	D4AC
-8A6E	0001
-8A70	D4B8
-8A72	0014
-8A74	D4C4
-8A76	0000
-8A78	D4D0
-8A7A	000A
-8A7C	D4D2
-8A7E	0000
-8A80	D4DE
-8A82	0001
-8A84	D4EC
-8A86	0000
-8A88	D4EE
-8A8A	0000
-8A8C	D4F8
-8A8E	0000
-8A90	D4FA
-8A92	0000
-8A94	D684
-8A96	E380
-8A98	D704
-8A9A	7800
-8A9C	DADE
-8A9E	00A0
-8AA0	DAE0
-8AA2	0140
-8AA4	DB0C
-8AA6	000D
-8AA8	DB0E
-8AAA	000F
-8AAC	DB10
-8AAE	000D
-8AB0	DB3C
-8AB2	D236
-8AB4	DB3E
-8AB6	D236
-8AB8	DB40
-8ABA	D236
-8ABC	DC8C
-8ABE	0B3F
-8AC0	DC94
-8AC2	0301
-8AC4	E980
-8AC6	049E
-8AC8	F3F4
-8ACA	00C8
-8ACC	F3F6
-8ACE	10D6
-8AD0	FFFE
-8AD2	2401
-8AD4	FFFD
-8AD6	195E
-8AD8	0101
-8ADA	1966
-8ADC	0002
-8ADE	2540
-8AE0	0000
-8AE2	29A8
-8AE4	0001
-8AE6	29BA
-8AE8	0020
-8AEA	2A44
-8AEC	04AC
-8AEE	2A56
-8AF0	0004
-8AF2	3132
-8AF4	0002
-8AF6	31D0
-8AF8	0000
-8AFA	31F8
-8AFC	0000
-8AFE	31FA
-8B00	0000
-8B02	4396
-8B04	000D
-8B06	5A70
-8B08	0001
-8B0A	FFFE
-8B0C	2402
-8B0E	FFFD
-8B10	A598
-8B12	0032
-8B14	A59A
-8B16	0035
-8B18	FFFE
-8B1A	2400
-8B1C	FFFD
-8B1E	0086
-8B20	0280
-8B22	021E
-8B24	0006
-8B26	034E
-8B28	0900
-8B2A	0350
-8B2C	0008
-8B2E	0352
-8B30	0008
-8B32	0722
-8B34	0020
-8B36	0900
-8B38	2222
-8B3A	0B02
-8B3C	0201
-8B3E	0B08
-8B40	0001
-8B42	0342
-8B44	2560
-8B46	0000
-8B48	FFFF
-8B4A	0010
-8B4C	2401
-8B4E	1C26
-8B50	8001
-8B52	F004
-8B54	2010
-8B56	5610
-8B58	0005
-8B5A	00A0
-8B5C	B610
-8B5E	7011
-8B60	FFFF
-8B62	0018
-8B64	2401
-8B66	1C4E
-8B68	8001
-8B6A	F004
-8B6C	2810
-8B6E	5110
-8B70	0005
-8B72	F009
-8B74	9710
-8B76	DA10
-8B78	000A
-8B7A	00A0
-8B7C	DA10
-8B7E	7011
-8B80	FFFF
-8B82	0018
-8B84	2401
-8B86	1C76
-8B88	8001
-8B8A	F004
-8B8C	2810
-8B8E	6610
-8B90	0005
-8B92	F009
-8B94	7210
-8B96	DD10
-8B98	000A
-8B9A	00A0
-8B9C	DD10
-8B9E	7011
-8BA0	FFFF
-8BA2	0010
-8BA4	2401
-8BA6	1C9E
-8BA8	8001
-8BAA	F004
-8BAC	2010
-8BAE	5610
-8BB0	0005
-8BB2	00A0
-8BB4	C410
-8BB6	7011
-8BB8	FFFF
-8BBA	0010
-8BBC	2401
-8BBE	1CC6
-8BC0	8001
-8BC2	F004
-8BC4	2010
-8BC6	5610
-8BC8	0005
-8BCA	00A0
-8BCC	B610
-8BCE	7011
-8BD0	FFFF
-8BD2	0018
-8BD4	2401
-8BD6	1CEE
-8BD8	8001
-8BDA	F004
-8BDC	2810
-8BDE	5110
-8BE0	0005
-8BE2	F009
-8BE4	9710
-8BE6	DA10
-8BE8	000A
-8BEA	00A0
-8BEC	DA10
-8BEE	7011
-8BF0	FFFF
-8BF2	0018
-8BF4	2401
-8BF6	1D16
-8BF8	8001
-8BFA	F004
-8BFC	2810
-8BFE	6610
-8C00	0005
-8C02	F009
-8C04	7210
-8C06	DD10
-8C08	000A
-8C0A	00A0
-8C0C	DD10
-8C0E	7011
-8C10	FFFF
-8C12	0010
-8C14	2401
-8C16	1D3E
-8C18	8001
-8C1A	F004
-8C1C	2010
-8C1E	5610
-8C20	0005
-8C22	00A0
-8C24	C410
-8C26	7011
-8C28	FFFF
-8C2A	001C
-8C2C	2402
-8C2E	A57A
-8C30	A000
-8C32	4001
-8C34	8002
-8C36	0005
-8C38	000A
-8C3A	A00F
-8C3C	4011
-8C3E	0E00
-8C40	2000
-8C42	2800
-8C44	1400
-8C46	2200
-8C48	2800
-8C4A	2C00
-8C4C	FFFF
-8C4E	0008
-8C50	2400
-8C52	0344
-8C54	0000
-8C56	0003
-8C58	1F20
-8C5A	1F15
-8C5C	FFFF
-8C5E	0008
-8C60	2400
-8C62	0380
-8C64	0200
-8C66	0200
-8C68	0200
-8C6A	0200
-8C6C	0000
-8C6E	0000
-8C70	FFFE
-8C72	2400
-8C74	FFFD
-8C76	0346
-8C78	0780
-8C7A	034A
-8C7C	109F
-8C7E	034E
-8C80	0900
-8C82	0000
-8C84	0000
-8C86	0000
-8C88	FFFE
-8C8A	2401
-8C8C	FFFD
-8C8E	25E0
-8C90	0001
-8C92	25E2
-8C94	00CD
-8C96	31D0
-8C98	0000
-8C9A	31FA
-8C9C	0400
-8C9E	FFFE
-8CA0	2400
-8CA2	FFFD
-8CA4	0346
-8CA6	0780
-8CA8	034A
-8CAA	109F
-8CAC	034E
-8CAE	0900
-8CB0	0B08
-8CB2	0001
-8CB4	0000
-8CB6	0000
-8CB8	0000
-8CBA	FFFE
-8CBC	2400
-8CBE	FFFD
-8CC0	D49C
-8CC2	0022
-8CC4	D4A8
-8CC6	0000
-8CC8	D4B0
-8CCA	0458
-8CCC	D4BC
-8CCE	003A
-8CD0	D4E2
-8CD2	0032
-8CD4	D556
-8CD6	00F6
-8CD8	D562
-8CDA	0384
-8CDC	FFFE
-8CDE	2401
-8CE0	FFFD
-8CE2	1C2C
-8CE4	1000
-8CE6	1C32
-8CE8	1051
-8CEA	1C34
-8CEC	1035
-8CEE	1C5A
-8CF0	1072
-8CF2	1C5C
-8CF4	1072
-8CF6	1C7C
-8CF8	1000
-8CFA	1C82
-8CFC	1066
-8CFE	1C84
-8D00	1066
-8D02	1CAA
-8D04	1051
-8D06	1CAC
-8D08	1035
-8D0A	1CCC
-8D0C	1000
-8D0E	1CD2
-8D10	1051
-8D12	1CD4
-8D14	1035
-8D16	1CFA
-8D18	1072
-8D1A	1CFC
-8D1C	1072
-8D1E	1D1C
-8D20	1000
-8D22	1D22
-8D24	1066
-8D26	1D24
-8D28	1066
-8D2A	1D4A
-8D2C	1051
-8D2E	1D4C
-8D30	1035
-8D32	FFFE
-8D34	2400
-8D36	FFFD
-8D38	0E00
-8D3A	0302
-8D3C	0000
-8D3E	0000
-8D40	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_1.2A_0716.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_1.2A_0716.txt
deleted file mode 100755
index 6eaf6d50..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_1.2A_0716.txt
+++ /dev/null
@@ -1,5805 +0,0 @@
-	0xFCFC, 0x2000,
-	0xDCF0, 0x0101,
-	0xFCFC, 0x2001,
-	0x3C60, 0x0000,
-	0xFCFC, 0x2002,
-	0xA614, 0x8280,
-	0xA616, 0x0100,
-	0xA618, 0x1753,
-	0xA61A, 0x02FC,
-	0xA61C, 0xE702,
-	0xA61E, 0x83EA,
-	0xA620, 0xB7E7,
-	0xA622, 0x0124,
-	0xA624, 0x9387,
-	0xA626, 0x0787,
-	0xA628, 0x83A4,
-	0xA62A, 0x870D,
-	0xA62C, 0x03A4,
-	0xA62E, 0xC70D,
-	0xA630, 0x0146,
-	0xA632, 0xA685,
-	0xA634, 0x2285,
-	0xA636, 0x9740,
-	0xA638, 0x01FC,
-	0xA63A, 0xE780,
-	0xA63C, 0xE040,
-	0xA63E, 0x97B0,
-	0xA640, 0xFEFB,
-	0xA642, 0xE780,
-	0xA644, 0x60DC,
-	0xA646, 0x0546,
-	0xA648, 0xA685,
-	0xA64A, 0x2285,
-	0xA64C, 0x9740,
-	0xA64E, 0x01FC,
-	0xA650, 0xE780,
-	0xA652, 0x803F,
-	0xA654, 0x37A7,
-	0xA656, 0x0224,
-	0xA658, 0x9307,
-	0xA65A, 0x8754,
-	0xA65C, 0x03C6,
-	0xA65E, 0xC702,
-	0xA660, 0x8546,
-	0xA662, 0x6301,
-	0xA664, 0xD602,
-	0xA666, 0x83C6,
-	0xA668, 0x0700,
-	0xA66A, 0x0947,
-	0xA66C, 0x6384,
-	0xA66E, 0xE608,
-	0xA670, 0xB7C7,
-	0xA672, 0x0224,
-	0xA674, 0x83A7,
-	0xA676, 0x07B7,
-	0xA678, 0x0545,
-	0xA67A, 0x8297,
-	0xA67C, 0x1753,
-	0xA67E, 0x02FC,
-	0xA680, 0x6700,
-	0xA682, 0x83E6,
-	0xA684, 0x03D5,
-	0xA686, 0x4705,
-	0xA688, 0x05C9,
-	0xA68A, 0x83D8,
-	0xA68C, 0x2705,
-	0xA68E, 0xB7E6,
-	0xA690, 0x0124,
-	0xA692, 0x83D5,
-	0xA694, 0x665F,
-	0xA696, 0x1307,
-	0xA698, 0x8754,
-	0xA69A, 0x8146,
-	0xA69C, 0x2548,
-	0xA69E, 0x0356,
-	0xA6A0, 0xE702,
-	0xA6A2, 0x0907,
-	0xA6A4, 0x63E0,
-	0xA6A6, 0xC50E,
-	0xA6A8, 0x8506,
-	0xA6AA, 0xE39A,
-	0xA6AC, 0x06FF,
-	0xA6AE, 0x3707,
-	0xA6B0, 0x0040,
-	0xA6B2, 0x3A95,
-	0xA6B4, 0x2310,
-	0xA6B6, 0x1501,
-	0xA6B8, 0x03D5,
-	0xA6BA, 0x6705,
-	0xA6BC, 0x4DD5,
-	0xA6BE, 0x83D8,
-	0xA6C0, 0x2705,
-	0xA6C2, 0x37E7,
-	0xA6C4, 0x0124,
-	0xA6C6, 0x8355,
-	0xA6C8, 0x675F,
-	0xA6CA, 0xBE86,
-	0xA6CC, 0x0147,
-	0xA6CE, 0x2548,
-	0xA6D0, 0x03D6,
-	0xA6D2, 0xE602,
-	0xA6D4, 0x8906,
-	0xA6D6, 0x63EE,
-	0xA6D8, 0xC50A,
-	0xA6DA, 0x0507,
-	0xA6DC, 0xE31A,
-	0xA6DE, 0x07FF,
-	0xA6E0, 0x3707,
-	0xA6E2, 0x0040,
-	0xA6E4, 0x3A95,
-	0xA6E6, 0x2310,
-	0xA6E8, 0x1501,
-	0xA6EA, 0x83C6,
-	0xA6EC, 0x0700,
-	0xA6EE, 0x0947,
-	0xA6F0, 0xE390,
-	0xA6F2, 0xE6F8,
-	0xA6F4, 0x03D5,
-	0xA6F6, 0x8702,
-	0xA6F8, 0x1DC5,
-	0xA6FA, 0x83D8,
-	0xA6FC, 0x6702,
-	0xA6FE, 0x37F7,
-	0xA700, 0x0124,
-	0xA702, 0x8355,
-	0xA704, 0xA781,
-	0xA706, 0xBE86,
-	0xA708, 0x0147,
-	0xA70A, 0x2548,
-	0xA70C, 0x03D6,
-	0xA70E, 0x2600,
-	0xA710, 0x8906,
-	0xA712, 0x63E3,
-	0xA714, 0xC506,
-	0xA716, 0x0507,
-	0xA718, 0xE31A,
-	0xA71A, 0x07FF,
-	0xA71C, 0x3707,
-	0xA71E, 0x0040,
-	0xA720, 0x3A95,
-	0xA722, 0x2310,
-	0xA724, 0x1501,
-	0xA726, 0x03D5,
-	0xA728, 0xA702,
-	0xA72A, 0x39D1,
-	0xA72C, 0x83D8,
-	0xA72E, 0x6702,
-	0xA730, 0x37F7,
-	0xA732, 0x0124,
-	0xA734, 0x8355,
-	0xA736, 0xA781,
-	0xA738, 0xBE86,
-	0xA73A, 0x0147,
-	0xA73C, 0x2548,
-	0xA73E, 0x03D6,
-	0xA740, 0x2600,
-	0xA742, 0x8906,
-	0xA744, 0x63E4,
-	0xA746, 0xC502,
-	0xA748, 0x0507,
-	0xA74A, 0xE31A,
-	0xA74C, 0x07FF,
-	0xA74E, 0xB707,
-	0xA750, 0x0040,
-	0xA752, 0x3E95,
-	0xA754, 0xB7C7,
-	0xA756, 0x0224,
-	0xA758, 0x83A7,
-	0xA75A, 0x07B7,
-	0xA75C, 0x2310,
-	0xA75E, 0x1501,
-	0xA760, 0x0545,
-	0xA762, 0x8297,
-	0xA764, 0x1753,
-	0xA766, 0x02FC,
-	0xA768, 0x6700,
-	0xA76A, 0x03D8,
-	0xA76C, 0x2107,
-	0xA76E, 0x0607,
-	0xA770, 0xBA97,
-	0xA772, 0x83D8,
-	0xA774, 0x4700,
-	0xA776, 0xE1BF,
-	0xA778, 0x2107,
-	0xA77A, 0x0607,
-	0xA77C, 0x3E97,
-	0xA77E, 0x8358,
-	0xA780, 0x4700,
-	0xA782, 0x69BF,
-	0xA784, 0x1387,
-	0xA786, 0x0602,
-	0xA788, 0x0607,
-	0xA78A, 0x3E97,
-	0xA78C, 0x8358,
-	0xA78E, 0x0700,
-	0xA790, 0x39BF,
-	0xA792, 0x1307,
-	0xA794, 0x0702,
-	0xA796, 0x0607,
-	0xA798, 0x3E97,
-	0xA79A, 0x8358,
-	0xA79C, 0x0700,
-	0xA79E, 0x89B7,
-	0xA7A0, 0x1753,
-	0xA7A2, 0x02FC,
-	0xA7A4, 0xE702,
-	0xA7A6, 0x83CF,
-	0xA7A8, 0x3284,
-	0xA7AA, 0xB7E7,
-	0xA7AC, 0x0124,
-	0xA7AE, 0x032B,
-	0xA7B0, 0x4600,
-	0xA7B2, 0x832A,
-	0xA7B4, 0x4609,
-	0xA7B6, 0x032A,
-	0xA7B8, 0xC604,
-	0xA7BA, 0x0348,
-	0xA7BC, 0x8600,
-	0xA7BE, 0x9387,
-	0xA7C0, 0x0787,
-	0xA7C2, 0x0346,
-	0xA7C4, 0x8609,
-	0xA7C6, 0x0347,
-	0xA7C8, 0x0405,
-	0xA7CA, 0x83AB,
-	0xA7CC, 0x070E,
-	0xA7CE, 0x03AC,
-	0xA7D0, 0x470E,
-	0xA7D2, 0x3318,
-	0xA7D4, 0x0B01,
-	0xA7D6, 0x3317,
-	0xA7D8, 0xEA00,
-	0xA7DA, 0x3396,
-	0xA7DC, 0xCA00,
-	0xA7DE, 0x2322,
-	0xA7E0, 0x0401,
-	0xA7E2, 0x78C4,
-	0xA7E4, 0xAA84,
-	0xA7E6, 0x2E89,
-	0xA7E8, 0x232A,
-	0xA7EA, 0xC408,
-	0xA7EC, 0xDE85,
-	0xA7EE, 0x6285,
-	0xA7F0, 0x0146,
-	0xA7F2, 0xB689,
-	0xA7F4, 0x9740,
-	0xA7F6, 0x01FC,
-	0xA7F8, 0xE780,
-	0xA7FA, 0x0025,
-	0xA7FC, 0xCE86,
-	0xA7FE, 0x2286,
-	0xA800, 0xCA85,
-	0xA802, 0x2685,
-	0xA804, 0x97B0,
-	0xA806, 0xFDFB,
-	0xA808, 0xE780,
-	0xA80A, 0x00B0,
-	0xA80C, 0x6285,
-	0xA80E, 0x0546,
-	0xA810, 0xDE85,
-	0xA812, 0x9740,
-	0xA814, 0x01FC,
-	0xA816, 0xE780,
-	0xA818, 0x2023,
-	0xA81A, 0xB7C7,
-	0xA81C, 0x0224,
-	0xA81E, 0x83A7,
-	0xA820, 0x07B7,
-	0xA822, 0x2322,
-	0xA824, 0x6401,
-	0xA826, 0x232A,
-	0xA828, 0x5409,
-	0xA82A, 0x2326,
-	0xA82C, 0x4405,
-	0xA82E, 0x0145,
-	0xA830, 0x8297,
-	0xA832, 0x1753,
-	0xA834, 0x02FC,
-	0xA836, 0x6700,
-	0xA838, 0xE3C9,
-	0xA83A, 0x0100,
-	0xA83C, 0x1753,
-	0xA83E, 0x02FC,
-	0xA840, 0xE702,
-	0xA842, 0x43C8,
-	0xA844, 0x2A84,
-	0xA846, 0xEFE0,
-	0xA848, 0xEFA9,
-	0xA84A, 0xA147,
-	0xA84C, 0x6306,
-	0xA84E, 0xF400,
-	0xA850, 0x1753,
-	0xA852, 0x02FC,
-	0xA854, 0x6700,
-	0xA856, 0x43C9,
-	0xA858, 0x9770,
-	0xA85A, 0xFFFB,
-	0xA85C, 0xE780,
-	0xA85E, 0x000C,
-	0xA860, 0x39C5,
-	0xA862, 0xB737,
-	0xA864, 0x0124,
-	0xA866, 0x83C7,
-	0xA868, 0x271A,
-	0xA86A, 0xFDD3,
-	0xA86C, 0x3784,
-	0xA86E, 0x0040,
-	0xA870, 0x8355,
-	0xA872, 0xE4F3,
-	0xA874, 0x0D45,
-	0xA876, 0x93E5,
-	0xA878, 0x0524,
-	0xA87A, 0x97D0,
-	0xA87C, 0xFFFB,
-	0xA87E, 0xE780,
-	0xA880, 0xA00A,
-	0xA882, 0x8355,
-	0xA884, 0x24F7,
-	0xA886, 0xB7A7,
-	0xA888, 0x0124,
-	0xA88A, 0x9387,
-	0xA88C, 0x0753,
-	0xA88E, 0x03D7,
-	0xA890, 0x47B6,
-	0xA892, 0xC205,
-	0xA894, 0xC181,
-	0xA896, 0x1377,
-	0xA898, 0xF7DB,
-	0xA89A, 0x93F5,
-	0xA89C, 0xF5DB,
-	0xA89E, 0x4145,
-	0xA8A0, 0x2392,
-	0xA8A2, 0xE7B6,
-	0xA8A4, 0x97D0,
-	0xA8A6, 0xFFFB,
-	0xA8A8, 0xE780,
-	0xA8AA, 0x0008,
-	0xA8AC, 0x55B7,
-	0xA8AE, 0x9770,
-	0xA8B0, 0xFFFB,
-	0xA8B2, 0xE780,
-	0xA8B4, 0xA003,
-	0xA8B6, 0x55D5,
-	0xA8B8, 0x9770,
-	0xA8BA, 0xFFFB,
-	0xA8BC, 0xE780,
-	0xA8BE, 0x807D,
-	0xA8C0, 0x19C9,
-	0xA8C2, 0xB797,
-	0xA8C4, 0x0124,
-	0xA8C6, 0x9387,
-	0xA8C8, 0x07D7,
-	0xA8CA, 0x03C7,
-	0xA8CC, 0x8703,
-	0xA8CE, 0x83C7,
-	0xA8D0, 0x2706,
-	0xA8D2, 0x6306,
-	0xA8D4, 0xF706,
-	0xA8D6, 0x9770,
-	0xA8D8, 0xFFFB,
-	0xA8DA, 0xE780,
-	0xA8DC, 0xA07B,
-	0xA8DE, 0x51D1,
-	0xA8E0, 0xB797,
-	0xA8E2, 0x0124,
-	0xA8E4, 0x9387,
-	0xA8E6, 0x07D7,
-	0xA8E8, 0x03C7,
-	0xA8EA, 0xC701,
-	0xA8EC, 0x83C7,
-	0xA8EE, 0x2706,
-	0xA8F0, 0xE319,
-	0xA8F2, 0xF7F6,
-	0xA8F4, 0xB727,
-	0xA8F6, 0x0224,
-	0xA8F8, 0x0564,
-	0xA8FA, 0x9387,
-	0xA8FC, 0x076B,
-	0xA8FE, 0xA297,
-	0xA900, 0x03C7,
-	0xA902, 0xF780,
-	0xA904, 0x8547,
-	0xA906, 0x6317,
-	0xA908, 0xF700,
-	0xA90A, 0xB737,
-	0xA90C, 0x0124,
-	0xA90E, 0x83C7,
-	0xA910, 0x57A5,
-	0xA912, 0xB1C3,
-	0xA914, 0xB787,
-	0xA916, 0x0040,
-	0xA918, 0x83D5,
-	0xA91A, 0xE7F3,
-	0xA91C, 0x0D45,
-	0xA91E, 0x93E5,
-	0xA920, 0x0501,
-	0xA922, 0x97D0,
-	0xA924, 0xFFFB,
-	0xA926, 0xE780,
-	0xA928, 0x2000,
-	0xA92A, 0xB7A7,
-	0xA92C, 0x0124,
-	0xA92E, 0x9387,
-	0xA930, 0x0753,
-	0xA932, 0x03D7,
-	0xA934, 0x47B6,
-	0xA936, 0x3D9B,
-	0xA938, 0x2392,
-	0xA93A, 0xE7B6,
-	0xA93C, 0x1DB7,
-	0xA93E, 0xB727,
-	0xA940, 0x0224,
-	0xA942, 0x0564,
-	0xA944, 0x9387,
-	0xA946, 0x076B,
-	0xA948, 0xA297,
-	0xA94A, 0x03C7,
-	0xA94C, 0xF780,
-	0xA94E, 0x9147,
-	0xA950, 0xE30D,
-	0xA952, 0xF7FA,
-	0xA954, 0xC1B7,
-	0xA956, 0xB787,
-	0xA958, 0x0040,
-	0xA95A, 0x83D5,
-	0xA95C, 0xE7F3,
-	0xA95E, 0x0D45,
-	0xA960, 0x93E5,
-	0xA962, 0x0504,
-	0xA964, 0x97D0,
-	0xA966, 0xFFFB,
-	0xA968, 0xE780,
-	0xA96A, 0x00FC,
-	0xA96C, 0xB797,
-	0xA96E, 0x0124,
-	0xA970, 0x9387,
-	0xA972, 0x0753,
-	0xA974, 0xA297,
-	0xA976, 0x03D7,
-	0xA978, 0x47B6,
-	0xA97A, 0x1377,
-	0xA97C, 0xF7FB,
-	0xA97E, 0x2392,
-	0xA980, 0xE7B6,
-	0xA982, 0xC5B5,
-	0xA984, 0x3571,
-	0xA986, 0x22CF,
-	0xA988, 0x26CD,
-	0xA98A, 0x7324,
-	0xA98C, 0x2034,
-	0xA98E, 0xF324,
-	0xA990, 0x1034,
-	0xA992, 0x7360,
-	0xA994, 0x0430,
-	0xA996, 0x06CB,
-	0xA998, 0x16C9,
-	0xA99A, 0x1AC7,
-	0xA99C, 0x1EC5,
-	0xA99E, 0x2AC3,
-	0xA9A0, 0x2EC1,
-	0xA9A2, 0xB2DE,
-	0xA9A4, 0xB6DC,
-	0xA9A6, 0xBADA,
-	0xA9A8, 0xBED8,
-	0xA9AA, 0xC2D6,
-	0xA9AC, 0xC6D4,
-	0xA9AE, 0xF2D2,
-	0xA9B0, 0xF6D0,
-	0xA9B2, 0xFACE,
-	0xA9B4, 0xFECC,
-	0xA9B6, 0x82E2,
-	0xA9B8, 0x86E0,
-	0xA9BA, 0x0AFE,
-	0xA9BC, 0x0EFC,
-	0xA9BE, 0x12FA,
-	0xA9C0, 0x16F8,
-	0xA9C2, 0x1AF6,
-	0xA9C4, 0x1EF4,
-	0xA9C6, 0x2AF2,
-	0xA9C8, 0x2EF0,
-	0xA9CA, 0x32EE,
-	0xA9CC, 0x36EC,
-	0xA9CE, 0x3AEA,
-	0xA9D0, 0x3EE8,
-	0xA9D2, 0x42E6,
-	0xA9D4, 0x46E4,
-	0xA9D6, 0x72E2,
-	0xA9D8, 0x76E0,
-	0xA9DA, 0x272E,
-	0xA9DC, 0xE1FF,
-	0xA9DE, 0x272C,
-	0xA9E0, 0xF1FF,
-	0xA9E2, 0x9770,
-	0xA9E4, 0xFFFB,
-	0xA9E6, 0xE780,
-	0xA9E8, 0x60F3,
-	0xA9EA, 0x19C5,
-	0xA9EC, 0x9770,
-	0xA9EE, 0xFFFB,
-	0xA9F0, 0xE780,
-	0xA9F2, 0xC0EF,
-	0xA9F4, 0x631C,
-	0xA9F6, 0x0512,
-	0xA9F8, 0x9305,
-	0xA9FA, 0x0024,
-	0xA9FC, 0x4145,
-	0xA9FE, 0x97D0,
-	0xAA00, 0xFFFB,
-	0xAA02, 0xE780,
-	0xAA04, 0x60F9,
-	0xAA06, 0x8145,
-	0xAA08, 0x9377,
-	0xAA0A, 0x1500,
-	0xAA0C, 0x85C7,
-	0xAA0E, 0x37D7,
-	0xAA10, 0x0124,
-	0xAA12, 0xB7A7,
-	0xAA14, 0x0124,
-	0xAA16, 0x1307,
-	0xAA18, 0x07C4,
-	0xAA1A, 0x9387,
-	0xAA1C, 0x0753,
-	0xAA1E, 0x0356,
-	0xAA20, 0x4707,
-	0xAA22, 0x83D6,
-	0xAA24, 0xA7B6,
-	0xAA26, 0x0506,
-	0xAA28, 0x93E6,
-	0xAA2A, 0x1600,
-	0xAA2C, 0x231A,
-	0xAA2E, 0xC706,
-	0xAA30, 0x2395,
-	0xAA32, 0xD7B6,
-	0xAA34, 0x9377,
-	0xAA36, 0x2500,
-	0xAA38, 0x85C7,
-	0xAA3A, 0x37D7,
-	0xAA3C, 0x0124,
-	0xAA3E, 0xB7A7,
-	0xAA40, 0x0124,
-	0xAA42, 0x1307,
-	0xAA44, 0x07C4,
-	0xAA46, 0x9387,
-	0xAA48, 0x0753,
-	0xAA4A, 0x0356,
-	0xAA4C, 0xC70C,
-	0xAA4E, 0x83D6,
-	0xAA50, 0xA7B6,
-	0xAA52, 0x0506,
-	0xAA54, 0x93E6,
-	0xAA56, 0x2600,
-	0xAA58, 0x2316,
-	0xAA5A, 0xC70C,
-	0xAA5C, 0x2395,
-	0xAA5E, 0xD7B6,
-	0xAA60, 0x9377,
-	0xAA62, 0x0520,
-	0xAA64, 0x1375,
-	0xAA66, 0x0504,
-	0xAA68, 0xC5C3,
-	0xAA6A, 0xB7D7,
-	0xAA6C, 0x0124,
-	0xAA6E, 0x9387,
-	0xAA70, 0x07C4,
-	0xAA72, 0x03D7,
-	0xAA74, 0x6708,
-	0xAA76, 0x0507,
-	0xAA78, 0x2393,
-	0xAA7A, 0xE708,
-	0xAA7C, 0xD1C5,
-	0xAA7E, 0x37A7,
-	0xAA80, 0x0124,
-	0xAA82, 0x1307,
-	0xAA84, 0x0753,
-	0xAA86, 0x8356,
-	0xAA88, 0xA7B6,
-	0xAA8A, 0x93E6,
-	0xAA8C, 0x0620,
-	0xAA8E, 0x2315,
-	0xAA90, 0xD7B6,
-	0xAA92, 0x11C9,
-	0xAA94, 0x03D6,
-	0xAA96, 0xA708,
-	0xAA98, 0x0506,
-	0xAA9A, 0x2395,
-	0xAA9C, 0xC708,
-	0xAA9E, 0x93E6,
-	0xAAA0, 0x0604,
-	0xAAA2, 0x2315,
-	0xAAA4, 0xD7B6,
-	0xAAA6, 0xDA40,
-	0xAAA8, 0xCA42,
-	0xAAAA, 0x3A43,
-	0xAAAC, 0xAA43,
-	0xAAAE, 0x1A45,
-	0xAAB0, 0x8A45,
-	0xAAB2, 0x7656,
-	0xAAB4, 0xE656,
-	0xAAB6, 0x5657,
-	0xAAB8, 0xC657,
-	0xAABA, 0x3658,
-	0xAABC, 0xA658,
-	0xAABE, 0x165E,
-	0xAAC0, 0x865E,
-	0xAAC2, 0x764F,
-	0xAAC4, 0xE64F,
-	0xAAC6, 0x1660,
-	0xAAC8, 0x8660,
-	0xAACA, 0x7271,
-	0xAACC, 0xE271,
-	0xAACE, 0x5272,
-	0xAAD0, 0xC272,
-	0xAAD2, 0x3273,
-	0xAAD4, 0xA273,
-	0xAAD6, 0x1275,
-	0xAAD8, 0x8275,
-	0xAADA, 0x7266,
-	0xAADC, 0xE266,
-	0xAADE, 0x5267,
-	0xAAE0, 0xC267,
-	0xAAE2, 0x3268,
-	0xAAE4, 0xA268,
-	0xAAE6, 0x126E,
-	0xAAE8, 0x826E,
-	0xAAEA, 0x072F,
-	0xAAEC, 0xC1FF,
-	0xAAEE, 0x872F,
-	0xAAF0, 0x81FF,
-	0xAAF2, 0x7370,
-	0xAAF4, 0x0430,
-	0xAAF6, 0x7390,
-	0xAAF8, 0x1434,
-	0xAAFA, 0x7310,
-	0xAAFC, 0x2434,
-	0xAAFE, 0x7A44,
-	0xAB00, 0xEA44,
-	0xAB02, 0x0D61,
-	0xAB04, 0x7300,
-	0xAB06, 0x2030,
-	0xAB08, 0x59DD,
-	0xAB0A, 0xB7D7,
-	0xAB0C, 0x0124,
-	0xAB0E, 0x9387,
-	0xAB10, 0x07C4,
-	0xAB12, 0x03D7,
-	0xAB14, 0xA708,
-	0xAB16, 0x0507,
-	0xAB18, 0x2395,
-	0xAB1A, 0xE708,
-	0xAB1C, 0xC9D5,
-	0xAB1E, 0x37A7,
-	0xAB20, 0x0124,
-	0xAB22, 0x1307,
-	0xAB24, 0x0753,
-	0xAB26, 0x8356,
-	0xAB28, 0xA7B6,
-	0xAB2A, 0x95BF,
-	0xAB2C, 0xB7A7,
-	0xAB2E, 0x0124,
-	0xAB30, 0x83D5,
-	0xAB32, 0x8709,
-	0xAB34, 0x4145,
-	0xAB36, 0x97D0,
-	0xAB38, 0xFFFB,
-	0xAB3A, 0xE780,
-	0xAB3C, 0xE0E5,
-	0xAB3E, 0x8545,
-	0xAB40, 0xE1B5,
-	0xAB42, 0x0100,
-	0xAB44, 0x8280,
-	0xAB46, 0x0100,
-	0xAB48, 0x1753,
-	0xAB4A, 0x02FC,
-	0xAB4C, 0xE702,
-	0xAB4E, 0x8397,
-	0xAB50, 0x37E4,
-	0xAB52, 0x0124,
-	0xAB54, 0x1304,
-	0xAB56, 0x044C,
-	0xAB58, 0x8344,
-	0xAB5A, 0xE40A,
-	0xAB5C, 0x8547,
-	0xAB5E, 0x2307,
-	0xAB60, 0xF40A,
-	0xAB62, 0x97A0,
-	0xAB64, 0xFDFB,
-	0xAB66, 0xE780,
-	0xAB68, 0x20E3,
-	0xAB6A, 0x2307,
-	0xAB6C, 0x940A,
-	0xAB6E, 0x1753,
-	0xAB70, 0x02FC,
-	0xAB72, 0x6700,
-	0xAB74, 0x6397,
-	0xAB76, 0x0100,
-	0xAB78, 0xB7A7,
-	0xAB7A, 0x0224,
-	0xAB7C, 0x83C7,
-	0xAB7E, 0x075A,
-	0xAB80, 0x0547,
-	0xAB82, 0x6383,
-	0xAB84, 0xE700,
-	0xAB86, 0x8280,
-	0xAB88, 0x1753,
-	0xAB8A, 0x02FC,
-	0xAB8C, 0xE702,
-	0xAB8E, 0xE391,
-	0xAB90, 0x3794,
-	0xAB92, 0x0124,
-	0xAB94, 0x1304,
-	0xAB96, 0x0453,
-	0xAB98, 0x0347,
-	0xAB9A, 0x041B,
-	0xAB9C, 0x4111,
-	0xAB9E, 0x6307,
-	0xABA0, 0xF700,
-	0xABA2, 0x4101,
-	0xABA4, 0x1753,
-	0xABA6, 0x02FC,
-	0xABA8, 0x6700,
-	0xABAA, 0x6393,
-	0xABAC, 0x8947,
-	0xABAE, 0xE31A,
-	0xABB0, 0xF5FE,
-	0xABB2, 0x8347,
-	0xABB4, 0x3441,
-	0xABB6, 0xADC3,
-	0xABB8, 0x83A9,
-	0xABBA, 0x0500,
-	0xABBC, 0x2EC6,
-	0xABBE, 0x97C0,
-	0xABC0, 0x01FC,
-	0xABC2, 0xE780,
-	0xABC4, 0x20B8,
-	0xABC6, 0xAA84,
-	0xABC8, 0x9780,
-	0xABCA, 0x01FC,
-	0xABCC, 0xE780,
-	0xABCE, 0x80C7,
-	0xABD0, 0xB245,
-	0xABD2, 0x2A89,
-	0xABD4, 0x9C41,
-	0xABD6, 0x63F3,
-	0xABD8, 0x9700,
-	0xABDA, 0xA687,
-	0xABDC, 0x8851,
-	0xABDE, 0x9CC1,
-	0xABE0, 0x2EC6,
-	0xABE2, 0x4A95,
-	0xABE4, 0x97B0,
-	0xABE6, 0x00FC,
-	0xABE8, 0xE780,
-	0xABEA, 0x00C5,
-	0xABEC, 0xB245,
-	0xABEE, 0xAA84,
-	0xABF0, 0xE8C9,
-	0xABF2, 0x3385,
-	0xABF4, 0x2901,
-	0xABF6, 0x97B0,
-	0xABF8, 0x00FC,
-	0xABFA, 0xE780,
-	0xABFC, 0xE0C3,
-	0xABFE, 0x8567,
-	0xAC00, 0x3E94,
-	0xAC02, 0x8327,
-	0xAC04, 0xC483,
-	0xAC06, 0x2695,
-	0xAC08, 0xB245,
-	0xAC0A, 0x63F3,
-	0xAC0C, 0xA700,
-	0xAC0E, 0xAA87,
-	0xAC10, 0x2322,
-	0xAC12, 0xF498,
-	0xAC14, 0xE8C5,
-	0xAC16, 0x71B7,
-	0xAC18, 0x0145,
-	0xAC1A, 0x2EC6,
-	0xAC1C, 0x97B0,
-	0xAC1E, 0x01FC,
-	0xAC20, 0xE780,
-	0xAC22, 0x8035,
-	0xAC24, 0xB245,
-	0xAC26, 0xAA89,
-	0xAC28, 0x51BF,
-	0xAC2A, 0x0100,
-	0xAC2C, 0x1753,
-	0xAC2E, 0x02FC,
-	0xAC30, 0xE702,
-	0xAC32, 0x4389,
-	0xAC34, 0x2A84,
-	0xAC36, 0xEFE0,
-	0xAC38, 0xAFFC,
-	0xAC3A, 0x01E8,
-	0xAC3C, 0xB7D7,
-	0xAC3E, 0x0124,
-	0xAC40, 0x03A7,
-	0xAC42, 0x87C1,
-	0xAC44, 0x9147,
-	0xAC46, 0x6306,
-	0xAC48, 0xF700,
-	0xAC4A, 0x1753,
-	0xAC4C, 0x02FC,
-	0xAC4E, 0x6700,
-	0xAC50, 0xA389,
-	0xAC52, 0xB7D7,
-	0xAC54, 0x0124,
-	0xAC56, 0x83C7,
-	0xAC58, 0x07FA,
-	0xAC5A, 0xE5DB,
-	0xAC5C, 0xB747,
-	0xAC5E, 0x0124,
-	0xAC60, 0x83C7,
-	0xAC62, 0x27C4,
-	0xAC64, 0xFDF3,
-	0xAC66, 0x97E0,
-	0xAC68, 0x00FC,
-	0xAC6A, 0xE780,
-	0xAC6C, 0xA097,
-	0xAC6E, 0xB787,
-	0xAC70, 0x0224,
-	0xAC72, 0x0547,
-	0xAC74, 0xA380,
-	0xAC76, 0xE74E,
-	0xAC78, 0xC9BF,
-	0xAC7A, 0x0100,
-	0xAC7C, 0x1753,
-	0xAC7E, 0x02FC,
-	0xAC80, 0xE702,
-	0xAC82, 0x4384,
-	0xAC84, 0x3784,
-	0xAC86, 0x0224,
-	0xAC88, 0x1304,
-	0xAC8A, 0xC449,
-	0xAC8C, 0x8347,
-	0xAC8E, 0x5404,
-	0xAC90, 0x99E7,
-	0xAC92, 0xEFE0,
-	0xAC94, 0x7F82,
-	0xAC96, 0x1753,
-	0xAC98, 0x02FC,
-	0xAC9A, 0x6700,
-	0xAC9C, 0xE384,
-	0xAC9E, 0x97E0,
-	0xACA0, 0x00FC,
-	0xACA2, 0xE780,
-	0xACA4, 0x20AF,
-	0xACA6, 0xA302,
-	0xACA8, 0x0404,
-	0xACAA, 0xEFE0,
-	0xACAC, 0xFF80,
-	0xACAE, 0x1753,
-	0xACB0, 0x02FC,
-	0xACB2, 0x6700,
-	0xACB4, 0x6383,
-	0xACB6, 0x0100,
-	0xACB8, 0x1753,
-	0xACBA, 0x02FC,
-	0xACBC, 0xE702,
-	0xACBE, 0x8380,
-	0xACC0, 0xB7E7,
-	0xACC2, 0x0124,
-	0xACC4, 0x9387,
-	0xACC6, 0x0787,
-	0xACC8, 0x03A9,
-	0xACCA, 0x870E,
-	0xACCC, 0x83A4,
-	0xACCE, 0xC70E,
-	0xACD0, 0x0146,
-	0xACD2, 0xCA85,
-	0xACD4, 0x2A84,
-	0xACD6, 0x2685,
-	0xACD8, 0x9740,
-	0xACDA, 0x01FC,
-	0xACDC, 0xE780,
-	0xACDE, 0xC0D6,
-	0xACE0, 0x2285,
-	0xACE2, 0x97A0,
-	0xACE4, 0xFFFB,
-	0xACE6, 0xE780,
-	0xACE8, 0x603E,
-	0xACEA, 0x0546,
-	0xACEC, 0xCA85,
-	0xACEE, 0x2685,
-	0xACF0, 0x9740,
-	0xACF2, 0x01FC,
-	0xACF4, 0xE780,
-	0xACF6, 0x40D5,
-	0xACF8, 0x8547,
-	0xACFA, 0x630F,
-	0xACFC, 0xF400,
-	0xACFE, 0x9147,
-	0xAD00, 0x630C,
-	0xAD02, 0xF400,
-	0xAD04, 0xB7C7,
-	0xAD06, 0x0224,
-	0xAD08, 0x83A7,
-	0xAD0A, 0x07B7,
-	0xAD0C, 0x0945,
-	0xAD0E, 0x8297,
-	0xAD10, 0x1743,
-	0xAD12, 0x02FC,
-	0xAD14, 0x6700,
-	0xAD16, 0x437D,
-	0xAD18, 0x9770,
-	0xAD1A, 0xFFFB,
-	0xAD1C, 0xE780,
-	0xAD1E, 0x00C0,
-	0xAD20, 0x75F1,
-	0xAD22, 0x9770,
-	0xAD24, 0xFFFB,
-	0xAD26, 0xE780,
-	0xAD28, 0x60BC,
-	0xAD2A, 0x69DD,
-	0xAD2C, 0x9770,
-	0xAD2E, 0xFFFB,
-	0xAD30, 0xE780,
-	0xAD32, 0x4036,
-	0xAD34, 0x19C9,
-	0xAD36, 0xB797,
-	0xAD38, 0x0124,
-	0xAD3A, 0x9387,
-	0xAD3C, 0x07D7,
-	0xAD3E, 0x03C7,
-	0xAD40, 0x8703,
-	0xAD42, 0x83C7,
-	0xAD44, 0x2706,
-	0xAD46, 0x6306,
-	0xAD48, 0xF706,
-	0xAD4A, 0x9770,
-	0xAD4C, 0xFFFB,
-	0xAD4E, 0xE780,
-	0xAD50, 0x6034,
-	0xAD52, 0x4DD9,
-	0xAD54, 0xB797,
-	0xAD56, 0x0124,
-	0xAD58, 0x9387,
-	0xAD5A, 0x07D7,
-	0xAD5C, 0x03C7,
-	0xAD5E, 0xC701,
-	0xAD60, 0x83C7,
-	0xAD62, 0x2706,
-	0xAD64, 0xE310,
-	0xAD66, 0xF7FA,
-	0xAD68, 0xB7C7,
-	0xAD6A, 0x0224,
-	0xAD6C, 0x83A7,
-	0xAD6E, 0x47B7,
-	0xAD70, 0xB706,
-	0xAD72, 0x0040,
-	0xAD74, 0x1386,
-	0xAD76, 0x4606,
-	0xAD78, 0x8965,
-	0xAD7A, 0x3E96,
-	0xAD7C, 0x1387,
-	0xAD7E, 0x061F,
-	0xAD80, 0x9385,
-	0xAD82, 0xF5F1,
-	0xAD84, 0x2310,
-	0xAD86, 0xB600,
-	0xAD88, 0x3E97,
-	0xAD8A, 0x7D56,
-	0xAD8C, 0x2310,
-	0xAD8E, 0xC700,
-	0xAD90, 0x37D6,
-	0xAD92, 0x0124,
-	0xAD94, 0x1306,
-	0xAD96, 0x06E7,
-	0xAD98, 0x0357,
-	0xAD9A, 0xC605,
-	0xAD9C, 0x0356,
-	0xAD9E, 0x6606,
-	0xADA0, 0x9386,
-	0xADA2, 0x861D,
-	0xADA4, 0x3297,
-	0xADA6, 0x4207,
-	0xADA8, 0xB697,
-	0xADAA, 0x4183,
-	0xADAC, 0x2390,
-	0xADAE, 0xE700,
-	0xADB0, 0x91BF,
-	0xADB2, 0xB7C7,
-	0xADB4, 0x0224,
-	0xADB6, 0x83A7,
-	0xADB8, 0x47B7,
-	0xADBA, 0xB706,
-	0xADBC, 0x0040,
-	0xADBE, 0x1386,
-	0xADC0, 0x4606,
-	0xADC2, 0x8965,
-	0xADC4, 0x3E96,
-	0xADC6, 0x1387,
-	0xADC8, 0x061F,
-	0xADCA, 0x9385,
-	0xADCC, 0xF5F1,
-	0xADCE, 0x2310,
-	0xADD0, 0xB600,
-	0xADD2, 0x3E97,
-	0xADD4, 0x7D56,
-	0xADD6, 0x2310,
-	0xADD8, 0xC700,
-	0xADDA, 0x37D6,
-	0xADDC, 0x0124,
-	0xADDE, 0x1306,
-	0xADE0, 0x06E7,
-	0xADE2, 0x0357,
-	0xADE4, 0x0606,
-	0xADE6, 0x9386,
-	0xADE8, 0xA61D,
-	0xADEA, 0x0356,
-	0xADEC, 0x6606,
-	0xADEE, 0x5DBF,
-	0xADF0, 0x1743,
-	0xADF2, 0x02FC,
-	0xADF4, 0xE702,
-	0xADF6, 0x036D,
-	0xADF8, 0xB7D7,
-	0xADFA, 0x0024,
-	0xADFC, 0x83C7,
-	0xADFE, 0x476D,
-	0xAE00, 0x8544,
-	0xAE02, 0x6380,
-	0xAE04, 0x9714,
-	0xAE06, 0xB7E7,
-	0xAE08, 0x0024,
-	0xAE0A, 0x03C4,
-	0xAE0C, 0xC784,
-	0xAE0E, 0xB7A7,
-	0xAE10, 0x0124,
-	0xAE12, 0x83C7,
-	0xAE14, 0x6792,
-	0xAE16, 0x3334,
-	0xAE18, 0x8000,
-	0xAE1A, 0x3304,
-	0xAE1C, 0x8040,
-	0xAE1E, 0x7998,
-	0xAE20, 0x1304,
-	0xAE22, 0x6402,
-	0xAE24, 0xEDE7,
-	0xAE26, 0xB767,
-	0xAE28, 0x0024,
-	0xAE2A, 0x9387,
-	0xAE2C, 0x0733,
-	0xAE2E, 0x03D7,
-	0xAE30, 0xE75B,
-	0xAE32, 0x19C7,
-	0xAE34, 0x1347,
-	0xAE36, 0xF7FF,
-	0xAE38, 0x618F,
-	0xAE3A, 0x1314,
-	0xAE3C, 0x0701,
-	0xAE3E, 0x4180,
-	0xAE40, 0x83D7,
-	0xAE42, 0x075C,
-	0xAE44, 0x0D45,
-	0xAE46, 0x5D8C,
-	0xAE48, 0x4204,
-	0xAE4A, 0x4180,
-	0xAE4C, 0xA285,
-	0xAE4E, 0x97D0,
-	0xAE50, 0xFFFB,
-	0xAE52, 0xE780,
-	0xAE54, 0xA0BB,
-	0xAE56, 0x9315,
-	0xAE58, 0x0501,
-	0xAE5A, 0xC181,
-	0xAE5C, 0xAA84,
-	0xAE5E, 0x6309,
-	0xAE60, 0xB400,
-	0xAE62, 0x0565,
-	0xAE64, 0xA18D,
-	0xAE66, 0x2D05,
-	0xAE68, 0x97A0,
-	0xAE6A, 0xFFFB,
-	0xAE6C, 0xE780,
-	0xAE6E, 0x8046,
-	0xAE70, 0x1395,
-	0xAE72, 0x0401,
-	0xAE74, 0x93F7,
-	0xAE76, 0x1400,
-	0xAE78, 0x4181,
-	0xAE7A, 0x91CB,
-	0xAE7C, 0xB7D7,
-	0xAE7E, 0x0124,
-	0xAE80, 0x9387,
-	0xAE82, 0x07C4,
-	0xAE84, 0x03D7,
-	0xAE86, 0x4707,
-	0xAE88, 0x0507,
-	0xAE8A, 0x239A,
-	0xAE8C, 0xE706,
-	0xAE8E, 0x9377,
-	0xAE90, 0x2500,
-	0xAE92, 0x91CB,
-	0xAE94, 0xB7D7,
-	0xAE96, 0x0124,
-	0xAE98, 0x9387,
-	0xAE9A, 0x07C4,
-	0xAE9C, 0x03D7,
-	0xAE9E, 0xC70C,
-	0xAEA0, 0x0507,
-	0xAEA2, 0x2396,
-	0xAEA4, 0xE70C,
-	0xAEA6, 0x9377,
-	0xAEA8, 0x4500,
-	0xAEAA, 0x91CB,
-	0xAEAC, 0xB7D7,
-	0xAEAE, 0x0124,
-	0xAEB0, 0x9387,
-	0xAEB2, 0x07C4,
-	0xAEB4, 0x03D7,
-	0xAEB6, 0xE70C,
-	0xAEB8, 0x0507,
-	0xAEBA, 0x2397,
-	0xAEBC, 0xE70C,
-	0xAEBE, 0x9377,
-	0xAEC0, 0x0502,
-	0xAEC2, 0x91CB,
-	0xAEC4, 0xB7D7,
-	0xAEC6, 0x0124,
-	0xAEC8, 0x9387,
-	0xAECA, 0x07C4,
-	0xAECC, 0x03D7,
-	0xAECE, 0x070F,
-	0xAED0, 0x0507,
-	0xAED2, 0x2398,
-	0xAED4, 0xE70E,
-	0xAED6, 0x9377,
-	0xAED8, 0x0520,
-	0xAEDA, 0x91CB,
-	0xAEDC, 0xB7D7,
-	0xAEDE, 0x0124,
-	0xAEE0, 0x9387,
-	0xAEE2, 0x07C4,
-	0xAEE4, 0x03D7,
-	0xAEE6, 0x6708,
-	0xAEE8, 0x0507,
-	0xAEEA, 0x2393,
-	0xAEEC, 0xE708,
-	0xAEEE, 0x1375,
-	0xAEF0, 0x0504,
-	0xAEF2, 0x11C9,
-	0xAEF4, 0xB7D7,
-	0xAEF6, 0x0124,
-	0xAEF8, 0x9387,
-	0xAEFA, 0x07C4,
-	0xAEFC, 0x03D7,
-	0xAEFE, 0xA708,
-	0xAF00, 0x0507,
-	0xAF02, 0x2395,
-	0xAF04, 0xE708,
-	0xAF06, 0x1743,
-	0xAF08, 0x02FC,
-	0xAF0A, 0x6700,
-	0xAF0C, 0xE35D,
-	0xAF0E, 0xB7D7,
-	0xAF10, 0x0124,
-	0xAF12, 0x83D7,
-	0xAF14, 0xA7E7,
-	0xAF16, 0x81DB,
-	0xAF18, 0x9760,
-	0xAF1A, 0xFEFB,
-	0xAF1C, 0xE780,
-	0xAF1E, 0x8068,
-	0xAF20, 0x6311,
-	0xAF22, 0x9506,
-	0xAF24, 0xB797,
-	0xAF26, 0x0124,
-	0xAF28, 0x9387,
-	0xAF2A, 0x07D7,
-	0xAF2C, 0x03C7,
-	0xAF2E, 0xC701,
-	0xAF30, 0x83C7,
-	0xAF32, 0x2706,
-	0xAF34, 0x6307,
-	0xAF36, 0xF704,
-	0xAF38, 0x1364,
-	0xAF3A, 0x0424,
-	0xAF3C, 0x4204,
-	0xAF3E, 0x4180,
-	0xAF40, 0x11A0,
-	0xAF42, 0x0144,
-	0xAF44, 0xB767,
-	0xAF46, 0x0024,
-	0xAF48, 0x9387,
-	0xAF4A, 0x0733,
-	0xAF4C, 0x03C7,
-	0xAF4E, 0x273B,
-	0xAF50, 0xE30F,
-	0xAF52, 0x07EC,
-	0xAF54, 0x37A7,
-	0xAF56, 0x0124,
-	0xAF58, 0x0347,
-	0xAF5A, 0x6792,
-	0xAF5C, 0xE309,
-	0xAF5E, 0x07EC,
-	0xAF60, 0x37D7,
-	0xAF62, 0x0124,
-	0xAF64, 0x0357,
-	0xAF66, 0xA7E7,
-	0xAF68, 0xE303,
-	0xAF6A, 0x07EC,
-	0xAF6C, 0x3797,
-	0xAF6E, 0x0124,
-	0xAF70, 0x0347,
-	0xAF72, 0x1700,
-	0xAF74, 0xE30D,
-	0xAF76, 0x07EA,
-	0xAF78, 0x1374,
-	0xAF7A, 0xF4DF,
-	0xAF7C, 0x4204,
-	0xAF7E, 0x4180,
-	0xAF80, 0x7DB5,
-	0xAF82, 0x9760,
-	0xAF84, 0xFEFB,
-	0xAF86, 0xE780,
-	0xAF88, 0xE061,
-	0xAF8A, 0x8547,
-	0xAF8C, 0xE31C,
-	0xAF8E, 0xF5FA,
-	0xAF90, 0xB797,
-	0xAF92, 0x0124,
-	0xAF94, 0x9387,
-	0xAF96, 0x07D7,
-	0xAF98, 0x03C7,
-	0xAF9A, 0xC701,
-	0xAF9C, 0x83C7,
-	0xAF9E, 0x2706,
-	0xAFA0, 0xE312,
-	0xAFA2, 0xF7FA,
-	0xAFA4, 0x1364,
-	0xAFA6, 0x0420,
-	0xAFA8, 0x4204,
-	0xAFAA, 0x4180,
-	0xAFAC, 0x61BF,
-	0xAFAE, 0x0100,
-	0xAFB0, 0x7171,
-	0xAFB2, 0x22D7,
-	0xAFB4, 0x26D5,
-	0xAFB6, 0x7324,
-	0xAFB8, 0x2034,
-	0xAFBA, 0xF324,
-	0xAFBC, 0x1034,
-	0xAFBE, 0x7360,
-	0xAFC0, 0x0430,
-	0xAFC2, 0x2EC5,
-	0xAFC4, 0xA565,
-	0xAFC6, 0xBEDC,
-	0xAFC8, 0x06D3,
-	0xAFCA, 0x16D1,
-	0xAFCC, 0x1ACF,
-	0xAFCE, 0x1ECD,
-	0xAFD0, 0x22CB,
-	0xAFD2, 0x2AC7,
-	0xAFD4, 0x32C3,
-	0xAFD6, 0x36C1,
-	0xAFD8, 0xBADE,
-	0xAFDA, 0xC2DA,
-	0xAFDC, 0xC6D8,
-	0xAFDE, 0xF2D0,
-	0xAFE0, 0xF6CE,
-	0xAFE2, 0xFACC,
-	0xAFE4, 0xFECA,
-	0xAFE6, 0x82E2,
-	0xAFE8, 0x86E0,
-	0xAFEA, 0x0AFE,
-	0xAFEC, 0x0EFC,
-	0xAFEE, 0x12FA,
-	0xAFF0, 0x16F8,
-	0xAFF2, 0x1AF6,
-	0xAFF4, 0x1EF4,
-	0xAFF6, 0x2AF2,
-	0xAFF8, 0x2EF0,
-	0xAFFA, 0x32EE,
-	0xAFFC, 0x26C9,
-	0xAFFE, 0xCAD6,
-	0xB000, 0xCED4,
-	0xB002, 0xD2D2,
-	0xB004, 0x9385,
-	0xB006, 0x0540,
-	0xB008, 0x0545,
-	0xB00A, 0x36EC,
-	0xB00C, 0x3AEA,
-	0xB00E, 0x3EE8,
-	0xB010, 0x42E6,
-	0xB012, 0x46E4,
-	0xB014, 0x72E2,
-	0xB016, 0x76E0,
-	0xB018, 0x272E,
-	0xB01A, 0xE1FF,
-	0xB01C, 0x272C,
-	0xB01E, 0xF1FF,
-	0xB020, 0x97D0,
-	0xB022, 0xFFFB,
-	0xB024, 0xE780,
-	0xB026, 0x4097,
-	0xB028, 0xA167,
-	0xB02A, 0xE98F,
-	0xB02C, 0x2A84,
-	0xB02E, 0x6394,
-	0xB030, 0x0718,
-	0xB032, 0xB764,
-	0xB034, 0x0124,
-	0xB036, 0x9384,
-	0xB038, 0x0440,
-	0xB03A, 0x8567,
-	0xB03C, 0xE18F,
-	0xB03E, 0xCDCF,
-	0xB040, 0x37D7,
-	0xB042, 0x0124,
-	0xB044, 0x3789,
-	0xB046, 0x0224,
-	0xB048, 0x1307,
-	0xB04A, 0x07C4,
-	0xB04C, 0x1309,
-	0xB04E, 0xC949,
-	0xB050, 0x8356,
-	0xB052, 0x670E,
-	0xB054, 0x8327,
-	0xB056, 0x0905,
-	0xB058, 0x8506,
-	0xB05A, 0x8507,
-	0xB05C, 0x2328,
-	0xB05E, 0xF904,
-	0xB060, 0x2313,
-	0xB062, 0xD70E,
-	0xB064, 0x858B,
-	0xB066, 0x639F,
-	0xB068, 0x071A,
-	0xB06A, 0x8547,
-	0xB06C, 0xA30A,
-	0xB06E, 0xF904,
-	0xB070, 0x9770,
-	0xB072, 0xFFFB,
-	0xB074, 0xE780,
-	0xB076, 0x00FF,
-	0xB078, 0x19C5,
-	0xB07A, 0x0357,
-	0xB07C, 0x4905,
-	0xB07E, 0x9307,
-	0xB080, 0x1010,
-	0xB082, 0x6306,
-	0xB084, 0xF724,
-	0xB086, 0xDC50,
-	0xB088, 0x0945,
-	0xB08A, 0x8297,
-	0xB08C, 0x9770,
-	0xB08E, 0xFFFB,
-	0xB090, 0xE780,
-	0xB092, 0xC085,
-	0xB094, 0x11C5,
-	0xB096, 0x9770,
-	0xB098, 0xFFFB,
-	0xB09A, 0xE780,
-	0xB09C, 0x2088,
-	0xB09E, 0x55C5,
-	0xB0A0, 0x9760,
-	0xB0A2, 0x00FC,
-	0xB0A4, 0xE780,
-	0xB0A6, 0x405A,
-	0xB0A8, 0xB787,
-	0xB0AA, 0x0024,
-	0xB0AC, 0x83C7,
-	0xB0AE, 0x078C,
-	0xB0B0, 0xAA89,
-	0xB0B2, 0x6392,
-	0xB0B4, 0x071C,
-	0xB0B6, 0xB7D7,
-	0xB0B8, 0x0124,
-	0xB0BA, 0x9387,
-	0xB0BC, 0x07E7,
-	0xB0BE, 0xBC5F,
-	0xB0C0, 0x639A,
-	0xB0C2, 0x0716,
-	0xB0C4, 0x3799,
-	0xB0C6, 0x0124,
-	0xB0C8, 0x1309,
-	0xB0CA, 0x0953,
-	0xB0CC, 0xB727,
-	0xB0CE, 0x0024,
-	0xB0D0, 0x83C7,
-	0xB0D2, 0x7752,
-	0xB0D4, 0x6396,
-	0xB0D6, 0x071E,
-	0xB0D8, 0x0345,
-	0xB0DA, 0xC918,
-	0xB0DC, 0x631D,
-	0xB0DE, 0x051C,
-	0xB0E0, 0xDC50,
-	0xB0E2, 0x0D45,
-	0xB0E4, 0x8297,
-	0xB0E6, 0x4E85,
-	0xB0E8, 0x9760,
-	0xB0EA, 0x00FC,
-	0xB0EC, 0xE780,
-	0xB0EE, 0x005A,
-	0xB0F0, 0x8567,
-	0xB0F2, 0x3E99,
-	0xB0F4, 0x2320,
-	0xB0F6, 0xA9A2,
-	0xB0F8, 0x1374,
-	0xB0FA, 0x0440,
-	0xB0FC, 0x21C4,
-	0xB0FE, 0xB7D7,
-	0xB100, 0x0124,
-	0xB102, 0x9387,
-	0xB104, 0x07C4,
-	0xB106, 0x37A7,
-	0xB108, 0x0124,
-	0xB10A, 0x83D6,
-	0xB10C, 0x670E,
-	0xB10E, 0x1307,
-	0xB110, 0x0753,
-	0xB112, 0x0347,
-	0xB114, 0x179B,
-	0xB116, 0x8506,
-	0xB118, 0x3784,
-	0xB11A, 0x0224,
-	0xB11C, 0x1304,
-	0xB11E, 0xC449,
-	0xB120, 0x1337,
-	0xB122, 0x1700,
-	0xB124, 0x2393,
-	0xB126, 0xD70E,
-	0xB128, 0x230A,
-	0xB12A, 0xE404,
-	0xB12C, 0x9770,
-	0xB12E, 0xFFFB,
-	0xB130, 0xE780,
-	0xB132, 0x40F3,
-	0xB134, 0x6306,
-	0xB136, 0x0510,
-	0xB138, 0x0357,
-	0xB13A, 0x4405,
-	0xB13C, 0x9307,
-	0xB13E, 0x1010,
-	0xB140, 0x6300,
-	0xB142, 0xF710,
-	0xB144, 0xDC50,
-	0xB146, 0x1D45,
-	0xB148, 0x8297,
-	0xB14A, 0x9A50,
-	0xB14C, 0x8A52,
-	0xB14E, 0x7A43,
-	0xB150, 0xEA43,
-	0xB152, 0x5A44,
-	0xB154, 0xCA44,
-	0xB156, 0x3A45,
-	0xB158, 0xAA45,
-	0xB15A, 0x1A46,
-	0xB15C, 0x8A46,
-	0xB15E, 0x7657,
-	0xB160, 0xE657,
-	0xB162, 0x5658,
-	0xB164, 0xC658,
-	0xB166, 0x3659,
-	0xB168, 0xA659,
-	0xB16A, 0x165A,
-	0xB16C, 0x065E,
-	0xB16E, 0xF64E,
-	0xB170, 0x664F,
-	0xB172, 0xD64F,
-	0xB174, 0x1660,
-	0xB176, 0x8660,
-	0xB178, 0x7271,
-	0xB17A, 0xE271,
-	0xB17C, 0x5272,
-	0xB17E, 0xC272,
-	0xB180, 0x3273,
-	0xB182, 0xA273,
-	0xB184, 0x1275,
-	0xB186, 0x8275,
-	0xB188, 0x7266,
-	0xB18A, 0xE266,
-	0xB18C, 0x5267,
-	0xB18E, 0xC267,
-	0xB190, 0x3268,
-	0xB192, 0xA268,
-	0xB194, 0x126E,
-	0xB196, 0x826E,
-	0xB198, 0x072F,
-	0xB19A, 0xC1FF,
-	0xB19C, 0x872F,
-	0xB19E, 0x81FF,
-	0xB1A0, 0x7370,
-	0xB1A2, 0x0430,
-	0xB1A4, 0x7390,
-	0xB1A6, 0x1434,
-	0xB1A8, 0x7310,
-	0xB1AA, 0x2434,
-	0xB1AC, 0x3A54,
-	0xB1AE, 0xAA54,
-	0xB1B0, 0x4D61,
-	0xB1B2, 0x7300,
-	0xB1B4, 0x2030,
-	0xB1B6, 0x37D9,
-	0xB1B8, 0x0124,
-	0xB1BA, 0x1309,
-	0xB1BC, 0x09C4,
-	0xB1BE, 0x8357,
-	0xB1C0, 0x490E,
-	0xB1C2, 0xB764,
-	0xB1C4, 0x0124,
-	0xB1C6, 0x9384,
-	0xB1C8, 0x0440,
-	0xB1CA, 0xD850,
-	0xB1CC, 0x8507,
-	0xB1CE, 0x0145,
-	0xB1D0, 0x2312,
-	0xB1D2, 0xF90E,
-	0xB1D4, 0x0297,
-	0xB1D6, 0x9760,
-	0xB1D8, 0xFFFB,
-	0xB1DA, 0xE780,
-	0xB1DC, 0x2071,
-	0xB1DE, 0x25E5,
-	0xB1E0, 0xB729,
-	0xB1E2, 0x0024,
-	0xB1E4, 0x3799,
-	0xB1E6, 0x0124,
-	0xB1E8, 0x9389,
-	0xB1EA, 0x0933,
-	0xB1EC, 0x1309,
-	0xB1EE, 0x0953,
-	0xB1F0, 0x056A,
-	0xB1F2, 0x83C7,
-	0xB1F4, 0x791F,
-	0xB1F6, 0x4A9A,
-	0xB1F8, 0x2320,
-	0xB1FA, 0x0AA2,
-	0xB1FC, 0xB9EF,
-	0xB1FE, 0x0345,
-	0xB200, 0xC918,
-	0xB202, 0x2DE5,
-	0xB204, 0x83C7,
-	0xB206, 0x0920,
-	0xB208, 0x89C7,
-	0xB20A, 0x0327,
-	0xB20C, 0x4AB3,
-	0xB20E, 0x630A,
-	0xB210, 0xF700,
-	0xB212, 0x97E0,
-	0xB214, 0x00FC,
-	0xB216, 0xE780,
-	0xB218, 0xE0D2,
-	0xB21A, 0xDC50,
-	0xB21C, 0x0545,
-	0xB21E, 0x8297,
-	0xB220, 0x29BD,
-	0xB222, 0x01A0,
-	0xB224, 0x8547,
-	0xB226, 0x230A,
-	0xB228, 0x0904,
-	0xB22A, 0xA30A,
-	0xB22C, 0x0904,
-	0xB22E, 0x2328,
-	0xB230, 0xF904,
-	0xB232, 0x3DBD,
-	0xB234, 0x7D55,
-	0xB236, 0x9770,
-	0xB238, 0x01FC,
-	0xB23A, 0xE780,
-	0xB23C, 0xA004,
-	0xB23E, 0x59B5,
-	0xB240, 0xEFE0,
-	0xB242, 0x5FD9,
-	0xB244, 0x01B7,
-	0xB246, 0x9760,
-	0xB248, 0xFFFB,
-	0xB24A, 0xE780,
-	0xB24C, 0x206D,
-	0xB24E, 0x49F9,
-	0xB250, 0x8357,
-	0xB252, 0x490E,
-	0xB254, 0x858B,
-	0xB256, 0xC9F7,
-	0xB258, 0xCDBD,
-	0xB25A, 0x9770,
-	0xB25C, 0x01FC,
-	0xB25E, 0xE780,
-	0xB260, 0x2003,
-	0xB262, 0x2311,
-	0xB264, 0xA94E,
-	0xB266, 0x0345,
-	0xB268, 0xC918,
-	0xB26A, 0x49DD,
-	0xB26C, 0x97C0,
-	0xB26E, 0xFFFB,
-	0xB270, 0xE780,
-	0xB272, 0x40B4,
-	0xB274, 0x41BF,
-	0xB276, 0x9770,
-	0xB278, 0x01FC,
-	0xB27A, 0xE780,
-	0xB27C, 0x6001,
-	0xB27E, 0x3799,
-	0xB280, 0x0124,
-	0xB282, 0x1309,
-	0xB284, 0x0953,
-	0xB286, 0x8D67,
-	0xB288, 0xCA97,
-	0xB28A, 0x03C7,
-	0xB28C, 0xD76F,
-	0xB28E, 0x232E,
-	0xB290, 0xA94E,
-	0xB292, 0x8547,
-	0xB294, 0x6306,
-	0xB296, 0xF700,
-	0xB298, 0x8327,
-	0xB29A, 0x094F,
-	0xB29C, 0xE377,
-	0xB29E, 0xF5EA,
-	0xB2A0, 0x9760,
-	0xB2A2, 0x00FC,
-	0xB2A4, 0xE780,
-	0xB2A6, 0x80FC,
-	0xB2A8, 0x9770,
-	0xB2AA, 0x01FC,
-	0xB2AC, 0xE780,
-	0xB2AE, 0x40FE,
-	0xB2B0, 0x2320,
-	0xB2B2, 0xA950,
-	0xB2B4, 0x21BD,
-	0xB2B6, 0x97C0,
-	0xB2B8, 0xFFFB,
-	0xB2BA, 0xE780,
-	0xB2BC, 0xA0B2,
-	0xB2BE, 0x0DB5,
-	0xB2C0, 0x9770,
-	0xB2C2, 0x01FC,
-	0xB2C4, 0xE780,
-	0xB2C6, 0xC0FC,
-	0xB2C8, 0x2312,
-	0xB2CA, 0xA94E,
-	0xB2CC, 0x31B5,
-	0xB2CE, 0xEFE0,
-	0xB2D0, 0x7FD0,
-	0xB2D2, 0x55BB,
-	0xB2D4, 0x1743,
-	0xB2D6, 0x02FC,
-	0xB2D8, 0xE702,
-	0xB2DA, 0xC31E,
-	0xB2DC, 0x2A84,
-	0xB2DE, 0xEFD0,
-	0xB2E0, 0xBFA7,
-	0xB2E2, 0x8947,
-	0xB2E4, 0x6306,
-	0xB2E6, 0xF400,
-	0xB2E8, 0x1743,
-	0xB2EA, 0x02FC,
-	0xB2EC, 0x6700,
-	0xB2EE, 0xC31F,
-	0xB2F0, 0xB7E7,
-	0xB2F2, 0x0024,
-	0xB2F4, 0x03D7,
-	0xB2F6, 0xC7C8,
-	0xB2F8, 0x8564,
-	0xB2FA, 0x9387,
-	0xB2FC, 0xF4B3,
-	0xB2FE, 0xE315,
-	0xB300, 0xF7FE,
-	0xB302, 0x37A9,
-	0xB304, 0x0224,
-	0xB306, 0x1309,
-	0xB308, 0x8954,
-	0xB30A, 0x8347,
-	0xB30C, 0x190C,
-	0xB30E, 0xE9FF,
-	0xB310, 0x9770,
-	0xB312, 0xFFFB,
-	0xB314, 0xE780,
-	0xB316, 0x00E3,
-	0xB318, 0x61F9,
-	0xB31A, 0x9770,
-	0xB31C, 0xFFFB,
-	0xB31E, 0xE780,
-	0xB320, 0xA0E3,
-	0xB322, 0x79F1,
-	0xB324, 0x3725,
-	0xB326, 0x0224,
-	0xB328, 0x1305,
-	0xB32A, 0x05ED,
-	0xB32C, 0x9700,
-	0xB32E, 0xFFFB,
-	0xB330, 0xE780,
-	0xB332, 0x80FA,
-	0xB334, 0xB797,
-	0xB336, 0x0124,
-	0xB338, 0x3767,
-	0xB33A, 0x0124,
-	0xB33C, 0x0327,
-	0xB33E, 0x0740,
-	0xB340, 0x9387,
-	0xB342, 0x0753,
-	0xB344, 0xA697,
-	0xB346, 0x8544,
-	0xB348, 0x1D45,
-	0xB34A, 0x238D,
-	0xB34C, 0x97CE,
-	0xB34E, 0x0297,
-	0xB350, 0xA300,
-	0xB352, 0x990C,
-	0xB354, 0x9780,
-	0xB356, 0x01FC,
-	0xB358, 0xE780,
-	0xB35A, 0x0083,
-	0xB35C, 0x51F5,
-	0xB35E, 0xB727,
-	0xB360, 0x0124,
-	0xB362, 0x2380,
-	0xB364, 0x8754,
-	0xB366, 0x97B0,
-	0xB368, 0xFEFB,
-	0xB36A, 0xE780,
-	0xB36C, 0x6002,
-	0xB36E, 0x2301,
-	0xB370, 0x990C,
-	0xB372, 0x9DBF,
-	0xB374, 0x1743,
-	0xB376, 0x02FC,
-	0xB378, 0xE702,
-	0xB37A, 0xC314,
-	0xB37C, 0x37A4,
-	0xB37E, 0x0224,
-	0xB380, 0x1304,
-	0xB382, 0x8454,
-	0xB384, 0x0347,
-	0xB386, 0x240C,
-	0xB388, 0x8547,
-	0xB38A, 0x630A,
-	0xB38C, 0xF700,
-	0xB38E, 0x97B0,
-	0xB390, 0xFEFB,
-	0xB392, 0xE780,
-	0xB394, 0xE069,
-	0xB396, 0x1743,
-	0xB398, 0x02FC,
-	0xB39A, 0x6700,
-	0xB39C, 0xE314,
-	0xB39E, 0x9770,
-	0xB3A0, 0x01FC,
-	0xB3A2, 0xE780,
-	0xB3A4, 0x607E,
-	0xB3A6, 0x65F5,
-	0xB3A8, 0x97B0,
-	0xB3AA, 0xFEFB,
-	0xB3AC, 0xE780,
-	0xB3AE, 0x800F,
-	0xB3B0, 0x2301,
-	0xB3B2, 0x040C,
-	0xB3B4, 0xE9BF,
-	0xB3B6, 0x0100,
-	0xB3B8, 0x1743,
-	0xB3BA, 0x02FC,
-	0xB3BC, 0xE702,
-	0xB3BE, 0x8310,
-	0xB3C0, 0x9D47,
-	0xB3C2, 0x631F,
-	0xB3C4, 0xF500,
-	0xB3C6, 0x3794,
-	0xB3C8, 0x0124,
-	0xB3CA, 0x1304,
-	0xB3CC, 0x0453,
-	0xB3CE, 0x8567,
-	0xB3D0, 0xA297,
-	0xB3D2, 0x83C7,
-	0xB3D4, 0xA7CF,
-	0xB3D6, 0x9DE7,
-	0xB3D8, 0x1743,
-	0xB3DA, 0x02FC,
-	0xB3DC, 0x6700,
-	0xB3DE, 0xC310,
-	0xB3E0, 0x2A84,
-	0xB3E2, 0xEFD0,
-	0xB3E4, 0x7FDD,
-	0xB3E6, 0x8547,
-	0xB3E8, 0xE318,
-	0xB3EA, 0xF4FE,
-	0xB3EC, 0xB7E7,
-	0xB3EE, 0x0124,
-	0xB3F0, 0x9387,
-	0xB3F2, 0x074C,
-	0xB3F4, 0x23AE,
-	0xB3F6, 0x0710,
-	0xB3F8, 0x23A4,
-	0xB3FA, 0x077E,
-	0xB3FC, 0x1743,
-	0xB3FE, 0x02FC,
-	0xB400, 0x6700,
-	0xB402, 0x830E,
-	0xB404, 0x9770,
-	0xB406, 0xFFFB,
-	0xB408, 0xE780,
-	0xB40A, 0xC0D3,
-	0xB40C, 0x71F5,
-	0xB40E, 0x9770,
-	0xB410, 0xFFFB,
-	0xB412, 0xE780,
-	0xB414, 0x60D4,
-	0xB416, 0x69F1,
-	0xB418, 0x8D67,
-	0xB41A, 0x3E94,
-	0xB41C, 0x8327,
-	0xB41E, 0x846D,
-	0xB420, 0xB724,
-	0xB422, 0x0124,
-	0xB424, 0x9384,
-	0xB426, 0x045F,
-	0xB428, 0x91EF,
-	0xB42A, 0x83A7,
-	0xB42C, 0x440E,
-	0xB42E, 0x99CB,
-	0xB430, 0xB7D7,
-	0xB432, 0x0124,
-	0xB434, 0x83C7,
-	0xB436, 0x07FA,
-	0xB438, 0xC5D3,
-	0xB43A, 0x9700,
-	0xB43C, 0xFFFB,
-	0xB43E, 0xE780,
-	0xB440, 0x20E3,
-	0xB442, 0x59BF,
-	0xB444, 0x83A7,
-	0xB446, 0xC40A,
-	0xB448, 0xC1DB,
-	0xB44A, 0x0545,
-	0xB44C, 0x9730,
-	0xB44E, 0xFEFB,
-	0xB450, 0xE780,
-	0xB452, 0x8051,
-	0xB454, 0xB735,
-	0xB456, 0x202D,
-	0xB458, 0x7578,
-	0xB45A, 0x37F5,
-	0xB45C, 0x202D,
-	0xB45E, 0x9385,
-	0xB460, 0x0560,
-	0xB462, 0x1308,
-	0xB464, 0x08A0,
-	0xB466, 0x9168,
-	0xB468, 0x1305,
-	0xB46A, 0x0560,
-	0xB46C, 0xB387,
-	0xB46E, 0x0501,
-	0xB470, 0x03C7,
-	0xB472, 0x0700,
-	0xB474, 0x9306,
-	0xB476, 0xF00F,
-	0xB478, 0x1316,
-	0xB47A, 0x8701,
-	0xB47C, 0x6186,
-	0xB47E, 0x0607,
-	0xB480, 0x6344,
-	0xB482, 0x0600,
-	0xB484, 0x9376,
-	0xB486, 0xF70F,
-	0xB488, 0x2380,
-	0xB48A, 0xD700,
-	0xB48C, 0x8507,
-	0xB48E, 0xE391,
-	0xB490, 0xB7FE,
-	0xB492, 0xB385,
-	0xB494, 0x1701,
-	0xB496, 0xE39B,
-	0xB498, 0xA5FC,
-	0xB49A, 0xB7A7,
-	0xB49C, 0x0224,
-	0xB49E, 0x0547,
-	0xB4A0, 0x0145,
-	0xB4A2, 0xA384,
-	0xB4A4, 0xE760,
-	0xB4A6, 0x9730,
-	0xB4A8, 0xFEFB,
-	0xB4AA, 0xE780,
-	0xB4AC, 0xE04B,
-	0xB4AE, 0xB7D7,
-	0xB4B0, 0x0124,
-	0xB4B2, 0x83C7,
-	0xB4B4, 0x07FA,
-	0xB4B6, 0x8DD3,
-	0xB4B8, 0x8327,
-	0xB4BA, 0x846D,
-	0xB4BC, 0x91FF,
-	0xB4BE, 0x83A7,
-	0xB4C0, 0x440E,
-	0xB4C2, 0x99DB,
-	0xB4C4, 0x9DBF,
-	0xB4C6, 0x0100,
-	0xB4C8, 0x1743,
-	0xB4CA, 0x02FC,
-	0xB4CC, 0xE702,
-	0xB4CE, 0x83FF,
-	0xB4D0, 0xB7D7,
-	0xB4D2, 0x0124,
-	0xB4D4, 0x9387,
-	0xB4D6, 0x07F4,
-	0xB4D8, 0x03C7,
-	0xB4DA, 0x1705,
-	0xB4DC, 0x2A84,
-	0xB4DE, 0x11C7,
-	0xB4E0, 0x03C7,
-	0xB4E2, 0x1700,
-	0xB4E4, 0x8947,
-	0xB4E6, 0x6307,
-	0xB4E8, 0xF704,
-	0xB4EA, 0xB7E7,
-	0xB4EC, 0x0124,
-	0xB4EE, 0x9387,
-	0xB4F0, 0x0787,
-	0xB4F2, 0x83A4,
-	0xB4F4, 0x870F,
-	0xB4F6, 0x03A9,
-	0xB4F8, 0xC70F,
-	0xB4FA, 0x0146,
-	0xB4FC, 0xA685,
-	0xB4FE, 0x4A85,
-	0xB500, 0x9730,
-	0xB502, 0x01FC,
-	0xB504, 0xE780,
-	0xB506, 0x4054,
-	0xB508, 0x2285,
-	0xB50A, 0x97D0,
-	0xB50C, 0xFEFB,
-	0xB50E, 0xE780,
-	0xB510, 0x20D7,
-	0xB512, 0x4A85,
-	0xB514, 0x0546,
-	0xB516, 0xA685,
-	0xB518, 0x9730,
-	0xB51A, 0x01FC,
-	0xB51C, 0xE780,
-	0xB51E, 0xC052,
-	0xB520, 0xB7C7,
-	0xB522, 0x0224,
-	0xB524, 0x83A7,
-	0xB526, 0x07B7,
-	0xB528, 0x1145,
-	0xB52A, 0x8297,
-	0xB52C, 0x1743,
-	0xB52E, 0x02FC,
-	0xB530, 0x6700,
-	0xB532, 0x83FB,
-	0xB534, 0xB7E7,
-	0xB536, 0x0024,
-	0xB538, 0x83D6,
-	0xB53A, 0xC7C8,
-	0xB53C, 0x8567,
-	0xB53E, 0x1387,
-	0xB540, 0xF7B3,
-	0xB542, 0xE394,
-	0xB544, 0xE6FA,
-	0xB546, 0x3797,
-	0xB548, 0x0124,
-	0xB54A, 0x1307,
-	0xB54C, 0x0753,
-	0xB54E, 0xBA97,
-	0xB550, 0x03A5,
-	0xB552, 0x07B2,
-	0xB554, 0x8145,
-	0xB556, 0x3325,
-	0xB558, 0xA000,
-	0xB55A, 0x97D0,
-	0xB55C, 0x00FC,
-	0xB55E, 0xE780,
-	0xB560, 0x60BB,
-	0xB562, 0x61B7,
-	0xB564, 0x1743,
-	0xB566, 0x02FC,
-	0xB568, 0xE702,
-	0xB56A, 0xC3F5,
-	0xB56C, 0x9760,
-	0xB56E, 0xFFFB,
-	0xB570, 0xE780,
-	0xB572, 0xC037,
-	0xB574, 0x11C5,
-	0xB576, 0xB7E7,
-	0xB578, 0x0024,
-	0xB57A, 0x83C7,
-	0xB57C, 0xC784,
-	0xB57E, 0xBDEF,
-	0xB580, 0x1384,
-	0xB582, 0x81E7,
-	0xB584, 0x0347,
-	0xB586, 0x8400,
-	0xB588, 0x8547,
-	0xB58A, 0x6303,
-	0xB58C, 0xF706,
-	0xB58E, 0x0357,
-	0xB590, 0x2403,
-	0xB592, 0xB767,
-	0xB594, 0x0040,
-	0xB596, 0x2398,
-	0xB598, 0xE718,
-	0xB59A, 0x8357,
-	0xB59C, 0x4403,
-	0xB59E, 0x3767,
-	0xB5A0, 0x0040,
-	0xB5A2, 0x2314,
-	0xB5A4, 0xF720,
-	0xB5A6, 0x9760,
-	0xB5A8, 0xFFFB,
-	0xB5AA, 0xE780,
-	0xB5AC, 0x2034,
-	0xB5AE, 0x19C5,
-	0xB5B0, 0xB7E7,
-	0xB5B2, 0x0024,
-	0xB5B4, 0x03C7,
-	0xB5B6, 0xC784,
-	0xB5B8, 0x8147,
-	0xB5BA, 0x09EB,
-	0xB5BC, 0x8346,
-	0xB5BE, 0x8400,
-	0xB5C0, 0x0547,
-	0xB5C2, 0x8147,
-	0xB5C4, 0x6384,
-	0xB5C6, 0xE600,
-	0xB5C8, 0x8357,
-	0xB5CA, 0xC405,
-	0xB5CC, 0x37A7,
-	0xB5CE, 0x0040,
-	0xB5D0, 0x2312,
-	0xB5D2, 0xF710,
-	0xB5D4, 0x9770,
-	0xB5D6, 0xFFFB,
-	0xB5D8, 0xE780,
-	0xB5DA, 0xC0B6,
-	0xB5DC, 0x35C1,
-	0xB5DE, 0x9770,
-	0xB5E0, 0xFFFB,
-	0xB5E2, 0xE780,
-	0xB5E4, 0x60B7,
-	0xB5E6, 0x05C9,
-	0xB5E8, 0x1743,
-	0xB5EA, 0x02FC,
-	0xB5EC, 0x6700,
-	0xB5EE, 0xC3EF,
-	0xB5F0, 0xB767,
-	0xB5F2, 0x0040,
-	0xB5F4, 0x2398,
-	0xB5F6, 0x0718,
-	0xB5F8, 0x8147,
-	0xB5FA, 0x55B7,
-	0xB5FC, 0xB767,
-	0xB5FE, 0x0040,
-	0xB600, 0x2398,
-	0xB602, 0x0718,
-	0xB604, 0x1384,
-	0xB606, 0x81E7,
-	0xB608, 0x8346,
-	0xB60A, 0x8400,
-	0xB60C, 0x0547,
-	0xB60E, 0x8147,
-	0xB610, 0xE395,
-	0xB612, 0xE6F8,
-	0xB614, 0x69B7,
-	0xB616, 0x9760,
-	0xB618, 0xFFFB,
-	0xB61A, 0xE780,
-	0xB61C, 0x202D,
-	0xB61E, 0x31ED,
-	0xB620, 0x8346,
-	0xB622, 0x8400,
-	0xB624, 0x0547,
-	0xB626, 0x8147,
-	0xB628, 0x6384,
-	0xB62A, 0xE600,
-	0xB62C, 0x8357,
-	0xB62E, 0x4408,
-	0xB630, 0x3787,
-	0xB632, 0x0040,
-	0xB634, 0x2314,
-	0xB636, 0xF710,
-	0xB638, 0x1743,
-	0xB63A, 0x02FC,
-	0xB63C, 0x6700,
-	0xB63E, 0xC3EA,
-	0xB640, 0x9770,
-	0xB642, 0xFFFB,
-	0xB644, 0xE780,
-	0xB646, 0x40B1,
-	0xB648, 0x59F9,
-	0xB64A, 0x9760,
-	0xB64C, 0xFFFB,
-	0xB64E, 0xE780,
-	0xB650, 0xE029,
-	0xB652, 0x19C5,
-	0xB654, 0xB7E7,
-	0xB656, 0x0024,
-	0xB658, 0x03C7,
-	0xB65A, 0xC784,
-	0xB65C, 0x8147,
-	0xB65E, 0x09EB,
-	0xB660, 0x8346,
-	0xB662, 0x8400,
-	0xB664, 0x0547,
-	0xB666, 0x8147,
-	0xB668, 0x6384,
-	0xB66A, 0xE600,
-	0xB66C, 0x8357,
-	0xB66E, 0x6407,
-	0xB670, 0x3707,
-	0xB672, 0x0140,
-	0xB674, 0x2314,
-	0xB676, 0xF710,
-	0xB678, 0x9DB7,
-	0xB67A, 0xB7E7,
-	0xB67C, 0x0024,
-	0xB67E, 0x03C7,
-	0xB680, 0xC784,
-	0xB682, 0x8147,
-	0xB684, 0x55F7,
-	0xB686, 0x69BF,
-	0xB688, 0x1743,
-	0xB68A, 0x02FC,
-	0xB68C, 0xE702,
-	0xB68E, 0x03E1,
-	0xB690, 0x4111,
-	0xB692, 0x3A84,
-	0xB694, 0x22E6,
-	0xB696, 0x26E4,
-	0xB698, 0x4AE2,
-	0xB69A, 0x4EE0,
-	0xB69C, 0xAA84,
-	0xB69E, 0x3689,
-	0xB6A0, 0x97A0,
-	0xB6A2, 0xFEFB,
-	0xB6A4, 0xE780,
-	0xB6A6, 0x8066,
-	0xB6A8, 0xB727,
-	0xB6AA, 0x0224,
-	0xB6AC, 0x9387,
-	0xB6AE, 0x076B,
-	0xB6B0, 0xA297,
-	0xB6B2, 0x0567,
-	0xB6B4, 0xBA97,
-	0xB6B6, 0x83C7,
-	0xB6B8, 0x078D,
-	0xB6BA, 0x639D,
-	0xB6BC, 0x0718,
-	0xB6BE, 0x83C7,
-	0xB6C0, 0x0400,
-	0xB6C2, 0x6399,
-	0xB6C4, 0x0718,
-	0xB6C6, 0xB7A7,
-	0xB6C8, 0x0224,
-	0xB6CA, 0x9389,
-	0xB6CC, 0x8754,
-	0xB6CE, 0x03C7,
-	0xB6D0, 0x9905,
-	0xB6D2, 0x6301,
-	0xB6D4, 0x0718,
-	0xB6D6, 0x03CA,
-	0xB6D8, 0xA905,
-	0xB6DA, 0x03D6,
-	0xB6DC, 0xA90B,
-	0xB6DE, 0x37E7,
-	0xB6E0, 0x0124,
-	0xB6E2, 0x0355,
-	0xB6E4, 0x675F,
-	0xB6E6, 0x9387,
-	0xB6E8, 0x8754,
-	0xB6EA, 0x0147,
-	0xB6EC, 0xA145,
-	0xB6EE, 0x6369,
-	0xB6F0, 0xA622,
-	0xB6F2, 0x83D6,
-	0xB6F4, 0xC70A,
-	0xB6F6, 0x8907,
-	0xB6F8, 0x63F1,
-	0xB6FA, 0xA626,
-	0xB6FC, 0x0507,
-	0xB6FE, 0xE318,
-	0xB700, 0xB7FE,
-	0xB702, 0x37CB,
-	0xB704, 0x0224,
-	0xB706, 0x5309,
-	0xB708, 0x00F0,
-	0xB70A, 0x8727,
-	0xB70C, 0x8BB7,
-	0xB70E, 0x9D46,
-	0xB710, 0x4379,
-	0xB712, 0xF990,
-	0xB714, 0x1307,
-	0xB716, 0x0705,
-	0xB718, 0x0607,
-	0xB71A, 0x4E97,
-	0xB71C, 0x8357,
-	0xB71E, 0xC700,
-	0xB720, 0x118D,
-	0xB722, 0x5377,
-	0xB724, 0x05D0,
-	0xB726, 0x918F,
-	0xB728, 0xD3F7,
-	0xB72A, 0x07D0,
-	0xB72C, 0x9317,
-	0xB72E, 0x3A00,
-	0xB730, 0xB697,
-	0xB732, 0x5377,
-	0xB734, 0xF718,
-	0xB736, 0x9387,
-	0xB738, 0x8702,
-	0xB73A, 0x8607,
-	0xB73C, 0xCE97,
-	0xB73E, 0x83D7,
-	0xB740, 0xC700,
-	0xB742, 0x0726,
-	0xB744, 0x8BB7,
-	0xB746, 0x13F7,
-	0xB748, 0xF70F,
-	0xB74A, 0xA183,
-	0xB74C, 0xD377,
-	0xB74E, 0x07D0,
-	0xB750, 0xD3F6,
-	0xB752, 0x07D0,
-	0xB754, 0xC3F7,
-	0xB756, 0xC768,
-	0xB758, 0x5379,
-	0xB75A, 0xF908,
-	0xB75C, 0x4379,
-	0xB75E, 0xE978,
-	0xB760, 0x9770,
-	0xB762, 0xFFFB,
-	0xB764, 0xE780,
-	0xB766, 0xC08A,
-	0xB768, 0xAA8A,
-	0xB76A, 0x93DA,
-	0xB76C, 0x8A40,
-	0xB76E, 0x9770,
-	0xB770, 0xFFFB,
-	0xB772, 0xE780,
-	0xB774, 0xE089,
-	0xB776, 0xC20A,
-	0xB778, 0x9307,
-	0xB77A, 0x8A04,
-	0xB77C, 0x1375,
-	0xB77E, 0xF50F,
-	0xB780, 0x93DA,
-	0xB782, 0x0A41,
-	0xB784, 0xD3F7,
-	0xB786, 0x0AD0,
-	0xB788, 0xD374,
-	0xB78A, 0x05D0,
-	0xB78C, 0x0727,
-	0xB78E, 0x8BB7,
-	0xB790, 0x8607,
-	0xB792, 0xCE97,
-	0xB794, 0x03DC,
-	0xB796, 0xC700,
-	0xB798, 0xC3F4,
-	0xB79A, 0xE478,
-	0xB79C, 0xDC4C,
-	0xB79E, 0x5374,
-	0xB7A0, 0x0CD0,
-	0xB7A2, 0xD307,
-	0xB7A4, 0x00F0,
-	0xB7A6, 0x83D4,
-	0xB7A8, 0xC700,
-	0xB7AA, 0x53F4,
-	0xB7AC, 0x8408,
-	0xB7AE, 0x130A,
-	0xB7B0, 0x0A05,
-	0xB7B2, 0x060A,
-	0xB7B4, 0x4E9A,
-	0xB7B6, 0x035A,
-	0xB7B8, 0x4A00,
-	0xB7BA, 0xD317,
-	0xB7BC, 0xF4A0,
-	0xB7BE, 0x99C3,
-	0xB7C0, 0x5314,
-	0xB7C2, 0x8420,
-	0xB7C4, 0xB7CB,
-	0xB7C6, 0x0224,
-	0xB7C8, 0x83A7,
-	0xB7CA, 0x0BB7,
-	0xB7CC, 0x0D45,
-	0xB7CE, 0x8297,
-	0xB7D0, 0xD397,
-	0xB7D2, 0x14C0,
-	0xB7D4, 0xC207,
-	0xB7D6, 0xC183,
-	0xB7D8, 0x6395,
-	0xB7DA, 0x870B,
-	0xB7DC, 0xB747,
-	0xB7DE, 0x0124,
-	0xB7E0, 0x9387,
-	0xB7E2, 0x0727,
-	0xB7E4, 0x03D7,
-	0xB7E6, 0x6712,
-	0xB7E8, 0x83D6,
-	0xB7EA, 0xE710,
-	0xB7EC, 0x8947,
-	0xB7EE, 0x7D17,
-	0xB7F0, 0xB397,
-	0xB7F2, 0xE700,
-	0xB7F4, 0xD3F7,
-	0xB7F6, 0x07D0,
-	0xB7F8, 0x53F7,
-	0xB7FA, 0x16D0,
-	0xB7FC, 0x5304,
-	0xB7FE, 0x00F0,
-	0xB800, 0xD3F7,
-	0xB802, 0x2711,
-	0xB804, 0x37CA,
-	0xB806, 0x0224,
-	0xB808, 0xD3F7,
-	0xB80A, 0xE718,
-	0xB80C, 0xB7C7,
-	0xB80E, 0x0224,
-	0xB810, 0x07A7,
-	0xB812, 0xC7B7,
-	0xB814, 0x83A7,
-	0xB816, 0x0BB7,
-	0xB818, 0x2545,
-	0xB81A, 0xD3F7,
-	0xB81C, 0xE700,
-	0xB81E, 0xD39A,
-	0xB820, 0x17C0,
-	0xB822, 0x8297,
-	0xB824, 0x8727,
-	0xB826, 0x0AB8,
-	0xB828, 0xC20A,
-	0xB82A, 0x93DA,
-	0xB82C, 0x0A01,
-	0xB82E, 0x5374,
-	0xB830, 0xF410,
-	0xB832, 0xD694,
-	0xB834, 0xC204,
-	0xB836, 0x2393,
-	0xB838, 0x590D,
-	0xB83A, 0xC180,
-	0xB83C, 0xD317,
-	0xB83E, 0x14C0,
-	0xB840, 0x2392,
-	0xB842, 0xF90C,
-	0xB844, 0xB707,
-	0xB846, 0x0040,
-	0xB848, 0x19EC,
-	0xB84A, 0x9387,
-	0xB84C, 0xE703,
-	0xB84E, 0xCA97,
-	0xB850, 0x2390,
-	0xB852, 0x9700,
-	0xB854, 0x3264,
-	0xB856, 0xA264,
-	0xB858, 0x1269,
-	0xB85A, 0x8269,
-	0xB85C, 0x4101,
-	0xB85E, 0x1743,
-	0xB860, 0x02FC,
-	0xB862, 0x6700,
-	0xB864, 0x23C7,
-	0xB866, 0x9387,
-	0xB868, 0x0704,
-	0xB86A, 0x3264,
-	0xB86C, 0xA264,
-	0xB86E, 0x1269,
-	0xB870, 0x8269,
-	0xB872, 0xCA97,
-	0xB874, 0x2390,
-	0xB876, 0x9700,
-	0xB878, 0x4101,
-	0xB87A, 0x1743,
-	0xB87C, 0x02FC,
-	0xB87E, 0x6700,
-	0xB880, 0x63C5,
-	0xB882, 0x9377,
-	0xB884, 0xFA0F,
-	0xB886, 0x135A,
-	0xB888, 0x8A00,
-	0xB88A, 0x8729,
-	0xB88C, 0x8BB7,
-	0xB88E, 0xD3F7,
-	0xB890, 0x07D0,
-	0xB892, 0xD376,
-	0xB894, 0x0AD0,
-	0xB896, 0x37CA,
-	0xB898, 0x0224,
-	0xB89A, 0x0727,
-	0xB89C, 0x0AB8,
-	0xB89E, 0xC3F7,
-	0xB8A0, 0x3769,
-	0xB8A2, 0x5374,
-	0xB8A4, 0xF418,
-	0xB8A6, 0x5374,
-	0xB8A8, 0xE410,
-	0xB8AA, 0x531B,
-	0xB8AC, 0x14C0,
-	0xB8AE, 0x420B,
-	0xB8B0, 0x135B,
-	0xB8B2, 0x0B01,
-	0xB8B4, 0x5A85,
-	0xB8B6, 0x9760,
-	0xB8B8, 0x00FC,
-	0xB8BA, 0xE780,
-	0xB8BC, 0xA01A,
-	0xB8BE, 0xAA8A,
-	0xB8C0, 0x5A85,
-	0xB8C2, 0x9760,
-	0xB8C4, 0x00FC,
-	0xB8C6, 0xE780,
-	0xB8C8, 0xE019,
-	0xB8CA, 0x93DA,
-	0xB8CC, 0x8A00,
-	0xB8CE, 0xD397,
-	0xB8D0, 0x04C0,
-	0xB8D2, 0xC20A,
-	0xB8D4, 0x1375,
-	0xB8D6, 0xF50F,
-	0xB8D8, 0x93DA,
-	0xB8DA, 0x0A01,
-	0xB8DC, 0x5374,
-	0xB8DE, 0x05D0,
-	0xB8E0, 0xD3F7,
-	0xB8E2, 0x0AD0,
-	0xB8E4, 0xC207,
-	0xB8E6, 0xC187,
-	0xB8E8, 0x4374,
-	0xB8EA, 0x3479,
-	0xB8EC, 0x63D7,
-	0xB8EE, 0x8703,
-	0xB8F0, 0x5374,
-	0xB8F2, 0x8918,
-	0xB8F4, 0xB747,
-	0xB8F6, 0x0124,
-	0xB8F8, 0x9387,
-	0xB8FA, 0x0727,
-	0xB8FC, 0x03D7,
-	0xB8FE, 0x6712,
-	0xB900, 0x83D6,
-	0xB902, 0xE710,
-	0xB904, 0x8947,
-	0xB906, 0x7D17,
-	0xB908, 0xB397,
-	0xB90A, 0xE700,
-	0xB90C, 0xD3F7,
-	0xB90E, 0x07D0,
-	0xB910, 0x53F7,
-	0xB912, 0x16D0,
-	0xB914, 0xD3F7,
-	0xB916, 0x8710,
-	0xB918, 0xC5BD,
-	0xB91A, 0x5374,
-	0xB91C, 0x8910,
-	0xB91E, 0xD9BF,
-	0xB920, 0x9317,
-	0xB922, 0x4A00,
-	0xB924, 0xCE97,
-	0xB926, 0x83D7,
-	0xB928, 0xA706,
-	0xB92A, 0x93F6,
-	0xB92C, 0xF70F,
-	0xB92E, 0x37CB,
-	0xB930, 0x0224,
-	0xB932, 0xA183,
-	0xB934, 0x53F9,
-	0xB936, 0x06D0,
-	0xB938, 0xD3F7,
-	0xB93A, 0x07D0,
-	0xB93C, 0x0727,
-	0xB93E, 0x8BB7,
-	0xB940, 0x4379,
-	0xB942, 0xE978,
-	0xB944, 0xE30E,
-	0xB946, 0x07E0,
-	0xB948, 0x9307,
-	0xB94A, 0xF704,
-	0xB94C, 0x8607,
-	0xB94E, 0xCE97,
-	0xB950, 0x03D6,
-	0xB952, 0xC700,
-	0xB954, 0x9306,
-	0xB956, 0xF7FF,
-	0xB958, 0x75BB,
-	0xB95A, 0x9317,
-	0xB95C, 0x3A00,
-	0xB95E, 0xBA97,
-	0xB960, 0x9387,
-	0xB962, 0x8702,
-	0xB964, 0x8607,
-	0xB966, 0xCE97,
-	0xB968, 0x83D7,
-	0xB96A, 0xC700,
-	0xB96C, 0x7DBF,
-	0xB96E, 0x0100,
-	0xB970, 0x1743,
-	0xB972, 0x02FC,
-	0xB974, 0xE702,
-	0xB976, 0x63B3,
-	0xB978, 0xB747,
-	0xB97A, 0x0124,
-	0xB97C, 0x03D7,
-	0xB97E, 0xC7E1,
-	0xB980, 0x8947,
-	0xB982, 0x2A84,
-	0xB984, 0xAE84,
-	0xB986, 0x6319,
-	0xB988, 0xF700,
-	0xB98A, 0xB7A7,
-	0xB98C, 0x0124,
-	0xB98E, 0x03A7,
-	0xB990, 0x4706,
-	0xB992, 0xFD57,
-	0xB994, 0x6304,
-	0xB996, 0xF704,
-	0xB998, 0xB7E7,
-	0xB99A, 0x0124,
-	0xB99C, 0x9387,
-	0xB99E, 0x0787,
-	0xB9A0, 0x03A9,
-	0xB9A2, 0x8710,
-	0xB9A4, 0x83A9,
-	0xB9A6, 0xC710,
-	0xB9A8, 0x0146,
-	0xB9AA, 0xCA85,
-	0xB9AC, 0x4E85,
-	0xB9AE, 0x9730,
-	0xB9B0, 0x01FC,
-	0xB9B2, 0xE780,
-	0xB9B4, 0x6009,
-	0xB9B6, 0xA685,
-	0xB9B8, 0x2285,
-	0xB9BA, 0x97C0,
-	0xB9BC, 0x00FC,
-	0xB9BE, 0xE780,
-	0xB9C0, 0x6075,
-	0xB9C2, 0x4E85,
-	0xB9C4, 0x0546,
-	0xB9C6, 0xCA85,
-	0xB9C8, 0x9730,
-	0xB9CA, 0x01FC,
-	0xB9CC, 0xE780,
-	0xB9CE, 0xC007,
-	0xB9D0, 0xB7C7,
-	0xB9D2, 0x0224,
-	0xB9D4, 0x83A7,
-	0xB9D6, 0x07B7,
-	0xB9D8, 0x1545,
-	0xB9DA, 0x8297,
-	0xB9DC, 0x1743,
-	0xB9DE, 0x02FC,
-	0xB9E0, 0x6700,
-	0xB9E2, 0xE3AF,
-	0xB9E4, 0xB7C7,
-	0xB9E6, 0x0224,
-	0xB9E8, 0x03A6,
-	0xB9EA, 0x47B7,
-	0xB9EC, 0xB707,
-	0xB9EE, 0x0040,
-	0xB9F0, 0x9387,
-	0xB9F2, 0x0706,
-	0xB9F4, 0x3E96,
-	0xB9F6, 0x0967,
-	0xB9F8, 0x1308,
-	0xB9FA, 0x0502,
-	0xB9FC, 0xAA87,
-	0xB9FE, 0x098E,
-	0xBA00, 0x1307,
-	0xBA02, 0xF7F1,
-	0xBA04, 0x2390,
-	0xBA06, 0xE700,
-	0xBA08, 0xB306,
-	0xBA0A, 0xF600,
-	0xBA0C, 0x2390,
-	0xBA0E, 0xE600,
-	0xBA10, 0x8907,
-	0xBA12, 0xE399,
-	0xBA14, 0x07FF,
-	0xBA16, 0x83C7,
-	0xBA18, 0xC500,
-	0xBA1A, 0xB1CB,
-	0xBA1C, 0x83AF,
-	0xBA1E, 0x0500,
-	0xBA20, 0x0963,
-	0xBA22, 0x1388,
-	0xBA24, 0xE500,
-	0xBA26, 0x8147,
-	0xBA28, 0x0D4F,
-	0xBA2A, 0x854E,
-	0xBA2C, 0x094E,
-	0xBA2E, 0x1303,
-	0xBA30, 0x03F0,
-	0xBA32, 0x3317,
-	0xBA34, 0xFF00,
-	0xBA36, 0x3377,
-	0xBA38, 0xF701,
-	0xBA3A, 0x3396,
-	0xBA3C, 0xFE00,
-	0xBA3E, 0xB316,
-	0xBA40, 0xFE00,
-	0xBA42, 0x798E,
-	0xBA44, 0xB308,
-	0xBA46, 0xF500,
-	0xBA48, 0xF98E,
-	0xBA4A, 0x8907,
-	0xBA4C, 0x7D47,
-	0xBA4E, 0x19C2,
-	0xBA50, 0x0347,
-	0xBA52, 0x0800,
-	0xBA54, 0x1A86,
-	0xBA56, 0x81C6,
-	0xBA58, 0x0346,
-	0xBA5A, 0x1800,
-	0xBA5C, 0x2206,
-	0xBA5E, 0x518F,
-	0xBA60, 0x2390,
-	0xBA62, 0xE800,
-	0xBA64, 0x03C7,
-	0xBA66, 0xC500,
-	0xBA68, 0x0908,
-	0xBA6A, 0xE3C4,
-	0xBA6C, 0xE7FC,
-	0xBA6E, 0xB7C7,
-	0xBA70, 0x0224,
-	0xBA72, 0x83A7,
-	0xBA74, 0x07B7,
-	0xBA76, 0x1D45,
-	0xBA78, 0x8287,
-	0xBA7A, 0x0100,
-	0xBA7C, 0x1743,
-	0xBA7E, 0x02FC,
-	0xBA80, 0xE702,
-	0xBA82, 0x43A4,
-	0xBA84, 0xB7A7,
-	0xBA86, 0x0224,
-	0xBA88, 0x03C7,
-	0xBA8A, 0x6760,
-	0xBA8C, 0x8547,
-	0xBA8E, 0x630C,
-	0xBA90, 0xF700,
-	0xBA92, 0xB7C7,
-	0xBA94, 0x0224,
-	0xBA96, 0x83A7,
-	0xBA98, 0x07B7,
-	0xBA9A, 0x2145,
-	0xBA9C, 0x8297,
-	0xBA9E, 0x1743,
-	0xBAA0, 0x02FC,
-	0xBAA2, 0x6700,
-	0xBAA4, 0x63A4,
-	0xBAA6, 0x9760,
-	0xBAA8, 0xFFFB,
-	0xBAAA, 0xE780,
-	0xBAAC, 0xE0E8,
-	0xBAAE, 0x75D1,
-	0xBAB0, 0xB7E7,
-	0xBAB2, 0x0024,
-	0xBAB4, 0x83C7,
-	0xBAB6, 0xB7AD,
-	0xBAB8, 0xE9FF,
-	0xBABA, 0xB7B7,
-	0xBABC, 0x0024,
-	0xBABE, 0x03D7,
-	0xBAC0, 0x4733,
-	0xBAC2, 0xB707,
-	0xBAC4, 0x0140,
-	0xBAC6, 0x2399,
-	0xBAC8, 0xE7DC,
-	0xBACA, 0xE1B7,
-	0xBACC, 0x1743,
-	0xBACE, 0x02FC,
-	0xBAD0, 0xE702,
-	0xBAD2, 0x439F,
-	0xBAD4, 0xB7B7,
-	0xBAD6, 0x0224,
-	0xBAD8, 0x9387,
-	0xBADA, 0x87B4,
-	0xBADC, 0x23AE,
-	0xBADE, 0xF194,
-	0xBAE0, 0x3764,
-	0xBAE2, 0x0124,
-	0xBAE4, 0x9D66,
-	0xBAE6, 0xB7B5,
-	0xBAE8, 0x0224,
-	0xBAEA, 0xB7B7,
-	0xBAEC, 0x0224,
-	0xBAEE, 0x1304,
-	0xBAF0, 0x0440,
-	0xBAF2, 0x9387,
-	0xBAF4, 0xC783,
-	0xBAF6, 0x9386,
-	0xBAF8, 0xF6BF,
-	0xBAFA, 0x1146,
-	0xBAFC, 0x9385,
-	0xBAFE, 0x05FB,
-	0xBB00, 0x0545,
-	0xBB02, 0x5CC4,
-	0xBB04, 0x97E0,
-	0xBB06, 0xFFFB,
-	0xBB08, 0xE780,
-	0xBB0A, 0xC0E8,
-	0xBB0C, 0xC166,
-	0xBB0E, 0xB7B5,
-	0xBB10, 0x0224,
-	0xBB12, 0xFD16,
-	0xBB14, 0x3146,
-	0xBB16, 0x9385,
-	0xBB18, 0x4598,
-	0xBB1A, 0x4145,
-	0xBB1C, 0x97E0,
-	0xBB1E, 0xFFFB,
-	0xBB20, 0xE780,
-	0xBB22, 0x40E7,
-	0xBB24, 0x37B7,
-	0xBB26, 0x0224,
-	0xBB28, 0x1307,
-	0xBB2A, 0x87B7,
-	0xBB2C, 0xB7A7,
-	0xBB2E, 0x0224,
-	0xBB30, 0x9387,
-	0xBB32, 0x8754,
-	0xBB34, 0x78C8,
-	0xBB36, 0x37B7,
-	0xBB38, 0x0224,
-	0xBB3A, 0xA380,
-	0xBB3C, 0x070C,
-	0xBB3E, 0x2381,
-	0xBB40, 0x070C,
-	0xBB42, 0x1307,
-	0xBB44, 0xC7C2,
-	0xBB46, 0xB7B7,
-	0xBB48, 0x0224,
-	0xBB4A, 0x18D4,
-	0xBB4C, 0x9387,
-	0xBB4E, 0x472D,
-	0xBB50, 0x37B7,
-	0xBB52, 0x0224,
-	0xBB54, 0x7CC4,
-	0xBB56, 0x1307,
-	0xBB58, 0x873B,
-	0xBB5A, 0xB7B7,
-	0xBB5C, 0x0224,
-	0xBB5E, 0x18C0,
-	0xBB60, 0x9387,
-	0xBB62, 0x4737,
-	0xBB64, 0x23AA,
-	0xBB66, 0xF1A4,
-	0xBB68, 0x1743,
-	0xBB6A, 0x02FC,
-	0xBB6C, 0x6700,
-	0xBB6E, 0xC397,
-	0xBB70, 0x14A6,
-	0xBB72, 0x0224,
-	0xBB74, 0x008D,
-	0xBB76, 0x0000,
-	0xBB78, 0x0000,
-	0xBB7A, 0x803B,
-	0xBB7C, 0x0000,
-	0xBB7E, 0x003F,
-	0xBB80, 0x0000,
-	0xBB82, 0x8043,
-	0xFCFC, 0x2002,
-	0x849C, 0x0100,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0x84A4, 0x0000,
-	0x84A6, 0x0000,
-	0x84A8, 0x0000,
-	0x84AA, 0x0001,
-	0x84AC, 0x01FF,
-	0x84B0, 0x8089,
-	0x84B2, 0x0000,
-	0x84B4, 0x8889,
-	0x84B6, 0x0000,
-	0x84B8, 0xC097,
-	0x84BA, 0x0000,
-	0x84BC, 0xA60E,
-	0x84BE, 0x0000,
-	0x84C0, 0x2206,
-	0x84C2, 0x0000,
-	0x84C4, 0x0010,
-	0x84C8, 0xF0C2,
-	0x84CA, 0x0224,
-	0x84CC, 0x44AB,
-	0x84CE, 0x0224,
-	0x84D0, 0x44AB,
-	0x84D2, 0x0224,
-	0x84D4, 0x44AB,
-	0x84D6, 0x0224,
-	0x84D8, 0x44AB,
-	0x84DA, 0x0224,
-	0x84DC, 0x44AB,
-	0x84DE, 0x0224,
-	0xA548, 0x001D,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xA56C, 0x0000,
-	0xA56E, 0x0000,
-	0xA570, 0x0000,
-	0xA572, 0x0000,
-	0xA574, 0x00D5,
-	0xA576, 0x0000,
-	0xA578, 0x0000,
-	0xA57A, 0x0000,
-	0xA57C, 0x0000,
-	0xA57E, 0x0000,
-	0xA580, 0x0000,
-	0xA582, 0x0000,
-	0xA584, 0x0000,
-	0xA586, 0x0000,
-	0xA588, 0x0000,
-	0xA58A, 0x0000,
-	0xA58C, 0x0000,
-	0xA58E, 0x0000,
-	0xA590, 0x0000,
-	0xA592, 0x0000,
-	0xA594, 0x0000,
-	0xA596, 0x0000,
-	0xA598, 0x0000,
-	0xA59A, 0x0000,
-	0xA59C, 0x0000,
-	0xA59E, 0x0000,
-	0xA5A0, 0x0100,
-	0xA5A2, 0x0036,
-	0xA5A4, 0x0000,
-	0xA5A6, 0x0000,
-	0xA5A8, 0x0000,
-	0xA5AA, 0x0000,
-	0xA5AC, 0x0000,
-	0xA5AE, 0x0000,
-	0xA5B0, 0x0000,
-	0xA5B2, 0x0000,
-	0xA5B4, 0x0000,
-	0xA5B6, 0x0000,
-	0xA5B8, 0x0000,
-	0xA5BA, 0x0000,
-	0xA5BC, 0x0000,
-	0xA5BE, 0x0000,
-	0xA5C0, 0x0000,
-	0xA5C2, 0x0000,
-	0xA5C4, 0x0000,
-	0xA5C6, 0x0000,
-	0xA5C8, 0x0000,
-	0xA5CA, 0x0000,
-	0xA5CC, 0x0000,
-	0xA5CE, 0x0000,
-	0xA5D0, 0x0000,
-	0xA5D2, 0x0000,
-	0xA5D4, 0x0000,
-	0xA5D6, 0x0000,
-	0xA5D8, 0x0000,
-	0xA5DA, 0x0000,
-	0xA5DC, 0x0000,
-	0xA5DE, 0x0000,
-	0xA5E0, 0x0000,
-	0xA5E2, 0x0000,
-	0xA5E4, 0x0000,
-	0xA5E6, 0x0000,
-	0xA5E8, 0x0000,
-	0xA5EA, 0x0000,
-	0xA5EC, 0x000F,
-	0xA5EE, 0x000F,
-	0xA5F0, 0x000F,
-	0xA5F2, 0x000F,
-	0xA5F4, 0x0000,
-	0xA5F6, 0x0000,
-	0xA5F8, 0x0000,
-	0xA5FA, 0x0000,
-	0xA5FC, 0x0000,
-	0xA5FE, 0x0000,
-	0xA600, 0x0000,
-	0xA602, 0x0000,
-	0xA604, 0x0000,
-	0xA606, 0x00C6,
-	0xBB84, 0x0000,
-	0xBB86, 0x00EB,
-	0xBB88, 0x0100,
-	0xBB8A, 0x0800,
-	0xBB8C, 0x1000,
-	0xBB8E, 0x2000,
-	0xBB90, 0x9A00,
-	0xBB92, 0x9A00,
-	0xBB94, 0x9A00,
-	0xBB96, 0x9A00,
-	0xBB98, 0x9600,
-	0xBB9A, 0x9600,
-	0xBB9C, 0x9600,
-	0xBB9E, 0x9600,
-	0xBBA0, 0x9300,
-	0xBBA2, 0x9300,
-	0xBBA4, 0x9300,
-	0xBBA6, 0x9300,
-	0xBBA8, 0x9000,
-	0xBBAA, 0x9000,
-	0xBBAC, 0x9000,
-	0xBBAE, 0x9000,
-	0xBBB0, 0x8D00,
-	0xBBB2, 0x8D00,
-	0xBBB4, 0x8D00,
-	0xBBB6, 0x8D00,
-	0xBBB8, 0x3F00,
-	0xBBBA, 0x3F00,
-	0xBBBC, 0x3F00,
-	0xBBBE, 0x3F00,
-	0xBBC0, 0x1E00,
-	0xBBC2, 0x1E00,
-	0xBBC4, 0x1E00,
-	0xBBC6, 0x1E00,
-	0xBBC8, 0x0000,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0800,
-	0xBBD2, 0x0800,
-	0xBBD4, 0x0800,
-	0xBBD6, 0x0800,
-	0xBBD8, 0x0000,
-	0xBBDA, 0x0000,
-	0xBBDC, 0x0000,
-	0xBBDE, 0x0000,
-	0xBBE0, 0x3F00,
-	0xBBE2, 0x3F00,
-	0xBBE4, 0x3F00,
-	0xBBE6, 0x3F00,
-	0xBBE8, 0x3400,
-	0xBBEA, 0x3400,
-	0xBBEC, 0x3400,
-	0xBBEE, 0x3400,
-	0xBBF0, 0x0A00,
-	0xBBF2, 0x0A00,
-	0xBBF4, 0x0A00,
-	0xBBF6, 0x0A00,
-	0xBBF8, 0x1000,
-	0xBBFA, 0x1000,
-	0xBBFC, 0x1000,
-	0xBBFE, 0x1000,
-	0xBC00, 0x0600,
-	0xBC02, 0x0600,
-	0xBC04, 0x0600,
-	0xBC06, 0x0600,
-	0xBC08, 0x0C00,
-	0xBC0A, 0x0C00,
-	0xBC0C, 0x0C00,
-	0xBC0E, 0x0C00,
-	0xBC10, 0x0000,
-	0xBC12, 0x0000,
-	0xBC14, 0x0000,
-	0xBC16, 0x0000,
-	0xBC18, 0x1000,
-	0xBC1A, 0x1000,
-	0xBC1C, 0x1000,
-	0xBC1E, 0x1000,
-	0xBC20, 0x1000,
-	0xBC22, 0x1000,
-	0xBC24, 0x1000,
-	0xBC26, 0x1000,
-	0xBC28, 0x2000,
-	0xBC2A, 0x1000,
-	0xBC2C, 0x1000,
-	0xBC2E, 0x1000,
-	0xBC30, 0x0600,
-	0xBC32, 0x0600,
-	0xBC34, 0x0600,
-	0xBC36, 0x0600,
-	0xBC38, 0x1C00,
-	0xBC3A, 0x1C00,
-	0xBC3C, 0x1C00,
-	0xBC3E, 0x1C00,
-	0xBC40, 0x0600,
-	0xBC42, 0x0600,
-	0xBC44, 0x0600,
-	0xBC46, 0x0600,
-	0xBC48, 0x2A00,
-	0xBC4A, 0x2A00,
-	0xBC4C, 0x2A00,
-	0xBC4E, 0x2A00,
-	0xBC50, 0x0200,
-	0xBC52, 0x0200,
-	0xBC54, 0x0200,
-	0xBC56, 0x0200,
-	0xBC58, 0x1000,
-	0xBC5A, 0x1000,
-	0xBC5C, 0x1000,
-	0xBC5E, 0x1000,
-	0xBC60, 0x0E00,
-	0xBC62, 0x0E00,
-	0xBC64, 0x0E00,
-	0xBC66, 0x0E00,
-	0xBC68, 0x2800,
-	0xBC6A, 0x2800,
-	0xBC6C, 0x2800,
-	0xBC6E, 0x2800,
-	0xBC70, 0x1800,
-	0xBC72, 0x1800,
-	0xBC74, 0x1800,
-	0xBC76, 0x1800,
-	0xBC78, 0x0800,
-	0xBC7A, 0x0800,
-	0xBC7C, 0x0800,
-	0xBC7E, 0x0800,
-	0xBC80, 0x0000,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x2400,
-	0xBC8A, 0x2400,
-	0xBC8C, 0x2400,
-	0xBC8E, 0x2400,
-	0xBC90, 0x0055,
-	0xFCFC, 0x2001,
-	0x5634, 0x041D,
-	0x5636, 0x0420,
-	0x5638, 0x3C85,
-	0x563A, 0x0224,
-	0x563C, 0x3CE6,
-	0x563E, 0x0320,
-	0x5640, 0xD885,
-	0x5642, 0x0224,
-	0x5644, 0xD06E,
-	0x5646, 0x0320,
-	0x5648, 0xC48D,
-	0x564A, 0x0224,
-	0x564C, 0x4877,
-	0x564E, 0x0320,
-	0x5650, 0xCC90,
-	0x5652, 0x0224,
-	0x5654, 0x6812,
-	0x5656, 0x0320,
-	0x5658, 0xB88F,
-	0x565A, 0x0224,
-	0x565C, 0xE8FE,
-	0x565E, 0x0220,
-	0x5660, 0x5491,
-	0x5662, 0x0224,
-	0x5664, 0xA462,
-	0x5666, 0x0320,
-	0x5668, 0x9C95,
-	0x566A, 0x0224,
-	0x566C, 0x901B,
-	0x566E, 0x0020,
-	0x5670, 0x2896,
-	0x5672, 0x0224,
-	0x5674, 0xC446,
-	0x5676, 0x0320,
-	0x5678, 0xE896,
-	0x567A, 0x0224,
-	0x567C, 0x1427,
-	0x567E, 0x0320,
-	0x5680, 0xC498,
-	0x5682, 0x0224,
-	0x5684, 0x304C,
-	0x5686, 0x0220,
-	0x5688, 0x749B,
-	0x568A, 0x0224,
-	0x568C, 0xC82C,
-	0x568E, 0x0220,
-	0x5690, 0xD09B,
-	0x5692, 0x0224,
-	0x5694, 0x484F,
-	0x5696, 0x0220,
-	0x5698, 0x289C,
-	0x569A, 0x0224,
-	0x569C, 0xB041,
-	0x569E, 0x0220,
-	0x56A0, 0x3C9A,
-	0x56A2, 0x0224,
-	0x56A4, 0xC81D,
-	0x56A6, 0x0420,
-	0x56A8, 0xFC9A,
-	0x56AA, 0x0224,
-	0x56AC, 0xAC7F,
-	0x56AE, 0x0420,
-	0x56B0, 0x8C86,
-	0x56B2, 0x0224,
-	0x56B4, 0x7C80,
-	0x56B6, 0x0420,
-	0x56B8, 0x1086,
-	0x56BA, 0x0224,
-	0x56BC, 0xF887,
-	0x56BE, 0x0320,
-	0x56C0, 0x7CAC,
-	0x56C2, 0x0224,
-	0x56C4, 0x1007,
-	0x56C6, 0x0320,
-	0x56C8, 0xE08E,
-	0x56CA, 0x0224,
-	0x56CC, 0x1409,
-	0x56CE, 0x0020,
-	0x56D0, 0x2495,
-	0x56D2, 0x0224,
-	0x56D4, 0x2046,
-	0x56D6, 0x0420,
-	0x56D8, 0xC087,
-	0x56DA, 0x0224,
-	0x56DC, 0xB05B,
-	0x56DE, 0x0420,
-	0x56E0, 0x4088,
-	0x56E2, 0x0224,
-	0x56E4, 0x505C,
-	0x56E6, 0x0320,
-	0x56E8, 0x448A,
-	0x56EA, 0x0224,
-	0x56EC, 0xA45B,
-	0x56EE, 0x0320,
-	0x56F0, 0x5089,
-	0x56F2, 0x0224,
-	0x56F4, 0x306A,
-	0x56F6, 0x0420,
-	0x56F8, 0x1485,
-	0x56FA, 0x0224,
-	0x56FC, 0x90F8,
-	0x56FE, 0x0220,
-	0x5700, 0x44A1,
-	0x5702, 0x0224,
-	0x5704, 0x0454,
-	0x5706, 0x0120,
-	0x5708, 0x18A6,
-	0x570A, 0x0224,
-	0x570C, 0x0453,
-	0x570E, 0x0020,
-	0x5710, 0xA0A7,
-	0x5712, 0x0224,
-	0x5714, 0xC850,
-	0x5716, 0x0220,
-	0x5718, 0xB8AC,
-	0x571A, 0x0224,
-	0x571C, 0x2C88,
-	0x571E, 0x0220,
-	0x5720, 0xF0AD,
-	0x5722, 0x0224,
-	0x5724, 0x7C82,
-	0x5726, 0x0120,
-	0x5728, 0xC8B4,
-	0x572A, 0x0224,
-	0x572C, 0xACF3,
-	0x572E, 0x0320,
-	0x5730, 0x64B5,
-	0x5732, 0x0224,
-	0x5734, 0x1081,
-	0x5736, 0x0320,
-	0x5738, 0x70B9,
-	0x573A, 0x0224,
-	0x573C, 0xBCFD,
-	0x573E, 0x0220,
-	0x5740, 0xE4B9,
-	0x5742, 0x0224,
-	0x5744, 0xBCA5,
-	0x5746, 0x0420,
-	0x5748, 0x7CBA,
-	0x574A, 0x0224,
-	0x574C, 0xB803,
-	0x574E, 0x0320,
-	0x5750, 0xE4BC,
-	0x5752, 0x0224,
-	0x5754, 0x8424,
-	0x5756, 0x0220,
-	0x5758, 0xB0BD,
-	0x575A, 0x0224,
-	0x575C, 0x9C4C,
-	0x575E, 0x0220,
-	0x5760, 0xD0BF,
-	0x5762, 0x0224,
-	0x5764, 0x0C22,
-	0x5766, 0x0220,
-	0x5768, 0x54BE,
-	0x576A, 0x0224,
-	0xFCFC, 0x2002,
-	0xBC98, 0x1743,
-	0xBC9A, 0x02FC,
-	0xBC9C, 0xE702,
-	0xBC9E, 0x8382,
-	0xBCA0, 0x2A84,
-	0xBCA2, 0xEFE0,
-	0xBCA4, 0xBFB9,
-	0xBCA6, 0xA147,
-	0xBCA8, 0x6306,
-	0xBCAA, 0xF400,
-	0xBCAC, 0x1743,
-	0xBCAE, 0x02FC,
-	0xBCB0, 0x6700,
-	0xBCB2, 0x8383,
-	0xBCB4, 0xB7C7,
-	0xBCB6, 0x0224,
-	0xBCB8, 0x83C7,
-	0xBCBA, 0x57B8,
-	0xBCBC, 0xE5DB,
-	0xBCBE, 0xB797,
-	0xBCC0, 0x0124,
-	0xBCC2, 0x9387,
-	0xBCC4, 0x0753,
-	0xBCC6, 0x0567,
-	0xBCC8, 0x3E97,
-	0xBCCA, 0x8346,
-	0xBCCC, 0x07B9,
-	0xBCCE, 0xF9DE,
-	0xBCD0, 0x83C7,
-	0xBCD2, 0x673F,
-	0xBCD4, 0xE1DF,
-	0xBCD6, 0x8357,
-	0xBCD8, 0x47B6,
-	0xBCDA, 0x93E7,
-	0xBCDC, 0x0720,
-	0xBCDE, 0x2312,
-	0xBCE0, 0xF7B6,
-	0xBCE2, 0xE9B7,
-	0xBCE4, 0x1733,
-	0xBCE6, 0x02FC,
-	0xBCE8, 0xE702,
-	0xBCEA, 0x437B,
-	0xBCEC, 0x37C8,
-	0xBCEE, 0x0224,
-	0xBCF0, 0x1308,
-	0xBCF2, 0x48B8,
-	0xBCF4, 0x8348,
-	0xBCF6, 0x1800,
-	0xBCF8, 0x2A8B,
-	0xBCFA, 0xAE8B,
-	0xBCFC, 0x3284,
-	0xBCFE, 0xB684,
-	0xBD00, 0x3A89,
-	0xBD02, 0xBE89,
-	0xBD04, 0x6380,
-	0xBD06, 0x0802,
-	0xBD08, 0xB7A7,
-	0xBD0A, 0x0124,
-	0xBD0C, 0x9387,
-	0xBD0E, 0x0753,
-	0xBD10, 0x03C7,
-	0xBD12, 0x07B9,
-	0xBD14, 0x83C7,
-	0xBD16, 0xB792,
-	0xBD18, 0x11C7,
-	0xBD1A, 0x0347,
-	0xBD1C, 0x2800,
-	0xBD1E, 0xBD8B,
-	0xBD20, 0x6306,
-	0xBD22, 0xF704,
-	0xBD24, 0x37E8,
-	0xBD26, 0x0124,
-	0xBD28, 0x1308,
-	0xBD2A, 0x0887,
-	0xBD2C, 0x832A,
-	0xBD2E, 0x0812,
-	0xBD30, 0x032A,
-	0xBD32, 0x4812,
-	0xBD34, 0x0146,
-	0xBD36, 0xD685,
-	0xBD38, 0x5285,
-	0xBD3A, 0x9730,
-	0xBD3C, 0x01FC,
-	0xBD3E, 0xE780,
-	0xBD40, 0xA0D0,
-	0xBD42, 0xCE87,
-	0xBD44, 0x4A87,
-	0xBD46, 0xA686,
-	0xBD48, 0x2286,
-	0xBD4A, 0xDE85,
-	0xBD4C, 0x5A85,
-	0xBD4E, 0x9740,
-	0xBD50, 0x00FC,
-	0xBD52, 0xE780,
-	0xBD54, 0xA066,
-	0xBD56, 0x0546,
-	0xBD58, 0xD685,
-	0xBD5A, 0x5285,
-	0xBD5C, 0x9730,
-	0xBD5E, 0x01FC,
-	0xBD60, 0xE780,
-	0xBD62, 0x80CE,
-	0xBD64, 0x1733,
-	0xBD66, 0x02FC,
-	0xBD68, 0x6700,
-	0xBD6A, 0xC376,
-	0xBD6C, 0x2315,
-	0xBD6E, 0x0600,
-	0xBD70, 0x9760,
-	0xBD72, 0xFFFB,
-	0xBD74, 0xE780,
-	0xBD76, 0x80BA,
-	0xBD78, 0x01CD,
-	0xBD7A, 0xB797,
-	0xBD7C, 0x0124,
-	0xBD7E, 0x9387,
-	0xBD80, 0x07D7,
-	0xBD82, 0x03C7,
-	0xBD84, 0xC700,
-	0xBD86, 0x59DF,
-	0xBD88, 0x7D17,
-	0xBD8A, 0x2386,
-	0xBD8C, 0xE700,
-	0xBD8E, 0x59BF,
-	0xBD90, 0x9760,
-	0xBD92, 0xFFFB,
-	0xBD94, 0xE780,
-	0xBD96, 0x80B5,
-	0xBD98, 0x6DD1,
-	0xBD9A, 0xB797,
-	0xBD9C, 0x0124,
-	0xBD9E, 0x9387,
-	0xBDA0, 0x07D7,
-	0xBDA2, 0x03C7,
-	0xBDA4, 0xD700,
-	0xBDA6, 0x3DDF,
-	0xBDA8, 0x7D17,
-	0xBDAA, 0xA386,
-	0xBDAC, 0xE700,
-	0xBDAE, 0x9DBF,
-	0xBDB0, 0x1733,
-	0xBDB2, 0x02FC,
-	0xBDB4, 0xE702,
-	0xBDB6, 0x636F,
-	0xBDB8, 0xB7E7,
-	0xBDBA, 0x0124,
-	0xBDBC, 0x9387,
-	0xBDBE, 0x0787,
-	0xBDC0, 0x03AA,
-	0xBDC2, 0x8712,
-	0xBDC4, 0x83A9,
-	0xBDC6, 0xC712,
-	0xBDC8, 0xAE84,
-	0xBDCA, 0x2A84,
-	0xBDCC, 0x3289,
-	0xBDCE, 0xD285,
-	0xBDD0, 0x0146,
-	0xBDD2, 0x4E85,
-	0xBDD4, 0x9730,
-	0xBDD6, 0x01FC,
-	0xBDD8, 0xE780,
-	0xBDDA, 0x00C7,
-	0xBDDC, 0xA685,
-	0xBDDE, 0x4A86,
-	0xBDE0, 0x2285,
-	0xBDE2, 0x9760,
-	0xBDE4, 0xFFFB,
-	0xBDE6, 0xE780,
-	0xBDE8, 0x206A,
-	0xBDEA, 0xAA84,
-	0xBDEC, 0x0546,
-	0xBDEE, 0xD285,
-	0xBDF0, 0x4E85,
-	0xBDF2, 0x9730,
-	0xBDF4, 0x01FC,
-	0xBDF6, 0xE780,
-	0xBDF8, 0x20C5,
-	0xBDFA, 0xB7C7,
-	0xBDFC, 0x0224,
-	0xBDFE, 0x9387,
-	0xBE00, 0x47B8,
-	0xBE02, 0x03C7,
-	0xBE04, 0xC710,
-	0xBE06, 0x15C3,
-	0xBE08, 0x37A7,
-	0xBE0A, 0x0124,
-	0xBE0C, 0x1307,
-	0xBE0E, 0x0753,
-	0xBE10, 0x0346,
-	0xBE12, 0x37B9,
-	0xBE14, 0x8946,
-	0xBE16, 0x631A,
-	0xBE18, 0xD600,
-	0xBE1A, 0x8356,
-	0xBE1C, 0x87BA,
-	0xBE1E, 0xE18E,
-	0xBE20, 0x89C6,
-	0xBE22, 0x9306,
-	0xBE24, 0x0040,
-	0xBE26, 0x6307,
-	0xBE28, 0xD400,
-	0xBE2A, 0x2685,
-	0xBE2C, 0x1733,
-	0xBE2E, 0x02FC,
-	0xBE30, 0x6700,
-	0xBE32, 0xE36A,
-	0xBE34, 0x8326,
-	0xBE36, 0x47B3,
-	0xBE38, 0x7D57,
-	0xBE3A, 0xE388,
-	0xBE3C, 0xE6FE,
-	0xBE3E, 0x03D7,
-	0xBE40, 0x0711,
-	0xBE42, 0x9396,
-	0xBE44, 0x0401,
-	0xBE46, 0xC182,
-	0xBE48, 0x11E3,
-	0xBE4A, 0x3687,
-	0xBE4C, 0xBA84,
-	0xBE4E, 0x2398,
-	0xBE50, 0xD710,
-	0xBE52, 0xE1BF,
-	0xBE54, 0x1733,
-	0xBE56, 0x02FC,
-	0xBE58, 0xE702,
-	0xBE5A, 0x2365,
-	0xBE5C, 0x3729,
-	0xBE5E, 0x0024,
-	0xBE60, 0xB7A4,
-	0xBE62, 0x0124,
-	0xBE64, 0x1309,
-	0xBE66, 0x0933,
-	0xBE68, 0x9384,
-	0xBE6A, 0x0453,
-	0xBE6C, 0x8347,
-	0xBE6E, 0x491A,
-	0xBE70, 0x03C7,
-	0xBE72, 0x24B7,
-	0xBE74, 0x2A84,
-	0xBE76, 0xD98F,
-	0xBE78, 0x6382,
-	0xBE7A, 0x0714,
-	0xBE7C, 0x8347,
-	0xBE7E, 0xE400,
-	0xBE80, 0x0547,
-	0xBE82, 0x2305,
-	0xBE84, 0xE400,
-	0xBE86, 0x99E7,
-	0xBE88, 0x8347,
-	0xBE8A, 0xC400,
-	0xBE8C, 0xD1CF,
-	0xBE8E, 0x83C7,
-	0xBE90, 0x24B7,
-	0xBE92, 0xC5CB,
-	0xBE94, 0xB76A,
-	0xBE96, 0x0124,
-	0xBE98, 0x130A,
-	0xBE9A, 0x0403,
-	0xBE9C, 0x0347,
-	0xBE9E, 0x0400,
-	0xBEA0, 0xA169,
-	0xBEA2, 0xFD19,
-	0xBEA4, 0xA301,
-	0xBEA6, 0xE400,
-	0xBEA8, 0x83A7,
-	0xBEAA, 0x0A4B,
-	0xBEAC, 0x2302,
-	0xBEAE, 0xE400,
-	0xBEB0, 0x0567,
-	0xBEB2, 0xBA97,
-	0xBEB4, 0x83D7,
-	0xBEB6, 0x47E0,
-	0xBEB8, 0x2303,
-	0xBEBA, 0x0400,
-	0xBEBC, 0xB3F7,
-	0xBEBE, 0x3701,
-	0xBEC0, 0x231C,
-	0xBEC2, 0xF400,
-	0xBEC4, 0x9740,
-	0xBEC6, 0xFDFB,
-	0xBEC8, 0xE780,
-	0xBECA, 0x0067,
-	0xBECC, 0x0358,
-	0xBECE, 0x8401,
-	0xBED0, 0xA308,
-	0xBED2, 0xA400,
-	0xBED4, 0x6301,
-	0xBED6, 0x0806,
-	0xBED8, 0x3736,
-	0xBEDA, 0x0520,
-	0xBEDC, 0x1306,
-	0xBEDE, 0x06C8,
-	0xBEE0, 0x8146,
-	0xBEE2, 0x8147,
-	0xBEE4, 0x4145,
-	0xBEE6, 0xB305,
-	0xBEE8, 0xF400,
-	0xBEEA, 0x3357,
-	0xBEEC, 0xF840,
-	0xBEEE, 0x2380,
-	0xBEF0, 0xD502,
-	0xBEF2, 0x058B,
-	0xBEF4, 0x8507,
-	0xBEF6, 0x11C7,
-	0xBEF8, 0x0347,
-	0xBEFA, 0x0600,
-	0xBEFC, 0xBA96,
-	0xBEFE, 0x93F6,
-	0xBF00, 0xF60F,
-	0xBF02, 0x0506,
-	0xBF04, 0xE391,
-	0xBF06, 0xA7FE,
-	0xBF08, 0x2308,
-	0xBF0A, 0xD400,
-	0xBF0C, 0x8347,
-	0xBF0E, 0x491A,
-	0xBF10, 0x03C7,
-	0xBF12, 0x24B7,
-	0xBF14, 0xD98F,
-	0xBF16, 0xC9C3,
-	0xBF18, 0x2307,
-	0xBF1A, 0x0400,
-	0xBF1C, 0x232E,
-	0xBF1E, 0x4401,
-	0xBF20, 0x1733,
-	0xBF22, 0x02FC,
-	0xBF24, 0x6700,
-	0xBF26, 0xA35B,
-	0xBF28, 0x8347,
-	0xBF2A, 0xB400,
-	0xBF2C, 0xA5D7,
-	0xBF2E, 0x83C7,
-	0xBF30, 0x24B7,
-	0xBF32, 0xADF3,
-	0xBF34, 0x39A0,
-	0xBF36, 0x0148,
-	0xBF38, 0x45F1,
-	0xBF3A, 0x231C,
-	0xBF3C, 0x3401,
-	0xBF3E, 0x4E88,
-	0xBF40, 0x61BF,
-	0xBF42, 0xB76A,
-	0xBF44, 0x0124,
-	0xBF46, 0x83A5,
-	0xBF48, 0x0A4B,
-	0xBF4A, 0x8567,
-	0xBF4C, 0x130A,
-	0xBF4E, 0x0403,
-	0xBF50, 0x9387,
-	0xBF52, 0x07E1,
-	0xBF54, 0x1306,
-	0xBF56, 0x8007,
-	0xBF58, 0xBE95,
-	0xBF5A, 0x5285,
-	0xBF5C, 0x9760,
-	0xBF5E, 0x00FC,
-	0xBF60, 0xE780,
-	0xBF62, 0x400A,
-	0xBF64, 0x21C9,
-	0xBF66, 0x2305,
-	0xBF68, 0x0400,
-	0xBF6A, 0x0347,
-	0xBF6C, 0x2401,
-	0xBF6E, 0x8347,
-	0xBF70, 0x6400,
-	0xBF72, 0x8356,
-	0xBF74, 0x4401,
-	0xBF76, 0xA308,
-	0xBF78, 0xE400,
-	0xBF7A, 0x0547,
-	0xBF7C, 0x231C,
-	0xBF7E, 0xD400,
-	0xBF80, 0x2307,
-	0xBF82, 0xE400,
-	0xBF84, 0xA301,
-	0xBF86, 0xF400,
-	0xBF88, 0x2303,
-	0xBF8A, 0x0400,
-	0xBF8C, 0x232E,
-	0xBF8E, 0x4401,
-	0xBF90, 0x1733,
-	0xBF92, 0x02FC,
-	0xBF94, 0x6700,
-	0xBF96, 0xA354,
-	0xBF98, 0x83A5,
-	0xBF9A, 0x0A4B,
-	0xBF9C, 0x8567,
-	0xBF9E, 0x9387,
-	0xBFA0, 0x07E1,
-	0xBFA2, 0x1306,
-	0xBFA4, 0x000F,
-	0xBFA6, 0xBE95,
-	0xBFA8, 0x5285,
-	0xBFAA, 0x9760,
-	0xBFAC, 0x00FC,
-	0xBFAE, 0xE780,
-	0xBFB0, 0x2005,
-	0xBFB2, 0x9DB7,
-	0xBFB4, 0x8347,
-	0xBFB6, 0xA400,
-	0xBFB8, 0xCDDB,
-	0xBFBA, 0xCDB5,
-	0xBFBC, 0x37A5,
-	0xBFBE, 0x0124,
-	0xBFC0, 0x1305,
-	0xBFC2, 0x050C,
-	0xBFC4, 0x9760,
-	0xBFC6, 0xFFFB,
-	0xBFC8, 0xE780,
-	0xBFCA, 0x8043,
-	0xBFCC, 0x45BD,
-	0xBFCE, 0x0100,
-	0xBFD0, 0x1733,
-	0xBFD2, 0x02FC,
-	0xBFD4, 0xE702,
-	0xBFD6, 0x034F,
-	0xBFD8, 0x8347,
-	0xBFDA, 0x1501,
-	0xBFDC, 0xA304,
-	0xBFDE, 0x0500,
-	0xBFE0, 0x2A84,
-	0xBFE2, 0x91EF,
-	0xBFE4, 0x8357,
-	0xBFE6, 0x8501,
-	0xBFE8, 0x99EB,
-	0xBFEA, 0x8347,
-	0xBFEC, 0xF500,
-	0xBFEE, 0xA307,
-	0xBFF0, 0x0500,
-	0xBFF2, 0xA304,
-	0xBFF4, 0xF500,
-	0xBFF6, 0x1733,
-	0xBFF8, 0x02FC,
-	0xBFFA, 0x6700,
-	0xBFFC, 0xE34E,
-	0xBFFE, 0x2285,
-	0xC000, 0x9790,
-	0xC002, 0xFFFB,
-	0xC004, 0xE780,
-	0xC006, 0xC0C4,
-	0xC008, 0x8347,
-	0xC00A, 0x3400,
-	0xC00C, 0x0347,
-	0xC00E, 0x6400,
-	0xC010, 0x8346,
-	0xC012, 0x7400,
-	0xC014, 0xFD17,
-	0xC016, 0x0507,
-	0xC018, 0x93F7,
-	0xC01A, 0xF70F,
-	0xC01C, 0x2303,
-	0xC01E, 0xE400,
-	0xC020, 0xA301,
-	0xC022, 0xF400,
-	0xC024, 0x99C2,
-	0xC026, 0xA303,
-	0xC028, 0x0400,
-	0xC02A, 0xB1EF,
-	0xC02C, 0x0347,
-	0xC02E, 0x1401,
-	0xC030, 0x8356,
-	0xC032, 0x8401,
-	0xC034, 0x8347,
-	0xC036, 0x5400,
-	0xC038, 0x2309,
-	0xC03A, 0xE400,
-	0xC03C, 0x0547,
-	0xC03E, 0x231A,
-	0xC040, 0xD400,
-	0xC042, 0x2304,
-	0xC044, 0xE400,
-	0xC046, 0x231C,
-	0xC048, 0x0400,
-	0xC04A, 0xA308,
-	0xC04C, 0x0400,
-	0xC04E, 0xC5E3,
-	0xC050, 0x8347,
-	0xC052, 0x1400,
-	0xC054, 0x13F7,
-	0xC056, 0x2700,
-	0xC058, 0x19C7,
-	0xC05A, 0x0347,
-	0xC05C, 0x0400,
-	0xC05E, 0x01C7,
-	0xC060, 0x0347,
-	0xC062, 0x2400,
-	0xC064, 0x4DC3,
-	0xC066, 0x858B,
-	0xC068, 0xA5CF,
-	0xC06A, 0xB727,
-	0xC06C, 0x0024,
-	0xC06E, 0x83C7,
-	0xC070, 0x274D,
-	0xC072, 0xD1D3,
-	0xC074, 0xB767,
-	0xC076, 0x0124,
-	0xC078, 0x83A7,
-	0xC07A, 0x074B,
-	0xC07C, 0x0567,
-	0xC07E, 0xBA97,
-	0xC080, 0x2380,
-	0xC082, 0x07E0,
-	0xC084, 0x8DBF,
-	0xC086, 0x0347,
-	0xC088, 0x0401,
-	0xC08A, 0x5C4C,
-	0xC08C, 0x9316,
-	0xC08E, 0x1700,
-	0xC090, 0xB697,
-	0xC092, 0x5CCC,
-	0xC094, 0xB727,
-	0xC096, 0x0024,
-	0xC098, 0x9387,
-	0xC09A, 0x0733,
-	0xC09C, 0x83C6,
-	0xC09E, 0x371A,
-	0xC0A0, 0x89EA,
-	0xC0A2, 0x8346,
-	0xC0A4, 0x6401,
-	0xC0A6, 0xA1DA,
-	0xC0A8, 0xB7A6,
-	0xC0AA, 0x0124,
-	0xC0AC, 0x83C6,
-	0xC0AE, 0x260A,
-	0xC0B0, 0xB9F2,
-	0xC0B2, 0x83C7,
-	0xC0B4, 0x471A,
-	0xC0B6, 0xA1F3,
-	0xC0B8, 0x0346,
-	0xC0BA, 0x0400,
-	0xC0BC, 0xB767,
-	0xC0BE, 0x0124,
-	0xC0C0, 0x83A5,
-	0xC0C2, 0x074B,
-	0xC0C4, 0x3306,
-	0xC0C6, 0xE602,
-	0xC0C8, 0x8567,
-	0xC0CA, 0x9387,
-	0xC0CC, 0x07E1,
-	0xC0CE, 0xBE95,
-	0xC0D0, 0x1305,
-	0xC0D2, 0x0403,
-	0xC0D4, 0x0606,
-	0xC0D6, 0x9760,
-	0xC0D8, 0x00FC,
-	0xC0DA, 0xE780,
-	0xC0DC, 0x60F2,
-	0xC0DE, 0x21BF,
-	0xC0E0, 0x8547,
-	0xC0E2, 0xA304,
-	0xC0E4, 0xF400,
-	0xC0E6, 0x1733,
-	0xC0E8, 0x02FC,
-	0xC0EA, 0x6700,
-	0xC0EC, 0xE33F,
-	0xC0EE, 0xFD17,
-	0xC0F0, 0xA302,
-	0xC0F2, 0xF400,
-	0xC0F4, 0x2285,
-	0xC0F6, 0x9760,
-	0xC0F8, 0xFFFB,
-	0xC0FA, 0xE780,
-	0xC0FC, 0x6011,
-	0xC0FE, 0x1733,
-	0xC100, 0x02FC,
-	0xC102, 0x6700,
-	0xC104, 0x633E,
-	0xC106, 0x2285,
-	0xC108, 0x9760,
-	0xC10A, 0xFFFB,
-	0xC10C, 0xE780,
-	0xC10E, 0x4010,
-	0xC110, 0xDDB5,
-	0xC112, 0x0100,
-	0xC114, 0x8947,
-	0xC116, 0x6303,
-	0xC118, 0xF500,
-	0xC11A, 0x8280,
-	0xC11C, 0x1733,
-	0xC11E, 0x02FC,
-	0xC120, 0xE702,
-	0xC122, 0xA338,
-	0xC124, 0xB784,
-	0xC126, 0x0124,
-	0xC128, 0x9384,
-	0xC12A, 0x04AA,
-	0xC12C, 0x87A7,
-	0xC12E, 0x040A,
-	0xC130, 0x4111,
-	0xC132, 0x37C5,
-	0xC134, 0x0224,
-	0xC136, 0x5396,
-	0xC138, 0x17C0,
-	0xC13A, 0x7400,
-	0xC13C, 0x9145,
-	0xC13E, 0x1305,
-	0xC140, 0x85B8,
-	0xC142, 0x9750,
-	0xC144, 0xFFFB,
-	0xC146, 0xE780,
-	0xC148, 0x60C3,
-	0xC14A, 0x3719,
-	0xC14C, 0x0140,
-	0xC14E, 0x4205,
-	0xC150, 0x4181,
-	0xC152, 0x130A,
-	0xC154, 0x4924,
-	0xC156, 0xB789,
-	0xC158, 0x0124,
-	0xC15A, 0x37C4,
-	0xC15C, 0x0224,
-	0xC15E, 0xB7CA,
-	0xC160, 0x0224,
-	0xC162, 0x2317,
-	0xC164, 0xA100,
-	0xC166, 0x9389,
-	0xC168, 0x89B1,
-	0xC16A, 0x1304,
-	0xC16C, 0x04B9,
-	0xC16E, 0x938A,
-	0xC170, 0x8ABB,
-	0xC172, 0x330A,
-	0xC174, 0x9A40,
-	0xC176, 0x0605,
-	0xC178, 0x2295,
-	0xC17A, 0x8355,
-	0xC17C, 0x2500,
-	0xC17E, 0x0356,
-	0xC180, 0xC100,
-	0xC182, 0x0355,
-	0xC184, 0x0500,
-	0xC186, 0x2104,
-	0xC188, 0x9760,
-	0xC18A, 0x00FC,
-	0xC18C, 0xE780,
-	0xC18E, 0x8082,
-	0xC190, 0x4205,
-	0xC192, 0x4181,
-	0xC194, 0x2390,
-	0xC196, 0xA900,
-	0xC198, 0xB387,
-	0xC19A, 0x4901,
-	0xC19C, 0x2390,
-	0xC19E, 0xA700,
-	0xC1A0, 0x8909,
-	0xC1A2, 0x6305,
-	0xC1A4, 0x5401,
-	0xC1A6, 0x0355,
-	0xC1A8, 0xE100,
-	0xC1AA, 0xF1B7,
-	0xC1AC, 0xB789,
-	0xC1AE, 0x0124,
-	0xC1B0, 0x37CA,
-	0xC1B2, 0x0224,
-	0xC1B4, 0x1309,
-	0xC1B6, 0x0926,
-	0xC1B8, 0x9389,
-	0xC1BA, 0xA9AF,
-	0xC1BC, 0x130A,
-	0xC1BE, 0x0AC3,
-	0xC1C0, 0x8357,
-	0xC1C2, 0xE100,
-	0xC1C4, 0x0356,
-	0xC1C6, 0xC100,
-	0xC1C8, 0x8509,
-	0xC1CA, 0x8607,
-	0xC1CC, 0xA297,
-	0xC1CE, 0x83D5,
-	0xC1D0, 0x2700,
-	0xC1D2, 0x03D5,
-	0xC1D4, 0x0700,
-	0xC1D6, 0x0909,
-	0xC1D8, 0x2104,
-	0xC1DA, 0x9750,
-	0xC1DC, 0x00FC,
-	0xC1DE, 0xE780,
-	0xC1E0, 0x607D,
-	0xC1E2, 0x1375,
-	0xC1E4, 0xF50F,
-	0xC1E6, 0xA38F,
-	0xC1E8, 0xA9FE,
-	0xC1EA, 0x4205,
-	0xC1EC, 0x4181,
-	0xC1EE, 0x231F,
-	0xC1F0, 0xA9FE,
-	0xC1F2, 0xE317,
-	0xC1F4, 0x44FD,
-	0xC1F6, 0xB719,
-	0xC1F8, 0x0140,
-	0xC1FA, 0x3789,
-	0xC1FC, 0x0124,
-	0xC1FE, 0x37CA,
-	0xC200, 0x0224,
-	0xC202, 0x9389,
-	0xC204, 0x291F,
-	0xC206, 0x1309,
-	0xC208, 0xC9B2,
-	0xC20A, 0x130A,
-	0xC20C, 0x0AC6,
-	0xC20E, 0xB389,
-	0xC210, 0x9940,
-	0xC212, 0x8357,
-	0xC214, 0xE100,
-	0xC216, 0x0356,
-	0xC218, 0xC100,
-	0xC21A, 0x8607,
-	0xC21C, 0xA297,
-	0xC21E, 0x83D5,
-	0xC220, 0x2700,
-	0xC222, 0x03D5,
-	0xC224, 0x0700,
-	0xC226, 0x2104,
-	0xC228, 0x9750,
-	0xC22A, 0x00FC,
-	0xC22C, 0xE780,
-	0xC22E, 0x8078,
-	0xC230, 0x4205,
-	0xC232, 0x4181,
-	0xC234, 0x2310,
-	0xC236, 0xA900,
-	0xC238, 0xB307,
-	0xC23A, 0x3901,
-	0xC23C, 0x2390,
-	0xC23E, 0xA700,
-	0xC240, 0x0909,
-	0xC242, 0xE318,
-	0xC244, 0x44FD,
-	0xC246, 0xB717,
-	0xC248, 0x0140,
-	0xC24A, 0x3789,
-	0xC24C, 0x0124,
-	0xC24E, 0xB7C9,
-	0xC250, 0x0224,
-	0xC252, 0x9387,
-	0xC254, 0xA720,
-	0xC256, 0x1309,
-	0xC258, 0x69B4,
-	0xC25A, 0x9389,
-	0xC25C, 0x09C9,
-	0xC25E, 0xB384,
-	0xC260, 0x9740,
-	0xC262, 0x8357,
-	0xC264, 0xE100,
-	0xC266, 0x0356,
-	0xC268, 0xC100,
-	0xC26A, 0x8607,
-	0xC26C, 0xA297,
-	0xC26E, 0x83D5,
-	0xC270, 0x2700,
-	0xC272, 0x03D5,
-	0xC274, 0x0700,
-	0xC276, 0x2104,
-	0xC278, 0x9750,
-	0xC27A, 0x00FC,
-	0xC27C, 0xE780,
-	0xC27E, 0x8073,
-	0xC280, 0x4205,
-	0xC282, 0x4181,
-	0xC284, 0x2310,
-	0xC286, 0xA900,
-	0xC288, 0xB307,
-	0xC28A, 0x9900,
-	0xC28C, 0x2390,
-	0xC28E, 0xA700,
-	0xC290, 0x0909,
-	0xC292, 0xE318,
-	0xC294, 0x34FD,
-	0xC296, 0x4101,
-	0xC298, 0x1733,
-	0xC29A, 0x02FC,
-	0xC29C, 0x6700,
-	0xC29E, 0x2324,
-	0xC2A0, 0xB7C7,
-	0xC2A2, 0x0224,
-	0xC2A4, 0x9387,
-	0xC2A6, 0x47B8,
-	0xC2A8, 0x03C6,
-	0xC2AA, 0x0700,
-	0xC2AC, 0x37A7,
-	0xC2AE, 0x0224,
-	0xC2B0, 0x8356,
-	0xC2B2, 0x4760,
-	0xC2B4, 0x37D7,
-	0xC2B6, 0x0124,
-	0xC2B8, 0x2328,
-	0xC2BA, 0xC7DA,
-	0xC2BC, 0x37C7,
-	0xC2BE, 0x0224,
-	0xC2C0, 0x3766,
-	0xC2C2, 0x0124,
-	0xC2C4, 0x1307,
-	0xC2C6, 0x87C9,
-	0xC2C8, 0x2326,
-	0xC2CA, 0xE640,
-	0xC2CC, 0x89CA,
-	0xC2CE, 0x37B7,
-	0xC2D0, 0x0224,
-	0xC2D2, 0xB726,
-	0xC2D4, 0x0024,
-	0xC2D6, 0x1307,
-	0xC2D8, 0x8768,
-	0xC2DA, 0x23A0,
-	0xC2DC, 0xE6CE,
-	0xC2DE, 0x37C7,
-	0xC2E0, 0x0224,
-	0xC2E2, 0x1307,
-	0xC2E4, 0x4711,
-	0xC2E6, 0x23A4,
-	0xC2E8, 0xE1A4,
-	0xC2EA, 0x2398,
-	0xC2EC, 0x0710,
-	0xC2EE, 0x8280,
-	0xC2F0, 0x1733,
-	0xC2F2, 0x02FC,
-	0xC2F4, 0xE702,
-	0xC2F6, 0x031D,
-	0xC2F8, 0xB7C6,
-	0xC2FA, 0x0224,
-	0xC2FC, 0xB787,
-	0xC2FE, 0x0324,
-	0xC300, 0x9386,
-	0xC302, 0x8634,
-	0xC304, 0x37A7,
-	0xC306, 0x0124,
-	0xC308, 0x9387,
-	0xC30A, 0x07FF,
-	0xC30C, 0x1307,
-	0xC30E, 0x0753,
-	0xC310, 0x958F,
-	0xC312, 0x232C,
-	0xC314, 0xD7B4,
-	0xC316, 0x232E,
-	0xC318, 0xF7B4,
-	0xC31A, 0x9720,
-	0xC31C, 0x01FC,
-	0xC31E, 0xE780,
-	0xC320, 0x6016,
-	0xC322, 0x11C5,
-	0xC324, 0xEFE0,
-	0xC326, 0x0F8A,
-	0xC328, 0xEFF0,
-	0xC32A, 0x4FFA,
-	0xC32C, 0x953F,
-	0xC32E, 0x1733,
-	0xC330, 0x02FC,
-	0xC332, 0x6700,
-	0xC334, 0x631B,
-	0xC336, 0x0000,
-	0xC338, 0x9410,
-	0xC33A, 0xE538,
-	0xC33C, 0x0000,
-	0xC33E, 0x0000,
-	0xC340, 0xBEFF,
-	0xC342, 0x0F00,
-	0xC344, 0x0000,
-	0xC346, 0x0000,
-	0xFCFC, 0x2000,
-	0x2366, 0x001C,
-	0x2368, 0x001C,
-	0x238E, 0x3F28,
-	0x2398, 0x5037,
-	0x24B8, 0x0101,
-	0x66E4, 0x1E8D,
-	0x66E6, 0x0000,
-	0x6874, 0x0000,
-	0x6876, 0x0000,
-	0x6878, 0x0000,
-	0x687A, 0x0000,
-	0x6884, 0x0100,
-	0x6886, 0x0100,
-	0x6888, 0x0100,
-	0x688A, 0x0100,
-	0x793E, 0x0100,
-	0x7940, 0x7017,
-	0x795C, 0x0400,
-	0x795E, 0x0400,
-	0x7960, 0x0800,
-	0x7962, 0x1000,
-	0x7964, 0x0800,
-	0x7966, 0x1000,
-	0x7968, 0x0800,
-	0x796A, 0x0800,
-	0x796C, 0x0800,
-	0x796E, 0x0800,
-	0x7972, 0x0400,
-	0x7974, 0x0400,
-	0x7976, 0x0800,
-	0x7978, 0x1000,
-	0x797A, 0x0800,
-	0x797C, 0x1000,
-	0x797E, 0x0800,
-	0x7980, 0x0800,
-	0x7982, 0x0800,
-	0x7984, 0x0800,
-	0xB3AC, 0x4000,
-	0xB3B4, 0x2000,
-	0xB3B8, 0x1000,
-	0xB3F8, 0x8000,
-	0xB400, 0x4000,
-	0xB404, 0x2000,
-	0xBF70, 0x3A46,
-	0xBF7C, 0x0800,
-	0xC4A8, 0x0000,
-	0xC4F8, 0x00A8,
-	0xC4FA, 0x0000,
-	0xD3DA, 0x0D00,
-	0xD3E0, 0x0D00,
-	0xD3E2, 0x0D00,
-	0xD3E4, 0x0D00,
-	0xD3E6, 0x0D00,
-	0xD3EA, 0x0D00,
-	0xD3F4, 0x301C,
-	0xD3F8, 0x301C,
-	0xDD6C, 0xB47E,
-	0xDD6E, 0xB67E,
-	0xDE34, 0x0000,
-	0xDE36, 0x9231,
-	0xEC42, 0x0100,
-	0xEC44, 0x0100,
-	0xFCFC, 0x2001,
-	0x2542, 0x2020,
-	0x2544, 0x2018,
-	0x2554, 0x0000,
-	0x2556, 0x0000,
-	0x256E, 0x0000,
-	0x2936, 0x4400,
-	0x2A14, 0x0002,
-	0x2A16, 0xDF03,
-	0x2A18, 0x0002,
-	0x2A1A, 0x0002,
-	0x3252, 0x8C00,
-	0x3254, 0x8C00,
-	0x3256, 0x8C00,
-	0x3258, 0x8700,
-	0x325A, 0x8200,
-	0x3E1C, 0x0200,
-	0x3E1E, 0x2000,
-	0x5ACC, 0x6505,
-	0xFCFC, 0x4000,
-	0x1858, 0x123F,
-	0xFCFC, 0x2001,
-	0x3EB8, 0x00FF,
-	0x3ECC, 0xFE03,
-	0x3F12, 0x9001,
-	0x33E0, 0x1E00,
-	0x33E2, 0x1E00,
-	0x33E4, 0x1E00,
-	0x33E6, 0x1E00,
-	0x33E8, 0x1E00,
-	0x33EA, 0x1E00,
-	0x3440, 0x0500,
-	0x3442, 0x0500,
-	0x3444, 0x0500,
-	0x3446, 0x0500,
-	0x3448, 0x0500,
-	0x344A, 0x0500,
-	0x3450, 0x0A00,
-	0x3452, 0x0A00,
-	0x3454, 0x0A00,
-	0x3456, 0x0A00,
-	0x3458, 0x0A00,
-	0x345A, 0x0A00,
-	0x34E0, 0x1400,
-	0x34E2, 0x1400,
-	0x34E4, 0x1400,
-	0x34E6, 0x1400,
-	0x34E8, 0x1400,
-	0x34EA, 0x1400,
-	0x3500, 0x1400,
-	0x3502, 0x1400,
-	0x3504, 0x1400,
-	0x3506, 0x1400,
-	0x3508, 0x1400,
-	0x350A, 0x1400,
-	0x3520, 0x1400,
-	0x3522, 0x1400,
-	0x3524, 0x1400,
-	0x3526, 0x1400,
-	0x3528, 0x1400,
-	0x352A, 0x1400,
-	0x3580, 0x2300,
-	0x3582, 0x2300,
-	0x3584, 0x2300,
-	0x3586, 0x2300,
-	0x3588, 0x2300,
-	0x358A, 0x2300,
-	0x35A0, 0x1900,
-	0x35A2, 0x1900,
-	0x35A4, 0x1900,
-	0x35A6, 0x1900,
-	0x35A8, 0x1900,
-	0x35AA, 0x1900,
-	0x35D0, 0x1E00,
-	0x35D2, 0x1E00,
-	0x35D4, 0x1E00,
-	0x35D6, 0x1E00,
-	0x35D8, 0x1E00,
-	0x35DA, 0x1E00,
-	0x35E0, 0x1E00,
-	0x35E2, 0x1E00,
-	0x35E4, 0x1E00,
-	0x35E6, 0x1E00,
-	0x35E8, 0x1E00,
-	0x35EA, 0x1E00,
-	0x35F0, 0x1E00,
-	0x35F2, 0x1E00,
-	0x35F4, 0x1E00,
-	0x35F6, 0x1E00,
-	0x35F8, 0x1E00,
-	0x35FA, 0x1E00,
-	0x3600, 0x1E00,
-	0x3602, 0x1E00,
-	0x3604, 0x1E00,
-	0x3606, 0x1E00,
-	0x3608, 0x1E00,
-	0x360A, 0x1E00,
-	0x3610, 0x1E00,
-	0x3612, 0x1E00,
-	0x3614, 0x1E00,
-	0x3616, 0x1E00,
-	0x3618, 0x1E00,
-	0x361A, 0x1E00,
-	0x3620, 0x0000,
-	0x3622, 0x0000,
-	0x3624, 0x0000,
-	0x3626, 0x0000,
-	0x3628, 0x0000,
-	0x362A, 0x0000,
-	0x3630, 0x0A00,
-	0x3632, 0x0A00,
-	0x3634, 0x0A00,
-	0x3636, 0x0A00,
-	0x3638, 0x0A00,
-	0x363A, 0x0A00,
-	0x3650, 0x1E00,
-	0x3652, 0x1E00,
-	0x3654, 0x1E00,
-	0x3656, 0x1E00,
-	0x3658, 0x1E00,
-	0x365A, 0x1E00,
-	0x3660, 0x1E00,
-	0x3662, 0x1E00,
-	0x3664, 0x1E00,
-	0x3666, 0x1E00,
-	0x3668, 0x1E00,
-	0x366A, 0x1E00,
-	0x36A0, 0x6400,
-	0x36A2, 0x6400,
-	0x36A4, 0x6400,
-	0x36A6, 0x6400,
-	0x36A8, 0x6400,
-	0x36AA, 0x6400,
-	0x36C0, 0x8C00,
-	0x36C2, 0x8C00,
-	0x36C4, 0x8C00,
-	0x36C6, 0x8C00,
-	0x36C8, 0x8C00,
-	0x36CA, 0x8C00,
-	0x36E0, 0x6400,
-	0x36E2, 0x6400,
-	0x36E4, 0x6400,
-	0x36E6, 0x6400,
-	0x36E8, 0x6400,
-	0x36EA, 0x6400,
-	0x36F0, 0x3200,
-	0x36F2, 0x3200,
-	0x36F4, 0x3200,
-	0x36F6, 0x3200,
-	0x36F8, 0x3200,
-	0x36FA, 0x3200,
-	0x3700, 0x3200,
-	0x3702, 0x3200,
-	0x3704, 0x3200,
-	0x3706, 0x3200,
-	0x3708, 0x3200,
-	0x370A, 0x3200,
-	0x3720, 0x3200,
-	0x3722, 0x3200,
-	0x3724, 0x3200,
-	0x3726, 0x3200,
-	0x3728, 0x3200,
-	0x372A, 0x3200,
-	0x3730, 0x3200,
-	0x3732, 0x3200,
-	0x3734, 0x3200,
-	0x3736, 0x3200,
-	0x3738, 0x3200,
-	0x373A, 0x3200,
-	0x3790, 0x3200,
-	0x3792, 0x3200,
-	0x3794, 0x3200,
-	0x3796, 0x3200,
-	0x3798, 0x3200,
-	0x379A, 0x3200,
-	0x37A0, 0x5000,
-	0x37A2, 0x5000,
-	0x37A4, 0x5000,
-	0x37A6, 0x5000,
-	0x37A8, 0x5000,
-	0x37AA, 0x5000,
-	0x37B0, 0x6400,
-	0x37B2, 0x6400,
-	0x37B4, 0x6400,
-	0x37B6, 0x6400,
-	0x37B8, 0x6400,
-	0x37BA, 0x6400,
-	0x37C0, 0x5000,
-	0x37C2, 0x5000,
-	0x37C4, 0x5000,
-	0x37C6, 0x5000,
-	0x37C8, 0x5000,
-	0x37CA, 0x5000,
-	0x37D0, 0x3200,
-	0x37D2, 0x3200,
-	0x37D4, 0x3200,
-	0x37D6, 0x3200,
-	0x37D8, 0x3200,
-	0x37DA, 0x3200,
-	0x37E0, 0x1E00,
-	0x37E2, 0x1E00,
-	0x37E4, 0x1E00,
-	0x37E6, 0x1E00,
-	0x37E8, 0x1E00,
-	0x37EA, 0x1E00,
-	0x37F0, 0x1E00,
-	0x37F2, 0x1E00,
-	0x37F4, 0x1E00,
-	0x37F6, 0x1E00,
-	0x37F8, 0x1E00,
-	0x37FA, 0x1E00,
-	0x3800, 0x1E00,
-	0x3802, 0x1E00,
-	0x3804, 0x1E00,
-	0x3806, 0x1E00,
-	0x3808, 0x1E00,
-	0x380A, 0x1E00,
-	0x3810, 0x1E00,
-	0x3812, 0x1E00,
-	0x3814, 0x1E00,
-	0x3816, 0x1E00,
-	0x3818, 0x1E00,
-	0x381A, 0x1E00,
-	0x3820, 0x1E00,
-	0x3822, 0x1E00,
-	0x3824, 0x1E00,
-	0x3826, 0x1E00,
-	0x3828, 0x1E00,
-	0x382A, 0x1E00,
-	0x3870, 0x3200,
-	0x3872, 0x3200,
-	0x3874, 0x3200,
-	0x3876, 0x3200,
-	0x3878, 0x3200,
-	0x387A, 0x3200,
-	0x3880, 0x3200,
-	0x3882, 0x3200,
-	0x3884, 0x3200,
-	0x3886, 0x3200,
-	0x3888, 0x3200,
-	0x388A, 0x3200,
-	0x3890, 0x3200,
-	0x3892, 0x3200,
-	0x3894, 0x3200,
-	0x3896, 0x3200,
-	0x3898, 0x3200,
-	0x389A, 0x3200,
-	0x38A0, 0x3200,
-	0x38A2, 0x3200,
-	0x38A4, 0x3200,
-	0x38A6, 0x3200,
-	0x38A8, 0x3200,
-	0x38AA, 0x3200,
-	0x38B0, 0x3200,
-	0x38B2, 0x3200,
-	0x38B4, 0x3200,
-	0x38B6, 0x3200,
-	0x38B8, 0x3200,
-	0x38BA, 0x3200,
-	0x320A, 0xFF03,
-	0x320C, 0x0700,
-	0x320E, 0xFF03,
-	0x3210, 0x0700,
-	0x321E, 0x0000,
-	0x31D4, 0x00FF,
-	0x321A, 0x0406,
-	0x3234, 0x0120,
-	0x3236, 0x1600,
-	0x3238, 0x0A14,
-	0x323A, 0x2A2A,
-	0x323C, 0x010F,
-	0x323E, 0x0419,
-	0x3240, 0x143A,
-	0x3242, 0x0A4B,
-	0x3244, 0x0101,
-	0x3246, 0x0101,
-	0x3248, 0x0010,
-	0x3252, 0xC800,
-	0x3254, 0xC400,
-	0x3256, 0xC200,
-	0x3258, 0xBE00,
-	0x325A, 0xBC00,
-	0x3266, 0x0100,
-	0x3268, 0x0200,
-	0x326A, 0x2A00,
-	0x326C, 0x0000,
-	0x326E, 0x3F00,
-	0x3270, 0x0A00,
-	0x3272, 0x1900,
-	0x3274, 0x0C00,
-	0x3276, 0x2000,
-	0x3278, 0x2300,
-	0x327A, 0x2100,
-	0x327C, 0x3000,
-	0x327E, 0x1100,
-	0x3280, 0x0C00,
-	0x3282, 0x2000,
-	0x3284, 0x2300,
-	0x3286, 0x2100,
-	0x3288, 0x3000,
-	0x328A, 0x1100,
-	0x328C, 0x0F00,
-	0x328E, 0x1900,
-	0x3290, 0x0A00,
-	0x3292, 0x0B00,
-	0x3296, 0x0800,
-	0x3298, 0x0F00,
-	0x329A, 0x1900,
-	0x329C, 0x0A00,
-	0x329E, 0x0B00,
-	0x32A0, 0x0000,
-	0x32A2, 0x0800,
-	0x32A4, 0x0F00,
-	0x32A6, 0x1900,
-	0x32A8, 0x0A00,
-	0x32AA, 0x0B00,
-	0x32AC, 0x0000,
-	0x32AE, 0x0800,
-	0x3330, 0x0108,
-	0x3334, 0x0100,
-	0x3336, 0x0000,
-	0xFCFC, 0x4000,
-	0xFCFC, 0x2000,
-	0x68D8, 0x0100,
-	0xFCFC, 0x2002,
-	0xBC90, 0x0100,
-	0xFCFC, 0x4000,
-	0x0E04, 0x1C03,
-	0x0E10, 0x0100,
-	0x0E12, 0x00A0,
-	0x0E14, 0x0C84,
-	0x0E16, 0x002B,
-	0x0E18, 0x0000,
-	0x0E1A, 0x3000,
-	0x0E1C, 0x0100,
-	0x0E1E, 0x00A0,
-	0x0E20, 0x0C84,
-	0x0E22, 0x012B,
-	0x0E24, 0x0100,
-	0x0E26, 0x3000,
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0xFCFC, 0x2000,
-	0x3D44, 0x0000,
-	0x3D88, 0xFCFC,
-	0x3D8A, 0xFEFF,
-	0x3D8C, 0xFCFC,
-	0x3D8E, 0xFEFF,
-	0x3D90, 0xFCFC,
-	0x3D92, 0xFEFF,
-	0x3D94, 0xFCFC,
-	0x3D96, 0xFEFF,
-	0x3FE0, 0x0324,
-	0x3FE2, 0xD682,
-	0x3FE4, 0x0324,
-	0x3FE6, 0x0080,
-	0x4238, 0x0324,
-	0x423A, 0xD682,
-	0x423C, 0x0324,
-	0x423E, 0x0080,
-	0x4240, 0x0324,
-	0x4242, 0xA682,
-	0x4490, 0x0324,
-	0x4492, 0xD682,
-	0x4494, 0x0000,
-	0x4496, 0x0000,
-	0x46E8, 0x0324,
-	0x46EA, 0xD682,
-	0x46EC, 0x0324,
-	0x46EE, 0x8A89,
-	0x4940, 0x0324,
-	0x4942, 0xD682,
-	0x4944, 0x0324,
-	0x4946, 0xEE89,
-	0xFCFC, 0x2003,
-	0x8000, 0xFFFE,
-	0x8002, 0x2400,
-	0x8004, 0xFFFD,
-	0x8006, 0x703C,
-	0x8008, 0x0100,
-	0x800A, 0x703E,
-	0x800C, 0x0000,
-	0x800E, 0x7048,
-	0x8010, 0x002F,
-	0x8012, 0x704A,
-	0x8014, 0x0400,
-	0x8016, 0x705A,
-	0x8018, 0x0030,
-	0x801A, 0x705C,
-	0x801C, 0x0400,
-	0x801E, 0x7274,
-	0x8020, 0x000D,
-	0x8022, 0x7276,
-	0x8024, 0x000C,
-	0x8026, 0x795A,
-	0x8028, 0x0010,
-	0x802A, 0x7970,
-	0x802C, 0x0010,
-	0x802E, 0x7996,
-	0x8030, 0x0001,
-	0x8032, 0x7A0E,
-	0x8034, 0x001E,
-	0x8036, 0x7A6E,
-	0x8038, 0x0028,
-	0x803A, 0x7A86,
-	0x803C, 0x0028,
-	0x803E, 0x7BDA,
-	0x8040, 0x003C,
-	0x8042, 0x82A2,
-	0x8044, 0x0012,
-	0x8046, 0x82BA,
-	0x8048, 0x0036,
-	0x804A, 0x8C9E,
-	0x804C, 0x0050,
-	0x804E, 0x8CA2,
-	0x8050, 0x0035,
-	0x8052, 0x8CCE,
-	0x8054, 0x012C,
-	0x8056, 0x8CD2,
-	0x8058, 0x0096,
-	0x805A, 0xB176,
-	0x805C, 0x0006,
-	0x805E, 0xB220,
-	0x8060, 0x0000,
-	0x8062, 0xB268,
-	0x8064, 0x0440,
-	0x8066, 0xC4E2,
-	0x8068, 0x0002,
-	0x806A, 0xC53C,
-	0x806C, 0x0001,
-	0x806E, 0xC554,
-	0x8070, 0x0D53,
-	0x8072, 0xD326,
-	0x8074, 0x2001,
-	0x8076, 0xD3EC,
-	0x8078, 0x1CB1,
-	0x807A, 0xD49C,
-	0x807C, 0x0021,
-	0x807E, 0xD4A8,
-	0x8080, 0x0003,
-	0x8082, 0xD4AC,
-	0x8084, 0x003B,
-	0x8086, 0xD4B0,
-	0x8088, 0x0001,
-	0x808A, 0xD4B8,
-	0x808C, 0x0035,
-	0x808E, 0xD4BC,
-	0x8090, 0x0014,
-	0x8092, 0xD4C4,
-	0x8094, 0x0001,
-	0x8096, 0xD4C8,
-	0x8098, 0x0000,
-	0x809A, 0xD4D0,
-	0x809C, 0x0016,
-	0x809E, 0xD4D2,
-	0x80A0, 0x0020,
-	0x80A2, 0xD4D6,
-	0x80A4, 0x0000,
-	0x80A6, 0xD4DE,
-	0x80A8, 0x0000,
-	0x80AA, 0xD4E2,
-	0x80AC, 0x0001,
-	0x80AE, 0xD4EC,
-	0x80B0, 0x00BE,
-	0x80B2, 0xD4EE,
-	0x80B4, 0x00BE,
-	0x80B6, 0xD4F8,
-	0x80B8, 0x01F0,
-	0x80BA, 0xD4FA,
-	0x80BC, 0x01F0,
-	0x80BE, 0xD554,
-	0x80C0, 0x0000,
-	0x80C2, 0xD556,
-	0x80C4, 0x0000,
-	0x80C6, 0xD560,
-	0x80C8, 0x0000,
-	0x80CA, 0xD562,
-	0x80CC, 0x0000,
-	0x80CE, 0xD684,
-	0x80D0, 0x0440,
-	0x80D2, 0xDB0E,
-	0x80D4, 0x8000,
-	0x80D6, 0xDB12,
-	0x80D8, 0x0000,
-	0x80DA, 0xDB14,
-	0x80DC, 0x0000,
-	0x80DE, 0xDB16,
-	0x80E0, 0x0000,
-	0x80E2, 0xDB42,
-	0x80E4, 0x0000,
-	0x80E6, 0xDB44,
-	0x80E8, 0x0000,
-	0x80EA, 0xDB46,
-	0x80EC, 0x0000,
-	0x80EE, 0xDC8C,
-	0x80F0, 0x2B3F,
-	0x80F2, 0xDC94,
-	0x80F4, 0x0001,
-	0x80F6, 0xE980,
-	0x80F8, 0x0500,
-	0x80FA, 0xF014,
-	0x80FC, 0x0006,
-	0x80FE, 0xF3F4,
-	0x8100, 0x08C8,
-	0x8102, 0xF3F6,
-	0x8104, 0x10D7,
-	0x8106, 0xFFFE,
-	0x8108, 0x2401,
-	0x810A, 0xFFFD,
-	0x810C, 0x1C4E,
-	0x810E, 0x0100,
-	0x8110, 0x1C50,
-	0x8112, 0x03FF,
-	0x8114, 0x1E16,
-	0x8116, 0x0000,
-	0x8118, 0x1E1E,
-	0x811A, 0x0000,
-	0x811C, 0x1E56,
-	0x811E, 0x0000,
-	0x8120, 0x1E5E,
-	0x8122, 0x0000,
-	0x8124, 0x2540,
-	0x8126, 0x0002,
-	0x8128, 0x29A8,
-	0x812A, 0x0002,
-	0x812C, 0x29BA,
-	0x812E, 0x00FF,
-	0x8130, 0x2A44,
-	0x8132, 0x04B0,
-	0x8134, 0x2A56,
-	0x8136, 0x0008,
-	0x8138, 0x3132,
-	0x813A, 0x0001,
-	0x813C, 0x31D0,
-	0x813E, 0x0002,
-	0x8140, 0x31F8,
-	0x8142, 0x0001,
-	0x8144, 0x31FA,
-	0x8146, 0x04CD,
-	0x8148, 0x4396,
-	0x814A, 0x000C,
-	0x814C, 0xFFFE,
-	0x814E, 0x2402,
-	0x8150, 0xFFFD,
-	0x8152, 0x84C4,
-	0x8154, 0x0000,
-	0x8156, 0xA598,
-	0x8158, 0x002E,
-	0x815A, 0xA59A,
-	0x815C, 0x0030,
-	0x815E, 0xFFFE,
-	0x8160, 0x2400,
-	0x8162, 0xFFFD,
-	0x8164, 0x0086,
-	0x8166, 0x0200,
-	0x8168, 0x0350,
-	0x816A, 0x0010,
-	0x816C, 0x0352,
-	0x816E, 0x0010,
-	0x8170, 0x0900,
-	0x8172, 0x1100,
-	0x8174, 0x0B02,
-	0x8176, 0x0101,
-	0x8178, 0x0B08,
-	0x817A, 0x0101,
-	0x817C, 0x0342,
-	0x817E, 0x23F0,
-	0x8180, 0x0000,
-	0x8182, 0xFFFF,
-	0x8184, 0x0008,
-	0x8186, 0x2400,
-	0x8188, 0x7314,
-	0x818A, 0x0000,
-	0x818C, 0x0000,
-	0x818E, 0x0000,
-	0x8190, 0x0000,
-	0x8192, 0xFFFF,
-	0x8194, 0x000A,
-	0x8196, 0x2400,
-	0x8198, 0xDADE,
-	0x819A, 0x3000,
-	0x819C, 0x8001,
-	0x819E, 0x0000,
-	0x81A0, 0x0000,
-	0x81A2, 0x0000,
-	0x81A4, 0xFFFF,
-	0x81A6, 0x0010,
-	0x81A8, 0x2401,
-	0x81AA, 0x1C26,
-	0x81AC, 0x0001,
-	0x81AE, 0xFF03,
-	0x81B0, 0x0010,
-	0x81B2, 0xD70F,
-	0x81B4, 0x0004,
-	0x81B6, 0x0010,
-	0x81B8, 0xD70F,
-	0x81BA, 0xC20F,
-	0x81BC, 0xFFFF,
-	0x81BE, 0x000A,
-	0x81C0, 0x2401,
-	0x81C2, 0x1C54,
-	0x81C4, 0xD70F,
-	0x81C6, 0x0004,
-	0x81C8, 0x0010,
-	0x81CA, 0xD70F,
-	0x81CC, 0xC20F,
-	0x81CE, 0xFFFF,
-	0x81D0, 0x0010,
-	0x81D2, 0x2401,
-	0x81D4, 0x1C76,
-	0x81D6, 0x0001,
-	0x81D8, 0xFF03,
-	0x81DA, 0x0010,
-	0x81DC, 0xD70F,
-	0x81DE, 0x0004,
-	0x81E0, 0x0010,
-	0x81E2, 0xD70F,
-	0x81E4, 0xC20F,
-	0x81E6, 0xFFFF,
-	0x81E8, 0x0010,
-	0x81EA, 0x2401,
-	0x81EC, 0x1C9E,
-	0x81EE, 0x0001,
-	0x81F0, 0xFF03,
-	0x81F2, 0x0010,
-	0x81F4, 0xD70F,
-	0x81F6, 0x0004,
-	0x81F8, 0x0010,
-	0x81FA, 0xD70F,
-	0x81FC, 0xC20F,
-	0x81FE, 0xFFFF,
-	0x8200, 0x0010,
-	0x8202, 0x2401,
-	0x8204, 0x1CC6,
-	0x8206, 0x0000,
-	0x8208, 0x0000,
-	0x820A, 0x0000,
-	0x820C, 0x0000,
-	0x820E, 0x0000,
-	0x8210, 0x0000,
-	0x8212, 0x0000,
-	0x8214, 0x0000,
-	0x8216, 0xFFFF,
-	0x8218, 0x0010,
-	0x821A, 0x2401,
-	0x821C, 0x1CEE,
-	0x821E, 0x0000,
-	0x8220, 0x0000,
-	0x8222, 0x0000,
-	0x8224, 0x0000,
-	0x8226, 0x0000,
-	0x8228, 0x0000,
-	0x822A, 0x0000,
-	0x822C, 0x0000,
-	0x822E, 0xFFFF,
-	0x8230, 0x0010,
-	0x8232, 0x2401,
-	0x8234, 0x1D16,
-	0x8236, 0x0000,
-	0x8238, 0x0000,
-	0x823A, 0x0000,
-	0x823C, 0x0000,
-	0x823E, 0x0000,
-	0x8240, 0x0000,
-	0x8242, 0x0000,
-	0x8244, 0x0000,
-	0x8246, 0xFFFF,
-	0x8248, 0x0010,
-	0x824A, 0x2401,
-	0x824C, 0x1D3E,
-	0x824E, 0x0000,
-	0x8250, 0x0000,
-	0x8252, 0x0000,
-	0x8254, 0x0000,
-	0x8256, 0x0000,
-	0x8258, 0x0000,
-	0x825A, 0x0000,
-	0x825C, 0x0000,
-	0x825E, 0xFFFF,
-	0x8260, 0x001C,
-	0x8262, 0x2402,
-	0x8264, 0xA57A,
-	0x8266, 0x0001,
-	0x8268, 0x0002,
-	0x826A, 0x0002,
-	0x826C, 0x0002,
-	0x826E, 0x0002,
-	0x8270, 0x0002,
-	0x8272, 0x0002,
-	0x8274, 0x0800,
-	0x8276, 0x2100,
-	0x8278, 0x2900,
-	0x827A, 0x2E00,
-	0x827C, 0x2E00,
-	0x827E, 0x2E00,
-	0x8280, 0x2E00,
-	0x8282, 0xFFFF,
-	0x8284, 0x0008,
-	0x8286, 0x2400,
-	0x8288, 0x0344,
-	0x828A, 0x0008,
-	0x828C, 0x0006,
-	0x828E, 0x1F18,
-	0x8290, 0x1F12,
-	0x8292, 0xFFFF,
-	0x8294, 0x0008,
-	0x8296, 0x2400,
-	0x8298, 0x0380,
-	0x829A, 0x0100,
-	0x829C, 0x0100,
-	0x829E, 0x0100,
-	0x82A0, 0x0100,
-	0x82A2, 0x0000,
-	0x82A4, 0x0000,
-	0x82A6, 0xFFFE,
-	0x82A8, 0x2400,
-	0x82AA, 0xFFFD,
-	0x82AC, 0xD4AC,
-	0x82AE, 0x03E8,
-	0x82B0, 0xFFFE,
-	0x82B2, 0x2401,
-	0x82B4, 0xFFFD,
-	0x82B6, 0x25E0,
-	0x82B8, 0x0001,
-	0x82BA, 0x25E2,
-	0x82BC, 0x00CD,
-	0x82BE, 0x31D0,
-	0x82C0, 0x0000,
-	0x82C2, 0x31FA,
-	0x82C4, 0x0400,
-	0x82C6, 0xFFFE,
-	0x82C8, 0x2400,
-	0x82CA, 0xFFFD,
-	0x82CC, 0x0B08,
-	0x82CE, 0x0001,
-	0x82D0, 0x0000,
-	0x82D2, 0x0000,
-	0x82D4, 0x0000,
-	0x82D6, 0xFFFE,
-	0x82D8, 0x2400,
-	0x82DA, 0xFFFD,
-	0x82DC, 0x22C2,
-	0x82DE, 0x0006,
-	0x82E0, 0x22C4,
-	0x82E2, 0x1FFF,
-	0x82E4, 0x22EC,
-	0x82E6, 0x001F,
-	0x82E8, 0x2306,
-	0x82EA, 0x3FFF,
-	0x82EC, 0x2314,
-	0x82EE, 0x00FF,
-	0x82F0, 0x2354,
-	0x82F2, 0x0003,
-	0x82F4, 0x23F0,
-	0x82F6, 0x0100,
-	0x82F8, 0x68DE,
-	0x82FA, 0x0000,
-	0x82FC, 0x703C,
-	0x82FE, 0x0101,
-	0x8300, 0x703E,
-	0x8302, 0x0001,
-	0x8304, 0x7046,
-	0x8306, 0x027F,
-	0x8308, 0x7048,
-	0x830A, 0x021F,
-	0x830C, 0x704A,
-	0x830E, 0x0A00,
-	0x8310, 0x7058,
-	0x8312, 0x0280,
-	0x8314, 0x705A,
-	0x8316, 0x0220,
-	0x8318, 0x705C,
-	0x831A, 0x0A01,
-	0x831C, 0x7806,
-	0x831E, 0x0100,
-	0x8320, 0x7808,
-	0x8322, 0x0824,
-	0x8324, 0x78C0,
-	0x8326, 0x0101,
-	0x8328, 0x795A,
-	0x832A, 0x0020,
-	0x832C, 0x7970,
-	0x832E, 0x0020,
-	0x8330, 0x7994,
-	0x8332, 0x2020,
-	0x8334, 0x7996,
-	0x8336, 0x0101,
-	0x8338, 0x799A,
-	0x833A, 0x0000,
-	0x833C, 0x7BDA,
-	0x833E, 0x004C,
-	0x8340, 0x7EE6,
-	0x8342, 0x002C,
-	0x8344, 0x7EF2,
-	0x8346, 0x002C,
-	0x8348, 0x7EFE,
-	0x834A, 0x0064,
-	0x834C, 0x7F0A,
-	0x834E, 0x0058,
-	0x8350, 0x7F0E,
-	0x8352, 0x0058,
-	0x8354, 0x82A2,
-	0x8356, 0x0014,
-	0x8358, 0x82BA,
-	0x835A, 0x0033,
-	0x835C, 0x8CCE,
-	0x835E, 0x0096,
-	0x8360, 0x8CD0,
-	0x8362, 0x0096,
-	0x8364, 0x8CD2,
-	0x8366, 0x00BE,
-	0x8368, 0x8CD6,
-	0x836A, 0x0096,
-	0x836C, 0x8D0E,
-	0x836E, 0x0000,
-	0x8370, 0x9032,
-	0x8372, 0x0000,
-	0x8374, 0x903E,
-	0x8376, 0x0000,
-	0x8378, 0xB176,
-	0x837A, 0x0206,
-	0x837C, 0xB178,
-	0x837E, 0x0000,
-	0x8380, 0xB20C,
-	0x8382, 0x002E,
-	0x8384, 0xB21A,
-	0x8386, 0x0204,
-	0x8388, 0xB23C,
-	0x838A, 0x6060,
-	0x838C, 0xB242,
-	0x838E, 0x6060,
-	0x8390, 0xB266,
-	0x8392, 0x04C0,
-	0x8394, 0xB268,
-	0x8396, 0xF380,
-	0x8398, 0xB270,
-	0x839A, 0x0887,
-	0x839C, 0xB322,
-	0x839E, 0x0101,
-	0x83A0, 0xB324,
-	0x83A2, 0x0001,
-	0x83A4, 0xB330,
-	0x83A6, 0x2828,
-	0x83A8, 0xB34A,
-	0x83AA, 0x2828,
-	0x83AC, 0xB360,
-	0x83AE, 0x2828,
-	0x83B0, 0xB378,
-	0x83B2, 0x0001,
-	0x83B4, 0xBF16,
-	0x83B6, 0xAA0B,
-	0x83B8, 0xBF30,
-	0x83BA, 0x0000,
-	0x83BC, 0xBF78,
-	0x83BE, 0x3353,
-	0x83C0, 0xC4D8,
-	0x83C2, 0x0020,
-	0x83C4, 0xC4E0,
-	0x83C6, 0x0001,
-	0x83C8, 0xC4E2,
-	0x83CA, 0x0000,
-	0x83CC, 0xC4F6,
-	0x83CE, 0x0000,
-	0x83D0, 0xC53C,
-	0x83D2, 0x0005,
-	0x83D4, 0xC53E,
-	0x83D6, 0x0000,
-	0x83D8, 0xC544,
-	0x83DA, 0x0500,
-	0x83DC, 0xC554,
-	0x83DE, 0x1000,
-	0x83E0, 0xC556,
-	0x83E2, 0x0000,
-	0x83E4, 0xD1F6,
-	0x83E6, 0x003A,
-	0x83E8, 0xD20C,
-	0x83EA, 0x0809,
-	0x83EC, 0xD27A,
-	0x83EE, 0x0005,
-	0x83F0, 0xD314,
-	0x83F2, 0x0220,
-	0x83F4, 0xD326,
-	0x83F6, 0x1001,
-	0x83F8, 0xD3EC,
-	0x83FA, 0x1CB0,
-	0x83FC, 0xD3F0,
-	0x83FE, 0x1CB0,
-	0x8400, 0xD410,
-	0x8402, 0x0248,
-	0x8404, 0xD412,
-	0x8406, 0x04D2,
-	0x8408, 0xD426,
-	0x840A, 0x04D2,
-	0x840C, 0xD428,
-	0x840E, 0x0AEA,
-	0x8410, 0xD43C,
-	0x8412, 0x4001,
-	0x8414, 0xD43E,
-	0x8416, 0x4001,
-	0x8418, 0xD49C,
-	0x841A, 0x0003,
-	0x841C, 0xD4A8,
-	0x841E, 0x0001,
-	0x8420, 0xD4AC,
-	0x8422, 0x0001,
-	0x8424, 0xD4B0,
-	0x8426, 0x0202,
-	0x8428, 0xD4B4,
-	0x842A, 0x0001,
-	0x842C, 0xD4B8,
-	0x842E, 0x0014,
-	0x8430, 0xD4BC,
-	0x8432, 0x0047,
-	0x8434, 0xD4C0,
-	0x8436, 0x0014,
-	0x8438, 0xD4C4,
-	0x843A, 0x0000,
-	0x843C, 0xD4C8,
-	0x843E, 0x0001,
-	0x8440, 0xD4CC,
-	0x8442, 0x0000,
-	0x8444, 0xD4D0,
-	0x8446, 0x0026,
-	0x8448, 0xD4D2,
-	0x844A, 0x0000,
-	0x844C, 0xD4D6,
-	0x844E, 0x001A,
-	0x8450, 0xD4DA,
-	0x8452, 0x0000,
-	0x8454, 0xD4DE,
-	0x8456, 0x0001,
-	0x8458, 0xD4E2,
-	0x845A, 0x0028,
-	0x845C, 0xD4E6,
-	0x845E, 0x0001,
-	0x8460, 0xD4EA,
-	0x8462, 0x0001,
-	0x8464, 0xD4EC,
-	0x8466, 0x0000,
-	0x8468, 0xD4EE,
-	0x846A, 0x0000,
-	0x846C, 0xD4F8,
-	0x846E, 0x0000,
-	0x8470, 0xD4FA,
-	0x8472, 0x0000,
-	0x8474, 0xD554,
-	0x8476, 0x00C4,
-	0x8478, 0xD556,
-	0x847A, 0x00EC,
-	0x847C, 0xD560,
-	0x847E, 0x0352,
-	0x8480, 0xD562,
-	0x8482, 0x037A,
-	0x8484, 0xD5BC,
-	0x8486, 0x0000,
-	0x8488, 0xD5BE,
-	0x848A, 0x0000,
-	0x848C, 0xD5C8,
-	0x848E, 0x0000,
-	0x8490, 0xD5CA,
-	0x8492, 0x0000,
-	0x8494, 0xD624,
-	0x8496, 0x0000,
-	0x8498, 0xD62E,
-	0x849A, 0x0000,
-	0x849C, 0xD638,
-	0x849E, 0x0000,
-	0x84A0, 0xD682,
-	0x84A2, 0x04C0,
-	0x84A4, 0xD684,
-	0x84A6, 0xF380,
-	0x84A8, 0xD6D4,
-	0x84AA, 0x0000,
-	0x84AC, 0xD704,
-	0x84AE, 0x7802,
-	0x84B0, 0xD718,
-	0x84B2, 0x0200,
-	0x84B4, 0xD856,
-	0x84B6, 0x0705,
-	0x84B8, 0xD896,
-	0x84BA, 0x0000,
-	0x84BC, 0xD8A2,
-	0x84BE, 0x0001,
-	0x84C0, 0xDC8C,
-	0x84C2, 0x0B3F,
-	0x84C4, 0xDC94,
-	0x84C6, 0x0301,
-	0x84C8, 0xDD70,
-	0x84CA, 0x0000,
-	0x84CC, 0xDE38,
-	0x84CE, 0x0000,
-	0x84D0, 0xE980,
-	0x84D2, 0x049E,
-	0x84D4, 0xEF80,
-	0x84D6, 0x0000,
-	0x84D8, 0xF014,
-	0x84DA, 0x0007,
-	0x84DC, 0xF09A,
-	0x84DE, 0xFF00,
-	0x84E0, 0xF0AA,
-	0x84E2, 0xFFFF,
-	0x84E4, 0xF0AC,
-	0x84E6, 0xFFFF,
-	0x84E8, 0xF288,
-	0x84EA, 0x0000,
-	0x84EC, 0xF2E0,
-	0x84EE, 0x0000,
-	0x84F0, 0xF2EA,
-	0x84F2, 0x0040,
-	0x84F4, 0xF370,
-	0x84F6, 0x0302,
-	0x84F8, 0xF372,
-	0x84FA, 0x0000,
-	0x84FC, 0xF3E4,
-	0x84FE, 0x0103,
-	0x8500, 0xF3F4,
-	0x8502, 0x00C8,
-	0x8504, 0xF3F6,
-	0x8506, 0x10D6,
-	0x8508, 0xFFFE,
-	0x850A, 0x2401,
-	0x850C, 0xFFFD,
-	0x850E, 0x195E,
-	0x8510, 0x0001,
-	0x8512, 0x1966,
-	0x8514, 0x0000,
-	0x8516, 0x1DF2,
-	0x8518, 0x0000,
-	0x851A, 0x1DF6,
-	0x851C, 0x0000,
-	0x851E, 0x1DFA,
-	0x8520, 0x0000,
-	0x8522, 0x1DFE,
-	0x8524, 0x0000,
-	0x8526, 0x1E12,
-	0x8528, 0x0000,
-	0x852A, 0x1E16,
-	0x852C, 0xFFFA,
-	0x852E, 0x1E1A,
-	0x8530, 0x0000,
-	0x8532, 0x1E1E,
-	0x8534, 0xFFFA,
-	0x8536, 0x1E32,
-	0x8538, 0x0000,
-	0x853A, 0x1E36,
-	0x853C, 0x0000,
-	0x853E, 0x1E3A,
-	0x8540, 0x0000,
-	0x8542, 0x1E3E,
-	0x8544, 0x0000,
-	0x8546, 0x1E52,
-	0x8548, 0x0000,
-	0x854A, 0x1E56,
-	0x854C, 0xFFFA,
-	0x854E, 0x1E5A,
-	0x8550, 0x0000,
-	0x8552, 0x1E5E,
-	0x8554, 0xFFFA,
-	0x8556, 0x2540,
-	0x8558, 0x0000,
-	0x855A, 0x25E0,
-	0x855C, 0x0000,
-	0x855E, 0x25E2,
-	0x8560, 0x0000,
-	0x8562, 0x2920,
-	0x8564, 0x0001,
-	0x8566, 0x29A8,
-	0x8568, 0x0001,
-	0x856A, 0x29BA,
-	0x856C, 0x0020,
-	0x856E, 0x2A30,
-	0x8570, 0xFF01,
-	0x8572, 0x2A42,
-	0x8574, 0x0001,
-	0x8576, 0x2A44,
-	0x8578, 0x0739,
-	0x857A, 0x2A46,
-	0x857C, 0x0000,
-	0x857E, 0x2A54,
-	0x8580, 0x0000,
-	0x8582, 0x2A56,
-	0x8584, 0x0004,
-	0x8586, 0x2BB2,
-	0x8588, 0x0010,
-	0x858A, 0x2D32,
-	0x858C, 0x1000,
-	0x858E, 0x3132,
-	0x8590, 0x0002,
-	0x8592, 0x31D0,
-	0x8594, 0x0000,
-	0x8596, 0x31F8,
-	0x8598, 0x0000,
-	0x859A, 0x31FA,
-	0x859C, 0x0000,
-	0x859E, 0x3C42,
-	0x85A0, 0x0000,
-	0x85A2, 0x3C46,
-	0x85A4, 0x05EB,
-	0x85A6, 0x3C52,
-	0x85A8, 0x0640,
-	0x85AA, 0x4270,
-	0x85AC, 0x0000,
-	0x85AE, 0x427C,
-	0x85B0, 0x0020,
-	0x85B2, 0x4280,
-	0x85B4, 0x0010,
-	0x85B6, 0x4290,
-	0x85B8, 0x0001,
-	0x85BA, 0x4292,
-	0x85BC, 0x0000,
-	0x85BE, 0x4362,
-	0x85C0, 0x0001,
-	0x85C2, 0x4364,
-	0x85C4, 0x0000,
-	0x85C6, 0x4366,
-	0x85C8, 0x0000,
-	0x85CA, 0x4370,
-	0x85CC, 0x0000,
-	0x85CE, 0x4396,
-	0x85D0, 0x000D,
-	0x85D2, 0x4398,
-	0x85D4, 0x000E,
-	0x85D6, 0x43AA,
-	0x85D8, 0x0000,
-	0x85DA, 0x43AC,
-	0x85DC, 0x0000,
-	0x85DE, 0x43B4,
-	0x85E0, 0x0000,
-	0x85E2, 0x43B6,
-	0x85E4, 0x0000,
-	0x85E6, 0x43C6,
-	0x85E8, 0x0A01,
-	0x85EA, 0x44C6,
-	0x85EC, 0x0000,
-	0x85EE, 0x5A70,
-	0x85F0, 0x0000,
-	0x85F2, 0xFFFE,
-	0x85F4, 0x2402,
-	0x85F6, 0xFFFD,
-	0x85F8, 0x849E,
-	0x85FA, 0x0000,
-	0x85FC, 0x84A0,
-	0x85FE, 0x0000,
-	0x8600, 0x84A2,
-	0x8602, 0x0500,
-	0x8604, 0x84C4,
-	0x8606, 0x0001,
-	0x8608, 0xA570,
-	0x860A, 0x0000,
-	0x860C, 0xFFFE,
-	0x860E, 0x2400,
-	0x8610, 0xFFFD,
-	0x8612, 0x0086,
-	0x8614, 0x1400,
-	0x8616, 0x0112,
-	0x8618, 0x0A0A,
-	0x861A, 0x0114,
-	0x861C, 0x0103,
-	0x861E, 0x0118,
-	0x8620, 0x0400,
-	0x8622, 0x011A,
-	0x8624, 0x0100,
-	0x8626, 0x011C,
-	0x8628, 0x0001,
-	0x862A, 0x0136,
-	0x862C, 0x1800,
-	0x862E, 0x013E,
-	0x8630, 0x0000,
-	0x8632, 0x020A,
-	0x8634, 0x0000,
-	0x8636, 0x021E,
-	0x8638, 0x0000,
-	0x863A, 0x0228,
-	0x863C, 0x0001,
-	0x863E, 0x0270,
-	0x8640, 0x2B2B,
-	0x8642, 0x0272,
-	0x8644, 0x102B,
-	0x8646, 0x0274,
-	0x8648, 0x2B30,
-	0x864A, 0x0304,
-	0x864C, 0x0003,
-	0x864E, 0x0306,
-	0x8650, 0x00E6,
-	0x8652, 0x031A,
-	0x8654, 0x0003,
-	0x8656, 0x031C,
-	0x8658, 0x0028,
-	0x865A, 0x031E,
-	0x865C, 0x0002,
-	0x865E, 0x0400,
-	0x8660, 0x1010,
-	0x8662, 0x0408,
-	0x8664, 0x0100,
-	0x8666, 0x040A,
-	0x8668, 0x0100,
-	0x866A, 0x040C,
-	0x866C, 0x0000,
-	0x866E, 0x0702,
-	0x8670, 0x0000,
-	0x8672, 0x0704,
-	0x8674, 0x0000,
-	0x8676, 0x0720,
-	0x8678, 0x0001,
-	0x867A, 0x0722,
-	0x867C, 0x0008,
-	0x867E, 0x0724,
-	0x8680, 0x0000,
-	0x8682, 0x0808,
-	0x8684, 0x0102,
-	0x8686, 0x0900,
-	0x8688, 0x2222,
-	0x868A, 0x0936,
-	0x868C, 0x0000,
-	0x868E, 0x0C40,
-	0x8690, 0x0000,
-	0x8692, 0x0E00,
-	0x8694, 0x0300,
-	0x8696, 0x0342,
-	0x8698, 0x12B0,
-	0x869A, 0x0000,
-	0x869C, 0xFFFF,
-	0x869E, 0x0008,
-	0x86A0, 0x2400,
-	0x86A2, 0x71D4,
-	0x86A4, 0x3F00,
-	0x86A6, 0x3D00,
-	0x86A8, 0x84F3,
-	0x86AA, 0x0040,
-	0x86AC, 0xFFFF,
-	0x86AE, 0x0010,
-	0x86B0, 0x2400,
-	0x86B2, 0x7274,
-	0x86B4, 0x0C00,
-	0x86B6, 0x0B00,
-	0x86B8, 0x36D2,
-	0x86BA, 0x0040,
-	0x86BC, 0x0000,
-	0x86BE, 0x0000,
-	0x86C0, 0x0000,
-	0x86C2, 0x0000,
-	0x86C4, 0xFFFF,
-	0x86C6, 0x0008,
-	0x86C8, 0x2400,
-	0x86CA, 0x7314,
-	0x86CC, 0x2E00,
-	0x86CE, 0x3000,
-	0x86D0, 0x9EFD,
-	0x86D2, 0x0040,
-	0x86D4, 0xFFFF,
-	0x86D6, 0x0008,
-	0x86D8, 0x2400,
-	0x86DA, 0x7A0E,
-	0x86DC, 0x0F00,
-	0x86DE, 0x0F00,
-	0x86E0, 0x0F00,
-	0x86E2, 0x0F00,
-	0x86E4, 0xFFFF,
-	0x86E6, 0x0008,
-	0x86E8, 0x2400,
-	0x86EA, 0x7A6E,
-	0x86EC, 0x1900,
-	0x86EE, 0x1900,
-	0x86F0, 0x1900,
-	0x86F2, 0x1900,
-	0x86F4, 0xFFFF,
-	0x86F6, 0x0008,
-	0x86F8, 0x2400,
-	0x86FA, 0x7A86,
-	0x86FC, 0x1900,
-	0x86FE, 0x1900,
-	0x8700, 0x1900,
-	0x8702, 0x1900,
-	0x8704, 0xFFFF,
-	0x8706, 0x0008,
-	0x8708, 0x2400,
-	0x870A, 0x8C9E,
-	0x870C, 0x3500,
-	0x870E, 0x3500,
-	0x8710, 0x5000,
-	0x8712, 0x3500,
-	0x8714, 0xFFFF,
-	0x8716, 0x000A,
-	0x8718, 0x2400,
-	0x871A, 0xB21E,
-	0x871C, 0x0000,
-	0x871E, 0x0103,
-	0x8720, 0xC000,
-	0x8722, 0x0103,
-	0x8724, 0x0000,
-	0x8726, 0xFFFF,
-	0x8728, 0x000C,
-	0x872A, 0x2400,
-	0x872C, 0xBEDC,
-	0x872E, 0xC526,
-	0x8730, 0x903E,
-	0x8732, 0xC00F,
-	0x8734, 0x0008,
-	0x8736, 0x0C00,
-	0x8738, 0x8000,
-	0x873A, 0xFFFF,
-	0x873C, 0x000E,
-	0x873E, 0x2400,
-	0x8740, 0xDADA,
-	0x8742, 0x0001,
-	0x8744, 0x0000,
-	0x8746, 0x4000,
-	0x8748, 0xE001,
-	0x874A, 0x2003,
-	0x874C, 0x8007,
-	0x874E, 0x000B,
-	0x8750, 0xFFFF,
-	0x8752, 0x000C,
-	0x8754, 0x2400,
-	0x8756, 0xDB0C,
-	0x8758, 0x0000,
-	0x875A, 0x0040,
-	0x875C, 0x0000,
-	0x875E, 0x00B0,
-	0x8760, 0x00D0,
-	0x8762, 0x00F0,
-	0x8764, 0xFFFF,
-	0x8766, 0x000C,
-	0x8768, 0x2400,
-	0x876A, 0xDB3C,
-	0x876C, 0x12D2,
-	0x876E, 0x12D2,
-	0x8770, 0x12D2,
-	0x8772, 0x12D2,
-	0x8774, 0x12D2,
-	0x8776, 0x12D2,
-	0x8778, 0xFFFF,
-	0x877A, 0x000C,
-	0x877C, 0x2400,
-	0x877E, 0xDB6C,
-	0x8780, 0x0000,
-	0x8782, 0x0000,
-	0x8784, 0x0000,
-	0x8786, 0x0000,
-	0x8788, 0x0000,
-	0x878A, 0x0000,
-	0x878C, 0xFFFF,
-	0x878E, 0x000C,
-	0x8790, 0x2400,
-	0x8792, 0xDB9C,
-	0x8794, 0x0000,
-	0x8796, 0x0000,
-	0x8798, 0x0000,
-	0x879A, 0x0000,
-	0x879C, 0x0000,
-	0x879E, 0x0000,
-	0x87A0, 0xFFFF,
-	0x87A2, 0x000C,
-	0x87A4, 0x2400,
-	0x87A6, 0xDBCC,
-	0x87A8, 0x0000,
-	0x87AA, 0x0000,
-	0x87AC, 0x0000,
-	0x87AE, 0x0000,
-	0x87B0, 0x0000,
-	0x87B2, 0x0000,
-	0x87B4, 0xFFFF,
-	0x87B6, 0x0012,
-	0x87B8, 0x2401,
-	0x87BA, 0x1C24,
-	0x87BC, 0x0002,
-	0x87BE, 0x8001,
-	0x87C0, 0x8004,
-	0x87C2, 0x2010,
-	0x87C4, 0x2010,
-	0x87C6, 0x0005,
-	0x87C8, 0x00A0,
-	0x87CA, 0x2810,
-	0x87CC, 0x2810,
-	0x87CE, 0xFFFF,
-	0x87D0, 0x0020,
-	0x87D2, 0x2401,
-	0x87D4, 0x1C4E,
-	0x87D6, 0x8001,
-	0x87D8, 0x8004,
-	0x87DA, 0x0010,
-	0x87DC, 0x0010,
-	0x87DE, 0x0005,
-	0x87E0, 0x00A0,
-	0x87E2, 0x2810,
-	0x87E4, 0x2810,
-	0x87E6, 0x0000,
-	0x87E8, 0x0000,
-	0x87EA, 0x0000,
-	0x87EC, 0x0000,
-	0x87EE, 0x0000,
-	0x87F0, 0x0000,
-	0x87F2, 0x0000,
-	0x87F4, 0x0000,
-	0x87F6, 0xFFFF,
-	0x87F8, 0x0020,
-	0x87FA, 0x2401,
-	0x87FC, 0x1C76,
-	0x87FE, 0x8001,
-	0x8800, 0x8004,
-	0x8802, 0x2010,
-	0x8804, 0x2010,
-	0x8806, 0x0005,
-	0x8808, 0x00A0,
-	0x880A, 0x2810,
-	0x880C, 0x2810,
-	0x880E, 0x0000,
-	0x8810, 0x0000,
-	0x8812, 0x0000,
-	0x8814, 0x0000,
-	0x8816, 0x0000,
-	0x8818, 0x0000,
-	0x881A, 0x0000,
-	0x881C, 0x0000,
-	0x881E, 0xFFFF,
-	0x8820, 0x0010,
-	0x8822, 0x2401,
-	0x8824, 0x1C9E,
-	0x8826, 0x8001,
-	0x8828, 0x8004,
-	0x882A, 0x2010,
-	0x882C, 0x2010,
-	0x882E, 0x0005,
-	0x8830, 0x00A0,
-	0x8832, 0x2810,
-	0x8834, 0x2810,
-	0x8836, 0xFFFF,
-	0x8838, 0x0010,
-	0x883A, 0x2401,
-	0x883C, 0x1CC6,
-	0x883E, 0x8001,
-	0x8840, 0x8004,
-	0x8842, 0x2010,
-	0x8844, 0x2010,
-	0x8846, 0x0005,
-	0x8848, 0x00A0,
-	0x884A, 0x2810,
-	0x884C, 0x2810,
-	0x884E, 0xFFFF,
-	0x8850, 0x0020,
-	0x8852, 0x2401,
-	0x8854, 0x1CEE,
-	0x8856, 0x8001,
-	0x8858, 0x8004,
-	0x885A, 0x0010,
-	0x885C, 0x0010,
-	0x885E, 0x0005,
-	0x8860, 0x00A0,
-	0x8862, 0x2810,
-	0x8864, 0x2810,
-	0x8866, 0x0000,
-	0x8868, 0x0000,
-	0x886A, 0x0000,
-	0x886C, 0x0000,
-	0x886E, 0x0000,
-	0x8870, 0x0000,
-	0x8872, 0x0000,
-	0x8874, 0x0000,
-	0x8876, 0xFFFF,
-	0x8878, 0x0020,
-	0x887A, 0x2401,
-	0x887C, 0x1D16,
-	0x887E, 0x8001,
-	0x8880, 0x8004,
-	0x8882, 0x2010,
-	0x8884, 0x2010,
-	0x8886, 0x0005,
-	0x8888, 0x00A0,
-	0x888A, 0x2810,
-	0x888C, 0x2810,
-	0x888E, 0x0000,
-	0x8890, 0x0000,
-	0x8892, 0x0000,
-	0x8894, 0x0000,
-	0x8896, 0x0000,
-	0x8898, 0x0000,
-	0x889A, 0x0000,
-	0x889C, 0x0000,
-	0x889E, 0xFFFF,
-	0x88A0, 0x0010,
-	0x88A2, 0x2401,
-	0x88A4, 0x1D3E,
-	0x88A6, 0x8001,
-	0x88A8, 0x8004,
-	0x88AA, 0x2010,
-	0x88AC, 0x2010,
-	0x88AE, 0x0005,
-	0x88B0, 0x00A0,
-	0x88B2, 0x2810,
-	0x88B4, 0x2810,
-	0x88B6, 0xFFFF,
-	0x88B8, 0x0010,
-	0x88BA, 0x2402,
-	0x88BC, 0xA548,
-	0x88BE, 0x0000,
-	0x88C0, 0x0000,
-	0x88C2, 0x0000,
-	0x88C4, 0x0000,
-	0x88C6, 0x0000,
-	0x88C8, 0x0000,
-	0x88CA, 0x0000,
-	0x88CC, 0x0000,
-	0x88CE, 0xFFFF,
-	0x88D0, 0x0010,
-	0x88D2, 0x2402,
-	0x88D4, 0xA55C,
-	0x88D6, 0x0000,
-	0x88D8, 0x0000,
-	0x88DA, 0x0000,
-	0x88DC, 0x0000,
-	0x88DE, 0x0000,
-	0x88E0, 0x0000,
-	0x88E2, 0x0000,
-	0x88E4, 0x0000,
-	0x88E6, 0xFFFF,
-	0x88E8, 0x002C,
-	0x88EA, 0x2402,
-	0x88EC, 0xA574,
-	0x88EE, 0x0100,
-	0x88F0, 0x4000,
-	0x88F2, 0x8000,
-	0x88F4, 0xA000,
-	0x88F6, 0x4001,
-	0x88F8, 0x8002,
-	0x88FA, 0x0005,
-	0x88FC, 0x000A,
-	0x88FE, 0xA00F,
-	0x8900, 0x4011,
-	0x8902, 0x0E00,
-	0x8904, 0x2000,
-	0x8906, 0x2800,
-	0x8908, 0x1400,
-	0x890A, 0x2200,
-	0x890C, 0x2800,
-	0x890E, 0x2C00,
-	0x8910, 0x2E00,
-	0x8912, 0x3200,
-	0x8914, 0x3800,
-	0x8916, 0xA2FD,
-	0x8918, 0xFEFE,
-	0x891A, 0xFFFF,
-	0x891C, 0x0008,
-	0x891E, 0x2400,
-	0x8920, 0x0260,
-	0x8922, 0x0001,
-	0x8924, 0x0000,
-	0x8926, 0x0006,
-	0x8928, 0x0700,
-	0x892A, 0xFFFF,
-	0x892C, 0x0008,
-	0x892E, 0x2400,
-	0x8930, 0x030C,
-	0x8932, 0x0000,
-	0x8934, 0x0300,
-	0x8936, 0xCF00,
-	0x8938, 0x0000,
-	0x893A, 0xFFFF,
-	0x893C, 0x0010,
-	0x893E, 0x2400,
-	0x8940, 0x0344,
-	0x8942, 0x0000,
-	0x8944, 0x0000,
-	0x8946, 0x1F20,
-	0x8948, 0x1F18,
-	0x894A, 0x0010,
-	0x894C, 0x000C,
-	0x894E, 0x0800,
-	0x8950, 0x0800,
-	0x8952, 0xFFFF,
-	0x8954, 0x0008,
-	0x8956, 0x2400,
-	0x8958, 0x0380,
-	0x895A, 0x0200,
-	0x895C, 0x0200,
-	0x895E, 0x0200,
-	0x8960, 0x0200,
-	0x8962, 0xFFFF,
-	0x8964, 0x0008,
-	0x8966, 0x2400,
-	0x8968, 0x0728,
-	0x896A, 0x0000,
-	0x896C, 0x0000,
-	0x896E, 0x0000,
-	0x8970, 0x0000,
-	0x8972, 0xFFFF,
-	0x8974, 0x000C,
-	0x8976, 0x2400,
-	0x8978, 0x0B02,
-	0x897A, 0x0102,
-	0x897C, 0x0001,
-	0x897E, 0x0101,
-	0x8980, 0x0100,
-	0x8982, 0x0101,
-	0x8984, 0x0100,
-	0x8986, 0x0000,
-	0x8988, 0x0000,
-	0x898A, 0xFFFE,
-	0x898C, 0x2400,
-	0x898E, 0xFFFD,
-	0x8990, 0xD49C,
-	0x8992, 0x0021,
-	0x8994, 0xD4B0,
-	0x8996, 0x0386,
-	0x8998, 0xD4BC,
-	0x899A, 0x0037,
-	0x899C, 0xD4D0,
-	0x899E, 0x000A,
-	0x89A0, 0xD4E2,
-	0x89A2, 0x0000,
-	0x89A4, 0xD556,
-	0x89A6, 0x00C4,
-	0x89A8, 0xD562,
-	0x89AA, 0x0352,
-	0x89AC, 0xF014,
-	0x89AE, 0x0000,
-	0x89B0, 0xFFFE,
-	0x89B2, 0x2401,
-	0x89B4, 0xFFFD,
-	0x89B6, 0x1E16,
-	0x89B8, 0x0000,
-	0x89BA, 0x1E1E,
-	0x89BC, 0x0000,
-	0x89BE, 0x1E56,
-	0x89C0, 0x0000,
-	0x89C2, 0x1E5E,
-	0x89C4, 0x0000,
-	0x89C6, 0xFFFE,
-	0x89C8, 0x2400,
-	0x89CA, 0xFFFD,
-	0x89CC, 0x0260,
-	0x89CE, 0x0001,
-	0x89D0, 0x0264,
-	0x89D2, 0x0602,
-	0x89D4, 0x0346,
-	0x89D6, 0x0300,
-	0x89D8, 0x034A,
-	0x89DA, 0x151F,
-	0x89DC, 0x034E,
-	0x89DE, 0x0900,
-	0x89E0, 0x0E00,
-	0x89E2, 0x0302,
-	0x89E4, 0x0342,
-	0x89E6, 0x17B0,
-	0x89E8, 0x0000,
-	0x89EA, 0x0000,
-	0x89EC, 0x0000,
-	0x89EE, 0xFFFE,
-	0x89F0, 0x2400,
-	0x89F2, 0xFFFD,
-	0x89F4, 0xD49C,
-	0x89F6, 0x0022,
-	0x89F8, 0xD4A8,
-	0x89FA, 0x0000,
-	0x89FC, 0xD4B0,
-	0x89FE, 0x046A,
-	0x8A00, 0xD4BC,
-	0x8A02, 0x0062,
-	0x8A04, 0xD4D0,
-	0x8A06, 0x000A,
-	0x8A08, 0xD4E2,
-	0x8A0A, 0x0036,
-	0x8A0C, 0xD556,
-	0x8A0E, 0x00FA,
-	0x8A10, 0xD562,
-	0x8A12, 0x0388,
-	0x8A14, 0xFFFE,
-	0x8A16, 0x2401,
-	0x8A18, 0xFFFD,
-	0x8A1A, 0x1DF2,
-	0x8A1C, 0x0009,
-	0x8A1E, 0x1DF6,
-	0x8A20, 0x0009,
-	0x8A22, 0x1DFA,
-	0x8A24, 0x0009,
-	0x8A26, 0x1DFE,
-	0x8A28, 0x0009,
-	0x8A2A, 0x1E12,
-	0x8A2C, 0x000C,
-	0x8A2E, 0x1E16,
-	0x8A30, 0x000C,
-	0x8A32, 0x1E1A,
-	0x8A34, 0x000C,
-	0x8A36, 0x1E1E,
-	0x8A38, 0x000C,
-	0x8A3A, 0x1E32,
-	0x8A3C, 0x0009,
-	0x8A3E, 0x1E36,
-	0x8A40, 0x0009,
-	0x8A42, 0x1E3A,
-	0x8A44, 0x0009,
-	0x8A46, 0x1E3E,
-	0x8A48, 0x0009,
-	0x8A4A, 0x1E52,
-	0x8A4C, 0x000C,
-	0x8A4E, 0x1E56,
-	0x8A50, 0x000C,
-	0x8A52, 0x1E5A,
-	0x8A54, 0x000C,
-	0x8A56, 0x1E5E,
-	0x8A58, 0x000C,
-	0x8A5A, 0x2A44,
-	0x8A5C, 0x0952,
-	0x8A5E, 0xFFFE,
-	0x8A60, 0x2400,
-	0x8A62, 0xFFFD,
-	0x8A64, 0x0346,
-	0x8A66, 0x0300,
-	0x8A68, 0x034A,
-	0x8A6A, 0x151F,
-	0x8A6C, 0x034E,
-	0x8A6E, 0x0900,
-	0x8A70, 0x0000,
-	0x8A72, 0x0000,
-	0x8A74, 0x0000,
-	0xFCFC, 0x4000,
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_long_1.2f_0723.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_long_1.2f_0723.txt
deleted file mode 100755
index 9afd3ebd..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_long_1.2f_0723.txt
+++ /dev/null
@@ -1,6290 +0,0 @@
-FCFC	4000
-0000	000C
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0101
-FCFC	2001
-3C60	0000
-FCFC	2002
-A614	8280
-A616	0100
-A618	1753
-A61A	02FC
-A61C	E702
-A61E	83EA
-A620	B7E7
-A622	0124
-A624	9387
-A626	0787
-A628	83A4
-A62A	870D
-A62C	03A4
-A62E	C70D
-A630	0146
-A632	A685
-A634	2285
-A636	9740
-A638	01FC
-A63A	E780
-A63C	E040
-A63E	97B0
-A640	FEFB
-A642	E780
-A644	60DC
-A646	0546
-A648	A685
-A64A	2285
-A64C	9740
-A64E	01FC
-A650	E780
-A652	803F
-A654	37A7
-A656	0224
-A658	9307
-A65A	8754
-A65C	03C6
-A65E	C702
-A660	8546
-A662	6301
-A664	D602
-A666	83C6
-A668	0700
-A66A	0947
-A66C	6384
-A66E	E608
-A670	B7C7
-A672	0224
-A674	83A7
-A676	07B7
-A678	0545
-A67A	8297
-A67C	1753
-A67E	02FC
-A680	6700
-A682	83E6
-A684	03D5
-A686	4705
-A688	05C9
-A68A	83D8
-A68C	2705
-A68E	B7E6
-A690	0124
-A692	83D5
-A694	665F
-A696	1307
-A698	8754
-A69A	8146
-A69C	2548
-A69E	0356
-A6A0	E702
-A6A2	0907
-A6A4	63E0
-A6A6	C50E
-A6A8	8506
-A6AA	E39A
-A6AC	06FF
-A6AE	3707
-A6B0	0040
-A6B2	3A95
-A6B4	2310
-A6B6	1501
-A6B8	03D5
-A6BA	6705
-A6BC	4DD5
-A6BE	83D8
-A6C0	2705
-A6C2	37E7
-A6C4	0124
-A6C6	8355
-A6C8	675F
-A6CA	BE86
-A6CC	0147
-A6CE	2548
-A6D0	03D6
-A6D2	E602
-A6D4	8906
-A6D6	63EE
-A6D8	C50A
-A6DA	0507
-A6DC	E31A
-A6DE	07FF
-A6E0	3707
-A6E2	0040
-A6E4	3A95
-A6E6	2310
-A6E8	1501
-A6EA	83C6
-A6EC	0700
-A6EE	0947
-A6F0	E390
-A6F2	E6F8
-A6F4	03D5
-A6F6	8702
-A6F8	1DC5
-A6FA	83D8
-A6FC	6702
-A6FE	37F7
-A700	0124
-A702	8355
-A704	A781
-A706	BE86
-A708	0147
-A70A	2548
-A70C	03D6
-A70E	2600
-A710	8906
-A712	63E3
-A714	C506
-A716	0507
-A718	E31A
-A71A	07FF
-A71C	3707
-A71E	0040
-A720	3A95
-A722	2310
-A724	1501
-A726	03D5
-A728	A702
-A72A	39D1
-A72C	83D8
-A72E	6702
-A730	37F7
-A732	0124
-A734	8355
-A736	A781
-A738	BE86
-A73A	0147
-A73C	2548
-A73E	03D6
-A740	2600
-A742	8906
-A744	63E4
-A746	C502
-A748	0507
-A74A	E31A
-A74C	07FF
-A74E	B707
-A750	0040
-A752	3E95
-A754	B7C7
-A756	0224
-A758	83A7
-A75A	07B7
-A75C	2310
-A75E	1501
-A760	0545
-A762	8297
-A764	1753
-A766	02FC
-A768	6700
-A76A	03D8
-A76C	2107
-A76E	0607
-A770	BA97
-A772	83D8
-A774	4700
-A776	E1BF
-A778	2107
-A77A	0607
-A77C	3E97
-A77E	8358
-A780	4700
-A782	69BF
-A784	1387
-A786	0602
-A788	0607
-A78A	3E97
-A78C	8358
-A78E	0700
-A790	39BF
-A792	1307
-A794	0702
-A796	0607
-A798	3E97
-A79A	8358
-A79C	0700
-A79E	89B7
-A7A0	1753
-A7A2	02FC
-A7A4	E702
-A7A6	83CF
-A7A8	3284
-A7AA	B7E7
-A7AC	0124
-A7AE	032B
-A7B0	4600
-A7B2	832A
-A7B4	4609
-A7B6	032A
-A7B8	C604
-A7BA	0348
-A7BC	8600
-A7BE	9387
-A7C0	0787
-A7C2	0346
-A7C4	8609
-A7C6	0347
-A7C8	0405
-A7CA	83AB
-A7CC	070E
-A7CE	03AC
-A7D0	470E
-A7D2	3318
-A7D4	0B01
-A7D6	3317
-A7D8	EA00
-A7DA	3396
-A7DC	CA00
-A7DE	2322
-A7E0	0401
-A7E2	78C4
-A7E4	AA84
-A7E6	2E89
-A7E8	232A
-A7EA	C408
-A7EC	DE85
-A7EE	6285
-A7F0	0146
-A7F2	B689
-A7F4	9740
-A7F6	01FC
-A7F8	E780
-A7FA	0025
-A7FC	CE86
-A7FE	2286
-A800	CA85
-A802	2685
-A804	97B0
-A806	FDFB
-A808	E780
-A80A	00B0
-A80C	6285
-A80E	0546
-A810	DE85
-A812	9740
-A814	01FC
-A816	E780
-A818	2023
-A81A	B7C7
-A81C	0224
-A81E	83A7
-A820	07B7
-A822	2322
-A824	6401
-A826	232A
-A828	5409
-A82A	2326
-A82C	4405
-A82E	0145
-A830	8297
-A832	1753
-A834	02FC
-A836	6700
-A838	E3C9
-A83A	0100
-A83C	1753
-A83E	02FC
-A840	E702
-A842	43C8
-A844	2A84
-A846	EFE0
-A848	EFA9
-A84A	A147
-A84C	6306
-A84E	F400
-A850	1753
-A852	02FC
-A854	6700
-A856	43C9
-A858	9770
-A85A	FFFB
-A85C	E780
-A85E	000C
-A860	39C5
-A862	B737
-A864	0124
-A866	83C7
-A868	271A
-A86A	FDD3
-A86C	3784
-A86E	0040
-A870	8355
-A872	E4F3
-A874	0D45
-A876	93E5
-A878	0524
-A87A	97D0
-A87C	FFFB
-A87E	E780
-A880	A00A
-A882	8355
-A884	24F7
-A886	B7A7
-A888	0124
-A88A	9387
-A88C	0753
-A88E	03D7
-A890	47B6
-A892	C205
-A894	C181
-A896	1377
-A898	F7DB
-A89A	93F5
-A89C	F5DB
-A89E	4145
-A8A0	2392
-A8A2	E7B6
-A8A4	97D0
-A8A6	FFFB
-A8A8	E780
-A8AA	0008
-A8AC	55B7
-A8AE	9770
-A8B0	FFFB
-A8B2	E780
-A8B4	A003
-A8B6	55D5
-A8B8	9770
-A8BA	FFFB
-A8BC	E780
-A8BE	807D
-A8C0	19C9
-A8C2	B797
-A8C4	0124
-A8C6	9387
-A8C8	07D7
-A8CA	03C7
-A8CC	8703
-A8CE	83C7
-A8D0	2706
-A8D2	6306
-A8D4	F706
-A8D6	9770
-A8D8	FFFB
-A8DA	E780
-A8DC	A07B
-A8DE	51D1
-A8E0	B797
-A8E2	0124
-A8E4	9387
-A8E6	07D7
-A8E8	03C7
-A8EA	C701
-A8EC	83C7
-A8EE	2706
-A8F0	E319
-A8F2	F7F6
-A8F4	B727
-A8F6	0224
-A8F8	0564
-A8FA	9387
-A8FC	076B
-A8FE	A297
-A900	03C7
-A902	F780
-A904	8547
-A906	6317
-A908	F700
-A90A	B737
-A90C	0124
-A90E	83C7
-A910	57A5
-A912	B1C3
-A914	B787
-A916	0040
-A918	83D5
-A91A	E7F3
-A91C	0D45
-A91E	93E5
-A920	0501
-A922	97D0
-A924	FFFB
-A926	E780
-A928	2000
-A92A	B7A7
-A92C	0124
-A92E	9387
-A930	0753
-A932	03D7
-A934	47B6
-A936	3D9B
-A938	2392
-A93A	E7B6
-A93C	1DB7
-A93E	B727
-A940	0224
-A942	0564
-A944	9387
-A946	076B
-A948	A297
-A94A	03C7
-A94C	F780
-A94E	9147
-A950	E30D
-A952	F7FA
-A954	C1B7
-A956	B787
-A958	0040
-A95A	83D5
-A95C	E7F3
-A95E	0D45
-A960	93E5
-A962	0504
-A964	97D0
-A966	FFFB
-A968	E780
-A96A	00FC
-A96C	B797
-A96E	0124
-A970	9387
-A972	0753
-A974	A297
-A976	03D7
-A978	47B6
-A97A	1377
-A97C	F7FB
-A97E	2392
-A980	E7B6
-A982	C5B5
-A984	3571
-A986	22CF
-A988	26CD
-A98A	7324
-A98C	2034
-A98E	F324
-A990	1034
-A992	7360
-A994	0430
-A996	06CB
-A998	16C9
-A99A	1AC7
-A99C	1EC5
-A99E	2AC3
-A9A0	2EC1
-A9A2	B2DE
-A9A4	B6DC
-A9A6	BADA
-A9A8	BED8
-A9AA	C2D6
-A9AC	C6D4
-A9AE	F2D2
-A9B0	F6D0
-A9B2	FACE
-A9B4	FECC
-A9B6	82E2
-A9B8	86E0
-A9BA	0AFE
-A9BC	0EFC
-A9BE	12FA
-A9C0	16F8
-A9C2	1AF6
-A9C4	1EF4
-A9C6	2AF2
-A9C8	2EF0
-A9CA	32EE
-A9CC	36EC
-A9CE	3AEA
-A9D0	3EE8
-A9D2	42E6
-A9D4	46E4
-A9D6	72E2
-A9D8	76E0
-A9DA	272E
-A9DC	E1FF
-A9DE	272C
-A9E0	F1FF
-A9E2	9770
-A9E4	FFFB
-A9E6	E780
-A9E8	60F3
-A9EA	19C5
-A9EC	9770
-A9EE	FFFB
-A9F0	E780
-A9F2	C0EF
-A9F4	631C
-A9F6	0512
-A9F8	9305
-A9FA	0024
-A9FC	4145
-A9FE	97D0
-AA00	FFFB
-AA02	E780
-AA04	60F9
-AA06	8145
-AA08	9377
-AA0A	1500
-AA0C	85C7
-AA0E	37D7
-AA10	0124
-AA12	B7A7
-AA14	0124
-AA16	1307
-AA18	07C4
-AA1A	9387
-AA1C	0753
-AA1E	0356
-AA20	4707
-AA22	83D6
-AA24	A7B6
-AA26	0506
-AA28	93E6
-AA2A	1600
-AA2C	231A
-AA2E	C706
-AA30	2395
-AA32	D7B6
-AA34	9377
-AA36	2500
-AA38	85C7
-AA3A	37D7
-AA3C	0124
-AA3E	B7A7
-AA40	0124
-AA42	1307
-AA44	07C4
-AA46	9387
-AA48	0753
-AA4A	0356
-AA4C	C70C
-AA4E	83D6
-AA50	A7B6
-AA52	0506
-AA54	93E6
-AA56	2600
-AA58	2316
-AA5A	C70C
-AA5C	2395
-AA5E	D7B6
-AA60	9377
-AA62	0520
-AA64	1375
-AA66	0504
-AA68	C5C3
-AA6A	B7D7
-AA6C	0124
-AA6E	9387
-AA70	07C4
-AA72	03D7
-AA74	6708
-AA76	0507
-AA78	2393
-AA7A	E708
-AA7C	D1C5
-AA7E	37A7
-AA80	0124
-AA82	1307
-AA84	0753
-AA86	8356
-AA88	A7B6
-AA8A	93E6
-AA8C	0620
-AA8E	2315
-AA90	D7B6
-AA92	11C9
-AA94	03D6
-AA96	A708
-AA98	0506
-AA9A	2395
-AA9C	C708
-AA9E	93E6
-AAA0	0604
-AAA2	2315
-AAA4	D7B6
-AAA6	DA40
-AAA8	CA42
-AAAA	3A43
-AAAC	AA43
-AAAE	1A45
-AAB0	8A45
-AAB2	7656
-AAB4	E656
-AAB6	5657
-AAB8	C657
-AABA	3658
-AABC	A658
-AABE	165E
-AAC0	865E
-AAC2	764F
-AAC4	E64F
-AAC6	1660
-AAC8	8660
-AACA	7271
-AACC	E271
-AACE	5272
-AAD0	C272
-AAD2	3273
-AAD4	A273
-AAD6	1275
-AAD8	8275
-AADA	7266
-AADC	E266
-AADE	5267
-AAE0	C267
-AAE2	3268
-AAE4	A268
-AAE6	126E
-AAE8	826E
-AAEA	072F
-AAEC	C1FF
-AAEE	872F
-AAF0	81FF
-AAF2	7370
-AAF4	0430
-AAF6	7390
-AAF8	1434
-AAFA	7310
-AAFC	2434
-AAFE	7A44
-AB00	EA44
-AB02	0D61
-AB04	7300
-AB06	2030
-AB08	59DD
-AB0A	B7D7
-AB0C	0124
-AB0E	9387
-AB10	07C4
-AB12	03D7
-AB14	A708
-AB16	0507
-AB18	2395
-AB1A	E708
-AB1C	C9D5
-AB1E	37A7
-AB20	0124
-AB22	1307
-AB24	0753
-AB26	8356
-AB28	A7B6
-AB2A	95BF
-AB2C	B7A7
-AB2E	0124
-AB30	83D5
-AB32	8709
-AB34	4145
-AB36	97D0
-AB38	FFFB
-AB3A	E780
-AB3C	E0E5
-AB3E	8545
-AB40	E1B5
-AB42	0100
-AB44	8280
-AB46	0100
-AB48	1753
-AB4A	02FC
-AB4C	E702
-AB4E	8397
-AB50	37E4
-AB52	0124
-AB54	1304
-AB56	044C
-AB58	8344
-AB5A	E40A
-AB5C	8547
-AB5E	2307
-AB60	F40A
-AB62	97A0
-AB64	FDFB
-AB66	E780
-AB68	20E3
-AB6A	2307
-AB6C	940A
-AB6E	1753
-AB70	02FC
-AB72	6700
-AB74	6397
-AB76	0100
-AB78	B7A7
-AB7A	0224
-AB7C	83C7
-AB7E	075A
-AB80	0547
-AB82	6383
-AB84	E700
-AB86	8280
-AB88	1753
-AB8A	02FC
-AB8C	E702
-AB8E	E391
-AB90	3794
-AB92	0124
-AB94	1304
-AB96	0453
-AB98	0347
-AB9A	041B
-AB9C	4111
-AB9E	6307
-ABA0	F700
-ABA2	4101
-ABA4	1753
-ABA6	02FC
-ABA8	6700
-ABAA	6393
-ABAC	8947
-ABAE	E31A
-ABB0	F5FE
-ABB2	8347
-ABB4	3441
-ABB6	ADC3
-ABB8	83A9
-ABBA	0500
-ABBC	2EC6
-ABBE	97C0
-ABC0	01FC
-ABC2	E780
-ABC4	20B8
-ABC6	AA84
-ABC8	9780
-ABCA	01FC
-ABCC	E780
-ABCE	80C7
-ABD0	B245
-ABD2	2A89
-ABD4	9C41
-ABD6	63F3
-ABD8	9700
-ABDA	A687
-ABDC	8851
-ABDE	9CC1
-ABE0	2EC6
-ABE2	4A95
-ABE4	97B0
-ABE6	00FC
-ABE8	E780
-ABEA	00C5
-ABEC	B245
-ABEE	AA84
-ABF0	E8C9
-ABF2	3385
-ABF4	2901
-ABF6	97B0
-ABF8	00FC
-ABFA	E780
-ABFC	E0C3
-ABFE	8567
-AC00	3E94
-AC02	8327
-AC04	C483
-AC06	2695
-AC08	B245
-AC0A	63F3
-AC0C	A700
-AC0E	AA87
-AC10	2322
-AC12	F498
-AC14	E8C5
-AC16	71B7
-AC18	0145
-AC1A	2EC6
-AC1C	97B0
-AC1E	01FC
-AC20	E780
-AC22	8035
-AC24	B245
-AC26	AA89
-AC28	51BF
-AC2A	0100
-AC2C	1753
-AC2E	02FC
-AC30	E702
-AC32	4389
-AC34	2A84
-AC36	EFE0
-AC38	AFFC
-AC3A	01E8
-AC3C	B7D7
-AC3E	0124
-AC40	03A7
-AC42	87C1
-AC44	9147
-AC46	6306
-AC48	F700
-AC4A	1753
-AC4C	02FC
-AC4E	6700
-AC50	A389
-AC52	B7D7
-AC54	0124
-AC56	83C7
-AC58	07FA
-AC5A	E5DB
-AC5C	B747
-AC5E	0124
-AC60	83C7
-AC62	27C4
-AC64	FDF3
-AC66	97E0
-AC68	00FC
-AC6A	E780
-AC6C	A097
-AC6E	B787
-AC70	0224
-AC72	0547
-AC74	A380
-AC76	E74E
-AC78	C9BF
-AC7A	0100
-AC7C	1753
-AC7E	02FC
-AC80	E702
-AC82	4384
-AC84	3784
-AC86	0224
-AC88	1304
-AC8A	C449
-AC8C	8347
-AC8E	5404
-AC90	99E7
-AC92	EFE0
-AC94	7F82
-AC96	1753
-AC98	02FC
-AC9A	6700
-AC9C	E384
-AC9E	97E0
-ACA0	00FC
-ACA2	E780
-ACA4	20AF
-ACA6	A302
-ACA8	0404
-ACAA	EFE0
-ACAC	FF80
-ACAE	1753
-ACB0	02FC
-ACB2	6700
-ACB4	6383
-ACB6	0100
-ACB8	1753
-ACBA	02FC
-ACBC	E702
-ACBE	8380
-ACC0	B7E7
-ACC2	0124
-ACC4	9387
-ACC6	0787
-ACC8	03A9
-ACCA	870E
-ACCC	83A4
-ACCE	C70E
-ACD0	0146
-ACD2	CA85
-ACD4	2A84
-ACD6	2685
-ACD8	9740
-ACDA	01FC
-ACDC	E780
-ACDE	C0D6
-ACE0	2285
-ACE2	97A0
-ACE4	FFFB
-ACE6	E780
-ACE8	603E
-ACEA	0546
-ACEC	CA85
-ACEE	2685
-ACF0	9740
-ACF2	01FC
-ACF4	E780
-ACF6	40D5
-ACF8	8547
-ACFA	630F
-ACFC	F400
-ACFE	9147
-AD00	630C
-AD02	F400
-AD04	B7C7
-AD06	0224
-AD08	83A7
-AD0A	07B7
-AD0C	0945
-AD0E	8297
-AD10	1743
-AD12	02FC
-AD14	6700
-AD16	437D
-AD18	9770
-AD1A	FFFB
-AD1C	E780
-AD1E	00C0
-AD20	75F1
-AD22	9770
-AD24	FFFB
-AD26	E780
-AD28	60BC
-AD2A	69DD
-AD2C	9770
-AD2E	FFFB
-AD30	E780
-AD32	4036
-AD34	19C9
-AD36	B797
-AD38	0124
-AD3A	9387
-AD3C	07D7
-AD3E	03C7
-AD40	8703
-AD42	83C7
-AD44	2706
-AD46	6306
-AD48	F706
-AD4A	9770
-AD4C	FFFB
-AD4E	E780
-AD50	6034
-AD52	4DD9
-AD54	B797
-AD56	0124
-AD58	9387
-AD5A	07D7
-AD5C	03C7
-AD5E	C701
-AD60	83C7
-AD62	2706
-AD64	E310
-AD66	F7FA
-AD68	B7C7
-AD6A	0224
-AD6C	83A7
-AD6E	47B7
-AD70	B706
-AD72	0040
-AD74	1386
-AD76	4606
-AD78	8965
-AD7A	3E96
-AD7C	1387
-AD7E	061F
-AD80	9385
-AD82	F5F1
-AD84	2310
-AD86	B600
-AD88	3E97
-AD8A	7D56
-AD8C	2310
-AD8E	C700
-AD90	37D6
-AD92	0124
-AD94	1306
-AD96	06E7
-AD98	0357
-AD9A	C605
-AD9C	0356
-AD9E	6606
-ADA0	9386
-ADA2	861D
-ADA4	3297
-ADA6	4207
-ADA8	B697
-ADAA	4183
-ADAC	2390
-ADAE	E700
-ADB0	91BF
-ADB2	B7C7
-ADB4	0224
-ADB6	83A7
-ADB8	47B7
-ADBA	B706
-ADBC	0040
-ADBE	1386
-ADC0	4606
-ADC2	8965
-ADC4	3E96
-ADC6	1387
-ADC8	061F
-ADCA	9385
-ADCC	F5F1
-ADCE	2310
-ADD0	B600
-ADD2	3E97
-ADD4	7D56
-ADD6	2310
-ADD8	C700
-ADDA	37D6
-ADDC	0124
-ADDE	1306
-ADE0	06E7
-ADE2	0357
-ADE4	0606
-ADE6	9386
-ADE8	A61D
-ADEA	0356
-ADEC	6606
-ADEE	5DBF
-ADF0	1743
-ADF2	02FC
-ADF4	E702
-ADF6	036D
-ADF8	B7D7
-ADFA	0024
-ADFC	83C7
-ADFE	476D
-AE00	8544
-AE02	6380
-AE04	9714
-AE06	B7E7
-AE08	0024
-AE0A	03C4
-AE0C	C784
-AE0E	B7A7
-AE10	0124
-AE12	83C7
-AE14	6792
-AE16	3334
-AE18	8000
-AE1A	3304
-AE1C	8040
-AE1E	7998
-AE20	1304
-AE22	6402
-AE24	EDE7
-AE26	B767
-AE28	0024
-AE2A	9387
-AE2C	0733
-AE2E	03D7
-AE30	E75B
-AE32	19C7
-AE34	1347
-AE36	F7FF
-AE38	618F
-AE3A	1314
-AE3C	0701
-AE3E	4180
-AE40	83D7
-AE42	075C
-AE44	0D45
-AE46	5D8C
-AE48	4204
-AE4A	4180
-AE4C	A285
-AE4E	97D0
-AE50	FFFB
-AE52	E780
-AE54	A0BB
-AE56	9315
-AE58	0501
-AE5A	C181
-AE5C	AA84
-AE5E	6309
-AE60	B400
-AE62	0565
-AE64	A18D
-AE66	2D05
-AE68	97A0
-AE6A	FFFB
-AE6C	E780
-AE6E	8046
-AE70	1395
-AE72	0401
-AE74	93F7
-AE76	1400
-AE78	4181
-AE7A	91CB
-AE7C	B7D7
-AE7E	0124
-AE80	9387
-AE82	07C4
-AE84	03D7
-AE86	4707
-AE88	0507
-AE8A	239A
-AE8C	E706
-AE8E	9377
-AE90	2500
-AE92	91CB
-AE94	B7D7
-AE96	0124
-AE98	9387
-AE9A	07C4
-AE9C	03D7
-AE9E	C70C
-AEA0	0507
-AEA2	2396
-AEA4	E70C
-AEA6	9377
-AEA8	4500
-AEAA	91CB
-AEAC	B7D7
-AEAE	0124
-AEB0	9387
-AEB2	07C4
-AEB4	03D7
-AEB6	E70C
-AEB8	0507
-AEBA	2397
-AEBC	E70C
-AEBE	9377
-AEC0	0502
-AEC2	91CB
-AEC4	B7D7
-AEC6	0124
-AEC8	9387
-AECA	07C4
-AECC	03D7
-AECE	070F
-AED0	0507
-AED2	2398
-AED4	E70E
-AED6	9377
-AED8	0520
-AEDA	91CB
-AEDC	B7D7
-AEDE	0124
-AEE0	9387
-AEE2	07C4
-AEE4	03D7
-AEE6	6708
-AEE8	0507
-AEEA	2393
-AEEC	E708
-AEEE	1375
-AEF0	0504
-AEF2	11C9
-AEF4	B7D7
-AEF6	0124
-AEF8	9387
-AEFA	07C4
-AEFC	03D7
-AEFE	A708
-AF00	0507
-AF02	2395
-AF04	E708
-AF06	1743
-AF08	02FC
-AF0A	6700
-AF0C	E35D
-AF0E	B7D7
-AF10	0124
-AF12	83D7
-AF14	A7E7
-AF16	81DB
-AF18	9760
-AF1A	FEFB
-AF1C	E780
-AF1E	8068
-AF20	6311
-AF22	9506
-AF24	B797
-AF26	0124
-AF28	9387
-AF2A	07D7
-AF2C	03C7
-AF2E	C701
-AF30	83C7
-AF32	2706
-AF34	6307
-AF36	F704
-AF38	1364
-AF3A	0424
-AF3C	4204
-AF3E	4180
-AF40	11A0
-AF42	0144
-AF44	B767
-AF46	0024
-AF48	9387
-AF4A	0733
-AF4C	03C7
-AF4E	273B
-AF50	E30F
-AF52	07EC
-AF54	37A7
-AF56	0124
-AF58	0347
-AF5A	6792
-AF5C	E309
-AF5E	07EC
-AF60	37D7
-AF62	0124
-AF64	0357
-AF66	A7E7
-AF68	E303
-AF6A	07EC
-AF6C	3797
-AF6E	0124
-AF70	0347
-AF72	1700
-AF74	E30D
-AF76	07EA
-AF78	1374
-AF7A	F4DF
-AF7C	4204
-AF7E	4180
-AF80	7DB5
-AF82	9760
-AF84	FEFB
-AF86	E780
-AF88	E061
-AF8A	8547
-AF8C	E31C
-AF8E	F5FA
-AF90	B797
-AF92	0124
-AF94	9387
-AF96	07D7
-AF98	03C7
-AF9A	C701
-AF9C	83C7
-AF9E	2706
-AFA0	E312
-AFA2	F7FA
-AFA4	1364
-AFA6	0420
-AFA8	4204
-AFAA	4180
-AFAC	61BF
-AFAE	0100
-AFB0	7171
-AFB2	22D7
-AFB4	26D5
-AFB6	7324
-AFB8	2034
-AFBA	F324
-AFBC	1034
-AFBE	7360
-AFC0	0430
-AFC2	2EC5
-AFC4	A565
-AFC6	BEDC
-AFC8	06D3
-AFCA	16D1
-AFCC	1ACF
-AFCE	1ECD
-AFD0	22CB
-AFD2	2AC7
-AFD4	32C3
-AFD6	36C1
-AFD8	BADE
-AFDA	C2DA
-AFDC	C6D8
-AFDE	F2D0
-AFE0	F6CE
-AFE2	FACC
-AFE4	FECA
-AFE6	82E2
-AFE8	86E0
-AFEA	0AFE
-AFEC	0EFC
-AFEE	12FA
-AFF0	16F8
-AFF2	1AF6
-AFF4	1EF4
-AFF6	2AF2
-AFF8	2EF0
-AFFA	32EE
-AFFC	26C9
-AFFE	CAD6
-B000	CED4
-B002	D2D2
-B004	9385
-B006	0540
-B008	0545
-B00A	36EC
-B00C	3AEA
-B00E	3EE8
-B010	42E6
-B012	46E4
-B014	72E2
-B016	76E0
-B018	272E
-B01A	E1FF
-B01C	272C
-B01E	F1FF
-B020	97D0
-B022	FFFB
-B024	E780
-B026	4097
-B028	A167
-B02A	E98F
-B02C	2A84
-B02E	6394
-B030	0718
-B032	B764
-B034	0124
-B036	9384
-B038	0440
-B03A	8567
-B03C	E18F
-B03E	CDCF
-B040	37D7
-B042	0124
-B044	3789
-B046	0224
-B048	1307
-B04A	07C4
-B04C	1309
-B04E	C949
-B050	8356
-B052	670E
-B054	8327
-B056	0905
-B058	8506
-B05A	8507
-B05C	2328
-B05E	F904
-B060	2313
-B062	D70E
-B064	858B
-B066	639F
-B068	071A
-B06A	8547
-B06C	A30A
-B06E	F904
-B070	9770
-B072	FFFB
-B074	E780
-B076	00FF
-B078	19C5
-B07A	0357
-B07C	4905
-B07E	9307
-B080	1010
-B082	6306
-B084	F724
-B086	DC50
-B088	0945
-B08A	8297
-B08C	9770
-B08E	FFFB
-B090	E780
-B092	C085
-B094	11C5
-B096	9770
-B098	FFFB
-B09A	E780
-B09C	2088
-B09E	55C5
-B0A0	9760
-B0A2	00FC
-B0A4	E780
-B0A6	405A
-B0A8	B787
-B0AA	0024
-B0AC	83C7
-B0AE	078C
-B0B0	AA89
-B0B2	6392
-B0B4	071C
-B0B6	B7D7
-B0B8	0124
-B0BA	9387
-B0BC	07E7
-B0BE	BC5F
-B0C0	639A
-B0C2	0716
-B0C4	3799
-B0C6	0124
-B0C8	1309
-B0CA	0953
-B0CC	B727
-B0CE	0024
-B0D0	83C7
-B0D2	7752
-B0D4	6396
-B0D6	071E
-B0D8	0345
-B0DA	C918
-B0DC	631D
-B0DE	051C
-B0E0	DC50
-B0E2	0D45
-B0E4	8297
-B0E6	4E85
-B0E8	9760
-B0EA	00FC
-B0EC	E780
-B0EE	005A
-B0F0	8567
-B0F2	3E99
-B0F4	2320
-B0F6	A9A2
-B0F8	1374
-B0FA	0440
-B0FC	21C4
-B0FE	B7D7
-B100	0124
-B102	9387
-B104	07C4
-B106	37A7
-B108	0124
-B10A	83D6
-B10C	670E
-B10E	1307
-B110	0753
-B112	0347
-B114	179B
-B116	8506
-B118	3784
-B11A	0224
-B11C	1304
-B11E	C449
-B120	1337
-B122	1700
-B124	2393
-B126	D70E
-B128	230A
-B12A	E404
-B12C	9770
-B12E	FFFB
-B130	E780
-B132	40F3
-B134	6306
-B136	0510
-B138	0357
-B13A	4405
-B13C	9307
-B13E	1010
-B140	6300
-B142	F710
-B144	DC50
-B146	1D45
-B148	8297
-B14A	9A50
-B14C	8A52
-B14E	7A43
-B150	EA43
-B152	5A44
-B154	CA44
-B156	3A45
-B158	AA45
-B15A	1A46
-B15C	8A46
-B15E	7657
-B160	E657
-B162	5658
-B164	C658
-B166	3659
-B168	A659
-B16A	165A
-B16C	065E
-B16E	F64E
-B170	664F
-B172	D64F
-B174	1660
-B176	8660
-B178	7271
-B17A	E271
-B17C	5272
-B17E	C272
-B180	3273
-B182	A273
-B184	1275
-B186	8275
-B188	7266
-B18A	E266
-B18C	5267
-B18E	C267
-B190	3268
-B192	A268
-B194	126E
-B196	826E
-B198	072F
-B19A	C1FF
-B19C	872F
-B19E	81FF
-B1A0	7370
-B1A2	0430
-B1A4	7390
-B1A6	1434
-B1A8	7310
-B1AA	2434
-B1AC	3A54
-B1AE	AA54
-B1B0	4D61
-B1B2	7300
-B1B4	2030
-B1B6	37D9
-B1B8	0124
-B1BA	1309
-B1BC	09C4
-B1BE	8357
-B1C0	490E
-B1C2	B764
-B1C4	0124
-B1C6	9384
-B1C8	0440
-B1CA	D850
-B1CC	8507
-B1CE	0145
-B1D0	2312
-B1D2	F90E
-B1D4	0297
-B1D6	9760
-B1D8	FFFB
-B1DA	E780
-B1DC	2071
-B1DE	25E5
-B1E0	B729
-B1E2	0024
-B1E4	3799
-B1E6	0124
-B1E8	9389
-B1EA	0933
-B1EC	1309
-B1EE	0953
-B1F0	056A
-B1F2	83C7
-B1F4	791F
-B1F6	4A9A
-B1F8	2320
-B1FA	0AA2
-B1FC	B9EF
-B1FE	0345
-B200	C918
-B202	2DE5
-B204	83C7
-B206	0920
-B208	89C7
-B20A	0327
-B20C	4AB3
-B20E	630A
-B210	F700
-B212	97E0
-B214	00FC
-B216	E780
-B218	E0D2
-B21A	DC50
-B21C	0545
-B21E	8297
-B220	29BD
-B222	01A0
-B224	8547
-B226	230A
-B228	0904
-B22A	A30A
-B22C	0904
-B22E	2328
-B230	F904
-B232	3DBD
-B234	7D55
-B236	9770
-B238	01FC
-B23A	E780
-B23C	A004
-B23E	59B5
-B240	EFE0
-B242	5FD9
-B244	01B7
-B246	9760
-B248	FFFB
-B24A	E780
-B24C	206D
-B24E	49F9
-B250	8357
-B252	490E
-B254	858B
-B256	C9F7
-B258	CDBD
-B25A	9770
-B25C	01FC
-B25E	E780
-B260	2003
-B262	2311
-B264	A94E
-B266	0345
-B268	C918
-B26A	49DD
-B26C	97C0
-B26E	FFFB
-B270	E780
-B272	40B4
-B274	41BF
-B276	9770
-B278	01FC
-B27A	E780
-B27C	6001
-B27E	3799
-B280	0124
-B282	1309
-B284	0953
-B286	8D67
-B288	CA97
-B28A	03C7
-B28C	D76F
-B28E	232E
-B290	A94E
-B292	8547
-B294	6306
-B296	F700
-B298	8327
-B29A	094F
-B29C	E377
-B29E	F5EA
-B2A0	9760
-B2A2	00FC
-B2A4	E780
-B2A6	80FC
-B2A8	9770
-B2AA	01FC
-B2AC	E780
-B2AE	40FE
-B2B0	2320
-B2B2	A950
-B2B4	21BD
-B2B6	97C0
-B2B8	FFFB
-B2BA	E780
-B2BC	A0B2
-B2BE	0DB5
-B2C0	9770
-B2C2	01FC
-B2C4	E780
-B2C6	C0FC
-B2C8	2312
-B2CA	A94E
-B2CC	31B5
-B2CE	EFE0
-B2D0	7FD0
-B2D2	55BB
-B2D4	1743
-B2D6	02FC
-B2D8	E702
-B2DA	C31E
-B2DC	2A84
-B2DE	EFD0
-B2E0	BFA7
-B2E2	8947
-B2E4	6306
-B2E6	F400
-B2E8	1743
-B2EA	02FC
-B2EC	6700
-B2EE	C31F
-B2F0	B7E7
-B2F2	0024
-B2F4	03D7
-B2F6	C7C8
-B2F8	8564
-B2FA	9387
-B2FC	F4B3
-B2FE	E315
-B300	F7FE
-B302	37A9
-B304	0224
-B306	1309
-B308	8954
-B30A	8347
-B30C	190C
-B30E	E9FF
-B310	9770
-B312	FFFB
-B314	E780
-B316	00E3
-B318	61F9
-B31A	9770
-B31C	FFFB
-B31E	E780
-B320	A0E3
-B322	79F1
-B324	3725
-B326	0224
-B328	1305
-B32A	05ED
-B32C	9700
-B32E	FFFB
-B330	E780
-B332	80FA
-B334	B797
-B336	0124
-B338	3767
-B33A	0124
-B33C	0327
-B33E	0740
-B340	9387
-B342	0753
-B344	A697
-B346	8544
-B348	1D45
-B34A	238D
-B34C	97CE
-B34E	0297
-B350	A300
-B352	990C
-B354	9780
-B356	01FC
-B358	E780
-B35A	0083
-B35C	51F5
-B35E	B727
-B360	0124
-B362	2380
-B364	8754
-B366	97B0
-B368	FEFB
-B36A	E780
-B36C	6002
-B36E	2301
-B370	990C
-B372	9DBF
-B374	1743
-B376	02FC
-B378	E702
-B37A	C314
-B37C	37A4
-B37E	0224
-B380	1304
-B382	8454
-B384	0347
-B386	240C
-B388	8547
-B38A	630A
-B38C	F700
-B38E	97B0
-B390	FEFB
-B392	E780
-B394	E069
-B396	1743
-B398	02FC
-B39A	6700
-B39C	E314
-B39E	9770
-B3A0	01FC
-B3A2	E780
-B3A4	607E
-B3A6	65F5
-B3A8	97B0
-B3AA	FEFB
-B3AC	E780
-B3AE	800F
-B3B0	2301
-B3B2	040C
-B3B4	E9BF
-B3B6	0100
-B3B8	1743
-B3BA	02FC
-B3BC	E702
-B3BE	8310
-B3C0	9D47
-B3C2	631F
-B3C4	F500
-B3C6	3794
-B3C8	0124
-B3CA	1304
-B3CC	0453
-B3CE	8567
-B3D0	A297
-B3D2	83C7
-B3D4	A7CF
-B3D6	9DE7
-B3D8	1743
-B3DA	02FC
-B3DC	6700
-B3DE	C310
-B3E0	2A84
-B3E2	EFD0
-B3E4	7FDD
-B3E6	8547
-B3E8	E318
-B3EA	F4FE
-B3EC	B7E7
-B3EE	0124
-B3F0	9387
-B3F2	074C
-B3F4	23AE
-B3F6	0710
-B3F8	23A4
-B3FA	077E
-B3FC	1743
-B3FE	02FC
-B400	6700
-B402	830E
-B404	9770
-B406	FFFB
-B408	E780
-B40A	C0D3
-B40C	71F5
-B40E	9770
-B410	FFFB
-B412	E780
-B414	60D4
-B416	69F1
-B418	8D67
-B41A	3E94
-B41C	8327
-B41E	846D
-B420	B724
-B422	0124
-B424	9384
-B426	045F
-B428	91EF
-B42A	83A7
-B42C	440E
-B42E	99CB
-B430	B7D7
-B432	0124
-B434	83C7
-B436	07FA
-B438	C5D3
-B43A	9700
-B43C	FFFB
-B43E	E780
-B440	20E3
-B442	59BF
-B444	83A7
-B446	C40A
-B448	C1DB
-B44A	0545
-B44C	9730
-B44E	FEFB
-B450	E780
-B452	8051
-B454	B735
-B456	202D
-B458	7578
-B45A	37F5
-B45C	202D
-B45E	9385
-B460	0560
-B462	1308
-B464	08A0
-B466	9168
-B468	1305
-B46A	0560
-B46C	B387
-B46E	0501
-B470	03C7
-B472	0700
-B474	9306
-B476	F00F
-B478	1316
-B47A	8701
-B47C	6186
-B47E	0607
-B480	6344
-B482	0600
-B484	9376
-B486	F70F
-B488	2380
-B48A	D700
-B48C	8507
-B48E	E391
-B490	B7FE
-B492	B385
-B494	1701
-B496	E39B
-B498	A5FC
-B49A	B7A7
-B49C	0224
-B49E	0547
-B4A0	0145
-B4A2	A384
-B4A4	E760
-B4A6	9730
-B4A8	FEFB
-B4AA	E780
-B4AC	E04B
-B4AE	B7D7
-B4B0	0124
-B4B2	83C7
-B4B4	07FA
-B4B6	8DD3
-B4B8	8327
-B4BA	846D
-B4BC	91FF
-B4BE	83A7
-B4C0	440E
-B4C2	99DB
-B4C4	9DBF
-B4C6	0100
-B4C8	1743
-B4CA	02FC
-B4CC	E702
-B4CE	83FF
-B4D0	B7D7
-B4D2	0124
-B4D4	9387
-B4D6	07F4
-B4D8	03C7
-B4DA	1705
-B4DC	2A84
-B4DE	11C7
-B4E0	03C7
-B4E2	1700
-B4E4	8947
-B4E6	6307
-B4E8	F704
-B4EA	B7E7
-B4EC	0124
-B4EE	9387
-B4F0	0787
-B4F2	83A4
-B4F4	870F
-B4F6	03A9
-B4F8	C70F
-B4FA	0146
-B4FC	A685
-B4FE	4A85
-B500	9730
-B502	01FC
-B504	E780
-B506	4054
-B508	2285
-B50A	97D0
-B50C	FEFB
-B50E	E780
-B510	20D7
-B512	4A85
-B514	0546
-B516	A685
-B518	9730
-B51A	01FC
-B51C	E780
-B51E	C052
-B520	B7C7
-B522	0224
-B524	83A7
-B526	07B7
-B528	1145
-B52A	8297
-B52C	1743
-B52E	02FC
-B530	6700
-B532	83FB
-B534	B7E7
-B536	0024
-B538	83D6
-B53A	C7C8
-B53C	8567
-B53E	1387
-B540	F7B3
-B542	E394
-B544	E6FA
-B546	3797
-B548	0124
-B54A	1307
-B54C	0753
-B54E	BA97
-B550	03A5
-B552	07B2
-B554	8145
-B556	3325
-B558	A000
-B55A	97D0
-B55C	00FC
-B55E	E780
-B560	60BB
-B562	61B7
-B564	1743
-B566	02FC
-B568	E702
-B56A	C3F5
-B56C	9760
-B56E	FFFB
-B570	E780
-B572	C037
-B574	11C5
-B576	B7E7
-B578	0024
-B57A	83C7
-B57C	C784
-B57E	BDEF
-B580	1384
-B582	81E7
-B584	0347
-B586	8400
-B588	8547
-B58A	6303
-B58C	F706
-B58E	0357
-B590	2403
-B592	B767
-B594	0040
-B596	2398
-B598	E718
-B59A	8357
-B59C	4403
-B59E	3767
-B5A0	0040
-B5A2	2314
-B5A4	F720
-B5A6	9760
-B5A8	FFFB
-B5AA	E780
-B5AC	2034
-B5AE	19C5
-B5B0	B7E7
-B5B2	0024
-B5B4	03C7
-B5B6	C784
-B5B8	8147
-B5BA	09EB
-B5BC	8346
-B5BE	8400
-B5C0	0547
-B5C2	8147
-B5C4	6384
-B5C6	E600
-B5C8	8357
-B5CA	C405
-B5CC	37A7
-B5CE	0040
-B5D0	2312
-B5D2	F710
-B5D4	9770
-B5D6	FFFB
-B5D8	E780
-B5DA	C0B6
-B5DC	35C1
-B5DE	9770
-B5E0	FFFB
-B5E2	E780
-B5E4	60B7
-B5E6	05C9
-B5E8	1743
-B5EA	02FC
-B5EC	6700
-B5EE	C3EF
-B5F0	B767
-B5F2	0040
-B5F4	2398
-B5F6	0718
-B5F8	8147
-B5FA	55B7
-B5FC	B767
-B5FE	0040
-B600	2398
-B602	0718
-B604	1384
-B606	81E7
-B608	8346
-B60A	8400
-B60C	0547
-B60E	8147
-B610	E395
-B612	E6F8
-B614	69B7
-B616	9760
-B618	FFFB
-B61A	E780
-B61C	202D
-B61E	31ED
-B620	8346
-B622	8400
-B624	0547
-B626	8147
-B628	6384
-B62A	E600
-B62C	8357
-B62E	4408
-B630	3787
-B632	0040
-B634	2314
-B636	F710
-B638	1743
-B63A	02FC
-B63C	6700
-B63E	C3EA
-B640	9770
-B642	FFFB
-B644	E780
-B646	40B1
-B648	59F9
-B64A	9760
-B64C	FFFB
-B64E	E780
-B650	E029
-B652	19C5
-B654	B7E7
-B656	0024
-B658	03C7
-B65A	C784
-B65C	8147
-B65E	09EB
-B660	8346
-B662	8400
-B664	0547
-B666	8147
-B668	6384
-B66A	E600
-B66C	8357
-B66E	6407
-B670	3707
-B672	0140
-B674	2314
-B676	F710
-B678	9DB7
-B67A	B7E7
-B67C	0024
-B67E	03C7
-B680	C784
-B682	8147
-B684	55F7
-B686	69BF
-B688	1743
-B68A	02FC
-B68C	E702
-B68E	03E1
-B690	4111
-B692	3A84
-B694	22E6
-B696	26E4
-B698	4AE2
-B69A	4EE0
-B69C	AA84
-B69E	3689
-B6A0	97A0
-B6A2	FEFB
-B6A4	E780
-B6A6	8066
-B6A8	B727
-B6AA	0224
-B6AC	9387
-B6AE	076B
-B6B0	A297
-B6B2	0567
-B6B4	BA97
-B6B6	83C7
-B6B8	078D
-B6BA	639D
-B6BC	0718
-B6BE	83C7
-B6C0	0400
-B6C2	6399
-B6C4	0718
-B6C6	B7A7
-B6C8	0224
-B6CA	9389
-B6CC	8754
-B6CE	03C7
-B6D0	9905
-B6D2	6301
-B6D4	0718
-B6D6	03CA
-B6D8	A905
-B6DA	03D6
-B6DC	A90B
-B6DE	37E7
-B6E0	0124
-B6E2	0355
-B6E4	675F
-B6E6	9387
-B6E8	8754
-B6EA	0147
-B6EC	A145
-B6EE	6369
-B6F0	A622
-B6F2	83D6
-B6F4	C70A
-B6F6	8907
-B6F8	63F1
-B6FA	A626
-B6FC	0507
-B6FE	E318
-B700	B7FE
-B702	37CB
-B704	0224
-B706	5309
-B708	00F0
-B70A	8727
-B70C	8BB7
-B70E	9D46
-B710	4379
-B712	F990
-B714	1307
-B716	0705
-B718	0607
-B71A	4E97
-B71C	8357
-B71E	C700
-B720	118D
-B722	5377
-B724	05D0
-B726	918F
-B728	D3F7
-B72A	07D0
-B72C	9317
-B72E	3A00
-B730	B697
-B732	5377
-B734	F718
-B736	9387
-B738	8702
-B73A	8607
-B73C	CE97
-B73E	83D7
-B740	C700
-B742	0726
-B744	8BB7
-B746	13F7
-B748	F70F
-B74A	A183
-B74C	D377
-B74E	07D0
-B750	D3F6
-B752	07D0
-B754	C3F7
-B756	C768
-B758	5379
-B75A	F908
-B75C	4379
-B75E	E978
-B760	9770
-B762	FFFB
-B764	E780
-B766	C08A
-B768	AA8A
-B76A	93DA
-B76C	8A40
-B76E	9770
-B770	FFFB
-B772	E780
-B774	E089
-B776	C20A
-B778	9307
-B77A	8A04
-B77C	1375
-B77E	F50F
-B780	93DA
-B782	0A41
-B784	D3F7
-B786	0AD0
-B788	D374
-B78A	05D0
-B78C	0727
-B78E	8BB7
-B790	8607
-B792	CE97
-B794	03DC
-B796	C700
-B798	C3F4
-B79A	E478
-B79C	DC4C
-B79E	5374
-B7A0	0CD0
-B7A2	D307
-B7A4	00F0
-B7A6	83D4
-B7A8	C700
-B7AA	53F4
-B7AC	8408
-B7AE	130A
-B7B0	0A05
-B7B2	060A
-B7B4	4E9A
-B7B6	035A
-B7B8	4A00
-B7BA	D317
-B7BC	F4A0
-B7BE	99C3
-B7C0	5314
-B7C2	8420
-B7C4	B7CB
-B7C6	0224
-B7C8	83A7
-B7CA	0BB7
-B7CC	0D45
-B7CE	8297
-B7D0	D397
-B7D2	14C0
-B7D4	C207
-B7D6	C183
-B7D8	6395
-B7DA	870B
-B7DC	B747
-B7DE	0124
-B7E0	9387
-B7E2	0727
-B7E4	03D7
-B7E6	6712
-B7E8	83D6
-B7EA	E710
-B7EC	8947
-B7EE	7D17
-B7F0	B397
-B7F2	E700
-B7F4	D3F7
-B7F6	07D0
-B7F8	53F7
-B7FA	16D0
-B7FC	5304
-B7FE	00F0
-B800	D3F7
-B802	2711
-B804	37CA
-B806	0224
-B808	D3F7
-B80A	E718
-B80C	B7C7
-B80E	0224
-B810	07A7
-B812	C7B7
-B814	83A7
-B816	0BB7
-B818	2545
-B81A	D3F7
-B81C	E700
-B81E	D39A
-B820	17C0
-B822	8297
-B824	8727
-B826	0AB8
-B828	C20A
-B82A	93DA
-B82C	0A01
-B82E	5374
-B830	F410
-B832	D694
-B834	C204
-B836	2393
-B838	590D
-B83A	C180
-B83C	D317
-B83E	14C0
-B840	2392
-B842	F90C
-B844	B707
-B846	0040
-B848	19EC
-B84A	9387
-B84C	E703
-B84E	CA97
-B850	2390
-B852	9700
-B854	3264
-B856	A264
-B858	1269
-B85A	8269
-B85C	4101
-B85E	1743
-B860	02FC
-B862	6700
-B864	23C7
-B866	9387
-B868	0704
-B86A	3264
-B86C	A264
-B86E	1269
-B870	8269
-B872	CA97
-B874	2390
-B876	9700
-B878	4101
-B87A	1743
-B87C	02FC
-B87E	6700
-B880	63C5
-B882	9377
-B884	FA0F
-B886	135A
-B888	8A00
-B88A	8729
-B88C	8BB7
-B88E	D3F7
-B890	07D0
-B892	D376
-B894	0AD0
-B896	37CA
-B898	0224
-B89A	0727
-B89C	0AB8
-B89E	C3F7
-B8A0	3769
-B8A2	5374
-B8A4	F418
-B8A6	5374
-B8A8	E410
-B8AA	531B
-B8AC	14C0
-B8AE	420B
-B8B0	135B
-B8B2	0B01
-B8B4	5A85
-B8B6	9760
-B8B8	00FC
-B8BA	E780
-B8BC	A01A
-B8BE	AA8A
-B8C0	5A85
-B8C2	9760
-B8C4	00FC
-B8C6	E780
-B8C8	E019
-B8CA	93DA
-B8CC	8A00
-B8CE	D397
-B8D0	04C0
-B8D2	C20A
-B8D4	1375
-B8D6	F50F
-B8D8	93DA
-B8DA	0A01
-B8DC	5374
-B8DE	05D0
-B8E0	D3F7
-B8E2	0AD0
-B8E4	C207
-B8E6	C187
-B8E8	4374
-B8EA	3479
-B8EC	63D7
-B8EE	8703
-B8F0	5374
-B8F2	8918
-B8F4	B747
-B8F6	0124
-B8F8	9387
-B8FA	0727
-B8FC	03D7
-B8FE	6712
-B900	83D6
-B902	E710
-B904	8947
-B906	7D17
-B908	B397
-B90A	E700
-B90C	D3F7
-B90E	07D0
-B910	53F7
-B912	16D0
-B914	D3F7
-B916	8710
-B918	C5BD
-B91A	5374
-B91C	8910
-B91E	D9BF
-B920	9317
-B922	4A00
-B924	CE97
-B926	83D7
-B928	A706
-B92A	93F6
-B92C	F70F
-B92E	37CB
-B930	0224
-B932	A183
-B934	53F9
-B936	06D0
-B938	D3F7
-B93A	07D0
-B93C	0727
-B93E	8BB7
-B940	4379
-B942	E978
-B944	E30E
-B946	07E0
-B948	9307
-B94A	F704
-B94C	8607
-B94E	CE97
-B950	03D6
-B952	C700
-B954	9306
-B956	F7FF
-B958	75BB
-B95A	9317
-B95C	3A00
-B95E	BA97
-B960	9387
-B962	8702
-B964	8607
-B966	CE97
-B968	83D7
-B96A	C700
-B96C	7DBF
-B96E	0100
-B970	1743
-B972	02FC
-B974	E702
-B976	63B3
-B978	B747
-B97A	0124
-B97C	03D7
-B97E	C7E1
-B980	8947
-B982	2A84
-B984	AE84
-B986	6319
-B988	F700
-B98A	B7A7
-B98C	0124
-B98E	03A7
-B990	4706
-B992	FD57
-B994	6304
-B996	F704
-B998	B7E7
-B99A	0124
-B99C	9387
-B99E	0787
-B9A0	03A9
-B9A2	8710
-B9A4	83A9
-B9A6	C710
-B9A8	0146
-B9AA	CA85
-B9AC	4E85
-B9AE	9730
-B9B0	01FC
-B9B2	E780
-B9B4	6009
-B9B6	A685
-B9B8	2285
-B9BA	97C0
-B9BC	00FC
-B9BE	E780
-B9C0	6075
-B9C2	4E85
-B9C4	0546
-B9C6	CA85
-B9C8	9730
-B9CA	01FC
-B9CC	E780
-B9CE	C007
-B9D0	B7C7
-B9D2	0224
-B9D4	83A7
-B9D6	07B7
-B9D8	1545
-B9DA	8297
-B9DC	1743
-B9DE	02FC
-B9E0	6700
-B9E2	E3AF
-B9E4	B7C7
-B9E6	0224
-B9E8	03A6
-B9EA	47B7
-B9EC	B707
-B9EE	0040
-B9F0	9387
-B9F2	0706
-B9F4	3E96
-B9F6	0967
-B9F8	1308
-B9FA	0502
-B9FC	AA87
-B9FE	098E
-BA00	1307
-BA02	F7F1
-BA04	2390
-BA06	E700
-BA08	B306
-BA0A	F600
-BA0C	2390
-BA0E	E600
-BA10	8907
-BA12	E399
-BA14	07FF
-BA16	83C7
-BA18	C500
-BA1A	B1CB
-BA1C	83AF
-BA1E	0500
-BA20	0963
-BA22	1388
-BA24	E500
-BA26	8147
-BA28	0D4F
-BA2A	854E
-BA2C	094E
-BA2E	1303
-BA30	03F0
-BA32	3317
-BA34	FF00
-BA36	3377
-BA38	F701
-BA3A	3396
-BA3C	FE00
-BA3E	B316
-BA40	FE00
-BA42	798E
-BA44	B308
-BA46	F500
-BA48	F98E
-BA4A	8907
-BA4C	7D47
-BA4E	19C2
-BA50	0347
-BA52	0800
-BA54	1A86
-BA56	81C6
-BA58	0346
-BA5A	1800
-BA5C	2206
-BA5E	518F
-BA60	2390
-BA62	E800
-BA64	03C7
-BA66	C500
-BA68	0908
-BA6A	E3C4
-BA6C	E7FC
-BA6E	B7C7
-BA70	0224
-BA72	83A7
-BA74	07B7
-BA76	1D45
-BA78	8287
-BA7A	0100
-BA7C	1743
-BA7E	02FC
-BA80	E702
-BA82	43A4
-BA84	B7A7
-BA86	0224
-BA88	03C7
-BA8A	6760
-BA8C	8547
-BA8E	630C
-BA90	F700
-BA92	B7C7
-BA94	0224
-BA96	83A7
-BA98	07B7
-BA9A	2145
-BA9C	8297
-BA9E	1743
-BAA0	02FC
-BAA2	6700
-BAA4	63A4
-BAA6	9760
-BAA8	FFFB
-BAAA	E780
-BAAC	E0E8
-BAAE	75D1
-BAB0	B7E7
-BAB2	0024
-BAB4	83C7
-BAB6	B7AD
-BAB8	E9FF
-BABA	B7B7
-BABC	0024
-BABE	03D7
-BAC0	4733
-BAC2	B707
-BAC4	0140
-BAC6	2399
-BAC8	E7DC
-BACA	E1B7
-BACC	1743
-BACE	02FC
-BAD0	E702
-BAD2	439F
-BAD4	B7B7
-BAD6	0224
-BAD8	9387
-BADA	87B4
-BADC	23AE
-BADE	F194
-BAE0	3764
-BAE2	0124
-BAE4	9D66
-BAE6	B7B5
-BAE8	0224
-BAEA	B7B7
-BAEC	0224
-BAEE	1304
-BAF0	0440
-BAF2	9387
-BAF4	C783
-BAF6	9386
-BAF8	F6BF
-BAFA	1146
-BAFC	9385
-BAFE	05FB
-BB00	0545
-BB02	5CC4
-BB04	97E0
-BB06	FFFB
-BB08	E780
-BB0A	C0E8
-BB0C	C166
-BB0E	B7B5
-BB10	0224
-BB12	FD16
-BB14	3146
-BB16	9385
-BB18	4598
-BB1A	4145
-BB1C	97E0
-BB1E	FFFB
-BB20	E780
-BB22	40E7
-BB24	37B7
-BB26	0224
-BB28	1307
-BB2A	87B7
-BB2C	B7A7
-BB2E	0224
-BB30	9387
-BB32	8754
-BB34	78C8
-BB36	37B7
-BB38	0224
-BB3A	A380
-BB3C	070C
-BB3E	2381
-BB40	070C
-BB42	1307
-BB44	C7C2
-BB46	B7B7
-BB48	0224
-BB4A	18D4
-BB4C	9387
-BB4E	472D
-BB50	37B7
-BB52	0224
-BB54	7CC4
-BB56	1307
-BB58	873B
-BB5A	B7B7
-BB5C	0224
-BB5E	18C0
-BB60	9387
-BB62	4737
-BB64	23AA
-BB66	F1A4
-BB68	1743
-BB6A	02FC
-BB6C	6700
-BB6E	C397
-BB70	14A6
-BB72	0224
-BB74	008D
-BB76	0000
-BB78	0000
-BB7A	803B
-BB7C	0000
-BB7E	003F
-BB80	0000
-BB82	8043
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	0010
-84C8	F0C2
-84CA	0224
-84CC	44AB
-84CE	0224
-84D0	44AB
-84D2	0224
-84D4	44AB
-84D6	0224
-84D8	44AB
-84DA	0224
-84DC	44AB
-84DE	0224
-A548	001D
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00D5
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	0100
-A5A2	0036
-A5A4	0000
-A5A6	0000
-A5A8	0000
-A5AA	0000
-A5AC	0000
-A5AE	0000
-A5B0	0000
-A5B2	0000
-A5B4	0000
-A5B6	0000
-A5B8	0000
-A5BA	0000
-A5BC	0000
-A5BE	0000
-A5C0	0000
-A5C2	0000
-A5C4	0000
-A5C6	0000
-A5C8	0000
-A5CA	0000
-A5CC	0000
-A5CE	0000
-A5D0	0000
-A5D2	0000
-A5D4	0000
-A5D6	0000
-A5D8	0000
-A5DA	0000
-A5DC	0000
-A5DE	0000
-A5E0	0000
-A5E2	0000
-A5E4	0000
-A5E6	0000
-A5E8	0000
-A5EA	0000
-A5EC	000F
-A5EE	000F
-A5F0	000F
-A5F2	000F
-A5F4	0000
-A5F6	0000
-A5F8	0000
-A5FA	0000
-A5FC	0000
-A5FE	0000
-A600	0000
-A602	0000
-A604	0000
-A606	00C6
-BB84	0000
-BB86	00EB
-BB88	0100
-BB8A	0800
-BB8C	1000
-BB8E	2000
-BB90	9A00
-BB92	9A00
-BB94	9A00
-BB96	9A00
-BB98	9600
-BB9A	9600
-BB9C	9600
-BB9E	9600
-BBA0	9300
-BBA2	9300
-BBA4	9300
-BBA6	9300
-BBA8	9000
-BBAA	9000
-BBAC	9000
-BBAE	9000
-BBB0	8D00
-BBB2	8D00
-BBB4	8D00
-BBB6	8D00
-BBB8	3F00
-BBBA	3F00
-BBBC	3F00
-BBBE	3F00
-BBC0	1E00
-BBC2	1E00
-BBC4	1E00
-BBC6	1E00
-BBC8	0000
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0800
-BBD2	0800
-BBD4	0800
-BBD6	0800
-BBD8	0000
-BBDA	0000
-BBDC	0000
-BBDE	0000
-BBE0	3F00
-BBE2	3F00
-BBE4	3F00
-BBE6	3F00
-BBE8	3400
-BBEA	3400
-BBEC	3400
-BBEE	3400
-BBF0	0A00
-BBF2	0A00
-BBF4	0A00
-BBF6	0A00
-BBF8	1000
-BBFA	1000
-BBFC	1000
-BBFE	1000
-BC00	0600
-BC02	0600
-BC04	0600
-BC06	0600
-BC08	0C00
-BC0A	0C00
-BC0C	0C00
-BC0E	0C00
-BC10	0000
-BC12	0000
-BC14	0000
-BC16	0000
-BC18	1000
-BC1A	1000
-BC1C	1000
-BC1E	1000
-BC20	1000
-BC22	1000
-BC24	1000
-BC26	1000
-BC28	2000
-BC2A	1000
-BC2C	1000
-BC2E	1000
-BC30	0600
-BC32	0600
-BC34	0600
-BC36	0600
-BC38	1C00
-BC3A	1C00
-BC3C	1C00
-BC3E	1C00
-BC40	0600
-BC42	0600
-BC44	0600
-BC46	0600
-BC48	2A00
-BC4A	2A00
-BC4C	2A00
-BC4E	2A00
-BC50	0200
-BC52	0200
-BC54	0200
-BC56	0200
-BC58	1000
-BC5A	1000
-BC5C	1000
-BC5E	1000
-BC60	0E00
-BC62	0E00
-BC64	0E00
-BC66	0E00
-BC68	2800
-BC6A	2800
-BC6C	2800
-BC6E	2800
-BC70	1800
-BC72	1800
-BC74	1800
-BC76	1800
-BC78	0800
-BC7A	0800
-BC7C	0800
-BC7E	0800
-BC80	0000
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	2400
-BC8A	2400
-BC8C	2400
-BC8E	2400
-BC90	0055
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	7CAC
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	18A6
-570A	0224
-570C	0453
-570E	0020
-5710	A0A7
-5712	0224
-5714	C850
-5716	0220
-5718	B8AC
-571A	0224
-571C	2C88
-571E	0220
-5720	F0AD
-5722	0224
-5724	7C82
-5726	0120
-5728	C8B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	64B5
-5732	0224
-5734	1081
-5736	0320
-5738	70B9
-573A	0224
-573C	BCFD
-573E	0220
-5740	E4B9
-5742	0224
-5744	BCA5
-5746	0420
-5748	7CBA
-574A	0224
-574C	B803
-574E	0320
-5750	E4BC
-5752	0224
-5754	8424
-5756	0220
-5758	B0BD
-575A	0224
-575C	9C4C
-575E	0220
-5760	D0BF
-5762	0224
-5764	0C22
-5766	0220
-5768	54BE
-576A	0224
-FCFC	2002
-BC98	1743
-BC9A	02FC
-BC9C	E702
-BC9E	8382
-BCA0	2A84
-BCA2	EFE0
-BCA4	BFB9
-BCA6	A147
-BCA8	6306
-BCAA	F400
-BCAC	1743
-BCAE	02FC
-BCB0	6700
-BCB2	8383
-BCB4	B7C7
-BCB6	0224
-BCB8	83C7
-BCBA	57B8
-BCBC	E5DB
-BCBE	B797
-BCC0	0124
-BCC2	9387
-BCC4	0753
-BCC6	0567
-BCC8	3E97
-BCCA	8346
-BCCC	07B9
-BCCE	F9DE
-BCD0	83C7
-BCD2	673F
-BCD4	E1DF
-BCD6	8357
-BCD8	47B6
-BCDA	93E7
-BCDC	0720
-BCDE	2312
-BCE0	F7B6
-BCE2	E9B7
-BCE4	1733
-BCE6	02FC
-BCE8	E702
-BCEA	437B
-BCEC	37C8
-BCEE	0224
-BCF0	1308
-BCF2	48B8
-BCF4	8348
-BCF6	1800
-BCF8	2A8B
-BCFA	AE8B
-BCFC	3284
-BCFE	B684
-BD00	3A89
-BD02	BE89
-BD04	6380
-BD06	0802
-BD08	B7A7
-BD0A	0124
-BD0C	9387
-BD0E	0753
-BD10	03C7
-BD12	07B9
-BD14	83C7
-BD16	B792
-BD18	11C7
-BD1A	0347
-BD1C	2800
-BD1E	BD8B
-BD20	6306
-BD22	F704
-BD24	37E8
-BD26	0124
-BD28	1308
-BD2A	0887
-BD2C	832A
-BD2E	0812
-BD30	032A
-BD32	4812
-BD34	0146
-BD36	D685
-BD38	5285
-BD3A	9730
-BD3C	01FC
-BD3E	E780
-BD40	A0D0
-BD42	CE87
-BD44	4A87
-BD46	A686
-BD48	2286
-BD4A	DE85
-BD4C	5A85
-BD4E	9740
-BD50	00FC
-BD52	E780
-BD54	A066
-BD56	0546
-BD58	D685
-BD5A	5285
-BD5C	9730
-BD5E	01FC
-BD60	E780
-BD62	80CE
-BD64	1733
-BD66	02FC
-BD68	6700
-BD6A	C376
-BD6C	2315
-BD6E	0600
-BD70	9760
-BD72	FFFB
-BD74	E780
-BD76	80BA
-BD78	01CD
-BD7A	B797
-BD7C	0124
-BD7E	9387
-BD80	07D7
-BD82	03C7
-BD84	C700
-BD86	59DF
-BD88	7D17
-BD8A	2386
-BD8C	E700
-BD8E	59BF
-BD90	9760
-BD92	FFFB
-BD94	E780
-BD96	80B5
-BD98	6DD1
-BD9A	B797
-BD9C	0124
-BD9E	9387
-BDA0	07D7
-BDA2	03C7
-BDA4	D700
-BDA6	3DDF
-BDA8	7D17
-BDAA	A386
-BDAC	E700
-BDAE	9DBF
-BDB0	1733
-BDB2	02FC
-BDB4	E702
-BDB6	636F
-BDB8	B7E7
-BDBA	0124
-BDBC	9387
-BDBE	0787
-BDC0	03AA
-BDC2	8712
-BDC4	83A9
-BDC6	C712
-BDC8	AE84
-BDCA	2A84
-BDCC	3289
-BDCE	D285
-BDD0	0146
-BDD2	4E85
-BDD4	9730
-BDD6	01FC
-BDD8	E780
-BDDA	00C7
-BDDC	A685
-BDDE	4A86
-BDE0	2285
-BDE2	9760
-BDE4	FFFB
-BDE6	E780
-BDE8	206A
-BDEA	AA84
-BDEC	0546
-BDEE	D285
-BDF0	4E85
-BDF2	9730
-BDF4	01FC
-BDF6	E780
-BDF8	20C5
-BDFA	B7C7
-BDFC	0224
-BDFE	9387
-BE00	47B8
-BE02	03C7
-BE04	C710
-BE06	15C3
-BE08	37A7
-BE0A	0124
-BE0C	1307
-BE0E	0753
-BE10	0346
-BE12	37B9
-BE14	8946
-BE16	631A
-BE18	D600
-BE1A	8356
-BE1C	87BA
-BE1E	E18E
-BE20	89C6
-BE22	9306
-BE24	0040
-BE26	6307
-BE28	D400
-BE2A	2685
-BE2C	1733
-BE2E	02FC
-BE30	6700
-BE32	E36A
-BE34	8326
-BE36	47B3
-BE38	7D57
-BE3A	E388
-BE3C	E6FE
-BE3E	03D7
-BE40	0711
-BE42	9396
-BE44	0401
-BE46	C182
-BE48	11E3
-BE4A	3687
-BE4C	BA84
-BE4E	2398
-BE50	D710
-BE52	E1BF
-BE54	1733
-BE56	02FC
-BE58	E702
-BE5A	2365
-BE5C	3729
-BE5E	0024
-BE60	B7A4
-BE62	0124
-BE64	1309
-BE66	0933
-BE68	9384
-BE6A	0453
-BE6C	8347
-BE6E	491A
-BE70	03C7
-BE72	24B7
-BE74	2A84
-BE76	D98F
-BE78	6382
-BE7A	0714
-BE7C	8347
-BE7E	E400
-BE80	0547
-BE82	2305
-BE84	E400
-BE86	99E7
-BE88	8347
-BE8A	C400
-BE8C	D1CF
-BE8E	83C7
-BE90	24B7
-BE92	C5CB
-BE94	B76A
-BE96	0124
-BE98	130A
-BE9A	0403
-BE9C	0347
-BE9E	0400
-BEA0	A169
-BEA2	FD19
-BEA4	A301
-BEA6	E400
-BEA8	83A7
-BEAA	0A4B
-BEAC	2302
-BEAE	E400
-BEB0	0567
-BEB2	BA97
-BEB4	83D7
-BEB6	47E0
-BEB8	2303
-BEBA	0400
-BEBC	B3F7
-BEBE	3701
-BEC0	231C
-BEC2	F400
-BEC4	9740
-BEC6	FDFB
-BEC8	E780
-BECA	0067
-BECC	0358
-BECE	8401
-BED0	A308
-BED2	A400
-BED4	6301
-BED6	0806
-BED8	3736
-BEDA	0520
-BEDC	1306
-BEDE	06C8
-BEE0	8146
-BEE2	8147
-BEE4	4145
-BEE6	B305
-BEE8	F400
-BEEA	3357
-BEEC	F840
-BEEE	2380
-BEF0	D502
-BEF2	058B
-BEF4	8507
-BEF6	11C7
-BEF8	0347
-BEFA	0600
-BEFC	BA96
-BEFE	93F6
-BF00	F60F
-BF02	0506
-BF04	E391
-BF06	A7FE
-BF08	2308
-BF0A	D400
-BF0C	8347
-BF0E	491A
-BF10	03C7
-BF12	24B7
-BF14	D98F
-BF16	C9C3
-BF18	2307
-BF1A	0400
-BF1C	232E
-BF1E	4401
-BF20	1733
-BF22	02FC
-BF24	6700
-BF26	A35B
-BF28	8347
-BF2A	B400
-BF2C	A5D7
-BF2E	83C7
-BF30	24B7
-BF32	ADF3
-BF34	39A0
-BF36	0148
-BF38	45F1
-BF3A	231C
-BF3C	3401
-BF3E	4E88
-BF40	61BF
-BF42	B76A
-BF44	0124
-BF46	83A5
-BF48	0A4B
-BF4A	8567
-BF4C	130A
-BF4E	0403
-BF50	9387
-BF52	07E1
-BF54	1306
-BF56	8007
-BF58	BE95
-BF5A	5285
-BF5C	9760
-BF5E	00FC
-BF60	E780
-BF62	400A
-BF64	21C9
-BF66	2305
-BF68	0400
-BF6A	0347
-BF6C	2401
-BF6E	8347
-BF70	6400
-BF72	8356
-BF74	4401
-BF76	A308
-BF78	E400
-BF7A	0547
-BF7C	231C
-BF7E	D400
-BF80	2307
-BF82	E400
-BF84	A301
-BF86	F400
-BF88	2303
-BF8A	0400
-BF8C	232E
-BF8E	4401
-BF90	1733
-BF92	02FC
-BF94	6700
-BF96	A354
-BF98	83A5
-BF9A	0A4B
-BF9C	8567
-BF9E	9387
-BFA0	07E1
-BFA2	1306
-BFA4	000F
-BFA6	BE95
-BFA8	5285
-BFAA	9760
-BFAC	00FC
-BFAE	E780
-BFB0	2005
-BFB2	9DB7
-BFB4	8347
-BFB6	A400
-BFB8	CDDB
-BFBA	CDB5
-BFBC	37A5
-BFBE	0124
-BFC0	1305
-BFC2	050C
-BFC4	9760
-BFC6	FFFB
-BFC8	E780
-BFCA	8043
-BFCC	45BD
-BFCE	0100
-BFD0	1733
-BFD2	02FC
-BFD4	E702
-BFD6	034F
-BFD8	8347
-BFDA	1501
-BFDC	A304
-BFDE	0500
-BFE0	2A84
-BFE2	91EF
-BFE4	8357
-BFE6	8501
-BFE8	99EB
-BFEA	8347
-BFEC	F500
-BFEE	A307
-BFF0	0500
-BFF2	A304
-BFF4	F500
-BFF6	1733
-BFF8	02FC
-BFFA	6700
-BFFC	E34E
-BFFE	2285
-C000	9790
-C002	FFFB
-C004	E780
-C006	C0C4
-C008	8347
-C00A	3400
-C00C	0347
-C00E	6400
-C010	8346
-C012	7400
-C014	FD17
-C016	0507
-C018	93F7
-C01A	F70F
-C01C	2303
-C01E	E400
-C020	A301
-C022	F400
-C024	99C2
-C026	A303
-C028	0400
-C02A	B1EF
-C02C	0347
-C02E	1401
-C030	8356
-C032	8401
-C034	8347
-C036	5400
-C038	2309
-C03A	E400
-C03C	0547
-C03E	231A
-C040	D400
-C042	2304
-C044	E400
-C046	231C
-C048	0400
-C04A	A308
-C04C	0400
-C04E	C5E3
-C050	8347
-C052	1400
-C054	13F7
-C056	2700
-C058	19C7
-C05A	0347
-C05C	0400
-C05E	01C7
-C060	0347
-C062	2400
-C064	4DC3
-C066	858B
-C068	A5CF
-C06A	B727
-C06C	0024
-C06E	83C7
-C070	274D
-C072	D1D3
-C074	B767
-C076	0124
-C078	83A7
-C07A	074B
-C07C	0567
-C07E	BA97
-C080	2380
-C082	07E0
-C084	8DBF
-C086	0347
-C088	0401
-C08A	5C4C
-C08C	9316
-C08E	1700
-C090	B697
-C092	5CCC
-C094	B727
-C096	0024
-C098	9387
-C09A	0733
-C09C	83C6
-C09E	371A
-C0A0	89EA
-C0A2	8346
-C0A4	6401
-C0A6	A1DA
-C0A8	B7A6
-C0AA	0124
-C0AC	83C6
-C0AE	260A
-C0B0	B9F2
-C0B2	83C7
-C0B4	471A
-C0B6	A1F3
-C0B8	0346
-C0BA	0400
-C0BC	B767
-C0BE	0124
-C0C0	83A5
-C0C2	074B
-C0C4	3306
-C0C6	E602
-C0C8	8567
-C0CA	9387
-C0CC	07E1
-C0CE	BE95
-C0D0	1305
-C0D2	0403
-C0D4	0606
-C0D6	9760
-C0D8	00FC
-C0DA	E780
-C0DC	60F2
-C0DE	21BF
-C0E0	8547
-C0E2	A304
-C0E4	F400
-C0E6	1733
-C0E8	02FC
-C0EA	6700
-C0EC	E33F
-C0EE	FD17
-C0F0	A302
-C0F2	F400
-C0F4	2285
-C0F6	9760
-C0F8	FFFB
-C0FA	E780
-C0FC	6011
-C0FE	1733
-C100	02FC
-C102	6700
-C104	633E
-C106	2285
-C108	9760
-C10A	FFFB
-C10C	E780
-C10E	4010
-C110	DDB5
-C112	0100
-C114	8947
-C116	6303
-C118	F500
-C11A	8280
-C11C	1733
-C11E	02FC
-C120	E702
-C122	A338
-C124	B784
-C126	0124
-C128	9384
-C12A	04AA
-C12C	87A7
-C12E	040A
-C130	4111
-C132	37C5
-C134	0224
-C136	5396
-C138	17C0
-C13A	7400
-C13C	9145
-C13E	1305
-C140	85B8
-C142	9750
-C144	FFFB
-C146	E780
-C148	60C3
-C14A	3719
-C14C	0140
-C14E	4205
-C150	4181
-C152	130A
-C154	4924
-C156	B789
-C158	0124
-C15A	37C4
-C15C	0224
-C15E	B7CA
-C160	0224
-C162	2317
-C164	A100
-C166	9389
-C168	89B1
-C16A	1304
-C16C	04B9
-C16E	938A
-C170	8ABB
-C172	330A
-C174	9A40
-C176	0605
-C178	2295
-C17A	8355
-C17C	2500
-C17E	0356
-C180	C100
-C182	0355
-C184	0500
-C186	2104
-C188	9760
-C18A	00FC
-C18C	E780
-C18E	8082
-C190	4205
-C192	4181
-C194	2390
-C196	A900
-C198	B387
-C19A	4901
-C19C	2390
-C19E	A700
-C1A0	8909
-C1A2	6305
-C1A4	5401
-C1A6	0355
-C1A8	E100
-C1AA	F1B7
-C1AC	B789
-C1AE	0124
-C1B0	37CA
-C1B2	0224
-C1B4	1309
-C1B6	0926
-C1B8	9389
-C1BA	A9AF
-C1BC	130A
-C1BE	0AC3
-C1C0	8357
-C1C2	E100
-C1C4	0356
-C1C6	C100
-C1C8	8509
-C1CA	8607
-C1CC	A297
-C1CE	83D5
-C1D0	2700
-C1D2	03D5
-C1D4	0700
-C1D6	0909
-C1D8	2104
-C1DA	9750
-C1DC	00FC
-C1DE	E780
-C1E0	607D
-C1E2	1375
-C1E4	F50F
-C1E6	A38F
-C1E8	A9FE
-C1EA	4205
-C1EC	4181
-C1EE	231F
-C1F0	A9FE
-C1F2	E317
-C1F4	44FD
-C1F6	B719
-C1F8	0140
-C1FA	3789
-C1FC	0124
-C1FE	37CA
-C200	0224
-C202	9389
-C204	291F
-C206	1309
-C208	C9B2
-C20A	130A
-C20C	0AC6
-C20E	B389
-C210	9940
-C212	8357
-C214	E100
-C216	0356
-C218	C100
-C21A	8607
-C21C	A297
-C21E	83D5
-C220	2700
-C222	03D5
-C224	0700
-C226	2104
-C228	9750
-C22A	00FC
-C22C	E780
-C22E	8078
-C230	4205
-C232	4181
-C234	2310
-C236	A900
-C238	B307
-C23A	3901
-C23C	2390
-C23E	A700
-C240	0909
-C242	E318
-C244	44FD
-C246	B717
-C248	0140
-C24A	3789
-C24C	0124
-C24E	B7C9
-C250	0224
-C252	9387
-C254	A720
-C256	1309
-C258	69B4
-C25A	9389
-C25C	09C9
-C25E	B384
-C260	9740
-C262	8357
-C264	E100
-C266	0356
-C268	C100
-C26A	8607
-C26C	A297
-C26E	83D5
-C270	2700
-C272	03D5
-C274	0700
-C276	2104
-C278	9750
-C27A	00FC
-C27C	E780
-C27E	8073
-C280	4205
-C282	4181
-C284	2310
-C286	A900
-C288	B307
-C28A	9900
-C28C	2390
-C28E	A700
-C290	0909
-C292	E318
-C294	34FD
-C296	4101
-C298	1733
-C29A	02FC
-C29C	6700
-C29E	2324
-C2A0	B7C7
-C2A2	0224
-C2A4	9387
-C2A6	47B8
-C2A8	03C6
-C2AA	0700
-C2AC	37A7
-C2AE	0224
-C2B0	8356
-C2B2	4760
-C2B4	37D7
-C2B6	0124
-C2B8	2328
-C2BA	C7DA
-C2BC	37C7
-C2BE	0224
-C2C0	3766
-C2C2	0124
-C2C4	1307
-C2C6	87C9
-C2C8	2326
-C2CA	E640
-C2CC	89CA
-C2CE	37B7
-C2D0	0224
-C2D2	B726
-C2D4	0024
-C2D6	1307
-C2D8	8768
-C2DA	23A0
-C2DC	E6CE
-C2DE	37C7
-C2E0	0224
-C2E2	1307
-C2E4	4711
-C2E6	23A4
-C2E8	E1A4
-C2EA	2398
-C2EC	0710
-C2EE	8280
-C2F0	1733
-C2F2	02FC
-C2F4	E702
-C2F6	031D
-C2F8	B7C6
-C2FA	0224
-C2FC	B787
-C2FE	0324
-C300	9386
-C302	8634
-C304	37A7
-C306	0124
-C308	9387
-C30A	07FF
-C30C	1307
-C30E	0753
-C310	958F
-C312	232C
-C314	D7B4
-C316	232E
-C318	F7B4
-C31A	9720
-C31C	01FC
-C31E	E780
-C320	6016
-C322	11C5
-C324	EFE0
-C326	0F8A
-C328	EFF0
-C32A	4FFA
-C32C	953F
-C32E	1733
-C330	02FC
-C332	6700
-C334	631B
-C336	0000
-C338	9410
-C33A	E538
-C33C	0000
-C33E	0000
-C340	BEFF
-C342	0F00
-C344	0000
-C346	0000
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-5ACC	6505
-FCFC	4000
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3244	0101
-3246	0101
-3248	0010
-3266	0100
-3330	0108
-3334	0100
-3336	0000
-FCFC	2002
-BB88	0100
-BB8A	0800
-BB8C	1000
-BB8E	2000
-BB90	C800
-BB92	C800
-BB94	C800
-BB96	C800
-BB98	C400
-BB9A	C400
-BB9C	C400
-BB9E	C400
-BBA0	C200
-BBA2	C200
-BBA4	C200
-BBA6	C200
-BBA8	BE00
-BBAA	BE00
-BBAC	BE00
-BBAE	BE00
-BBB0	BC00
-BBB2	BC00
-BBB4	BC00
-BBB6	BC00
-BBB8	2000
-BBBA	2000
-BBBC	2000
-BBBE	2000
-BBC0	1600
-BBC2	1600
-BBC4	1600
-BBC6	1600
-BBC8	0000
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0A00
-BBD2	0A00
-BBD4	0A00
-BBD6	0A00
-BBD8	1400
-BBDA	1400
-BBDC	1400
-BBDE	1400
-BBE0	2A00
-BBE2	2A00
-BBE4	2A00
-BBE6	2A00
-BBE8	2A00
-BBEA	2A00
-BBEC	2A00
-BBEE	2A00
-BBF0	0100
-BBF2	0100
-BBF4	0100
-BBF6	0100
-BBF8	0F00
-BBFA	0F00
-BBFC	0F00
-BBFE	0F00
-BC00	0400
-BC02	0400
-BC04	0400
-BC06	0400
-BC08	1900
-BC0A	1900
-BC0C	1900
-BC0E	1900
-BC10	1400
-BC12	1400
-BC14	1400
-BC16	1400
-BC18	3A00
-BC1A	3A00
-BC1C	3A00
-BC1E	3A00
-BC20	0A00
-BC22	0A00
-BC24	0A00
-BC26	0A00
-BC28	4B00
-BC2A	4B00
-BC2C	4B00
-BC2E	4B00
-BC30	0200
-BC32	0600
-BC34	0C00
-BC36	0C00
-BC38	2A00
-BC3A	2500
-BC3C	2000
-BC3E	2000
-BC40	0000
-BC42	1000
-BC44	2300
-BC46	2300
-BC48	3F00
-BC4A	3100
-BC4C	2100
-BC4E	2100
-BC50	0A00
-BC52	1B00
-BC54	3000
-BC56	3000
-BC58	1900
-BC5A	1500
-BC5C	1100
-BC5E	1100
-BC60	0F00
-BC62	0F00
-BC64	0F00
-BC66	0F00
-BC68	1900
-BC6A	1900
-BC6C	1900
-BC6E	1900
-BC70	0A00
-BC72	0A00
-BC74	0A00
-BC76	0A00
-BC78	0B00
-BC7A	0B00
-BC7C	0B00
-BC7E	0B00
-BC80	0000
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0800
-BC8A	0800
-BC8C	0800
-BC8E	0800
-FCFC	4000
-FCFC	4000
-0B30	01FF
-FCFC	2000
-3D44	0000
-3D88	FCFC
-3D8A	FEFF
-3D8C	FCFC
-3D8E	FEFF
-3D90	FCFC
-3D92	FEFF
-3D94	FCFC
-3D96	FEFF
-3FE0	0324
-3FE2	6080
-3FE4	0324
-3FE6	0080
-4238	0324
-423A	6080
-423C	0000
-423E	0000
-4490	0324
-4492	6080
-4494	0324
-4496	7C87
-46E8	0324
-46EA	6080
-46EC	0324
-46EE	7C87
-46F0	0324
-46F2	128A
-4940	0324
-4942	6080
-4944	0324
-4946	5A8A
-4B98	0324
-4B9A	6080
-4B9C	0324
-4B9E	FC8C
-FCFC	2003
-8000	FFFE
-8002	2400
-8004	FFFD
-8006	D4AC
-8008	003B
-800A	FFFE
-800C	2401
-800E	FFFD
-8010	1D72
-8012	FFFC
-8014	1D74
-8016	FFFC
-8018	1D82
-801A	FFFC
-801C	1D84
-801E	FFFC
-8020	25E0
-8022	0000
-8024	25E2
-8026	0000
-8028	31D0
-802A	0002
-802C	31FA
-802E	04CD
-8030	FFFE
-8032	2400
-8034	FFFD
-8036	0B08
-8038	0101
-803A	0000
-803C	FFFF
-803E	0008
-8040	2401
-8042	1D92
-8044	FCFF
-8046	FCFF
-8048	FCFF
-804A	FCFF
-804C	FFFF
-804E	0008
-8050	2401
-8052	1DA2
-8054	FCFF
-8056	FCFF
-8058	FCFF
-805A	FCFF
-805C	0000
-805E	0000
-8060	FFFE
-8062	2400
-8064	FFFD
-8066	22C2
-8068	0006
-806A	22C4
-806C	1FFF
-806E	22EC
-8070	001F
-8072	2306
-8074	3FFF
-8076	2314
-8078	00FF
-807A	2354
-807C	0003
-807E	23F0
-8080	0100
-8082	68DE
-8084	0000
-8086	703C
-8088	0100
-808A	703E
-808C	0000
-808E	7046
-8090	027F
-8092	7048
-8094	002F
-8096	704A
-8098	0400
-809A	7058
-809C	0280
-809E	705A
-80A0	0030
-80A2	705C
-80A4	0400
-80A6	7806
-80A8	0100
-80AA	7808
-80AC	0824
-80AE	78C0
-80B0	0101
-80B2	795A
-80B4	0010
-80B6	7970
-80B8	0010
-80BA	7994
-80BC	2020
-80BE	7996
-80C0	0001
-80C2	799A
-80C4	0000
-80C6	7BDA
-80C8	003C
-80CA	7EE6
-80CC	002C
-80CE	7EF2
-80D0	002C
-80D2	7EFE
-80D4	0064
-80D6	7F0A
-80D8	0058
-80DA	7F0E
-80DC	0058
-80DE	82A2
-80E0	0012
-80E2	82BA
-80E4	0036
-80E6	8CCE
-80E8	012C
-80EA	8CD0
-80EC	0096
-80EE	8CD2
-80F0	0096
-80F2	8CD6
-80F4	0096
-80F6	8D0E
-80F8	0000
-80FA	9032
-80FC	0000
-80FE	903E
-8100	0000
-8102	B176
-8104	0006
-8106	B178
-8108	0000
-810A	B20C
-810C	002E
-810E	B21A
-8110	0204
-8112	B23C
-8114	6060
-8116	B242
-8118	6060
-811A	B266
-811C	04C0
-811E	B268
-8120	0440
-8122	B270
-8124	0887
-8126	B322
-8128	0101
-812A	B324
-812C	0001
-812E	B330
-8130	2828
-8132	B34A
-8134	2828
-8136	B360
-8138	2828
-813A	B378
-813C	0001
-813E	BF16
-8140	AA0B
-8142	BF30
-8144	0000
-8146	BF78
-8148	3353
-814A	C4D8
-814C	0020
-814E	C4E0
-8150	0001
-8152	C4E2
-8154	0002
-8156	C4F6
-8158	0000
-815A	C53C
-815C	0001
-815E	C53E
-8160	0000
-8162	C544
-8164	0500
-8166	C554
-8168	0D53
-816A	C556
-816C	0000
-816E	D1F6
-8170	003A
-8172	D20C
-8174	0809
-8176	D27A
-8178	0005
-817A	D314
-817C	0220
-817E	D326
-8180	2001
-8182	D3EC
-8184	1CB1
-8186	D3F0
-8188	1CB0
-818A	D410
-818C	0248
-818E	D412
-8190	04D2
-8192	D426
-8194	04D2
-8196	D428
-8198	0AEA
-819A	D43C
-819C	4001
-819E	D43E
-81A0	4001
-81A2	D49C
-81A4	0021
-81A6	D4A8
-81A8	0003
-81AA	D4AC
-81AC	03E8
-81AE	D4B0
-81B0	0001
-81B2	D4B4
-81B4	0001
-81B6	D4B8
-81B8	0035
-81BA	D4BC
-81BC	0014
-81BE	D4C0
-81C0	0014
-81C2	D4C4
-81C4	0001
-81C6	D4C8
-81C8	0000
-81CA	D4CC
-81CC	0000
-81CE	D4D0
-81D0	0016
-81D2	D4D2
-81D4	0020
-81D6	D4D6
-81D8	0000
-81DA	D4DA
-81DC	0000
-81DE	D4DE
-81E0	0000
-81E2	D4E2
-81E4	0001
-81E6	D4E6
-81E8	0001
-81EA	D4EA
-81EC	0001
-81EE	D4EC
-81F0	00BE
-81F2	D4EE
-81F4	00BE
-81F6	D4F8
-81F8	01F0
-81FA	D4FA
-81FC	01F0
-81FE	D554
-8200	0000
-8202	D556
-8204	0000
-8206	D560
-8208	0000
-820A	D562
-820C	0000
-820E	D5BC
-8210	0000
-8212	D5BE
-8214	0000
-8216	D5C8
-8218	0000
-821A	D5CA
-821C	0000
-821E	D624
-8220	0000
-8222	D62E
-8224	0000
-8226	D638
-8228	0000
-822A	D682
-822C	04C0
-822E	D684
-8230	0440
-8232	D6D4
-8234	0000
-8236	D704
-8238	7802
-823A	D718
-823C	0200
-823E	D856
-8240	0705
-8242	D896
-8244	0000
-8246	D8A2
-8248	0001
-824A	DC8C
-824C	2B3F
-824E	DC94
-8250	0001
-8252	DD70
-8254	0000
-8256	DE38
-8258	0000
-825A	E980
-825C	0500
-825E	EF80
-8260	0000
-8262	F014
-8264	0006
-8266	F09A
-8268	FF00
-826A	F0AA
-826C	FFFF
-826E	F0AC
-8270	FFFF
-8272	F288
-8274	0000
-8276	F2E0
-8278	0000
-827A	F2EA
-827C	0040
-827E	F370
-8280	0302
-8282	F372
-8284	0000
-8286	F3E4
-8288	0103
-828A	F3F4
-828C	08C8
-828E	F3F6
-8290	10D7
-8292	FFFE
-8294	2401
-8296	FFFD
-8298	195E
-829A	0001
-829C	1966
-829E	0000
-82A0	1DFE
-82A2	0000
-82A4	1E1E
-82A6	0000
-82A8	1E32
-82AA	0000
-82AC	1E36
-82AE	0000
-82B0	1E3A
-82B2	0000
-82B4	1E3E
-82B6	0000
-82B8	1E52
-82BA	0000
-82BC	1E56
-82BE	0000
-82C0	1E5A
-82C2	0000
-82C4	1E5E
-82C6	0000
-82C8	2540
-82CA	0002
-82CC	25E0
-82CE	0001
-82D0	25E2
-82D2	00CD
-82D4	2920
-82D6	0001
-82D8	29A8
-82DA	0002
-82DC	29BA
-82DE	00FF
-82E0	2A30
-82E2	FF01
-82E4	2A42
-82E6	0001
-82E8	2A44
-82EA	04B0
-82EC	2A46
-82EE	0000
-82F0	2A54
-82F2	0000
-82F4	2A56
-82F6	0008
-82F8	2BB2
-82FA	0010
-82FC	2D32
-82FE	1000
-8300	3132
-8302	0001
-8304	31D0
-8306	0000
-8308	31F8
-830A	0001
-830C	31FA
-830E	0400
-8310	3C42
-8312	0000
-8314	3C46
-8316	05EB
-8318	3C52
-831A	0640
-831C	4270
-831E	0000
-8320	427C
-8322	0020
-8324	4280
-8326	0010
-8328	4290
-832A	0001
-832C	4292
-832E	0000
-8330	4362
-8332	0001
-8334	4364
-8336	0000
-8338	4366
-833A	0000
-833C	4370
-833E	0000
-8340	4396
-8342	000C
-8344	4398
-8346	000E
-8348	43AA
-834A	0000
-834C	43AC
-834E	0000
-8350	43B4
-8352	0000
-8354	43B6
-8356	0000
-8358	43C6
-835A	0A01
-835C	44C6
-835E	0000
-8360	5A70
-8362	0000
-8364	FFFE
-8366	2402
-8368	FFFD
-836A	849E
-836C	0000
-836E	84A0
-8370	0000
-8372	84A2
-8374	0500
-8376	84C4
-8378	0000
-837A	A570
-837C	0000
-837E	FFFE
-8380	2400
-8382	FFFD
-8384	0086
-8386	0200
-8388	0112
-838A	0A0A
-838C	0114
-838E	0103
-8390	0118
-8392	0400
-8394	011A
-8396	0100
-8398	011C
-839A	0001
-839C	0136
-839E	1800
-83A0	013E
-83A2	0000
-83A4	020A
-83A6	0000
-83A8	021E
-83AA	0000
-83AC	0228
-83AE	0001
-83B0	0270
-83B2	2B2B
-83B4	0272
-83B6	102B
-83B8	0274
-83BA	2B30
-83BC	0304
-83BE	0003
-83C0	0306
-83C2	00E6
-83C4	031A
-83C6	0003
-83C8	031C
-83CA	0028
-83CC	031E
-83CE	0002
-83D0	0400
-83D2	1010
-83D4	0408
-83D6	0100
-83D8	040A
-83DA	0100
-83DC	040C
-83DE	0000
-83E0	0702
-83E2	0000
-83E4	0704
-83E6	0000
-83E8	0720
-83EA	0001
-83EC	0722
-83EE	0008
-83F0	0724
-83F2	0000
-83F4	0808
-83F6	0102
-83F8	0900
-83FA	1100
-83FC	0936
-83FE	0000
-8400	0C40
-8402	0000
-8404	0342
-8406	23F0
-8408	0000
-840A	FFFF
-840C	0008
-840E	2400
-8410	71D4
-8412	3F00
-8414	3D00
-8416	84F3
-8418	0040
-841A	FFFF
-841C	0010
-841E	2400
-8420	7274
-8422	0D00
-8424	0C00
-8426	36D2
-8428	0040
-842A	0000
-842C	0000
-842E	0000
-8430	0000
-8432	FFFF
-8434	0008
-8436	2400
-8438	7314
-843A	0000
-843C	0000
-843E	0000
-8440	0000
-8442	FFFF
-8444	0008
-8446	2400
-8448	7A0E
-844A	1E00
-844C	0F00
-844E	0F00
-8450	0F00
-8452	FFFF
-8454	0008
-8456	2400
-8458	7A6E
-845A	2800
-845C	1900
-845E	1900
-8460	1900
-8462	FFFF
-8464	0008
-8466	2400
-8468	7A86
-846A	2800
-846C	1900
-846E	1900
-8470	1900
-8472	FFFF
-8474	0008
-8476	2400
-8478	8C9E
-847A	5000
-847C	3500
-847E	3500
-8480	3500
-8482	FFFF
-8484	000A
-8486	2400
-8488	B21E
-848A	0000
-848C	0000
-848E	C000
-8490	0103
-8492	0000
-8494	FFFF
-8496	000C
-8498	2400
-849A	BEDC
-849C	C526
-849E	903E
-84A0	C00F
-84A2	0008
-84A4	0C00
-84A6	8000
-84A8	FFFF
-84AA	000E
-84AC	2400
-84AE	DADA
-84B0	0001
-84B2	0000
-84B4	3000
-84B6	8001
-84B8	0000
-84BA	0000
-84BC	0000
-84BE	FFFF
-84C0	000C
-84C2	2400
-84C4	DB0C
-84C6	0000
-84C8	0080
-84CA	0000
-84CC	0000
-84CE	0000
-84D0	0000
-84D2	FFFF
-84D4	000C
-84D6	2400
-84D8	DB3C
-84DA	12D2
-84DC	12D2
-84DE	12D2
-84E0	0000
-84E2	0000
-84E4	0000
-84E6	FFFF
-84E8	000C
-84EA	2400
-84EC	DB6C
-84EE	0000
-84F0	0000
-84F2	0000
-84F4	0000
-84F6	0000
-84F8	0000
-84FA	FFFF
-84FC	000C
-84FE	2400
-8500	DB9C
-8502	0000
-8504	0000
-8506	0000
-8508	0000
-850A	0000
-850C	0000
-850E	FFFF
-8510	000C
-8512	2400
-8514	DBCC
-8516	0000
-8518	0000
-851A	0000
-851C	0000
-851E	0000
-8520	0000
-8522	FFFF
-8524	0012
-8526	2401
-8528	1C24
-852A	0002
-852C	0001
-852E	FF03
-8530	0010
-8532	D70F
-8534	0004
-8536	0010
-8538	D70F
-853A	C20F
-853C	FFFF
-853E	0020
-8540	2401
-8542	1C4E
-8544	0001
-8546	FF03
-8548	0010
-854A	D70F
-854C	0004
-854E	0010
-8550	D70F
-8552	C20F
-8554	0000
-8556	0000
-8558	0000
-855A	0000
-855C	0000
-855E	0000
-8560	0000
-8562	0000
-8564	FFFF
-8566	0020
-8568	2401
-856A	1C76
-856C	0001
-856E	FF03
-8570	0010
-8572	D70F
-8574	0004
-8576	0010
-8578	D70F
-857A	C20F
-857C	0000
-857E	0000
-8580	0000
-8582	0000
-8584	0000
-8586	0000
-8588	0000
-858A	0000
-858C	FFFF
-858E	0010
-8590	2401
-8592	1C9E
-8594	0001
-8596	FF03
-8598	0010
-859A	D70F
-859C	0004
-859E	0010
-85A0	D70F
-85A2	C20F
-85A4	FFFF
-85A6	0010
-85A8	2401
-85AA	1CC6
-85AC	0000
-85AE	0000
-85B0	0000
-85B2	0000
-85B4	0000
-85B6	0000
-85B8	0000
-85BA	0000
-85BC	FFFF
-85BE	0020
-85C0	2401
-85C2	1CEE
-85C4	0000
-85C6	0000
-85C8	0000
-85CA	0000
-85CC	0000
-85CE	0000
-85D0	0000
-85D2	0000
-85D4	0000
-85D6	0000
-85D8	0000
-85DA	0000
-85DC	0000
-85DE	0000
-85E0	0000
-85E2	0000
-85E4	FFFF
-85E6	0020
-85E8	2401
-85EA	1D16
-85EC	0000
-85EE	0000
-85F0	0000
-85F2	0000
-85F4	0000
-85F6	0000
-85F8	0000
-85FA	0000
-85FC	0000
-85FE	0000
-8600	0000
-8602	0000
-8604	0000
-8606	0000
-8608	0000
-860A	0000
-860C	FFFF
-860E	0010
-8610	2401
-8612	1D3E
-8614	0000
-8616	0000
-8618	0000
-861A	0000
-861C	0000
-861E	0000
-8620	0000
-8622	0000
-8624	FFFF
-8626	0008
-8628	2401
-862A	1D72
-862C	0000
-862E	0000
-8630	0000
-8632	0000
-8634	FFFF
-8636	0008
-8638	2401
-863A	1D82
-863C	0000
-863E	0000
-8640	0000
-8642	0000
-8644	FFFF
-8646	0008
-8648	2401
-864A	1D92
-864C	0000
-864E	0000
-8650	0000
-8652	0000
-8654	FFFF
-8656	0008
-8658	2401
-865A	1DA2
-865C	0000
-865E	0000
-8660	0000
-8662	0000
-8664	FFFF
-8666	000A
-8668	2401
-866A	1DF2
-866C	0000
-866E	0000
-8670	0000
-8672	0000
-8674	0000
-8676	FFFF
-8678	0008
-867A	2401
-867C	1E02
-867E	0000
-8680	0000
-8682	0000
-8684	0000
-8686	FFFF
-8688	000A
-868A	2401
-868C	1E12
-868E	0000
-8690	0000
-8692	0000
-8694	0000
-8696	0000
-8698	FFFF
-869A	0008
-869C	2401
-869E	1E22
-86A0	0000
-86A2	0000
-86A4	0000
-86A6	0000
-86A8	FFFF
-86AA	0010
-86AC	2402
-86AE	A548
-86B0	0000
-86B2	0000
-86B4	0000
-86B6	0000
-86B8	0000
-86BA	0000
-86BC	0000
-86BE	0000
-86C0	FFFF
-86C2	0010
-86C4	2402
-86C6	A55C
-86C8	0000
-86CA	0000
-86CC	0000
-86CE	0000
-86D0	0000
-86D2	0000
-86D4	0000
-86D6	0000
-86D8	FFFF
-86DA	002C
-86DC	2402
-86DE	A574
-86E0	0100
-86E2	4000
-86E4	8000
-86E6	0001
-86E8	0002
-86EA	0002
-86EC	0002
-86EE	0002
-86F0	0002
-86F2	0002
-86F4	0800
-86F6	2100
-86F8	2900
-86FA	2E00
-86FC	2E00
-86FE	2E00
-8700	2E00
-8702	2E00
-8704	2E00
-8706	3000
-8708	A2FD
-870A	FEFE
-870C	FFFF
-870E	0008
-8710	2400
-8712	0260
-8714	0001
-8716	0000
-8718	0006
-871A	0700
-871C	FFFF
-871E	0008
-8720	2400
-8722	030C
-8724	0000
-8726	0300
-8728	CF00
-872A	0000
-872C	FFFF
-872E	0010
-8730	2400
-8732	0344
-8734	0008
-8736	0006
-8738	1F18
-873A	1F12
-873C	0010
-873E	000C
-8740	1000
-8742	1000
-8744	FFFF
-8746	0008
-8748	2400
-874A	0380
-874C	0100
-874E	0100
-8750	0100
-8752	0100
-8754	FFFF
-8756	0008
-8758	2400
-875A	0728
-875C	0000
-875E	0000
-8760	0000
-8762	0000
-8764	FFFF
-8766	000C
-8768	2400
-876A	0B02
-876C	0101
-876E	0001
-8770	0101
-8772	0100
-8774	0101
-8776	0100
-8778	0000
-877A	0000
-877C	FFFE
-877E	2400
-8780	FFFD
-8782	703C
-8784	0101
-8786	703E
-8788	0001
-878A	7048
-878C	021F
-878E	704A
-8790	0A00
-8792	705A
-8794	0220
-8796	705C
-8798	0A01
-879A	7274
-879C	000C
-879E	7276
-87A0	000B
-87A2	795A
-87A4	0020
-87A6	7970
-87A8	0020
-87AA	7996
-87AC	0101
-87AE	7A0E
-87B0	000F
-87B2	7A6E
-87B4	0019
-87B6	7A86
-87B8	0019
-87BA	7BDA
-87BC	004C
-87BE	82A2
-87C0	0014
-87C2	82BA
-87C4	0033
-87C6	8C9E
-87C8	0035
-87CA	8CA2
-87CC	0050
-87CE	8CCE
-87D0	0096
-87D2	8CD2
-87D4	00BE
-87D6	B176
-87D8	0206
-87DA	B220
-87DC	0301
-87DE	B268
-87E0	F380
-87E2	C4E2
-87E4	0000
-87E6	C53C
-87E8	0005
-87EA	C554
-87EC	1000
-87EE	D326
-87F0	1001
-87F2	D3EC
-87F4	1CB0
-87F6	D49C
-87F8	0003
-87FA	D4A8
-87FC	0001
-87FE	D4AC
-8800	0001
-8802	D4B0
-8804	0202
-8806	D4B8
-8808	0014
-880A	D4BC
-880C	0047
-880E	D4C4
-8810	0000
-8812	D4C8
-8814	0001
-8816	D4D0
-8818	0026
-881A	D4D2
-881C	0000
-881E	D4D6
-8820	001A
-8822	D4DE
-8824	0001
-8826	D4E2
-8828	0028
-882A	D4EC
-882C	0000
-882E	D4EE
-8830	0000
-8832	D4F8
-8834	0000
-8836	D4FA
-8838	0000
-883A	D554
-883C	00C4
-883E	D556
-8840	00EC
-8842	D560
-8844	0352
-8846	D562
-8848	037A
-884A	D684
-884C	F380
-884E	DB0E
-8850	4000
-8852	DB12
-8854	B000
-8856	DB14
-8858	D000
-885A	DB16
-885C	F000
-885E	DB42
-8860	D212
-8862	DB44
-8864	D212
-8866	DB46
-8868	D212
-886A	DC8C
-886C	0B3F
-886E	DC94
-8870	0301
-8872	E980
-8874	049E
-8876	F014
-8878	0007
-887A	F3F4
-887C	00C8
-887E	F3F6
-8880	10D6
-8882	FFFE
-8884	2401
-8886	FFFD
-8888	1C4E
-888A	0180
-888C	1C50
-888E	0480
-8890	2540
-8892	0000
-8894	25E0
-8896	0000
-8898	25E2
-889A	0000
-889C	29A8
-889E	0001
-88A0	29BA
-88A2	0020
-88A4	2A44
-88A6	0739
-88A8	2A56
-88AA	0004
-88AC	3132
-88AE	0002
-88B0	31F8
-88B2	0000
-88B4	31FA
-88B6	0000
-88B8	4396
-88BA	000D
-88BC	FFFE
-88BE	2402
-88C0	FFFD
-88C2	84C4
-88C4	0001
-88C6	A598
-88C8	0032
-88CA	A59A
-88CC	0038
-88CE	FFFE
-88D0	2400
-88D2	FFFD
-88D4	0086
-88D6	1400
-88D8	0350
-88DA	0008
-88DC	0352
-88DE	0008
-88E0	0900
-88E2	2222
-88E4	0B02
-88E6	0201
-88E8	0342
-88EA	12B0
-88EC	0000
-88EE	FFFF
-88F0	0008
-88F2	2400
-88F4	7314
-88F6	2E00
-88F8	3000
-88FA	9EFD
-88FC	0040
-88FE	FFFF
-8900	000A
-8902	2400
-8904	DADE
-8906	4000
-8908	E001
-890A	2003
-890C	8007
-890E	000B
-8910	FFFF
-8912	0010
-8914	2401
-8916	1C26
-8918	8001
-891A	8004
-891C	2010
-891E	2010
-8920	0005
-8922	00A0
-8924	2810
-8926	2810
-8928	FFFF
-892A	000A
-892C	2401
-892E	1C54
-8930	0010
-8932	0005
-8934	00A0
-8936	2810
-8938	2810
-893A	FFFF
-893C	0010
-893E	2401
-8940	1C76
-8942	8001
-8944	8004
-8946	2010
-8948	2010
-894A	0005
-894C	00A0
-894E	2810
-8950	2810
-8952	FFFF
-8954	0010
-8956	2401
-8958	1C9E
-895A	8001
-895C	8004
-895E	2010
-8960	2010
-8962	0005
-8964	00A0
-8966	2810
-8968	2810
-896A	FFFF
-896C	0010
-896E	2401
-8970	1CC6
-8972	8001
-8974	8004
-8976	2010
-8978	2010
-897A	0005
-897C	00A0
-897E	2810
-8980	2810
-8982	FFFF
-8984	0010
-8986	2401
-8988	1CEE
-898A	8001
-898C	8004
-898E	0010
-8990	0010
-8992	0005
-8994	00A0
-8996	2810
-8998	2810
-899A	FFFF
-899C	0010
-899E	2401
-89A0	1D16
-89A2	8001
-89A4	8004
-89A6	2010
-89A8	2010
-89AA	0005
-89AC	00A0
-89AE	2810
-89B0	2810
-89B2	FFFF
-89B4	0010
-89B6	2401
-89B8	1D3E
-89BA	8001
-89BC	8004
-89BE	2010
-89C0	2010
-89C2	0005
-89C4	00A0
-89C6	2810
-89C8	2810
-89CA	FFFF
-89CC	001C
-89CE	2402
-89D0	A57A
-89D2	A000
-89D4	4001
-89D6	8002
-89D8	0005
-89DA	000A
-89DC	A00F
-89DE	4011
-89E0	0E00
-89E2	2000
-89E4	2800
-89E6	1400
-89E8	2200
-89EA	2800
-89EC	2C00
-89EE	FFFF
-89F0	0008
-89F2	2400
-89F4	0344
-89F6	0000
-89F8	0000
-89FA	1F20
-89FC	1F18
-89FE	FFFF
-8A00	0008
-8A02	2400
-8A04	0380
-8A06	0200
-8A08	0200
-8A0A	0200
-8A0C	0200
-8A0E	0000
-8A10	0000
-8A12	FFFE
-8A14	2400
-8A16	FFFD
-8A18	D49C
-8A1A	0022
-8A1C	D4A8
-8A1E	0000
-8A20	D4B0
-8A22	046A
-8A24	D4BC
-8A26	0062
-8A28	D4D0
-8A2A	000A
-8A2C	D4E2
-8A2E	0036
-8A30	D556
-8A32	00FA
-8A34	D562
-8A36	0388
-8A38	FFFE
-8A3A	2401
-8A3C	FFFD
-8A3E	2A44
-8A40	0952
-8A42	FFFE
-8A44	2400
-8A46	FFFD
-8A48	0346
-8A4A	0300
-8A4C	034A
-8A4E	151F
-8A50	034E
-8A52	0900
-8A54	0000
-8A56	0000
-8A58	0000
-8A5A	FFFE
-8A5C	2400
-8A5E	FFFD
-8A60	703C
-8A62	0101
-8A64	7048
-8A66	009F
-8A68	705A
-8A6A	00A0
-8A6C	7274
-8A6E	B000
-8A70	7276
-8A72	0000
-8A74	7278
-8A76	D212
-8A78	7806
-8A7A	0101
-8A7C	7808
-8A7E	0C3F
-8A80	795A
-8A82	0020
-8A84	7970
-8A86	0020
-8A88	7A0E
-8A8A	000F
-8A8C	7A6E
-8A8E	0019
-8A90	7A86
-8A92	0019
-8A94	82A2
-8A96	0014
-8A98	82BA
-8A9A	0033
-8A9C	8C9E
-8A9E	0035
-8AA0	8CA2
-8AA2	0050
-8AA4	8CCE
-8AA6	0096
-8AA8	8CD2
-8AAA	00BE
-8AAC	B176
-8AAE	0206
-8AB0	B220
-8AB2	0301
-8AB4	B268
-8AB6	E380
-8AB8	C4D8
-8ABA	0010
-8ABC	C4E2
-8ABE	0000
-8AC0	C53C
-8AC2	0005
-8AC4	C554
-8AC6	1000
-8AC8	D326
-8ACA	1001
-8ACC	D3EC
-8ACE	1CB0
-8AD0	D4A8
-8AD2	0001
-8AD4	D4AC
-8AD6	0001
-8AD8	D4B0
-8ADA	037E
-8ADC	D4B8
-8ADE	0014
-8AE0	D4BC
-8AE2	040B
-8AE4	D4C4
-8AE6	0000
-8AE8	D4C8
-8AEA	0001
-8AEC	D4D0
-8AEE	000A
-8AF0	D4D2
-8AF2	0000
-8AF4	D4D6
-8AF6	001A
-8AF8	D4DE
-8AFA	0001
-8AFC	D4E2
-8AFE	0036
-8B00	D4EC
-8B02	0000
-8B04	D4EE
-8B06	0000
-8B08	D4F8
-8B0A	0000
-8B0C	D4FA
-8B0E	0000
-8B10	D554
-8B12	00C4
-8B14	D556
-8B16	00FA
-8B18	D560
-8B1A	0352
-8B1C	D562
-8B1E	0388
-8B20	D684
-8B22	E380
-8B24	D704
-8B26	7800
-8B28	DADE
-8B2A	00A0
-8B2C	DAE0
-8B2E	0140
-8B30	DB0C
-8B32	000D
-8B34	DB0E
-8B36	000F
-8B38	DB10
-8B3A	000D
-8B3C	DB3C
-8B3E	D236
-8B40	DB3E
-8B42	D236
-8B44	DB40
-8B46	D236
-8B48	DC8C
-8B4A	0B3F
-8B4C	DC94
-8B4E	0301
-8B50	E980
-8B52	049E
-8B54	F3F4
-8B56	00C8
-8B58	F3F6
-8B5A	10D6
-8B5C	FFFE
-8B5E	2401
-8B60	FFFD
-8B62	195E
-8B64	0101
-8B66	1966
-8B68	0002
-8B6A	2540
-8B6C	0000
-8B6E	25E0
-8B70	0000
-8B72	25E2
-8B74	0000
-8B76	29A8
-8B78	0001
-8B7A	29BA
-8B7C	0020
-8B7E	2A44
-8B80	0739
-8B82	2A56
-8B84	0004
-8B86	3132
-8B88	0002
-8B8A	31F8
-8B8C	0000
-8B8E	31FA
-8B90	0000
-8B92	4396
-8B94	000D
-8B96	5A70
-8B98	0001
-8B9A	FFFE
-8B9C	2402
-8B9E	FFFD
-8BA0	A598
-8BA2	0032
-8BA4	A59A
-8BA6	0038
-8BA8	FFFE
-8BAA	2400
-8BAC	FFFD
-8BAE	0086
-8BB0	0280
-8BB2	021E
-8BB4	0006
-8BB6	034E
-8BB8	0900
-8BBA	0350
-8BBC	0008
-8BBE	0352
-8BC0	0008
-8BC2	0722
-8BC4	0020
-8BC6	0900
-8BC8	2222
-8BCA	0B02
-8BCC	0201
-8BCE	0342
-8BD0	2560
-8BD2	0000
-8BD4	FFFF
-8BD6	0010
-8BD8	2401
-8BDA	1C26
-8BDC	8001
-8BDE	F004
-8BE0	2010
-8BE2	5610
-8BE4	0005
-8BE6	00A0
-8BE8	B610
-8BEA	7011
-8BEC	FFFF
-8BEE	0018
-8BF0	2401
-8BF2	1C4E
-8BF4	8001
-8BF6	F004
-8BF8	2810
-8BFA	5110
-8BFC	0005
-8BFE	F009
-8C00	9710
-8C02	DA10
-8C04	000A
-8C06	00A0
-8C08	DA10
-8C0A	7011
-8C0C	FFFF
-8C0E	0018
-8C10	2401
-8C12	1C76
-8C14	8001
-8C16	F004
-8C18	2810
-8C1A	6610
-8C1C	0005
-8C1E	F009
-8C20	7210
-8C22	DD10
-8C24	000A
-8C26	00A0
-8C28	DD10
-8C2A	7011
-8C2C	FFFF
-8C2E	0010
-8C30	2401
-8C32	1C9E
-8C34	8001
-8C36	F004
-8C38	2010
-8C3A	5610
-8C3C	0005
-8C3E	00A0
-8C40	C410
-8C42	7011
-8C44	FFFF
-8C46	0010
-8C48	2401
-8C4A	1CC6
-8C4C	8001
-8C4E	F004
-8C50	2010
-8C52	5610
-8C54	0005
-8C56	00A0
-8C58	B610
-8C5A	7011
-8C5C	FFFF
-8C5E	0018
-8C60	2401
-8C62	1CEE
-8C64	8001
-8C66	F004
-8C68	2810
-8C6A	5110
-8C6C	0005
-8C6E	F009
-8C70	9710
-8C72	DA10
-8C74	000A
-8C76	00A0
-8C78	DA10
-8C7A	7011
-8C7C	FFFF
-8C7E	0018
-8C80	2401
-8C82	1D16
-8C84	8001
-8C86	F004
-8C88	2810
-8C8A	6610
-8C8C	0005
-8C8E	F009
-8C90	7210
-8C92	DD10
-8C94	000A
-8C96	00A0
-8C98	DD10
-8C9A	7011
-8C9C	FFFF
-8C9E	0010
-8CA0	2401
-8CA2	1D3E
-8CA4	8001
-8CA6	F004
-8CA8	2010
-8CAA	5610
-8CAC	0005
-8CAE	00A0
-8CB0	C410
-8CB2	7011
-8CB4	FFFF
-8CB6	001C
-8CB8	2402
-8CBA	A57A
-8CBC	A000
-8CBE	4001
-8CC0	8002
-8CC2	0005
-8CC4	000A
-8CC6	A00F
-8CC8	4011
-8CCA	0E00
-8CCC	2000
-8CCE	2800
-8CD0	1400
-8CD2	2200
-8CD4	2800
-8CD6	2C00
-8CD8	FFFF
-8CDA	0008
-8CDC	2400
-8CDE	0344
-8CE0	0000
-8CE2	0003
-8CE4	1F20
-8CE6	1F15
-8CE8	FFFF
-8CEA	0008
-8CEC	2400
-8CEE	0380
-8CF0	0200
-8CF2	0200
-8CF4	0200
-8CF6	0200
-8CF8	0000
-8CFA	0000
-8CFC	FFFE
-8CFE	2400
-8D00	FFFD
-8D02	D49C
-8D04	0000
-8D06	D4A8
-8D08	0000
-8D0A	D4AC
-8D0C	0001
-8D0E	D4B8
-8D10	0014
-8D12	D4C4
-8D14	0000
-8D16	D4D0
-8D18	000A
-8D1A	D4D2
-8D1C	0000
-8D1E	D4DE
-8D20	0001
-8D22	D4EC
-8D24	0000
-8D26	D4EE
-8D28	0000
-8D2A	D4F8
-8D2C	0000
-8D2E	D4FA
-8D30	0000
-8D32	FFFE
-8D34	2401
-8D36	FFFD
-8D38	1D72
-8D3A	FFFC
-8D3C	1D74
-8D3E	FFFC
-8D40	1D82
-8D42	FFFC
-8D44	1D84
-8D46	FFFC
-8D48	25E0
-8D4A	0000
-8D4C	25E2
-8D4E	0000
-8D50	2A44
-8D52	047E
-8D54	31D0
-8D56	0002
-8D58	31FA
-8D5A	04CD
-8D5C	FFFE
-8D5E	2400
-8D60	FFFD
-8D62	0346
-8D64	0780
-8D66	034A
-8D68	109F
-8D6A	034E
-8D6C	0900
-8D6E	0B08
-8D70	0101
-8D72	0000
-8D74	FFFF
-8D76	0008
-8D78	2401
-8D7A	1D92
-8D7C	FCFF
-8D7E	FCFF
-8D80	FCFF
-8D82	FCFF
-8D84	FFFF
-8D86	0008
-8D88	2401
-8D8A	1DA2
-8D8C	FCFF
-8D8E	FCFF
-8D90	FCFF
-8D92	FCFF
-8D94	0000
-8D96	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_long_1.3g_0823.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_long_1.3g_0823.txt
deleted file mode 100755
index 58d24094..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_long_1.3g_0823.txt
+++ /dev/null
@@ -1,6286 +0,0 @@
-FCFC	4000
-0000	000D
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0101
-FCFC	2001
-3C60	0000
-FCFC	2002
-A614	8280
-A616	0100
-A618	1753
-A61A	02FC
-A61C	E702
-A61E	83EA
-A620	B7E7
-A622	0124
-A624	9387
-A626	0787
-A628	83A4
-A62A	870D
-A62C	03A4
-A62E	C70D
-A630	0146
-A632	A685
-A634	2285
-A636	9740
-A638	01FC
-A63A	E780
-A63C	E040
-A63E	97B0
-A640	FEFB
-A642	E780
-A644	60DC
-A646	0546
-A648	A685
-A64A	2285
-A64C	9740
-A64E	01FC
-A650	E780
-A652	803F
-A654	37A7
-A656	0224
-A658	9307
-A65A	8754
-A65C	03C6
-A65E	C702
-A660	8546
-A662	6301
-A664	D602
-A666	83C6
-A668	0700
-A66A	0947
-A66C	6384
-A66E	E608
-A670	B7C7
-A672	0224
-A674	83A7
-A676	07B7
-A678	0545
-A67A	8297
-A67C	1753
-A67E	02FC
-A680	6700
-A682	83E6
-A684	03D5
-A686	4705
-A688	05C9
-A68A	83D8
-A68C	2705
-A68E	B7E6
-A690	0124
-A692	83D5
-A694	665F
-A696	1307
-A698	8754
-A69A	8146
-A69C	2548
-A69E	0356
-A6A0	E702
-A6A2	0907
-A6A4	63E0
-A6A6	C50E
-A6A8	8506
-A6AA	E39A
-A6AC	06FF
-A6AE	3707
-A6B0	0040
-A6B2	3A95
-A6B4	2310
-A6B6	1501
-A6B8	03D5
-A6BA	6705
-A6BC	4DD5
-A6BE	83D8
-A6C0	2705
-A6C2	37E7
-A6C4	0124
-A6C6	8355
-A6C8	675F
-A6CA	BE86
-A6CC	0147
-A6CE	2548
-A6D0	03D6
-A6D2	E602
-A6D4	8906
-A6D6	63EE
-A6D8	C50A
-A6DA	0507
-A6DC	E31A
-A6DE	07FF
-A6E0	3707
-A6E2	0040
-A6E4	3A95
-A6E6	2310
-A6E8	1501
-A6EA	83C6
-A6EC	0700
-A6EE	0947
-A6F0	E390
-A6F2	E6F8
-A6F4	03D5
-A6F6	8702
-A6F8	1DC5
-A6FA	83D8
-A6FC	6702
-A6FE	37F7
-A700	0124
-A702	8355
-A704	A781
-A706	BE86
-A708	0147
-A70A	2548
-A70C	03D6
-A70E	2600
-A710	8906
-A712	63E3
-A714	C506
-A716	0507
-A718	E31A
-A71A	07FF
-A71C	3707
-A71E	0040
-A720	3A95
-A722	2310
-A724	1501
-A726	03D5
-A728	A702
-A72A	39D1
-A72C	83D8
-A72E	6702
-A730	37F7
-A732	0124
-A734	8355
-A736	A781
-A738	BE86
-A73A	0147
-A73C	2548
-A73E	03D6
-A740	2600
-A742	8906
-A744	63E4
-A746	C502
-A748	0507
-A74A	E31A
-A74C	07FF
-A74E	B707
-A750	0040
-A752	3E95
-A754	B7C7
-A756	0224
-A758	83A7
-A75A	07B7
-A75C	2310
-A75E	1501
-A760	0545
-A762	8297
-A764	1753
-A766	02FC
-A768	6700
-A76A	03D8
-A76C	2107
-A76E	0607
-A770	BA97
-A772	83D8
-A774	4700
-A776	E1BF
-A778	2107
-A77A	0607
-A77C	3E97
-A77E	8358
-A780	4700
-A782	69BF
-A784	1387
-A786	0602
-A788	0607
-A78A	3E97
-A78C	8358
-A78E	0700
-A790	39BF
-A792	1307
-A794	0702
-A796	0607
-A798	3E97
-A79A	8358
-A79C	0700
-A79E	89B7
-A7A0	1753
-A7A2	02FC
-A7A4	E702
-A7A6	83CF
-A7A8	3284
-A7AA	B7E7
-A7AC	0124
-A7AE	032B
-A7B0	4600
-A7B2	832A
-A7B4	4609
-A7B6	032A
-A7B8	C604
-A7BA	0348
-A7BC	8600
-A7BE	9387
-A7C0	0787
-A7C2	0346
-A7C4	8609
-A7C6	0347
-A7C8	0405
-A7CA	83AB
-A7CC	070E
-A7CE	03AC
-A7D0	470E
-A7D2	3318
-A7D4	0B01
-A7D6	3317
-A7D8	EA00
-A7DA	3396
-A7DC	CA00
-A7DE	2322
-A7E0	0401
-A7E2	78C4
-A7E4	AA84
-A7E6	2E89
-A7E8	232A
-A7EA	C408
-A7EC	DE85
-A7EE	6285
-A7F0	0146
-A7F2	B689
-A7F4	9740
-A7F6	01FC
-A7F8	E780
-A7FA	0025
-A7FC	CE86
-A7FE	2286
-A800	CA85
-A802	2685
-A804	97B0
-A806	FDFB
-A808	E780
-A80A	00B0
-A80C	6285
-A80E	0546
-A810	DE85
-A812	9740
-A814	01FC
-A816	E780
-A818	2023
-A81A	B7C7
-A81C	0224
-A81E	83A7
-A820	07B7
-A822	2322
-A824	6401
-A826	232A
-A828	5409
-A82A	2326
-A82C	4405
-A82E	0145
-A830	8297
-A832	1753
-A834	02FC
-A836	6700
-A838	E3C9
-A83A	0100
-A83C	1753
-A83E	02FC
-A840	E702
-A842	43C8
-A844	2A84
-A846	EFE0
-A848	EFA9
-A84A	A147
-A84C	6306
-A84E	F400
-A850	1753
-A852	02FC
-A854	6700
-A856	43C9
-A858	9770
-A85A	FFFB
-A85C	E780
-A85E	000C
-A860	39C5
-A862	B737
-A864	0124
-A866	83C7
-A868	271A
-A86A	FDD3
-A86C	3784
-A86E	0040
-A870	8355
-A872	E4F3
-A874	0D45
-A876	93E5
-A878	0524
-A87A	97D0
-A87C	FFFB
-A87E	E780
-A880	A00A
-A882	8355
-A884	24F7
-A886	B7A7
-A888	0124
-A88A	9387
-A88C	0753
-A88E	03D7
-A890	47B6
-A892	C205
-A894	C181
-A896	1377
-A898	F7DB
-A89A	93F5
-A89C	F5DB
-A89E	4145
-A8A0	2392
-A8A2	E7B6
-A8A4	97D0
-A8A6	FFFB
-A8A8	E780
-A8AA	0008
-A8AC	55B7
-A8AE	9770
-A8B0	FFFB
-A8B2	E780
-A8B4	A003
-A8B6	55D5
-A8B8	9770
-A8BA	FFFB
-A8BC	E780
-A8BE	807D
-A8C0	19C9
-A8C2	B797
-A8C4	0124
-A8C6	9387
-A8C8	07D7
-A8CA	03C7
-A8CC	8703
-A8CE	83C7
-A8D0	2706
-A8D2	6306
-A8D4	F706
-A8D6	9770
-A8D8	FFFB
-A8DA	E780
-A8DC	A07B
-A8DE	51D1
-A8E0	B797
-A8E2	0124
-A8E4	9387
-A8E6	07D7
-A8E8	03C7
-A8EA	C701
-A8EC	83C7
-A8EE	2706
-A8F0	E319
-A8F2	F7F6
-A8F4	B727
-A8F6	0224
-A8F8	0564
-A8FA	9387
-A8FC	076B
-A8FE	A297
-A900	03C7
-A902	F780
-A904	8547
-A906	6317
-A908	F700
-A90A	B737
-A90C	0124
-A90E	83C7
-A910	57A5
-A912	B1C3
-A914	B787
-A916	0040
-A918	83D5
-A91A	E7F3
-A91C	0D45
-A91E	93E5
-A920	0501
-A922	97D0
-A924	FFFB
-A926	E780
-A928	2000
-A92A	B7A7
-A92C	0124
-A92E	9387
-A930	0753
-A932	03D7
-A934	47B6
-A936	3D9B
-A938	2392
-A93A	E7B6
-A93C	1DB7
-A93E	B727
-A940	0224
-A942	0564
-A944	9387
-A946	076B
-A948	A297
-A94A	03C7
-A94C	F780
-A94E	9147
-A950	E30D
-A952	F7FA
-A954	C1B7
-A956	B787
-A958	0040
-A95A	83D5
-A95C	E7F3
-A95E	0D45
-A960	93E5
-A962	0504
-A964	97D0
-A966	FFFB
-A968	E780
-A96A	00FC
-A96C	B797
-A96E	0124
-A970	9387
-A972	0753
-A974	A297
-A976	03D7
-A978	47B6
-A97A	1377
-A97C	F7FB
-A97E	2392
-A980	E7B6
-A982	C5B5
-A984	3571
-A986	22CF
-A988	26CD
-A98A	7324
-A98C	2034
-A98E	F324
-A990	1034
-A992	7360
-A994	0430
-A996	06CB
-A998	16C9
-A99A	1AC7
-A99C	1EC5
-A99E	2AC3
-A9A0	2EC1
-A9A2	B2DE
-A9A4	B6DC
-A9A6	BADA
-A9A8	BED8
-A9AA	C2D6
-A9AC	C6D4
-A9AE	F2D2
-A9B0	F6D0
-A9B2	FACE
-A9B4	FECC
-A9B6	82E2
-A9B8	86E0
-A9BA	0AFE
-A9BC	0EFC
-A9BE	12FA
-A9C0	16F8
-A9C2	1AF6
-A9C4	1EF4
-A9C6	2AF2
-A9C8	2EF0
-A9CA	32EE
-A9CC	36EC
-A9CE	3AEA
-A9D0	3EE8
-A9D2	42E6
-A9D4	46E4
-A9D6	72E2
-A9D8	76E0
-A9DA	272E
-A9DC	E1FF
-A9DE	272C
-A9E0	F1FF
-A9E2	9770
-A9E4	FFFB
-A9E6	E780
-A9E8	60F3
-A9EA	19C5
-A9EC	9770
-A9EE	FFFB
-A9F0	E780
-A9F2	C0EF
-A9F4	631C
-A9F6	0512
-A9F8	9305
-A9FA	0024
-A9FC	4145
-A9FE	97D0
-AA00	FFFB
-AA02	E780
-AA04	60F9
-AA06	8145
-AA08	9377
-AA0A	1500
-AA0C	85C7
-AA0E	37D7
-AA10	0124
-AA12	B7A7
-AA14	0124
-AA16	1307
-AA18	07C4
-AA1A	9387
-AA1C	0753
-AA1E	0356
-AA20	4707
-AA22	83D6
-AA24	A7B6
-AA26	0506
-AA28	93E6
-AA2A	1600
-AA2C	231A
-AA2E	C706
-AA30	2395
-AA32	D7B6
-AA34	9377
-AA36	2500
-AA38	85C7
-AA3A	37D7
-AA3C	0124
-AA3E	B7A7
-AA40	0124
-AA42	1307
-AA44	07C4
-AA46	9387
-AA48	0753
-AA4A	0356
-AA4C	C70C
-AA4E	83D6
-AA50	A7B6
-AA52	0506
-AA54	93E6
-AA56	2600
-AA58	2316
-AA5A	C70C
-AA5C	2395
-AA5E	D7B6
-AA60	9377
-AA62	0520
-AA64	1375
-AA66	0504
-AA68	C5C3
-AA6A	B7D7
-AA6C	0124
-AA6E	9387
-AA70	07C4
-AA72	03D7
-AA74	6708
-AA76	0507
-AA78	2393
-AA7A	E708
-AA7C	D1C5
-AA7E	37A7
-AA80	0124
-AA82	1307
-AA84	0753
-AA86	8356
-AA88	A7B6
-AA8A	93E6
-AA8C	0620
-AA8E	2315
-AA90	D7B6
-AA92	11C9
-AA94	03D6
-AA96	A708
-AA98	0506
-AA9A	2395
-AA9C	C708
-AA9E	93E6
-AAA0	0604
-AAA2	2315
-AAA4	D7B6
-AAA6	DA40
-AAA8	CA42
-AAAA	3A43
-AAAC	AA43
-AAAE	1A45
-AAB0	8A45
-AAB2	7656
-AAB4	E656
-AAB6	5657
-AAB8	C657
-AABA	3658
-AABC	A658
-AABE	165E
-AAC0	865E
-AAC2	764F
-AAC4	E64F
-AAC6	1660
-AAC8	8660
-AACA	7271
-AACC	E271
-AACE	5272
-AAD0	C272
-AAD2	3273
-AAD4	A273
-AAD6	1275
-AAD8	8275
-AADA	7266
-AADC	E266
-AADE	5267
-AAE0	C267
-AAE2	3268
-AAE4	A268
-AAE6	126E
-AAE8	826E
-AAEA	072F
-AAEC	C1FF
-AAEE	872F
-AAF0	81FF
-AAF2	7370
-AAF4	0430
-AAF6	7390
-AAF8	1434
-AAFA	7310
-AAFC	2434
-AAFE	7A44
-AB00	EA44
-AB02	0D61
-AB04	7300
-AB06	2030
-AB08	59DD
-AB0A	B7D7
-AB0C	0124
-AB0E	9387
-AB10	07C4
-AB12	03D7
-AB14	A708
-AB16	0507
-AB18	2395
-AB1A	E708
-AB1C	C9D5
-AB1E	37A7
-AB20	0124
-AB22	1307
-AB24	0753
-AB26	8356
-AB28	A7B6
-AB2A	95BF
-AB2C	B7A7
-AB2E	0124
-AB30	83D5
-AB32	8709
-AB34	4145
-AB36	97D0
-AB38	FFFB
-AB3A	E780
-AB3C	E0E5
-AB3E	8545
-AB40	E1B5
-AB42	0100
-AB44	8280
-AB46	0100
-AB48	1753
-AB4A	02FC
-AB4C	E702
-AB4E	8397
-AB50	37E4
-AB52	0124
-AB54	1304
-AB56	044C
-AB58	8344
-AB5A	E40A
-AB5C	8547
-AB5E	2307
-AB60	F40A
-AB62	97A0
-AB64	FDFB
-AB66	E780
-AB68	20E3
-AB6A	2307
-AB6C	940A
-AB6E	1753
-AB70	02FC
-AB72	6700
-AB74	6397
-AB76	0100
-AB78	B7A7
-AB7A	0224
-AB7C	83C7
-AB7E	075A
-AB80	0547
-AB82	6383
-AB84	E700
-AB86	8280
-AB88	1753
-AB8A	02FC
-AB8C	E702
-AB8E	E391
-AB90	3794
-AB92	0124
-AB94	1304
-AB96	0453
-AB98	0347
-AB9A	041B
-AB9C	4111
-AB9E	6307
-ABA0	F700
-ABA2	4101
-ABA4	1753
-ABA6	02FC
-ABA8	6700
-ABAA	6393
-ABAC	8947
-ABAE	E31A
-ABB0	F5FE
-ABB2	8347
-ABB4	3441
-ABB6	ADC3
-ABB8	83A9
-ABBA	0500
-ABBC	2EC6
-ABBE	97C0
-ABC0	01FC
-ABC2	E780
-ABC4	20B8
-ABC6	AA84
-ABC8	9780
-ABCA	01FC
-ABCC	E780
-ABCE	80C7
-ABD0	B245
-ABD2	2A89
-ABD4	9C41
-ABD6	63F3
-ABD8	9700
-ABDA	A687
-ABDC	8851
-ABDE	9CC1
-ABE0	2EC6
-ABE2	4A95
-ABE4	97B0
-ABE6	00FC
-ABE8	E780
-ABEA	00C5
-ABEC	B245
-ABEE	AA84
-ABF0	E8C9
-ABF2	3385
-ABF4	2901
-ABF6	97B0
-ABF8	00FC
-ABFA	E780
-ABFC	E0C3
-ABFE	8567
-AC00	3E94
-AC02	8327
-AC04	C483
-AC06	2695
-AC08	B245
-AC0A	63F3
-AC0C	A700
-AC0E	AA87
-AC10	2322
-AC12	F498
-AC14	E8C5
-AC16	71B7
-AC18	0145
-AC1A	2EC6
-AC1C	97B0
-AC1E	01FC
-AC20	E780
-AC22	8035
-AC24	B245
-AC26	AA89
-AC28	51BF
-AC2A	0100
-AC2C	1753
-AC2E	02FC
-AC30	E702
-AC32	4389
-AC34	2A84
-AC36	EFE0
-AC38	AFFC
-AC3A	01E8
-AC3C	B7D7
-AC3E	0124
-AC40	03A7
-AC42	87C1
-AC44	9147
-AC46	6306
-AC48	F700
-AC4A	1753
-AC4C	02FC
-AC4E	6700
-AC50	A389
-AC52	B7D7
-AC54	0124
-AC56	83C7
-AC58	07FA
-AC5A	E5DB
-AC5C	B747
-AC5E	0124
-AC60	83C7
-AC62	27C4
-AC64	FDF3
-AC66	97E0
-AC68	00FC
-AC6A	E780
-AC6C	A097
-AC6E	B787
-AC70	0224
-AC72	0547
-AC74	A380
-AC76	E74E
-AC78	C9BF
-AC7A	0100
-AC7C	1753
-AC7E	02FC
-AC80	E702
-AC82	4384
-AC84	3784
-AC86	0224
-AC88	1304
-AC8A	C449
-AC8C	8347
-AC8E	5404
-AC90	99E7
-AC92	EFE0
-AC94	7F82
-AC96	1753
-AC98	02FC
-AC9A	6700
-AC9C	E384
-AC9E	97E0
-ACA0	00FC
-ACA2	E780
-ACA4	20AF
-ACA6	A302
-ACA8	0404
-ACAA	EFE0
-ACAC	FF80
-ACAE	1753
-ACB0	02FC
-ACB2	6700
-ACB4	6383
-ACB6	0100
-ACB8	1753
-ACBA	02FC
-ACBC	E702
-ACBE	8380
-ACC0	B7E7
-ACC2	0124
-ACC4	9387
-ACC6	0787
-ACC8	03A9
-ACCA	870E
-ACCC	83A4
-ACCE	C70E
-ACD0	0146
-ACD2	CA85
-ACD4	2A84
-ACD6	2685
-ACD8	9740
-ACDA	01FC
-ACDC	E780
-ACDE	C0D6
-ACE0	2285
-ACE2	97A0
-ACE4	FFFB
-ACE6	E780
-ACE8	603E
-ACEA	0546
-ACEC	CA85
-ACEE	2685
-ACF0	9740
-ACF2	01FC
-ACF4	E780
-ACF6	40D5
-ACF8	8547
-ACFA	630F
-ACFC	F400
-ACFE	9147
-AD00	630C
-AD02	F400
-AD04	B7C7
-AD06	0224
-AD08	83A7
-AD0A	07B7
-AD0C	0945
-AD0E	8297
-AD10	1743
-AD12	02FC
-AD14	6700
-AD16	437D
-AD18	9770
-AD1A	FFFB
-AD1C	E780
-AD1E	00C0
-AD20	75F1
-AD22	9770
-AD24	FFFB
-AD26	E780
-AD28	60BC
-AD2A	69DD
-AD2C	9770
-AD2E	FFFB
-AD30	E780
-AD32	4036
-AD34	19C9
-AD36	B797
-AD38	0124
-AD3A	9387
-AD3C	07D7
-AD3E	03C7
-AD40	8703
-AD42	83C7
-AD44	2706
-AD46	6306
-AD48	F706
-AD4A	9770
-AD4C	FFFB
-AD4E	E780
-AD50	6034
-AD52	4DD9
-AD54	B797
-AD56	0124
-AD58	9387
-AD5A	07D7
-AD5C	03C7
-AD5E	C701
-AD60	83C7
-AD62	2706
-AD64	E310
-AD66	F7FA
-AD68	B7C7
-AD6A	0224
-AD6C	83A7
-AD6E	47B7
-AD70	B706
-AD72	0040
-AD74	1386
-AD76	4606
-AD78	8965
-AD7A	3E96
-AD7C	1387
-AD7E	061F
-AD80	9385
-AD82	F5F1
-AD84	2310
-AD86	B600
-AD88	3E97
-AD8A	7D56
-AD8C	2310
-AD8E	C700
-AD90	37D6
-AD92	0124
-AD94	1306
-AD96	06E7
-AD98	0357
-AD9A	C605
-AD9C	0356
-AD9E	6606
-ADA0	9386
-ADA2	861D
-ADA4	3297
-ADA6	4207
-ADA8	B697
-ADAA	4183
-ADAC	2390
-ADAE	E700
-ADB0	91BF
-ADB2	B7C7
-ADB4	0224
-ADB6	83A7
-ADB8	47B7
-ADBA	B706
-ADBC	0040
-ADBE	1386
-ADC0	4606
-ADC2	8965
-ADC4	3E96
-ADC6	1387
-ADC8	061F
-ADCA	9385
-ADCC	F5F1
-ADCE	2310
-ADD0	B600
-ADD2	3E97
-ADD4	7D56
-ADD6	2310
-ADD8	C700
-ADDA	37D6
-ADDC	0124
-ADDE	1306
-ADE0	06E7
-ADE2	0357
-ADE4	0606
-ADE6	9386
-ADE8	A61D
-ADEA	0356
-ADEC	6606
-ADEE	5DBF
-ADF0	1743
-ADF2	02FC
-ADF4	E702
-ADF6	036D
-ADF8	B7D7
-ADFA	0024
-ADFC	83C7
-ADFE	476D
-AE00	8544
-AE02	6380
-AE04	9714
-AE06	B7E7
-AE08	0024
-AE0A	03C4
-AE0C	C784
-AE0E	B7A7
-AE10	0124
-AE12	83C7
-AE14	6792
-AE16	3334
-AE18	8000
-AE1A	3304
-AE1C	8040
-AE1E	7998
-AE20	1304
-AE22	6402
-AE24	EDE7
-AE26	B767
-AE28	0024
-AE2A	9387
-AE2C	0733
-AE2E	03D7
-AE30	E75B
-AE32	19C7
-AE34	1347
-AE36	F7FF
-AE38	618F
-AE3A	1314
-AE3C	0701
-AE3E	4180
-AE40	83D7
-AE42	075C
-AE44	0D45
-AE46	5D8C
-AE48	4204
-AE4A	4180
-AE4C	A285
-AE4E	97D0
-AE50	FFFB
-AE52	E780
-AE54	A0BB
-AE56	9315
-AE58	0501
-AE5A	C181
-AE5C	AA84
-AE5E	6309
-AE60	B400
-AE62	0565
-AE64	A18D
-AE66	2D05
-AE68	97A0
-AE6A	FFFB
-AE6C	E780
-AE6E	8046
-AE70	1395
-AE72	0401
-AE74	93F7
-AE76	1400
-AE78	4181
-AE7A	91CB
-AE7C	B7D7
-AE7E	0124
-AE80	9387
-AE82	07C4
-AE84	03D7
-AE86	4707
-AE88	0507
-AE8A	239A
-AE8C	E706
-AE8E	9377
-AE90	2500
-AE92	91CB
-AE94	B7D7
-AE96	0124
-AE98	9387
-AE9A	07C4
-AE9C	03D7
-AE9E	C70C
-AEA0	0507
-AEA2	2396
-AEA4	E70C
-AEA6	9377
-AEA8	4500
-AEAA	91CB
-AEAC	B7D7
-AEAE	0124
-AEB0	9387
-AEB2	07C4
-AEB4	03D7
-AEB6	E70C
-AEB8	0507
-AEBA	2397
-AEBC	E70C
-AEBE	9377
-AEC0	0502
-AEC2	91CB
-AEC4	B7D7
-AEC6	0124
-AEC8	9387
-AECA	07C4
-AECC	03D7
-AECE	070F
-AED0	0507
-AED2	2398
-AED4	E70E
-AED6	9377
-AED8	0520
-AEDA	91CB
-AEDC	B7D7
-AEDE	0124
-AEE0	9387
-AEE2	07C4
-AEE4	03D7
-AEE6	6708
-AEE8	0507
-AEEA	2393
-AEEC	E708
-AEEE	1375
-AEF0	0504
-AEF2	11C9
-AEF4	B7D7
-AEF6	0124
-AEF8	9387
-AEFA	07C4
-AEFC	03D7
-AEFE	A708
-AF00	0507
-AF02	2395
-AF04	E708
-AF06	1743
-AF08	02FC
-AF0A	6700
-AF0C	E35D
-AF0E	B7D7
-AF10	0124
-AF12	83D7
-AF14	A7E7
-AF16	81DB
-AF18	9760
-AF1A	FEFB
-AF1C	E780
-AF1E	8068
-AF20	6311
-AF22	9506
-AF24	B797
-AF26	0124
-AF28	9387
-AF2A	07D7
-AF2C	03C7
-AF2E	C701
-AF30	83C7
-AF32	2706
-AF34	6307
-AF36	F704
-AF38	1364
-AF3A	0424
-AF3C	4204
-AF3E	4180
-AF40	11A0
-AF42	0144
-AF44	B767
-AF46	0024
-AF48	9387
-AF4A	0733
-AF4C	03C7
-AF4E	273B
-AF50	E30F
-AF52	07EC
-AF54	37A7
-AF56	0124
-AF58	0347
-AF5A	6792
-AF5C	E309
-AF5E	07EC
-AF60	37D7
-AF62	0124
-AF64	0357
-AF66	A7E7
-AF68	E303
-AF6A	07EC
-AF6C	3797
-AF6E	0124
-AF70	0347
-AF72	1700
-AF74	E30D
-AF76	07EA
-AF78	1374
-AF7A	F4DF
-AF7C	4204
-AF7E	4180
-AF80	7DB5
-AF82	9760
-AF84	FEFB
-AF86	E780
-AF88	E061
-AF8A	8547
-AF8C	E31C
-AF8E	F5FA
-AF90	B797
-AF92	0124
-AF94	9387
-AF96	07D7
-AF98	03C7
-AF9A	C701
-AF9C	83C7
-AF9E	2706
-AFA0	E312
-AFA2	F7FA
-AFA4	1364
-AFA6	0420
-AFA8	4204
-AFAA	4180
-AFAC	61BF
-AFAE	0100
-AFB0	7171
-AFB2	22D7
-AFB4	26D5
-AFB6	7324
-AFB8	2034
-AFBA	F324
-AFBC	1034
-AFBE	7360
-AFC0	0430
-AFC2	2EC5
-AFC4	A565
-AFC6	BEDC
-AFC8	06D3
-AFCA	16D1
-AFCC	1ACF
-AFCE	1ECD
-AFD0	22CB
-AFD2	2AC7
-AFD4	32C3
-AFD6	36C1
-AFD8	BADE
-AFDA	C2DA
-AFDC	C6D8
-AFDE	F2D0
-AFE0	F6CE
-AFE2	FACC
-AFE4	FECA
-AFE6	82E2
-AFE8	86E0
-AFEA	0AFE
-AFEC	0EFC
-AFEE	12FA
-AFF0	16F8
-AFF2	1AF6
-AFF4	1EF4
-AFF6	2AF2
-AFF8	2EF0
-AFFA	32EE
-AFFC	26C9
-AFFE	CAD6
-B000	CED4
-B002	D2D2
-B004	9385
-B006	0540
-B008	0545
-B00A	36EC
-B00C	3AEA
-B00E	3EE8
-B010	42E6
-B012	46E4
-B014	72E2
-B016	76E0
-B018	272E
-B01A	E1FF
-B01C	272C
-B01E	F1FF
-B020	97D0
-B022	FFFB
-B024	E780
-B026	4097
-B028	A167
-B02A	E98F
-B02C	2A84
-B02E	6394
-B030	0718
-B032	B764
-B034	0124
-B036	9384
-B038	0440
-B03A	8567
-B03C	E18F
-B03E	CDCF
-B040	37D7
-B042	0124
-B044	3789
-B046	0224
-B048	1307
-B04A	07C4
-B04C	1309
-B04E	C949
-B050	8356
-B052	670E
-B054	8327
-B056	0905
-B058	8506
-B05A	8507
-B05C	2328
-B05E	F904
-B060	2313
-B062	D70E
-B064	858B
-B066	639F
-B068	071A
-B06A	8547
-B06C	A30A
-B06E	F904
-B070	9770
-B072	FFFB
-B074	E780
-B076	00FF
-B078	19C5
-B07A	0357
-B07C	4905
-B07E	9307
-B080	1010
-B082	6306
-B084	F724
-B086	DC50
-B088	0945
-B08A	8297
-B08C	9770
-B08E	FFFB
-B090	E780
-B092	C085
-B094	11C5
-B096	9770
-B098	FFFB
-B09A	E780
-B09C	2088
-B09E	55C5
-B0A0	9760
-B0A2	00FC
-B0A4	E780
-B0A6	405A
-B0A8	B787
-B0AA	0024
-B0AC	83C7
-B0AE	078C
-B0B0	AA89
-B0B2	6392
-B0B4	071C
-B0B6	B7D7
-B0B8	0124
-B0BA	9387
-B0BC	07E7
-B0BE	BC5F
-B0C0	639A
-B0C2	0716
-B0C4	3799
-B0C6	0124
-B0C8	1309
-B0CA	0953
-B0CC	B727
-B0CE	0024
-B0D0	83C7
-B0D2	7752
-B0D4	6396
-B0D6	071E
-B0D8	0345
-B0DA	C918
-B0DC	631D
-B0DE	051C
-B0E0	DC50
-B0E2	0D45
-B0E4	8297
-B0E6	4E85
-B0E8	9760
-B0EA	00FC
-B0EC	E780
-B0EE	005A
-B0F0	8567
-B0F2	3E99
-B0F4	2320
-B0F6	A9A2
-B0F8	1374
-B0FA	0440
-B0FC	21C4
-B0FE	B7D7
-B100	0124
-B102	9387
-B104	07C4
-B106	37A7
-B108	0124
-B10A	83D6
-B10C	670E
-B10E	1307
-B110	0753
-B112	0347
-B114	179B
-B116	8506
-B118	3784
-B11A	0224
-B11C	1304
-B11E	C449
-B120	1337
-B122	1700
-B124	2393
-B126	D70E
-B128	230A
-B12A	E404
-B12C	9770
-B12E	FFFB
-B130	E780
-B132	40F3
-B134	6306
-B136	0510
-B138	0357
-B13A	4405
-B13C	9307
-B13E	1010
-B140	6300
-B142	F710
-B144	DC50
-B146	1D45
-B148	8297
-B14A	9A50
-B14C	8A52
-B14E	7A43
-B150	EA43
-B152	5A44
-B154	CA44
-B156	3A45
-B158	AA45
-B15A	1A46
-B15C	8A46
-B15E	7657
-B160	E657
-B162	5658
-B164	C658
-B166	3659
-B168	A659
-B16A	165A
-B16C	065E
-B16E	F64E
-B170	664F
-B172	D64F
-B174	1660
-B176	8660
-B178	7271
-B17A	E271
-B17C	5272
-B17E	C272
-B180	3273
-B182	A273
-B184	1275
-B186	8275
-B188	7266
-B18A	E266
-B18C	5267
-B18E	C267
-B190	3268
-B192	A268
-B194	126E
-B196	826E
-B198	072F
-B19A	C1FF
-B19C	872F
-B19E	81FF
-B1A0	7370
-B1A2	0430
-B1A4	7390
-B1A6	1434
-B1A8	7310
-B1AA	2434
-B1AC	3A54
-B1AE	AA54
-B1B0	4D61
-B1B2	7300
-B1B4	2030
-B1B6	37D9
-B1B8	0124
-B1BA	1309
-B1BC	09C4
-B1BE	8357
-B1C0	490E
-B1C2	B764
-B1C4	0124
-B1C6	9384
-B1C8	0440
-B1CA	D850
-B1CC	8507
-B1CE	0145
-B1D0	2312
-B1D2	F90E
-B1D4	0297
-B1D6	9760
-B1D8	FFFB
-B1DA	E780
-B1DC	2071
-B1DE	25E5
-B1E0	B729
-B1E2	0024
-B1E4	3799
-B1E6	0124
-B1E8	9389
-B1EA	0933
-B1EC	1309
-B1EE	0953
-B1F0	056A
-B1F2	83C7
-B1F4	791F
-B1F6	4A9A
-B1F8	2320
-B1FA	0AA2
-B1FC	B9EF
-B1FE	0345
-B200	C918
-B202	2DE5
-B204	83C7
-B206	0920
-B208	89C7
-B20A	0327
-B20C	4AB3
-B20E	630A
-B210	F700
-B212	97E0
-B214	00FC
-B216	E780
-B218	E0D2
-B21A	DC50
-B21C	0545
-B21E	8297
-B220	29BD
-B222	01A0
-B224	8547
-B226	230A
-B228	0904
-B22A	A30A
-B22C	0904
-B22E	2328
-B230	F904
-B232	3DBD
-B234	7D55
-B236	9770
-B238	01FC
-B23A	E780
-B23C	A004
-B23E	59B5
-B240	EFE0
-B242	5FD9
-B244	01B7
-B246	9760
-B248	FFFB
-B24A	E780
-B24C	206D
-B24E	49F9
-B250	8357
-B252	490E
-B254	858B
-B256	C9F7
-B258	CDBD
-B25A	9770
-B25C	01FC
-B25E	E780
-B260	2003
-B262	2311
-B264	A94E
-B266	0345
-B268	C918
-B26A	49DD
-B26C	97C0
-B26E	FFFB
-B270	E780
-B272	40B4
-B274	41BF
-B276	9770
-B278	01FC
-B27A	E780
-B27C	6001
-B27E	3799
-B280	0124
-B282	1309
-B284	0953
-B286	8D67
-B288	CA97
-B28A	03C7
-B28C	D76F
-B28E	232E
-B290	A94E
-B292	8547
-B294	6306
-B296	F700
-B298	8327
-B29A	094F
-B29C	E377
-B29E	F5EA
-B2A0	9760
-B2A2	00FC
-B2A4	E780
-B2A6	80FC
-B2A8	9770
-B2AA	01FC
-B2AC	E780
-B2AE	40FE
-B2B0	2320
-B2B2	A950
-B2B4	21BD
-B2B6	97C0
-B2B8	FFFB
-B2BA	E780
-B2BC	A0B2
-B2BE	0DB5
-B2C0	9770
-B2C2	01FC
-B2C4	E780
-B2C6	C0FC
-B2C8	2312
-B2CA	A94E
-B2CC	31B5
-B2CE	EFE0
-B2D0	7FD0
-B2D2	55BB
-B2D4	1743
-B2D6	02FC
-B2D8	E702
-B2DA	C31E
-B2DC	2A84
-B2DE	EFD0
-B2E0	BFA7
-B2E2	8947
-B2E4	6306
-B2E6	F400
-B2E8	1743
-B2EA	02FC
-B2EC	6700
-B2EE	C31F
-B2F0	B7E7
-B2F2	0024
-B2F4	03D7
-B2F6	C7C8
-B2F8	8564
-B2FA	9387
-B2FC	F4B3
-B2FE	E315
-B300	F7FE
-B302	37A9
-B304	0224
-B306	1309
-B308	8954
-B30A	8347
-B30C	190C
-B30E	E9FF
-B310	9770
-B312	FFFB
-B314	E780
-B316	00E3
-B318	61F9
-B31A	9770
-B31C	FFFB
-B31E	E780
-B320	A0E3
-B322	79F1
-B324	3725
-B326	0224
-B328	1305
-B32A	05ED
-B32C	9700
-B32E	FFFB
-B330	E780
-B332	80FA
-B334	B797
-B336	0124
-B338	3767
-B33A	0124
-B33C	0327
-B33E	0740
-B340	9387
-B342	0753
-B344	A697
-B346	8544
-B348	1D45
-B34A	238D
-B34C	97CE
-B34E	0297
-B350	A300
-B352	990C
-B354	9780
-B356	01FC
-B358	E780
-B35A	0083
-B35C	51F5
-B35E	B727
-B360	0124
-B362	2380
-B364	8754
-B366	97B0
-B368	FEFB
-B36A	E780
-B36C	6002
-B36E	2301
-B370	990C
-B372	9DBF
-B374	1743
-B376	02FC
-B378	E702
-B37A	C314
-B37C	37A4
-B37E	0224
-B380	1304
-B382	8454
-B384	0347
-B386	240C
-B388	8547
-B38A	630A
-B38C	F700
-B38E	97B0
-B390	FEFB
-B392	E780
-B394	E069
-B396	1743
-B398	02FC
-B39A	6700
-B39C	E314
-B39E	9770
-B3A0	01FC
-B3A2	E780
-B3A4	607E
-B3A6	65F5
-B3A8	97B0
-B3AA	FEFB
-B3AC	E780
-B3AE	800F
-B3B0	2301
-B3B2	040C
-B3B4	E9BF
-B3B6	0100
-B3B8	1743
-B3BA	02FC
-B3BC	E702
-B3BE	8310
-B3C0	9D47
-B3C2	631F
-B3C4	F500
-B3C6	3794
-B3C8	0124
-B3CA	1304
-B3CC	0453
-B3CE	8567
-B3D0	A297
-B3D2	83C7
-B3D4	A7CF
-B3D6	9DE7
-B3D8	1743
-B3DA	02FC
-B3DC	6700
-B3DE	C310
-B3E0	2A84
-B3E2	EFD0
-B3E4	7FDD
-B3E6	8547
-B3E8	E318
-B3EA	F4FE
-B3EC	B7E7
-B3EE	0124
-B3F0	9387
-B3F2	074C
-B3F4	23AE
-B3F6	0710
-B3F8	23A4
-B3FA	077E
-B3FC	1743
-B3FE	02FC
-B400	6700
-B402	830E
-B404	9770
-B406	FFFB
-B408	E780
-B40A	C0D3
-B40C	71F5
-B40E	9770
-B410	FFFB
-B412	E780
-B414	60D4
-B416	69F1
-B418	8D67
-B41A	3E94
-B41C	8327
-B41E	846D
-B420	B724
-B422	0124
-B424	9384
-B426	045F
-B428	91EF
-B42A	83A7
-B42C	440E
-B42E	99CB
-B430	B7D7
-B432	0124
-B434	83C7
-B436	07FA
-B438	C5D3
-B43A	9700
-B43C	FFFB
-B43E	E780
-B440	20E3
-B442	59BF
-B444	83A7
-B446	C40A
-B448	C1DB
-B44A	0545
-B44C	9730
-B44E	FEFB
-B450	E780
-B452	8051
-B454	B735
-B456	202D
-B458	7578
-B45A	37F5
-B45C	202D
-B45E	9385
-B460	0560
-B462	1308
-B464	08A0
-B466	9168
-B468	1305
-B46A	0560
-B46C	B387
-B46E	0501
-B470	03C7
-B472	0700
-B474	9306
-B476	F00F
-B478	1316
-B47A	8701
-B47C	6186
-B47E	0607
-B480	6344
-B482	0600
-B484	9376
-B486	F70F
-B488	2380
-B48A	D700
-B48C	8507
-B48E	E391
-B490	B7FE
-B492	B385
-B494	1701
-B496	E39B
-B498	A5FC
-B49A	B7A7
-B49C	0224
-B49E	0547
-B4A0	0145
-B4A2	A384
-B4A4	E760
-B4A6	9730
-B4A8	FEFB
-B4AA	E780
-B4AC	E04B
-B4AE	B7D7
-B4B0	0124
-B4B2	83C7
-B4B4	07FA
-B4B6	8DD3
-B4B8	8327
-B4BA	846D
-B4BC	91FF
-B4BE	83A7
-B4C0	440E
-B4C2	99DB
-B4C4	9DBF
-B4C6	0100
-B4C8	1743
-B4CA	02FC
-B4CC	E702
-B4CE	83FF
-B4D0	B7D7
-B4D2	0124
-B4D4	9387
-B4D6	07F4
-B4D8	03C7
-B4DA	1705
-B4DC	2A84
-B4DE	11C7
-B4E0	03C7
-B4E2	1700
-B4E4	8947
-B4E6	6307
-B4E8	F704
-B4EA	B7E7
-B4EC	0124
-B4EE	9387
-B4F0	0787
-B4F2	83A4
-B4F4	870F
-B4F6	03A9
-B4F8	C70F
-B4FA	0146
-B4FC	A685
-B4FE	4A85
-B500	9730
-B502	01FC
-B504	E780
-B506	4054
-B508	2285
-B50A	97D0
-B50C	FEFB
-B50E	E780
-B510	20D7
-B512	4A85
-B514	0546
-B516	A685
-B518	9730
-B51A	01FC
-B51C	E780
-B51E	C052
-B520	B7C7
-B522	0224
-B524	83A7
-B526	07B7
-B528	1145
-B52A	8297
-B52C	1743
-B52E	02FC
-B530	6700
-B532	83FB
-B534	B7E7
-B536	0024
-B538	83D6
-B53A	C7C8
-B53C	8567
-B53E	1387
-B540	F7B3
-B542	E394
-B544	E6FA
-B546	3797
-B548	0124
-B54A	1307
-B54C	0753
-B54E	BA97
-B550	03A5
-B552	07B2
-B554	8145
-B556	3325
-B558	A000
-B55A	97D0
-B55C	00FC
-B55E	E780
-B560	60BB
-B562	61B7
-B564	1743
-B566	02FC
-B568	E702
-B56A	C3F5
-B56C	9760
-B56E	FFFB
-B570	E780
-B572	C037
-B574	11C5
-B576	B7E7
-B578	0024
-B57A	83C7
-B57C	C784
-B57E	BDEF
-B580	1384
-B582	81E7
-B584	0347
-B586	8400
-B588	8547
-B58A	6303
-B58C	F706
-B58E	0357
-B590	2403
-B592	B767
-B594	0040
-B596	2398
-B598	E718
-B59A	8357
-B59C	4403
-B59E	3767
-B5A0	0040
-B5A2	2314
-B5A4	F720
-B5A6	9760
-B5A8	FFFB
-B5AA	E780
-B5AC	2034
-B5AE	19C5
-B5B0	B7E7
-B5B2	0024
-B5B4	03C7
-B5B6	C784
-B5B8	8147
-B5BA	09EB
-B5BC	8346
-B5BE	8400
-B5C0	0547
-B5C2	8147
-B5C4	6384
-B5C6	E600
-B5C8	8357
-B5CA	C405
-B5CC	37A7
-B5CE	0040
-B5D0	2312
-B5D2	F710
-B5D4	9770
-B5D6	FFFB
-B5D8	E780
-B5DA	C0B6
-B5DC	35C1
-B5DE	9770
-B5E0	FFFB
-B5E2	E780
-B5E4	60B7
-B5E6	05C9
-B5E8	1743
-B5EA	02FC
-B5EC	6700
-B5EE	C3EF
-B5F0	B767
-B5F2	0040
-B5F4	2398
-B5F6	0718
-B5F8	8147
-B5FA	55B7
-B5FC	B767
-B5FE	0040
-B600	2398
-B602	0718
-B604	1384
-B606	81E7
-B608	8346
-B60A	8400
-B60C	0547
-B60E	8147
-B610	E395
-B612	E6F8
-B614	69B7
-B616	9760
-B618	FFFB
-B61A	E780
-B61C	202D
-B61E	31ED
-B620	8346
-B622	8400
-B624	0547
-B626	8147
-B628	6384
-B62A	E600
-B62C	8357
-B62E	4408
-B630	3787
-B632	0040
-B634	2314
-B636	F710
-B638	1743
-B63A	02FC
-B63C	6700
-B63E	C3EA
-B640	9770
-B642	FFFB
-B644	E780
-B646	40B1
-B648	59F9
-B64A	9760
-B64C	FFFB
-B64E	E780
-B650	E029
-B652	19C5
-B654	B7E7
-B656	0024
-B658	03C7
-B65A	C784
-B65C	8147
-B65E	09EB
-B660	8346
-B662	8400
-B664	0547
-B666	8147
-B668	6384
-B66A	E600
-B66C	8357
-B66E	6407
-B670	3707
-B672	0140
-B674	2314
-B676	F710
-B678	9DB7
-B67A	B7E7
-B67C	0024
-B67E	03C7
-B680	C784
-B682	8147
-B684	55F7
-B686	69BF
-B688	1743
-B68A	02FC
-B68C	E702
-B68E	03E1
-B690	4111
-B692	3A84
-B694	22E6
-B696	26E4
-B698	4AE2
-B69A	4EE0
-B69C	AA84
-B69E	3689
-B6A0	97A0
-B6A2	FEFB
-B6A4	E780
-B6A6	8066
-B6A8	B727
-B6AA	0224
-B6AC	9387
-B6AE	076B
-B6B0	A297
-B6B2	0567
-B6B4	BA97
-B6B6	83C7
-B6B8	078D
-B6BA	639D
-B6BC	0718
-B6BE	83C7
-B6C0	0400
-B6C2	6399
-B6C4	0718
-B6C6	B7A7
-B6C8	0224
-B6CA	9389
-B6CC	8754
-B6CE	03C7
-B6D0	9905
-B6D2	6301
-B6D4	0718
-B6D6	03CA
-B6D8	A905
-B6DA	03D6
-B6DC	A90B
-B6DE	37E7
-B6E0	0124
-B6E2	0355
-B6E4	675F
-B6E6	9387
-B6E8	8754
-B6EA	0147
-B6EC	A145
-B6EE	6369
-B6F0	A622
-B6F2	83D6
-B6F4	C70A
-B6F6	8907
-B6F8	63F1
-B6FA	A626
-B6FC	0507
-B6FE	E318
-B700	B7FE
-B702	37CB
-B704	0224
-B706	5309
-B708	00F0
-B70A	8727
-B70C	8BB7
-B70E	9D46
-B710	4379
-B712	F990
-B714	1307
-B716	0705
-B718	0607
-B71A	4E97
-B71C	8357
-B71E	C700
-B720	118D
-B722	5377
-B724	05D0
-B726	918F
-B728	D3F7
-B72A	07D0
-B72C	9317
-B72E	3A00
-B730	B697
-B732	5377
-B734	F718
-B736	9387
-B738	8702
-B73A	8607
-B73C	CE97
-B73E	83D7
-B740	C700
-B742	0726
-B744	8BB7
-B746	13F7
-B748	F70F
-B74A	A183
-B74C	D377
-B74E	07D0
-B750	D3F6
-B752	07D0
-B754	C3F7
-B756	C768
-B758	5379
-B75A	F908
-B75C	4379
-B75E	E978
-B760	9770
-B762	FFFB
-B764	E780
-B766	C08A
-B768	AA8A
-B76A	93DA
-B76C	8A40
-B76E	9770
-B770	FFFB
-B772	E780
-B774	E089
-B776	C20A
-B778	9307
-B77A	8A04
-B77C	1375
-B77E	F50F
-B780	93DA
-B782	0A41
-B784	D3F7
-B786	0AD0
-B788	D374
-B78A	05D0
-B78C	0727
-B78E	8BB7
-B790	8607
-B792	CE97
-B794	03DC
-B796	C700
-B798	C3F4
-B79A	E478
-B79C	DC4C
-B79E	5374
-B7A0	0CD0
-B7A2	D307
-B7A4	00F0
-B7A6	83D4
-B7A8	C700
-B7AA	53F4
-B7AC	8408
-B7AE	130A
-B7B0	0A05
-B7B2	060A
-B7B4	4E9A
-B7B6	035A
-B7B8	4A00
-B7BA	D317
-B7BC	F4A0
-B7BE	99C3
-B7C0	5314
-B7C2	8420
-B7C4	B7CB
-B7C6	0224
-B7C8	83A7
-B7CA	0BB7
-B7CC	0D45
-B7CE	8297
-B7D0	D397
-B7D2	14C0
-B7D4	C207
-B7D6	C183
-B7D8	6395
-B7DA	870B
-B7DC	B747
-B7DE	0124
-B7E0	9387
-B7E2	0727
-B7E4	03D7
-B7E6	6712
-B7E8	83D6
-B7EA	E710
-B7EC	8947
-B7EE	7D17
-B7F0	B397
-B7F2	E700
-B7F4	D3F7
-B7F6	07D0
-B7F8	53F7
-B7FA	16D0
-B7FC	5304
-B7FE	00F0
-B800	D3F7
-B802	2711
-B804	37CA
-B806	0224
-B808	D3F7
-B80A	E718
-B80C	B7C7
-B80E	0224
-B810	07A7
-B812	C7B7
-B814	83A7
-B816	0BB7
-B818	2545
-B81A	D3F7
-B81C	E700
-B81E	D39A
-B820	17C0
-B822	8297
-B824	8727
-B826	0AB8
-B828	C20A
-B82A	93DA
-B82C	0A01
-B82E	5374
-B830	F410
-B832	D694
-B834	C204
-B836	2393
-B838	590D
-B83A	C180
-B83C	D317
-B83E	14C0
-B840	2392
-B842	F90C
-B844	B707
-B846	0040
-B848	19EC
-B84A	9387
-B84C	E703
-B84E	CA97
-B850	2390
-B852	9700
-B854	3264
-B856	A264
-B858	1269
-B85A	8269
-B85C	4101
-B85E	1743
-B860	02FC
-B862	6700
-B864	23C7
-B866	9387
-B868	0704
-B86A	3264
-B86C	A264
-B86E	1269
-B870	8269
-B872	CA97
-B874	2390
-B876	9700
-B878	4101
-B87A	1743
-B87C	02FC
-B87E	6700
-B880	63C5
-B882	9377
-B884	FA0F
-B886	135A
-B888	8A00
-B88A	8729
-B88C	8BB7
-B88E	D3F7
-B890	07D0
-B892	D376
-B894	0AD0
-B896	37CA
-B898	0224
-B89A	0727
-B89C	0AB8
-B89E	C3F7
-B8A0	3769
-B8A2	5374
-B8A4	F418
-B8A6	5374
-B8A8	E410
-B8AA	531B
-B8AC	14C0
-B8AE	420B
-B8B0	135B
-B8B2	0B01
-B8B4	5A85
-B8B6	9760
-B8B8	00FC
-B8BA	E780
-B8BC	A01A
-B8BE	AA8A
-B8C0	5A85
-B8C2	9760
-B8C4	00FC
-B8C6	E780
-B8C8	E019
-B8CA	93DA
-B8CC	8A00
-B8CE	D397
-B8D0	04C0
-B8D2	C20A
-B8D4	1375
-B8D6	F50F
-B8D8	93DA
-B8DA	0A01
-B8DC	5374
-B8DE	05D0
-B8E0	D3F7
-B8E2	0AD0
-B8E4	C207
-B8E6	C187
-B8E8	4374
-B8EA	3479
-B8EC	63D7
-B8EE	8703
-B8F0	5374
-B8F2	8918
-B8F4	B747
-B8F6	0124
-B8F8	9387
-B8FA	0727
-B8FC	03D7
-B8FE	6712
-B900	83D6
-B902	E710
-B904	8947
-B906	7D17
-B908	B397
-B90A	E700
-B90C	D3F7
-B90E	07D0
-B910	53F7
-B912	16D0
-B914	D3F7
-B916	8710
-B918	C5BD
-B91A	5374
-B91C	8910
-B91E	D9BF
-B920	9317
-B922	4A00
-B924	CE97
-B926	83D7
-B928	A706
-B92A	93F6
-B92C	F70F
-B92E	37CB
-B930	0224
-B932	A183
-B934	53F9
-B936	06D0
-B938	D3F7
-B93A	07D0
-B93C	0727
-B93E	8BB7
-B940	4379
-B942	E978
-B944	E30E
-B946	07E0
-B948	9307
-B94A	F704
-B94C	8607
-B94E	CE97
-B950	03D6
-B952	C700
-B954	9306
-B956	F7FF
-B958	75BB
-B95A	9317
-B95C	3A00
-B95E	BA97
-B960	9387
-B962	8702
-B964	8607
-B966	CE97
-B968	83D7
-B96A	C700
-B96C	7DBF
-B96E	0100
-B970	1743
-B972	02FC
-B974	E702
-B976	63B3
-B978	B747
-B97A	0124
-B97C	03D7
-B97E	C7E1
-B980	8947
-B982	2A84
-B984	AE84
-B986	6319
-B988	F700
-B98A	B7A7
-B98C	0124
-B98E	03A7
-B990	4706
-B992	FD57
-B994	6304
-B996	F704
-B998	B7E7
-B99A	0124
-B99C	9387
-B99E	0787
-B9A0	03A9
-B9A2	8710
-B9A4	83A9
-B9A6	C710
-B9A8	0146
-B9AA	CA85
-B9AC	4E85
-B9AE	9730
-B9B0	01FC
-B9B2	E780
-B9B4	6009
-B9B6	A685
-B9B8	2285
-B9BA	97C0
-B9BC	00FC
-B9BE	E780
-B9C0	6075
-B9C2	4E85
-B9C4	0546
-B9C6	CA85
-B9C8	9730
-B9CA	01FC
-B9CC	E780
-B9CE	C007
-B9D0	B7C7
-B9D2	0224
-B9D4	83A7
-B9D6	07B7
-B9D8	1545
-B9DA	8297
-B9DC	1743
-B9DE	02FC
-B9E0	6700
-B9E2	E3AF
-B9E4	B7C7
-B9E6	0224
-B9E8	03A6
-B9EA	47B7
-B9EC	B707
-B9EE	0040
-B9F0	9387
-B9F2	0706
-B9F4	3E96
-B9F6	0967
-B9F8	1308
-B9FA	0502
-B9FC	AA87
-B9FE	098E
-BA00	1307
-BA02	F7F1
-BA04	2390
-BA06	E700
-BA08	B306
-BA0A	F600
-BA0C	2390
-BA0E	E600
-BA10	8907
-BA12	E399
-BA14	07FF
-BA16	83C7
-BA18	C500
-BA1A	B1CB
-BA1C	83AF
-BA1E	0500
-BA20	0963
-BA22	1388
-BA24	E500
-BA26	8147
-BA28	0D4F
-BA2A	854E
-BA2C	094E
-BA2E	1303
-BA30	03F0
-BA32	3317
-BA34	FF00
-BA36	3377
-BA38	F701
-BA3A	3396
-BA3C	FE00
-BA3E	B316
-BA40	FE00
-BA42	798E
-BA44	B308
-BA46	F500
-BA48	F98E
-BA4A	8907
-BA4C	7D47
-BA4E	19C2
-BA50	0347
-BA52	0800
-BA54	1A86
-BA56	81C6
-BA58	0346
-BA5A	1800
-BA5C	2206
-BA5E	518F
-BA60	2390
-BA62	E800
-BA64	03C7
-BA66	C500
-BA68	0908
-BA6A	E3C4
-BA6C	E7FC
-BA6E	B7C7
-BA70	0224
-BA72	83A7
-BA74	07B7
-BA76	1D45
-BA78	8287
-BA7A	0100
-BA7C	1743
-BA7E	02FC
-BA80	E702
-BA82	43A4
-BA84	B7A7
-BA86	0224
-BA88	03C7
-BA8A	6760
-BA8C	8547
-BA8E	630C
-BA90	F700
-BA92	B7C7
-BA94	0224
-BA96	83A7
-BA98	07B7
-BA9A	2145
-BA9C	8297
-BA9E	1743
-BAA0	02FC
-BAA2	6700
-BAA4	63A4
-BAA6	9760
-BAA8	FFFB
-BAAA	E780
-BAAC	E0E8
-BAAE	75D1
-BAB0	B7E7
-BAB2	0024
-BAB4	83C7
-BAB6	B7AD
-BAB8	E9FF
-BABA	B7B7
-BABC	0024
-BABE	03D7
-BAC0	4733
-BAC2	B707
-BAC4	0140
-BAC6	2399
-BAC8	E7DC
-BACA	E1B7
-BACC	1743
-BACE	02FC
-BAD0	E702
-BAD2	439F
-BAD4	B7B7
-BAD6	0224
-BAD8	9387
-BADA	87B4
-BADC	23AE
-BADE	F194
-BAE0	3764
-BAE2	0124
-BAE4	9D66
-BAE6	B7B5
-BAE8	0224
-BAEA	B7B7
-BAEC	0224
-BAEE	1304
-BAF0	0440
-BAF2	9387
-BAF4	C783
-BAF6	9386
-BAF8	F6BF
-BAFA	1146
-BAFC	9385
-BAFE	05FB
-BB00	0545
-BB02	5CC4
-BB04	97E0
-BB06	FFFB
-BB08	E780
-BB0A	C0E8
-BB0C	C166
-BB0E	B7B5
-BB10	0224
-BB12	FD16
-BB14	3146
-BB16	9385
-BB18	4598
-BB1A	4145
-BB1C	97E0
-BB1E	FFFB
-BB20	E780
-BB22	40E7
-BB24	37B7
-BB26	0224
-BB28	1307
-BB2A	87B7
-BB2C	B7A7
-BB2E	0224
-BB30	9387
-BB32	8754
-BB34	78C8
-BB36	37B7
-BB38	0224
-BB3A	A380
-BB3C	070C
-BB3E	2381
-BB40	070C
-BB42	1307
-BB44	C7C2
-BB46	B7B7
-BB48	0224
-BB4A	18D4
-BB4C	9387
-BB4E	472D
-BB50	37B7
-BB52	0224
-BB54	7CC4
-BB56	1307
-BB58	873B
-BB5A	B7B7
-BB5C	0224
-BB5E	18C0
-BB60	9387
-BB62	4737
-BB64	23AA
-BB66	F1A4
-BB68	1743
-BB6A	02FC
-BB6C	6700
-BB6E	C397
-BB70	14A6
-BB72	0224
-BB74	008D
-BB76	0000
-BB78	0000
-BB7A	803B
-BB7C	0000
-BB7E	003F
-BB80	0000
-BB82	8043
-BC98	1743
-BC9A	02FC
-BC9C	E702
-BC9E	8382
-BCA0	2A84
-BCA2	EFE0
-BCA4	BFB9
-BCA6	A147
-BCA8	6306
-BCAA	F400
-BCAC	1743
-BCAE	02FC
-BCB0	6700
-BCB2	8383
-BCB4	B7C7
-BCB6	0224
-BCB8	83C7
-BCBA	87B8
-BCBC	E5DB
-BCBE	B797
-BCC0	0124
-BCC2	9387
-BCC4	0753
-BCC6	0567
-BCC8	3E97
-BCCA	8346
-BCCC	07B9
-BCCE	F9DE
-BCD0	83C7
-BCD2	673F
-BCD4	E1DF
-BCD6	8357
-BCD8	47B6
-BCDA	93E7
-BCDC	0720
-BCDE	2312
-BCE0	F7B6
-BCE2	E9B7
-BCE4	1733
-BCE6	02FC
-BCE8	E702
-BCEA	437B
-BCEC	37C8
-BCEE	0224
-BCF0	1308
-BCF2	48B8
-BCF4	8348
-BCF6	4800
-BCF8	2A8B
-BCFA	AE8B
-BCFC	3284
-BCFE	B684
-BD00	3A89
-BD02	BE89
-BD04	6380
-BD06	0802
-BD08	B7A7
-BD0A	0124
-BD0C	9387
-BD0E	0753
-BD10	03C7
-BD12	07B9
-BD14	83C7
-BD16	B792
-BD18	11C7
-BD1A	0347
-BD1C	5800
-BD1E	BD8B
-BD20	6306
-BD22	F704
-BD24	37E8
-BD26	0124
-BD28	1308
-BD2A	0887
-BD2C	832A
-BD2E	0812
-BD30	032A
-BD32	4812
-BD34	0146
-BD36	D685
-BD38	5285
-BD3A	9730
-BD3C	01FC
-BD3E	E780
-BD40	A0D0
-BD42	CE87
-BD44	4A87
-BD46	A686
-BD48	2286
-BD4A	DE85
-BD4C	5A85
-BD4E	9740
-BD50	00FC
-BD52	E780
-BD54	A066
-BD56	0546
-BD58	D685
-BD5A	5285
-BD5C	9730
-BD5E	01FC
-BD60	E780
-BD62	80CE
-BD64	1733
-BD66	02FC
-BD68	6700
-BD6A	C376
-BD6C	2315
-BD6E	0600
-BD70	9760
-BD72	FFFB
-BD74	E780
-BD76	80BA
-BD78	01CD
-BD7A	B797
-BD7C	0124
-BD7E	9387
-BD80	07D7
-BD82	03C7
-BD84	C700
-BD86	59DF
-BD88	7D17
-BD8A	2386
-BD8C	E700
-BD8E	59BF
-BD90	9760
-BD92	FFFB
-BD94	E780
-BD96	80B5
-BD98	6DD1
-BD9A	B797
-BD9C	0124
-BD9E	9387
-BDA0	07D7
-BDA2	03C7
-BDA4	D700
-BDA6	3DDF
-BDA8	7D17
-BDAA	A386
-BDAC	E700
-BDAE	9DBF
-BDB0	1733
-BDB2	02FC
-BDB4	E702
-BDB6	636F
-BDB8	B7E7
-BDBA	0124
-BDBC	9387
-BDBE	0787
-BDC0	03AA
-BDC2	8712
-BDC4	83A9
-BDC6	C712
-BDC8	AE84
-BDCA	2A84
-BDCC	3289
-BDCE	D285
-BDD0	0146
-BDD2	4E85
-BDD4	9730
-BDD6	01FC
-BDD8	E780
-BDDA	00C7
-BDDC	A685
-BDDE	4A86
-BDE0	2285
-BDE2	9760
-BDE4	FFFB
-BDE6	E780
-BDE8	206A
-BDEA	AA84
-BDEC	0546
-BDEE	D285
-BDF0	4E85
-BDF2	9730
-BDF4	01FC
-BDF6	E780
-BDF8	20C5
-BDFA	B7C7
-BDFC	0224
-BDFE	9387
-BE00	47B8
-BE02	03C7
-BE04	E710
-BE06	15C3
-BE08	37A7
-BE0A	0124
-BE0C	1307
-BE0E	0753
-BE10	0346
-BE12	37B9
-BE14	8946
-BE16	631A
-BE18	D600
-BE1A	8356
-BE1C	87BA
-BE1E	E18E
-BE20	89C6
-BE22	9306
-BE24	0040
-BE26	6307
-BE28	D400
-BE2A	2685
-BE2C	1733
-BE2E	02FC
-BE30	6700
-BE32	E36A
-BE34	8326
-BE36	47B3
-BE38	7D57
-BE3A	E388
-BE3C	E6FE
-BE3E	03D7
-BE40	2711
-BE42	9396
-BE44	0401
-BE46	C182
-BE48	11E3
-BE4A	3687
-BE4C	BA84
-BE4E	2399
-BE50	D710
-BE52	E1BF
-BE54	1733
-BE56	02FC
-BE58	E702
-BE5A	2365
-BE5C	3729
-BE5E	0024
-BE60	B7A4
-BE62	0124
-BE64	1309
-BE66	0933
-BE68	9384
-BE6A	0453
-BE6C	8347
-BE6E	491A
-BE70	03C7
-BE72	24B7
-BE74	2A84
-BE76	D98F
-BE78	6382
-BE7A	0714
-BE7C	8347
-BE7E	E400
-BE80	0547
-BE82	2305
-BE84	E400
-BE86	99E7
-BE88	8347
-BE8A	C400
-BE8C	D1CF
-BE8E	83C7
-BE90	24B7
-BE92	C5CB
-BE94	B76A
-BE96	0124
-BE98	130A
-BE9A	0403
-BE9C	0347
-BE9E	0400
-BEA0	A169
-BEA2	FD19
-BEA4	A301
-BEA6	E400
-BEA8	83A7
-BEAA	0A4B
-BEAC	2302
-BEAE	E400
-BEB0	0567
-BEB2	BA97
-BEB4	83D7
-BEB6	47E0
-BEB8	2303
-BEBA	0400
-BEBC	B3F7
-BEBE	3701
-BEC0	231C
-BEC2	F400
-BEC4	9740
-BEC6	FDFB
-BEC8	E780
-BECA	0067
-BECC	0358
-BECE	8401
-BED0	A308
-BED2	A400
-BED4	6301
-BED6	0806
-BED8	3736
-BEDA	0520
-BEDC	1306
-BEDE	06C8
-BEE0	8146
-BEE2	8147
-BEE4	4145
-BEE6	B305
-BEE8	F400
-BEEA	3357
-BEEC	F840
-BEEE	2380
-BEF0	D502
-BEF2	058B
-BEF4	8507
-BEF6	11C7
-BEF8	0347
-BEFA	0600
-BEFC	BA96
-BEFE	93F6
-BF00	F60F
-BF02	0506
-BF04	E391
-BF06	A7FE
-BF08	2308
-BF0A	D400
-BF0C	8347
-BF0E	491A
-BF10	03C7
-BF12	24B7
-BF14	D98F
-BF16	C9C3
-BF18	2307
-BF1A	0400
-BF1C	232E
-BF1E	4401
-BF20	1733
-BF22	02FC
-BF24	6700
-BF26	A35B
-BF28	8347
-BF2A	B400
-BF2C	A5D7
-BF2E	83C7
-BF30	24B7
-BF32	ADF3
-BF34	39A0
-BF36	0148
-BF38	45F1
-BF3A	231C
-BF3C	3401
-BF3E	4E88
-BF40	61BF
-BF42	B76A
-BF44	0124
-BF46	83A5
-BF48	0A4B
-BF4A	8567
-BF4C	130A
-BF4E	0403
-BF50	9387
-BF52	07E1
-BF54	1306
-BF56	8007
-BF58	BE95
-BF5A	5285
-BF5C	9760
-BF5E	00FC
-BF60	E780
-BF62	400A
-BF64	21C9
-BF66	2305
-BF68	0400
-BF6A	0347
-BF6C	2401
-BF6E	8347
-BF70	6400
-BF72	8356
-BF74	4401
-BF76	A308
-BF78	E400
-BF7A	0547
-BF7C	231C
-BF7E	D400
-BF80	2307
-BF82	E400
-BF84	A301
-BF86	F400
-BF88	2303
-BF8A	0400
-BF8C	232E
-BF8E	4401
-BF90	1733
-BF92	02FC
-BF94	6700
-BF96	A354
-BF98	83A5
-BF9A	0A4B
-BF9C	8567
-BF9E	9387
-BFA0	07E1
-BFA2	1306
-BFA4	000F
-BFA6	BE95
-BFA8	5285
-BFAA	9760
-BFAC	00FC
-BFAE	E780
-BFB0	2005
-BFB2	9DB7
-BFB4	8347
-BFB6	A400
-BFB8	CDDB
-BFBA	CDB5
-BFBC	37A5
-BFBE	0124
-BFC0	1305
-BFC2	050C
-BFC4	9760
-BFC6	FFFB
-BFC8	E780
-BFCA	8043
-BFCC	45BD
-BFCE	0100
-BFD0	1733
-BFD2	02FC
-BFD4	E702
-BFD6	034F
-BFD8	8347
-BFDA	1501
-BFDC	A304
-BFDE	0500
-BFE0	2A84
-BFE2	91EF
-BFE4	8357
-BFE6	8501
-BFE8	99EB
-BFEA	8347
-BFEC	F500
-BFEE	A307
-BFF0	0500
-BFF2	A304
-BFF4	F500
-BFF6	1733
-BFF8	02FC
-BFFA	6700
-BFFC	E34E
-BFFE	2285
-C000	9790
-C002	FFFB
-C004	E780
-C006	C0C4
-C008	8347
-C00A	3400
-C00C	0347
-C00E	6400
-C010	8346
-C012	7400
-C014	FD17
-C016	0507
-C018	93F7
-C01A	F70F
-C01C	2303
-C01E	E400
-C020	A301
-C022	F400
-C024	99C2
-C026	A303
-C028	0400
-C02A	B1EF
-C02C	0347
-C02E	1401
-C030	8356
-C032	8401
-C034	8347
-C036	5400
-C038	2309
-C03A	E400
-C03C	0547
-C03E	231A
-C040	D400
-C042	2304
-C044	E400
-C046	231C
-C048	0400
-C04A	A308
-C04C	0400
-C04E	C5E3
-C050	8347
-C052	1400
-C054	13F7
-C056	2700
-C058	19C7
-C05A	0347
-C05C	0400
-C05E	01C7
-C060	0347
-C062	2400
-C064	4DC3
-C066	858B
-C068	A5CF
-C06A	B727
-C06C	0024
-C06E	83C7
-C070	274D
-C072	D1D3
-C074	B767
-C076	0124
-C078	83A7
-C07A	074B
-C07C	0567
-C07E	BA97
-C080	2380
-C082	07E0
-C084	8DBF
-C086	0347
-C088	0401
-C08A	5C4C
-C08C	9316
-C08E	1700
-C090	B697
-C092	5CCC
-C094	B727
-C096	0024
-C098	9387
-C09A	0733
-C09C	83C6
-C09E	371A
-C0A0	89EA
-C0A2	8346
-C0A4	6401
-C0A6	A1DA
-C0A8	B7A6
-C0AA	0124
-C0AC	83C6
-C0AE	260A
-C0B0	B9F2
-C0B2	83C7
-C0B4	471A
-C0B6	A1F3
-C0B8	0346
-C0BA	0400
-C0BC	B767
-C0BE	0124
-C0C0	83A5
-C0C2	074B
-C0C4	3306
-C0C6	E602
-C0C8	8567
-C0CA	9387
-C0CC	07E1
-C0CE	BE95
-C0D0	1305
-C0D2	0403
-C0D4	0606
-C0D6	9760
-C0D8	00FC
-C0DA	E780
-C0DC	60F2
-C0DE	21BF
-C0E0	8547
-C0E2	A304
-C0E4	F400
-C0E6	1733
-C0E8	02FC
-C0EA	6700
-C0EC	E33F
-C0EE	FD17
-C0F0	A302
-C0F2	F400
-C0F4	2285
-C0F6	9760
-C0F8	FFFB
-C0FA	E780
-C0FC	6011
-C0FE	1733
-C100	02FC
-C102	6700
-C104	633E
-C106	2285
-C108	9760
-C10A	FFFB
-C10C	E780
-C10E	4010
-C110	DDB5
-C112	0100
-C114	8947
-C116	6303
-C118	F500
-C11A	8280
-C11C	1733
-C11E	02FC
-C120	E702
-C122	A338
-C124	B784
-C126	0124
-C128	9384
-C12A	04AA
-C12C	87A7
-C12E	040A
-C130	4111
-C132	37C5
-C134	0224
-C136	5396
-C138	17C0
-C13A	7400
-C13C	9145
-C13E	1305
-C140	A5B8
-C142	9750
-C144	FFFB
-C146	E780
-C148	60C3
-C14A	3719
-C14C	0140
-C14E	4205
-C150	4181
-C152	130A
-C154	4924
-C156	B789
-C158	0124
-C15A	37C4
-C15C	0224
-C15E	B7CA
-C160	0224
-C162	2317
-C164	A100
-C166	9389
-C168	89B1
-C16A	1304
-C16C	24B9
-C16E	938A
-C170	AABB
-C172	330A
-C174	9A40
-C176	0605
-C178	2295
-C17A	8355
-C17C	2500
-C17E	0356
-C180	C100
-C182	0355
-C184	0500
-C186	2104
-C188	9760
-C18A	00FC
-C18C	E780
-C18E	8082
-C190	4205
-C192	4181
-C194	2390
-C196	A900
-C198	B387
-C19A	4901
-C19C	2390
-C19E	A700
-C1A0	8909
-C1A2	6305
-C1A4	5401
-C1A6	0355
-C1A8	E100
-C1AA	F1B7
-C1AC	B789
-C1AE	0124
-C1B0	37CA
-C1B2	0224
-C1B4	1309
-C1B6	0926
-C1B8	9389
-C1BA	A9AF
-C1BC	130A
-C1BE	2AC3
-C1C0	8357
-C1C2	E100
-C1C4	0356
-C1C6	C100
-C1C8	8509
-C1CA	8607
-C1CC	A297
-C1CE	83D5
-C1D0	2700
-C1D2	03D5
-C1D4	0700
-C1D6	0909
-C1D8	2104
-C1DA	9750
-C1DC	00FC
-C1DE	E780
-C1E0	607D
-C1E2	1375
-C1E4	F50F
-C1E6	A38F
-C1E8	A9FE
-C1EA	4205
-C1EC	4181
-C1EE	231F
-C1F0	A9FE
-C1F2	E317
-C1F4	44FD
-C1F6	B719
-C1F8	0140
-C1FA	3789
-C1FC	0124
-C1FE	37CA
-C200	0224
-C202	9389
-C204	291F
-C206	1309
-C208	C9B2
-C20A	130A
-C20C	2AC6
-C20E	B389
-C210	9940
-C212	8357
-C214	E100
-C216	0356
-C218	C100
-C21A	8607
-C21C	A297
-C21E	83D5
-C220	2700
-C222	03D5
-C224	0700
-C226	2104
-C228	9750
-C22A	00FC
-C22C	E780
-C22E	8078
-C230	4205
-C232	4181
-C234	2310
-C236	A900
-C238	B307
-C23A	3901
-C23C	2390
-C23E	A700
-C240	0909
-C242	E318
-C244	44FD
-C246	B717
-C248	0140
-C24A	3789
-C24C	0124
-C24E	B7C9
-C250	0224
-C252	9387
-C254	A720
-C256	1309
-C258	69B4
-C25A	9389
-C25C	29C9
-C25E	B384
-C260	9740
-C262	8357
-C264	E100
-C266	0356
-C268	C100
-C26A	8607
-C26C	A297
-C26E	83D5
-C270	2700
-C272	03D5
-C274	0700
-C276	2104
-C278	9750
-C27A	00FC
-C27C	E780
-C27E	8073
-C280	4205
-C282	4181
-C284	2310
-C286	A900
-C288	B307
-C28A	9900
-C28C	2390
-C28E	A700
-C290	0909
-C292	E318
-C294	34FD
-C296	4101
-C298	1733
-C29A	02FC
-C29C	6700
-C29E	2324
-C2A0	1733
-C2A2	02FC
-C2A4	E702
-C2A6	0322
-C2A8	2A84
-C2AA	EFE0
-C2AC	3F98
-C2AE	1DE0
-C2B0	B797
-C2B2	0124
-C2B4	9387
-C2B6	0753
-C2B8	0D67
-C2BA	3E97
-C2BC	0327
-C2BE	876E
-C2C0	058B
-C2C2	09CB
-C2C4	3787
-C2C6	0040
-C2C8	0357
-C2CA	87F4
-C2CC	A146
-C2CE	618B
-C2D0	6306
-C2D2	D700
-C2D4	1733
-C2D6	02FC
-C2D8	6700
-C2DA	0321
-C2DC	0567
-C2DE	BA97
-C2E0	2389
-C2E2	07B6
-C2E4	C5BF
-C2E6	0100
-C2E8	9147
-C2EA	6303
-C2EC	F500
-C2EE	8280
-C2F0	1733
-C2F2	02FC
-C2F4	E702
-C2F6	031D
-C2F8	9750
-C2FA	FFFB
-C2FC	E780
-C2FE	C063
-C300	09C5
-C302	1733
-C304	02FC
-C306	6700
-C308	231E
-C30A	9750
-C30C	FFFB
-C30E	E780
-C310	E05D
-C312	65F9
-C314	B7C7
-C316	0224
-C318	03D7
-C31A	67B8
-C31C	B7F7
-C31E	0040
-C320	2390
-C322	E73E
-C324	F9BF
-C326	0100
-C328	37C7
-C32A	0224
-C32C	1307
-C32E	47B8
-C330	8345
-C332	0700
-C334	B7A7
-C336	0224
-C338	B7D6
-C33A	0124
-C33C	03D6
-C33E	4760
-C340	23A8
-C342	B6DA
-C344	B767
-C346	0124
-C348	B7C6
-C34A	0224
-C34C	9387
-C34E	0740
-C350	9386
-C352	86C9
-C354	D4C7
-C356	09CA
-C358	B7B6
-C35A	0224
-C35C	3726
-C35E	0024
-C360	9386
-C362	8668
-C364	2320
-C366	D6CE
-C368	2319
-C36A	0710
-C36C	37C7
-C36E	0224
-C370	1307
-C372	072A
-C374	B7C6
-C376	0224
-C378	98D7
-C37A	37C7
-C37C	0224
-C37E	9386
-C380	4611
-C382	1307
-C384	872E
-C386	23A4
-C388	D1A4
-C38A	D8C3
-C38C	8280
-C38E	0100
-C390	1733
-C392	02FC
-C394	E702
-C396	0313
-C398	B7C6
-C39A	0224
-C39C	B787
-C39E	0324
-C3A0	9386
-C3A2	863E
-C3A4	37A7
-C3A6	0124
-C3A8	9387
-C3AA	07FF
-C3AC	1307
-C3AE	0753
-C3B0	958F
-C3B2	232C
-C3B4	D7B4
-C3B6	232E
-C3B8	F7B4
-C3BA	9720
-C3BC	01FC
-C3BE	E780
-C3C0	600C
-C3C2	11C5
-C3C4	EFE0
-C3C6	0F80
-C3C8	EFF0
-C3CA	4FF0
-C3CC	B13F
-C3CE	1733
-C3D0	02FC
-C3D2	6700
-C3D4	6311
-C3D6	0000
-C3D8	A310
-C3DA	E538
-C3DC	0000
-C3DE	0000
-C3E0	BEFF
-C3E2	0F00
-C3E4	0000
-C3E6	0000
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	0010
-84C8	90C3
-84CA	0224
-84CC	44AB
-84CE	0224
-84D0	44AB
-84D2	0224
-84D4	44AB
-84D6	0224
-84D8	44AB
-84DA	0224
-84DC	44AB
-84DE	0224
-A548	001D
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00D5
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	0100
-A5A2	0036
-A5A4	0000
-A5A6	0000
-A5A8	0000
-A5AA	0000
-A5AC	0000
-A5AE	0000
-A5B0	0000
-A5B2	0000
-A5B4	0000
-A5B6	0000
-A5B8	0000
-A5BA	0000
-A5BC	0000
-A5BE	0000
-A5C0	0000
-A5C2	0000
-A5C4	0000
-A5C6	0000
-A5C8	0000
-A5CA	0000
-A5CC	0000
-A5CE	0000
-A5D0	0000
-A5D2	0000
-A5D4	0000
-A5D6	0000
-A5D8	0000
-A5DA	0000
-A5DC	0000
-A5DE	0000
-A5E0	0000
-A5E2	0000
-A5E4	0000
-A5E6	0000
-A5E8	0000
-A5EA	0000
-A5EC	000F
-A5EE	000F
-A5F0	000F
-A5F2	000F
-A5F4	0000
-A5F6	0000
-A5F8	0000
-A5FA	0000
-A5FC	0000
-A5FE	0000
-A600	0000
-A602	0000
-A604	0000
-A606	00C6
-BB84	0001
-BB86	0000
-BB88	0000
-BB8A	0100
-BB8C	0800
-BB8E	1000
-BB90	2000
-BB92	9A00
-BB94	9A00
-BB96	9A00
-BB98	9A00
-BB9A	9600
-BB9C	9600
-BB9E	9600
-BBA0	9600
-BBA2	9300
-BBA4	9300
-BBA6	9300
-BBA8	9300
-BBAA	9000
-BBAC	9000
-BBAE	9000
-BBB0	9000
-BBB2	8D00
-BBB4	8D00
-BBB6	8D00
-BBB8	8D00
-BBBA	3F00
-BBBC	3F00
-BBBE	3F00
-BBC0	3F00
-BBC2	1E00
-BBC4	1E00
-BBC6	1E00
-BBC8	1E00
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0000
-BBD2	0800
-BBD4	0800
-BBD6	0800
-BBD8	0800
-BBDA	0000
-BBDC	0000
-BBDE	0000
-BBE0	0000
-BBE2	3F00
-BBE4	3F00
-BBE6	3F00
-BBE8	3F00
-BBEA	3400
-BBEC	3400
-BBEE	3400
-BBF0	3400
-BBF2	0A00
-BBF4	0A00
-BBF6	0A00
-BBF8	0A00
-BBFA	1000
-BBFC	1000
-BBFE	1000
-BC00	1000
-BC02	0600
-BC04	0600
-BC06	0600
-BC08	0600
-BC0A	0C00
-BC0C	0C00
-BC0E	0C00
-BC10	0C00
-BC12	0000
-BC14	0000
-BC16	0000
-BC18	0000
-BC1A	1000
-BC1C	1000
-BC1E	1000
-BC20	1000
-BC22	1000
-BC24	1000
-BC26	1000
-BC28	1000
-BC2A	2000
-BC2C	1000
-BC2E	1000
-BC30	1000
-BC32	0600
-BC34	0600
-BC36	0600
-BC38	0600
-BC3A	1C00
-BC3C	1C00
-BC3E	1C00
-BC40	1C00
-BC42	0600
-BC44	0600
-BC46	0600
-BC48	0600
-BC4A	2A00
-BC4C	2A00
-BC4E	2A00
-BC50	2A00
-BC52	0200
-BC54	0200
-BC56	0200
-BC58	0200
-BC5A	1000
-BC5C	1000
-BC5E	1000
-BC60	1000
-BC62	0E00
-BC64	0E00
-BC66	0E00
-BC68	0E00
-BC6A	2800
-BC6C	2800
-BC6E	2800
-BC70	2800
-BC72	1800
-BC74	1800
-BC76	1800
-BC78	1800
-BC7A	0800
-BC7C	0800
-BC7E	0800
-BC80	0800
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0000
-BC8A	2400
-BC8C	2400
-BC8E	2400
-BC90	2400
-BC92	0088
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	7CAC
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	18A6
-570A	0224
-570C	0453
-570E	0020
-5710	A0A7
-5712	0224
-5714	C850
-5716	0220
-5718	B8AC
-571A	0224
-571C	2C88
-571E	0220
-5720	F0AD
-5722	0224
-5724	7C82
-5726	0120
-5728	C8B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	64B5
-5732	0224
-5734	1081
-5736	0320
-5738	70B9
-573A	0224
-573C	BCFD
-573E	0220
-5740	E4B9
-5742	0224
-5744	BCA5
-5746	0420
-5748	7CBA
-574A	0224
-574C	B803
-574E	0320
-5750	E4BC
-5752	0224
-5754	8424
-5756	0220
-5758	B0BD
-575A	0224
-575C	9C4C
-575E	0220
-5760	D0BF
-5762	0224
-5764	0C22
-5766	0220
-5768	54BE
-576A	0224
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-25D2	0102
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-5ACC	6505
-FCFC	4000
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3234	0120
-3236	1600
-3238	0A14
-323A	2A2A
-323C	010F
-323E	0419
-3240	143A
-3242	0A4B
-3244	0101
-3246	0101
-3248	0010
-3252	C800
-3254	C400
-3256	C200
-3258	BE00
-325A	BC00
-3266	0100
-3268	0200
-326A	2A00
-326C	0000
-326E	3F00
-3270	0A00
-3272	1900
-3274	0C00
-3276	2000
-3278	2300
-327A	2100
-327C	3000
-327E	1100
-3280	0C00
-3282	2000
-3284	2300
-3286	2100
-3288	3000
-328A	1100
-328C	0F00
-328E	1900
-3290	0A00
-3292	0B00
-3296	0800
-3298	0F00
-329A	1900
-329C	0A00
-329E	0B00
-32A0	0000
-32A2	0800
-32A4	0F00
-32A6	1900
-32A8	0A00
-32AA	0B00
-32AC	0000
-32AE	0800
-3330	0108
-3334	0100
-3336	0000
-FCFC	4000
-FCFC	4000
-0B30	01FF
-FCFC	2000
-3D44	0000
-3D88	FCFC
-3D8A	FEFF
-3D8C	FCFC
-3D8E	FEFF
-3D90	FCFC
-3D92	FEFF
-3D94	FCFC
-3D96	FEFF
-3FE0	0324
-3FE2	6080
-3FE4	0324
-3FE6	0080
-4238	0324
-423A	6080
-423C	0000
-423E	0000
-4490	0324
-4492	6080
-4494	0324
-4496	7C87
-46E8	0324
-46EA	6080
-46EC	0324
-46EE	7C87
-46F0	0324
-46F2	128A
-4940	0324
-4942	6080
-4944	0324
-4946	5A8A
-4B98	0324
-4B9A	6080
-4B9C	0324
-4B9E	FC8C
-FCFC	2003
-8000	FFFE
-8002	2400
-8004	FFFD
-8006	D4AC
-8008	003B
-800A	FFFE
-800C	2401
-800E	FFFD
-8010	1D72
-8012	FFFC
-8014	1D74
-8016	FFFC
-8018	1D82
-801A	FFFC
-801C	1D84
-801E	FFFC
-8020	25E0
-8022	0000
-8024	25E2
-8026	0000
-8028	31D0
-802A	0002
-802C	31FA
-802E	04CD
-8030	FFFE
-8032	2400
-8034	FFFD
-8036	0B08
-8038	0101
-803A	0000
-803C	FFFF
-803E	0008
-8040	2401
-8042	1D92
-8044	FCFF
-8046	FCFF
-8048	FCFF
-804A	FCFF
-804C	FFFF
-804E	0008
-8050	2401
-8052	1DA2
-8054	FCFF
-8056	FCFF
-8058	FCFF
-805A	FCFF
-805C	0000
-805E	0000
-8060	FFFE
-8062	2400
-8064	FFFD
-8066	22C2
-8068	0006
-806A	22C4
-806C	1FFF
-806E	22EC
-8070	001F
-8072	2306
-8074	3FFF
-8076	2314
-8078	00FF
-807A	2354
-807C	0003
-807E	23F0
-8080	0100
-8082	68DE
-8084	0000
-8086	703C
-8088	0100
-808A	703E
-808C	0000
-808E	7046
-8090	027F
-8092	7048
-8094	002F
-8096	704A
-8098	0400
-809A	7058
-809C	0280
-809E	705A
-80A0	0030
-80A2	705C
-80A4	0400
-80A6	7806
-80A8	0100
-80AA	7808
-80AC	0824
-80AE	78C0
-80B0	0101
-80B2	795A
-80B4	0010
-80B6	7970
-80B8	0010
-80BA	7994
-80BC	2020
-80BE	7996
-80C0	0001
-80C2	799A
-80C4	0000
-80C6	7BDA
-80C8	003C
-80CA	7EE6
-80CC	002C
-80CE	7EF2
-80D0	002C
-80D2	7EFE
-80D4	0064
-80D6	7F0A
-80D8	0058
-80DA	7F0E
-80DC	0058
-80DE	82A2
-80E0	0012
-80E2	82BA
-80E4	0036
-80E6	8CCE
-80E8	012C
-80EA	8CD0
-80EC	0096
-80EE	8CD2
-80F0	0096
-80F2	8CD6
-80F4	0096
-80F6	8D0E
-80F8	0000
-80FA	9032
-80FC	0000
-80FE	903E
-8100	0000
-8102	B176
-8104	0006
-8106	B178
-8108	0000
-810A	B20C
-810C	002E
-810E	B21A
-8110	0204
-8112	B23C
-8114	6060
-8116	B242
-8118	6060
-811A	B266
-811C	04C0
-811E	B268
-8120	0440
-8122	B270
-8124	0887
-8126	B322
-8128	0101
-812A	B324
-812C	0001
-812E	B330
-8130	2828
-8132	B34A
-8134	2828
-8136	B360
-8138	2828
-813A	B378
-813C	0001
-813E	BF16
-8140	AA0B
-8142	BF30
-8144	0000
-8146	BF78
-8148	3353
-814A	C4D8
-814C	0020
-814E	C4E0
-8150	0001
-8152	C4E2
-8154	0002
-8156	C4F6
-8158	0000
-815A	C53C
-815C	0001
-815E	C53E
-8160	0000
-8162	C544
-8164	0500
-8166	C554
-8168	0D53
-816A	C556
-816C	0000
-816E	D1F6
-8170	003A
-8172	D20C
-8174	0809
-8176	D27A
-8178	0005
-817A	D314
-817C	0220
-817E	D326
-8180	2001
-8182	D3EC
-8184	1CB1
-8186	D3F0
-8188	1CB0
-818A	D410
-818C	0248
-818E	D412
-8190	04D2
-8192	D426
-8194	04D2
-8196	D428
-8198	0AEA
-819A	D43C
-819C	4001
-819E	D43E
-81A0	4001
-81A2	D49C
-81A4	0021
-81A6	D4A8
-81A8	0003
-81AA	D4AC
-81AC	03E8
-81AE	D4B0
-81B0	0001
-81B2	D4B4
-81B4	0001
-81B6	D4B8
-81B8	0035
-81BA	D4BC
-81BC	0014
-81BE	D4C0
-81C0	0014
-81C2	D4C4
-81C4	0001
-81C6	D4C8
-81C8	0000
-81CA	D4CC
-81CC	0000
-81CE	D4D0
-81D0	0016
-81D2	D4D2
-81D4	0020
-81D6	D4D6
-81D8	0000
-81DA	D4DA
-81DC	0000
-81DE	D4DE
-81E0	0000
-81E2	D4E2
-81E4	0001
-81E6	D4E6
-81E8	0001
-81EA	D4EA
-81EC	0001
-81EE	D4EC
-81F0	00BE
-81F2	D4EE
-81F4	00BE
-81F6	D4F8
-81F8	01F0
-81FA	D4FA
-81FC	01F0
-81FE	D554
-8200	0000
-8202	D556
-8204	0000
-8206	D560
-8208	0000
-820A	D562
-820C	0000
-820E	D5BC
-8210	0000
-8212	D5BE
-8214	0000
-8216	D5C8
-8218	0000
-821A	D5CA
-821C	0000
-821E	D624
-8220	0000
-8222	D62E
-8224	0000
-8226	D638
-8228	0000
-822A	D682
-822C	04C0
-822E	D684
-8230	0440
-8232	D6D4
-8234	0000
-8236	D704
-8238	7802
-823A	D718
-823C	0200
-823E	D856
-8240	0705
-8242	D896
-8244	0000
-8246	D8A2
-8248	0001
-824A	DC8C
-824C	2B3F
-824E	DC94
-8250	0001
-8252	DD70
-8254	0000
-8256	DE38
-8258	0000
-825A	E980
-825C	0500
-825E	EF80
-8260	0000
-8262	F014
-8264	0006
-8266	F09A
-8268	FF00
-826A	F0AA
-826C	FFFF
-826E	F0AC
-8270	FFFF
-8272	F288
-8274	0000
-8276	F2E0
-8278	0000
-827A	F2EA
-827C	0040
-827E	F370
-8280	0302
-8282	F372
-8284	0000
-8286	F3E4
-8288	0103
-828A	F3F4
-828C	08C8
-828E	F3F6
-8290	10D7
-8292	FFFE
-8294	2401
-8296	FFFD
-8298	195E
-829A	0001
-829C	1966
-829E	0000
-82A0	1DFE
-82A2	0000
-82A4	1E1E
-82A6	0000
-82A8	1E32
-82AA	0000
-82AC	1E36
-82AE	0000
-82B0	1E3A
-82B2	0000
-82B4	1E3E
-82B6	0000
-82B8	1E52
-82BA	0000
-82BC	1E56
-82BE	0000
-82C0	1E5A
-82C2	0000
-82C4	1E5E
-82C6	0000
-82C8	2540
-82CA	0002
-82CC	25E0
-82CE	0001
-82D0	25E2
-82D2	00CD
-82D4	2920
-82D6	0001
-82D8	29A8
-82DA	0002
-82DC	29BA
-82DE	00FF
-82E0	2A30
-82E2	FF01
-82E4	2A42
-82E6	0001
-82E8	2A44
-82EA	04B0
-82EC	2A46
-82EE	0000
-82F0	2A54
-82F2	0000
-82F4	2A56
-82F6	0008
-82F8	2BB2
-82FA	0010
-82FC	2D32
-82FE	1000
-8300	3132
-8302	0001
-8304	31D0
-8306	0000
-8308	31F8
-830A	0001
-830C	31FA
-830E	0400
-8310	3C42
-8312	0000
-8314	3C46
-8316	05EB
-8318	3C52
-831A	0640
-831C	4270
-831E	0000
-8320	427C
-8322	0020
-8324	4280
-8326	0010
-8328	4290
-832A	0001
-832C	4292
-832E	0000
-8330	4362
-8332	0001
-8334	4364
-8336	0000
-8338	4366
-833A	0000
-833C	4370
-833E	0000
-8340	4396
-8342	000C
-8344	4398
-8346	000E
-8348	43AA
-834A	0000
-834C	43AC
-834E	0000
-8350	43B4
-8352	0000
-8354	43B6
-8356	0000
-8358	43C6
-835A	0A01
-835C	44C6
-835E	0000
-8360	5A70
-8362	0000
-8364	FFFE
-8366	2402
-8368	FFFD
-836A	849E
-836C	0000
-836E	84A0
-8370	0000
-8372	84A2
-8374	0500
-8376	84C4
-8378	0000
-837A	A570
-837C	0000
-837E	FFFE
-8380	2400
-8382	FFFD
-8384	0086
-8386	0200
-8388	0112
-838A	0A0A
-838C	0114
-838E	0103
-8390	0118
-8392	0400
-8394	011A
-8396	0100
-8398	011C
-839A	0001
-839C	0136
-839E	1800
-83A0	013E
-83A2	0000
-83A4	020A
-83A6	0000
-83A8	021E
-83AA	0000
-83AC	0228
-83AE	0001
-83B0	0270
-83B2	2B2B
-83B4	0272
-83B6	102B
-83B8	0274
-83BA	2B30
-83BC	0304
-83BE	0003
-83C0	0306
-83C2	00E6
-83C4	031A
-83C6	0003
-83C8	031C
-83CA	0028
-83CC	031E
-83CE	0002
-83D0	0400
-83D2	1010
-83D4	0408
-83D6	0100
-83D8	040A
-83DA	0100
-83DC	040C
-83DE	0000
-83E0	0702
-83E2	0000
-83E4	0704
-83E6	0000
-83E8	0720
-83EA	0001
-83EC	0722
-83EE	0008
-83F0	0724
-83F2	0000
-83F4	0808
-83F6	0102
-83F8	0900
-83FA	1100
-83FC	0936
-83FE	0000
-8400	0C40
-8402	0000
-8404	0342
-8406	23F0
-8408	0000
-840A	FFFF
-840C	0008
-840E	2400
-8410	71D4
-8412	3F00
-8414	3D00
-8416	84F3
-8418	0040
-841A	FFFF
-841C	0010
-841E	2400
-8420	7274
-8422	0D00
-8424	0C00
-8426	36D2
-8428	0040
-842A	0000
-842C	0000
-842E	0000
-8430	0000
-8432	FFFF
-8434	0008
-8436	2400
-8438	7314
-843A	0000
-843C	0000
-843E	0000
-8440	0000
-8442	FFFF
-8444	0008
-8446	2400
-8448	7A0E
-844A	1E00
-844C	0F00
-844E	0F00
-8450	0F00
-8452	FFFF
-8454	0008
-8456	2400
-8458	7A6E
-845A	2800
-845C	1900
-845E	1900
-8460	1900
-8462	FFFF
-8464	0008
-8466	2400
-8468	7A86
-846A	2800
-846C	1900
-846E	1900
-8470	1900
-8472	FFFF
-8474	0008
-8476	2400
-8478	8C9E
-847A	5000
-847C	3500
-847E	3500
-8480	3500
-8482	FFFF
-8484	000A
-8486	2400
-8488	B21E
-848A	0000
-848C	0000
-848E	C000
-8490	0103
-8492	0000
-8494	FFFF
-8496	000C
-8498	2400
-849A	BEDC
-849C	C526
-849E	903E
-84A0	C00F
-84A2	0008
-84A4	0C00
-84A6	8000
-84A8	FFFF
-84AA	000E
-84AC	2400
-84AE	DADA
-84B0	0001
-84B2	0000
-84B4	3000
-84B6	8001
-84B8	0000
-84BA	0000
-84BC	0000
-84BE	FFFF
-84C0	000C
-84C2	2400
-84C4	DB0C
-84C6	0000
-84C8	0080
-84CA	0000
-84CC	0000
-84CE	0000
-84D0	0000
-84D2	FFFF
-84D4	000C
-84D6	2400
-84D8	DB3C
-84DA	12D2
-84DC	12D2
-84DE	12D2
-84E0	0000
-84E2	0000
-84E4	0000
-84E6	FFFF
-84E8	000C
-84EA	2400
-84EC	DB6C
-84EE	0000
-84F0	0000
-84F2	0000
-84F4	0000
-84F6	0000
-84F8	0000
-84FA	FFFF
-84FC	000C
-84FE	2400
-8500	DB9C
-8502	0000
-8504	0000
-8506	0000
-8508	0000
-850A	0000
-850C	0000
-850E	FFFF
-8510	000C
-8512	2400
-8514	DBCC
-8516	0000
-8518	0000
-851A	0000
-851C	0000
-851E	0000
-8520	0000
-8522	FFFF
-8524	0012
-8526	2401
-8528	1C24
-852A	0002
-852C	0001
-852E	FF03
-8530	0010
-8532	D70F
-8534	0004
-8536	0010
-8538	D70F
-853A	C20F
-853C	FFFF
-853E	0020
-8540	2401
-8542	1C4E
-8544	0001
-8546	FF03
-8548	0010
-854A	D70F
-854C	0004
-854E	0010
-8550	D70F
-8552	C20F
-8554	0000
-8556	0000
-8558	0000
-855A	0000
-855C	0000
-855E	0000
-8560	0000
-8562	0000
-8564	FFFF
-8566	0020
-8568	2401
-856A	1C76
-856C	0001
-856E	FF03
-8570	0010
-8572	D70F
-8574	0004
-8576	0010
-8578	D70F
-857A	C20F
-857C	0000
-857E	0000
-8580	0000
-8582	0000
-8584	0000
-8586	0000
-8588	0000
-858A	0000
-858C	FFFF
-858E	0010
-8590	2401
-8592	1C9E
-8594	0001
-8596	FF03
-8598	0010
-859A	D70F
-859C	0004
-859E	0010
-85A0	D70F
-85A2	C20F
-85A4	FFFF
-85A6	0010
-85A8	2401
-85AA	1CC6
-85AC	0000
-85AE	0000
-85B0	0000
-85B2	0000
-85B4	0000
-85B6	0000
-85B8	0000
-85BA	0000
-85BC	FFFF
-85BE	0020
-85C0	2401
-85C2	1CEE
-85C4	0000
-85C6	0000
-85C8	0000
-85CA	0000
-85CC	0000
-85CE	0000
-85D0	0000
-85D2	0000
-85D4	0000
-85D6	0000
-85D8	0000
-85DA	0000
-85DC	0000
-85DE	0000
-85E0	0000
-85E2	0000
-85E4	FFFF
-85E6	0020
-85E8	2401
-85EA	1D16
-85EC	0000
-85EE	0000
-85F0	0000
-85F2	0000
-85F4	0000
-85F6	0000
-85F8	0000
-85FA	0000
-85FC	0000
-85FE	0000
-8600	0000
-8602	0000
-8604	0000
-8606	0000
-8608	0000
-860A	0000
-860C	FFFF
-860E	0010
-8610	2401
-8612	1D3E
-8614	0000
-8616	0000
-8618	0000
-861A	0000
-861C	0000
-861E	0000
-8620	0000
-8622	0000
-8624	FFFF
-8626	0008
-8628	2401
-862A	1D72
-862C	0000
-862E	0000
-8630	0000
-8632	0000
-8634	FFFF
-8636	0008
-8638	2401
-863A	1D82
-863C	0000
-863E	0000
-8640	0000
-8642	0000
-8644	FFFF
-8646	0008
-8648	2401
-864A	1D92
-864C	0000
-864E	0000
-8650	0000
-8652	0000
-8654	FFFF
-8656	0008
-8658	2401
-865A	1DA2
-865C	0000
-865E	0000
-8660	0000
-8662	0000
-8664	FFFF
-8666	000A
-8668	2401
-866A	1DF2
-866C	0000
-866E	0000
-8670	0000
-8672	0000
-8674	0000
-8676	FFFF
-8678	0008
-867A	2401
-867C	1E02
-867E	0000
-8680	0000
-8682	0000
-8684	0000
-8686	FFFF
-8688	000A
-868A	2401
-868C	1E12
-868E	0000
-8690	0000
-8692	0000
-8694	0000
-8696	0000
-8698	FFFF
-869A	0008
-869C	2401
-869E	1E22
-86A0	0000
-86A2	0000
-86A4	0000
-86A6	0000
-86A8	FFFF
-86AA	0010
-86AC	2402
-86AE	A548
-86B0	0000
-86B2	0000
-86B4	0000
-86B6	0000
-86B8	0000
-86BA	0000
-86BC	0000
-86BE	0000
-86C0	FFFF
-86C2	0010
-86C4	2402
-86C6	A55C
-86C8	0000
-86CA	0000
-86CC	0000
-86CE	0000
-86D0	0000
-86D2	0000
-86D4	0000
-86D6	0000
-86D8	FFFF
-86DA	002C
-86DC	2402
-86DE	A574
-86E0	0100
-86E2	4000
-86E4	8000
-86E6	0001
-86E8	0002
-86EA	0002
-86EC	0002
-86EE	0002
-86F0	0002
-86F2	0002
-86F4	0800
-86F6	2100
-86F8	2900
-86FA	2E00
-86FC	2E00
-86FE	2E00
-8700	2E00
-8702	2E00
-8704	2E00
-8706	3000
-8708	A2FD
-870A	FEFE
-870C	FFFF
-870E	0008
-8710	2400
-8712	0260
-8714	0001
-8716	0000
-8718	0006
-871A	0700
-871C	FFFF
-871E	0008
-8720	2400
-8722	030C
-8724	0000
-8726	0300
-8728	CF00
-872A	0000
-872C	FFFF
-872E	0010
-8730	2400
-8732	0344
-8734	0008
-8736	0006
-8738	1F18
-873A	1F12
-873C	0010
-873E	000C
-8740	1000
-8742	1000
-8744	FFFF
-8746	0008
-8748	2400
-874A	0380
-874C	0100
-874E	0100
-8750	0100
-8752	0100
-8754	FFFF
-8756	0008
-8758	2400
-875A	0728
-875C	0000
-875E	0000
-8760	0000
-8762	0000
-8764	FFFF
-8766	000C
-8768	2400
-876A	0B02
-876C	0101
-876E	0001
-8770	0101
-8772	0100
-8774	0101
-8776	0100
-8778	0000
-877A	0000
-877C	FFFE
-877E	2400
-8780	FFFD
-8782	703C
-8784	0101
-8786	703E
-8788	0001
-878A	7048
-878C	021F
-878E	704A
-8790	0A00
-8792	705A
-8794	0220
-8796	705C
-8798	0A01
-879A	7274
-879C	000C
-879E	7276
-87A0	000B
-87A2	795A
-87A4	0020
-87A6	7970
-87A8	0020
-87AA	7996
-87AC	0101
-87AE	7A0E
-87B0	000F
-87B2	7A6E
-87B4	0019
-87B6	7A86
-87B8	0019
-87BA	7BDA
-87BC	004C
-87BE	82A2
-87C0	0014
-87C2	82BA
-87C4	0033
-87C6	8C9E
-87C8	0035
-87CA	8CA2
-87CC	0050
-87CE	8CCE
-87D0	0096
-87D2	8CD2
-87D4	00BE
-87D6	B176
-87D8	0206
-87DA	B220
-87DC	0301
-87DE	B268
-87E0	F380
-87E2	C4E2
-87E4	0000
-87E6	C53C
-87E8	0005
-87EA	C554
-87EC	1000
-87EE	D326
-87F0	1001
-87F2	D3EC
-87F4	1CB0
-87F6	D49C
-87F8	0003
-87FA	D4A8
-87FC	0001
-87FE	D4AC
-8800	0001
-8802	D4B0
-8804	0202
-8806	D4B8
-8808	0014
-880A	D4BC
-880C	0047
-880E	D4C4
-8810	0000
-8812	D4C8
-8814	0001
-8816	D4D0
-8818	0026
-881A	D4D2
-881C	0000
-881E	D4D6
-8820	001A
-8822	D4DE
-8824	0001
-8826	D4E2
-8828	0028
-882A	D4EC
-882C	0000
-882E	D4EE
-8830	0000
-8832	D4F8
-8834	0000
-8836	D4FA
-8838	0000
-883A	D554
-883C	00C4
-883E	D556
-8840	00EC
-8842	D560
-8844	0352
-8846	D562
-8848	037A
-884A	D684
-884C	F380
-884E	DB0E
-8850	4000
-8852	DB12
-8854	B000
-8856	DB14
-8858	D000
-885A	DB16
-885C	F000
-885E	DB42
-8860	D212
-8862	DB44
-8864	D212
-8866	DB46
-8868	D212
-886A	DC8C
-886C	0B3F
-886E	DC94
-8870	0301
-8872	E980
-8874	049E
-8876	F014
-8878	0007
-887A	F3F4
-887C	00C8
-887E	F3F6
-8880	10D6
-8882	FFFE
-8884	2401
-8886	FFFD
-8888	1C4E
-888A	0180
-888C	1C50
-888E	0480
-8890	2540
-8892	0000
-8894	25E0
-8896	0000
-8898	25E2
-889A	0000
-889C	29A8
-889E	0001
-88A0	29BA
-88A2	0020
-88A4	2A44
-88A6	0739
-88A8	2A56
-88AA	0004
-88AC	3132
-88AE	0002
-88B0	31F8
-88B2	0000
-88B4	31FA
-88B6	0000
-88B8	4396
-88BA	000D
-88BC	FFFE
-88BE	2402
-88C0	FFFD
-88C2	84C4
-88C4	0001
-88C6	A598
-88C8	0032
-88CA	A59A
-88CC	0038
-88CE	FFFE
-88D0	2400
-88D2	FFFD
-88D4	0086
-88D6	1400
-88D8	0350
-88DA	0008
-88DC	0352
-88DE	0008
-88E0	0900
-88E2	2222
-88E4	0B02
-88E6	0201
-88E8	0342
-88EA	12B0
-88EC	0000
-88EE	FFFF
-88F0	0008
-88F2	2400
-88F4	7314
-88F6	2E00
-88F8	3000
-88FA	9EFD
-88FC	0040
-88FE	FFFF
-8900	000A
-8902	2400
-8904	DADE
-8906	4000
-8908	E001
-890A	2003
-890C	8007
-890E	000B
-8910	FFFF
-8912	0010
-8914	2401
-8916	1C26
-8918	8001
-891A	8004
-891C	2010
-891E	2010
-8920	0005
-8922	00A0
-8924	2810
-8926	2810
-8928	FFFF
-892A	000A
-892C	2401
-892E	1C54
-8930	0010
-8932	0005
-8934	00A0
-8936	2810
-8938	2810
-893A	FFFF
-893C	0010
-893E	2401
-8940	1C76
-8942	8001
-8944	8004
-8946	2010
-8948	2010
-894A	0005
-894C	00A0
-894E	2810
-8950	2810
-8952	FFFF
-8954	0010
-8956	2401
-8958	1C9E
-895A	8001
-895C	8004
-895E	2010
-8960	2010
-8962	0005
-8964	00A0
-8966	2810
-8968	2810
-896A	FFFF
-896C	0010
-896E	2401
-8970	1CC6
-8972	8001
-8974	8004
-8976	2010
-8978	2010
-897A	0005
-897C	00A0
-897E	2810
-8980	2810
-8982	FFFF
-8984	0010
-8986	2401
-8988	1CEE
-898A	8001
-898C	8004
-898E	0010
-8990	0010
-8992	0005
-8994	00A0
-8996	2810
-8998	2810
-899A	FFFF
-899C	0010
-899E	2401
-89A0	1D16
-89A2	8001
-89A4	8004
-89A6	2010
-89A8	2010
-89AA	0005
-89AC	00A0
-89AE	2810
-89B0	2810
-89B2	FFFF
-89B4	0010
-89B6	2401
-89B8	1D3E
-89BA	8001
-89BC	8004
-89BE	2010
-89C0	2010
-89C2	0005
-89C4	00A0
-89C6	2810
-89C8	2810
-89CA	FFFF
-89CC	001C
-89CE	2402
-89D0	A57A
-89D2	A000
-89D4	4001
-89D6	8002
-89D8	0005
-89DA	000A
-89DC	A00F
-89DE	4011
-89E0	0E00
-89E2	2000
-89E4	2800
-89E6	1400
-89E8	2200
-89EA	2800
-89EC	2C00
-89EE	FFFF
-89F0	0008
-89F2	2400
-89F4	0344
-89F6	0000
-89F8	0000
-89FA	1F20
-89FC	1F18
-89FE	FFFF
-8A00	0008
-8A02	2400
-8A04	0380
-8A06	0200
-8A08	0200
-8A0A	0200
-8A0C	0200
-8A0E	0000
-8A10	0000
-8A12	FFFE
-8A14	2400
-8A16	FFFD
-8A18	D49C
-8A1A	0022
-8A1C	D4A8
-8A1E	0000
-8A20	D4B0
-8A22	046A
-8A24	D4BC
-8A26	0062
-8A28	D4D0
-8A2A	000A
-8A2C	D4E2
-8A2E	0036
-8A30	D556
-8A32	00FA
-8A34	D562
-8A36	0388
-8A38	FFFE
-8A3A	2401
-8A3C	FFFD
-8A3E	2A44
-8A40	0952
-8A42	FFFE
-8A44	2400
-8A46	FFFD
-8A48	0346
-8A4A	0300
-8A4C	034A
-8A4E	151F
-8A50	034E
-8A52	0900
-8A54	0000
-8A56	0000
-8A58	0000
-8A5A	FFFE
-8A5C	2400
-8A5E	FFFD
-8A60	703C
-8A62	0101
-8A64	7048
-8A66	009F
-8A68	705A
-8A6A	00A0
-8A6C	7274
-8A6E	B000
-8A70	7276
-8A72	0000
-8A74	7278
-8A76	D212
-8A78	7806
-8A7A	0101
-8A7C	7808
-8A7E	0C3F
-8A80	795A
-8A82	0020
-8A84	7970
-8A86	0020
-8A88	7A0E
-8A8A	000F
-8A8C	7A6E
-8A8E	0019
-8A90	7A86
-8A92	0019
-8A94	82A2
-8A96	0014
-8A98	82BA
-8A9A	0033
-8A9C	8C9E
-8A9E	0035
-8AA0	8CA2
-8AA2	0050
-8AA4	8CCE
-8AA6	0096
-8AA8	8CD2
-8AAA	00BE
-8AAC	B176
-8AAE	0206
-8AB0	B220
-8AB2	0301
-8AB4	B268
-8AB6	E380
-8AB8	C4D8
-8ABA	0010
-8ABC	C4E2
-8ABE	0000
-8AC0	C53C
-8AC2	0005
-8AC4	C554
-8AC6	1000
-8AC8	D326
-8ACA	1001
-8ACC	D3EC
-8ACE	1CB0
-8AD0	D4A8
-8AD2	0001
-8AD4	D4AC
-8AD6	0001
-8AD8	D4B0
-8ADA	037E
-8ADC	D4B8
-8ADE	0014
-8AE0	D4BC
-8AE2	040B
-8AE4	D4C4
-8AE6	0000
-8AE8	D4C8
-8AEA	0001
-8AEC	D4D0
-8AEE	000A
-8AF0	D4D2
-8AF2	0000
-8AF4	D4D6
-8AF6	001A
-8AF8	D4DE
-8AFA	0001
-8AFC	D4E2
-8AFE	0036
-8B00	D4EC
-8B02	0000
-8B04	D4EE
-8B06	0000
-8B08	D4F8
-8B0A	0000
-8B0C	D4FA
-8B0E	0000
-8B10	D554
-8B12	00C4
-8B14	D556
-8B16	00FA
-8B18	D560
-8B1A	0352
-8B1C	D562
-8B1E	0388
-8B20	D684
-8B22	E380
-8B24	D704
-8B26	7800
-8B28	DADE
-8B2A	00A0
-8B2C	DAE0
-8B2E	0140
-8B30	DB0C
-8B32	000D
-8B34	DB0E
-8B36	000F
-8B38	DB10
-8B3A	000D
-8B3C	DB3C
-8B3E	D236
-8B40	DB3E
-8B42	D236
-8B44	DB40
-8B46	D236
-8B48	DC8C
-8B4A	0B3F
-8B4C	DC94
-8B4E	0301
-8B50	E980
-8B52	049E
-8B54	F3F4
-8B56	00C8
-8B58	F3F6
-8B5A	10D6
-8B5C	FFFE
-8B5E	2401
-8B60	FFFD
-8B62	195E
-8B64	0101
-8B66	1966
-8B68	0002
-8B6A	2540
-8B6C	0000
-8B6E	25E0
-8B70	0000
-8B72	25E2
-8B74	0000
-8B76	29A8
-8B78	0001
-8B7A	29BA
-8B7C	0020
-8B7E	2A44
-8B80	0739
-8B82	2A56
-8B84	0004
-8B86	3132
-8B88	0002
-8B8A	31F8
-8B8C	0000
-8B8E	31FA
-8B90	0000
-8B92	4396
-8B94	000D
-8B96	5A70
-8B98	0001
-8B9A	FFFE
-8B9C	2402
-8B9E	FFFD
-8BA0	A598
-8BA2	0032
-8BA4	A59A
-8BA6	0038
-8BA8	FFFE
-8BAA	2400
-8BAC	FFFD
-8BAE	0086
-8BB0	0280
-8BB2	021E
-8BB4	0006
-8BB6	034E
-8BB8	0900
-8BBA	0350
-8BBC	0008
-8BBE	0352
-8BC0	0008
-8BC2	0722
-8BC4	0020
-8BC6	0900
-8BC8	2222
-8BCA	0B02
-8BCC	0201
-8BCE	0342
-8BD0	2560
-8BD2	0000
-8BD4	FFFF
-8BD6	0010
-8BD8	2401
-8BDA	1C26
-8BDC	8001
-8BDE	F004
-8BE0	2010
-8BE2	5610
-8BE4	0005
-8BE6	00A0
-8BE8	B610
-8BEA	7011
-8BEC	FFFF
-8BEE	0018
-8BF0	2401
-8BF2	1C4E
-8BF4	8001
-8BF6	F004
-8BF8	2810
-8BFA	5110
-8BFC	0005
-8BFE	F009
-8C00	9710
-8C02	DA10
-8C04	000A
-8C06	00A0
-8C08	DA10
-8C0A	7011
-8C0C	FFFF
-8C0E	0018
-8C10	2401
-8C12	1C76
-8C14	8001
-8C16	F004
-8C18	2810
-8C1A	6610
-8C1C	0005
-8C1E	F009
-8C20	7210
-8C22	DD10
-8C24	000A
-8C26	00A0
-8C28	DD10
-8C2A	7011
-8C2C	FFFF
-8C2E	0010
-8C30	2401
-8C32	1C9E
-8C34	8001
-8C36	F004
-8C38	2010
-8C3A	5610
-8C3C	0005
-8C3E	00A0
-8C40	C410
-8C42	7011
-8C44	FFFF
-8C46	0010
-8C48	2401
-8C4A	1CC6
-8C4C	8001
-8C4E	F004
-8C50	2010
-8C52	5610
-8C54	0005
-8C56	00A0
-8C58	B610
-8C5A	7011
-8C5C	FFFF
-8C5E	0018
-8C60	2401
-8C62	1CEE
-8C64	8001
-8C66	F004
-8C68	2810
-8C6A	5110
-8C6C	0005
-8C6E	F009
-8C70	9710
-8C72	DA10
-8C74	000A
-8C76	00A0
-8C78	DA10
-8C7A	7011
-8C7C	FFFF
-8C7E	0018
-8C80	2401
-8C82	1D16
-8C84	8001
-8C86	F004
-8C88	2810
-8C8A	6610
-8C8C	0005
-8C8E	F009
-8C90	7210
-8C92	DD10
-8C94	000A
-8C96	00A0
-8C98	DD10
-8C9A	7011
-8C9C	FFFF
-8C9E	0010
-8CA0	2401
-8CA2	1D3E
-8CA4	8001
-8CA6	F004
-8CA8	2010
-8CAA	5610
-8CAC	0005
-8CAE	00A0
-8CB0	C410
-8CB2	7011
-8CB4	FFFF
-8CB6	001C
-8CB8	2402
-8CBA	A57A
-8CBC	A000
-8CBE	4001
-8CC0	8002
-8CC2	0005
-8CC4	000A
-8CC6	A00F
-8CC8	4011
-8CCA	0E00
-8CCC	2000
-8CCE	2800
-8CD0	1400
-8CD2	2200
-8CD4	2800
-8CD6	2C00
-8CD8	FFFF
-8CDA	0008
-8CDC	2400
-8CDE	0344
-8CE0	0000
-8CE2	0003
-8CE4	1F20
-8CE6	1F15
-8CE8	FFFF
-8CEA	0008
-8CEC	2400
-8CEE	0380
-8CF0	0200
-8CF2	0200
-8CF4	0200
-8CF6	0200
-8CF8	0000
-8CFA	0000
-8CFC	FFFE
-8CFE	2400
-8D00	FFFD
-8D02	D49C
-8D04	0000
-8D06	D4A8
-8D08	0000
-8D0A	D4AC
-8D0C	0001
-8D0E	D4B8
-8D10	0014
-8D12	D4C4
-8D14	0000
-8D16	D4D0
-8D18	000A
-8D1A	D4D2
-8D1C	0000
-8D1E	D4DE
-8D20	0001
-8D22	D4EC
-8D24	0000
-8D26	D4EE
-8D28	0000
-8D2A	D4F8
-8D2C	0000
-8D2E	D4FA
-8D30	0000
-8D32	FFFE
-8D34	2401
-8D36	FFFD
-8D38	1D72
-8D3A	FFFC
-8D3C	1D74
-8D3E	FFFC
-8D40	1D82
-8D42	FFFC
-8D44	1D84
-8D46	FFFC
-8D48	25E0
-8D4A	0000
-8D4C	25E2
-8D4E	0000
-8D50	2A44
-8D52	047E
-8D54	31D0
-8D56	0002
-8D58	31FA
-8D5A	04CD
-8D5C	FFFE
-8D5E	2400
-8D60	FFFD
-8D62	0346
-8D64	0780
-8D66	034A
-8D68	109F
-8D6A	034E
-8D6C	0900
-8D6E	0B08
-8D70	0101
-8D72	0000
-8D74	FFFF
-8D76	0008
-8D78	2401
-8D7A	1D92
-8D7C	FCFF
-8D7E	FCFF
-8D80	FCFF
-8D82	FCFF
-8D84	FFFF
-8D86	0008
-8D88	2401
-8D8A	1DA2
-8D8C	FCFF
-8D8E	FCFF
-8D90	FCFF
-8D92	FCFF
-8D94	0000
-8D96	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_short_1.2f_0723.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_short_1.2f_0723.txt
deleted file mode 100755
index 0e07d6f8..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_short_1.2f_0723.txt
+++ /dev/null
@@ -1,3547 +0,0 @@
-FCFC	4000
-0000	000C
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0101
-FCFC	2001
-3C60	0000
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	0010
-84C8	F0C2
-84CA	0224
-84CC	44AB
-84CE	0224
-84D0	44AB
-84D2	0224
-84D4	44AB
-84D6	0224
-84D8	44AB
-84DA	0224
-84DC	44AB
-84DE	0224
-A548	001D
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00D5
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	0100
-A5A2	0036
-A5A4	0000
-A5A6	0000
-A5A8	0000
-A5AA	0000
-A5AC	0000
-A5AE	0000
-A5B0	0000
-A5B2	0000
-A5B4	0000
-A5B6	0000
-A5B8	0000
-A5BA	0000
-A5BC	0000
-A5BE	0000
-A5C0	0000
-A5C2	0000
-A5C4	0000
-A5C6	0000
-A5C8	0000
-A5CA	0000
-A5CC	0000
-A5CE	0000
-A5D0	0000
-A5D2	0000
-A5D4	0000
-A5D6	0000
-A5D8	0000
-A5DA	0000
-A5DC	0000
-A5DE	0000
-A5E0	0000
-A5E2	0000
-A5E4	0000
-A5E6	0000
-A5E8	0000
-A5EA	0000
-A5EC	000F
-A5EE	000F
-A5F0	000F
-A5F2	000F
-A5F4	0000
-A5F6	0000
-A5F8	0000
-A5FA	0000
-A5FC	0000
-A5FE	0000
-A600	0000
-A602	0000
-A604	0000
-A606	00C6
-BB84	0000
-BB86	00EB
-BB88	0100
-BB8A	0800
-BB8C	1000
-BB8E	2000
-BB90	9A00
-BB92	9A00
-BB94	9A00
-BB96	9A00
-BB98	9600
-BB9A	9600
-BB9C	9600
-BB9E	9600
-BBA0	9300
-BBA2	9300
-BBA4	9300
-BBA6	9300
-BBA8	9000
-BBAA	9000
-BBAC	9000
-BBAE	9000
-BBB0	8D00
-BBB2	8D00
-BBB4	8D00
-BBB6	8D00
-BBB8	3F00
-BBBA	3F00
-BBBC	3F00
-BBBE	3F00
-BBC0	1E00
-BBC2	1E00
-BBC4	1E00
-BBC6	1E00
-BBC8	0000
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0800
-BBD2	0800
-BBD4	0800
-BBD6	0800
-BBD8	0000
-BBDA	0000
-BBDC	0000
-BBDE	0000
-BBE0	3F00
-BBE2	3F00
-BBE4	3F00
-BBE6	3F00
-BBE8	3400
-BBEA	3400
-BBEC	3400
-BBEE	3400
-BBF0	0A00
-BBF2	0A00
-BBF4	0A00
-BBF6	0A00
-BBF8	1000
-BBFA	1000
-BBFC	1000
-BBFE	1000
-BC00	0600
-BC02	0600
-BC04	0600
-BC06	0600
-BC08	0C00
-BC0A	0C00
-BC0C	0C00
-BC0E	0C00
-BC10	0000
-BC12	0000
-BC14	0000
-BC16	0000
-BC18	1000
-BC1A	1000
-BC1C	1000
-BC1E	1000
-BC20	1000
-BC22	1000
-BC24	1000
-BC26	1000
-BC28	2000
-BC2A	1000
-BC2C	1000
-BC2E	1000
-BC30	0600
-BC32	0600
-BC34	0600
-BC36	0600
-BC38	1C00
-BC3A	1C00
-BC3C	1C00
-BC3E	1C00
-BC40	0600
-BC42	0600
-BC44	0600
-BC46	0600
-BC48	2A00
-BC4A	2A00
-BC4C	2A00
-BC4E	2A00
-BC50	0200
-BC52	0200
-BC54	0200
-BC56	0200
-BC58	1000
-BC5A	1000
-BC5C	1000
-BC5E	1000
-BC60	0E00
-BC62	0E00
-BC64	0E00
-BC66	0E00
-BC68	2800
-BC6A	2800
-BC6C	2800
-BC6E	2800
-BC70	1800
-BC72	1800
-BC74	1800
-BC76	1800
-BC78	0800
-BC7A	0800
-BC7C	0800
-BC7E	0800
-BC80	0000
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	2400
-BC8A	2400
-BC8C	2400
-BC8E	2400
-BC90	0055
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	7CAC
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	18A6
-570A	0224
-570C	0453
-570E	0020
-5710	A0A7
-5712	0224
-5714	C850
-5716	0220
-5718	B8AC
-571A	0224
-571C	2C88
-571E	0220
-5720	F0AD
-5722	0224
-5724	7C82
-5726	0120
-5728	C8B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	64B5
-5732	0224
-5734	1081
-5736	0320
-5738	70B9
-573A	0224
-573C	BCFD
-573E	0220
-5740	E4B9
-5742	0224
-5744	BCA5
-5746	0420
-5748	7CBA
-574A	0224
-574C	B803
-574E	0320
-5750	E4BC
-5752	0224
-5754	8424
-5756	0220
-5758	B0BD
-575A	0224
-575C	9C4C
-575E	0220
-5760	D0BF
-5762	0224
-5764	0C22
-5766	0220
-5768	54BE
-576A	0224
-FCFC	2002
-BC98	1743
-BC9A	02FC
-BC9C	E702
-BC9E	8382
-BCA0	2A84
-BCA2	EFE0
-BCA4	BFB9
-BCA6	A147
-BCA8	6306
-BCAA	F400
-BCAC	1743
-BCAE	02FC
-BCB0	6700
-BCB2	8383
-BCB4	B7C7
-BCB6	0224
-BCB8	83C7
-BCBA	57B8
-BCBC	E5DB
-BCBE	B797
-BCC0	0124
-BCC2	9387
-BCC4	0753
-BCC6	0567
-BCC8	3E97
-BCCA	8346
-BCCC	07B9
-BCCE	F9DE
-BCD0	83C7
-BCD2	673F
-BCD4	E1DF
-BCD6	8357
-BCD8	47B6
-BCDA	93E7
-BCDC	0720
-BCDE	2312
-BCE0	F7B6
-BCE2	E9B7
-BCE4	1733
-BCE6	02FC
-BCE8	E702
-BCEA	437B
-BCEC	37C8
-BCEE	0224
-BCF0	1308
-BCF2	48B8
-BCF4	8348
-BCF6	1800
-BCF8	2A8B
-BCFA	AE8B
-BCFC	3284
-BCFE	B684
-BD00	3A89
-BD02	BE89
-BD04	6380
-BD06	0802
-BD08	B7A7
-BD0A	0124
-BD0C	9387
-BD0E	0753
-BD10	03C7
-BD12	07B9
-BD14	83C7
-BD16	B792
-BD18	11C7
-BD1A	0347
-BD1C	2800
-BD1E	BD8B
-BD20	6306
-BD22	F704
-BD24	37E8
-BD26	0124
-BD28	1308
-BD2A	0887
-BD2C	832A
-BD2E	0812
-BD30	032A
-BD32	4812
-BD34	0146
-BD36	D685
-BD38	5285
-BD3A	9730
-BD3C	01FC
-BD3E	E780
-BD40	A0D0
-BD42	CE87
-BD44	4A87
-BD46	A686
-BD48	2286
-BD4A	DE85
-BD4C	5A85
-BD4E	9740
-BD50	00FC
-BD52	E780
-BD54	A066
-BD56	0546
-BD58	D685
-BD5A	5285
-BD5C	9730
-BD5E	01FC
-BD60	E780
-BD62	80CE
-BD64	1733
-BD66	02FC
-BD68	6700
-BD6A	C376
-BD6C	2315
-BD6E	0600
-BD70	9760
-BD72	FFFB
-BD74	E780
-BD76	80BA
-BD78	01CD
-BD7A	B797
-BD7C	0124
-BD7E	9387
-BD80	07D7
-BD82	03C7
-BD84	C700
-BD86	59DF
-BD88	7D17
-BD8A	2386
-BD8C	E700
-BD8E	59BF
-BD90	9760
-BD92	FFFB
-BD94	E780
-BD96	80B5
-BD98	6DD1
-BD9A	B797
-BD9C	0124
-BD9E	9387
-BDA0	07D7
-BDA2	03C7
-BDA4	D700
-BDA6	3DDF
-BDA8	7D17
-BDAA	A386
-BDAC	E700
-BDAE	9DBF
-BDB0	1733
-BDB2	02FC
-BDB4	E702
-BDB6	636F
-BDB8	B7E7
-BDBA	0124
-BDBC	9387
-BDBE	0787
-BDC0	03AA
-BDC2	8712
-BDC4	83A9
-BDC6	C712
-BDC8	AE84
-BDCA	2A84
-BDCC	3289
-BDCE	D285
-BDD0	0146
-BDD2	4E85
-BDD4	9730
-BDD6	01FC
-BDD8	E780
-BDDA	00C7
-BDDC	A685
-BDDE	4A86
-BDE0	2285
-BDE2	9760
-BDE4	FFFB
-BDE6	E780
-BDE8	206A
-BDEA	AA84
-BDEC	0546
-BDEE	D285
-BDF0	4E85
-BDF2	9730
-BDF4	01FC
-BDF6	E780
-BDF8	20C5
-BDFA	B7C7
-BDFC	0224
-BDFE	9387
-BE00	47B8
-BE02	03C7
-BE04	C710
-BE06	15C3
-BE08	37A7
-BE0A	0124
-BE0C	1307
-BE0E	0753
-BE10	0346
-BE12	37B9
-BE14	8946
-BE16	631A
-BE18	D600
-BE1A	8356
-BE1C	87BA
-BE1E	E18E
-BE20	89C6
-BE22	9306
-BE24	0040
-BE26	6307
-BE28	D400
-BE2A	2685
-BE2C	1733
-BE2E	02FC
-BE30	6700
-BE32	E36A
-BE34	8326
-BE36	47B3
-BE38	7D57
-BE3A	E388
-BE3C	E6FE
-BE3E	03D7
-BE40	0711
-BE42	9396
-BE44	0401
-BE46	C182
-BE48	11E3
-BE4A	3687
-BE4C	BA84
-BE4E	2398
-BE50	D710
-BE52	E1BF
-BE54	1733
-BE56	02FC
-BE58	E702
-BE5A	2365
-BE5C	3729
-BE5E	0024
-BE60	B7A4
-BE62	0124
-BE64	1309
-BE66	0933
-BE68	9384
-BE6A	0453
-BE6C	8347
-BE6E	491A
-BE70	03C7
-BE72	24B7
-BE74	2A84
-BE76	D98F
-BE78	6382
-BE7A	0714
-BE7C	8347
-BE7E	E400
-BE80	0547
-BE82	2305
-BE84	E400
-BE86	99E7
-BE88	8347
-BE8A	C400
-BE8C	D1CF
-BE8E	83C7
-BE90	24B7
-BE92	C5CB
-BE94	B76A
-BE96	0124
-BE98	130A
-BE9A	0403
-BE9C	0347
-BE9E	0400
-BEA0	A169
-BEA2	FD19
-BEA4	A301
-BEA6	E400
-BEA8	83A7
-BEAA	0A4B
-BEAC	2302
-BEAE	E400
-BEB0	0567
-BEB2	BA97
-BEB4	83D7
-BEB6	47E0
-BEB8	2303
-BEBA	0400
-BEBC	B3F7
-BEBE	3701
-BEC0	231C
-BEC2	F400
-BEC4	9740
-BEC6	FDFB
-BEC8	E780
-BECA	0067
-BECC	0358
-BECE	8401
-BED0	A308
-BED2	A400
-BED4	6301
-BED6	0806
-BED8	3736
-BEDA	0520
-BEDC	1306
-BEDE	06C8
-BEE0	8146
-BEE2	8147
-BEE4	4145
-BEE6	B305
-BEE8	F400
-BEEA	3357
-BEEC	F840
-BEEE	2380
-BEF0	D502
-BEF2	058B
-BEF4	8507
-BEF6	11C7
-BEF8	0347
-BEFA	0600
-BEFC	BA96
-BEFE	93F6
-BF00	F60F
-BF02	0506
-BF04	E391
-BF06	A7FE
-BF08	2308
-BF0A	D400
-BF0C	8347
-BF0E	491A
-BF10	03C7
-BF12	24B7
-BF14	D98F
-BF16	C9C3
-BF18	2307
-BF1A	0400
-BF1C	232E
-BF1E	4401
-BF20	1733
-BF22	02FC
-BF24	6700
-BF26	A35B
-BF28	8347
-BF2A	B400
-BF2C	A5D7
-BF2E	83C7
-BF30	24B7
-BF32	ADF3
-BF34	39A0
-BF36	0148
-BF38	45F1
-BF3A	231C
-BF3C	3401
-BF3E	4E88
-BF40	61BF
-BF42	B76A
-BF44	0124
-BF46	83A5
-BF48	0A4B
-BF4A	8567
-BF4C	130A
-BF4E	0403
-BF50	9387
-BF52	07E1
-BF54	1306
-BF56	8007
-BF58	BE95
-BF5A	5285
-BF5C	9760
-BF5E	00FC
-BF60	E780
-BF62	400A
-BF64	21C9
-BF66	2305
-BF68	0400
-BF6A	0347
-BF6C	2401
-BF6E	8347
-BF70	6400
-BF72	8356
-BF74	4401
-BF76	A308
-BF78	E400
-BF7A	0547
-BF7C	231C
-BF7E	D400
-BF80	2307
-BF82	E400
-BF84	A301
-BF86	F400
-BF88	2303
-BF8A	0400
-BF8C	232E
-BF8E	4401
-BF90	1733
-BF92	02FC
-BF94	6700
-BF96	A354
-BF98	83A5
-BF9A	0A4B
-BF9C	8567
-BF9E	9387
-BFA0	07E1
-BFA2	1306
-BFA4	000F
-BFA6	BE95
-BFA8	5285
-BFAA	9760
-BFAC	00FC
-BFAE	E780
-BFB0	2005
-BFB2	9DB7
-BFB4	8347
-BFB6	A400
-BFB8	CDDB
-BFBA	CDB5
-BFBC	37A5
-BFBE	0124
-BFC0	1305
-BFC2	050C
-BFC4	9760
-BFC6	FFFB
-BFC8	E780
-BFCA	8043
-BFCC	45BD
-BFCE	0100
-BFD0	1733
-BFD2	02FC
-BFD4	E702
-BFD6	034F
-BFD8	8347
-BFDA	1501
-BFDC	A304
-BFDE	0500
-BFE0	2A84
-BFE2	91EF
-BFE4	8357
-BFE6	8501
-BFE8	99EB
-BFEA	8347
-BFEC	F500
-BFEE	A307
-BFF0	0500
-BFF2	A304
-BFF4	F500
-BFF6	1733
-BFF8	02FC
-BFFA	6700
-BFFC	E34E
-BFFE	2285
-C000	9790
-C002	FFFB
-C004	E780
-C006	C0C4
-C008	8347
-C00A	3400
-C00C	0347
-C00E	6400
-C010	8346
-C012	7400
-C014	FD17
-C016	0507
-C018	93F7
-C01A	F70F
-C01C	2303
-C01E	E400
-C020	A301
-C022	F400
-C024	99C2
-C026	A303
-C028	0400
-C02A	B1EF
-C02C	0347
-C02E	1401
-C030	8356
-C032	8401
-C034	8347
-C036	5400
-C038	2309
-C03A	E400
-C03C	0547
-C03E	231A
-C040	D400
-C042	2304
-C044	E400
-C046	231C
-C048	0400
-C04A	A308
-C04C	0400
-C04E	C5E3
-C050	8347
-C052	1400
-C054	13F7
-C056	2700
-C058	19C7
-C05A	0347
-C05C	0400
-C05E	01C7
-C060	0347
-C062	2400
-C064	4DC3
-C066	858B
-C068	A5CF
-C06A	B727
-C06C	0024
-C06E	83C7
-C070	274D
-C072	D1D3
-C074	B767
-C076	0124
-C078	83A7
-C07A	074B
-C07C	0567
-C07E	BA97
-C080	2380
-C082	07E0
-C084	8DBF
-C086	0347
-C088	0401
-C08A	5C4C
-C08C	9316
-C08E	1700
-C090	B697
-C092	5CCC
-C094	B727
-C096	0024
-C098	9387
-C09A	0733
-C09C	83C6
-C09E	371A
-C0A0	89EA
-C0A2	8346
-C0A4	6401
-C0A6	A1DA
-C0A8	B7A6
-C0AA	0124
-C0AC	83C6
-C0AE	260A
-C0B0	B9F2
-C0B2	83C7
-C0B4	471A
-C0B6	A1F3
-C0B8	0346
-C0BA	0400
-C0BC	B767
-C0BE	0124
-C0C0	83A5
-C0C2	074B
-C0C4	3306
-C0C6	E602
-C0C8	8567
-C0CA	9387
-C0CC	07E1
-C0CE	BE95
-C0D0	1305
-C0D2	0403
-C0D4	0606
-C0D6	9760
-C0D8	00FC
-C0DA	E780
-C0DC	60F2
-C0DE	21BF
-C0E0	8547
-C0E2	A304
-C0E4	F400
-C0E6	1733
-C0E8	02FC
-C0EA	6700
-C0EC	E33F
-C0EE	FD17
-C0F0	A302
-C0F2	F400
-C0F4	2285
-C0F6	9760
-C0F8	FFFB
-C0FA	E780
-C0FC	6011
-C0FE	1733
-C100	02FC
-C102	6700
-C104	633E
-C106	2285
-C108	9760
-C10A	FFFB
-C10C	E780
-C10E	4010
-C110	DDB5
-C112	0100
-C114	8947
-C116	6303
-C118	F500
-C11A	8280
-C11C	1733
-C11E	02FC
-C120	E702
-C122	A338
-C124	B784
-C126	0124
-C128	9384
-C12A	04AA
-C12C	87A7
-C12E	040A
-C130	4111
-C132	37C5
-C134	0224
-C136	5396
-C138	17C0
-C13A	7400
-C13C	9145
-C13E	1305
-C140	85B8
-C142	9750
-C144	FFFB
-C146	E780
-C148	60C3
-C14A	3719
-C14C	0140
-C14E	4205
-C150	4181
-C152	130A
-C154	4924
-C156	B789
-C158	0124
-C15A	37C4
-C15C	0224
-C15E	B7CA
-C160	0224
-C162	2317
-C164	A100
-C166	9389
-C168	89B1
-C16A	1304
-C16C	04B9
-C16E	938A
-C170	8ABB
-C172	330A
-C174	9A40
-C176	0605
-C178	2295
-C17A	8355
-C17C	2500
-C17E	0356
-C180	C100
-C182	0355
-C184	0500
-C186	2104
-C188	9760
-C18A	00FC
-C18C	E780
-C18E	8082
-C190	4205
-C192	4181
-C194	2390
-C196	A900
-C198	B387
-C19A	4901
-C19C	2390
-C19E	A700
-C1A0	8909
-C1A2	6305
-C1A4	5401
-C1A6	0355
-C1A8	E100
-C1AA	F1B7
-C1AC	B789
-C1AE	0124
-C1B0	37CA
-C1B2	0224
-C1B4	1309
-C1B6	0926
-C1B8	9389
-C1BA	A9AF
-C1BC	130A
-C1BE	0AC3
-C1C0	8357
-C1C2	E100
-C1C4	0356
-C1C6	C100
-C1C8	8509
-C1CA	8607
-C1CC	A297
-C1CE	83D5
-C1D0	2700
-C1D2	03D5
-C1D4	0700
-C1D6	0909
-C1D8	2104
-C1DA	9750
-C1DC	00FC
-C1DE	E780
-C1E0	607D
-C1E2	1375
-C1E4	F50F
-C1E6	A38F
-C1E8	A9FE
-C1EA	4205
-C1EC	4181
-C1EE	231F
-C1F0	A9FE
-C1F2	E317
-C1F4	44FD
-C1F6	B719
-C1F8	0140
-C1FA	3789
-C1FC	0124
-C1FE	37CA
-C200	0224
-C202	9389
-C204	291F
-C206	1309
-C208	C9B2
-C20A	130A
-C20C	0AC6
-C20E	B389
-C210	9940
-C212	8357
-C214	E100
-C216	0356
-C218	C100
-C21A	8607
-C21C	A297
-C21E	83D5
-C220	2700
-C222	03D5
-C224	0700
-C226	2104
-C228	9750
-C22A	00FC
-C22C	E780
-C22E	8078
-C230	4205
-C232	4181
-C234	2310
-C236	A900
-C238	B307
-C23A	3901
-C23C	2390
-C23E	A700
-C240	0909
-C242	E318
-C244	44FD
-C246	B717
-C248	0140
-C24A	3789
-C24C	0124
-C24E	B7C9
-C250	0224
-C252	9387
-C254	A720
-C256	1309
-C258	69B4
-C25A	9389
-C25C	09C9
-C25E	B384
-C260	9740
-C262	8357
-C264	E100
-C266	0356
-C268	C100
-C26A	8607
-C26C	A297
-C26E	83D5
-C270	2700
-C272	03D5
-C274	0700
-C276	2104
-C278	9750
-C27A	00FC
-C27C	E780
-C27E	8073
-C280	4205
-C282	4181
-C284	2310
-C286	A900
-C288	B307
-C28A	9900
-C28C	2390
-C28E	A700
-C290	0909
-C292	E318
-C294	34FD
-C296	4101
-C298	1733
-C29A	02FC
-C29C	6700
-C29E	2324
-C2A0	B7C7
-C2A2	0224
-C2A4	9387
-C2A6	47B8
-C2A8	03C6
-C2AA	0700
-C2AC	37A7
-C2AE	0224
-C2B0	8356
-C2B2	4760
-C2B4	37D7
-C2B6	0124
-C2B8	2328
-C2BA	C7DA
-C2BC	37C7
-C2BE	0224
-C2C0	3766
-C2C2	0124
-C2C4	1307
-C2C6	87C9
-C2C8	2326
-C2CA	E640
-C2CC	89CA
-C2CE	37B7
-C2D0	0224
-C2D2	B726
-C2D4	0024
-C2D6	1307
-C2D8	8768
-C2DA	23A0
-C2DC	E6CE
-C2DE	37C7
-C2E0	0224
-C2E2	1307
-C2E4	4711
-C2E6	23A4
-C2E8	E1A4
-C2EA	2398
-C2EC	0710
-C2EE	8280
-C2F0	1733
-C2F2	02FC
-C2F4	E702
-C2F6	031D
-C2F8	B7C6
-C2FA	0224
-C2FC	B787
-C2FE	0324
-C300	9386
-C302	8634
-C304	37A7
-C306	0124
-C308	9387
-C30A	07FF
-C30C	1307
-C30E	0753
-C310	958F
-C312	232C
-C314	D7B4
-C316	232E
-C318	F7B4
-C31A	9720
-C31C	01FC
-C31E	E780
-C320	6016
-C322	11C5
-C324	EFE0
-C326	0F8A
-C328	EFF0
-C32A	4FFA
-C32C	953F
-C32E	1733
-C330	02FC
-C332	6700
-C334	631B
-C336	0000
-C338	9410
-C33A	E538
-C33C	0000
-C33E	0000
-C340	BEFF
-C342	0F00
-C344	0000
-C346	0000
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-5ACC	6505
-FCFC	4000
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3244	0101
-3246	0101
-3248	0010
-3266	0100
-3330	0108
-3334	0100
-3336	0000
-FCFC	2002
-BB88	0100
-BB8A	0800
-BB8C	1000
-BB8E	2000
-BB90	C800
-BB92	C800
-BB94	C800
-BB96	C800
-BB98	C400
-BB9A	C400
-BB9C	C400
-BB9E	C400
-BBA0	C200
-BBA2	C200
-BBA4	C200
-BBA6	C200
-BBA8	BE00
-BBAA	BE00
-BBAC	BE00
-BBAE	BE00
-BBB0	BC00
-BBB2	BC00
-BBB4	BC00
-BBB6	BC00
-BBB8	2000
-BBBA	2000
-BBBC	2000
-BBBE	2000
-BBC0	1600
-BBC2	1600
-BBC4	1600
-BBC6	1600
-BBC8	0000
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0A00
-BBD2	0A00
-BBD4	0A00
-BBD6	0A00
-BBD8	1400
-BBDA	1400
-BBDC	1400
-BBDE	1400
-BBE0	2A00
-BBE2	2A00
-BBE4	2A00
-BBE6	2A00
-BBE8	2A00
-BBEA	2A00
-BBEC	2A00
-BBEE	2A00
-BBF0	0100
-BBF2	0100
-BBF4	0100
-BBF6	0100
-BBF8	0F00
-BBFA	0F00
-BBFC	0F00
-BBFE	0F00
-BC00	0400
-BC02	0400
-BC04	0400
-BC06	0400
-BC08	1900
-BC0A	1900
-BC0C	1900
-BC0E	1900
-BC10	1400
-BC12	1400
-BC14	1400
-BC16	1400
-BC18	3A00
-BC1A	3A00
-BC1C	3A00
-BC1E	3A00
-BC20	0A00
-BC22	0A00
-BC24	0A00
-BC26	0A00
-BC28	4B00
-BC2A	4B00
-BC2C	4B00
-BC2E	4B00
-BC30	0200
-BC32	0600
-BC34	0C00
-BC36	0C00
-BC38	2A00
-BC3A	2500
-BC3C	2000
-BC3E	2000
-BC40	0000
-BC42	1000
-BC44	2300
-BC46	2300
-BC48	3F00
-BC4A	3100
-BC4C	2100
-BC4E	2100
-BC50	0A00
-BC52	1B00
-BC54	3000
-BC56	3000
-BC58	1900
-BC5A	1500
-BC5C	1100
-BC5E	1100
-BC60	0F00
-BC62	0F00
-BC64	0F00
-BC66	0F00
-BC68	1900
-BC6A	1900
-BC6C	1900
-BC6E	1900
-BC70	0A00
-BC72	0A00
-BC74	0A00
-BC76	0A00
-BC78	0B00
-BC7A	0B00
-BC7C	0B00
-BC7E	0B00
-BC80	0000
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0800
-BC8A	0800
-BC8C	0800
-BC8E	0800
-FCFC	4000
-FCFC	4000
-0B30	01FF
-FCFC	2000
-3D44	0000
-3D88	FCFC
-3D8A	FEFF
-3D8C	FCFC
-3D8E	FEFF
-3D90	FCFC
-3D92	FEFF
-3D94	FCFC
-3D96	FEFF
-3FE0	0324
-3FE2	6080
-3FE4	0324
-3FE6	0080
-4238	0324
-423A	6080
-423C	0000
-423E	0000
-4490	0324
-4492	6080
-4494	0324
-4496	7C87
-46E8	0324
-46EA	6080
-46EC	0324
-46EE	7C87
-46F0	0324
-46F2	128A
-4940	0324
-4942	6080
-4944	0324
-4946	5A8A
-4B98	0324
-4B9A	6080
-4B9C	0324
-4B9E	FC8C
-FCFC	2003
-8000	FFFE
-8002	2400
-8004	FFFD
-8006	D4AC
-8008	003B
-800A	FFFE
-800C	2401
-800E	FFFD
-8010	1D72
-8012	FFFC
-8014	1D74
-8016	FFFC
-8018	1D82
-801A	FFFC
-801C	1D84
-801E	FFFC
-8020	25E0
-8022	0000
-8024	25E2
-8026	0000
-8028	31D0
-802A	0002
-802C	31FA
-802E	04CD
-8030	FFFE
-8032	2400
-8034	FFFD
-8036	0B08
-8038	0101
-803A	0000
-803C	FFFF
-803E	0008
-8040	2401
-8042	1D92
-8044	FCFF
-8046	FCFF
-8048	FCFF
-804A	FCFF
-804C	FFFF
-804E	0008
-8050	2401
-8052	1DA2
-8054	FCFF
-8056	FCFF
-8058	FCFF
-805A	FCFF
-805C	0000
-805E	0000
-8060	FFFE
-8062	2400
-8064	FFFD
-8066	22C2
-8068	0006
-806A	22C4
-806C	1FFF
-806E	22EC
-8070	001F
-8072	2306
-8074	3FFF
-8076	2314
-8078	00FF
-807A	2354
-807C	0003
-807E	23F0
-8080	0100
-8082	68DE
-8084	0000
-8086	703C
-8088	0100
-808A	703E
-808C	0000
-808E	7046
-8090	027F
-8092	7048
-8094	002F
-8096	704A
-8098	0400
-809A	7058
-809C	0280
-809E	705A
-80A0	0030
-80A2	705C
-80A4	0400
-80A6	7806
-80A8	0100
-80AA	7808
-80AC	0824
-80AE	78C0
-80B0	0101
-80B2	795A
-80B4	0010
-80B6	7970
-80B8	0010
-80BA	7994
-80BC	2020
-80BE	7996
-80C0	0001
-80C2	799A
-80C4	0000
-80C6	7BDA
-80C8	003C
-80CA	7EE6
-80CC	002C
-80CE	7EF2
-80D0	002C
-80D2	7EFE
-80D4	0064
-80D6	7F0A
-80D8	0058
-80DA	7F0E
-80DC	0058
-80DE	82A2
-80E0	0012
-80E2	82BA
-80E4	0036
-80E6	8CCE
-80E8	012C
-80EA	8CD0
-80EC	0096
-80EE	8CD2
-80F0	0096
-80F2	8CD6
-80F4	0096
-80F6	8D0E
-80F8	0000
-80FA	9032
-80FC	0000
-80FE	903E
-8100	0000
-8102	B176
-8104	0006
-8106	B178
-8108	0000
-810A	B20C
-810C	002E
-810E	B21A
-8110	0204
-8112	B23C
-8114	6060
-8116	B242
-8118	6060
-811A	B266
-811C	04C0
-811E	B268
-8120	0440
-8122	B270
-8124	0887
-8126	B322
-8128	0101
-812A	B324
-812C	0001
-812E	B330
-8130	2828
-8132	B34A
-8134	2828
-8136	B360
-8138	2828
-813A	B378
-813C	0001
-813E	BF16
-8140	AA0B
-8142	BF30
-8144	0000
-8146	BF78
-8148	3353
-814A	C4D8
-814C	0020
-814E	C4E0
-8150	0001
-8152	C4E2
-8154	0002
-8156	C4F6
-8158	0000
-815A	C53C
-815C	0001
-815E	C53E
-8160	0000
-8162	C544
-8164	0500
-8166	C554
-8168	0D53
-816A	C556
-816C	0000
-816E	D1F6
-8170	003A
-8172	D20C
-8174	0809
-8176	D27A
-8178	0005
-817A	D314
-817C	0220
-817E	D326
-8180	2001
-8182	D3EC
-8184	1CB1
-8186	D3F0
-8188	1CB0
-818A	D410
-818C	0248
-818E	D412
-8190	04D2
-8192	D426
-8194	04D2
-8196	D428
-8198	0AEA
-819A	D43C
-819C	4001
-819E	D43E
-81A0	4001
-81A2	D49C
-81A4	0021
-81A6	D4A8
-81A8	0003
-81AA	D4AC
-81AC	03E8
-81AE	D4B0
-81B0	0001
-81B2	D4B4
-81B4	0001
-81B6	D4B8
-81B8	0035
-81BA	D4BC
-81BC	0014
-81BE	D4C0
-81C0	0014
-81C2	D4C4
-81C4	0001
-81C6	D4C8
-81C8	0000
-81CA	D4CC
-81CC	0000
-81CE	D4D0
-81D0	0016
-81D2	D4D2
-81D4	0020
-81D6	D4D6
-81D8	0000
-81DA	D4DA
-81DC	0000
-81DE	D4DE
-81E0	0000
-81E2	D4E2
-81E4	0001
-81E6	D4E6
-81E8	0001
-81EA	D4EA
-81EC	0001
-81EE	D4EC
-81F0	00BE
-81F2	D4EE
-81F4	00BE
-81F6	D4F8
-81F8	01F0
-81FA	D4FA
-81FC	01F0
-81FE	D554
-8200	0000
-8202	D556
-8204	0000
-8206	D560
-8208	0000
-820A	D562
-820C	0000
-820E	D5BC
-8210	0000
-8212	D5BE
-8214	0000
-8216	D5C8
-8218	0000
-821A	D5CA
-821C	0000
-821E	D624
-8220	0000
-8222	D62E
-8224	0000
-8226	D638
-8228	0000
-822A	D682
-822C	04C0
-822E	D684
-8230	0440
-8232	D6D4
-8234	0000
-8236	D704
-8238	7802
-823A	D718
-823C	0200
-823E	D856
-8240	0705
-8242	D896
-8244	0000
-8246	D8A2
-8248	0001
-824A	DC8C
-824C	2B3F
-824E	DC94
-8250	0001
-8252	DD70
-8254	0000
-8256	DE38
-8258	0000
-825A	E980
-825C	0500
-825E	EF80
-8260	0000
-8262	F014
-8264	0006
-8266	F09A
-8268	FF00
-826A	F0AA
-826C	FFFF
-826E	F0AC
-8270	FFFF
-8272	F288
-8274	0000
-8276	F2E0
-8278	0000
-827A	F2EA
-827C	0040
-827E	F370
-8280	0302
-8282	F372
-8284	0000
-8286	F3E4
-8288	0103
-828A	F3F4
-828C	08C8
-828E	F3F6
-8290	10D7
-8292	FFFE
-8294	2401
-8296	FFFD
-8298	195E
-829A	0001
-829C	1966
-829E	0000
-82A0	1DFE
-82A2	0000
-82A4	1E1E
-82A6	0000
-82A8	1E32
-82AA	0000
-82AC	1E36
-82AE	0000
-82B0	1E3A
-82B2	0000
-82B4	1E3E
-82B6	0000
-82B8	1E52
-82BA	0000
-82BC	1E56
-82BE	0000
-82C0	1E5A
-82C2	0000
-82C4	1E5E
-82C6	0000
-82C8	2540
-82CA	0002
-82CC	25E0
-82CE	0001
-82D0	25E2
-82D2	00CD
-82D4	2920
-82D6	0001
-82D8	29A8
-82DA	0002
-82DC	29BA
-82DE	00FF
-82E0	2A30
-82E2	FF01
-82E4	2A42
-82E6	0001
-82E8	2A44
-82EA	04B0
-82EC	2A46
-82EE	0000
-82F0	2A54
-82F2	0000
-82F4	2A56
-82F6	0008
-82F8	2BB2
-82FA	0010
-82FC	2D32
-82FE	1000
-8300	3132
-8302	0001
-8304	31D0
-8306	0000
-8308	31F8
-830A	0001
-830C	31FA
-830E	0400
-8310	3C42
-8312	0000
-8314	3C46
-8316	05EB
-8318	3C52
-831A	0640
-831C	4270
-831E	0000
-8320	427C
-8322	0020
-8324	4280
-8326	0010
-8328	4290
-832A	0001
-832C	4292
-832E	0000
-8330	4362
-8332	0001
-8334	4364
-8336	0000
-8338	4366
-833A	0000
-833C	4370
-833E	0000
-8340	4396
-8342	000C
-8344	4398
-8346	000E
-8348	43AA
-834A	0000
-834C	43AC
-834E	0000
-8350	43B4
-8352	0000
-8354	43B6
-8356	0000
-8358	43C6
-835A	0A01
-835C	44C6
-835E	0000
-8360	5A70
-8362	0000
-8364	FFFE
-8366	2402
-8368	FFFD
-836A	849E
-836C	0000
-836E	84A0
-8370	0000
-8372	84A2
-8374	0500
-8376	84C4
-8378	0000
-837A	A570
-837C	0000
-837E	FFFE
-8380	2400
-8382	FFFD
-8384	0086
-8386	0200
-8388	0112
-838A	0A0A
-838C	0114
-838E	0103
-8390	0118
-8392	0400
-8394	011A
-8396	0100
-8398	011C
-839A	0001
-839C	0136
-839E	1800
-83A0	013E
-83A2	0000
-83A4	020A
-83A6	0000
-83A8	021E
-83AA	0000
-83AC	0228
-83AE	0001
-83B0	0270
-83B2	2B2B
-83B4	0272
-83B6	102B
-83B8	0274
-83BA	2B30
-83BC	0304
-83BE	0003
-83C0	0306
-83C2	00E6
-83C4	031A
-83C6	0003
-83C8	031C
-83CA	0028
-83CC	031E
-83CE	0002
-83D0	0400
-83D2	1010
-83D4	0408
-83D6	0100
-83D8	040A
-83DA	0100
-83DC	040C
-83DE	0000
-83E0	0702
-83E2	0000
-83E4	0704
-83E6	0000
-83E8	0720
-83EA	0001
-83EC	0722
-83EE	0008
-83F0	0724
-83F2	0000
-83F4	0808
-83F6	0102
-83F8	0900
-83FA	1100
-83FC	0936
-83FE	0000
-8400	0C40
-8402	0000
-8404	0342
-8406	23F0
-8408	0000
-840A	FFFF
-840C	0008
-840E	2400
-8410	71D4
-8412	3F00
-8414	3D00
-8416	84F3
-8418	0040
-841A	FFFF
-841C	0010
-841E	2400
-8420	7274
-8422	0D00
-8424	0C00
-8426	36D2
-8428	0040
-842A	0000
-842C	0000
-842E	0000
-8430	0000
-8432	FFFF
-8434	0008
-8436	2400
-8438	7314
-843A	0000
-843C	0000
-843E	0000
-8440	0000
-8442	FFFF
-8444	0008
-8446	2400
-8448	7A0E
-844A	1E00
-844C	0F00
-844E	0F00
-8450	0F00
-8452	FFFF
-8454	0008
-8456	2400
-8458	7A6E
-845A	2800
-845C	1900
-845E	1900
-8460	1900
-8462	FFFF
-8464	0008
-8466	2400
-8468	7A86
-846A	2800
-846C	1900
-846E	1900
-8470	1900
-8472	FFFF
-8474	0008
-8476	2400
-8478	8C9E
-847A	5000
-847C	3500
-847E	3500
-8480	3500
-8482	FFFF
-8484	000A
-8486	2400
-8488	B21E
-848A	0000
-848C	0000
-848E	C000
-8490	0103
-8492	0000
-8494	FFFF
-8496	000C
-8498	2400
-849A	BEDC
-849C	C526
-849E	903E
-84A0	C00F
-84A2	0008
-84A4	0C00
-84A6	8000
-84A8	FFFF
-84AA	000E
-84AC	2400
-84AE	DADA
-84B0	0001
-84B2	0000
-84B4	3000
-84B6	8001
-84B8	0000
-84BA	0000
-84BC	0000
-84BE	FFFF
-84C0	000C
-84C2	2400
-84C4	DB0C
-84C6	0000
-84C8	0080
-84CA	0000
-84CC	0000
-84CE	0000
-84D0	0000
-84D2	FFFF
-84D4	000C
-84D6	2400
-84D8	DB3C
-84DA	12D2
-84DC	12D2
-84DE	12D2
-84E0	0000
-84E2	0000
-84E4	0000
-84E6	FFFF
-84E8	000C
-84EA	2400
-84EC	DB6C
-84EE	0000
-84F0	0000
-84F2	0000
-84F4	0000
-84F6	0000
-84F8	0000
-84FA	FFFF
-84FC	000C
-84FE	2400
-8500	DB9C
-8502	0000
-8504	0000
-8506	0000
-8508	0000
-850A	0000
-850C	0000
-850E	FFFF
-8510	000C
-8512	2400
-8514	DBCC
-8516	0000
-8518	0000
-851A	0000
-851C	0000
-851E	0000
-8520	0000
-8522	FFFF
-8524	0012
-8526	2401
-8528	1C24
-852A	0002
-852C	0001
-852E	FF03
-8530	0010
-8532	D70F
-8534	0004
-8536	0010
-8538	D70F
-853A	C20F
-853C	FFFF
-853E	0020
-8540	2401
-8542	1C4E
-8544	0001
-8546	FF03
-8548	0010
-854A	D70F
-854C	0004
-854E	0010
-8550	D70F
-8552	C20F
-8554	0000
-8556	0000
-8558	0000
-855A	0000
-855C	0000
-855E	0000
-8560	0000
-8562	0000
-8564	FFFF
-8566	0020
-8568	2401
-856A	1C76
-856C	0001
-856E	FF03
-8570	0010
-8572	D70F
-8574	0004
-8576	0010
-8578	D70F
-857A	C20F
-857C	0000
-857E	0000
-8580	0000
-8582	0000
-8584	0000
-8586	0000
-8588	0000
-858A	0000
-858C	FFFF
-858E	0010
-8590	2401
-8592	1C9E
-8594	0001
-8596	FF03
-8598	0010
-859A	D70F
-859C	0004
-859E	0010
-85A0	D70F
-85A2	C20F
-85A4	FFFF
-85A6	0010
-85A8	2401
-85AA	1CC6
-85AC	0000
-85AE	0000
-85B0	0000
-85B2	0000
-85B4	0000
-85B6	0000
-85B8	0000
-85BA	0000
-85BC	FFFF
-85BE	0020
-85C0	2401
-85C2	1CEE
-85C4	0000
-85C6	0000
-85C8	0000
-85CA	0000
-85CC	0000
-85CE	0000
-85D0	0000
-85D2	0000
-85D4	0000
-85D6	0000
-85D8	0000
-85DA	0000
-85DC	0000
-85DE	0000
-85E0	0000
-85E2	0000
-85E4	FFFF
-85E6	0020
-85E8	2401
-85EA	1D16
-85EC	0000
-85EE	0000
-85F0	0000
-85F2	0000
-85F4	0000
-85F6	0000
-85F8	0000
-85FA	0000
-85FC	0000
-85FE	0000
-8600	0000
-8602	0000
-8604	0000
-8606	0000
-8608	0000
-860A	0000
-860C	FFFF
-860E	0010
-8610	2401
-8612	1D3E
-8614	0000
-8616	0000
-8618	0000
-861A	0000
-861C	0000
-861E	0000
-8620	0000
-8622	0000
-8624	FFFF
-8626	0008
-8628	2401
-862A	1D72
-862C	0000
-862E	0000
-8630	0000
-8632	0000
-8634	FFFF
-8636	0008
-8638	2401
-863A	1D82
-863C	0000
-863E	0000
-8640	0000
-8642	0000
-8644	FFFF
-8646	0008
-8648	2401
-864A	1D92
-864C	0000
-864E	0000
-8650	0000
-8652	0000
-8654	FFFF
-8656	0008
-8658	2401
-865A	1DA2
-865C	0000
-865E	0000
-8660	0000
-8662	0000
-8664	FFFF
-8666	000A
-8668	2401
-866A	1DF2
-866C	0000
-866E	0000
-8670	0000
-8672	0000
-8674	0000
-8676	FFFF
-8678	0008
-867A	2401
-867C	1E02
-867E	0000
-8680	0000
-8682	0000
-8684	0000
-8686	FFFF
-8688	000A
-868A	2401
-868C	1E12
-868E	0000
-8690	0000
-8692	0000
-8694	0000
-8696	0000
-8698	FFFF
-869A	0008
-869C	2401
-869E	1E22
-86A0	0000
-86A2	0000
-86A4	0000
-86A6	0000
-86A8	FFFF
-86AA	0010
-86AC	2402
-86AE	A548
-86B0	0000
-86B2	0000
-86B4	0000
-86B6	0000
-86B8	0000
-86BA	0000
-86BC	0000
-86BE	0000
-86C0	FFFF
-86C2	0010
-86C4	2402
-86C6	A55C
-86C8	0000
-86CA	0000
-86CC	0000
-86CE	0000
-86D0	0000
-86D2	0000
-86D4	0000
-86D6	0000
-86D8	FFFF
-86DA	002C
-86DC	2402
-86DE	A574
-86E0	0100
-86E2	4000
-86E4	8000
-86E6	0001
-86E8	0002
-86EA	0002
-86EC	0002
-86EE	0002
-86F0	0002
-86F2	0002
-86F4	0800
-86F6	2100
-86F8	2900
-86FA	2E00
-86FC	2E00
-86FE	2E00
-8700	2E00
-8702	2E00
-8704	2E00
-8706	3000
-8708	A2FD
-870A	FEFE
-870C	FFFF
-870E	0008
-8710	2400
-8712	0260
-8714	0001
-8716	0000
-8718	0006
-871A	0700
-871C	FFFF
-871E	0008
-8720	2400
-8722	030C
-8724	0000
-8726	0300
-8728	CF00
-872A	0000
-872C	FFFF
-872E	0010
-8730	2400
-8732	0344
-8734	0008
-8736	0006
-8738	1F18
-873A	1F12
-873C	0010
-873E	000C
-8740	1000
-8742	1000
-8744	FFFF
-8746	0008
-8748	2400
-874A	0380
-874C	0100
-874E	0100
-8750	0100
-8752	0100
-8754	FFFF
-8756	0008
-8758	2400
-875A	0728
-875C	0000
-875E	0000
-8760	0000
-8762	0000
-8764	FFFF
-8766	000C
-8768	2400
-876A	0B02
-876C	0101
-876E	0001
-8770	0101
-8772	0100
-8774	0101
-8776	0100
-8778	0000
-877A	0000
-877C	FFFE
-877E	2400
-8780	FFFD
-8782	703C
-8784	0101
-8786	703E
-8788	0001
-878A	7048
-878C	021F
-878E	704A
-8790	0A00
-8792	705A
-8794	0220
-8796	705C
-8798	0A01
-879A	7274
-879C	000C
-879E	7276
-87A0	000B
-87A2	795A
-87A4	0020
-87A6	7970
-87A8	0020
-87AA	7996
-87AC	0101
-87AE	7A0E
-87B0	000F
-87B2	7A6E
-87B4	0019
-87B6	7A86
-87B8	0019
-87BA	7BDA
-87BC	004C
-87BE	82A2
-87C0	0014
-87C2	82BA
-87C4	0033
-87C6	8C9E
-87C8	0035
-87CA	8CA2
-87CC	0050
-87CE	8CCE
-87D0	0096
-87D2	8CD2
-87D4	00BE
-87D6	B176
-87D8	0206
-87DA	B220
-87DC	0301
-87DE	B268
-87E0	F380
-87E2	C4E2
-87E4	0000
-87E6	C53C
-87E8	0005
-87EA	C554
-87EC	1000
-87EE	D326
-87F0	1001
-87F2	D3EC
-87F4	1CB0
-87F6	D49C
-87F8	0003
-87FA	D4A8
-87FC	0001
-87FE	D4AC
-8800	0001
-8802	D4B0
-8804	0202
-8806	D4B8
-8808	0014
-880A	D4BC
-880C	0047
-880E	D4C4
-8810	0000
-8812	D4C8
-8814	0001
-8816	D4D0
-8818	0026
-881A	D4D2
-881C	0000
-881E	D4D6
-8820	001A
-8822	D4DE
-8824	0001
-8826	D4E2
-8828	0028
-882A	D4EC
-882C	0000
-882E	D4EE
-8830	0000
-8832	D4F8
-8834	0000
-8836	D4FA
-8838	0000
-883A	D554
-883C	00C4
-883E	D556
-8840	00EC
-8842	D560
-8844	0352
-8846	D562
-8848	037A
-884A	D684
-884C	F380
-884E	DB0E
-8850	4000
-8852	DB12
-8854	B000
-8856	DB14
-8858	D000
-885A	DB16
-885C	F000
-885E	DB42
-8860	D212
-8862	DB44
-8864	D212
-8866	DB46
-8868	D212
-886A	DC8C
-886C	0B3F
-886E	DC94
-8870	0301
-8872	E980
-8874	049E
-8876	F014
-8878	0007
-887A	F3F4
-887C	00C8
-887E	F3F6
-8880	10D6
-8882	FFFE
-8884	2401
-8886	FFFD
-8888	1C4E
-888A	0180
-888C	1C50
-888E	0480
-8890	2540
-8892	0000
-8894	25E0
-8896	0000
-8898	25E2
-889A	0000
-889C	29A8
-889E	0001
-88A0	29BA
-88A2	0020
-88A4	2A44
-88A6	0739
-88A8	2A56
-88AA	0004
-88AC	3132
-88AE	0002
-88B0	31F8
-88B2	0000
-88B4	31FA
-88B6	0000
-88B8	4396
-88BA	000D
-88BC	FFFE
-88BE	2402
-88C0	FFFD
-88C2	84C4
-88C4	0001
-88C6	A598
-88C8	0032
-88CA	A59A
-88CC	0038
-88CE	FFFE
-88D0	2400
-88D2	FFFD
-88D4	0086
-88D6	1400
-88D8	0350
-88DA	0008
-88DC	0352
-88DE	0008
-88E0	0900
-88E2	2222
-88E4	0B02
-88E6	0201
-88E8	0342
-88EA	12B0
-88EC	0000
-88EE	FFFF
-88F0	0008
-88F2	2400
-88F4	7314
-88F6	2E00
-88F8	3000
-88FA	9EFD
-88FC	0040
-88FE	FFFF
-8900	000A
-8902	2400
-8904	DADE
-8906	4000
-8908	E001
-890A	2003
-890C	8007
-890E	000B
-8910	FFFF
-8912	0010
-8914	2401
-8916	1C26
-8918	8001
-891A	8004
-891C	2010
-891E	2010
-8920	0005
-8922	00A0
-8924	2810
-8926	2810
-8928	FFFF
-892A	000A
-892C	2401
-892E	1C54
-8930	0010
-8932	0005
-8934	00A0
-8936	2810
-8938	2810
-893A	FFFF
-893C	0010
-893E	2401
-8940	1C76
-8942	8001
-8944	8004
-8946	2010
-8948	2010
-894A	0005
-894C	00A0
-894E	2810
-8950	2810
-8952	FFFF
-8954	0010
-8956	2401
-8958	1C9E
-895A	8001
-895C	8004
-895E	2010
-8960	2010
-8962	0005
-8964	00A0
-8966	2810
-8968	2810
-896A	FFFF
-896C	0010
-896E	2401
-8970	1CC6
-8972	8001
-8974	8004
-8976	2010
-8978	2010
-897A	0005
-897C	00A0
-897E	2810
-8980	2810
-8982	FFFF
-8984	0010
-8986	2401
-8988	1CEE
-898A	8001
-898C	8004
-898E	0010
-8990	0010
-8992	0005
-8994	00A0
-8996	2810
-8998	2810
-899A	FFFF
-899C	0010
-899E	2401
-89A0	1D16
-89A2	8001
-89A4	8004
-89A6	2010
-89A8	2010
-89AA	0005
-89AC	00A0
-89AE	2810
-89B0	2810
-89B2	FFFF
-89B4	0010
-89B6	2401
-89B8	1D3E
-89BA	8001
-89BC	8004
-89BE	2010
-89C0	2010
-89C2	0005
-89C4	00A0
-89C6	2810
-89C8	2810
-89CA	FFFF
-89CC	001C
-89CE	2402
-89D0	A57A
-89D2	A000
-89D4	4001
-89D6	8002
-89D8	0005
-89DA	000A
-89DC	A00F
-89DE	4011
-89E0	0E00
-89E2	2000
-89E4	2800
-89E6	1400
-89E8	2200
-89EA	2800
-89EC	2C00
-89EE	FFFF
-89F0	0008
-89F2	2400
-89F4	0344
-89F6	0000
-89F8	0000
-89FA	1F20
-89FC	1F18
-89FE	FFFF
-8A00	0008
-8A02	2400
-8A04	0380
-8A06	0200
-8A08	0200
-8A0A	0200
-8A0C	0200
-8A0E	0000
-8A10	0000
-8A12	FFFE
-8A14	2400
-8A16	FFFD
-8A18	D49C
-8A1A	0022
-8A1C	D4A8
-8A1E	0000
-8A20	D4B0
-8A22	046A
-8A24	D4BC
-8A26	0062
-8A28	D4D0
-8A2A	000A
-8A2C	D4E2
-8A2E	0036
-8A30	D556
-8A32	00FA
-8A34	D562
-8A36	0388
-8A38	FFFE
-8A3A	2401
-8A3C	FFFD
-8A3E	2A44
-8A40	0952
-8A42	FFFE
-8A44	2400
-8A46	FFFD
-8A48	0346
-8A4A	0300
-8A4C	034A
-8A4E	151F
-8A50	034E
-8A52	0900
-8A54	0000
-8A56	0000
-8A58	0000
-8A5A	FFFE
-8A5C	2400
-8A5E	FFFD
-8A60	703C
-8A62	0101
-8A64	7048
-8A66	009F
-8A68	705A
-8A6A	00A0
-8A6C	7274
-8A6E	B000
-8A70	7276
-8A72	0000
-8A74	7278
-8A76	D212
-8A78	7806
-8A7A	0101
-8A7C	7808
-8A7E	0C3F
-8A80	795A
-8A82	0020
-8A84	7970
-8A86	0020
-8A88	7A0E
-8A8A	000F
-8A8C	7A6E
-8A8E	0019
-8A90	7A86
-8A92	0019
-8A94	82A2
-8A96	0014
-8A98	82BA
-8A9A	0033
-8A9C	8C9E
-8A9E	0035
-8AA0	8CA2
-8AA2	0050
-8AA4	8CCE
-8AA6	0096
-8AA8	8CD2
-8AAA	00BE
-8AAC	B176
-8AAE	0206
-8AB0	B220
-8AB2	0301
-8AB4	B268
-8AB6	E380
-8AB8	C4D8
-8ABA	0010
-8ABC	C4E2
-8ABE	0000
-8AC0	C53C
-8AC2	0005
-8AC4	C554
-8AC6	1000
-8AC8	D326
-8ACA	1001
-8ACC	D3EC
-8ACE	1CB0
-8AD0	D4A8
-8AD2	0001
-8AD4	D4AC
-8AD6	0001
-8AD8	D4B0
-8ADA	037E
-8ADC	D4B8
-8ADE	0014
-8AE0	D4BC
-8AE2	040B
-8AE4	D4C4
-8AE6	0000
-8AE8	D4C8
-8AEA	0001
-8AEC	D4D0
-8AEE	000A
-8AF0	D4D2
-8AF2	0000
-8AF4	D4D6
-8AF6	001A
-8AF8	D4DE
-8AFA	0001
-8AFC	D4E2
-8AFE	0036
-8B00	D4EC
-8B02	0000
-8B04	D4EE
-8B06	0000
-8B08	D4F8
-8B0A	0000
-8B0C	D4FA
-8B0E	0000
-8B10	D554
-8B12	00C4
-8B14	D556
-8B16	00FA
-8B18	D560
-8B1A	0352
-8B1C	D562
-8B1E	0388
-8B20	D684
-8B22	E380
-8B24	D704
-8B26	7800
-8B28	DADE
-8B2A	00A0
-8B2C	DAE0
-8B2E	0140
-8B30	DB0C
-8B32	000D
-8B34	DB0E
-8B36	000F
-8B38	DB10
-8B3A	000D
-8B3C	DB3C
-8B3E	D236
-8B40	DB3E
-8B42	D236
-8B44	DB40
-8B46	D236
-8B48	DC8C
-8B4A	0B3F
-8B4C	DC94
-8B4E	0301
-8B50	E980
-8B52	049E
-8B54	F3F4
-8B56	00C8
-8B58	F3F6
-8B5A	10D6
-8B5C	FFFE
-8B5E	2401
-8B60	FFFD
-8B62	195E
-8B64	0101
-8B66	1966
-8B68	0002
-8B6A	2540
-8B6C	0000
-8B6E	25E0
-8B70	0000
-8B72	25E2
-8B74	0000
-8B76	29A8
-8B78	0001
-8B7A	29BA
-8B7C	0020
-8B7E	2A44
-8B80	0739
-8B82	2A56
-8B84	0004
-8B86	3132
-8B88	0002
-8B8A	31F8
-8B8C	0000
-8B8E	31FA
-8B90	0000
-8B92	4396
-8B94	000D
-8B96	5A70
-8B98	0001
-8B9A	FFFE
-8B9C	2402
-8B9E	FFFD
-8BA0	A598
-8BA2	0032
-8BA4	A59A
-8BA6	0038
-8BA8	FFFE
-8BAA	2400
-8BAC	FFFD
-8BAE	0086
-8BB0	0280
-8BB2	021E
-8BB4	0006
-8BB6	034E
-8BB8	0900
-8BBA	0350
-8BBC	0008
-8BBE	0352
-8BC0	0008
-8BC2	0722
-8BC4	0020
-8BC6	0900
-8BC8	2222
-8BCA	0B02
-8BCC	0201
-8BCE	0342
-8BD0	2560
-8BD2	0000
-8BD4	FFFF
-8BD6	0010
-8BD8	2401
-8BDA	1C26
-8BDC	8001
-8BDE	F004
-8BE0	2010
-8BE2	5610
-8BE4	0005
-8BE6	00A0
-8BE8	B610
-8BEA	7011
-8BEC	FFFF
-8BEE	0018
-8BF0	2401
-8BF2	1C4E
-8BF4	8001
-8BF6	F004
-8BF8	2810
-8BFA	5110
-8BFC	0005
-8BFE	F009
-8C00	9710
-8C02	DA10
-8C04	000A
-8C06	00A0
-8C08	DA10
-8C0A	7011
-8C0C	FFFF
-8C0E	0018
-8C10	2401
-8C12	1C76
-8C14	8001
-8C16	F004
-8C18	2810
-8C1A	6610
-8C1C	0005
-8C1E	F009
-8C20	7210
-8C22	DD10
-8C24	000A
-8C26	00A0
-8C28	DD10
-8C2A	7011
-8C2C	FFFF
-8C2E	0010
-8C30	2401
-8C32	1C9E
-8C34	8001
-8C36	F004
-8C38	2010
-8C3A	5610
-8C3C	0005
-8C3E	00A0
-8C40	C410
-8C42	7011
-8C44	FFFF
-8C46	0010
-8C48	2401
-8C4A	1CC6
-8C4C	8001
-8C4E	F004
-8C50	2010
-8C52	5610
-8C54	0005
-8C56	00A0
-8C58	B610
-8C5A	7011
-8C5C	FFFF
-8C5E	0018
-8C60	2401
-8C62	1CEE
-8C64	8001
-8C66	F004
-8C68	2810
-8C6A	5110
-8C6C	0005
-8C6E	F009
-8C70	9710
-8C72	DA10
-8C74	000A
-8C76	00A0
-8C78	DA10
-8C7A	7011
-8C7C	FFFF
-8C7E	0018
-8C80	2401
-8C82	1D16
-8C84	8001
-8C86	F004
-8C88	2810
-8C8A	6610
-8C8C	0005
-8C8E	F009
-8C90	7210
-8C92	DD10
-8C94	000A
-8C96	00A0
-8C98	DD10
-8C9A	7011
-8C9C	FFFF
-8C9E	0010
-8CA0	2401
-8CA2	1D3E
-8CA4	8001
-8CA6	F004
-8CA8	2010
-8CAA	5610
-8CAC	0005
-8CAE	00A0
-8CB0	C410
-8CB2	7011
-8CB4	FFFF
-8CB6	001C
-8CB8	2402
-8CBA	A57A
-8CBC	A000
-8CBE	4001
-8CC0	8002
-8CC2	0005
-8CC4	000A
-8CC6	A00F
-8CC8	4011
-8CCA	0E00
-8CCC	2000
-8CCE	2800
-8CD0	1400
-8CD2	2200
-8CD4	2800
-8CD6	2C00
-8CD8	FFFF
-8CDA	0008
-8CDC	2400
-8CDE	0344
-8CE0	0000
-8CE2	0003
-8CE4	1F20
-8CE6	1F15
-8CE8	FFFF
-8CEA	0008
-8CEC	2400
-8CEE	0380
-8CF0	0200
-8CF2	0200
-8CF4	0200
-8CF6	0200
-8CF8	0000
-8CFA	0000
-8CFC	FFFE
-8CFE	2400
-8D00	FFFD
-8D02	D49C
-8D04	0000
-8D06	D4A8
-8D08	0000
-8D0A	D4AC
-8D0C	0001
-8D0E	D4B8
-8D10	0014
-8D12	D4C4
-8D14	0000
-8D16	D4D0
-8D18	000A
-8D1A	D4D2
-8D1C	0000
-8D1E	D4DE
-8D20	0001
-8D22	D4EC
-8D24	0000
-8D26	D4EE
-8D28	0000
-8D2A	D4F8
-8D2C	0000
-8D2E	D4FA
-8D30	0000
-8D32	FFFE
-8D34	2401
-8D36	FFFD
-8D38	1D72
-8D3A	FFFC
-8D3C	1D74
-8D3E	FFFC
-8D40	1D82
-8D42	FFFC
-8D44	1D84
-8D46	FFFC
-8D48	25E0
-8D4A	0000
-8D4C	25E2
-8D4E	0000
-8D50	2A44
-8D52	047E
-8D54	31D0
-8D56	0002
-8D58	31FA
-8D5A	04CD
-8D5C	FFFE
-8D5E	2400
-8D60	FFFD
-8D62	0346
-8D64	0780
-8D66	034A
-8D68	109F
-8D6A	034E
-8D6C	0900
-8D6E	0B08
-8D70	0101
-8D72	0000
-8D74	FFFF
-8D76	0008
-8D78	2401
-8D7A	1D92
-8D7C	FCFF
-8D7E	FCFF
-8D80	FCFF
-8D82	FCFF
-8D84	FFFF
-8D86	0008
-8D88	2401
-8D8A	1DA2
-8D8C	FCFF
-8D8E	FCFF
-8D90	FCFF
-8D92	FCFF
-8D94	0000
-8D96	0000
-FCFC	4000
-
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_short_1.3g_0823.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_short_1.3g_0823.txt
deleted file mode 100755
index 91984377..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_short_1.3g_0823.txt
+++ /dev/null
@@ -1,3542 +0,0 @@
-FCFC	4000
-0000	000D
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0101
-FCFC	2001
-3C60	0000
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	0010
-84C8	90C3
-84CA	0224
-84CC	44AB
-84CE	0224
-84D0	44AB
-84D2	0224
-84D4	44AB
-84D6	0224
-84D8	44AB
-84DA	0224
-84DC	44AB
-84DE	0224
-A548	001D
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00D5
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	0100
-A5A2	0036
-A5A4	0000
-A5A6	0000
-A5A8	0000
-A5AA	0000
-A5AC	0000
-A5AE	0000
-A5B0	0000
-A5B2	0000
-A5B4	0000
-A5B6	0000
-A5B8	0000
-A5BA	0000
-A5BC	0000
-A5BE	0000
-A5C0	0000
-A5C2	0000
-A5C4	0000
-A5C6	0000
-A5C8	0000
-A5CA	0000
-A5CC	0000
-A5CE	0000
-A5D0	0000
-A5D2	0000
-A5D4	0000
-A5D6	0000
-A5D8	0000
-A5DA	0000
-A5DC	0000
-A5DE	0000
-A5E0	0000
-A5E2	0000
-A5E4	0000
-A5E6	0000
-A5E8	0000
-A5EA	0000
-A5EC	000F
-A5EE	000F
-A5F0	000F
-A5F2	000F
-A5F4	0000
-A5F6	0000
-A5F8	0000
-A5FA	0000
-A5FC	0000
-A5FE	0000
-A600	0000
-A602	0000
-A604	0000
-A606	00C6
-BB84	0001
-BB86	0000
-BB88	0000
-BB8A	0100
-BB8C	0800
-BB8E	1000
-BB90	2000
-BB92	9A00
-BB94	9A00
-BB96	9A00
-BB98	9A00
-BB9A	9600
-BB9C	9600
-BB9E	9600
-BBA0	9600
-BBA2	9300
-BBA4	9300
-BBA6	9300
-BBA8	9300
-BBAA	9000
-BBAC	9000
-BBAE	9000
-BBB0	9000
-BBB2	8D00
-BBB4	8D00
-BBB6	8D00
-BBB8	8D00
-BBBA	3F00
-BBBC	3F00
-BBBE	3F00
-BBC0	3F00
-BBC2	1E00
-BBC4	1E00
-BBC6	1E00
-BBC8	1E00
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0000
-BBD2	0800
-BBD4	0800
-BBD6	0800
-BBD8	0800
-BBDA	0000
-BBDC	0000
-BBDE	0000
-BBE0	0000
-BBE2	3F00
-BBE4	3F00
-BBE6	3F00
-BBE8	3F00
-BBEA	3400
-BBEC	3400
-BBEE	3400
-BBF0	3400
-BBF2	0A00
-BBF4	0A00
-BBF6	0A00
-BBF8	0A00
-BBFA	1000
-BBFC	1000
-BBFE	1000
-BC00	1000
-BC02	0600
-BC04	0600
-BC06	0600
-BC08	0600
-BC0A	0C00
-BC0C	0C00
-BC0E	0C00
-BC10	0C00
-BC12	0000
-BC14	0000
-BC16	0000
-BC18	0000
-BC1A	1000
-BC1C	1000
-BC1E	1000
-BC20	1000
-BC22	1000
-BC24	1000
-BC26	1000
-BC28	1000
-BC2A	2000
-BC2C	1000
-BC2E	1000
-BC30	1000
-BC32	0600
-BC34	0600
-BC36	0600
-BC38	0600
-BC3A	1C00
-BC3C	1C00
-BC3E	1C00
-BC40	1C00
-BC42	0600
-BC44	0600
-BC46	0600
-BC48	0600
-BC4A	2A00
-BC4C	2A00
-BC4E	2A00
-BC50	2A00
-BC52	0200
-BC54	0200
-BC56	0200
-BC58	0200
-BC5A	1000
-BC5C	1000
-BC5E	1000
-BC60	1000
-BC62	0E00
-BC64	0E00
-BC66	0E00
-BC68	0E00
-BC6A	2800
-BC6C	2800
-BC6E	2800
-BC70	2800
-BC72	1800
-BC74	1800
-BC76	1800
-BC78	1800
-BC7A	0800
-BC7C	0800
-BC7E	0800
-BC80	0800
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0000
-BC8A	2400
-BC8C	2400
-BC8E	2400
-BC90	2400
-BC92	0088
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	7CAC
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	18A6
-570A	0224
-570C	0453
-570E	0020
-5710	A0A7
-5712	0224
-5714	C850
-5716	0220
-5718	B8AC
-571A	0224
-571C	2C88
-571E	0220
-5720	F0AD
-5722	0224
-5724	7C82
-5726	0120
-5728	C8B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	64B5
-5732	0224
-5734	1081
-5736	0320
-5738	70B9
-573A	0224
-573C	BCFD
-573E	0220
-5740	E4B9
-5742	0224
-5744	BCA5
-5746	0420
-5748	7CBA
-574A	0224
-574C	B803
-574E	0320
-5750	E4BC
-5752	0224
-5754	8424
-5756	0220
-5758	B0BD
-575A	0224
-575C	9C4C
-575E	0220
-5760	D0BF
-5762	0224
-5764	0C22
-5766	0220
-5768	54BE
-576A	0224
-FCFC	2002
-BC98	1743
-BC9A	02FC
-BC9C	E702
-BC9E	8382
-BCA0	2A84
-BCA2	EFE0
-BCA4	BFB9
-BCA6	A147
-BCA8	6306
-BCAA	F400
-BCAC	1743
-BCAE	02FC
-BCB0	6700
-BCB2	8383
-BCB4	B7C7
-BCB6	0224
-BCB8	83C7
-BCBA	87B8
-BCBC	E5DB
-BCBE	B797
-BCC0	0124
-BCC2	9387
-BCC4	0753
-BCC6	0567
-BCC8	3E97
-BCCA	8346
-BCCC	07B9
-BCCE	F9DE
-BCD0	83C7
-BCD2	673F
-BCD4	E1DF
-BCD6	8357
-BCD8	47B6
-BCDA	93E7
-BCDC	0720
-BCDE	2312
-BCE0	F7B6
-BCE2	E9B7
-BCE4	1733
-BCE6	02FC
-BCE8	E702
-BCEA	437B
-BCEC	37C8
-BCEE	0224
-BCF0	1308
-BCF2	48B8
-BCF4	8348
-BCF6	4800
-BCF8	2A8B
-BCFA	AE8B
-BCFC	3284
-BCFE	B684
-BD00	3A89
-BD02	BE89
-BD04	6380
-BD06	0802
-BD08	B7A7
-BD0A	0124
-BD0C	9387
-BD0E	0753
-BD10	03C7
-BD12	07B9
-BD14	83C7
-BD16	B792
-BD18	11C7
-BD1A	0347
-BD1C	5800
-BD1E	BD8B
-BD20	6306
-BD22	F704
-BD24	37E8
-BD26	0124
-BD28	1308
-BD2A	0887
-BD2C	832A
-BD2E	0812
-BD30	032A
-BD32	4812
-BD34	0146
-BD36	D685
-BD38	5285
-BD3A	9730
-BD3C	01FC
-BD3E	E780
-BD40	A0D0
-BD42	CE87
-BD44	4A87
-BD46	A686
-BD48	2286
-BD4A	DE85
-BD4C	5A85
-BD4E	9740
-BD50	00FC
-BD52	E780
-BD54	A066
-BD56	0546
-BD58	D685
-BD5A	5285
-BD5C	9730
-BD5E	01FC
-BD60	E780
-BD62	80CE
-BD64	1733
-BD66	02FC
-BD68	6700
-BD6A	C376
-BD6C	2315
-BD6E	0600
-BD70	9760
-BD72	FFFB
-BD74	E780
-BD76	80BA
-BD78	01CD
-BD7A	B797
-BD7C	0124
-BD7E	9387
-BD80	07D7
-BD82	03C7
-BD84	C700
-BD86	59DF
-BD88	7D17
-BD8A	2386
-BD8C	E700
-BD8E	59BF
-BD90	9760
-BD92	FFFB
-BD94	E780
-BD96	80B5
-BD98	6DD1
-BD9A	B797
-BD9C	0124
-BD9E	9387
-BDA0	07D7
-BDA2	03C7
-BDA4	D700
-BDA6	3DDF
-BDA8	7D17
-BDAA	A386
-BDAC	E700
-BDAE	9DBF
-BDB0	1733
-BDB2	02FC
-BDB4	E702
-BDB6	636F
-BDB8	B7E7
-BDBA	0124
-BDBC	9387
-BDBE	0787
-BDC0	03AA
-BDC2	8712
-BDC4	83A9
-BDC6	C712
-BDC8	AE84
-BDCA	2A84
-BDCC	3289
-BDCE	D285
-BDD0	0146
-BDD2	4E85
-BDD4	9730
-BDD6	01FC
-BDD8	E780
-BDDA	00C7
-BDDC	A685
-BDDE	4A86
-BDE0	2285
-BDE2	9760
-BDE4	FFFB
-BDE6	E780
-BDE8	206A
-BDEA	AA84
-BDEC	0546
-BDEE	D285
-BDF0	4E85
-BDF2	9730
-BDF4	01FC
-BDF6	E780
-BDF8	20C5
-BDFA	B7C7
-BDFC	0224
-BDFE	9387
-BE00	47B8
-BE02	03C7
-BE04	E710
-BE06	15C3
-BE08	37A7
-BE0A	0124
-BE0C	1307
-BE0E	0753
-BE10	0346
-BE12	37B9
-BE14	8946
-BE16	631A
-BE18	D600
-BE1A	8356
-BE1C	87BA
-BE1E	E18E
-BE20	89C6
-BE22	9306
-BE24	0040
-BE26	6307
-BE28	D400
-BE2A	2685
-BE2C	1733
-BE2E	02FC
-BE30	6700
-BE32	E36A
-BE34	8326
-BE36	47B3
-BE38	7D57
-BE3A	E388
-BE3C	E6FE
-BE3E	03D7
-BE40	2711
-BE42	9396
-BE44	0401
-BE46	C182
-BE48	11E3
-BE4A	3687
-BE4C	BA84
-BE4E	2399
-BE50	D710
-BE52	E1BF
-BE54	1733
-BE56	02FC
-BE58	E702
-BE5A	2365
-BE5C	3729
-BE5E	0024
-BE60	B7A4
-BE62	0124
-BE64	1309
-BE66	0933
-BE68	9384
-BE6A	0453
-BE6C	8347
-BE6E	491A
-BE70	03C7
-BE72	24B7
-BE74	2A84
-BE76	D98F
-BE78	6382
-BE7A	0714
-BE7C	8347
-BE7E	E400
-BE80	0547
-BE82	2305
-BE84	E400
-BE86	99E7
-BE88	8347
-BE8A	C400
-BE8C	D1CF
-BE8E	83C7
-BE90	24B7
-BE92	C5CB
-BE94	B76A
-BE96	0124
-BE98	130A
-BE9A	0403
-BE9C	0347
-BE9E	0400
-BEA0	A169
-BEA2	FD19
-BEA4	A301
-BEA6	E400
-BEA8	83A7
-BEAA	0A4B
-BEAC	2302
-BEAE	E400
-BEB0	0567
-BEB2	BA97
-BEB4	83D7
-BEB6	47E0
-BEB8	2303
-BEBA	0400
-BEBC	B3F7
-BEBE	3701
-BEC0	231C
-BEC2	F400
-BEC4	9740
-BEC6	FDFB
-BEC8	E780
-BECA	0067
-BECC	0358
-BECE	8401
-BED0	A308
-BED2	A400
-BED4	6301
-BED6	0806
-BED8	3736
-BEDA	0520
-BEDC	1306
-BEDE	06C8
-BEE0	8146
-BEE2	8147
-BEE4	4145
-BEE6	B305
-BEE8	F400
-BEEA	3357
-BEEC	F840
-BEEE	2380
-BEF0	D502
-BEF2	058B
-BEF4	8507
-BEF6	11C7
-BEF8	0347
-BEFA	0600
-BEFC	BA96
-BEFE	93F6
-BF00	F60F
-BF02	0506
-BF04	E391
-BF06	A7FE
-BF08	2308
-BF0A	D400
-BF0C	8347
-BF0E	491A
-BF10	03C7
-BF12	24B7
-BF14	D98F
-BF16	C9C3
-BF18	2307
-BF1A	0400
-BF1C	232E
-BF1E	4401
-BF20	1733
-BF22	02FC
-BF24	6700
-BF26	A35B
-BF28	8347
-BF2A	B400
-BF2C	A5D7
-BF2E	83C7
-BF30	24B7
-BF32	ADF3
-BF34	39A0
-BF36	0148
-BF38	45F1
-BF3A	231C
-BF3C	3401
-BF3E	4E88
-BF40	61BF
-BF42	B76A
-BF44	0124
-BF46	83A5
-BF48	0A4B
-BF4A	8567
-BF4C	130A
-BF4E	0403
-BF50	9387
-BF52	07E1
-BF54	1306
-BF56	8007
-BF58	BE95
-BF5A	5285
-BF5C	9760
-BF5E	00FC
-BF60	E780
-BF62	400A
-BF64	21C9
-BF66	2305
-BF68	0400
-BF6A	0347
-BF6C	2401
-BF6E	8347
-BF70	6400
-BF72	8356
-BF74	4401
-BF76	A308
-BF78	E400
-BF7A	0547
-BF7C	231C
-BF7E	D400
-BF80	2307
-BF82	E400
-BF84	A301
-BF86	F400
-BF88	2303
-BF8A	0400
-BF8C	232E
-BF8E	4401
-BF90	1733
-BF92	02FC
-BF94	6700
-BF96	A354
-BF98	83A5
-BF9A	0A4B
-BF9C	8567
-BF9E	9387
-BFA0	07E1
-BFA2	1306
-BFA4	000F
-BFA6	BE95
-BFA8	5285
-BFAA	9760
-BFAC	00FC
-BFAE	E780
-BFB0	2005
-BFB2	9DB7
-BFB4	8347
-BFB6	A400
-BFB8	CDDB
-BFBA	CDB5
-BFBC	37A5
-BFBE	0124
-BFC0	1305
-BFC2	050C
-BFC4	9760
-BFC6	FFFB
-BFC8	E780
-BFCA	8043
-BFCC	45BD
-BFCE	0100
-BFD0	1733
-BFD2	02FC
-BFD4	E702
-BFD6	034F
-BFD8	8347
-BFDA	1501
-BFDC	A304
-BFDE	0500
-BFE0	2A84
-BFE2	91EF
-BFE4	8357
-BFE6	8501
-BFE8	99EB
-BFEA	8347
-BFEC	F500
-BFEE	A307
-BFF0	0500
-BFF2	A304
-BFF4	F500
-BFF6	1733
-BFF8	02FC
-BFFA	6700
-BFFC	E34E
-BFFE	2285
-C000	9790
-C002	FFFB
-C004	E780
-C006	C0C4
-C008	8347
-C00A	3400
-C00C	0347
-C00E	6400
-C010	8346
-C012	7400
-C014	FD17
-C016	0507
-C018	93F7
-C01A	F70F
-C01C	2303
-C01E	E400
-C020	A301
-C022	F400
-C024	99C2
-C026	A303
-C028	0400
-C02A	B1EF
-C02C	0347
-C02E	1401
-C030	8356
-C032	8401
-C034	8347
-C036	5400
-C038	2309
-C03A	E400
-C03C	0547
-C03E	231A
-C040	D400
-C042	2304
-C044	E400
-C046	231C
-C048	0400
-C04A	A308
-C04C	0400
-C04E	C5E3
-C050	8347
-C052	1400
-C054	13F7
-C056	2700
-C058	19C7
-C05A	0347
-C05C	0400
-C05E	01C7
-C060	0347
-C062	2400
-C064	4DC3
-C066	858B
-C068	A5CF
-C06A	B727
-C06C	0024
-C06E	83C7
-C070	274D
-C072	D1D3
-C074	B767
-C076	0124
-C078	83A7
-C07A	074B
-C07C	0567
-C07E	BA97
-C080	2380
-C082	07E0
-C084	8DBF
-C086	0347
-C088	0401
-C08A	5C4C
-C08C	9316
-C08E	1700
-C090	B697
-C092	5CCC
-C094	B727
-C096	0024
-C098	9387
-C09A	0733
-C09C	83C6
-C09E	371A
-C0A0	89EA
-C0A2	8346
-C0A4	6401
-C0A6	A1DA
-C0A8	B7A6
-C0AA	0124
-C0AC	83C6
-C0AE	260A
-C0B0	B9F2
-C0B2	83C7
-C0B4	471A
-C0B6	A1F3
-C0B8	0346
-C0BA	0400
-C0BC	B767
-C0BE	0124
-C0C0	83A5
-C0C2	074B
-C0C4	3306
-C0C6	E602
-C0C8	8567
-C0CA	9387
-C0CC	07E1
-C0CE	BE95
-C0D0	1305
-C0D2	0403
-C0D4	0606
-C0D6	9760
-C0D8	00FC
-C0DA	E780
-C0DC	60F2
-C0DE	21BF
-C0E0	8547
-C0E2	A304
-C0E4	F400
-C0E6	1733
-C0E8	02FC
-C0EA	6700
-C0EC	E33F
-C0EE	FD17
-C0F0	A302
-C0F2	F400
-C0F4	2285
-C0F6	9760
-C0F8	FFFB
-C0FA	E780
-C0FC	6011
-C0FE	1733
-C100	02FC
-C102	6700
-C104	633E
-C106	2285
-C108	9760
-C10A	FFFB
-C10C	E780
-C10E	4010
-C110	DDB5
-C112	0100
-C114	8947
-C116	6303
-C118	F500
-C11A	8280
-C11C	1733
-C11E	02FC
-C120	E702
-C122	A338
-C124	B784
-C126	0124
-C128	9384
-C12A	04AA
-C12C	87A7
-C12E	040A
-C130	4111
-C132	37C5
-C134	0224
-C136	5396
-C138	17C0
-C13A	7400
-C13C	9145
-C13E	1305
-C140	A5B8
-C142	9750
-C144	FFFB
-C146	E780
-C148	60C3
-C14A	3719
-C14C	0140
-C14E	4205
-C150	4181
-C152	130A
-C154	4924
-C156	B789
-C158	0124
-C15A	37C4
-C15C	0224
-C15E	B7CA
-C160	0224
-C162	2317
-C164	A100
-C166	9389
-C168	89B1
-C16A	1304
-C16C	24B9
-C16E	938A
-C170	AABB
-C172	330A
-C174	9A40
-C176	0605
-C178	2295
-C17A	8355
-C17C	2500
-C17E	0356
-C180	C100
-C182	0355
-C184	0500
-C186	2104
-C188	9760
-C18A	00FC
-C18C	E780
-C18E	8082
-C190	4205
-C192	4181
-C194	2390
-C196	A900
-C198	B387
-C19A	4901
-C19C	2390
-C19E	A700
-C1A0	8909
-C1A2	6305
-C1A4	5401
-C1A6	0355
-C1A8	E100
-C1AA	F1B7
-C1AC	B789
-C1AE	0124
-C1B0	37CA
-C1B2	0224
-C1B4	1309
-C1B6	0926
-C1B8	9389
-C1BA	A9AF
-C1BC	130A
-C1BE	2AC3
-C1C0	8357
-C1C2	E100
-C1C4	0356
-C1C6	C100
-C1C8	8509
-C1CA	8607
-C1CC	A297
-C1CE	83D5
-C1D0	2700
-C1D2	03D5
-C1D4	0700
-C1D6	0909
-C1D8	2104
-C1DA	9750
-C1DC	00FC
-C1DE	E780
-C1E0	607D
-C1E2	1375
-C1E4	F50F
-C1E6	A38F
-C1E8	A9FE
-C1EA	4205
-C1EC	4181
-C1EE	231F
-C1F0	A9FE
-C1F2	E317
-C1F4	44FD
-C1F6	B719
-C1F8	0140
-C1FA	3789
-C1FC	0124
-C1FE	37CA
-C200	0224
-C202	9389
-C204	291F
-C206	1309
-C208	C9B2
-C20A	130A
-C20C	2AC6
-C20E	B389
-C210	9940
-C212	8357
-C214	E100
-C216	0356
-C218	C100
-C21A	8607
-C21C	A297
-C21E	83D5
-C220	2700
-C222	03D5
-C224	0700
-C226	2104
-C228	9750
-C22A	00FC
-C22C	E780
-C22E	8078
-C230	4205
-C232	4181
-C234	2310
-C236	A900
-C238	B307
-C23A	3901
-C23C	2390
-C23E	A700
-C240	0909
-C242	E318
-C244	44FD
-C246	B717
-C248	0140
-C24A	3789
-C24C	0124
-C24E	B7C9
-C250	0224
-C252	9387
-C254	A720
-C256	1309
-C258	69B4
-C25A	9389
-C25C	29C9
-C25E	B384
-C260	9740
-C262	8357
-C264	E100
-C266	0356
-C268	C100
-C26A	8607
-C26C	A297
-C26E	83D5
-C270	2700
-C272	03D5
-C274	0700
-C276	2104
-C278	9750
-C27A	00FC
-C27C	E780
-C27E	8073
-C280	4205
-C282	4181
-C284	2310
-C286	A900
-C288	B307
-C28A	9900
-C28C	2390
-C28E	A700
-C290	0909
-C292	E318
-C294	34FD
-C296	4101
-C298	1733
-C29A	02FC
-C29C	6700
-C29E	2324
-C2A0	1733
-C2A2	02FC
-C2A4	E702
-C2A6	0322
-C2A8	2A84
-C2AA	EFE0
-C2AC	3F98
-C2AE	1DE0
-C2B0	B797
-C2B2	0124
-C2B4	9387
-C2B6	0753
-C2B8	0D67
-C2BA	3E97
-C2BC	0327
-C2BE	876E
-C2C0	058B
-C2C2	09CB
-C2C4	3787
-C2C6	0040
-C2C8	0357
-C2CA	87F4
-C2CC	A146
-C2CE	618B
-C2D0	6306
-C2D2	D700
-C2D4	1733
-C2D6	02FC
-C2D8	6700
-C2DA	0321
-C2DC	0567
-C2DE	BA97
-C2E0	2389
-C2E2	07B6
-C2E4	C5BF
-C2E6	0100
-C2E8	9147
-C2EA	6303
-C2EC	F500
-C2EE	8280
-C2F0	1733
-C2F2	02FC
-C2F4	E702
-C2F6	031D
-C2F8	9750
-C2FA	FFFB
-C2FC	E780
-C2FE	C063
-C300	09C5
-C302	1733
-C304	02FC
-C306	6700
-C308	231E
-C30A	9750
-C30C	FFFB
-C30E	E780
-C310	E05D
-C312	65F9
-C314	B7C7
-C316	0224
-C318	03D7
-C31A	67B8
-C31C	B7F7
-C31E	0040
-C320	2390
-C322	E73E
-C324	F9BF
-C326	0100
-C328	37C7
-C32A	0224
-C32C	1307
-C32E	47B8
-C330	8345
-C332	0700
-C334	B7A7
-C336	0224
-C338	B7D6
-C33A	0124
-C33C	03D6
-C33E	4760
-C340	23A8
-C342	B6DA
-C344	B767
-C346	0124
-C348	B7C6
-C34A	0224
-C34C	9387
-C34E	0740
-C350	9386
-C352	86C9
-C354	D4C7
-C356	09CA
-C358	B7B6
-C35A	0224
-C35C	3726
-C35E	0024
-C360	9386
-C362	8668
-C364	2320
-C366	D6CE
-C368	2319
-C36A	0710
-C36C	37C7
-C36E	0224
-C370	1307
-C372	072A
-C374	B7C6
-C376	0224
-C378	98D7
-C37A	37C7
-C37C	0224
-C37E	9386
-C380	4611
-C382	1307
-C384	872E
-C386	23A4
-C388	D1A4
-C38A	D8C3
-C38C	8280
-C38E	0100
-C390	1733
-C392	02FC
-C394	E702
-C396	0313
-C398	B7C6
-C39A	0224
-C39C	B787
-C39E	0324
-C3A0	9386
-C3A2	863E
-C3A4	37A7
-C3A6	0124
-C3A8	9387
-C3AA	07FF
-C3AC	1307
-C3AE	0753
-C3B0	958F
-C3B2	232C
-C3B4	D7B4
-C3B6	232E
-C3B8	F7B4
-C3BA	9720
-C3BC	01FC
-C3BE	E780
-C3C0	600C
-C3C2	11C5
-C3C4	EFE0
-C3C6	0F80
-C3C8	EFF0
-C3CA	4FF0
-C3CC	B13F
-C3CE	1733
-C3D0	02FC
-C3D2	6700
-C3D4	6311
-C3D6	0000
-C3D8	A310
-C3DA	E538
-C3DC	0000
-C3DE	0000
-C3E0	BEFF
-C3E2	0F00
-C3E4	0000
-C3E6	0000
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-25D2	0102
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-5ACC	6505
-FCFC	4000
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3234	0120
-3236	1600
-3238	0A14
-323A	2A2A
-323C	010F
-323E	0419
-3240	143A
-3242	0A4B
-3244	0101
-3246	0101
-3248	0010
-3252	C800
-3254	C400
-3256	C200
-3258	BE00
-325A	BC00
-3266	0100
-3268	0200
-326A	2A00
-326C	0000
-326E	3F00
-3270	0A00
-3272	1900
-3274	0C00
-3276	2000
-3278	2300
-327A	2100
-327C	3000
-327E	1100
-3280	0C00
-3282	2000
-3284	2300
-3286	2100
-3288	3000
-328A	1100
-328C	0F00
-328E	1900
-3290	0A00
-3292	0B00
-3296	0800
-3298	0F00
-329A	1900
-329C	0A00
-329E	0B00
-32A0	0000
-32A2	0800
-32A4	0F00
-32A6	1900
-32A8	0A00
-32AA	0B00
-32AC	0000
-32AE	0800
-3330	0108
-3334	0100
-3336	0000
-FCFC	4000
-FCFC	4000
-0B30	01FF
-FCFC	2000
-3D44	0000
-3D88	FCFC
-3D8A	FEFF
-3D8C	FCFC
-3D8E	FEFF
-3D90	FCFC
-3D92	FEFF
-3D94	FCFC
-3D96	FEFF
-3FE0	0324
-3FE2	6080
-3FE4	0324
-3FE6	0080
-4238	0324
-423A	6080
-423C	0000
-423E	0000
-4490	0324
-4492	6080
-4494	0324
-4496	7C87
-46E8	0324
-46EA	6080
-46EC	0324
-46EE	7C87
-46F0	0324
-46F2	128A
-4940	0324
-4942	6080
-4944	0324
-4946	5A8A
-4B98	0324
-4B9A	6080
-4B9C	0324
-4B9E	FC8C
-FCFC	2003
-8000	FFFE
-8002	2400
-8004	FFFD
-8006	D4AC
-8008	003B
-800A	FFFE
-800C	2401
-800E	FFFD
-8010	1D72
-8012	FFFC
-8014	1D74
-8016	FFFC
-8018	1D82
-801A	FFFC
-801C	1D84
-801E	FFFC
-8020	25E0
-8022	0000
-8024	25E2
-8026	0000
-8028	31D0
-802A	0002
-802C	31FA
-802E	04CD
-8030	FFFE
-8032	2400
-8034	FFFD
-8036	0B08
-8038	0101
-803A	0000
-803C	FFFF
-803E	0008
-8040	2401
-8042	1D92
-8044	FCFF
-8046	FCFF
-8048	FCFF
-804A	FCFF
-804C	FFFF
-804E	0008
-8050	2401
-8052	1DA2
-8054	FCFF
-8056	FCFF
-8058	FCFF
-805A	FCFF
-805C	0000
-805E	0000
-8060	FFFE
-8062	2400
-8064	FFFD
-8066	22C2
-8068	0006
-806A	22C4
-806C	1FFF
-806E	22EC
-8070	001F
-8072	2306
-8074	3FFF
-8076	2314
-8078	00FF
-807A	2354
-807C	0003
-807E	23F0
-8080	0100
-8082	68DE
-8084	0000
-8086	703C
-8088	0100
-808A	703E
-808C	0000
-808E	7046
-8090	027F
-8092	7048
-8094	002F
-8096	704A
-8098	0400
-809A	7058
-809C	0280
-809E	705A
-80A0	0030
-80A2	705C
-80A4	0400
-80A6	7806
-80A8	0100
-80AA	7808
-80AC	0824
-80AE	78C0
-80B0	0101
-80B2	795A
-80B4	0010
-80B6	7970
-80B8	0010
-80BA	7994
-80BC	2020
-80BE	7996
-80C0	0001
-80C2	799A
-80C4	0000
-80C6	7BDA
-80C8	003C
-80CA	7EE6
-80CC	002C
-80CE	7EF2
-80D0	002C
-80D2	7EFE
-80D4	0064
-80D6	7F0A
-80D8	0058
-80DA	7F0E
-80DC	0058
-80DE	82A2
-80E0	0012
-80E2	82BA
-80E4	0036
-80E6	8CCE
-80E8	012C
-80EA	8CD0
-80EC	0096
-80EE	8CD2
-80F0	0096
-80F2	8CD6
-80F4	0096
-80F6	8D0E
-80F8	0000
-80FA	9032
-80FC	0000
-80FE	903E
-8100	0000
-8102	B176
-8104	0006
-8106	B178
-8108	0000
-810A	B20C
-810C	002E
-810E	B21A
-8110	0204
-8112	B23C
-8114	6060
-8116	B242
-8118	6060
-811A	B266
-811C	04C0
-811E	B268
-8120	0440
-8122	B270
-8124	0887
-8126	B322
-8128	0101
-812A	B324
-812C	0001
-812E	B330
-8130	2828
-8132	B34A
-8134	2828
-8136	B360
-8138	2828
-813A	B378
-813C	0001
-813E	BF16
-8140	AA0B
-8142	BF30
-8144	0000
-8146	BF78
-8148	3353
-814A	C4D8
-814C	0020
-814E	C4E0
-8150	0001
-8152	C4E2
-8154	0002
-8156	C4F6
-8158	0000
-815A	C53C
-815C	0001
-815E	C53E
-8160	0000
-8162	C544
-8164	0500
-8166	C554
-8168	0D53
-816A	C556
-816C	0000
-816E	D1F6
-8170	003A
-8172	D20C
-8174	0809
-8176	D27A
-8178	0005
-817A	D314
-817C	0220
-817E	D326
-8180	2001
-8182	D3EC
-8184	1CB1
-8186	D3F0
-8188	1CB0
-818A	D410
-818C	0248
-818E	D412
-8190	04D2
-8192	D426
-8194	04D2
-8196	D428
-8198	0AEA
-819A	D43C
-819C	4001
-819E	D43E
-81A0	4001
-81A2	D49C
-81A4	0021
-81A6	D4A8
-81A8	0003
-81AA	D4AC
-81AC	03E8
-81AE	D4B0
-81B0	0001
-81B2	D4B4
-81B4	0001
-81B6	D4B8
-81B8	0035
-81BA	D4BC
-81BC	0014
-81BE	D4C0
-81C0	0014
-81C2	D4C4
-81C4	0001
-81C6	D4C8
-81C8	0000
-81CA	D4CC
-81CC	0000
-81CE	D4D0
-81D0	0016
-81D2	D4D2
-81D4	0020
-81D6	D4D6
-81D8	0000
-81DA	D4DA
-81DC	0000
-81DE	D4DE
-81E0	0000
-81E2	D4E2
-81E4	0001
-81E6	D4E6
-81E8	0001
-81EA	D4EA
-81EC	0001
-81EE	D4EC
-81F0	00BE
-81F2	D4EE
-81F4	00BE
-81F6	D4F8
-81F8	01F0
-81FA	D4FA
-81FC	01F0
-81FE	D554
-8200	0000
-8202	D556
-8204	0000
-8206	D560
-8208	0000
-820A	D562
-820C	0000
-820E	D5BC
-8210	0000
-8212	D5BE
-8214	0000
-8216	D5C8
-8218	0000
-821A	D5CA
-821C	0000
-821E	D624
-8220	0000
-8222	D62E
-8224	0000
-8226	D638
-8228	0000
-822A	D682
-822C	04C0
-822E	D684
-8230	0440
-8232	D6D4
-8234	0000
-8236	D704
-8238	7802
-823A	D718
-823C	0200
-823E	D856
-8240	0705
-8242	D896
-8244	0000
-8246	D8A2
-8248	0001
-824A	DC8C
-824C	2B3F
-824E	DC94
-8250	0001
-8252	DD70
-8254	0000
-8256	DE38
-8258	0000
-825A	E980
-825C	0500
-825E	EF80
-8260	0000
-8262	F014
-8264	0006
-8266	F09A
-8268	FF00
-826A	F0AA
-826C	FFFF
-826E	F0AC
-8270	FFFF
-8272	F288
-8274	0000
-8276	F2E0
-8278	0000
-827A	F2EA
-827C	0040
-827E	F370
-8280	0302
-8282	F372
-8284	0000
-8286	F3E4
-8288	0103
-828A	F3F4
-828C	08C8
-828E	F3F6
-8290	10D7
-8292	FFFE
-8294	2401
-8296	FFFD
-8298	195E
-829A	0001
-829C	1966
-829E	0000
-82A0	1DFE
-82A2	0000
-82A4	1E1E
-82A6	0000
-82A8	1E32
-82AA	0000
-82AC	1E36
-82AE	0000
-82B0	1E3A
-82B2	0000
-82B4	1E3E
-82B6	0000
-82B8	1E52
-82BA	0000
-82BC	1E56
-82BE	0000
-82C0	1E5A
-82C2	0000
-82C4	1E5E
-82C6	0000
-82C8	2540
-82CA	0002
-82CC	25E0
-82CE	0001
-82D0	25E2
-82D2	00CD
-82D4	2920
-82D6	0001
-82D8	29A8
-82DA	0002
-82DC	29BA
-82DE	00FF
-82E0	2A30
-82E2	FF01
-82E4	2A42
-82E6	0001
-82E8	2A44
-82EA	04B0
-82EC	2A46
-82EE	0000
-82F0	2A54
-82F2	0000
-82F4	2A56
-82F6	0008
-82F8	2BB2
-82FA	0010
-82FC	2D32
-82FE	1000
-8300	3132
-8302	0001
-8304	31D0
-8306	0000
-8308	31F8
-830A	0001
-830C	31FA
-830E	0400
-8310	3C42
-8312	0000
-8314	3C46
-8316	05EB
-8318	3C52
-831A	0640
-831C	4270
-831E	0000
-8320	427C
-8322	0020
-8324	4280
-8326	0010
-8328	4290
-832A	0001
-832C	4292
-832E	0000
-8330	4362
-8332	0001
-8334	4364
-8336	0000
-8338	4366
-833A	0000
-833C	4370
-833E	0000
-8340	4396
-8342	000C
-8344	4398
-8346	000E
-8348	43AA
-834A	0000
-834C	43AC
-834E	0000
-8350	43B4
-8352	0000
-8354	43B6
-8356	0000
-8358	43C6
-835A	0A01
-835C	44C6
-835E	0000
-8360	5A70
-8362	0000
-8364	FFFE
-8366	2402
-8368	FFFD
-836A	849E
-836C	0000
-836E	84A0
-8370	0000
-8372	84A2
-8374	0500
-8376	84C4
-8378	0000
-837A	A570
-837C	0000
-837E	FFFE
-8380	2400
-8382	FFFD
-8384	0086
-8386	0200
-8388	0112
-838A	0A0A
-838C	0114
-838E	0103
-8390	0118
-8392	0400
-8394	011A
-8396	0100
-8398	011C
-839A	0001
-839C	0136
-839E	1800
-83A0	013E
-83A2	0000
-83A4	020A
-83A6	0000
-83A8	021E
-83AA	0000
-83AC	0228
-83AE	0001
-83B0	0270
-83B2	2B2B
-83B4	0272
-83B6	102B
-83B8	0274
-83BA	2B30
-83BC	0304
-83BE	0003
-83C0	0306
-83C2	00E6
-83C4	031A
-83C6	0003
-83C8	031C
-83CA	0028
-83CC	031E
-83CE	0002
-83D0	0400
-83D2	1010
-83D4	0408
-83D6	0100
-83D8	040A
-83DA	0100
-83DC	040C
-83DE	0000
-83E0	0702
-83E2	0000
-83E4	0704
-83E6	0000
-83E8	0720
-83EA	0001
-83EC	0722
-83EE	0008
-83F0	0724
-83F2	0000
-83F4	0808
-83F6	0102
-83F8	0900
-83FA	1100
-83FC	0936
-83FE	0000
-8400	0C40
-8402	0000
-8404	0342
-8406	23F0
-8408	0000
-840A	FFFF
-840C	0008
-840E	2400
-8410	71D4
-8412	3F00
-8414	3D00
-8416	84F3
-8418	0040
-841A	FFFF
-841C	0010
-841E	2400
-8420	7274
-8422	0D00
-8424	0C00
-8426	36D2
-8428	0040
-842A	0000
-842C	0000
-842E	0000
-8430	0000
-8432	FFFF
-8434	0008
-8436	2400
-8438	7314
-843A	0000
-843C	0000
-843E	0000
-8440	0000
-8442	FFFF
-8444	0008
-8446	2400
-8448	7A0E
-844A	1E00
-844C	0F00
-844E	0F00
-8450	0F00
-8452	FFFF
-8454	0008
-8456	2400
-8458	7A6E
-845A	2800
-845C	1900
-845E	1900
-8460	1900
-8462	FFFF
-8464	0008
-8466	2400
-8468	7A86
-846A	2800
-846C	1900
-846E	1900
-8470	1900
-8472	FFFF
-8474	0008
-8476	2400
-8478	8C9E
-847A	5000
-847C	3500
-847E	3500
-8480	3500
-8482	FFFF
-8484	000A
-8486	2400
-8488	B21E
-848A	0000
-848C	0000
-848E	C000
-8490	0103
-8492	0000
-8494	FFFF
-8496	000C
-8498	2400
-849A	BEDC
-849C	C526
-849E	903E
-84A0	C00F
-84A2	0008
-84A4	0C00
-84A6	8000
-84A8	FFFF
-84AA	000E
-84AC	2400
-84AE	DADA
-84B0	0001
-84B2	0000
-84B4	3000
-84B6	8001
-84B8	0000
-84BA	0000
-84BC	0000
-84BE	FFFF
-84C0	000C
-84C2	2400
-84C4	DB0C
-84C6	0000
-84C8	0080
-84CA	0000
-84CC	0000
-84CE	0000
-84D0	0000
-84D2	FFFF
-84D4	000C
-84D6	2400
-84D8	DB3C
-84DA	12D2
-84DC	12D2
-84DE	12D2
-84E0	0000
-84E2	0000
-84E4	0000
-84E6	FFFF
-84E8	000C
-84EA	2400
-84EC	DB6C
-84EE	0000
-84F0	0000
-84F2	0000
-84F4	0000
-84F6	0000
-84F8	0000
-84FA	FFFF
-84FC	000C
-84FE	2400
-8500	DB9C
-8502	0000
-8504	0000
-8506	0000
-8508	0000
-850A	0000
-850C	0000
-850E	FFFF
-8510	000C
-8512	2400
-8514	DBCC
-8516	0000
-8518	0000
-851A	0000
-851C	0000
-851E	0000
-8520	0000
-8522	FFFF
-8524	0012
-8526	2401
-8528	1C24
-852A	0002
-852C	0001
-852E	FF03
-8530	0010
-8532	D70F
-8534	0004
-8536	0010
-8538	D70F
-853A	C20F
-853C	FFFF
-853E	0020
-8540	2401
-8542	1C4E
-8544	0001
-8546	FF03
-8548	0010
-854A	D70F
-854C	0004
-854E	0010
-8550	D70F
-8552	C20F
-8554	0000
-8556	0000
-8558	0000
-855A	0000
-855C	0000
-855E	0000
-8560	0000
-8562	0000
-8564	FFFF
-8566	0020
-8568	2401
-856A	1C76
-856C	0001
-856E	FF03
-8570	0010
-8572	D70F
-8574	0004
-8576	0010
-8578	D70F
-857A	C20F
-857C	0000
-857E	0000
-8580	0000
-8582	0000
-8584	0000
-8586	0000
-8588	0000
-858A	0000
-858C	FFFF
-858E	0010
-8590	2401
-8592	1C9E
-8594	0001
-8596	FF03
-8598	0010
-859A	D70F
-859C	0004
-859E	0010
-85A0	D70F
-85A2	C20F
-85A4	FFFF
-85A6	0010
-85A8	2401
-85AA	1CC6
-85AC	0000
-85AE	0000
-85B0	0000
-85B2	0000
-85B4	0000
-85B6	0000
-85B8	0000
-85BA	0000
-85BC	FFFF
-85BE	0020
-85C0	2401
-85C2	1CEE
-85C4	0000
-85C6	0000
-85C8	0000
-85CA	0000
-85CC	0000
-85CE	0000
-85D0	0000
-85D2	0000
-85D4	0000
-85D6	0000
-85D8	0000
-85DA	0000
-85DC	0000
-85DE	0000
-85E0	0000
-85E2	0000
-85E4	FFFF
-85E6	0020
-85E8	2401
-85EA	1D16
-85EC	0000
-85EE	0000
-85F0	0000
-85F2	0000
-85F4	0000
-85F6	0000
-85F8	0000
-85FA	0000
-85FC	0000
-85FE	0000
-8600	0000
-8602	0000
-8604	0000
-8606	0000
-8608	0000
-860A	0000
-860C	FFFF
-860E	0010
-8610	2401
-8612	1D3E
-8614	0000
-8616	0000
-8618	0000
-861A	0000
-861C	0000
-861E	0000
-8620	0000
-8622	0000
-8624	FFFF
-8626	0008
-8628	2401
-862A	1D72
-862C	0000
-862E	0000
-8630	0000
-8632	0000
-8634	FFFF
-8636	0008
-8638	2401
-863A	1D82
-863C	0000
-863E	0000
-8640	0000
-8642	0000
-8644	FFFF
-8646	0008
-8648	2401
-864A	1D92
-864C	0000
-864E	0000
-8650	0000
-8652	0000
-8654	FFFF
-8656	0008
-8658	2401
-865A	1DA2
-865C	0000
-865E	0000
-8660	0000
-8662	0000
-8664	FFFF
-8666	000A
-8668	2401
-866A	1DF2
-866C	0000
-866E	0000
-8670	0000
-8672	0000
-8674	0000
-8676	FFFF
-8678	0008
-867A	2401
-867C	1E02
-867E	0000
-8680	0000
-8682	0000
-8684	0000
-8686	FFFF
-8688	000A
-868A	2401
-868C	1E12
-868E	0000
-8690	0000
-8692	0000
-8694	0000
-8696	0000
-8698	FFFF
-869A	0008
-869C	2401
-869E	1E22
-86A0	0000
-86A2	0000
-86A4	0000
-86A6	0000
-86A8	FFFF
-86AA	0010
-86AC	2402
-86AE	A548
-86B0	0000
-86B2	0000
-86B4	0000
-86B6	0000
-86B8	0000
-86BA	0000
-86BC	0000
-86BE	0000
-86C0	FFFF
-86C2	0010
-86C4	2402
-86C6	A55C
-86C8	0000
-86CA	0000
-86CC	0000
-86CE	0000
-86D0	0000
-86D2	0000
-86D4	0000
-86D6	0000
-86D8	FFFF
-86DA	002C
-86DC	2402
-86DE	A574
-86E0	0100
-86E2	4000
-86E4	8000
-86E6	0001
-86E8	0002
-86EA	0002
-86EC	0002
-86EE	0002
-86F0	0002
-86F2	0002
-86F4	0800
-86F6	2100
-86F8	2900
-86FA	2E00
-86FC	2E00
-86FE	2E00
-8700	2E00
-8702	2E00
-8704	2E00
-8706	3000
-8708	A2FD
-870A	FEFE
-870C	FFFF
-870E	0008
-8710	2400
-8712	0260
-8714	0001
-8716	0000
-8718	0006
-871A	0700
-871C	FFFF
-871E	0008
-8720	2400
-8722	030C
-8724	0000
-8726	0300
-8728	CF00
-872A	0000
-872C	FFFF
-872E	0010
-8730	2400
-8732	0344
-8734	0008
-8736	0006
-8738	1F18
-873A	1F12
-873C	0010
-873E	000C
-8740	1000
-8742	1000
-8744	FFFF
-8746	0008
-8748	2400
-874A	0380
-874C	0100
-874E	0100
-8750	0100
-8752	0100
-8754	FFFF
-8756	0008
-8758	2400
-875A	0728
-875C	0000
-875E	0000
-8760	0000
-8762	0000
-8764	FFFF
-8766	000C
-8768	2400
-876A	0B02
-876C	0101
-876E	0001
-8770	0101
-8772	0100
-8774	0101
-8776	0100
-8778	0000
-877A	0000
-877C	FFFE
-877E	2400
-8780	FFFD
-8782	703C
-8784	0101
-8786	703E
-8788	0001
-878A	7048
-878C	021F
-878E	704A
-8790	0A00
-8792	705A
-8794	0220
-8796	705C
-8798	0A01
-879A	7274
-879C	000C
-879E	7276
-87A0	000B
-87A2	795A
-87A4	0020
-87A6	7970
-87A8	0020
-87AA	7996
-87AC	0101
-87AE	7A0E
-87B0	000F
-87B2	7A6E
-87B4	0019
-87B6	7A86
-87B8	0019
-87BA	7BDA
-87BC	004C
-87BE	82A2
-87C0	0014
-87C2	82BA
-87C4	0033
-87C6	8C9E
-87C8	0035
-87CA	8CA2
-87CC	0050
-87CE	8CCE
-87D0	0096
-87D2	8CD2
-87D4	00BE
-87D6	B176
-87D8	0206
-87DA	B220
-87DC	0301
-87DE	B268
-87E0	F380
-87E2	C4E2
-87E4	0000
-87E6	C53C
-87E8	0005
-87EA	C554
-87EC	1000
-87EE	D326
-87F0	1001
-87F2	D3EC
-87F4	1CB0
-87F6	D49C
-87F8	0003
-87FA	D4A8
-87FC	0001
-87FE	D4AC
-8800	0001
-8802	D4B0
-8804	0202
-8806	D4B8
-8808	0014
-880A	D4BC
-880C	0047
-880E	D4C4
-8810	0000
-8812	D4C8
-8814	0001
-8816	D4D0
-8818	0026
-881A	D4D2
-881C	0000
-881E	D4D6
-8820	001A
-8822	D4DE
-8824	0001
-8826	D4E2
-8828	0028
-882A	D4EC
-882C	0000
-882E	D4EE
-8830	0000
-8832	D4F8
-8834	0000
-8836	D4FA
-8838	0000
-883A	D554
-883C	00C4
-883E	D556
-8840	00EC
-8842	D560
-8844	0352
-8846	D562
-8848	037A
-884A	D684
-884C	F380
-884E	DB0E
-8850	4000
-8852	DB12
-8854	B000
-8856	DB14
-8858	D000
-885A	DB16
-885C	F000
-885E	DB42
-8860	D212
-8862	DB44
-8864	D212
-8866	DB46
-8868	D212
-886A	DC8C
-886C	0B3F
-886E	DC94
-8870	0301
-8872	E980
-8874	049E
-8876	F014
-8878	0007
-887A	F3F4
-887C	00C8
-887E	F3F6
-8880	10D6
-8882	FFFE
-8884	2401
-8886	FFFD
-8888	1C4E
-888A	0180
-888C	1C50
-888E	0480
-8890	2540
-8892	0000
-8894	25E0
-8896	0000
-8898	25E2
-889A	0000
-889C	29A8
-889E	0001
-88A0	29BA
-88A2	0020
-88A4	2A44
-88A6	0739
-88A8	2A56
-88AA	0004
-88AC	3132
-88AE	0002
-88B0	31F8
-88B2	0000
-88B4	31FA
-88B6	0000
-88B8	4396
-88BA	000D
-88BC	FFFE
-88BE	2402
-88C0	FFFD
-88C2	84C4
-88C4	0001
-88C6	A598
-88C8	0032
-88CA	A59A
-88CC	0038
-88CE	FFFE
-88D0	2400
-88D2	FFFD
-88D4	0086
-88D6	1400
-88D8	0350
-88DA	0008
-88DC	0352
-88DE	0008
-88E0	0900
-88E2	2222
-88E4	0B02
-88E6	0201
-88E8	0342
-88EA	12B0
-88EC	0000
-88EE	FFFF
-88F0	0008
-88F2	2400
-88F4	7314
-88F6	2E00
-88F8	3000
-88FA	9EFD
-88FC	0040
-88FE	FFFF
-8900	000A
-8902	2400
-8904	DADE
-8906	4000
-8908	E001
-890A	2003
-890C	8007
-890E	000B
-8910	FFFF
-8912	0010
-8914	2401
-8916	1C26
-8918	8001
-891A	8004
-891C	2010
-891E	2010
-8920	0005
-8922	00A0
-8924	2810
-8926	2810
-8928	FFFF
-892A	000A
-892C	2401
-892E	1C54
-8930	0010
-8932	0005
-8934	00A0
-8936	2810
-8938	2810
-893A	FFFF
-893C	0010
-893E	2401
-8940	1C76
-8942	8001
-8944	8004
-8946	2010
-8948	2010
-894A	0005
-894C	00A0
-894E	2810
-8950	2810
-8952	FFFF
-8954	0010
-8956	2401
-8958	1C9E
-895A	8001
-895C	8004
-895E	2010
-8960	2010
-8962	0005
-8964	00A0
-8966	2810
-8968	2810
-896A	FFFF
-896C	0010
-896E	2401
-8970	1CC6
-8972	8001
-8974	8004
-8976	2010
-8978	2010
-897A	0005
-897C	00A0
-897E	2810
-8980	2810
-8982	FFFF
-8984	0010
-8986	2401
-8988	1CEE
-898A	8001
-898C	8004
-898E	0010
-8990	0010
-8992	0005
-8994	00A0
-8996	2810
-8998	2810
-899A	FFFF
-899C	0010
-899E	2401
-89A0	1D16
-89A2	8001
-89A4	8004
-89A6	2010
-89A8	2010
-89AA	0005
-89AC	00A0
-89AE	2810
-89B0	2810
-89B2	FFFF
-89B4	0010
-89B6	2401
-89B8	1D3E
-89BA	8001
-89BC	8004
-89BE	2010
-89C0	2010
-89C2	0005
-89C4	00A0
-89C6	2810
-89C8	2810
-89CA	FFFF
-89CC	001C
-89CE	2402
-89D0	A57A
-89D2	A000
-89D4	4001
-89D6	8002
-89D8	0005
-89DA	000A
-89DC	A00F
-89DE	4011
-89E0	0E00
-89E2	2000
-89E4	2800
-89E6	1400
-89E8	2200
-89EA	2800
-89EC	2C00
-89EE	FFFF
-89F0	0008
-89F2	2400
-89F4	0344
-89F6	0000
-89F8	0000
-89FA	1F20
-89FC	1F18
-89FE	FFFF
-8A00	0008
-8A02	2400
-8A04	0380
-8A06	0200
-8A08	0200
-8A0A	0200
-8A0C	0200
-8A0E	0000
-8A10	0000
-8A12	FFFE
-8A14	2400
-8A16	FFFD
-8A18	D49C
-8A1A	0022
-8A1C	D4A8
-8A1E	0000
-8A20	D4B0
-8A22	046A
-8A24	D4BC
-8A26	0062
-8A28	D4D0
-8A2A	000A
-8A2C	D4E2
-8A2E	0036
-8A30	D556
-8A32	00FA
-8A34	D562
-8A36	0388
-8A38	FFFE
-8A3A	2401
-8A3C	FFFD
-8A3E	2A44
-8A40	0952
-8A42	FFFE
-8A44	2400
-8A46	FFFD
-8A48	0346
-8A4A	0300
-8A4C	034A
-8A4E	151F
-8A50	034E
-8A52	0900
-8A54	0000
-8A56	0000
-8A58	0000
-8A5A	FFFE
-8A5C	2400
-8A5E	FFFD
-8A60	703C
-8A62	0101
-8A64	7048
-8A66	009F
-8A68	705A
-8A6A	00A0
-8A6C	7274
-8A6E	B000
-8A70	7276
-8A72	0000
-8A74	7278
-8A76	D212
-8A78	7806
-8A7A	0101
-8A7C	7808
-8A7E	0C3F
-8A80	795A
-8A82	0020
-8A84	7970
-8A86	0020
-8A88	7A0E
-8A8A	000F
-8A8C	7A6E
-8A8E	0019
-8A90	7A86
-8A92	0019
-8A94	82A2
-8A96	0014
-8A98	82BA
-8A9A	0033
-8A9C	8C9E
-8A9E	0035
-8AA0	8CA2
-8AA2	0050
-8AA4	8CCE
-8AA6	0096
-8AA8	8CD2
-8AAA	00BE
-8AAC	B176
-8AAE	0206
-8AB0	B220
-8AB2	0301
-8AB4	B268
-8AB6	E380
-8AB8	C4D8
-8ABA	0010
-8ABC	C4E2
-8ABE	0000
-8AC0	C53C
-8AC2	0005
-8AC4	C554
-8AC6	1000
-8AC8	D326
-8ACA	1001
-8ACC	D3EC
-8ACE	1CB0
-8AD0	D4A8
-8AD2	0001
-8AD4	D4AC
-8AD6	0001
-8AD8	D4B0
-8ADA	037E
-8ADC	D4B8
-8ADE	0014
-8AE0	D4BC
-8AE2	040B
-8AE4	D4C4
-8AE6	0000
-8AE8	D4C8
-8AEA	0001
-8AEC	D4D0
-8AEE	000A
-8AF0	D4D2
-8AF2	0000
-8AF4	D4D6
-8AF6	001A
-8AF8	D4DE
-8AFA	0001
-8AFC	D4E2
-8AFE	0036
-8B00	D4EC
-8B02	0000
-8B04	D4EE
-8B06	0000
-8B08	D4F8
-8B0A	0000
-8B0C	D4FA
-8B0E	0000
-8B10	D554
-8B12	00C4
-8B14	D556
-8B16	00FA
-8B18	D560
-8B1A	0352
-8B1C	D562
-8B1E	0388
-8B20	D684
-8B22	E380
-8B24	D704
-8B26	7800
-8B28	DADE
-8B2A	00A0
-8B2C	DAE0
-8B2E	0140
-8B30	DB0C
-8B32	000D
-8B34	DB0E
-8B36	000F
-8B38	DB10
-8B3A	000D
-8B3C	DB3C
-8B3E	D236
-8B40	DB3E
-8B42	D236
-8B44	DB40
-8B46	D236
-8B48	DC8C
-8B4A	0B3F
-8B4C	DC94
-8B4E	0301
-8B50	E980
-8B52	049E
-8B54	F3F4
-8B56	00C8
-8B58	F3F6
-8B5A	10D6
-8B5C	FFFE
-8B5E	2401
-8B60	FFFD
-8B62	195E
-8B64	0101
-8B66	1966
-8B68	0002
-8B6A	2540
-8B6C	0000
-8B6E	25E0
-8B70	0000
-8B72	25E2
-8B74	0000
-8B76	29A8
-8B78	0001
-8B7A	29BA
-8B7C	0020
-8B7E	2A44
-8B80	0739
-8B82	2A56
-8B84	0004
-8B86	3132
-8B88	0002
-8B8A	31F8
-8B8C	0000
-8B8E	31FA
-8B90	0000
-8B92	4396
-8B94	000D
-8B96	5A70
-8B98	0001
-8B9A	FFFE
-8B9C	2402
-8B9E	FFFD
-8BA0	A598
-8BA2	0032
-8BA4	A59A
-8BA6	0038
-8BA8	FFFE
-8BAA	2400
-8BAC	FFFD
-8BAE	0086
-8BB0	0280
-8BB2	021E
-8BB4	0006
-8BB6	034E
-8BB8	0900
-8BBA	0350
-8BBC	0008
-8BBE	0352
-8BC0	0008
-8BC2	0722
-8BC4	0020
-8BC6	0900
-8BC8	2222
-8BCA	0B02
-8BCC	0201
-8BCE	0342
-8BD0	2560
-8BD2	0000
-8BD4	FFFF
-8BD6	0010
-8BD8	2401
-8BDA	1C26
-8BDC	8001
-8BDE	F004
-8BE0	2010
-8BE2	5610
-8BE4	0005
-8BE6	00A0
-8BE8	B610
-8BEA	7011
-8BEC	FFFF
-8BEE	0018
-8BF0	2401
-8BF2	1C4E
-8BF4	8001
-8BF6	F004
-8BF8	2810
-8BFA	5110
-8BFC	0005
-8BFE	F009
-8C00	9710
-8C02	DA10
-8C04	000A
-8C06	00A0
-8C08	DA10
-8C0A	7011
-8C0C	FFFF
-8C0E	0018
-8C10	2401
-8C12	1C76
-8C14	8001
-8C16	F004
-8C18	2810
-8C1A	6610
-8C1C	0005
-8C1E	F009
-8C20	7210
-8C22	DD10
-8C24	000A
-8C26	00A0
-8C28	DD10
-8C2A	7011
-8C2C	FFFF
-8C2E	0010
-8C30	2401
-8C32	1C9E
-8C34	8001
-8C36	F004
-8C38	2010
-8C3A	5610
-8C3C	0005
-8C3E	00A0
-8C40	C410
-8C42	7011
-8C44	FFFF
-8C46	0010
-8C48	2401
-8C4A	1CC6
-8C4C	8001
-8C4E	F004
-8C50	2010
-8C52	5610
-8C54	0005
-8C56	00A0
-8C58	B610
-8C5A	7011
-8C5C	FFFF
-8C5E	0018
-8C60	2401
-8C62	1CEE
-8C64	8001
-8C66	F004
-8C68	2810
-8C6A	5110
-8C6C	0005
-8C6E	F009
-8C70	9710
-8C72	DA10
-8C74	000A
-8C76	00A0
-8C78	DA10
-8C7A	7011
-8C7C	FFFF
-8C7E	0018
-8C80	2401
-8C82	1D16
-8C84	8001
-8C86	F004
-8C88	2810
-8C8A	6610
-8C8C	0005
-8C8E	F009
-8C90	7210
-8C92	DD10
-8C94	000A
-8C96	00A0
-8C98	DD10
-8C9A	7011
-8C9C	FFFF
-8C9E	0010
-8CA0	2401
-8CA2	1D3E
-8CA4	8001
-8CA6	F004
-8CA8	2010
-8CAA	5610
-8CAC	0005
-8CAE	00A0
-8CB0	C410
-8CB2	7011
-8CB4	FFFF
-8CB6	001C
-8CB8	2402
-8CBA	A57A
-8CBC	A000
-8CBE	4001
-8CC0	8002
-8CC2	0005
-8CC4	000A
-8CC6	A00F
-8CC8	4011
-8CCA	0E00
-8CCC	2000
-8CCE	2800
-8CD0	1400
-8CD2	2200
-8CD4	2800
-8CD6	2C00
-8CD8	FFFF
-8CDA	0008
-8CDC	2400
-8CDE	0344
-8CE0	0000
-8CE2	0003
-8CE4	1F20
-8CE6	1F15
-8CE8	FFFF
-8CEA	0008
-8CEC	2400
-8CEE	0380
-8CF0	0200
-8CF2	0200
-8CF4	0200
-8CF6	0200
-8CF8	0000
-8CFA	0000
-8CFC	FFFE
-8CFE	2400
-8D00	FFFD
-8D02	D49C
-8D04	0000
-8D06	D4A8
-8D08	0000
-8D0A	D4AC
-8D0C	0001
-8D0E	D4B8
-8D10	0014
-8D12	D4C4
-8D14	0000
-8D16	D4D0
-8D18	000A
-8D1A	D4D2
-8D1C	0000
-8D1E	D4DE
-8D20	0001
-8D22	D4EC
-8D24	0000
-8D26	D4EE
-8D28	0000
-8D2A	D4F8
-8D2C	0000
-8D2E	D4FA
-8D30	0000
-8D32	FFFE
-8D34	2401
-8D36	FFFD
-8D38	1D72
-8D3A	FFFC
-8D3C	1D74
-8D3E	FFFC
-8D40	1D82
-8D42	FFFC
-8D44	1D84
-8D46	FFFC
-8D48	25E0
-8D4A	0000
-8D4C	25E2
-8D4E	0000
-8D50	2A44
-8D52	047E
-8D54	31D0
-8D56	0002
-8D58	31FA
-8D5A	04CD
-8D5C	FFFE
-8D5E	2400
-8D60	FFFD
-8D62	0346
-8D64	0780
-8D66	034A
-8D68	109F
-8D6A	034E
-8D6C	0900
-8D6E	0B08
-8D70	0101
-8D72	0000
-8D74	FFFF
-8D76	0008
-8D78	2401
-8D7A	1D92
-8D7C	FCFF
-8D7E	FCFF
-8D80	FCFF
-8D82	FCFF
-8D84	FFFF
-8D86	0008
-8D88	2401
-8D8A	1DA2
-8D8C	FCFF
-8D8E	FCFF
-8D90	FCFF
-8D92	FCFF
-8D94	0000
-8D96	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_short_1.3zp_122401.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_short_1.3zp_122401.txt
deleted file mode 100755
index 9486d0b9..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/init_tele_short_1.3zp_122401.txt
+++ /dev/null
@@ -1,3612 +0,0 @@
-FCFC	4000
-0000	000D
-0000	38E5
-6018	0001
-7002	0408
-6014	0001
-FCFC	2002
-1E92	8000
-1E84	282B
-1E86	0320
-FCFC	4000
-7002	0008
-p5	
-FCFC	2000
-DCF0	0000
-FCFC	2001
-3C60	0000
-FCFC	2002
-849C	0100
-849E	0000
-84A0	0000
-84A2	0005
-84A4	0000
-84A6	0000
-84A8	0000
-84AA	0001
-84AC	01FF
-84B0	8089
-84B2	0000
-84B4	8889
-84B6	0000
-84B8	C097
-84BA	0000
-84BC	A60E
-84BE	0000
-84C0	2206
-84C2	0000
-84C4	0010
-84C8	90C3
-84CA	0224
-84CC	44AB
-84CE	0224
-84D0	44AB
-84D2	0224
-84D4	44AB
-84D6	0224
-84D8	44AB
-84DA	0224
-84DC	44AB
-84DE	0224
-A548	001D
-A54A	0000
-A54C	0000
-A54E	0000
-A550	0000
-A552	0000
-A554	0000
-A556	0000
-A558	0000
-A55A	0000
-A55C	0000
-A55E	0000
-A560	0000
-A562	0000
-A564	0000
-A566	0000
-A568	0000
-A56A	0000
-A56C	0000
-A56E	0000
-A570	0000
-A572	0000
-A574	00D5
-A576	0000
-A578	0000
-A57A	0000
-A57C	0000
-A57E	0000
-A580	0000
-A582	0000
-A584	0000
-A586	0000
-A588	0000
-A58A	0000
-A58C	0000
-A58E	0000
-A590	0000
-A592	0000
-A594	0000
-A596	0000
-A598	0000
-A59A	0000
-A59C	0000
-A59E	0000
-A5A0	0100
-A5A2	0036
-A5A4	0000
-A5A6	0000
-A5A8	0000
-A5AA	0000
-A5AC	0000
-A5AE	0000
-A5B0	0000
-A5B2	0000
-A5B4	0000
-A5B6	0000
-A5B8	0000
-A5BA	0000
-A5BC	0000
-A5BE	0000
-A5C0	0000
-A5C2	0000
-A5C4	0000
-A5C6	0000
-A5C8	0000
-A5CA	0000
-A5CC	0000
-A5CE	0000
-A5D0	0000
-A5D2	0000
-A5D4	0000
-A5D6	0000
-A5D8	0000
-A5DA	0000
-A5DC	0000
-A5DE	0000
-A5E0	0000
-A5E2	0000
-A5E4	0000
-A5E6	0000
-A5E8	0000
-A5EA	0000
-A5EC	000F
-A5EE	000F
-A5F0	000F
-A5F2	000F
-A5F4	0000
-A5F6	0000
-A5F8	0000
-A5FA	0000
-A5FC	0000
-A5FE	0000
-A600	0000
-A602	0000
-A604	0000
-A606	00C6
-BB84	0001
-BB86	0000
-BB88	0000
-BB8A	0100
-BB8C	0800
-BB8E	1000
-BB90	2000
-BB92	9A00
-BB94	9A00
-BB96	9A00
-BB98	9A00
-BB9A	9600
-BB9C	9600
-BB9E	9600
-BBA0	9600
-BBA2	9300
-BBA4	9300
-BBA6	9300
-BBA8	9300
-BBAA	9000
-BBAC	9000
-BBAE	9000
-BBB0	9000
-BBB2	8D00
-BBB4	8D00
-BBB6	8D00
-BBB8	8D00
-BBBA	3F00
-BBBC	3F00
-BBBE	3F00
-BBC0	3F00
-BBC2	1E00
-BBC4	1E00
-BBC6	1E00
-BBC8	1E00
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0000
-BBD2	0800
-BBD4	0800
-BBD6	0800
-BBD8	0800
-BBDA	0000
-BBDC	0000
-BBDE	0000
-BBE0	0000
-BBE2	3F00
-BBE4	3F00
-BBE6	3F00
-BBE8	3F00
-BBEA	3400
-BBEC	3400
-BBEE	3400
-BBF0	3400
-BBF2	0A00
-BBF4	0A00
-BBF6	0A00
-BBF8	0A00
-BBFA	1000
-BBFC	1000
-BBFE	1000
-BC00	1000
-BC02	0600
-BC04	0600
-BC06	0600
-BC08	0600
-BC0A	0C00
-BC0C	0C00
-BC0E	0C00
-BC10	0C00
-BC12	0000
-BC14	0000
-BC16	0000
-BC18	0000
-BC1A	1000
-BC1C	1000
-BC1E	1000
-BC20	1000
-BC22	1000
-BC24	1000
-BC26	1000
-BC28	1000
-BC2A	2000
-BC2C	1000
-BC2E	1000
-BC30	1000
-BC32	0600
-BC34	0600
-BC36	0600
-BC38	0600
-BC3A	1C00
-BC3C	1C00
-BC3E	1C00
-BC40	1C00
-BC42	0600
-BC44	0600
-BC46	0600
-BC48	0600
-BC4A	2A00
-BC4C	2A00
-BC4E	2A00
-BC50	2A00
-BC52	0200
-BC54	0200
-BC56	0200
-BC58	0200
-BC5A	1000
-BC5C	1000
-BC5E	1000
-BC60	1000
-BC62	0E00
-BC64	0E00
-BC66	0E00
-BC68	0E00
-BC6A	2800
-BC6C	2800
-BC6E	2800
-BC70	2800
-BC72	1800
-BC74	1800
-BC76	1800
-BC78	1800
-BC7A	0800
-BC7C	0800
-BC7E	0800
-BC80	0800
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0000
-BC8A	2400
-BC8C	2400
-BC8E	2400
-BC90	2400
-BC92	0088
-FCFC	2001
-5634	041D
-5636	0420
-5638	3C85
-563A	0224
-563C	3CE6
-563E	0320
-5640	D885
-5642	0224
-5644	D06E
-5646	0320
-5648	C48D
-564A	0224
-564C	4877
-564E	0320
-5650	CC90
-5652	0224
-5654	6812
-5656	0320
-5658	B88F
-565A	0224
-565C	E8FE
-565E	0220
-5660	5491
-5662	0224
-5664	A462
-5666	0320
-5668	9C95
-566A	0224
-566C	901B
-566E	0020
-5670	2896
-5672	0224
-5674	C446
-5676	0320
-5678	E896
-567A	0224
-567C	1427
-567E	0320
-5680	C498
-5682	0224
-5684	304C
-5686	0220
-5688	749B
-568A	0224
-568C	C82C
-568E	0220
-5690	D09B
-5692	0224
-5694	484F
-5696	0220
-5698	289C
-569A	0224
-569C	B041
-569E	0220
-56A0	3C9A
-56A2	0224
-56A4	C81D
-56A6	0420
-56A8	FC9A
-56AA	0224
-56AC	AC7F
-56AE	0420
-56B0	8C86
-56B2	0224
-56B4	7C80
-56B6	0420
-56B8	1086
-56BA	0224
-56BC	F887
-56BE	0320
-56C0	7CAC
-56C2	0224
-56C4	1007
-56C6	0320
-56C8	E08E
-56CA	0224
-56CC	1409
-56CE	0020
-56D0	2495
-56D2	0224
-56D4	2046
-56D6	0420
-56D8	C087
-56DA	0224
-56DC	B05B
-56DE	0420
-56E0	4088
-56E2	0224
-56E4	505C
-56E6	0320
-56E8	448A
-56EA	0224
-56EC	A45B
-56EE	0320
-56F0	5089
-56F2	0224
-56F4	306A
-56F6	0420
-56F8	1485
-56FA	0224
-56FC	90F8
-56FE	0220
-5700	44A1
-5702	0224
-5704	0454
-5706	0120
-5708	18A6
-570A	0224
-570C	0453
-570E	0020
-5710	A0A7
-5712	0224
-5714	C850
-5716	0220
-5718	B8AC
-571A	0224
-571C	2C88
-571E	0220
-5720	F0AD
-5722	0224
-5724	7C82
-5726	0120
-5728	C8B4
-572A	0224
-572C	ACF3
-572E	0320
-5730	64B5
-5732	0224
-5734	1081
-5736	0320
-5738	70B9
-573A	0224
-573C	BCFD
-573E	0220
-5740	E4B9
-5742	0224
-5744	BCA5
-5746	0420
-5748	7CBA
-574A	0224
-574C	B803
-574E	0320
-5750	E4BC
-5752	0224
-5754	8424
-5756	0220
-5758	B0BD
-575A	0224
-575C	9C4C
-575E	0220
-5760	D0BF
-5762	0224
-5764	0C22
-5766	0220
-5768	54BE
-576A	0224
-FCFC	2002
-BC98	1743
-BC9A	02FC
-BC9C	E702
-BC9E	8382
-BCA0	2A84
-BCA2	EFE0
-BCA4	BFB9
-BCA6	A147
-BCA8	6306
-BCAA	F400
-BCAC	1743
-BCAE	02FC
-BCB0	6700
-BCB2	8383
-BCB4	B7C7
-BCB6	0224
-BCB8	83C7
-BCBA	87B8
-BCBC	E5DB
-BCBE	B797
-BCC0	0124
-BCC2	9387
-BCC4	0753
-BCC6	0567
-BCC8	3E97
-BCCA	8346
-BCCC	07B9
-BCCE	F9DE
-BCD0	83C7
-BCD2	673F
-BCD4	E1DF
-BCD6	8357
-BCD8	47B6
-BCDA	93E7
-BCDC	0720
-BCDE	2312
-BCE0	F7B6
-BCE2	E9B7
-BCE4	1733
-BCE6	02FC
-BCE8	E702
-BCEA	437B
-BCEC	37C8
-BCEE	0224
-BCF0	1308
-BCF2	48B8
-BCF4	8348
-BCF6	4800
-BCF8	2A8B
-BCFA	AE8B
-BCFC	3284
-BCFE	B684
-BD00	3A89
-BD02	BE89
-BD04	6380
-BD06	0802
-BD08	B7A7
-BD0A	0124
-BD0C	9387
-BD0E	0753
-BD10	03C7
-BD12	07B9
-BD14	83C7
-BD16	B792
-BD18	11C7
-BD1A	0347
-BD1C	5800
-BD1E	BD8B
-BD20	6306
-BD22	F704
-BD24	37E8
-BD26	0124
-BD28	1308
-BD2A	0887
-BD2C	832A
-BD2E	0812
-BD30	032A
-BD32	4812
-BD34	0146
-BD36	D685
-BD38	5285
-BD3A	9730
-BD3C	01FC
-BD3E	E780
-BD40	A0D0
-BD42	CE87
-BD44	4A87
-BD46	A686
-BD48	2286
-BD4A	DE85
-BD4C	5A85
-BD4E	9740
-BD50	00FC
-BD52	E780
-BD54	A066
-BD56	0546
-BD58	D685
-BD5A	5285
-BD5C	9730
-BD5E	01FC
-BD60	E780
-BD62	80CE
-BD64	1733
-BD66	02FC
-BD68	6700
-BD6A	C376
-BD6C	2315
-BD6E	0600
-BD70	9760
-BD72	FFFB
-BD74	E780
-BD76	80BA
-BD78	01CD
-BD7A	B797
-BD7C	0124
-BD7E	9387
-BD80	07D7
-BD82	03C7
-BD84	C700
-BD86	59DF
-BD88	7D17
-BD8A	2386
-BD8C	E700
-BD8E	59BF
-BD90	9760
-BD92	FFFB
-BD94	E780
-BD96	80B5
-BD98	6DD1
-BD9A	B797
-BD9C	0124
-BD9E	9387
-BDA0	07D7
-BDA2	03C7
-BDA4	D700
-BDA6	3DDF
-BDA8	7D17
-BDAA	A386
-BDAC	E700
-BDAE	9DBF
-BDB0	1733
-BDB2	02FC
-BDB4	E702
-BDB6	636F
-BDB8	B7E7
-BDBA	0124
-BDBC	9387
-BDBE	0787
-BDC0	03AA
-BDC2	8712
-BDC4	83A9
-BDC6	C712
-BDC8	AE84
-BDCA	2A84
-BDCC	3289
-BDCE	D285
-BDD0	0146
-BDD2	4E85
-BDD4	9730
-BDD6	01FC
-BDD8	E780
-BDDA	00C7
-BDDC	A685
-BDDE	4A86
-BDE0	2285
-BDE2	9760
-BDE4	FFFB
-BDE6	E780
-BDE8	206A
-BDEA	AA84
-BDEC	0546
-BDEE	D285
-BDF0	4E85
-BDF2	9730
-BDF4	01FC
-BDF6	E780
-BDF8	20C5
-BDFA	B7C7
-BDFC	0224
-BDFE	9387
-BE00	47B8
-BE02	03C7
-BE04	E710
-BE06	15C3
-BE08	37A7
-BE0A	0124
-BE0C	1307
-BE0E	0753
-BE10	0346
-BE12	37B9
-BE14	8946
-BE16	631A
-BE18	D600
-BE1A	8356
-BE1C	87BA
-BE1E	E18E
-BE20	89C6
-BE22	9306
-BE24	0040
-BE26	6307
-BE28	D400
-BE2A	2685
-BE2C	1733
-BE2E	02FC
-BE30	6700
-BE32	E36A
-BE34	8326
-BE36	47B3
-BE38	7D57
-BE3A	E388
-BE3C	E6FE
-BE3E	03D7
-BE40	2711
-BE42	9396
-BE44	0401
-BE46	C182
-BE48	11E3
-BE4A	3687
-BE4C	BA84
-BE4E	2399
-BE50	D710
-BE52	E1BF
-BE54	1733
-BE56	02FC
-BE58	E702
-BE5A	2365
-BE5C	3729
-BE5E	0024
-BE60	B7A4
-BE62	0124
-BE64	1309
-BE66	0933
-BE68	9384
-BE6A	0453
-BE6C	8347
-BE6E	491A
-BE70	03C7
-BE72	24B7
-BE74	2A84
-BE76	D98F
-BE78	6382
-BE7A	0714
-BE7C	8347
-BE7E	E400
-BE80	0547
-BE82	2305
-BE84	E400
-BE86	99E7
-BE88	8347
-BE8A	C400
-BE8C	D1CF
-BE8E	83C7
-BE90	24B7
-BE92	C5CB
-BE94	B76A
-BE96	0124
-BE98	130A
-BE9A	0403
-BE9C	0347
-BE9E	0400
-BEA0	A169
-BEA2	FD19
-BEA4	A301
-BEA6	E400
-BEA8	83A7
-BEAA	0A4B
-BEAC	2302
-BEAE	E400
-BEB0	0567
-BEB2	BA97
-BEB4	83D7
-BEB6	47E0
-BEB8	2303
-BEBA	0400
-BEBC	B3F7
-BEBE	3701
-BEC0	231C
-BEC2	F400
-BEC4	9740
-BEC6	FDFB
-BEC8	E780
-BECA	0067
-BECC	0358
-BECE	8401
-BED0	A308
-BED2	A400
-BED4	6301
-BED6	0806
-BED8	3736
-BEDA	0520
-BEDC	1306
-BEDE	06C8
-BEE0	8146
-BEE2	8147
-BEE4	4145
-BEE6	B305
-BEE8	F400
-BEEA	3357
-BEEC	F840
-BEEE	2380
-BEF0	D502
-BEF2	058B
-BEF4	8507
-BEF6	11C7
-BEF8	0347
-BEFA	0600
-BEFC	BA96
-BEFE	93F6
-BF00	F60F
-BF02	0506
-BF04	E391
-BF06	A7FE
-BF08	2308
-BF0A	D400
-BF0C	8347
-BF0E	491A
-BF10	03C7
-BF12	24B7
-BF14	D98F
-BF16	C9C3
-BF18	2307
-BF1A	0400
-BF1C	232E
-BF1E	4401
-BF20	1733
-BF22	02FC
-BF24	6700
-BF26	A35B
-BF28	8347
-BF2A	B400
-BF2C	A5D7
-BF2E	83C7
-BF30	24B7
-BF32	ADF3
-BF34	39A0
-BF36	0148
-BF38	45F1
-BF3A	231C
-BF3C	3401
-BF3E	4E88
-BF40	61BF
-BF42	B76A
-BF44	0124
-BF46	83A5
-BF48	0A4B
-BF4A	8567
-BF4C	130A
-BF4E	0403
-BF50	9387
-BF52	07E1
-BF54	1306
-BF56	8007
-BF58	BE95
-BF5A	5285
-BF5C	9760
-BF5E	00FC
-BF60	E780
-BF62	400A
-BF64	21C9
-BF66	2305
-BF68	0400
-BF6A	0347
-BF6C	2401
-BF6E	8347
-BF70	6400
-BF72	8356
-BF74	4401
-BF76	A308
-BF78	E400
-BF7A	0547
-BF7C	231C
-BF7E	D400
-BF80	2307
-BF82	E400
-BF84	A301
-BF86	F400
-BF88	2303
-BF8A	0400
-BF8C	232E
-BF8E	4401
-BF90	1733
-BF92	02FC
-BF94	6700
-BF96	A354
-BF98	83A5
-BF9A	0A4B
-BF9C	8567
-BF9E	9387
-BFA0	07E1
-BFA2	1306
-BFA4	000F
-BFA6	BE95
-BFA8	5285
-BFAA	9760
-BFAC	00FC
-BFAE	E780
-BFB0	2005
-BFB2	9DB7
-BFB4	8347
-BFB6	A400
-BFB8	CDDB
-BFBA	CDB5
-BFBC	37A5
-BFBE	0124
-BFC0	1305
-BFC2	050C
-BFC4	9760
-BFC6	FFFB
-BFC8	E780
-BFCA	8043
-BFCC	45BD
-BFCE	0100
-BFD0	1733
-BFD2	02FC
-BFD4	E702
-BFD6	034F
-BFD8	8347
-BFDA	1501
-BFDC	A304
-BFDE	0500
-BFE0	2A84
-BFE2	91EF
-BFE4	8357
-BFE6	8501
-BFE8	99EB
-BFEA	8347
-BFEC	F500
-BFEE	A307
-BFF0	0500
-BFF2	A304
-BFF4	F500
-BFF6	1733
-BFF8	02FC
-BFFA	6700
-BFFC	E34E
-BFFE	2285
-C000	9790
-C002	FFFB
-C004	E780
-C006	C0C4
-C008	8347
-C00A	3400
-C00C	0347
-C00E	6400
-C010	8346
-C012	7400
-C014	FD17
-C016	0507
-C018	93F7
-C01A	F70F
-C01C	2303
-C01E	E400
-C020	A301
-C022	F400
-C024	99C2
-C026	A303
-C028	0400
-C02A	B1EF
-C02C	0347
-C02E	1401
-C030	8356
-C032	8401
-C034	8347
-C036	5400
-C038	2309
-C03A	E400
-C03C	0547
-C03E	231A
-C040	D400
-C042	2304
-C044	E400
-C046	231C
-C048	0400
-C04A	A308
-C04C	0400
-C04E	C5E3
-C050	8347
-C052	1400
-C054	13F7
-C056	2700
-C058	19C7
-C05A	0347
-C05C	0400
-C05E	01C7
-C060	0347
-C062	2400
-C064	4DC3
-C066	858B
-C068	A5CF
-C06A	B727
-C06C	0024
-C06E	83C7
-C070	274D
-C072	D1D3
-C074	B767
-C076	0124
-C078	83A7
-C07A	074B
-C07C	0567
-C07E	BA97
-C080	2380
-C082	07E0
-C084	8DBF
-C086	0347
-C088	0401
-C08A	5C4C
-C08C	9316
-C08E	1700
-C090	B697
-C092	5CCC
-C094	B727
-C096	0024
-C098	9387
-C09A	0733
-C09C	83C6
-C09E	371A
-C0A0	89EA
-C0A2	8346
-C0A4	6401
-C0A6	A1DA
-C0A8	B7A6
-C0AA	0124
-C0AC	83C6
-C0AE	260A
-C0B0	B9F2
-C0B2	83C7
-C0B4	471A
-C0B6	A1F3
-C0B8	0346
-C0BA	0400
-C0BC	B767
-C0BE	0124
-C0C0	83A5
-C0C2	074B
-C0C4	3306
-C0C6	E602
-C0C8	8567
-C0CA	9387
-C0CC	07E1
-C0CE	BE95
-C0D0	1305
-C0D2	0403
-C0D4	0606
-C0D6	9760
-C0D8	00FC
-C0DA	E780
-C0DC	60F2
-C0DE	21BF
-C0E0	8547
-C0E2	A304
-C0E4	F400
-C0E6	1733
-C0E8	02FC
-C0EA	6700
-C0EC	E33F
-C0EE	FD17
-C0F0	A302
-C0F2	F400
-C0F4	2285
-C0F6	9760
-C0F8	FFFB
-C0FA	E780
-C0FC	6011
-C0FE	1733
-C100	02FC
-C102	6700
-C104	633E
-C106	2285
-C108	9760
-C10A	FFFB
-C10C	E780
-C10E	4010
-C110	DDB5
-C112	0100
-C114	8947
-C116	6303
-C118	F500
-C11A	8280
-C11C	1733
-C11E	02FC
-C120	E702
-C122	A338
-C124	B784
-C126	0124
-C128	9384
-C12A	04AA
-C12C	87A7
-C12E	040A
-C130	4111
-C132	37C5
-C134	0224
-C136	5396
-C138	17C0
-C13A	7400
-C13C	9145
-C13E	1305
-C140	A5B8
-C142	9750
-C144	FFFB
-C146	E780
-C148	60C3
-C14A	3719
-C14C	0140
-C14E	4205
-C150	4181
-C152	130A
-C154	4924
-C156	B789
-C158	0124
-C15A	37C4
-C15C	0224
-C15E	B7CA
-C160	0224
-C162	2317
-C164	A100
-C166	9389
-C168	89B1
-C16A	1304
-C16C	24B9
-C16E	938A
-C170	AABB
-C172	330A
-C174	9A40
-C176	0605
-C178	2295
-C17A	8355
-C17C	2500
-C17E	0356
-C180	C100
-C182	0355
-C184	0500
-C186	2104
-C188	9760
-C18A	00FC
-C18C	E780
-C18E	8082
-C190	4205
-C192	4181
-C194	2390
-C196	A900
-C198	B387
-C19A	4901
-C19C	2390
-C19E	A700
-C1A0	8909
-C1A2	6305
-C1A4	5401
-C1A6	0355
-C1A8	E100
-C1AA	F1B7
-C1AC	B789
-C1AE	0124
-C1B0	37CA
-C1B2	0224
-C1B4	1309
-C1B6	0926
-C1B8	9389
-C1BA	A9AF
-C1BC	130A
-C1BE	2AC3
-C1C0	8357
-C1C2	E100
-C1C4	0356
-C1C6	C100
-C1C8	8509
-C1CA	8607
-C1CC	A297
-C1CE	83D5
-C1D0	2700
-C1D2	03D5
-C1D4	0700
-C1D6	0909
-C1D8	2104
-C1DA	9750
-C1DC	00FC
-C1DE	E780
-C1E0	607D
-C1E2	1375
-C1E4	F50F
-C1E6	A38F
-C1E8	A9FE
-C1EA	4205
-C1EC	4181
-C1EE	231F
-C1F0	A9FE
-C1F2	E317
-C1F4	44FD
-C1F6	B719
-C1F8	0140
-C1FA	3789
-C1FC	0124
-C1FE	37CA
-C200	0224
-C202	9389
-C204	291F
-C206	1309
-C208	C9B2
-C20A	130A
-C20C	2AC6
-C20E	B389
-C210	9940
-C212	8357
-C214	E100
-C216	0356
-C218	C100
-C21A	8607
-C21C	A297
-C21E	83D5
-C220	2700
-C222	03D5
-C224	0700
-C226	2104
-C228	9750
-C22A	00FC
-C22C	E780
-C22E	8078
-C230	4205
-C232	4181
-C234	2310
-C236	A900
-C238	B307
-C23A	3901
-C23C	2390
-C23E	A700
-C240	0909
-C242	E318
-C244	44FD
-C246	B717
-C248	0140
-C24A	3789
-C24C	0124
-C24E	B7C9
-C250	0224
-C252	9387
-C254	A720
-C256	1309
-C258	69B4
-C25A	9389
-C25C	29C9
-C25E	B384
-C260	9740
-C262	8357
-C264	E100
-C266	0356
-C268	C100
-C26A	8607
-C26C	A297
-C26E	83D5
-C270	2700
-C272	03D5
-C274	0700
-C276	2104
-C278	9750
-C27A	00FC
-C27C	E780
-C27E	8073
-C280	4205
-C282	4181
-C284	2310
-C286	A900
-C288	B307
-C28A	9900
-C28C	2390
-C28E	A700
-C290	0909
-C292	E318
-C294	34FD
-C296	4101
-C298	1733
-C29A	02FC
-C29C	6700
-C29E	2324
-C2A0	1733
-C2A2	02FC
-C2A4	E702
-C2A6	0322
-C2A8	2A84
-C2AA	EFE0
-C2AC	3F98
-C2AE	1DE0
-C2B0	B797
-C2B2	0124
-C2B4	9387
-C2B6	0753
-C2B8	0D67
-C2BA	3E97
-C2BC	0327
-C2BE	876E
-C2C0	058B
-C2C2	09CB
-C2C4	3787
-C2C6	0040
-C2C8	0357
-C2CA	87F4
-C2CC	A146
-C2CE	618B
-C2D0	6306
-C2D2	D700
-C2D4	1733
-C2D6	02FC
-C2D8	6700
-C2DA	0321
-C2DC	0567
-C2DE	BA97
-C2E0	2389
-C2E2	07B6
-C2E4	C5BF
-C2E6	0100
-C2E8	9147
-C2EA	6303
-C2EC	F500
-C2EE	8280
-C2F0	1733
-C2F2	02FC
-C2F4	E702
-C2F6	031D
-C2F8	9750
-C2FA	FFFB
-C2FC	E780
-C2FE	C063
-C300	09C5
-C302	1733
-C304	02FC
-C306	6700
-C308	231E
-C30A	9750
-C30C	FFFB
-C30E	E780
-C310	E05D
-C312	65F9
-C314	B7C7
-C316	0224
-C318	03D7
-C31A	67B8
-C31C	B7F7
-C31E	0040
-C320	2390
-C322	E73E
-C324	F9BF
-C326	0100
-C328	37C7
-C32A	0224
-C32C	1307
-C32E	47B8
-C330	8345
-C332	0700
-C334	B7A7
-C336	0224
-C338	B7D6
-C33A	0124
-C33C	03D6
-C33E	4760
-C340	23A8
-C342	B6DA
-C344	B767
-C346	0124
-C348	B7C6
-C34A	0224
-C34C	9387
-C34E	0740
-C350	9386
-C352	86C9
-C354	D4C7
-C356	09CA
-C358	B7B6
-C35A	0224
-C35C	3726
-C35E	0024
-C360	9386
-C362	8668
-C364	2320
-C366	D6CE
-C368	2319
-C36A	0710
-C36C	37C7
-C36E	0224
-C370	1307
-C372	072A
-C374	B7C6
-C376	0224
-C378	98D7
-C37A	37C7
-C37C	0224
-C37E	9386
-C380	4611
-C382	1307
-C384	872E
-C386	23A4
-C388	D1A4
-C38A	D8C3
-C38C	8280
-C38E	0100
-C390	1733
-C392	02FC
-C394	E702
-C396	0313
-C398	B7C6
-C39A	0224
-C39C	B787
-C39E	0324
-C3A0	9386
-C3A2	863E
-C3A4	37A7
-C3A6	0124
-C3A8	9387
-C3AA	07FF
-C3AC	1307
-C3AE	0753
-C3B0	958F
-C3B2	232C
-C3B4	D7B4
-C3B6	232E
-C3B8	F7B4
-C3BA	9720
-C3BC	01FC
-C3BE	E780
-C3C0	600C
-C3C2	11C5
-C3C4	EFE0
-C3C6	0F80
-C3C8	EFF0
-C3CA	4FF0
-C3CC	B13F
-C3CE	1733
-C3D0	02FC
-C3D2	6700
-C3D4	6311
-C3D6	0000
-C3D8	A310
-C3DA	E538
-C3DC	0000
-C3DE	0000
-C3E0	BEFF
-C3E2	0F00
-C3E4	0000
-C3E6	0000
-FCFC	2000
-2366	001C
-2368	001C
-238E	3F28
-2398	5037
-24B8	0101
-66E4	1E8D
-66E6	0000
-6874	0000
-6876	0000
-6878	0000
-687A	0000
-6884	0100
-6886	0100
-6888	0100
-688A	0100
-793E	0100
-7940	7017
-795C	0400
-795E	0400
-7960	0800
-7962	1000
-7964	0800
-7966	1000
-7968	0800
-796A	0800
-796C	0800
-796E	0800
-7972	0400
-7974	0400
-7976	0800
-7978	1000
-797A	0800
-797C	1000
-797E	0800
-7980	0800
-7982	0800
-7984	0800
-B3AC	4000
-B3B4	2000
-B3B8	1000
-B3F8	8000
-B400	4000
-B404	2000
-BF70	3A46
-BF7C	0800
-C4A8	0000
-C4F8	00A8
-C4FA	0000
-D3DA	0D00
-D3E0	0D00
-D3E2	0D00
-D3E4	0D00
-D3E6	0D00
-D3EA	0D00
-D3F4	301C
-D3F8	301C
-DD6C	B47E
-DD6E	B67E
-DE34	0000
-DE36	9231
-EC42	0100
-EC44	0100
-FCFC	2001
-2542	2020
-2544	2018
-2554	0000
-2556	0000
-256E	0000
-25D2	0102
-2936	4400
-2A14	0002
-2A16	DF03
-2A18	0002
-2A1A	0002
-3252	8C00
-3254	8C00
-3256	8C00
-3258	8700
-325A	8200
-3E1C	0200
-3E1E	2000
-5ACC	6505
-FCFC	4000
-1858	123F
-FCFC	2001
-3EB8	00FF
-3ECC	FE03
-3F12	9001
-33E0	1E00
-33E2	1E00
-33E4	1E00
-33E6	1E00
-33E8	1E00
-33EA	1E00
-3440	0500
-3442	0500
-3444	0500
-3446	0500
-3448	0500
-344A	0500
-3450	0A00
-3452	0A00
-3454	0A00
-3456	0A00
-3458	0A00
-345A	0A00
-34E0	1400
-34E2	1400
-34E4	1400
-34E6	1400
-34E8	1400
-34EA	1400
-3500	1400
-3502	1400
-3504	1400
-3506	1400
-3508	1400
-350A	1400
-3520	1400
-3522	1400
-3524	1400
-3526	1400
-3528	1400
-352A	1400
-3580	2300
-3582	2300
-3584	2300
-3586	2300
-3588	2300
-358A	2300
-35A0	1900
-35A2	1900
-35A4	1900
-35A6	1900
-35A8	1900
-35AA	1900
-35D0	1E00
-35D2	1E00
-35D4	1E00
-35D6	1E00
-35D8	1E00
-35DA	1E00
-35E0	1E00
-35E2	1E00
-35E4	1E00
-35E6	1E00
-35E8	1E00
-35EA	1E00
-35F0	1E00
-35F2	1E00
-35F4	1E00
-35F6	1E00
-35F8	1E00
-35FA	1E00
-3600	1E00
-3602	1E00
-3604	1E00
-3606	1E00
-3608	1E00
-360A	1E00
-3610	1E00
-3612	1E00
-3614	1E00
-3616	1E00
-3618	1E00
-361A	1E00
-3620	0000
-3622	0000
-3624	0000
-3626	0000
-3628	0000
-362A	0000
-3630	0A00
-3632	0A00
-3634	0A00
-3636	0A00
-3638	0A00
-363A	0A00
-3650	1E00
-3652	1E00
-3654	1E00
-3656	1E00
-3658	1E00
-365A	1E00
-3660	1E00
-3662	1E00
-3664	1E00
-3666	1E00
-3668	1E00
-366A	1E00
-36A0	6400
-36A2	6400
-36A4	6400
-36A6	6400
-36A8	6400
-36AA	6400
-36C0	8C00
-36C2	8C00
-36C4	8C00
-36C6	8C00
-36C8	8C00
-36CA	8C00
-36E0	6400
-36E2	6400
-36E4	6400
-36E6	6400
-36E8	6400
-36EA	6400
-36F0	3200
-36F2	3200
-36F4	3200
-36F6	3200
-36F8	3200
-36FA	3200
-3700	3200
-3702	3200
-3704	3200
-3706	3200
-3708	3200
-370A	3200
-3720	3200
-3722	3200
-3724	3200
-3726	3200
-3728	3200
-372A	3200
-3730	3200
-3732	3200
-3734	3200
-3736	3200
-3738	3200
-373A	3200
-3790	3200
-3792	3200
-3794	3200
-3796	3200
-3798	3200
-379A	3200
-37A0	5000
-37A2	5000
-37A4	5000
-37A6	5000
-37A8	5000
-37AA	5000
-37B0	6400
-37B2	6400
-37B4	6400
-37B6	6400
-37B8	6400
-37BA	6400
-37C0	5000
-37C2	5000
-37C4	5000
-37C6	5000
-37C8	5000
-37CA	5000
-37D0	3200
-37D2	3200
-37D4	3200
-37D6	3200
-37D8	3200
-37DA	3200
-37E0	1E00
-37E2	1E00
-37E4	1E00
-37E6	1E00
-37E8	1E00
-37EA	1E00
-37F0	1E00
-37F2	1E00
-37F4	1E00
-37F6	1E00
-37F8	1E00
-37FA	1E00
-3800	1E00
-3802	1E00
-3804	1E00
-3806	1E00
-3808	1E00
-380A	1E00
-3810	1E00
-3812	1E00
-3814	1E00
-3816	1E00
-3818	1E00
-381A	1E00
-3820	1E00
-3822	1E00
-3824	1E00
-3826	1E00
-3828	1E00
-382A	1E00
-3870	3200
-3872	3200
-3874	3200
-3876	3200
-3878	3200
-387A	3200
-3880	3200
-3882	3200
-3884	3200
-3886	3200
-3888	3200
-388A	3200
-3890	3200
-3892	3200
-3894	3200
-3896	3200
-3898	3200
-389A	3200
-38A0	3200
-38A2	3200
-38A4	3200
-38A6	3200
-38A8	3200
-38AA	3200
-38B0	3200
-38B2	3200
-38B4	3200
-38B6	3200
-38B8	3200
-38BA	3200
-320A	FF03
-320C	0700
-320E	FF03
-3210	0700
-321E	0000
-31D4	00FF
-321A	0406
-3244	0101
-3246	0101
-3248	0010
-3266	0100
-3330	0108
-3334	0100
-3336	0000
-FCFC	2002
-BB8A	0100
-BB8C	0800
-BB8E	1000
-BB90	2000
-BB92	C800
-BB94	C800
-BB96	C800
-BB98	C800
-BB9A	C400
-BB9C	C400
-BB9E	C400
-BBA0	C400
-BBA2	C200
-BBA4	C200
-BBA6	C200
-BBA8	C200
-BBAA	BE00
-BBAC	BE00
-BBAE	BE00
-BBB0	BE00
-BBB2	BC00
-BBB4	BC00
-BBB6	BC00
-BBB8	BC00
-BBBA	2000
-BBBC	2000
-BBBE	2000
-BBC0	2000
-BBC2	1600
-BBC4	1600
-BBC6	1600
-BBC8	1600
-BBCA	0000
-BBCC	0000
-BBCE	0000
-BBD0	0000
-BBD2	0A00
-BBD4	0A00
-BBD6	0A00
-BBD8	0A00
-BBDA	1400
-BBDC	1400
-BBDE	1400
-BBE0	1400
-BBE2	2A00
-BBE4	2A00
-BBE6	2A00
-BBE8	2A00
-BBEA	2A00
-BBEC	2A00
-BBEE	2A00
-BBF0	2A00
-BBF2	0100
-BBF4	0100
-BBF6	0100
-BBF8	0100
-BBFA	0F00
-BBFC	0F00
-BBFE	0F00
-BC00	0F00
-BC02	0400
-BC04	0400
-BC06	0400
-BC08	0400
-BC0A	1900
-BC0C	1900
-BC0E	1900
-BC10	1900
-BC12	1400
-BC14	1400
-BC16	1400
-BC18	1400
-BC1A	3A00
-BC1C	3A00
-BC1E	3A00
-BC20	3A00
-BC22	0A00
-BC24	0A00
-BC26	0A00
-BC28	0A00
-BC2A	4B00
-BC2C	4B00
-BC2E	4B00
-BC30	4B00
-BC32	0200
-BC34	0600
-BC36	0C00
-BC38	0C00
-BC3A	2A00
-BC3C	2500
-BC3E	2000
-BC40	2000
-BC42	0000
-BC44	1000
-BC46	2300
-BC48	2300
-BC4A	3F00
-BC4C	3100
-BC4E	2100
-BC50	2100
-BC52	0A00
-BC54	1B00
-BC56	3000
-BC58	3000
-BC5A	1900
-BC5C	1500
-BC5E	1100
-BC60	1100
-BC62	0F00
-BC64	0F00
-BC66	0F00
-BC68	0F00
-BC6A	1900
-BC6C	1900
-BC6E	1900
-BC70	1900
-BC72	0A00
-BC74	0A00
-BC76	0A00
-BC78	0A00
-BC7A	0B00
-BC7C	0B00
-BC7E	0B00
-BC80	0B00
-BC82	0000
-BC84	0000
-BC86	0000
-BC88	0000
-BC8A	0800
-BC8C	0800
-BC8E	0800
-BC90	0800
-FCFC	4000
-FCFC	2000
-68D8	0100
-FCFC	2002
-BC92	0100
-FCFC	4000
-0E04	1C03
-0E10	0100
-0E12	00A0
-0E14	0C84
-0E16	002B
-0E18	0000
-0E1A	3000
-0E1C	0100
-0E1E	00A0
-0E20	0C84
-0E22	012B
-0E24	0100
-0E26	3000
-FCFC	4000
-0B30	01FF
-FCFC	2000
-3D44	0000
-3D88	FCFC
-3D8A	FEFF
-3D8C	FCFC
-3D8E	FEFF
-3D90	FCFC
-3D92	FEFF
-3D94	FCFC
-3D96	FEFF
-3FE0	0324
-3FE2	0080
-3FE4	0000
-3FE6	0000
-4238	0324
-423A	0080
-423C	0324
-423E	F886
-4490	0324
-4492	0080
-4494	0324
-4496	2887
-46E8	0324
-46EA	0080
-46EC	0324
-46EE	2887
-46F0	0324
-46F2	CE89
-4940	0324
-4942	0080
-4944	0324
-4946	EE89
-4B98	0324
-4B9A	0080
-4B9C	0324
-4B9E	708C
-4DF0	0324
-4DF2	0080
-4DF4	0324
-4DF6	888C
-5048	0324
-504A	0080
-504C	0324
-504E	2887
-5050	0324
-5052	BA8C
-FCFC	2003
-8000	FFFE
-8002	2400
-8004	FFFD
-8006	22C2
-8008	0006
-800A	22C4
-800C	1FFF
-800E	22EC
-8010	001F
-8012	2306
-8014	3FFF
-8016	2314
-8018	00FF
-801A	2354
-801C	0003
-801E	23F0
-8020	0100
-8022	68DE
-8024	0000
-8026	703C
-8028	0100
-802A	703E
-802C	0000
-802E	7046
-8030	027F
-8032	7048
-8034	002F
-8036	704A
-8038	0400
-803A	7058
-803C	0280
-803E	705A
-8040	0030
-8042	705C
-8044	0400
-8046	7806
-8048	0100
-804A	7808
-804C	0824
-804E	78C0
-8050	0101
-8052	795A
-8054	0010
-8056	7970
-8058	0010
-805A	7994
-805C	2020
-805E	7996
-8060	0001
-8062	799A
-8064	0000
-8066	7BDA
-8068	003C
-806A	7EE6
-806C	002C
-806E	7EF2
-8070	002C
-8072	7EFE
-8074	0064
-8076	7F0A
-8078	0058
-807A	7F0E
-807C	0058
-807E	82A2
-8080	0012
-8082	82BA
-8084	0036
-8086	8CCE
-8088	012C
-808A	8CD0
-808C	0096
-808E	8CD2
-8090	0096
-8092	8CD6
-8094	0096
-8096	8D0E
-8098	0000
-809A	9032
-809C	0000
-809E	903E
-80A0	0000
-80A2	B176
-80A4	0006
-80A6	B178
-80A8	0000
-80AA	B20C
-80AC	002E
-80AE	B21A
-80B0	0204
-80B2	B23C
-80B4	6060
-80B6	B242
-80B8	6060
-80BA	B266
-80BC	04C0
-80BE	B268
-80C0	0440
-80C2	B270
-80C4	0887
-80C6	B322
-80C8	0101
-80CA	B324
-80CC	0001
-80CE	B330
-80D0	2828
-80D2	B34A
-80D4	2828
-80D6	B360
-80D8	2828
-80DA	B378
-80DC	0001
-80DE	BF16
-80E0	AA0B
-80E2	BF30
-80E4	0000
-80E6	BF78
-80E8	3353
-80EA	C4D8
-80EC	0020
-80EE	C4E0
-80F0	0001
-80F2	C4E2
-80F4	0002
-80F6	C4F6
-80F8	0000
-80FA	C53C
-80FC	0001
-80FE	C53E
-8100	0000
-8102	C544
-8104	0500
-8106	C554
-8108	0D53
-810A	C556
-810C	0000
-810E	D1F6
-8110	003A
-8112	D20C
-8114	0809
-8116	D27A
-8118	0005
-811A	D314
-811C	0220
-811E	D326
-8120	2001
-8122	D3EC
-8124	1CB1
-8126	D3F0
-8128	1CB0
-812A	D410
-812C	0248
-812E	D412
-8130	04D2
-8132	D426
-8134	04D2
-8136	D428
-8138	0AEA
-813A	D43C
-813C	4001
-813E	D43E
-8140	4001
-8142	D49C
-8144	0021
-8146	D4A8
-8148	0003
-814A	D4AC
-814C	00E7
-814E	D4B0
-8150	0001
-8152	D4B4
-8154	0001
-8156	D4B8
-8158	0035
-815A	D4BC
-815C	0014
-815E	D4C0
-8160	0014
-8162	D4C4
-8164	0001
-8166	D4C8
-8168	0000
-816A	D4CC
-816C	0000
-816E	D4D0
-8170	0016
-8172	D4D2
-8174	0020
-8176	D4D6
-8178	0000
-817A	D4DA
-817C	0000
-817E	D4DE
-8180	0000
-8182	D4E2
-8184	0001
-8186	D4E6
-8188	0001
-818A	D4EA
-818C	0001
-818E	D4EC
-8190	00BE
-8192	D4EE
-8194	00BE
-8196	D4F8
-8198	01F0
-819A	D4FA
-819C	01F0
-819E	D554
-81A0	0000
-81A2	D556
-81A4	0000
-81A6	D560
-81A8	0000
-81AA	D562
-81AC	0000
-81AE	D5BC
-81B0	0000
-81B2	D5BE
-81B4	0000
-81B6	D5C8
-81B8	0000
-81BA	D5CA
-81BC	0000
-81BE	D624
-81C0	0000
-81C2	D62E
-81C4	0000
-81C6	D638
-81C8	0000
-81CA	D682
-81CC	04C0
-81CE	D684
-81D0	0440
-81D2	D6D4
-81D4	0000
-81D6	D704
-81D8	7802
-81DA	D718
-81DC	0200
-81DE	D856
-81E0	0705
-81E2	D896
-81E4	0000
-81E6	D8A2
-81E8	0001
-81EA	DC8C
-81EC	2B3F
-81EE	DC94
-81F0	0001
-81F2	DD70
-81F4	0000
-81F6	DE38
-81F8	0000
-81FA	E980
-81FC	0500
-81FE	EF80
-8200	0000
-8202	F014
-8204	0006
-8206	F09A
-8208	FF00
-820A	F0AA
-820C	FFFF
-820E	F0AC
-8210	FFFF
-8212	F288
-8214	0000
-8216	F2E0
-8218	0000
-821A	F2EA
-821C	0040
-821E	F370
-8220	0302
-8222	F372
-8224	0000
-8226	F3E4
-8228	0103
-822A	F3F4
-822C	08C8
-822E	F3F6
-8230	10D7
-8232	FFFE
-8234	2401
-8236	FFFD
-8238	195E
-823A	0001
-823C	1966
-823E	0000
-8240	2540
-8242	0002
-8244	25E0
-8246	0000
-8248	25E2
-824A	0000
-824C	2920
-824E	0001
-8250	29A8
-8252	0002
-8254	29BA
-8256	00FF
-8258	2A30
-825A	FF01
-825C	2A42
-825E	0001
-8260	2A44
-8262	04B0
-8264	2A46
-8266	0000
-8268	2A54
-826A	0000
-826C	2A56
-826E	0008
-8270	2BB2
-8272	0010
-8274	2D32
-8276	1000
-8278	3132
-827A	0001
-827C	31D0
-827E	0002
-8280	31F8
-8282	0001
-8284	31FA
-8286	04CD
-8288	3C42
-828A	0000
-828C	3C46
-828E	05EB
-8290	3C52
-8292	0640
-8294	4270
-8296	0000
-8298	427C
-829A	0020
-829C	4280
-829E	0010
-82A0	4290
-82A2	0001
-82A4	4292
-82A6	0000
-82A8	4362
-82AA	0001
-82AC	4364
-82AE	0000
-82B0	4366
-82B2	0000
-82B4	4370
-82B6	0000
-82B8	437E
-82BA	00A4
-82BC	4396
-82BE	000C
-82C0	4398
-82C2	000E
-82C4	43AA
-82C6	0000
-82C8	43AC
-82CA	0000
-82CC	43B4
-82CE	0000
-82D0	43B6
-82D2	0000
-82D4	43C6
-82D6	0A01
-82D8	44C6
-82DA	0000
-82DC	5A70
-82DE	0000
-82E0	FFFE
-82E2	2402
-82E4	FFFD
-82E6	849E
-82E8	0000
-82EA	84A0
-82EC	0000
-82EE	84A2
-82F0	0500
-82F2	84C4
-82F4	0000
-82F6	A570
-82F8	0000
-82FA	FFFE
-82FC	2400
-82FE	FFFD
-8300	0086
-8302	0200
-8304	0112
-8306	0A0A
-8308	0114
-830A	0103
-830C	0118
-830E	0400
-8310	011A
-8312	0100
-8314	011C
-8316	0001
-8318	0136
-831A	1800
-831C	013E
-831E	0000
-8320	020A
-8322	0000
-8324	021E
-8326	0000
-8328	0228
-832A	0001
-832C	0270
-832E	2B2B
-8330	0272
-8332	102B
-8334	0274
-8336	2B30
-8338	0304
-833A	0003
-833C	0306
-833E	00E6
-8340	031A
-8342	0003
-8344	031C
-8346	0028
-8348	031E
-834A	0002
-834C	0400
-834E	1010
-8350	0408
-8352	0100
-8354	040A
-8356	0100
-8358	040C
-835A	0000
-835C	0702
-835E	0000
-8360	0704
-8362	0000
-8364	0720
-8366	0001
-8368	0722
-836A	0008
-836C	0724
-836E	0000
-8370	0808
-8372	0102
-8374	0900
-8376	1100
-8378	0936
-837A	0000
-837C	0C40
-837E	0000
-8380	0E00
-8382	0300
-8384	0342
-8386	23F0
-8388	0000
-838A	FFFF
-838C	0008
-838E	2400
-8390	71D4
-8392	3F00
-8394	3D00
-8396	84F3
-8398	0040
-839A	FFFF
-839C	0010
-839E	2400
-83A0	7274
-83A2	0D00
-83A4	0C00
-83A6	36D2
-83A8	0040
-83AA	0000
-83AC	0000
-83AE	0000
-83B0	0000
-83B2	FFFF
-83B4	0008
-83B6	2400
-83B8	7314
-83BA	0000
-83BC	0000
-83BE	0000
-83C0	0000
-83C2	FFFF
-83C4	0008
-83C6	2400
-83C8	7A0E
-83CA	1E00
-83CC	0F00
-83CE	0F00
-83D0	0F00
-83D2	FFFF
-83D4	0008
-83D6	2400
-83D8	7A6E
-83DA	2800
-83DC	1900
-83DE	1900
-83E0	1900
-83E2	FFFF
-83E4	0008
-83E6	2400
-83E8	7A86
-83EA	2800
-83EC	1900
-83EE	1900
-83F0	1900
-83F2	FFFF
-83F4	0008
-83F6	2400
-83F8	8C9E
-83FA	5000
-83FC	3500
-83FE	3500
-8400	3500
-8402	FFFF
-8404	000A
-8406	2400
-8408	B21E
-840A	0000
-840C	0000
-840E	C000
-8410	0103
-8412	0000
-8414	FFFF
-8416	000C
-8418	2400
-841A	BEDC
-841C	C526
-841E	903E
-8420	C00F
-8422	0008
-8424	0C00
-8426	8000
-8428	FFFF
-842A	000E
-842C	2400
-842E	DADA
-8430	0001
-8432	0000
-8434	3000
-8436	8001
-8438	0000
-843A	0000
-843C	0000
-843E	FFFF
-8440	000C
-8442	2400
-8444	DB0C
-8446	0000
-8448	0080
-844A	0000
-844C	0000
-844E	0000
-8450	0000
-8452	FFFF
-8454	000C
-8456	2400
-8458	DB3C
-845A	12D2
-845C	12D2
-845E	12D2
-8460	0000
-8462	0000
-8464	0000
-8466	FFFF
-8468	000C
-846A	2400
-846C	DB6C
-846E	0000
-8470	0000
-8472	0000
-8474	0000
-8476	0000
-8478	0000
-847A	FFFF
-847C	000C
-847E	2400
-8480	DB9C
-8482	0000
-8484	0000
-8486	0000
-8488	0000
-848A	0000
-848C	0000
-848E	FFFF
-8490	000C
-8492	2400
-8494	DBCC
-8496	0000
-8498	0000
-849A	0000
-849C	0000
-849E	0000
-84A0	0000
-84A2	FFFF
-84A4	0012
-84A6	2401
-84A8	1C24
-84AA	0002
-84AC	0001
-84AE	FF03
-84B0	0010
-84B2	D70F
-84B4	0004
-84B6	0010
-84B8	D70F
-84BA	C20F
-84BC	FFFF
-84BE	0020
-84C0	2401
-84C2	1C4E
-84C4	0001
-84C6	FF03
-84C8	0010
-84CA	D70F
-84CC	0004
-84CE	0010
-84D0	D70F
-84D2	C20F
-84D4	0000
-84D6	0000
-84D8	0000
-84DA	0000
-84DC	0000
-84DE	0000
-84E0	0000
-84E2	0000
-84E4	FFFF
-84E6	0020
-84E8	2401
-84EA	1C76
-84EC	0001
-84EE	FF03
-84F0	0010
-84F2	D70F
-84F4	0004
-84F6	0010
-84F8	D70F
-84FA	C20F
-84FC	0000
-84FE	0000
-8500	0000
-8502	0000
-8504	0000
-8506	0000
-8508	0000
-850A	0000
-850C	FFFF
-850E	0010
-8510	2401
-8512	1C9E
-8514	0001
-8516	FF03
-8518	0010
-851A	D70F
-851C	0004
-851E	0010
-8520	D70F
-8522	C20F
-8524	FFFF
-8526	0010
-8528	2401
-852A	1CC6
-852C	0000
-852E	0000
-8530	0000
-8532	0000
-8534	0000
-8536	0000
-8538	0000
-853A	0000
-853C	FFFF
-853E	0020
-8540	2401
-8542	1CEE
-8544	0000
-8546	0000
-8548	0000
-854A	0000
-854C	0000
-854E	0000
-8550	0000
-8552	0000
-8554	0000
-8556	0000
-8558	0000
-855A	0000
-855C	0000
-855E	0000
-8560	0000
-8562	0000
-8564	FFFF
-8566	0020
-8568	2401
-856A	1D16
-856C	0000
-856E	0000
-8570	0000
-8572	0000
-8574	0000
-8576	0000
-8578	0000
-857A	0000
-857C	0000
-857E	0000
-8580	0000
-8582	0000
-8584	0000
-8586	0000
-8588	0000
-858A	0000
-858C	FFFF
-858E	0010
-8590	2401
-8592	1D3E
-8594	0000
-8596	0000
-8598	0000
-859A	0000
-859C	0000
-859E	0000
-85A0	0000
-85A2	0000
-85A4	FFFF
-85A6	0008
-85A8	2401
-85AA	1D72
-85AC	0000
-85AE	0000
-85B0	0000
-85B2	0000
-85B4	FFFF
-85B6	0008
-85B8	2401
-85BA	1D82
-85BC	0000
-85BE	0000
-85C0	0000
-85C2	0000
-85C4	FFFF
-85C6	0008
-85C8	2401
-85CA	1D92
-85CC	0000
-85CE	0000
-85D0	0000
-85D2	0000
-85D4	FFFF
-85D6	0008
-85D8	2401
-85DA	1DA2
-85DC	0000
-85DE	0000
-85E0	0000
-85E2	0000
-85E4	FFFF
-85E6	0008
-85E8	2401
-85EA	1DF2
-85EC	0000
-85EE	0000
-85F0	0000
-85F2	0000
-85F4	FFFF
-85F6	0008
-85F8	2401
-85FA	1E02
-85FC	0000
-85FE	0000
-8600	0000
-8602	0000
-8604	FFFF
-8606	0008
-8608	2401
-860A	1E12
-860C	0000
-860E	0000
-8610	0000
-8612	0000
-8614	FFFF
-8616	0008
-8618	2401
-861A	1E22
-861C	0000
-861E	0000
-8620	0000
-8622	0000
-8624	FFFF
-8626	0010
-8628	2402
-862A	A548
-862C	0000
-862E	0000
-8630	0000
-8632	0000
-8634	0000
-8636	0000
-8638	0000
-863A	0000
-863C	FFFF
-863E	0010
-8640	2402
-8642	A55C
-8644	0000
-8646	0000
-8648	0000
-864A	0000
-864C	0000
-864E	0000
-8650	0000
-8652	0000
-8654	FFFF
-8656	002C
-8658	2402
-865A	A574
-865C	0100
-865E	4000
-8660	8000
-8662	0001
-8664	0002
-8666	0002
-8668	0002
-866A	0002
-866C	0002
-866E	0002
-8670	0800
-8672	2100
-8674	2900
-8676	2E00
-8678	2E00
-867A	2E00
-867C	2E00
-867E	2E00
-8680	2E00
-8682	3000
-8684	A2FD
-8686	FEFE
-8688	FFFF
-868A	0008
-868C	2400
-868E	0260
-8690	0001
-8692	0000
-8694	0006
-8696	0700
-8698	FFFF
-869A	0008
-869C	2400
-869E	030C
-86A0	0000
-86A2	0300
-86A4	BF00
-86A6	0000
-86A8	FFFF
-86AA	0010
-86AC	2400
-86AE	0344
-86B0	0008
-86B2	0006
-86B4	1F18
-86B6	1F12
-86B8	0010
-86BA	000C
-86BC	1000
-86BE	1000
-86C0	FFFF
-86C2	0008
-86C4	2400
-86C6	0380
-86C8	0100
-86CA	0100
-86CC	0100
-86CE	0100
-86D0	FFFF
-86D2	0008
-86D4	2400
-86D6	0728
-86D8	0000
-86DA	0000
-86DC	0000
-86DE	0000
-86E0	FFFF
-86E2	000C
-86E4	2400
-86E6	0B02
-86E8	0101
-86EA	0001
-86EC	0101
-86EE	0101
-86F0	0101
-86F2	0100
-86F4	0000
-86F6	0000
-86F8	FFFE
-86FA	2400
-86FC	FFFD
-86FE	D4AC
-8700	01AE
-8702	FFFE
-8704	2401
-8706	FFFD
-8708	25E0
-870A	0001
-870C	25E2
-870E	00CD
-8710	31D0
-8712	0000
-8714	31FA
-8716	0400
-8718	FFFE
-871A	2400
-871C	FFFD
-871E	0B08
-8720	0001
-8722	0000
-8724	0000
-8726	0000
-8728	FFFE
-872A	2400
-872C	FFFD
-872E	703C
-8730	0101
-8732	703E
-8734	0001
-8736	7048
-8738	021F
-873A	704A
-873C	0A00
-873E	705A
-8740	0220
-8742	705C
-8744	0A01
-8746	7274
-8748	000B
-874A	7276
-874C	000B
-874E	795A
-8750	0020
-8752	7970
-8754	0020
-8756	7996
-8758	0101
-875A	7A0E
-875C	000F
-875E	7A6E
-8760	0019
-8762	7A86
-8764	0019
-8766	7BDA
-8768	004C
-876A	82A2
-876C	0014
-876E	82BA
-8770	0033
-8772	8C9E
-8774	0035
-8776	8CA2
-8778	0070
-877A	8CCE
-877C	0096
-877E	8CD2
-8780	00BE
-8782	B176
-8784	0206
-8786	B220
-8788	0301
-878A	B268
-878C	F380
-878E	C4E2
-8790	0000
-8792	C53C
-8794	0005
-8796	C554
-8798	1000
-879A	D326
-879C	1001
-879E	D3EC
-87A0	1CB0
-87A2	D4A8
-87A4	0001
-87A6	D4AC
-87A8	0001
-87AA	D4B0
-87AC	040E
-87AE	D4B8
-87B0	0014
-87B2	D4BC
-87B4	003F
-87B6	D4C4
-87B8	0000
-87BA	D4C8
-87BC	0001
-87BE	D4D0
-87C0	000A
-87C2	D4D2
-87C4	0000
-87C6	D4D6
-87C8	001A
-87CA	D4DE
-87CC	0001
-87CE	D4E2
-87D0	0000
-87D2	D4EC
-87D4	0000
-87D6	D4EE
-87D8	0000
-87DA	D4F8
-87DC	0000
-87DE	D4FA
-87E0	0000
-87E2	D554
-87E4	00C4
-87E6	D556
-87E8	00C4
-87EA	D560
-87EC	0352
-87EE	D562
-87F0	0352
-87F2	D684
-87F4	F380
-87F6	DB0C
-87F8	1F1F
-87FA	DB3C
-87FC	FDD2
-87FE	DB42
-8800	D212
-8802	DB44
-8804	D212
-8806	DB46
-8808	D212
-880A	DC8C
-880C	0B3F
-880E	DC94
-8810	0301
-8812	E980
-8814	049E
-8816	F014
-8818	0007
-881A	F3F4
-881C	00C8
-881E	F3F6
-8820	10D6
-8822	FFFE
-8824	2401
-8826	FFFD
-8828	1C4E
-882A	0180
-882C	1C50
-882E	0480
-8830	2540
-8832	0000
-8834	29A8
-8836	0001
-8838	29BA
-883A	0020
-883C	2A44
-883E	0739
-8840	2A56
-8842	0004
-8844	3132
-8846	0002
-8848	31D0
-884A	0000
-884C	31F8
-884E	0000
-8850	31FA
-8852	0000
-8854	437E
-8856	00E4
-8858	4396
-885A	000B
-885C	4398
-885E	000B
-8860	43C6
-8862	1401
-8864	FFFE
-8866	2402
-8868	FFFD
-886A	84C4
-886C	0001
-886E	A598
-8870	0032
-8872	A59A
-8874	0035
-8876	FFFE
-8878	2400
-887A	FFFD
-887C	0086
-887E	1400
-8880	0350
-8882	0008
-8884	0352
-8886	0008
-8888	0900
-888A	2222
-888C	0B02
-888E	0201
-8890	0B08
-8892	0001
-8894	0342
-8896	12B0
-8898	0000
-889A	FFFF
-889C	0008
-889E	2400
-88A0	7314
-88A2	2E00
-88A4	3000
-88A6	9EFD
-88A8	0040
-88AA	FFFF
-88AC	000A
-88AE	2400
-88B0	DADE
-88B2	0000
-88B4	A000
-88B6	0001
-88B8	0005
-88BA	4011
-88BC	FFFF
-88BE	0008
-88C0	2400
-88C2	DB10
-88C4	0040
-88C6	0020
-88C8	0040
-88CA	0060
-88CC	FFFF
-88CE	0010
-88D0	2401
-88D2	1C26
-88D4	8001
-88D6	8004
-88D8	2010
-88DA	2010
-88DC	0005
-88DE	00A0
-88E0	2810
-88E2	2810
-88E4	FFFF
-88E6	000A
-88E8	2401
-88EA	1C54
-88EC	0010
-88EE	0005
-88F0	00A0
-88F2	2810
-88F4	2810
-88F6	FFFF
-88F8	0010
-88FA	2401
-88FC	1C76
-88FE	8001
-8900	8004
-8902	2010
-8904	2010
-8906	0005
-8908	00A0
-890A	2810
-890C	2810
-890E	FFFF
-8910	0010
-8912	2401
-8914	1C9E
-8916	8001
-8918	8004
-891A	2010
-891C	2010
-891E	0005
-8920	00A0
-8922	2810
-8924	2810
-8926	FFFF
-8928	0010
-892A	2401
-892C	1CC6
-892E	8001
-8930	8004
-8932	2010
-8934	2010
-8936	0005
-8938	00A0
-893A	2810
-893C	2810
-893E	FFFF
-8940	0010
-8942	2401
-8944	1CEE
-8946	8001
-8948	8004
-894A	0010
-894C	0010
-894E	0005
-8950	00A0
-8952	2810
-8954	2810
-8956	FFFF
-8958	0010
-895A	2401
-895C	1D16
-895E	8001
-8960	8004
-8962	2010
-8964	2010
-8966	0005
-8968	00A0
-896A	2810
-896C	2810
-896E	FFFF
-8970	0010
-8972	2401
-8974	1D3E
-8976	8001
-8978	8004
-897A	2010
-897C	2010
-897E	0005
-8980	00A0
-8982	2810
-8984	2810
-8986	FFFF
-8988	001C
-898A	2402
-898C	A57A
-898E	A000
-8990	4001
-8992	8002
-8994	0005
-8996	000A
-8998	A00F
-899A	4011
-899C	0E00
-899E	2000
-89A0	2800
-89A2	1400
-89A4	2200
-89A6	2800
-89A8	2C00
-89AA	FFFF
-89AC	0008
-89AE	2400
-89B0	0344
-89B2	0000
-89B4	0000
-89B6	1F20
-89B8	1F18
-89BA	FFFF
-89BC	0008
-89BE	2400
-89C0	0380
-89C2	0200
-89C4	0200
-89C6	0200
-89C8	0200
-89CA	0000
-89CC	0000
-89CE	FFFE
-89D0	2400
-89D2	FFFD
-89D4	D4B0
-89D6	0492
-89D8	D4BC
-89DA	0037
-89DC	0346
-89DE	0300
-89E0	034A
-89E2	151F
-89E4	034E
-89E6	0900
-89E8	0000
-89EA	0000
-89EC	0000
-89EE	FFFE
-89F0	2400
-89F2	FFFD
-89F4	703C
-89F6	0101
-89F8	7048
-89FA	009F
-89FC	705A
-89FE	00A0
-8A00	7274
-8A02	B000
-8A04	7276
-8A06	0000
-8A08	7278
-8A0A	D212
-8A0C	7806
-8A0E	0101
-8A10	7808
-8A12	0C3F
-8A14	795A
-8A16	0020
-8A18	7970
-8A1A	0020
-8A1C	7A0E
-8A1E	000F
-8A20	7A6E
-8A22	0019
-8A24	7A86
-8A26	0019
-8A28	82A2
-8A2A	0014
-8A2C	82BA
-8A2E	0033
-8A30	8C9E
-8A32	0035
-8A34	8CA2
-8A36	0050
-8A38	8CCE
-8A3A	0096
-8A3C	8CD2
-8A3E	00BE
-8A40	B176
-8A42	0206
-8A44	B220
-8A46	0301
-8A48	B268
-8A4A	E380
-8A4C	C4D8
-8A4E	0010
-8A50	C4E2
-8A52	0000
-8A54	C53C
-8A56	0005
-8A58	C554
-8A5A	1000
-8A5C	D326
-8A5E	1001
-8A60	D3EC
-8A62	1CB0
-8A64	D49C
-8A66	0000
-8A68	D4A8
-8A6A	0000
-8A6C	D4AC
-8A6E	0001
-8A70	D4B8
-8A72	0014
-8A74	D4C4
-8A76	0000
-8A78	D4D0
-8A7A	000A
-8A7C	D4D2
-8A7E	0000
-8A80	D4DE
-8A82	0001
-8A84	D4EC
-8A86	0000
-8A88	D4EE
-8A8A	0000
-8A8C	D4F8
-8A8E	0000
-8A90	D4FA
-8A92	0000
-8A94	D684
-8A96	E380
-8A98	D704
-8A9A	7800
-8A9C	DADE
-8A9E	00A0
-8AA0	DAE0
-8AA2	0140
-8AA4	DB0C
-8AA6	000D
-8AA8	DB0E
-8AAA	000F
-8AAC	DB10
-8AAE	000D
-8AB0	DB3C
-8AB2	D236
-8AB4	DB3E
-8AB6	D236
-8AB8	DB40
-8ABA	D236
-8ABC	DC8C
-8ABE	0B3F
-8AC0	DC94
-8AC2	0301
-8AC4	E980
-8AC6	049E
-8AC8	F3F4
-8ACA	00C8
-8ACC	F3F6
-8ACE	10D6
-8AD0	FFFE
-8AD2	2401
-8AD4	FFFD
-8AD6	195E
-8AD8	0101
-8ADA	1966
-8ADC	0002
-8ADE	2540
-8AE0	0000
-8AE2	29A8
-8AE4	0001
-8AE6	29BA
-8AE8	0020
-8AEA	2A44
-8AEC	04AC
-8AEE	2A56
-8AF0	0004
-8AF2	3132
-8AF4	0002
-8AF6	31D0
-8AF8	0000
-8AFA	31F8
-8AFC	0000
-8AFE	31FA
-8B00	0000
-8B02	4396
-8B04	000D
-8B06	5A70
-8B08	0001
-8B0A	FFFE
-8B0C	2402
-8B0E	FFFD
-8B10	A598
-8B12	0032
-8B14	A59A
-8B16	0035
-8B18	FFFE
-8B1A	2400
-8B1C	FFFD
-8B1E	0086
-8B20	0280
-8B22	021E
-8B24	0006
-8B26	034E
-8B28	0900
-8B2A	0350
-8B2C	0008
-8B2E	0352
-8B30	0008
-8B32	0722
-8B34	0020
-8B36	0900
-8B38	2222
-8B3A	0B02
-8B3C	0201
-8B3E	0B08
-8B40	0001
-8B42	0342
-8B44	2560
-8B46	0000
-8B48	FFFF
-8B4A	0010
-8B4C	2401
-8B4E	1C26
-8B50	8001
-8B52	F004
-8B54	2010
-8B56	5610
-8B58	0005
-8B5A	00A0
-8B5C	B610
-8B5E	7011
-8B60	FFFF
-8B62	0018
-8B64	2401
-8B66	1C4E
-8B68	8001
-8B6A	F004
-8B6C	2810
-8B6E	5110
-8B70	0005
-8B72	F009
-8B74	9710
-8B76	DA10
-8B78	000A
-8B7A	00A0
-8B7C	DA10
-8B7E	7011
-8B80	FFFF
-8B82	0018
-8B84	2401
-8B86	1C76
-8B88	8001
-8B8A	F004
-8B8C	2810
-8B8E	6610
-8B90	0005
-8B92	F009
-8B94	7210
-8B96	DD10
-8B98	000A
-8B9A	00A0
-8B9C	DD10
-8B9E	7011
-8BA0	FFFF
-8BA2	0010
-8BA4	2401
-8BA6	1C9E
-8BA8	8001
-8BAA	F004
-8BAC	2010
-8BAE	5610
-8BB0	0005
-8BB2	00A0
-8BB4	C410
-8BB6	7011
-8BB8	FFFF
-8BBA	0010
-8BBC	2401
-8BBE	1CC6
-8BC0	8001
-8BC2	F004
-8BC4	2010
-8BC6	5610
-8BC8	0005
-8BCA	00A0
-8BCC	B610
-8BCE	7011
-8BD0	FFFF
-8BD2	0018
-8BD4	2401
-8BD6	1CEE
-8BD8	8001
-8BDA	F004
-8BDC	2810
-8BDE	5110
-8BE0	0005
-8BE2	F009
-8BE4	9710
-8BE6	DA10
-8BE8	000A
-8BEA	00A0
-8BEC	DA10
-8BEE	7011
-8BF0	FFFF
-8BF2	0018
-8BF4	2401
-8BF6	1D16
-8BF8	8001
-8BFA	F004
-8BFC	2810
-8BFE	6610
-8C00	0005
-8C02	F009
-8C04	7210
-8C06	DD10
-8C08	000A
-8C0A	00A0
-8C0C	DD10
-8C0E	7011
-8C10	FFFF
-8C12	0010
-8C14	2401
-8C16	1D3E
-8C18	8001
-8C1A	F004
-8C1C	2010
-8C1E	5610
-8C20	0005
-8C22	00A0
-8C24	C410
-8C26	7011
-8C28	FFFF
-8C2A	001C
-8C2C	2402
-8C2E	A57A
-8C30	A000
-8C32	4001
-8C34	8002
-8C36	0005
-8C38	000A
-8C3A	A00F
-8C3C	4011
-8C3E	0E00
-8C40	2000
-8C42	2800
-8C44	1400
-8C46	2200
-8C48	2800
-8C4A	2C00
-8C4C	FFFF
-8C4E	0008
-8C50	2400
-8C52	0344
-8C54	0000
-8C56	0003
-8C58	1F20
-8C5A	1F15
-8C5C	FFFF
-8C5E	0008
-8C60	2400
-8C62	0380
-8C64	0200
-8C66	0200
-8C68	0200
-8C6A	0200
-8C6C	0000
-8C6E	0000
-8C70	FFFE
-8C72	2400
-8C74	FFFD
-8C76	0346
-8C78	0780
-8C7A	034A
-8C7C	109F
-8C7E	034E
-8C80	0900
-8C82	0000
-8C84	0000
-8C86	0000
-8C88	FFFE
-8C8A	2401
-8C8C	FFFD
-8C8E	25E0
-8C90	0001
-8C92	25E2
-8C94	00CD
-8C96	31D0
-8C98	0000
-8C9A	31FA
-8C9C	0400
-8C9E	FFFE
-8CA0	2400
-8CA2	FFFD
-8CA4	0346
-8CA6	0780
-8CA8	034A
-8CAA	109F
-8CAC	034E
-8CAE	0900
-8CB0	0B08
-8CB2	0001
-8CB4	0000
-8CB6	0000
-8CB8	0000
-8CBA	FFFE
-8CBC	2400
-8CBE	FFFD
-8CC0	D49C
-8CC2	0022
-8CC4	D4A8
-8CC6	0000
-8CC8	D4B0
-8CCA	0458
-8CCC	D4BC
-8CCE	003A
-8CD0	D4E2
-8CD2	0032
-8CD4	D556
-8CD6	00F6
-8CD8	D562
-8CDA	0384
-8CDC	FFFE
-8CDE	2401
-8CE0	FFFD
-8CE2	1C2C
-8CE4	1000
-8CE6	1C32
-8CE8	1051
-8CEA	1C34
-8CEC	1035
-8CEE	1C5A
-8CF0	1072
-8CF2	1C5C
-8CF4	1072
-8CF6	1C7C
-8CF8	1000
-8CFA	1C82
-8CFC	1066
-8CFE	1C84
-8D00	1066
-8D02	1CAA
-8D04	1051
-8D06	1CAC
-8D08	1035
-8D0A	1CCC
-8D0C	1000
-8D0E	1CD2
-8D10	1051
-8D12	1CD4
-8D14	1035
-8D16	1CFA
-8D18	1072
-8D1A	1CFC
-8D1C	1072
-8D1E	1D1C
-8D20	1000
-8D22	1D22
-8D24	1066
-8D26	1D24
-8D28	1066
-8D2A	1D4A
-8D2C	1051
-8D2E	1D4C
-8D30	1035
-8D32	FFFE
-8D34	2400
-8D36	FFFD
-8D38	0E00
-8D3A	0302
-8D3C	0000
-8D3E	0000
-8D40	0000
-FCFC	4000
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/tele_mode_0716.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/tele_mode_0716.xlsx
deleted file mode 100755
index 6aec7caf..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/tele_mode_0716.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/tele_mode_0723.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/tele_mode_0723.xlsx
deleted file mode 100755
index 25fca056..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/tele_mode_0723.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/tele_mode_1224.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/tele_mode_1224.xlsx
deleted file mode 100755
index 4356fac5..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/setting_file/tele_mode_1224.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1tele_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1tele_Sensor_setting.h
deleted file mode 100755
index eace7b70..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1tele_Sensor_setting.h
+++ /dev/null
@@ -1,23896 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 zhuquec1tele_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _ZHUQUEC1TELEMIPI_SENSOR_SETTING_H
-#define _ZHUQUEC1TELEMIPI_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static u16 zhuquec1tele_sensor_init_pre_setting1[] = {
-	0xFCFC, 0x4000,
-	0x0000, 0x000D,
-	0x0000, 0x38E5,
-	0x6018, 0x0001,
-};
-
-static u16 zhuquec1tele_sensor_init_pre_setting2[] = {
-	0x7002, 0x0408,
-	0x6014, 0x0001,
-	0xFCFC, 0x2002,
-	0x1E92, 0x8000,
-	0x1E84, 0x282B,
-	0x1E86, 0x0320,
-	0xFCFC, 0x4000,
-	0x7002, 0x0008,
-};
-
-static u16 zhuquec1tele_sensor_init_setting[] = {
-	0xFCFC, 0x2000,
-	0xDCF0, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C60, 0x0000,
-	0xFCFC, 0x2002,
-	0xA614, 0x8280,
-	0xA616, 0x0100,
-	0xA618, 0x1753,
-	0xA61A, 0x02FC,
-	0xA61C, 0xE702,
-	0xA61E, 0x83EA,
-	0xA620, 0xB7E7,
-	0xA622, 0x0124,
-	0xA624, 0x9387,
-	0xA626, 0x0787,
-	0xA628, 0x83A4,
-	0xA62A, 0x870D,
-	0xA62C, 0x03A4,
-	0xA62E, 0xC70D,
-	0xA630, 0x0146,
-	0xA632, 0xA685,
-	0xA634, 0x2285,
-	0xA636, 0x9740,
-	0xA638, 0x01FC,
-	0xA63A, 0xE780,
-	0xA63C, 0xE040,
-	0xA63E, 0x97B0,
-	0xA640, 0xFEFB,
-	0xA642, 0xE780,
-	0xA644, 0x60DC,
-	0xA646, 0x0546,
-	0xA648, 0xA685,
-	0xA64A, 0x2285,
-	0xA64C, 0x9740,
-	0xA64E, 0x01FC,
-	0xA650, 0xE780,
-	0xA652, 0x803F,
-	0xA654, 0x37A7,
-	0xA656, 0x0224,
-	0xA658, 0x9307,
-	0xA65A, 0x8754,
-	0xA65C, 0x03C6,
-	0xA65E, 0xC702,
-	0xA660, 0x8546,
-	0xA662, 0x6301,
-	0xA664, 0xD602,
-	0xA666, 0x83C6,
-	0xA668, 0x0700,
-	0xA66A, 0x0947,
-	0xA66C, 0x6384,
-	0xA66E, 0xE608,
-	0xA670, 0xB7C7,
-	0xA672, 0x0224,
-	0xA674, 0x83A7,
-	0xA676, 0x07B7,
-	0xA678, 0x0545,
-	0xA67A, 0x8297,
-	0xA67C, 0x1753,
-	0xA67E, 0x02FC,
-	0xA680, 0x6700,
-	0xA682, 0x83E6,
-	0xA684, 0x03D5,
-	0xA686, 0x4705,
-	0xA688, 0x05C9,
-	0xA68A, 0x83D8,
-	0xA68C, 0x2705,
-	0xA68E, 0xB7E6,
-	0xA690, 0x0124,
-	0xA692, 0x83D5,
-	0xA694, 0x665F,
-	0xA696, 0x1307,
-	0xA698, 0x8754,
-	0xA69A, 0x8146,
-	0xA69C, 0x2548,
-	0xA69E, 0x0356,
-	0xA6A0, 0xE702,
-	0xA6A2, 0x0907,
-	0xA6A4, 0x63E0,
-	0xA6A6, 0xC50E,
-	0xA6A8, 0x8506,
-	0xA6AA, 0xE39A,
-	0xA6AC, 0x06FF,
-	0xA6AE, 0x3707,
-	0xA6B0, 0x0040,
-	0xA6B2, 0x3A95,
-	0xA6B4, 0x2310,
-	0xA6B6, 0x1501,
-	0xA6B8, 0x03D5,
-	0xA6BA, 0x6705,
-	0xA6BC, 0x4DD5,
-	0xA6BE, 0x83D8,
-	0xA6C0, 0x2705,
-	0xA6C2, 0x37E7,
-	0xA6C4, 0x0124,
-	0xA6C6, 0x8355,
-	0xA6C8, 0x675F,
-	0xA6CA, 0xBE86,
-	0xA6CC, 0x0147,
-	0xA6CE, 0x2548,
-	0xA6D0, 0x03D6,
-	0xA6D2, 0xE602,
-	0xA6D4, 0x8906,
-	0xA6D6, 0x63EE,
-	0xA6D8, 0xC50A,
-	0xA6DA, 0x0507,
-	0xA6DC, 0xE31A,
-	0xA6DE, 0x07FF,
-	0xA6E0, 0x3707,
-	0xA6E2, 0x0040,
-	0xA6E4, 0x3A95,
-	0xA6E6, 0x2310,
-	0xA6E8, 0x1501,
-	0xA6EA, 0x83C6,
-	0xA6EC, 0x0700,
-	0xA6EE, 0x0947,
-	0xA6F0, 0xE390,
-	0xA6F2, 0xE6F8,
-	0xA6F4, 0x03D5,
-	0xA6F6, 0x8702,
-	0xA6F8, 0x1DC5,
-	0xA6FA, 0x83D8,
-	0xA6FC, 0x6702,
-	0xA6FE, 0x37F7,
-	0xA700, 0x0124,
-	0xA702, 0x8355,
-	0xA704, 0xA781,
-	0xA706, 0xBE86,
-	0xA708, 0x0147,
-	0xA70A, 0x2548,
-	0xA70C, 0x03D6,
-	0xA70E, 0x2600,
-	0xA710, 0x8906,
-	0xA712, 0x63E3,
-	0xA714, 0xC506,
-	0xA716, 0x0507,
-	0xA718, 0xE31A,
-	0xA71A, 0x07FF,
-	0xA71C, 0x3707,
-	0xA71E, 0x0040,
-	0xA720, 0x3A95,
-	0xA722, 0x2310,
-	0xA724, 0x1501,
-	0xA726, 0x03D5,
-	0xA728, 0xA702,
-	0xA72A, 0x39D1,
-	0xA72C, 0x83D8,
-	0xA72E, 0x6702,
-	0xA730, 0x37F7,
-	0xA732, 0x0124,
-	0xA734, 0x8355,
-	0xA736, 0xA781,
-	0xA738, 0xBE86,
-	0xA73A, 0x0147,
-	0xA73C, 0x2548,
-	0xA73E, 0x03D6,
-	0xA740, 0x2600,
-	0xA742, 0x8906,
-	0xA744, 0x63E4,
-	0xA746, 0xC502,
-	0xA748, 0x0507,
-	0xA74A, 0xE31A,
-	0xA74C, 0x07FF,
-	0xA74E, 0xB707,
-	0xA750, 0x0040,
-	0xA752, 0x3E95,
-	0xA754, 0xB7C7,
-	0xA756, 0x0224,
-	0xA758, 0x83A7,
-	0xA75A, 0x07B7,
-	0xA75C, 0x2310,
-	0xA75E, 0x1501,
-	0xA760, 0x0545,
-	0xA762, 0x8297,
-	0xA764, 0x1753,
-	0xA766, 0x02FC,
-	0xA768, 0x6700,
-	0xA76A, 0x03D8,
-	0xA76C, 0x2107,
-	0xA76E, 0x0607,
-	0xA770, 0xBA97,
-	0xA772, 0x83D8,
-	0xA774, 0x4700,
-	0xA776, 0xE1BF,
-	0xA778, 0x2107,
-	0xA77A, 0x0607,
-	0xA77C, 0x3E97,
-	0xA77E, 0x8358,
-	0xA780, 0x4700,
-	0xA782, 0x69BF,
-	0xA784, 0x1387,
-	0xA786, 0x0602,
-	0xA788, 0x0607,
-	0xA78A, 0x3E97,
-	0xA78C, 0x8358,
-	0xA78E, 0x0700,
-	0xA790, 0x39BF,
-	0xA792, 0x1307,
-	0xA794, 0x0702,
-	0xA796, 0x0607,
-	0xA798, 0x3E97,
-	0xA79A, 0x8358,
-	0xA79C, 0x0700,
-	0xA79E, 0x89B7,
-	0xA7A0, 0x1753,
-	0xA7A2, 0x02FC,
-	0xA7A4, 0xE702,
-	0xA7A6, 0x83CF,
-	0xA7A8, 0x3284,
-	0xA7AA, 0xB7E7,
-	0xA7AC, 0x0124,
-	0xA7AE, 0x032B,
-	0xA7B0, 0x4600,
-	0xA7B2, 0x832A,
-	0xA7B4, 0x4609,
-	0xA7B6, 0x032A,
-	0xA7B8, 0xC604,
-	0xA7BA, 0x0348,
-	0xA7BC, 0x8600,
-	0xA7BE, 0x9387,
-	0xA7C0, 0x0787,
-	0xA7C2, 0x0346,
-	0xA7C4, 0x8609,
-	0xA7C6, 0x0347,
-	0xA7C8, 0x0405,
-	0xA7CA, 0x83AB,
-	0xA7CC, 0x070E,
-	0xA7CE, 0x03AC,
-	0xA7D0, 0x470E,
-	0xA7D2, 0x3318,
-	0xA7D4, 0x0B01,
-	0xA7D6, 0x3317,
-	0xA7D8, 0xEA00,
-	0xA7DA, 0x3396,
-	0xA7DC, 0xCA00,
-	0xA7DE, 0x2322,
-	0xA7E0, 0x0401,
-	0xA7E2, 0x78C4,
-	0xA7E4, 0xAA84,
-	0xA7E6, 0x2E89,
-	0xA7E8, 0x232A,
-	0xA7EA, 0xC408,
-	0xA7EC, 0xDE85,
-	0xA7EE, 0x6285,
-	0xA7F0, 0x0146,
-	0xA7F2, 0xB689,
-	0xA7F4, 0x9740,
-	0xA7F6, 0x01FC,
-	0xA7F8, 0xE780,
-	0xA7FA, 0x0025,
-	0xA7FC, 0xCE86,
-	0xA7FE, 0x2286,
-	0xA800, 0xCA85,
-	0xA802, 0x2685,
-	0xA804, 0x97B0,
-	0xA806, 0xFDFB,
-	0xA808, 0xE780,
-	0xA80A, 0x00B0,
-	0xA80C, 0x6285,
-	0xA80E, 0x0546,
-	0xA810, 0xDE85,
-	0xA812, 0x9740,
-	0xA814, 0x01FC,
-	0xA816, 0xE780,
-	0xA818, 0x2023,
-	0xA81A, 0xB7C7,
-	0xA81C, 0x0224,
-	0xA81E, 0x83A7,
-	0xA820, 0x07B7,
-	0xA822, 0x2322,
-	0xA824, 0x6401,
-	0xA826, 0x232A,
-	0xA828, 0x5409,
-	0xA82A, 0x2326,
-	0xA82C, 0x4405,
-	0xA82E, 0x0145,
-	0xA830, 0x8297,
-	0xA832, 0x1753,
-	0xA834, 0x02FC,
-	0xA836, 0x6700,
-	0xA838, 0xE3C9,
-	0xA83A, 0x0100,
-	0xA83C, 0x1753,
-	0xA83E, 0x02FC,
-	0xA840, 0xE702,
-	0xA842, 0x43C8,
-	0xA844, 0x2A84,
-	0xA846, 0xEFE0,
-	0xA848, 0xEFA9,
-	0xA84A, 0xA147,
-	0xA84C, 0x6306,
-	0xA84E, 0xF400,
-	0xA850, 0x1753,
-	0xA852, 0x02FC,
-	0xA854, 0x6700,
-	0xA856, 0x43C9,
-	0xA858, 0x9770,
-	0xA85A, 0xFFFB,
-	0xA85C, 0xE780,
-	0xA85E, 0x000C,
-	0xA860, 0x39C5,
-	0xA862, 0xB737,
-	0xA864, 0x0124,
-	0xA866, 0x83C7,
-	0xA868, 0x271A,
-	0xA86A, 0xFDD3,
-	0xA86C, 0x3784,
-	0xA86E, 0x0040,
-	0xA870, 0x8355,
-	0xA872, 0xE4F3,
-	0xA874, 0x0D45,
-	0xA876, 0x93E5,
-	0xA878, 0x0524,
-	0xA87A, 0x97D0,
-	0xA87C, 0xFFFB,
-	0xA87E, 0xE780,
-	0xA880, 0xA00A,
-	0xA882, 0x8355,
-	0xA884, 0x24F7,
-	0xA886, 0xB7A7,
-	0xA888, 0x0124,
-	0xA88A, 0x9387,
-	0xA88C, 0x0753,
-	0xA88E, 0x03D7,
-	0xA890, 0x47B6,
-	0xA892, 0xC205,
-	0xA894, 0xC181,
-	0xA896, 0x1377,
-	0xA898, 0xF7DB,
-	0xA89A, 0x93F5,
-	0xA89C, 0xF5DB,
-	0xA89E, 0x4145,
-	0xA8A0, 0x2392,
-	0xA8A2, 0xE7B6,
-	0xA8A4, 0x97D0,
-	0xA8A6, 0xFFFB,
-	0xA8A8, 0xE780,
-	0xA8AA, 0x0008,
-	0xA8AC, 0x55B7,
-	0xA8AE, 0x9770,
-	0xA8B0, 0xFFFB,
-	0xA8B2, 0xE780,
-	0xA8B4, 0xA003,
-	0xA8B6, 0x55D5,
-	0xA8B8, 0x9770,
-	0xA8BA, 0xFFFB,
-	0xA8BC, 0xE780,
-	0xA8BE, 0x807D,
-	0xA8C0, 0x19C9,
-	0xA8C2, 0xB797,
-	0xA8C4, 0x0124,
-	0xA8C6, 0x9387,
-	0xA8C8, 0x07D7,
-	0xA8CA, 0x03C7,
-	0xA8CC, 0x8703,
-	0xA8CE, 0x83C7,
-	0xA8D0, 0x2706,
-	0xA8D2, 0x6306,
-	0xA8D4, 0xF706,
-	0xA8D6, 0x9770,
-	0xA8D8, 0xFFFB,
-	0xA8DA, 0xE780,
-	0xA8DC, 0xA07B,
-	0xA8DE, 0x51D1,
-	0xA8E0, 0xB797,
-	0xA8E2, 0x0124,
-	0xA8E4, 0x9387,
-	0xA8E6, 0x07D7,
-	0xA8E8, 0x03C7,
-	0xA8EA, 0xC701,
-	0xA8EC, 0x83C7,
-	0xA8EE, 0x2706,
-	0xA8F0, 0xE319,
-	0xA8F2, 0xF7F6,
-	0xA8F4, 0xB727,
-	0xA8F6, 0x0224,
-	0xA8F8, 0x0564,
-	0xA8FA, 0x9387,
-	0xA8FC, 0x076B,
-	0xA8FE, 0xA297,
-	0xA900, 0x03C7,
-	0xA902, 0xF780,
-	0xA904, 0x8547,
-	0xA906, 0x6317,
-	0xA908, 0xF700,
-	0xA90A, 0xB737,
-	0xA90C, 0x0124,
-	0xA90E, 0x83C7,
-	0xA910, 0x57A5,
-	0xA912, 0xB1C3,
-	0xA914, 0xB787,
-	0xA916, 0x0040,
-	0xA918, 0x83D5,
-	0xA91A, 0xE7F3,
-	0xA91C, 0x0D45,
-	0xA91E, 0x93E5,
-	0xA920, 0x0501,
-	0xA922, 0x97D0,
-	0xA924, 0xFFFB,
-	0xA926, 0xE780,
-	0xA928, 0x2000,
-	0xA92A, 0xB7A7,
-	0xA92C, 0x0124,
-	0xA92E, 0x9387,
-	0xA930, 0x0753,
-	0xA932, 0x03D7,
-	0xA934, 0x47B6,
-	0xA936, 0x3D9B,
-	0xA938, 0x2392,
-	0xA93A, 0xE7B6,
-	0xA93C, 0x1DB7,
-	0xA93E, 0xB727,
-	0xA940, 0x0224,
-	0xA942, 0x0564,
-	0xA944, 0x9387,
-	0xA946, 0x076B,
-	0xA948, 0xA297,
-	0xA94A, 0x03C7,
-	0xA94C, 0xF780,
-	0xA94E, 0x9147,
-	0xA950, 0xE30D,
-	0xA952, 0xF7FA,
-	0xA954, 0xC1B7,
-	0xA956, 0xB787,
-	0xA958, 0x0040,
-	0xA95A, 0x83D5,
-	0xA95C, 0xE7F3,
-	0xA95E, 0x0D45,
-	0xA960, 0x93E5,
-	0xA962, 0x0504,
-	0xA964, 0x97D0,
-	0xA966, 0xFFFB,
-	0xA968, 0xE780,
-	0xA96A, 0x00FC,
-	0xA96C, 0xB797,
-	0xA96E, 0x0124,
-	0xA970, 0x9387,
-	0xA972, 0x0753,
-	0xA974, 0xA297,
-	0xA976, 0x03D7,
-	0xA978, 0x47B6,
-	0xA97A, 0x1377,
-	0xA97C, 0xF7FB,
-	0xA97E, 0x2392,
-	0xA980, 0xE7B6,
-	0xA982, 0xC5B5,
-	0xA984, 0x3571,
-	0xA986, 0x22CF,
-	0xA988, 0x26CD,
-	0xA98A, 0x7324,
-	0xA98C, 0x2034,
-	0xA98E, 0xF324,
-	0xA990, 0x1034,
-	0xA992, 0x7360,
-	0xA994, 0x0430,
-	0xA996, 0x06CB,
-	0xA998, 0x16C9,
-	0xA99A, 0x1AC7,
-	0xA99C, 0x1EC5,
-	0xA99E, 0x2AC3,
-	0xA9A0, 0x2EC1,
-	0xA9A2, 0xB2DE,
-	0xA9A4, 0xB6DC,
-	0xA9A6, 0xBADA,
-	0xA9A8, 0xBED8,
-	0xA9AA, 0xC2D6,
-	0xA9AC, 0xC6D4,
-	0xA9AE, 0xF2D2,
-	0xA9B0, 0xF6D0,
-	0xA9B2, 0xFACE,
-	0xA9B4, 0xFECC,
-	0xA9B6, 0x82E2,
-	0xA9B8, 0x86E0,
-	0xA9BA, 0x0AFE,
-	0xA9BC, 0x0EFC,
-	0xA9BE, 0x12FA,
-	0xA9C0, 0x16F8,
-	0xA9C2, 0x1AF6,
-	0xA9C4, 0x1EF4,
-	0xA9C6, 0x2AF2,
-	0xA9C8, 0x2EF0,
-	0xA9CA, 0x32EE,
-	0xA9CC, 0x36EC,
-	0xA9CE, 0x3AEA,
-	0xA9D0, 0x3EE8,
-	0xA9D2, 0x42E6,
-	0xA9D4, 0x46E4,
-	0xA9D6, 0x72E2,
-	0xA9D8, 0x76E0,
-	0xA9DA, 0x272E,
-	0xA9DC, 0xE1FF,
-	0xA9DE, 0x272C,
-	0xA9E0, 0xF1FF,
-	0xA9E2, 0x9770,
-	0xA9E4, 0xFFFB,
-	0xA9E6, 0xE780,
-	0xA9E8, 0x60F3,
-	0xA9EA, 0x19C5,
-	0xA9EC, 0x9770,
-	0xA9EE, 0xFFFB,
-	0xA9F0, 0xE780,
-	0xA9F2, 0xC0EF,
-	0xA9F4, 0x631C,
-	0xA9F6, 0x0512,
-	0xA9F8, 0x9305,
-	0xA9FA, 0x0024,
-	0xA9FC, 0x4145,
-	0xA9FE, 0x97D0,
-	0xAA00, 0xFFFB,
-	0xAA02, 0xE780,
-	0xAA04, 0x60F9,
-	0xAA06, 0x8145,
-	0xAA08, 0x9377,
-	0xAA0A, 0x1500,
-	0xAA0C, 0x85C7,
-	0xAA0E, 0x37D7,
-	0xAA10, 0x0124,
-	0xAA12, 0xB7A7,
-	0xAA14, 0x0124,
-	0xAA16, 0x1307,
-	0xAA18, 0x07C4,
-	0xAA1A, 0x9387,
-	0xAA1C, 0x0753,
-	0xAA1E, 0x0356,
-	0xAA20, 0x4707,
-	0xAA22, 0x83D6,
-	0xAA24, 0xA7B6,
-	0xAA26, 0x0506,
-	0xAA28, 0x93E6,
-	0xAA2A, 0x1600,
-	0xAA2C, 0x231A,
-	0xAA2E, 0xC706,
-	0xAA30, 0x2395,
-	0xAA32, 0xD7B6,
-	0xAA34, 0x9377,
-	0xAA36, 0x2500,
-	0xAA38, 0x85C7,
-	0xAA3A, 0x37D7,
-	0xAA3C, 0x0124,
-	0xAA3E, 0xB7A7,
-	0xAA40, 0x0124,
-	0xAA42, 0x1307,
-	0xAA44, 0x07C4,
-	0xAA46, 0x9387,
-	0xAA48, 0x0753,
-	0xAA4A, 0x0356,
-	0xAA4C, 0xC70C,
-	0xAA4E, 0x83D6,
-	0xAA50, 0xA7B6,
-	0xAA52, 0x0506,
-	0xAA54, 0x93E6,
-	0xAA56, 0x2600,
-	0xAA58, 0x2316,
-	0xAA5A, 0xC70C,
-	0xAA5C, 0x2395,
-	0xAA5E, 0xD7B6,
-	0xAA60, 0x9377,
-	0xAA62, 0x0520,
-	0xAA64, 0x1375,
-	0xAA66, 0x0504,
-	0xAA68, 0xC5C3,
-	0xAA6A, 0xB7D7,
-	0xAA6C, 0x0124,
-	0xAA6E, 0x9387,
-	0xAA70, 0x07C4,
-	0xAA72, 0x03D7,
-	0xAA74, 0x6708,
-	0xAA76, 0x0507,
-	0xAA78, 0x2393,
-	0xAA7A, 0xE708,
-	0xAA7C, 0xD1C5,
-	0xAA7E, 0x37A7,
-	0xAA80, 0x0124,
-	0xAA82, 0x1307,
-	0xAA84, 0x0753,
-	0xAA86, 0x8356,
-	0xAA88, 0xA7B6,
-	0xAA8A, 0x93E6,
-	0xAA8C, 0x0620,
-	0xAA8E, 0x2315,
-	0xAA90, 0xD7B6,
-	0xAA92, 0x11C9,
-	0xAA94, 0x03D6,
-	0xAA96, 0xA708,
-	0xAA98, 0x0506,
-	0xAA9A, 0x2395,
-	0xAA9C, 0xC708,
-	0xAA9E, 0x93E6,
-	0xAAA0, 0x0604,
-	0xAAA2, 0x2315,
-	0xAAA4, 0xD7B6,
-	0xAAA6, 0xDA40,
-	0xAAA8, 0xCA42,
-	0xAAAA, 0x3A43,
-	0xAAAC, 0xAA43,
-	0xAAAE, 0x1A45,
-	0xAAB0, 0x8A45,
-	0xAAB2, 0x7656,
-	0xAAB4, 0xE656,
-	0xAAB6, 0x5657,
-	0xAAB8, 0xC657,
-	0xAABA, 0x3658,
-	0xAABC, 0xA658,
-	0xAABE, 0x165E,
-	0xAAC0, 0x865E,
-	0xAAC2, 0x764F,
-	0xAAC4, 0xE64F,
-	0xAAC6, 0x1660,
-	0xAAC8, 0x8660,
-	0xAACA, 0x7271,
-	0xAACC, 0xE271,
-	0xAACE, 0x5272,
-	0xAAD0, 0xC272,
-	0xAAD2, 0x3273,
-	0xAAD4, 0xA273,
-	0xAAD6, 0x1275,
-	0xAAD8, 0x8275,
-	0xAADA, 0x7266,
-	0xAADC, 0xE266,
-	0xAADE, 0x5267,
-	0xAAE0, 0xC267,
-	0xAAE2, 0x3268,
-	0xAAE4, 0xA268,
-	0xAAE6, 0x126E,
-	0xAAE8, 0x826E,
-	0xAAEA, 0x072F,
-	0xAAEC, 0xC1FF,
-	0xAAEE, 0x872F,
-	0xAAF0, 0x81FF,
-	0xAAF2, 0x7370,
-	0xAAF4, 0x0430,
-	0xAAF6, 0x7390,
-	0xAAF8, 0x1434,
-	0xAAFA, 0x7310,
-	0xAAFC, 0x2434,
-	0xAAFE, 0x7A44,
-	0xAB00, 0xEA44,
-	0xAB02, 0x0D61,
-	0xAB04, 0x7300,
-	0xAB06, 0x2030,
-	0xAB08, 0x59DD,
-	0xAB0A, 0xB7D7,
-	0xAB0C, 0x0124,
-	0xAB0E, 0x9387,
-	0xAB10, 0x07C4,
-	0xAB12, 0x03D7,
-	0xAB14, 0xA708,
-	0xAB16, 0x0507,
-	0xAB18, 0x2395,
-	0xAB1A, 0xE708,
-	0xAB1C, 0xC9D5,
-	0xAB1E, 0x37A7,
-	0xAB20, 0x0124,
-	0xAB22, 0x1307,
-	0xAB24, 0x0753,
-	0xAB26, 0x8356,
-	0xAB28, 0xA7B6,
-	0xAB2A, 0x95BF,
-	0xAB2C, 0xB7A7,
-	0xAB2E, 0x0124,
-	0xAB30, 0x83D5,
-	0xAB32, 0x8709,
-	0xAB34, 0x4145,
-	0xAB36, 0x97D0,
-	0xAB38, 0xFFFB,
-	0xAB3A, 0xE780,
-	0xAB3C, 0xE0E5,
-	0xAB3E, 0x8545,
-	0xAB40, 0xE1B5,
-	0xAB42, 0x0100,
-	0xAB44, 0x8280,
-	0xAB46, 0x0100,
-	0xAB48, 0x1753,
-	0xAB4A, 0x02FC,
-	0xAB4C, 0xE702,
-	0xAB4E, 0x8397,
-	0xAB50, 0x37E4,
-	0xAB52, 0x0124,
-	0xAB54, 0x1304,
-	0xAB56, 0x044C,
-	0xAB58, 0x8344,
-	0xAB5A, 0xE40A,
-	0xAB5C, 0x8547,
-	0xAB5E, 0x2307,
-	0xAB60, 0xF40A,
-	0xAB62, 0x97A0,
-	0xAB64, 0xFDFB,
-	0xAB66, 0xE780,
-	0xAB68, 0x20E3,
-	0xAB6A, 0x2307,
-	0xAB6C, 0x940A,
-	0xAB6E, 0x1753,
-	0xAB70, 0x02FC,
-	0xAB72, 0x6700,
-	0xAB74, 0x6397,
-	0xAB76, 0x0100,
-	0xAB78, 0xB7A7,
-	0xAB7A, 0x0224,
-	0xAB7C, 0x83C7,
-	0xAB7E, 0x075A,
-	0xAB80, 0x0547,
-	0xAB82, 0x6383,
-	0xAB84, 0xE700,
-	0xAB86, 0x8280,
-	0xAB88, 0x1753,
-	0xAB8A, 0x02FC,
-	0xAB8C, 0xE702,
-	0xAB8E, 0xE391,
-	0xAB90, 0x3794,
-	0xAB92, 0x0124,
-	0xAB94, 0x1304,
-	0xAB96, 0x0453,
-	0xAB98, 0x0347,
-	0xAB9A, 0x041B,
-	0xAB9C, 0x4111,
-	0xAB9E, 0x6307,
-	0xABA0, 0xF700,
-	0xABA2, 0x4101,
-	0xABA4, 0x1753,
-	0xABA6, 0x02FC,
-	0xABA8, 0x6700,
-	0xABAA, 0x6393,
-	0xABAC, 0x8947,
-	0xABAE, 0xE31A,
-	0xABB0, 0xF5FE,
-	0xABB2, 0x8347,
-	0xABB4, 0x3441,
-	0xABB6, 0xADC3,
-	0xABB8, 0x83A9,
-	0xABBA, 0x0500,
-	0xABBC, 0x2EC6,
-	0xABBE, 0x97C0,
-	0xABC0, 0x01FC,
-	0xABC2, 0xE780,
-	0xABC4, 0x20B8,
-	0xABC6, 0xAA84,
-	0xABC8, 0x9780,
-	0xABCA, 0x01FC,
-	0xABCC, 0xE780,
-	0xABCE, 0x80C7,
-	0xABD0, 0xB245,
-	0xABD2, 0x2A89,
-	0xABD4, 0x9C41,
-	0xABD6, 0x63F3,
-	0xABD8, 0x9700,
-	0xABDA, 0xA687,
-	0xABDC, 0x8851,
-	0xABDE, 0x9CC1,
-	0xABE0, 0x2EC6,
-	0xABE2, 0x4A95,
-	0xABE4, 0x97B0,
-	0xABE6, 0x00FC,
-	0xABE8, 0xE780,
-	0xABEA, 0x00C5,
-	0xABEC, 0xB245,
-	0xABEE, 0xAA84,
-	0xABF0, 0xE8C9,
-	0xABF2, 0x3385,
-	0xABF4, 0x2901,
-	0xABF6, 0x97B0,
-	0xABF8, 0x00FC,
-	0xABFA, 0xE780,
-	0xABFC, 0xE0C3,
-	0xABFE, 0x8567,
-	0xAC00, 0x3E94,
-	0xAC02, 0x8327,
-	0xAC04, 0xC483,
-	0xAC06, 0x2695,
-	0xAC08, 0xB245,
-	0xAC0A, 0x63F3,
-	0xAC0C, 0xA700,
-	0xAC0E, 0xAA87,
-	0xAC10, 0x2322,
-	0xAC12, 0xF498,
-	0xAC14, 0xE8C5,
-	0xAC16, 0x71B7,
-	0xAC18, 0x0145,
-	0xAC1A, 0x2EC6,
-	0xAC1C, 0x97B0,
-	0xAC1E, 0x01FC,
-	0xAC20, 0xE780,
-	0xAC22, 0x8035,
-	0xAC24, 0xB245,
-	0xAC26, 0xAA89,
-	0xAC28, 0x51BF,
-	0xAC2A, 0x0100,
-	0xAC2C, 0x1753,
-	0xAC2E, 0x02FC,
-	0xAC30, 0xE702,
-	0xAC32, 0x4389,
-	0xAC34, 0x2A84,
-	0xAC36, 0xEFE0,
-	0xAC38, 0xAFFC,
-	0xAC3A, 0x01E8,
-	0xAC3C, 0xB7D7,
-	0xAC3E, 0x0124,
-	0xAC40, 0x03A7,
-	0xAC42, 0x87C1,
-	0xAC44, 0x9147,
-	0xAC46, 0x6306,
-	0xAC48, 0xF700,
-	0xAC4A, 0x1753,
-	0xAC4C, 0x02FC,
-	0xAC4E, 0x6700,
-	0xAC50, 0xA389,
-	0xAC52, 0xB7D7,
-	0xAC54, 0x0124,
-	0xAC56, 0x83C7,
-	0xAC58, 0x07FA,
-	0xAC5A, 0xE5DB,
-	0xAC5C, 0xB747,
-	0xAC5E, 0x0124,
-	0xAC60, 0x83C7,
-	0xAC62, 0x27C4,
-	0xAC64, 0xFDF3,
-	0xAC66, 0x97E0,
-	0xAC68, 0x00FC,
-	0xAC6A, 0xE780,
-	0xAC6C, 0xA097,
-	0xAC6E, 0xB787,
-	0xAC70, 0x0224,
-	0xAC72, 0x0547,
-	0xAC74, 0xA380,
-	0xAC76, 0xE74E,
-	0xAC78, 0xC9BF,
-	0xAC7A, 0x0100,
-	0xAC7C, 0x1753,
-	0xAC7E, 0x02FC,
-	0xAC80, 0xE702,
-	0xAC82, 0x4384,
-	0xAC84, 0x3784,
-	0xAC86, 0x0224,
-	0xAC88, 0x1304,
-	0xAC8A, 0xC449,
-	0xAC8C, 0x8347,
-	0xAC8E, 0x5404,
-	0xAC90, 0x99E7,
-	0xAC92, 0xEFE0,
-	0xAC94, 0x7F82,
-	0xAC96, 0x1753,
-	0xAC98, 0x02FC,
-	0xAC9A, 0x6700,
-	0xAC9C, 0xE384,
-	0xAC9E, 0x97E0,
-	0xACA0, 0x00FC,
-	0xACA2, 0xE780,
-	0xACA4, 0x20AF,
-	0xACA6, 0xA302,
-	0xACA8, 0x0404,
-	0xACAA, 0xEFE0,
-	0xACAC, 0xFF80,
-	0xACAE, 0x1753,
-	0xACB0, 0x02FC,
-	0xACB2, 0x6700,
-	0xACB4, 0x6383,
-	0xACB6, 0x0100,
-	0xACB8, 0x1753,
-	0xACBA, 0x02FC,
-	0xACBC, 0xE702,
-	0xACBE, 0x8380,
-	0xACC0, 0xB7E7,
-	0xACC2, 0x0124,
-	0xACC4, 0x9387,
-	0xACC6, 0x0787,
-	0xACC8, 0x03A9,
-	0xACCA, 0x870E,
-	0xACCC, 0x83A4,
-	0xACCE, 0xC70E,
-	0xACD0, 0x0146,
-	0xACD2, 0xCA85,
-	0xACD4, 0x2A84,
-	0xACD6, 0x2685,
-	0xACD8, 0x9740,
-	0xACDA, 0x01FC,
-	0xACDC, 0xE780,
-	0xACDE, 0xC0D6,
-	0xACE0, 0x2285,
-	0xACE2, 0x97A0,
-	0xACE4, 0xFFFB,
-	0xACE6, 0xE780,
-	0xACE8, 0x603E,
-	0xACEA, 0x0546,
-	0xACEC, 0xCA85,
-	0xACEE, 0x2685,
-	0xACF0, 0x9740,
-	0xACF2, 0x01FC,
-	0xACF4, 0xE780,
-	0xACF6, 0x40D5,
-	0xACF8, 0x8547,
-	0xACFA, 0x630F,
-	0xACFC, 0xF400,
-	0xACFE, 0x9147,
-	0xAD00, 0x630C,
-	0xAD02, 0xF400,
-	0xAD04, 0xB7C7,
-	0xAD06, 0x0224,
-	0xAD08, 0x83A7,
-	0xAD0A, 0x07B7,
-	0xAD0C, 0x0945,
-	0xAD0E, 0x8297,
-	0xAD10, 0x1743,
-	0xAD12, 0x02FC,
-	0xAD14, 0x6700,
-	0xAD16, 0x437D,
-	0xAD18, 0x9770,
-	0xAD1A, 0xFFFB,
-	0xAD1C, 0xE780,
-	0xAD1E, 0x00C0,
-	0xAD20, 0x75F1,
-	0xAD22, 0x9770,
-	0xAD24, 0xFFFB,
-	0xAD26, 0xE780,
-	0xAD28, 0x60BC,
-	0xAD2A, 0x69DD,
-	0xAD2C, 0x9770,
-	0xAD2E, 0xFFFB,
-	0xAD30, 0xE780,
-	0xAD32, 0x4036,
-	0xAD34, 0x19C9,
-	0xAD36, 0xB797,
-	0xAD38, 0x0124,
-	0xAD3A, 0x9387,
-	0xAD3C, 0x07D7,
-	0xAD3E, 0x03C7,
-	0xAD40, 0x8703,
-	0xAD42, 0x83C7,
-	0xAD44, 0x2706,
-	0xAD46, 0x6306,
-	0xAD48, 0xF706,
-	0xAD4A, 0x9770,
-	0xAD4C, 0xFFFB,
-	0xAD4E, 0xE780,
-	0xAD50, 0x6034,
-	0xAD52, 0x4DD9,
-	0xAD54, 0xB797,
-	0xAD56, 0x0124,
-	0xAD58, 0x9387,
-	0xAD5A, 0x07D7,
-	0xAD5C, 0x03C7,
-	0xAD5E, 0xC701,
-	0xAD60, 0x83C7,
-	0xAD62, 0x2706,
-	0xAD64, 0xE310,
-	0xAD66, 0xF7FA,
-	0xAD68, 0xB7C7,
-	0xAD6A, 0x0224,
-	0xAD6C, 0x83A7,
-	0xAD6E, 0x47B7,
-	0xAD70, 0xB706,
-	0xAD72, 0x0040,
-	0xAD74, 0x1386,
-	0xAD76, 0x4606,
-	0xAD78, 0x8965,
-	0xAD7A, 0x3E96,
-	0xAD7C, 0x1387,
-	0xAD7E, 0x061F,
-	0xAD80, 0x9385,
-	0xAD82, 0xF5F1,
-	0xAD84, 0x2310,
-	0xAD86, 0xB600,
-	0xAD88, 0x3E97,
-	0xAD8A, 0x7D56,
-	0xAD8C, 0x2310,
-	0xAD8E, 0xC700,
-	0xAD90, 0x37D6,
-	0xAD92, 0x0124,
-	0xAD94, 0x1306,
-	0xAD96, 0x06E7,
-	0xAD98, 0x0357,
-	0xAD9A, 0xC605,
-	0xAD9C, 0x0356,
-	0xAD9E, 0x6606,
-	0xADA0, 0x9386,
-	0xADA2, 0x861D,
-	0xADA4, 0x3297,
-	0xADA6, 0x4207,
-	0xADA8, 0xB697,
-	0xADAA, 0x4183,
-	0xADAC, 0x2390,
-	0xADAE, 0xE700,
-	0xADB0, 0x91BF,
-	0xADB2, 0xB7C7,
-	0xADB4, 0x0224,
-	0xADB6, 0x83A7,
-	0xADB8, 0x47B7,
-	0xADBA, 0xB706,
-	0xADBC, 0x0040,
-	0xADBE, 0x1386,
-	0xADC0, 0x4606,
-	0xADC2, 0x8965,
-	0xADC4, 0x3E96,
-	0xADC6, 0x1387,
-	0xADC8, 0x061F,
-	0xADCA, 0x9385,
-	0xADCC, 0xF5F1,
-	0xADCE, 0x2310,
-	0xADD0, 0xB600,
-	0xADD2, 0x3E97,
-	0xADD4, 0x7D56,
-	0xADD6, 0x2310,
-	0xADD8, 0xC700,
-	0xADDA, 0x37D6,
-	0xADDC, 0x0124,
-	0xADDE, 0x1306,
-	0xADE0, 0x06E7,
-	0xADE2, 0x0357,
-	0xADE4, 0x0606,
-	0xADE6, 0x9386,
-	0xADE8, 0xA61D,
-	0xADEA, 0x0356,
-	0xADEC, 0x6606,
-	0xADEE, 0x5DBF,
-	0xADF0, 0x1743,
-	0xADF2, 0x02FC,
-	0xADF4, 0xE702,
-	0xADF6, 0x036D,
-	0xADF8, 0xB7D7,
-	0xADFA, 0x0024,
-	0xADFC, 0x83C7,
-	0xADFE, 0x476D,
-	0xAE00, 0x8544,
-	0xAE02, 0x6380,
-	0xAE04, 0x9714,
-	0xAE06, 0xB7E7,
-	0xAE08, 0x0024,
-	0xAE0A, 0x03C4,
-	0xAE0C, 0xC784,
-	0xAE0E, 0xB7A7,
-	0xAE10, 0x0124,
-	0xAE12, 0x83C7,
-	0xAE14, 0x6792,
-	0xAE16, 0x3334,
-	0xAE18, 0x8000,
-	0xAE1A, 0x3304,
-	0xAE1C, 0x8040,
-	0xAE1E, 0x7998,
-	0xAE20, 0x1304,
-	0xAE22, 0x6402,
-	0xAE24, 0xEDE7,
-	0xAE26, 0xB767,
-	0xAE28, 0x0024,
-	0xAE2A, 0x9387,
-	0xAE2C, 0x0733,
-	0xAE2E, 0x03D7,
-	0xAE30, 0xE75B,
-	0xAE32, 0x19C7,
-	0xAE34, 0x1347,
-	0xAE36, 0xF7FF,
-	0xAE38, 0x618F,
-	0xAE3A, 0x1314,
-	0xAE3C, 0x0701,
-	0xAE3E, 0x4180,
-	0xAE40, 0x83D7,
-	0xAE42, 0x075C,
-	0xAE44, 0x0D45,
-	0xAE46, 0x5D8C,
-	0xAE48, 0x4204,
-	0xAE4A, 0x4180,
-	0xAE4C, 0xA285,
-	0xAE4E, 0x97D0,
-	0xAE50, 0xFFFB,
-	0xAE52, 0xE780,
-	0xAE54, 0xA0BB,
-	0xAE56, 0x9315,
-	0xAE58, 0x0501,
-	0xAE5A, 0xC181,
-	0xAE5C, 0xAA84,
-	0xAE5E, 0x6309,
-	0xAE60, 0xB400,
-	0xAE62, 0x0565,
-	0xAE64, 0xA18D,
-	0xAE66, 0x2D05,
-	0xAE68, 0x97A0,
-	0xAE6A, 0xFFFB,
-	0xAE6C, 0xE780,
-	0xAE6E, 0x8046,
-	0xAE70, 0x1395,
-	0xAE72, 0x0401,
-	0xAE74, 0x93F7,
-	0xAE76, 0x1400,
-	0xAE78, 0x4181,
-	0xAE7A, 0x91CB,
-	0xAE7C, 0xB7D7,
-	0xAE7E, 0x0124,
-	0xAE80, 0x9387,
-	0xAE82, 0x07C4,
-	0xAE84, 0x03D7,
-	0xAE86, 0x4707,
-	0xAE88, 0x0507,
-	0xAE8A, 0x239A,
-	0xAE8C, 0xE706,
-	0xAE8E, 0x9377,
-	0xAE90, 0x2500,
-	0xAE92, 0x91CB,
-	0xAE94, 0xB7D7,
-	0xAE96, 0x0124,
-	0xAE98, 0x9387,
-	0xAE9A, 0x07C4,
-	0xAE9C, 0x03D7,
-	0xAE9E, 0xC70C,
-	0xAEA0, 0x0507,
-	0xAEA2, 0x2396,
-	0xAEA4, 0xE70C,
-	0xAEA6, 0x9377,
-	0xAEA8, 0x4500,
-	0xAEAA, 0x91CB,
-	0xAEAC, 0xB7D7,
-	0xAEAE, 0x0124,
-	0xAEB0, 0x9387,
-	0xAEB2, 0x07C4,
-	0xAEB4, 0x03D7,
-	0xAEB6, 0xE70C,
-	0xAEB8, 0x0507,
-	0xAEBA, 0x2397,
-	0xAEBC, 0xE70C,
-	0xAEBE, 0x9377,
-	0xAEC0, 0x0502,
-	0xAEC2, 0x91CB,
-	0xAEC4, 0xB7D7,
-	0xAEC6, 0x0124,
-	0xAEC8, 0x9387,
-	0xAECA, 0x07C4,
-	0xAECC, 0x03D7,
-	0xAECE, 0x070F,
-	0xAED0, 0x0507,
-	0xAED2, 0x2398,
-	0xAED4, 0xE70E,
-	0xAED6, 0x9377,
-	0xAED8, 0x0520,
-	0xAEDA, 0x91CB,
-	0xAEDC, 0xB7D7,
-	0xAEDE, 0x0124,
-	0xAEE0, 0x9387,
-	0xAEE2, 0x07C4,
-	0xAEE4, 0x03D7,
-	0xAEE6, 0x6708,
-	0xAEE8, 0x0507,
-	0xAEEA, 0x2393,
-	0xAEEC, 0xE708,
-	0xAEEE, 0x1375,
-	0xAEF0, 0x0504,
-	0xAEF2, 0x11C9,
-	0xAEF4, 0xB7D7,
-	0xAEF6, 0x0124,
-	0xAEF8, 0x9387,
-	0xAEFA, 0x07C4,
-	0xAEFC, 0x03D7,
-	0xAEFE, 0xA708,
-	0xAF00, 0x0507,
-	0xAF02, 0x2395,
-	0xAF04, 0xE708,
-	0xAF06, 0x1743,
-	0xAF08, 0x02FC,
-	0xAF0A, 0x6700,
-	0xAF0C, 0xE35D,
-	0xAF0E, 0xB7D7,
-	0xAF10, 0x0124,
-	0xAF12, 0x83D7,
-	0xAF14, 0xA7E7,
-	0xAF16, 0x81DB,
-	0xAF18, 0x9760,
-	0xAF1A, 0xFEFB,
-	0xAF1C, 0xE780,
-	0xAF1E, 0x8068,
-	0xAF20, 0x6311,
-	0xAF22, 0x9506,
-	0xAF24, 0xB797,
-	0xAF26, 0x0124,
-	0xAF28, 0x9387,
-	0xAF2A, 0x07D7,
-	0xAF2C, 0x03C7,
-	0xAF2E, 0xC701,
-	0xAF30, 0x83C7,
-	0xAF32, 0x2706,
-	0xAF34, 0x6307,
-	0xAF36, 0xF704,
-	0xAF38, 0x1364,
-	0xAF3A, 0x0424,
-	0xAF3C, 0x4204,
-	0xAF3E, 0x4180,
-	0xAF40, 0x11A0,
-	0xAF42, 0x0144,
-	0xAF44, 0xB767,
-	0xAF46, 0x0024,
-	0xAF48, 0x9387,
-	0xAF4A, 0x0733,
-	0xAF4C, 0x03C7,
-	0xAF4E, 0x273B,
-	0xAF50, 0xE30F,
-	0xAF52, 0x07EC,
-	0xAF54, 0x37A7,
-	0xAF56, 0x0124,
-	0xAF58, 0x0347,
-	0xAF5A, 0x6792,
-	0xAF5C, 0xE309,
-	0xAF5E, 0x07EC,
-	0xAF60, 0x37D7,
-	0xAF62, 0x0124,
-	0xAF64, 0x0357,
-	0xAF66, 0xA7E7,
-	0xAF68, 0xE303,
-	0xAF6A, 0x07EC,
-	0xAF6C, 0x3797,
-	0xAF6E, 0x0124,
-	0xAF70, 0x0347,
-	0xAF72, 0x1700,
-	0xAF74, 0xE30D,
-	0xAF76, 0x07EA,
-	0xAF78, 0x1374,
-	0xAF7A, 0xF4DF,
-	0xAF7C, 0x4204,
-	0xAF7E, 0x4180,
-	0xAF80, 0x7DB5,
-	0xAF82, 0x9760,
-	0xAF84, 0xFEFB,
-	0xAF86, 0xE780,
-	0xAF88, 0xE061,
-	0xAF8A, 0x8547,
-	0xAF8C, 0xE31C,
-	0xAF8E, 0xF5FA,
-	0xAF90, 0xB797,
-	0xAF92, 0x0124,
-	0xAF94, 0x9387,
-	0xAF96, 0x07D7,
-	0xAF98, 0x03C7,
-	0xAF9A, 0xC701,
-	0xAF9C, 0x83C7,
-	0xAF9E, 0x2706,
-	0xAFA0, 0xE312,
-	0xAFA2, 0xF7FA,
-	0xAFA4, 0x1364,
-	0xAFA6, 0x0420,
-	0xAFA8, 0x4204,
-	0xAFAA, 0x4180,
-	0xAFAC, 0x61BF,
-	0xAFAE, 0x0100,
-	0xAFB0, 0x7171,
-	0xAFB2, 0x22D7,
-	0xAFB4, 0x26D5,
-	0xAFB6, 0x7324,
-	0xAFB8, 0x2034,
-	0xAFBA, 0xF324,
-	0xAFBC, 0x1034,
-	0xAFBE, 0x7360,
-	0xAFC0, 0x0430,
-	0xAFC2, 0x2EC5,
-	0xAFC4, 0xA565,
-	0xAFC6, 0xBEDC,
-	0xAFC8, 0x06D3,
-	0xAFCA, 0x16D1,
-	0xAFCC, 0x1ACF,
-	0xAFCE, 0x1ECD,
-	0xAFD0, 0x22CB,
-	0xAFD2, 0x2AC7,
-	0xAFD4, 0x32C3,
-	0xAFD6, 0x36C1,
-	0xAFD8, 0xBADE,
-	0xAFDA, 0xC2DA,
-	0xAFDC, 0xC6D8,
-	0xAFDE, 0xF2D0,
-	0xAFE0, 0xF6CE,
-	0xAFE2, 0xFACC,
-	0xAFE4, 0xFECA,
-	0xAFE6, 0x82E2,
-	0xAFE8, 0x86E0,
-	0xAFEA, 0x0AFE,
-	0xAFEC, 0x0EFC,
-	0xAFEE, 0x12FA,
-	0xAFF0, 0x16F8,
-	0xAFF2, 0x1AF6,
-	0xAFF4, 0x1EF4,
-	0xAFF6, 0x2AF2,
-	0xAFF8, 0x2EF0,
-	0xAFFA, 0x32EE,
-	0xAFFC, 0x26C9,
-	0xAFFE, 0xCAD6,
-	0xB000, 0xCED4,
-	0xB002, 0xD2D2,
-	0xB004, 0x9385,
-	0xB006, 0x0540,
-	0xB008, 0x0545,
-	0xB00A, 0x36EC,
-	0xB00C, 0x3AEA,
-	0xB00E, 0x3EE8,
-	0xB010, 0x42E6,
-	0xB012, 0x46E4,
-	0xB014, 0x72E2,
-	0xB016, 0x76E0,
-	0xB018, 0x272E,
-	0xB01A, 0xE1FF,
-	0xB01C, 0x272C,
-	0xB01E, 0xF1FF,
-	0xB020, 0x97D0,
-	0xB022, 0xFFFB,
-	0xB024, 0xE780,
-	0xB026, 0x4097,
-	0xB028, 0xA167,
-	0xB02A, 0xE98F,
-	0xB02C, 0x2A84,
-	0xB02E, 0x6394,
-	0xB030, 0x0718,
-	0xB032, 0xB764,
-	0xB034, 0x0124,
-	0xB036, 0x9384,
-	0xB038, 0x0440,
-	0xB03A, 0x8567,
-	0xB03C, 0xE18F,
-	0xB03E, 0xCDCF,
-	0xB040, 0x37D7,
-	0xB042, 0x0124,
-	0xB044, 0x3789,
-	0xB046, 0x0224,
-	0xB048, 0x1307,
-	0xB04A, 0x07C4,
-	0xB04C, 0x1309,
-	0xB04E, 0xC949,
-	0xB050, 0x8356,
-	0xB052, 0x670E,
-	0xB054, 0x8327,
-	0xB056, 0x0905,
-	0xB058, 0x8506,
-	0xB05A, 0x8507,
-	0xB05C, 0x2328,
-	0xB05E, 0xF904,
-	0xB060, 0x2313,
-	0xB062, 0xD70E,
-	0xB064, 0x858B,
-	0xB066, 0x639F,
-	0xB068, 0x071A,
-	0xB06A, 0x8547,
-	0xB06C, 0xA30A,
-	0xB06E, 0xF904,
-	0xB070, 0x9770,
-	0xB072, 0xFFFB,
-	0xB074, 0xE780,
-	0xB076, 0x00FF,
-	0xB078, 0x19C5,
-	0xB07A, 0x0357,
-	0xB07C, 0x4905,
-	0xB07E, 0x9307,
-	0xB080, 0x1010,
-	0xB082, 0x6306,
-	0xB084, 0xF724,
-	0xB086, 0xDC50,
-	0xB088, 0x0945,
-	0xB08A, 0x8297,
-	0xB08C, 0x9770,
-	0xB08E, 0xFFFB,
-	0xB090, 0xE780,
-	0xB092, 0xC085,
-	0xB094, 0x11C5,
-	0xB096, 0x9770,
-	0xB098, 0xFFFB,
-	0xB09A, 0xE780,
-	0xB09C, 0x2088,
-	0xB09E, 0x55C5,
-	0xB0A0, 0x9760,
-	0xB0A2, 0x00FC,
-	0xB0A4, 0xE780,
-	0xB0A6, 0x405A,
-	0xB0A8, 0xB787,
-	0xB0AA, 0x0024,
-	0xB0AC, 0x83C7,
-	0xB0AE, 0x078C,
-	0xB0B0, 0xAA89,
-	0xB0B2, 0x6392,
-	0xB0B4, 0x071C,
-	0xB0B6, 0xB7D7,
-	0xB0B8, 0x0124,
-	0xB0BA, 0x9387,
-	0xB0BC, 0x07E7,
-	0xB0BE, 0xBC5F,
-	0xB0C0, 0x639A,
-	0xB0C2, 0x0716,
-	0xB0C4, 0x3799,
-	0xB0C6, 0x0124,
-	0xB0C8, 0x1309,
-	0xB0CA, 0x0953,
-	0xB0CC, 0xB727,
-	0xB0CE, 0x0024,
-	0xB0D0, 0x83C7,
-	0xB0D2, 0x7752,
-	0xB0D4, 0x6396,
-	0xB0D6, 0x071E,
-	0xB0D8, 0x0345,
-	0xB0DA, 0xC918,
-	0xB0DC, 0x631D,
-	0xB0DE, 0x051C,
-	0xB0E0, 0xDC50,
-	0xB0E2, 0x0D45,
-	0xB0E4, 0x8297,
-	0xB0E6, 0x4E85,
-	0xB0E8, 0x9760,
-	0xB0EA, 0x00FC,
-	0xB0EC, 0xE780,
-	0xB0EE, 0x005A,
-	0xB0F0, 0x8567,
-	0xB0F2, 0x3E99,
-	0xB0F4, 0x2320,
-	0xB0F6, 0xA9A2,
-	0xB0F8, 0x1374,
-	0xB0FA, 0x0440,
-	0xB0FC, 0x21C4,
-	0xB0FE, 0xB7D7,
-	0xB100, 0x0124,
-	0xB102, 0x9387,
-	0xB104, 0x07C4,
-	0xB106, 0x37A7,
-	0xB108, 0x0124,
-	0xB10A, 0x83D6,
-	0xB10C, 0x670E,
-	0xB10E, 0x1307,
-	0xB110, 0x0753,
-	0xB112, 0x0347,
-	0xB114, 0x179B,
-	0xB116, 0x8506,
-	0xB118, 0x3784,
-	0xB11A, 0x0224,
-	0xB11C, 0x1304,
-	0xB11E, 0xC449,
-	0xB120, 0x1337,
-	0xB122, 0x1700,
-	0xB124, 0x2393,
-	0xB126, 0xD70E,
-	0xB128, 0x230A,
-	0xB12A, 0xE404,
-	0xB12C, 0x9770,
-	0xB12E, 0xFFFB,
-	0xB130, 0xE780,
-	0xB132, 0x40F3,
-	0xB134, 0x6306,
-	0xB136, 0x0510,
-	0xB138, 0x0357,
-	0xB13A, 0x4405,
-	0xB13C, 0x9307,
-	0xB13E, 0x1010,
-	0xB140, 0x6300,
-	0xB142, 0xF710,
-	0xB144, 0xDC50,
-	0xB146, 0x1D45,
-	0xB148, 0x8297,
-	0xB14A, 0x9A50,
-	0xB14C, 0x8A52,
-	0xB14E, 0x7A43,
-	0xB150, 0xEA43,
-	0xB152, 0x5A44,
-	0xB154, 0xCA44,
-	0xB156, 0x3A45,
-	0xB158, 0xAA45,
-	0xB15A, 0x1A46,
-	0xB15C, 0x8A46,
-	0xB15E, 0x7657,
-	0xB160, 0xE657,
-	0xB162, 0x5658,
-	0xB164, 0xC658,
-	0xB166, 0x3659,
-	0xB168, 0xA659,
-	0xB16A, 0x165A,
-	0xB16C, 0x065E,
-	0xB16E, 0xF64E,
-	0xB170, 0x664F,
-	0xB172, 0xD64F,
-	0xB174, 0x1660,
-	0xB176, 0x8660,
-	0xB178, 0x7271,
-	0xB17A, 0xE271,
-	0xB17C, 0x5272,
-	0xB17E, 0xC272,
-	0xB180, 0x3273,
-	0xB182, 0xA273,
-	0xB184, 0x1275,
-	0xB186, 0x8275,
-	0xB188, 0x7266,
-	0xB18A, 0xE266,
-	0xB18C, 0x5267,
-	0xB18E, 0xC267,
-	0xB190, 0x3268,
-	0xB192, 0xA268,
-	0xB194, 0x126E,
-	0xB196, 0x826E,
-	0xB198, 0x072F,
-	0xB19A, 0xC1FF,
-	0xB19C, 0x872F,
-	0xB19E, 0x81FF,
-	0xB1A0, 0x7370,
-	0xB1A2, 0x0430,
-	0xB1A4, 0x7390,
-	0xB1A6, 0x1434,
-	0xB1A8, 0x7310,
-	0xB1AA, 0x2434,
-	0xB1AC, 0x3A54,
-	0xB1AE, 0xAA54,
-	0xB1B0, 0x4D61,
-	0xB1B2, 0x7300,
-	0xB1B4, 0x2030,
-	0xB1B6, 0x37D9,
-	0xB1B8, 0x0124,
-	0xB1BA, 0x1309,
-	0xB1BC, 0x09C4,
-	0xB1BE, 0x8357,
-	0xB1C0, 0x490E,
-	0xB1C2, 0xB764,
-	0xB1C4, 0x0124,
-	0xB1C6, 0x9384,
-	0xB1C8, 0x0440,
-	0xB1CA, 0xD850,
-	0xB1CC, 0x8507,
-	0xB1CE, 0x0145,
-	0xB1D0, 0x2312,
-	0xB1D2, 0xF90E,
-	0xB1D4, 0x0297,
-	0xB1D6, 0x9760,
-	0xB1D8, 0xFFFB,
-	0xB1DA, 0xE780,
-	0xB1DC, 0x2071,
-	0xB1DE, 0x25E5,
-	0xB1E0, 0xB729,
-	0xB1E2, 0x0024,
-	0xB1E4, 0x3799,
-	0xB1E6, 0x0124,
-	0xB1E8, 0x9389,
-	0xB1EA, 0x0933,
-	0xB1EC, 0x1309,
-	0xB1EE, 0x0953,
-	0xB1F0, 0x056A,
-	0xB1F2, 0x83C7,
-	0xB1F4, 0x791F,
-	0xB1F6, 0x4A9A,
-	0xB1F8, 0x2320,
-	0xB1FA, 0x0AA2,
-	0xB1FC, 0xB9EF,
-	0xB1FE, 0x0345,
-	0xB200, 0xC918,
-	0xB202, 0x2DE5,
-	0xB204, 0x83C7,
-	0xB206, 0x0920,
-	0xB208, 0x89C7,
-	0xB20A, 0x0327,
-	0xB20C, 0x4AB3,
-	0xB20E, 0x630A,
-	0xB210, 0xF700,
-	0xB212, 0x97E0,
-	0xB214, 0x00FC,
-	0xB216, 0xE780,
-	0xB218, 0xE0D2,
-	0xB21A, 0xDC50,
-	0xB21C, 0x0545,
-	0xB21E, 0x8297,
-	0xB220, 0x29BD,
-	0xB222, 0x01A0,
-	0xB224, 0x8547,
-	0xB226, 0x230A,
-	0xB228, 0x0904,
-	0xB22A, 0xA30A,
-	0xB22C, 0x0904,
-	0xB22E, 0x2328,
-	0xB230, 0xF904,
-	0xB232, 0x3DBD,
-	0xB234, 0x7D55,
-	0xB236, 0x9770,
-	0xB238, 0x01FC,
-	0xB23A, 0xE780,
-	0xB23C, 0xA004,
-	0xB23E, 0x59B5,
-	0xB240, 0xEFE0,
-	0xB242, 0x5FD9,
-	0xB244, 0x01B7,
-	0xB246, 0x9760,
-	0xB248, 0xFFFB,
-	0xB24A, 0xE780,
-	0xB24C, 0x206D,
-	0xB24E, 0x49F9,
-	0xB250, 0x8357,
-	0xB252, 0x490E,
-	0xB254, 0x858B,
-	0xB256, 0xC9F7,
-	0xB258, 0xCDBD,
-	0xB25A, 0x9770,
-	0xB25C, 0x01FC,
-	0xB25E, 0xE780,
-	0xB260, 0x2003,
-	0xB262, 0x2311,
-	0xB264, 0xA94E,
-	0xB266, 0x0345,
-	0xB268, 0xC918,
-	0xB26A, 0x49DD,
-	0xB26C, 0x97C0,
-	0xB26E, 0xFFFB,
-	0xB270, 0xE780,
-	0xB272, 0x40B4,
-	0xB274, 0x41BF,
-	0xB276, 0x9770,
-	0xB278, 0x01FC,
-	0xB27A, 0xE780,
-	0xB27C, 0x6001,
-	0xB27E, 0x3799,
-	0xB280, 0x0124,
-	0xB282, 0x1309,
-	0xB284, 0x0953,
-	0xB286, 0x8D67,
-	0xB288, 0xCA97,
-	0xB28A, 0x03C7,
-	0xB28C, 0xD76F,
-	0xB28E, 0x232E,
-	0xB290, 0xA94E,
-	0xB292, 0x8547,
-	0xB294, 0x6306,
-	0xB296, 0xF700,
-	0xB298, 0x8327,
-	0xB29A, 0x094F,
-	0xB29C, 0xE377,
-	0xB29E, 0xF5EA,
-	0xB2A0, 0x9760,
-	0xB2A2, 0x00FC,
-	0xB2A4, 0xE780,
-	0xB2A6, 0x80FC,
-	0xB2A8, 0x9770,
-	0xB2AA, 0x01FC,
-	0xB2AC, 0xE780,
-	0xB2AE, 0x40FE,
-	0xB2B0, 0x2320,
-	0xB2B2, 0xA950,
-	0xB2B4, 0x21BD,
-	0xB2B6, 0x97C0,
-	0xB2B8, 0xFFFB,
-	0xB2BA, 0xE780,
-	0xB2BC, 0xA0B2,
-	0xB2BE, 0x0DB5,
-	0xB2C0, 0x9770,
-	0xB2C2, 0x01FC,
-	0xB2C4, 0xE780,
-	0xB2C6, 0xC0FC,
-	0xB2C8, 0x2312,
-	0xB2CA, 0xA94E,
-	0xB2CC, 0x31B5,
-	0xB2CE, 0xEFE0,
-	0xB2D0, 0x7FD0,
-	0xB2D2, 0x55BB,
-	0xB2D4, 0x1743,
-	0xB2D6, 0x02FC,
-	0xB2D8, 0xE702,
-	0xB2DA, 0xC31E,
-	0xB2DC, 0x2A84,
-	0xB2DE, 0xEFD0,
-	0xB2E0, 0xBFA7,
-	0xB2E2, 0x8947,
-	0xB2E4, 0x6306,
-	0xB2E6, 0xF400,
-	0xB2E8, 0x1743,
-	0xB2EA, 0x02FC,
-	0xB2EC, 0x6700,
-	0xB2EE, 0xC31F,
-	0xB2F0, 0xB7E7,
-	0xB2F2, 0x0024,
-	0xB2F4, 0x03D7,
-	0xB2F6, 0xC7C8,
-	0xB2F8, 0x8564,
-	0xB2FA, 0x9387,
-	0xB2FC, 0xF4B3,
-	0xB2FE, 0xE315,
-	0xB300, 0xF7FE,
-	0xB302, 0x37A9,
-	0xB304, 0x0224,
-	0xB306, 0x1309,
-	0xB308, 0x8954,
-	0xB30A, 0x8347,
-	0xB30C, 0x190C,
-	0xB30E, 0xE9FF,
-	0xB310, 0x9770,
-	0xB312, 0xFFFB,
-	0xB314, 0xE780,
-	0xB316, 0x00E3,
-	0xB318, 0x61F9,
-	0xB31A, 0x9770,
-	0xB31C, 0xFFFB,
-	0xB31E, 0xE780,
-	0xB320, 0xA0E3,
-	0xB322, 0x79F1,
-	0xB324, 0x3725,
-	0xB326, 0x0224,
-	0xB328, 0x1305,
-	0xB32A, 0x05ED,
-	0xB32C, 0x9700,
-	0xB32E, 0xFFFB,
-	0xB330, 0xE780,
-	0xB332, 0x80FA,
-	0xB334, 0xB797,
-	0xB336, 0x0124,
-	0xB338, 0x3767,
-	0xB33A, 0x0124,
-	0xB33C, 0x0327,
-	0xB33E, 0x0740,
-	0xB340, 0x9387,
-	0xB342, 0x0753,
-	0xB344, 0xA697,
-	0xB346, 0x8544,
-	0xB348, 0x1D45,
-	0xB34A, 0x238D,
-	0xB34C, 0x97CE,
-	0xB34E, 0x0297,
-	0xB350, 0xA300,
-	0xB352, 0x990C,
-	0xB354, 0x9780,
-	0xB356, 0x01FC,
-	0xB358, 0xE780,
-	0xB35A, 0x0083,
-	0xB35C, 0x51F5,
-	0xB35E, 0xB727,
-	0xB360, 0x0124,
-	0xB362, 0x2380,
-	0xB364, 0x8754,
-	0xB366, 0x97B0,
-	0xB368, 0xFEFB,
-	0xB36A, 0xE780,
-	0xB36C, 0x6002,
-	0xB36E, 0x2301,
-	0xB370, 0x990C,
-	0xB372, 0x9DBF,
-	0xB374, 0x1743,
-	0xB376, 0x02FC,
-	0xB378, 0xE702,
-	0xB37A, 0xC314,
-	0xB37C, 0x37A4,
-	0xB37E, 0x0224,
-	0xB380, 0x1304,
-	0xB382, 0x8454,
-	0xB384, 0x0347,
-	0xB386, 0x240C,
-	0xB388, 0x8547,
-	0xB38A, 0x630A,
-	0xB38C, 0xF700,
-	0xB38E, 0x97B0,
-	0xB390, 0xFEFB,
-	0xB392, 0xE780,
-	0xB394, 0xE069,
-	0xB396, 0x1743,
-	0xB398, 0x02FC,
-	0xB39A, 0x6700,
-	0xB39C, 0xE314,
-	0xB39E, 0x9770,
-	0xB3A0, 0x01FC,
-	0xB3A2, 0xE780,
-	0xB3A4, 0x607E,
-	0xB3A6, 0x65F5,
-	0xB3A8, 0x97B0,
-	0xB3AA, 0xFEFB,
-	0xB3AC, 0xE780,
-	0xB3AE, 0x800F,
-	0xB3B0, 0x2301,
-	0xB3B2, 0x040C,
-	0xB3B4, 0xE9BF,
-	0xB3B6, 0x0100,
-	0xB3B8, 0x1743,
-	0xB3BA, 0x02FC,
-	0xB3BC, 0xE702,
-	0xB3BE, 0x8310,
-	0xB3C0, 0x9D47,
-	0xB3C2, 0x631F,
-	0xB3C4, 0xF500,
-	0xB3C6, 0x3794,
-	0xB3C8, 0x0124,
-	0xB3CA, 0x1304,
-	0xB3CC, 0x0453,
-	0xB3CE, 0x8567,
-	0xB3D0, 0xA297,
-	0xB3D2, 0x83C7,
-	0xB3D4, 0xA7CF,
-	0xB3D6, 0x9DE7,
-	0xB3D8, 0x1743,
-	0xB3DA, 0x02FC,
-	0xB3DC, 0x6700,
-	0xB3DE, 0xC310,
-	0xB3E0, 0x2A84,
-	0xB3E2, 0xEFD0,
-	0xB3E4, 0x7FDD,
-	0xB3E6, 0x8547,
-	0xB3E8, 0xE318,
-	0xB3EA, 0xF4FE,
-	0xB3EC, 0xB7E7,
-	0xB3EE, 0x0124,
-	0xB3F0, 0x9387,
-	0xB3F2, 0x074C,
-	0xB3F4, 0x23AE,
-	0xB3F6, 0x0710,
-	0xB3F8, 0x23A4,
-	0xB3FA, 0x077E,
-	0xB3FC, 0x1743,
-	0xB3FE, 0x02FC,
-	0xB400, 0x6700,
-	0xB402, 0x830E,
-	0xB404, 0x9770,
-	0xB406, 0xFFFB,
-	0xB408, 0xE780,
-	0xB40A, 0xC0D3,
-	0xB40C, 0x71F5,
-	0xB40E, 0x9770,
-	0xB410, 0xFFFB,
-	0xB412, 0xE780,
-	0xB414, 0x60D4,
-	0xB416, 0x69F1,
-	0xB418, 0x8D67,
-	0xB41A, 0x3E94,
-	0xB41C, 0x8327,
-	0xB41E, 0x846D,
-	0xB420, 0xB724,
-	0xB422, 0x0124,
-	0xB424, 0x9384,
-	0xB426, 0x045F,
-	0xB428, 0x91EF,
-	0xB42A, 0x83A7,
-	0xB42C, 0x440E,
-	0xB42E, 0x99CB,
-	0xB430, 0xB7D7,
-	0xB432, 0x0124,
-	0xB434, 0x83C7,
-	0xB436, 0x07FA,
-	0xB438, 0xC5D3,
-	0xB43A, 0x9700,
-	0xB43C, 0xFFFB,
-	0xB43E, 0xE780,
-	0xB440, 0x20E3,
-	0xB442, 0x59BF,
-	0xB444, 0x83A7,
-	0xB446, 0xC40A,
-	0xB448, 0xC1DB,
-	0xB44A, 0x0545,
-	0xB44C, 0x9730,
-	0xB44E, 0xFEFB,
-	0xB450, 0xE780,
-	0xB452, 0x8051,
-	0xB454, 0xB735,
-	0xB456, 0x202D,
-	0xB458, 0x7578,
-	0xB45A, 0x37F5,
-	0xB45C, 0x202D,
-	0xB45E, 0x9385,
-	0xB460, 0x0560,
-	0xB462, 0x1308,
-	0xB464, 0x08A0,
-	0xB466, 0x9168,
-	0xB468, 0x1305,
-	0xB46A, 0x0560,
-	0xB46C, 0xB387,
-	0xB46E, 0x0501,
-	0xB470, 0x03C7,
-	0xB472, 0x0700,
-	0xB474, 0x9306,
-	0xB476, 0xF00F,
-	0xB478, 0x1316,
-	0xB47A, 0x8701,
-	0xB47C, 0x6186,
-	0xB47E, 0x0607,
-	0xB480, 0x6344,
-	0xB482, 0x0600,
-	0xB484, 0x9376,
-	0xB486, 0xF70F,
-	0xB488, 0x2380,
-	0xB48A, 0xD700,
-	0xB48C, 0x8507,
-	0xB48E, 0xE391,
-	0xB490, 0xB7FE,
-	0xB492, 0xB385,
-	0xB494, 0x1701,
-	0xB496, 0xE39B,
-	0xB498, 0xA5FC,
-	0xB49A, 0xB7A7,
-	0xB49C, 0x0224,
-	0xB49E, 0x0547,
-	0xB4A0, 0x0145,
-	0xB4A2, 0xA384,
-	0xB4A4, 0xE760,
-	0xB4A6, 0x9730,
-	0xB4A8, 0xFEFB,
-	0xB4AA, 0xE780,
-	0xB4AC, 0xE04B,
-	0xB4AE, 0xB7D7,
-	0xB4B0, 0x0124,
-	0xB4B2, 0x83C7,
-	0xB4B4, 0x07FA,
-	0xB4B6, 0x8DD3,
-	0xB4B8, 0x8327,
-	0xB4BA, 0x846D,
-	0xB4BC, 0x91FF,
-	0xB4BE, 0x83A7,
-	0xB4C0, 0x440E,
-	0xB4C2, 0x99DB,
-	0xB4C4, 0x9DBF,
-	0xB4C6, 0x0100,
-	0xB4C8, 0x1743,
-	0xB4CA, 0x02FC,
-	0xB4CC, 0xE702,
-	0xB4CE, 0x83FF,
-	0xB4D0, 0xB7D7,
-	0xB4D2, 0x0124,
-	0xB4D4, 0x9387,
-	0xB4D6, 0x07F4,
-	0xB4D8, 0x03C7,
-	0xB4DA, 0x1705,
-	0xB4DC, 0x2A84,
-	0xB4DE, 0x11C7,
-	0xB4E0, 0x03C7,
-	0xB4E2, 0x1700,
-	0xB4E4, 0x8947,
-	0xB4E6, 0x6307,
-	0xB4E8, 0xF704,
-	0xB4EA, 0xB7E7,
-	0xB4EC, 0x0124,
-	0xB4EE, 0x9387,
-	0xB4F0, 0x0787,
-	0xB4F2, 0x83A4,
-	0xB4F4, 0x870F,
-	0xB4F6, 0x03A9,
-	0xB4F8, 0xC70F,
-	0xB4FA, 0x0146,
-	0xB4FC, 0xA685,
-	0xB4FE, 0x4A85,
-	0xB500, 0x9730,
-	0xB502, 0x01FC,
-	0xB504, 0xE780,
-	0xB506, 0x4054,
-	0xB508, 0x2285,
-	0xB50A, 0x97D0,
-	0xB50C, 0xFEFB,
-	0xB50E, 0xE780,
-	0xB510, 0x20D7,
-	0xB512, 0x4A85,
-	0xB514, 0x0546,
-	0xB516, 0xA685,
-	0xB518, 0x9730,
-	0xB51A, 0x01FC,
-	0xB51C, 0xE780,
-	0xB51E, 0xC052,
-	0xB520, 0xB7C7,
-	0xB522, 0x0224,
-	0xB524, 0x83A7,
-	0xB526, 0x07B7,
-	0xB528, 0x1145,
-	0xB52A, 0x8297,
-	0xB52C, 0x1743,
-	0xB52E, 0x02FC,
-	0xB530, 0x6700,
-	0xB532, 0x83FB,
-	0xB534, 0xB7E7,
-	0xB536, 0x0024,
-	0xB538, 0x83D6,
-	0xB53A, 0xC7C8,
-	0xB53C, 0x8567,
-	0xB53E, 0x1387,
-	0xB540, 0xF7B3,
-	0xB542, 0xE394,
-	0xB544, 0xE6FA,
-	0xB546, 0x3797,
-	0xB548, 0x0124,
-	0xB54A, 0x1307,
-	0xB54C, 0x0753,
-	0xB54E, 0xBA97,
-	0xB550, 0x03A5,
-	0xB552, 0x07B2,
-	0xB554, 0x8145,
-	0xB556, 0x3325,
-	0xB558, 0xA000,
-	0xB55A, 0x97D0,
-	0xB55C, 0x00FC,
-	0xB55E, 0xE780,
-	0xB560, 0x60BB,
-	0xB562, 0x61B7,
-	0xB564, 0x1743,
-	0xB566, 0x02FC,
-	0xB568, 0xE702,
-	0xB56A, 0xC3F5,
-	0xB56C, 0x9760,
-	0xB56E, 0xFFFB,
-	0xB570, 0xE780,
-	0xB572, 0xC037,
-	0xB574, 0x11C5,
-	0xB576, 0xB7E7,
-	0xB578, 0x0024,
-	0xB57A, 0x83C7,
-	0xB57C, 0xC784,
-	0xB57E, 0xBDEF,
-	0xB580, 0x1384,
-	0xB582, 0x81E7,
-	0xB584, 0x0347,
-	0xB586, 0x8400,
-	0xB588, 0x8547,
-	0xB58A, 0x6303,
-	0xB58C, 0xF706,
-	0xB58E, 0x0357,
-	0xB590, 0x2403,
-	0xB592, 0xB767,
-	0xB594, 0x0040,
-	0xB596, 0x2398,
-	0xB598, 0xE718,
-	0xB59A, 0x8357,
-	0xB59C, 0x4403,
-	0xB59E, 0x3767,
-	0xB5A0, 0x0040,
-	0xB5A2, 0x2314,
-	0xB5A4, 0xF720,
-	0xB5A6, 0x9760,
-	0xB5A8, 0xFFFB,
-	0xB5AA, 0xE780,
-	0xB5AC, 0x2034,
-	0xB5AE, 0x19C5,
-	0xB5B0, 0xB7E7,
-	0xB5B2, 0x0024,
-	0xB5B4, 0x03C7,
-	0xB5B6, 0xC784,
-	0xB5B8, 0x8147,
-	0xB5BA, 0x09EB,
-	0xB5BC, 0x8346,
-	0xB5BE, 0x8400,
-	0xB5C0, 0x0547,
-	0xB5C2, 0x8147,
-	0xB5C4, 0x6384,
-	0xB5C6, 0xE600,
-	0xB5C8, 0x8357,
-	0xB5CA, 0xC405,
-	0xB5CC, 0x37A7,
-	0xB5CE, 0x0040,
-	0xB5D0, 0x2312,
-	0xB5D2, 0xF710,
-	0xB5D4, 0x9770,
-	0xB5D6, 0xFFFB,
-	0xB5D8, 0xE780,
-	0xB5DA, 0xC0B6,
-	0xB5DC, 0x35C1,
-	0xB5DE, 0x9770,
-	0xB5E0, 0xFFFB,
-	0xB5E2, 0xE780,
-	0xB5E4, 0x60B7,
-	0xB5E6, 0x05C9,
-	0xB5E8, 0x1743,
-	0xB5EA, 0x02FC,
-	0xB5EC, 0x6700,
-	0xB5EE, 0xC3EF,
-	0xB5F0, 0xB767,
-	0xB5F2, 0x0040,
-	0xB5F4, 0x2398,
-	0xB5F6, 0x0718,
-	0xB5F8, 0x8147,
-	0xB5FA, 0x55B7,
-	0xB5FC, 0xB767,
-	0xB5FE, 0x0040,
-	0xB600, 0x2398,
-	0xB602, 0x0718,
-	0xB604, 0x1384,
-	0xB606, 0x81E7,
-	0xB608, 0x8346,
-	0xB60A, 0x8400,
-	0xB60C, 0x0547,
-	0xB60E, 0x8147,
-	0xB610, 0xE395,
-	0xB612, 0xE6F8,
-	0xB614, 0x69B7,
-	0xB616, 0x9760,
-	0xB618, 0xFFFB,
-	0xB61A, 0xE780,
-	0xB61C, 0x202D,
-	0xB61E, 0x31ED,
-	0xB620, 0x8346,
-	0xB622, 0x8400,
-	0xB624, 0x0547,
-	0xB626, 0x8147,
-	0xB628, 0x6384,
-	0xB62A, 0xE600,
-	0xB62C, 0x8357,
-	0xB62E, 0x4408,
-	0xB630, 0x3787,
-	0xB632, 0x0040,
-	0xB634, 0x2314,
-	0xB636, 0xF710,
-	0xB638, 0x1743,
-	0xB63A, 0x02FC,
-	0xB63C, 0x6700,
-	0xB63E, 0xC3EA,
-	0xB640, 0x9770,
-	0xB642, 0xFFFB,
-	0xB644, 0xE780,
-	0xB646, 0x40B1,
-	0xB648, 0x59F9,
-	0xB64A, 0x9760,
-	0xB64C, 0xFFFB,
-	0xB64E, 0xE780,
-	0xB650, 0xE029,
-	0xB652, 0x19C5,
-	0xB654, 0xB7E7,
-	0xB656, 0x0024,
-	0xB658, 0x03C7,
-	0xB65A, 0xC784,
-	0xB65C, 0x8147,
-	0xB65E, 0x09EB,
-	0xB660, 0x8346,
-	0xB662, 0x8400,
-	0xB664, 0x0547,
-	0xB666, 0x8147,
-	0xB668, 0x6384,
-	0xB66A, 0xE600,
-	0xB66C, 0x8357,
-	0xB66E, 0x6407,
-	0xB670, 0x3707,
-	0xB672, 0x0140,
-	0xB674, 0x2314,
-	0xB676, 0xF710,
-	0xB678, 0x9DB7,
-	0xB67A, 0xB7E7,
-	0xB67C, 0x0024,
-	0xB67E, 0x03C7,
-	0xB680, 0xC784,
-	0xB682, 0x8147,
-	0xB684, 0x55F7,
-	0xB686, 0x69BF,
-	0xB688, 0x1743,
-	0xB68A, 0x02FC,
-	0xB68C, 0xE702,
-	0xB68E, 0x03E1,
-	0xB690, 0x4111,
-	0xB692, 0x3A84,
-	0xB694, 0x22E6,
-	0xB696, 0x26E4,
-	0xB698, 0x4AE2,
-	0xB69A, 0x4EE0,
-	0xB69C, 0xAA84,
-	0xB69E, 0x3689,
-	0xB6A0, 0x97A0,
-	0xB6A2, 0xFEFB,
-	0xB6A4, 0xE780,
-	0xB6A6, 0x8066,
-	0xB6A8, 0xB727,
-	0xB6AA, 0x0224,
-	0xB6AC, 0x9387,
-	0xB6AE, 0x076B,
-	0xB6B0, 0xA297,
-	0xB6B2, 0x0567,
-	0xB6B4, 0xBA97,
-	0xB6B6, 0x83C7,
-	0xB6B8, 0x078D,
-	0xB6BA, 0x639D,
-	0xB6BC, 0x0718,
-	0xB6BE, 0x83C7,
-	0xB6C0, 0x0400,
-	0xB6C2, 0x6399,
-	0xB6C4, 0x0718,
-	0xB6C6, 0xB7A7,
-	0xB6C8, 0x0224,
-	0xB6CA, 0x9389,
-	0xB6CC, 0x8754,
-	0xB6CE, 0x03C7,
-	0xB6D0, 0x9905,
-	0xB6D2, 0x6301,
-	0xB6D4, 0x0718,
-	0xB6D6, 0x03CA,
-	0xB6D8, 0xA905,
-	0xB6DA, 0x03D6,
-	0xB6DC, 0xA90B,
-	0xB6DE, 0x37E7,
-	0xB6E0, 0x0124,
-	0xB6E2, 0x0355,
-	0xB6E4, 0x675F,
-	0xB6E6, 0x9387,
-	0xB6E8, 0x8754,
-	0xB6EA, 0x0147,
-	0xB6EC, 0xA145,
-	0xB6EE, 0x6369,
-	0xB6F0, 0xA622,
-	0xB6F2, 0x83D6,
-	0xB6F4, 0xC70A,
-	0xB6F6, 0x8907,
-	0xB6F8, 0x63F1,
-	0xB6FA, 0xA626,
-	0xB6FC, 0x0507,
-	0xB6FE, 0xE318,
-	0xB700, 0xB7FE,
-	0xB702, 0x37CB,
-	0xB704, 0x0224,
-	0xB706, 0x5309,
-	0xB708, 0x00F0,
-	0xB70A, 0x8727,
-	0xB70C, 0x8BB7,
-	0xB70E, 0x9D46,
-	0xB710, 0x4379,
-	0xB712, 0xF990,
-	0xB714, 0x1307,
-	0xB716, 0x0705,
-	0xB718, 0x0607,
-	0xB71A, 0x4E97,
-	0xB71C, 0x8357,
-	0xB71E, 0xC700,
-	0xB720, 0x118D,
-	0xB722, 0x5377,
-	0xB724, 0x05D0,
-	0xB726, 0x918F,
-	0xB728, 0xD3F7,
-	0xB72A, 0x07D0,
-	0xB72C, 0x9317,
-	0xB72E, 0x3A00,
-	0xB730, 0xB697,
-	0xB732, 0x5377,
-	0xB734, 0xF718,
-	0xB736, 0x9387,
-	0xB738, 0x8702,
-	0xB73A, 0x8607,
-	0xB73C, 0xCE97,
-	0xB73E, 0x83D7,
-	0xB740, 0xC700,
-	0xB742, 0x0726,
-	0xB744, 0x8BB7,
-	0xB746, 0x13F7,
-	0xB748, 0xF70F,
-	0xB74A, 0xA183,
-	0xB74C, 0xD377,
-	0xB74E, 0x07D0,
-	0xB750, 0xD3F6,
-	0xB752, 0x07D0,
-	0xB754, 0xC3F7,
-	0xB756, 0xC768,
-	0xB758, 0x5379,
-	0xB75A, 0xF908,
-	0xB75C, 0x4379,
-	0xB75E, 0xE978,
-	0xB760, 0x9770,
-	0xB762, 0xFFFB,
-	0xB764, 0xE780,
-	0xB766, 0xC08A,
-	0xB768, 0xAA8A,
-	0xB76A, 0x93DA,
-	0xB76C, 0x8A40,
-	0xB76E, 0x9770,
-	0xB770, 0xFFFB,
-	0xB772, 0xE780,
-	0xB774, 0xE089,
-	0xB776, 0xC20A,
-	0xB778, 0x9307,
-	0xB77A, 0x8A04,
-	0xB77C, 0x1375,
-	0xB77E, 0xF50F,
-	0xB780, 0x93DA,
-	0xB782, 0x0A41,
-	0xB784, 0xD3F7,
-	0xB786, 0x0AD0,
-	0xB788, 0xD374,
-	0xB78A, 0x05D0,
-	0xB78C, 0x0727,
-	0xB78E, 0x8BB7,
-	0xB790, 0x8607,
-	0xB792, 0xCE97,
-	0xB794, 0x03DC,
-	0xB796, 0xC700,
-	0xB798, 0xC3F4,
-	0xB79A, 0xE478,
-	0xB79C, 0xDC4C,
-	0xB79E, 0x5374,
-	0xB7A0, 0x0CD0,
-	0xB7A2, 0xD307,
-	0xB7A4, 0x00F0,
-	0xB7A6, 0x83D4,
-	0xB7A8, 0xC700,
-	0xB7AA, 0x53F4,
-	0xB7AC, 0x8408,
-	0xB7AE, 0x130A,
-	0xB7B0, 0x0A05,
-	0xB7B2, 0x060A,
-	0xB7B4, 0x4E9A,
-	0xB7B6, 0x035A,
-	0xB7B8, 0x4A00,
-	0xB7BA, 0xD317,
-	0xB7BC, 0xF4A0,
-	0xB7BE, 0x99C3,
-	0xB7C0, 0x5314,
-	0xB7C2, 0x8420,
-	0xB7C4, 0xB7CB,
-	0xB7C6, 0x0224,
-	0xB7C8, 0x83A7,
-	0xB7CA, 0x0BB7,
-	0xB7CC, 0x0D45,
-	0xB7CE, 0x8297,
-	0xB7D0, 0xD397,
-	0xB7D2, 0x14C0,
-	0xB7D4, 0xC207,
-	0xB7D6, 0xC183,
-	0xB7D8, 0x6395,
-	0xB7DA, 0x870B,
-	0xB7DC, 0xB747,
-	0xB7DE, 0x0124,
-	0xB7E0, 0x9387,
-	0xB7E2, 0x0727,
-	0xB7E4, 0x03D7,
-	0xB7E6, 0x6712,
-	0xB7E8, 0x83D6,
-	0xB7EA, 0xE710,
-	0xB7EC, 0x8947,
-	0xB7EE, 0x7D17,
-	0xB7F0, 0xB397,
-	0xB7F2, 0xE700,
-	0xB7F4, 0xD3F7,
-	0xB7F6, 0x07D0,
-	0xB7F8, 0x53F7,
-	0xB7FA, 0x16D0,
-	0xB7FC, 0x5304,
-	0xB7FE, 0x00F0,
-	0xB800, 0xD3F7,
-	0xB802, 0x2711,
-	0xB804, 0x37CA,
-	0xB806, 0x0224,
-	0xB808, 0xD3F7,
-	0xB80A, 0xE718,
-	0xB80C, 0xB7C7,
-	0xB80E, 0x0224,
-	0xB810, 0x07A7,
-	0xB812, 0xC7B7,
-	0xB814, 0x83A7,
-	0xB816, 0x0BB7,
-	0xB818, 0x2545,
-	0xB81A, 0xD3F7,
-	0xB81C, 0xE700,
-	0xB81E, 0xD39A,
-	0xB820, 0x17C0,
-	0xB822, 0x8297,
-	0xB824, 0x8727,
-	0xB826, 0x0AB8,
-	0xB828, 0xC20A,
-	0xB82A, 0x93DA,
-	0xB82C, 0x0A01,
-	0xB82E, 0x5374,
-	0xB830, 0xF410,
-	0xB832, 0xD694,
-	0xB834, 0xC204,
-	0xB836, 0x2393,
-	0xB838, 0x590D,
-	0xB83A, 0xC180,
-	0xB83C, 0xD317,
-	0xB83E, 0x14C0,
-	0xB840, 0x2392,
-	0xB842, 0xF90C,
-	0xB844, 0xB707,
-	0xB846, 0x0040,
-	0xB848, 0x19EC,
-	0xB84A, 0x9387,
-	0xB84C, 0xE703,
-	0xB84E, 0xCA97,
-	0xB850, 0x2390,
-	0xB852, 0x9700,
-	0xB854, 0x3264,
-	0xB856, 0xA264,
-	0xB858, 0x1269,
-	0xB85A, 0x8269,
-	0xB85C, 0x4101,
-	0xB85E, 0x1743,
-	0xB860, 0x02FC,
-	0xB862, 0x6700,
-	0xB864, 0x23C7,
-	0xB866, 0x9387,
-	0xB868, 0x0704,
-	0xB86A, 0x3264,
-	0xB86C, 0xA264,
-	0xB86E, 0x1269,
-	0xB870, 0x8269,
-	0xB872, 0xCA97,
-	0xB874, 0x2390,
-	0xB876, 0x9700,
-	0xB878, 0x4101,
-	0xB87A, 0x1743,
-	0xB87C, 0x02FC,
-	0xB87E, 0x6700,
-	0xB880, 0x63C5,
-	0xB882, 0x9377,
-	0xB884, 0xFA0F,
-	0xB886, 0x135A,
-	0xB888, 0x8A00,
-	0xB88A, 0x8729,
-	0xB88C, 0x8BB7,
-	0xB88E, 0xD3F7,
-	0xB890, 0x07D0,
-	0xB892, 0xD376,
-	0xB894, 0x0AD0,
-	0xB896, 0x37CA,
-	0xB898, 0x0224,
-	0xB89A, 0x0727,
-	0xB89C, 0x0AB8,
-	0xB89E, 0xC3F7,
-	0xB8A0, 0x3769,
-	0xB8A2, 0x5374,
-	0xB8A4, 0xF418,
-	0xB8A6, 0x5374,
-	0xB8A8, 0xE410,
-	0xB8AA, 0x531B,
-	0xB8AC, 0x14C0,
-	0xB8AE, 0x420B,
-	0xB8B0, 0x135B,
-	0xB8B2, 0x0B01,
-	0xB8B4, 0x5A85,
-	0xB8B6, 0x9760,
-	0xB8B8, 0x00FC,
-	0xB8BA, 0xE780,
-	0xB8BC, 0xA01A,
-	0xB8BE, 0xAA8A,
-	0xB8C0, 0x5A85,
-	0xB8C2, 0x9760,
-	0xB8C4, 0x00FC,
-	0xB8C6, 0xE780,
-	0xB8C8, 0xE019,
-	0xB8CA, 0x93DA,
-	0xB8CC, 0x8A00,
-	0xB8CE, 0xD397,
-	0xB8D0, 0x04C0,
-	0xB8D2, 0xC20A,
-	0xB8D4, 0x1375,
-	0xB8D6, 0xF50F,
-	0xB8D8, 0x93DA,
-	0xB8DA, 0x0A01,
-	0xB8DC, 0x5374,
-	0xB8DE, 0x05D0,
-	0xB8E0, 0xD3F7,
-	0xB8E2, 0x0AD0,
-	0xB8E4, 0xC207,
-	0xB8E6, 0xC187,
-	0xB8E8, 0x4374,
-	0xB8EA, 0x3479,
-	0xB8EC, 0x63D7,
-	0xB8EE, 0x8703,
-	0xB8F0, 0x5374,
-	0xB8F2, 0x8918,
-	0xB8F4, 0xB747,
-	0xB8F6, 0x0124,
-	0xB8F8, 0x9387,
-	0xB8FA, 0x0727,
-	0xB8FC, 0x03D7,
-	0xB8FE, 0x6712,
-	0xB900, 0x83D6,
-	0xB902, 0xE710,
-	0xB904, 0x8947,
-	0xB906, 0x7D17,
-	0xB908, 0xB397,
-	0xB90A, 0xE700,
-	0xB90C, 0xD3F7,
-	0xB90E, 0x07D0,
-	0xB910, 0x53F7,
-	0xB912, 0x16D0,
-	0xB914, 0xD3F7,
-	0xB916, 0x8710,
-	0xB918, 0xC5BD,
-	0xB91A, 0x5374,
-	0xB91C, 0x8910,
-	0xB91E, 0xD9BF,
-	0xB920, 0x9317,
-	0xB922, 0x4A00,
-	0xB924, 0xCE97,
-	0xB926, 0x83D7,
-	0xB928, 0xA706,
-	0xB92A, 0x93F6,
-	0xB92C, 0xF70F,
-	0xB92E, 0x37CB,
-	0xB930, 0x0224,
-	0xB932, 0xA183,
-	0xB934, 0x53F9,
-	0xB936, 0x06D0,
-	0xB938, 0xD3F7,
-	0xB93A, 0x07D0,
-	0xB93C, 0x0727,
-	0xB93E, 0x8BB7,
-	0xB940, 0x4379,
-	0xB942, 0xE978,
-	0xB944, 0xE30E,
-	0xB946, 0x07E0,
-	0xB948, 0x9307,
-	0xB94A, 0xF704,
-	0xB94C, 0x8607,
-	0xB94E, 0xCE97,
-	0xB950, 0x03D6,
-	0xB952, 0xC700,
-	0xB954, 0x9306,
-	0xB956, 0xF7FF,
-	0xB958, 0x75BB,
-	0xB95A, 0x9317,
-	0xB95C, 0x3A00,
-	0xB95E, 0xBA97,
-	0xB960, 0x9387,
-	0xB962, 0x8702,
-	0xB964, 0x8607,
-	0xB966, 0xCE97,
-	0xB968, 0x83D7,
-	0xB96A, 0xC700,
-	0xB96C, 0x7DBF,
-	0xB96E, 0x0100,
-	0xB970, 0x1743,
-	0xB972, 0x02FC,
-	0xB974, 0xE702,
-	0xB976, 0x63B3,
-	0xB978, 0xB747,
-	0xB97A, 0x0124,
-	0xB97C, 0x03D7,
-	0xB97E, 0xC7E1,
-	0xB980, 0x8947,
-	0xB982, 0x2A84,
-	0xB984, 0xAE84,
-	0xB986, 0x6319,
-	0xB988, 0xF700,
-	0xB98A, 0xB7A7,
-	0xB98C, 0x0124,
-	0xB98E, 0x03A7,
-	0xB990, 0x4706,
-	0xB992, 0xFD57,
-	0xB994, 0x6304,
-	0xB996, 0xF704,
-	0xB998, 0xB7E7,
-	0xB99A, 0x0124,
-	0xB99C, 0x9387,
-	0xB99E, 0x0787,
-	0xB9A0, 0x03A9,
-	0xB9A2, 0x8710,
-	0xB9A4, 0x83A9,
-	0xB9A6, 0xC710,
-	0xB9A8, 0x0146,
-	0xB9AA, 0xCA85,
-	0xB9AC, 0x4E85,
-	0xB9AE, 0x9730,
-	0xB9B0, 0x01FC,
-	0xB9B2, 0xE780,
-	0xB9B4, 0x6009,
-	0xB9B6, 0xA685,
-	0xB9B8, 0x2285,
-	0xB9BA, 0x97C0,
-	0xB9BC, 0x00FC,
-	0xB9BE, 0xE780,
-	0xB9C0, 0x6075,
-	0xB9C2, 0x4E85,
-	0xB9C4, 0x0546,
-	0xB9C6, 0xCA85,
-	0xB9C8, 0x9730,
-	0xB9CA, 0x01FC,
-	0xB9CC, 0xE780,
-	0xB9CE, 0xC007,
-	0xB9D0, 0xB7C7,
-	0xB9D2, 0x0224,
-	0xB9D4, 0x83A7,
-	0xB9D6, 0x07B7,
-	0xB9D8, 0x1545,
-	0xB9DA, 0x8297,
-	0xB9DC, 0x1743,
-	0xB9DE, 0x02FC,
-	0xB9E0, 0x6700,
-	0xB9E2, 0xE3AF,
-	0xB9E4, 0xB7C7,
-	0xB9E6, 0x0224,
-	0xB9E8, 0x03A6,
-	0xB9EA, 0x47B7,
-	0xB9EC, 0xB707,
-	0xB9EE, 0x0040,
-	0xB9F0, 0x9387,
-	0xB9F2, 0x0706,
-	0xB9F4, 0x3E96,
-	0xB9F6, 0x0967,
-	0xB9F8, 0x1308,
-	0xB9FA, 0x0502,
-	0xB9FC, 0xAA87,
-	0xB9FE, 0x098E,
-	0xBA00, 0x1307,
-	0xBA02, 0xF7F1,
-	0xBA04, 0x2390,
-	0xBA06, 0xE700,
-	0xBA08, 0xB306,
-	0xBA0A, 0xF600,
-	0xBA0C, 0x2390,
-	0xBA0E, 0xE600,
-	0xBA10, 0x8907,
-	0xBA12, 0xE399,
-	0xBA14, 0x07FF,
-	0xBA16, 0x83C7,
-	0xBA18, 0xC500,
-	0xBA1A, 0xB1CB,
-	0xBA1C, 0x83AF,
-	0xBA1E, 0x0500,
-	0xBA20, 0x0963,
-	0xBA22, 0x1388,
-	0xBA24, 0xE500,
-	0xBA26, 0x8147,
-	0xBA28, 0x0D4F,
-	0xBA2A, 0x854E,
-	0xBA2C, 0x094E,
-	0xBA2E, 0x1303,
-	0xBA30, 0x03F0,
-	0xBA32, 0x3317,
-	0xBA34, 0xFF00,
-	0xBA36, 0x3377,
-	0xBA38, 0xF701,
-	0xBA3A, 0x3396,
-	0xBA3C, 0xFE00,
-	0xBA3E, 0xB316,
-	0xBA40, 0xFE00,
-	0xBA42, 0x798E,
-	0xBA44, 0xB308,
-	0xBA46, 0xF500,
-	0xBA48, 0xF98E,
-	0xBA4A, 0x8907,
-	0xBA4C, 0x7D47,
-	0xBA4E, 0x19C2,
-	0xBA50, 0x0347,
-	0xBA52, 0x0800,
-	0xBA54, 0x1A86,
-	0xBA56, 0x81C6,
-	0xBA58, 0x0346,
-	0xBA5A, 0x1800,
-	0xBA5C, 0x2206,
-	0xBA5E, 0x518F,
-	0xBA60, 0x2390,
-	0xBA62, 0xE800,
-	0xBA64, 0x03C7,
-	0xBA66, 0xC500,
-	0xBA68, 0x0908,
-	0xBA6A, 0xE3C4,
-	0xBA6C, 0xE7FC,
-	0xBA6E, 0xB7C7,
-	0xBA70, 0x0224,
-	0xBA72, 0x83A7,
-	0xBA74, 0x07B7,
-	0xBA76, 0x1D45,
-	0xBA78, 0x8287,
-	0xBA7A, 0x0100,
-	0xBA7C, 0x1743,
-	0xBA7E, 0x02FC,
-	0xBA80, 0xE702,
-	0xBA82, 0x43A4,
-	0xBA84, 0xB7A7,
-	0xBA86, 0x0224,
-	0xBA88, 0x03C7,
-	0xBA8A, 0x6760,
-	0xBA8C, 0x8547,
-	0xBA8E, 0x630C,
-	0xBA90, 0xF700,
-	0xBA92, 0xB7C7,
-	0xBA94, 0x0224,
-	0xBA96, 0x83A7,
-	0xBA98, 0x07B7,
-	0xBA9A, 0x2145,
-	0xBA9C, 0x8297,
-	0xBA9E, 0x1743,
-	0xBAA0, 0x02FC,
-	0xBAA2, 0x6700,
-	0xBAA4, 0x63A4,
-	0xBAA6, 0x9760,
-	0xBAA8, 0xFFFB,
-	0xBAAA, 0xE780,
-	0xBAAC, 0xE0E8,
-	0xBAAE, 0x75D1,
-	0xBAB0, 0xB7E7,
-	0xBAB2, 0x0024,
-	0xBAB4, 0x83C7,
-	0xBAB6, 0xB7AD,
-	0xBAB8, 0xE9FF,
-	0xBABA, 0xB7B7,
-	0xBABC, 0x0024,
-	0xBABE, 0x03D7,
-	0xBAC0, 0x4733,
-	0xBAC2, 0xB707,
-	0xBAC4, 0x0140,
-	0xBAC6, 0x2399,
-	0xBAC8, 0xE7DC,
-	0xBACA, 0xE1B7,
-	0xBACC, 0x1743,
-	0xBACE, 0x02FC,
-	0xBAD0, 0xE702,
-	0xBAD2, 0x439F,
-	0xBAD4, 0xB7B7,
-	0xBAD6, 0x0224,
-	0xBAD8, 0x9387,
-	0xBADA, 0x87B4,
-	0xBADC, 0x23AE,
-	0xBADE, 0xF194,
-	0xBAE0, 0x3764,
-	0xBAE2, 0x0124,
-	0xBAE4, 0x9D66,
-	0xBAE6, 0xB7B5,
-	0xBAE8, 0x0224,
-	0xBAEA, 0xB7B7,
-	0xBAEC, 0x0224,
-	0xBAEE, 0x1304,
-	0xBAF0, 0x0440,
-	0xBAF2, 0x9387,
-	0xBAF4, 0xC783,
-	0xBAF6, 0x9386,
-	0xBAF8, 0xF6BF,
-	0xBAFA, 0x1146,
-	0xBAFC, 0x9385,
-	0xBAFE, 0x05FB,
-	0xBB00, 0x0545,
-	0xBB02, 0x5CC4,
-	0xBB04, 0x97E0,
-	0xBB06, 0xFFFB,
-	0xBB08, 0xE780,
-	0xBB0A, 0xC0E8,
-	0xBB0C, 0xC166,
-	0xBB0E, 0xB7B5,
-	0xBB10, 0x0224,
-	0xBB12, 0xFD16,
-	0xBB14, 0x3146,
-	0xBB16, 0x9385,
-	0xBB18, 0x4598,
-	0xBB1A, 0x4145,
-	0xBB1C, 0x97E0,
-	0xBB1E, 0xFFFB,
-	0xBB20, 0xE780,
-	0xBB22, 0x40E7,
-	0xBB24, 0x37B7,
-	0xBB26, 0x0224,
-	0xBB28, 0x1307,
-	0xBB2A, 0x87B7,
-	0xBB2C, 0xB7A7,
-	0xBB2E, 0x0224,
-	0xBB30, 0x9387,
-	0xBB32, 0x8754,
-	0xBB34, 0x78C8,
-	0xBB36, 0x37B7,
-	0xBB38, 0x0224,
-	0xBB3A, 0xA380,
-	0xBB3C, 0x070C,
-	0xBB3E, 0x2381,
-	0xBB40, 0x070C,
-	0xBB42, 0x1307,
-	0xBB44, 0xC7C2,
-	0xBB46, 0xB7B7,
-	0xBB48, 0x0224,
-	0xBB4A, 0x18D4,
-	0xBB4C, 0x9387,
-	0xBB4E, 0x472D,
-	0xBB50, 0x37B7,
-	0xBB52, 0x0224,
-	0xBB54, 0x7CC4,
-	0xBB56, 0x1307,
-	0xBB58, 0x873B,
-	0xBB5A, 0xB7B7,
-	0xBB5C, 0x0224,
-	0xBB5E, 0x18C0,
-	0xBB60, 0x9387,
-	0xBB62, 0x4737,
-	0xBB64, 0x23AA,
-	0xBB66, 0xF1A4,
-	0xBB68, 0x1743,
-	0xBB6A, 0x02FC,
-	0xBB6C, 0x6700,
-	0xBB6E, 0xC397,
-	0xBB70, 0x14A6,
-	0xBB72, 0x0224,
-	0xBB74, 0x008D,
-	0xBB76, 0x0000,
-	0xBB78, 0x0000,
-	0xBB7A, 0x803B,
-	0xBB7C, 0x0000,
-	0xBB7E, 0x003F,
-	0xBB80, 0x0000,
-	0xBB82, 0x8043,
-	0xBC98, 0x1743,
-	0xBC9A, 0x02FC,
-	0xBC9C, 0xE702,
-	0xBC9E, 0x8382,
-	0xBCA0, 0x2A84,
-	0xBCA2, 0xEFE0,
-	0xBCA4, 0xBFB9,
-	0xBCA6, 0xA147,
-	0xBCA8, 0x6306,
-	0xBCAA, 0xF400,
-	0xBCAC, 0x1743,
-	0xBCAE, 0x02FC,
-	0xBCB0, 0x6700,
-	0xBCB2, 0x8383,
-	0xBCB4, 0xB7C7,
-	0xBCB6, 0x0224,
-	0xBCB8, 0x83C7,
-	0xBCBA, 0x87B8,
-	0xBCBC, 0xE5DB,
-	0xBCBE, 0xB797,
-	0xBCC0, 0x0124,
-	0xBCC2, 0x9387,
-	0xBCC4, 0x0753,
-	0xBCC6, 0x0567,
-	0xBCC8, 0x3E97,
-	0xBCCA, 0x8346,
-	0xBCCC, 0x07B9,
-	0xBCCE, 0xF9DE,
-	0xBCD0, 0x83C7,
-	0xBCD2, 0x673F,
-	0xBCD4, 0xE1DF,
-	0xBCD6, 0x8357,
-	0xBCD8, 0x47B6,
-	0xBCDA, 0x93E7,
-	0xBCDC, 0x0720,
-	0xBCDE, 0x2312,
-	0xBCE0, 0xF7B6,
-	0xBCE2, 0xE9B7,
-	0xBCE4, 0x1733,
-	0xBCE6, 0x02FC,
-	0xBCE8, 0xE702,
-	0xBCEA, 0x437B,
-	0xBCEC, 0x37C8,
-	0xBCEE, 0x0224,
-	0xBCF0, 0x1308,
-	0xBCF2, 0x48B8,
-	0xBCF4, 0x8348,
-	0xBCF6, 0x4800,
-	0xBCF8, 0x2A8B,
-	0xBCFA, 0xAE8B,
-	0xBCFC, 0x3284,
-	0xBCFE, 0xB684,
-	0xBD00, 0x3A89,
-	0xBD02, 0xBE89,
-	0xBD04, 0x6380,
-	0xBD06, 0x0802,
-	0xBD08, 0xB7A7,
-	0xBD0A, 0x0124,
-	0xBD0C, 0x9387,
-	0xBD0E, 0x0753,
-	0xBD10, 0x03C7,
-	0xBD12, 0x07B9,
-	0xBD14, 0x83C7,
-	0xBD16, 0xB792,
-	0xBD18, 0x11C7,
-	0xBD1A, 0x0347,
-	0xBD1C, 0x5800,
-	0xBD1E, 0xBD8B,
-	0xBD20, 0x6306,
-	0xBD22, 0xF704,
-	0xBD24, 0x37E8,
-	0xBD26, 0x0124,
-	0xBD28, 0x1308,
-	0xBD2A, 0x0887,
-	0xBD2C, 0x832A,
-	0xBD2E, 0x0812,
-	0xBD30, 0x032A,
-	0xBD32, 0x4812,
-	0xBD34, 0x0146,
-	0xBD36, 0xD685,
-	0xBD38, 0x5285,
-	0xBD3A, 0x9730,
-	0xBD3C, 0x01FC,
-	0xBD3E, 0xE780,
-	0xBD40, 0xA0D0,
-	0xBD42, 0xCE87,
-	0xBD44, 0x4A87,
-	0xBD46, 0xA686,
-	0xBD48, 0x2286,
-	0xBD4A, 0xDE85,
-	0xBD4C, 0x5A85,
-	0xBD4E, 0x9740,
-	0xBD50, 0x00FC,
-	0xBD52, 0xE780,
-	0xBD54, 0xA066,
-	0xBD56, 0x0546,
-	0xBD58, 0xD685,
-	0xBD5A, 0x5285,
-	0xBD5C, 0x9730,
-	0xBD5E, 0x01FC,
-	0xBD60, 0xE780,
-	0xBD62, 0x80CE,
-	0xBD64, 0x1733,
-	0xBD66, 0x02FC,
-	0xBD68, 0x6700,
-	0xBD6A, 0xC376,
-	0xBD6C, 0x2315,
-	0xBD6E, 0x0600,
-	0xBD70, 0x9760,
-	0xBD72, 0xFFFB,
-	0xBD74, 0xE780,
-	0xBD76, 0x80BA,
-	0xBD78, 0x01CD,
-	0xBD7A, 0xB797,
-	0xBD7C, 0x0124,
-	0xBD7E, 0x9387,
-	0xBD80, 0x07D7,
-	0xBD82, 0x03C7,
-	0xBD84, 0xC700,
-	0xBD86, 0x59DF,
-	0xBD88, 0x7D17,
-	0xBD8A, 0x2386,
-	0xBD8C, 0xE700,
-	0xBD8E, 0x59BF,
-	0xBD90, 0x9760,
-	0xBD92, 0xFFFB,
-	0xBD94, 0xE780,
-	0xBD96, 0x80B5,
-	0xBD98, 0x6DD1,
-	0xBD9A, 0xB797,
-	0xBD9C, 0x0124,
-	0xBD9E, 0x9387,
-	0xBDA0, 0x07D7,
-	0xBDA2, 0x03C7,
-	0xBDA4, 0xD700,
-	0xBDA6, 0x3DDF,
-	0xBDA8, 0x7D17,
-	0xBDAA, 0xA386,
-	0xBDAC, 0xE700,
-	0xBDAE, 0x9DBF,
-	0xBDB0, 0x1733,
-	0xBDB2, 0x02FC,
-	0xBDB4, 0xE702,
-	0xBDB6, 0x636F,
-	0xBDB8, 0xB7E7,
-	0xBDBA, 0x0124,
-	0xBDBC, 0x9387,
-	0xBDBE, 0x0787,
-	0xBDC0, 0x03AA,
-	0xBDC2, 0x8712,
-	0xBDC4, 0x83A9,
-	0xBDC6, 0xC712,
-	0xBDC8, 0xAE84,
-	0xBDCA, 0x2A84,
-	0xBDCC, 0x3289,
-	0xBDCE, 0xD285,
-	0xBDD0, 0x0146,
-	0xBDD2, 0x4E85,
-	0xBDD4, 0x9730,
-	0xBDD6, 0x01FC,
-	0xBDD8, 0xE780,
-	0xBDDA, 0x00C7,
-	0xBDDC, 0xA685,
-	0xBDDE, 0x4A86,
-	0xBDE0, 0x2285,
-	0xBDE2, 0x9760,
-	0xBDE4, 0xFFFB,
-	0xBDE6, 0xE780,
-	0xBDE8, 0x206A,
-	0xBDEA, 0xAA84,
-	0xBDEC, 0x0546,
-	0xBDEE, 0xD285,
-	0xBDF0, 0x4E85,
-	0xBDF2, 0x9730,
-	0xBDF4, 0x01FC,
-	0xBDF6, 0xE780,
-	0xBDF8, 0x20C5,
-	0xBDFA, 0xB7C7,
-	0xBDFC, 0x0224,
-	0xBDFE, 0x9387,
-	0xBE00, 0x47B8,
-	0xBE02, 0x03C7,
-	0xBE04, 0xE710,
-	0xBE06, 0x15C3,
-	0xBE08, 0x37A7,
-	0xBE0A, 0x0124,
-	0xBE0C, 0x1307,
-	0xBE0E, 0x0753,
-	0xBE10, 0x0346,
-	0xBE12, 0x37B9,
-	0xBE14, 0x8946,
-	0xBE16, 0x631A,
-	0xBE18, 0xD600,
-	0xBE1A, 0x8356,
-	0xBE1C, 0x87BA,
-	0xBE1E, 0xE18E,
-	0xBE20, 0x89C6,
-	0xBE22, 0x9306,
-	0xBE24, 0x0040,
-	0xBE26, 0x6307,
-	0xBE28, 0xD400,
-	0xBE2A, 0x2685,
-	0xBE2C, 0x1733,
-	0xBE2E, 0x02FC,
-	0xBE30, 0x6700,
-	0xBE32, 0xE36A,
-	0xBE34, 0x8326,
-	0xBE36, 0x47B3,
-	0xBE38, 0x7D57,
-	0xBE3A, 0xE388,
-	0xBE3C, 0xE6FE,
-	0xBE3E, 0x03D7,
-	0xBE40, 0x2711,
-	0xBE42, 0x9396,
-	0xBE44, 0x0401,
-	0xBE46, 0xC182,
-	0xBE48, 0x11E3,
-	0xBE4A, 0x3687,
-	0xBE4C, 0xBA84,
-	0xBE4E, 0x2399,
-	0xBE50, 0xD710,
-	0xBE52, 0xE1BF,
-	0xBE54, 0x1733,
-	0xBE56, 0x02FC,
-	0xBE58, 0xE702,
-	0xBE5A, 0x2365,
-	0xBE5C, 0x3729,
-	0xBE5E, 0x0024,
-	0xBE60, 0xB7A4,
-	0xBE62, 0x0124,
-	0xBE64, 0x1309,
-	0xBE66, 0x0933,
-	0xBE68, 0x9384,
-	0xBE6A, 0x0453,
-	0xBE6C, 0x8347,
-	0xBE6E, 0x491A,
-	0xBE70, 0x03C7,
-	0xBE72, 0x24B7,
-	0xBE74, 0x2A84,
-	0xBE76, 0xD98F,
-	0xBE78, 0x6382,
-	0xBE7A, 0x0714,
-	0xBE7C, 0x8347,
-	0xBE7E, 0xE400,
-	0xBE80, 0x0547,
-	0xBE82, 0x2305,
-	0xBE84, 0xE400,
-	0xBE86, 0x99E7,
-	0xBE88, 0x8347,
-	0xBE8A, 0xC400,
-	0xBE8C, 0xD1CF,
-	0xBE8E, 0x83C7,
-	0xBE90, 0x24B7,
-	0xBE92, 0xC5CB,
-	0xBE94, 0xB76A,
-	0xBE96, 0x0124,
-	0xBE98, 0x130A,
-	0xBE9A, 0x0403,
-	0xBE9C, 0x0347,
-	0xBE9E, 0x0400,
-	0xBEA0, 0xA169,
-	0xBEA2, 0xFD19,
-	0xBEA4, 0xA301,
-	0xBEA6, 0xE400,
-	0xBEA8, 0x83A7,
-	0xBEAA, 0x0A4B,
-	0xBEAC, 0x2302,
-	0xBEAE, 0xE400,
-	0xBEB0, 0x0567,
-	0xBEB2, 0xBA97,
-	0xBEB4, 0x83D7,
-	0xBEB6, 0x47E0,
-	0xBEB8, 0x2303,
-	0xBEBA, 0x0400,
-	0xBEBC, 0xB3F7,
-	0xBEBE, 0x3701,
-	0xBEC0, 0x231C,
-	0xBEC2, 0xF400,
-	0xBEC4, 0x9740,
-	0xBEC6, 0xFDFB,
-	0xBEC8, 0xE780,
-	0xBECA, 0x0067,
-	0xBECC, 0x0358,
-	0xBECE, 0x8401,
-	0xBED0, 0xA308,
-	0xBED2, 0xA400,
-	0xBED4, 0x6301,
-	0xBED6, 0x0806,
-	0xBED8, 0x3736,
-	0xBEDA, 0x0520,
-	0xBEDC, 0x1306,
-	0xBEDE, 0x06C8,
-	0xBEE0, 0x8146,
-	0xBEE2, 0x8147,
-	0xBEE4, 0x4145,
-	0xBEE6, 0xB305,
-	0xBEE8, 0xF400,
-	0xBEEA, 0x3357,
-	0xBEEC, 0xF840,
-	0xBEEE, 0x2380,
-	0xBEF0, 0xD502,
-	0xBEF2, 0x058B,
-	0xBEF4, 0x8507,
-	0xBEF6, 0x11C7,
-	0xBEF8, 0x0347,
-	0xBEFA, 0x0600,
-	0xBEFC, 0xBA96,
-	0xBEFE, 0x93F6,
-	0xBF00, 0xF60F,
-	0xBF02, 0x0506,
-	0xBF04, 0xE391,
-	0xBF06, 0xA7FE,
-	0xBF08, 0x2308,
-	0xBF0A, 0xD400,
-	0xBF0C, 0x8347,
-	0xBF0E, 0x491A,
-	0xBF10, 0x03C7,
-	0xBF12, 0x24B7,
-	0xBF14, 0xD98F,
-	0xBF16, 0xC9C3,
-	0xBF18, 0x2307,
-	0xBF1A, 0x0400,
-	0xBF1C, 0x232E,
-	0xBF1E, 0x4401,
-	0xBF20, 0x1733,
-	0xBF22, 0x02FC,
-	0xBF24, 0x6700,
-	0xBF26, 0xA35B,
-	0xBF28, 0x8347,
-	0xBF2A, 0xB400,
-	0xBF2C, 0xA5D7,
-	0xBF2E, 0x83C7,
-	0xBF30, 0x24B7,
-	0xBF32, 0xADF3,
-	0xBF34, 0x39A0,
-	0xBF36, 0x0148,
-	0xBF38, 0x45F1,
-	0xBF3A, 0x231C,
-	0xBF3C, 0x3401,
-	0xBF3E, 0x4E88,
-	0xBF40, 0x61BF,
-	0xBF42, 0xB76A,
-	0xBF44, 0x0124,
-	0xBF46, 0x83A5,
-	0xBF48, 0x0A4B,
-	0xBF4A, 0x8567,
-	0xBF4C, 0x130A,
-	0xBF4E, 0x0403,
-	0xBF50, 0x9387,
-	0xBF52, 0x07E1,
-	0xBF54, 0x1306,
-	0xBF56, 0x8007,
-	0xBF58, 0xBE95,
-	0xBF5A, 0x5285,
-	0xBF5C, 0x9760,
-	0xBF5E, 0x00FC,
-	0xBF60, 0xE780,
-	0xBF62, 0x400A,
-	0xBF64, 0x21C9,
-	0xBF66, 0x2305,
-	0xBF68, 0x0400,
-	0xBF6A, 0x0347,
-	0xBF6C, 0x2401,
-	0xBF6E, 0x8347,
-	0xBF70, 0x6400,
-	0xBF72, 0x8356,
-	0xBF74, 0x4401,
-	0xBF76, 0xA308,
-	0xBF78, 0xE400,
-	0xBF7A, 0x0547,
-	0xBF7C, 0x231C,
-	0xBF7E, 0xD400,
-	0xBF80, 0x2307,
-	0xBF82, 0xE400,
-	0xBF84, 0xA301,
-	0xBF86, 0xF400,
-	0xBF88, 0x2303,
-	0xBF8A, 0x0400,
-	0xBF8C, 0x232E,
-	0xBF8E, 0x4401,
-	0xBF90, 0x1733,
-	0xBF92, 0x02FC,
-	0xBF94, 0x6700,
-	0xBF96, 0xA354,
-	0xBF98, 0x83A5,
-	0xBF9A, 0x0A4B,
-	0xBF9C, 0x8567,
-	0xBF9E, 0x9387,
-	0xBFA0, 0x07E1,
-	0xBFA2, 0x1306,
-	0xBFA4, 0x000F,
-	0xBFA6, 0xBE95,
-	0xBFA8, 0x5285,
-	0xBFAA, 0x9760,
-	0xBFAC, 0x00FC,
-	0xBFAE, 0xE780,
-	0xBFB0, 0x2005,
-	0xBFB2, 0x9DB7,
-	0xBFB4, 0x8347,
-	0xBFB6, 0xA400,
-	0xBFB8, 0xCDDB,
-	0xBFBA, 0xCDB5,
-	0xBFBC, 0x37A5,
-	0xBFBE, 0x0124,
-	0xBFC0, 0x1305,
-	0xBFC2, 0x050C,
-	0xBFC4, 0x9760,
-	0xBFC6, 0xFFFB,
-	0xBFC8, 0xE780,
-	0xBFCA, 0x8043,
-	0xBFCC, 0x45BD,
-	0xBFCE, 0x0100,
-	0xBFD0, 0x1733,
-	0xBFD2, 0x02FC,
-	0xBFD4, 0xE702,
-	0xBFD6, 0x034F,
-	0xBFD8, 0x8347,
-	0xBFDA, 0x1501,
-	0xBFDC, 0xA304,
-	0xBFDE, 0x0500,
-	0xBFE0, 0x2A84,
-	0xBFE2, 0x91EF,
-	0xBFE4, 0x8357,
-	0xBFE6, 0x8501,
-	0xBFE8, 0x99EB,
-	0xBFEA, 0x8347,
-	0xBFEC, 0xF500,
-	0xBFEE, 0xA307,
-	0xBFF0, 0x0500,
-	0xBFF2, 0xA304,
-	0xBFF4, 0xF500,
-	0xBFF6, 0x1733,
-	0xBFF8, 0x02FC,
-	0xBFFA, 0x6700,
-	0xBFFC, 0xE34E,
-	0xBFFE, 0x2285,
-	0xC000, 0x9790,
-	0xC002, 0xFFFB,
-	0xC004, 0xE780,
-	0xC006, 0xC0C4,
-	0xC008, 0x8347,
-	0xC00A, 0x3400,
-	0xC00C, 0x0347,
-	0xC00E, 0x6400,
-	0xC010, 0x8346,
-	0xC012, 0x7400,
-	0xC014, 0xFD17,
-	0xC016, 0x0507,
-	0xC018, 0x93F7,
-	0xC01A, 0xF70F,
-	0xC01C, 0x2303,
-	0xC01E, 0xE400,
-	0xC020, 0xA301,
-	0xC022, 0xF400,
-	0xC024, 0x99C2,
-	0xC026, 0xA303,
-	0xC028, 0x0400,
-	0xC02A, 0xB1EF,
-	0xC02C, 0x0347,
-	0xC02E, 0x1401,
-	0xC030, 0x8356,
-	0xC032, 0x8401,
-	0xC034, 0x8347,
-	0xC036, 0x5400,
-	0xC038, 0x2309,
-	0xC03A, 0xE400,
-	0xC03C, 0x0547,
-	0xC03E, 0x231A,
-	0xC040, 0xD400,
-	0xC042, 0x2304,
-	0xC044, 0xE400,
-	0xC046, 0x231C,
-	0xC048, 0x0400,
-	0xC04A, 0xA308,
-	0xC04C, 0x0400,
-	0xC04E, 0xC5E3,
-	0xC050, 0x8347,
-	0xC052, 0x1400,
-	0xC054, 0x13F7,
-	0xC056, 0x2700,
-	0xC058, 0x19C7,
-	0xC05A, 0x0347,
-	0xC05C, 0x0400,
-	0xC05E, 0x01C7,
-	0xC060, 0x0347,
-	0xC062, 0x2400,
-	0xC064, 0x4DC3,
-	0xC066, 0x858B,
-	0xC068, 0xA5CF,
-	0xC06A, 0xB727,
-	0xC06C, 0x0024,
-	0xC06E, 0x83C7,
-	0xC070, 0x274D,
-	0xC072, 0xD1D3,
-	0xC074, 0xB767,
-	0xC076, 0x0124,
-	0xC078, 0x83A7,
-	0xC07A, 0x074B,
-	0xC07C, 0x0567,
-	0xC07E, 0xBA97,
-	0xC080, 0x2380,
-	0xC082, 0x07E0,
-	0xC084, 0x8DBF,
-	0xC086, 0x0347,
-	0xC088, 0x0401,
-	0xC08A, 0x5C4C,
-	0xC08C, 0x9316,
-	0xC08E, 0x1700,
-	0xC090, 0xB697,
-	0xC092, 0x5CCC,
-	0xC094, 0xB727,
-	0xC096, 0x0024,
-	0xC098, 0x9387,
-	0xC09A, 0x0733,
-	0xC09C, 0x83C6,
-	0xC09E, 0x371A,
-	0xC0A0, 0x89EA,
-	0xC0A2, 0x8346,
-	0xC0A4, 0x6401,
-	0xC0A6, 0xA1DA,
-	0xC0A8, 0xB7A6,
-	0xC0AA, 0x0124,
-	0xC0AC, 0x83C6,
-	0xC0AE, 0x260A,
-	0xC0B0, 0xB9F2,
-	0xC0B2, 0x83C7,
-	0xC0B4, 0x471A,
-	0xC0B6, 0xA1F3,
-	0xC0B8, 0x0346,
-	0xC0BA, 0x0400,
-	0xC0BC, 0xB767,
-	0xC0BE, 0x0124,
-	0xC0C0, 0x83A5,
-	0xC0C2, 0x074B,
-	0xC0C4, 0x3306,
-	0xC0C6, 0xE602,
-	0xC0C8, 0x8567,
-	0xC0CA, 0x9387,
-	0xC0CC, 0x07E1,
-	0xC0CE, 0xBE95,
-	0xC0D0, 0x1305,
-	0xC0D2, 0x0403,
-	0xC0D4, 0x0606,
-	0xC0D6, 0x9760,
-	0xC0D8, 0x00FC,
-	0xC0DA, 0xE780,
-	0xC0DC, 0x60F2,
-	0xC0DE, 0x21BF,
-	0xC0E0, 0x8547,
-	0xC0E2, 0xA304,
-	0xC0E4, 0xF400,
-	0xC0E6, 0x1733,
-	0xC0E8, 0x02FC,
-	0xC0EA, 0x6700,
-	0xC0EC, 0xE33F,
-	0xC0EE, 0xFD17,
-	0xC0F0, 0xA302,
-	0xC0F2, 0xF400,
-	0xC0F4, 0x2285,
-	0xC0F6, 0x9760,
-	0xC0F8, 0xFFFB,
-	0xC0FA, 0xE780,
-	0xC0FC, 0x6011,
-	0xC0FE, 0x1733,
-	0xC100, 0x02FC,
-	0xC102, 0x6700,
-	0xC104, 0x633E,
-	0xC106, 0x2285,
-	0xC108, 0x9760,
-	0xC10A, 0xFFFB,
-	0xC10C, 0xE780,
-	0xC10E, 0x4010,
-	0xC110, 0xDDB5,
-	0xC112, 0x0100,
-	0xC114, 0x8947,
-	0xC116, 0x6303,
-	0xC118, 0xF500,
-	0xC11A, 0x8280,
-	0xC11C, 0x1733,
-	0xC11E, 0x02FC,
-	0xC120, 0xE702,
-	0xC122, 0xA338,
-	0xC124, 0xB784,
-	0xC126, 0x0124,
-	0xC128, 0x9384,
-	0xC12A, 0x04AA,
-	0xC12C, 0x87A7,
-	0xC12E, 0x040A,
-	0xC130, 0x4111,
-	0xC132, 0x37C5,
-	0xC134, 0x0224,
-	0xC136, 0x5396,
-	0xC138, 0x17C0,
-	0xC13A, 0x7400,
-	0xC13C, 0x9145,
-	0xC13E, 0x1305,
-	0xC140, 0xA5B8,
-	0xC142, 0x9750,
-	0xC144, 0xFFFB,
-	0xC146, 0xE780,
-	0xC148, 0x60C3,
-	0xC14A, 0x3719,
-	0xC14C, 0x0140,
-	0xC14E, 0x4205,
-	0xC150, 0x4181,
-	0xC152, 0x130A,
-	0xC154, 0x4924,
-	0xC156, 0xB789,
-	0xC158, 0x0124,
-	0xC15A, 0x37C4,
-	0xC15C, 0x0224,
-	0xC15E, 0xB7CA,
-	0xC160, 0x0224,
-	0xC162, 0x2317,
-	0xC164, 0xA100,
-	0xC166, 0x9389,
-	0xC168, 0x89B1,
-	0xC16A, 0x1304,
-	0xC16C, 0x24B9,
-	0xC16E, 0x938A,
-	0xC170, 0xAABB,
-	0xC172, 0x330A,
-	0xC174, 0x9A40,
-	0xC176, 0x0605,
-	0xC178, 0x2295,
-	0xC17A, 0x8355,
-	0xC17C, 0x2500,
-	0xC17E, 0x0356,
-	0xC180, 0xC100,
-	0xC182, 0x0355,
-	0xC184, 0x0500,
-	0xC186, 0x2104,
-	0xC188, 0x9760,
-	0xC18A, 0x00FC,
-	0xC18C, 0xE780,
-	0xC18E, 0x8082,
-	0xC190, 0x4205,
-	0xC192, 0x4181,
-	0xC194, 0x2390,
-	0xC196, 0xA900,
-	0xC198, 0xB387,
-	0xC19A, 0x4901,
-	0xC19C, 0x2390,
-	0xC19E, 0xA700,
-	0xC1A0, 0x8909,
-	0xC1A2, 0x6305,
-	0xC1A4, 0x5401,
-	0xC1A6, 0x0355,
-	0xC1A8, 0xE100,
-	0xC1AA, 0xF1B7,
-	0xC1AC, 0xB789,
-	0xC1AE, 0x0124,
-	0xC1B0, 0x37CA,
-	0xC1B2, 0x0224,
-	0xC1B4, 0x1309,
-	0xC1B6, 0x0926,
-	0xC1B8, 0x9389,
-	0xC1BA, 0xA9AF,
-	0xC1BC, 0x130A,
-	0xC1BE, 0x2AC3,
-	0xC1C0, 0x8357,
-	0xC1C2, 0xE100,
-	0xC1C4, 0x0356,
-	0xC1C6, 0xC100,
-	0xC1C8, 0x8509,
-	0xC1CA, 0x8607,
-	0xC1CC, 0xA297,
-	0xC1CE, 0x83D5,
-	0xC1D0, 0x2700,
-	0xC1D2, 0x03D5,
-	0xC1D4, 0x0700,
-	0xC1D6, 0x0909,
-	0xC1D8, 0x2104,
-	0xC1DA, 0x9750,
-	0xC1DC, 0x00FC,
-	0xC1DE, 0xE780,
-	0xC1E0, 0x607D,
-	0xC1E2, 0x1375,
-	0xC1E4, 0xF50F,
-	0xC1E6, 0xA38F,
-	0xC1E8, 0xA9FE,
-	0xC1EA, 0x4205,
-	0xC1EC, 0x4181,
-	0xC1EE, 0x231F,
-	0xC1F0, 0xA9FE,
-	0xC1F2, 0xE317,
-	0xC1F4, 0x44FD,
-	0xC1F6, 0xB719,
-	0xC1F8, 0x0140,
-	0xC1FA, 0x3789,
-	0xC1FC, 0x0124,
-	0xC1FE, 0x37CA,
-	0xC200, 0x0224,
-	0xC202, 0x9389,
-	0xC204, 0x291F,
-	0xC206, 0x1309,
-	0xC208, 0xC9B2,
-	0xC20A, 0x130A,
-	0xC20C, 0x2AC6,
-	0xC20E, 0xB389,
-	0xC210, 0x9940,
-	0xC212, 0x8357,
-	0xC214, 0xE100,
-	0xC216, 0x0356,
-	0xC218, 0xC100,
-	0xC21A, 0x8607,
-	0xC21C, 0xA297,
-	0xC21E, 0x83D5,
-	0xC220, 0x2700,
-	0xC222, 0x03D5,
-	0xC224, 0x0700,
-	0xC226, 0x2104,
-	0xC228, 0x9750,
-	0xC22A, 0x00FC,
-	0xC22C, 0xE780,
-	0xC22E, 0x8078,
-	0xC230, 0x4205,
-	0xC232, 0x4181,
-	0xC234, 0x2310,
-	0xC236, 0xA900,
-	0xC238, 0xB307,
-	0xC23A, 0x3901,
-	0xC23C, 0x2390,
-	0xC23E, 0xA700,
-	0xC240, 0x0909,
-	0xC242, 0xE318,
-	0xC244, 0x44FD,
-	0xC246, 0xB717,
-	0xC248, 0x0140,
-	0xC24A, 0x3789,
-	0xC24C, 0x0124,
-	0xC24E, 0xB7C9,
-	0xC250, 0x0224,
-	0xC252, 0x9387,
-	0xC254, 0xA720,
-	0xC256, 0x1309,
-	0xC258, 0x69B4,
-	0xC25A, 0x9389,
-	0xC25C, 0x29C9,
-	0xC25E, 0xB384,
-	0xC260, 0x9740,
-	0xC262, 0x8357,
-	0xC264, 0xE100,
-	0xC266, 0x0356,
-	0xC268, 0xC100,
-	0xC26A, 0x8607,
-	0xC26C, 0xA297,
-	0xC26E, 0x83D5,
-	0xC270, 0x2700,
-	0xC272, 0x03D5,
-	0xC274, 0x0700,
-	0xC276, 0x2104,
-	0xC278, 0x9750,
-	0xC27A, 0x00FC,
-	0xC27C, 0xE780,
-	0xC27E, 0x8073,
-	0xC280, 0x4205,
-	0xC282, 0x4181,
-	0xC284, 0x2310,
-	0xC286, 0xA900,
-	0xC288, 0xB307,
-	0xC28A, 0x9900,
-	0xC28C, 0x2390,
-	0xC28E, 0xA700,
-	0xC290, 0x0909,
-	0xC292, 0xE318,
-	0xC294, 0x34FD,
-	0xC296, 0x4101,
-	0xC298, 0x1733,
-	0xC29A, 0x02FC,
-	0xC29C, 0x6700,
-	0xC29E, 0x2324,
-	0xC2A0, 0x1733,
-	0xC2A2, 0x02FC,
-	0xC2A4, 0xE702,
-	0xC2A6, 0x0322,
-	0xC2A8, 0x2A84,
-	0xC2AA, 0xEFE0,
-	0xC2AC, 0x3F98,
-	0xC2AE, 0x1DE0,
-	0xC2B0, 0xB797,
-	0xC2B2, 0x0124,
-	0xC2B4, 0x9387,
-	0xC2B6, 0x0753,
-	0xC2B8, 0x0D67,
-	0xC2BA, 0x3E97,
-	0xC2BC, 0x0327,
-	0xC2BE, 0x876E,
-	0xC2C0, 0x058B,
-	0xC2C2, 0x09CB,
-	0xC2C4, 0x3787,
-	0xC2C6, 0x0040,
-	0xC2C8, 0x0357,
-	0xC2CA, 0x87F4,
-	0xC2CC, 0xA146,
-	0xC2CE, 0x618B,
-	0xC2D0, 0x6306,
-	0xC2D2, 0xD700,
-	0xC2D4, 0x1733,
-	0xC2D6, 0x02FC,
-	0xC2D8, 0x6700,
-	0xC2DA, 0x0321,
-	0xC2DC, 0x0567,
-	0xC2DE, 0xBA97,
-	0xC2E0, 0x2389,
-	0xC2E2, 0x07B6,
-	0xC2E4, 0xC5BF,
-	0xC2E6, 0x0100,
-	0xC2E8, 0x9147,
-	0xC2EA, 0x6303,
-	0xC2EC, 0xF500,
-	0xC2EE, 0x8280,
-	0xC2F0, 0x1733,
-	0xC2F2, 0x02FC,
-	0xC2F4, 0xE702,
-	0xC2F6, 0x031D,
-	0xC2F8, 0x9750,
-	0xC2FA, 0xFFFB,
-	0xC2FC, 0xE780,
-	0xC2FE, 0xC063,
-	0xC300, 0x09C5,
-	0xC302, 0x1733,
-	0xC304, 0x02FC,
-	0xC306, 0x6700,
-	0xC308, 0x231E,
-	0xC30A, 0x9750,
-	0xC30C, 0xFFFB,
-	0xC30E, 0xE780,
-	0xC310, 0xE05D,
-	0xC312, 0x65F9,
-	0xC314, 0xB7C7,
-	0xC316, 0x0224,
-	0xC318, 0x03D7,
-	0xC31A, 0x67B8,
-	0xC31C, 0xB7F7,
-	0xC31E, 0x0040,
-	0xC320, 0x2390,
-	0xC322, 0xE73E,
-	0xC324, 0xF9BF,
-	0xC326, 0x0100,
-	0xC328, 0x37C7,
-	0xC32A, 0x0224,
-	0xC32C, 0x1307,
-	0xC32E, 0x47B8,
-	0xC330, 0x8345,
-	0xC332, 0x0700,
-	0xC334, 0xB7A7,
-	0xC336, 0x0224,
-	0xC338, 0xB7D6,
-	0xC33A, 0x0124,
-	0xC33C, 0x03D6,
-	0xC33E, 0x4760,
-	0xC340, 0x23A8,
-	0xC342, 0xB6DA,
-	0xC344, 0xB767,
-	0xC346, 0x0124,
-	0xC348, 0xB7C6,
-	0xC34A, 0x0224,
-	0xC34C, 0x9387,
-	0xC34E, 0x0740,
-	0xC350, 0x9386,
-	0xC352, 0x86C9,
-	0xC354, 0xD4C7,
-	0xC356, 0x09CA,
-	0xC358, 0xB7B6,
-	0xC35A, 0x0224,
-	0xC35C, 0x3726,
-	0xC35E, 0x0024,
-	0xC360, 0x9386,
-	0xC362, 0x8668,
-	0xC364, 0x2320,
-	0xC366, 0xD6CE,
-	0xC368, 0x2319,
-	0xC36A, 0x0710,
-	0xC36C, 0x37C7,
-	0xC36E, 0x0224,
-	0xC370, 0x1307,
-	0xC372, 0x072A,
-	0xC374, 0xB7C6,
-	0xC376, 0x0224,
-	0xC378, 0x98D7,
-	0xC37A, 0x37C7,
-	0xC37C, 0x0224,
-	0xC37E, 0x9386,
-	0xC380, 0x4611,
-	0xC382, 0x1307,
-	0xC384, 0x872E,
-	0xC386, 0x23A4,
-	0xC388, 0xD1A4,
-	0xC38A, 0xD8C3,
-	0xC38C, 0x8280,
-	0xC38E, 0x0100,
-	0xC390, 0x1733,
-	0xC392, 0x02FC,
-	0xC394, 0xE702,
-	0xC396, 0x0313,
-	0xC398, 0xB7C6,
-	0xC39A, 0x0224,
-	0xC39C, 0xB787,
-	0xC39E, 0x0324,
-	0xC3A0, 0x9386,
-	0xC3A2, 0x863E,
-	0xC3A4, 0x37A7,
-	0xC3A6, 0x0124,
-	0xC3A8, 0x9387,
-	0xC3AA, 0x07FF,
-	0xC3AC, 0x1307,
-	0xC3AE, 0x0753,
-	0xC3B0, 0x958F,
-	0xC3B2, 0x232C,
-	0xC3B4, 0xD7B4,
-	0xC3B6, 0x232E,
-	0xC3B8, 0xF7B4,
-	0xC3BA, 0x9720,
-	0xC3BC, 0x01FC,
-	0xC3BE, 0xE780,
-	0xC3C0, 0x600C,
-	0xC3C2, 0x11C5,
-	0xC3C4, 0xEFE0,
-	0xC3C6, 0x0F80,
-	0xC3C8, 0xEFF0,
-	0xC3CA, 0x4FF0,
-	0xC3CC, 0xB13F,
-	0xC3CE, 0x1733,
-	0xC3D0, 0x02FC,
-	0xC3D2, 0x6700,
-	0xC3D4, 0x6311,
-	0xC3D6, 0x0000,
-	0xC3D8, 0xA310,
-	0xC3DA, 0xE538,
-	0xC3DC, 0x0000,
-	0xC3DE, 0x0000,
-	0xC3E0, 0xBEFF,
-	0xC3E2, 0x0F00,
-	0xC3E4, 0x0000,
-	0xC3E6, 0x0000,
-	0xFCFC, 0x2002,
-	0x849C, 0x0100,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0x84A4, 0x0000,
-	0x84A6, 0x0000,
-	0x84A8, 0x0000,
-	0x84AA, 0x0001,
-	0x84AC, 0x01FF,
-	0x84B0, 0x8089,
-	0x84B2, 0x0000,
-	0x84B4, 0x8889,
-	0x84B6, 0x0000,
-	0x84B8, 0xC097,
-	0x84BA, 0x0000,
-	0x84BC, 0xA60E,
-	0x84BE, 0x0000,
-	0x84C0, 0x2206,
-	0x84C2, 0x0000,
-	0x84C4, 0x0010,
-	0x84C8, 0x90C3,
-	0x84CA, 0x0224,
-	0x84CC, 0x44AB,
-	0x84CE, 0x0224,
-	0x84D0, 0x44AB,
-	0x84D2, 0x0224,
-	0x84D4, 0x44AB,
-	0x84D6, 0x0224,
-	0x84D8, 0x44AB,
-	0x84DA, 0x0224,
-	0x84DC, 0x44AB,
-	0x84DE, 0x0224,
-	0xA548, 0x001D,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xA56C, 0x0000,
-	0xA56E, 0x0000,
-	0xA570, 0x0000,
-	0xA572, 0x0000,
-	0xA574, 0x00D5,
-	0xA576, 0x0000,
-	0xA578, 0x0000,
-	0xA57A, 0x0000,
-	0xA57C, 0x0000,
-	0xA57E, 0x0000,
-	0xA580, 0x0000,
-	0xA582, 0x0000,
-	0xA584, 0x0000,
-	0xA586, 0x0000,
-	0xA588, 0x0000,
-	0xA58A, 0x0000,
-	0xA58C, 0x0000,
-	0xA58E, 0x0000,
-	0xA590, 0x0000,
-	0xA592, 0x0000,
-	0xA594, 0x0000,
-	0xA596, 0x0000,
-	0xA598, 0x0000,
-	0xA59A, 0x0000,
-	0xA59C, 0x0000,
-	0xA59E, 0x0000,
-	0xA5A0, 0x0100,
-	0xA5A2, 0x0036,
-	0xA5A4, 0x0000,
-	0xA5A6, 0x0000,
-	0xA5A8, 0x0000,
-	0xA5AA, 0x0000,
-	0xA5AC, 0x0000,
-	0xA5AE, 0x0000,
-	0xA5B0, 0x0000,
-	0xA5B2, 0x0000,
-	0xA5B4, 0x0000,
-	0xA5B6, 0x0000,
-	0xA5B8, 0x0000,
-	0xA5BA, 0x0000,
-	0xA5BC, 0x0000,
-	0xA5BE, 0x0000,
-	0xA5C0, 0x0000,
-	0xA5C2, 0x0000,
-	0xA5C4, 0x0000,
-	0xA5C6, 0x0000,
-	0xA5C8, 0x0000,
-	0xA5CA, 0x0000,
-	0xA5CC, 0x0000,
-	0xA5CE, 0x0000,
-	0xA5D0, 0x0000,
-	0xA5D2, 0x0000,
-	0xA5D4, 0x0000,
-	0xA5D6, 0x0000,
-	0xA5D8, 0x0000,
-	0xA5DA, 0x0000,
-	0xA5DC, 0x0000,
-	0xA5DE, 0x0000,
-	0xA5E0, 0x0000,
-	0xA5E2, 0x0000,
-	0xA5E4, 0x0000,
-	0xA5E6, 0x0000,
-	0xA5E8, 0x0000,
-	0xA5EA, 0x0000,
-	0xA5EC, 0x000F,
-	0xA5EE, 0x000F,
-	0xA5F0, 0x000F,
-	0xA5F2, 0x000F,
-	0xA5F4, 0x0000,
-	0xA5F6, 0x0000,
-	0xA5F8, 0x0000,
-	0xA5FA, 0x0000,
-	0xA5FC, 0x0000,
-	0xA5FE, 0x0000,
-	0xA600, 0x0000,
-	0xA602, 0x0000,
-	0xA604, 0x0000,
-	0xA606, 0x00C6,
-	0xBB84, 0x0001,
-	0xBB86, 0x0000,
-	0xBB88, 0x0000,
-	0xBB8A, 0x0100,
-	0xBB8C, 0x0800,
-	0xBB8E, 0x1000,
-	0xBB90, 0x2000,
-	0xBB92, 0x9A00,
-	0xBB94, 0x9A00,
-	0xBB96, 0x9A00,
-	0xBB98, 0x9A00,
-	0xBB9A, 0x9600,
-	0xBB9C, 0x9600,
-	0xBB9E, 0x9600,
-	0xBBA0, 0x9600,
-	0xBBA2, 0x9300,
-	0xBBA4, 0x9300,
-	0xBBA6, 0x9300,
-	0xBBA8, 0x9300,
-	0xBBAA, 0x9000,
-	0xBBAC, 0x9000,
-	0xBBAE, 0x9000,
-	0xBBB0, 0x9000,
-	0xBBB2, 0x8D00,
-	0xBBB4, 0x8D00,
-	0xBBB6, 0x8D00,
-	0xBBB8, 0x8D00,
-	0xBBBA, 0x3F00,
-	0xBBBC, 0x3F00,
-	0xBBBE, 0x3F00,
-	0xBBC0, 0x3F00,
-	0xBBC2, 0x1E00,
-	0xBBC4, 0x1E00,
-	0xBBC6, 0x1E00,
-	0xBBC8, 0x1E00,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0000,
-	0xBBD2, 0x0800,
-	0xBBD4, 0x0800,
-	0xBBD6, 0x0800,
-	0xBBD8, 0x0800,
-	0xBBDA, 0x0000,
-	0xBBDC, 0x0000,
-	0xBBDE, 0x0000,
-	0xBBE0, 0x0000,
-	0xBBE2, 0x3F00,
-	0xBBE4, 0x3F00,
-	0xBBE6, 0x3F00,
-	0xBBE8, 0x3F00,
-	0xBBEA, 0x3400,
-	0xBBEC, 0x3400,
-	0xBBEE, 0x3400,
-	0xBBF0, 0x3400,
-	0xBBF2, 0x0A00,
-	0xBBF4, 0x0A00,
-	0xBBF6, 0x0A00,
-	0xBBF8, 0x0A00,
-	0xBBFA, 0x1000,
-	0xBBFC, 0x1000,
-	0xBBFE, 0x1000,
-	0xBC00, 0x1000,
-	0xBC02, 0x0600,
-	0xBC04, 0x0600,
-	0xBC06, 0x0600,
-	0xBC08, 0x0600,
-	0xBC0A, 0x0C00,
-	0xBC0C, 0x0C00,
-	0xBC0E, 0x0C00,
-	0xBC10, 0x0C00,
-	0xBC12, 0x0000,
-	0xBC14, 0x0000,
-	0xBC16, 0x0000,
-	0xBC18, 0x0000,
-	0xBC1A, 0x1000,
-	0xBC1C, 0x1000,
-	0xBC1E, 0x1000,
-	0xBC20, 0x1000,
-	0xBC22, 0x1000,
-	0xBC24, 0x1000,
-	0xBC26, 0x1000,
-	0xBC28, 0x1000,
-	0xBC2A, 0x2000,
-	0xBC2C, 0x1000,
-	0xBC2E, 0x1000,
-	0xBC30, 0x1000,
-	0xBC32, 0x0600,
-	0xBC34, 0x0600,
-	0xBC36, 0x0600,
-	0xBC38, 0x0600,
-	0xBC3A, 0x1C00,
-	0xBC3C, 0x1C00,
-	0xBC3E, 0x1C00,
-	0xBC40, 0x1C00,
-	0xBC42, 0x0600,
-	0xBC44, 0x0600,
-	0xBC46, 0x0600,
-	0xBC48, 0x0600,
-	0xBC4A, 0x2A00,
-	0xBC4C, 0x2A00,
-	0xBC4E, 0x2A00,
-	0xBC50, 0x2A00,
-	0xBC52, 0x0200,
-	0xBC54, 0x0200,
-	0xBC56, 0x0200,
-	0xBC58, 0x0200,
-	0xBC5A, 0x1000,
-	0xBC5C, 0x1000,
-	0xBC5E, 0x1000,
-	0xBC60, 0x1000,
-	0xBC62, 0x0E00,
-	0xBC64, 0x0E00,
-	0xBC66, 0x0E00,
-	0xBC68, 0x0E00,
-	0xBC6A, 0x2800,
-	0xBC6C, 0x2800,
-	0xBC6E, 0x2800,
-	0xBC70, 0x2800,
-	0xBC72, 0x1800,
-	0xBC74, 0x1800,
-	0xBC76, 0x1800,
-	0xBC78, 0x1800,
-	0xBC7A, 0x0800,
-	0xBC7C, 0x0800,
-	0xBC7E, 0x0800,
-	0xBC80, 0x0800,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x0000,
-	0xBC8A, 0x2400,
-	0xBC8C, 0x2400,
-	0xBC8E, 0x2400,
-	0xBC90, 0x2400,
-	0xBC92, 0x0088,
-	0xFCFC, 0x2001,
-	0x5634, 0x041D,
-	0x5636, 0x0420,
-	0x5638, 0x3C85,
-	0x563A, 0x0224,
-	0x563C, 0x3CE6,
-	0x563E, 0x0320,
-	0x5640, 0xD885,
-	0x5642, 0x0224,
-	0x5644, 0xD06E,
-	0x5646, 0x0320,
-	0x5648, 0xC48D,
-	0x564A, 0x0224,
-	0x564C, 0x4877,
-	0x564E, 0x0320,
-	0x5650, 0xCC90,
-	0x5652, 0x0224,
-	0x5654, 0x6812,
-	0x5656, 0x0320,
-	0x5658, 0xB88F,
-	0x565A, 0x0224,
-	0x565C, 0xE8FE,
-	0x565E, 0x0220,
-	0x5660, 0x5491,
-	0x5662, 0x0224,
-	0x5664, 0xA462,
-	0x5666, 0x0320,
-	0x5668, 0x9C95,
-	0x566A, 0x0224,
-	0x566C, 0x901B,
-	0x566E, 0x0020,
-	0x5670, 0x2896,
-	0x5672, 0x0224,
-	0x5674, 0xC446,
-	0x5676, 0x0320,
-	0x5678, 0xE896,
-	0x567A, 0x0224,
-	0x567C, 0x1427,
-	0x567E, 0x0320,
-	0x5680, 0xC498,
-	0x5682, 0x0224,
-	0x5684, 0x304C,
-	0x5686, 0x0220,
-	0x5688, 0x749B,
-	0x568A, 0x0224,
-	0x568C, 0xC82C,
-	0x568E, 0x0220,
-	0x5690, 0xD09B,
-	0x5692, 0x0224,
-	0x5694, 0x484F,
-	0x5696, 0x0220,
-	0x5698, 0x289C,
-	0x569A, 0x0224,
-	0x569C, 0xB041,
-	0x569E, 0x0220,
-	0x56A0, 0x3C9A,
-	0x56A2, 0x0224,
-	0x56A4, 0xC81D,
-	0x56A6, 0x0420,
-	0x56A8, 0xFC9A,
-	0x56AA, 0x0224,
-	0x56AC, 0xAC7F,
-	0x56AE, 0x0420,
-	0x56B0, 0x8C86,
-	0x56B2, 0x0224,
-	0x56B4, 0x7C80,
-	0x56B6, 0x0420,
-	0x56B8, 0x1086,
-	0x56BA, 0x0224,
-	0x56BC, 0xF887,
-	0x56BE, 0x0320,
-	0x56C0, 0x7CAC,
-	0x56C2, 0x0224,
-	0x56C4, 0x1007,
-	0x56C6, 0x0320,
-	0x56C8, 0xE08E,
-	0x56CA, 0x0224,
-	0x56CC, 0x1409,
-	0x56CE, 0x0020,
-	0x56D0, 0x2495,
-	0x56D2, 0x0224,
-	0x56D4, 0x2046,
-	0x56D6, 0x0420,
-	0x56D8, 0xC087,
-	0x56DA, 0x0224,
-	0x56DC, 0xB05B,
-	0x56DE, 0x0420,
-	0x56E0, 0x4088,
-	0x56E2, 0x0224,
-	0x56E4, 0x505C,
-	0x56E6, 0x0320,
-	0x56E8, 0x448A,
-	0x56EA, 0x0224,
-	0x56EC, 0xA45B,
-	0x56EE, 0x0320,
-	0x56F0, 0x5089,
-	0x56F2, 0x0224,
-	0x56F4, 0x306A,
-	0x56F6, 0x0420,
-	0x56F8, 0x1485,
-	0x56FA, 0x0224,
-	0x56FC, 0x90F8,
-	0x56FE, 0x0220,
-	0x5700, 0x44A1,
-	0x5702, 0x0224,
-	0x5704, 0x0454,
-	0x5706, 0x0120,
-	0x5708, 0x18A6,
-	0x570A, 0x0224,
-	0x570C, 0x0453,
-	0x570E, 0x0020,
-	0x5710, 0xA0A7,
-	0x5712, 0x0224,
-	0x5714, 0xC850,
-	0x5716, 0x0220,
-	0x5718, 0xB8AC,
-	0x571A, 0x0224,
-	0x571C, 0x2C88,
-	0x571E, 0x0220,
-	0x5720, 0xF0AD,
-	0x5722, 0x0224,
-	0x5724, 0x7C82,
-	0x5726, 0x0120,
-	0x5728, 0xC8B4,
-	0x572A, 0x0224,
-	0x572C, 0xACF3,
-	0x572E, 0x0320,
-	0x5730, 0x64B5,
-	0x5732, 0x0224,
-	0x5734, 0x1081,
-	0x5736, 0x0320,
-	0x5738, 0x70B9,
-	0x573A, 0x0224,
-	0x573C, 0xBCFD,
-	0x573E, 0x0220,
-	0x5740, 0xE4B9,
-	0x5742, 0x0224,
-	0x5744, 0xBCA5,
-	0x5746, 0x0420,
-	0x5748, 0x7CBA,
-	0x574A, 0x0224,
-	0x574C, 0xB803,
-	0x574E, 0x0320,
-	0x5750, 0xE4BC,
-	0x5752, 0x0224,
-	0x5754, 0x8424,
-	0x5756, 0x0220,
-	0x5758, 0xB0BD,
-	0x575A, 0x0224,
-	0x575C, 0x9C4C,
-	0x575E, 0x0220,
-	0x5760, 0xD0BF,
-	0x5762, 0x0224,
-	0x5764, 0x0C22,
-	0x5766, 0x0220,
-	0x5768, 0x54BE,
-	0x576A, 0x0224,
-	0xFCFC, 0x2000,
-	0x2366, 0x001C,
-	0x2368, 0x001C,
-	0x238E, 0x3F28,
-	0x2398, 0x5037,
-	0x24B8, 0x0101,
-	0x66E4, 0x1E8D,
-	0x66E6, 0x0000,
-	0x6874, 0x0000,
-	0x6876, 0x0000,
-	0x6878, 0x0000,
-	0x687A, 0x0000,
-	0x6884, 0x0100,
-	0x6886, 0x0100,
-	0x6888, 0x0100,
-	0x688A, 0x0100,
-	0x793E, 0x0100,
-	0x7940, 0x7017,
-	0x795C, 0x0400,
-	0x795E, 0x0400,
-	0x7960, 0x0800,
-	0x7962, 0x1000,
-	0x7964, 0x0800,
-	0x7966, 0x1000,
-	0x7968, 0x0800,
-	0x796A, 0x0800,
-	0x796C, 0x0800,
-	0x796E, 0x0800,
-	0x7972, 0x0400,
-	0x7974, 0x0400,
-	0x7976, 0x0800,
-	0x7978, 0x1000,
-	0x797A, 0x0800,
-	0x797C, 0x1000,
-	0x797E, 0x0800,
-	0x7980, 0x0800,
-	0x7982, 0x0800,
-	0x7984, 0x0800,
-	0xB3AC, 0x4000,
-	0xB3B4, 0x2000,
-	0xB3B8, 0x1000,
-	0xB3F8, 0x8000,
-	0xB400, 0x4000,
-	0xB404, 0x2000,
-	0xBF70, 0x3A46,
-	0xBF7C, 0x0800,
-	0xC4A8, 0x0000,
-	0xC4F8, 0x00A8,
-	0xC4FA, 0x0000,
-	0xD3DA, 0x0D00,
-	0xD3E0, 0x0D00,
-	0xD3E2, 0x0D00,
-	0xD3E4, 0x0D00,
-	0xD3E6, 0x0D00,
-	0xD3EA, 0x0D00,
-	0xD3F4, 0x301C,
-	0xD3F8, 0x301C,
-	0xDD6C, 0xB47E,
-	0xDD6E, 0xB67E,
-	0xDE34, 0x0000,
-	0xDE36, 0x9231,
-	0xEC42, 0x0100,
-	0xEC44, 0x0100,
-	0xFCFC, 0x2001,
-	0x2542, 0x2020,
-	0x2544, 0x2018,
-	0x2554, 0x0000,
-	0x2556, 0x0000,
-	0x256E, 0x0000,
-	0x25D2, 0x0102,
-	0x2936, 0x4400,
-	0x2A14, 0x0002,
-	0x2A16, 0xDF03,
-	0x2A18, 0x0002,
-	0x2A1A, 0x0002,
-	0x3252, 0x8C00,
-	0x3254, 0x8C00,
-	0x3256, 0x8C00,
-	0x3258, 0x8700,
-	0x325A, 0x8200,
-	0x3E1C, 0x0200,
-	0x3E1E, 0x2000,
-	0x5ACC, 0x6505,
-	0xFCFC, 0x4000,
-	0x1858, 0x123F,
-	0xFCFC, 0x2001,
-	0x3EB8, 0x00FF,
-	0x3ECC, 0xFE03,
-	0x3F12, 0x9001,
-	0x33E0, 0x1E00,
-	0x33E2, 0x1E00,
-	0x33E4, 0x1E00,
-	0x33E6, 0x1E00,
-	0x33E8, 0x1E00,
-	0x33EA, 0x1E00,
-	0x3440, 0x0500,
-	0x3442, 0x0500,
-	0x3444, 0x0500,
-	0x3446, 0x0500,
-	0x3448, 0x0500,
-	0x344A, 0x0500,
-	0x3450, 0x0A00,
-	0x3452, 0x0A00,
-	0x3454, 0x0A00,
-	0x3456, 0x0A00,
-	0x3458, 0x0A00,
-	0x345A, 0x0A00,
-	0x34E0, 0x1400,
-	0x34E2, 0x1400,
-	0x34E4, 0x1400,
-	0x34E6, 0x1400,
-	0x34E8, 0x1400,
-	0x34EA, 0x1400,
-	0x3500, 0x1400,
-	0x3502, 0x1400,
-	0x3504, 0x1400,
-	0x3506, 0x1400,
-	0x3508, 0x1400,
-	0x350A, 0x1400,
-	0x3520, 0x1400,
-	0x3522, 0x1400,
-	0x3524, 0x1400,
-	0x3526, 0x1400,
-	0x3528, 0x1400,
-	0x352A, 0x1400,
-	0x3580, 0x2300,
-	0x3582, 0x2300,
-	0x3584, 0x2300,
-	0x3586, 0x2300,
-	0x3588, 0x2300,
-	0x358A, 0x2300,
-	0x35A0, 0x1900,
-	0x35A2, 0x1900,
-	0x35A4, 0x1900,
-	0x35A6, 0x1900,
-	0x35A8, 0x1900,
-	0x35AA, 0x1900,
-	0x35D0, 0x1E00,
-	0x35D2, 0x1E00,
-	0x35D4, 0x1E00,
-	0x35D6, 0x1E00,
-	0x35D8, 0x1E00,
-	0x35DA, 0x1E00,
-	0x35E0, 0x1E00,
-	0x35E2, 0x1E00,
-	0x35E4, 0x1E00,
-	0x35E6, 0x1E00,
-	0x35E8, 0x1E00,
-	0x35EA, 0x1E00,
-	0x35F0, 0x1E00,
-	0x35F2, 0x1E00,
-	0x35F4, 0x1E00,
-	0x35F6, 0x1E00,
-	0x35F8, 0x1E00,
-	0x35FA, 0x1E00,
-	0x3600, 0x1E00,
-	0x3602, 0x1E00,
-	0x3604, 0x1E00,
-	0x3606, 0x1E00,
-	0x3608, 0x1E00,
-	0x360A, 0x1E00,
-	0x3610, 0x1E00,
-	0x3612, 0x1E00,
-	0x3614, 0x1E00,
-	0x3616, 0x1E00,
-	0x3618, 0x1E00,
-	0x361A, 0x1E00,
-	0x3620, 0x0000,
-	0x3622, 0x0000,
-	0x3624, 0x0000,
-	0x3626, 0x0000,
-	0x3628, 0x0000,
-	0x362A, 0x0000,
-	0x3630, 0x0A00,
-	0x3632, 0x0A00,
-	0x3634, 0x0A00,
-	0x3636, 0x0A00,
-	0x3638, 0x0A00,
-	0x363A, 0x0A00,
-	0x3650, 0x1E00,
-	0x3652, 0x1E00,
-	0x3654, 0x1E00,
-	0x3656, 0x1E00,
-	0x3658, 0x1E00,
-	0x365A, 0x1E00,
-	0x3660, 0x1E00,
-	0x3662, 0x1E00,
-	0x3664, 0x1E00,
-	0x3666, 0x1E00,
-	0x3668, 0x1E00,
-	0x366A, 0x1E00,
-	0x36A0, 0x6400,
-	0x36A2, 0x6400,
-	0x36A4, 0x6400,
-	0x36A6, 0x6400,
-	0x36A8, 0x6400,
-	0x36AA, 0x6400,
-	0x36C0, 0x8C00,
-	0x36C2, 0x8C00,
-	0x36C4, 0x8C00,
-	0x36C6, 0x8C00,
-	0x36C8, 0x8C00,
-	0x36CA, 0x8C00,
-	0x36E0, 0x6400,
-	0x36E2, 0x6400,
-	0x36E4, 0x6400,
-	0x36E6, 0x6400,
-	0x36E8, 0x6400,
-	0x36EA, 0x6400,
-	0x36F0, 0x3200,
-	0x36F2, 0x3200,
-	0x36F4, 0x3200,
-	0x36F6, 0x3200,
-	0x36F8, 0x3200,
-	0x36FA, 0x3200,
-	0x3700, 0x3200,
-	0x3702, 0x3200,
-	0x3704, 0x3200,
-	0x3706, 0x3200,
-	0x3708, 0x3200,
-	0x370A, 0x3200,
-	0x3720, 0x3200,
-	0x3722, 0x3200,
-	0x3724, 0x3200,
-	0x3726, 0x3200,
-	0x3728, 0x3200,
-	0x372A, 0x3200,
-	0x3730, 0x3200,
-	0x3732, 0x3200,
-	0x3734, 0x3200,
-	0x3736, 0x3200,
-	0x3738, 0x3200,
-	0x373A, 0x3200,
-	0x3790, 0x3200,
-	0x3792, 0x3200,
-	0x3794, 0x3200,
-	0x3796, 0x3200,
-	0x3798, 0x3200,
-	0x379A, 0x3200,
-	0x37A0, 0x5000,
-	0x37A2, 0x5000,
-	0x37A4, 0x5000,
-	0x37A6, 0x5000,
-	0x37A8, 0x5000,
-	0x37AA, 0x5000,
-	0x37B0, 0x6400,
-	0x37B2, 0x6400,
-	0x37B4, 0x6400,
-	0x37B6, 0x6400,
-	0x37B8, 0x6400,
-	0x37BA, 0x6400,
-	0x37C0, 0x5000,
-	0x37C2, 0x5000,
-	0x37C4, 0x5000,
-	0x37C6, 0x5000,
-	0x37C8, 0x5000,
-	0x37CA, 0x5000,
-	0x37D0, 0x3200,
-	0x37D2, 0x3200,
-	0x37D4, 0x3200,
-	0x37D6, 0x3200,
-	0x37D8, 0x3200,
-	0x37DA, 0x3200,
-	0x37E0, 0x1E00,
-	0x37E2, 0x1E00,
-	0x37E4, 0x1E00,
-	0x37E6, 0x1E00,
-	0x37E8, 0x1E00,
-	0x37EA, 0x1E00,
-	0x37F0, 0x1E00,
-	0x37F2, 0x1E00,
-	0x37F4, 0x1E00,
-	0x37F6, 0x1E00,
-	0x37F8, 0x1E00,
-	0x37FA, 0x1E00,
-	0x3800, 0x1E00,
-	0x3802, 0x1E00,
-	0x3804, 0x1E00,
-	0x3806, 0x1E00,
-	0x3808, 0x1E00,
-	0x380A, 0x1E00,
-	0x3810, 0x1E00,
-	0x3812, 0x1E00,
-	0x3814, 0x1E00,
-	0x3816, 0x1E00,
-	0x3818, 0x1E00,
-	0x381A, 0x1E00,
-	0x3820, 0x1E00,
-	0x3822, 0x1E00,
-	0x3824, 0x1E00,
-	0x3826, 0x1E00,
-	0x3828, 0x1E00,
-	0x382A, 0x1E00,
-	0x3870, 0x3200,
-	0x3872, 0x3200,
-	0x3874, 0x3200,
-	0x3876, 0x3200,
-	0x3878, 0x3200,
-	0x387A, 0x3200,
-	0x3880, 0x3200,
-	0x3882, 0x3200,
-	0x3884, 0x3200,
-	0x3886, 0x3200,
-	0x3888, 0x3200,
-	0x388A, 0x3200,
-	0x3890, 0x3200,
-	0x3892, 0x3200,
-	0x3894, 0x3200,
-	0x3896, 0x3200,
-	0x3898, 0x3200,
-	0x389A, 0x3200,
-	0x38A0, 0x3200,
-	0x38A2, 0x3200,
-	0x38A4, 0x3200,
-	0x38A6, 0x3200,
-	0x38A8, 0x3200,
-	0x38AA, 0x3200,
-	0x38B0, 0x3200,
-	0x38B2, 0x3200,
-	0x38B4, 0x3200,
-	0x38B6, 0x3200,
-	0x38B8, 0x3200,
-	0x38BA, 0x3200,
-	0x320A, 0xFF03,
-	0x320C, 0x0700,
-	0x320E, 0xFF03,
-	0x3210, 0x0700,
-	0x321E, 0x0000,
-	0x31D4, 0x00FF,
-	0x321A, 0x0406,
-	0x3244, 0x0101,
-	0x3246, 0x0101,
-	0x3248, 0x0010,
-	0x3266, 0x0100,
-	0x3330, 0x0108,
-	0x3334, 0x0100,
-	0x3336, 0x0000,
-	0xFCFC, 0x2002,
-	0xBB8A, 0x0100,
-	0xBB8C, 0x0800,
-	0xBB8E, 0x1000,
-	0xBB90, 0x2000,
-	0xBB92, 0xC800,
-	0xBB94, 0xC800,
-	0xBB96, 0xC800,
-	0xBB98, 0xC800,
-	0xBB9A, 0xC400,
-	0xBB9C, 0xC400,
-	0xBB9E, 0xC400,
-	0xBBA0, 0xC400,
-	0xBBA2, 0xC200,
-	0xBBA4, 0xC200,
-	0xBBA6, 0xC200,
-	0xBBA8, 0xC200,
-	0xBBAA, 0xBE00,
-	0xBBAC, 0xBE00,
-	0xBBAE, 0xBE00,
-	0xBBB0, 0xBE00,
-	0xBBB2, 0xBC00,
-	0xBBB4, 0xBC00,
-	0xBBB6, 0xBC00,
-	0xBBB8, 0xBC00,
-	0xBBBA, 0x2000,
-	0xBBBC, 0x2000,
-	0xBBBE, 0x2000,
-	0xBBC0, 0x2000,
-	0xBBC2, 0x1600,
-	0xBBC4, 0x1600,
-	0xBBC6, 0x1600,
-	0xBBC8, 0x1600,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0000,
-	0xBBD2, 0x0A00,
-	0xBBD4, 0x0A00,
-	0xBBD6, 0x0A00,
-	0xBBD8, 0x0A00,
-	0xBBDA, 0x1400,
-	0xBBDC, 0x1400,
-	0xBBDE, 0x1400,
-	0xBBE0, 0x1400,
-	0xBBE2, 0x2A00,
-	0xBBE4, 0x2A00,
-	0xBBE6, 0x2A00,
-	0xBBE8, 0x2A00,
-	0xBBEA, 0x2A00,
-	0xBBEC, 0x2A00,
-	0xBBEE, 0x2A00,
-	0xBBF0, 0x2A00,
-	0xBBF2, 0x0100,
-	0xBBF4, 0x0100,
-	0xBBF6, 0x0100,
-	0xBBF8, 0x0100,
-	0xBBFA, 0x0F00,
-	0xBBFC, 0x0F00,
-	0xBBFE, 0x0F00,
-	0xBC00, 0x0F00,
-	0xBC02, 0x0400,
-	0xBC04, 0x0400,
-	0xBC06, 0x0400,
-	0xBC08, 0x0400,
-	0xBC0A, 0x1900,
-	0xBC0C, 0x1900,
-	0xBC0E, 0x1900,
-	0xBC10, 0x1900,
-	0xBC12, 0x1400,
-	0xBC14, 0x1400,
-	0xBC16, 0x1400,
-	0xBC18, 0x1400,
-	0xBC1A, 0x3A00,
-	0xBC1C, 0x3A00,
-	0xBC1E, 0x3A00,
-	0xBC20, 0x3A00,
-	0xBC22, 0x0A00,
-	0xBC24, 0x0A00,
-	0xBC26, 0x0A00,
-	0xBC28, 0x0A00,
-	0xBC2A, 0x4B00,
-	0xBC2C, 0x4B00,
-	0xBC2E, 0x4B00,
-	0xBC30, 0x4B00,
-	0xBC32, 0x0200,
-	0xBC34, 0x0600,
-	0xBC36, 0x0C00,
-	0xBC38, 0x0C00,
-	0xBC3A, 0x2A00,
-	0xBC3C, 0x2500,
-	0xBC3E, 0x2000,
-	0xBC40, 0x2000,
-	0xBC42, 0x0000,
-	0xBC44, 0x1000,
-	0xBC46, 0x2300,
-	0xBC48, 0x2300,
-	0xBC4A, 0x3F00,
-	0xBC4C, 0x3100,
-	0xBC4E, 0x2100,
-	0xBC50, 0x2100,
-	0xBC52, 0x0A00,
-	0xBC54, 0x1B00,
-	0xBC56, 0x3000,
-	0xBC58, 0x3000,
-	0xBC5A, 0x1900,
-	0xBC5C, 0x1500,
-	0xBC5E, 0x1100,
-	0xBC60, 0x1100,
-	0xBC62, 0x0F00,
-	0xBC64, 0x0F00,
-	0xBC66, 0x0F00,
-	0xBC68, 0x0F00,
-	0xBC6A, 0x1900,
-	0xBC6C, 0x1900,
-	0xBC6E, 0x1900,
-	0xBC70, 0x1900,
-	0xBC72, 0x0A00,
-	0xBC74, 0x0A00,
-	0xBC76, 0x0A00,
-	0xBC78, 0x0A00,
-	0xBC7A, 0x0B00,
-	0xBC7C, 0x0B00,
-	0xBC7E, 0x0B00,
-	0xBC80, 0x0B00,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x0000,
-	0xBC8A, 0x0800,
-	0xBC8C, 0x0800,
-	0xBC8E, 0x0800,
-	0xBC90, 0x0800,
-	0xFCFC, 0x4000,
-	0xFCFC, 0x2000,
-	0x68D8, 0x0100,
-	0xFCFC, 0x2002,
-	0xBC92, 0x0100,
-	0xFCFC, 0x4000,
-	0x0E04, 0x1C03,
-	0x0E10, 0x0100,
-	0x0E12, 0x00A0,
-	0x0E14, 0x0C84,
-	0x0E16, 0x002B,
-	0x0E18, 0x0000,
-	0x0E1A, 0x3000,
-	0x0E1C, 0x0100,
-	0x0E1E, 0x00A0,
-	0x0E20, 0x0C84,
-	0x0E22, 0x012B,
-	0x0E24, 0x0100,
-	0x0E26, 0x3000,
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0xFCFC, 0x2000,
-	0x3D44, 0x0000,
-	0x3D88, 0xFCFC,
-	0x3D8A, 0xFEFF,
-	0x3D8C, 0xFCFC,
-	0x3D8E, 0xFEFF,
-	0x3D90, 0xFCFC,
-	0x3D92, 0xFEFF,
-	0x3D94, 0xFCFC,
-	0x3D96, 0xFEFF,
-	0x3FE0, 0x0324,
-	0x3FE2, 0x0080,
-	0x3FE4, 0x0000,
-	0x3FE6, 0x0000,
-	0x4238, 0x0324,
-	0x423A, 0x0080,
-	0x423C, 0x0324,
-	0x423E, 0xF886,
-	0x4490, 0x0324,
-	0x4492, 0x0080,
-	0x4494, 0x0324,
-	0x4496, 0x2887,
-	0x46E8, 0x0324,
-	0x46EA, 0x0080,
-	0x46EC, 0x0324,
-	0x46EE, 0x2887,
-	0x46F0, 0x0324,
-	0x46F2, 0xCE89,
-	0x4940, 0x0324,
-	0x4942, 0x0080,
-	0x4944, 0x0324,
-	0x4946, 0xEE89,
-	0x4B98, 0x0324,
-	0x4B9A, 0x0080,
-	0x4B9C, 0x0324,
-	0x4B9E, 0x708C,
-	0x4DF0, 0x0324,
-	0x4DF2, 0x0080,
-	0x4DF4, 0x0324,
-	0x4DF6, 0x888C,
-	0x5048, 0x0324,
-	0x504A, 0x0080,
-	0x504C, 0x0324,
-	0x504E, 0x2887,
-	0x5050, 0x0324,
-	0x5052, 0xBA8C,
-	0xFCFC, 0x2003,
-	0x8000, 0xFFFE,
-	0x8002, 0x2400,
-	0x8004, 0xFFFD,
-	0x8006, 0x22C2,
-	0x8008, 0x0006,
-	0x800A, 0x22C4,
-	0x800C, 0x1FFF,
-	0x800E, 0x22EC,
-	0x8010, 0x001F,
-	0x8012, 0x2306,
-	0x8014, 0x3FFF,
-	0x8016, 0x2314,
-	0x8018, 0x00FF,
-	0x801A, 0x2354,
-	0x801C, 0x0003,
-	0x801E, 0x23F0,
-	0x8020, 0x0100,
-	0x8022, 0x68DE,
-	0x8024, 0x0000,
-	0x8026, 0x703C,
-	0x8028, 0x0100,
-	0x802A, 0x703E,
-	0x802C, 0x0000,
-	0x802E, 0x7046,
-	0x8030, 0x027F,
-	0x8032, 0x7048,
-	0x8034, 0x002F,
-	0x8036, 0x704A,
-	0x8038, 0x0400,
-	0x803A, 0x7058,
-	0x803C, 0x0280,
-	0x803E, 0x705A,
-	0x8040, 0x0030,
-	0x8042, 0x705C,
-	0x8044, 0x0400,
-	0x8046, 0x7806,
-	0x8048, 0x0100,
-	0x804A, 0x7808,
-	0x804C, 0x0824,
-	0x804E, 0x78C0,
-	0x8050, 0x0101,
-	0x8052, 0x795A,
-	0x8054, 0x0010,
-	0x8056, 0x7970,
-	0x8058, 0x0010,
-	0x805A, 0x7994,
-	0x805C, 0x2020,
-	0x805E, 0x7996,
-	0x8060, 0x0001,
-	0x8062, 0x799A,
-	0x8064, 0x0000,
-	0x8066, 0x7BDA,
-	0x8068, 0x003C,
-	0x806A, 0x7EE6,
-	0x806C, 0x002C,
-	0x806E, 0x7EF2,
-	0x8070, 0x002C,
-	0x8072, 0x7EFE,
-	0x8074, 0x0064,
-	0x8076, 0x7F0A,
-	0x8078, 0x0058,
-	0x807A, 0x7F0E,
-	0x807C, 0x0058,
-	0x807E, 0x82A2,
-	0x8080, 0x0012,
-	0x8082, 0x82BA,
-	0x8084, 0x0036,
-	0x8086, 0x8CCE,
-	0x8088, 0x012C,
-	0x808A, 0x8CD0,
-	0x808C, 0x0096,
-	0x808E, 0x8CD2,
-	0x8090, 0x0096,
-	0x8092, 0x8CD6,
-	0x8094, 0x0096,
-	0x8096, 0x8D0E,
-	0x8098, 0x0000,
-	0x809A, 0x9032,
-	0x809C, 0x0000,
-	0x809E, 0x903E,
-	0x80A0, 0x0000,
-	0x80A2, 0xB176,
-	0x80A4, 0x0006,
-	0x80A6, 0xB178,
-	0x80A8, 0x0000,
-	0x80AA, 0xB20C,
-	0x80AC, 0x002E,
-	0x80AE, 0xB21A,
-	0x80B0, 0x0204,
-	0x80B2, 0xB23C,
-	0x80B4, 0x6060,
-	0x80B6, 0xB242,
-	0x80B8, 0x6060,
-	0x80BA, 0xB266,
-	0x80BC, 0x04C0,
-	0x80BE, 0xB268,
-	0x80C0, 0x0440,
-	0x80C2, 0xB270,
-	0x80C4, 0x0887,
-	0x80C6, 0xB322,
-	0x80C8, 0x0101,
-	0x80CA, 0xB324,
-	0x80CC, 0x0001,
-	0x80CE, 0xB330,
-	0x80D0, 0x2828,
-	0x80D2, 0xB34A,
-	0x80D4, 0x2828,
-	0x80D6, 0xB360,
-	0x80D8, 0x2828,
-	0x80DA, 0xB378,
-	0x80DC, 0x0001,
-	0x80DE, 0xBF16,
-	0x80E0, 0xAA0B,
-	0x80E2, 0xBF30,
-	0x80E4, 0x0000,
-	0x80E6, 0xBF78,
-	0x80E8, 0x3353,
-	0x80EA, 0xC4D8,
-	0x80EC, 0x0020,
-	0x80EE, 0xC4E0,
-	0x80F0, 0x0001,
-	0x80F2, 0xC4E2,
-	0x80F4, 0x0002,
-	0x80F6, 0xC4F6,
-	0x80F8, 0x0000,
-	0x80FA, 0xC53C,
-	0x80FC, 0x0001,
-	0x80FE, 0xC53E,
-	0x8100, 0x0000,
-	0x8102, 0xC544,
-	0x8104, 0x0500,
-	0x8106, 0xC554,
-	0x8108, 0x0D53,
-	0x810A, 0xC556,
-	0x810C, 0x0000,
-	0x810E, 0xD1F6,
-	0x8110, 0x003A,
-	0x8112, 0xD20C,
-	0x8114, 0x0809,
-	0x8116, 0xD27A,
-	0x8118, 0x0005,
-	0x811A, 0xD314,
-	0x811C, 0x0220,
-	0x811E, 0xD326,
-	0x8120, 0x2001,
-	0x8122, 0xD3EC,
-	0x8124, 0x1CB1,
-	0x8126, 0xD3F0,
-	0x8128, 0x1CB0,
-	0x812A, 0xD410,
-	0x812C, 0x0248,
-	0x812E, 0xD412,
-	0x8130, 0x04D2,
-	0x8132, 0xD426,
-	0x8134, 0x04D2,
-	0x8136, 0xD428,
-	0x8138, 0x0AEA,
-	0x813A, 0xD43C,
-	0x813C, 0x4001,
-	0x813E, 0xD43E,
-	0x8140, 0x4001,
-	0x8142, 0xD49C,
-	0x8144, 0x0021,
-	0x8146, 0xD4A8,
-	0x8148, 0x0003,
-	0x814A, 0xD4AC,
-	0x814C, 0x00E7,
-	0x814E, 0xD4B0,
-	0x8150, 0x0001,
-	0x8152, 0xD4B4,
-	0x8154, 0x0001,
-	0x8156, 0xD4B8,
-	0x8158, 0x0035,
-	0x815A, 0xD4BC,
-	0x815C, 0x0014,
-	0x815E, 0xD4C0,
-	0x8160, 0x0014,
-	0x8162, 0xD4C4,
-	0x8164, 0x0001,
-	0x8166, 0xD4C8,
-	0x8168, 0x0000,
-	0x816A, 0xD4CC,
-	0x816C, 0x0000,
-	0x816E, 0xD4D0,
-	0x8170, 0x0016,
-	0x8172, 0xD4D2,
-	0x8174, 0x0020,
-	0x8176, 0xD4D6,
-	0x8178, 0x0000,
-	0x817A, 0xD4DA,
-	0x817C, 0x0000,
-	0x817E, 0xD4DE,
-	0x8180, 0x0000,
-	0x8182, 0xD4E2,
-	0x8184, 0x0001,
-	0x8186, 0xD4E6,
-	0x8188, 0x0001,
-	0x818A, 0xD4EA,
-	0x818C, 0x0001,
-	0x818E, 0xD4EC,
-	0x8190, 0x00BE,
-	0x8192, 0xD4EE,
-	0x8194, 0x00BE,
-	0x8196, 0xD4F8,
-	0x8198, 0x01F0,
-	0x819A, 0xD4FA,
-	0x819C, 0x01F0,
-	0x819E, 0xD554,
-	0x81A0, 0x0000,
-	0x81A2, 0xD556,
-	0x81A4, 0x0000,
-	0x81A6, 0xD560,
-	0x81A8, 0x0000,
-	0x81AA, 0xD562,
-	0x81AC, 0x0000,
-	0x81AE, 0xD5BC,
-	0x81B0, 0x0000,
-	0x81B2, 0xD5BE,
-	0x81B4, 0x0000,
-	0x81B6, 0xD5C8,
-	0x81B8, 0x0000,
-	0x81BA, 0xD5CA,
-	0x81BC, 0x0000,
-	0x81BE, 0xD624,
-	0x81C0, 0x0000,
-	0x81C2, 0xD62E,
-	0x81C4, 0x0000,
-	0x81C6, 0xD638,
-	0x81C8, 0x0000,
-	0x81CA, 0xD682,
-	0x81CC, 0x04C0,
-	0x81CE, 0xD684,
-	0x81D0, 0x0440,
-	0x81D2, 0xD6D4,
-	0x81D4, 0x0000,
-	0x81D6, 0xD704,
-	0x81D8, 0x7802,
-	0x81DA, 0xD718,
-	0x81DC, 0x0200,
-	0x81DE, 0xD856,
-	0x81E0, 0x0705,
-	0x81E2, 0xD896,
-	0x81E4, 0x0000,
-	0x81E6, 0xD8A2,
-	0x81E8, 0x0001,
-	0x81EA, 0xDC8C,
-	0x81EC, 0x2B3F,
-	0x81EE, 0xDC94,
-	0x81F0, 0x0001,
-	0x81F2, 0xDD70,
-	0x81F4, 0x0000,
-	0x81F6, 0xDE38,
-	0x81F8, 0x0000,
-	0x81FA, 0xE980,
-	0x81FC, 0x0500,
-	0x81FE, 0xEF80,
-	0x8200, 0x0000,
-	0x8202, 0xF014,
-	0x8204, 0x0006,
-	0x8206, 0xF09A,
-	0x8208, 0xFF00,
-	0x820A, 0xF0AA,
-	0x820C, 0xFFFF,
-	0x820E, 0xF0AC,
-	0x8210, 0xFFFF,
-	0x8212, 0xF288,
-	0x8214, 0x0000,
-	0x8216, 0xF2E0,
-	0x8218, 0x0000,
-	0x821A, 0xF2EA,
-	0x821C, 0x0040,
-	0x821E, 0xF370,
-	0x8220, 0x0302,
-	0x8222, 0xF372,
-	0x8224, 0x0000,
-	0x8226, 0xF3E4,
-	0x8228, 0x0103,
-	0x822A, 0xF3F4,
-	0x822C, 0x08C8,
-	0x822E, 0xF3F6,
-	0x8230, 0x10D7,
-	0x8232, 0xFFFE,
-	0x8234, 0x2401,
-	0x8236, 0xFFFD,
-	0x8238, 0x195E,
-	0x823A, 0x0001,
-	0x823C, 0x1966,
-	0x823E, 0x0000,
-	0x8240, 0x2540,
-	0x8242, 0x0002,
-	0x8244, 0x25E0,
-	0x8246, 0x0000,
-	0x8248, 0x25E2,
-	0x824A, 0x0000,
-	0x824C, 0x2920,
-	0x824E, 0x0001,
-	0x8250, 0x29A8,
-	0x8252, 0x0002,
-	0x8254, 0x29BA,
-	0x8256, 0x00FF,
-	0x8258, 0x2A30,
-	0x825A, 0xFF01,
-	0x825C, 0x2A42,
-	0x825E, 0x0001,
-	0x8260, 0x2A44,
-	0x8262, 0x04B0,
-	0x8264, 0x2A46,
-	0x8266, 0x0000,
-	0x8268, 0x2A54,
-	0x826A, 0x0000,
-	0x826C, 0x2A56,
-	0x826E, 0x0008,
-	0x8270, 0x2BB2,
-	0x8272, 0x0010,
-	0x8274, 0x2D32,
-	0x8276, 0x1000,
-	0x8278, 0x3132,
-	0x827A, 0x0001,
-	0x827C, 0x31D0,
-	0x827E, 0x0002,
-	0x8280, 0x31F8,
-	0x8282, 0x0001,
-	0x8284, 0x31FA,
-	0x8286, 0x04CD,
-	0x8288, 0x3C42,
-	0x828A, 0x0000,
-	0x828C, 0x3C46,
-	0x828E, 0x05EB,
-	0x8290, 0x3C52,
-	0x8292, 0x0640,
-	0x8294, 0x4270,
-	0x8296, 0x0000,
-	0x8298, 0x427C,
-	0x829A, 0x0020,
-	0x829C, 0x4280,
-	0x829E, 0x0010,
-	0x82A0, 0x4290,
-	0x82A2, 0x0001,
-	0x82A4, 0x4292,
-	0x82A6, 0x0000,
-	0x82A8, 0x4362,
-	0x82AA, 0x0001,
-	0x82AC, 0x4364,
-	0x82AE, 0x0000,
-	0x82B0, 0x4366,
-	0x82B2, 0x0000,
-	0x82B4, 0x4370,
-	0x82B6, 0x0000,
-	0x82B8, 0x437E,
-	0x82BA, 0x00A4,
-	0x82BC, 0x4396,
-	0x82BE, 0x000C,
-	0x82C0, 0x4398,
-	0x82C2, 0x000E,
-	0x82C4, 0x43AA,
-	0x82C6, 0x0000,
-	0x82C8, 0x43AC,
-	0x82CA, 0x0000,
-	0x82CC, 0x43B4,
-	0x82CE, 0x0000,
-	0x82D0, 0x43B6,
-	0x82D2, 0x0000,
-	0x82D4, 0x43C6,
-	0x82D6, 0x0A01,
-	0x82D8, 0x44C6,
-	0x82DA, 0x0000,
-	0x82DC, 0x5A70,
-	0x82DE, 0x0000,
-	0x82E0, 0xFFFE,
-	0x82E2, 0x2402,
-	0x82E4, 0xFFFD,
-	0x82E6, 0x849E,
-	0x82E8, 0x0000,
-	0x82EA, 0x84A0,
-	0x82EC, 0x0000,
-	0x82EE, 0x84A2,
-	0x82F0, 0x0500,
-	0x82F2, 0x84C4,
-	0x82F4, 0x0000,
-	0x82F6, 0xA570,
-	0x82F8, 0x0000,
-	0x82FA, 0xFFFE,
-	0x82FC, 0x2400,
-	0x82FE, 0xFFFD,
-	0x8300, 0x0086,
-	0x8302, 0x0200,
-	0x8304, 0x0112,
-	0x8306, 0x0A0A,
-	0x8308, 0x0114,
-	0x830A, 0x0103,
-	0x830C, 0x0118,
-	0x830E, 0x0400,
-	0x8310, 0x011A,
-	0x8312, 0x0100,
-	0x8314, 0x011C,
-	0x8316, 0x0001,
-	0x8318, 0x0136,
-	0x831A, 0x1800,
-	0x831C, 0x013E,
-	0x831E, 0x0000,
-	0x8320, 0x020A,
-	0x8322, 0x0000,
-	0x8324, 0x021E,
-	0x8326, 0x0000,
-	0x8328, 0x0228,
-	0x832A, 0x0001,
-	0x832C, 0x0270,
-	0x832E, 0x2B2B,
-	0x8330, 0x0272,
-	0x8332, 0x102B,
-	0x8334, 0x0274,
-	0x8336, 0x2B30,
-	0x8338, 0x0304,
-	0x833A, 0x0003,
-	0x833C, 0x0306,
-	0x833E, 0x00E6,
-	0x8340, 0x031A,
-	0x8342, 0x0003,
-	0x8344, 0x031C,
-	0x8346, 0x0028,
-	0x8348, 0x031E,
-	0x834A, 0x0002,
-	0x834C, 0x0400,
-	0x834E, 0x1010,
-	0x8350, 0x0408,
-	0x8352, 0x0100,
-	0x8354, 0x040A,
-	0x8356, 0x0100,
-	0x8358, 0x040C,
-	0x835A, 0x0000,
-	0x835C, 0x0702,
-	0x835E, 0x0000,
-	0x8360, 0x0704,
-	0x8362, 0x0000,
-	0x8364, 0x0720,
-	0x8366, 0x0001,
-	0x8368, 0x0722,
-	0x836A, 0x0008,
-	0x836C, 0x0724,
-	0x836E, 0x0000,
-	0x8370, 0x0808,
-	0x8372, 0x0102,
-	0x8374, 0x0900,
-	0x8376, 0x1100,
-	0x8378, 0x0936,
-	0x837A, 0x0000,
-	0x837C, 0x0C40,
-	0x837E, 0x0000,
-	0x8380, 0x0E00,
-	0x8382, 0x0300,
-	0x8384, 0x0342,
-	0x8386, 0x23F0,
-	0x8388, 0x0000,
-	0x838A, 0xFFFF,
-	0x838C, 0x0008,
-	0x838E, 0x2400,
-	0x8390, 0x71D4,
-	0x8392, 0x3F00,
-	0x8394, 0x3D00,
-	0x8396, 0x84F3,
-	0x8398, 0x0040,
-	0x839A, 0xFFFF,
-	0x839C, 0x0010,
-	0x839E, 0x2400,
-	0x83A0, 0x7274,
-	0x83A2, 0x0D00,
-	0x83A4, 0x0C00,
-	0x83A6, 0x36D2,
-	0x83A8, 0x0040,
-	0x83AA, 0x0000,
-	0x83AC, 0x0000,
-	0x83AE, 0x0000,
-	0x83B0, 0x0000,
-	0x83B2, 0xFFFF,
-	0x83B4, 0x0008,
-	0x83B6, 0x2400,
-	0x83B8, 0x7314,
-	0x83BA, 0x0000,
-	0x83BC, 0x0000,
-	0x83BE, 0x0000,
-	0x83C0, 0x0000,
-	0x83C2, 0xFFFF,
-	0x83C4, 0x0008,
-	0x83C6, 0x2400,
-	0x83C8, 0x7A0E,
-	0x83CA, 0x1E00,
-	0x83CC, 0x0F00,
-	0x83CE, 0x0F00,
-	0x83D0, 0x0F00,
-	0x83D2, 0xFFFF,
-	0x83D4, 0x0008,
-	0x83D6, 0x2400,
-	0x83D8, 0x7A6E,
-	0x83DA, 0x2800,
-	0x83DC, 0x1900,
-	0x83DE, 0x1900,
-	0x83E0, 0x1900,
-	0x83E2, 0xFFFF,
-	0x83E4, 0x0008,
-	0x83E6, 0x2400,
-	0x83E8, 0x7A86,
-	0x83EA, 0x2800,
-	0x83EC, 0x1900,
-	0x83EE, 0x1900,
-	0x83F0, 0x1900,
-	0x83F2, 0xFFFF,
-	0x83F4, 0x0008,
-	0x83F6, 0x2400,
-	0x83F8, 0x8C9E,
-	0x83FA, 0x5000,
-	0x83FC, 0x3500,
-	0x83FE, 0x3500,
-	0x8400, 0x3500,
-	0x8402, 0xFFFF,
-	0x8404, 0x000A,
-	0x8406, 0x2400,
-	0x8408, 0xB21E,
-	0x840A, 0x0000,
-	0x840C, 0x0000,
-	0x840E, 0xC000,
-	0x8410, 0x0103,
-	0x8412, 0x0000,
-	0x8414, 0xFFFF,
-	0x8416, 0x000C,
-	0x8418, 0x2400,
-	0x841A, 0xBEDC,
-	0x841C, 0xC526,
-	0x841E, 0x903E,
-	0x8420, 0xC00F,
-	0x8422, 0x0008,
-	0x8424, 0x0C00,
-	0x8426, 0x8000,
-	0x8428, 0xFFFF,
-	0x842A, 0x000E,
-	0x842C, 0x2400,
-	0x842E, 0xDADA,
-	0x8430, 0x0001,
-	0x8432, 0x0000,
-	0x8434, 0x3000,
-	0x8436, 0x8001,
-	0x8438, 0x0000,
-	0x843A, 0x0000,
-	0x843C, 0x0000,
-	0x843E, 0xFFFF,
-	0x8440, 0x000C,
-	0x8442, 0x2400,
-	0x8444, 0xDB0C,
-	0x8446, 0x0000,
-	0x8448, 0x0080,
-	0x844A, 0x0000,
-	0x844C, 0x0000,
-	0x844E, 0x0000,
-	0x8450, 0x0000,
-	0x8452, 0xFFFF,
-	0x8454, 0x000C,
-	0x8456, 0x2400,
-	0x8458, 0xDB3C,
-	0x845A, 0x12D2,
-	0x845C, 0x12D2,
-	0x845E, 0x12D2,
-	0x8460, 0x0000,
-	0x8462, 0x0000,
-	0x8464, 0x0000,
-	0x8466, 0xFFFF,
-	0x8468, 0x000C,
-	0x846A, 0x2400,
-	0x846C, 0xDB6C,
-	0x846E, 0x0000,
-	0x8470, 0x0000,
-	0x8472, 0x0000,
-	0x8474, 0x0000,
-	0x8476, 0x0000,
-	0x8478, 0x0000,
-	0x847A, 0xFFFF,
-	0x847C, 0x000C,
-	0x847E, 0x2400,
-	0x8480, 0xDB9C,
-	0x8482, 0x0000,
-	0x8484, 0x0000,
-	0x8486, 0x0000,
-	0x8488, 0x0000,
-	0x848A, 0x0000,
-	0x848C, 0x0000,
-	0x848E, 0xFFFF,
-	0x8490, 0x000C,
-	0x8492, 0x2400,
-	0x8494, 0xDBCC,
-	0x8496, 0x0000,
-	0x8498, 0x0000,
-	0x849A, 0x0000,
-	0x849C, 0x0000,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0xFFFF,
-	0x84A4, 0x0012,
-	0x84A6, 0x2401,
-	0x84A8, 0x1C24,
-	0x84AA, 0x0002,
-	0x84AC, 0x0001,
-	0x84AE, 0xFF03,
-	0x84B0, 0x0010,
-	0x84B2, 0xD70F,
-	0x84B4, 0x0004,
-	0x84B6, 0x0010,
-	0x84B8, 0xD70F,
-	0x84BA, 0xC20F,
-	0x84BC, 0xFFFF,
-	0x84BE, 0x0020,
-	0x84C0, 0x2401,
-	0x84C2, 0x1C4E,
-	0x84C4, 0x0001,
-	0x84C6, 0xFF03,
-	0x84C8, 0x0010,
-	0x84CA, 0xD70F,
-	0x84CC, 0x0004,
-	0x84CE, 0x0010,
-	0x84D0, 0xD70F,
-	0x84D2, 0xC20F,
-	0x84D4, 0x0000,
-	0x84D6, 0x0000,
-	0x84D8, 0x0000,
-	0x84DA, 0x0000,
-	0x84DC, 0x0000,
-	0x84DE, 0x0000,
-	0x84E0, 0x0000,
-	0x84E2, 0x0000,
-	0x84E4, 0xFFFF,
-	0x84E6, 0x0020,
-	0x84E8, 0x2401,
-	0x84EA, 0x1C76,
-	0x84EC, 0x0001,
-	0x84EE, 0xFF03,
-	0x84F0, 0x0010,
-	0x84F2, 0xD70F,
-	0x84F4, 0x0004,
-	0x84F6, 0x0010,
-	0x84F8, 0xD70F,
-	0x84FA, 0xC20F,
-	0x84FC, 0x0000,
-	0x84FE, 0x0000,
-	0x8500, 0x0000,
-	0x8502, 0x0000,
-	0x8504, 0x0000,
-	0x8506, 0x0000,
-	0x8508, 0x0000,
-	0x850A, 0x0000,
-	0x850C, 0xFFFF,
-	0x850E, 0x0010,
-	0x8510, 0x2401,
-	0x8512, 0x1C9E,
-	0x8514, 0x0001,
-	0x8516, 0xFF03,
-	0x8518, 0x0010,
-	0x851A, 0xD70F,
-	0x851C, 0x0004,
-	0x851E, 0x0010,
-	0x8520, 0xD70F,
-	0x8522, 0xC20F,
-	0x8524, 0xFFFF,
-	0x8526, 0x0010,
-	0x8528, 0x2401,
-	0x852A, 0x1CC6,
-	0x852C, 0x0000,
-	0x852E, 0x0000,
-	0x8530, 0x0000,
-	0x8532, 0x0000,
-	0x8534, 0x0000,
-	0x8536, 0x0000,
-	0x8538, 0x0000,
-	0x853A, 0x0000,
-	0x853C, 0xFFFF,
-	0x853E, 0x0020,
-	0x8540, 0x2401,
-	0x8542, 0x1CEE,
-	0x8544, 0x0000,
-	0x8546, 0x0000,
-	0x8548, 0x0000,
-	0x854A, 0x0000,
-	0x854C, 0x0000,
-	0x854E, 0x0000,
-	0x8550, 0x0000,
-	0x8552, 0x0000,
-	0x8554, 0x0000,
-	0x8556, 0x0000,
-	0x8558, 0x0000,
-	0x855A, 0x0000,
-	0x855C, 0x0000,
-	0x855E, 0x0000,
-	0x8560, 0x0000,
-	0x8562, 0x0000,
-	0x8564, 0xFFFF,
-	0x8566, 0x0020,
-	0x8568, 0x2401,
-	0x856A, 0x1D16,
-	0x856C, 0x0000,
-	0x856E, 0x0000,
-	0x8570, 0x0000,
-	0x8572, 0x0000,
-	0x8574, 0x0000,
-	0x8576, 0x0000,
-	0x8578, 0x0000,
-	0x857A, 0x0000,
-	0x857C, 0x0000,
-	0x857E, 0x0000,
-	0x8580, 0x0000,
-	0x8582, 0x0000,
-	0x8584, 0x0000,
-	0x8586, 0x0000,
-	0x8588, 0x0000,
-	0x858A, 0x0000,
-	0x858C, 0xFFFF,
-	0x858E, 0x0010,
-	0x8590, 0x2401,
-	0x8592, 0x1D3E,
-	0x8594, 0x0000,
-	0x8596, 0x0000,
-	0x8598, 0x0000,
-	0x859A, 0x0000,
-	0x859C, 0x0000,
-	0x859E, 0x0000,
-	0x85A0, 0x0000,
-	0x85A2, 0x0000,
-	0x85A4, 0xFFFF,
-	0x85A6, 0x0008,
-	0x85A8, 0x2401,
-	0x85AA, 0x1D72,
-	0x85AC, 0x0000,
-	0x85AE, 0x0000,
-	0x85B0, 0x0000,
-	0x85B2, 0x0000,
-	0x85B4, 0xFFFF,
-	0x85B6, 0x0008,
-	0x85B8, 0x2401,
-	0x85BA, 0x1D82,
-	0x85BC, 0x0000,
-	0x85BE, 0x0000,
-	0x85C0, 0x0000,
-	0x85C2, 0x0000,
-	0x85C4, 0xFFFF,
-	0x85C6, 0x0008,
-	0x85C8, 0x2401,
-	0x85CA, 0x1D92,
-	0x85CC, 0x0000,
-	0x85CE, 0x0000,
-	0x85D0, 0x0000,
-	0x85D2, 0x0000,
-	0x85D4, 0xFFFF,
-	0x85D6, 0x0008,
-	0x85D8, 0x2401,
-	0x85DA, 0x1DA2,
-	0x85DC, 0x0000,
-	0x85DE, 0x0000,
-	0x85E0, 0x0000,
-	0x85E2, 0x0000,
-	0x85E4, 0xFFFF,
-	0x85E6, 0x0008,
-	0x85E8, 0x2401,
-	0x85EA, 0x1DF2,
-	0x85EC, 0x0000,
-	0x85EE, 0x0000,
-	0x85F0, 0x0000,
-	0x85F2, 0x0000,
-	0x85F4, 0xFFFF,
-	0x85F6, 0x0008,
-	0x85F8, 0x2401,
-	0x85FA, 0x1E02,
-	0x85FC, 0x0000,
-	0x85FE, 0x0000,
-	0x8600, 0x0000,
-	0x8602, 0x0000,
-	0x8604, 0xFFFF,
-	0x8606, 0x0008,
-	0x8608, 0x2401,
-	0x860A, 0x1E12,
-	0x860C, 0x0000,
-	0x860E, 0x0000,
-	0x8610, 0x0000,
-	0x8612, 0x0000,
-	0x8614, 0xFFFF,
-	0x8616, 0x0008,
-	0x8618, 0x2401,
-	0x861A, 0x1E22,
-	0x861C, 0x0000,
-	0x861E, 0x0000,
-	0x8620, 0x0000,
-	0x8622, 0x0000,
-	0x8624, 0xFFFF,
-	0x8626, 0x0010,
-	0x8628, 0x2402,
-	0x862A, 0xA548,
-	0x862C, 0x0000,
-	0x862E, 0x0000,
-	0x8630, 0x0000,
-	0x8632, 0x0000,
-	0x8634, 0x0000,
-	0x8636, 0x0000,
-	0x8638, 0x0000,
-	0x863A, 0x0000,
-	0x863C, 0xFFFF,
-	0x863E, 0x0010,
-	0x8640, 0x2402,
-	0x8642, 0xA55C,
-	0x8644, 0x0000,
-	0x8646, 0x0000,
-	0x8648, 0x0000,
-	0x864A, 0x0000,
-	0x864C, 0x0000,
-	0x864E, 0x0000,
-	0x8650, 0x0000,
-	0x8652, 0x0000,
-	0x8654, 0xFFFF,
-	0x8656, 0x002C,
-	0x8658, 0x2402,
-	0x865A, 0xA574,
-	0x865C, 0x0100,
-	0x865E, 0x4000,
-	0x8660, 0x8000,
-	0x8662, 0x0001,
-	0x8664, 0x0002,
-	0x8666, 0x0002,
-	0x8668, 0x0002,
-	0x866A, 0x0002,
-	0x866C, 0x0002,
-	0x866E, 0x0002,
-	0x8670, 0x0800,
-	0x8672, 0x2100,
-	0x8674, 0x2900,
-	0x8676, 0x2E00,
-	0x8678, 0x2E00,
-	0x867A, 0x2E00,
-	0x867C, 0x2E00,
-	0x867E, 0x2E00,
-	0x8680, 0x2E00,
-	0x8682, 0x3000,
-	0x8684, 0xA2FD,
-	0x8686, 0xFEFE,
-	0x8688, 0xFFFF,
-	0x868A, 0x0008,
-	0x868C, 0x2400,
-	0x868E, 0x0260,
-	0x8690, 0x0001,
-	0x8692, 0x0000,
-	0x8694, 0x0006,
-	0x8696, 0x0700,
-	0x8698, 0xFFFF,
-	0x869A, 0x0008,
-	0x869C, 0x2400,
-	0x869E, 0x030C,
-	0x86A0, 0x0000,
-	0x86A2, 0x0300,
-	0x86A4, 0xBF00,
-	0x86A6, 0x0000,
-	0x86A8, 0xFFFF,
-	0x86AA, 0x0010,
-	0x86AC, 0x2400,
-	0x86AE, 0x0344,
-	0x86B0, 0x0008,
-	0x86B2, 0x0006,
-	0x86B4, 0x1F18,
-	0x86B6, 0x1F12,
-	0x86B8, 0x0010,
-	0x86BA, 0x000C,
-	0x86BC, 0x1000,
-	0x86BE, 0x1000,
-	0x86C0, 0xFFFF,
-	0x86C2, 0x0008,
-	0x86C4, 0x2400,
-	0x86C6, 0x0380,
-	0x86C8, 0x0100,
-	0x86CA, 0x0100,
-	0x86CC, 0x0100,
-	0x86CE, 0x0100,
-	0x86D0, 0xFFFF,
-	0x86D2, 0x0008,
-	0x86D4, 0x2400,
-	0x86D6, 0x0728,
-	0x86D8, 0x0000,
-	0x86DA, 0x0000,
-	0x86DC, 0x0000,
-	0x86DE, 0x0000,
-	0x86E0, 0xFFFF,
-	0x86E2, 0x000C,
-	0x86E4, 0x2400,
-	0x86E6, 0x0B02,
-	0x86E8, 0x0101,
-	0x86EA, 0x0001,
-	0x86EC, 0x0101,
-	0x86EE, 0x0101,
-	0x86F0, 0x0101,
-	0x86F2, 0x0100,
-	0x86F4, 0x0000,
-	0x86F6, 0x0000,
-	0x86F8, 0xFFFE,
-	0x86FA, 0x2400,
-	0x86FC, 0xFFFD,
-	0x86FE, 0xD4AC,
-	0x8700, 0x01AE,
-	0x8702, 0xFFFE,
-	0x8704, 0x2401,
-	0x8706, 0xFFFD,
-	0x8708, 0x25E0,
-	0x870A, 0x0001,
-	0x870C, 0x25E2,
-	0x870E, 0x00CD,
-	0x8710, 0x31D0,
-	0x8712, 0x0000,
-	0x8714, 0x31FA,
-	0x8716, 0x0400,
-	0x8718, 0xFFFE,
-	0x871A, 0x2400,
-	0x871C, 0xFFFD,
-	0x871E, 0x0B08,
-	0x8720, 0x0001,
-	0x8722, 0x0000,
-	0x8724, 0x0000,
-	0x8726, 0x0000,
-	0x8728, 0xFFFE,
-	0x872A, 0x2400,
-	0x872C, 0xFFFD,
-	0x872E, 0x703C,
-	0x8730, 0x0101,
-	0x8732, 0x703E,
-	0x8734, 0x0001,
-	0x8736, 0x7048,
-	0x8738, 0x021F,
-	0x873A, 0x704A,
-	0x873C, 0x0A00,
-	0x873E, 0x705A,
-	0x8740, 0x0220,
-	0x8742, 0x705C,
-	0x8744, 0x0A01,
-	0x8746, 0x7274,
-	0x8748, 0x000B,
-	0x874A, 0x7276,
-	0x874C, 0x000B,
-	0x874E, 0x795A,
-	0x8750, 0x0020,
-	0x8752, 0x7970,
-	0x8754, 0x0020,
-	0x8756, 0x7996,
-	0x8758, 0x0101,
-	0x875A, 0x7A0E,
-	0x875C, 0x000F,
-	0x875E, 0x7A6E,
-	0x8760, 0x0019,
-	0x8762, 0x7A86,
-	0x8764, 0x0019,
-	0x8766, 0x7BDA,
-	0x8768, 0x004C,
-	0x876A, 0x82A2,
-	0x876C, 0x0014,
-	0x876E, 0x82BA,
-	0x8770, 0x0033,
-	0x8772, 0x8C9E,
-	0x8774, 0x0035,
-	0x8776, 0x8CA2,
-	0x8778, 0x0070,
-	0x877A, 0x8CCE,
-	0x877C, 0x0096,
-	0x877E, 0x8CD2,
-	0x8780, 0x00BE,
-	0x8782, 0xB176,
-	0x8784, 0x0206,
-	0x8786, 0xB220,
-	0x8788, 0x0301,
-	0x878A, 0xB268,
-	0x878C, 0xF380,
-	0x878E, 0xC4E2,
-	0x8790, 0x0000,
-	0x8792, 0xC53C,
-	0x8794, 0x0005,
-	0x8796, 0xC554,
-	0x8798, 0x1000,
-	0x879A, 0xD326,
-	0x879C, 0x1001,
-	0x879E, 0xD3EC,
-	0x87A0, 0x1CB0,
-	0x87A2, 0xD4A8,
-	0x87A4, 0x0001,
-	0x87A6, 0xD4AC,
-	0x87A8, 0x0001,
-	0x87AA, 0xD4B0,
-	0x87AC, 0x040E,
-	0x87AE, 0xD4B8,
-	0x87B0, 0x0014,
-	0x87B2, 0xD4BC,
-	0x87B4, 0x003F,
-	0x87B6, 0xD4C4,
-	0x87B8, 0x0000,
-	0x87BA, 0xD4C8,
-	0x87BC, 0x0001,
-	0x87BE, 0xD4D0,
-	0x87C0, 0x000A,
-	0x87C2, 0xD4D2,
-	0x87C4, 0x0000,
-	0x87C6, 0xD4D6,
-	0x87C8, 0x001A,
-	0x87CA, 0xD4DE,
-	0x87CC, 0x0001,
-	0x87CE, 0xD4E2,
-	0x87D0, 0x0000,
-	0x87D2, 0xD4EC,
-	0x87D4, 0x0000,
-	0x87D6, 0xD4EE,
-	0x87D8, 0x0000,
-	0x87DA, 0xD4F8,
-	0x87DC, 0x0000,
-	0x87DE, 0xD4FA,
-	0x87E0, 0x0000,
-	0x87E2, 0xD554,
-	0x87E4, 0x00C4,
-	0x87E6, 0xD556,
-	0x87E8, 0x00C4,
-	0x87EA, 0xD560,
-	0x87EC, 0x0352,
-	0x87EE, 0xD562,
-	0x87F0, 0x0352,
-	0x87F2, 0xD684,
-	0x87F4, 0xF380,
-	0x87F6, 0xDB0C,
-	0x87F8, 0x1F1F,
-	0x87FA, 0xDB3C,
-	0x87FC, 0xFDD2,
-	0x87FE, 0xDB42,
-	0x8800, 0xD212,
-	0x8802, 0xDB44,
-	0x8804, 0xD212,
-	0x8806, 0xDB46,
-	0x8808, 0xD212,
-	0x880A, 0xDC8C,
-	0x880C, 0x0B3F,
-	0x880E, 0xDC94,
-	0x8810, 0x0301,
-	0x8812, 0xE980,
-	0x8814, 0x049E,
-	0x8816, 0xF014,
-	0x8818, 0x0007,
-	0x881A, 0xF3F4,
-	0x881C, 0x00C8,
-	0x881E, 0xF3F6,
-	0x8820, 0x10D6,
-	0x8822, 0xFFFE,
-	0x8824, 0x2401,
-	0x8826, 0xFFFD,
-	0x8828, 0x1C4E,
-	0x882A, 0x0180,
-	0x882C, 0x1C50,
-	0x882E, 0x0480,
-	0x8830, 0x2540,
-	0x8832, 0x0000,
-	0x8834, 0x29A8,
-	0x8836, 0x0001,
-	0x8838, 0x29BA,
-	0x883A, 0x0020,
-	0x883C, 0x2A44,
-	0x883E, 0x0739,
-	0x8840, 0x2A56,
-	0x8842, 0x0004,
-	0x8844, 0x3132,
-	0x8846, 0x0002,
-	0x8848, 0x31D0,
-	0x884A, 0x0000,
-	0x884C, 0x31F8,
-	0x884E, 0x0000,
-	0x8850, 0x31FA,
-	0x8852, 0x0000,
-	0x8854, 0x437E,
-	0x8856, 0x00E4,
-	0x8858, 0x4396,
-	0x885A, 0x000B,
-	0x885C, 0x4398,
-	0x885E, 0x000B,
-	0x8860, 0x43C6,
-	0x8862, 0x1401,
-	0x8864, 0xFFFE,
-	0x8866, 0x2402,
-	0x8868, 0xFFFD,
-	0x886A, 0x84C4,
-	0x886C, 0x0001,
-	0x886E, 0xA598,
-	0x8870, 0x0032,
-	0x8872, 0xA59A,
-	0x8874, 0x0035,
-	0x8876, 0xFFFE,
-	0x8878, 0x2400,
-	0x887A, 0xFFFD,
-	0x887C, 0x0086,
-	0x887E, 0x1400,
-	0x8880, 0x0350,
-	0x8882, 0x0008,
-	0x8884, 0x0352,
-	0x8886, 0x0008,
-	0x8888, 0x0900,
-	0x888A, 0x2222,
-	0x888C, 0x0B02,
-	0x888E, 0x0201,
-	0x8890, 0x0B08,
-	0x8892, 0x0001,
-	0x8894, 0x0342,
-	0x8896, 0x12B0,
-	0x8898, 0x0000,
-	0x889A, 0xFFFF,
-	0x889C, 0x0008,
-	0x889E, 0x2400,
-	0x88A0, 0x7314,
-	0x88A2, 0x2E00,
-	0x88A4, 0x3000,
-	0x88A6, 0x9EFD,
-	0x88A8, 0x0040,
-	0x88AA, 0xFFFF,
-	0x88AC, 0x000A,
-	0x88AE, 0x2400,
-	0x88B0, 0xDADE,
-	0x88B2, 0x0000,
-	0x88B4, 0xA000,
-	0x88B6, 0x0001,
-	0x88B8, 0x0005,
-	0x88BA, 0x4011,
-	0x88BC, 0xFFFF,
-	0x88BE, 0x0008,
-	0x88C0, 0x2400,
-	0x88C2, 0xDB10,
-	0x88C4, 0x0040,
-	0x88C6, 0x0020,
-	0x88C8, 0x0040,
-	0x88CA, 0x0060,
-	0x88CC, 0xFFFF,
-	0x88CE, 0x0010,
-	0x88D0, 0x2401,
-	0x88D2, 0x1C26,
-	0x88D4, 0x8001,
-	0x88D6, 0x8004,
-	0x88D8, 0x2010,
-	0x88DA, 0x2010,
-	0x88DC, 0x0005,
-	0x88DE, 0x00A0,
-	0x88E0, 0x2810,
-	0x88E2, 0x2810,
-	0x88E4, 0xFFFF,
-	0x88E6, 0x000A,
-	0x88E8, 0x2401,
-	0x88EA, 0x1C54,
-	0x88EC, 0x0010,
-	0x88EE, 0x0005,
-	0x88F0, 0x00A0,
-	0x88F2, 0x2810,
-	0x88F4, 0x2810,
-	0x88F6, 0xFFFF,
-	0x88F8, 0x0010,
-	0x88FA, 0x2401,
-	0x88FC, 0x1C76,
-	0x88FE, 0x8001,
-	0x8900, 0x8004,
-	0x8902, 0x2010,
-	0x8904, 0x2010,
-	0x8906, 0x0005,
-	0x8908, 0x00A0,
-	0x890A, 0x2810,
-	0x890C, 0x2810,
-	0x890E, 0xFFFF,
-	0x8910, 0x0010,
-	0x8912, 0x2401,
-	0x8914, 0x1C9E,
-	0x8916, 0x8001,
-	0x8918, 0x8004,
-	0x891A, 0x2010,
-	0x891C, 0x2010,
-	0x891E, 0x0005,
-	0x8920, 0x00A0,
-	0x8922, 0x2810,
-	0x8924, 0x2810,
-	0x8926, 0xFFFF,
-	0x8928, 0x0010,
-	0x892A, 0x2401,
-	0x892C, 0x1CC6,
-	0x892E, 0x8001,
-	0x8930, 0x8004,
-	0x8932, 0x2010,
-	0x8934, 0x2010,
-	0x8936, 0x0005,
-	0x8938, 0x00A0,
-	0x893A, 0x2810,
-	0x893C, 0x2810,
-	0x893E, 0xFFFF,
-	0x8940, 0x0010,
-	0x8942, 0x2401,
-	0x8944, 0x1CEE,
-	0x8946, 0x8001,
-	0x8948, 0x8004,
-	0x894A, 0x0010,
-	0x894C, 0x0010,
-	0x894E, 0x0005,
-	0x8950, 0x00A0,
-	0x8952, 0x2810,
-	0x8954, 0x2810,
-	0x8956, 0xFFFF,
-	0x8958, 0x0010,
-	0x895A, 0x2401,
-	0x895C, 0x1D16,
-	0x895E, 0x8001,
-	0x8960, 0x8004,
-	0x8962, 0x2010,
-	0x8964, 0x2010,
-	0x8966, 0x0005,
-	0x8968, 0x00A0,
-	0x896A, 0x2810,
-	0x896C, 0x2810,
-	0x896E, 0xFFFF,
-	0x8970, 0x0010,
-	0x8972, 0x2401,
-	0x8974, 0x1D3E,
-	0x8976, 0x8001,
-	0x8978, 0x8004,
-	0x897A, 0x2010,
-	0x897C, 0x2010,
-	0x897E, 0x0005,
-	0x8980, 0x00A0,
-	0x8982, 0x2810,
-	0x8984, 0x2810,
-	0x8986, 0xFFFF,
-	0x8988, 0x001C,
-	0x898A, 0x2402,
-	0x898C, 0xA57A,
-	0x898E, 0xA000,
-	0x8990, 0x4001,
-	0x8992, 0x8002,
-	0x8994, 0x0005,
-	0x8996, 0x000A,
-	0x8998, 0xA00F,
-	0x899A, 0x4011,
-	0x899C, 0x0E00,
-	0x899E, 0x2000,
-	0x89A0, 0x2800,
-	0x89A2, 0x1400,
-	0x89A4, 0x2200,
-	0x89A6, 0x2800,
-	0x89A8, 0x2C00,
-	0x89AA, 0xFFFF,
-	0x89AC, 0x0008,
-	0x89AE, 0x2400,
-	0x89B0, 0x0344,
-	0x89B2, 0x0000,
-	0x89B4, 0x0000,
-	0x89B6, 0x1F20,
-	0x89B8, 0x1F18,
-	0x89BA, 0xFFFF,
-	0x89BC, 0x0008,
-	0x89BE, 0x2400,
-	0x89C0, 0x0380,
-	0x89C2, 0x0200,
-	0x89C4, 0x0200,
-	0x89C6, 0x0200,
-	0x89C8, 0x0200,
-	0x89CA, 0x0000,
-	0x89CC, 0x0000,
-	0x89CE, 0xFFFE,
-	0x89D0, 0x2400,
-	0x89D2, 0xFFFD,
-	0x89D4, 0xD4B0,
-	0x89D6, 0x0492,
-	0x89D8, 0xD4BC,
-	0x89DA, 0x0037,
-	0x89DC, 0x0346,
-	0x89DE, 0x0300,
-	0x89E0, 0x034A,
-	0x89E2, 0x151F,
-	0x89E4, 0x034E,
-	0x89E6, 0x0900,
-	0x89E8, 0x0000,
-	0x89EA, 0x0000,
-	0x89EC, 0x0000,
-	0x89EE, 0xFFFE,
-	0x89F0, 0x2400,
-	0x89F2, 0xFFFD,
-	0x89F4, 0x703C,
-	0x89F6, 0x0101,
-	0x89F8, 0x7048,
-	0x89FA, 0x009F,
-	0x89FC, 0x705A,
-	0x89FE, 0x00A0,
-	0x8A00, 0x7274,
-	0x8A02, 0xB000,
-	0x8A04, 0x7276,
-	0x8A06, 0x0000,
-	0x8A08, 0x7278,
-	0x8A0A, 0xD212,
-	0x8A0C, 0x7806,
-	0x8A0E, 0x0101,
-	0x8A10, 0x7808,
-	0x8A12, 0x0C3F,
-	0x8A14, 0x795A,
-	0x8A16, 0x0020,
-	0x8A18, 0x7970,
-	0x8A1A, 0x0020,
-	0x8A1C, 0x7A0E,
-	0x8A1E, 0x000F,
-	0x8A20, 0x7A6E,
-	0x8A22, 0x0019,
-	0x8A24, 0x7A86,
-	0x8A26, 0x0019,
-	0x8A28, 0x82A2,
-	0x8A2A, 0x0014,
-	0x8A2C, 0x82BA,
-	0x8A2E, 0x0033,
-	0x8A30, 0x8C9E,
-	0x8A32, 0x0035,
-	0x8A34, 0x8CA2,
-	0x8A36, 0x0050,
-	0x8A38, 0x8CCE,
-	0x8A3A, 0x0096,
-	0x8A3C, 0x8CD2,
-	0x8A3E, 0x00BE,
-	0x8A40, 0xB176,
-	0x8A42, 0x0206,
-	0x8A44, 0xB220,
-	0x8A46, 0x0301,
-	0x8A48, 0xB268,
-	0x8A4A, 0xE380,
-	0x8A4C, 0xC4D8,
-	0x8A4E, 0x0010,
-	0x8A50, 0xC4E2,
-	0x8A52, 0x0000,
-	0x8A54, 0xC53C,
-	0x8A56, 0x0005,
-	0x8A58, 0xC554,
-	0x8A5A, 0x1000,
-	0x8A5C, 0xD326,
-	0x8A5E, 0x1001,
-	0x8A60, 0xD3EC,
-	0x8A62, 0x1CB0,
-	0x8A64, 0xD49C,
-	0x8A66, 0x0000,
-	0x8A68, 0xD4A8,
-	0x8A6A, 0x0000,
-	0x8A6C, 0xD4AC,
-	0x8A6E, 0x0001,
-	0x8A70, 0xD4B8,
-	0x8A72, 0x0014,
-	0x8A74, 0xD4C4,
-	0x8A76, 0x0000,
-	0x8A78, 0xD4D0,
-	0x8A7A, 0x000A,
-	0x8A7C, 0xD4D2,
-	0x8A7E, 0x0000,
-	0x8A80, 0xD4DE,
-	0x8A82, 0x0001,
-	0x8A84, 0xD4EC,
-	0x8A86, 0x0000,
-	0x8A88, 0xD4EE,
-	0x8A8A, 0x0000,
-	0x8A8C, 0xD4F8,
-	0x8A8E, 0x0000,
-	0x8A90, 0xD4FA,
-	0x8A92, 0x0000,
-	0x8A94, 0xD684,
-	0x8A96, 0xE380,
-	0x8A98, 0xD704,
-	0x8A9A, 0x7800,
-	0x8A9C, 0xDADE,
-	0x8A9E, 0x00A0,
-	0x8AA0, 0xDAE0,
-	0x8AA2, 0x0140,
-	0x8AA4, 0xDB0C,
-	0x8AA6, 0x000D,
-	0x8AA8, 0xDB0E,
-	0x8AAA, 0x000F,
-	0x8AAC, 0xDB10,
-	0x8AAE, 0x000D,
-	0x8AB0, 0xDB3C,
-	0x8AB2, 0xD236,
-	0x8AB4, 0xDB3E,
-	0x8AB6, 0xD236,
-	0x8AB8, 0xDB40,
-	0x8ABA, 0xD236,
-	0x8ABC, 0xDC8C,
-	0x8ABE, 0x0B3F,
-	0x8AC0, 0xDC94,
-	0x8AC2, 0x0301,
-	0x8AC4, 0xE980,
-	0x8AC6, 0x049E,
-	0x8AC8, 0xF3F4,
-	0x8ACA, 0x00C8,
-	0x8ACC, 0xF3F6,
-	0x8ACE, 0x10D6,
-	0x8AD0, 0xFFFE,
-	0x8AD2, 0x2401,
-	0x8AD4, 0xFFFD,
-	0x8AD6, 0x195E,
-	0x8AD8, 0x0101,
-	0x8ADA, 0x1966,
-	0x8ADC, 0x0002,
-	0x8ADE, 0x2540,
-	0x8AE0, 0x0000,
-	0x8AE2, 0x29A8,
-	0x8AE4, 0x0001,
-	0x8AE6, 0x29BA,
-	0x8AE8, 0x0020,
-	0x8AEA, 0x2A44,
-	0x8AEC, 0x04AC,
-	0x8AEE, 0x2A56,
-	0x8AF0, 0x0004,
-	0x8AF2, 0x3132,
-	0x8AF4, 0x0002,
-	0x8AF6, 0x31D0,
-	0x8AF8, 0x0000,
-	0x8AFA, 0x31F8,
-	0x8AFC, 0x0000,
-	0x8AFE, 0x31FA,
-	0x8B00, 0x0000,
-	0x8B02, 0x4396,
-	0x8B04, 0x000D,
-	0x8B06, 0x5A70,
-	0x8B08, 0x0001,
-	0x8B0A, 0xFFFE,
-	0x8B0C, 0x2402,
-	0x8B0E, 0xFFFD,
-	0x8B10, 0xA598,
-	0x8B12, 0x0032,
-	0x8B14, 0xA59A,
-	0x8B16, 0x0035,
-	0x8B18, 0xFFFE,
-	0x8B1A, 0x2400,
-	0x8B1C, 0xFFFD,
-	0x8B1E, 0x0086,
-	0x8B20, 0x0280,
-	0x8B22, 0x021E,
-	0x8B24, 0x0006,
-	0x8B26, 0x034E,
-	0x8B28, 0x0900,
-	0x8B2A, 0x0350,
-	0x8B2C, 0x0008,
-	0x8B2E, 0x0352,
-	0x8B30, 0x0008,
-	0x8B32, 0x0722,
-	0x8B34, 0x0020,
-	0x8B36, 0x0900,
-	0x8B38, 0x2222,
-	0x8B3A, 0x0B02,
-	0x8B3C, 0x0201,
-	0x8B3E, 0x0B08,
-	0x8B40, 0x0001,
-	0x8B42, 0x0342,
-	0x8B44, 0x2560,
-	0x8B46, 0x0000,
-	0x8B48, 0xFFFF,
-	0x8B4A, 0x0010,
-	0x8B4C, 0x2401,
-	0x8B4E, 0x1C26,
-	0x8B50, 0x8001,
-	0x8B52, 0xF004,
-	0x8B54, 0x2010,
-	0x8B56, 0x5610,
-	0x8B58, 0x0005,
-	0x8B5A, 0x00A0,
-	0x8B5C, 0xB610,
-	0x8B5E, 0x7011,
-	0x8B60, 0xFFFF,
-	0x8B62, 0x0018,
-	0x8B64, 0x2401,
-	0x8B66, 0x1C4E,
-	0x8B68, 0x8001,
-	0x8B6A, 0xF004,
-	0x8B6C, 0x2810,
-	0x8B6E, 0x5110,
-	0x8B70, 0x0005,
-	0x8B72, 0xF009,
-	0x8B74, 0x9710,
-	0x8B76, 0xDA10,
-	0x8B78, 0x000A,
-	0x8B7A, 0x00A0,
-	0x8B7C, 0xDA10,
-	0x8B7E, 0x7011,
-	0x8B80, 0xFFFF,
-	0x8B82, 0x0018,
-	0x8B84, 0x2401,
-	0x8B86, 0x1C76,
-	0x8B88, 0x8001,
-	0x8B8A, 0xF004,
-	0x8B8C, 0x2810,
-	0x8B8E, 0x6610,
-	0x8B90, 0x0005,
-	0x8B92, 0xF009,
-	0x8B94, 0x7210,
-	0x8B96, 0xDD10,
-	0x8B98, 0x000A,
-	0x8B9A, 0x00A0,
-	0x8B9C, 0xDD10,
-	0x8B9E, 0x7011,
-	0x8BA0, 0xFFFF,
-	0x8BA2, 0x0010,
-	0x8BA4, 0x2401,
-	0x8BA6, 0x1C9E,
-	0x8BA8, 0x8001,
-	0x8BAA, 0xF004,
-	0x8BAC, 0x2010,
-	0x8BAE, 0x5610,
-	0x8BB0, 0x0005,
-	0x8BB2, 0x00A0,
-	0x8BB4, 0xC410,
-	0x8BB6, 0x7011,
-	0x8BB8, 0xFFFF,
-	0x8BBA, 0x0010,
-	0x8BBC, 0x2401,
-	0x8BBE, 0x1CC6,
-	0x8BC0, 0x8001,
-	0x8BC2, 0xF004,
-	0x8BC4, 0x2010,
-	0x8BC6, 0x5610,
-	0x8BC8, 0x0005,
-	0x8BCA, 0x00A0,
-	0x8BCC, 0xB610,
-	0x8BCE, 0x7011,
-	0x8BD0, 0xFFFF,
-	0x8BD2, 0x0018,
-	0x8BD4, 0x2401,
-	0x8BD6, 0x1CEE,
-	0x8BD8, 0x8001,
-	0x8BDA, 0xF004,
-	0x8BDC, 0x2810,
-	0x8BDE, 0x5110,
-	0x8BE0, 0x0005,
-	0x8BE2, 0xF009,
-	0x8BE4, 0x9710,
-	0x8BE6, 0xDA10,
-	0x8BE8, 0x000A,
-	0x8BEA, 0x00A0,
-	0x8BEC, 0xDA10,
-	0x8BEE, 0x7011,
-	0x8BF0, 0xFFFF,
-	0x8BF2, 0x0018,
-	0x8BF4, 0x2401,
-	0x8BF6, 0x1D16,
-	0x8BF8, 0x8001,
-	0x8BFA, 0xF004,
-	0x8BFC, 0x2810,
-	0x8BFE, 0x6610,
-	0x8C00, 0x0005,
-	0x8C02, 0xF009,
-	0x8C04, 0x7210,
-	0x8C06, 0xDD10,
-	0x8C08, 0x000A,
-	0x8C0A, 0x00A0,
-	0x8C0C, 0xDD10,
-	0x8C0E, 0x7011,
-	0x8C10, 0xFFFF,
-	0x8C12, 0x0010,
-	0x8C14, 0x2401,
-	0x8C16, 0x1D3E,
-	0x8C18, 0x8001,
-	0x8C1A, 0xF004,
-	0x8C1C, 0x2010,
-	0x8C1E, 0x5610,
-	0x8C20, 0x0005,
-	0x8C22, 0x00A0,
-	0x8C24, 0xC410,
-	0x8C26, 0x7011,
-	0x8C28, 0xFFFF,
-	0x8C2A, 0x001C,
-	0x8C2C, 0x2402,
-	0x8C2E, 0xA57A,
-	0x8C30, 0xA000,
-	0x8C32, 0x4001,
-	0x8C34, 0x8002,
-	0x8C36, 0x0005,
-	0x8C38, 0x000A,
-	0x8C3A, 0xA00F,
-	0x8C3C, 0x4011,
-	0x8C3E, 0x0E00,
-	0x8C40, 0x2000,
-	0x8C42, 0x2800,
-	0x8C44, 0x1400,
-	0x8C46, 0x2200,
-	0x8C48, 0x2800,
-	0x8C4A, 0x2C00,
-	0x8C4C, 0xFFFF,
-	0x8C4E, 0x0008,
-	0x8C50, 0x2400,
-	0x8C52, 0x0344,
-	0x8C54, 0x0000,
-	0x8C56, 0x0003,
-	0x8C58, 0x1F20,
-	0x8C5A, 0x1F15,
-	0x8C5C, 0xFFFF,
-	0x8C5E, 0x0008,
-	0x8C60, 0x2400,
-	0x8C62, 0x0380,
-	0x8C64, 0x0200,
-	0x8C66, 0x0200,
-	0x8C68, 0x0200,
-	0x8C6A, 0x0200,
-	0x8C6C, 0x0000,
-	0x8C6E, 0x0000,
-	0x8C70, 0xFFFE,
-	0x8C72, 0x2400,
-	0x8C74, 0xFFFD,
-	0x8C76, 0x0346,
-	0x8C78, 0x0780,
-	0x8C7A, 0x034A,
-	0x8C7C, 0x109F,
-	0x8C7E, 0x034E,
-	0x8C80, 0x0900,
-	0x8C82, 0x0000,
-	0x8C84, 0x0000,
-	0x8C86, 0x0000,
-	0x8C88, 0xFFFE,
-	0x8C8A, 0x2401,
-	0x8C8C, 0xFFFD,
-	0x8C8E, 0x25E0,
-	0x8C90, 0x0001,
-	0x8C92, 0x25E2,
-	0x8C94, 0x00CD,
-	0x8C96, 0x31D0,
-	0x8C98, 0x0000,
-	0x8C9A, 0x31FA,
-	0x8C9C, 0x0400,
-	0x8C9E, 0xFFFE,
-	0x8CA0, 0x2400,
-	0x8CA2, 0xFFFD,
-	0x8CA4, 0x0346,
-	0x8CA6, 0x0780,
-	0x8CA8, 0x034A,
-	0x8CAA, 0x109F,
-	0x8CAC, 0x034E,
-	0x8CAE, 0x0900,
-	0x8CB0, 0x0B08,
-	0x8CB2, 0x0001,
-	0x8CB4, 0x0000,
-	0x8CB6, 0x0000,
-	0x8CB8, 0x0000,
-	0x8CBA, 0xFFFE,
-	0x8CBC, 0x2400,
-	0x8CBE, 0xFFFD,
-	0x8CC0, 0xD49C,
-	0x8CC2, 0x0022,
-	0x8CC4, 0xD4A8,
-	0x8CC6, 0x0000,
-	0x8CC8, 0xD4B0,
-	0x8CCA, 0x0458,
-	0x8CCC, 0xD4BC,
-	0x8CCE, 0x003A,
-	0x8CD0, 0xD4E2,
-	0x8CD2, 0x0032,
-	0x8CD4, 0xD556,
-	0x8CD6, 0x00F6,
-	0x8CD8, 0xD562,
-	0x8CDA, 0x0384,
-	0x8CDC, 0xFFFE,
-	0x8CDE, 0x2401,
-	0x8CE0, 0xFFFD,
-	0x8CE2, 0x1C2C,
-	0x8CE4, 0x1000,
-	0x8CE6, 0x1C32,
-	0x8CE8, 0x1051,
-	0x8CEA, 0x1C34,
-	0x8CEC, 0x1035,
-	0x8CEE, 0x1C5A,
-	0x8CF0, 0x1072,
-	0x8CF2, 0x1C5C,
-	0x8CF4, 0x1072,
-	0x8CF6, 0x1C7C,
-	0x8CF8, 0x1000,
-	0x8CFA, 0x1C82,
-	0x8CFC, 0x1066,
-	0x8CFE, 0x1C84,
-	0x8D00, 0x1066,
-	0x8D02, 0x1CAA,
-	0x8D04, 0x1051,
-	0x8D06, 0x1CAC,
-	0x8D08, 0x1035,
-	0x8D0A, 0x1CCC,
-	0x8D0C, 0x1000,
-	0x8D0E, 0x1CD2,
-	0x8D10, 0x1051,
-	0x8D12, 0x1CD4,
-	0x8D14, 0x1035,
-	0x8D16, 0x1CFA,
-	0x8D18, 0x1072,
-	0x8D1A, 0x1CFC,
-	0x8D1C, 0x1072,
-	0x8D1E, 0x1D1C,
-	0x8D20, 0x1000,
-	0x8D22, 0x1D22,
-	0x8D24, 0x1066,
-	0x8D26, 0x1D24,
-	0x8D28, 0x1066,
-	0x8D2A, 0x1D4A,
-	0x8D2C, 0x1051,
-	0x8D2E, 0x1D4C,
-	0x8D30, 0x1035,
-	0x8D32, 0xFFFE,
-	0x8D34, 0x2400,
-	0x8D36, 0xFFFD,
-	0x8D38, 0x0E00,
-	0x8D3A, 0x0302,
-	0x8D3C, 0x0000,
-	0x8D3E, 0x0000,
-	0x8D40, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static u16 zhuquec1tele_sensor_simple_init_setting[] = {
-	0xFCFC, 0x2000,
-	0xDCF0, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C60, 0x0000,
-	0xFCFC, 0x2002,
-	0x849C, 0x0100,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0x84A4, 0x0000,
-	0x84A6, 0x0000,
-	0x84A8, 0x0000,
-	0x84AA, 0x0001,
-	0x84AC, 0x01FF,
-	0x84B0, 0x8089,
-	0x84B2, 0x0000,
-	0x84B4, 0x8889,
-	0x84B6, 0x0000,
-	0x84B8, 0xC097,
-	0x84BA, 0x0000,
-	0x84BC, 0xA60E,
-	0x84BE, 0x0000,
-	0x84C0, 0x2206,
-	0x84C2, 0x0000,
-	0x84C4, 0x0010,
-	0x84C8, 0x90C3,
-	0x84CA, 0x0224,
-	0x84CC, 0x44AB,
-	0x84CE, 0x0224,
-	0x84D0, 0x44AB,
-	0x84D2, 0x0224,
-	0x84D4, 0x44AB,
-	0x84D6, 0x0224,
-	0x84D8, 0x44AB,
-	0x84DA, 0x0224,
-	0x84DC, 0x44AB,
-	0x84DE, 0x0224,
-	0xA548, 0x001D,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA558, 0x0000,
-	0xA55A, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xA56C, 0x0000,
-	0xA56E, 0x0000,
-	0xA570, 0x0000,
-	0xA572, 0x0000,
-	0xA574, 0x00D5,
-	0xA576, 0x0000,
-	0xA578, 0x0000,
-	0xA57A, 0x0000,
-	0xA57C, 0x0000,
-	0xA57E, 0x0000,
-	0xA580, 0x0000,
-	0xA582, 0x0000,
-	0xA584, 0x0000,
-	0xA586, 0x0000,
-	0xA588, 0x0000,
-	0xA58A, 0x0000,
-	0xA58C, 0x0000,
-	0xA58E, 0x0000,
-	0xA590, 0x0000,
-	0xA592, 0x0000,
-	0xA594, 0x0000,
-	0xA596, 0x0000,
-	0xA598, 0x0000,
-	0xA59A, 0x0000,
-	0xA59C, 0x0000,
-	0xA59E, 0x0000,
-	0xA5A0, 0x0100,
-	0xA5A2, 0x0036,
-	0xA5A4, 0x0000,
-	0xA5A6, 0x0000,
-	0xA5A8, 0x0000,
-	0xA5AA, 0x0000,
-	0xA5AC, 0x0000,
-	0xA5AE, 0x0000,
-	0xA5B0, 0x0000,
-	0xA5B2, 0x0000,
-	0xA5B4, 0x0000,
-	0xA5B6, 0x0000,
-	0xA5B8, 0x0000,
-	0xA5BA, 0x0000,
-	0xA5BC, 0x0000,
-	0xA5BE, 0x0000,
-	0xA5C0, 0x0000,
-	0xA5C2, 0x0000,
-	0xA5C4, 0x0000,
-	0xA5C6, 0x0000,
-	0xA5C8, 0x0000,
-	0xA5CA, 0x0000,
-	0xA5CC, 0x0000,
-	0xA5CE, 0x0000,
-	0xA5D0, 0x0000,
-	0xA5D2, 0x0000,
-	0xA5D4, 0x0000,
-	0xA5D6, 0x0000,
-	0xA5D8, 0x0000,
-	0xA5DA, 0x0000,
-	0xA5DC, 0x0000,
-	0xA5DE, 0x0000,
-	0xA5E0, 0x0000,
-	0xA5E2, 0x0000,
-	0xA5E4, 0x0000,
-	0xA5E6, 0x0000,
-	0xA5E8, 0x0000,
-	0xA5EA, 0x0000,
-	0xA5EC, 0x000F,
-	0xA5EE, 0x000F,
-	0xA5F0, 0x000F,
-	0xA5F2, 0x000F,
-	0xA5F4, 0x0000,
-	0xA5F6, 0x0000,
-	0xA5F8, 0x0000,
-	0xA5FA, 0x0000,
-	0xA5FC, 0x0000,
-	0xA5FE, 0x0000,
-	0xA600, 0x0000,
-	0xA602, 0x0000,
-	0xA604, 0x0000,
-	0xA606, 0x00C6,
-	0xBB84, 0x0001,
-	0xBB86, 0x0000,
-	0xBB88, 0x0000,
-	0xBB8A, 0x0100,
-	0xBB8C, 0x0800,
-	0xBB8E, 0x1000,
-	0xBB90, 0x2000,
-	0xBB92, 0x9A00,
-	0xBB94, 0x9A00,
-	0xBB96, 0x9A00,
-	0xBB98, 0x9A00,
-	0xBB9A, 0x9600,
-	0xBB9C, 0x9600,
-	0xBB9E, 0x9600,
-	0xBBA0, 0x9600,
-	0xBBA2, 0x9300,
-	0xBBA4, 0x9300,
-	0xBBA6, 0x9300,
-	0xBBA8, 0x9300,
-	0xBBAA, 0x9000,
-	0xBBAC, 0x9000,
-	0xBBAE, 0x9000,
-	0xBBB0, 0x9000,
-	0xBBB2, 0x8D00,
-	0xBBB4, 0x8D00,
-	0xBBB6, 0x8D00,
-	0xBBB8, 0x8D00,
-	0xBBBA, 0x3F00,
-	0xBBBC, 0x3F00,
-	0xBBBE, 0x3F00,
-	0xBBC0, 0x3F00,
-	0xBBC2, 0x1E00,
-	0xBBC4, 0x1E00,
-	0xBBC6, 0x1E00,
-	0xBBC8, 0x1E00,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0000,
-	0xBBD2, 0x0800,
-	0xBBD4, 0x0800,
-	0xBBD6, 0x0800,
-	0xBBD8, 0x0800,
-	0xBBDA, 0x0000,
-	0xBBDC, 0x0000,
-	0xBBDE, 0x0000,
-	0xBBE0, 0x0000,
-	0xBBE2, 0x3F00,
-	0xBBE4, 0x3F00,
-	0xBBE6, 0x3F00,
-	0xBBE8, 0x3F00,
-	0xBBEA, 0x3400,
-	0xBBEC, 0x3400,
-	0xBBEE, 0x3400,
-	0xBBF0, 0x3400,
-	0xBBF2, 0x0A00,
-	0xBBF4, 0x0A00,
-	0xBBF6, 0x0A00,
-	0xBBF8, 0x0A00,
-	0xBBFA, 0x1000,
-	0xBBFC, 0x1000,
-	0xBBFE, 0x1000,
-	0xBC00, 0x1000,
-	0xBC02, 0x0600,
-	0xBC04, 0x0600,
-	0xBC06, 0x0600,
-	0xBC08, 0x0600,
-	0xBC0A, 0x0C00,
-	0xBC0C, 0x0C00,
-	0xBC0E, 0x0C00,
-	0xBC10, 0x0C00,
-	0xBC12, 0x0000,
-	0xBC14, 0x0000,
-	0xBC16, 0x0000,
-	0xBC18, 0x0000,
-	0xBC1A, 0x1000,
-	0xBC1C, 0x1000,
-	0xBC1E, 0x1000,
-	0xBC20, 0x1000,
-	0xBC22, 0x1000,
-	0xBC24, 0x1000,
-	0xBC26, 0x1000,
-	0xBC28, 0x1000,
-	0xBC2A, 0x2000,
-	0xBC2C, 0x1000,
-	0xBC2E, 0x1000,
-	0xBC30, 0x1000,
-	0xBC32, 0x0600,
-	0xBC34, 0x0600,
-	0xBC36, 0x0600,
-	0xBC38, 0x0600,
-	0xBC3A, 0x1C00,
-	0xBC3C, 0x1C00,
-	0xBC3E, 0x1C00,
-	0xBC40, 0x1C00,
-	0xBC42, 0x0600,
-	0xBC44, 0x0600,
-	0xBC46, 0x0600,
-	0xBC48, 0x0600,
-	0xBC4A, 0x2A00,
-	0xBC4C, 0x2A00,
-	0xBC4E, 0x2A00,
-	0xBC50, 0x2A00,
-	0xBC52, 0x0200,
-	0xBC54, 0x0200,
-	0xBC56, 0x0200,
-	0xBC58, 0x0200,
-	0xBC5A, 0x1000,
-	0xBC5C, 0x1000,
-	0xBC5E, 0x1000,
-	0xBC60, 0x1000,
-	0xBC62, 0x0E00,
-	0xBC64, 0x0E00,
-	0xBC66, 0x0E00,
-	0xBC68, 0x0E00,
-	0xBC6A, 0x2800,
-	0xBC6C, 0x2800,
-	0xBC6E, 0x2800,
-	0xBC70, 0x2800,
-	0xBC72, 0x1800,
-	0xBC74, 0x1800,
-	0xBC76, 0x1800,
-	0xBC78, 0x1800,
-	0xBC7A, 0x0800,
-	0xBC7C, 0x0800,
-	0xBC7E, 0x0800,
-	0xBC80, 0x0800,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x0000,
-	0xBC8A, 0x2400,
-	0xBC8C, 0x2400,
-	0xBC8E, 0x2400,
-	0xBC90, 0x2400,
-	0xBC92, 0x0088,
-	0xFCFC, 0x2001,
-	0x5634, 0x041D,
-	0x5636, 0x0420,
-	0x5638, 0x3C85,
-	0x563A, 0x0224,
-	0x563C, 0x3CE6,
-	0x563E, 0x0320,
-	0x5640, 0xD885,
-	0x5642, 0x0224,
-	0x5644, 0xD06E,
-	0x5646, 0x0320,
-	0x5648, 0xC48D,
-	0x564A, 0x0224,
-	0x564C, 0x4877,
-	0x564E, 0x0320,
-	0x5650, 0xCC90,
-	0x5652, 0x0224,
-	0x5654, 0x6812,
-	0x5656, 0x0320,
-	0x5658, 0xB88F,
-	0x565A, 0x0224,
-	0x565C, 0xE8FE,
-	0x565E, 0x0220,
-	0x5660, 0x5491,
-	0x5662, 0x0224,
-	0x5664, 0xA462,
-	0x5666, 0x0320,
-	0x5668, 0x9C95,
-	0x566A, 0x0224,
-	0x566C, 0x901B,
-	0x566E, 0x0020,
-	0x5670, 0x2896,
-	0x5672, 0x0224,
-	0x5674, 0xC446,
-	0x5676, 0x0320,
-	0x5678, 0xE896,
-	0x567A, 0x0224,
-	0x567C, 0x1427,
-	0x567E, 0x0320,
-	0x5680, 0xC498,
-	0x5682, 0x0224,
-	0x5684, 0x304C,
-	0x5686, 0x0220,
-	0x5688, 0x749B,
-	0x568A, 0x0224,
-	0x568C, 0xC82C,
-	0x568E, 0x0220,
-	0x5690, 0xD09B,
-	0x5692, 0x0224,
-	0x5694, 0x484F,
-	0x5696, 0x0220,
-	0x5698, 0x289C,
-	0x569A, 0x0224,
-	0x569C, 0xB041,
-	0x569E, 0x0220,
-	0x56A0, 0x3C9A,
-	0x56A2, 0x0224,
-	0x56A4, 0xC81D,
-	0x56A6, 0x0420,
-	0x56A8, 0xFC9A,
-	0x56AA, 0x0224,
-	0x56AC, 0xAC7F,
-	0x56AE, 0x0420,
-	0x56B0, 0x8C86,
-	0x56B2, 0x0224,
-	0x56B4, 0x7C80,
-	0x56B6, 0x0420,
-	0x56B8, 0x1086,
-	0x56BA, 0x0224,
-	0x56BC, 0xF887,
-	0x56BE, 0x0320,
-	0x56C0, 0x7CAC,
-	0x56C2, 0x0224,
-	0x56C4, 0x1007,
-	0x56C6, 0x0320,
-	0x56C8, 0xE08E,
-	0x56CA, 0x0224,
-	0x56CC, 0x1409,
-	0x56CE, 0x0020,
-	0x56D0, 0x2495,
-	0x56D2, 0x0224,
-	0x56D4, 0x2046,
-	0x56D6, 0x0420,
-	0x56D8, 0xC087,
-	0x56DA, 0x0224,
-	0x56DC, 0xB05B,
-	0x56DE, 0x0420,
-	0x56E0, 0x4088,
-	0x56E2, 0x0224,
-	0x56E4, 0x505C,
-	0x56E6, 0x0320,
-	0x56E8, 0x448A,
-	0x56EA, 0x0224,
-	0x56EC, 0xA45B,
-	0x56EE, 0x0320,
-	0x56F0, 0x5089,
-	0x56F2, 0x0224,
-	0x56F4, 0x306A,
-	0x56F6, 0x0420,
-	0x56F8, 0x1485,
-	0x56FA, 0x0224,
-	0x56FC, 0x90F8,
-	0x56FE, 0x0220,
-	0x5700, 0x44A1,
-	0x5702, 0x0224,
-	0x5704, 0x0454,
-	0x5706, 0x0120,
-	0x5708, 0x18A6,
-	0x570A, 0x0224,
-	0x570C, 0x0453,
-	0x570E, 0x0020,
-	0x5710, 0xA0A7,
-	0x5712, 0x0224,
-	0x5714, 0xC850,
-	0x5716, 0x0220,
-	0x5718, 0xB8AC,
-	0x571A, 0x0224,
-	0x571C, 0x2C88,
-	0x571E, 0x0220,
-	0x5720, 0xF0AD,
-	0x5722, 0x0224,
-	0x5724, 0x7C82,
-	0x5726, 0x0120,
-	0x5728, 0xC8B4,
-	0x572A, 0x0224,
-	0x572C, 0xACF3,
-	0x572E, 0x0320,
-	0x5730, 0x64B5,
-	0x5732, 0x0224,
-	0x5734, 0x1081,
-	0x5736, 0x0320,
-	0x5738, 0x70B9,
-	0x573A, 0x0224,
-	0x573C, 0xBCFD,
-	0x573E, 0x0220,
-	0x5740, 0xE4B9,
-	0x5742, 0x0224,
-	0x5744, 0xBCA5,
-	0x5746, 0x0420,
-	0x5748, 0x7CBA,
-	0x574A, 0x0224,
-	0x574C, 0xB803,
-	0x574E, 0x0320,
-	0x5750, 0xE4BC,
-	0x5752, 0x0224,
-	0x5754, 0x8424,
-	0x5756, 0x0220,
-	0x5758, 0xB0BD,
-	0x575A, 0x0224,
-	0x575C, 0x9C4C,
-	0x575E, 0x0220,
-	0x5760, 0xD0BF,
-	0x5762, 0x0224,
-	0x5764, 0x0C22,
-	0x5766, 0x0220,
-	0x5768, 0x54BE,
-	0x576A, 0x0224,
-	0xFCFC, 0x2002,
-	0xBC98, 0x1743,
-	0xBC9A, 0x02FC,
-	0xBC9C, 0xE702,
-	0xBC9E, 0x8382,
-	0xBCA0, 0x2A84,
-	0xBCA2, 0xEFE0,
-	0xBCA4, 0xBFB9,
-	0xBCA6, 0xA147,
-	0xBCA8, 0x6306,
-	0xBCAA, 0xF400,
-	0xBCAC, 0x1743,
-	0xBCAE, 0x02FC,
-	0xBCB0, 0x6700,
-	0xBCB2, 0x8383,
-	0xBCB4, 0xB7C7,
-	0xBCB6, 0x0224,
-	0xBCB8, 0x83C7,
-	0xBCBA, 0x87B8,
-	0xBCBC, 0xE5DB,
-	0xBCBE, 0xB797,
-	0xBCC0, 0x0124,
-	0xBCC2, 0x9387,
-	0xBCC4, 0x0753,
-	0xBCC6, 0x0567,
-	0xBCC8, 0x3E97,
-	0xBCCA, 0x8346,
-	0xBCCC, 0x07B9,
-	0xBCCE, 0xF9DE,
-	0xBCD0, 0x83C7,
-	0xBCD2, 0x673F,
-	0xBCD4, 0xE1DF,
-	0xBCD6, 0x8357,
-	0xBCD8, 0x47B6,
-	0xBCDA, 0x93E7,
-	0xBCDC, 0x0720,
-	0xBCDE, 0x2312,
-	0xBCE0, 0xF7B6,
-	0xBCE2, 0xE9B7,
-	0xBCE4, 0x1733,
-	0xBCE6, 0x02FC,
-	0xBCE8, 0xE702,
-	0xBCEA, 0x437B,
-	0xBCEC, 0x37C8,
-	0xBCEE, 0x0224,
-	0xBCF0, 0x1308,
-	0xBCF2, 0x48B8,
-	0xBCF4, 0x8348,
-	0xBCF6, 0x4800,
-	0xBCF8, 0x2A8B,
-	0xBCFA, 0xAE8B,
-	0xBCFC, 0x3284,
-	0xBCFE, 0xB684,
-	0xBD00, 0x3A89,
-	0xBD02, 0xBE89,
-	0xBD04, 0x6380,
-	0xBD06, 0x0802,
-	0xBD08, 0xB7A7,
-	0xBD0A, 0x0124,
-	0xBD0C, 0x9387,
-	0xBD0E, 0x0753,
-	0xBD10, 0x03C7,
-	0xBD12, 0x07B9,
-	0xBD14, 0x83C7,
-	0xBD16, 0xB792,
-	0xBD18, 0x11C7,
-	0xBD1A, 0x0347,
-	0xBD1C, 0x5800,
-	0xBD1E, 0xBD8B,
-	0xBD20, 0x6306,
-	0xBD22, 0xF704,
-	0xBD24, 0x37E8,
-	0xBD26, 0x0124,
-	0xBD28, 0x1308,
-	0xBD2A, 0x0887,
-	0xBD2C, 0x832A,
-	0xBD2E, 0x0812,
-	0xBD30, 0x032A,
-	0xBD32, 0x4812,
-	0xBD34, 0x0146,
-	0xBD36, 0xD685,
-	0xBD38, 0x5285,
-	0xBD3A, 0x9730,
-	0xBD3C, 0x01FC,
-	0xBD3E, 0xE780,
-	0xBD40, 0xA0D0,
-	0xBD42, 0xCE87,
-	0xBD44, 0x4A87,
-	0xBD46, 0xA686,
-	0xBD48, 0x2286,
-	0xBD4A, 0xDE85,
-	0xBD4C, 0x5A85,
-	0xBD4E, 0x9740,
-	0xBD50, 0x00FC,
-	0xBD52, 0xE780,
-	0xBD54, 0xA066,
-	0xBD56, 0x0546,
-	0xBD58, 0xD685,
-	0xBD5A, 0x5285,
-	0xBD5C, 0x9730,
-	0xBD5E, 0x01FC,
-	0xBD60, 0xE780,
-	0xBD62, 0x80CE,
-	0xBD64, 0x1733,
-	0xBD66, 0x02FC,
-	0xBD68, 0x6700,
-	0xBD6A, 0xC376,
-	0xBD6C, 0x2315,
-	0xBD6E, 0x0600,
-	0xBD70, 0x9760,
-	0xBD72, 0xFFFB,
-	0xBD74, 0xE780,
-	0xBD76, 0x80BA,
-	0xBD78, 0x01CD,
-	0xBD7A, 0xB797,
-	0xBD7C, 0x0124,
-	0xBD7E, 0x9387,
-	0xBD80, 0x07D7,
-	0xBD82, 0x03C7,
-	0xBD84, 0xC700,
-	0xBD86, 0x59DF,
-	0xBD88, 0x7D17,
-	0xBD8A, 0x2386,
-	0xBD8C, 0xE700,
-	0xBD8E, 0x59BF,
-	0xBD90, 0x9760,
-	0xBD92, 0xFFFB,
-	0xBD94, 0xE780,
-	0xBD96, 0x80B5,
-	0xBD98, 0x6DD1,
-	0xBD9A, 0xB797,
-	0xBD9C, 0x0124,
-	0xBD9E, 0x9387,
-	0xBDA0, 0x07D7,
-	0xBDA2, 0x03C7,
-	0xBDA4, 0xD700,
-	0xBDA6, 0x3DDF,
-	0xBDA8, 0x7D17,
-	0xBDAA, 0xA386,
-	0xBDAC, 0xE700,
-	0xBDAE, 0x9DBF,
-	0xBDB0, 0x1733,
-	0xBDB2, 0x02FC,
-	0xBDB4, 0xE702,
-	0xBDB6, 0x636F,
-	0xBDB8, 0xB7E7,
-	0xBDBA, 0x0124,
-	0xBDBC, 0x9387,
-	0xBDBE, 0x0787,
-	0xBDC0, 0x03AA,
-	0xBDC2, 0x8712,
-	0xBDC4, 0x83A9,
-	0xBDC6, 0xC712,
-	0xBDC8, 0xAE84,
-	0xBDCA, 0x2A84,
-	0xBDCC, 0x3289,
-	0xBDCE, 0xD285,
-	0xBDD0, 0x0146,
-	0xBDD2, 0x4E85,
-	0xBDD4, 0x9730,
-	0xBDD6, 0x01FC,
-	0xBDD8, 0xE780,
-	0xBDDA, 0x00C7,
-	0xBDDC, 0xA685,
-	0xBDDE, 0x4A86,
-	0xBDE0, 0x2285,
-	0xBDE2, 0x9760,
-	0xBDE4, 0xFFFB,
-	0xBDE6, 0xE780,
-	0xBDE8, 0x206A,
-	0xBDEA, 0xAA84,
-	0xBDEC, 0x0546,
-	0xBDEE, 0xD285,
-	0xBDF0, 0x4E85,
-	0xBDF2, 0x9730,
-	0xBDF4, 0x01FC,
-	0xBDF6, 0xE780,
-	0xBDF8, 0x20C5,
-	0xBDFA, 0xB7C7,
-	0xBDFC, 0x0224,
-	0xBDFE, 0x9387,
-	0xBE00, 0x47B8,
-	0xBE02, 0x03C7,
-	0xBE04, 0xE710,
-	0xBE06, 0x15C3,
-	0xBE08, 0x37A7,
-	0xBE0A, 0x0124,
-	0xBE0C, 0x1307,
-	0xBE0E, 0x0753,
-	0xBE10, 0x0346,
-	0xBE12, 0x37B9,
-	0xBE14, 0x8946,
-	0xBE16, 0x631A,
-	0xBE18, 0xD600,
-	0xBE1A, 0x8356,
-	0xBE1C, 0x87BA,
-	0xBE1E, 0xE18E,
-	0xBE20, 0x89C6,
-	0xBE22, 0x9306,
-	0xBE24, 0x0040,
-	0xBE26, 0x6307,
-	0xBE28, 0xD400,
-	0xBE2A, 0x2685,
-	0xBE2C, 0x1733,
-	0xBE2E, 0x02FC,
-	0xBE30, 0x6700,
-	0xBE32, 0xE36A,
-	0xBE34, 0x8326,
-	0xBE36, 0x47B3,
-	0xBE38, 0x7D57,
-	0xBE3A, 0xE388,
-	0xBE3C, 0xE6FE,
-	0xBE3E, 0x03D7,
-	0xBE40, 0x2711,
-	0xBE42, 0x9396,
-	0xBE44, 0x0401,
-	0xBE46, 0xC182,
-	0xBE48, 0x11E3,
-	0xBE4A, 0x3687,
-	0xBE4C, 0xBA84,
-	0xBE4E, 0x2399,
-	0xBE50, 0xD710,
-	0xBE52, 0xE1BF,
-	0xBE54, 0x1733,
-	0xBE56, 0x02FC,
-	0xBE58, 0xE702,
-	0xBE5A, 0x2365,
-	0xBE5C, 0x3729,
-	0xBE5E, 0x0024,
-	0xBE60, 0xB7A4,
-	0xBE62, 0x0124,
-	0xBE64, 0x1309,
-	0xBE66, 0x0933,
-	0xBE68, 0x9384,
-	0xBE6A, 0x0453,
-	0xBE6C, 0x8347,
-	0xBE6E, 0x491A,
-	0xBE70, 0x03C7,
-	0xBE72, 0x24B7,
-	0xBE74, 0x2A84,
-	0xBE76, 0xD98F,
-	0xBE78, 0x6382,
-	0xBE7A, 0x0714,
-	0xBE7C, 0x8347,
-	0xBE7E, 0xE400,
-	0xBE80, 0x0547,
-	0xBE82, 0x2305,
-	0xBE84, 0xE400,
-	0xBE86, 0x99E7,
-	0xBE88, 0x8347,
-	0xBE8A, 0xC400,
-	0xBE8C, 0xD1CF,
-	0xBE8E, 0x83C7,
-	0xBE90, 0x24B7,
-	0xBE92, 0xC5CB,
-	0xBE94, 0xB76A,
-	0xBE96, 0x0124,
-	0xBE98, 0x130A,
-	0xBE9A, 0x0403,
-	0xBE9C, 0x0347,
-	0xBE9E, 0x0400,
-	0xBEA0, 0xA169,
-	0xBEA2, 0xFD19,
-	0xBEA4, 0xA301,
-	0xBEA6, 0xE400,
-	0xBEA8, 0x83A7,
-	0xBEAA, 0x0A4B,
-	0xBEAC, 0x2302,
-	0xBEAE, 0xE400,
-	0xBEB0, 0x0567,
-	0xBEB2, 0xBA97,
-	0xBEB4, 0x83D7,
-	0xBEB6, 0x47E0,
-	0xBEB8, 0x2303,
-	0xBEBA, 0x0400,
-	0xBEBC, 0xB3F7,
-	0xBEBE, 0x3701,
-	0xBEC0, 0x231C,
-	0xBEC2, 0xF400,
-	0xBEC4, 0x9740,
-	0xBEC6, 0xFDFB,
-	0xBEC8, 0xE780,
-	0xBECA, 0x0067,
-	0xBECC, 0x0358,
-	0xBECE, 0x8401,
-	0xBED0, 0xA308,
-	0xBED2, 0xA400,
-	0xBED4, 0x6301,
-	0xBED6, 0x0806,
-	0xBED8, 0x3736,
-	0xBEDA, 0x0520,
-	0xBEDC, 0x1306,
-	0xBEDE, 0x06C8,
-	0xBEE0, 0x8146,
-	0xBEE2, 0x8147,
-	0xBEE4, 0x4145,
-	0xBEE6, 0xB305,
-	0xBEE8, 0xF400,
-	0xBEEA, 0x3357,
-	0xBEEC, 0xF840,
-	0xBEEE, 0x2380,
-	0xBEF0, 0xD502,
-	0xBEF2, 0x058B,
-	0xBEF4, 0x8507,
-	0xBEF6, 0x11C7,
-	0xBEF8, 0x0347,
-	0xBEFA, 0x0600,
-	0xBEFC, 0xBA96,
-	0xBEFE, 0x93F6,
-	0xBF00, 0xF60F,
-	0xBF02, 0x0506,
-	0xBF04, 0xE391,
-	0xBF06, 0xA7FE,
-	0xBF08, 0x2308,
-	0xBF0A, 0xD400,
-	0xBF0C, 0x8347,
-	0xBF0E, 0x491A,
-	0xBF10, 0x03C7,
-	0xBF12, 0x24B7,
-	0xBF14, 0xD98F,
-	0xBF16, 0xC9C3,
-	0xBF18, 0x2307,
-	0xBF1A, 0x0400,
-	0xBF1C, 0x232E,
-	0xBF1E, 0x4401,
-	0xBF20, 0x1733,
-	0xBF22, 0x02FC,
-	0xBF24, 0x6700,
-	0xBF26, 0xA35B,
-	0xBF28, 0x8347,
-	0xBF2A, 0xB400,
-	0xBF2C, 0xA5D7,
-	0xBF2E, 0x83C7,
-	0xBF30, 0x24B7,
-	0xBF32, 0xADF3,
-	0xBF34, 0x39A0,
-	0xBF36, 0x0148,
-	0xBF38, 0x45F1,
-	0xBF3A, 0x231C,
-	0xBF3C, 0x3401,
-	0xBF3E, 0x4E88,
-	0xBF40, 0x61BF,
-	0xBF42, 0xB76A,
-	0xBF44, 0x0124,
-	0xBF46, 0x83A5,
-	0xBF48, 0x0A4B,
-	0xBF4A, 0x8567,
-	0xBF4C, 0x130A,
-	0xBF4E, 0x0403,
-	0xBF50, 0x9387,
-	0xBF52, 0x07E1,
-	0xBF54, 0x1306,
-	0xBF56, 0x8007,
-	0xBF58, 0xBE95,
-	0xBF5A, 0x5285,
-	0xBF5C, 0x9760,
-	0xBF5E, 0x00FC,
-	0xBF60, 0xE780,
-	0xBF62, 0x400A,
-	0xBF64, 0x21C9,
-	0xBF66, 0x2305,
-	0xBF68, 0x0400,
-	0xBF6A, 0x0347,
-	0xBF6C, 0x2401,
-	0xBF6E, 0x8347,
-	0xBF70, 0x6400,
-	0xBF72, 0x8356,
-	0xBF74, 0x4401,
-	0xBF76, 0xA308,
-	0xBF78, 0xE400,
-	0xBF7A, 0x0547,
-	0xBF7C, 0x231C,
-	0xBF7E, 0xD400,
-	0xBF80, 0x2307,
-	0xBF82, 0xE400,
-	0xBF84, 0xA301,
-	0xBF86, 0xF400,
-	0xBF88, 0x2303,
-	0xBF8A, 0x0400,
-	0xBF8C, 0x232E,
-	0xBF8E, 0x4401,
-	0xBF90, 0x1733,
-	0xBF92, 0x02FC,
-	0xBF94, 0x6700,
-	0xBF96, 0xA354,
-	0xBF98, 0x83A5,
-	0xBF9A, 0x0A4B,
-	0xBF9C, 0x8567,
-	0xBF9E, 0x9387,
-	0xBFA0, 0x07E1,
-	0xBFA2, 0x1306,
-	0xBFA4, 0x000F,
-	0xBFA6, 0xBE95,
-	0xBFA8, 0x5285,
-	0xBFAA, 0x9760,
-	0xBFAC, 0x00FC,
-	0xBFAE, 0xE780,
-	0xBFB0, 0x2005,
-	0xBFB2, 0x9DB7,
-	0xBFB4, 0x8347,
-	0xBFB6, 0xA400,
-	0xBFB8, 0xCDDB,
-	0xBFBA, 0xCDB5,
-	0xBFBC, 0x37A5,
-	0xBFBE, 0x0124,
-	0xBFC0, 0x1305,
-	0xBFC2, 0x050C,
-	0xBFC4, 0x9760,
-	0xBFC6, 0xFFFB,
-	0xBFC8, 0xE780,
-	0xBFCA, 0x8043,
-	0xBFCC, 0x45BD,
-	0xBFCE, 0x0100,
-	0xBFD0, 0x1733,
-	0xBFD2, 0x02FC,
-	0xBFD4, 0xE702,
-	0xBFD6, 0x034F,
-	0xBFD8, 0x8347,
-	0xBFDA, 0x1501,
-	0xBFDC, 0xA304,
-	0xBFDE, 0x0500,
-	0xBFE0, 0x2A84,
-	0xBFE2, 0x91EF,
-	0xBFE4, 0x8357,
-	0xBFE6, 0x8501,
-	0xBFE8, 0x99EB,
-	0xBFEA, 0x8347,
-	0xBFEC, 0xF500,
-	0xBFEE, 0xA307,
-	0xBFF0, 0x0500,
-	0xBFF2, 0xA304,
-	0xBFF4, 0xF500,
-	0xBFF6, 0x1733,
-	0xBFF8, 0x02FC,
-	0xBFFA, 0x6700,
-	0xBFFC, 0xE34E,
-	0xBFFE, 0x2285,
-	0xC000, 0x9790,
-	0xC002, 0xFFFB,
-	0xC004, 0xE780,
-	0xC006, 0xC0C4,
-	0xC008, 0x8347,
-	0xC00A, 0x3400,
-	0xC00C, 0x0347,
-	0xC00E, 0x6400,
-	0xC010, 0x8346,
-	0xC012, 0x7400,
-	0xC014, 0xFD17,
-	0xC016, 0x0507,
-	0xC018, 0x93F7,
-	0xC01A, 0xF70F,
-	0xC01C, 0x2303,
-	0xC01E, 0xE400,
-	0xC020, 0xA301,
-	0xC022, 0xF400,
-	0xC024, 0x99C2,
-	0xC026, 0xA303,
-	0xC028, 0x0400,
-	0xC02A, 0xB1EF,
-	0xC02C, 0x0347,
-	0xC02E, 0x1401,
-	0xC030, 0x8356,
-	0xC032, 0x8401,
-	0xC034, 0x8347,
-	0xC036, 0x5400,
-	0xC038, 0x2309,
-	0xC03A, 0xE400,
-	0xC03C, 0x0547,
-	0xC03E, 0x231A,
-	0xC040, 0xD400,
-	0xC042, 0x2304,
-	0xC044, 0xE400,
-	0xC046, 0x231C,
-	0xC048, 0x0400,
-	0xC04A, 0xA308,
-	0xC04C, 0x0400,
-	0xC04E, 0xC5E3,
-	0xC050, 0x8347,
-	0xC052, 0x1400,
-	0xC054, 0x13F7,
-	0xC056, 0x2700,
-	0xC058, 0x19C7,
-	0xC05A, 0x0347,
-	0xC05C, 0x0400,
-	0xC05E, 0x01C7,
-	0xC060, 0x0347,
-	0xC062, 0x2400,
-	0xC064, 0x4DC3,
-	0xC066, 0x858B,
-	0xC068, 0xA5CF,
-	0xC06A, 0xB727,
-	0xC06C, 0x0024,
-	0xC06E, 0x83C7,
-	0xC070, 0x274D,
-	0xC072, 0xD1D3,
-	0xC074, 0xB767,
-	0xC076, 0x0124,
-	0xC078, 0x83A7,
-	0xC07A, 0x074B,
-	0xC07C, 0x0567,
-	0xC07E, 0xBA97,
-	0xC080, 0x2380,
-	0xC082, 0x07E0,
-	0xC084, 0x8DBF,
-	0xC086, 0x0347,
-	0xC088, 0x0401,
-	0xC08A, 0x5C4C,
-	0xC08C, 0x9316,
-	0xC08E, 0x1700,
-	0xC090, 0xB697,
-	0xC092, 0x5CCC,
-	0xC094, 0xB727,
-	0xC096, 0x0024,
-	0xC098, 0x9387,
-	0xC09A, 0x0733,
-	0xC09C, 0x83C6,
-	0xC09E, 0x371A,
-	0xC0A0, 0x89EA,
-	0xC0A2, 0x8346,
-	0xC0A4, 0x6401,
-	0xC0A6, 0xA1DA,
-	0xC0A8, 0xB7A6,
-	0xC0AA, 0x0124,
-	0xC0AC, 0x83C6,
-	0xC0AE, 0x260A,
-	0xC0B0, 0xB9F2,
-	0xC0B2, 0x83C7,
-	0xC0B4, 0x471A,
-	0xC0B6, 0xA1F3,
-	0xC0B8, 0x0346,
-	0xC0BA, 0x0400,
-	0xC0BC, 0xB767,
-	0xC0BE, 0x0124,
-	0xC0C0, 0x83A5,
-	0xC0C2, 0x074B,
-	0xC0C4, 0x3306,
-	0xC0C6, 0xE602,
-	0xC0C8, 0x8567,
-	0xC0CA, 0x9387,
-	0xC0CC, 0x07E1,
-	0xC0CE, 0xBE95,
-	0xC0D0, 0x1305,
-	0xC0D2, 0x0403,
-	0xC0D4, 0x0606,
-	0xC0D6, 0x9760,
-	0xC0D8, 0x00FC,
-	0xC0DA, 0xE780,
-	0xC0DC, 0x60F2,
-	0xC0DE, 0x21BF,
-	0xC0E0, 0x8547,
-	0xC0E2, 0xA304,
-	0xC0E4, 0xF400,
-	0xC0E6, 0x1733,
-	0xC0E8, 0x02FC,
-	0xC0EA, 0x6700,
-	0xC0EC, 0xE33F,
-	0xC0EE, 0xFD17,
-	0xC0F0, 0xA302,
-	0xC0F2, 0xF400,
-	0xC0F4, 0x2285,
-	0xC0F6, 0x9760,
-	0xC0F8, 0xFFFB,
-	0xC0FA, 0xE780,
-	0xC0FC, 0x6011,
-	0xC0FE, 0x1733,
-	0xC100, 0x02FC,
-	0xC102, 0x6700,
-	0xC104, 0x633E,
-	0xC106, 0x2285,
-	0xC108, 0x9760,
-	0xC10A, 0xFFFB,
-	0xC10C, 0xE780,
-	0xC10E, 0x4010,
-	0xC110, 0xDDB5,
-	0xC112, 0x0100,
-	0xC114, 0x8947,
-	0xC116, 0x6303,
-	0xC118, 0xF500,
-	0xC11A, 0x8280,
-	0xC11C, 0x1733,
-	0xC11E, 0x02FC,
-	0xC120, 0xE702,
-	0xC122, 0xA338,
-	0xC124, 0xB784,
-	0xC126, 0x0124,
-	0xC128, 0x9384,
-	0xC12A, 0x04AA,
-	0xC12C, 0x87A7,
-	0xC12E, 0x040A,
-	0xC130, 0x4111,
-	0xC132, 0x37C5,
-	0xC134, 0x0224,
-	0xC136, 0x5396,
-	0xC138, 0x17C0,
-	0xC13A, 0x7400,
-	0xC13C, 0x9145,
-	0xC13E, 0x1305,
-	0xC140, 0xA5B8,
-	0xC142, 0x9750,
-	0xC144, 0xFFFB,
-	0xC146, 0xE780,
-	0xC148, 0x60C3,
-	0xC14A, 0x3719,
-	0xC14C, 0x0140,
-	0xC14E, 0x4205,
-	0xC150, 0x4181,
-	0xC152, 0x130A,
-	0xC154, 0x4924,
-	0xC156, 0xB789,
-	0xC158, 0x0124,
-	0xC15A, 0x37C4,
-	0xC15C, 0x0224,
-	0xC15E, 0xB7CA,
-	0xC160, 0x0224,
-	0xC162, 0x2317,
-	0xC164, 0xA100,
-	0xC166, 0x9389,
-	0xC168, 0x89B1,
-	0xC16A, 0x1304,
-	0xC16C, 0x24B9,
-	0xC16E, 0x938A,
-	0xC170, 0xAABB,
-	0xC172, 0x330A,
-	0xC174, 0x9A40,
-	0xC176, 0x0605,
-	0xC178, 0x2295,
-	0xC17A, 0x8355,
-	0xC17C, 0x2500,
-	0xC17E, 0x0356,
-	0xC180, 0xC100,
-	0xC182, 0x0355,
-	0xC184, 0x0500,
-	0xC186, 0x2104,
-	0xC188, 0x9760,
-	0xC18A, 0x00FC,
-	0xC18C, 0xE780,
-	0xC18E, 0x8082,
-	0xC190, 0x4205,
-	0xC192, 0x4181,
-	0xC194, 0x2390,
-	0xC196, 0xA900,
-	0xC198, 0xB387,
-	0xC19A, 0x4901,
-	0xC19C, 0x2390,
-	0xC19E, 0xA700,
-	0xC1A0, 0x8909,
-	0xC1A2, 0x6305,
-	0xC1A4, 0x5401,
-	0xC1A6, 0x0355,
-	0xC1A8, 0xE100,
-	0xC1AA, 0xF1B7,
-	0xC1AC, 0xB789,
-	0xC1AE, 0x0124,
-	0xC1B0, 0x37CA,
-	0xC1B2, 0x0224,
-	0xC1B4, 0x1309,
-	0xC1B6, 0x0926,
-	0xC1B8, 0x9389,
-	0xC1BA, 0xA9AF,
-	0xC1BC, 0x130A,
-	0xC1BE, 0x2AC3,
-	0xC1C0, 0x8357,
-	0xC1C2, 0xE100,
-	0xC1C4, 0x0356,
-	0xC1C6, 0xC100,
-	0xC1C8, 0x8509,
-	0xC1CA, 0x8607,
-	0xC1CC, 0xA297,
-	0xC1CE, 0x83D5,
-	0xC1D0, 0x2700,
-	0xC1D2, 0x03D5,
-	0xC1D4, 0x0700,
-	0xC1D6, 0x0909,
-	0xC1D8, 0x2104,
-	0xC1DA, 0x9750,
-	0xC1DC, 0x00FC,
-	0xC1DE, 0xE780,
-	0xC1E0, 0x607D,
-	0xC1E2, 0x1375,
-	0xC1E4, 0xF50F,
-	0xC1E6, 0xA38F,
-	0xC1E8, 0xA9FE,
-	0xC1EA, 0x4205,
-	0xC1EC, 0x4181,
-	0xC1EE, 0x231F,
-	0xC1F0, 0xA9FE,
-	0xC1F2, 0xE317,
-	0xC1F4, 0x44FD,
-	0xC1F6, 0xB719,
-	0xC1F8, 0x0140,
-	0xC1FA, 0x3789,
-	0xC1FC, 0x0124,
-	0xC1FE, 0x37CA,
-	0xC200, 0x0224,
-	0xC202, 0x9389,
-	0xC204, 0x291F,
-	0xC206, 0x1309,
-	0xC208, 0xC9B2,
-	0xC20A, 0x130A,
-	0xC20C, 0x2AC6,
-	0xC20E, 0xB389,
-	0xC210, 0x9940,
-	0xC212, 0x8357,
-	0xC214, 0xE100,
-	0xC216, 0x0356,
-	0xC218, 0xC100,
-	0xC21A, 0x8607,
-	0xC21C, 0xA297,
-	0xC21E, 0x83D5,
-	0xC220, 0x2700,
-	0xC222, 0x03D5,
-	0xC224, 0x0700,
-	0xC226, 0x2104,
-	0xC228, 0x9750,
-	0xC22A, 0x00FC,
-	0xC22C, 0xE780,
-	0xC22E, 0x8078,
-	0xC230, 0x4205,
-	0xC232, 0x4181,
-	0xC234, 0x2310,
-	0xC236, 0xA900,
-	0xC238, 0xB307,
-	0xC23A, 0x3901,
-	0xC23C, 0x2390,
-	0xC23E, 0xA700,
-	0xC240, 0x0909,
-	0xC242, 0xE318,
-	0xC244, 0x44FD,
-	0xC246, 0xB717,
-	0xC248, 0x0140,
-	0xC24A, 0x3789,
-	0xC24C, 0x0124,
-	0xC24E, 0xB7C9,
-	0xC250, 0x0224,
-	0xC252, 0x9387,
-	0xC254, 0xA720,
-	0xC256, 0x1309,
-	0xC258, 0x69B4,
-	0xC25A, 0x9389,
-	0xC25C, 0x29C9,
-	0xC25E, 0xB384,
-	0xC260, 0x9740,
-	0xC262, 0x8357,
-	0xC264, 0xE100,
-	0xC266, 0x0356,
-	0xC268, 0xC100,
-	0xC26A, 0x8607,
-	0xC26C, 0xA297,
-	0xC26E, 0x83D5,
-	0xC270, 0x2700,
-	0xC272, 0x03D5,
-	0xC274, 0x0700,
-	0xC276, 0x2104,
-	0xC278, 0x9750,
-	0xC27A, 0x00FC,
-	0xC27C, 0xE780,
-	0xC27E, 0x8073,
-	0xC280, 0x4205,
-	0xC282, 0x4181,
-	0xC284, 0x2310,
-	0xC286, 0xA900,
-	0xC288, 0xB307,
-	0xC28A, 0x9900,
-	0xC28C, 0x2390,
-	0xC28E, 0xA700,
-	0xC290, 0x0909,
-	0xC292, 0xE318,
-	0xC294, 0x34FD,
-	0xC296, 0x4101,
-	0xC298, 0x1733,
-	0xC29A, 0x02FC,
-	0xC29C, 0x6700,
-	0xC29E, 0x2324,
-	0xC2A0, 0x1733,
-	0xC2A2, 0x02FC,
-	0xC2A4, 0xE702,
-	0xC2A6, 0x0322,
-	0xC2A8, 0x2A84,
-	0xC2AA, 0xEFE0,
-	0xC2AC, 0x3F98,
-	0xC2AE, 0x1DE0,
-	0xC2B0, 0xB797,
-	0xC2B2, 0x0124,
-	0xC2B4, 0x9387,
-	0xC2B6, 0x0753,
-	0xC2B8, 0x0D67,
-	0xC2BA, 0x3E97,
-	0xC2BC, 0x0327,
-	0xC2BE, 0x876E,
-	0xC2C0, 0x058B,
-	0xC2C2, 0x09CB,
-	0xC2C4, 0x3787,
-	0xC2C6, 0x0040,
-	0xC2C8, 0x0357,
-	0xC2CA, 0x87F4,
-	0xC2CC, 0xA146,
-	0xC2CE, 0x618B,
-	0xC2D0, 0x6306,
-	0xC2D2, 0xD700,
-	0xC2D4, 0x1733,
-	0xC2D6, 0x02FC,
-	0xC2D8, 0x6700,
-	0xC2DA, 0x0321,
-	0xC2DC, 0x0567,
-	0xC2DE, 0xBA97,
-	0xC2E0, 0x2389,
-	0xC2E2, 0x07B6,
-	0xC2E4, 0xC5BF,
-	0xC2E6, 0x0100,
-	0xC2E8, 0x9147,
-	0xC2EA, 0x6303,
-	0xC2EC, 0xF500,
-	0xC2EE, 0x8280,
-	0xC2F0, 0x1733,
-	0xC2F2, 0x02FC,
-	0xC2F4, 0xE702,
-	0xC2F6, 0x031D,
-	0xC2F8, 0x9750,
-	0xC2FA, 0xFFFB,
-	0xC2FC, 0xE780,
-	0xC2FE, 0xC063,
-	0xC300, 0x09C5,
-	0xC302, 0x1733,
-	0xC304, 0x02FC,
-	0xC306, 0x6700,
-	0xC308, 0x231E,
-	0xC30A, 0x9750,
-	0xC30C, 0xFFFB,
-	0xC30E, 0xE780,
-	0xC310, 0xE05D,
-	0xC312, 0x65F9,
-	0xC314, 0xB7C7,
-	0xC316, 0x0224,
-	0xC318, 0x03D7,
-	0xC31A, 0x67B8,
-	0xC31C, 0xB7F7,
-	0xC31E, 0x0040,
-	0xC320, 0x2390,
-	0xC322, 0xE73E,
-	0xC324, 0xF9BF,
-	0xC326, 0x0100,
-	0xC328, 0x37C7,
-	0xC32A, 0x0224,
-	0xC32C, 0x1307,
-	0xC32E, 0x47B8,
-	0xC330, 0x8345,
-	0xC332, 0x0700,
-	0xC334, 0xB7A7,
-	0xC336, 0x0224,
-	0xC338, 0xB7D6,
-	0xC33A, 0x0124,
-	0xC33C, 0x03D6,
-	0xC33E, 0x4760,
-	0xC340, 0x23A8,
-	0xC342, 0xB6DA,
-	0xC344, 0xB767,
-	0xC346, 0x0124,
-	0xC348, 0xB7C6,
-	0xC34A, 0x0224,
-	0xC34C, 0x9387,
-	0xC34E, 0x0740,
-	0xC350, 0x9386,
-	0xC352, 0x86C9,
-	0xC354, 0xD4C7,
-	0xC356, 0x09CA,
-	0xC358, 0xB7B6,
-	0xC35A, 0x0224,
-	0xC35C, 0x3726,
-	0xC35E, 0x0024,
-	0xC360, 0x9386,
-	0xC362, 0x8668,
-	0xC364, 0x2320,
-	0xC366, 0xD6CE,
-	0xC368, 0x2319,
-	0xC36A, 0x0710,
-	0xC36C, 0x37C7,
-	0xC36E, 0x0224,
-	0xC370, 0x1307,
-	0xC372, 0x072A,
-	0xC374, 0xB7C6,
-	0xC376, 0x0224,
-	0xC378, 0x98D7,
-	0xC37A, 0x37C7,
-	0xC37C, 0x0224,
-	0xC37E, 0x9386,
-	0xC380, 0x4611,
-	0xC382, 0x1307,
-	0xC384, 0x872E,
-	0xC386, 0x23A4,
-	0xC388, 0xD1A4,
-	0xC38A, 0xD8C3,
-	0xC38C, 0x8280,
-	0xC38E, 0x0100,
-	0xC390, 0x1733,
-	0xC392, 0x02FC,
-	0xC394, 0xE702,
-	0xC396, 0x0313,
-	0xC398, 0xB7C6,
-	0xC39A, 0x0224,
-	0xC39C, 0xB787,
-	0xC39E, 0x0324,
-	0xC3A0, 0x9386,
-	0xC3A2, 0x863E,
-	0xC3A4, 0x37A7,
-	0xC3A6, 0x0124,
-	0xC3A8, 0x9387,
-	0xC3AA, 0x07FF,
-	0xC3AC, 0x1307,
-	0xC3AE, 0x0753,
-	0xC3B0, 0x958F,
-	0xC3B2, 0x232C,
-	0xC3B4, 0xD7B4,
-	0xC3B6, 0x232E,
-	0xC3B8, 0xF7B4,
-	0xC3BA, 0x9720,
-	0xC3BC, 0x01FC,
-	0xC3BE, 0xE780,
-	0xC3C0, 0x600C,
-	0xC3C2, 0x11C5,
-	0xC3C4, 0xEFE0,
-	0xC3C6, 0x0F80,
-	0xC3C8, 0xEFF0,
-	0xC3CA, 0x4FF0,
-	0xC3CC, 0xB13F,
-	0xC3CE, 0x1733,
-	0xC3D0, 0x02FC,
-	0xC3D2, 0x6700,
-	0xC3D4, 0x6311,
-	0xC3D6, 0x0000,
-	0xC3D8, 0xA310,
-	0xC3DA, 0xE538,
-	0xC3DC, 0x0000,
-	0xC3DE, 0x0000,
-	0xC3E0, 0xBEFF,
-	0xC3E2, 0x0F00,
-	0xC3E4, 0x0000,
-	0xC3E6, 0x0000,
-	0xFCFC, 0x2000,
-	0x2366, 0x001C,
-	0x2368, 0x001C,
-	0x238E, 0x3F28,
-	0x2398, 0x5037,
-	0x24B8, 0x0101,
-	0x66E4, 0x1E8D,
-	0x66E6, 0x0000,
-	0x6874, 0x0000,
-	0x6876, 0x0000,
-	0x6878, 0x0000,
-	0x687A, 0x0000,
-	0x6884, 0x0100,
-	0x6886, 0x0100,
-	0x6888, 0x0100,
-	0x688A, 0x0100,
-	0x793E, 0x0100,
-	0x7940, 0x7017,
-	0x795C, 0x0400,
-	0x795E, 0x0400,
-	0x7960, 0x0800,
-	0x7962, 0x1000,
-	0x7964, 0x0800,
-	0x7966, 0x1000,
-	0x7968, 0x0800,
-	0x796A, 0x0800,
-	0x796C, 0x0800,
-	0x796E, 0x0800,
-	0x7972, 0x0400,
-	0x7974, 0x0400,
-	0x7976, 0x0800,
-	0x7978, 0x1000,
-	0x797A, 0x0800,
-	0x797C, 0x1000,
-	0x797E, 0x0800,
-	0x7980, 0x0800,
-	0x7982, 0x0800,
-	0x7984, 0x0800,
-	0xB3AC, 0x4000,
-	0xB3B4, 0x2000,
-	0xB3B8, 0x1000,
-	0xB3F8, 0x8000,
-	0xB400, 0x4000,
-	0xB404, 0x2000,
-	0xBF70, 0x3A46,
-	0xBF7C, 0x0800,
-	0xC4A8, 0x0000,
-	0xC4F8, 0x00A8,
-	0xC4FA, 0x0000,
-	0xD3DA, 0x0D00,
-	0xD3E0, 0x0D00,
-	0xD3E2, 0x0D00,
-	0xD3E4, 0x0D00,
-	0xD3E6, 0x0D00,
-	0xD3EA, 0x0D00,
-	0xD3F4, 0x301C,
-	0xD3F8, 0x301C,
-	0xDD6C, 0xB47E,
-	0xDD6E, 0xB67E,
-	0xDE34, 0x0000,
-	0xDE36, 0x9231,
-	0xEC42, 0x0100,
-	0xEC44, 0x0100,
-	0xFCFC, 0x2001,
-	0x2542, 0x2020,
-	0x2544, 0x2018,
-	0x2554, 0x0000,
-	0x2556, 0x0000,
-	0x256E, 0x0000,
-	0x25D2, 0x0102,
-	0x2936, 0x4400,
-	0x2A14, 0x0002,
-	0x2A16, 0xDF03,
-	0x2A18, 0x0002,
-	0x2A1A, 0x0002,
-	0x3252, 0x8C00,
-	0x3254, 0x8C00,
-	0x3256, 0x8C00,
-	0x3258, 0x8700,
-	0x325A, 0x8200,
-	0x3E1C, 0x0200,
-	0x3E1E, 0x2000,
-	0x5ACC, 0x6505,
-	0xFCFC, 0x4000,
-	0x1858, 0x123F,
-	0xFCFC, 0x2001,
-	0x3EB8, 0x00FF,
-	0x3ECC, 0xFE03,
-	0x3F12, 0x9001,
-	0x33E0, 0x1E00,
-	0x33E2, 0x1E00,
-	0x33E4, 0x1E00,
-	0x33E6, 0x1E00,
-	0x33E8, 0x1E00,
-	0x33EA, 0x1E00,
-	0x3440, 0x0500,
-	0x3442, 0x0500,
-	0x3444, 0x0500,
-	0x3446, 0x0500,
-	0x3448, 0x0500,
-	0x344A, 0x0500,
-	0x3450, 0x0A00,
-	0x3452, 0x0A00,
-	0x3454, 0x0A00,
-	0x3456, 0x0A00,
-	0x3458, 0x0A00,
-	0x345A, 0x0A00,
-	0x34E0, 0x1400,
-	0x34E2, 0x1400,
-	0x34E4, 0x1400,
-	0x34E6, 0x1400,
-	0x34E8, 0x1400,
-	0x34EA, 0x1400,
-	0x3500, 0x1400,
-	0x3502, 0x1400,
-	0x3504, 0x1400,
-	0x3506, 0x1400,
-	0x3508, 0x1400,
-	0x350A, 0x1400,
-	0x3520, 0x1400,
-	0x3522, 0x1400,
-	0x3524, 0x1400,
-	0x3526, 0x1400,
-	0x3528, 0x1400,
-	0x352A, 0x1400,
-	0x3580, 0x2300,
-	0x3582, 0x2300,
-	0x3584, 0x2300,
-	0x3586, 0x2300,
-	0x3588, 0x2300,
-	0x358A, 0x2300,
-	0x35A0, 0x1900,
-	0x35A2, 0x1900,
-	0x35A4, 0x1900,
-	0x35A6, 0x1900,
-	0x35A8, 0x1900,
-	0x35AA, 0x1900,
-	0x35D0, 0x1E00,
-	0x35D2, 0x1E00,
-	0x35D4, 0x1E00,
-	0x35D6, 0x1E00,
-	0x35D8, 0x1E00,
-	0x35DA, 0x1E00,
-	0x35E0, 0x1E00,
-	0x35E2, 0x1E00,
-	0x35E4, 0x1E00,
-	0x35E6, 0x1E00,
-	0x35E8, 0x1E00,
-	0x35EA, 0x1E00,
-	0x35F0, 0x1E00,
-	0x35F2, 0x1E00,
-	0x35F4, 0x1E00,
-	0x35F6, 0x1E00,
-	0x35F8, 0x1E00,
-	0x35FA, 0x1E00,
-	0x3600, 0x1E00,
-	0x3602, 0x1E00,
-	0x3604, 0x1E00,
-	0x3606, 0x1E00,
-	0x3608, 0x1E00,
-	0x360A, 0x1E00,
-	0x3610, 0x1E00,
-	0x3612, 0x1E00,
-	0x3614, 0x1E00,
-	0x3616, 0x1E00,
-	0x3618, 0x1E00,
-	0x361A, 0x1E00,
-	0x3620, 0x0000,
-	0x3622, 0x0000,
-	0x3624, 0x0000,
-	0x3626, 0x0000,
-	0x3628, 0x0000,
-	0x362A, 0x0000,
-	0x3630, 0x0A00,
-	0x3632, 0x0A00,
-	0x3634, 0x0A00,
-	0x3636, 0x0A00,
-	0x3638, 0x0A00,
-	0x363A, 0x0A00,
-	0x3650, 0x1E00,
-	0x3652, 0x1E00,
-	0x3654, 0x1E00,
-	0x3656, 0x1E00,
-	0x3658, 0x1E00,
-	0x365A, 0x1E00,
-	0x3660, 0x1E00,
-	0x3662, 0x1E00,
-	0x3664, 0x1E00,
-	0x3666, 0x1E00,
-	0x3668, 0x1E00,
-	0x366A, 0x1E00,
-	0x36A0, 0x6400,
-	0x36A2, 0x6400,
-	0x36A4, 0x6400,
-	0x36A6, 0x6400,
-	0x36A8, 0x6400,
-	0x36AA, 0x6400,
-	0x36C0, 0x8C00,
-	0x36C2, 0x8C00,
-	0x36C4, 0x8C00,
-	0x36C6, 0x8C00,
-	0x36C8, 0x8C00,
-	0x36CA, 0x8C00,
-	0x36E0, 0x6400,
-	0x36E2, 0x6400,
-	0x36E4, 0x6400,
-	0x36E6, 0x6400,
-	0x36E8, 0x6400,
-	0x36EA, 0x6400,
-	0x36F0, 0x3200,
-	0x36F2, 0x3200,
-	0x36F4, 0x3200,
-	0x36F6, 0x3200,
-	0x36F8, 0x3200,
-	0x36FA, 0x3200,
-	0x3700, 0x3200,
-	0x3702, 0x3200,
-	0x3704, 0x3200,
-	0x3706, 0x3200,
-	0x3708, 0x3200,
-	0x370A, 0x3200,
-	0x3720, 0x3200,
-	0x3722, 0x3200,
-	0x3724, 0x3200,
-	0x3726, 0x3200,
-	0x3728, 0x3200,
-	0x372A, 0x3200,
-	0x3730, 0x3200,
-	0x3732, 0x3200,
-	0x3734, 0x3200,
-	0x3736, 0x3200,
-	0x3738, 0x3200,
-	0x373A, 0x3200,
-	0x3790, 0x3200,
-	0x3792, 0x3200,
-	0x3794, 0x3200,
-	0x3796, 0x3200,
-	0x3798, 0x3200,
-	0x379A, 0x3200,
-	0x37A0, 0x5000,
-	0x37A2, 0x5000,
-	0x37A4, 0x5000,
-	0x37A6, 0x5000,
-	0x37A8, 0x5000,
-	0x37AA, 0x5000,
-	0x37B0, 0x6400,
-	0x37B2, 0x6400,
-	0x37B4, 0x6400,
-	0x37B6, 0x6400,
-	0x37B8, 0x6400,
-	0x37BA, 0x6400,
-	0x37C0, 0x5000,
-	0x37C2, 0x5000,
-	0x37C4, 0x5000,
-	0x37C6, 0x5000,
-	0x37C8, 0x5000,
-	0x37CA, 0x5000,
-	0x37D0, 0x3200,
-	0x37D2, 0x3200,
-	0x37D4, 0x3200,
-	0x37D6, 0x3200,
-	0x37D8, 0x3200,
-	0x37DA, 0x3200,
-	0x37E0, 0x1E00,
-	0x37E2, 0x1E00,
-	0x37E4, 0x1E00,
-	0x37E6, 0x1E00,
-	0x37E8, 0x1E00,
-	0x37EA, 0x1E00,
-	0x37F0, 0x1E00,
-	0x37F2, 0x1E00,
-	0x37F4, 0x1E00,
-	0x37F6, 0x1E00,
-	0x37F8, 0x1E00,
-	0x37FA, 0x1E00,
-	0x3800, 0x1E00,
-	0x3802, 0x1E00,
-	0x3804, 0x1E00,
-	0x3806, 0x1E00,
-	0x3808, 0x1E00,
-	0x380A, 0x1E00,
-	0x3810, 0x1E00,
-	0x3812, 0x1E00,
-	0x3814, 0x1E00,
-	0x3816, 0x1E00,
-	0x3818, 0x1E00,
-	0x381A, 0x1E00,
-	0x3820, 0x1E00,
-	0x3822, 0x1E00,
-	0x3824, 0x1E00,
-	0x3826, 0x1E00,
-	0x3828, 0x1E00,
-	0x382A, 0x1E00,
-	0x3870, 0x3200,
-	0x3872, 0x3200,
-	0x3874, 0x3200,
-	0x3876, 0x3200,
-	0x3878, 0x3200,
-	0x387A, 0x3200,
-	0x3880, 0x3200,
-	0x3882, 0x3200,
-	0x3884, 0x3200,
-	0x3886, 0x3200,
-	0x3888, 0x3200,
-	0x388A, 0x3200,
-	0x3890, 0x3200,
-	0x3892, 0x3200,
-	0x3894, 0x3200,
-	0x3896, 0x3200,
-	0x3898, 0x3200,
-	0x389A, 0x3200,
-	0x38A0, 0x3200,
-	0x38A2, 0x3200,
-	0x38A4, 0x3200,
-	0x38A6, 0x3200,
-	0x38A8, 0x3200,
-	0x38AA, 0x3200,
-	0x38B0, 0x3200,
-	0x38B2, 0x3200,
-	0x38B4, 0x3200,
-	0x38B6, 0x3200,
-	0x38B8, 0x3200,
-	0x38BA, 0x3200,
-	0x320A, 0xFF03,
-	0x320C, 0x0700,
-	0x320E, 0xFF03,
-	0x3210, 0x0700,
-	0x321E, 0x0000,
-	0x31D4, 0x00FF,
-	0x321A, 0x0406,
-	0x3244, 0x0101,
-	0x3246, 0x0101,
-	0x3248, 0x0010,
-	0x3266, 0x0100,
-	0x3330, 0x0108,
-	0x3334, 0x0100,
-	0x3336, 0x0000,
-	0xFCFC, 0x2002,
-	0xBB8A, 0x0100,
-	0xBB8C, 0x0800,
-	0xBB8E, 0x1000,
-	0xBB90, 0x2000,
-	0xBB92, 0xC800,
-	0xBB94, 0xC800,
-	0xBB96, 0xC800,
-	0xBB98, 0xC800,
-	0xBB9A, 0xC400,
-	0xBB9C, 0xC400,
-	0xBB9E, 0xC400,
-	0xBBA0, 0xC400,
-	0xBBA2, 0xC200,
-	0xBBA4, 0xC200,
-	0xBBA6, 0xC200,
-	0xBBA8, 0xC200,
-	0xBBAA, 0xBE00,
-	0xBBAC, 0xBE00,
-	0xBBAE, 0xBE00,
-	0xBBB0, 0xBE00,
-	0xBBB2, 0xBC00,
-	0xBBB4, 0xBC00,
-	0xBBB6, 0xBC00,
-	0xBBB8, 0xBC00,
-	0xBBBA, 0x2000,
-	0xBBBC, 0x2000,
-	0xBBBE, 0x2000,
-	0xBBC0, 0x2000,
-	0xBBC2, 0x1600,
-	0xBBC4, 0x1600,
-	0xBBC6, 0x1600,
-	0xBBC8, 0x1600,
-	0xBBCA, 0x0000,
-	0xBBCC, 0x0000,
-	0xBBCE, 0x0000,
-	0xBBD0, 0x0000,
-	0xBBD2, 0x0A00,
-	0xBBD4, 0x0A00,
-	0xBBD6, 0x0A00,
-	0xBBD8, 0x0A00,
-	0xBBDA, 0x1400,
-	0xBBDC, 0x1400,
-	0xBBDE, 0x1400,
-	0xBBE0, 0x1400,
-	0xBBE2, 0x2A00,
-	0xBBE4, 0x2A00,
-	0xBBE6, 0x2A00,
-	0xBBE8, 0x2A00,
-	0xBBEA, 0x2A00,
-	0xBBEC, 0x2A00,
-	0xBBEE, 0x2A00,
-	0xBBF0, 0x2A00,
-	0xBBF2, 0x0100,
-	0xBBF4, 0x0100,
-	0xBBF6, 0x0100,
-	0xBBF8, 0x0100,
-	0xBBFA, 0x0F00,
-	0xBBFC, 0x0F00,
-	0xBBFE, 0x0F00,
-	0xBC00, 0x0F00,
-	0xBC02, 0x0400,
-	0xBC04, 0x0400,
-	0xBC06, 0x0400,
-	0xBC08, 0x0400,
-	0xBC0A, 0x1900,
-	0xBC0C, 0x1900,
-	0xBC0E, 0x1900,
-	0xBC10, 0x1900,
-	0xBC12, 0x1400,
-	0xBC14, 0x1400,
-	0xBC16, 0x1400,
-	0xBC18, 0x1400,
-	0xBC1A, 0x3A00,
-	0xBC1C, 0x3A00,
-	0xBC1E, 0x3A00,
-	0xBC20, 0x3A00,
-	0xBC22, 0x0A00,
-	0xBC24, 0x0A00,
-	0xBC26, 0x0A00,
-	0xBC28, 0x0A00,
-	0xBC2A, 0x4B00,
-	0xBC2C, 0x4B00,
-	0xBC2E, 0x4B00,
-	0xBC30, 0x4B00,
-	0xBC32, 0x0200,
-	0xBC34, 0x0600,
-	0xBC36, 0x0C00,
-	0xBC38, 0x0C00,
-	0xBC3A, 0x2A00,
-	0xBC3C, 0x2500,
-	0xBC3E, 0x2000,
-	0xBC40, 0x2000,
-	0xBC42, 0x0000,
-	0xBC44, 0x1000,
-	0xBC46, 0x2300,
-	0xBC48, 0x2300,
-	0xBC4A, 0x3F00,
-	0xBC4C, 0x3100,
-	0xBC4E, 0x2100,
-	0xBC50, 0x2100,
-	0xBC52, 0x0A00,
-	0xBC54, 0x1B00,
-	0xBC56, 0x3000,
-	0xBC58, 0x3000,
-	0xBC5A, 0x1900,
-	0xBC5C, 0x1500,
-	0xBC5E, 0x1100,
-	0xBC60, 0x1100,
-	0xBC62, 0x0F00,
-	0xBC64, 0x0F00,
-	0xBC66, 0x0F00,
-	0xBC68, 0x0F00,
-	0xBC6A, 0x1900,
-	0xBC6C, 0x1900,
-	0xBC6E, 0x1900,
-	0xBC70, 0x1900,
-	0xBC72, 0x0A00,
-	0xBC74, 0x0A00,
-	0xBC76, 0x0A00,
-	0xBC78, 0x0A00,
-	0xBC7A, 0x0B00,
-	0xBC7C, 0x0B00,
-	0xBC7E, 0x0B00,
-	0xBC80, 0x0B00,
-	0xBC82, 0x0000,
-	0xBC84, 0x0000,
-	0xBC86, 0x0000,
-	0xBC88, 0x0000,
-	0xBC8A, 0x0800,
-	0xBC8C, 0x0800,
-	0xBC8E, 0x0800,
-	0xBC90, 0x0800,
-	0xFCFC, 0x4000,
-	0xFCFC, 0x2000,
-	0x68D8, 0x0100,
-	0xFCFC, 0x2002,
-	0xBC92, 0x0100,
-	0xFCFC, 0x4000,
-	0x0E04, 0x1C03,
-	0x0E10, 0x0100,
-	0x0E12, 0x00A0,
-	0x0E14, 0x0C84,
-	0x0E16, 0x002B,
-	0x0E18, 0x0000,
-	0x0E1A, 0x3000,
-	0x0E1C, 0x0100,
-	0x0E1E, 0x00A0,
-	0x0E20, 0x0C84,
-	0x0E22, 0x012B,
-	0x0E24, 0x0100,
-	0x0E26, 0x3000,
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0xFCFC, 0x2000,
-	0x3D44, 0x0000,
-	0x3D88, 0xFCFC,
-	0x3D8A, 0xFEFF,
-	0x3D8C, 0xFCFC,
-	0x3D8E, 0xFEFF,
-	0x3D90, 0xFCFC,
-	0x3D92, 0xFEFF,
-	0x3D94, 0xFCFC,
-	0x3D96, 0xFEFF,
-	0x3FE0, 0x0324,
-	0x3FE2, 0x0080,
-	0x3FE4, 0x0000,
-	0x3FE6, 0x0000,
-	0x4238, 0x0324,
-	0x423A, 0x0080,
-	0x423C, 0x0324,
-	0x423E, 0xF886,
-	0x4490, 0x0324,
-	0x4492, 0x0080,
-	0x4494, 0x0324,
-	0x4496, 0x2887,
-	0x46E8, 0x0324,
-	0x46EA, 0x0080,
-	0x46EC, 0x0324,
-	0x46EE, 0x2887,
-	0x46F0, 0x0324,
-	0x46F2, 0xCE89,
-	0x4940, 0x0324,
-	0x4942, 0x0080,
-	0x4944, 0x0324,
-	0x4946, 0xEE89,
-	0x4B98, 0x0324,
-	0x4B9A, 0x0080,
-	0x4B9C, 0x0324,
-	0x4B9E, 0x708C,
-	0x4DF0, 0x0324,
-	0x4DF2, 0x0080,
-	0x4DF4, 0x0324,
-	0x4DF6, 0x888C,
-	0x5048, 0x0324,
-	0x504A, 0x0080,
-	0x504C, 0x0324,
-	0x504E, 0x2887,
-	0x5050, 0x0324,
-	0x5052, 0xBA8C,
-	0xFCFC, 0x2003,
-	0x8000, 0xFFFE,
-	0x8002, 0x2400,
-	0x8004, 0xFFFD,
-	0x8006, 0x22C2,
-	0x8008, 0x0006,
-	0x800A, 0x22C4,
-	0x800C, 0x1FFF,
-	0x800E, 0x22EC,
-	0x8010, 0x001F,
-	0x8012, 0x2306,
-	0x8014, 0x3FFF,
-	0x8016, 0x2314,
-	0x8018, 0x00FF,
-	0x801A, 0x2354,
-	0x801C, 0x0003,
-	0x801E, 0x23F0,
-	0x8020, 0x0100,
-	0x8022, 0x68DE,
-	0x8024, 0x0000,
-	0x8026, 0x703C,
-	0x8028, 0x0100,
-	0x802A, 0x703E,
-	0x802C, 0x0000,
-	0x802E, 0x7046,
-	0x8030, 0x027F,
-	0x8032, 0x7048,
-	0x8034, 0x002F,
-	0x8036, 0x704A,
-	0x8038, 0x0400,
-	0x803A, 0x7058,
-	0x803C, 0x0280,
-	0x803E, 0x705A,
-	0x8040, 0x0030,
-	0x8042, 0x705C,
-	0x8044, 0x0400,
-	0x8046, 0x7806,
-	0x8048, 0x0100,
-	0x804A, 0x7808,
-	0x804C, 0x0824,
-	0x804E, 0x78C0,
-	0x8050, 0x0101,
-	0x8052, 0x795A,
-	0x8054, 0x0010,
-	0x8056, 0x7970,
-	0x8058, 0x0010,
-	0x805A, 0x7994,
-	0x805C, 0x2020,
-	0x805E, 0x7996,
-	0x8060, 0x0001,
-	0x8062, 0x799A,
-	0x8064, 0x0000,
-	0x8066, 0x7BDA,
-	0x8068, 0x003C,
-	0x806A, 0x7EE6,
-	0x806C, 0x002C,
-	0x806E, 0x7EF2,
-	0x8070, 0x002C,
-	0x8072, 0x7EFE,
-	0x8074, 0x0064,
-	0x8076, 0x7F0A,
-	0x8078, 0x0058,
-	0x807A, 0x7F0E,
-	0x807C, 0x0058,
-	0x807E, 0x82A2,
-	0x8080, 0x0012,
-	0x8082, 0x82BA,
-	0x8084, 0x0036,
-	0x8086, 0x8CCE,
-	0x8088, 0x012C,
-	0x808A, 0x8CD0,
-	0x808C, 0x0096,
-	0x808E, 0x8CD2,
-	0x8090, 0x0096,
-	0x8092, 0x8CD6,
-	0x8094, 0x0096,
-	0x8096, 0x8D0E,
-	0x8098, 0x0000,
-	0x809A, 0x9032,
-	0x809C, 0x0000,
-	0x809E, 0x903E,
-	0x80A0, 0x0000,
-	0x80A2, 0xB176,
-	0x80A4, 0x0006,
-	0x80A6, 0xB178,
-	0x80A8, 0x0000,
-	0x80AA, 0xB20C,
-	0x80AC, 0x002E,
-	0x80AE, 0xB21A,
-	0x80B0, 0x0204,
-	0x80B2, 0xB23C,
-	0x80B4, 0x6060,
-	0x80B6, 0xB242,
-	0x80B8, 0x6060,
-	0x80BA, 0xB266,
-	0x80BC, 0x04C0,
-	0x80BE, 0xB268,
-	0x80C0, 0x0440,
-	0x80C2, 0xB270,
-	0x80C4, 0x0887,
-	0x80C6, 0xB322,
-	0x80C8, 0x0101,
-	0x80CA, 0xB324,
-	0x80CC, 0x0001,
-	0x80CE, 0xB330,
-	0x80D0, 0x2828,
-	0x80D2, 0xB34A,
-	0x80D4, 0x2828,
-	0x80D6, 0xB360,
-	0x80D8, 0x2828,
-	0x80DA, 0xB378,
-	0x80DC, 0x0001,
-	0x80DE, 0xBF16,
-	0x80E0, 0xAA0B,
-	0x80E2, 0xBF30,
-	0x80E4, 0x0000,
-	0x80E6, 0xBF78,
-	0x80E8, 0x3353,
-	0x80EA, 0xC4D8,
-	0x80EC, 0x0020,
-	0x80EE, 0xC4E0,
-	0x80F0, 0x0001,
-	0x80F2, 0xC4E2,
-	0x80F4, 0x0002,
-	0x80F6, 0xC4F6,
-	0x80F8, 0x0000,
-	0x80FA, 0xC53C,
-	0x80FC, 0x0001,
-	0x80FE, 0xC53E,
-	0x8100, 0x0000,
-	0x8102, 0xC544,
-	0x8104, 0x0500,
-	0x8106, 0xC554,
-	0x8108, 0x0D53,
-	0x810A, 0xC556,
-	0x810C, 0x0000,
-	0x810E, 0xD1F6,
-	0x8110, 0x003A,
-	0x8112, 0xD20C,
-	0x8114, 0x0809,
-	0x8116, 0xD27A,
-	0x8118, 0x0005,
-	0x811A, 0xD314,
-	0x811C, 0x0220,
-	0x811E, 0xD326,
-	0x8120, 0x2001,
-	0x8122, 0xD3EC,
-	0x8124, 0x1CB1,
-	0x8126, 0xD3F0,
-	0x8128, 0x1CB0,
-	0x812A, 0xD410,
-	0x812C, 0x0248,
-	0x812E, 0xD412,
-	0x8130, 0x04D2,
-	0x8132, 0xD426,
-	0x8134, 0x04D2,
-	0x8136, 0xD428,
-	0x8138, 0x0AEA,
-	0x813A, 0xD43C,
-	0x813C, 0x4001,
-	0x813E, 0xD43E,
-	0x8140, 0x4001,
-	0x8142, 0xD49C,
-	0x8144, 0x0021,
-	0x8146, 0xD4A8,
-	0x8148, 0x0003,
-	0x814A, 0xD4AC,
-	0x814C, 0x00E7,
-	0x814E, 0xD4B0,
-	0x8150, 0x0001,
-	0x8152, 0xD4B4,
-	0x8154, 0x0001,
-	0x8156, 0xD4B8,
-	0x8158, 0x0035,
-	0x815A, 0xD4BC,
-	0x815C, 0x0014,
-	0x815E, 0xD4C0,
-	0x8160, 0x0014,
-	0x8162, 0xD4C4,
-	0x8164, 0x0001,
-	0x8166, 0xD4C8,
-	0x8168, 0x0000,
-	0x816A, 0xD4CC,
-	0x816C, 0x0000,
-	0x816E, 0xD4D0,
-	0x8170, 0x0016,
-	0x8172, 0xD4D2,
-	0x8174, 0x0020,
-	0x8176, 0xD4D6,
-	0x8178, 0x0000,
-	0x817A, 0xD4DA,
-	0x817C, 0x0000,
-	0x817E, 0xD4DE,
-	0x8180, 0x0000,
-	0x8182, 0xD4E2,
-	0x8184, 0x0001,
-	0x8186, 0xD4E6,
-	0x8188, 0x0001,
-	0x818A, 0xD4EA,
-	0x818C, 0x0001,
-	0x818E, 0xD4EC,
-	0x8190, 0x00BE,
-	0x8192, 0xD4EE,
-	0x8194, 0x00BE,
-	0x8196, 0xD4F8,
-	0x8198, 0x01F0,
-	0x819A, 0xD4FA,
-	0x819C, 0x01F0,
-	0x819E, 0xD554,
-	0x81A0, 0x0000,
-	0x81A2, 0xD556,
-	0x81A4, 0x0000,
-	0x81A6, 0xD560,
-	0x81A8, 0x0000,
-	0x81AA, 0xD562,
-	0x81AC, 0x0000,
-	0x81AE, 0xD5BC,
-	0x81B0, 0x0000,
-	0x81B2, 0xD5BE,
-	0x81B4, 0x0000,
-	0x81B6, 0xD5C8,
-	0x81B8, 0x0000,
-	0x81BA, 0xD5CA,
-	0x81BC, 0x0000,
-	0x81BE, 0xD624,
-	0x81C0, 0x0000,
-	0x81C2, 0xD62E,
-	0x81C4, 0x0000,
-	0x81C6, 0xD638,
-	0x81C8, 0x0000,
-	0x81CA, 0xD682,
-	0x81CC, 0x04C0,
-	0x81CE, 0xD684,
-	0x81D0, 0x0440,
-	0x81D2, 0xD6D4,
-	0x81D4, 0x0000,
-	0x81D6, 0xD704,
-	0x81D8, 0x7802,
-	0x81DA, 0xD718,
-	0x81DC, 0x0200,
-	0x81DE, 0xD856,
-	0x81E0, 0x0705,
-	0x81E2, 0xD896,
-	0x81E4, 0x0000,
-	0x81E6, 0xD8A2,
-	0x81E8, 0x0001,
-	0x81EA, 0xDC8C,
-	0x81EC, 0x2B3F,
-	0x81EE, 0xDC94,
-	0x81F0, 0x0001,
-	0x81F2, 0xDD70,
-	0x81F4, 0x0000,
-	0x81F6, 0xDE38,
-	0x81F8, 0x0000,
-	0x81FA, 0xE980,
-	0x81FC, 0x0500,
-	0x81FE, 0xEF80,
-	0x8200, 0x0000,
-	0x8202, 0xF014,
-	0x8204, 0x0006,
-	0x8206, 0xF09A,
-	0x8208, 0xFF00,
-	0x820A, 0xF0AA,
-	0x820C, 0xFFFF,
-	0x820E, 0xF0AC,
-	0x8210, 0xFFFF,
-	0x8212, 0xF288,
-	0x8214, 0x0000,
-	0x8216, 0xF2E0,
-	0x8218, 0x0000,
-	0x821A, 0xF2EA,
-	0x821C, 0x0040,
-	0x821E, 0xF370,
-	0x8220, 0x0302,
-	0x8222, 0xF372,
-	0x8224, 0x0000,
-	0x8226, 0xF3E4,
-	0x8228, 0x0103,
-	0x822A, 0xF3F4,
-	0x822C, 0x08C8,
-	0x822E, 0xF3F6,
-	0x8230, 0x10D7,
-	0x8232, 0xFFFE,
-	0x8234, 0x2401,
-	0x8236, 0xFFFD,
-	0x8238, 0x195E,
-	0x823A, 0x0001,
-	0x823C, 0x1966,
-	0x823E, 0x0000,
-	0x8240, 0x2540,
-	0x8242, 0x0002,
-	0x8244, 0x25E0,
-	0x8246, 0x0000,
-	0x8248, 0x25E2,
-	0x824A, 0x0000,
-	0x824C, 0x2920,
-	0x824E, 0x0001,
-	0x8250, 0x29A8,
-	0x8252, 0x0002,
-	0x8254, 0x29BA,
-	0x8256, 0x00FF,
-	0x8258, 0x2A30,
-	0x825A, 0xFF01,
-	0x825C, 0x2A42,
-	0x825E, 0x0001,
-	0x8260, 0x2A44,
-	0x8262, 0x04B0,
-	0x8264, 0x2A46,
-	0x8266, 0x0000,
-	0x8268, 0x2A54,
-	0x826A, 0x0000,
-	0x826C, 0x2A56,
-	0x826E, 0x0008,
-	0x8270, 0x2BB2,
-	0x8272, 0x0010,
-	0x8274, 0x2D32,
-	0x8276, 0x1000,
-	0x8278, 0x3132,
-	0x827A, 0x0001,
-	0x827C, 0x31D0,
-	0x827E, 0x0002,
-	0x8280, 0x31F8,
-	0x8282, 0x0001,
-	0x8284, 0x31FA,
-	0x8286, 0x04CD,
-	0x8288, 0x3C42,
-	0x828A, 0x0000,
-	0x828C, 0x3C46,
-	0x828E, 0x05EB,
-	0x8290, 0x3C52,
-	0x8292, 0x0640,
-	0x8294, 0x4270,
-	0x8296, 0x0000,
-	0x8298, 0x427C,
-	0x829A, 0x0020,
-	0x829C, 0x4280,
-	0x829E, 0x0010,
-	0x82A0, 0x4290,
-	0x82A2, 0x0001,
-	0x82A4, 0x4292,
-	0x82A6, 0x0000,
-	0x82A8, 0x4362,
-	0x82AA, 0x0001,
-	0x82AC, 0x4364,
-	0x82AE, 0x0000,
-	0x82B0, 0x4366,
-	0x82B2, 0x0000,
-	0x82B4, 0x4370,
-	0x82B6, 0x0000,
-	0x82B8, 0x437E,
-	0x82BA, 0x00A4,
-	0x82BC, 0x4396,
-	0x82BE, 0x000C,
-	0x82C0, 0x4398,
-	0x82C2, 0x000E,
-	0x82C4, 0x43AA,
-	0x82C6, 0x0000,
-	0x82C8, 0x43AC,
-	0x82CA, 0x0000,
-	0x82CC, 0x43B4,
-	0x82CE, 0x0000,
-	0x82D0, 0x43B6,
-	0x82D2, 0x0000,
-	0x82D4, 0x43C6,
-	0x82D6, 0x0A01,
-	0x82D8, 0x44C6,
-	0x82DA, 0x0000,
-	0x82DC, 0x5A70,
-	0x82DE, 0x0000,
-	0x82E0, 0xFFFE,
-	0x82E2, 0x2402,
-	0x82E4, 0xFFFD,
-	0x82E6, 0x849E,
-	0x82E8, 0x0000,
-	0x82EA, 0x84A0,
-	0x82EC, 0x0000,
-	0x82EE, 0x84A2,
-	0x82F0, 0x0500,
-	0x82F2, 0x84C4,
-	0x82F4, 0x0000,
-	0x82F6, 0xA570,
-	0x82F8, 0x0000,
-	0x82FA, 0xFFFE,
-	0x82FC, 0x2400,
-	0x82FE, 0xFFFD,
-	0x8300, 0x0086,
-	0x8302, 0x0200,
-	0x8304, 0x0112,
-	0x8306, 0x0A0A,
-	0x8308, 0x0114,
-	0x830A, 0x0103,
-	0x830C, 0x0118,
-	0x830E, 0x0400,
-	0x8310, 0x011A,
-	0x8312, 0x0100,
-	0x8314, 0x011C,
-	0x8316, 0x0001,
-	0x8318, 0x0136,
-	0x831A, 0x1800,
-	0x831C, 0x013E,
-	0x831E, 0x0000,
-	0x8320, 0x020A,
-	0x8322, 0x0000,
-	0x8324, 0x021E,
-	0x8326, 0x0000,
-	0x8328, 0x0228,
-	0x832A, 0x0001,
-	0x832C, 0x0270,
-	0x832E, 0x2B2B,
-	0x8330, 0x0272,
-	0x8332, 0x102B,
-	0x8334, 0x0274,
-	0x8336, 0x2B30,
-	0x8338, 0x0304,
-	0x833A, 0x0003,
-	0x833C, 0x0306,
-	0x833E, 0x00E6,
-	0x8340, 0x031A,
-	0x8342, 0x0003,
-	0x8344, 0x031C,
-	0x8346, 0x0028,
-	0x8348, 0x031E,
-	0x834A, 0x0002,
-	0x834C, 0x0400,
-	0x834E, 0x1010,
-	0x8350, 0x0408,
-	0x8352, 0x0100,
-	0x8354, 0x040A,
-	0x8356, 0x0100,
-	0x8358, 0x040C,
-	0x835A, 0x0000,
-	0x835C, 0x0702,
-	0x835E, 0x0000,
-	0x8360, 0x0704,
-	0x8362, 0x0000,
-	0x8364, 0x0720,
-	0x8366, 0x0001,
-	0x8368, 0x0722,
-	0x836A, 0x0008,
-	0x836C, 0x0724,
-	0x836E, 0x0000,
-	0x8370, 0x0808,
-	0x8372, 0x0102,
-	0x8374, 0x0900,
-	0x8376, 0x1100,
-	0x8378, 0x0936,
-	0x837A, 0x0000,
-	0x837C, 0x0C40,
-	0x837E, 0x0000,
-	0x8380, 0x0E00,
-	0x8382, 0x0300,
-	0x8384, 0x0342,
-	0x8386, 0x23F0,
-	0x8388, 0x0000,
-	0x838A, 0xFFFF,
-	0x838C, 0x0008,
-	0x838E, 0x2400,
-	0x8390, 0x71D4,
-	0x8392, 0x3F00,
-	0x8394, 0x3D00,
-	0x8396, 0x84F3,
-	0x8398, 0x0040,
-	0x839A, 0xFFFF,
-	0x839C, 0x0010,
-	0x839E, 0x2400,
-	0x83A0, 0x7274,
-	0x83A2, 0x0D00,
-	0x83A4, 0x0C00,
-	0x83A6, 0x36D2,
-	0x83A8, 0x0040,
-	0x83AA, 0x0000,
-	0x83AC, 0x0000,
-	0x83AE, 0x0000,
-	0x83B0, 0x0000,
-	0x83B2, 0xFFFF,
-	0x83B4, 0x0008,
-	0x83B6, 0x2400,
-	0x83B8, 0x7314,
-	0x83BA, 0x0000,
-	0x83BC, 0x0000,
-	0x83BE, 0x0000,
-	0x83C0, 0x0000,
-	0x83C2, 0xFFFF,
-	0x83C4, 0x0008,
-	0x83C6, 0x2400,
-	0x83C8, 0x7A0E,
-	0x83CA, 0x1E00,
-	0x83CC, 0x0F00,
-	0x83CE, 0x0F00,
-	0x83D0, 0x0F00,
-	0x83D2, 0xFFFF,
-	0x83D4, 0x0008,
-	0x83D6, 0x2400,
-	0x83D8, 0x7A6E,
-	0x83DA, 0x2800,
-	0x83DC, 0x1900,
-	0x83DE, 0x1900,
-	0x83E0, 0x1900,
-	0x83E2, 0xFFFF,
-	0x83E4, 0x0008,
-	0x83E6, 0x2400,
-	0x83E8, 0x7A86,
-	0x83EA, 0x2800,
-	0x83EC, 0x1900,
-	0x83EE, 0x1900,
-	0x83F0, 0x1900,
-	0x83F2, 0xFFFF,
-	0x83F4, 0x0008,
-	0x83F6, 0x2400,
-	0x83F8, 0x8C9E,
-	0x83FA, 0x5000,
-	0x83FC, 0x3500,
-	0x83FE, 0x3500,
-	0x8400, 0x3500,
-	0x8402, 0xFFFF,
-	0x8404, 0x000A,
-	0x8406, 0x2400,
-	0x8408, 0xB21E,
-	0x840A, 0x0000,
-	0x840C, 0x0000,
-	0x840E, 0xC000,
-	0x8410, 0x0103,
-	0x8412, 0x0000,
-	0x8414, 0xFFFF,
-	0x8416, 0x000C,
-	0x8418, 0x2400,
-	0x841A, 0xBEDC,
-	0x841C, 0xC526,
-	0x841E, 0x903E,
-	0x8420, 0xC00F,
-	0x8422, 0x0008,
-	0x8424, 0x0C00,
-	0x8426, 0x8000,
-	0x8428, 0xFFFF,
-	0x842A, 0x000E,
-	0x842C, 0x2400,
-	0x842E, 0xDADA,
-	0x8430, 0x0001,
-	0x8432, 0x0000,
-	0x8434, 0x3000,
-	0x8436, 0x8001,
-	0x8438, 0x0000,
-	0x843A, 0x0000,
-	0x843C, 0x0000,
-	0x843E, 0xFFFF,
-	0x8440, 0x000C,
-	0x8442, 0x2400,
-	0x8444, 0xDB0C,
-	0x8446, 0x0000,
-	0x8448, 0x0080,
-	0x844A, 0x0000,
-	0x844C, 0x0000,
-	0x844E, 0x0000,
-	0x8450, 0x0000,
-	0x8452, 0xFFFF,
-	0x8454, 0x000C,
-	0x8456, 0x2400,
-	0x8458, 0xDB3C,
-	0x845A, 0x12D2,
-	0x845C, 0x12D2,
-	0x845E, 0x12D2,
-	0x8460, 0x0000,
-	0x8462, 0x0000,
-	0x8464, 0x0000,
-	0x8466, 0xFFFF,
-	0x8468, 0x000C,
-	0x846A, 0x2400,
-	0x846C, 0xDB6C,
-	0x846E, 0x0000,
-	0x8470, 0x0000,
-	0x8472, 0x0000,
-	0x8474, 0x0000,
-	0x8476, 0x0000,
-	0x8478, 0x0000,
-	0x847A, 0xFFFF,
-	0x847C, 0x000C,
-	0x847E, 0x2400,
-	0x8480, 0xDB9C,
-	0x8482, 0x0000,
-	0x8484, 0x0000,
-	0x8486, 0x0000,
-	0x8488, 0x0000,
-	0x848A, 0x0000,
-	0x848C, 0x0000,
-	0x848E, 0xFFFF,
-	0x8490, 0x000C,
-	0x8492, 0x2400,
-	0x8494, 0xDBCC,
-	0x8496, 0x0000,
-	0x8498, 0x0000,
-	0x849A, 0x0000,
-	0x849C, 0x0000,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0xFFFF,
-	0x84A4, 0x0012,
-	0x84A6, 0x2401,
-	0x84A8, 0x1C24,
-	0x84AA, 0x0002,
-	0x84AC, 0x0001,
-	0x84AE, 0xFF03,
-	0x84B0, 0x0010,
-	0x84B2, 0xD70F,
-	0x84B4, 0x0004,
-	0x84B6, 0x0010,
-	0x84B8, 0xD70F,
-	0x84BA, 0xC20F,
-	0x84BC, 0xFFFF,
-	0x84BE, 0x0020,
-	0x84C0, 0x2401,
-	0x84C2, 0x1C4E,
-	0x84C4, 0x0001,
-	0x84C6, 0xFF03,
-	0x84C8, 0x0010,
-	0x84CA, 0xD70F,
-	0x84CC, 0x0004,
-	0x84CE, 0x0010,
-	0x84D0, 0xD70F,
-	0x84D2, 0xC20F,
-	0x84D4, 0x0000,
-	0x84D6, 0x0000,
-	0x84D8, 0x0000,
-	0x84DA, 0x0000,
-	0x84DC, 0x0000,
-	0x84DE, 0x0000,
-	0x84E0, 0x0000,
-	0x84E2, 0x0000,
-	0x84E4, 0xFFFF,
-	0x84E6, 0x0020,
-	0x84E8, 0x2401,
-	0x84EA, 0x1C76,
-	0x84EC, 0x0001,
-	0x84EE, 0xFF03,
-	0x84F0, 0x0010,
-	0x84F2, 0xD70F,
-	0x84F4, 0x0004,
-	0x84F6, 0x0010,
-	0x84F8, 0xD70F,
-	0x84FA, 0xC20F,
-	0x84FC, 0x0000,
-	0x84FE, 0x0000,
-	0x8500, 0x0000,
-	0x8502, 0x0000,
-	0x8504, 0x0000,
-	0x8506, 0x0000,
-	0x8508, 0x0000,
-	0x850A, 0x0000,
-	0x850C, 0xFFFF,
-	0x850E, 0x0010,
-	0x8510, 0x2401,
-	0x8512, 0x1C9E,
-	0x8514, 0x0001,
-	0x8516, 0xFF03,
-	0x8518, 0x0010,
-	0x851A, 0xD70F,
-	0x851C, 0x0004,
-	0x851E, 0x0010,
-	0x8520, 0xD70F,
-	0x8522, 0xC20F,
-	0x8524, 0xFFFF,
-	0x8526, 0x0010,
-	0x8528, 0x2401,
-	0x852A, 0x1CC6,
-	0x852C, 0x0000,
-	0x852E, 0x0000,
-	0x8530, 0x0000,
-	0x8532, 0x0000,
-	0x8534, 0x0000,
-	0x8536, 0x0000,
-	0x8538, 0x0000,
-	0x853A, 0x0000,
-	0x853C, 0xFFFF,
-	0x853E, 0x0020,
-	0x8540, 0x2401,
-	0x8542, 0x1CEE,
-	0x8544, 0x0000,
-	0x8546, 0x0000,
-	0x8548, 0x0000,
-	0x854A, 0x0000,
-	0x854C, 0x0000,
-	0x854E, 0x0000,
-	0x8550, 0x0000,
-	0x8552, 0x0000,
-	0x8554, 0x0000,
-	0x8556, 0x0000,
-	0x8558, 0x0000,
-	0x855A, 0x0000,
-	0x855C, 0x0000,
-	0x855E, 0x0000,
-	0x8560, 0x0000,
-	0x8562, 0x0000,
-	0x8564, 0xFFFF,
-	0x8566, 0x0020,
-	0x8568, 0x2401,
-	0x856A, 0x1D16,
-	0x856C, 0x0000,
-	0x856E, 0x0000,
-	0x8570, 0x0000,
-	0x8572, 0x0000,
-	0x8574, 0x0000,
-	0x8576, 0x0000,
-	0x8578, 0x0000,
-	0x857A, 0x0000,
-	0x857C, 0x0000,
-	0x857E, 0x0000,
-	0x8580, 0x0000,
-	0x8582, 0x0000,
-	0x8584, 0x0000,
-	0x8586, 0x0000,
-	0x8588, 0x0000,
-	0x858A, 0x0000,
-	0x858C, 0xFFFF,
-	0x858E, 0x0010,
-	0x8590, 0x2401,
-	0x8592, 0x1D3E,
-	0x8594, 0x0000,
-	0x8596, 0x0000,
-	0x8598, 0x0000,
-	0x859A, 0x0000,
-	0x859C, 0x0000,
-	0x859E, 0x0000,
-	0x85A0, 0x0000,
-	0x85A2, 0x0000,
-	0x85A4, 0xFFFF,
-	0x85A6, 0x0008,
-	0x85A8, 0x2401,
-	0x85AA, 0x1D72,
-	0x85AC, 0x0000,
-	0x85AE, 0x0000,
-	0x85B0, 0x0000,
-	0x85B2, 0x0000,
-	0x85B4, 0xFFFF,
-	0x85B6, 0x0008,
-	0x85B8, 0x2401,
-	0x85BA, 0x1D82,
-	0x85BC, 0x0000,
-	0x85BE, 0x0000,
-	0x85C0, 0x0000,
-	0x85C2, 0x0000,
-	0x85C4, 0xFFFF,
-	0x85C6, 0x0008,
-	0x85C8, 0x2401,
-	0x85CA, 0x1D92,
-	0x85CC, 0x0000,
-	0x85CE, 0x0000,
-	0x85D0, 0x0000,
-	0x85D2, 0x0000,
-	0x85D4, 0xFFFF,
-	0x85D6, 0x0008,
-	0x85D8, 0x2401,
-	0x85DA, 0x1DA2,
-	0x85DC, 0x0000,
-	0x85DE, 0x0000,
-	0x85E0, 0x0000,
-	0x85E2, 0x0000,
-	0x85E4, 0xFFFF,
-	0x85E6, 0x0008,
-	0x85E8, 0x2401,
-	0x85EA, 0x1DF2,
-	0x85EC, 0x0000,
-	0x85EE, 0x0000,
-	0x85F0, 0x0000,
-	0x85F2, 0x0000,
-	0x85F4, 0xFFFF,
-	0x85F6, 0x0008,
-	0x85F8, 0x2401,
-	0x85FA, 0x1E02,
-	0x85FC, 0x0000,
-	0x85FE, 0x0000,
-	0x8600, 0x0000,
-	0x8602, 0x0000,
-	0x8604, 0xFFFF,
-	0x8606, 0x0008,
-	0x8608, 0x2401,
-	0x860A, 0x1E12,
-	0x860C, 0x0000,
-	0x860E, 0x0000,
-	0x8610, 0x0000,
-	0x8612, 0x0000,
-	0x8614, 0xFFFF,
-	0x8616, 0x0008,
-	0x8618, 0x2401,
-	0x861A, 0x1E22,
-	0x861C, 0x0000,
-	0x861E, 0x0000,
-	0x8620, 0x0000,
-	0x8622, 0x0000,
-	0x8624, 0xFFFF,
-	0x8626, 0x0010,
-	0x8628, 0x2402,
-	0x862A, 0xA548,
-	0x862C, 0x0000,
-	0x862E, 0x0000,
-	0x8630, 0x0000,
-	0x8632, 0x0000,
-	0x8634, 0x0000,
-	0x8636, 0x0000,
-	0x8638, 0x0000,
-	0x863A, 0x0000,
-	0x863C, 0xFFFF,
-	0x863E, 0x0010,
-	0x8640, 0x2402,
-	0x8642, 0xA55C,
-	0x8644, 0x0000,
-	0x8646, 0x0000,
-	0x8648, 0x0000,
-	0x864A, 0x0000,
-	0x864C, 0x0000,
-	0x864E, 0x0000,
-	0x8650, 0x0000,
-	0x8652, 0x0000,
-	0x8654, 0xFFFF,
-	0x8656, 0x002C,
-	0x8658, 0x2402,
-	0x865A, 0xA574,
-	0x865C, 0x0100,
-	0x865E, 0x4000,
-	0x8660, 0x8000,
-	0x8662, 0x0001,
-	0x8664, 0x0002,
-	0x8666, 0x0002,
-	0x8668, 0x0002,
-	0x866A, 0x0002,
-	0x866C, 0x0002,
-	0x866E, 0x0002,
-	0x8670, 0x0800,
-	0x8672, 0x2100,
-	0x8674, 0x2900,
-	0x8676, 0x2E00,
-	0x8678, 0x2E00,
-	0x867A, 0x2E00,
-	0x867C, 0x2E00,
-	0x867E, 0x2E00,
-	0x8680, 0x2E00,
-	0x8682, 0x3000,
-	0x8684, 0xA2FD,
-	0x8686, 0xFEFE,
-	0x8688, 0xFFFF,
-	0x868A, 0x0008,
-	0x868C, 0x2400,
-	0x868E, 0x0260,
-	0x8690, 0x0001,
-	0x8692, 0x0000,
-	0x8694, 0x0006,
-	0x8696, 0x0700,
-	0x8698, 0xFFFF,
-	0x869A, 0x0008,
-	0x869C, 0x2400,
-	0x869E, 0x030C,
-	0x86A0, 0x0000,
-	0x86A2, 0x0300,
-	0x86A4, 0xBF00,
-	0x86A6, 0x0000,
-	0x86A8, 0xFFFF,
-	0x86AA, 0x0010,
-	0x86AC, 0x2400,
-	0x86AE, 0x0344,
-	0x86B0, 0x0008,
-	0x86B2, 0x0006,
-	0x86B4, 0x1F18,
-	0x86B6, 0x1F12,
-	0x86B8, 0x0010,
-	0x86BA, 0x000C,
-	0x86BC, 0x1000,
-	0x86BE, 0x1000,
-	0x86C0, 0xFFFF,
-	0x86C2, 0x0008,
-	0x86C4, 0x2400,
-	0x86C6, 0x0380,
-	0x86C8, 0x0100,
-	0x86CA, 0x0100,
-	0x86CC, 0x0100,
-	0x86CE, 0x0100,
-	0x86D0, 0xFFFF,
-	0x86D2, 0x0008,
-	0x86D4, 0x2400,
-	0x86D6, 0x0728,
-	0x86D8, 0x0000,
-	0x86DA, 0x0000,
-	0x86DC, 0x0000,
-	0x86DE, 0x0000,
-	0x86E0, 0xFFFF,
-	0x86E2, 0x000C,
-	0x86E4, 0x2400,
-	0x86E6, 0x0B02,
-	0x86E8, 0x0101,
-	0x86EA, 0x0001,
-	0x86EC, 0x0101,
-	0x86EE, 0x0101,
-	0x86F0, 0x0101,
-	0x86F2, 0x0100,
-	0x86F4, 0x0000,
-	0x86F6, 0x0000,
-	0x86F8, 0xFFFE,
-	0x86FA, 0x2400,
-	0x86FC, 0xFFFD,
-	0x86FE, 0xD4AC,
-	0x8700, 0x01AE,
-	0x8702, 0xFFFE,
-	0x8704, 0x2401,
-	0x8706, 0xFFFD,
-	0x8708, 0x25E0,
-	0x870A, 0x0001,
-	0x870C, 0x25E2,
-	0x870E, 0x00CD,
-	0x8710, 0x31D0,
-	0x8712, 0x0000,
-	0x8714, 0x31FA,
-	0x8716, 0x0400,
-	0x8718, 0xFFFE,
-	0x871A, 0x2400,
-	0x871C, 0xFFFD,
-	0x871E, 0x0B08,
-	0x8720, 0x0001,
-	0x8722, 0x0000,
-	0x8724, 0x0000,
-	0x8726, 0x0000,
-	0x8728, 0xFFFE,
-	0x872A, 0x2400,
-	0x872C, 0xFFFD,
-	0x872E, 0x703C,
-	0x8730, 0x0101,
-	0x8732, 0x703E,
-	0x8734, 0x0001,
-	0x8736, 0x7048,
-	0x8738, 0x021F,
-	0x873A, 0x704A,
-	0x873C, 0x0A00,
-	0x873E, 0x705A,
-	0x8740, 0x0220,
-	0x8742, 0x705C,
-	0x8744, 0x0A01,
-	0x8746, 0x7274,
-	0x8748, 0x000B,
-	0x874A, 0x7276,
-	0x874C, 0x000B,
-	0x874E, 0x795A,
-	0x8750, 0x0020,
-	0x8752, 0x7970,
-	0x8754, 0x0020,
-	0x8756, 0x7996,
-	0x8758, 0x0101,
-	0x875A, 0x7A0E,
-	0x875C, 0x000F,
-	0x875E, 0x7A6E,
-	0x8760, 0x0019,
-	0x8762, 0x7A86,
-	0x8764, 0x0019,
-	0x8766, 0x7BDA,
-	0x8768, 0x004C,
-	0x876A, 0x82A2,
-	0x876C, 0x0014,
-	0x876E, 0x82BA,
-	0x8770, 0x0033,
-	0x8772, 0x8C9E,
-	0x8774, 0x0035,
-	0x8776, 0x8CA2,
-	0x8778, 0x0070,
-	0x877A, 0x8CCE,
-	0x877C, 0x0096,
-	0x877E, 0x8CD2,
-	0x8780, 0x00BE,
-	0x8782, 0xB176,
-	0x8784, 0x0206,
-	0x8786, 0xB220,
-	0x8788, 0x0301,
-	0x878A, 0xB268,
-	0x878C, 0xF380,
-	0x878E, 0xC4E2,
-	0x8790, 0x0000,
-	0x8792, 0xC53C,
-	0x8794, 0x0005,
-	0x8796, 0xC554,
-	0x8798, 0x1000,
-	0x879A, 0xD326,
-	0x879C, 0x1001,
-	0x879E, 0xD3EC,
-	0x87A0, 0x1CB0,
-	0x87A2, 0xD4A8,
-	0x87A4, 0x0001,
-	0x87A6, 0xD4AC,
-	0x87A8, 0x0001,
-	0x87AA, 0xD4B0,
-	0x87AC, 0x040E,
-	0x87AE, 0xD4B8,
-	0x87B0, 0x0014,
-	0x87B2, 0xD4BC,
-	0x87B4, 0x003F,
-	0x87B6, 0xD4C4,
-	0x87B8, 0x0000,
-	0x87BA, 0xD4C8,
-	0x87BC, 0x0001,
-	0x87BE, 0xD4D0,
-	0x87C0, 0x000A,
-	0x87C2, 0xD4D2,
-	0x87C4, 0x0000,
-	0x87C6, 0xD4D6,
-	0x87C8, 0x001A,
-	0x87CA, 0xD4DE,
-	0x87CC, 0x0001,
-	0x87CE, 0xD4E2,
-	0x87D0, 0x0000,
-	0x87D2, 0xD4EC,
-	0x87D4, 0x0000,
-	0x87D6, 0xD4EE,
-	0x87D8, 0x0000,
-	0x87DA, 0xD4F8,
-	0x87DC, 0x0000,
-	0x87DE, 0xD4FA,
-	0x87E0, 0x0000,
-	0x87E2, 0xD554,
-	0x87E4, 0x00C4,
-	0x87E6, 0xD556,
-	0x87E8, 0x00C4,
-	0x87EA, 0xD560,
-	0x87EC, 0x0352,
-	0x87EE, 0xD562,
-	0x87F0, 0x0352,
-	0x87F2, 0xD684,
-	0x87F4, 0xF380,
-	0x87F6, 0xDB0C,
-	0x87F8, 0x1F1F,
-	0x87FA, 0xDB3C,
-	0x87FC, 0xFDD2,
-	0x87FE, 0xDB42,
-	0x8800, 0xD212,
-	0x8802, 0xDB44,
-	0x8804, 0xD212,
-	0x8806, 0xDB46,
-	0x8808, 0xD212,
-	0x880A, 0xDC8C,
-	0x880C, 0x0B3F,
-	0x880E, 0xDC94,
-	0x8810, 0x0301,
-	0x8812, 0xE980,
-	0x8814, 0x049E,
-	0x8816, 0xF014,
-	0x8818, 0x0007,
-	0x881A, 0xF3F4,
-	0x881C, 0x00C8,
-	0x881E, 0xF3F6,
-	0x8820, 0x10D6,
-	0x8822, 0xFFFE,
-	0x8824, 0x2401,
-	0x8826, 0xFFFD,
-	0x8828, 0x1C4E,
-	0x882A, 0x0180,
-	0x882C, 0x1C50,
-	0x882E, 0x0480,
-	0x8830, 0x2540,
-	0x8832, 0x0000,
-	0x8834, 0x29A8,
-	0x8836, 0x0001,
-	0x8838, 0x29BA,
-	0x883A, 0x0020,
-	0x883C, 0x2A44,
-	0x883E, 0x0739,
-	0x8840, 0x2A56,
-	0x8842, 0x0004,
-	0x8844, 0x3132,
-	0x8846, 0x0002,
-	0x8848, 0x31D0,
-	0x884A, 0x0000,
-	0x884C, 0x31F8,
-	0x884E, 0x0000,
-	0x8850, 0x31FA,
-	0x8852, 0x0000,
-	0x8854, 0x437E,
-	0x8856, 0x00E4,
-	0x8858, 0x4396,
-	0x885A, 0x000B,
-	0x885C, 0x4398,
-	0x885E, 0x000B,
-	0x8860, 0x43C6,
-	0x8862, 0x1401,
-	0x8864, 0xFFFE,
-	0x8866, 0x2402,
-	0x8868, 0xFFFD,
-	0x886A, 0x84C4,
-	0x886C, 0x0001,
-	0x886E, 0xA598,
-	0x8870, 0x0032,
-	0x8872, 0xA59A,
-	0x8874, 0x0035,
-	0x8876, 0xFFFE,
-	0x8878, 0x2400,
-	0x887A, 0xFFFD,
-	0x887C, 0x0086,
-	0x887E, 0x1400,
-	0x8880, 0x0350,
-	0x8882, 0x0008,
-	0x8884, 0x0352,
-	0x8886, 0x0008,
-	0x8888, 0x0900,
-	0x888A, 0x2222,
-	0x888C, 0x0B02,
-	0x888E, 0x0201,
-	0x8890, 0x0B08,
-	0x8892, 0x0001,
-	0x8894, 0x0342,
-	0x8896, 0x12B0,
-	0x8898, 0x0000,
-	0x889A, 0xFFFF,
-	0x889C, 0x0008,
-	0x889E, 0x2400,
-	0x88A0, 0x7314,
-	0x88A2, 0x2E00,
-	0x88A4, 0x3000,
-	0x88A6, 0x9EFD,
-	0x88A8, 0x0040,
-	0x88AA, 0xFFFF,
-	0x88AC, 0x000A,
-	0x88AE, 0x2400,
-	0x88B0, 0xDADE,
-	0x88B2, 0x0000,
-	0x88B4, 0xA000,
-	0x88B6, 0x0001,
-	0x88B8, 0x0005,
-	0x88BA, 0x4011,
-	0x88BC, 0xFFFF,
-	0x88BE, 0x0008,
-	0x88C0, 0x2400,
-	0x88C2, 0xDB10,
-	0x88C4, 0x0040,
-	0x88C6, 0x0020,
-	0x88C8, 0x0040,
-	0x88CA, 0x0060,
-	0x88CC, 0xFFFF,
-	0x88CE, 0x0010,
-	0x88D0, 0x2401,
-	0x88D2, 0x1C26,
-	0x88D4, 0x8001,
-	0x88D6, 0x8004,
-	0x88D8, 0x2010,
-	0x88DA, 0x2010,
-	0x88DC, 0x0005,
-	0x88DE, 0x00A0,
-	0x88E0, 0x2810,
-	0x88E2, 0x2810,
-	0x88E4, 0xFFFF,
-	0x88E6, 0x000A,
-	0x88E8, 0x2401,
-	0x88EA, 0x1C54,
-	0x88EC, 0x0010,
-	0x88EE, 0x0005,
-	0x88F0, 0x00A0,
-	0x88F2, 0x2810,
-	0x88F4, 0x2810,
-	0x88F6, 0xFFFF,
-	0x88F8, 0x0010,
-	0x88FA, 0x2401,
-	0x88FC, 0x1C76,
-	0x88FE, 0x8001,
-	0x8900, 0x8004,
-	0x8902, 0x2010,
-	0x8904, 0x2010,
-	0x8906, 0x0005,
-	0x8908, 0x00A0,
-	0x890A, 0x2810,
-	0x890C, 0x2810,
-	0x890E, 0xFFFF,
-	0x8910, 0x0010,
-	0x8912, 0x2401,
-	0x8914, 0x1C9E,
-	0x8916, 0x8001,
-	0x8918, 0x8004,
-	0x891A, 0x2010,
-	0x891C, 0x2010,
-	0x891E, 0x0005,
-	0x8920, 0x00A0,
-	0x8922, 0x2810,
-	0x8924, 0x2810,
-	0x8926, 0xFFFF,
-	0x8928, 0x0010,
-	0x892A, 0x2401,
-	0x892C, 0x1CC6,
-	0x892E, 0x8001,
-	0x8930, 0x8004,
-	0x8932, 0x2010,
-	0x8934, 0x2010,
-	0x8936, 0x0005,
-	0x8938, 0x00A0,
-	0x893A, 0x2810,
-	0x893C, 0x2810,
-	0x893E, 0xFFFF,
-	0x8940, 0x0010,
-	0x8942, 0x2401,
-	0x8944, 0x1CEE,
-	0x8946, 0x8001,
-	0x8948, 0x8004,
-	0x894A, 0x0010,
-	0x894C, 0x0010,
-	0x894E, 0x0005,
-	0x8950, 0x00A0,
-	0x8952, 0x2810,
-	0x8954, 0x2810,
-	0x8956, 0xFFFF,
-	0x8958, 0x0010,
-	0x895A, 0x2401,
-	0x895C, 0x1D16,
-	0x895E, 0x8001,
-	0x8960, 0x8004,
-	0x8962, 0x2010,
-	0x8964, 0x2010,
-	0x8966, 0x0005,
-	0x8968, 0x00A0,
-	0x896A, 0x2810,
-	0x896C, 0x2810,
-	0x896E, 0xFFFF,
-	0x8970, 0x0010,
-	0x8972, 0x2401,
-	0x8974, 0x1D3E,
-	0x8976, 0x8001,
-	0x8978, 0x8004,
-	0x897A, 0x2010,
-	0x897C, 0x2010,
-	0x897E, 0x0005,
-	0x8980, 0x00A0,
-	0x8982, 0x2810,
-	0x8984, 0x2810,
-	0x8986, 0xFFFF,
-	0x8988, 0x001C,
-	0x898A, 0x2402,
-	0x898C, 0xA57A,
-	0x898E, 0xA000,
-	0x8990, 0x4001,
-	0x8992, 0x8002,
-	0x8994, 0x0005,
-	0x8996, 0x000A,
-	0x8998, 0xA00F,
-	0x899A, 0x4011,
-	0x899C, 0x0E00,
-	0x899E, 0x2000,
-	0x89A0, 0x2800,
-	0x89A2, 0x1400,
-	0x89A4, 0x2200,
-	0x89A6, 0x2800,
-	0x89A8, 0x2C00,
-	0x89AA, 0xFFFF,
-	0x89AC, 0x0008,
-	0x89AE, 0x2400,
-	0x89B0, 0x0344,
-	0x89B2, 0x0000,
-	0x89B4, 0x0000,
-	0x89B6, 0x1F20,
-	0x89B8, 0x1F18,
-	0x89BA, 0xFFFF,
-	0x89BC, 0x0008,
-	0x89BE, 0x2400,
-	0x89C0, 0x0380,
-	0x89C2, 0x0200,
-	0x89C4, 0x0200,
-	0x89C6, 0x0200,
-	0x89C8, 0x0200,
-	0x89CA, 0x0000,
-	0x89CC, 0x0000,
-	0x89CE, 0xFFFE,
-	0x89D0, 0x2400,
-	0x89D2, 0xFFFD,
-	0x89D4, 0xD4B0,
-	0x89D6, 0x0492,
-	0x89D8, 0xD4BC,
-	0x89DA, 0x0037,
-	0x89DC, 0x0346,
-	0x89DE, 0x0300,
-	0x89E0, 0x034A,
-	0x89E2, 0x151F,
-	0x89E4, 0x034E,
-	0x89E6, 0x0900,
-	0x89E8, 0x0000,
-	0x89EA, 0x0000,
-	0x89EC, 0x0000,
-	0x89EE, 0xFFFE,
-	0x89F0, 0x2400,
-	0x89F2, 0xFFFD,
-	0x89F4, 0x703C,
-	0x89F6, 0x0101,
-	0x89F8, 0x7048,
-	0x89FA, 0x009F,
-	0x89FC, 0x705A,
-	0x89FE, 0x00A0,
-	0x8A00, 0x7274,
-	0x8A02, 0xB000,
-	0x8A04, 0x7276,
-	0x8A06, 0x0000,
-	0x8A08, 0x7278,
-	0x8A0A, 0xD212,
-	0x8A0C, 0x7806,
-	0x8A0E, 0x0101,
-	0x8A10, 0x7808,
-	0x8A12, 0x0C3F,
-	0x8A14, 0x795A,
-	0x8A16, 0x0020,
-	0x8A18, 0x7970,
-	0x8A1A, 0x0020,
-	0x8A1C, 0x7A0E,
-	0x8A1E, 0x000F,
-	0x8A20, 0x7A6E,
-	0x8A22, 0x0019,
-	0x8A24, 0x7A86,
-	0x8A26, 0x0019,
-	0x8A28, 0x82A2,
-	0x8A2A, 0x0014,
-	0x8A2C, 0x82BA,
-	0x8A2E, 0x0033,
-	0x8A30, 0x8C9E,
-	0x8A32, 0x0035,
-	0x8A34, 0x8CA2,
-	0x8A36, 0x0050,
-	0x8A38, 0x8CCE,
-	0x8A3A, 0x0096,
-	0x8A3C, 0x8CD2,
-	0x8A3E, 0x00BE,
-	0x8A40, 0xB176,
-	0x8A42, 0x0206,
-	0x8A44, 0xB220,
-	0x8A46, 0x0301,
-	0x8A48, 0xB268,
-	0x8A4A, 0xE380,
-	0x8A4C, 0xC4D8,
-	0x8A4E, 0x0010,
-	0x8A50, 0xC4E2,
-	0x8A52, 0x0000,
-	0x8A54, 0xC53C,
-	0x8A56, 0x0005,
-	0x8A58, 0xC554,
-	0x8A5A, 0x1000,
-	0x8A5C, 0xD326,
-	0x8A5E, 0x1001,
-	0x8A60, 0xD3EC,
-	0x8A62, 0x1CB0,
-	0x8A64, 0xD49C,
-	0x8A66, 0x0000,
-	0x8A68, 0xD4A8,
-	0x8A6A, 0x0000,
-	0x8A6C, 0xD4AC,
-	0x8A6E, 0x0001,
-	0x8A70, 0xD4B8,
-	0x8A72, 0x0014,
-	0x8A74, 0xD4C4,
-	0x8A76, 0x0000,
-	0x8A78, 0xD4D0,
-	0x8A7A, 0x000A,
-	0x8A7C, 0xD4D2,
-	0x8A7E, 0x0000,
-	0x8A80, 0xD4DE,
-	0x8A82, 0x0001,
-	0x8A84, 0xD4EC,
-	0x8A86, 0x0000,
-	0x8A88, 0xD4EE,
-	0x8A8A, 0x0000,
-	0x8A8C, 0xD4F8,
-	0x8A8E, 0x0000,
-	0x8A90, 0xD4FA,
-	0x8A92, 0x0000,
-	0x8A94, 0xD684,
-	0x8A96, 0xE380,
-	0x8A98, 0xD704,
-	0x8A9A, 0x7800,
-	0x8A9C, 0xDADE,
-	0x8A9E, 0x00A0,
-	0x8AA0, 0xDAE0,
-	0x8AA2, 0x0140,
-	0x8AA4, 0xDB0C,
-	0x8AA6, 0x000D,
-	0x8AA8, 0xDB0E,
-	0x8AAA, 0x000F,
-	0x8AAC, 0xDB10,
-	0x8AAE, 0x000D,
-	0x8AB0, 0xDB3C,
-	0x8AB2, 0xD236,
-	0x8AB4, 0xDB3E,
-	0x8AB6, 0xD236,
-	0x8AB8, 0xDB40,
-	0x8ABA, 0xD236,
-	0x8ABC, 0xDC8C,
-	0x8ABE, 0x0B3F,
-	0x8AC0, 0xDC94,
-	0x8AC2, 0x0301,
-	0x8AC4, 0xE980,
-	0x8AC6, 0x049E,
-	0x8AC8, 0xF3F4,
-	0x8ACA, 0x00C8,
-	0x8ACC, 0xF3F6,
-	0x8ACE, 0x10D6,
-	0x8AD0, 0xFFFE,
-	0x8AD2, 0x2401,
-	0x8AD4, 0xFFFD,
-	0x8AD6, 0x195E,
-	0x8AD8, 0x0101,
-	0x8ADA, 0x1966,
-	0x8ADC, 0x0002,
-	0x8ADE, 0x2540,
-	0x8AE0, 0x0000,
-	0x8AE2, 0x29A8,
-	0x8AE4, 0x0001,
-	0x8AE6, 0x29BA,
-	0x8AE8, 0x0020,
-	0x8AEA, 0x2A44,
-	0x8AEC, 0x04AC,
-	0x8AEE, 0x2A56,
-	0x8AF0, 0x0004,
-	0x8AF2, 0x3132,
-	0x8AF4, 0x0002,
-	0x8AF6, 0x31D0,
-	0x8AF8, 0x0000,
-	0x8AFA, 0x31F8,
-	0x8AFC, 0x0000,
-	0x8AFE, 0x31FA,
-	0x8B00, 0x0000,
-	0x8B02, 0x4396,
-	0x8B04, 0x000D,
-	0x8B06, 0x5A70,
-	0x8B08, 0x0001,
-	0x8B0A, 0xFFFE,
-	0x8B0C, 0x2402,
-	0x8B0E, 0xFFFD,
-	0x8B10, 0xA598,
-	0x8B12, 0x0032,
-	0x8B14, 0xA59A,
-	0x8B16, 0x0035,
-	0x8B18, 0xFFFE,
-	0x8B1A, 0x2400,
-	0x8B1C, 0xFFFD,
-	0x8B1E, 0x0086,
-	0x8B20, 0x0280,
-	0x8B22, 0x021E,
-	0x8B24, 0x0006,
-	0x8B26, 0x034E,
-	0x8B28, 0x0900,
-	0x8B2A, 0x0350,
-	0x8B2C, 0x0008,
-	0x8B2E, 0x0352,
-	0x8B30, 0x0008,
-	0x8B32, 0x0722,
-	0x8B34, 0x0020,
-	0x8B36, 0x0900,
-	0x8B38, 0x2222,
-	0x8B3A, 0x0B02,
-	0x8B3C, 0x0201,
-	0x8B3E, 0x0B08,
-	0x8B40, 0x0001,
-	0x8B42, 0x0342,
-	0x8B44, 0x2560,
-	0x8B46, 0x0000,
-	0x8B48, 0xFFFF,
-	0x8B4A, 0x0010,
-	0x8B4C, 0x2401,
-	0x8B4E, 0x1C26,
-	0x8B50, 0x8001,
-	0x8B52, 0xF004,
-	0x8B54, 0x2010,
-	0x8B56, 0x5610,
-	0x8B58, 0x0005,
-	0x8B5A, 0x00A0,
-	0x8B5C, 0xB610,
-	0x8B5E, 0x7011,
-	0x8B60, 0xFFFF,
-	0x8B62, 0x0018,
-	0x8B64, 0x2401,
-	0x8B66, 0x1C4E,
-	0x8B68, 0x8001,
-	0x8B6A, 0xF004,
-	0x8B6C, 0x2810,
-	0x8B6E, 0x5110,
-	0x8B70, 0x0005,
-	0x8B72, 0xF009,
-	0x8B74, 0x9710,
-	0x8B76, 0xDA10,
-	0x8B78, 0x000A,
-	0x8B7A, 0x00A0,
-	0x8B7C, 0xDA10,
-	0x8B7E, 0x7011,
-	0x8B80, 0xFFFF,
-	0x8B82, 0x0018,
-	0x8B84, 0x2401,
-	0x8B86, 0x1C76,
-	0x8B88, 0x8001,
-	0x8B8A, 0xF004,
-	0x8B8C, 0x2810,
-	0x8B8E, 0x6610,
-	0x8B90, 0x0005,
-	0x8B92, 0xF009,
-	0x8B94, 0x7210,
-	0x8B96, 0xDD10,
-	0x8B98, 0x000A,
-	0x8B9A, 0x00A0,
-	0x8B9C, 0xDD10,
-	0x8B9E, 0x7011,
-	0x8BA0, 0xFFFF,
-	0x8BA2, 0x0010,
-	0x8BA4, 0x2401,
-	0x8BA6, 0x1C9E,
-	0x8BA8, 0x8001,
-	0x8BAA, 0xF004,
-	0x8BAC, 0x2010,
-	0x8BAE, 0x5610,
-	0x8BB0, 0x0005,
-	0x8BB2, 0x00A0,
-	0x8BB4, 0xC410,
-	0x8BB6, 0x7011,
-	0x8BB8, 0xFFFF,
-	0x8BBA, 0x0010,
-	0x8BBC, 0x2401,
-	0x8BBE, 0x1CC6,
-	0x8BC0, 0x8001,
-	0x8BC2, 0xF004,
-	0x8BC4, 0x2010,
-	0x8BC6, 0x5610,
-	0x8BC8, 0x0005,
-	0x8BCA, 0x00A0,
-	0x8BCC, 0xB610,
-	0x8BCE, 0x7011,
-	0x8BD0, 0xFFFF,
-	0x8BD2, 0x0018,
-	0x8BD4, 0x2401,
-	0x8BD6, 0x1CEE,
-	0x8BD8, 0x8001,
-	0x8BDA, 0xF004,
-	0x8BDC, 0x2810,
-	0x8BDE, 0x5110,
-	0x8BE0, 0x0005,
-	0x8BE2, 0xF009,
-	0x8BE4, 0x9710,
-	0x8BE6, 0xDA10,
-	0x8BE8, 0x000A,
-	0x8BEA, 0x00A0,
-	0x8BEC, 0xDA10,
-	0x8BEE, 0x7011,
-	0x8BF0, 0xFFFF,
-	0x8BF2, 0x0018,
-	0x8BF4, 0x2401,
-	0x8BF6, 0x1D16,
-	0x8BF8, 0x8001,
-	0x8BFA, 0xF004,
-	0x8BFC, 0x2810,
-	0x8BFE, 0x6610,
-	0x8C00, 0x0005,
-	0x8C02, 0xF009,
-	0x8C04, 0x7210,
-	0x8C06, 0xDD10,
-	0x8C08, 0x000A,
-	0x8C0A, 0x00A0,
-	0x8C0C, 0xDD10,
-	0x8C0E, 0x7011,
-	0x8C10, 0xFFFF,
-	0x8C12, 0x0010,
-	0x8C14, 0x2401,
-	0x8C16, 0x1D3E,
-	0x8C18, 0x8001,
-	0x8C1A, 0xF004,
-	0x8C1C, 0x2010,
-	0x8C1E, 0x5610,
-	0x8C20, 0x0005,
-	0x8C22, 0x00A0,
-	0x8C24, 0xC410,
-	0x8C26, 0x7011,
-	0x8C28, 0xFFFF,
-	0x8C2A, 0x001C,
-	0x8C2C, 0x2402,
-	0x8C2E, 0xA57A,
-	0x8C30, 0xA000,
-	0x8C32, 0x4001,
-	0x8C34, 0x8002,
-	0x8C36, 0x0005,
-	0x8C38, 0x000A,
-	0x8C3A, 0xA00F,
-	0x8C3C, 0x4011,
-	0x8C3E, 0x0E00,
-	0x8C40, 0x2000,
-	0x8C42, 0x2800,
-	0x8C44, 0x1400,
-	0x8C46, 0x2200,
-	0x8C48, 0x2800,
-	0x8C4A, 0x2C00,
-	0x8C4C, 0xFFFF,
-	0x8C4E, 0x0008,
-	0x8C50, 0x2400,
-	0x8C52, 0x0344,
-	0x8C54, 0x0000,
-	0x8C56, 0x0003,
-	0x8C58, 0x1F20,
-	0x8C5A, 0x1F15,
-	0x8C5C, 0xFFFF,
-	0x8C5E, 0x0008,
-	0x8C60, 0x2400,
-	0x8C62, 0x0380,
-	0x8C64, 0x0200,
-	0x8C66, 0x0200,
-	0x8C68, 0x0200,
-	0x8C6A, 0x0200,
-	0x8C6C, 0x0000,
-	0x8C6E, 0x0000,
-	0x8C70, 0xFFFE,
-	0x8C72, 0x2400,
-	0x8C74, 0xFFFD,
-	0x8C76, 0x0346,
-	0x8C78, 0x0780,
-	0x8C7A, 0x034A,
-	0x8C7C, 0x109F,
-	0x8C7E, 0x034E,
-	0x8C80, 0x0900,
-	0x8C82, 0x0000,
-	0x8C84, 0x0000,
-	0x8C86, 0x0000,
-	0x8C88, 0xFFFE,
-	0x8C8A, 0x2401,
-	0x8C8C, 0xFFFD,
-	0x8C8E, 0x25E0,
-	0x8C90, 0x0001,
-	0x8C92, 0x25E2,
-	0x8C94, 0x00CD,
-	0x8C96, 0x31D0,
-	0x8C98, 0x0000,
-	0x8C9A, 0x31FA,
-	0x8C9C, 0x0400,
-	0x8C9E, 0xFFFE,
-	0x8CA0, 0x2400,
-	0x8CA2, 0xFFFD,
-	0x8CA4, 0x0346,
-	0x8CA6, 0x0780,
-	0x8CA8, 0x034A,
-	0x8CAA, 0x109F,
-	0x8CAC, 0x034E,
-	0x8CAE, 0x0900,
-	0x8CB0, 0x0B08,
-	0x8CB2, 0x0001,
-	0x8CB4, 0x0000,
-	0x8CB6, 0x0000,
-	0x8CB8, 0x0000,
-	0x8CBA, 0xFFFE,
-	0x8CBC, 0x2400,
-	0x8CBE, 0xFFFD,
-	0x8CC0, 0xD49C,
-	0x8CC2, 0x0022,
-	0x8CC4, 0xD4A8,
-	0x8CC6, 0x0000,
-	0x8CC8, 0xD4B0,
-	0x8CCA, 0x0458,
-	0x8CCC, 0xD4BC,
-	0x8CCE, 0x003A,
-	0x8CD0, 0xD4E2,
-	0x8CD2, 0x0032,
-	0x8CD4, 0xD556,
-	0x8CD6, 0x00F6,
-	0x8CD8, 0xD562,
-	0x8CDA, 0x0384,
-	0x8CDC, 0xFFFE,
-	0x8CDE, 0x2401,
-	0x8CE0, 0xFFFD,
-	0x8CE2, 0x1C2C,
-	0x8CE4, 0x1000,
-	0x8CE6, 0x1C32,
-	0x8CE8, 0x1051,
-	0x8CEA, 0x1C34,
-	0x8CEC, 0x1035,
-	0x8CEE, 0x1C5A,
-	0x8CF0, 0x1072,
-	0x8CF2, 0x1C5C,
-	0x8CF4, 0x1072,
-	0x8CF6, 0x1C7C,
-	0x8CF8, 0x1000,
-	0x8CFA, 0x1C82,
-	0x8CFC, 0x1066,
-	0x8CFE, 0x1C84,
-	0x8D00, 0x1066,
-	0x8D02, 0x1CAA,
-	0x8D04, 0x1051,
-	0x8D06, 0x1CAC,
-	0x8D08, 0x1035,
-	0x8D0A, 0x1CCC,
-	0x8D0C, 0x1000,
-	0x8D0E, 0x1CD2,
-	0x8D10, 0x1051,
-	0x8D12, 0x1CD4,
-	0x8D14, 0x1035,
-	0x8D16, 0x1CFA,
-	0x8D18, 0x1072,
-	0x8D1A, 0x1CFC,
-	0x8D1C, 0x1072,
-	0x8D1E, 0x1D1C,
-	0x8D20, 0x1000,
-	0x8D22, 0x1D22,
-	0x8D24, 0x1066,
-	0x8D26, 0x1D24,
-	0x8D28, 0x1066,
-	0x8D2A, 0x1D4A,
-	0x8D2C, 0x1051,
-	0x8D2E, 0x1D4C,
-	0x8D30, 0x1035,
-	0x8D32, 0xFFFE,
-	0x8D34, 0x2400,
-	0x8D36, 0xFFFD,
-	0x8D38, 0x0E00,
-	0x8D3A, 0x0302,
-	0x8D3C, 0x0000,
-	0x8D3E, 0x0000,
-	0x8D40, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static u16 zhuquec1tele_preview_capture_setting[] = {
-//Complete	4
-//241224
-//05_OceanZhuQue_JN5_Fdsum_4096x3072_30fps_3056Msps
-//Mode :	05_OceanZhuQue_JN5_Fdsum
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//4096	px
-//3072	px
-//30.01	fps
-//Raw10
-//4784	px
-//688	px
-//6408	line
-//3336	line
-//17.35	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0000,//0
-	0x034A, 0x181F,//6175
-	0x034C, 0x1000,//4096
-	0x034E, 0x0C00,//3072
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x1908,//6408
-	0x0342, 0x12B0,//4784
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x7000,//RST
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3F00,
-	0xD4B0, 0x0E04,//RST_tune
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-//Vsync signal output
-	0xFCFC, 0x2000,
-	0x24DE, 0x0001,
-	0xFCFC, 0x4000,
-	0x0A70, 0x0001,
-	0x0A72, 0x0100,
-	0x0A76, 0x0001,
-	0xFCFC, 0x4000,
-};
-
-static u16 zhuquec1tele_normal_video_setting[] = {
-//Complete	6
-//241224
-//09_OceanZhuQue_JN5_Fdsum_4096x2304_30fps_3056Msps
-//Mode :	09_OceanZhuQue_JN5_Fdsum
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//4640	px
-//4096	px
-//2304	px
-//30.01	fps
-//Raw10
-//4784	px
-//688	px
-//6408	line
-//4104	line
-//21.34	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0300,//768
-	0x034A, 0x151F,//5407
-	0x034C, 0x1000,//4096
-	0x034E, 0x0900,//2304
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x1908,//6408
-	0x0342, 0x12B0,//4784
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x7000,//RST
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3700,
-	0xD4B0, 0x9204,//RST_tune
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum4k_60FPS_4096x2304*/
-static u16 zhuquec1tele_hs_video_setting[] = {
-//Complete	7
-//241224
-//09_OceanZhuQue_JN5_Fdsum_4096x2304_60fps_3056Msps
-//Mode :	09_OceanZhuQue_JN5_Fdsum
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//4640	px
-//4096	px
-//2304	px
-//60.02	fps
-//Raw10
-//4784	px
-//688	px
-//3204	line
-//900	line
-//4.68	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0300,//768
-	0x034A, 0x151F,//5407
-	0x034C, 0x1000,//4096
-	0x034E, 0x0900,//2304
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x0C84,//3204
-	0x0342, 0x12B0,//4784
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x7000,//RST
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2200,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0000,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x3600,
-	0xD4BC, 0x6200,
-	0xD4B0, 0x6A04,//RST_tune
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xFA00,
-	0xD560, 0x5203,
-	0xD562, 0x8803,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum2bin_120FPS_2048x1152*/
-static u16 zhuquec1tele_slim_video_setting[] = { //Not updated
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0300,
-	0x034A, 0x151F,
-	0x034C, 0x0800,
-	0x034E, 0x0480,
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x0642,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00D1,
-	0x0312, 0x0001,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0000,
-	0x84A4, 0x0000,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0100,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x0004,
-	0x705A, 0x0004,
-	0x7274, 0x0000,
-	0x7276, 0x0000,
-	0x7278, 0x0000,
-	0x727A, 0x0000,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7EC6, 0x0900,
-	0x7EA2, 0x0900,
-	0xB1E0, 0x0707,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0600,
-	0xD4A8, 0x0700,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x4000,
-	0xD4B0, 0xC400,
-	0xD4C8, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0005,
-	0x1C28, 0x0050,
-	0x1C2A, 0x3710,
-	0x1C2C, 0x3710,
-	0x1C2E, 0x0000,
-	0x1C30, 0x0000,
-	0x1C32, 0x0000,
-	0x1C34, 0x0000,
-	0x1C4E, 0x0001,
-	0x1C50, 0x7F01,
-	0x1C52, 0xD70F,
-	0x1C54, 0x1510,
-	0x1C56, 0x8001,
-	0x1C58, 0x0002,
-	0x1C5A, 0x1510,
-	0x1C5C, 0xBE0F,
-	0x1C5E, 0x0005,
-	0x1C60, 0x0050,
-	0x1C62, 0x3710,
-	0x1C64, 0x3710,
-	0x1C76, 0x0001,
-	0x1C78, 0x7F01,
-	0x1C7A, 0xD70F,
-	0x1C7C, 0x1510,
-	0x1C7E, 0x8001,
-	0x1C80, 0x0002,
-	0x1C82, 0x1510,
-	0x1C84, 0xBE0F,
-	0x1C86, 0x0005,
-	0x1C88, 0x0050,
-	0x1C8A, 0x3710,
-	0x1C8C, 0x3710,
-	0x1C9E, 0x0005,
-	0x1CA0, 0x0050,
-	0x1CA2, 0x3710,
-	0x1CA4, 0x3710,
-	0x1CA6, 0x0000,
-	0x1CA8, 0x0000,
-	0x1CAA, 0x0000,
-	0x1CAC, 0x0000,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0xA2FD,
-	0xA58E, 0xFEFE,
-	0xA56E, 0x4000,
-	0xA57C, 0x0E00,
-	0xA570, 0x8000,
-	0xA57E, 0x2000,
-	0xA572, 0xA000,
-	0xA580, 0x2800,
-	0xA574, 0x4001,
-	0xA582, 0x1400,
-	0xA576, 0x8002,
-	0xA584, 0x2200,
-	0xA578, 0x0005,
-	0xA586, 0x2800,
-	0xA57A, 0x000A,
-	0xA588, 0x2C00,
-	0xA58A, 0x2E00,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0C00,
-	0x1E16, 0x0C00,
-	0x1E1A, 0x0C00,
-	0x1E1E, 0x0C00,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0C00,
-	0x1E56, 0x0C00,
-	0x1E5A, 0x0C00,
-	0x1E5E, 0x0C00,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0000,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0D00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-/*4sum12.5Mp_24FPS_4096x3072*/
-static u16 zhuquec1tele_custom1_setting[] = {
-//Complete	5
-//241224
-//05_OceanZhuQue_JN5_Fdsum_4096x3072_24fps_3056Msps
-//Mode :	05_OceanZhuQue_JN5_Fdsum
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//4096	px
-//3072	px
-//24.01	fps
-//Raw10
-//4784	px
-//688	px
-//8008	line
-//4936	line
-//25.67	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0000,//0
-	0x034A, 0x181F,//6175
-	0x034C, 0x1000,//4096
-	0x034E, 0x0C00,//3072
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x1F48,//8008
-	0x0342, 0x12B0,//4784
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x7000,//RST
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3F00,
-	0xD4B0, 0x0E04,//RST_tune
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum2bin_24FPS_2048x1536*/
-static u16 zhuquec1tele_custom2_setting[] = { //Not updated
-//Complete	19
-//240318
-//13_1_OceanFront5_JN5_A2A2_FHD_2048x1536_24fps_1672Msps
-//Mode :	13_1_OceanFront5_JN5_A2A2_FHD
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x384
-//24	MHz
-//920	MHz
-//1672	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//2048	px
-//1536	px
-//24.01	fps
-//Raw10
-//4852	px
-//2804	px
-//7896	line
-//6360	line
-//33.54	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0000,//0
-	0x034A, 0x181F,//6175
-	0x034C, 0x0800,//2048
-	0x034E, 0x0600,//1536
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x1ED8,//7896
-	0x0342, 0x12F4,//4852
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00D1,//209
-	0x0312, 0x0001,//1
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x00D0,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0000,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0600,
-	0xD4A8, 0x0700,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x4000,
-	0xD4B0, 0x1202,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0600,
-	0x1DF6, 0x0600,
-	0x1DFA, 0x0600,
-	0x1DFE, 0x0600,
-	0x1E12, 0x0C00,
-	0x1E16, 0x0C00,
-	0x1E1A, 0x0C00,
-	0x1E1E, 0x0C00,
-	0x1E32, 0x0600,
-	0x1E36, 0x0600,
-	0x1E3A, 0x0600,
-	0x1E3E, 0x0600,
-	0x1E52, 0x0C00,
-	0x1E56, 0x0C00,
-	0x1E5A, 0x0C00,
-	0x1E5E, 0x0C00,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0000,
-	0xDB3C, 0x0000,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x0000,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0000,
-};
-
-/*full50Mp_15FPS_8192x6144_remosaicON*/
-static u16 zhuquec1tele_custom3_setting[] = {
-//Complete	1
-//241224
-//01_WD4_OceanZhuQue_JN5_Full_8192x6144_15.1fps_2256Msps
-//Mode :	01_WD4_OceanZhuQue_JN5_Full
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_On
-//DBPC	DBPC_On
-//Qmosaic	QMSC_On
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//2256	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//8192	px
-//6144	px
-//15.1	fps
-//Raw10
-//9600	px
-//1408	px
-//6346	line
-//202	line
-//2.11	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0000,//0
-	0x034A, 0x181F,//6175
-	0x034C, 0x2000,//8192
-	0x034E, 0x1800,//6144
-	0x0350, 0x0010,
-	0x0352, 0x0010,
-	0x0340, 0x18CA,//6346
-	0x0342, 0x2580,//9600
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x008D,//141
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0600,
-	0xB178, 0x0000,
-	0x7996, 0x0100,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x0011,
-	0x0380, 0x0001,
-	0x0382, 0x0001,
-	0x0384, 0x0001,
-	0x0386, 0x0001,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0101,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0100,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0200,//QMSC_On
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0100,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0200,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0101,//DBPC_On
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0200,
-	0xC53C, 0x0100,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x530D,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0100,
-	0x31FA, 0xCD04,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0200,//QPDC_On
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0120,
-	0xD3EC, 0xB11C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0200,
-	0xFCFC, 0x2000,
-	0xE980, 0x0005,
-	0xC4D8, 0x2000,
-	0x795A, 0x1000,
-	0x7970, 0x1000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0001,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x2F00,
-	0x705A, 0x3000,
-	0x7274, 0x0D00,
-	0x7276, 0x0C00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0000,
-	0x704A, 0x0004,
-	0x705C, 0x0004,
-	0x7314, 0x0000,
-	0x7316, 0x0000,
-	0x7318, 0x0000,
-	0x731A, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0800,
-	0x2A42, 0x0100,
-	0x2A44, 0xB004,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x1E00,
-	0x7A6E, 0x2800,
-	0x7A86, 0x2800,
-	0x8C9E, 0x5000,
-	0x8CCE, 0x2C01,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0000,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x1600,
-	0xD4A8, 0x0300,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x2000,
-	0xD4DE, 0x0000,
-	0xD4B8, 0x3500,
-	0xD4AC, 0xE700,
-	0xD4C4, 0x0100,
-	0xD4EC, 0xBE00,
-	0xD4EE, 0xBE00,
-	0xD4F8, 0xF001,
-	0xD4FA, 0xF001,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0001,
-	0x1C28, 0xFF03,
-	0x1C2A, 0x0010,
-	0x1C2C, 0xD70F,
-	0x1C2E, 0x0004,
-	0x1C30, 0x0010,
-	0x1C32, 0xD70F,
-	0x1C34, 0xC20F,
-	0x1C4E, 0x0001,
-	0x1C50, 0xFF03,
-	0x1C52, 0x0010,
-	0x1C54, 0xD70F,
-	0x1C56, 0x0004,
-	0x1C58, 0x0010,
-	0x1C5A, 0xD70F,
-	0x1C5C, 0xC20F,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x0001,
-	0x1C78, 0xFF03,
-	0x1C7A, 0x0010,
-	0x1C7C, 0xD70F,
-	0x1C7E, 0x0004,
-	0x1C80, 0x0010,
-	0x1C82, 0xD70F,
-	0x1C84, 0xC20F,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x0001,
-	0x1CA0, 0xFF03,
-	0x1CA2, 0x0010,
-	0x1CA4, 0xD70F,
-	0x1CA6, 0x0004,
-	0x1CA8, 0x0010,
-	0x1CAA, 0xD70F,
-	0x1CAC, 0xC20F,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0800,
-	0xA578, 0x8000,
-	0xA58A, 0x2100,
-	0xA57A, 0x0001,
-	0xA58C, 0x2900,
-	0xA57C, 0x0002,
-	0xA58E, 0x2E00,
-	0xA57E, 0x0002,
-	0xA590, 0x2E00,
-	0xA580, 0x0002,
-	0xA592, 0x2E00,
-	0xA582, 0x0002,
-	0xA594, 0x2E00,
-	0xA584, 0x0002,
-	0xA596, 0x2E00,
-	0xA586, 0x0002,
-	0xA598, 0x2E00,
-	0xA59A, 0x3000,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3600,
-	0x82A2, 0x1200,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0x437E, 0xA400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x4004,
-	0xB268, 0x4004,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x3000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0x8001,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD710,
-	0xF014, 0x0600,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F2B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum4k_30FPS_4096x2304_2expSHDR*/
-static u16 zhuquec1tele_custom4_setting[] = { //Not updated
-//Complete	6 cus4
-//240715	AEB ON
-//09_4_OceanFront_JN5_Fdsum_AEB_4096x2304_60.4fps_3312Msps
-//Mode :	09_4_OceanFront_JN5_Fdsum_AEB
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x576
-//24	MHz
-//920	MHz
-//3312	Mbps/lane
-//4	lane
-//8224	px
-//4640	px
-//4096	px
-//2304	px
-//60.35	fps
-//Raw10
-//6064	px
-//1968	px
-//2514	line
-//210	line
-//1.38	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0300,//768
-	0x034A, 0x151F,//5407
-	0x034C, 0x1000,//4096
-	0x034E, 0x0900,//2304
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x09D2,//2514
-	0x0342, 0x17B0,//6064
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00CF,//207
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0100,
-	0x0262, 0x0000,
-	0x0264, 0x0206,//PDAF VC2
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3700,
-	0xD4B0, 0x8603,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3800,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0000,
-	0x1E16, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5A, 0x0000,
-	0x1E5E, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0D00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x4000,
-	0xDB0E, 0x0040,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xE001,
-	0xDB10, 0x0000,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x2003,
-	0xDB12, 0x00B0,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x8007,
-	0xDB14, 0x00D0,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x000B,
-	0xDB16, 0x00F0,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0000,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0203,
-};
-
-/*fullcrop12.5Mp_30FPS_4096x3072_remosaicON*/
-static u16 zhuquec1tele_custom5_setting[] = {
-//Complete	2
-//241224
-//03_WD4_OceanZhuQue_JN5_Full_4096x3072_30fps_3056Msps
-//Mode :	03_WD4_OceanZhuQue_JN5_Full
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_On
-//DBPC	DBPC_On
-//Qmosaic	QMSC_On
-//Tail :	On (L/R only)	1600x300
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//4128	px
-//3104	px
-//4096	px
-//3072	px
-//30.01	fps
-//Raw10
-//9200	px
-//5104	px
-//3332	line
-//260	line
-//2.6	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0800,//2048
-	0x0348, 0x181F,//6175
-	0x0346, 0x0600,//1536
-	0x034A, 0x121F,//4639
-	0x034C, 0x1000,//4096
-	0x034E, 0x0C00,//3072
-	0x0350, 0x0010,
-	0x0352, 0x0010,
-	0x0340, 0x0D04,//3332
-	0x0342, 0x23F0,//9200
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0600,
-	0xB178, 0x0000,
-	0x7996, 0x0100,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x0011,
-	0x0380, 0x0001,
-	0x0382, 0x0001,
-	0x0384, 0x0001,
-	0x0386, 0x0001,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0101,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0100,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0200,//QMSC_On
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0100,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0200,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0101,//DBPC_On
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0200,
-	0xC53C, 0x0100,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x530D,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0100,
-	0x31FA, 0xCD04,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0200,//QPDC_On
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0120,
-	0xD3EC, 0xB11C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0200,
-	0xFCFC, 0x2000,
-	0xE980, 0x0005,
-	0xC4D8, 0x2000,
-	0x795A, 0x1000,
-	0x7970, 0x1000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0001,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x2F00,
-	0x705A, 0x3000,
-	0x7274, 0x0D00,
-	0x7276, 0x0C00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0000,
-	0x704A, 0x0004,
-	0x705C, 0x0004,
-	0x7314, 0x0000,
-	0x7316, 0x0000,
-	0x7318, 0x0000,
-	0x731A, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0800,
-	0x2A42, 0x0100,
-	0x2A44, 0xB004,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x1E00,
-	0x7A6E, 0x2800,
-	0x7A86, 0x2800,
-	0x8C9E, 0x5000,
-	0x8CCE, 0x2C01,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0000,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x1600,
-	0xD4A8, 0x0300,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x2000,
-	0xD4DE, 0x0000,
-	0xD4B8, 0x3500,
-	0xD4AC, 0xE700,
-	0xD4C4, 0x0100,
-	0xD4EC, 0xBE00,
-	0xD4EE, 0xBE00,
-	0xD4F8, 0xF001,
-	0xD4FA, 0xF001,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0001,
-	0x1C28, 0xFF03,
-	0x1C2A, 0x0010,
-	0x1C2C, 0xD70F,
-	0x1C2E, 0x0004,
-	0x1C30, 0x0010,
-	0x1C32, 0xD70F,
-	0x1C34, 0xC20F,
-	0x1C4E, 0x0001,
-	0x1C50, 0xFF03,
-	0x1C52, 0x0010,
-	0x1C54, 0xD70F,
-	0x1C56, 0x0004,
-	0x1C58, 0x0010,
-	0x1C5A, 0xD70F,
-	0x1C5C, 0xC20F,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x0001,
-	0x1C78, 0xFF03,
-	0x1C7A, 0x0010,
-	0x1C7C, 0xD70F,
-	0x1C7E, 0x0004,
-	0x1C80, 0x0010,
-	0x1C82, 0xD70F,
-	0x1C84, 0xC20F,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x0001,
-	0x1CA0, 0xFF03,
-	0x1CA2, 0x0010,
-	0x1CA4, 0xD70F,
-	0x1CA6, 0x0004,
-	0x1CA8, 0x0010,
-	0x1CAA, 0xD70F,
-	0x1CAC, 0xC20F,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0800,
-	0xA578, 0x8000,
-	0xA58A, 0x2100,
-	0xA57A, 0x0001,
-	0xA58C, 0x2900,
-	0xA57C, 0x0002,
-	0xA58E, 0x2E00,
-	0xA57E, 0x0002,
-	0xA590, 0x2E00,
-	0xA580, 0x0002,
-	0xA592, 0x2E00,
-	0xA582, 0x0002,
-	0xA594, 0x2E00,
-	0xA584, 0x0002,
-	0xA596, 0x2E00,
-	0xA586, 0x0002,
-	0xA598, 0x2E00,
-	0xA59A, 0x3000,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3600,
-	0x82A2, 0x1200,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0x437E, 0xA400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x4004,
-	0xB268, 0x4004,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x3000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0x8001,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC808,
-	0xF3F6, 0xD710,
-	0xF014, 0x0600,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F2B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum2bin_30FPS_2048x1152*/
-static u16 zhuquec1tele_custom6_setting[] = {
-//Complete	10
-//241224
-//13_1_OceanZhuQue_JN5_A2A2_2048x1152_30fps_3312Msps
-//Mode :	13_1_OceanZhuQue_JN5_A2A2
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x288
-//24	MHz
-//920	MHz
-//3312	Mbps/lane
-//4	lane
-//8224	px
-//4640	px
-//2048	px
-//1152	px
-//30.01	fps
-//Raw10
-//4784	px
-//2736	px
-//6408	line
-//5256	line
-//27.33	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0300,//768
-	0x034A, 0x151F,//5407
-	0x034C, 0x0800,//2048
-	0x034E, 0x0480,//1152
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x1908,//6408
-	0x0342, 0x12B0,//4784
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//207
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x00D0,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x6A00,
-	0xD4BC, 0x9801,
-	0xD4B0, 0x7E01,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0x2E01,
-	0xD560, 0x5203,
-	0xD562, 0xBC03,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum2bin_240FPS_2048x1152*/
-static u16 zhuquec1tele_custom7_setting[] = { //Not updated
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0300,
-	0x034A, 0x151F,
-	0x034C, 0x0800,
-	0x034E, 0x0480,
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x0516,
-	0x0342, 0x0B80,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00F9,
-	0x0312, 0x0001,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0604,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0xBA10,
-	0xD20C, 0x0908,
-	0xD314, 0x3003,
-	0xD27A, 0x0B00,
-	0xD3F0, 0x811C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0101,
-	0x0720, 0x0000,
-	0x0722, 0x0800,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0000,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0100,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0000,
-	0x84A4, 0x0000,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0C00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0080,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x000C,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0000,
-	0x2A44, 0xE002,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7EC6, 0x1E00,
-	0x7EA2, 0x3200,
-	0xB1E0, 0x0B07,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0300,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x1A00,
-	0xD4E6, 0x0000,
-	0xD4C0, 0x3800,
-	0xD4B4, 0xC200,
-	0xD4CC, 0x0100,
-	0xD5BC, 0xC400,
-	0xD5BE, 0xC400,
-	0xD5C8, 0x5203,
-	0xD5CA, 0x5203,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0005,
-	0x1C28, 0x0050,
-	0x1C2A, 0x3710,
-	0x1C2C, 0x3710,
-	0x1C2E, 0x0000,
-	0x1C30, 0x0000,
-	0x1C32, 0x0000,
-	0x1C34, 0x0000,
-	0x1C4E, 0x0001,
-	0x1C50, 0x7F01,
-	0x1C52, 0xD70F,
-	0x1C54, 0x1510,
-	0x1C56, 0x8001,
-	0x1C58, 0x0002,
-	0x1C5A, 0x1510,
-	0x1C5C, 0xBE0F,
-	0x1C5E, 0x0005,
-	0x1C60, 0x0050,
-	0x1C62, 0x3710,
-	0x1C64, 0x3710,
-	0x1C76, 0x0001,
-	0x1C78, 0x7F01,
-	0x1C7A, 0xD70F,
-	0x1C7C, 0x1510,
-	0x1C7E, 0x8001,
-	0x1C80, 0x0002,
-	0x1C82, 0x1510,
-	0x1C84, 0xBE0F,
-	0x1C86, 0x0005,
-	0x1C88, 0x0050,
-	0x1C8A, 0x3710,
-	0x1C8C, 0x3710,
-	0x1C9E, 0x0005,
-	0x1CA0, 0x0050,
-	0x1CA2, 0x3710,
-	0x1CA4, 0x3710,
-	0x1CA6, 0x0000,
-	0x1CA8, 0x0000,
-	0x1CAA, 0x0000,
-	0x1CAC, 0x0000,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0xA2FD,
-	0xA58E, 0xFEFE,
-	0xA56E, 0x4000,
-	0xA57C, 0x1400,
-	0xA570, 0x8000,
-	0xA57E, 0x2200,
-	0xA572, 0xA000,
-	0xA580, 0x2800,
-	0xA574, 0x4001,
-	0xA582, 0x1400,
-	0xA576, 0x8002,
-	0xA584, 0x2200,
-	0xA578, 0x0005,
-	0xA586, 0x2800,
-	0xA57A, 0x000A,
-	0xA588, 0x2C00,
-	0xA58A, 0x2E00,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0600,
-	0x1E16, 0x0300,
-	0x1E1A, 0x0600,
-	0x1E1E, 0x0300,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0600,
-	0x1E56, 0x0300,
-	0x1E5A, 0x0600,
-	0x1E5E, 0x0300,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x4000,
-};
-
-/*4sumFHD_30FPS_2048x1152_2expSHDR*/
-static u16 zhuquec1tele_custom8_setting[] = { //Not updated
-//Complete	FHD SHDR
-//240318
-//16_OceanFront_JN5_A2A2_FHD_stgHDR_2048x1152_30fps_3312Msps
-//Mode :	16_OceanFront_JN5_A2A2_FHD_stgHDR
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x288
-//24	MHz
-//920	MHz
-//3312	Mbps/lane
-//4	lane
-//8224	px
-//4640	px
-//2048	px
-//1152	px
-//30.01	fps
-//Raw10
-//6000	px
-//3952	px
-//5110	line
-//3958	line
-//25.81	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0101,
-	0x7808, 0x3F1C,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,	//0
-	0x0348, 0x201F,	//8223
-	0x0346, 0x0300,	//768
-	0x034A, 0x151F,	//5407
-	0x034C, 0x0800,	//2048
-	0x034E, 0x0480,	//1152
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x13F6,	//5110
-	0x0342, 0x1770,	//6000
-	0x0136, 0x1800,	//24
-	0x013E, 0x0000,	//0
-	0x0304, 0x0003,	//3
-	0x0306, 0x00E6,	//230
-	0x030C, 0x0000,	//0
-	0x030E, 0x0003,	//3
-	0x0310, 0x00CF,	//207
-	0x0312, 0x0000,	//0
-	0x031A, 0x0003,	//3
-	0x031C, 0x0028,	//40
-	0x031E, 0x0002,	//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100,	//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0003,
-	0x0262, 0x0100,
-	0x0264, 0x0006,	//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,	//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,	//Tail_On
-	0x0722, 0x0400,
-	0x0724, 0x0000,	//L/R only
-	0x0728, 0x0000,	//0.25
-	0x072A, 0x0000,	//0.125
-	0x072C, 0x0000,	//0.0625
-	0x072E, 0x0000,	//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0300,
-	0x0228, 0x0200,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,	//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,	//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0101,
-	0xFCFC, 0x4000,
-	0x020A, 0x0100,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0000,
-	0x22C4, 0x0000,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0100,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,	//QPDC_Off
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0100,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x0004,
-	0x705A, 0x0004,
-	0x7274, 0x0000,
-	0x7276, 0x0000,
-	0x7278, 0x0000,
-	0x727A, 0x0000,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0000,
-	0x704A, 0x0004,
-	0x705C, 0x0004,
-	0x7314, 0x0000,
-	0x7316, 0x0000,
-	0x7318, 0x0000,
-	0x731A, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x943E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x000C,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x2C00,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,	//240124_updated
-	0x2A56, 0x0100,
-	0x2A42, 0x0000,
-	0x2A44, 0x0000,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x1700,
-	0x7A72, 0x2100,
-	0x7A8A, 0x2100,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x0100,
-	0x7EF2, 0x0100,
-	0x7EFE, 0xBA01,
-	0x7F0A, 0xAA01,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5000,
-	0x8CD6, 0xBE00,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0400,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3700,
-	0xD4B0, 0x3402,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x1A00,
-	0xD4E6, 0x0000,
-	0xD4C0, 0x3700,
-	0xD4B4, 0x7C00,
-	0xD4CC, 0x0100,
-	0xD5BC, 0xC400,
-	0xD5BE, 0xC400,
-	0xD5C8, 0x5203,
-	0xD5CA, 0x5203,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x2000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0040,
-	0xB222, 0xC060,
-	0xB20C, 0x2E2E,
-	0xB21A, 0x0406,
-	0xB378, 0x0100,
-	0xDD70, 0x037E,
-	0xDE38, 0x2E2E,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0x16FC,
-	0xA59E, 0x0000,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0x000A,
-	0xA596, 0x2C00,
-	0xA586, 0x000A,
-	0xA598, 0x2C00,
-	0xA59A, 0x2E00,
-	0xA548, 0x0200,
-	0xA570, 0xA2FD,
-	0xA54A, 0x4000,
-	0xA54C, 0x8000,
-	0xA54E, 0xA000,
-	0xA550, 0x4001,
-	0xA552, 0x8002,
-	0xA554, 0x0005,
-	0xA556, 0x000A,
-	0xA55C, 0x0E00,
-	0xA55E, 0x2000,
-	0xA560, 0x2800,
-	0xA562, 0x1400,
-	0xA564, 0x2200,
-	0xA566, 0x2800,
-	0xA568, 0x2C00,
-	0xA56A, 0x2E00,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0000,
-	0x1E16, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5A, 0x0000,
-	0x1E5E, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0C00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0100,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x80E3,
-	0xB268, 0x80E3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0002,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0080,
-	0xDB3E, 0x12D2,
-	0xDADE, 0xDF01,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x12D2,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0080,
-	0xDBCE, 0x12D2,
-	0xDB6E, 0xDF01,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0600,
-	0xB270, 0x8788,
-	0xB266, 0xC005,
-	0xD682, 0xC005,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0000,
-};
-
-/*13_1_OceanFront3_JN5_A2A2_FHD*/
-static u16 zhuquec1tele_custom9_setting[] = {
-//Complete	8
-//241224
-//13_1_OceanZhuQue_JN5_A2A2_2048x1536_30fps_1672Msps
-//Mode :	13_1_OceanZhuQue_JN5_A2A2
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x288
-//24	MHz
-//920	MHz
-//1672	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//2048	px
-//1536	px
-//30.01	fps
-//Raw10
-//4784	px
-//2736	px
-//6408	line
-//4872	line
-//25.33	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0000,//0
-	0x034A, 0x181F,//6175
-	0x034C, 0x0800,//2048
-	0x034E, 0x0600,//1536
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x1908,//6408
-	0x0342, 0x12B0,//4784
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00D1,//209
-	0x0312, 0x0001,//1
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x00D0,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x6A00,
-	0xD4BC, 0x9801,
-	0xD4B0, 0x7E01,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0x2E01,
-	0xD560, 0x5203,
-	0xD562, 0xBC03,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*13_1_OceanFront4_JN5_A2A2_FHD*/
-static u16 zhuquec1tele_custom10_setting[] = {
-//Complete	9
-//241224
-//13_1_OceanZhuQue_JN5_A2A2_2048x1536_15fps_1672Msps
-//Mode :	13_1_OceanZhuQue_JN5_A2A2
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x288
-//24	MHz
-//920	MHz
-//1672	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//2048	px
-//1536	px
-//15.01	fps
-//Raw10
-//4784	px
-//2736	px
-//12816	line
-//11280	line
-//58.66	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0000,//0
-	0x034A, 0x181F,//6175
-	0x034C, 0x0800,//2048
-	0x034E, 0x0600,//1536
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x3210,//12816
-	0x0342, 0x12B0,//4784
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00D1,//209
-	0x0312, 0x0001,//1
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x00D0,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x6A00,
-	0xD4BC, 0x9801,
-	0xD4B0, 0x7E01,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0x2E01,
-	0xD560, 0x5203,
-	0xD562, 0xBC03,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum2bin_15FPS_2048x1152*/
-static u16 zhuquec1tele_custom11_setting[] = {
-//Complete	11
-//241224
-//13_1_OceanZhuQue_JN5_A2A2_2048x1152_15fps_1672Msps
-//Mode :	13_1_OceanZhuQue_JN5_A2A2
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	2048x288
-//24	MHz
-//920	MHz
-//1672	Mbps/lane
-//4	lane
-//8224	px
-//4640	px
-//2048	px
-//1152	px
-//15	fps
-//Raw10
-//4852	px
-//2804	px
-//12640	line
-//11488	line
-//60.59	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0300,//768
-	0x034A, 0x151F,//5407
-	0x034C, 0x0800,//2048
-	0x034E, 0x0480,//1152
-	0x0350, 0x0004,
-	0x0352, 0x0004,
-	0x0340, 0x3160,//12640
-	0x0342, 0x12F4,//4852
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00D1,//209
-	0x0312, 0x0001,//1
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x3344,
-	0x0380, 0x0002,
-	0x0382, 0x0006,
-	0x0384, 0x0002,
-	0x0386, 0x0006,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0910,
-	0xD314, 0x2002,
-	0xD27A, 0x0700,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x3F01,
-	0x705A, 0x4001,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x00D0,
-	0x7280, 0x12D2,
-	0x7282, 0x0040,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x907E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x7901,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x5000,
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x6A00,
-	0xD4BC, 0x9801,
-	0xD4B0, 0x7E01,
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0x2E01,
-	0xD560, 0x5203,
-	0xD562, 0xBC03,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum4k_30FPS_3264x1836*/
-static u16 zhuquec1tele_custom12_setting[] = {
-//Complete	12
-//241224
-//09_OceanZhueQue_JN5_Fdsum_3264x1836_30.1fps_3056Msps
-//Mode :	09_OceanZhueQue_JN5_Fdsum
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//6560	px
-//3704	px
-//3264	px
-//1836	px
-//30.08	fps
-//Raw10
-//4848	px
-//1584	px
-//6309	line
-//4473	line
-//23.57	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0340,//832
-	0x0348, 0x1CDF,//7391
-	0x0346, 0x04D4,//1236
-	0x034A, 0x134B,//4939
-	0x034C, 0x0CC0,//3264
-	0x034E, 0x072C,//1836
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x18A5,//6309
-	0x0342, 0x12F0,//4848
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x7000,//RST
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3700,
-	0xD4B0, 0x8603,//RST_tune
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0x0804,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum4k_15FPS_3264x1836*/
-static u16 zhuquec1tele_custom13_setting[] = {
-//Complete	13
-//241224
-//09_OceanZhuQue_JN5_Fdsum_3264x1836_15fps_3056Msps
-//Mode :	09_OceanZhuQue_JN5_Fdsum
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//6560	px
-//3704	px
-//3264	px
-//1836	px
-//15.01	fps
-//Raw10
-//4848	px
-//1584	px
-//12640	line
-//10804	line
-//56.93	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0340,//832
-	0x0348, 0x1CDF,//7391
-	0x0346, 0x04D4,//1236
-	0x034A, 0x134B,//4939
-	0x034C, 0x0CC0,//3264
-	0x034E, 0x072C,//1836
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x3160,//12640
-	0x0342, 0x12F0,//4848
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x7000,//RST
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3700,
-	0xD4B0, 0x8603,//RST_tune
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0x0804,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum12.5M_30FPS_4096x3072_2expSHDR*/
-static u16 zhuquec1tele_custom14_setting[] = { //Not updated
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,
-	0x0348, 0x201F,
-	0x0346, 0x0000,
-	0x034A, 0x181F,
-	0x034C, 0x1000,
-	0x034E, 0x0C00,
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x1908,
-	0x0342, 0x12B0,
-	0x0136, 0x1800,
-	0x013E, 0x0000,
-	0x0304, 0x0003,
-	0x0306, 0x00E6,
-	0x030C, 0x0000,
-	0x030E, 0x0003,
-	0x0310, 0x00CF,
-	0x0312, 0x0000,
-	0x031A, 0x0003,
-	0x031C, 0x0028,
-	0x031E, 0x0002,
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100,
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0003,
-	0x0262, 0x0100,
-	0x0264, 0x0006,
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,
-	0x0722, 0x0400,
-	0x0724, 0x0000,
-	0x0728, 0x0000,
-	0x072A, 0x0000,
-	0x072C, 0x0000,
-	0x072E, 0x0000,
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0300,
-	0x0228, 0x0200,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0000,
-	0xF3E4, 0x0300,
-	0xF288, 0x0100,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0D07,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0101,
-	0xFCFC, 0x4000,
-	0x020A, 0x0100,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0000,
-	0x22C4, 0x0000,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0100,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0101,
-	0x1966, 0x0200,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0000,
-	0x84A4, 0x0100,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0100,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x0004,
-	0x705A, 0x0004,
-	0x7274, 0x0000,
-	0x7276, 0x0000,
-	0x7278, 0x0000,
-	0x727A, 0x0000,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x943E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x8C02,
-	0xBEE6, 0x8C02,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3F07,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0078,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x1700,
-	0x7A72, 0x2100,
-	0x7A8A, 0x2100,
-	0x8CA2, 0x4600,
-	0x8CD2, 0x9600,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7EC6, 0x0900,
-	0x7EA2, 0x0900,
-	0xB1E0, 0x0707,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3700,
-	0xD4B0, 0x3B00,
-	0xD4C8, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x2000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0005,
-	0x1C28, 0x0050,
-	0x1C2A, 0x3710,
-	0x1C2C, 0x3710,
-	0x1C2E, 0x0000,
-	0x1C30, 0x0000,
-	0x1C32, 0x0000,
-	0x1C34, 0x0000,
-	0x1C4E, 0x0001,
-	0x1C50, 0x7F01,
-	0x1C52, 0xD70F,
-	0x1C54, 0x1510,
-	0x1C56, 0x8001,
-	0x1C58, 0x0002,
-	0x1C5A, 0x1510,
-	0x1C5C, 0xBE0F,
-	0x1C5E, 0x0005,
-	0x1C60, 0x0050,
-	0x1C62, 0x3710,
-	0x1C64, 0x3710,
-	0x1C76, 0x0001,
-	0x1C78, 0x7F01,
-	0x1C7A, 0xD70F,
-	0x1C7C, 0x1510,
-	0x1C7E, 0x8001,
-	0x1C80, 0x0002,
-	0x1C82, 0x1510,
-	0x1C84, 0xBE0F,
-	0x1C86, 0x0005,
-	0x1C88, 0x0050,
-	0x1C8A, 0x3710,
-	0x1C8C, 0x3710,
-	0x1C9E, 0x0005,
-	0x1CA0, 0x0050,
-	0x1CA2, 0x3710,
-	0x1CA4, 0x3710,
-	0x1CA6, 0x0000,
-	0x1CA8, 0x0000,
-	0x1CAA, 0x0000,
-	0x1CAC, 0x0000,
-	0x1CC6, 0x0005,
-	0x1CC8, 0x0050,
-	0x1CCA, 0x3710,
-	0x1CCC, 0x3710,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0001,
-	0x1CF0, 0x7F01,
-	0x1CF2, 0xD70F,
-	0x1CF4, 0x1510,
-	0x1CF6, 0x8001,
-	0x1CF8, 0x0002,
-	0x1CFA, 0x1510,
-	0x1CFC, 0xBE0F,
-	0x1CFE, 0x0005,
-	0x1D00, 0x0050,
-	0x1D02, 0x3710,
-	0x1D04, 0x3710,
-	0x1D16, 0x0001,
-	0x1D18, 0x7F01,
-	0x1D1A, 0xD70F,
-	0x1D1C, 0x1510,
-	0x1D1E, 0x8001,
-	0x1D20, 0x0002,
-	0x1D22, 0x1510,
-	0x1D24, 0xBE0F,
-	0x1D26, 0x0005,
-	0x1D28, 0x0050,
-	0x1D2A, 0x3710,
-	0x1D2C, 0x3710,
-	0x1D3E, 0x0005,
-	0x1D40, 0x0050,
-	0x1D42, 0x3710,
-	0x1D44, 0x3710,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0040,
-	0xB222, 0xC060,
-	0xB20C, 0x2E2E,
-	0xB21A, 0x0400,
-	0xB378, 0x0100,
-	0xDD70, 0x037E,
-	0xDE38, 0x2E2E,
-	0xFCFC, 0x2002,
-	0xA56C, 0x0100,
-	0xA58C, 0xA2FD,
-	0xA58E, 0xFEFE,
-	0xA56E, 0x4000,
-	0xA57C, 0x0E00,
-	0xA570, 0x8000,
-	0xA57E, 0x2000,
-	0xA572, 0xA000,
-	0xA580, 0x2800,
-	0xA574, 0x4001,
-	0xA582, 0x1400,
-	0xA576, 0x8002,
-	0xA584, 0x2200,
-	0xA578, 0x0005,
-	0xA586, 0x2800,
-	0xA57A, 0x000A,
-	0xA588, 0x2C00,
-	0xA58A, 0x2E00,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0000,
-	0x1E16, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5A, 0x0000,
-	0x1E5E, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x200C,
-	0x4280, 0x1000,
-	0x4362, 0x0000,
-	0x43AA, 0x80FF,
-	0x43AC, 0x0000,
-	0x43C6, 0xFFFF,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0000,
-	0xB324, 0x0000,
-	0xB330, 0x0000,
-	0xB34A, 0x0000,
-	0xB360, 0x0000,
-	0xFCFC, 0x2001,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-/*fullcrop12.5Mp_30FPS_4096x3072_remosaic0ff*/
-static u16 zhuquec1tele_custom15_setting[] = {
-//Complete	3
-//241224
-//04_WD4_OceanZhuQue_JN5_Full_RMSC_BYPS_4096x3072_30fps_3056Msps
-//Mode :	04_WD4_OceanZhuQue_JN5_Full_RMSC_BYPS
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_On
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	1600x300
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//4128	px
-//3104	px
-//4096	px
-//3072	px
-//30.01	fps
-//Raw10
-//9200	px
-//5104	px
-//3332	line
-//260	line
-//2.6	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0800,//2048
-	0x0348, 0x181F,//6175
-	0x0346, 0x0600,//1536
-	0x034A, 0x121F,//4639
-	0x034C, 0x1000,//4096
-	0x034E, 0x0C00,//3072
-	0x0350, 0x0010,
-	0x0352, 0x0010,
-	0x0340, 0x0D04,//3332
-	0x0342, 0x23F0,//9200
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0600,
-	0xB178, 0x0000,
-	0x7996, 0x0100,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x0011,
-	0x0380, 0x0001,
-	0x0382, 0x0001,
-	0x0384, 0x0001,
-	0x0386, 0x0001,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0101,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0100,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0100,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0200,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0200,
-	0xC53C, 0x0100,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x530D,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0100,
-	0x31FA, 0x0004,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0200,//QPDC_On
-	0x25E0, 0x0100,
-	0x25E2, 0xCD00,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0120,
-	0xD3EC, 0xB11C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0200,
-	0xFCFC, 0x2000,
-	0xE980, 0x0005,
-	0xC4D8, 0x2000,
-	0x795A, 0x1000,
-	0x7970, 0x1000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0001,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x2F00,
-	0x705A, 0x3000,
-	0x7274, 0x0D00,
-	0x7276, 0x0C00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0000,
-	0x704A, 0x0004,
-	0x705C, 0x0004,
-	0x7314, 0x0000,
-	0x7316, 0x0000,
-	0x7318, 0x0000,
-	0x731A, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0800,
-	0x2A42, 0x0100,
-	0x2A44, 0xB004,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x1E00,
-	0x7A6E, 0x2800,
-	0x7A86, 0x2800,
-	0x8C9E, 0x5000,
-	0x8CCE, 0x2C01,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0000,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x1600,
-	0xD4A8, 0x0300,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x2000,
-	0xD4DE, 0x0000,
-	0xD4B8, 0x3500,
-	0xD4AC, 0xAE01,
-	0xD4C4, 0x0100,
-	0xD4EC, 0xBE00,
-	0xD4EE, 0xBE00,
-	0xD4F8, 0xF001,
-	0xD4FA, 0xF001,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0001,
-	0x1C28, 0xFF03,
-	0x1C2A, 0x0010,
-	0x1C2C, 0xD70F,
-	0x1C2E, 0x0004,
-	0x1C30, 0x0010,
-	0x1C32, 0xD70F,
-	0x1C34, 0xC20F,
-	0x1C4E, 0x0001,
-	0x1C50, 0xFF03,
-	0x1C52, 0x0010,
-	0x1C54, 0xD70F,
-	0x1C56, 0x0004,
-	0x1C58, 0x0010,
-	0x1C5A, 0xD70F,
-	0x1C5C, 0xC20F,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x0001,
-	0x1C78, 0xFF03,
-	0x1C7A, 0x0010,
-	0x1C7C, 0xD70F,
-	0x1C7E, 0x0004,
-	0x1C80, 0x0010,
-	0x1C82, 0xD70F,
-	0x1C84, 0xC20F,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x0001,
-	0x1CA0, 0xFF03,
-	0x1CA2, 0x0010,
-	0x1CA4, 0xD70F,
-	0x1CA6, 0x0004,
-	0x1CA8, 0x0010,
-	0x1CAA, 0xD70F,
-	0x1CAC, 0xC20F,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0800,
-	0xA578, 0x8000,
-	0xA58A, 0x2100,
-	0xA57A, 0x0001,
-	0xA58C, 0x2900,
-	0xA57C, 0x0002,
-	0xA58E, 0x2E00,
-	0xA57E, 0x0002,
-	0xA590, 0x2E00,
-	0xA580, 0x0002,
-	0xA592, 0x2E00,
-	0xA582, 0x0002,
-	0xA594, 0x2E00,
-	0xA584, 0x0002,
-	0xA596, 0x2E00,
-	0xA586, 0x0002,
-	0xA598, 0x2E00,
-	0xA59A, 0x3000,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3600,
-	0x82A2, 0x1200,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0x437E, 0xA400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x4004,
-	0xB268, 0x4004,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x3000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0x8001,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC808,
-	0xF3F6, 0xD710,
-	0xF014, 0x0600,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F2B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*4sum2bin_30FPS_680x512*/
-static u16 zhuquec1tele_custom16_setting[] = { //Not updated
-//21_0_OceanFront_JN5_A2A2_AON_680x512_30fps_780Msps
-//Mode :	21_0_OceanFront_JN5_A2A2_AON
-//Purpose :	Evaluation
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	Off	342x64
-//24	MHz
-//920	MHz
-//780	Mbps/lane
-//4	lane
-//8208	px
-//6144	px
-//680	px
-//512	px
-//30.01	fps
-//Raw10
-//2944	px
-//2264	px
-//10412	line
-//9900	line
-//31.68	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0000,
-	0x7808, 0x0000,
-	0xFCFC, 0x4000,
-	0x0344, 0x0008,	//8
-	0x0348, 0x2017,	//8215
-	0x0346, 0x0010,	//16
-	0x034A, 0x180F,	//6159
-	0x034C, 0x02A8,	//680
-	0x034E, 0x0200,	//512
-	0x0350, 0x0002,
-	0x0352, 0x0000,
-	0x0340, 0x28AC,	//10412
-	0x0342, 0x0B80,	//2944
-	0x0136, 0x1800,	//24
-	0x013E, 0x0000,	//0
-	0x0304, 0x0003,	//3
-	0x0306, 0x00E6,	//230
-	0x030C, 0x0000,	//0
-	0x030E, 0x0003,	//3
-	0x0310, 0x00C3,	//195
-	0x0312, 0x0002,	//2
-	0x031A, 0x0003,	//3
-	0x031C, 0x0028,	//40
-	0x031E, 0x0002,	//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0104,
-	0x011A, 0x0001,
-	0x011C, 0x0100,	//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0604,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x33CC,
-	0x0380, 0x0002,
-	0x0382, 0x0016,
-	0x0384, 0x0002,
-	0x0386, 0x0016,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0100,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0100,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,
-	0x0262, 0x0000,
-	0x0264, 0x0106,	//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x2B2B,	//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0100,
-	0x0720, 0x0000,	//Tail_Off
-	0x0722, 0x0800,
-	0x0724, 0x0000,	//Off
-	0x0728, 0x0000,	//0.25
-	0x072A, 0x0000,	//0.125
-	0x072C, 0x0000,	//0.0625
-	0x072E, 0x0000,	//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0000,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,	//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0101,
-	0xEF80, 0x0000,
-	0x23F0, 0x0000,
-	0xF3E4, 0x0000,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0001,
-	0x0B08, 0x0000,	//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0000,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0001,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0100,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,	//QPDC_Off
-	0xFCFC, 0x2000,
-	0xD718, 0x0402,
-	0xBF30, 0x0700,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0100,
-	0x3C46, 0x0000,
-	0x3C52, 0x321B,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0A00,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0100,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x0004,
-	0x705A, 0x0004,
-	0x7274, 0x0000,
-	0x7276, 0x0000,
-	0x7278, 0x0000,
-	0x727A, 0x0000,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0000,
-	0x704A, 0x0004,
-	0x705C, 0x0004,
-	0x7314, 0x0000,
-	0x7316, 0x0000,
-	0x7318, 0x0000,
-	0x731A, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x807E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x2C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,	//240124_updated
-	0x2A56, 0x0100,
-	0x2A42, 0x0000,
-	0x2A44, 0x0000,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x0000,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0000,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0000,
-	0x1C26, 0x0000,
-	0x1C28, 0x0000,
-	0x1C2A, 0x0000,
-	0x1C2C, 0x0000,
-	0x1C2E, 0x0000,
-	0x1C30, 0x0000,
-	0x1C32, 0x0000,
-	0x1C34, 0x0000,
-	0x1C4E, 0x0000,
-	0x1C50, 0x0000,
-	0x1C52, 0x0000,
-	0x1C54, 0x0000,
-	0x1C56, 0x0000,
-	0x1C58, 0x0000,
-	0x1C5A, 0x0000,
-	0x1C5C, 0x0000,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x0000,
-	0x1C78, 0x0000,
-	0x1C7A, 0x0000,
-	0x1C7C, 0x0000,
-	0x1C7E, 0x0000,
-	0x1C80, 0x0000,
-	0x1C82, 0x0000,
-	0x1C84, 0x0000,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x0000,
-	0x1CA0, 0x0000,
-	0x1CA2, 0x0000,
-	0x1CA4, 0x0000,
-	0x1CA6, 0x0000,
-	0x1CA8, 0x0000,
-	0x1CAA, 0x0000,
-	0x1CAC, 0x0000,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC060,
-	0xB20C, 0x0F0F,
-	0xB21A, 0x0000,
-	0xB378, 0x0000,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0000,
-	0xA59C, 0x0000,
-	0xA59E, 0x0000,
-	0xA576, 0x0000,
-	0xA588, 0x0000,
-	0xA578, 0x0000,
-	0xA58A, 0x0000,
-	0xA57A, 0x0000,
-	0xA58C, 0x0000,
-	0xA57C, 0x0000,
-	0xA58E, 0x0000,
-	0xA57E, 0x0000,
-	0xA590, 0x0000,
-	0xA580, 0x0000,
-	0xA592, 0x0000,
-	0xA582, 0x0000,
-	0xA594, 0x0000,
-	0xA584, 0x0000,
-	0xA596, 0x0000,
-	0xA586, 0x0000,
-	0xA598, 0x0000,
-	0xA59A, 0x0000,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1DF2, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DFA, 0x0000,
-	0x1DFE, 0x0000,
-	0x1E12, 0x0000,
-	0x1E16, 0x0000,
-	0x1E1A, 0x0000,
-	0x1E1E, 0x0000,
-	0x1E32, 0x0000,
-	0x1E36, 0x0000,
-	0x1E3A, 0x0000,
-	0x1E3E, 0x0000,
-	0x1E52, 0x0000,
-	0x1E56, 0x0000,
-	0x1E5A, 0x0000,
-	0x1E5E, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x200C,
-	0x4280, 0x1000,
-	0x4362, 0x0000,
-	0x43AA, 0x80FF,
-	0x43AC, 0x0000,
-	0x43C6, 0xFFFF,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0E00,
-	0x4398, 0x0E00,
-	0xFCFC, 0x2000,
-	0xB322, 0x0000,
-	0xB324, 0x0000,
-	0xB330, 0x0000,
-	0xB34A, 0x0000,
-	0xB360, 0x0000,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0000,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x4004,
-	0xB268, 0x4004,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0000,
-	0xDB3C, 0x0000,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x0000,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0000,
-	0xDB40, 0x0000,
-	0xDAE0, 0x0000,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0204,
-	0xF3E4, 0x0000,
-	0xF3F4, 0xFFFF,
-	0xF3F6, 0xFFFF,
-	0xF014, 0x0600,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x6AAA,
-	0xDC8C, 0x3F2B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0000,
-};
-
-/*4sum4k_30FPS_3264x2448*/
-static u16 zhuquec1tele_custom17_setting[] = {
-//Complete	14
-//241224
-//09_OceanZhuQue_JN5_Fdsum_3264x2448_30.1fps_3056Msps
-//Mode :	09_OceanZhuQue_JN5_Fdsum
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//6560	px
-//4928	px
-//3264	px
-//2448	px
-//30.06	fps
-//Raw10
-//4848	px
-//1584	px
-//6312	line
-//3864	line
-//20.36	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0340,//832
-	0x0348, 0x1CDF,//7391
-	0x0346, 0x0270,//624
-	0x034A, 0x15AF,//5551
-	0x034C, 0x0CC0,//3264
-	0x034E, 0x0990,//2448
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x18A8,//6312
-	0x0342, 0x12F0,//4848
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x7000,//RST
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3700,
-	0xD4B0, 0x8603,//RST_tune
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0x0804,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*video izoom*/
-static u16 zhuquec1tele_custom18_setting[] = {
-//Complete	16
-//241224
-//03_WD4_OceanZhuQue_JN5_Full_4096x2304_30fps_3056Msps
-//Mode :	03_WD4_OceanZhuQue_JN5_Full
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_On
-//DBPC	DBPC_On
-//Qmosaic	QMSC_On
-//Tail :	On (L/R only)	1600x300
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//4128	px
-//2336	px
-//4096	px
-//2304	px
-//30.01	fps
-//Raw10
-//9200	px
-//5104	px
-//3332	line
-//1028	line
-//10.28	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0800,//2048
-	0x0348, 0x181F,//6175
-	0x0346, 0x0780,//1920
-	0x034A, 0x109F,//4255
-	0x034C, 0x1000,//4096
-	0x034E, 0x0900,//2304
-	0x0350, 0x0010,
-	0x0352, 0x0010,
-	0x0340, 0x0D04,//3332
-	0x0342, 0x23F0,//9200
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0600,
-	0xB178, 0x0000,
-	0x7996, 0x0100,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x0011,
-	0x0380, 0x0001,
-	0x0382, 0x0001,
-	0x0384, 0x0001,
-	0x0386, 0x0001,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0101,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0100,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0200,//QMSC_On
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0100,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0xFF00,
-	0x29A8, 0x0200,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0101,//DBPC_On
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0200,
-	0xC53C, 0x0100,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x530D,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0100,
-	0x31FA, 0xCD04,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0200,//QPDC_On
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0120,
-	0xD3EC, 0xB11C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x0200,
-	0xFCFC, 0x2000,
-	0xE980, 0x0005,
-	0xC4D8, 0x2000,
-	0x795A, 0x1000,
-	0x7970, 0x1000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0001,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x2F00,
-	0x705A, 0x3000,
-	0x7274, 0x0D00,
-	0x7276, 0x0C00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0000,
-	0x704A, 0x0004,
-	0x705C, 0x0004,
-	0x7314, 0x0000,
-	0x7316, 0x0000,
-	0x7318, 0x0000,
-	0x731A, 0x0000,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0800,
-	0x2A42, 0x0100,
-	0x2A44, 0xB004,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x1E00,
-	0x7A6E, 0x2800,
-	0x7A86, 0x2800,
-	0x8C9E, 0x5000,
-	0x8CCE, 0x2C01,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0000,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x3500,
-	0x8CD2, 0x9600,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x3C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x1600,
-	0xD4A8, 0x0300,
-	0xD4D6, 0x0000,
-	0xD4E2, 0x0100,
-	0xD4BC, 0x1400,
-	0xD4B0, 0x0100,
-	0xD4C8, 0x0000,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0x0000,
-	0xD556, 0x0000,
-	0xD560, 0x0000,
-	0xD562, 0x0000,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x2000,
-	0xD4DE, 0x0000,
-	0xD4B8, 0x3500,
-	0xD4AC, 0xE700,
-	0xD4C4, 0x0100,
-	0xD4EC, 0xBE00,
-	0xD4EE, 0xBE00,
-	0xD4F8, 0xF001,
-	0xD4FA, 0xF001,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x0001,
-	0x1C28, 0xFF03,
-	0x1C2A, 0x0010,
-	0x1C2C, 0xD70F,
-	0x1C2E, 0x0004,
-	0x1C30, 0x0010,
-	0x1C32, 0xD70F,
-	0x1C34, 0xC20F,
-	0x1C4E, 0x0001,
-	0x1C50, 0xFF03,
-	0x1C52, 0x0010,
-	0x1C54, 0xD70F,
-	0x1C56, 0x0004,
-	0x1C58, 0x0010,
-	0x1C5A, 0xD70F,
-	0x1C5C, 0xC20F,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x0001,
-	0x1C78, 0xFF03,
-	0x1C7A, 0x0010,
-	0x1C7C, 0xD70F,
-	0x1C7E, 0x0004,
-	0x1C80, 0x0010,
-	0x1C82, 0xD70F,
-	0x1C84, 0xC20F,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x0001,
-	0x1CA0, 0xFF03,
-	0x1CA2, 0x0010,
-	0x1CA4, 0xD70F,
-	0x1CA6, 0x0004,
-	0x1CA8, 0x0010,
-	0x1CAA, 0xD70F,
-	0x1CAC, 0xC20F,
-	0x1CC6, 0x0000,
-	0x1CC8, 0x0000,
-	0x1CCA, 0x0000,
-	0x1CCC, 0x0000,
-	0x1CCE, 0x0000,
-	0x1CD0, 0x0000,
-	0x1CD2, 0x0000,
-	0x1CD4, 0x0000,
-	0x1CEE, 0x0000,
-	0x1CF0, 0x0000,
-	0x1CF2, 0x0000,
-	0x1CF4, 0x0000,
-	0x1CF6, 0x0000,
-	0x1CF8, 0x0000,
-	0x1CFA, 0x0000,
-	0x1CFC, 0x0000,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x0000,
-	0x1D18, 0x0000,
-	0x1D1A, 0x0000,
-	0x1D1C, 0x0000,
-	0x1D1E, 0x0000,
-	0x1D20, 0x0000,
-	0x1D22, 0x0000,
-	0x1D24, 0x0000,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x0000,
-	0x1D40, 0x0000,
-	0x1D42, 0x0000,
-	0x1D44, 0x0000,
-	0x1D46, 0x0000,
-	0x1D48, 0x0000,
-	0x1D4A, 0x0000,
-	0x1D4C, 0x0000,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0800,
-	0xA578, 0x8000,
-	0xA58A, 0x2100,
-	0xA57A, 0x0001,
-	0xA58C, 0x2900,
-	0xA57C, 0x0002,
-	0xA58E, 0x2E00,
-	0xA57E, 0x0002,
-	0xA590, 0x2E00,
-	0xA580, 0x0002,
-	0xA592, 0x2E00,
-	0xA582, 0x0002,
-	0xA594, 0x2E00,
-	0xA584, 0x0002,
-	0xA596, 0x2E00,
-	0xA586, 0x0002,
-	0xA598, 0x2E00,
-	0xA59A, 0x3000,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3600,
-	0x82A2, 0x1200,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x010A,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0C00,
-	0x4398, 0x0E00,
-	0x437E, 0xA400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0000,
-	0xFCFC, 0x2000,
-	0xD684, 0x4004,
-	0xB268, 0x4004,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0x12D2,
-	0xDADC, 0x0000,
-	0xDB0C, 0x0000,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x3000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0x8001,
-	0xDB10, 0x0000,
-	0xDB42, 0x0000,
-	0xDAE2, 0x0000,
-	0xDB12, 0x0000,
-	0xDB44, 0x0000,
-	0xDAE4, 0x0000,
-	0xDB14, 0x0000,
-	0xDB46, 0x0000,
-	0xDAE6, 0x0000,
-	0xDB16, 0x0000,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC808,
-	0xF3F6, 0xD710,
-	0xF014, 0x0600,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F2B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-static u16 zhuquec1tele_custom19_setting[] = {
-//Complete	18
-//241224
-//05_1_OceanZhuQue_JN5_Fdsum_4096x2048_30fps_3056Msps
-//Mode :	05_1_OceanZhuQue_JN5_Fdsum
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//4128	px
-//4096	px
-//2048	px
-//30.01	fps
-//Raw10
-//4784	px
-//688	px
-//6408	line
-//4360	line
-//22.67	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0400,//1024
-	0x034A, 0x141F,//5151
-	0x034C, 0x1000,//4096
-	0x034E, 0x0800,//2048
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x1908,//6408
-	0x0342, 0x12B0,//4784
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x7000,//RST
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2100,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0100,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x0000,
-	0xD4BC, 0x3F00,
-	0xD4B0, 0x0E04,//RST_tune
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xC400,
-	0xD560, 0x5203,
-	0xD562, 0x5203,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x2010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x2810,
-	0x1C34, 0x2810,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x2810,
-	0x1C5C, 0x2810,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x2010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x2810,
-	0x1C84, 0x2810,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x2810,
-	0x1CAC, 0x2810,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x2010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x2810,
-	0x1CD4, 0x2810,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x2810,
-	0x1CFC, 0x2810,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x2010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x2810,
-	0x1D24, 0x2810,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x2810,
-	0x1D4C, 0x2810,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0C00,
-	0x1DF4, 0x0C00,
-	0x1E02, 0x0C00,
-	0x1E04, 0x0C00,
-	0x1E12, 0x0E00,
-	0x1E14, 0x0E00,
-	0x1E22, 0x0E00,
-	0x1E24, 0x0E00,
-	0x1DF6, 0x0B00,
-	0x1DF8, 0x0B00,
-	0x1E06, 0x0B00,
-	0x1E08, 0x0B00,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD210,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0003,
-};
-
-/*LBMF*/ 
-static u16 zhuquec1tele_custom20_setting[] = {
-//Complete	20
-//241224	AEB ON
-//05_OceanZhuQue_JN5_Fdsum_AEB_4096x3072_60fps_3056Msps
-//Mode :	05_OceanZhuQue_JN5_Fdsum_AEB
-//Purpose :	Porting
-//PHY	DPHY
-//QPDC	QPDC_Off
-//DBPC	DBPC_Off
-//Qmosaic	QMSC_Off
-//Tail :	On (L/R only)	4096x768
-//24	MHz
-//920	MHz
-//3056	Mbps/lane
-//4	lane
-//8224	px
-//6176	px
-//4096	px
-//3072	px
-//60.02	fps
-//Raw10
-//4784	px
-//688	px
-//3204	line
-//132	line
-//0.69	ms
-//Gr	First
-//Address	Data (Hex)	Data (Dec)
-	0xFCFC, 0x4000,
-	0x0B30, 0x01FF,
-	0x6170, 0xFFFF,
-	0x6180, 0x0000,
-	0x6190, 0x0000,
-	0x6200, 0xFFFF,
-	0x6202, 0xFFFF,
-	0x6204, 0x0000,
-	0x6206, 0x0000,
-	0x6208, 0x0000,
-	0xA100, 0xFFFF,
-	0xA102, 0x0000,
-	0xA104, 0x0000,
-	0xFCFC, 0x4001,
-	0x0100, 0xFFFF,
-	0x0102, 0xFFFF,
-	0x0104, 0x0000,
-	0x0106, 0x0000,
-	0x0108, 0x0000,
-	0xFCFC, 0x4000,
-	0x8100, 0xFFFF,
-	0x8104, 0x0000,
-	0x8108, 0x0000,
-	0xFCFC, 0x2000,
-	0x7806, 0x0001,
-	0x7808, 0x2408,
-	0xFCFC, 0x4000,
-	0x0344, 0x0000,//0
-	0x0348, 0x201F,//8223
-	0x0346, 0x0000,//0
-	0x034A, 0x181F,//6175
-	0x034C, 0x1000,//4096
-	0x034E, 0x0C00,//3072
-	0x0350, 0x0008,
-	0x0352, 0x0008,
-	0x0340, 0x0C84,//3204
-	0x0342, 0x12B0,//4784
-	0x0136, 0x1800,//24
-	0x013E, 0x0000,//0
-	0x0304, 0x0003,//3
-	0x0306, 0x00E6,//230
-	0x030C, 0x0000,//0
-	0x030E, 0x0003,//3
-	0x0310, 0x00BF,//191
-	0x0312, 0x0000,//0
-	0x031A, 0x0003,//3
-	0x031C, 0x0028,//40
-	0x031E, 0x0002,//2
-	0x0202, 0x0014,
-	0x0226, 0x0014,
-	0x022C, 0x0014,
-	0x0702, 0x0000,
-	0x0704, 0x0000,
-	0x0114, 0x0301,
-	0x0118, 0x0004,
-	0x011A, 0x0001,
-	0x011C, 0x0100,//DPHY
-	0xFCFC, 0x2000,
-	0xB176, 0x0602,
-	0xB178, 0x0000,
-	0x7996, 0x0101,
-	0x7994, 0x2020,
-	0xFCFC, 0x4000,
-	0x0900, 0x2222,
-	0x0380, 0x0002,
-	0x0382, 0x0002,
-	0x0384, 0x0002,
-	0x0386, 0x0002,
-	0x040C, 0x0000,
-	0x0400, 0x1010,
-	0x0408, 0x0100,
-	0x040A, 0x0100,
-	0xFCFC, 0x2000,
-	0xD1F6, 0x3A00,
-	0xD20C, 0x0908,
-	0xD314, 0x2002,
-	0xD27A, 0x0500,
-	0xD3F0, 0xB01C,
-	0xD410, 0x4802,
-	0xD426, 0xD204,
-	0xD43C, 0x0140,
-	0xD412, 0xD204,
-	0xD428, 0xEA0A,
-	0xD43E, 0x0140,
-	0xFCFC, 0x4000,
-	0x0260, 0x0001,//Image VC 00
-	0x0262, 0x0000,
-	0x0264, 0x0006,//PDAF VC0
-	0x0266, 0x0700,
-	0x0112, 0x0A0A,
-	0x0270, 0x2B2B,
-	0x0272, 0x2B10,
-	0x0274, 0x302B,//PDAF DT30
-	0xFCFC, 0x2001,
-	0x44C6, 0x0000,
-	0xFCFC, 0x4000,
-	0x0B02, 0x0102,
-	0x0720, 0x0001,//Tail_On
-	0x0722, 0x0800,
-	0x0724, 0x0000,//L/R only
-	0x0728, 0x0000,//0.25
-	0x072A, 0x0000,//0.125
-	0x072C, 0x0000,//0.0625
-	0x072E, 0x0000,//0.125
-	0xFCFC, 0x2001,
-	0x3132, 0x0200,
-	0xFCFC, 0x4000,
-	0x021E, 0x0000,
-	0x0228, 0x0100,
-	0xFCFC, 0x2001,
-	0x31D0, 0x0000,//QMSC_Off
-	0x5A70, 0x0000,
-	0xFCFC, 0x2000,
-	0xDC94, 0x0103,
-	0xEF80, 0x0000,
-	0x23F0, 0x0001,
-	0xF3E4, 0x0300,
-	0xF288, 0x0000,
-	0xFCFC, 0x2001,
-	0x2A30, 0x01FF,
-	0x4270, 0x0000,
-	0x29BA, 0x2000,
-	0x29A8, 0x0100,
-	0xFCFC, 0x4000,
-	0x0B04, 0x0001,
-	0x0B06, 0x0101,
-	0x0B08, 0x0100,//DBPC_Off
-	0x0B0A, 0x0101,
-	0x0B0C, 0x0100,
-	0xFCFC, 0x2000,
-	0xC4E0, 0x0100,
-	0xC4F6, 0x0000,
-	0xC4E2, 0x0000,
-	0xC53C, 0x0500,
-	0xC544, 0x0005,
-	0xC53E, 0x0000,
-	0xB23C, 0x6060,
-	0xB242, 0x6060,
-	0xC554, 0x0010,
-	0xC556, 0x0000,
-	0xFCFC, 0x2001,
-	0x2920, 0x0100,
-	0x31F8, 0x0000,
-	0x31FA, 0x0000,
-	0xFCFC, 0x2000,
-	0xD856, 0x0507,
-	0xD6D4, 0x0000,
-	0x799A, 0x0000,
-	0xD8A2, 0x0100,
-	0xFCFC, 0x4000,
-	0x020A, 0x0000,
-	0xFCFC, 0x2000,
-	0x78C0, 0x0101,
-	0x22C2, 0x0600,
-	0x22C4, 0xFF1F,
-	0x22EC, 0x1F00,
-	0x2306, 0xFF3F,
-	0x2314, 0xFF00,
-	0x2354, 0x0300,
-	0xFCFC, 0x4000,
-	0x0936, 0x0000,
-	0x0C40, 0x0000,
-	0xFCFC, 0x2000,
-	0x68DE, 0x0000,
-	0xFCFC, 0x2001,
-	0x2540, 0x0000,//QPDC_Off
-	0x25E0, 0x0000,
-	0x25E2, 0x0000,
-	0xFCFC, 0x2000,
-	0xD718, 0x0002,
-	0xBF30, 0x0000,
-	0xFCFC, 0x2001,
-	0x3C42, 0x0000,
-	0x3C46, 0xEB05,
-	0x3C52, 0x4006,
-	0xFCFC, 0x2000,
-	0xD326, 0x0110,
-	0xD3EC, 0xB01C,
-	0xFCFC, 0x2001,
-	0x195E, 0x0100,
-	0x1966, 0x0000,
-	0xFCFC, 0x4000,
-	0x0086, 0x1400,
-	0xFCFC, 0x2000,
-	0xE980, 0x9E04,
-	0xC4D8, 0x2000,
-	0x795A, 0x2000,
-	0x7970, 0x2000,
-	0xFCFC, 0x2002,
-	0x849E, 0x0000,
-	0x84A0, 0x0000,
-	0x84A2, 0x0005,
-	0xFCFC, 0x2001,
-	0x2BB2, 0x1000,
-	0x2D32, 0x0010,
-	0xFCFC, 0x2000,
-	0x703C, 0x0101,
-	0x7046, 0x7F02,
-	0x7058, 0x8002,
-	0x71D4, 0x3F00,
-	0x71D6, 0x3D00,
-	0x71D8, 0x84F3,
-	0x71DA, 0x0040,
-	0x7048, 0x1F02,
-	0x705A, 0x2002,
-	0x7274, 0x0B00,
-	0x7276, 0x0B00,
-	0x7278, 0x36D2,
-	0x727A, 0x0040,
-	0x727C, 0x0000,
-	0x727E, 0x0000,
-	0x7280, 0x0000,
-	0x7282, 0x0000,
-	0x703E, 0x0100,
-	0x704A, 0x000A,
-	0x705C, 0x010A,
-	0x7314, 0x2E00,
-	0x7316, 0x3000,
-	0x7318, 0x9EFD,
-	0x731A, 0x0040,
-	0xBEDC, 0xC526,
-	0xBEDE, 0x903E,
-	0xBEE0, 0xC00F,
-	0xBEE2, 0x0008,
-	0xBEE4, 0x0C00,
-	0xBEE6, 0x8000,
-	0xFCFC, 0x2001,
-	0x2A54, 0x0000,//240124_updated
-	0x2A56, 0x0400,
-	0x2A42, 0x0100,
-	0x2A44, 0x3907,
-	0x2A46, 0x0000,
-	0xFCFC, 0x2000,
-	0xD704, 0x0278,
-	0x7A0E, 0x0F00,
-	0x7A6E, 0x1900,
-	0x7A86, 0x1900,
-	0x8C9E, 0x3500,
-	0x8CCE, 0x9600,
-	0x7A10, 0x0F00,
-	0x7A70, 0x1900,
-	0x7A88, 0x1900,
-	0x8CA0, 0x3500,
-	0x8CD0, 0x9600,
-	0xB224, 0x0103,
-	0xB226, 0x0000,
-	0xB220, 0x0103,
-	0x7A12, 0x0F00,
-	0x7A72, 0x1900,
-	0x7A8A, 0x1900,
-	0x8CA2, 0x7000,//RST
-	0x8CD2, 0xBE00,
-	0x7EE6, 0x2C00,
-	0x7EF2, 0x2C00,
-	0x7EFE, 0x6400,
-	0x7F0A, 0x5800,
-	0x8D0E, 0x0000,
-	0x9032, 0x0000,
-	0x903E, 0x0000,
-	0x7A14, 0x0F00,
-	0x7A74, 0x1900,
-	0x7A8C, 0x1900,
-	0x8CA4, 0x3500,
-	0x7F0E, 0x5800,
-	0x8CD6, 0x9600,
-	0x7BDA, 0x4C00,
-	0xD49C, 0x2200,
-	0xD4D0, 0x0A00,
-	0xD4A8, 0x0000,
-	0xD4D6, 0x1A00,
-	0xD4E2, 0x3200,
-	0xD4BC, 0x3A00,
-	0xD4B0, 0x5804,//RST_tune
-	0xD4C8, 0x0100,
-	0xD624, 0x0000,
-	0xD62E, 0x0000,
-	0xD638, 0x0000,
-	0xD4EA, 0x0100,
-	0xD554, 0xC400,
-	0xD556, 0xF600,
-	0xD560, 0x5203,
-	0xD562, 0x8403,
-	0xD4DA, 0x0000,
-	0xD4E6, 0x0100,
-	0xD4C0, 0x1400,
-	0xD4B4, 0x0100,
-	0xD4CC, 0x0000,
-	0xD5BC, 0x0000,
-	0xD5BE, 0x0000,
-	0xD5C8, 0x0000,
-	0xD5CA, 0x0000,
-	0xD4D2, 0x0000,
-	0xD4DE, 0x0100,
-	0xD4B8, 0x1400,
-	0xD4AC, 0x0100,
-	0xD4C4, 0x0000,
-	0xD4EC, 0x0000,
-	0xD4EE, 0x0000,
-	0xD4F8, 0x0000,
-	0xD4FA, 0x0000,
-	0xBF78, 0x5333,
-	0xD896, 0x0000,
-	0xFCFC, 0x2001,
-	0x1C24, 0x0002,
-	0x1C26, 0x8001,
-	0x1C28, 0x8004,
-	0x1C2A, 0x2010,
-	0x1C2C, 0x0010,
-	0x1C2E, 0x0005,
-	0x1C30, 0x00A0,
-	0x1C32, 0x5110,
-	0x1C34, 0x3510,
-	0x1C4E, 0x8001,
-	0x1C50, 0x8004,
-	0x1C52, 0x0010,
-	0x1C54, 0x0010,
-	0x1C56, 0x0005,
-	0x1C58, 0x00A0,
-	0x1C5A, 0x7210,
-	0x1C5C, 0x7210,
-	0x1C5E, 0x0000,
-	0x1C60, 0x0000,
-	0x1C62, 0x0000,
-	0x1C64, 0x0000,
-	0x1C66, 0x0000,
-	0x1C68, 0x0000,
-	0x1C6A, 0x0000,
-	0x1C6C, 0x0000,
-	0x1C76, 0x8001,
-	0x1C78, 0x8004,
-	0x1C7A, 0x2010,
-	0x1C7C, 0x0010,
-	0x1C7E, 0x0005,
-	0x1C80, 0x00A0,
-	0x1C82, 0x6610,
-	0x1C84, 0x6610,
-	0x1C86, 0x0000,
-	0x1C88, 0x0000,
-	0x1C8A, 0x0000,
-	0x1C8C, 0x0000,
-	0x1C8E, 0x0000,
-	0x1C90, 0x0000,
-	0x1C92, 0x0000,
-	0x1C94, 0x0000,
-	0x1C9E, 0x8001,
-	0x1CA0, 0x8004,
-	0x1CA2, 0x2010,
-	0x1CA4, 0x2010,
-	0x1CA6, 0x0005,
-	0x1CA8, 0x00A0,
-	0x1CAA, 0x5110,
-	0x1CAC, 0x3510,
-	0x1CC6, 0x8001,
-	0x1CC8, 0x8004,
-	0x1CCA, 0x2010,
-	0x1CCC, 0x0010,
-	0x1CCE, 0x0005,
-	0x1CD0, 0x00A0,
-	0x1CD2, 0x5110,
-	0x1CD4, 0x3510,
-	0x1CEE, 0x8001,
-	0x1CF0, 0x8004,
-	0x1CF2, 0x0010,
-	0x1CF4, 0x0010,
-	0x1CF6, 0x0005,
-	0x1CF8, 0x00A0,
-	0x1CFA, 0x7210,
-	0x1CFC, 0x7210,
-	0x1CFE, 0x0000,
-	0x1D00, 0x0000,
-	0x1D02, 0x0000,
-	0x1D04, 0x0000,
-	0x1D06, 0x0000,
-	0x1D08, 0x0000,
-	0x1D0A, 0x0000,
-	0x1D0C, 0x0000,
-	0x1D16, 0x8001,
-	0x1D18, 0x8004,
-	0x1D1A, 0x2010,
-	0x1D1C, 0x0010,
-	0x1D1E, 0x0005,
-	0x1D20, 0x00A0,
-	0x1D22, 0x6610,
-	0x1D24, 0x6610,
-	0x1D26, 0x0000,
-	0x1D28, 0x0000,
-	0x1D2A, 0x0000,
-	0x1D2C, 0x0000,
-	0x1D2E, 0x0000,
-	0x1D30, 0x0000,
-	0x1D32, 0x0000,
-	0x1D34, 0x0000,
-	0x1D3E, 0x8001,
-	0x1D40, 0x8004,
-	0x1D42, 0x2010,
-	0x1D44, 0x2010,
-	0x1D46, 0x0005,
-	0x1D48, 0x00A0,
-	0x1D4A, 0x5110,
-	0x1D4C, 0x3510,
-	0xFCFC, 0x2000,
-	0xB21E, 0x0000,
-	0xB222, 0xC000,
-	0xB20C, 0x2E00,
-	0xB21A, 0x0402,
-	0xB378, 0x0100,
-	0xDD70, 0x0000,
-	0xDE38, 0x0000,
-	0xFCFC, 0x2002,
-	0xA574, 0x0100,
-	0xA59C, 0xA2FD,
-	0xA59E, 0xFEFE,
-	0xA576, 0x4000,
-	0xA588, 0x0E00,
-	0xA578, 0x8000,
-	0xA58A, 0x2000,
-	0xA57A, 0xA000,
-	0xA58C, 0x2800,
-	0xA57C, 0x4001,
-	0xA58E, 0x1400,
-	0xA57E, 0x8002,
-	0xA590, 0x2200,
-	0xA580, 0x0005,
-	0xA592, 0x2800,
-	0xA582, 0x000A,
-	0xA594, 0x2C00,
-	0xA584, 0xA00F,
-	0xA596, 0x2E00,
-	0xA586, 0x4011,
-	0xA598, 0x3200,
-	0xA59A, 0x3500,
-	0xA548, 0x0000,
-	0xA570, 0x0000,
-	0xA54A, 0x0000,
-	0xA54C, 0x0000,
-	0xA54E, 0x0000,
-	0xA550, 0x0000,
-	0xA552, 0x0000,
-	0xA554, 0x0000,
-	0xA556, 0x0000,
-	0xA55C, 0x0000,
-	0xA55E, 0x0000,
-	0xA560, 0x0000,
-	0xA562, 0x0000,
-	0xA564, 0x0000,
-	0xA566, 0x0000,
-	0xA568, 0x0000,
-	0xA56A, 0x0000,
-	0xFCFC, 0x2001,
-	0x1D96, 0x0000,
-	0x1D98, 0x0000,
-	0x1DA6, 0x0000,
-	0x1DA8, 0x0000,
-	0x1D72, 0x0000,
-	0x1D74, 0x0000,
-	0x1D82, 0x0000,
-	0x1D84, 0x0000,
-	0x1D92, 0x0000,
-	0x1D94, 0x0000,
-	0x1DA2, 0x0000,
-	0x1DA4, 0x0000,
-	0x1D76, 0x0000,
-	0x1D78, 0x0000,
-	0x1D86, 0x0000,
-	0x1D88, 0x0000,
-	0x1E16, 0x0000,
-	0x1E18, 0x0000,
-	0x1E26, 0x0000,
-	0x1E28, 0x0000,
-	0x1DF2, 0x0000,
-	0x1DF4, 0x0000,
-	0x1E02, 0x0000,
-	0x1E04, 0x0000,
-	0x1E12, 0x0000,
-	0x1E14, 0x0000,
-	0x1E22, 0x0000,
-	0x1E24, 0x0000,
-	0x1DF6, 0x0000,
-	0x1DF8, 0x0000,
-	0x1E06, 0x0000,
-	0x1E08, 0x0000,
-	0xFCFC, 0x2000,
-	0x82BA, 0x3300,
-	0x82A2, 0x1400,
-	0xFCFC, 0x2001,
-	0x427C, 0x2000,
-	0x4280, 0x1000,
-	0x4362, 0x0100,
-	0x43AA, 0x0000,
-	0x43AC, 0x0000,
-	0x43C6, 0x0114,
-	0x43B4, 0x0000,
-	0x43B6, 0x0000,
-	0x4396, 0x0B00,
-	0x4398, 0x0B00,
-	0x437E, 0xE400,
-	0xFCFC, 0x2000,
-	0xB322, 0x0101,
-	0xB324, 0x0100,
-	0xB330, 0x2828,
-	0xB34A, 0x2828,
-	0xB360, 0x2828,
-	0xFCFC, 0x2001,
-	0x4292, 0x0000,
-	0x4364, 0x0000,
-	0x4366, 0x0000,
-	0x4370, 0x0000,
-	0x4290, 0x0100,
-	0xFCFC, 0x2002,
-	0x84C4, 0x0100,
-	0xFCFC, 0x2000,
-	0xD684, 0x80F3,
-	0xB268, 0x80F3,
-	0xF09A, 0x00FF,
-	0xF2E0, 0x0000,
-	0xF372, 0x0000,
-	0xF0AA, 0xFFFF,
-	0xF0AC, 0xFFFF,
-	0xF2EA, 0x4000,
-	0xDADA, 0x0001,
-	0xDB3C, 0xD2FD,
-	0xDADC, 0x0000,
-	0xDB0C, 0x1F1F,
-	0xDB3E, 0x12D2,
-	0xDADE, 0x0000,
-	0xDB0E, 0x0080,
-	0xDB40, 0x12D2,
-	0xDAE0, 0xA000,
-	0xDB10, 0x0040,
-	0xDB42, 0x12D2,
-	0xDAE2, 0x0001,
-	0xDB12, 0x0020,
-	0xDB44, 0x12D2,
-	0xDAE4, 0x0005,
-	0xDB14, 0x0040,
-	0xDB46, 0x12D2,
-	0xDAE6, 0x4011,
-	0xDB16, 0x0060,
-	0xDBCC, 0x0000,
-	0xDB6C, 0x0000,
-	0xDB9C, 0x0000,
-	0xDBCE, 0x0000,
-	0xDB6E, 0x0000,
-	0xDB9E, 0x0000,
-	0xDBD0, 0x0000,
-	0xDB70, 0x0000,
-	0xDBA0, 0x0000,
-	0xDBD2, 0x0000,
-	0xDB72, 0x0000,
-	0xDBA2, 0x0000,
-	0xDBD4, 0x0000,
-	0xDB74, 0x0000,
-	0xDBA4, 0x0000,
-	0xDBD6, 0x0000,
-	0xDB76, 0x0000,
-	0xDBA6, 0x0000,
-	0xF370, 0x0203,
-	0xF3E4, 0x0301,
-	0xF3F4, 0xC800,
-	0xF3F6, 0xD610,
-	0xF014, 0x0700,
-	0xB270, 0x8708,
-	0xB266, 0xC004,
-	0xD682, 0xC004,
-	0xBF16, 0x0BAA,
-	0xDC8C, 0x3F0B,
-	0xFCFC, 0x4000,
-	0x0808, 0x0201,
-	0x0E00, 0x0203,
-};
-
-//Fullcrop 12.5M remosaic on
-static u16 zhuquec1tele_Fullcrop_12_5M_remosaic_on_seamless_setting[] = {
-	0xFCFC, 0x4000,
-	0x0B30, 0x0100,
-	0x0340, 0x0D04, //3332
-	0x0342, 0x23F0, //9200
-};
-
-////Fullcrop 12.5M remosaic off
-//static u16 zhuquec1tele_Fullcrop_12_5M_remosaic_off_seamless_setting[] = {
-//	0xFCFC, 0x4000,
-//	0x0B30, 0x0101,
-//};
-
-//bining 12.5M
-// static u16 zhuquec1tele_bining_12_5M_seamless_setting[] = {
-// 	0xFCFC, 0x4000,
-// 	0x0B30, 0x0102,
-// 	0x0340, 0x1908, //6408
-// 	0x0342, 0x12B0, //4784
-// };
-
-////bining 12.5M shdr
-//static u16 zhuquec1tele_bining_12_5M_shdr_seamless_setting[] = {
-//	0xFCFC, 0x4000,
-//	0x0B30, 0x0103,
-//};
-//
-//bining 4k 30fps
-static u16 zhuquec1tele_bining_4k_30fps_seamless_setting[] = {
-	0xFCFC, 0x4000,
-	0x0B30, 0x0103,
-};
-
-//Fullcrop 4k 30fps shdr
-static u16 zhuquec1tele_bining_4k_30fps_shdr_seamless_setting[] = {
-	0xFCFC, 0x4000,
-	0x0B30, 0x0104,
-};
-
-//bining 12.5M 30fps
-static u16 zhuquec1tele_bining_12_5M_seamless_setting[] = {
-	0xFCFC, 0x4000,
-	0x0B30, 0x0102,
-};
-
-static u16 zhuquec1tele_lbmf_12_5M_seamless_setting[] = {
-	0xFCFC, 0x4000,
-	0x0B30, 0x0107,
-};
-
-//izoom 30fps remosaic on
-static u16 zhuquec1tele_izoom_seamless_setting[] = {
-	0xFCFC, 0x4000,
-	0x0B30, 0x0100,
-};
-
-//izoom && QBC
-static u16 zhuquec1tele_izoom_qbc_seamless_setting[] = {
-	0xFCFC, 0x4000,
-	0x0B30, 0x0101,
-};
-
-//video izoom 4k 30fps
-static u16 zhuquec1tele_izoom_4k_30fps_seamless_setting[] = {
-	0xFCFC, 0x4000,
-	0x0B30, 0x0105,
-};
-
-#endif
-
-
-
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1tele_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1tele_ana_gain_table.h
deleted file mode 100755
index 85dee047..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1tele_ana_gain_table.h
+++ /dev/null
@@ -1,2540 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************/
-#ifndef __ZHUQUEC1TELE_ANA_GAIN_TABLE_H__
-#define __ZHUQUEC1TELE_ANA_GAIN_TABLE_H__
-static kal_uint32 zhuquec1tele_ana_gain_table[] = {
-	1024,
-	1056,
-	1088,
-	1120,
-	1152,
-	1184,
-	1216,
-	1248,
-	1280,
-	1312,
-	1344,
-	1376,
-	1408,
-	1440,
-	1472,
-	1504,
-	1536,
-	1568,
-	1600,
-	1632,
-	1664,
-	1696,
-	1728,
-	1760,
-	1792,
-	1824,
-	1856,
-	1888,
-	1920,
-	1952,
-	1984,
-	2016,
-	2048,
-	2080,
-	2112,
-	2144,
-	2176,
-	2208,
-	2240,
-	2272,
-	2304,
-	2336,
-	2368,
-	2400,
-	2432,
-	2464,
-	2496,
-	2528,
-	2560,
-	2592,
-	2624,
-	2656,
-	2688,
-	2720,
-	2752,
-	2784,
-	2816,
-	2848,
-	2880,
-	2912,
-	2944,
-	2976,
-	3008,
-	3040,
-	3072,
-	3104,
-	3136,
-	3168,
-	3200,
-	3232,
-	3264,
-	3296,
-	3328,
-	3360,
-	3392,
-	3424,
-	3456,
-	3488,
-	3520,
-	3552,
-	3584,
-	3616,
-	3648,
-	3680,
-	3712,
-	3744,
-	3776,
-	3808,
-	3840,
-	3872,
-	3904,
-	3936,
-	3968,
-	4000,
-	4032,
-	4064,
-	4096,
-	4128,
-	4160,
-	4192,
-	4224,
-	4256,
-	4288,
-	4320,
-	4352,
-	4384,
-	4416,
-	4448,
-	4480,
-	4512,
-	4544,
-	4576,
-	4608,
-	4640,
-	4672,
-	4704,
-	4736,
-	4768,
-	4800,
-	4832,
-	4864,
-	4896,
-	4928,
-	4960,
-	4992,
-	5024,
-	5056,
-	5088,
-	5120,
-	5152,
-	5184,
-	5216,
-	5248,
-	5280,
-	5312,
-	5344,
-	5376,
-	5408,
-	5440,
-	5472,
-	5504,
-	5536,
-	5568,
-	5600,
-	5632,
-	5664,
-	5696,
-	5728,
-	5760,
-	5792,
-	5824,
-	5856,
-	5888,
-	5920,
-	5952,
-	5984,
-	6016,
-	6048,
-	6080,
-	6112,
-	6144,
-	6176,
-	6208,
-	6240,
-	6272,
-	6304,
-	6336,
-	6368,
-	6400,
-	6432,
-	6464,
-	6496,
-	6528,
-	6560,
-	6592,
-	6624,
-	6656,
-	6688,
-	6720,
-	6752,
-	6784,
-	6816,
-	6848,
-	6880,
-	6912,
-	6944,
-	6976,
-	7008,
-	7040,
-	7072,
-	7104,
-	7136,
-	7168,
-	7200,
-	7232,
-	7264,
-	7296,
-	7328,
-	7360,
-	7392,
-	7424,
-	7456,
-	7488,
-	7520,
-	7552,
-	7584,
-	7616,
-	7648,
-	7680,
-	7712,
-	7744,
-	7776,
-	7808,
-	7840,
-	7872,
-	7904,
-	7936,
-	7968,
-	8000,
-	8032,
-	8064,
-	8096,
-	8128,
-	8160,
-	8192,
-	8224,
-	8256,
-	8288,
-	8320,
-	8352,
-	8384,
-	8416,
-	8448,
-	8480,
-	8512,
-	8544,
-	8576,
-	8608,
-	8640,
-	8672,
-	8704,
-	8736,
-	8768,
-	8800,
-	8832,
-	8864,
-	8896,
-	8928,
-	8960,
-	8992,
-	9024,
-	9056,
-	9088,
-	9120,
-	9152,
-	9184,
-	9216,
-	9248,
-	9280,
-	9312,
-	9344,
-	9376,
-	9408,
-	9440,
-	9472,
-	9504,
-	9536,
-	9568,
-	9600,
-	9632,
-	9664,
-	9696,
-	9728,
-	9760,
-	9792,
-	9824,
-	9856,
-	9888,
-	9920,
-	9952,
-	9984,
-	10016,
-	10048,
-	10080,
-	10112,
-	10144,
-	10176,
-	10208,
-	10240,
-	10272,
-	10304,
-	10336,
-	10368,
-	10400,
-	10432,
-	10464,
-	10496,
-	10528,
-	10560,
-	10592,
-	10624,
-	10656,
-	10688,
-	10720,
-	10752,
-	10784,
-	10816,
-	10848,
-	10880,
-	10912,
-	10944,
-	10976,
-	11008,
-	11040,
-	11072,
-	11104,
-	11136,
-	11168,
-	11200,
-	11232,
-	11264,
-	11296,
-	11328,
-	11360,
-	11392,
-	11424,
-	11456,
-	11488,
-	11520,
-	11552,
-	11584,
-	11616,
-	11648,
-	11680,
-	11712,
-	11744,
-	11776,
-	11808,
-	11840,
-	11872,
-	11904,
-	11936,
-	11968,
-	12000,
-	12032,
-	12064,
-	12096,
-	12128,
-	12160,
-	12192,
-	12224,
-	12256,
-	12288,
-	12320,
-	12352,
-	12384,
-	12416,
-	12448,
-	12480,
-	12512,
-	12544,
-	12576,
-	12608,
-	12640,
-	12672,
-	12704,
-	12736,
-	12768,
-	12800,
-	12832,
-	12864,
-	12896,
-	12928,
-	12960,
-	12992,
-	13024,
-	13056,
-	13088,
-	13120,
-	13152,
-	13184,
-	13216,
-	13248,
-	13280,
-	13312,
-	13344,
-	13376,
-	13408,
-	13440,
-	13472,
-	13504,
-	13536,
-	13568,
-	13600,
-	13632,
-	13664,
-	13696,
-	13728,
-	13760,
-	13792,
-	13824,
-	13856,
-	13888,
-	13920,
-	13952,
-	13984,
-	14016,
-	14048,
-	14080,
-	14112,
-	14144,
-	14176,
-	14208,
-	14240,
-	14272,
-	14304,
-	14336,
-	14368,
-	14400,
-	14432,
-	14464,
-	14496,
-	14528,
-	14560,
-	14592,
-	14624,
-	14656,
-	14688,
-	14720,
-	14752,
-	14784,
-	14816,
-	14848,
-	14880,
-	14912,
-	14944,
-	14976,
-	15008,
-	15040,
-	15072,
-	15104,
-	15136,
-	15168,
-	15200,
-	15232,
-	15264,
-	15296,
-	15328,
-	15360,
-	15392,
-	15424,
-	15456,
-	15488,
-	15520,
-	15552,
-	15584,
-	15616,
-	15648,
-	15680,
-	15712,
-	15744,
-	15776,
-	15808,
-	15840,
-	15872,
-	15904,
-	15936,
-	15968,
-	16000,
-	16032,
-	16064,
-	16096,
-	16128,
-	16160,
-	16192,
-	16224,
-	16256,
-	16288,
-	16320,
-	16352,
-	16384,
-	16416,
-	16448,
-	16480,
-	16512,
-	16544,
-	16576,
-	16608,
-	16640,
-	16672,
-	16704,
-	16736,
-	16768,
-	16800,
-	16832,
-	16864,
-	16896,
-	16928,
-	16960,
-	16992,
-	17024,
-	17056,
-	17088,
-	17120,
-	17152,
-	17184,
-	17216,
-	17248,
-	17280,
-	17312,
-	17344,
-	17376,
-	17408,
-	17440,
-	17472,
-	17504,
-	17536,
-	17568,
-	17600,
-	17632,
-	17664,
-	17696,
-	17728,
-	17760,
-	17792,
-	17824,
-	17856,
-	17888,
-	17920,
-	17952,
-	17984,
-	18016,
-	18048,
-	18080,
-	18112,
-	18144,
-	18176,
-	18208,
-	18240,
-	18272,
-	18304,
-	18336,
-	18368,
-	18400,
-	18432,
-	18464,
-	18496,
-	18528,
-	18560,
-	18592,
-	18624,
-	18656,
-	18688,
-	18720,
-	18752,
-	18784,
-	18816,
-	18848,
-	18880,
-	18912,
-	18944,
-	18976,
-	19008,
-	19040,
-	19072,
-	19104,
-	19136,
-	19168,
-	19200,
-	19232,
-	19264,
-	19296,
-	19328,
-	19360,
-	19392,
-	19424,
-	19456,
-	19488,
-	19520,
-	19552,
-	19584,
-	19616,
-	19648,
-	19680,
-	19712,
-	19744,
-	19776,
-	19808,
-	19840,
-	19872,
-	19904,
-	19936,
-	19968,
-	20000,
-	20032,
-	20064,
-	20096,
-	20128,
-	20160,
-	20192,
-	20224,
-	20256,
-	20288,
-	20320,
-	20352,
-	20384,
-	20416,
-	20448,
-	20480,
-	20512,
-	20544,
-	20576,
-	20608,
-	20640,
-	20672,
-	20704,
-	20736,
-	20768,
-	20800,
-	20832,
-	20864,
-	20896,
-	20928,
-	20960,
-	20992,
-	21024,
-	21056,
-	21088,
-	21120,
-	21152,
-	21184,
-	21216,
-	21248,
-	21280,
-	21312,
-	21344,
-	21376,
-	21408,
-	21440,
-	21472,
-	21504,
-	21536,
-	21568,
-	21600,
-	21632,
-	21664,
-	21696,
-	21728,
-	21760,
-	21792,
-	21824,
-	21856,
-	21888,
-	21920,
-	21952,
-	21984,
-	22016,
-	22048,
-	22080,
-	22112,
-	22144,
-	22176,
-	22208,
-	22240,
-	22272,
-	22304,
-	22336,
-	22368,
-	22400,
-	22432,
-	22464,
-	22496,
-	22528,
-	22560,
-	22592,
-	22624,
-	22656,
-	22688,
-	22720,
-	22752,
-	22784,
-	22816,
-	22848,
-	22880,
-	22912,
-	22944,
-	22976,
-	23008,
-	23040,
-	23072,
-	23104,
-	23136,
-	23168,
-	23200,
-	23232,
-	23264,
-	23296,
-	23328,
-	23360,
-	23392,
-	23424,
-	23456,
-	23488,
-	23520,
-	23552,
-	23584,
-	23616,
-	23648,
-	23680,
-	23712,
-	23744,
-	23776,
-	23808,
-	23840,
-	23872,
-	23904,
-	23936,
-	23968,
-	24000,
-	24032,
-	24064,
-	24096,
-	24128,
-	24160,
-	24192,
-	24224,
-	24256,
-	24288,
-	24320,
-	24352,
-	24384,
-	24416,
-	24448,
-	24480,
-	24512,
-	24544,
-	24576,
-	24608,
-	24640,
-	24672,
-	24704,
-	24736,
-	24768,
-	24800,
-	24832,
-	24864,
-	24896,
-	24928,
-	24960,
-	24992,
-	25024,
-	25056,
-	25088,
-	25120,
-	25152,
-	25184,
-	25216,
-	25248,
-	25280,
-	25312,
-	25344,
-	25376,
-	25408,
-	25440,
-	25472,
-	25504,
-	25536,
-	25568,
-	25600,
-	25632,
-	25664,
-	25696,
-	25728,
-	25760,
-	25792,
-	25824,
-	25856,
-	25888,
-	25920,
-	25952,
-	25984,
-	26016,
-	26048,
-	26080,
-	26112,
-	26144,
-	26176,
-	26208,
-	26240,
-	26272,
-	26304,
-	26336,
-	26368,
-	26400,
-	26432,
-	26464,
-	26496,
-	26528,
-	26560,
-	26592,
-	26624,
-	26656,
-	26688,
-	26720,
-	26752,
-	26784,
-	26816,
-	26848,
-	26880,
-	26912,
-	26944,
-	26976,
-	27008,
-	27040,
-	27072,
-	27104,
-	27136,
-	27168,
-	27200,
-	27232,
-	27264,
-	27296,
-	27328,
-	27360,
-	27392,
-	27424,
-	27456,
-	27488,
-	27520,
-	27552,
-	27584,
-	27616,
-	27648,
-	27680,
-	27712,
-	27744,
-	27776,
-	27808,
-	27840,
-	27872,
-	27904,
-	27936,
-	27968,
-	28000,
-	28032,
-	28064,
-	28096,
-	28128,
-	28160,
-	28192,
-	28224,
-	28256,
-	28288,
-	28320,
-	28352,
-	28384,
-	28416,
-	28448,
-	28480,
-	28512,
-	28544,
-	28576,
-	28608,
-	28640,
-	28672,
-	28704,
-	28736,
-	28768,
-	28800,
-	28832,
-	28864,
-	28896,
-	28928,
-	28960,
-	28992,
-	29024,
-	29056,
-	29088,
-	29120,
-	29152,
-	29184,
-	29216,
-	29248,
-	29280,
-	29312,
-	29344,
-	29376,
-	29408,
-	29440,
-	29472,
-	29504,
-	29536,
-	29568,
-	29600,
-	29632,
-	29664,
-	29696,
-	29728,
-	29760,
-	29792,
-	29824,
-	29856,
-	29888,
-	29920,
-	29952,
-	29984,
-	30016,
-	30048,
-	30080,
-	30112,
-	30144,
-	30176,
-	30208,
-	30240,
-	30272,
-	30304,
-	30336,
-	30368,
-	30400,
-	30432,
-	30464,
-	30496,
-	30528,
-	30560,
-	30592,
-	30624,
-	30656,
-	30688,
-	30720,
-	30752,
-	30784,
-	30816,
-	30848,
-	30880,
-	30912,
-	30944,
-	30976,
-	31008,
-	31040,
-	31072,
-	31104,
-	31136,
-	31168,
-	31200,
-	31232,
-	31264,
-	31296,
-	31328,
-	31360,
-	31392,
-	31424,
-	31456,
-	31488,
-	31520,
-	31552,
-	31584,
-	31616,
-	31648,
-	31680,
-	31712,
-	31744,
-	31776,
-	31808,
-	31840,
-	31872,
-	31904,
-	31936,
-	31968,
-	32000,
-	32032,
-	32064,
-	32096,
-	32128,
-	32160,
-	32192,
-	32224,
-	32256,
-	32288,
-	32320,
-	32352,
-	32384,
-	32416,
-	32448,
-	32480,
-	32512,
-	32544,
-	32576,
-	32608,
-	32640,
-	32672,
-	32704,
-	32736,
-	32768,
-	32800,
-	32832,
-	32864,
-	32896,
-	32928,
-	32960,
-	32992,
-	33024,
-	33056,
-	33088,
-	33120,
-	33152,
-	33184,
-	33216,
-	33248,
-	33280,
-	33312,
-	33344,
-	33376,
-	33408,
-	33440,
-	33472,
-	33504,
-	33536,
-	33568,
-	33600,
-	33632,
-	33664,
-	33696,
-	33728,
-	33760,
-	33792,
-	33824,
-	33856,
-	33888,
-	33920,
-	33952,
-	33984,
-	34016,
-	34048,
-	34080,
-	34112,
-	34144,
-	34176,
-	34208,
-	34240,
-	34272,
-	34304,
-	34336,
-	34368,
-	34400,
-	34432,
-	34464,
-	34496,
-	34528,
-	34560,
-	34592,
-	34624,
-	34656,
-	34688,
-	34720,
-	34752,
-	34784,
-	34816,
-	34848,
-	34880,
-	34912,
-	34944,
-	34976,
-	35008,
-	35040,
-	35072,
-	35104,
-	35136,
-	35168,
-	35200,
-	35232,
-	35264,
-	35296,
-	35328,
-	35360,
-	35392,
-	35424,
-	35456,
-	35488,
-	35520,
-	35552,
-	35584,
-	35616,
-	35648,
-	35680,
-	35712,
-	35744,
-	35776,
-	35808,
-	35840,
-	35872,
-	35904,
-	35936,
-	35968,
-	36000,
-	36032,
-	36064,
-	36096,
-	36128,
-	36160,
-	36192,
-	36224,
-	36256,
-	36288,
-	36320,
-	36352,
-	36384,
-	36416,
-	36448,
-	36480,
-	36512,
-	36544,
-	36576,
-	36608,
-	36640,
-	36672,
-	36704,
-	36736,
-	36768,
-	36800,
-	36832,
-	36864,
-	36896,
-	36928,
-	36960,
-	36992,
-	37024,
-	37056,
-	37088,
-	37120,
-	37152,
-	37184,
-	37216,
-	37248,
-	37280,
-	37312,
-	37344,
-	37376,
-	37408,
-	37440,
-	37472,
-	37504,
-	37536,
-	37568,
-	37600,
-	37632,
-	37664,
-	37696,
-	37728,
-	37760,
-	37792,
-	37824,
-	37856,
-	37888,
-	37920,
-	37952,
-	37984,
-	38016,
-	38048,
-	38080,
-	38112,
-	38144,
-	38176,
-	38208,
-	38240,
-	38272,
-	38304,
-	38336,
-	38368,
-	38400,
-	38432,
-	38464,
-	38496,
-	38528,
-	38560,
-	38592,
-	38624,
-	38656,
-	38688,
-	38720,
-	38752,
-	38784,
-	38816,
-	38848,
-	38880,
-	38912,
-	38944,
-	38976,
-	39008,
-	39040,
-	39072,
-	39104,
-	39136,
-	39168,
-	39200,
-	39232,
-	39264,
-	39296,
-	39328,
-	39360,
-	39392,
-	39424,
-	39456,
-	39488,
-	39520,
-	39552,
-	39584,
-	39616,
-	39648,
-	39680,
-	39712,
-	39744,
-	39776,
-	39808,
-	39840,
-	39872,
-	39904,
-	39936,
-	39968,
-	40000,
-	40032,
-	40064,
-	40096,
-	40128,
-	40160,
-	40192,
-	40224,
-	40256,
-	40288,
-	40320,
-	40352,
-	40384,
-	40416,
-	40448,
-	40480,
-	40512,
-	40544,
-	40576,
-	40608,
-	40640,
-	40672,
-	40704,
-	40736,
-	40768,
-	40800,
-	40832,
-	40864,
-	40896,
-	40928,
-	40960,
-	40992,
-	41024,
-	41056,
-	41088,
-	41120,
-	41152,
-	41184,
-	41216,
-	41248,
-	41280,
-	41312,
-	41344,
-	41376,
-	41408,
-	41440,
-	41472,
-	41504,
-	41536,
-	41568,
-	41600,
-	41632,
-	41664,
-	41696,
-	41728,
-	41760,
-	41792,
-	41824,
-	41856,
-	41888,
-	41920,
-	41952,
-	41984,
-	42016,
-	42048,
-	42080,
-	42112,
-	42144,
-	42176,
-	42208,
-	42240,
-	42272,
-	42304,
-	42336,
-	42368,
-	42400,
-	42432,
-	42464,
-	42496,
-	42528,
-	42560,
-	42592,
-	42624,
-	42656,
-	42688,
-	42720,
-	42752,
-	42784,
-	42816,
-	42848,
-	42880,
-	42912,
-	42944,
-	42976,
-	43008,
-	43040,
-	43072,
-	43104,
-	43136,
-	43168,
-	43200,
-	43232,
-	43264,
-	43296,
-	43328,
-	43360,
-	43392,
-	43424,
-	43456,
-	43488,
-	43520,
-	43552,
-	43584,
-	43616,
-	43648,
-	43680,
-	43712,
-	43744,
-	43776,
-	43808,
-	43840,
-	43872,
-	43904,
-	43936,
-	43968,
-	44000,
-	44032,
-	44064,
-	44096,
-	44128,
-	44160,
-	44192,
-	44224,
-	44256,
-	44288,
-	44320,
-	44352,
-	44384,
-	44416,
-	44448,
-	44480,
-	44512,
-	44544,
-	44576,
-	44608,
-	44640,
-	44672,
-	44704,
-	44736,
-	44768,
-	44800,
-	44832,
-	44864,
-	44896,
-	44928,
-	44960,
-	44992,
-	45024,
-	45056,
-	45088,
-	45120,
-	45152,
-	45184,
-	45216,
-	45248,
-	45280,
-	45312,
-	45344,
-	45376,
-	45408,
-	45440,
-	45472,
-	45504,
-	45536,
-	45568,
-	45600,
-	45632,
-	45664,
-	45696,
-	45728,
-	45760,
-	45792,
-	45824,
-	45856,
-	45888,
-	45920,
-	45952,
-	45984,
-	46016,
-	46048,
-	46080,
-	46112,
-	46144,
-	46176,
-	46208,
-	46240,
-	46272,
-	46304,
-	46336,
-	46368,
-	46400,
-	46432,
-	46464,
-	46496,
-	46528,
-	46560,
-	46592,
-	46624,
-	46656,
-	46688,
-	46720,
-	46752,
-	46784,
-	46816,
-	46848,
-	46880,
-	46912,
-	46944,
-	46976,
-	47008,
-	47040,
-	47072,
-	47104,
-	47136,
-	47168,
-	47200,
-	47232,
-	47264,
-	47296,
-	47328,
-	47360,
-	47392,
-	47424,
-	47456,
-	47488,
-	47520,
-	47552,
-	47584,
-	47616,
-	47648,
-	47680,
-	47712,
-	47744,
-	47776,
-	47808,
-	47840,
-	47872,
-	47904,
-	47936,
-	47968,
-	48000,
-	48032,
-	48064,
-	48096,
-	48128,
-	48160,
-	48192,
-	48224,
-	48256,
-	48288,
-	48320,
-	48352,
-	48384,
-	48416,
-	48448,
-	48480,
-	48512,
-	48544,
-	48576,
-	48608,
-	48640,
-	48672,
-	48704,
-	48736,
-	48768,
-	48800,
-	48832,
-	48864,
-	48896,
-	48928,
-	48960,
-	48992,
-	49024,
-	49056,
-	49088,
-	49120,
-	49152,
-	49184,
-	49216,
-	49248,
-	49280,
-	49312,
-	49344,
-	49376,
-	49408,
-	49440,
-	49472,
-	49504,
-	49536,
-	49568,
-	49600,
-	49632,
-	49664,
-	49696,
-	49728,
-	49760,
-	49792,
-	49824,
-	49856,
-	49888,
-	49920,
-	49952,
-	49984,
-	50016,
-	50048,
-	50080,
-	50112,
-	50144,
-	50176,
-	50208,
-	50240,
-	50272,
-	50304,
-	50336,
-	50368,
-	50400,
-	50432,
-	50464,
-	50496,
-	50528,
-	50560,
-	50592,
-	50624,
-	50656,
-	50688,
-	50720,
-	50752,
-	50784,
-	50816,
-	50848,
-	50880,
-	50912,
-	50944,
-	50976,
-	51008,
-	51040,
-	51072,
-	51104,
-	51136,
-	51168,
-	51200,
-	51232,
-	51264,
-	51296,
-	51328,
-	51360,
-	51392,
-	51424,
-	51456,
-	51488,
-	51520,
-	51552,
-	51584,
-	51616,
-	51648,
-	51680,
-	51712,
-	51744,
-	51776,
-	51808,
-	51840,
-	51872,
-	51904,
-	51936,
-	51968,
-	52000,
-	52032,
-	52064,
-	52096,
-	52128,
-	52160,
-	52192,
-	52224,
-	52256,
-	52288,
-	52320,
-	52352,
-	52384,
-	52416,
-	52448,
-	52480,
-	52512,
-	52544,
-	52576,
-	52608,
-	52640,
-	52672,
-	52704,
-	52736,
-	52768,
-	52800,
-	52832,
-	52864,
-	52896,
-	52928,
-	52960,
-	52992,
-	53024,
-	53056,
-	53088,
-	53120,
-	53152,
-	53184,
-	53216,
-	53248,
-	53280,
-	53312,
-	53344,
-	53376,
-	53408,
-	53440,
-	53472,
-	53504,
-	53536,
-	53568,
-	53600,
-	53632,
-	53664,
-	53696,
-	53728,
-	53760,
-	53792,
-	53824,
-	53856,
-	53888,
-	53920,
-	53952,
-	53984,
-	54016,
-	54048,
-	54080,
-	54112,
-	54144,
-	54176,
-	54208,
-	54240,
-	54272,
-	54304,
-	54336,
-	54368,
-	54400,
-	54432,
-	54464,
-	54496,
-	54528,
-	54560,
-	54592,
-	54624,
-	54656,
-	54688,
-	54720,
-	54752,
-	54784,
-	54816,
-	54848,
-	54880,
-	54912,
-	54944,
-	54976,
-	55008,
-	55040,
-	55072,
-	55104,
-	55136,
-	55168,
-	55200,
-	55232,
-	55264,
-	55296,
-	55328,
-	55360,
-	55392,
-	55424,
-	55456,
-	55488,
-	55520,
-	55552,
-	55584,
-	55616,
-	55648,
-	55680,
-	55712,
-	55744,
-	55776,
-	55808,
-	55840,
-	55872,
-	55904,
-	55936,
-	55968,
-	56000,
-	56032,
-	56064,
-	56096,
-	56128,
-	56160,
-	56192,
-	56224,
-	56256,
-	56288,
-	56320,
-	56352,
-	56384,
-	56416,
-	56448,
-	56480,
-	56512,
-	56544,
-	56576,
-	56608,
-	56640,
-	56672,
-	56704,
-	56736,
-	56768,
-	56800,
-	56832,
-	56864,
-	56896,
-	56928,
-	56960,
-	56992,
-	57024,
-	57056,
-	57088,
-	57120,
-	57152,
-	57184,
-	57216,
-	57248,
-	57280,
-	57312,
-	57344,
-	57376,
-	57408,
-	57440,
-	57472,
-	57504,
-	57536,
-	57568,
-	57600,
-	57632,
-	57664,
-	57696,
-	57728,
-	57760,
-	57792,
-	57824,
-	57856,
-	57888,
-	57920,
-	57952,
-	57984,
-	58016,
-	58048,
-	58080,
-	58112,
-	58144,
-	58176,
-	58208,
-	58240,
-	58272,
-	58304,
-	58336,
-	58368,
-	58400,
-	58432,
-	58464,
-	58496,
-	58528,
-	58560,
-	58592,
-	58624,
-	58656,
-	58688,
-	58720,
-	58752,
-	58784,
-	58816,
-	58848,
-	58880,
-	58912,
-	58944,
-	58976,
-	59008,
-	59040,
-	59072,
-	59104,
-	59136,
-	59168,
-	59200,
-	59232,
-	59264,
-	59296,
-	59328,
-	59360,
-	59392,
-	59424,
-	59456,
-	59488,
-	59520,
-	59552,
-	59584,
-	59616,
-	59648,
-	59680,
-	59712,
-	59744,
-	59776,
-	59808,
-	59840,
-	59872,
-	59904,
-	59936,
-	59968,
-	60000,
-	60032,
-	60064,
-	60096,
-	60128,
-	60160,
-	60192,
-	60224,
-	60256,
-	60288,
-	60320,
-	60352,
-	60384,
-	60416,
-	60448,
-	60480,
-	60512,
-	60544,
-	60576,
-	60608,
-	60640,
-	60672,
-	60704,
-	60736,
-	60768,
-	60800,
-	60832,
-	60864,
-	60896,
-	60928,
-	60960,
-	60992,
-	61024,
-	61056,
-	61088,
-	61120,
-	61152,
-	61184,
-	61216,
-	61248,
-	61280,
-	61312,
-	61344,
-	61376,
-	61408,
-	61440,
-	61472,
-	61504,
-	61536,
-	61568,
-	61600,
-	61632,
-	61664,
-	61696,
-	61728,
-	61760,
-	61792,
-	61824,
-	61856,
-	61888,
-	61920,
-	61952,
-	61984,
-	62016,
-	62048,
-	62080,
-	62112,
-	62144,
-	62176,
-	62208,
-	62240,
-	62272,
-	62304,
-	62336,
-	62368,
-	62400,
-	62432,
-	62464,
-	62496,
-	62528,
-	62560,
-	62592,
-	62624,
-	62656,
-	62688,
-	62720,
-	62752,
-	62784,
-	62816,
-	62848,
-	62880,
-	62912,
-	62944,
-	62976,
-	63008,
-	63040,
-	63072,
-	63104,
-	63136,
-	63168,
-	63200,
-	63232,
-	63264,
-	63296,
-	63328,
-	63360,
-	63392,
-	63424,
-	63456,
-	63488,
-	63520,
-	63552,
-	63584,
-	63616,
-	63648,
-	63680,
-	63712,
-	63744,
-	63776,
-	63808,
-	63840,
-	63872,
-	63904,
-	63936,
-	63968,
-	64000,
-	64032,
-	64064,
-	64096,
-	64128,
-	64160,
-	64192,
-	64224,
-	64256,
-	64288,
-	64320,
-	64352,
-	64384,
-	64416,
-	64448,
-	64480,
-	64512,
-	64544,
-	64576,
-	64608,
-	64640,
-	64672,
-	64704,
-	64736,
-	64768,
-	64800,
-	64832,
-	64864,
-	64896,
-	64928,
-	64960,
-	64992,
-	65024,
-	65056,
-	65088,
-	65120,
-	65152,
-	65184,
-	65216,
-	65248,
-	65280,
-	65312,
-	65344,
-	65376,
-	65408,
-	65440,
-	65472,
-	65504,
-	65536,
-	65568,
-	65600,
-	65632,
-	65664,
-	65696,
-	65728,
-	65760,
-	65792,
-	65824,
-	65856,
-	65888,
-	65920,
-	65952,
-	65984,
-	66016,
-	66048,
-	66080,
-	66112,
-	66144,
-	66176,
-	66208,
-	66240,
-	66272,
-	66304,
-	66336,
-	66368,
-	66400,
-	66432,
-	66464,
-	66496,
-	66528,
-	66560,
-	66592,
-	66624,
-	66656,
-	66688,
-	66720,
-	66752,
-	66784,
-	66816,
-	66848,
-	66880,
-	66912,
-	66944,
-	66976,
-	67008,
-	67040,
-	67072,
-	67104,
-	67136,
-	67168,
-	67200,
-	67232,
-	67264,
-	67296,
-	67328,
-	67360,
-	67392,
-	67424,
-	67456,
-	67488,
-	67520,
-	67552,
-	67584,
-	67616,
-	67648,
-	67680,
-	67712,
-	67744,
-	67776,
-	67808,
-	67840,
-	67872,
-	67904,
-	67936,
-	67968,
-	68000,
-	68032,
-	68064,
-	68096,
-	68128,
-	68160,
-	68192,
-	68224,
-	68256,
-	68288,
-	68320,
-	68352,
-	68384,
-	68416,
-	68448,
-	68480,
-	68512,
-	68544,
-	68576,
-	68608,
-	68640,
-	68672,
-	68704,
-	68736,
-	68768,
-	68800,
-	68832,
-	68864,
-	68896,
-	68928,
-	68960,
-	68992,
-	69024,
-	69056,
-	69088,
-	69120,
-	69152,
-	69184,
-	69216,
-	69248,
-	69280,
-	69312,
-	69344,
-	69376,
-	69408,
-	69440,
-	69472,
-	69504,
-	69536,
-	69568,
-	69600,
-	69632,
-	69664,
-	69696,
-	69728,
-	69760,
-	69792,
-	69824,
-	69856,
-	69888,
-	69920,
-	69952,
-	69984,
-	70016,
-	70048,
-	70080,
-	70112,
-	70144,
-	70176,
-	70208,
-	70240,
-	70272,
-	70304,
-	70336,
-	70368,
-	70400,
-	70432,
-	70464,
-	70496,
-	70528,
-	70560,
-	70592,
-	70624,
-	70656,
-	70688,
-	70720,
-	70752,
-	70784,
-	70816,
-	70848,
-	70880,
-	70912,
-	70944,
-	70976,
-	71008,
-	71040,
-	71072,
-	71104,
-	71136,
-	71168,
-	71200,
-	71232,
-	71264,
-	71296,
-	71328,
-	71360,
-	71392,
-	71424,
-	71456,
-	71488,
-	71520,
-	71552,
-	71584,
-	71616,
-	71648,
-	71680,
-	71712,
-	71744,
-	71776,
-	71808,
-	71840,
-	71872,
-	71904,
-	71936,
-	71968,
-	72000,
-	72032,
-	72064,
-	72096,
-	72128,
-	72160,
-	72192,
-	72224,
-	72256,
-	72288,
-	72320,
-	72352,
-	72384,
-	72416,
-	72448,
-	72480,
-	72512,
-	72544,
-	72576,
-	72608,
-	72640,
-	72672,
-	72704,
-	72736,
-	72768,
-	72800,
-	72832,
-	72864,
-	72896,
-	72928,
-	72960,
-	72992,
-	73024,
-	73056,
-	73088,
-	73120,
-	73152,
-	73184,
-	73216,
-	73248,
-	73280,
-	73312,
-	73344,
-	73376,
-	73408,
-	73440,
-	73472,
-	73504,
-	73536,
-	73568,
-	73600,
-	73632,
-	73664,
-	73696,
-	73728,
-	73760,
-	73792,
-	73824,
-	73856,
-	73888,
-	73920,
-	73952,
-	73984,
-	74016,
-	74048,
-	74080,
-	74112,
-	74144,
-	74176,
-	74208,
-	74240,
-	74272,
-	74304,
-	74336,
-	74368,
-	74400,
-	74432,
-	74464,
-	74496,
-	74528,
-	74560,
-	74592,
-	74624,
-	74656,
-	74688,
-	74720,
-	74752,
-	74784,
-	74816,
-	74848,
-	74880,
-	74912,
-	74944,
-	74976,
-	75008,
-	75040,
-	75072,
-	75104,
-	75136,
-	75168,
-	75200,
-	75232,
-	75264,
-	75296,
-	75328,
-	75360,
-	75392,
-	75424,
-	75456,
-	75488,
-	75520,
-	75552,
-	75584,
-	75616,
-	75648,
-	75680,
-	75712,
-	75744,
-	75776,
-	75808,
-	75840,
-	75872,
-	75904,
-	75936,
-	75968,
-	76000,
-	76032,
-	76064,
-	76096,
-	76128,
-	76160,
-	76192,
-	76224,
-	76256,
-	76288,
-	76320,
-	76352,
-	76384,
-	76416,
-	76448,
-	76480,
-	76512,
-	76544,
-	76576,
-	76608,
-	76640,
-	76672,
-	76704,
-	76736,
-	76768,
-	76800,
-	76832,
-	76864,
-	76896,
-	76928,
-	76960,
-	76992,
-	77024,
-	77056,
-	77088,
-	77120,
-	77152,
-	77184,
-	77216,
-	77248,
-	77280,
-	77312,
-	77344,
-	77376,
-	77408,
-	77440,
-	77472,
-	77504,
-	77536,
-	77568,
-	77600,
-	77632,
-	77664,
-	77696,
-	77728,
-	77760,
-	77792,
-	77824,
-	77856,
-	77888,
-	77920,
-	77952,
-	77984,
-	78016,
-	78048,
-	78080,
-	78112,
-	78144,
-	78176,
-	78208,
-	78240,
-	78272,
-	78304,
-	78336,
-	78368,
-	78400,
-	78432,
-	78464,
-	78496,
-	78528,
-	78560,
-	78592,
-	78624,
-	78656,
-	78688,
-	78720,
-	78752,
-	78784,
-	78816,
-	78848,
-	78880,
-	78912,
-	78944,
-	78976,
-	79008,
-	79040,
-	79072,
-	79104,
-	79136,
-	79168,
-	79200,
-	79232,
-	79264,
-	79296,
-	79328,
-	79360,
-	79392,
-	79424,
-	79456,
-	79488,
-	79520,
-	79552,
-	79584,
-	79616,
-	79648,
-	79680,
-	79712,
-	79744,
-	79776,
-	79808,
-	79840,
-	79872,
-	79904,
-	79936,
-	79968,
-	80000,
-	80032,
-	80064,
-	80096,
-	80128,
-	80160,
-	80192,
-	80224,
-	80256,
-	80288,
-	80320,
-	80352,
-	80384,
-	80416,
-	80448,
-	80480,
-	80512,
-	80544,
-	80576,
-	80608,
-	80640,
-	80672,
-	80704,
-	80736,
-	80768,
-	80800,
-	80832,
-	80864,
-	80896,
-	80928,
-	80960,
-	80992,
-	81024,
-	81056,
-	81088,
-	81120,
-	81152,
-	81184,
-	81216,
-	81248,
-	81280,
-	81312,
-	81344,
-	81376,
-	81408,
-	81440,
-	81472,
-	81504,
-	81536,
-	81568,
-	81600,
-	81632,
-	81664,
-	81696,
-	81728,
-	81760,
-	81792,
-	81824,
-	81856,
-	81888,
-	81920,
-};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1telemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1telemipiraw_Sensor.c
deleted file mode 100755
index 09ca8227..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1telemipiraw_Sensor.c
+++ /dev/null
@@ -1,4985 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 zhuquec1telemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "zhuquec1telemipiraw_Sensor.h"
-
-#define SENSOR_NAME  SENSOR_DRVNAME_ZHUQUEC1TELE_MIPI_RAW
-#define PFX "zhuquec1tele_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-#define ZHUQUEC1TELE_EEPROM_READ_ID     (0xA1)
-#define ZHUQUEC1TELE_EEPROM_WRITE_ID    (0xA0)
-
-#define OTP_SIZE    (0x8000)
-#define ZHUQUEC1TELE_UNIQUE_SENSOR_ID_ADDR 0x0A24
-#define ZHUQUEC1TELE_UNIQUE_SENSOR_ID_LENGTH 6
-
-// static BYTE zhuquec1tele_unique_id[ZHUQUEC1TELE_UNIQUE_SENSOR_ID_LENGTH] = { 0 };
-#ifdef  EEPROM_WRITE_DATA_MAX_LENGTH
-#undef  EEPROM_WRITE_DATA_MAX_LENGTH
-#endif
-#define EEPROM_WRITE_DATA_MAX_LENGTH      (64)
-#define ZHUQUEC1TELE_STEREO_MT_START_ADDR  (0x22C0)
-#define ZHUQUEC1TELE_STEREO_MT105_START_ADDR  (0x2640)
-#define ZHUQUEC1TELE_AESYNC_START_ADDR     (0x2290)
-#define ZHUQUEC1TELE_EEPROM_LOCK_REGISTER  (0xA000)
-#define FRAME_FRAMEDURATION_MS             (33)
-static u16 module_flag = 0;
-static bool bNeedSetNormalMode = FALSE;
-static u8 bRmscMode = 0;
-static kal_uint8 otp_data_checksum[OTP_SIZE] = {0};
-
-#define MAX_BURST_LEN  2048
-static u8 * msg_buf = NULL;
-static int group_hold_frame_count = 0;
-
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-static int zhuquec1tele_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_set_test_pattern_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_get_eeprom_comdata(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int get_sensor_temperature(void *arg);
-
-static void zhuquec1tele_set_gain_convert(struct subdrv_ctx *ctx, u32 gain);
-static int zhuquec1tele_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1tele_set_multi_gain(struct subdrv_ctx *ctx, u32 *gains, u16 exp_cnt);
-static void zhuquec1tele_set_hdr_tri_gain(struct subdrv_ctx *ctx, u64 *gains, u16 exp_cnt);
-static int zhuquec1tele_set_hdr_tri_gain2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_set_hdr_tri_gain3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static void zhuquec1tele_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter);
-static int zhuquec1tele_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1tele_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length);
-static void zhuquec1tele_set_multi_shutter_frame_length(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt, u16 frame_length);
-static int zhuquec1tele_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_set_video_mode(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-// static int zhuquec1tele_set_sensor_rmsc_mode(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_i2c_burst_wr_regs_u16(struct subdrv_ctx *ctx, u16 * list, u32 len);
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx,
-		u16 addr, u16 *list, u32 len);
-static void zhuquec1tele_lens_pos_writeback(struct subdrv_ctx *ctx);
-static int zhuquec1tele_set_register(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1tele_get_register(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-
-static bool g_id_from_dts_flag = false;
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id);
-// static int zhuquec1tele_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-// static int zhuquec1tele_get_cloud_otp_info(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-// static int zhuquec1tele_set_af_code_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1tele_set_multi_shutter_frame_length_in_lut_convert(struct subdrv_ctx *ctx,
-	u64 *shutters, u16 exp_cnt, u32 frame_length, u32 *frame_length_in_lut);
-static int zhuquec1tele_set_multi_shutter_frame_length_in_lut(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1tele_write_frame_length_in_lut(struct subdrv_ctx *ctx, u32 fll, u32 *fll_in_lut);
-static void zhuquec1tele_set_max_framerate_in_lut_by_scenario(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id, u32 framerate);
-/* STRUCT */
-
-// static struct oplus_get_eeprom_common_data zhuquec1tele_eeprom_common_data = {0};
-static kal_uint16 g_af_code_macro    = 0;
-static kal_uint16 g_af_code_infinity = 0;
-// static kal_uint16 g_af_code_middle   = 0;
-
-static struct eeprom_map_info zhuquec1tele_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8, 23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0, 0, 0, 0, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, 0, 0, 0, 0, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, ZHUQUEC1TELE_STEREO_MT_START_ADDR, 0, 0, CALI_DATA_SLAVE_TELE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, ZHUQUEC1TELE_STEREO_MT105_START_ADDR, 0, 0, CALI_DATA_SLAVE_TELE_LENGTH, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, zhuquec1tele_set_test_pattern},
-	{SENSOR_FEATURE_SET_TEST_PATTERN_DATA, zhuquec1tele_set_test_pattern_data},
-	{SENSOR_FEATURE_SEAMLESS_SWITCH, zhuquec1tele_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, zhuquec1tele_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, zhuquec1tele_get_eeprom_comdata},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, zhuquec1tele_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, zhuquec1tele_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, zhuquec1tele_get_otp_checksum_data},
-	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, zhuquec1tele_streaming_suspend},
-	{SENSOR_FEATURE_SET_STREAMING_RESUME, zhuquec1tele_streaming_resume},
-	{SENSOR_FEATURE_SET_GAIN, zhuquec1tele_set_gain},
-	{SENSOR_FEATURE_SET_DUAL_GAIN, zhuquec1tele_set_hdr_tri_gain2},
-	{SENSOR_FEATURE_SET_HDR_TRI_GAIN, zhuquec1tele_set_hdr_tri_gain3},
-	{SENSOR_FEATURE_SET_ESHUTTER, zhuquec1tele_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, zhuquec1tele_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_HDR_SHUTTER, zhuquec1tele_set_hdr_tri_shutter2},
-	{SENSOR_FEATURE_SET_HDR_TRI_SHUTTER, zhuquec1tele_set_hdr_tri_shutter3},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, zhuquec1tele_set_multi_shutter_frame_length_ctrl},
-	{SENSOR_FEATURE_SET_MAX_FRAME_RATE_BY_SCENARIO, zhuquec1tele_set_max_framerate_by_scenario},
-	{SENSOR_FEATURE_SET_SEAMLESS_EXTEND_FRAME_LENGTH, zhuquec1tele_extend_frame_length},
-	{SENSOR_FEATURE_SET_VIDEO_MODE, zhuquec1tele_set_video_mode},
-	// {SENSOR_FEATURE_SET_SENSOR_RMSC_MODE, zhuquec1tele_set_sensor_rmsc_mode},
-	{SENSOR_FEATURE_SET_AWB_GAIN, zhuquec1tele_set_awb_gain},
-	{SENSOR_FEATURE_SET_REGISTER, zhuquec1tele_set_register},
-	{SENSOR_FEATURE_GET_REGISTER, zhuquec1tele_get_register},
-	// {SENSOR_FEATURE_GET_UNIQUE_SENSORID, zhuquec1tele_get_unique_sensorid},
-	// {SENSOR_FEATURE_GET_CLOUD_OTP_INFO, zhuquec1tele_get_cloud_otp_info},
-	// {SENSOR_FEATURE_SET_AF_CODE_DATA, zhuquec1tele_set_af_code_data},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME_IN_LUT, zhuquec1tele_set_multi_shutter_frame_length_in_lut},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x00C6010D,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = 0xA0,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 384}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {416, 618}, {416, 618}, {0, 0}, {0, 0},
-		/*     */
-		{0, 0}, {416, 312}, {0, 0}, {0, 512}, {0, 0}
-	},
-	.iMirrorFlip = IMAGE_V_MIRROR,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 192},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 192}, {0, 192}, {0, 192}, {0, 0}, {0, 0},
-		/*      */
-		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*   */
-		{0, 0}, {0, 0}
-	},
-	.iMirrorFlip = IMAGE_V_MIRROR,
-	.i4FullRawW = 2048,
-	.i4FullRawH = 1536,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 2,
-		.i4BinFacY = 4,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_full = {
-	.i4OffsetX = 0,
-	.i4OffsetY = 0,
-	.i4PitchX = 0,
-	.i4PitchY = 0,
-	.i4PairNum = 0,
-	.i4SubBlkW = 0,
-	.i4SubBlkH = 0,
-	.i4PosL = {{0, 0} },
-	.i4PosR = {{0, 0} },
-	.i4BlockNumX = 0,
-	.i4BlockNumY = 0,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0},
-		/*      */
-		{0, 0}, {0, 0}, {0, 0}, {0, 0}, {2048, 1536},
-		/*   */
-		{0, 0}, {0, 0}, {2048, 1920}
-	},
-	.iMirrorFlip = IMAGE_V_MIRROR,
-	.i4FullRawW = 8192,
-	.i4FullRawH = 6144,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-	.i4ModeIndex = 0x3,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 1,//all-pd
-		.i4BinFacX = 4,
-		.i4BinFacY = 8,
-		.i4PDRepetition = 0,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus3[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 8192,
-			.vsize = 6144,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus4[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus5[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus6[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus7[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus8[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus9[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus10[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1536,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus11[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 2048,
-			.vsize = 1152,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus12[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 1836,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 3264,
-			.vsize = 458,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus13[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 1836,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 3264,
-			.vsize = 458,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus14[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus15[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 384,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus16[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 680,
-			.vsize = 512,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus17[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3264,
-			.vsize = 2448,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 3264,
-			.vsize = 612,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus18[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 2048,
-			.vsize = 288,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus19[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2048,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_ONLY_ONE,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 512,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus20[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_ME,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x30,
-			.hsize = 4096,
-			.vsize = 768,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-		},
-	},
-};
-// #define CTLE_LEVEL 2
-
-
-static struct subdrv_mode_struct mode_struct[] = {
-	{/* mode0 4sum12.5Mp_30FPS_4096x3072*/
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = zhuquec1tele_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_preview_capture_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = zhuquec1tele_bining_12_5M_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(zhuquec1tele_bining_12_5M_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 71,
-		},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* mode1 4sum12.5Mp_30FPS_4096x3072*/
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = zhuquec1tele_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_preview_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* mode2 4sum4k_30FPS_4096x2304*/
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = zhuquec1tele_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_normal_video_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = zhuquec1tele_bining_4k_30fps_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(zhuquec1tele_bining_4k_30fps_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK | HDR_RAW_STAGGER_1EXP_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* mode3 4sum4k_60FPS_4096x2304*/
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = zhuquec1tele_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 60,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* mode4 4sum2bin_120FPS_2048x1152*/
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = zhuquec1tele_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 1602,
-		.max_framerate = 1200,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* mode5 4sum12.5Mp_24FPS_4096x3072*/
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = zhuquec1tele_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 8008,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* mode6 4sum2bin_24FPS_2048x1536*/
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = zhuquec1tele_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom2_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4852,
-		.framelength = 7896,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* mode7 full50Mp_15FPS_8192x6144_remosaicON*/
-		.frame_desc = frame_desc_cus3,
-		.num_entries = ARRAY_SIZE(frame_desc_cus3),
-		.mode_setting_table = zhuquec1tele_custom3_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom3_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9600,
-		.framelength = 6346,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 902400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 16,
-		.exposure_margin = 48,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 8192,
-			.scale_h = 6144,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 8192,
-			.h1_size = 6144,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 8192,
-			.h2_tg_size = 6144,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = RMSC_MASK,
-			.equivalent_fps = 15,
-			.sensorScenario = SENSOR_SCENARIO_FULL_NCELL,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/* mode8 4sum4k_30FPS_4096x2304_2expSHDR*/
-		.frame_desc = frame_desc_cus4,
-		.num_entries = ARRAY_SIZE(frame_desc_cus4),
-		.mode_setting_table = zhuquec1tele_custom4_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom4_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_STAGGER,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 6064,
-		.framelength = 2514,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1324800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 8,
-		.exposure_margin = 24,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 80,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-	},
-	{/* mode9 fullcrop12.5Mp_30FPS_4096x3072_remosaicON*/
-		.frame_desc = frame_desc_cus5,
-		.num_entries = ARRAY_SIZE(frame_desc_cus5),
-		.mode_setting_table = zhuquec1tele_custom5_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom5_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 16,
-		.exposure_margin = 48,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = INSENSORZOOM_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_CROP_2X_NCELL,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/* mode10 4sum2bin_30FPS_2048x1152*/
-		.frame_desc = frame_desc_cus6,
-		.num_entries = ARRAY_SIZE(frame_desc_cus6),
-		.mode_setting_table = zhuquec1tele_custom6_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom6_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* mode11 4sum2bin_240FPS_2048x1152*/
-		.frame_desc = frame_desc_cus7,
-		.num_entries = ARRAY_SIZE(frame_desc_cus7),
-		.mode_setting_table = zhuquec1tele_custom7_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom7_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 2944,
-		.framelength = 1302,
-		.max_framerate = 2400,
-		.mipi_pixel_rate = 796800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* mode12 4sumFHD_30FPS_2048x1152_2expSHDR*/
-		.frame_desc = frame_desc_cus8,
-		.num_entries = ARRAY_SIZE(frame_desc_cus8),
-		.mode_setting_table = zhuquec1tele_custom8_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom8_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_STAGGER,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 6000,
-		.framelength = 5110,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1324800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 16,
-		.exposure_margin = 24,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 80,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-	},
-	{/* mode13 4sum2bin_30FPS_2048x1536*/
-		.frame_desc = frame_desc_cus9,
-		.num_entries = ARRAY_SIZE(frame_desc_cus9),
-		.mode_setting_table = zhuquec1tele_custom9_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom9_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* mode14 4sum2bin_15FPS_2048x1536*/
-		.frame_desc = frame_desc_cus10,
-		.num_entries = ARRAY_SIZE(frame_desc_cus10),
-		.mode_setting_table = zhuquec1tele_custom10_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom10_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 12816,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 2048,
-			.scale_h = 1536,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1536,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1536,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* mode15 4sum2bin_15FPS_2048x1152*/
-		.frame_desc = frame_desc_cus11,
-		.num_entries = ARRAY_SIZE(frame_desc_cus11),
-		.mode_setting_table = zhuquec1tele_custom11_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom11_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4852,
-		.framelength = 12640,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 668800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 2048,
-			.h1_size = 1152,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 2048,
-			.h2_tg_size = 1152,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_v2h2,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* mode16 4sum4k_30FPS_3264x1836 */
-		.frame_desc = frame_desc_cus12,
-		.num_entries = ARRAY_SIZE(frame_desc_cus12),
-		.mode_setting_table = zhuquec1tele_custom12_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom12_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4848,
-		.framelength = 6309,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 416,
-			.y1_offset = 234,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* mode17 4sum4k_15FPS_3264x1836 */
-		.frame_desc = frame_desc_cus13,
-		.num_entries = ARRAY_SIZE(frame_desc_cus13),
-		.mode_setting_table = zhuquec1tele_custom13_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom13_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4848,
-		.framelength = 12640,
-		.max_framerate = 150,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 416,
-			.y1_offset = 234,
-			.w1_size = 3264,
-			.h1_size = 1836,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 1836,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* mode18 4sum12.5M_30FPS_4096x3072_2expSHDR*/
-		.frame_desc = frame_desc_cus14,
-		.num_entries = ARRAY_SIZE(frame_desc_cus14),
-		.mode_setting_table = zhuquec1tele_custom14_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom14_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_RAW_STAGGER,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1324800000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 8,
-		.exposure_margin = 24,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 71,
-		},
-		.ana_gain_max = BASEGAIN * 80,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-	},
-	{/* mode19 fullcrop12.5Mp_30FPS_4096x3072_remosaic0ff*/
-		.frame_desc = frame_desc_cus15,
-		.num_entries = ARRAY_SIZE(frame_desc_cus15),
-		.mode_setting_table = zhuquec1tele_custom15_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom15_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = zhuquec1tele_izoom_qbc_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(zhuquec1tele_izoom_qbc_seamless_setting),
-		.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_B,
-		.pdc_enabled = TRUE,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 16,
-		.exposure_margin = 48,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1536,
-			.w0_size = 8192,
-			.h0_size = 3072,
-			.scale_w = 8192,
-			.scale_h = 3072,
-			.x1_offset = 2048,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = INSENSORZOOM_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_CROP_2X_NCELL,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-	},
-	{/* mode20 4sum2bin_30FPS_680x512*/
-		.frame_desc = frame_desc_cus16,
-		.num_entries = ARRAY_SIZE(frame_desc_cus16),
-		.mode_setting_table = zhuquec1tele_custom16_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom16_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 2944,
-		.framelength = 10412,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 312000000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 8,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 2048,
-			.scale_h = 1152,
-			.x1_offset = 684,
-			.y1_offset = 320,
-			.w1_size = 680,
-			.h1_size = 512,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 680,
-			.h2_tg_size = 512,
-		},
-		.pdaf_cap = FALSE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {
-			.dphy_trail = 120,
-		},
-		.ana_gain_max = BASEGAIN * 80,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-	},
-	{/* mode21 4sum4k_30FPS_3264x2448 */
-		.frame_desc = frame_desc_cus17,
-		.num_entries = ARRAY_SIZE(frame_desc_cus17),
-		.mode_setting_table = zhuquec1tele_custom17_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom17_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4848,
-		.framelength = 6312,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 416,
-			.y1_offset = 312,
-			.w1_size = 3264,
-			.h1_size = 2448,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3264,
-			.h2_tg_size = 2448,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 0,
-			.sensorScenario = SENSOR_SCENARIO_UNDEFINED,
-		},
-	},
-	{/* mode22 Fullcrop_4096x2304_30fps_remosaicON_3056Msps*/
-		.frame_desc = frame_desc_cus18,
-		.num_entries = ARRAY_SIZE(frame_desc_cus18),
-		.mode_setting_table = zhuquec1tele_custom18_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom18_setting),
-		.seamless_switch_group = 1,
-		.seamless_switch_mode_setting_table = zhuquec1tele_izoom_4k_30fps_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(zhuquec1tele_izoom_4k_30fps_seamless_setting),
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 9200,
-		.framelength = 3332,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 16,
-		.exposure_margin = 48,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2048,
-			.y0_offset = 1920,
-			.w0_size = 4096,
-			.h0_size = 2304,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info_full,
-		.ae_binning_ratio = 1240,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 16,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = INSENSORZOOM_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 16,
-		.awb_enabled = true,
-	},
-	{/* 4096*2048@30fps vb max  18:9*/
-		.frame_desc = frame_desc_cus19,
-		.num_entries = ARRAY_SIZE(frame_desc_cus19),
-		.mode_setting_table = zhuquec1tele_custom19_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom19_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.exp_cnt = 1,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 6408,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 1,
-		.coarse_integ_step = 1,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1024,
-			.w0_size = 8192,
-			.h0_size = 4096,
-			.scale_w = 4096,
-			.scale_h = 2048,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2048,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2048,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{/* 4096*3072@60fps vb max  */
-		.frame_desc = frame_desc_cus20,
-		.num_entries = ARRAY_SIZE(frame_desc_cus20),
-		.mode_setting_table = zhuquec1tele_custom20_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1tele_custom20_setting),
-		.seamless_switch_group = 2,
-		.seamless_switch_mode_setting_table = zhuquec1tele_lbmf_12_5M_seamless_setting,
-		.seamless_switch_mode_setting_len = ARRAY_SIZE(zhuquec1tele_lbmf_12_5M_seamless_setting),
-		.hdr_mode = HDR_RAW_LBMF,
-		.raw_cnt = 2,
-		.exp_cnt = 2,
-		.pclk = 920000000,
-		.linelength = 4784,
-		.framelength = 3204 * 2,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 1222400000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.min_exposure_line = 4,
-		.exposure_margin = 12,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].min = 4,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_LE].max = 0xFFFF,
-		.multi_exposure_shutter_range[IMGSENSOR_EXPOSURE_ME].max = 0xFFFF,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1000,
-		.fine_integ_line = 0,
-		.delay_frame = 3,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 160,
-		.sensor_setting_info = {
-			.sensor_scenario_usage =  HDR_RAW_STAGGER_2EXP_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_LBMF_2EXP_BAYER,
-		},
-		.exposure_order_in_lbmf = IMGSENSOR_LBMF_EXPOSURE_LE_FIRST,
-		.mode_type_in_lbmf = IMGSENSOR_LBMF_MODE_MANUAL,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 80,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_ME].max = BASEGAIN * 80,
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = ZHUQUEC1TELE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x0000, 0x0001},
-	.i2c_addr_table = {0x5a, 0xff},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_16,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_V_MIRROR,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 160,
-	.ana_gain_type = 2, //0-SONY; 1-OV; 2 - SUMSUN; 3 -HYNIX; 4 -GC
-	.ana_gain_step = 2,
-	.ana_gain_table = zhuquec1tele_ana_gain_table,
-	.ana_gain_table_size = sizeof(zhuquec1tele_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 4,
-	.exposure_max = (0xffff * 128) - 4,
-	.exposure_step = 1,
-	.exposure_margin = 24, //tentative
-	.frame_length_max = 0xffff,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 2566000,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV_QPD,
-	.hdr_type = HDR_SUPPORT_STAGGER_FDOL|HDR_SUPPORT_LBMF,
-	.seamless_switch_support = TRUE,
-	.temperature_support = TRUE,
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-//	.g_cali = get_sensor_cali,
-	.s_gph = set_group_hold,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = 0x0101,
-	.reg_addr_exposure ={
-			{0x0202, 0x0203}, //Short exposure
-			{0x0202, 0x0203},
-			{0x0226, 0x0227}, //Long exposure
-	},
-	.long_exposure_support = TRUE,
-	.reg_addr_exposure_lshift = 0x0704,
-	.reg_addr_ana_gain = {
-			{0x0204, 0x0205}, //Short Gain
-			{0x0204, 0x0205},
-			{0x0206, 0x0207}, //Long Gain
-	},
-	.reg_addr_frame_length = {0x0340, 0x0341},
-	.reg_addr_frame_length_in_lut = {
-  			{0x0E14, 0x0E15},  /* LUT_A_FRM_LENGTH_LINES */
-  			{0x0E20, 0x0E21},  /* LUT_B_FRM_LENGTH_LINES */
-  	},
-	.reg_addr_temp_en = PARAM_UNDEFINED,
-	.reg_addr_temp_read = 0x0020,
-	.reg_addr_auto_extend = PARAM_UNDEFINED, //0x0335,
-	.reg_addr_frame_count = 0x0005,
-	.reg_addr_exposure_in_lut = {
-  			{0x0E10, 0x0E11}, //LUT_A_COARSE_INTEG_TIME
-  			{0x0E1C, 0x0E1D}, //LUT_B_COARSE_INTEG_TIME
-  	},
-  	.reg_addr_ana_gain_in_lut = {
-  			{0x0E12, 0x0E13}, //LUT_A_ANA_GAIN_GLOBAL
-  			{0x0E1E, 0x0E1F}, //LUT_B_ANA_GAIN_GLOBAL
-  	},
-//	.init_setting_table = zhuquec1tele_sensor_init_setting,
-//	.init_setting_len =  ARRAY_SIZE(zhuquec1tele_sensor_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 1,
-	.chk_s_off_end = 0,
-
-	.checksum_value = 0x350174bc,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_MCLK, {24}, 2000},
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_DOVDD, {1800000, 1800000}, 1000},
-	{HW_ID_AVDD, {2204000, 2204000}, 1000},
-	{HW_ID_DVDD, {1008000, 1008000}, 1000},
-	{HW_ID_AFVDD, {3300000, 3300000}, 0},
-	{HW_ID_RST, {1}, 2000},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 10000},
-};
-
-struct subdrv_entry zhuquec1tele_mipi_raw_entry = {
-	.name = SENSOR_NAME,
-	.id = ZHUQUEC1TELE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-/* FUNCTION */
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	short temperature = 0;
-	int temperature_convert = 0;
-
-	temperature = subdrv_i2c_rd_u16(ctx, ctx->s_ctx.reg_addr_temp_read);
-	temperature_convert = temperature / 256;
-
-	DRV_LOG(ctx, "reg_val:0x%x, temperature: %d degrees\n", temperature, temperature_convert);
-	return temperature_convert;
-}
-
-void zhuquec1tele_set_dummy(struct subdrv_ctx *ctx)
-{
-//	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-//
-//	if (gph)
-//		ctx->s_ctx.s_gph((void *)ctx, 1);
-//	zhuquec1tele_write_frame_length(ctx, ctx->frame_length);
-//	if (gph)
-//		ctx->s_ctx.s_gph((void *)ctx, 0);
-//
-//	commit_i2c_buffer(ctx);
-}
-
-static int get_sof_timeout(struct adaptor_ctx *ctx, const struct sensor_mode *mode)
-{
-	int timeout = 0;
-	u64 tmp = 0;
-
-	if (ctx->shutter_for_timeout > 0) {
-		tmp = mode->linetime_in_ns * ctx->shutter_for_timeout;
-		timeout = tmp / 1000;
-	}
-	if (ctx->framelength_for_timeout > 0) {
-		tmp = mode->linetime_in_ns * ctx->framelength_for_timeout / 1000;
-		timeout = (timeout < tmp) ? tmp : timeout;
-	}
-	if (ctx->subctx.current_fps > 0) {
-		tmp = 10000000 / ctx->subctx.current_fps;
-		timeout = (timeout < tmp) ? tmp : timeout;
-	}
-	if (timeout < 0)
-		timeout = 0;
-
-	DRV_LOG(ctx,
-		"X! sof timeout value in us %llu|%llu|%llu|%d|%d\n",
-		ctx->shutter_for_timeout,
-		ctx->framelength_for_timeout,
-		mode->linetime_in_ns,
-		timeout,
-		ctx->subctx.current_fps > 0 ? 10000000 / ctx->subctx.current_fps : 0);
-
-	return timeout;
-}
-
-
-static void streaming_ctrl(struct subdrv_ctx *ctx, bool enable)
-{
-	u64 stream_ctrl_delay_timing = 0;
-	u64 stream_ctrl_delay = 0;
-	struct adaptor_ctx *_adaptor_ctx = NULL;
-	struct v4l2_subdev *sd = NULL;
-
-	DRV_LOG(ctx, "E! enable:%u\n", enable);
-
-	if (ctx->i2c_client)
-		sd = i2c_get_clientdata(ctx->i2c_client);
-	if (ctx->ixc_client.protocol)
-		sd = adaptor_ixc_get_clientdata(&ctx->ixc_client);
-	if (sd)
-		_adaptor_ctx = to_ctx(sd);
-	if (!_adaptor_ctx) {
-		DRV_LOGE(ctx, "null _adaptor_ctx\n");
-		return;
-	}
-
-	check_current_scenario_id_bound(ctx);
-	if (ctx->s_ctx.aov_sensor_support && ctx->s_ctx.streaming_ctrl_imp) {
-		if (ctx->s_ctx.s_streaming_control != NULL)
-			ctx->s_ctx.s_streaming_control((void *) ctx, enable);
-		else
-			DRV_LOG_MUST(ctx,
-				"please implement drive own streaming control!(sid:%u)\n",
-				ctx->current_scenario_id);
-		ctx->is_streaming = enable;
-		DRV_LOG_MUST(ctx, "enable:%u\n", enable);
-		return;
-	}
-	if (ctx->s_ctx.aov_sensor_support && ctx->s_ctx.mode[ctx->current_scenario_id].aov_mode) {
-		DRV_LOG_MUST(ctx,
-			"stream ctrl implement on scp side!(sid:%u)\n",
-			ctx->current_scenario_id);
-		ctx->is_streaming = enable;
-		DRV_LOG_MUST(ctx, "enable:%u\n", enable);
-		return;
-	}
-
-	if (enable) {
-		/* MCSS low power mode update para */
-		if (ctx->s_ctx.mcss_update_subdrv_para != NULL)
-			ctx->s_ctx.mcss_update_subdrv_para((void *) ctx, ctx->current_scenario_id);
-		/* MCSS register init */
-		if (ctx->s_ctx.mcss_init != NULL)
-			ctx->s_ctx.mcss_init((void *) ctx);
-
-		if (ctx->s_ctx.chk_s_off_sta) {
-			DRV_LOG(ctx, "check_stream_off before stream on");
-			check_stream_off(ctx);
-		}
-		zhuquec1tele_set_dummy(ctx);
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x01);
-		ctx->stream_ctrl_start_time = ktime_get_boottime_ns();
-		ctx->stream_ctrl_start_time_mono = ktime_get_ns();
-	} else {
-		ctx->stream_ctrl_end_time = ktime_get_boottime_ns();
-		if (ctx->s_ctx.custom_stream_ctrl_delay &&
-			ctx->stream_ctrl_start_time && ctx->stream_ctrl_end_time) {
-			stream_ctrl_delay_timing =
-				(ctx->stream_ctrl_end_time - ctx->stream_ctrl_start_time) / 1000000;
-			stream_ctrl_delay = (u64)get_sof_timeout(_adaptor_ctx, _adaptor_ctx->cur_mode) / 1000;
-			DRV_LOG_MUST(ctx,
-				"stream_ctrl_delay(sof)/stream_ctrl_delay_timing(end-start):%llums/%llums\n",
-				stream_ctrl_delay,
-				stream_ctrl_delay_timing);
-			if (stream_ctrl_delay_timing < stream_ctrl_delay)
-				mdelay(stream_ctrl_delay - stream_ctrl_delay_timing);
-		}
-		check_stream_on(ctx);
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_stream, 0x00);
-		if (ctx->s_ctx.reg_addr_fast_mode && ctx->fast_mode_on) {
-			ctx->fast_mode_on = FALSE;
-			ctx->ref_sof_cnt = 0;
-			DRV_LOG(ctx, "seamless_switch disabled.");
-			set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x00);
-			commit_i2c_buffer(ctx);
-		}
-		ctx->fast_mode_on = FALSE;
- 		ctx->ref_sof_cnt = 0;
-		memset(ctx->exposure, 0, sizeof(ctx->exposure));
-		memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-		ctx->autoflicker_en = FALSE;
-		ctx->extend_frame_length_en = 0;
-		ctx->is_seamless = 0;
-		if (ctx->s_ctx.chk_s_off_end)
-			check_stream_off(ctx);
-		ctx->stream_ctrl_start_time = 0;
-		ctx->stream_ctrl_end_time = 0;
-		ctx->stream_ctrl_start_time_mono = 0;
-
-		ctx->mcss_init_info.enable_mcss = 0;
-		if (ctx->s_ctx.mcss_init != NULL)
-			ctx->s_ctx.mcss_init((void *) ctx); // disable MCSS
-	}
-	ctx->sof_no = 0;
-	ctx->is_streaming = enable;
-	DRV_LOG(ctx, "X! enable:%u\n", enable);
-}
-
-static int zhuquec1tele_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "SENSOR_FEATURE_SET_STREAMING_RESUME, shutter:%u\n", *(u32 *)para);
-		if (*(u32 *)para)
-			zhuquec1tele_set_shutter_convert(ctx, *(u32 *)para);
-		streaming_ctrl(ctx, true);
-		return 0;
-}
-
-static int zhuquec1tele_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-		DRV_LOG(ctx, "streaming control para:%d\n", *para);
-		streaming_ctrl(ctx, false);
-		return 0;
-}
-
-static unsigned int read_zhuquec1tele_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != zhuquec1tele_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != zhuquec1tele_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = zhuquec1tele_eeprom_info[meta_id].start;
-	readsize = zhuquec1tele_eeprom_info[meta_id].size;
-
-	if (!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-// static void read_eeprom_common_data(struct subdrv_ctx *ctx)
-// {
-// 	kal_uint16 idx = 0;
-// 	kal_uint16 AF_CODE_MACRO_idx = 0;
-// 	kal_uint16 AF_CODE_INFINITY_idx = 0;
-// 	kal_uint16 AF_CODE_MIDDLE_idx = 0;
-
-// 	memset(&zhuquec1tele_eeprom_common_data, 0x00, sizeof(zhuquec1tele_eeprom_common_data));
-
-// 	zhuquec1tele_eeprom_common_data.header[EEPROM_MODULE_ID] = 2;
-// 	read_zhuquec1tele_eeprom_info(ctx, EEPROM_META_MODULE_ID,
-// 				&(zhuquec1tele_eeprom_common_data.data[idx]), 2);
-// 	idx += zhuquec1tele_eeprom_common_data.header[EEPROM_MODULE_ID];
-
-// 	zhuquec1tele_eeprom_common_data.header[EEPROM_SENSOR_ID] = 2;
-// 	read_zhuquec1tele_eeprom_info(ctx, EEPROM_META_SENSOR_ID,
-// 				&(zhuquec1tele_eeprom_common_data.data[idx]), 2);
-// 	idx += zhuquec1tele_eeprom_common_data.header[EEPROM_SENSOR_ID];
-
-// 	zhuquec1tele_eeprom_common_data.header[EEPROM_LENS_ID] = 2;
-// 	read_zhuquec1tele_eeprom_info(ctx, EEPROM_META_LENS_ID,
-// 				&(zhuquec1tele_eeprom_common_data.data[idx]), 2);
-// 	idx += zhuquec1tele_eeprom_common_data.header[EEPROM_LENS_ID];
-
-// 	zhuquec1tele_eeprom_common_data.header[EEPROM_VCM_ID] = 2;
-// 	read_zhuquec1tele_eeprom_info(ctx, EEPROM_META_VCM_ID,
-// 				&(zhuquec1tele_eeprom_common_data.data[idx]), 2);
-// 	idx += zhuquec1tele_eeprom_common_data.header[EEPROM_VCM_ID];
-
-// 	zhuquec1tele_eeprom_common_data.header[EEPROM_MODULE_SN] = 23;
-// 	read_zhuquec1tele_eeprom_info(ctx, EEPROM_META_MODULE_SN,
-// 				&(zhuquec1tele_eeprom_common_data.data[idx]), 23);
-// 	idx += zhuquec1tele_eeprom_common_data.header[EEPROM_MODULE_SN];
-
-// 	zhuquec1tele_eeprom_common_data.header[EEPROM_AF_CODE_MACRO] = 2;
-// 	zhuquec1tele_eeprom_common_data.header[EEPROM_AF_CODE_INFINITY] = 2;
-// 	zhuquec1tele_eeprom_common_data.header[EEPROM_AF_CODE_MIDDLE] = 2;
-// 	read_zhuquec1tele_eeprom_info(ctx, EEPROM_META_AF_CODE,
-// 				&(zhuquec1tele_eeprom_common_data.data[idx]), 6);
-
-// 	AF_CODE_MACRO_idx = idx;
-// 	AF_CODE_INFINITY_idx = idx + 2;
-// 	AF_CODE_MIDDLE_idx = idx + 4;
-
-// 	g_af_code_macro = zhuquec1tele_eeprom_common_data.data[AF_CODE_MACRO_idx + 1] << 8 |
-// 		zhuquec1tele_eeprom_common_data.data[AF_CODE_MACRO_idx];
-// 	g_af_code_infinity = zhuquec1tele_eeprom_common_data.data[AF_CODE_INFINITY_idx + 1] << 8 |
-// 		zhuquec1tele_eeprom_common_data.data[AF_CODE_INFINITY_idx];;
-// 	g_af_code_middle = zhuquec1tele_eeprom_common_data.data[AF_CODE_MIDDLE_idx + 1] << 8 |
-// 		zhuquec1tele_eeprom_common_data.data[AF_CODE_MIDDLE_idx];;
-
-// 	for (idx = 0; idx < 64; idx = idx + 4)
-// 		LOG_INF("In %s:common data: %02x %02x %02x %02x\n", __func__,
-// 			zhuquec1tele_eeprom_common_data.data[idx], zhuquec1tele_eeprom_common_data.data[idx + 1],
-// 			zhuquec1tele_eeprom_common_data.data[idx + 2],
-// 			zhuquec1tele_eeprom_common_data.data[idx + 3]);
-// }
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-	.addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-// static struct SENSOR_OTP_INFO_STRUCT cloud_otp_info[OPLUS_CAM_CAL_DATA_MAX] = {
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 17}}, /*{addr_modinfo, addr_modinfolen}*/
-// 	}, /*OPLUS_CAM_CAL_DATA_MODULE_VERSION*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 17}}, /*{addr_modinfo, addr_modinfolen}*/
-// 	}, /*OPLUS_CAM_CAL_DATA_PART_NUMBER*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0b00, 1868}},
-// 	}, /*OPLUS_CAM_CAL_DATA_SHADING_TABLE--LSC*/
-// 	{
-// 		.OtpInfoLen = 5,
-// 		.OtpInfo = {{0x0020, 16}, {0x0044, 16}, {0x0060, 4}, {0x006c, 4}, {0x0092, 6}},
-// 		.isAFCodeOffset = KAL_TRUE,
-// 		.AFLeftOffsetLen = 6,
-// 		.AFRightOffsetLen = 2,
-// 	}, /*OPLUS_CAM_CAL_DATA_3A_GAIN-awb5000\awb2850\awb5000Light\awb2850light\af*/
-// 	{
-// 		.OtpInfoLen = 2,
-// 		.OtpInfo = {{0x1300, 496}, {0x1500, 1004}},
-// 	}, /*OPLUS_CAM_CAL_DATA_PDAF*/
-// 	{
-// 		.OtpInfoLen = 8,
-// 		.OtpInfo = {{0x0000, 17}, {0x0006, 2}, {0x0008, 2}, {0x000a, 2}, {0x0092, 7}, {0x0092, 2}, {0x0094, 2}, {0x00b0, 24}},
-// 		.isAFCodeOffset = KAL_TRUE,
-// 		.AFLeftOffsetLen = 6,
-// 		.AFRightOffsetLen = 2,
-// 	}, /*OPLUS_CAM_CAL_DATA_CAMERA_INFO-modid\sensor\lens\vcmid\af\macpos\infpos\qrcode\*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0008, 2}},
-// 	}, /*OPLUS_CAM_CAL_DATA_DUMP*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0008, 2}},
-// 	}, /*OPLUS_CAM_CAL_DATA_LENS_ID*/
-// 	{
-// 		.OtpInfoLen = 0,
-// 	}, /*OPLUS_CAM_CAL_DATA_QSC*/
-// 	{
-// 		.OtpInfoLen = 0,
-// 	}, /*OPLUS_CAM_CAL_DATA_LRC*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 32768}},
-// 	}, /*OPLUS_CAM_CAL_DATA_ALL*/
-// };
-
-// static int zhuquec1tele_get_cloud_otp_info(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u64 *feature_data = (u64 *)para;
-// 	struct SENSOR_OTP_INFO_STRUCT *cloudinfo;
-// 	LOG_INF("SENSOR_FEATURE_GET_CLOUD_OTP_INFO otp_type:%d", (UINT32)(*feature_data));
-// 	cloudinfo = (struct SENSOR_OTP_INFO_STRUCT *)(uintptr_t)(*(feature_data + 1));
-// 	switch (*feature_data) {
-// 	case OPLUS_CAM_CAL_DATA_MODULE_VERSION:
-// 	case OPLUS_CAM_CAL_DATA_PART_NUMBER:
-// 	case OPLUS_CAM_CAL_DATA_SHADING_TABLE:
-// 	case OPLUS_CAM_CAL_DATA_3A_GAIN:
-// 	case OPLUS_CAM_CAL_DATA_PDAF:
-// 	case OPLUS_CAM_CAL_DATA_CAMERA_INFO:
-// 	case OPLUS_CAM_CAL_DATA_DUMP:
-// 	case OPLUS_CAM_CAL_DATA_LENS_ID:
-// 	case OPLUS_CAM_CAL_DATA_QSC:
-// 	case OPLUS_CAM_CAL_DATA_LRC:
-// 	case OPLUS_CAM_CAL_DATA_ALL:
-// 		memcpy((void *)cloudinfo, (void *)&cloud_otp_info[*feature_data], sizeof(struct SENSOR_OTP_INFO_STRUCT));
-// 		break;
-// 	default:
-// 		break;
-// 	}
-// 	return 0;
-// }
-
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static int zhuquec1tele_get_eeprom_comdata(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct oplus_eeprom_info_struct* infoPtr;
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	infoPtr = (struct oplus_eeprom_info_struct*)(para);
-	*len = sizeof(oplus_eeprom_info);
-	infoPtr->afInfo[0] = (kal_uint8)((infoPtr->afInfo[1] << 6) | (infoPtr->afInfo[0] >> 2));
-	infoPtr->afInfo[1] = (kal_uint8)(infoPtr->afInfo[1] >> 2);
-	infoPtr->afInfo[2] = (kal_uint8)((infoPtr->afInfo[3] << 6) | (infoPtr->afInfo[2] >> 2));
-	infoPtr->afInfo[3] = (kal_uint8)(infoPtr->afInfo[3] >> 2);
-	infoPtr->afInfo[4] = (kal_uint8)((infoPtr->afInfo[5] << 6) | (infoPtr->afInfo[4] >> 2));
-	infoPtr->afInfo[5] = (kal_uint8)(infoPtr->afInfo[5] >> 2);
-	return 0;
-}
-
-// static int zhuquec1tele_set_af_code_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	g_af_code_macro = (u16)((u64*)para)[0];
-// 	g_af_code_infinity = (u16)((u64*)para)[1];
-// 	LOG_INF("g_af_code_macro(%d), g_af_code_infinity(%d)", g_af_code_macro, g_af_code_infinity);
-// 	return 0;
-// }
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, ZHUQUEC1TELE_EEPROM_READ_ID >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static kal_int32 table_write_eeprom_one_packet(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-    kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, ZHUQUEC1TELE_EEPROM_WRITE_ID >> 1,
-            addr, para, len);
-
-    return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = ZHUQUEC1TELE_EEPROM_LOCK_REGISTER;
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, ZHUQUEC1TELE_EEPROM_WRITE_ID >> 1,
-            reg, 0x0E);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, ZHUQUEC1TELE_EEPROM_WRITE_ID >> 1,
-            reg, 0x00);
-    }
-
-    return ret;
-}
-
-static kal_uint16 get_64align_addr(kal_uint16 data_base) {
-
-	kal_uint16 multiple = 0;
-	kal_uint16 surplus = 0;
-	kal_uint16 addr_64align = 0;
-
-	multiple = data_base / 64;
-	surplus = data_base % 64;
-	if(surplus) {
-		addr_64align = (multiple + 1) * 64;
-	} else {
-		addr_64align = multiple * 64;
-	}
-	//LOG_INF("data_base(0x%x), multiple(%d), surplus(%d), addr_64align(0x%x)", data_base, multiple, surplus, addr_64align);
-	return addr_64align;
-}
-
-static kal_int32 eeprom_table_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-
-	kal_uint16 idx;
-	kal_uint16 idy;
-	kal_int32 ret = ERROR_NONE;
-	UINT32 i = 0;
-
-	idx = data_length/EEPROM_WRITE_DATA_MAX_LENGTH;
-	idy = data_length%EEPROM_WRITE_DATA_MAX_LENGTH;
-
-    LOG_INF("data_base(0x%x) data_length(%d) idx(%d) idy(%d)\n", data_base, data_length, idx, idy);
-
-	for (i = 0; i < idx; i++ ) {
-		ret = table_write_eeprom_one_packet(ctx, (data_base + EEPROM_WRITE_DATA_MAX_LENGTH * i),
-				&pData[EEPROM_WRITE_DATA_MAX_LENGTH*i], EEPROM_WRITE_DATA_MAX_LENGTH);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: i=%d\n", i);
-			return -1;
-		}
-		msleep(6);
-	}
-
-	msleep(6);
-	if(idy) {
-		ret = table_write_eeprom_one_packet(ctx, (data_base + EEPROM_WRITE_DATA_MAX_LENGTH*idx),
-				&pData[EEPROM_WRITE_DATA_MAX_LENGTH*idx], idy);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-			return -1;
-		}
-	}
-	return 0;
-}
-
-static kal_int32 eeprom_64align_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-
-	kal_uint16 addr_64align = 0;
-	kal_uint16 part1_length = 0;
-	kal_uint16 part2_length = 0;
-	kal_int32 ret = ERROR_NONE;
-
-    addr_64align = get_64align_addr(data_base);
-
-	part1_length = addr_64align - data_base;
-	if(part1_length > data_length) {
-		part1_length = data_length;
-	}
-	part2_length = data_length - part1_length;
-
-	write_eeprom_protect(ctx, 0);
-	msleep(6);
-
-	if (part1_length) {
-		ret = eeprom_table_write(ctx, data_base, pData, part1_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part1\n");
-			msleep(6);
-			return -1;
-		}
-	}
-
-	msleep(6);
-	if (part2_length) {
-		ret = eeprom_table_write(ctx, addr_64align, pData + part1_length, part2_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part2\n");
-			msleep(6);
-			return -1;
-		}
-	}
-	msleep(6);
-	write_eeprom_protect(ctx, 1);
-	msleep(6);
-
-	return 0;
-}
-
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint8 *pData;
-
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-                       pStereodata->uSensorId,
-                       pStereodata->uDeviceId,
-                       pStereodata->baseAddr,
-                       pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        if ((pStereodata->uSensorId == ZHUQUEC1TELE_SENSOR_ID || pStereodata->uSensorId == ZHUQUES1TELE_SENSOR_ID)
-            && (data_length == CALI_DATA_SLAVE_TELE_LENGTH)
-            && ((data_base == ZHUQUEC1TELE_STEREO_MT_START_ADDR) || (data_base == ZHUQUEC1TELE_STEREO_MT105_START_ADDR))) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[892]);
-
-            eeprom_64align_write(ctx, data_base, pData, data_length);
-
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_892:0x%x\n", read_cmos_eeprom_8(ctx, data_base+892));
-            LOG_INF("write_Module_data Write end\n");
-
-        } else if ((pStereodata->uSensorId == ZHUQUEC1TELE_SENSOR_ID || pStereodata->uSensorId == ZHUQUES1TELE_SENSOR_ID)
-            && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == ZHUQUEC1TELE_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-
-            eeprom_64align_write(ctx, data_base, pData, data_length);
-
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1TELE_AESYNC_START_ADDR),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1TELE_AESYNC_START_ADDR+1),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1TELE_AESYNC_START_ADDR+2),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1TELE_AESYNC_START_ADDR+3),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1TELE_AESYNC_START_ADDR+4),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1TELE_AESYNC_START_ADDR+5),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1TELE_AESYNC_START_ADDR+6),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1TELE_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("imx890 write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int zhuquec1tele_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        *len = (u32)-1; /*write eeprom failed*/
-        LOG_INF("ret=%d\n", ret);
-    }
-	return 0;
-}
-
-static int zhuquec1tele_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-
-	if(*len > CALI_DATA_SLAVE_TELE_LENGTH) {
-		*len = CALI_DATA_SLAVE_TELE_LENGTH;
-	}
-	LOG_INF("feature_data mode:%d  lens:%d", *feature_data_16, *len);
-	switch (*feature_data_16) {
-	case EEPROM_STEREODATA_MT_MAIN:
-		read_zhuquec1tele_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	case EEPROM_STEREODATA_MT_MAIN_105CM:
-		read_zhuquec1tele_eeprom_info(ctx, EEPROM_META_STEREO_MT_MAIN_DATA_105CM,
-				(BYTE *)feature_return_para_32, *len);
-		break;
-	default:
-		break;
-	}
-
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, ZHUQUEC1TELE_EEPROM_READ_ID >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "jn5 read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, OTP_SIZE);
-	DRV_LOGE(ctx, "jn5 read_otp_info end\n");
-}
-
-static int zhuquec1tele_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	u32 length = sizeof(otp_data_checksum);
-
-	if(*len < sizeof(otp_data_checksum)) {
-		length = *len;
-	}
-	DRV_LOGE(ctx, "get otp data length:0x%x", length);
-
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, length);
-	return 0;
-}
-
-static int zhuquec1tele_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-// static int zhuquec1tele_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u32 *feature_return_para_32 = (u32 *)para;
-// 	*len = ZHUQUEC1TELE_UNIQUE_SENSOR_ID_LENGTH;
-// 	memcpy(feature_return_para_32, zhuquec1tele_unique_id,
-// 		ZHUQUEC1TELE_UNIQUE_SENSOR_ID_LENGTH);
-// 	LOG_INF("para :%x, get unique sensorid", *para);
-// 	return 0;
-// }
-
-// static void read_unique_sensorid(struct subdrv_ctx *ctx)
-// {
-// 	kal_uint8 i = 0;
-// 	LOG_INF("read sensor unique sensorid");
-// 	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-// 		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-// 		subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-// 		subdrv_i2c_wr_u16(ctx, 0x0100, 0x0100);
-// 		mdelay(30);
-// 		subdrv_i2c_wr_u16(ctx, 0x0A02, 0x0000);
-// 		subdrv_i2c_wr_u16(ctx, 0x0A00, 0x0100);
-// 		mdelay(1);
-// 		if (adaptor_i2c_rd_p8(ctx->i2c_client, ctx->i2c_write_id >> 1, ZHUQUEC1TELE_UNIQUE_SENSOR_ID_ADDR,
-// 			&(zhuquec1tele_unique_id[0]), ZHUQUEC1TELE_UNIQUE_SENSOR_ID_LENGTH) < 0) {
-// 			LOG_INF("Read sensor unique sensorid fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-// 		}
-// 		i++;
-// 	}
-// }
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			DRV_LOGE(ctx, "i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == 0x38E5) {
-				get_imgsensor_id_from_dts(ctx, sensor_id);
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					g_af_code_macro =    ((((kal_uint16)oplus_eeprom_info.afInfo[1] << 8) & 0xFF00) | ((kal_uint16)oplus_eeprom_info.afInfo[0] & 0x00FF)) >> 2;
-					g_af_code_infinity = ((((kal_uint16)oplus_eeprom_info.afInfo[3] << 8) & 0xFF00) | (kal_uint16)(oplus_eeprom_info.afInfo[2] & 0x00FF)) >> 2;
-					//read_unique_sensorid(ctx);
-					first_read = FALSE;
-					subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-					module_flag = subdrv_i2c_rd_u16(ctx, 0x0010);
-
-					msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-					if(!msg_buf) {
-						LOG_INF("boot stage, malloc msg_buf error");
-					}
-				}
-				return ERROR_NONE;
-			}
-			DRV_LOG(ctx, "Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			DRV_LOG(ctx, "sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	if ((module_flag & 0xFF00) == 0x0300){
-		DRV_LOGE(ctx, "module_flag = 0x%x, modules with OTP data\n", module_flag);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1tele_sensor_init_pre_setting1, ARRAY_SIZE(zhuquec1tele_sensor_init_pre_setting1));
-		mdelay(5);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1tele_sensor_init_pre_setting2, ARRAY_SIZE(zhuquec1tele_sensor_init_pre_setting2));
-		mdelay(5);
-		zhuquec1tele_i2c_burst_wr_regs_u16(ctx, zhuquec1tele_sensor_simple_init_setting, ARRAY_SIZE(zhuquec1tele_sensor_simple_init_setting));
-		DRV_LOGE(ctx, "setting end\n");
-	}else{
-		DRV_LOGE(ctx, "module_flag = 0x%x, modules without OTP data\n", module_flag);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1tele_sensor_init_pre_setting1, ARRAY_SIZE(zhuquec1tele_sensor_init_pre_setting1));
-		mdelay(5);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1tele_sensor_init_pre_setting2, ARRAY_SIZE(zhuquec1tele_sensor_init_pre_setting2));
-		mdelay(5);
-		subdrv_i2c_wr_regs_u16(ctx, zhuquec1tele_sensor_init_setting, ARRAY_SIZE(zhuquec1tele_sensor_init_setting));
-		DRV_LOGE(ctx, "setting end\n");
-	};
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-	bRmscMode = 0;
-	return ERROR_NONE;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	if (group_hold_frame_count < 2) {
-		DRV_LOGE(ctx, "group_hold_frame_count: %d", group_hold_frame_count);
-		group_hold_frame_count++;
-		return;
-	}
-	if (en)
-		set_i2c_buffer(ctx, 0x0104, 0x01);
-	else
-		set_i2c_buffer(ctx, 0x0104, 0x00);
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return gain * 32 / BASEGAIN;
-}
-
-static bool test_pattern_change = false;
-static int zhuquec1tele_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode != ctx->test_pattern) {
-
-		LOG_INF("mode(%u->%u)\n", ctx->test_pattern, mode);
-		test_pattern_change = true;
-
-		/* 1:Solid Color 2:Color Bar 5:Black */
-		if (mode) {
-			if (mode == 5) {
-				//subdrv_i2c_wr_u16(ctx, 0x0600, 0x0001); /*black*/
-				subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-				subdrv_i2c_wr_u16(ctx, 0x020C, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x020E, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0210, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0212, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0214, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0230, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0232, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0234, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0236, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0240, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0242, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0244, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x0246, 0x0000);
-			} else {
-				subdrv_i2c_wr_u16(ctx, 0x0600, mode); /*100% Color bar*/
-			}
-		} else {
-			if (ctx->test_pattern) {
-				subdrv_i2c_wr_u16(ctx, 0x0600, 0x0000); /*No pattern*/
-				subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-				subdrv_i2c_wr_u16(ctx, 0x020C, 0x0000);
-				subdrv_i2c_wr_u16(ctx, 0x020E, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0210, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0212, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0214, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0230, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0232, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0234, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0236, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0240, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0242, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0244, 0x0100);
-				subdrv_i2c_wr_u16(ctx, 0x0246, 0x0100);
-			}
-		}
-		ctx->test_pattern = mode;
-	}
-	return 0;
-}
-
-static int zhuquec1tele_set_test_pattern_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	struct mtk_test_pattern_data *data = (struct mtk_test_pattern_data *)para;
-
-	if(test_pattern_change && ctx->test_pattern) {
-		u16 R = (data->Channel_R >> 22) & 0x3ff;
-		u16 Gr = (data->Channel_R >> 22) & 0x3ff;
-		u16 Gb = (data->Channel_R >> 22) & 0x3ff;
-		u16 B = (data->Channel_R >> 22) & 0x3ff;
-
-		subdrv_i2c_wr_u16(ctx, 0x0602, Gr);
-		subdrv_i2c_wr_u16(ctx, 0x0604, R);
-		subdrv_i2c_wr_u16(ctx, 0x0606, B);
-		subdrv_i2c_wr_u16(ctx, 0x0608, Gb);
-
-		test_pattern_change = false;
-
-		LOG_INF("mode(%u) R/Gr/Gb/B = 0x%04x/0x%04x/0x%04x/0x%04x\n",
-			ctx->test_pattern, R, Gr, Gb, B);
-	}
-	return 0;
-}
-
-static int zhuquec1tele_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	group_hold_frame_count = 0;
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *) para;
-//	u32 fine_integ_line = 0;
-//	u32 cit_step = 0;
-//	u32 rg_shutter = 0;
-//	u32 prsh_length_lines = 0;
-	u32 exp_cnt = 0;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return 0;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	LOG_INF("E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-
-//	if (!ctx->extend_frame_length_en)
-//		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-//	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return 0;
-	}
-
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return 0;
-	}
-
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return 0;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-
-	set_i2c_buffer(ctx, 0x0104, 0x01);
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		(ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF ||
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF))
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x4);
-	update_mode_info(ctx, scenario_id);
-
-	for (int i = 0; i < ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len; i += 2) {
-		set_i2c_buffer(ctx, ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table[i],
-			(ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table[i + 1] >> 8) & 0xFF);
-		set_i2c_buffer(ctx, ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table[i] + 1,
-			(ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table[i + 1]) & 0xFF);
-	}
-	commit_i2c_buffer(ctx);
-
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			zhuquec1tele_set_multi_shutter_frame_length(ctx, (u64*)&ae_ctrl->exposure, exp_cnt, 0);
-			zhuquec1tele_set_multi_gain(ctx, (u32*)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			zhuquec1tele_set_multi_shutter_frame_length_in_lut_convert(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);//same with konka
-			break;
-		default:
-			zhuquec1tele_set_shutter_convert(ctx, ae_ctrl->exposure.le_exposure);
-			zhuquec1tele_set_gain_convert(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	LOG_INF("write seamless switch para done\n");
-
-	set_i2c_buffer(ctx, 0x0104, 0x00);
-	commit_i2c_buffer(ctx);
-
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	LOG_INF("X: set seamless switch done\n");
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	//hw_init_time
-	for (int scenario_id = 0; scenario_id < ctx->s_ctx.sensor_mode_num; scenario_id++){
-		 ctx->hw_time_info[scenario_id].init_time_ns = 8 * 1000000;
-	}
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-void zhuquec1tele_write_frame_length(struct subdrv_ctx *ctx, u32 fll)
-{
-	u32 addr_h = ctx->s_ctx.reg_addr_frame_length.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_frame_length.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_frame_length.addr[2];
-	u32 fll_step = 0;
-	u32 dol_cnt = 1;
-
-	check_current_scenario_id_bound(ctx);
-
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode) {
-	case HDR_RAW_STAGGER:
-	case HDR_RAW_LBMF:
-		dol_cnt = ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt;
-		break;
-	default:
-		break;
-	}
-
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	ctx->frame_length = fll;
-
-	fll = fll / dol_cnt;
-
-	if (fll_step)
-		fll = round_up(fll, fll_step);
-
-	if (ctx->extend_frame_length_en == FALSE) {
-		if (addr_ll) {
-			set_i2c_buffer(ctx,	addr_h,	(fll >> 16) & 0xFF);
-			set_i2c_buffer(ctx,	addr_l, (fll >> 8) & 0xFF);
-			set_i2c_buffer(ctx,	addr_ll, fll & 0xFF);
-		} else {
-			set_i2c_buffer(ctx,	addr_h, (fll >> 8) & 0xFF);
-			set_i2c_buffer(ctx,	addr_l, fll & 0xFF);
-		}
-		ctx->frame_length_rg = ctx->frame_length;
-		LOG_INF("ctx->frame_length_rg : %u\n", ctx->frame_length_rg);
-	}
-	LOG_INF("fll[0x%x] multiply %u, fll_step:%u ctx->extend_frame_length_en:%d\n",
-		fll, dol_cnt, fll_step, ctx->extend_frame_length_en);
-}
-
-static void zhuquec1tele_set_multi_gain(struct subdrv_ctx *ctx, u32 *gains, u16 exp_cnt)
-{
-	int i = 0;
-	u16 rg_gains[3] = {0};
-	u8 has_gains[3] = {0};
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 ana_gain_min = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_min : ctx->ana_gain_min;
-	u32 ana_gain_max = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max : ctx->ana_gain_max;
-
-	if(exp_cnt == 2) {
-		LOG_INF("gains[0]:%u, gains[1]:%u, exp_cnt:%d ana_gain_min:%d ana_gain_max:%d\n",
-			gains[0], gains[1], exp_cnt, ana_gain_min, ana_gain_max);
-	} else {
-		LOG_INF("gains[0]:%u, exp_cnt:%d ana_gain_min:%d ana_gain_max:%d\n",
-			gains[0], exp_cnt, ana_gain_min, ana_gain_max);
-	}
-	if (exp_cnt > ARRAY_SIZE(ctx->ana_gain)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->ana_gain));
-		exp_cnt = ARRAY_SIZE(ctx->ana_gain);
-	}
-	for (i = 0; i < exp_cnt; i++) {
-		/* check boundary of gain */
-		gains[i] = max(gains[i], ana_gain_min);
-		gains[i] = min(gains[i], ana_gain_max);
-		/* mapping of gain to register value */
-		if (ctx->s_ctx.g_gain2reg != NULL)
-			gains[i] = ctx->s_ctx.g_gain2reg(gains[i]);
-		else
-			gains[i] = gain2reg(gains[i]);
-	}
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->ana_gain[i] = gains[i];
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	memset(has_gains, 1, sizeof(has_gains));
-	switch (exp_cnt) {
-	case 2:
-		has_gains[1] = 0;
-//		rg_gains[0] = gains[0];
-//		rg_gains[2] = gains[1];
-		rg_gains[0] = gains[1];
-		rg_gains[2] = gains[0];
-		break;
-	case 3:
-//		rg_gains[0] = gains[0];
-		rg_gains[0] = gains[2];
-		rg_gains[1] = gains[1];
-//		rg_gains[2] = gains[2];
-		rg_gains[2] = gains[0];
-		break;
-	default:
-		has_gains[0] = 0;
-		has_gains[1] = 0;
-		has_gains[2] = 0;
-		break;
-	}
-	for (i = 0; i < 3; i++) {
-		if (has_gains[i]) {
-			set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[i].addr[0],
-				(rg_gains[i] >> 8) & 0xFF);
-			set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[i].addr[1],
-				rg_gains[i] & 0xFF);
-		}
-	}
-	LOG_INF("reg[sg/mg/lg]: 0x%x 0x%x 0x%x\n", rg_gains[0], rg_gains[1], rg_gains[2]);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-}
-
-static void zhuquec1tele_set_hdr_tri_gain(struct subdrv_ctx *ctx, u64 *gains, u16 exp_cnt)
-{
-	int i = 0;
-	u32 values[3] = {0};
-
-	if (gains != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u32) *(gains + i);
-	}
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		set_multi_gain_in_lut(ctx, values, exp_cnt);
-		return;
-	}
-	zhuquec1tele_set_multi_gain(ctx,	values, exp_cnt);
-}
-
-static int zhuquec1tele_set_hdr_tri_gain2(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-
-	u64 *feature_data = (u64 *) para;
-	zhuquec1tele_set_hdr_tri_gain(ctx, feature_data, 2);
-	return 0;
-}
-
-static int zhuquec1tele_set_hdr_tri_gain3(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-	u64 *feature_data = (u64 *) para;
-	zhuquec1tele_set_hdr_tri_gain(ctx, feature_data, 3);
-	return 0;
-}
-
-static void zhuquec1tele_set_multi_shutter_frame_length(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt, u16 frame_length)
-{
-	int i = 0;
-	u32 fine_integ_line = 0;
-	u16 last_exp_cnt = 1;
-	u32 calc_fl[3] = {0};
-	int readout_diff = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 rg_shutters[3] = {0};
-	u32 cit_step = 0;
-	u8 exposure_margin = ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin : ctx->s_ctx.exposure_margin;
-
-	if (exp_cnt == 2) {
-		LOG_INF("shutter[0]:%llu, shutter[1]:%llu, exp_cnt:%d, frame_length:%u exposure_margin:%d cit_step:%d\n",
-			shutters[0], shutters[1], exp_cnt, frame_length, exposure_margin, cit_step);
-		if (shutters[1] > shutters[0]) {
-			LOG_INF("error short shutter > long shutter");
-			shutters[1] = shutters[0];
-		}
-	} else {
-		LOG_INF("shutter[0]:%llu, exp_cnt:%d, frame_length:%u, exposure_margin:%d cit_step:%d\n",
-			shutters[0], exp_cnt, frame_length, exposure_margin, cit_step);
-	}
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max(shutters[i], (u64)ctx->s_ctx.exposure_min);
-		shutters[i] = min(shutters[i], (u64)ctx->s_ctx.exposure_max);
-		if (cit_step)
-			shutters[i] = round_up(shutters[i], cit_step);
-	}
-
-	/* check boundary of framelength */
-	/* - (1) previous se + previous me + current le */
-	calc_fl[0] = shutters[0];
-	for (i = 1; i < last_exp_cnt; i++)
-		calc_fl[0] += ctx->exposure[i];
-	calc_fl[0] += ctx->s_ctx.exposure_margin * exp_cnt * exp_cnt;
-
-	/* - (2) current se + current me + current le */
-	calc_fl[1] = shutters[0];
-	for (i = 1; i < exp_cnt; i++)
-		calc_fl[1] += shutters[i];
-	calc_fl[1] += ctx->s_ctx.exposure_margin * exp_cnt * exp_cnt;
-
-	/* - (3) readout time cannot be overlapped */
-	calc_fl[2] =
-		(ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-		ctx->s_ctx.mode[ctx->current_scenario_id].read_margin);
-
-	if (last_exp_cnt == exp_cnt)
-		for (i = 1; i < exp_cnt; i++) {
-			readout_diff = ctx->exposure[i] - shutters[i];
-			calc_fl[2] += readout_diff > 0 ? readout_diff : 0;
-		}
-	for (i = 0; i < ARRAY_SIZE(calc_fl); i++)
-		ctx->frame_length = max(ctx->frame_length, calc_fl[i]);
-
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	for (i = 0; i < exp_cnt; i++)
-		ctx->exposure[i] = shutters[i];
-	if ((ctx->exposure[0] < 0xFFF0) && bNeedSetNormalMode) {
-		DRV_LOG(ctx, "exit long shutter\n");
-		subdrv_i2c_wr_u16(ctx, 0x0702, 0x0000);
-		subdrv_i2c_wr_u16(ctx, 0x0704, 0x0000);
-		bNeedSetNormalMode = FALSE;
-	}
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		zhuquec1tele_write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	switch (exp_cnt) {
-	case 1:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		break;
-	case 2:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[2] = shutters[1] / exp_cnt;
-		break;
-	case 3:
-		rg_shutters[0] = shutters[0] / exp_cnt;
-		rg_shutters[1] = shutters[1] / exp_cnt;
-		rg_shutters[2] = shutters[2] / exp_cnt;
-		break;
-	default:
-		break;
-	}
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-
-	for (i = 0; i < 3; i++) {
-		if (rg_shutters[i]) {
-			if (ctx->s_ctx.reg_addr_exposure[i].addr[2]) {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[2],
-					rg_shutters[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[0],
-					(rg_shutters[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[i].addr[1],
-					rg_shutters[i] & 0xFF);
-			}
-		}
-	}
-	LOG_INF("exp[0x%x/0x%x/0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		rg_shutters[0], rg_shutters[1], rg_shutters[2],
-		frame_length, ctx->frame_length, ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-
-	zhuquec1tele_lens_pos_writeback(ctx);
-
-}
-
-static int zhuquec1tele_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1tele_set_multi_shutter_frame_length(ctx, (u64 *)(*feature_data),
-		(u64) (*(feature_data + 1)), (u64) (*(feature_data + 2)));
-	return 0;
-}
-
-static void zhuquec1tele_set_hdr_tri_shutter(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt)
-{
-	int i = 0;
-	u64 values[3] = {0};
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-
-	if (shutters != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u64) *(shutters + i);
-	}
-	if (ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF) {
-			zhuquec1tele_set_multi_shutter_frame_length_in_lut_convert(ctx,
-				values, exp_cnt, 0, frame_length_in_lut);
-		return;
-	}
-	zhuquec1tele_set_multi_shutter_frame_length(ctx, values, exp_cnt, 0);
-}
-
-static int zhuquec1tele_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1tele_set_hdr_tri_shutter(ctx, feature_data, 2);
-	return 0;
-}
-
-static int zhuquec1tele_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1tele_set_hdr_tri_shutter(ctx, feature_data, 3);
-	return 0;
-}
-
-bool zhuquec1tele_set_long_exposure(struct subdrv_ctx *ctx,  u64 shutter)
-{
-	u16 l_shift = 0;
-	u8 exposure_margin = ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin : ctx->s_ctx.exposure_margin;
-
-	if (shutter > (ctx->s_ctx.frame_length_max - exposure_margin)) {
-		if (ctx->s_ctx.long_exposure_support == FALSE) {
-			DRV_LOGE(ctx, "sensor no support of exposure lshift!\n");
-			return FALSE;
-		}
-		if (ctx->s_ctx.reg_addr_exposure_lshift == PARAM_UNDEFINED) {
-			DRV_LOGE(ctx, "please implement lshift register address\n");
-			return FALSE;
-		}
-		for (l_shift = 1; l_shift < 7; l_shift++) {
-			if ((shutter >> l_shift)
-				< (ctx->s_ctx.frame_length_max - exposure_margin))
-				break;
-		}
-		if (l_shift > 7) {
-			DRV_LOGE(ctx, "unable to set exposure:%llu, set to max\n", shutter);
-			l_shift = 7;
-		}
-		shutter = shutter >> l_shift;
-//		if (!ctx->s_ctx.reg_addr_auto_extend)
-//			ctx->frame_length = shutter + exposure_margin;
-		LOG_INF("long exposure mode: lshift %u times   shutter:%llu", l_shift, shutter);
-
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_frame_length.addr[0], (shutter >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_frame_length.addr[1],  shutter & 0xFF);
-
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0], (shutter >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],  shutter & 0xFF);
-
-		set_i2c_buffer(ctx, 0x0702, l_shift);
-		set_i2c_buffer(ctx, 0x0704, l_shift);
-
-		bNeedSetNormalMode = TRUE;
-		/* Frame exposure mode customization for LE*/
-		ctx->ae_frm_mode.frame_mode_1 = IMGSENSOR_AE_MODE_SE;
-		ctx->ae_frm_mode.frame_mode_2 = IMGSENSOR_AE_MODE_SE;
-//		ctx->current_ae_effective_frame = 2;
-		return TRUE;
-
-	} else {
-		if (bNeedSetNormalMode) {
-			LOG_INF("exit long exposure\n");
-			set_i2c_buffer(ctx, 0x0702, 0x00);
-			set_i2c_buffer(ctx, 0x0704, 0x00);
-			bNeedSetNormalMode = FALSE;
-		}
-		return FALSE;
-//		ctx->current_ae_effective_frame = 2;
-	}
-
-//	ctx->exposure[IMGSENSOR_STAGGER_EXPOSURE_LE] = shutter;
-	return FALSE;
-}
-static void zhuquec1tele_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length)
-{
-	u32 fine_integ_line = 0;
-	u32 cit_step = 0;
-
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u8 exposure_margin = ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].exposure_margin : ctx->s_ctx.exposure_margin;
-	LOG_INF("shutter:%llu, frame_length:%u  exposure_margin:%d\n", shutter, frame_length, exposure_margin);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->frame_length;
-	check_current_scenario_id_bound(ctx);
-	/* check boundary of shutter */
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	shutter = FINE_INTEG_CONVERT(shutter, fine_integ_line);
-	shutter = max(shutter, (u64)ctx->s_ctx.exposure_min);
-	shutter = min(shutter, (u64)ctx->s_ctx.exposure_max);
-	/* check boundary of framelength */
-
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	if (cit_step)
-		shutter = round_up(shutter, cit_step);
-
-	ctx->frame_length =	max(shutter + exposure_margin, ctx->frame_length);
-	ctx->frame_length =	min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->exposure[0] = shutter;
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-
-	if(zhuquec1tele_set_long_exposure(ctx, shutter)) {
-		goto exit;
-	}
-
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		zhuquec1tele_write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-	//set_long_exposure(ctx);
-	if (ctx->s_ctx.reg_addr_exposure[0].addr[2]) {
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0],
-			(ctx->exposure[0] >> 16) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],
-			(ctx->exposure[0] >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[2],
-			ctx->exposure[0] & 0xFF);
-	} else {
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0],
-			(ctx->exposure[0] >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],
-			ctx->exposure[0] & 0xFF);
-	}
-	LOG_INF("exp[0x%x], fll(input/output):%u/%u, flick_en:%u\n",
-		ctx->exposure[0], frame_length, ctx->frame_length, ctx->autoflicker_en);
-
-exit:
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-
-	zhuquec1tele_lens_pos_writeback(ctx);
-
-}
-
-static int zhuquec1tele_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
- 	zhuquec1tele_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], ((u64*)para)[1]);
-	return 0;
-}
-
-static void zhuquec1tele_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter)
-{
-    zhuquec1tele_set_shutter_frame_length_convert(ctx, shutter, 0);
-}
-
-static int zhuquec1tele_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	zhuquec1tele_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], 0);
-	return 0;
-}
-
-static void zhuquec1tele_set_gain_convert(struct subdrv_ctx *ctx, u32 gain)
-{
-	u16 rg_gain;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-	u32 ana_gain_min = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_min : ctx->ana_gain_min;
-	u32 ana_gain_max = ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max ?
-		ctx->s_ctx.mode[ctx->current_scenario_id].ana_gain_max : ctx->ana_gain_max;
-
-	LOG_INF("gain(%d) ana_gain_min(%d), ana_gain_max(%d)\n", gain, ana_gain_min, ana_gain_max);
-	/* check boundary of gain */
-	gain = max(gain, ana_gain_min);
-	gain = min(gain, ana_gain_max);
-
-	/* mapping of gain to register value */
-	if (ctx->s_ctx.g_gain2reg != NULL)
-		rg_gain = ctx->s_ctx.g_gain2reg(gain);
-	else
-		rg_gain = gain2reg(gain);
-
-	/* restore gain */
-	memset(ctx->ana_gain, 0, sizeof(ctx->ana_gain));
-	ctx->ana_gain[0] = gain;
-	/* group hold start */
-	if (gph && !ctx->ae_ctrl_gph_en)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* write gain */
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[0],
-		(rg_gain >> 8) & 0xFF);
-	set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_ana_gain[0].addr[1],
-		rg_gain & 0xFF);
-	DRV_LOG(ctx, "gain[0x%x]\n", rg_gain);
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 0);
-	commit_i2c_buffer(ctx);
-	/* group hold end */
-}
-
-static int zhuquec1tele_set_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	u32 gain = *feature_data;
-	zhuquec1tele_set_gain_convert(ctx, gain);
-	return 0;
-}
-
-
-
-static int zhuquec1tele_set_max_framerate_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id = (u32)((u64*)para)[0];
-	u32 framerate = (u32)((u64*)para)[1];
-	u32 frame_length;
-	u32 frame_length_step;
-
-	LOG_INF("scenario_id(%d), framerate(%d)", scenario_id, framerate);
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOG(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		scenario_id = SENSOR_SCENARIO_ID_NORMAL_PREVIEW;
-	}
-
-	if (framerate == 0) {
-		DRV_LOG(ctx, "framerate (%u) is invalid\n", framerate);
-		return 0;
-	}
-
-	if (ctx->s_ctx.mode[scenario_id].linelength == 0) {
-		DRV_LOG(ctx, "linelength (%u) is invalid\n",
-			ctx->s_ctx.mode[scenario_id].linelength);
-		return 0;
-	}
-
-	if (ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF) {
-		zhuquec1tele_set_max_framerate_in_lut_by_scenario(ctx, scenario_id, framerate);
-		return 0;
-	}
-
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	ctx->frame_length =
-		max(frame_length, ctx->s_ctx.mode[scenario_id].framelength);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	ctx->min_frame_length = ctx->frame_length;
-	LOG_INF("max_fps(input/output):%u/%u(sid:%u), min_fl_en:1\n",
-		framerate, ctx->current_fps, scenario_id);
-	if (ctx->s_ctx.reg_addr_auto_extend ||
-			(ctx->frame_length > (ctx->exposure[0] + ctx->s_ctx.exposure_margin))){
-		zhuquec1tele_set_dummy(ctx);
-	}
-	return 0;
-}
-
-void zhuquec1tele_set_max_framerate(struct subdrv_ctx *ctx, u16 framerate, bool min_framelength_en)
-{
-	u32 frame_length = 0;
-
-	if (framerate && ctx->line_length)
-		frame_length = ctx->pclk / framerate * 10 / ctx->line_length;
-	ctx->frame_length = max(frame_length, ctx->min_frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	if (ctx->frame_length && ctx->line_length)
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-	if (min_framelength_en)
-		ctx->min_frame_length = ctx->frame_length;
-	DRV_LOG(ctx, "max_fps(input/output):%u/%u, min_fl_en:%u\n",
-		framerate, ctx->current_fps, min_framelength_en);
-}	/*	set_max_framerate  */
-
-void zhuquec1tele_extend_frame_length_convert(struct subdrv_ctx *ctx, u32 ns)
-{
-	return ;
-//	int i;
-//	u32 last_exp_cnt = 1;
-//	u32 old_fl = ctx->frame_length;
-//	u32 calc_fl = 0;
-//	u32 readoutLength = 0;
-//	u32 readMargin = 0;
-//	u32 per_frame_ns = (u32)(((u64)ctx->frame_length *
-//		(u64)ctx->line_length * 1000000000) / (u64)ctx->pclk);
-//
-//	check_current_scenario_id_bound(ctx);
-//	readoutLength = ctx->s_ctx.mode[ctx->current_scenario_id].readout_length;
-//	readMargin = ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-//
-//	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-//		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-//	if (ns)
-//		ctx->frame_length = (u32)(((u64)(per_frame_ns + ns)) *
-//			ctx->frame_length / per_frame_ns);
-//	if (last_exp_cnt > 1) {
-//		calc_fl = (readoutLength + readMargin);
-//		for (i = 1; i < last_exp_cnt; i++)
-//			calc_fl += (ctx->exposure[i] + ctx->s_ctx.exposure_margin * last_exp_cnt);
-//		ctx->frame_length = max(calc_fl, ctx->frame_length);
-//	}
-//	zhuquec1tele_set_dummy(ctx);
-//	ctx->extend_frame_length_en = TRUE;
-//
-//	ns = (u32)(((u64)(ctx->frame_length - old_fl) *
-//		(u64)ctx->line_length * 1000000000) / (u64)ctx->pclk);
-//		LOG_INF("fll(old/new):%u/%u, add %u ns", old_fl, ctx->frame_length, ns);
-}
-
-static int zhuquec1tele_extend_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 ns = (u32)((u64*)para)[0];
-
-	zhuquec1tele_extend_frame_length_convert(ctx, ns);
-	return 0;
-}
-
-bool zhuquec1tele_set_auto_flicker(struct subdrv_ctx *ctx, bool min_framelength_en)
-{
-	u16 framerate = 0;
-
-	if (!ctx->line_length) {
-		DRV_LOGE(ctx, "line_length(%u) is invalid\n", ctx->line_length);
-		return FALSE;
-	}
-
-	if (!ctx->frame_length) {
-		DRV_LOGE(ctx, "frame_length(%u) is invalid\n", ctx->frame_length);
-		return FALSE;
-	}
-
-	framerate = ctx->pclk / ctx->line_length * 10 / ctx->frame_length;
-
-	DRV_LOG(ctx, "cur_fps:%u, flick_en:%u, min_fl_en:%u\n",
-		framerate, ctx->autoflicker_en, min_framelength_en);
-	if (!ctx->autoflicker_en)
-		return FALSE;
-
-	if (framerate > 592 && framerate <= 607)
-		zhuquec1tele_set_max_framerate(ctx, 592, min_framelength_en);
-	else if (framerate > 296 && framerate <= 305)
-		zhuquec1tele_set_max_framerate(ctx, 296, min_framelength_en);
-	else if (framerate > 246 && framerate <= 253)
-		zhuquec1tele_set_max_framerate(ctx, 246, min_framelength_en);
-	else if (framerate > 236 && framerate <= 243)
-		zhuquec1tele_set_max_framerate(ctx, 236, min_framelength_en);
-	else if (framerate > 146 && framerate <= 153)
-		zhuquec1tele_set_max_framerate(ctx, 146, min_framelength_en);
-	else
-		return FALSE;
-	return TRUE;
-}
-
-static int zhuquec1tele_set_video_mode(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u16 framerate = (u32)((u64*)para)[0];
-
-	if (!framerate)
-		return 0;
-	zhuquec1tele_set_max_framerate(ctx, framerate, 0);
-	zhuquec1tele_set_auto_flicker(ctx, 1);
-	zhuquec1tele_set_dummy(ctx);
-	LOG_INF("fps(input/max):%u/%u\n", framerate, ctx->current_fps);
-	return 0;
-}
-
-// static int zhuquec1tele_set_sensor_rmsc_mode(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u64 *feature_data = (u64 *)para;
-// 	u32 TimeQbc = FRAME_FRAMEDURATION_MS;
-// 	struct mtk_sensor_rmsc_mode *rmsc_mode = (struct mtk_sensor_rmsc_mode *)feature_data;
-
-// 	if (bRmscMode == rmsc_mode->qbc_rmsc_mode) {
-// 		return;
-// 	}
-// 	TimeQbc = 1000/(ctx->pclk/ctx->frame_length/ctx->line_length);
-// 	TimeQbc = TimeQbc < (FRAME_FRAMEDURATION_MS) ? (FRAME_FRAMEDURATION_MS) : TimeQbc;
-// 	msleep(TimeQbc);
-// 	LOG_INF("rmsc_mode.qbc_rmsc_mode = %d, TimeQbc %d\n", rmsc_mode->qbc_rmsc_mode, TimeQbc);
-// 	switch (rmsc_mode->qbc_rmsc_mode) {
-// 	case IMGSENSOR_QBC_RMSC_DISABLED:
-// 		subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x2001);
-// 		subdrv_i2c_wr_u16(ctx, 0x31D0, 0x0000);
-// 		subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-// 		subdrv_i2c_wr_u16(ctx, 0x0B08, 0x0100);
-// 		LOG_INF("Disable sensor QBC_RMSC_EN. Switch to qual bayer.\n");
-// 		break;
-// 	case IMGSENSOR_QBC_RMSC_ENABLED:
-// 		subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x2001);
-// 		subdrv_i2c_wr_u16(ctx, 0x31D0, 0x0200);
-// 		subdrv_i2c_wr_u16(ctx, 0xFCFC, 0x4000);
-// 		subdrv_i2c_wr_u16(ctx, 0x0B08, 0x0101);
-// 		LOG_INF("Enable sensor QBC_RMSC_EN. Switch to bayer.\n");
-// 		break;
-//         }
-//     bRmscMode = rmsc_mode->qbc_rmsc_mode;
-// 	return 0;
-// }
-
-static int zhuquec1tele_set_awb_gain(struct subdrv_ctx *ctx, u8 *para, u32 *len) {
-
-	struct SET_SENSOR_AWB_GAIN *awb_gain = (struct SET_SENSOR_AWB_GAIN *)para;
-
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D82, awb_gain->ABS_GAIN_R * 2); //red 1024(1x)
-	adaptor_i2c_wr_u16(ctx->i2c_client, ctx->i2c_write_id >> 1, 0x0D86, awb_gain->ABS_GAIN_B * 2); //blue
-
-	DRV_LOG(ctx, "ABS_GAIN_GR(%d) ABS_GAIN_R(%d) ABS_GAIN_B(%d) ABS_GAIN_GB(%d)",
-		awb_gain->ABS_GAIN_GR, awb_gain->ABS_GAIN_R, awb_gain->ABS_GAIN_B, awb_gain->ABS_GAIN_GB);
-
-	return 0;
-}
-
-static bool dump_i2c_enable = false;
-
-static void dump_i2c_buf(struct subdrv_ctx *ctx, u8 * buf, u32 length)
-{
-	int i;
-	char *out_str = NULL;
-	char *strptr = NULL;
-	size_t buf_size = SUBDRV_I2C_BUF_SIZE * sizeof(char);
-	size_t remind = buf_size;
-	int num = 0;
-
-	out_str = kzalloc(buf_size + 1, GFP_KERNEL);
-	if (!out_str)
-		return;
-
-	strptr = out_str;
-	memset(out_str, 0, buf_size + 1);
-
-	num = snprintf(strptr, remind,"[ ");
-	remind -= num;
-	strptr += num;
-
-	for (i = 0 ; i < length; i ++) {
-		num = snprintf(strptr, remind,"0x%02x, ", buf[i]);
-
-		if (num <= 0) {
-			DRV_LOG(ctx, "snprintf return negative at line %d\n", __LINE__);
-			kfree(out_str);
-			return;
-		}
-
-		remind -= num;
-		strptr += num;
-
-		if (remind <= 20) {
-			DRV_LOG(ctx, " write %s\n", out_str);
-			memset(out_str, 0, buf_size + 1);
-			strptr = out_str;
-			remind = buf_size;
-		}
-	}
-
-	num = snprintf(strptr, remind," ]");
-	remind -= num;
-	strptr += num;
-
-	DRV_LOG(ctx, " write %s\n", out_str);
-	strptr = out_str;
-	remind = buf_size;
-
-	kfree(out_str);
-}
-
-static int zhuquec1tele_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx, u16 * list, u32 len)
-{
-	adapter_i2c_burst_wr_regs_u16(ctx, ctx->i2c_write_id >> 1, list, len);
-	return 	0;
-}
-
-static int adapter_i2c_burst_wr_regs_u16(struct subdrv_ctx * ctx ,
-		u16 addr, u16 *list, u32 len)
-{
-	struct i2c_client *i2c_client = ctx->i2c_client;
-	struct i2c_msg  msg;
-	struct i2c_msg *pmsg = &msg;
-
-	u8 *pbuf = NULL;
-	u16 *plist = NULL;
-	u16 *plist_end = NULL;
-
-	u32 sent = 0;
-	u32 total = 0;
-	u32 per_sent = 0;
-	int ret, i;
-
-	if(!msg_buf) {
-		LOG_INF("malloc msg_buf retry");
-		msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-		if(!msg_buf) {
-			LOG_INF("malloc error");
-			return -ENOMEM;
-		}
-	}
-
-	/* each msg contains addr(u16) + val(u16 *) */
-	sent = 0;
-	total = len / 2;
-	plist = list;
-	plist_end = list + len - 2;
-
-	DRV_LOG(ctx, "len(%u)  total(%u)", len, total);
-
-	while (sent < total) {
-
-		per_sent = 0;
-		pmsg = &msg;
-		pbuf = msg_buf;
-
-		pmsg->addr = addr;
-		pmsg->flags = i2c_client->flags;
-		pmsg->buf = pbuf;
-
-		pbuf[0] = plist[0] >> 8;    //address
-		pbuf[1] = plist[0] & 0xff;
-
-		pbuf[2] = plist[1] >> 8;  //data 1
-		pbuf[3] = plist[1] & 0xff;
-
-		pbuf += 4;
-		pmsg->len = 4;
-		per_sent += 1;
-
-		for (i = 0; i < total - sent - 1; i++) {  //Maximum number of remaining cycles - 1
-			if(plist[0] + 2 == plist[2] ) {  //Addresses are consecutive
-				pbuf[0] = plist[3] >> 8;
-				pbuf[1] = plist[3] & 0xff;
-
-				pbuf += 2;
-				pmsg->len += 2;
-				per_sent += 1;
-				plist += 2;
-
-				if(pmsg->len >= MAX_BURST_LEN) {
-					break;
-				}
-			}
-		}
-		plist += 2;
-
-		if(dump_i2c_enable) {
-			DRV_LOG(ctx, "pmsg->len(%d) buff: ", pmsg->len);
-			dump_i2c_buf(ctx, msg_buf, pmsg->len);
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmsg, 1);
-
-		if (ret < 0) {
-			dev_info(&i2c_client->dev,
-				"i2c transfer failed (%d)\n", ret);
-			return -EIO;
-		}
-
-		sent += per_sent;
-
-		DRV_LOG(ctx, "sent(%u)  total(%u)  per_sent(%u)", sent, total, per_sent);
-	}
-
-	return 0;
-}
-
-#define ZHUQUEC1TELE_AF_READ_ID  (0x1f)  //DW9827C
-#define ZHUQUEC1TELE_AF_POSITON_ADD  (0x00)
-
-static bool read_af_pos(struct subdrv_ctx *ctx, u16 *positon)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-	struct i2c_client *i2c_client = ctx->i2c_client;
-
-	buf[0] = ZHUQUEC1TELE_AF_POSITON_ADD;
-
-	msg[0].addr = ZHUQUEC1TELE_AF_READ_ID >> 1;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = 1;
-
-	msg[1].addr  = ZHUQUEC1TELE_AF_READ_ID >> 1;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 2;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return false;
-	}
-
-	*positon = (((u16)buf[0] << 8) | buf[1]) >> 6;
-
-	return true;
-}
-
-static u16 lens_position_setting[] = {
-	0xFCFC, 0x2001,
-	0x2566, 0x0000,
-	0xFCFC, 0x4000,
-};
-
-static void zhuquec1tele_lens_pos_writeback(struct subdrv_ctx *ctx)
-{
-	static kal_uint16 pre_af_pos = -1;
-	kal_uint16 af_pos = 0;
-	kal_uint16 write_pos = 0;
-	kal_uint16 write_pos_cover = 0;
-
-	bool ret;
-
-	if (ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM3 ||  // RMSC
-		ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM5 ||
-		ctx->current_scenario_id == SENSOR_SCENARIO_ID_CUSTOM18) { // izoom
-
-		ret = read_af_pos(ctx, &af_pos);
-		if(ret == false || g_af_code_macro == 0 || g_af_code_infinity == 0 || g_af_code_macro == g_af_code_infinity) {
-			pr_err("%s ret(%d) ",__func__, ret);
-			return ;
-		}
-
-		if(pre_af_pos == af_pos) {
-			DRV_LOG(ctx,"%s same af positon", __func__);
-			return ;
-		}
-		pre_af_pos = af_pos;
-
-		if(af_pos < g_af_code_infinity) {
-			af_pos = g_af_code_infinity;
-		}
-		if(af_pos > g_af_code_macro) {
-			af_pos = g_af_code_macro;
-		}
-
-		write_pos = (u32)(af_pos - g_af_code_infinity) * 1023 / (g_af_code_macro - g_af_code_infinity);
-
-		write_pos_cover = ((write_pos >> 8) & 0xff) | ((write_pos << 8) & 0xff00);
-
-		lens_position_setting[3] = write_pos_cover;
-
-		DRV_LOG(ctx,"%s af_pos(%d), write_pos(0x%x) write_pos_cover(0x%x)",
-			__func__, af_pos, write_pos, write_pos_cover);
-
-		subdrv_i2c_wr_regs_u16(ctx, lens_position_setting, ARRAY_SIZE(lens_position_setting));
-	}
-}
-
-static int zhuquec1tele_set_register(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	subdrv_i2c_wr_u16(ctx, 0x6028, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr>>16);
-	subdrv_i2c_wr_u16(ctx, 0x602A, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr);
-	subdrv_i2c_wr_u16(ctx, 0x6F12, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-	pr_err("Indirect write RegAddr: 0x%08x, RegData: 0x%04x \n",
-		((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-	return 0;
-}
-
-static int zhuquec1tele_get_register(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	subdrv_i2c_wr_u16(ctx, 0x602C, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr>>16);
-	subdrv_i2c_wr_u16(ctx, 0x602E, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr);
-	((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData = subdrv_i2c_rd_u16(ctx, 0x6F12);
-	pr_err("Indirect read  RegAddr: 0x%08x, RegData: 0x%04x \n",
-		((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegAddr, ((MSDK_SENSOR_REG_INFO_STRUCT *)para)->RegData);
-	return 0;
-}
-
-
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id) {
-	struct subdrv_entry *m_subdrv_entry = &zhuquec1tele_mipi_raw_entry;
-	u32 final_sensor_id = 0xFFFFFFFF;
-	const char *of_sensor_names[OF_SENSOR_NAMES_MAXCNT];
-	const char *of_sensor_hal_names[OF_SENSOR_NAMES_MAXCNT];
-	u32   of_sensor_ids[OF_SENSOR_NAMES_MAXCNT] = {0};
-	int i, index, of_sensor_names_cnt, of_sensor_hal_names_cnt, of_sensor_ids_ret;
-	struct device *dev = &ctx->i2c_client->dev;
-
-	memset(&of_sensor_ids, 0xFF, sizeof(of_sensor_ids));
-
-	if(g_id_from_dts_flag == false) {
-		of_sensor_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-names", of_sensor_names, ARRAY_SIZE(of_sensor_names));
-
-		of_sensor_hal_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-hal-names", of_sensor_hal_names, ARRAY_SIZE(of_sensor_hal_names));
-
-		of_sensor_ids_ret = of_property_read_u32_array(dev->of_node,
-				"sensor-ids", of_sensor_ids, of_sensor_names_cnt);
-
-		pr_err("%s of_sensor_names_cnt(%d), of_sensor_ids_ret(%d)",
-			__func__, of_sensor_names_cnt, of_sensor_ids_ret);
-		for(i = 0 ;i < of_sensor_names_cnt; i++) {
-				pr_err("%s of_sensor_names[%d] = %s  of_sensor_ids[%d] = %d",
-				__func__, i, of_sensor_names[i], i, of_sensor_ids[i]);
-		}
-		for(i = 0 ;i < of_sensor_hal_names_cnt; i++) {
-			pr_err("%s of_sensor_hal_names_cnt[%d] = %s",
-				__func__, i, of_sensor_hal_names[i]);
-		}
-
-		if (of_sensor_names_cnt && (of_sensor_ids_ret == 0)) {
-			for(index = 0; index < of_sensor_names_cnt; index++) {
-				if (strncmp(SENSOR_NAME, of_sensor_names[index], strlen(SENSOR_NAME)) == 0) {
-					final_sensor_id = of_sensor_ids[index];
-					break;
-				}
-			}
-		} else {
-			pr_err("%s sensor-ids error in dts", __func__);
-		}
-		g_id_from_dts_flag = true;
-	}
-
-	if(final_sensor_id != 0xFFFFFFFF) {
-		*sensor_id = final_sensor_id;
-		ctx->s_ctx.sensor_id = final_sensor_id;
-
-		m_subdrv_entry->id = final_sensor_id;
-		if(of_sensor_hal_names_cnt == of_sensor_names_cnt) {
-			m_subdrv_entry->name = of_sensor_hal_names[index];
-		}
-
-		pr_err("%s final index(%d), id(%d) name(%s)",
-			__func__, index, m_subdrv_entry->id, m_subdrv_entry->name);
-	} else {
-		*sensor_id = ctx->s_ctx.sensor_id;
-	}
-
-	return;
-}
-
-
-static void zhuquec1tele_write_frame_length_in_lut(struct subdrv_ctx *ctx, u32 fll, u32 *fll_in_lut)
-{
-	int i = 0;
-	u32 frame_length_buf;
-	u32 fll_step = 0;
-	u32 min_fll = 0;
-
-	check_current_scenario_id_bound(ctx);
-	fll_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	// manual mode
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt) {
-	case 2:
-		if (fll_step) {
-			fll_in_lut[0] =
-				roundup(fll_in_lut[0], fll_step);
-			fll_in_lut[1] =
-				roundup(fll_in_lut[1], fll_step);
-		}
-		min_fll = ctx->s_ctx.mode[ctx->current_scenario_id].framelength / 2;
-
-		if (fll_in_lut[0] < fll_in_lut[1]) {
-			if (fll_in_lut[0] < min_fll) {
-				fll_in_lut[1] -= min_fll - fll_in_lut[0];
-				fll_in_lut[0] = min_fll;
-			}
-		} else {
-			if (fll_in_lut[1] < min_fll) {
-				fll_in_lut[0] -= min_fll - fll_in_lut[1];
-				fll_in_lut[1] = min_fll;
-			}
-		}
-		fll_in_lut[2] = 0;
-		fll_in_lut[3] = 0;
-		fll_in_lut[4] = 0;
-		ctx->frame_length_in_lut[0] = fll_in_lut[0];
-		ctx->frame_length_in_lut[1] = fll_in_lut[1];
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1];
-		break;
-	case 3:
-		if (fll_step) {
-			fll_in_lut[0] =
-				roundup(fll_in_lut[0], fll_step);
-			fll_in_lut[1] =
-				roundup(fll_in_lut[1], fll_step);
-			fll_in_lut[2] =
-				roundup(fll_in_lut[2], fll_step);
-		}
-		fll_in_lut[3] = 0;
-		fll_in_lut[4] = 0;
-		ctx->frame_length_in_lut[0] = fll_in_lut[0];
-		ctx->frame_length_in_lut[1] = fll_in_lut[1];
-		ctx->frame_length_in_lut[2] = fll_in_lut[2];
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] +
-			ctx->frame_length_in_lut[1] +
-			ctx->frame_length_in_lut[2];
-		break;
-	default:
-		break;
-	}
-
-	if (ctx->extend_frame_length_en == FALSE) {
-		frame_length_buf = 0;
-		for (i = 0; i < 3; i++) {
-			if (fll_in_lut[i]) {
-				if (ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[2]) {
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[0],
-						(fll_in_lut[i] >> 16) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[1],
-						(fll_in_lut[i] >> 8) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[2],
-						fll_in_lut[i] & 0xFF);
-				} else {
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[0],
-						(fll_in_lut[i] >> 8) & 0xFF);
-					set_i2c_buffer(ctx,
-						ctx->s_ctx.reg_addr_frame_length_in_lut[i].addr[1],
-						fll_in_lut[i] & 0xFF);
-				}
-				/* update FL_lut RG value after setting buffer for writing RG */
-				ctx->frame_length_in_lut_rg[i] = fll_in_lut[i];
-				frame_length_buf +=
-					ctx->frame_length_in_lut_rg[i];
-			}
-		}
-		/* update FL RG value simultaneously */
-		ctx->frame_length_rg = frame_length_buf;
-
-		DRV_LOG(ctx,
-			"ctx:(fl(RG):%u,%u/%u/%u/%u/%u), scen_id:%u,fll(input/ctx/output_a/b/c/d/e):0x%x/%x/%x/%x/%x/%x/%x,fll_step:%u\n",
-			ctx->frame_length_rg,
-			ctx->frame_length_in_lut_rg[0],
-			ctx->frame_length_in_lut_rg[1],
-			ctx->frame_length_in_lut_rg[2],
-			ctx->frame_length_in_lut_rg[3],
-			ctx->frame_length_in_lut_rg[4],
-			ctx->current_scenario_id,
-			fll,
-			ctx->frame_length,
-			fll_in_lut[0],
-			fll_in_lut[1],
-			fll_in_lut[2],
-			fll_in_lut[3],
-			fll_in_lut[4],
-			fll_step);
-	} else {
-		DRV_LOG(ctx,
-			"sid:%u,extend_frame_length_en:%u,default won't write fll!\n",
-			ctx->current_scenario_id, ctx->extend_frame_length_en);
-		return;
-	}
-}
-
-static int zhuquec1tele_set_multi_shutter_frame_length_in_lut(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-	zhuquec1tele_set_multi_shutter_frame_length_in_lut_convert(ctx,
-		(u64 *)(*feature_data),
-		(u16) (*(feature_data + 1)),
-		(u32) (*(feature_data + 2)),
-		(u32 *) (*(feature_data + 3)));
-	return 0;
-}
-
-static void zhuquec1tele_set_multi_shutter_frame_length_in_lut_convert(struct subdrv_ctx *ctx,
-	u64 *shutters, u16 exp_cnt, u32 frame_length, u32 *frame_length_in_lut)
-{
-	int i = 0;
-	u16 last_exp_cnt = 1;
-	int fine_integ_line = 0;
-	u32 frame_length_step;
-	u32 cit_step = 0;
-	u32 cit_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 calc_fl_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->min_frame_length;
-	DRV_LOGE(ctx, "frame_length:%d, ctx->frame_length:%d \n", frame_length, ctx->frame_length );
-	if (exp_cnt > ARRAY_SIZE(ctx->exposure)) {
-		DRV_LOGE(ctx, "invalid exp_cnt:%u>%lu\n", exp_cnt, ARRAY_SIZE(ctx->exposure));
-		exp_cnt = ARRAY_SIZE(ctx->exposure);
-	}
-	check_current_scenario_id_bound(ctx);
-
-	/* check boundary of shutter */
-	for (i = 1; i < ARRAY_SIZE(ctx->exposure); i++)
-		last_exp_cnt += ctx->exposure[i] ? 1 : 0;
-
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	cit_step = ctx->s_ctx.mode[ctx->current_scenario_id].coarse_integ_step;
-	frame_length_step = ctx->s_ctx.mode[ctx->current_scenario_id].framelength_step;
-
-	/* manual mode */
-	for (i = 0; i < exp_cnt; i++) {
-		shutters[i] = FINE_INTEG_CONVERT(shutters[i], fine_integ_line);
-		shutters[i] = max_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].min);
-		shutters[i] = min_t(u64, shutters[i],
-			(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[i].max);
-		if (cit_step)
-			shutters[i] = roundup(shutters[i], cit_step);
-
-		/* update frame_length_in_lut */
-		ctx->frame_length_in_lut[i] = frame_length_in_lut[i] ?
-			frame_length_in_lut[i] : 0;
-		/* check boundary of framelength in lut */
-		ctx->frame_length_in_lut[i] =
-			min(ctx->frame_length_in_lut[i], ctx->s_ctx.frame_length_max);
-	}
-
-	for (i = 0; i < exp_cnt; i++) {
-		/* update cit_in_lut depends on exposure_order_in_lbmf */
-		if (ctx->s_ctx.mode[ctx->current_scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-			/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-			cit_in_lut[i] = shutters[exp_cnt - 1 - i];
-		} else if (ctx->s_ctx.mode[ctx->current_scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-			/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-			/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-			cit_in_lut[i] = shutters[i];
-		} else {
-			DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-			return;
-		}
-	}
-
-	switch (ctx->s_ctx.mode[ctx->current_scenario_id].exp_cnt) {
-	case 2:
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_a = max(readout, current shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_b = max(readout, current shutter_a) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-
-		/* fll_a = max(fll_a, userInput_fll_a) */
-		ctx->frame_length_in_lut[0] =
-			max(ctx->frame_length_in_lut[0], calc_fl_in_lut[0]);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(ctx->frame_length_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b = max(fll_b, userInput_fll_b) */
-		ctx->frame_length_in_lut[1] =
-			max(ctx->frame_length_in_lut[1], calc_fl_in_lut[1]);
-
-		if (ctx->frame_length >= ctx->frame_length_in_lut[0]) {
-			/* fll_b = max(fll_b, fll-fll_a) */
-			ctx->frame_length_in_lut[1] =
-				max(ctx->frame_length_in_lut[1],
-					ctx->frame_length - ctx->frame_length_in_lut[0]);
-		}
-
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(ctx->frame_length_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* lut[2] no use, and assign zero */
-		ctx->frame_length_in_lut[2] = 0;
-		/* lut[3] no use, and assign zero */
-		ctx->frame_length_in_lut[3] = 0;
-		/* lut[4] no use, and assign zero */
-		ctx->frame_length_in_lut[4] = 0;
-		break;
-	case 3:
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_a = max(readout, current shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_b = max(readout, current shutter_c) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[2] + ctx->s_ctx.exposure_margin);
-		/* fll_c_min = readout + xx lines(margin) */
-		calc_fl_in_lut[2] =
-			ctx->s_ctx.mode[ctx->current_scenario_id].readout_length +
-			ctx->s_ctx.mode[ctx->current_scenario_id].read_margin;
-		/* fll_c = max(readout, current shutter_a) */
-		calc_fl_in_lut[2] =
-			max(calc_fl_in_lut[2], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-
-		/* fll_a = max(fll_a, userInput_fll_a) */
-		ctx->frame_length_in_lut[0] =
-			max(ctx->frame_length_in_lut[0], calc_fl_in_lut[0]);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(ctx->frame_length_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b = max(fll_b, userInput_fll_b) */
-		ctx->frame_length_in_lut[1] =
-			max(ctx->frame_length_in_lut[1], calc_fl_in_lut[1]);
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(ctx->frame_length_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* fll_c = max(fll_c, userInput_fll_c) */
-		ctx->frame_length_in_lut[2] =
-			max(ctx->frame_length_in_lut[2], calc_fl_in_lut[2]);
-
-		if (ctx->frame_length >=
-			(ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1])) {
-			/* fll_c = max(fll_c, fll-fll_b-fll_a) */
-			ctx->frame_length_in_lut[2] =
-				max(ctx->frame_length_in_lut[2],
-					(ctx->frame_length - ctx->frame_length_in_lut[1] -
-					ctx->frame_length_in_lut[0]));
-		}
-
-		/* fll_c = min(fll_c, fll_max) */
-		ctx->frame_length_in_lut[2] =
-			min(ctx->frame_length_in_lut[2], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[2] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[2], frame_length_step) :
-			ctx->frame_length_in_lut[2];
-		/* lut[3] no use, and assign zero */
-		ctx->frame_length_in_lut[3] = 0;
-		/* lut[4] no use, and assign zero */
-		ctx->frame_length_in_lut[4] = 0;
-		break;
-	default:
-		break;
-	}
-
-	/* restore shutter & update framelength */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->frame_length = 0;
-	for (i = 0; i < exp_cnt; i++) {
-		ctx->exposure[i] = shutters[i];
-		ctx->frame_length += ctx->frame_length_in_lut[i];
-	}
-	/* check boundary of framelength */
-	ctx->frame_length =	max(ctx->frame_length, ctx->min_frame_length);
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	set_auto_flicker(ctx, 0);
-
-	zhuquec1tele_write_frame_length_in_lut(ctx, ctx->frame_length, ctx->frame_length_in_lut);
-
-	/* write shutter: LUT register differs from DOL */
-	if (ctx->s_ctx.reg_addr_exposure_lshift != PARAM_UNDEFINED) {
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_exposure_lshift, 0);
-		ctx->l_shift = 0;
-	}
-	for (i = 0; i < 3; i++) {
-		if (cit_in_lut[i]) {
-			if (ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[2]) {
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[0],
-					(cit_in_lut[i] >> 16) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[1],
-					(cit_in_lut[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[2],
-					cit_in_lut[i] & 0xFF);
-			} else {
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[0],
-					(cit_in_lut[i] >> 8) & 0xFF);
-				set_i2c_buffer(ctx,
-					ctx->s_ctx.reg_addr_exposure_in_lut[i].addr[1],
-					cit_in_lut[i] & 0xFF);
-			}
-		}
-	}
-
-	DRV_LOG(ctx,
-		"sid:%u,shutter(input/lut):0x%llx/%llx/%llx,%x/%x/%x,flInLUT(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%u,flick_en:%d\n",
-		ctx->current_scenario_id,
-		shutters[0], shutters[1], shutters[2],
-		cit_in_lut[0], cit_in_lut[1], cit_in_lut[2],
-		frame_length, ctx->frame_length,
-		ctx->frame_length_in_lut[0],
-		ctx->frame_length_in_lut[1],
-		ctx->frame_length_in_lut[2],
-		ctx->frame_length_in_lut[3],
-		ctx->frame_length_in_lut[4],
-		ctx->autoflicker_en);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-}
-
-static void zhuquec1tele_set_max_framerate_in_lut_by_scenario(struct subdrv_ctx *ctx,
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id, u32 framerate)
-{
-	u32 frame_length = 0;
-	u32 frame_length_step = 0;
-	u16 exp_cnt = 0;
-	u32 cit_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 calc_fl_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	int i;
-
-	frame_length = ctx->s_ctx.mode[scenario_id].pclk / framerate * 10
-		/ ctx->s_ctx.mode[scenario_id].linelength;
-	frame_length_step = ctx->s_ctx.mode[scenario_id].framelength_step;
-	frame_length = frame_length_step ?
-		(frame_length - (frame_length % frame_length_step)) : frame_length;
-	ctx->frame_length =
-		max(frame_length, ctx->s_ctx.mode[scenario_id].framelength);
-
-	/* set default frame length if given default framerate */
-	if (framerate ==  ctx->s_ctx.mode[scenario_id].max_framerate)
-		ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-
-	// manual mode
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	switch (exp_cnt) {
-	case 2:
-		for (i = 0; i < exp_cnt; i++) {
-			/*  update cit_in_lut depends on exposure_order_in_lbmf */
-			if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-				/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-				/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-				cit_in_lut[i] = ctx->exposure[exp_cnt - 1 - i];
-			} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-				/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-				/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-				cit_in_lut[i] = ctx->exposure[i];
-			} else {
-				DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-				return;
-			}
-		}
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_a = max(readout, previous shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(calc_fl_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_b = max(readout, previous shutter_a) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-		if (ctx->frame_length >= ctx->frame_length_in_lut[0]) {
-			/* fll_b = max(fll_b, fll_mode_max-fll_a) */
-			calc_fl_in_lut[1] =
-				max(calc_fl_in_lut[1],
-					ctx->frame_length - ctx->frame_length_in_lut[0]);
-		}
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(calc_fl_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		ctx->frame_length_in_lut[2] = 0;
-		ctx->frame_length_in_lut[3] = 0;
-		ctx->frame_length_in_lut[4] = 0;
-		/* update framelength */
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1];
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-		ctx->min_frame_length = ctx->frame_length;
-		DRV_LOG(ctx,
-			"sid:%u,max_fps(input/output):%u/%u,min_fl_en:1,lut order:%u,fll(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%un",
-			scenario_id,
-			framerate, ctx->current_fps,
-			ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf,
-			frame_length,
-			ctx->frame_length,
-			ctx->frame_length_in_lut[0],
-			ctx->frame_length_in_lut[1],
-			ctx->frame_length_in_lut[2],
-			ctx->frame_length_in_lut[3],
-			ctx->frame_length_in_lut[4]);
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				zhuquec1tele_set_dummy(ctx);
-		} else {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				zhuquec1tele_set_dummy(ctx);
-		}
-		break;
-	case 3:
-		for (i = 0; i < exp_cnt; i++) {
-			/*  update cit_in_lut depends on exposure_order_in_lbmf */
-			if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-				/* 2exp: cit_lut_a = SE / cit_lut_b = LE */
-				/* 3exp: cit_lut_a = SE / cit_lut_b = ME / cit_lut_c = LE */
-				cit_in_lut[i] = ctx->exposure[exp_cnt - 1 - i];
-			} else if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-				IMGSENSOR_LBMF_EXPOSURE_LE_FIRST) {
-				/* 2exp: cit_lut_a = LE / cit_lut_b = SE */
-				/* 3exp: cit_lut_a = LE / cit_lut_b = ME / cit_lut_c = SE */
-				cit_in_lut[i] = ctx->exposure[i];
-			} else {
-				DRV_LOGE(ctx, "pls assign exposure_order_in_lbmf value!\n");
-				return;
-			}
-		}
-		/* fll_a_min = readout + xx lines(margin) */
-		calc_fl_in_lut[0] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_a = max(readout, previous shutter_b) */
-		calc_fl_in_lut[0] =
-			max(calc_fl_in_lut[0], cit_in_lut[1] + ctx->s_ctx.exposure_margin);
-		/* fll_a = min(fll_a, fll_max) */
-		ctx->frame_length_in_lut[0] =
-			min(calc_fl_in_lut[0], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[0] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[0], frame_length_step) :
-			ctx->frame_length_in_lut[0];
-		/* fll_b_min = readout + xx lines(margin) */
-		calc_fl_in_lut[1] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_b = max(readout, previous shutter_c) */
-		calc_fl_in_lut[1] =
-			max(calc_fl_in_lut[1], cit_in_lut[2] + ctx->s_ctx.exposure_margin);
-		/* fll_b = min(fll_b, fll_max) */
-		ctx->frame_length_in_lut[1] =
-			min(calc_fl_in_lut[1], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[1] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[1], frame_length_step) :
-			ctx->frame_length_in_lut[1];
-		/* fll_c_min = readout + xx lines(margin) */
-		calc_fl_in_lut[2] =
-			ctx->s_ctx.mode[scenario_id].readout_length +
-			ctx->s_ctx.mode[scenario_id].read_margin;
-		/* fll_c = max(readout, previous shutter_a) */
-		calc_fl_in_lut[2] =
-			max(calc_fl_in_lut[2], cit_in_lut[0] + ctx->s_ctx.exposure_margin);
-		if (ctx->frame_length >=
-			(ctx->frame_length_in_lut[0] + ctx->frame_length_in_lut[1])) {
-			/* fll_c = max(fll_c, fll_mode_max-fll_b-fll_a) */
-			calc_fl_in_lut[2] =
-				max(calc_fl_in_lut[2],
-					(ctx->frame_length - ctx->frame_length_in_lut[1] -
-					ctx->frame_length_in_lut[0]));
-		}
-		/* fll_c = min(fll_c, fll_max) */
-		ctx->frame_length_in_lut[2] =
-			min(calc_fl_in_lut[2], ctx->s_ctx.frame_length_max);
-		ctx->frame_length_in_lut[2] = frame_length_step ?
-			roundup(ctx->frame_length_in_lut[2], frame_length_step) :
-			ctx->frame_length_in_lut[2];
-		ctx->frame_length_in_lut[3] = 0;
-		ctx->frame_length_in_lut[4] = 0;
-		/* update framelength */
-		ctx->frame_length =
-			ctx->frame_length_in_lut[0] +
-			ctx->frame_length_in_lut[1] +
-			ctx->frame_length_in_lut[2];
-		ctx->current_fps = ctx->pclk / ctx->frame_length * 10 / ctx->line_length;
-		ctx->min_frame_length = ctx->frame_length;
-		DRV_LOG(ctx,
-			"sid:%u,max_fps(input/output):%u/%u,min_fl_en:1,lut order:%u,fll(input/ctx/output_a/b/c/d/e):%u/%u/%u/%u/%u/%u/%u\n",
-			scenario_id,
-			framerate, ctx->current_fps,
-			ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf,
-			frame_length,
-			ctx->frame_length,
-			ctx->frame_length_in_lut[0],
-			ctx->frame_length_in_lut[1],
-			ctx->frame_length_in_lut[2],
-			ctx->frame_length_in_lut[3],
-			ctx->frame_length_in_lut[4]);
-		if (ctx->s_ctx.mode[scenario_id].exposure_order_in_lbmf ==
-			IMGSENSOR_LBMF_EXPOSURE_SE_FIRST) {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[2] >
-				(ctx->exposure[2] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				zhuquec1tele_set_dummy(ctx);
-		} else {
-			if (ctx->s_ctx.reg_addr_auto_extend ||
-				(ctx->frame_length_in_lut[0] >
-				(ctx->exposure[1] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[1] >
-				(ctx->exposure[2] + ctx->s_ctx.mode[scenario_id].read_margin)) ||
-				(ctx->frame_length_in_lut[2] >
-				(ctx->exposure[0] + ctx->s_ctx.mode[scenario_id].read_margin)))
-				zhuquec1tele_set_dummy(ctx);
-		}
-		break;
-	default:
-		break;
-	}
-}
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1telemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1telemipiraw_Sensor.h
deleted file mode 100755
index 67266a71..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1tele_mipi_raw/zhuquec1telemipiraw_Sensor.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     NVWATELEmipi_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _ZHUQUEC1TELEMIPI_SENSOR_H
-#define _ZHUQUEC1TELEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "zhuquec1tele_ana_gain_table.h"
-#include "zhuquec1tele_Sensor_setting.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/Makefile b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/Makefile
deleted file mode 100755
index efacd663..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2020 MediaTek Inc.
-
-imgsensor_isp8-objs += \
-	$(subdrv-rpath)/zhuquec1widemipiraw_Sensor.o \
-
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M00-4096x3072-PD-992x760-HighGain-30fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M00-4096x3072-PD-992x760-HighGain-30fps.txt
deleted file mode 100755
index 9b24cee8..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M00-4096x3072-PD-992x760-HighGain-30fps.txt
+++ /dev/null
@@ -1,234 +0,0 @@
-@@M01-4096x3072-PD-992x760-HighGain-30fps
-
-99 4096 3072
-98 1 0
-102 80 1
-102 81 0
-102 910 1  	;status bar display on
-102 3601 bb8 	;Pather tool use only
-102 d4 1003 	;10bit raw
-102 9c1 1000	;VC0 Hsize
-102 9c5 c00	;VC0 Vsize
-102 9c2 3e0	;VC1 Hsize
-102 9c6 2f8	;VC1 Vsize
-110 20 10 	;DPHY 1.2 
-110 40 0
-102 670 32	;delay
-110 c0 2400
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 1e
-6c 3502 90
-6c 3508 03
-6c 3509 00
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 18
-6c 3807 3f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d a9
-6c 380e 1e
-6c 380f a0
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 0f
-6c 381b 48
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 20
-6c 388c 0f
-6c 388d 80
-6c 388e 0b
-6c 388f e0
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 3e;;1f 992 pd pixel per package 20241202
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4932 00
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5001 01
-6c 5005 02
-6c 5006 80
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51d9 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51de 00
-6c 51df 00
-6c 51e0 02
-6c 51e1 02
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5202 06
-6c 5203 10
-6c 5205 08
-6c 5250 14
-6c 5251 00
-6c 5252 00
-6c 5253 00
-6c 5258 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527a 00
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f5 01
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-6c 0100 01
-
-110 80 10 	;10bit
-110 40 03 	;VC0,VC1
-102 d4 1003	;
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M01-4096x2304-PD-992x576-HighGain-30fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M01-4096x2304-PD-992x576-HighGain-30fps.txt
deleted file mode 100755
index c8710450..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M01-4096x2304-PD-992x576-HighGain-30fps.txt
+++ /dev/null
@@ -1,229 +0,0 @@
-@@M02-4096x2304-PD-992x576-HighGain-30fps
-
-99 4096 2304
-102 3601 bb8 	;Pather tool use only
-102 d4 1003 	;10bit raw
-102 9c1 1000	;VC0 Hsize
-102 9c5 900	;VC0 Vsize
-102 9c2 3e0	;VC1 Hsize
-102 9c6 240	;VC1 Vsize
-110 20 10 	;DPHY 1.2 
-110 40 0
-102 670 32	;delay
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 13
-6c 3502 f8
-6c 3508 04
-6c 3509 00
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 03
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 15
-6c 3807 3f
-6c 3808 10
-6c 3809 00
-6c 380a 09
-6c 380b 00
-6c 380c 01
-6c 380d a9 ;45
-6c 380e 1e ;13
-6c 380f a0 ;d8
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 09
-6c 381b fc
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 10
-6c 388c 0f
-6c 388d 80
-6c 388e 09
-6c 388f 00
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 3e;;1f 992 pd pixel per package 20241202
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4932 00
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5001 01
-6c 5005 02
-6c 5006 80
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51d9 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51de 00
-6c 51df 00
-6c 51e0 02
-6c 51e1 02
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5202 06
-6c 5203 10
-6c 5205 08
-6c 5250 14
-6c 5251 00
-6c 5252 00
-6c 5253 00
-6c 5258 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527a 00
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f5 01
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-6c 0100 01
-
-110 80 10 	;10bit
-110 40 03 	;VC0,VC1
-102 d4 1003	;
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M02-4096x2304-PD-992x576-NoralGain-60fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M02-4096x2304-PD-992x576-NoralGain-60fps.txt
deleted file mode 100755
index 03f00d87..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M02-4096x2304-PD-992x576-NoralGain-60fps.txt
+++ /dev/null
@@ -1,229 +0,0 @@
-@@M03-4096x2304-PD-992x576-NoralGain-60fps
-
-99 4096 2304
-102 3601 12c0 	;Pather tool use only
-102 d4 1003 	;10bit raw
-102 9c1 1000	;VC0 Hsize
-102 9c5 900	;VC0 Vsize
-102 9c2 3e0	;VC1 Hsize
-102 9c6 240	;VC1 Vsize
-110 20 10 	;DPHY 1.2 
-110 40 0
-102 670 32	;delay
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 13
-6c 3502 c8
-6c 3508 04
-6c 3509 00
-6c 3738 60
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 40
-6c 373d 12
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 03
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 15
-6c 3807 3f
-6c 3808 10
-6c 3809 00
-6c 380a 09
-6c 380b 00
-6c 380c 01
-6c 380d 48 ;45
-6c 380e 13 ;14
-6c 380f d8 ;08
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 09
-6c 381b fc
-6c 381c 01
-6c 381d 45
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d 45
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 10
-6c 388c 0f
-6c 388d 80
-6c 388e 09
-6c 388f 00
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 3e;;1f 992 pd pixel per package 20241202
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4932 00
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5001 01
-6c 5005 02
-6c 5006 80
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51d9 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51de 00
-6c 51df 00
-6c 51e0 02
-6c 51e1 02
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5202 06
-6c 5203 10
-6c 5205 08
-6c 5250 14
-6c 5251 00
-6c 5252 00
-6c 5253 00
-6c 5258 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527a 00
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f5 01
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 14
-6c 801d 6a
-6c 801a 6a
-6c 0100 01
-
-110 80 10 	;10bit
-110 40 03 	;VC0,VC1
-102 d4 1003	;
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M03-4096x2048-PD-992x512-HighGain-30fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M03-4096x2048-PD-992x512-HighGain-30fps.txt
deleted file mode 100755
index 53eb8018..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M03-4096x2048-PD-992x512-HighGain-30fps.txt
+++ /dev/null
@@ -1,229 +0,0 @@
-@@M02-4096x2048-PD-992x512-HighGain-30fps
-
-99 4096 2048
-102 3601 bb8 	;Pather tool use only
-102 d4 1003 	;10bit raw
-102 9c1 1000	;VC0 Hsize
-102 9c5 800	;VC0 Vsize
-102 9c2 3e0	;VC1 Hsize
-102 9c6 200	;VC1 Vsize
-110 20 10 	;DPHY 1.2 
-110 40 0
-102 670 32	;delay
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 13
-6c 3502 f8
-6c 3508 04
-6c 3509 00
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 00
-6c 3801 00
-6c 3802 04 ;03
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 14 ;15
-6c 3807 3f ;3f
-6c 3808 10
-6c 3809 00
-6c 380a 08
-6c 380b 00
-6c 380c 01
-6c 380d a9 ;45
-6c 380e 1e ;13
-6c 380f a0 ;d8
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 09
-6c 381b fc
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 10
-6c 388c 0f
-6c 388d 80
-6c 388e 08
-6c 388f 00
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 3e;;1f 992 pd pixel per package 20241202
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4932 00
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5001 01
-6c 5005 02
-6c 5006 80
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51d9 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51de 00
-6c 51df 00
-6c 51e0 02
-6c 51e1 02
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5202 06
-6c 5203 10
-6c 5205 08
-6c 5250 14
-6c 5251 00
-6c 5252 00
-6c 5253 00
-6c 5258 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527a 00
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f5 01
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-6c 0100 01
-
-110 80 10 	;10bit
-110 40 03 	;VC0,VC1
-102 d4 1003	;
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M05-3200x2400-PD-800x600-HighGain-24fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M05-3200x2400-PD-800x600-HighGain-24fps.txt
deleted file mode 100755
index 95f35fac..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M05-3200x2400-PD-800x600-HighGain-24fps.txt
+++ /dev/null
@@ -1,234 +0,0 @@
-@@M05-3200x2400-PD-800x600-HighGain-30fps
-
-99 3200 2400
-98 1 0
-102 80 1
-102 81 0
-102 910 1  	;status bar display on
-102 3601 bb8 	;Pather tool use only
-102 d4 1003 	;10bit raw
-102 9c1 c80	;VC0 Hsize
-102 9c5 960	;VC0 Vsize
-102 9c2 320	;VC1 Hsize
-102 9c6 258	;VC1 Vsize
-110 20 10 	;DPHY 1.2 
-110 40 0
-102 670 32	;delay
-110 c0 2400
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 1e
-6c 3502 90
-6c 3508 03
-6c 3509 00
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 03
-6c 3801 80
-6c 3802 02
-6c 3803 a0
-6c 3804 1c
-6c 3805 bf
-6c 3806 15
-6c 3807 9f
-6c 3808 0c
-6c 3809 80
-6c 380a 09
-6c 380b 60
-6c 380c 01
-6c 380d a9
-6c 380e 26;1e
-6c 380f 4b;a0 30fps to 24fps
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 0f
-6c 381b 48
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 10
-6c 388a 00
-6c 388b 10
-6c 388c 0c
-6c 388d 80
-6c 388e 09
-6c 388f 60
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 32;;19 800pixel/package
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4932 00
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5001 01
-6c 5005 02
-6c 5006 80
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51d9 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51de 00
-6c 51df 00
-6c 51e0 02
-6c 51e1 02
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5202 06
-6c 5203 10
-6c 5205 08
-6c 5250 14
-6c 5251 00
-6c 5252 00
-6c 5253 00
-6c 5258 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527a 00
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f5 01
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-6c 0100 01
-
-110 80 10 	;10bit
-110 40 03 	;VC0,VC1
-102 d4 1003	;
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M06-1792x1344-PD-448x336-HighGain-24fps.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M06-1792x1344-PD-448x336-HighGain-24fps.txt
deleted file mode 100755
index 7f04ca0c..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/M06-1792x1344-PD-448x336-HighGain-24fps.txt
+++ /dev/null
@@ -1,234 +0,0 @@
-@@M06-1792x1344-PD-448x336-HighGain-24fps
-
-99 1792 1344
-98 1 0
-102 80 1
-102 81 0
-102 910 1  	;status bar display on
-102 3601 bb8 	;Pather tool use only
-102 d4 1003 	;10bit raw
-102 9c1 700	;VC0 Hsize
-102 9c5 540	;VC0 Vsize
-102 9c2 1c0	;VC1 Hsize
-102 9c6 150	;VC1 Vsize
-110 20 10 	;DPHY 1.2 
-110 40 0
-102 670 32	;delay
-110 c0 2400
-
-6c 0100 00
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 3500 00
-6c 3501 1e
-6c 3502 90
-6c 3508 03
-6c 3509 00
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 3761 10
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 3800 09
-6c 3801 00
-6c 3802 06
-6c 3803 c0
-6c 3804 17
-6c 3805 3f
-6c 3806 11
-6c 3807 7f
-6c 3808 07
-6c 3809 00
-6c 380a 05
-6c 380b 40
-6c 380c 01
-6c 380d a9
-6c 380e 26;1e
-6c 380f 4b;a0 30fps to 24fps
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 0f
-6c 381b 48
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00  ;
-6c 3831 00
-6c 3837 06
-6c 384c 01
-6c 384d a9
-6c 3888 00
-6c 3889 10
-6c 388a 00
-6c 388b 10
-6c 388c 07
-6c 388d 00
-6c 388e 05
-6c 388f 40
-6c 4c00 00
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 4583 08
-6c 4584 10
-6c 4641 1c
-6c 4684 13
-6c 4837 08
-6c 4850 47
-6c 4931 10
-6c 4932 00
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 5001 01
-6c 5005 02
-6c 5006 80
-6c 5007 1e
-6c 5180 81
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51d9 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51de 00
-6c 51df 00
-6c 51e0 02
-6c 51e1 02
-6c 51f8 08
-6c 51f9 10
-6c 5200 08
-6c 5201 10
-6c 5202 06
-6c 5203 10
-6c 5205 08
-6c 5250 14
-6c 5251 00
-6c 5252 00
-6c 5253 00
-6c 5258 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527a 00
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f5 01
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-6c 0100 01
-
-110 80 10 	;10bit
-110 40 03 	;VC0,VC1
-102 d4 1003	;
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/OV50D40-DPHY-v0.5-1212.XLSX b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/OV50D40-DPHY-v0.5-1212.XLSX
deleted file mode 100755
index e47c7dbb..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/OV50D40-DPHY-v0.5-1212.XLSX and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/OV50D40-sensor-outputinfo--20241202.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/OV50D40-sensor-outputinfo--20241202.xlsx
deleted file mode 100755
index 1470b12d..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/OV50D40-sensor-outputinfo--20241202.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/OV50D_app_note.xlsx b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/OV50D_app_note.xlsx
deleted file mode 100755
index ca3c7389..00000000
Binary files a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/OV50D_app_note.xlsx and /dev/null differ
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/init-24MHz-Dphy--20241120.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/init-24MHz-Dphy--20241120.txt
deleted file mode 100755
index d8cb7722..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/init-24MHz-Dphy--20241120.txt
+++ /dev/null
@@ -1,1683 +0,0 @@
-@@init
-;;@@ 0 100 Res 4096x3072_PD_992x760 HighGin 30fps
-;;MIPI DPHY 4lane 1902Mbps/lane
-
-99 4096 3072
-98 1 0
-102 80 1
-102 81 0
-102 84 1
-102 910 1  	;status bar display on
-102 3601 bb8 	;Pather tool use only
-102 d4 1003 	;10bit raw
-102 9c1 1000	;VC0 Hsize
-102 9c5 c00	;VC0 Vsize
-102 9c2 3e0	;VC1 Hsize
-102 9c6 2f8	;VC1 Vsize
-110 20 10 	;DPHY 1.2 
-110 40 0
-102 670 32	;delay
-110 c0 2400
-
-42 0103 01
-102 670 1
-42 3035 6c
-42 3037 6c
-42 3039 6c
-42 303a 6c
-102 670 1
-
-6c 0102 01
-6c 0301 c8
-6c 0304 01
-6c 0305 3d
-6c 0306 04
-6c 0307 00
-6c 0326 cb
-6c 0360 01
-6c 3001 00
-6c 300f f8
-6c 3012 41
-6c 3014 e1
-6c 3015 00
-6c 3016 78
-6c 3017 f0
-6c 3018 78
-6c 3019 d2
-6c 301a d0
-6c 301b f0
-6c 301e 88
-6c 3021 0f
-6c 3022 88
-6c 3025 89
-6c 3027 0c
-6c 3044 02
-6c 3103 00
-6c 3106 00
-6c 3218 00
-6c 3400 0c
-6c 3401 46
-6c 3402 02
-6c 3403 02
-6c 3404 03
-6c 3405 03
-6c 3406 0b
-6c 3407 0c
-6c 3408 04
-6c 3409 06
-6c 340a 04
-6c 340b 04
-6c 340e ff
-6c 340f 06
-6c 3423 00
-6c 3424 00
-6c 3425 14
-6c 3426 40
-6c 3427 04
-6c 3428 40
-6c 3429 00
-6c 342a 00
-6c 342b 00
-6c 342c 00
-6c 3420 00
-6c 3421 80
-6c 3500 00
-6c 3501 1e
-6c 3502 90
-6c 3504 4c
-6c 3506 38
-6c 3507 00
-6c 3508 03
-6c 3509 00
-6c 350a 01
-6c 350b 00
-6c 350c 00
-6c 3540 00
-6c 3541 00
-6c 3542 20
-6c 3544 4c
-6c 3546 38
-6c 3548 04
-6c 3549 00
-6c 354a 01
-6c 354b 00
-6c 3600 01
-6c 3601 20
-6c 3602 14
-6c 3603 00
-6c 3604 08
-6c 3605 10
-6c 3606 10
-6c 3607 24
-6c 3608 24
-6c 3609 09
-6c 360a 24
-6c 3610 40
-6c 3611 e0
-6c 3612 00
-6c 3613 90
-6c 3614 28
-6c 3615 19
-6c 3616 c1
-6c 3617 00
-6c 3618 80
-6c 3619 08
-6c 361a 0f
-6c 361b 33
-6c 361c 88
-6c 361d 88
-6c 361e 30
-6c 3620 55
-6c 3621 ac
-6c 3622 10
-6c 3623 86
-6c 3624 01
-6c 3625 70
-6c 3626 46
-6c 3627 01
-6c 3628 48
-6c 3630 00
-6c 3631 60
-6c 3632 60
-6c 3633 00
-6c 3634 00
-6c 3635 00
-6c 3636 00
-6c 3637 00
-6c 3638 00
-6c 3639 02
-6c 363a 02
-6c 363b 99
-6c 363c 3f
-6c 363d 40
-6c 363e 10
-6c 363f 08
-6c 3640 00
-6c 3641 0c
-6c 3642 29
-6c 3643 7e
-6c 3644 07
-6c 3645 01
-6c 3646 bb
-6c 3683 00
-6c 3684 01
-6c 3685 00
-6c 3686 40
-6c 3687 80
-6c 3688 00
-6c 3689 88
-6c 368a 2e
-6c 368e 70
-6c 3694 6f
-6c 3695 80
-6c 3696 51
-6c 369a 00
-6c 369b 00
-6c 369c 00
-6c 369d 14
-6c 369e 00
-6c 369f 00
-6c 36a2 00
-6c 36a3 00
-6c 36a4 00
-6c 36a6 00
-6c 36a7 00
-6c 36a8 00
-6c 3700 2e
-6c 3701 06
-6c 3702 46
-6c 3703 28
-6c 3706 2d
-6c 3708 3a
-6c 3709 57
-6c 370b 54
-6c 3711 00
-6c 3712 50
-6c 3713 00
-6c 3714 62
-6c 3716 40
-6c 3717 02
-6c 371d 24
-6c 371e 13
-6c 371f 0c
-6c 3720 08
-6c 3721 15
-6c 3725 32
-6c 3728 01
-6c 3729 00
-6c 3730 04
-6c 3731 00
-6c 3732 80
-6c 3734 80
-6c 3736 80
-6c 3738 dd
-6c 3739 02
-6c 373a 00
-6c 373b 0a
-6c 373c 6b
-6c 373d 10
-6c 373e 08
-6c 3740 05
-6c 3743 00
-6c 3745 0f
-6c 3746 03
-6c 3747 00
-6c 374d 3f
-6c 374e 03
-6c 374f 00
-6c 3753 01
-6c 3754 14
-6c 3755 00
-6c 3756 16
-6c 3757 3f
-6c 3758 0e
-6c 3759 01
-6c 375e 00
-6c 375f 02
-6c 3760 10
-6c 3761 10
-6c 3762 10
-6c 3763 10
-6c 3764 10
-6c 3765 10
-6c 3766 20
-6c 3767 30
-6c 3768 40
-6c 3769 50
-6c 376b 00
-6c 376c 00
-6c 376f 02
-6c 3770 01
-6c 3793 00
-6c 3795 00
-6c 3799 82
-6c 379b 82
-6c 37a2 15
-6c 37a5 00
-6c 37a6 00
-6c 37ff 00
-6c 3800 00
-6c 3801 00
-6c 3802 00
-6c 3803 00
-6c 3804 20
-6c 3805 3f
-6c 3806 18
-6c 3807 3f
-6c 3808 10
-6c 3809 00
-6c 380a 0c
-6c 380b 00
-6c 380c 01
-6c 380d a9
-6c 380e 1e
-6c 380f a0
-6c 3810 00
-6c 3811 11
-6c 3812 00
-6c 3813 10
-6c 3814 11
-6c 3815 11
-6c 381a 0f
-6c 381b 48
-6c 381c 01
-6c 381d a9
-6c 381f 02
-6c 3820 02
-6c 3821 17
-6c 3822 00
-6c 3823 04
-6c 3828 02
-6c 3829 01
-6c 382e 41
-6c 3830 05
-6c 3831 00
-6c 3837 06
-6c 383e 00
-6c 383f 04
-6c 3840 00
-6c 3841 00
-6c 3847 00
-6c 384a 00
-6c 384b 10
-6c 384c 01
-6c 384d a9
-6c 3856 00
-6c 3858 00
-6c 3859 00
-6c 3864 02
-6c 3867 08
-6c 3888 00
-6c 3889 50
-6c 388a 00
-6c 388b 20
-6c 388c 0f
-6c 388d 80
-6c 388e 0b
-6c 388f e0
-6c 3894 00
-6c 3896 60
-6c 3899 20
-6c 38a0 02
-6c 38a6 b0
-6c 38a7 84
-6c 3900 00
-6c 3901 00
-6c 3902 00
-6c 3903 00
-6c 3904 00
-6c 3905 00
-6c 3906 00
-6c 3907 00
-6c 3908 00
-6c 3909 00
-6c 390a 00
-6c 390b 0d
-6c 390c 0d
-6c 390d 0d
-6c 390e 14
-6c 390f 14
-6c 3910 14
-6c 3911 02
-6c 3912 04
-6c 3913 07
-6c 3914 0e
-6c 3915 0e
-6c 3916 0e
-6c 3917 77
-6c 3918 77
-6c 3919 77
-6c 391a 00
-6c 391b 00
-6c 391c 00
-6c 391d 00
-6c 391e 00
-6c 391f 3c
-6c 3920 0e
-6c 3921 0e
-6c 3922 0e
-6c 3923 0e
-6c 3924 12
-6c 3925 12
-6c 3926 12
-6c 3927 12
-6c 3928 00
-6c 3929 04
-6c 392a 00
-6c 392b 00
-6c 392c 00
-6c 392d ff
-6c 392e 7a
-6c 392f 7a
-6c 3930 9a
-6c 3931 9a
-6c 3932 c0
-6c 3933 44
-6c 3934 44
-6c 3958 04
-6c 3959 08
-6c 395a 0c
-6c 395b 10
-6c 396b 60
-6c 396f 9f
-6c 3971 01
-6c 3973 10
-6c 3977 14
-6c 397a 0f
-6c 3987 03
-6c 8093 02
-6c 3d85 0b
-6c 3d8c 77
-6c 3d8d a0
-6c 3daa 00
-6c 3dab 14
-6c 3dac 00
-6c 3dad 00
-6c 3dae 07
-6c 3daf 8f
-6c 4300 00
-6c 4301 00
-6c 4308 00
-6c 430b 03
-6c 430c ff
-6c 3f00 10
-6c 4500 08
-6c 4501 00
-6c 4502 00
-6c 4504 80
-6c 4505 00
-6c 4506 01
-6c 4509 05
-6c 450c 00
-6c 450d 20
-6c 450e 00
-6c 450f 00
-6c 4510 00
-6c 4523 00
-6c 4526 00
-6c 4542 00
-6c 4543 00
-6c 4544 00
-6c 4545 00
-6c 4546 00
-6c 4547 10
-6c 4550 00
-6c 4c00 00
-6c 4c0a 40
-6c 4c10 02
-6c 4c11 06
-6c 4c12 02
-6c 4c13 06
-6c 4c14 02
-6c 4c15 06
-6c 4c16 0a
-6c 4c17 0e
-6c 4c18 01
-6c 4c19 00
-6c 4c1a 08
-6c 4c1b 10
-6c 4c30 02
-6c 4c31 06
-6c 4c32 02
-6c 4c33 06
-6c 4c34 02
-6c 4c35 06
-6c 4c36 0a
-6c 4c37 0e
-6c 4c38 01
-6c 4c39 00
-6c 4c3a 08
-6c 4c3b 10
-6c 4c50 02
-6c 4c51 06
-6c 4c52 02
-6c 4c53 06
-6c 4c54 02
-6c 4c55 06
-6c 4c56 0a
-6c 4c57 0e
-6c 4c58 01
-6c 4c59 00
-6c 4c5a 08
-6c 4c5b 10
-6c 4c5c 00
-6c 4c5d 00
-6c 4c5e 00
-6c 4c5f 00
-6c 4c60 00
-6c 4c61 00
-6c 4c62 00
-6c 4c63 00
-6c 4c64 00
-6c 4c65 00
-6c 4c66 00
-6c 4c67 00
-6c 4c68 02
-6c 4c69 00
-6c 4c6a 01
-6c 4c6b 00
-6c 4c6c 00
-6c 4c6d 00
-6c 4c6e 00
-6c 4c6f 00
-6c 4c70 00
-6c 4c71 00
-6c 4c72 00
-6c 4c73 00
-6c 4c74 00
-6c 4c75 00
-6c 4c76 00
-6c 4c77 00
-6c 4c7c 00
-6c 4c7d 00
-6c 4c7e 00
-6c 4c7f 00
-6c 4c80 00
-6c 4c81 00
-6c 4c82 00
-6c 4c83 00
-6c 4c84 00
-6c 4c85 00
-6c 4c86 00
-6c 4c87 00
-6c 4e01 00
-6c 4e02 40
-6c 4e08 01
-6c 4e09 00
-6c 3023 01
-6c 4009 01
-6c 400e c6
-6c 400f 00
-6c 4010 e8
-6c 4011 81
-6c 4012 0c
-6c 4015 02
-6c 4016 0d
-6c 4017 02
-6c 4018 0d
-6c 401a 40
-6c 401b 04
-6c 401e 01
-6c 401f 30
-6c 4020 04
-6c 4021 00
-6c 4022 04
-6c 4023 00
-6c 4024 04
-6c 4025 00
-6c 4026 04
-6c 4027 00
-6c 4028 01
-6c 4029 00
-6c 402a 78
-6c 402b 78
-6c 402c 78
-6c 402d 78
-6c 402e 00
-6c 4030 00
-6c 4031 10
-6c 4032 00
-6c 4033 10
-6c 4034 08
-6c 4035 10
-6c 4036 08
-6c 4037 10
-6c 4040 08
-6c 4041 10
-6c 4042 08
-6c 4043 10
-6c 4044 00
-6c 4045 10
-6c 4046 00
-6c 4047 10
-6c 3023 00
-6c 4100 00
-6c 4101 00
-6c 4103 00
-6c 4105 00
-6c 4288 07
-6c 428e 00
-6c 4580 01
-6c 4581 10
-6c 4583 08
-6c 4584 10
-6c 45c0 61
-6c 45c2 04
-6c 45cb 30
-6c 4602 00
-6c 4603 15
-6c 4609 20
-6c 460b 07
-6c 4640 00
-6c 4641 1f
-6c 4643 0c
-6c 4644 c0
-6c 4645 b3
-6c 464a 00
-6c 464b 00
-6c 464c 01
-6c 4680 19
-6c 4681 81
-6c 4683 2b
-6c 4686 00
-6c 4687 00
-6c 4688 00
-6c 4800 04
-6c 4802 00
-6c 480e 04
-6c 4813 e4
-6c 481b 58 ;For MTK mipi timing only 3c
-6c 4829 64
-6c 4837 08
-6c 484a 3f
-6c 484b 27
-6c 4850 47
-6c 4853 10
-6c 4860 00
-6c 4861 ec
-6c 4862 04
-6c 4872 00
-6c 4883 00
-6c 4884 09
-6c 4885 1b
-6c 4888 90
-6c 4889 02
-6c 488a 00
-6c 48c0 00
-6c 48c4 00
-6c 48c5 00
-6c 4910 c8
-6c 4911 01
-6c 4912 0c
-6c 491a 40
-6c 4920 04
-6c 4921 00
-6c 4922 04
-6c 4923 00
-6c 4924 04
-6c 4925 00
-6c 4926 04
-6c 4927 00
-6c 4930 00
-6c 4931 10
-6c 4932 00
-6c 4933 10
-6c 4934 08
-6c 4935 10
-6c 4936 08
-6c 4937 10
-6c 4940 08
-6c 4941 10
-6c 4942 08
-6c 4943 10
-6c 4944 00
-6c 4945 10
-6c 4946 00
-6c 4947 10
-6c 4a0c 34
-6c 4d00 03
-6c 4d01 81 ;ca
-6c 4d02 bf ;bb
-6c 4d03 58 ;c2
-6c 4d04 04
-6c 4d05 f4 ;35
-6c 50c1 00
-6c 53c1 00
-6c 6c00 00
-6c 6c02 00
-6c 6c06 00
-6c 6c07 00
-6c 6c09 06
-6c 5000 f7
-6c 5001 01
-6c 5002 17
-6c 5003 80
-6c 5004 80
-6c 5005 02
-6c 5006 80
-6c 5007 1e
-6c 504f 02
-6c 5060 00
-6c 5061 00
-6c 5062 00
-6c 5063 00
-6c 5064 20
-6c 5065 40
-6c 5066 18
-6c 5067 40
-6c 5068 02
-6c 5069 10
-6c 506a 10
-6c 506b 04
-6c 506c 06
-6c 506d 0c
-6c 506e 0e
-6c 506f 04
-6c 5070 04
-6c 5071 0c
-6c 5072 0c
-6c 5073 01
-6c 5074 01
-6c 5075 bb
-6c 5076 20
-6c 5077 40
-6c 5078 18
-6c 5079 40
-6c 50c1 00
-6c 5110 00
-6c 5111 14
-6c 5112 07
-6c 5113 8f
-6c 5152 a3
-6c 5154 0c
-6c 5155 0c
-6c 5156 0c
-6c 5157 0c
-6c 5158 0c
-6c 5159 0c
-6c 515a 0c
-6c 515b 0c
-6c 5180 81
-6c 5181 10
-6c 5182 10
-6c 5183 10
-6c 5184 10
-6c 5185 10
-6c 5186 10
-6c 5187 10
-6c 518e 04
-6c 51b0 30
-6c 51d0 f2
-6c 51d1 20
-6c 51d2 ff
-6c 51d3 0c
-6c 51d8 04
-6c 51d9 04
-6c 51da 00
-6c 51db 01
-6c 51dc 02
-6c 51dd 03
-6c 51de 00
-6c 51df 00
-6c 51e0 02
-6c 51e1 02
-6c 51e2 00
-6c 51e3 00
-6c 51f4 bb
-6c 51f8 08
-6c 51f9 10
-6c 51fa 06
-6c 51fb 10
-6c 51fc 00
-6c 51fd 00
-6c 51fe 00
-6c 51ff 00
-6c 5200 08
-6c 5201 10
-6c 5202 06
-6c 5203 10
-6c 5205 08
-6c 5250 14
-6c 5251 00
-6c 5252 00
-6c 5253 00
-6c 5258 00
-6c 5259 00
-6c 525e 1f
-6c 525f 80
-6c 5260 17
-6c 5261 a0
-6c 526a 10
-6c 526b 20
-6c 526c 01
-6c 526d 01
-6c 526e 04
-6c 526f 04
-6c 5270 0c
-6c 5271 0c
-6c 5272 04
-6c 5273 0c
-6c 5274 14
-6c 5275 1c
-6c 5277 02
-6c 5279 02
-6c 527a 00
-6c 527b 40
-6c 527c 00
-6c 527d 54
-6c 5290 01
-6c 5291 00
-6c 5292 01
-6c 5293 00
-6c 5294 00
-6c 5295 50
-6c 5296 00
-6c 5297 50
-6c 5298 00
-6c 5299 50
-6c 529a 00
-6c 529b 50
-6c 529c 00
-6c 529d 50
-6c 529e 00
-6c 529f 50
-6c 52a0 00
-6c 52a1 50
-6c 52a2 00
-6c 52a3 50
-6c 52f0 02
-6c 52f1 08
-6c 52f2 07
-6c 52f3 09
-6c 52f4 0a
-6c 52f5 01
-6c 52f6 04
-6c 52f7 03
-6c 52f8 05
-6c 52f9 06
-6c 5331 02
-6c 5332 42
-6c 5333 24
-6c 53c1 00
-6c 5410 00
-6c 5411 14
-6c 5412 07
-6c 5413 8f
-6c 54d0 32
-6c 54d1 20
-6c 54d2 84
-6c 54d3 00
-6c 5550 14
-6c 5553 00
-6c 55f0 01
-6c 55f1 02
-6c 55f2 03
-6c 55f3 04
-6c 55f4 05
-6c 55f5 06
-6c 55f6 07
-6c 55f7 08
-6c 55f8 09
-6c 55f9 0a
-6c 59f0 40
-6c 59f1 40
-6c 59f2 40
-6c 59f3 40
-6c 59f4 40
-6c 59f5 40
-6c 59f6 40
-6c 59f7 40
-6c 59f8 40
-6c 59f9 40
-6c 59fa 40
-6c 59fb 40
-6c 59fc 40
-6c 59fd 40
-6c 59fe 40
-6c 59ff 40
-6c 5a00 40
-6c 5a01 40
-6c 5a02 40
-6c 5a03 40
-6c 5a04 40
-6c 5a05 40
-6c 5a06 40
-6c 5a07 40
-6c 5a08 40
-6c 5a09 40
-6c 5a0a 40
-6c 5a0b 40
-6c 5a0c 40
-6c 5a0d 40
-6c 5a0e 40
-6c 5a0f 40
-6c 5a10 40
-6c 5a11 40
-6c 5a12 40
-6c 5a13 40
-6c 5a14 40
-6c 5a15 40
-6c 5a16 40
-6c 5a17 40
-6c 5a18 40
-6c 5a19 40
-6c 5a1a 40
-6c 5a1b 40
-6c 5a1c 40
-6c 5a1d 40
-6c 5a1e 40
-6c 5a1f 40
-6c 5a20 40
-6c 5a21 40
-6c 5a22 40
-6c 5a23 40
-6c 5a24 40
-6c 5a25 40
-6c 5a26 40
-6c 5a27 40
-6c 5a28 40
-6c 5a29 40
-6c 5a2a 40
-6c 5a2b 40
-6c 5a2c 40
-6c 5a2d 40
-6c 5a2e 40
-6c 5a2f 40
-6c 5a30 40
-6c 5a31 40
-6c 5a32 40
-6c 5a33 40
-6c 5a34 40
-6c 5a35 40
-6c 5a36 40
-6c 5a37 40
-6c 5a38 40
-6c 5a39 40
-6c 5a3a 40
-6c 5a3b 40
-6c 5a3c 40
-6c 5a3d 40
-6c 5a3e 40
-6c 5a3f 40
-6c 5a40 40
-6c 5a41 40
-6c 5a42 40
-6c 5a43 40
-6c 5a44 40
-6c 5a45 40
-6c 5a46 40
-6c 5a47 40
-6c 5a48 40
-6c 5a49 40
-6c 5a4a cd
-6c 5a4b cd
-6c 5a4c cd
-6c 5a4d cd
-6c 5a4e cd
-6c 5a4f cd
-6c 5a50 cd
-6c 5a51 cd
-6c 5a52 cd
-6c 5a53 cd
-6c 5a54 cd
-6c 5a55 cd
-6c 5a56 cd
-6c 5a57 cd
-6c 5a58 cd
-6c 5a59 cd
-6c 5a5a cd
-6c 5a5b cd
-6c 5a5c cd
-6c 5a5d cd
-6c 5a5e cd
-6c 5a5f cd
-6c 5a60 cd
-6c 5a61 cd
-6c 5a62 cd
-6c 5a63 cd
-6c 5a64 cd
-6c 5a65 cd
-6c 5a66 cd
-6c 5a67 cd
-6c 5a68 cd
-6c 5a69 cd
-6c 5a6a cd
-6c 5a6b cd
-6c 5a6c cd
-6c 5a6d cd
-6c 5a6e cd
-6c 5a6f cd
-6c 5a70 cd
-6c 5a71 cd
-6c 5a72 cd
-6c 5a73 cd
-6c 5a74 cd
-6c 5a75 cd
-6c 5a76 cd
-6c 5a77 cd
-6c 5a78 cd
-6c 5a79 cd
-6c 5a7a cd
-6c 5a7b cd
-6c 5a7c cd
-6c 5a7d cd
-6c 5a7e cd
-6c 5a7f cd
-6c 5a80 cd
-6c 5a81 cd
-6c 5a82 cd
-6c 5a83 cd
-6c 5a84 cd
-6c 5a85 cd
-6c 5a86 cd
-6c 5a87 cd
-6c 5a88 cd
-6c 5a89 cd
-6c 5a8a cd
-6c 5a8b cd
-6c 5a8c cd
-6c 5a8d cd
-6c 5a8e cd
-6c 5a8f cd
-6c 5a90 cd
-6c 5a91 cd
-6c 5a92 cd
-6c 5a93 cd
-6c 5a94 cd
-6c 5a95 cd
-6c 5a96 cd
-6c 5a97 cd
-6c 5a98 cd
-6c 5a99 cd
-6c 5a9a cd
-6c 5a9b cd
-6c 5a9c cd
-6c 5a9d cd
-6c 5a9e cd
-6c 5a9f cd
-6c 5aa0 cd
-6c 5aa1 cd
-6c 5aa2 cd
-6c 5aa3 cd
-6c 5aa4 cd
-6c 5aa5 cd
-6c 5aa6 cd
-6c 5aa7 cd
-6c 5aa8 cd
-6c 5aa9 cd
-6c 5aaa cd
-6c 5aab cd
-6c 5aac cd
-6c 5aad cd
-6c 5aae cd
-6c 5aaf cd
-6c 5ab0 cd
-6c 5ab1 cd
-6c 5ab2 cd
-6c 5ab3 cd
-6c 5ab4 cd
-6c 5ab5 cd
-6c 5ab6 cd
-6c 5ab7 cd
-6c 5ab8 cd
-6c 5ab9 cd
-6c 5aba cd
-6c 5abb cd
-6c 5abc cd
-6c 5abd cd
-6c 5abe cd
-6c 5abf cd
-6c 5ac0 cd
-6c 5ac1 cd
-6c 5ac2 cd
-6c 5ac3 cd
-6c 5ac4 cd
-6c 5ac5 cd
-6c 5ac6 cd
-6c 5ac7 cd
-6c 5ac8 cd
-6c 5ac9 cd
-6c 5aca cd
-6c 5acb cd
-6c 5acc cd
-6c 5acd cd
-6c 5ace cd
-6c 5acf cd
-6c 5ad0 cd
-6c 5ad1 cd
-6c 5ad2 cd
-6c 5ad3 cd
-6c 5ad4 cd
-6c 5ad5 cd
-6c 5ad6 cd
-6c 5ad7 cd
-6c 5ad8 cd
-6c 5ad9 cd
-6c 5ada cd
-6c 5adb cd
-6c 5adc cd
-6c 5add cd
-6c 5ade cd
-6c 5adf cd
-6c 5ae0 cd
-6c 5ae1 cd
-6c 5ae2 cd
-6c 5ae3 cd
-6c 5ae4 cd
-6c 5ae5 cd
-6c 5ae6 cd
-6c 5ae7 cd
-6c 5ae8 cd
-6c 5ae9 cd
-6c 5aea cd
-6c 5aeb cd
-6c 5aec cd
-6c 5aed cd
-6c 5aee cd
-6c 5aef cd
-6c 5af0 cd
-6c 5af1 cd
-6c 5af2 cd
-6c 5af3 cd
-6c 5af4 cd
-6c 5af5 cd
-6c 5af6 cd
-6c 5af7 cd
-6c 5af8 cd
-6c 5af9 cd
-6c 5afa cd
-6c 5afb cd
-6c 5afc cd
-6c 5afd cd
-6c 5afe cd
-6c 5aff cd
-6c 5b00 cd
-6c 5b01 cd
-6c 5b02 cd
-6c 5b03 cd
-6c 5b04 cd
-6c 5b05 cd
-6c 5b06 cd
-6c 5b07 cd
-6c 5b08 cd
-6c 5b09 cd
-6c 5b0a cd
-6c 5b0b cd
-6c 5b0c cd
-6c 5b0d cd
-6c 5b0e cd
-6c 5b0f cd
-6c 5b10 cd
-6c 5b11 cd
-6c 5b12 cd
-6c 5b13 cd
-6c 5b14 cd
-6c 5b15 cd
-6c 5b16 cd
-6c 5b17 cd
-6c 5b18 cd
-6c 5b19 cd
-6c 5b1a cd
-6c 5b1b cd
-6c 5b1c cd
-6c 5b1d cd
-6c 5b1e cd
-6c 5b1f cd
-6c 5b20 cd
-6c 5b21 cd
-6c 5b22 cd
-6c 5b23 cd
-6c 5b24 cd
-6c 5b25 cd
-6c 5b26 cd
-6c 5b27 cd
-6c 5b28 cd
-6c 5b29 cd
-6c 5b2a cd
-6c 5b2b cd
-6c 5b2c cd
-6c 5b2d cd
-6c 5b2e cd
-6c 5b2f cd
-6c 5b30 cd
-6c 5b31 cd
-6c 5b32 cd
-6c 5b33 cd
-6c 5b34 cd
-6c 5b35 cd
-6c 5b36 cd
-6c 5b37 cd
-6c 5b38 cd
-6c 5b39 cd
-6c 5b3a cd
-6c 5b3b cd
-6c 5b3c cd
-6c 5b3d cd
-6c 5b3e cd
-6c 5b3f cd
-6c 5b40 cd
-6c 5b41 cd
-6c 5b42 cd
-6c 5b43 cd
-6c 5b44 cd
-6c 5b45 cd
-6c 5b46 cd
-6c 5b47 cd
-6c 5b48 cd
-6c 5b49 cd
-6c 5b4a cd
-6c 5b4b cd
-6c 5b4c cd
-6c 5b4d cd
-6c 5b4e cd
-6c 5b4f cd
-6c 5b50 cd
-6c 5b51 cd
-6c 5b52 cd
-6c 5b53 cd
-6c 5b54 cd
-6c 5b55 cd
-6c 5b56 cd
-6c 5b57 cd
-6c 5b58 cd
-6c 5b59 cd
-6c 5b5a cd
-6c 5b5b cd
-6c 5b5c cd
-6c 5b5d cd
-6c 5b5e cd
-6c 5b5f cd
-6c 5b60 cd
-6c 5b61 cd
-6c 5b62 cd
-6c 5b63 cd
-6c 5b64 cd
-6c 5b65 cd
-6c 5b66 cd
-6c 5b67 cd
-6c 5b68 cd
-6c 5b69 cd
-6c 5b6a cd
-6c 5b6b cd
-6c 5b6c cd
-6c 5b6d cd
-6c 5b6e cd
-6c 5b6f cd
-6c 5b70 cd
-6c 5b71 cd
-6c 5b72 cd
-6c 5b73 cd
-6c 5b74 cd
-6c 5b75 cd
-6c 5b76 cd
-6c 5b77 cd
-6c 5b78 cd
-6c 5b79 cd
-6c 5b7a cd
-6c 5b7b cd
-6c 5b7c cd
-6c 5b7d cd
-6c 5b7e cd
-6c 5b7f cd
-6c 5b80 cd
-6c 5b81 cd
-6c 5b82 cd
-6c 5b83 cd
-6c 5b84 cd
-6c 5b85 cd
-6c 5b86 cd
-6c 5b87 cd
-6c 5b88 cd
-6c 5b89 cd
-6c 5b8a cd
-6c 5b8b cd
-6c 5b8c cd
-6c 5b8d cd
-6c 5b8e cd
-6c 5b8f cd
-6c 5b90 cd
-6c 5b91 cd
-6c 5b92 cd
-6c 5b93 cd
-6c 5b94 cd
-6c 5b95 cd
-6c 5b96 cd
-6c 5b97 cd
-6c 5b98 cd
-6c 5b99 cd
-6c 5b9a cd
-6c 5b9b cd
-6c 5b9c cd
-6c 5b9d cd
-6c 5b9e cd
-6c 5b9f cd
-6c 5ba0 cd
-6c 5ba1 cd
-6c 5ba2 cd
-6c 5ba3 cd
-6c 5ba4 cd
-6c 5ba5 cd
-6c 5ba6 cd
-6c 5ba7 cd
-6c 5ba8 cd
-6c 5ba9 cd
-6c 5baa cd
-6c 5bab cd
-6c 5bac cd
-6c 5bad cd
-6c 5bae cd
-6c 5baf cd
-6c 5bb0 cd
-6c 5bb1 cd
-6c 8000 00
-6c 8001 08
-6c 8002 0a
-6c 8003 00
-6c 8004 25
-6c 8005 0f
-6c 8006 00
-6c 8007 3a
-6c 8008 16
-6c 8009 00
-6c 800a 51
-6c 800b 1d
-6c 800c 00
-6c 800d 52
-6c 800e 12
-6c 800f 00
-6c 8010 6a
-6c 8011 0f
-6c 8012 00
-6c 8013 81
-6c 8015 00
-6c 8016 9f
-6c 8017 23
-6c 8018 00
-6c 8019 cb
-6c 801a 6a
-6c 801b 00
-6c 801c e1
-6c 8014 46
-6c 801d 9c
-6c 801a 83
-6c 801e 00
-6c 801f 00
-6c 8020 00
-6c 8021 00
-6c 8022 00
-6c 8023 00
-6c 8024 00
-6c 8025 00
-6c 8026 00
-6c 8027 00
-6c 8028 00
-6c 8029 00
-6c 802a 00
-6c 802b 00
-6c 802c 00
-6c 802d c5
-6c 802e e3
-6c 802f 97
-6c 8030 e3
-6c 8031 e3
-6c 8032 08
-6c 8033 00
-6c 8034 00
-6c 8035 08
-6c 8036 e7
-6c 8037 00
-6c 8038 00
-6c 8039 e5
-6c 803a 02
-6c 803b e5
-6c 803c 02
-6c 803d e5
-6c 803e 02
-6c 803f e5
-6c 8040 02
-6c 8041 e5
-6c 8042 02
-6c 8043 e5
-6c 8044 02
-6c 8045 e5
-6c 8046 02
-6c 8047 00
-6c 8048 00
-6c 8049 00
-6c 804a 00
-6c 804b 00
-6c 804c 00
-6c 804d 00
-6c 804e 00
-6c 804f 08
-6c 8050 2b
-6c 8051 2f
-6c 8052 eb
-6c 8053 00
-6c 8054 00
-6c 8055 6f
-6c 8056 97
-6c 8057 e1
-6c 8058 e5
-6c 8059 6f
-6c 805a 97
-6c 805b e1
-6c 805c e5
-6c 805d 00
-6c 805e 00
-6c 805f 56
-6c 8060 60
-6c 8061 99
-6c 8062 c9
-6c 8063 00
-6c 8064 00
-6c 8065 eb
-6c 8066 1a
-6c 8067 eb
-6c 8068 1a
-6c 8069 eb
-6c 806a 1a
-6c 806b eb
-6c 806c 5e
-6c 806d eb
-6c 806e 5e
-6c 806f 1a
-6c 8070 e3
-6c 8071 00
-6c 8072 00
-6c 8073 54
-6c 8074 06
-6c 8075 00
-6c 8076 00
-6c 8077 54
-6c 8078 06
-6c 8079 00
-6c 807a 00
-6c 807b 54
-6c 807c 06
-6c 807d 00
-6c 807e 00
-6c 807f 00
-6c 8080 00
-6c 8081 00
-6c 8082 00
-6c 8083 00
-6c 8084 00
-6c 8085 00
-6c 8086 00
-6c 8087 00
-6c 8088 00
-6c 8089 00
-6c 808a 00
-6c 808b 00
-6c 808c 00
-6c 808d e7
-6c 808e 00
-6c 808f e7
-6c 8090 12
-6c 8091 56
-6c 8092 e5
-6c 8093 01
-6c 8094 00
-6c 8095 e7
-6c 8096 12
-6c 8097 e7
-6c 8098 17
-6c 8099 e7
-6c 809a 12
-6c 809b e7
-6c 809c 12
-6c 809d 08
-6c 809e 97
-6c 809f e3
-6c 80a0 08
-6c 80a1 08
-6c 80a2 e3
-6c 80a3 01
-6c 80a4 e9
-6c 80a5 00
-6c 80a6 00
-6c 80a7 98
-6c 80a8 b9
-6c 80a9 99
-6c 80aa b7
-6c 80ab 00
-6c 80ac 00
-6c 80ad 02
-6c 80ae 24
-6c 80af 00
-6c 80b0 00
-6c 80b1 00
-6c 80b2 00
-6c 80b3 e5
-6c 80b4 e6
-6c 80b5 00
-6c 80b6 00
-6c 80b7 00
-6c 80b8 00
-6c 80b9 00
-6c 80ba 00
-6c 80bb 00
-6c 80bc 00
-6c 80bd 00
-6c 80be 00
-6c 80bf 06
-6c 80c0 e5
-6c 80c1 3b
-6c 80c2 3d
-6c 80c3 00
-6c 80c4 00
-6c 80c5 3d
-6c 80c6 47
-6c 80c7 d0
-6c 80c8 da
-6c 80c9 00
-6c 80ca 00
-6c 80cb 99
-6c 80cc 9d
-6c 80cd 00
-6c 80ce 00
-6c 80cf 00
-6c 80d0 00
-6c 80d1 00
-6c 80d2 00
-6c 80d3 00
-6c 80d4 00
-6c 80d5 00
-6c 80d6 00
-6c 80d7 00
-6c 80d8 00
-6c 80d9 00
-6c 80da 00
-6c 80db e9
-6c 80dc eb
-6c 80dd 00
-6c 80de 00
-6c 80df e4
-6c 80e0 e6
-6c 80e1 00
-6c 80e2 00
-6c 80e5 00
-6c 80e6 00
-6c 80e7 00
-6c 80e8 00
-6c 80e9 02
-6c 80e3 08
-6c 80e4 50
-6c 80ea 00
-6c 80eb 00
-6c 80ec 00
-6c 80ed 00
-6c 80ee 00
-6c 80ef 00
-6c 80f0 00
-6c 80f1 00
-6c 80f2 00
-6c 80f3 00
-6c 80f4 00
-6c 80f5 00
-6c 80f6 00
-6c 80f7 00
-6c 80f8 00
-6c 80f9 00
-6c 80fa 00
-6c 80fb 00
-6c 80fc 00
-6c 80fd 00
-6c 80fe 00
-6c 80ff 00
-6c 8100 00
-6c 8101 00
-6c 8102 00
-6c 8103 00
-6c 8104 00
-6c 8105 00
-6c 8106 00
-6c 8107 00
-6c 8108 00
-6c 8109 00
-6c 810a 00
-6c 810b 00
-6c 810c 00
-6c 810d 00
-6c 810e 00
-6c 810f ee
-6c 8110 ef
-6c 8111 a1
-6c 8112 a6
-6c 8113 f4
-6c 8114 f9
-6c 8115 dd
-6c 8116 e5
-6c 8117 6b
-6c 8118 97
-6c 8119 08
-6c 811b 08
-6c 811c 52
-6c 811d 08
-6c 811e 52
-6c 811f 08
-6c 8120 52
-6c 8121 08
-6c 8123 08
-6c 8124 52
-6c 8125 08
-6c 8126 52
-6c 8127 08
-6c 8128 52
-6c 811a 51
-6c 8122 52
-6c 8129 08
-6c 812a 54
-6c 812b 00
-6c 812c 00
-6c 812d 08
-6c 812e 54
-6c 812f 00
-6c 8130 00
-6c 8131 08
-6c 8132 54
-6c 8133 00
-6c 8134 00
-6c 8135 08
-6c 8136 54
-6c 8137 00
-6c 8138 00
-6c 8139 08
-6c 813a 54
-6c 813b 00
-6c 813c 00
-6c 813d 08
-6c 813e 54
-6c 813f 00
-6c 8140 00
-6c 8141 08
-6c 8142 54
-6c 8143 00
-6c 8144 00
-6c 8145 08
-6c 8146 54
-6c 8147 00
-6c 8148 00
-6c 8149 6d
-6c 814a 95
-6c 814b df
-6c 814c e3
-6c 814d 6d
-6c 814e 95
-6c 814f df
-6c 8150 e3
-6c 8151 6d
-6c 8152 95
-6c 8153 df
-6c 8154 e3
-6c 8155 6d
-6c 8156 95
-6c 8157 df
-6c 8158 e3
-6c 8159 95
-6c 815a 6d
-6c 815b e3
-6c 815c df
-6c 815d 00
-6c 815e 00
-6c 815f 95
-6c 8160 6d
-6c 8161 e3
-6c 8162 df
-6c 8163 00
-6c 8164 00
-6c 8165 95
-6c 8166 6d
-6c 8167 e3
-6c 8168 df
-6c 8169 00
-6c 816a 00
-6c 816b 95
-6c 816c 6d
-6c 816d e3
-6c 816e df
-6c 816f 00
-6c 8170 00
-6c 8171 6d
-6c 8172 95
-6c 8173 df
-6c 8174 e3
-6c 8175 6d
-6c 8176 95
-6c 8177 df
-6c 8178 e3
-6c 8179 6d
-6c 817a 95
-6c 817b df
-6c 817c e3
-6c 817d 6d
-6c 817e 95
-6c 817f df
-6c 8180 e3
-6c 8056 00
-6c 8057 00
-6c 8058 00
-6c 8059 00
-6c 805a 00
-6c 805b 00
-6c 805c 00
-6c 802f 08
-6c 806b 00
-6c 3047 07
-6c 3200 00
-6c 3201 10
-6c 3202 20
-6c 382a 81
-6c 382b 08
-6c 0361 00
-6c 370b 54
-6c 450d 00
-6c 4509 00
-6c 4511 02
-6c 484f 20
-6c 0100 01
-
-110 80 10 	;10bit
-110 40 03 	;VC0,VC1
-102 d4 1003	;
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/read_me.txt b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/read_me.txt
deleted file mode 100755
index ee89d3ae..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/setting_excel/OPLUS_Zhuque_OV50D40-setting-NormalNormal-24MHz_20241216/read_me.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-20241202 modify
-6c 4641 3e;;1f 992 pd pixel per package 20241202
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1wide_Sensor_setting.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1wide_Sensor_setting.h
deleted file mode 100755
index e37151d6..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1wide_Sensor_setting.h
+++ /dev/null
@@ -1,3127 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     zhuquec1wide_Sensor_setting.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _ZHUQUEC1WIDE_SENSOR_SETTING_H
-#define _ZHUQUEC1WIDE_SENSOR_SETTING_H
-
-#include "kd_camera_typedef.h"
-
-static kal_uint16 zhuquec1wide_soft_reset[] = {
-	0x0103, 0x01,
-};
-
-//init-24MHz-Dphy--20241120.txt
-static kal_uint16 zhuquec1wide_init_setting[] = {
-//@@init
-//;;@@ 0 100 Res 4096x3072_PD_992x760 HighGin 30fps
-//;;MIPI DPHY 4lane 1902Mbps/lane
-
-//99 4096 3072
-//98 1 0
-//102 80 1
-//102 81 0
-//102 84 1
-//102 910 1  	;status bar display on
-//102 3601 bb8 	;Pather tool use only
-//102 d4 1003 	;10bit raw
-//102 9c1 1000	;VC0 Hsize
-//102 9c5 c00	;VC0 Vsize
-//102 9c2 3e0	;VC1 Hsize
-//102 9c6 2f8	;VC1 Vsize
-//110 20 10 	;DPHY 1.2
-//110 40 0
-//102 670 32	;delay
-//110 c0 2400
-
-//42 0103 01
-//102 670 1
-//42 3035 6c
-//42 3037 6c
-//42 3039 6c
-//42 303a 6c
-//102 670 1
-
-	0x0102, 0x01,
-	0x0301, 0xc8,
-	0x0304, 0x01,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x0326, 0xcb,
-	0x0360, 0x01,
-	0x3001, 0x00,
-	0x300f, 0xf8,
-	0x3012, 0x41,
-	0x3014, 0xe1,
-	0x3015, 0x00,
-	0x3016, 0x78,
-	0x3017, 0xf0,
-	0x3018, 0x78,
-	0x3019, 0xd2,
-	0x301a, 0xd0,
-	0x301b, 0xf0,
-	0x301e, 0x88,
-	0x3021, 0x0f,
-	0x3022, 0x88,
-	0x3025, 0x89,
-	0x3027, 0x0c,
-	0x3044, 0x02,
-	0x3103, 0x00,
-	0x3106, 0x00,
-	0x3218, 0x00,
-	0x3400, 0x0c,
-	0x3401, 0x46,
-	0x3402, 0x02,
-	0x3403, 0x02,
-	0x3404, 0x03,
-	0x3405, 0x03,
-	0x3406, 0x0b,
-	0x3407, 0x0c,
-	0x3408, 0x04,
-	0x3409, 0x06,
-	0x340a, 0x04,
-	0x340b, 0x04,
-	0x340e, 0xff,
-	0x340f, 0x06,
-	0x3423, 0x00,
-	0x3424, 0x00,
-	0x3425, 0x14,
-	0x3426, 0x40,
-	0x3427, 0x04,
-	0x3428, 0x40,
-	0x3429, 0x00,
-	0x342a, 0x00,
-	0x342b, 0x00,
-	0x342c, 0x00,
-	0x3420, 0x00,
-	0x3421, 0x80,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x90,
-	0x3504, 0x4c,
-	0x3506, 0x38,
-	0x3507, 0x00,
-	0x3508, 0x03,
-	0x3509, 0x00,
-	0x350a, 0x01,
-	0x350b, 0x00,
-	0x350c, 0x00,
-	0x3540, 0x00,
-	0x3541, 0x00,
-	0x3542, 0x20,
-	0x3544, 0x4c,
-	0x3546, 0x38,
-	0x3548, 0x04,
-	0x3549, 0x00,
-	0x354a, 0x01,
-	0x354b, 0x00,
-	0x3600, 0x01,
-	0x3601, 0x20,
-	0x3602, 0x14,
-	0x3603, 0x00,
-	0x3604, 0x08,
-	0x3605, 0x10,
-	0x3606, 0x10,
-	0x3607, 0x24,
-	0x3608, 0x24,
-	0x3609, 0x09,
-	0x360a, 0x24,
-	0x3610, 0x40,
-	0x3611, 0xe0,
-	0x3612, 0x00,
-	0x3613, 0x90,
-	0x3614, 0x28,
-	0x3615, 0x19,
-	0x3616, 0xc1,
-	0x3617, 0x00,
-	0x3618, 0x80,
-	0x3619, 0x08,
-	0x361a, 0x0f,
-	0x361b, 0x33,
-	0x361c, 0x88,
-	0x361d, 0x88,
-	0x361e, 0x30,
-	0x3620, 0x55,
-	0x3621, 0xac,
-	0x3622, 0x10,
-	0x3623, 0x86,
-	0x3624, 0x01,
-	0x3625, 0x70,
-	0x3626, 0x46,
-	0x3627, 0x01,
-	0x3628, 0x48,
-	0x3630, 0x00,
-	0x3631, 0x60,
-	0x3632, 0x60,
-	0x3633, 0x00,
-	0x3634, 0x00,
-	0x3635, 0x00,
-	0x3636, 0x00,
-	0x3637, 0x00,
-	0x3638, 0x00,
-	0x3639, 0x02,
-	0x363a, 0x02,
-	0x363b, 0x99,
-	0x363c, 0x3f,
-	0x363d, 0x40,
-	0x363e, 0x10,
-	0x363f, 0x08,
-	0x3640, 0x00,
-	0x3641, 0x0c,
-	0x3642, 0x29,
-	0x3643, 0x7e,
-	0x3644, 0x07,
-	0x3645, 0x01,
-	0x3646, 0xbb,
-	0x3683, 0x00,
-	0x3684, 0x01,
-	0x3685, 0x00,
-	0x3686, 0x40,
-	0x3687, 0x80,
-	0x3688, 0x00,
-	0x3689, 0x88,
-	0x368a, 0x2e,
-	0x368e, 0x70,
-	0x3694, 0x6f,
-	0x3695, 0x80,
-	0x3696, 0x51,
-	0x369a, 0x00,
-	0x369b, 0x00,
-	0x369c, 0x00,
-	0x369d, 0x14,
-	0x369e, 0x00,
-	0x369f, 0x00,
-	0x36a2, 0x00,
-	0x36a3, 0x00,
-	0x36a4, 0x00,
-	0x36a6, 0x00,
-	0x36a7, 0x00,
-	0x36a8, 0x00,
-	0x3700, 0x2e,
-	0x3701, 0x06,
-	0x3702, 0x46,
-	0x3703, 0x28,
-	0x3706, 0x2d,
-	0x3708, 0x3a,
-	0x3709, 0x57,
-	0x370b, 0x54,
-	0x3711, 0x00,
-	0x3712, 0x50,
-	0x3713, 0x00,
-	0x3714, 0x62,
-	0x3716, 0x40,
-	0x3717, 0x02,
-	0x371d, 0x24,
-	0x371e, 0x13,
-	0x371f, 0x0c,
-	0x3720, 0x08,
-	0x3721, 0x15,
-	0x3725, 0x32,
-	0x3728, 0x01,
-	0x3729, 0x00,
-	0x3730, 0x04,
-	0x3731, 0x00,
-	0x3732, 0x80,
-	0x3734, 0x80,
-	0x3736, 0x80,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x373e, 0x08,
-	0x3740, 0x05,
-	0x3743, 0x00,
-	0x3745, 0x0f,
-	0x3746, 0x03,
-	0x3747, 0x00,
-	0x374d, 0x3f,
-	0x374e, 0x03,
-	0x374f, 0x00,
-	0x3753, 0x01,
-	0x3754, 0x14,
-	0x3755, 0x00,
-	0x3756, 0x16,
-	0x3757, 0x3f,
-	0x3758, 0x0e,
-	0x3759, 0x01,
-	0x375e, 0x00,
-	0x375f, 0x02,
-	0x3760, 0x10,
-	0x3761, 0x10,
-	0x3762, 0x10,
-	0x3763, 0x10,
-	0x3764, 0x10,
-	0x3765, 0x10,
-	0x3766, 0x20,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x376b, 0x00,
-	0x376c, 0x00,
-	0x376f, 0x02,
-	0x3770, 0x01,
-	0x3793, 0x00,
-	0x3795, 0x00,
-	0x3799, 0x82,
-	0x379b, 0x82,
-	0x37a2, 0x15,
-	0x37a5, 0x00,
-	0x37a6, 0x00,
-	0x37ff, 0x00,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x18,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x1e,
-	0x380f, 0xa0,
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x0f,
-	0x381b, 0x48,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,
-	0x3823, 0x04,
-	0x3828, 0x02,
-	0x3829, 0x01,
-	0x382e, 0x41,
-	0x3830, 0x05,
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x383e, 0x00,
-	0x383f, 0x04,
-	0x3840, 0x00,
-	0x3841, 0x00,
-	0x3847, 0x00,
-	0x384a, 0x00,
-	0x384b, 0x10,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3856, 0x00,
-	0x3858, 0x00,
-	0x3859, 0x00,
-	0x3864, 0x02,
-	0x3867, 0x08,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x20,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x0b,
-	0x388f, 0xe0,
-	0x3894, 0x00,
-	0x3896, 0x60,
-	0x3899, 0x20,
-	0x38a0, 0x02,
-	0x38a6, 0xb0,
-	0x38a7, 0x84,
-	0x3900, 0x00,
-	0x3901, 0x00,
-	0x3902, 0x00,
-	0x3903, 0x00,
-	0x3904, 0x00,
-	0x3905, 0x00,
-	0x3906, 0x00,
-	0x3907, 0x00,
-	0x3908, 0x00,
-	0x3909, 0x00,
-	0x390a, 0x00,
-	0x390b, 0x0d,
-	0x390c, 0x0d,
-	0x390d, 0x0d,
-	0x390e, 0x14,
-	0x390f, 0x14,
-	0x3910, 0x14,
-	0x3911, 0x02,
-	0x3912, 0x04,
-	0x3913, 0x07,
-	0x3914, 0x0e,
-	0x3915, 0x0e,
-	0x3916, 0x0e,
-	0x3917, 0x77,
-	0x3918, 0x77,
-	0x3919, 0x77,
-	0x391a, 0x00,
-	0x391b, 0x00,
-	0x391c, 0x00,
-	0x391d, 0x00,
-	0x391e, 0x00,
-	0x391f, 0x3c,
-	0x3920, 0x0e,
-	0x3921, 0x0e,
-	0x3922, 0x0e,
-	0x3923, 0x0e,
-	0x3924, 0x12,
-	0x3925, 0x12,
-	0x3926, 0x12,
-	0x3927, 0x12,
-	0x3928, 0x00,
-	0x3929, 0x04,
-	0x392a, 0x00,
-	0x392b, 0x00,
-	0x392c, 0x00,
-	0x392d, 0xff,
-	0x392e, 0x7a,
-	0x392f, 0x7a,
-	0x3930, 0x9a,
-	0x3931, 0x9a,
-	0x3932, 0xc0,
-	0x3933, 0x44,
-	0x3934, 0x44,
-	0x3958, 0x04,
-	0x3959, 0x08,
-	0x395a, 0x0c,
-	0x395b, 0x10,
-	0x396b, 0x60,
-	0x396f, 0x9f,
-	0x3971, 0x01,
-	0x3973, 0x10,
-	0x3977, 0x14,
-	0x397a, 0x0f,
-	0x3987, 0x03,
-	0x8093, 0x02,
-	0x3d85, 0x0b,
-	0x3d8c, 0x77,
-	0x3d8d, 0xa0,
-	0x3daa, 0x00,
-	0x3dab, 0x14,
-	0x3dac, 0x00,
-	0x3dad, 0x00,
-	0x3dae, 0x07,
-	0x3daf, 0x8f,
-	0x4300, 0x00,
-	0x4301, 0x00,
-	0x4308, 0x00,
-	0x430b, 0x03,
-	0x430c, 0xff,
-	0x3f00, 0x10,
-	0x4500, 0x08,
-	0x4501, 0x00,
-	0x4502, 0x00,
-	0x4504, 0x80,
-	0x4505, 0x00,
-	0x4506, 0x01,
-	0x4509, 0x05,
-	0x450c, 0x00,
-	0x450d, 0x20,
-	0x450e, 0x00,
-	0x450f, 0x00,
-	0x4510, 0x00,
-	0x4523, 0x00,
-	0x4526, 0x00,
-	0x4542, 0x00,
-	0x4543, 0x00,
-	0x4544, 0x00,
-	0x4545, 0x00,
-	0x4546, 0x00,
-	0x4547, 0x10,
-	0x4550, 0x00,
-	0x4c00, 0x00,
-	0x4c0a, 0x40,
-	0x4c10, 0x02,
-	0x4c11, 0x06,
-	0x4c12, 0x02,
-	0x4c13, 0x06,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c5c, 0x00,
-	0x4c5d, 0x00,
-	0x4c5e, 0x00,
-	0x4c5f, 0x00,
-	0x4c60, 0x00,
-	0x4c61, 0x00,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4c6c, 0x00,
-	0x4c6d, 0x00,
-	0x4c6e, 0x00,
-	0x4c6f, 0x00,
-	0x4c70, 0x00,
-	0x4c71, 0x00,
-	0x4c72, 0x00,
-	0x4c73, 0x00,
-	0x4c74, 0x00,
-	0x4c75, 0x00,
-	0x4c76, 0x00,
-	0x4c77, 0x00,
-	0x4c7c, 0x00,
-	0x4c7d, 0x00,
-	0x4c7e, 0x00,
-	0x4c7f, 0x00,
-	0x4c80, 0x00,
-	0x4c81, 0x00,
-	0x4c82, 0x00,
-	0x4c83, 0x00,
-	0x4c84, 0x00,
-	0x4c85, 0x00,
-	0x4c86, 0x00,
-	0x4c87, 0x00,
-	0x4e01, 0x00,
-	0x4e02, 0x40,
-	0x4e08, 0x01,
-	0x4e09, 0x00,
-	0x3023, 0x01,
-	0x4009, 0x01,
-	0x400e, 0xc6,
-	0x400f, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x401a, 0x40,
-	0x401b, 0x04,
-	0x401e, 0x01,
-	0x401f, 0x30,
-	0x4020, 0x04,
-	0x4021, 0x00,
-	0x4022, 0x04,
-	0x4023, 0x00,
-	0x4024, 0x04,
-	0x4025, 0x00,
-	0x4026, 0x04,
-	0x4027, 0x00,
-	0x4028, 0x01,
-	0x4029, 0x00,
-	0x402a, 0x78,
-	0x402b, 0x78,
-	0x402c, 0x78,
-	0x402d, 0x78,
-	0x402e, 0x00,
-	0x4030, 0x00,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x3023, 0x00,
-	0x4100, 0x00,
-	0x4101, 0x00,
-	0x4103, 0x00,
-	0x4105, 0x00,
-	0x4288, 0x07,
-	0x428e, 0x00,
-	0x4580, 0x01,
-	0x4581, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x45c0, 0x61,
-	0x45c2, 0x04,
-	0x45cb, 0x30,
-	0x4602, 0x00,
-	0x4603, 0x15,
-	0x4609, 0x20,
-	0x460b, 0x07,
-	0x4640, 0x00,
-	0x4641, 0x1f,
-	0x4643, 0x0c,
-	0x4644, 0xc0,
-	0x4645, 0xb3,
-	0x464a, 0x00,
-	0x464b, 0x00,
-	0x464c, 0x01,
-	0x4680, 0x19,
-	0x4681, 0x81,
-	0x4683, 0x2b,
-	0x4686, 0x00,
-	0x4687, 0x00,
-	0x4688, 0x00,
-	0x4800, 0x04,
-	0x4802, 0x00,
-	0x480e, 0x04,
-	0x4813, 0xe4,
-	0x481b, 0x58,//;For MTK mipi timing only 3c
-	0x4829, 0x64,
-	0x4837, 0x08,
-	0x484a, 0x3f,
-	0x484b, 0x27,
-	0x4850, 0x47,
-	0x4853, 0x10,
-	0x4860, 0x00,
-	0x4861, 0xec,
-	0x4862, 0x04,
-	0x4872, 0x00,
-	0x4883, 0x00,
-	0x4884, 0x09,
-	0x4885, 0x1b,
-	0x4888, 0x90,
-	0x4889, 0x02,
-	0x488a, 0x00,
-	0x48c0, 0x00,
-	0x48c4, 0x00,
-	0x48c5, 0x00,
-	0x4910, 0xc8,
-	0x4911, 0x01,
-	0x4912, 0x0c,
-	0x491a, 0x40,
-	0x4920, 0x04,
-	0x4921, 0x00,
-	0x4922, 0x04,
-	0x4923, 0x00,
-	0x4924, 0x04,
-	0x4925, 0x00,
-	0x4926, 0x04,
-	0x4927, 0x00,
-	0x4930, 0x00,
-	0x4931, 0x10,
-	0x4932, 0x00,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x4a0c, 0x34,
-	0x4d00, 0x03,
-	0x4d01, 0x81,//;ca
-	0x4d02, 0xbf,//;bb
-	0x4d03, 0x58,//;c2
-	0x4d04, 0x04,
-	0x4d05, 0xf4,//;35
-	0x50c1, 0x00,
-	0x53c1, 0x00,
-	0x6c00, 0x00,
-	0x6c02, 0x00,
-	0x6c06, 0x00,
-	0x6c07, 0x00,
-	0x6c09, 0x06,
-	0x5000, 0xf7,
-	0x5001, 0x01,
-	0x5002, 0x17,
-	0x5003, 0x80,
-	0x5004, 0x80,
-	0x5005, 0x02,
-	0x5006, 0x80,
-	0x5007, 0x1e,
-	0x504f, 0x02,
-	0x5060, 0x00,
-	0x5061, 0x00,
-	0x5062, 0x00,
-	0x5063, 0x00,
-	0x5064, 0x20,
-	0x5065, 0x40,
-	0x5066, 0x18,
-	0x5067, 0x40,
-	0x5068, 0x02,
-	0x5069, 0x10,
-	0x506a, 0x10,
-	0x506b, 0x04,
-	0x506c, 0x06,
-	0x506d, 0x0c,
-	0x506e, 0x0e,
-	0x506f, 0x04,
-	0x5070, 0x04,
-	0x5071, 0x0c,
-	0x5072, 0x0c,
-	0x5073, 0x01,
-	0x5074, 0x01,
-	0x5075, 0xbb,
-	0x5076, 0x20,
-	0x5077, 0x40,
-	0x5078, 0x18,
-	0x5079, 0x40,
-	0x50c1, 0x00,
-	0x5110, 0x00,
-	0x5111, 0x14,
-	0x5112, 0x07,
-	0x5113, 0x8f,
-	0x5152, 0xa3,
-	0x5154, 0x0c,
-	0x5155, 0x0c,
-	0x5156, 0x0c,
-	0x5157, 0x0c,
-	0x5158, 0x0c,
-	0x5159, 0x0c,
-	0x515a, 0x0c,
-	0x515b, 0x0c,
-	0x5180, 0x81,
-	0x5181, 0x10,
-	0x5182, 0x10,
-	0x5183, 0x10,
-	0x5184, 0x10,
-	0x5185, 0x10,
-	0x5186, 0x10,
-	0x5187, 0x10,
-	0x518e, 0x04,
-	0x51b0, 0x30,
-	0x51d0, 0xf2,
-	0x51d1, 0x20,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51d9, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51de, 0x00,
-	0x51df, 0x00,
-	0x51e0, 0x02,
-	0x51e1, 0x02,
-	0x51e2, 0x00,
-	0x51e3, 0x00,
-	0x51f4, 0xbb,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x51fa, 0x06,
-	0x51fb, 0x10,
-	0x51fc, 0x00,
-	0x51fd, 0x00,
-	0x51fe, 0x00,
-	0x51ff, 0x00,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5202, 0x06,
-	0x5203, 0x10,
-	0x5205, 0x08,
-	0x5250, 0x14,
-	0x5251, 0x00,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5258, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527a, 0x00,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x5290, 0x01,
-	0x5291, 0x00,
-	0x5292, 0x01,
-	0x5293, 0x00,
-	0x5294, 0x00,
-	0x5295, 0x50,
-	0x5296, 0x00,
-	0x5297, 0x50,
-	0x5298, 0x00,
-	0x5299, 0x50,
-	0x529a, 0x00,
-	0x529b, 0x50,
-	0x529c, 0x00,
-	0x529d, 0x50,
-	0x529e, 0x00,
-	0x529f, 0x50,
-	0x52a0, 0x00,
-	0x52a1, 0x50,
-	0x52a2, 0x00,
-	0x52a3, 0x50,
-	0x52f0, 0x02,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f5, 0x01,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x5331, 0x02,
-	0x5332, 0x42,
-	0x5333, 0x24,
-	0x53c1, 0x00,
-	0x5410, 0x00,
-	0x5411, 0x14,
-	0x5412, 0x07,
-	0x5413, 0x8f,
-	0x54d0, 0x32,
-	0x54d1, 0x20,
-	0x54d2, 0x84,
-	0x54d3, 0x00,
-	0x5550, 0x14,
-	0x5553, 0x00,
-	0x55f0, 0x01,
-	0x55f1, 0x02,
-	0x55f2, 0x03,
-	0x55f3, 0x04,
-	0x55f4, 0x05,
-	0x55f5, 0x06,
-	0x55f6, 0x07,
-	0x55f7, 0x08,
-	0x55f8, 0x09,
-	0x55f9, 0x0a,
-	0x59f0, 0x40,
-	0x59f1, 0x40,
-	0x59f2, 0x40,
-	0x59f3, 0x40,
-	0x59f4, 0x40,
-	0x59f5, 0x40,
-	0x59f6, 0x40,
-	0x59f7, 0x40,
-	0x59f8, 0x40,
-	0x59f9, 0x40,
-	0x59fa, 0x40,
-	0x59fb, 0x40,
-	0x59fc, 0x40,
-	0x59fd, 0x40,
-	0x59fe, 0x40,
-	0x59ff, 0x40,
-	0x5a00, 0x40,
-	0x5a01, 0x40,
-	0x5a02, 0x40,
-	0x5a03, 0x40,
-	0x5a04, 0x40,
-	0x5a05, 0x40,
-	0x5a06, 0x40,
-	0x5a07, 0x40,
-	0x5a08, 0x40,
-	0x5a09, 0x40,
-	0x5a0a, 0x40,
-	0x5a0b, 0x40,
-	0x5a0c, 0x40,
-	0x5a0d, 0x40,
-	0x5a0e, 0x40,
-	0x5a0f, 0x40,
-	0x5a10, 0x40,
-	0x5a11, 0x40,
-	0x5a12, 0x40,
-	0x5a13, 0x40,
-	0x5a14, 0x40,
-	0x5a15, 0x40,
-	0x5a16, 0x40,
-	0x5a17, 0x40,
-	0x5a18, 0x40,
-	0x5a19, 0x40,
-	0x5a1a, 0x40,
-	0x5a1b, 0x40,
-	0x5a1c, 0x40,
-	0x5a1d, 0x40,
-	0x5a1e, 0x40,
-	0x5a1f, 0x40,
-	0x5a20, 0x40,
-	0x5a21, 0x40,
-	0x5a22, 0x40,
-	0x5a23, 0x40,
-	0x5a24, 0x40,
-	0x5a25, 0x40,
-	0x5a26, 0x40,
-	0x5a27, 0x40,
-	0x5a28, 0x40,
-	0x5a29, 0x40,
-	0x5a2a, 0x40,
-	0x5a2b, 0x40,
-	0x5a2c, 0x40,
-	0x5a2d, 0x40,
-	0x5a2e, 0x40,
-	0x5a2f, 0x40,
-	0x5a30, 0x40,
-	0x5a31, 0x40,
-	0x5a32, 0x40,
-	0x5a33, 0x40,
-	0x5a34, 0x40,
-	0x5a35, 0x40,
-	0x5a36, 0x40,
-	0x5a37, 0x40,
-	0x5a38, 0x40,
-	0x5a39, 0x40,
-	0x5a3a, 0x40,
-	0x5a3b, 0x40,
-	0x5a3c, 0x40,
-	0x5a3d, 0x40,
-	0x5a3e, 0x40,
-	0x5a3f, 0x40,
-	0x5a40, 0x40,
-	0x5a41, 0x40,
-	0x5a42, 0x40,
-	0x5a43, 0x40,
-	0x5a44, 0x40,
-	0x5a45, 0x40,
-	0x5a46, 0x40,
-	0x5a47, 0x40,
-	0x5a48, 0x40,
-	0x5a49, 0x40,
-	0x5a4a, 0xcd,
-	0x5a4b, 0xcd,
-	0x5a4c, 0xcd,
-	0x5a4d, 0xcd,
-	0x5a4e, 0xcd,
-	0x5a4f, 0xcd,
-	0x5a50, 0xcd,
-	0x5a51, 0xcd,
-	0x5a52, 0xcd,
-	0x5a53, 0xcd,
-	0x5a54, 0xcd,
-	0x5a55, 0xcd,
-	0x5a56, 0xcd,
-	0x5a57, 0xcd,
-	0x5a58, 0xcd,
-	0x5a59, 0xcd,
-	0x5a5a, 0xcd,
-	0x5a5b, 0xcd,
-	0x5a5c, 0xcd,
-	0x5a5d, 0xcd,
-	0x5a5e, 0xcd,
-	0x5a5f, 0xcd,
-	0x5a60, 0xcd,
-	0x5a61, 0xcd,
-	0x5a62, 0xcd,
-	0x5a63, 0xcd,
-	0x5a64, 0xcd,
-	0x5a65, 0xcd,
-	0x5a66, 0xcd,
-	0x5a67, 0xcd,
-	0x5a68, 0xcd,
-	0x5a69, 0xcd,
-	0x5a6a, 0xcd,
-	0x5a6b, 0xcd,
-	0x5a6c, 0xcd,
-	0x5a6d, 0xcd,
-	0x5a6e, 0xcd,
-	0x5a6f, 0xcd,
-	0x5a70, 0xcd,
-	0x5a71, 0xcd,
-	0x5a72, 0xcd,
-	0x5a73, 0xcd,
-	0x5a74, 0xcd,
-	0x5a75, 0xcd,
-	0x5a76, 0xcd,
-	0x5a77, 0xcd,
-	0x5a78, 0xcd,
-	0x5a79, 0xcd,
-	0x5a7a, 0xcd,
-	0x5a7b, 0xcd,
-	0x5a7c, 0xcd,
-	0x5a7d, 0xcd,
-	0x5a7e, 0xcd,
-	0x5a7f, 0xcd,
-	0x5a80, 0xcd,
-	0x5a81, 0xcd,
-	0x5a82, 0xcd,
-	0x5a83, 0xcd,
-	0x5a84, 0xcd,
-	0x5a85, 0xcd,
-	0x5a86, 0xcd,
-	0x5a87, 0xcd,
-	0x5a88, 0xcd,
-	0x5a89, 0xcd,
-	0x5a8a, 0xcd,
-	0x5a8b, 0xcd,
-	0x5a8c, 0xcd,
-	0x5a8d, 0xcd,
-	0x5a8e, 0xcd,
-	0x5a8f, 0xcd,
-	0x5a90, 0xcd,
-	0x5a91, 0xcd,
-	0x5a92, 0xcd,
-	0x5a93, 0xcd,
-	0x5a94, 0xcd,
-	0x5a95, 0xcd,
-	0x5a96, 0xcd,
-	0x5a97, 0xcd,
-	0x5a98, 0xcd,
-	0x5a99, 0xcd,
-	0x5a9a, 0xcd,
-	0x5a9b, 0xcd,
-	0x5a9c, 0xcd,
-	0x5a9d, 0xcd,
-	0x5a9e, 0xcd,
-	0x5a9f, 0xcd,
-	0x5aa0, 0xcd,
-	0x5aa1, 0xcd,
-	0x5aa2, 0xcd,
-	0x5aa3, 0xcd,
-	0x5aa4, 0xcd,
-	0x5aa5, 0xcd,
-	0x5aa6, 0xcd,
-	0x5aa7, 0xcd,
-	0x5aa8, 0xcd,
-	0x5aa9, 0xcd,
-	0x5aaa, 0xcd,
-	0x5aab, 0xcd,
-	0x5aac, 0xcd,
-	0x5aad, 0xcd,
-	0x5aae, 0xcd,
-	0x5aaf, 0xcd,
-	0x5ab0, 0xcd,
-	0x5ab1, 0xcd,
-	0x5ab2, 0xcd,
-	0x5ab3, 0xcd,
-	0x5ab4, 0xcd,
-	0x5ab5, 0xcd,
-	0x5ab6, 0xcd,
-	0x5ab7, 0xcd,
-	0x5ab8, 0xcd,
-	0x5ab9, 0xcd,
-	0x5aba, 0xcd,
-	0x5abb, 0xcd,
-	0x5abc, 0xcd,
-	0x5abd, 0xcd,
-	0x5abe, 0xcd,
-	0x5abf, 0xcd,
-	0x5ac0, 0xcd,
-	0x5ac1, 0xcd,
-	0x5ac2, 0xcd,
-	0x5ac3, 0xcd,
-	0x5ac4, 0xcd,
-	0x5ac5, 0xcd,
-	0x5ac6, 0xcd,
-	0x5ac7, 0xcd,
-	0x5ac8, 0xcd,
-	0x5ac9, 0xcd,
-	0x5aca, 0xcd,
-	0x5acb, 0xcd,
-	0x5acc, 0xcd,
-	0x5acd, 0xcd,
-	0x5ace, 0xcd,
-	0x5acf, 0xcd,
-	0x5ad0, 0xcd,
-	0x5ad1, 0xcd,
-	0x5ad2, 0xcd,
-	0x5ad3, 0xcd,
-	0x5ad4, 0xcd,
-	0x5ad5, 0xcd,
-	0x5ad6, 0xcd,
-	0x5ad7, 0xcd,
-	0x5ad8, 0xcd,
-	0x5ad9, 0xcd,
-	0x5ada, 0xcd,
-	0x5adb, 0xcd,
-	0x5adc, 0xcd,
-	0x5add, 0xcd,
-	0x5ade, 0xcd,
-	0x5adf, 0xcd,
-	0x5ae0, 0xcd,
-	0x5ae1, 0xcd,
-	0x5ae2, 0xcd,
-	0x5ae3, 0xcd,
-	0x5ae4, 0xcd,
-	0x5ae5, 0xcd,
-	0x5ae6, 0xcd,
-	0x5ae7, 0xcd,
-	0x5ae8, 0xcd,
-	0x5ae9, 0xcd,
-	0x5aea, 0xcd,
-	0x5aeb, 0xcd,
-	0x5aec, 0xcd,
-	0x5aed, 0xcd,
-	0x5aee, 0xcd,
-	0x5aef, 0xcd,
-	0x5af0, 0xcd,
-	0x5af1, 0xcd,
-	0x5af2, 0xcd,
-	0x5af3, 0xcd,
-	0x5af4, 0xcd,
-	0x5af5, 0xcd,
-	0x5af6, 0xcd,
-	0x5af7, 0xcd,
-	0x5af8, 0xcd,
-	0x5af9, 0xcd,
-	0x5afa, 0xcd,
-	0x5afb, 0xcd,
-	0x5afc, 0xcd,
-	0x5afd, 0xcd,
-	0x5afe, 0xcd,
-	0x5aff, 0xcd,
-	0x5b00, 0xcd,
-	0x5b01, 0xcd,
-	0x5b02, 0xcd,
-	0x5b03, 0xcd,
-	0x5b04, 0xcd,
-	0x5b05, 0xcd,
-	0x5b06, 0xcd,
-	0x5b07, 0xcd,
-	0x5b08, 0xcd,
-	0x5b09, 0xcd,
-	0x5b0a, 0xcd,
-	0x5b0b, 0xcd,
-	0x5b0c, 0xcd,
-	0x5b0d, 0xcd,
-	0x5b0e, 0xcd,
-	0x5b0f, 0xcd,
-	0x5b10, 0xcd,
-	0x5b11, 0xcd,
-	0x5b12, 0xcd,
-	0x5b13, 0xcd,
-	0x5b14, 0xcd,
-	0x5b15, 0xcd,
-	0x5b16, 0xcd,
-	0x5b17, 0xcd,
-	0x5b18, 0xcd,
-	0x5b19, 0xcd,
-	0x5b1a, 0xcd,
-	0x5b1b, 0xcd,
-	0x5b1c, 0xcd,
-	0x5b1d, 0xcd,
-	0x5b1e, 0xcd,
-	0x5b1f, 0xcd,
-	0x5b20, 0xcd,
-	0x5b21, 0xcd,
-	0x5b22, 0xcd,
-	0x5b23, 0xcd,
-	0x5b24, 0xcd,
-	0x5b25, 0xcd,
-	0x5b26, 0xcd,
-	0x5b27, 0xcd,
-	0x5b28, 0xcd,
-	0x5b29, 0xcd,
-	0x5b2a, 0xcd,
-	0x5b2b, 0xcd,
-	0x5b2c, 0xcd,
-	0x5b2d, 0xcd,
-	0x5b2e, 0xcd,
-	0x5b2f, 0xcd,
-	0x5b30, 0xcd,
-	0x5b31, 0xcd,
-	0x5b32, 0xcd,
-	0x5b33, 0xcd,
-	0x5b34, 0xcd,
-	0x5b35, 0xcd,
-	0x5b36, 0xcd,
-	0x5b37, 0xcd,
-	0x5b38, 0xcd,
-	0x5b39, 0xcd,
-	0x5b3a, 0xcd,
-	0x5b3b, 0xcd,
-	0x5b3c, 0xcd,
-	0x5b3d, 0xcd,
-	0x5b3e, 0xcd,
-	0x5b3f, 0xcd,
-	0x5b40, 0xcd,
-	0x5b41, 0xcd,
-	0x5b42, 0xcd,
-	0x5b43, 0xcd,
-	0x5b44, 0xcd,
-	0x5b45, 0xcd,
-	0x5b46, 0xcd,
-	0x5b47, 0xcd,
-	0x5b48, 0xcd,
-	0x5b49, 0xcd,
-	0x5b4a, 0xcd,
-	0x5b4b, 0xcd,
-	0x5b4c, 0xcd,
-	0x5b4d, 0xcd,
-	0x5b4e, 0xcd,
-	0x5b4f, 0xcd,
-	0x5b50, 0xcd,
-	0x5b51, 0xcd,
-	0x5b52, 0xcd,
-	0x5b53, 0xcd,
-	0x5b54, 0xcd,
-	0x5b55, 0xcd,
-	0x5b56, 0xcd,
-	0x5b57, 0xcd,
-	0x5b58, 0xcd,
-	0x5b59, 0xcd,
-	0x5b5a, 0xcd,
-	0x5b5b, 0xcd,
-	0x5b5c, 0xcd,
-	0x5b5d, 0xcd,
-	0x5b5e, 0xcd,
-	0x5b5f, 0xcd,
-	0x5b60, 0xcd,
-	0x5b61, 0xcd,
-	0x5b62, 0xcd,
-	0x5b63, 0xcd,
-	0x5b64, 0xcd,
-	0x5b65, 0xcd,
-	0x5b66, 0xcd,
-	0x5b67, 0xcd,
-	0x5b68, 0xcd,
-	0x5b69, 0xcd,
-	0x5b6a, 0xcd,
-	0x5b6b, 0xcd,
-	0x5b6c, 0xcd,
-	0x5b6d, 0xcd,
-	0x5b6e, 0xcd,
-	0x5b6f, 0xcd,
-	0x5b70, 0xcd,
-	0x5b71, 0xcd,
-	0x5b72, 0xcd,
-	0x5b73, 0xcd,
-	0x5b74, 0xcd,
-	0x5b75, 0xcd,
-	0x5b76, 0xcd,
-	0x5b77, 0xcd,
-	0x5b78, 0xcd,
-	0x5b79, 0xcd,
-	0x5b7a, 0xcd,
-	0x5b7b, 0xcd,
-	0x5b7c, 0xcd,
-	0x5b7d, 0xcd,
-	0x5b7e, 0xcd,
-	0x5b7f, 0xcd,
-	0x5b80, 0xcd,
-	0x5b81, 0xcd,
-	0x5b82, 0xcd,
-	0x5b83, 0xcd,
-	0x5b84, 0xcd,
-	0x5b85, 0xcd,
-	0x5b86, 0xcd,
-	0x5b87, 0xcd,
-	0x5b88, 0xcd,
-	0x5b89, 0xcd,
-	0x5b8a, 0xcd,
-	0x5b8b, 0xcd,
-	0x5b8c, 0xcd,
-	0x5b8d, 0xcd,
-	0x5b8e, 0xcd,
-	0x5b8f, 0xcd,
-	0x5b90, 0xcd,
-	0x5b91, 0xcd,
-	0x5b92, 0xcd,
-	0x5b93, 0xcd,
-	0x5b94, 0xcd,
-	0x5b95, 0xcd,
-	0x5b96, 0xcd,
-	0x5b97, 0xcd,
-	0x5b98, 0xcd,
-	0x5b99, 0xcd,
-	0x5b9a, 0xcd,
-	0x5b9b, 0xcd,
-	0x5b9c, 0xcd,
-	0x5b9d, 0xcd,
-	0x5b9e, 0xcd,
-	0x5b9f, 0xcd,
-	0x5ba0, 0xcd,
-	0x5ba1, 0xcd,
-	0x5ba2, 0xcd,
-	0x5ba3, 0xcd,
-	0x5ba4, 0xcd,
-	0x5ba5, 0xcd,
-	0x5ba6, 0xcd,
-	0x5ba7, 0xcd,
-	0x5ba8, 0xcd,
-	0x5ba9, 0xcd,
-	0x5baa, 0xcd,
-	0x5bab, 0xcd,
-	0x5bac, 0xcd,
-	0x5bad, 0xcd,
-	0x5bae, 0xcd,
-	0x5baf, 0xcd,
-	0x5bb0, 0xcd,
-	0x5bb1, 0xcd,
-	0x8000, 0x00,
-	0x8001, 0x08,
-	0x8002, 0x0a,
-	0x8003, 0x00,
-	0x8004, 0x25,
-	0x8005, 0x0f,
-	0x8006, 0x00,
-	0x8007, 0x3a,
-	0x8008, 0x16,
-	0x8009, 0x00,
-	0x800a, 0x51,
-	0x800b, 0x1d,
-	0x800c, 0x00,
-	0x800d, 0x52,
-	0x800e, 0x12,
-	0x800f, 0x00,
-	0x8010, 0x6a,
-	0x8011, 0x0f,
-	0x8012, 0x00,
-	0x8013, 0x81,
-	0x8015, 0x00,
-	0x8016, 0x9f,
-	0x8017, 0x23,
-	0x8018, 0x00,
-	0x8019, 0xcb,
-	0x801a, 0x6a,
-	0x801b, 0x00,
-	0x801c, 0xe1,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-	0x801e, 0x00,
-	0x801f, 0x00,
-	0x8020, 0x00,
-	0x8021, 0x00,
-	0x8022, 0x00,
-	0x8023, 0x00,
-	0x8024, 0x00,
-	0x8025, 0x00,
-	0x8026, 0x00,
-	0x8027, 0x00,
-	0x8028, 0x00,
-	0x8029, 0x00,
-	0x802a, 0x00,
-	0x802b, 0x00,
-	0x802c, 0x00,
-	0x802d, 0xc5,
-	0x802e, 0xe3,
-	0x802f, 0x97,
-	0x8030, 0xe3,
-	0x8031, 0xe3,
-	0x8032, 0x08,
-	0x8033, 0x00,
-	0x8034, 0x00,
-	0x8035, 0x08,
-	0x8036, 0xe7,
-	0x8037, 0x00,
-	0x8038, 0x00,
-	0x8039, 0xe5,
-	0x803a, 0x02,
-	0x803b, 0xe5,
-	0x803c, 0x02,
-	0x803d, 0xe5,
-	0x803e, 0x02,
-	0x803f, 0xe5,
-	0x8040, 0x02,
-	0x8041, 0xe5,
-	0x8042, 0x02,
-	0x8043, 0xe5,
-	0x8044, 0x02,
-	0x8045, 0xe5,
-	0x8046, 0x02,
-	0x8047, 0x00,
-	0x8048, 0x00,
-	0x8049, 0x00,
-	0x804a, 0x00,
-	0x804b, 0x00,
-	0x804c, 0x00,
-	0x804d, 0x00,
-	0x804e, 0x00,
-	0x804f, 0x08,
-	0x8050, 0x2b,
-	0x8051, 0x2f,
-	0x8052, 0xeb,
-	0x8053, 0x00,
-	0x8054, 0x00,
-	0x8055, 0x6f,
-	0x8056, 0x97,
-	0x8057, 0xe1,
-	0x8058, 0xe5,
-	0x8059, 0x6f,
-	0x805a, 0x97,
-	0x805b, 0xe1,
-	0x805c, 0xe5,
-	0x805d, 0x00,
-	0x805e, 0x00,
-	0x805f, 0x56,
-	0x8060, 0x60,
-	0x8061, 0x99,
-	0x8062, 0xc9,
-	0x8063, 0x00,
-	0x8064, 0x00,
-	0x8065, 0xeb,
-	0x8066, 0x1a,
-	0x8067, 0xeb,
-	0x8068, 0x1a,
-	0x8069, 0xeb,
-	0x806a, 0x1a,
-	0x806b, 0xeb,
-	0x806c, 0x5e,
-	0x806d, 0xeb,
-	0x806e, 0x5e,
-	0x806f, 0x1a,
-	0x8070, 0xe3,
-	0x8071, 0x00,
-	0x8072, 0x00,
-	0x8073, 0x54,
-	0x8074, 0x06,
-	0x8075, 0x00,
-	0x8076, 0x00,
-	0x8077, 0x54,
-	0x8078, 0x06,
-	0x8079, 0x00,
-	0x807a, 0x00,
-	0x807b, 0x54,
-	0x807c, 0x06,
-	0x807d, 0x00,
-	0x807e, 0x00,
-	0x807f, 0x00,
-	0x8080, 0x00,
-	0x8081, 0x00,
-	0x8082, 0x00,
-	0x8083, 0x00,
-	0x8084, 0x00,
-	0x8085, 0x00,
-	0x8086, 0x00,
-	0x8087, 0x00,
-	0x8088, 0x00,
-	0x8089, 0x00,
-	0x808a, 0x00,
-	0x808b, 0x00,
-	0x808c, 0x00,
-	0x808d, 0xe7,
-	0x808e, 0x00,
-	0x808f, 0xe7,
-	0x8090, 0x12,
-	0x8091, 0x56,
-	0x8092, 0xe5,
-	0x8093, 0x01,
-	0x8094, 0x00,
-	0x8095, 0xe7,
-	0x8096, 0x12,
-	0x8097, 0xe7,
-	0x8098, 0x17,
-	0x8099, 0xe7,
-	0x809a, 0x12,
-	0x809b, 0xe7,
-	0x809c, 0x12,
-	0x809d, 0x08,
-	0x809e, 0x97,
-	0x809f, 0xe3,
-	0x80a0, 0x08,
-	0x80a1, 0x08,
-	0x80a2, 0xe3,
-	0x80a3, 0x01,
-	0x80a4, 0xe9,
-	0x80a5, 0x00,
-	0x80a6, 0x00,
-	0x80a7, 0x98,
-	0x80a8, 0xb9,
-	0x80a9, 0x99,
-	0x80aa, 0xb7,
-	0x80ab, 0x00,
-	0x80ac, 0x00,
-	0x80ad, 0x02,
-	0x80ae, 0x24,
-	0x80af, 0x00,
-	0x80b0, 0x00,
-	0x80b1, 0x00,
-	0x80b2, 0x00,
-	0x80b3, 0xe5,
-	0x80b4, 0xe6,
-	0x80b5, 0x00,
-	0x80b6, 0x00,
-	0x80b7, 0x00,
-	0x80b8, 0x00,
-	0x80b9, 0x00,
-	0x80ba, 0x00,
-	0x80bb, 0x00,
-	0x80bc, 0x00,
-	0x80bd, 0x00,
-	0x80be, 0x00,
-	0x80bf, 0x06,
-	0x80c0, 0xe5,
-	0x80c1, 0x3b,
-	0x80c2, 0x3d,
-	0x80c3, 0x00,
-	0x80c4, 0x00,
-	0x80c5, 0x3d,
-	0x80c6, 0x47,
-	0x80c7, 0xd0,
-	0x80c8, 0xda,
-	0x80c9, 0x00,
-	0x80ca, 0x00,
-	0x80cb, 0x99,
-	0x80cc, 0x9d,
-	0x80cd, 0x00,
-	0x80ce, 0x00,
-	0x80cf, 0x00,
-	0x80d0, 0x00,
-	0x80d1, 0x00,
-	0x80d2, 0x00,
-	0x80d3, 0x00,
-	0x80d4, 0x00,
-	0x80d5, 0x00,
-	0x80d6, 0x00,
-	0x80d7, 0x00,
-	0x80d8, 0x00,
-	0x80d9, 0x00,
-	0x80da, 0x00,
-	0x80db, 0xe9,
-	0x80dc, 0xeb,
-	0x80dd, 0x00,
-	0x80de, 0x00,
-	0x80df, 0xe4,
-	0x80e0, 0xe6,
-	0x80e1, 0x00,
-	0x80e2, 0x00,
-	0x80e5, 0x00,
-	0x80e6, 0x00,
-	0x80e7, 0x00,
-	0x80e8, 0x00,
-	0x80e9, 0x02,
-	0x80e3, 0x08,
-	0x80e4, 0x50,
-	0x80ea, 0x00,
-	0x80eb, 0x00,
-	0x80ec, 0x00,
-	0x80ed, 0x00,
-	0x80ee, 0x00,
-	0x80ef, 0x00,
-	0x80f0, 0x00,
-	0x80f1, 0x00,
-	0x80f2, 0x00,
-	0x80f3, 0x00,
-	0x80f4, 0x00,
-	0x80f5, 0x00,
-	0x80f6, 0x00,
-	0x80f7, 0x00,
-	0x80f8, 0x00,
-	0x80f9, 0x00,
-	0x80fa, 0x00,
-	0x80fb, 0x00,
-	0x80fc, 0x00,
-	0x80fd, 0x00,
-	0x80fe, 0x00,
-	0x80ff, 0x00,
-	0x8100, 0x00,
-	0x8101, 0x00,
-	0x8102, 0x00,
-	0x8103, 0x00,
-	0x8104, 0x00,
-	0x8105, 0x00,
-	0x8106, 0x00,
-	0x8107, 0x00,
-	0x8108, 0x00,
-	0x8109, 0x00,
-	0x810a, 0x00,
-	0x810b, 0x00,
-	0x810c, 0x00,
-	0x810d, 0x00,
-	0x810e, 0x00,
-	0x810f, 0xee,
-	0x8110, 0xef,
-	0x8111, 0xa1,
-	0x8112, 0xa6,
-	0x8113, 0xf4,
-	0x8114, 0xf9,
-	0x8115, 0xdd,
-	0x8116, 0xe5,
-	0x8117, 0x6b,
-	0x8118, 0x97,
-	0x8119, 0x08,
-	0x811b, 0x08,
-	0x811c, 0x52,
-	0x811d, 0x08,
-	0x811e, 0x52,
-	0x811f, 0x08,
-	0x8120, 0x52,
-	0x8121, 0x08,
-	0x8123, 0x08,
-	0x8124, 0x52,
-	0x8125, 0x08,
-	0x8126, 0x52,
-	0x8127, 0x08,
-	0x8128, 0x52,
-	0x811a, 0x51,
-	0x8122, 0x52,
-	0x8129, 0x08,
-	0x812a, 0x54,
-	0x812b, 0x00,
-	0x812c, 0x00,
-	0x812d, 0x08,
-	0x812e, 0x54,
-	0x812f, 0x00,
-	0x8130, 0x00,
-	0x8131, 0x08,
-	0x8132, 0x54,
-	0x8133, 0x00,
-	0x8134, 0x00,
-	0x8135, 0x08,
-	0x8136, 0x54,
-	0x8137, 0x00,
-	0x8138, 0x00,
-	0x8139, 0x08,
-	0x813a, 0x54,
-	0x813b, 0x00,
-	0x813c, 0x00,
-	0x813d, 0x08,
-	0x813e, 0x54,
-	0x813f, 0x00,
-	0x8140, 0x00,
-	0x8141, 0x08,
-	0x8142, 0x54,
-	0x8143, 0x00,
-	0x8144, 0x00,
-	0x8145, 0x08,
-	0x8146, 0x54,
-	0x8147, 0x00,
-	0x8148, 0x00,
-	0x8149, 0x6d,
-	0x814a, 0x95,
-	0x814b, 0xdf,
-	0x814c, 0xe3,
-	0x814d, 0x6d,
-	0x814e, 0x95,
-	0x814f, 0xdf,
-	0x8150, 0xe3,
-	0x8151, 0x6d,
-	0x8152, 0x95,
-	0x8153, 0xdf,
-	0x8154, 0xe3,
-	0x8155, 0x6d,
-	0x8156, 0x95,
-	0x8157, 0xdf,
-	0x8158, 0xe3,
-	0x8159, 0x95,
-	0x815a, 0x6d,
-	0x815b, 0xe3,
-	0x815c, 0xdf,
-	0x815d, 0x00,
-	0x815e, 0x00,
-	0x815f, 0x95,
-	0x8160, 0x6d,
-	0x8161, 0xe3,
-	0x8162, 0xdf,
-	0x8163, 0x00,
-	0x8164, 0x00,
-	0x8165, 0x95,
-	0x8166, 0x6d,
-	0x8167, 0xe3,
-	0x8168, 0xdf,
-	0x8169, 0x00,
-	0x816a, 0x00,
-	0x816b, 0x95,
-	0x816c, 0x6d,
-	0x816d, 0xe3,
-	0x816e, 0xdf,
-	0x816f, 0x00,
-	0x8170, 0x00,
-	0x8171, 0x6d,
-	0x8172, 0x95,
-	0x8173, 0xdf,
-	0x8174, 0xe3,
-	0x8175, 0x6d,
-	0x8176, 0x95,
-	0x8177, 0xdf,
-	0x8178, 0xe3,
-	0x8179, 0x6d,
-	0x817a, 0x95,
-	0x817b, 0xdf,
-	0x817c, 0xe3,
-	0x817d, 0x6d,
-	0x817e, 0x95,
-	0x817f, 0xdf,
-	0x8180, 0xe3,
-	0x8056, 0x00,
-	0x8057, 0x00,
-	0x8058, 0x00,
-	0x8059, 0x00,
-	0x805a, 0x00,
-	0x805b, 0x00,
-	0x805c, 0x00,
-	0x802f, 0x08,
-	0x806b, 0x00,
-	0x3047, 0x07,
-	0x3200, 0x00,
-	0x3201, 0x10,
-	0x3202, 0x20,
-	0x382a, 0x80,
-	0x382b, 0x08,
-	0x0361, 0x00,
-	0x370b, 0x54,
-	0x450d, 0x00,
-	0x4509, 0x00,
-	0x4511, 0x02,
-	0x484f, 0x20,
-//	0x0100, 0x01,
-//110 80 10 	;10bit
-//110 40 03 	;VC0,VC1
-//102 d4 1003	;
-};
-
-//M00-4096x3072-PD-992x760-HighGain-30fps.txt
-static kal_uint16 zhuquec1wide_preview_capture_setting[] = {
-//@@M01-4096x3072-PD-992x760-HighGain-30fps
-
-//99 4096 3072
-//98 1 0
-//102 80 1
-//102 81 0
-//102 910 1  	;status bar display on
-//102 3601 bb8 	;Pather tool use only
-//102 d4 1003 	;10bit raw
-//102 9c1 1000	;VC0 Hsize
-//102 9c5 c00	;VC0 Vsize
-//102 9c2 3e0	;VC1 Hsize
-//102 9c6 2f8	;VC1 Vsize
-//110 20 10 	;DPHY 1.2
-//110 40 0
-//102 670 32	;delay
-//110 c0 2400
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x90,
-	0x3508, 0x03,
-	0x3509, 0x00,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x00,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x18,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x0c,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x1e,
-	0x380f, 0xa0,
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x0f,
-	0x381b, 0x48,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,// ;
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x20,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x0b,
-	0x388f, 0xe0,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,//;;1f 992 pd pixel per package 20241202
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4932, 0x00,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5006, 0x80,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51d9, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51de, 0x00,
-	0x51df, 0x00,
-	0x51e0, 0x02,
-	0x51e1, 0x02,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5202, 0x06,
-	0x5203, 0x10,
-	0x5205, 0x08,
-	0x5250, 0x14,
-	0x5251, 0x00,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5258, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527a, 0x00,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f5, 0x01,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-//	0x0100, 0x01,
-
-//110 80 10 	;10bit
-//110 40 03 	;VC0,VC1
-//102 d4 1003	;
-};
-
-//M01-4096x2304-PD-992x576-HighGain-30fps.txt
-static kal_uint16 zhuquec1wide_normal_video_setting[] = {
-//@@M02-4096x2304-PD-992x576-HighGain-30fps
-
-//99 4096 2304
-//102 3601 bb8 	;Pather tool use only
-//102 d4 1003 	;10bit raw
-//102 9c1 1000	;VC0 Hsize
-//102 9c5 900	;VC0 Vsize
-//102 9c2 3e0	;VC1 Hsize
-//102 9c6 240	;VC1 Vsize
-//110 20 10 	;DPHY 1.2
-//110 40 0
-//102 670 32	;delay
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x13,
-	0x3502, 0xf8,
-	0x3508, 0x04,
-	0x3509, 0x00,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x03,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x15,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x09,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,//;45
-	0x380e, 0x1e,//;13
-	0x380f, 0xa0,//;d8
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x09,
-	0x381b, 0xfc,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,// ;
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x09,
-	0x388f, 0x00,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,//;;1f 992 pd pixel per package 20241202
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4932, 0x00,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5006, 0x80,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51d9, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51de, 0x00,
-	0x51df, 0x00,
-	0x51e0, 0x02,
-	0x51e1, 0x02,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5202, 0x06,
-	0x5203, 0x10,
-	0x5205, 0x08,
-	0x5250, 0x14,
-	0x5251, 0x00,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5258, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527a, 0x00,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f5, 0x01,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-//	0x0100, 0x01,
-
-//110 80 10 	;10bit
-//110 40 03 	;VC0,VC1
-//102 d4 1003	;
-
-};
-
-//M02-4096x2304-PD-992x576-NoralGain-60fps.txt
-static kal_uint16 zhuquec1wide_hs_video_setting[] = {
-//@@M03-4096x2304-PD-992x576-NoralGain-60fps
-
-//99 4096 2304
-//102 3601 12c0 	;Pather tool use only
-//102 d4 1003 	;10bit raw
-//102 9c1 1000	;VC0 Hsize
-//102 9c5 900	;VC0 Vsize
-//102 9c2 3e0	;VC1 Hsize
-//102 9c6 240	;VC1 Vsize
-//110 20 10 	;DPHY 1.2
-//110 40 0
-//102 670 32	;delay
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x13,
-	0x3502, 0xc8,
-	0x3508, 0x04,
-	0x3509, 0x00,
-	0x3738, 0x60,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x40,
-	0x373d, 0x12,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x03,
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x15,
-	0x3807, 0x3f,
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x09,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0x48,//;45
-	0x380e, 0x13,//;14
-	0x380f, 0xd8,//;08
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x09,
-	0x381b, 0xfc,
-	0x381c, 0x01,
-	0x381d, 0x45,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,// ;
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0x45,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x09,
-	0x388f, 0x00,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,//;;1f 992 pd pixel per package 20241202
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4932, 0x00,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5006, 0x80,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51d9, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51de, 0x00,
-	0x51df, 0x00,
-	0x51e0, 0x02,
-	0x51e1, 0x02,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5202, 0x06,
-	0x5203, 0x10,
-	0x5205, 0x08,
-	0x5250, 0x14,
-	0x5251, 0x00,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5258, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527a, 0x00,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f5, 0x01,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x14,
-	0x801d, 0x6a,
-	0x801a, 0x6a,
-//	0x0100, 0x01,
-
-//110 80 10 	;10bit
-//110 40 03 	;VC0,VC1
-//102 d4 1003	;
-};
-
-//M03-4096x2048-PD-992x512-HighGain-30fps.txt
-static kal_uint16 zhuquec1wide_slim_video_setting[] = {
-//@@M02-4096x2048-PD-992x512-HighGain-30fps
-
-//99 4096 2048
-//102 3601 bb8 	;Pather tool use only
-//102 d4 1003 	;10bit raw
-//102 9c1 1000	;VC0 Hsize
-//102 9c5 800	;VC0 Vsize
-//102 9c2 3e0	;VC1 Hsize
-//102 9c6 200	;VC1 Vsize
-//110 20 10 	;DPHY 1.2
-//110 40 0
-//102 670 32	;delay
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x13,
-	0x3502, 0xf8,
-	0x3508, 0x04,
-	0x3509, 0x00,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x00,
-	0x3801, 0x00,
-	0x3802, 0x04,//;03
-	0x3803, 0x00,
-	0x3804, 0x20,
-	0x3805, 0x3f,
-	0x3806, 0x14,//;15
-	0x3807, 0x3f,//;3f
-	0x3808, 0x10,
-	0x3809, 0x00,
-	0x380a, 0x08,
-	0x380b, 0x00,
-	0x380c, 0x01,
-	0x380d, 0xa9,//;45
-	0x380e, 0x1e,//;13
-	0x380f, 0xa0,//;d8
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x09,
-	0x381b, 0xfc,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,// ;
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x50,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x0f,
-	0x388d, 0x80,
-	0x388e, 0x08,
-	0x388f, 0x00,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x3e,//;;1f 992 pd pixel per package 20241202
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4932, 0x00,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5006, 0x80,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51d9, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51de, 0x00,
-	0x51df, 0x00,
-	0x51e0, 0x02,
-	0x51e1, 0x02,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5202, 0x06,
-	0x5203, 0x10,
-	0x5205, 0x08,
-	0x5250, 0x14,
-	0x5251, 0x00,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5258, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527a, 0x00,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f5, 0x01,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-//	0x0100, 0x01,
-
-//110 80 10 	;10bit
-//110 40 03 	;VC0,VC1
-//102 d4 1003	;
-};
-
-//M05-3200x2400-PD-800x600-HighGain-24fps.txt
-static kal_uint16 zhuquec1wide_custom1_setting[] = {
-//@@M05-3200x2400-PD-800x600-HighGain-30fps
-
-//99 3200 2400
-//98 1 0
-//102 80 1
-//102 81 0
-//102 910 1  	;status bar display on
-//102 3601 bb8 	;Pather tool use only
-//102 d4 1003 	;10bit raw
-//102 9c1 c80	;VC0 Hsize
-//102 9c5 960	;VC0 Vsize
-//102 9c2 320	;VC1 Hsize
-//102 9c6 258	;VC1 Vsize
-//110 20 10 	;DPHY 1.2
-//110 40 0
-//102 670 32	;delay
-//110 c0 2400
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x90,
-	0x3508, 0x03,
-	0x3509, 0x00,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x03,
-	0x3801, 0x80,
-	0x3802, 0x02,
-	0x3803, 0xa0,
-	0x3804, 0x1c,
-	0x3805, 0xbf,
-	0x3806, 0x15,
-	0x3807, 0x9f,
-	0x3808, 0x0c,
-	0x3809, 0x80,
-	0x380a, 0x09,
-	0x380b, 0x60,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x26,//;1e
-	0x380f, 0x4b,//;a0 30fps to 24fps
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x0f,
-	0x381b, 0x48,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,//  ;
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x10,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x0c,
-	0x388d, 0x80,
-	0x388e, 0x09,
-	0x388f, 0x60,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x32,//;;19 800pixel/package
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4932, 0x00,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5006, 0x80,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51d9, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51de, 0x00,
-	0x51df, 0x00,
-	0x51e0, 0x02,
-	0x51e1, 0x02,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5202, 0x06,
-	0x5203, 0x10,
-	0x5205, 0x08,
-	0x5250, 0x14,
-	0x5251, 0x00,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5258, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527a, 0x00,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f5, 0x01,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-//	0x0100, 0x01,
-//110 80 10 	;10bit
-//110 40 03 	;VC0,VC1
-//102 d4 1003	;
-};
-
-//M06-1792x1344-PD-448x336-HighGain-24fps.txt
-static kal_uint16 zhuquec1wide_custom2_setting[] = {
-//@@M06-1792x1344-PD-448x336-HighGain-24fps
-
-//99 1792 1344
-//98 1 0
-//102 80 1
-//102 81 0
-//102 910 1  	;status bar display on
-//102 3601 bb8 	;Pather tool use only
-//102 d4 1003 	;10bit raw
-//102 9c1 700	;VC0 Hsize
-//102 9c5 540	;VC0 Vsize
-//102 9c2 1c0	;VC1 Hsize
-//102 9c6 150	;VC1 Vsize
-//110 20 10 	;DPHY 1.2
-//110 40 0
-//102 670 32	;delay
-//110 c0 2400
-
-	0x0100, 0x00,
-	0x0305, 0x3d,
-	0x0306, 0x04,
-	0x0307, 0x00,
-	0x3500, 0x00,
-	0x3501, 0x1e,
-	0x3502, 0x90,
-	0x3508, 0x03,
-	0x3509, 0x00,
-	0x3738, 0xdd,
-	0x3739, 0x02,
-	0x373a, 0x00,
-	0x373b, 0x0a,
-	0x373c, 0x6b,
-	0x373d, 0x10,
-	0x3761, 0x10,
-	0x3767, 0x30,
-	0x3768, 0x40,
-	0x3769, 0x50,
-	0x3800, 0x09,
-	0x3801, 0x00,
-	0x3802, 0x06,
-	0x3803, 0xc0,
-	0x3804, 0x17,
-	0x3805, 0x3f,
-	0x3806, 0x11,
-	0x3807, 0x7f,
-	0x3808, 0x07,
-	0x3809, 0x00,
-	0x380a, 0x05,
-	0x380b, 0x40,
-	0x380c, 0x01,
-	0x380d, 0xa9,
-	0x380e, 0x26,//;1e
-	0x380f, 0x4b,//;a0 30fps to 24fps
-	0x3810, 0x00,
-	0x3811, 0x11,
-	0x3812, 0x00,
-	0x3813, 0x10,
-	0x3814, 0x11,
-	0x3815, 0x11,
-	0x381a, 0x0f,
-	0x381b, 0x48,
-	0x381c, 0x01,
-	0x381d, 0xa9,
-	0x381f, 0x02,
-	0x3820, 0x02,
-	0x3821, 0x17,
-	0x3822, 0x00,//  ;
-	0x3831, 0x00,
-	0x3837, 0x06,
-	0x384c, 0x01,
-	0x384d, 0xa9,
-	0x3888, 0x00,
-	0x3889, 0x10,
-	0x388a, 0x00,
-	0x388b, 0x10,
-	0x388c, 0x07,
-	0x388d, 0x00,
-	0x388e, 0x05,
-	0x388f, 0x40,
-	0x4c00, 0x00,
-	0x4c14, 0x02,
-	0x4c15, 0x06,
-	0x4c16, 0x0a,
-	0x4c17, 0x0e,
-	0x4c18, 0x01,
-	0x4c19, 0x00,
-	0x4c1a, 0x08,
-	0x4c1b, 0x10,
-	0x4c30, 0x02,
-	0x4c31, 0x06,
-	0x4c32, 0x02,
-	0x4c33, 0x06,
-	0x4c34, 0x02,
-	0x4c35, 0x06,
-	0x4c36, 0x0a,
-	0x4c37, 0x0e,
-	0x4c38, 0x01,
-	0x4c39, 0x00,
-	0x4c3a, 0x08,
-	0x4c3b, 0x10,
-	0x4c50, 0x02,
-	0x4c51, 0x06,
-	0x4c52, 0x02,
-	0x4c53, 0x06,
-	0x4c54, 0x02,
-	0x4c55, 0x06,
-	0x4c56, 0x0a,
-	0x4c57, 0x0e,
-	0x4c58, 0x01,
-	0x4c59, 0x00,
-	0x4c5a, 0x08,
-	0x4c5b, 0x10,
-	0x4c62, 0x00,
-	0x4c63, 0x00,
-	0x4c64, 0x00,
-	0x4c65, 0x00,
-	0x4c66, 0x00,
-	0x4c67, 0x00,
-	0x4c68, 0x02,
-	0x4c69, 0x00,
-	0x4c6a, 0x01,
-	0x4c6b, 0x00,
-	0x4010, 0xe8,
-	0x4011, 0x81,
-	0x4012, 0x0c,
-	0x4015, 0x02,
-	0x4016, 0x0d,
-	0x4017, 0x02,
-	0x4018, 0x0d,
-	0x4031, 0x10,
-	0x4032, 0x00,
-	0x4033, 0x10,
-	0x4034, 0x08,
-	0x4035, 0x10,
-	0x4036, 0x08,
-	0x4037, 0x10,
-	0x4040, 0x08,
-	0x4041, 0x10,
-	0x4042, 0x08,
-	0x4043, 0x10,
-	0x4044, 0x00,
-	0x4045, 0x10,
-	0x4046, 0x00,
-	0x4047, 0x10,
-	0x4583, 0x08,
-	0x4584, 0x10,
-	0x4641, 0x1c,
-	0x4684, 0x13,
-	0x4837, 0x08,
-	0x4850, 0x47,
-	0x4931, 0x10,
-	0x4932, 0x00,
-	0x4933, 0x10,
-	0x4934, 0x08,
-	0x4935, 0x10,
-	0x4936, 0x08,
-	0x4937, 0x10,
-	0x4940, 0x08,
-	0x4941, 0x10,
-	0x4942, 0x08,
-	0x4943, 0x10,
-	0x4944, 0x00,
-	0x4945, 0x10,
-	0x4946, 0x00,
-	0x4947, 0x10,
-	0x5001, 0x01,
-	0x5005, 0x02,
-	0x5006, 0x80,
-	0x5007, 0x1e,
-	0x5180, 0x81,
-	0x51d2, 0xff,
-	0x51d3, 0x0c,
-	0x51d8, 0x04,
-	0x51d9, 0x04,
-	0x51da, 0x00,
-	0x51db, 0x01,
-	0x51dc, 0x02,
-	0x51dd, 0x03,
-	0x51de, 0x00,
-	0x51df, 0x00,
-	0x51e0, 0x02,
-	0x51e1, 0x02,
-	0x51f8, 0x08,
-	0x51f9, 0x10,
-	0x5200, 0x08,
-	0x5201, 0x10,
-	0x5202, 0x06,
-	0x5203, 0x10,
-	0x5205, 0x08,
-	0x5250, 0x14,
-	0x5251, 0x00,
-	0x5252, 0x00,
-	0x5253, 0x00,
-	0x5258, 0x00,
-	0x5259, 0x00,
-	0x525e, 0x1f,
-	0x525f, 0x80,
-	0x5260, 0x17,
-	0x5261, 0xa0,
-	0x526a, 0x10,
-	0x526b, 0x20,
-	0x526c, 0x01,
-	0x526d, 0x01,
-	0x526e, 0x04,
-	0x526f, 0x04,
-	0x5270, 0x0c,
-	0x5271, 0x0c,
-	0x5272, 0x04,
-	0x5273, 0x0c,
-	0x5274, 0x14,
-	0x5275, 0x1c,
-	0x5277, 0x02,
-	0x5279, 0x02,
-	0x527a, 0x00,
-	0x527b, 0x40,
-	0x527c, 0x00,
-	0x527d, 0x54,
-	0x52f1, 0x08,
-	0x52f2, 0x07,
-	0x52f3, 0x09,
-	0x52f4, 0x0a,
-	0x52f5, 0x01,
-	0x52f6, 0x04,
-	0x52f7, 0x03,
-	0x52f8, 0x05,
-	0x52f9, 0x06,
-	0x8014, 0x46,
-	0x801d, 0x9c,
-	0x801a, 0x83,
-//	0x0100, 0x01,
-//110 80 10 	;10bit
-//110 40 03 	;VC0,VC1
-//102 d4 1003	;
-};
-
-static kal_uint16 zhuquec1wide_custom3_setting[] = {};
-
-static kal_uint16 zhuquec1wide_custom4_setting[] = {};
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1wide_ana_gain_table.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1wide_ana_gain_table.h
deleted file mode 100755
index 3de1577f..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1wide_ana_gain_table.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 zhuquec1wide_ana_gain_table.h
- *
- * Project:
- * --------
- * Description:
- * ------------
- *	 Analog Gain Table
- *
- ****************************************************************************/
-#ifndef __ZHUQUEC1WIDE_ANA_GAIN_TABLE_H__
-#define __ZHUQUEC1WIDE_ANA_GAIN_TABLE_H__
-
-#include "kd_camera_typedef.h"
-
-static kal_uint32 zhuquec1wide_ana_gain_table[] = {
-	1024,
-	1088,
-	1152,
-	1216,
-	1280,
-	1344,
-	1408,
-	1472,
-	1536,
-	1600,
-	1664,
-	1728,
-	1792,
-	1856,
-	1920,
-	1984,
-	2048,
-	2176,
-	2304,
-	2432,
-	2560,
-	2688,
-	2816,
-	2944,
-	3072,
-	3200,
-	3328,
-	3456,
-	3584,
-	3712,
-	3840,
-	3968,
-	4096,
-	4352,
-	4608,
-	4864,
-	5120,
-	5376,
-	5632,
-	5888,
-	6144,
-	6400,
-	6656,
-	6912,
-	7168,
-	7424,
-	7680,
-	7936,
-	8192,
-	8704,
-	9216,
-	9728,
-	10240,
-	10752,
-	11264,
-	11776,
-	12288,
-	12800,
-	13312,
-	13824,
-	14336,
-	14848,
-	15360,
-	15872,
-	16384,
-	17408,
-	18432,
-	19456,
-	20480,
-	21504,
-	22528,
-	23552,
-	24576,
-	25600,
-	26624,
-	27648,
-	28672,
-	29696,
-	30720,
-	31744,
-	32768,
-	34816,
-	36864,
-	38912,
-	40960,
-	43008,
-	45056,
-	47104,
-	49152,
-	51200,
-	53248,
-	55296,
-	57344,
-	59392,
-	61440,
-	63488,
-};
-
-#endif
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1widemipiraw_Sensor.c b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1widemipiraw_Sensor.c
deleted file mode 100755
index c21fccaa..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1widemipiraw_Sensor.c
+++ /dev/null
@@ -1,2080 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2022 MediaTek Inc.
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *	 zhuquec1widemipiraw_Sensor.c
- *
- * Project:
- * --------
- *	 ALPS
- *
- * Description:
- * ------------
- *	 Source code of Sensor driver
- *
- *
- *------------------------------------------------------------------------------
- * Upper this line, this part is controlled by CC/CQ. DO NOT MODIFY!!
- *============================================================================
- ****************************************************************************/
-#include "zhuquec1widemipiraw_Sensor.h"
-//OV50D40
-#define SENSOR_NAME  SENSOR_DRVNAME_ZHUQUEC1WIDE_MIPI_RAW
-
-#define ZHUQUEC1WIDE_EEPROM_ADDR        (0xA0)
-#define ZHUQUEC1WIDE_EERPOM_MAX_OFFSET  (0x4000)
-//#define OPLUS_CAMERA_COMMON_DATA_LENGTH (40)
-
-#define PFX "zhuquec1wide_camera_sensor"
-#define LOG_INF(format, args...) pr_err(PFX "[%s] " format, __func__, ##args)
-
-
-#ifdef  EEPROM_WRITE_DATA_MAX_LENGTH
-#undef  EEPROM_WRITE_DATA_MAX_LENGTH
-#endif
-#define EEPROM_WRITE_DATA_MAX_LENGTH       (64)
-#define ZHUQUEC1WIDE_STEREO_MW_START_ADDR  (0x2980)
-#define ZHUQUEC1WIDE_AESYNC_START_ADDR     (0x2F90)
-
-#define  OTP_PDC_IS_VALID_VAL     (0x01)
-#define  OTP_PDC_VALID_ADDR       (0x1ACA)
-static u8 pdc_is_valid = 0;
-
-#define ZHUQUEC1WIDE_IMGSENSOR_ID   (0x565044)
-
-#define ZHUQUEC1WIDE_UNIQUE_SENSOR_ID_ADDR    (0x7000)  //?????
-#define ZHUQUEC1WIDE_UNIQUE_SENSOR_ID_LENGTH  (16)
-// static BYTE zhuquec1wide_unique_id[ZHUQUEC1WIDE_UNIQUE_SENSOR_ID_LENGTH] = { 0 };
-static struct oplus_eeprom_info_struct  oplus_eeprom_info = {0};
-
-static kal_uint8 otp_data_checksum[ZHUQUEC1WIDE_EERPOM_MAX_OFFSET] = {0};
-static int get_sensor_temperature(void *arg);
-#define MAX_BURST_LEN  (2048)
-static u8 * msg_buf = NULL;
-static void set_group_hold(void *arg, u8 en);
-static u16 get_gain2reg(u32 gain);
-//static int zhuquec1wide_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_get_eeprom_comdata(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id);
-static int open(struct subdrv_ctx *ctx);
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id);
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt);
-//static void zhuquec1wide_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter);
-static int zhuquec1wide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1wide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length);
-static void zhuquec1wide_set_multi_shutter_frame_length(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt, u16 frame_length);
-static int zhuquec1wide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size);
-static int zhuquec1wide_i2c_burst_wr_regs_u8(struct subdrv_ctx *ctx, u16 * list, u32 len);
-static int adapter_i2c_burst_wr_regs_u8(struct subdrv_ctx * ctx,
-		u16 addr, u16 *list, u32 len);
-static bool g_id_from_dts_flag = false;
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id);
-//static int zhuquec1wide_streaming_resume(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-//static int zhuquec1wide_streaming_suspend(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-//static void zhuquec1wide_write_frame_length(struct subdrv_ctx *ctx, u32 fll);
-// static int zhuquec1wide_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-//static int zhuquec1wide_get_cloud_otp_info(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static int zhuquec1wide_get_pdafblock_info(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-static void zhuquec1wide_get_sensor_cali(void* arg);
-static void zhuquec1wide_set_sensor_cali(void *arg);
-static int zhuquec1wide_get_readout_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len);
-/* STRUCT */
-
-static struct eeprom_map_info zhuquec1wide_eeprom_info[] = {
-	{ EEPROM_META_MODULE_ID, 0x0000, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_SENSOR_ID, 0x0006, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_LENS_ID, 0x0008,0x0010, 0x0011, 2, true },
-	{ EEPROM_META_VCM_ID, 0x000A, 0x0010, 0x0011, 2, true },
-	{ EEPROM_META_MIRROR_FLIP, 0x000E, 0x0010, 0x0011, 1, true },
-	{ EEPROM_META_MODULE_SN, 0x00B0, 0x00C7, 0x00C8,23, true },
-	{ EEPROM_META_AF_CODE, 0x0092, 0x0098, 0x0099, 6, true },
-	{ EEPROM_META_AF_FLAG, 0x0098, 0x0098, 0x0099, 1, true },
-	{ EEPROM_META_STEREO_DATA, 0x0000, 0x0000, 0x0000, 0x0000, false },
-	{ EEPROM_META_STEREO_MW_MAIN_DATA, ZHUQUEC1WIDE_STEREO_MW_START_ADDR, 0xFFFF, 0xFFFF, CALI_DATA_SLAVE_LENGTH, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA, 0, 0, 0, 0, false },
-	{ EEPROM_META_STEREO_MT_MAIN_DATA_105CM, 0, 0, 0, 0, false },
-	{ EEPROM_META_DISTORTION_DATA, 0, 0, 0, 0, false },
-};
-
-static struct subdrv_feature_control feature_control_list[] = {
-	{SENSOR_FEATURE_SET_TEST_PATTERN, zhuquec1wide_set_test_pattern},
-//	{SENSOR_FEATURE_SEAMLESS_SWITCH, zhuquec1wide_seamless_switch},
-	{SENSOR_FEATURE_CHECK_SENSOR_ID, zhuquec1wide_check_sensor_id},
-	{SENSOR_FEATURE_GET_EEPROM_COMDATA, zhuquec1wide_get_eeprom_comdata},
-	{SENSOR_FEATURE_SET_SENSOR_OTP, zhuquec1wide_set_eeprom_calibration},
-	{SENSOR_FEATURE_GET_EEPROM_STEREODATA, zhuquec1wide_get_eeprom_calibration},
-	{SENSOR_FEATURE_GET_SENSOR_OTP_ALL, zhuquec1wide_get_otp_checksum_data},
-	{SENSOR_FEATURE_GET_MIN_SHUTTER_BY_SCENARIO, zhuquec1wide_get_min_shutter_by_scenario_adapter},
-//	{SENSOR_FEATURE_SET_STREAMING_SUSPEND, zhuquec1wide_streaming_suspend},
-	{SENSOR_FEATURE_SET_ESHUTTER, zhuquec1wide_set_shutter},
-	{SENSOR_FEATURE_SET_SHUTTER_FRAME_TIME, zhuquec1wide_set_shutter_frame_length},
-	{SENSOR_FEATURE_SET_HDR_SHUTTER, zhuquec1wide_set_hdr_tri_shutter2},
-	{SENSOR_FEATURE_SET_HDR_TRI_SHUTTER, zhuquec1wide_set_hdr_tri_shutter3},
-	{SENSOR_FEATURE_SET_MULTI_SHUTTER_FRAME_TIME, zhuquec1wide_set_multi_shutter_frame_length_ctrl},
-//	{SENSOR_FEATURE_SET_STREAMING_RESUME, zhuquec1wide_streaming_resume},
-	// {SENSOR_FEATURE_GET_UNIQUE_SENSORID, zhuquec1wide_get_unique_sensorid},
-	// {SENSOR_FEATURE_GET_CLOUD_OTP_INFO, zhuquec1wide_get_cloud_otp_info},
-	{SENSOR_FEATURE_GET_PDAF_INFO, zhuquec1wide_get_pdafblock_info},
-	{SENSOR_FEATURE_GET_READOUT_BY_SCENARIO, zhuquec1wide_get_readout_by_scenario},
-};
-
-static struct eeprom_info_struct eeprom_info[] = {
-	{
-		.header_id = 0x01AB0115,
-		.addr_header_id = 0x00000006,
-		.i2c_write_id = ZHUQUEC1WIDE_EEPROM_ADDR,
-		.pdc_support = TRUE,
-		.pdc_size = 450,
-		.addr_pdc = 0x1908,
-		.sensor_reg_addr_pdc = 0x59f0,
-	},
-};
-
-static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info = {  //partial PD
-	.i4OffsetX = 64,
-	.i4OffsetY = 16,
-	.i4PitchX = 16,
-	.i4PitchY = 16,
-	.i4PairNum = 8,
-	.i4SubBlkW = 8,
-	.i4SubBlkH = 4,
-	.i4PosL = {{70, 18}, {78, 18}, {67, 22}, {74, 22}, {70, 26}, {78, 26}, {67, 30}, {74, 30}},
-	.i4PosR = {{69, 18}, {77, 18}, {65, 22}, {73, 22}, {69, 26}, {77, 26}, {65, 30}, {73, 30}},
-	.i4BlockNumX = 248,
-	.i4BlockNumY = 190,
-	.i4LeFirst = 0,
-	.i4Crop = {
-		/* 
     */
-		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 512},
-		/*      */
-		{448, 336}, {1152, 864},
-		/*     */
-	},
-	.iMirrorFlip = 0,
-	.i4FullRawW = 4096,
-	.i4FullRawH = 3072,
-	.i4VCPackNum = 1,
-	.PDAF_Support = PDAF_SUPPORT_CAMSV,
-	.i4ModeIndex = 0x0,
-	.sPDMapInfo[0] = {
-		.i4PDPattern = 2,//all-pd
-		//.i4BinFacX = 2,
-		//.i4BinFacY = 4,
-		.i4PDRepetition = 2,
-		.i4PDOrder = {1}, //R=1, L=0
-	},
-};
-
-//static struct SET_PD_BLOCK_INFO_T imgsensor_pd_info_v2h2 = {
-//	.i4OffsetX = 0,
-//	.i4OffsetY = 0,
-//	.i4PitchX = 0,
-//	.i4PitchY = 0,
-//	.i4PairNum = 0,
-//	.i4SubBlkW = 0,
-//	.i4SubBlkH = 0,
-//	.i4PosL = {{0, 0} },
-//	.i4PosR = {{0, 0} },
-//	.i4BlockNumX = 0,
-//	.i4BlockNumY = 0,
-//	.i4LeFirst = 0,
-//	.i4Crop = {
-//		{0, 0}, {0, 0}, {0, 384}, {0, 384}, {0, 192},
-//		{0, 192}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 384},
-//		{320, 240}, {0, 384}, {0, 0},{0, 0},{0, 0},{0, 0},{0, 192},
-//	},
-//	.iMirrorFlip = IMAGE_NORMAL,
-//	.i4FullRawW = 2048,
-//	.i4FullRawH = 1536,
-//	.i4VCPackNum = 1,
-//	.PDAF_Support = PDAF_SUPPORT_CAMSV_QPD,//PDAF_SUPPORT_CAMSV_QPD,
-//	.i4ModeIndex = 0x2,
-//	.sPDMapInfo[0] = {
-//		.i4PDPattern = 1,//all-pd
-//		.i4BinFacX = 2,
-//		.i4BinFacY = 4,
-//		.i4PDRepetition = 0,
-//		.i4PDOrder = {1}, //R=1, L=0
-//	},
-//};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_prev_cap[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 3072,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 760,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-
-	},
-
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_vid[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-static struct mtk_mbus_frame_desc_entry frame_desc_hs[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2304,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-    // partial pd
-	{
-	    .bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 576,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_slim[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 4096,
-			.vsize = 2048,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 992,
-			.vsize = 512,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus1[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 3200,
-			.vsize = 2400,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 800,
-			.vsize = 600,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct mtk_mbus_frame_desc_entry frame_desc_cus2[] = {
-	{
-		.bus.csi2 = {
-			.channel = 0,
-			.data_type = 0x2b,
-			.hsize = 1792,
-			.vsize = 1344,
-			.user_data_desc = VC_STAGGER_NE,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_FIRST,
-		},
-	},
-	{
-		.bus.csi2 = {
-			.channel = 1,
-			.data_type = 0x2b,
-			.hsize = 448,
-			.vsize = 336,
-			.user_data_desc = VC_PDAF_STATS_NE_PIX_1,
-			.dt_remap_to_type = MTK_MBUS_FRAME_DESC_REMAP_TO_RAW10,
-			.fs_seq = MTK_FRAME_DESC_FS_SEQ_LAST,
-		},
-	},
-};
-
-static struct subdrv_mode_struct mode_struct[] = {
-    {//M00-4096x3072-PD-992x760-HighGain-30fps.txt
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = zhuquec1wide_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1wide_preview_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 7840,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 190200000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{//M00-4096x3072-PD-992x760-HighGain-30fps.txt
-		.frame_desc = frame_desc_prev_cap,
-		.num_entries = ARRAY_SIZE(frame_desc_prev_cap),
-		.mode_setting_table = zhuquec1wide_preview_capture_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1wide_preview_capture_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 7840,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 190200000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 0,
-			.w0_size = 8192,
-			.h0_size = 6144,
-			.scale_w = 4096,
-			.scale_h = 3072,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 3072,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 3072,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = UNUSE_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-	{//M01-4096x2304-PD-992x576-HighGain-30fps.txt
-		.frame_desc = frame_desc_vid,
-		.num_entries = ARRAY_SIZE(frame_desc_vid),
-		.mode_setting_table = zhuquec1wide_normal_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1wide_normal_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 7840,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 190200000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//M02-4096x2304-PD-992x576-NoralGain-60fps.txt
-		.frame_desc = frame_desc_hs,
-		.num_entries = ARRAY_SIZE(frame_desc_hs),
-		.mode_setting_table = zhuquec1wide_hs_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1wide_hs_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 328,
-		.framelength = 5080,
-		.max_framerate = 600,
-		.mipi_pixel_rate = 190200000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 768,
-			.w0_size = 8192,
-			.h0_size = 4608,
-			.scale_w = 4096,
-			.scale_h = 2304,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2304,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2304,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 15.5,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].min = BASEGAIN * 1,
-		.multi_exposure_ana_gain_range[IMGSENSOR_EXPOSURE_LE].max = BASEGAIN * 15.5,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 60,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//M03-4096x2048-PD-992x512-HighGain-30fps.txt
-		.frame_desc = frame_desc_slim,
-		.num_entries = ARRAY_SIZE(frame_desc_slim),
-		.mode_setting_table = zhuquec1wide_slim_video_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1wide_slim_video_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 7840,
-		.max_framerate = 300,
-		.mipi_pixel_rate = 190200000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 0,
-			.y0_offset = 1024,
-			.w0_size = 8192,
-			.h0_size = 4096,
-			.scale_w = 4096,
-			.scale_h = 2048,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 4096,
-			.h1_size = 2048,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 4096,
-			.h2_tg_size = 2048,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 30,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//M05-3200x2400-PD-800x600-HighGain-24fps.txt
-		.frame_desc = frame_desc_cus1,
-		.num_entries = ARRAY_SIZE(frame_desc_cus1),
-		.mode_setting_table = zhuquec1wide_custom1_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1wide_custom1_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 9804,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 190200000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 896,
-			.y0_offset = 672,
-			.w0_size = 6400,
-			.h0_size = 4800,
-			.scale_w = 3200,
-			.scale_h = 2400,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 3200,
-			.h1_size = 2400,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 3200,
-			.h2_tg_size = 2400,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-    {//M06-1792x1344-PD-448x336-HighGain-24fps.txt
-		.frame_desc = frame_desc_cus2,
-		.num_entries = ARRAY_SIZE(frame_desc_cus2),
-		.mode_setting_table = zhuquec1wide_custom2_setting,
-		.mode_setting_len = ARRAY_SIZE(zhuquec1wide_custom2_setting),
-		.seamless_switch_group = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_table = PARAM_UNDEFINED,
-		.seamless_switch_mode_setting_len = PARAM_UNDEFINED,
-		.hdr_mode = HDR_NONE,
-		.raw_cnt = 1,
-		.exp_cnt = 1,
-		.pclk = 100000000,
-		.linelength = 425,
-		.framelength = 9804,
-		.max_framerate = 240,
-		.mipi_pixel_rate = 190200000,
-		.readout_length = 0,
-		.read_margin = 0,
-		.framelength_step = 2,
-		.coarse_integ_step = 2,
-		.imgsensor_winsize_info = {
-			.full_w = 8192,
-			.full_h = 6144,
-			.x0_offset = 2304,
-			.y0_offset = 1728,
-			.w0_size = 3584,
-			.h0_size = 2688,
-			.scale_w = 1792,
-			.scale_h = 1344,
-			.x1_offset = 0,
-			.y1_offset = 0,
-			.w1_size = 1792,
-			.h1_size = 1344,
-			.x2_tg_offset = 0,
-			.y2_tg_offset = 0,
-			.w2_tg_size = 1792,
-			.h2_tg_size = 1344,
-		},
-		.pdaf_cap = TRUE,
-		.imgsensor_pd_info = &imgsensor_pd_info,
-		.ae_binning_ratio = 1,
-		.fine_integ_line = 0,
-		.delay_frame = 2,
-		.csi_param = {0},
-		.ana_gain_max = BASEGAIN * 62,
-		.sensor_setting_info = {
-			.sensor_scenario_usage = NORMAL_MASK,
-			.equivalent_fps = 24,
-			.sensorScenario = SENSOR_SCENARIO_BIN,
-		},
-	},
-};
-
-static struct subdrv_static_ctx static_ctx = {
-	.sensor_id = ZHUQUEC1WIDE_SENSOR_ID,
-	.reg_addr_sensor_id = {0x300a, 0x300b, 0x300c},
-	.i2c_addr_table = {0x44, 0xFF},
-	.i2c_burst_write_support = TRUE,
-	.i2c_transfer_data_type = I2C_DT_ADDR_16_DATA_8,
-	.eeprom_info = eeprom_info,
-	.eeprom_num = ARRAY_SIZE(eeprom_info),
-	.resolution = {8192, 6144},
-	.mirror = IMAGE_NORMAL,
-
-	.mclk = 24,
-	.isp_driving_current = ISP_DRIVING_4MA,
-	.sensor_interface_type = SENSOR_INTERFACE_TYPE_MIPI,
-	.mipi_sensor_type = MIPI_OPHY_NCSI2,
-	.mipi_lane_num = SENSOR_MIPI_4_LANE,
-	.ob_pedestal = 0x40,
-
-	.sensor_output_dataformat = SENSOR_OUTPUT_FORMAT_RAW_4CELL_HW_BAYER_B,
-	.ana_gain_def = BASEGAIN * 4,
-	.ana_gain_min = BASEGAIN * 1,
-	.ana_gain_max = BASEGAIN * 62,
-	.ana_gain_type = 1,
-	.ana_gain_step = 1,
-	.ana_gain_table = zhuquec1wide_ana_gain_table,
-	.ana_gain_table_size = sizeof(zhuquec1wide_ana_gain_table),
-	.tuning_iso_base = 100,
-	.exposure_def = 0x3D0,
-	.exposure_min = 20,
-	.exposure_max = 0xFFFFFF - 32,
-	.exposure_step = 2,
-	.exposure_margin = 31,
-
-	.frame_length_max = 0xFFFFFF,
-	.ae_effective_frame = 2,
-	.frame_time_delay_frame = 2,
-	.start_exposure_offset = 2632000,
-
-	.pdaf_type = PDAF_SUPPORT_CAMSV,
-	.hdr_type = HDR_SUPPORT_NA,
-	.seamless_switch_support = FALSE,
-	.temperature_support = TRUE,
-
-	.g_temp = get_sensor_temperature,
-	.g_gain2reg = get_gain2reg,
-	.g_cali = zhuquec1wide_get_sensor_cali,
-	.s_gph = set_group_hold,
-	.s_cali = zhuquec1wide_set_sensor_cali,
-
-	.reg_addr_stream = 0x0100,
-	.reg_addr_mirror_flip = PARAM_UNDEFINED, //0x3821  0x3820
-	.reg_addr_exposure = {
-			{0x3500, 0x3501, 0x3502},//Long exposure
-//			{0x3540, 0x3541, 0x3542},//Medium exposure
-	},
-	.long_exposure_support = PARAM_UNDEFINED,
-	.reg_addr_exposure_lshift = PARAM_UNDEFINED,
-	.reg_addr_ana_gain = {
-			{0x3508, 0x3509},//Long gain
-//			{0x3548, 0x3549},//Medium gain
-	},
-	.reg_addr_frame_length = {0x3840, 0x380e, 0x380f},
-	.reg_addr_temp_en = 0x4D12,
-	.reg_addr_temp_read = 0x4D13,
-	.reg_addr_auto_extend = PARAM_UNDEFINED,
-	.reg_addr_frame_count = PARAM_UNDEFINED,
-	.reg_addr_fast_mode = PARAM_UNDEFINED,
-
-	.init_setting_table = zhuquec1wide_init_setting,
-	.init_setting_len = ARRAY_SIZE(zhuquec1wide_init_setting),
-	.mode = mode_struct,
-	.sensor_mode_num = ARRAY_SIZE(mode_struct),
-	.list = feature_control_list,
-	.list_len = ARRAY_SIZE(feature_control_list),
-
-	.chk_s_off_sta = 0,
-	.chk_s_off_end = 0,
-	.checksum_value = 0xcd9966da,
-};
-
-static struct subdrv_ops ops = {
-	.get_id = get_imgsensor_id,
-	.init_ctx = init_ctx,
-	.open = open,
-	.get_info = common_get_info,
-	.get_resolution = common_get_resolution,
-	.control = common_control,
-	.feature_control = common_feature_control,
-	.close = common_close,
-	.get_frame_desc = common_get_frame_desc,
-	.get_temp = common_get_temp,
-	.get_csi_param = common_get_csi_param,
-	.vsync_notify = vsync_notify,
-	.update_sof_cnt = common_update_sof_cnt,
-};
-
-static struct subdrv_pw_seq_entry pw_seq[] = {
-	{HW_ID_RST, {0}, 1000},
-	{HW_ID_MCLK, {24}, 0},
-	{HW_ID_MCLK_DRIVING_CURRENT, {4}, 1000},
-	{HW_ID_AVDD, {2804000, 2804000}, 0},
-	{HW_ID_DOVDD, {1800000, 1800000}, 0},
-	{HW_ID_AFVDD, {2804000, 2804000}, 0},
-	{HW_ID_DVDD, {1200000, 1200000}, 1000},
-	{HW_ID_RST, {1}, 5000},
-};
-
-struct subdrv_entry zhuquec1wide_mipi_raw_entry = {
-	.name = "zhuquec1wide_mipi_raw",
-	.id = ZHUQUEC1WIDE_SENSOR_ID,
-	.pw_seq = pw_seq,
-	.pw_seq_cnt = ARRAY_SIZE(pw_seq),
-	.ops = &ops,
-};
-
-
-/* FUNCTION */
-
-static unsigned int read_zhuquec1wide_eeprom_info(struct subdrv_ctx *ctx, kal_uint16 meta_id,
-	BYTE *data, int size)
-{
-	kal_uint16 addr;
-	int readsize;
-
-	if (meta_id != zhuquec1wide_eeprom_info[meta_id].meta)
-		return -1;
-
-	if (size != zhuquec1wide_eeprom_info[meta_id].size)
-		return -1;
-
-	addr = zhuquec1wide_eeprom_info[meta_id].start;
-	readsize = zhuquec1wide_eeprom_info[meta_id].size;
-
-	if(!read_cmos_eeprom_p8(ctx, addr, data, readsize)) {
-		DRV_LOGE(ctx, "read meta_id(%d) failed", meta_id);
-	}
-
-	return 0;
-}
-
-static struct eeprom_addr_table_struct oplus_eeprom_addr_table = {
-	.i2c_read_id = 0xA1,
-	.i2c_write_id = 0xA0,
-
-	.addr_modinfo = 0x0000,
-	.addr_sensorid = 0x0006,
-	.addr_lens = 0x0008,
-	.addr_vcm = 0x000A,
-    .addr_modinfoflag = 0x0010,
-
-	.addr_af = 0x0092,
-	.addr_afmacro = 0x0092,
-	.addr_afinf = 0x0094,
-	.addr_afflag = 0x0098,
-
-	.addr_qrcode = 0x00B0,
-	.addr_qrcodeflag = 0x00C7,
-};
-
-// static struct SENSOR_OTP_INFO_STRUCT cloud_otp_info[OPLUS_CAM_CAL_DATA_MAX] = {
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 17}}, /*{addr_modinfo, addr_modinfolen}*/
-// 	}, /*OPLUS_CAM_CAL_DATA_MODULE_VERSION*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 17}}, /*{addr_modinfo, addr_modinfolen}*/
-// 	}, /*OPLUS_CAM_CAL_DATA_PART_NUMBER*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x1d60, 1868}},
-// 	}, /*OPLUS_CAM_CAL_DATA_SHADING_TABLE--LSC*/
-// 	{
-// 		.OtpInfoLen = 5,
-// 		.OtpInfo = {{0x0020, 16}, {0x0044, 16}, {0x0060, 4}, {0x006c, 4}, {0x0092, 6}},
-// 		.isAFCodeOffset = KAL_FALSE,
-// 	}, /*OPLUS_CAM_CAL_DATA_3A_GAIN-awb5000\awb2850\awb5000Light\awb2850light\af*/
-// 	{
-// 		.OtpInfoLen = 2,
-// 		.OtpInfo = {{0x1300, 496}, {0x1500, 1004}},
-// 	}, /*OPLUS_CAM_CAL_DATA_PDAF*/
-// 	{
-// 		.OtpInfoLen = 8,
-// 		.OtpInfo = {{0x0000, 17}, {0x0006, 2}, {0x0008, 2}, {0x000a, 2}, {0x0092, 7}, {0x0092, 2}, {0x0094, 2}, {0x00b0, 24}},
-// 		.isAFCodeOffset = KAL_FALSE,
-// 	}, /*OPLUS_CAM_CAL_DATA_CAMERA_INFO-modid\sensor\lens\vcmid\af\macpos\infpos\qrcode\*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0008, 2}},
-// 	}, /*OPLUS_CAM_CAL_DATA_DUMP*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0008, 2}},
-// 	}, /*OPLUS_CAM_CAL_DATA_LENS_ID*/
-// 	{
-// 		.OtpInfoLen = 0,
-// 	}, /*OPLUS_CAM_CAL_DATA_QSC*/
-// 	{
-// 		.OtpInfoLen = 0,
-// 	}, /*OPLUS_CAM_CAL_DATA_LRC*/
-// 	{
-// 		.OtpInfoLen = 1,
-// 		.OtpInfo = {{0x0000, 16384}},
-// 	}, /*OPLUS_CAM_CAL_DATA_ALL*/
-// };
-
-static int zhuquec1wide_get_pdafblock_info(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *)para;
-	struct SET_PD_BLOCK_INFO_T *PDAFinfo;
-
-	PDAFinfo = (struct SET_PD_BLOCK_INFO_T *)(uintptr_t)(*(feature_data+1));
-	switch (*feature_data) {
-  		case SENSOR_SCENARIO_ID_NORMAL_PREVIEW:
-		case SENSOR_SCENARIO_ID_NORMAL_CAPTURE:
-			imgsensor_pd_info.i4BlockNumX = 248;
-			imgsensor_pd_info.i4BlockNumY = 190;
-			memcpy((void *)PDAFinfo,
- 				(void *)&imgsensor_pd_info,
-  				sizeof(struct SET_PD_BLOCK_INFO_T));
- 			break;
-		case SENSOR_SCENARIO_ID_NORMAL_VIDEO:
-		case SENSOR_SCENARIO_ID_HIGHSPEED_VIDEO:
-			imgsensor_pd_info.i4BlockNumX = 248;
-			imgsensor_pd_info.i4BlockNumY = 144;
-			memcpy((void *)PDAFinfo,
- 				(void *)&imgsensor_pd_info,
-  				sizeof(struct SET_PD_BLOCK_INFO_T));
- 			break;
-		case SENSOR_SCENARIO_ID_SLIM_VIDEO:
-			imgsensor_pd_info.i4BlockNumX = 248;
-			imgsensor_pd_info.i4BlockNumY = 128;
-			memcpy((void *)PDAFinfo,
- 				(void *)&imgsensor_pd_info,
-  				sizeof(struct SET_PD_BLOCK_INFO_T));
- 			break;
-		case SENSOR_SCENARIO_ID_CUSTOM1:
-			imgsensor_pd_info.i4BlockNumX = 200;
-			imgsensor_pd_info.i4BlockNumY = 150;
-			memcpy((void *)PDAFinfo,
- 				(void *)&imgsensor_pd_info,
-  				sizeof(struct SET_PD_BLOCK_INFO_T));
- 			break;
-		case SENSOR_SCENARIO_ID_CUSTOM2:
-			imgsensor_pd_info.i4BlockNumX = 112;
-			imgsensor_pd_info.i4BlockNumY = 84;
-			memcpy((void *)PDAFinfo,
- 				(void *)&imgsensor_pd_info,
-  				sizeof(struct SET_PD_BLOCK_INFO_T));
- 			break;
-		default:
-			break;
-	}
-	return 0;
-
-}
-
-// static int zhuquec1wide_get_cloud_otp_info(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u64 *feature_data = (u64 *)para;
-// 	struct SENSOR_OTP_INFO_STRUCT *cloudinfo;
-// 	LOG_INF("SENSOR_FEATURE_GET_CLOUD_OTP_INFO otp_type:%d", (UINT32)(*feature_data));
-// 	cloudinfo = (struct SENSOR_OTP_INFO_STRUCT *)(uintptr_t)(*(feature_data + 1));
-// 	switch (*feature_data) {
-// 	case OPLUS_CAM_CAL_DATA_MODULE_VERSION:
-// 	case OPLUS_CAM_CAL_DATA_PART_NUMBER:
-// 	case OPLUS_CAM_CAL_DATA_SHADING_TABLE:
-// 	case OPLUS_CAM_CAL_DATA_3A_GAIN:
-// 	case OPLUS_CAM_CAL_DATA_PDAF:
-// 	case OPLUS_CAM_CAL_DATA_CAMERA_INFO:
-// 	case OPLUS_CAM_CAL_DATA_DUMP:
-// 	case OPLUS_CAM_CAL_DATA_LENS_ID:
-// 	case OPLUS_CAM_CAL_DATA_QSC:
-// 	case OPLUS_CAM_CAL_DATA_LRC:
-// 	case OPLUS_CAM_CAL_DATA_ALL:
-// 		memcpy((void *)cloudinfo, (void *)&cloud_otp_info[*feature_data], sizeof(struct SENSOR_OTP_INFO_STRUCT));
-// 		break;
-// 	default:
-// 		break;
-// 	}
-// 	return 0;
-// }
-
-// static void read_unique_sensorid(struct subdrv_ctx *ctx)
-// {
-// 	u8 i = 0;
-// 	LOG_INF("read sensor unique sensorid");
-// 	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-// 		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-// 		subdrv_i2c_wr_u8(ctx, 0x0103, 0x01);
-// 		subdrv_i2c_wr_u8(ctx, 0x3d84, 0x00);
-// 		subdrv_i2c_wr_u8(ctx, 0x3d85, 0x1b);
-// 		subdrv_i2c_wr_u8(ctx, 0x0100, 0x01);
-// 		msleep(5);
-// 		if (adaptor_i2c_rd_p8(ctx->i2c_client, ctx->i2c_write_id >> 1, ZHUQUEC1WIDE_UNIQUE_SENSOR_ID_ADDR,
-// 			&(zhuquec1wide_unique_id[0]), ZHUQUEC1WIDE_UNIQUE_SENSOR_ID_LENGTH) < 0) {
-// 			LOG_INF("Read sensor unique sensorid fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-// 		}
-// 		i++;
-// 	}
-// }
-
-// static int zhuquec1wide_get_unique_sensorid(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-// {
-// 	u32 *feature_return_para_32 = (u32 *)para;
-// 	*len = ZHUQUEC1WIDE_UNIQUE_SENSOR_ID_LENGTH;
-// 	memcpy(feature_return_para_32, zhuquec1wide_unique_id,
-// 		ZHUQUEC1WIDE_UNIQUE_SENSOR_ID_LENGTH);
-// 	LOG_INF("para :%x, get unique sensorid", *para);
-// 	return 0;
-// }
-
-static int zhuquec1wide_get_eeprom_comdata(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	LOG_INF("+");
-	memcpy(para, (u8*)(&oplus_eeprom_info), sizeof(oplus_eeprom_info));
-	*len = sizeof(oplus_eeprom_info);
-	return 0;
-}
-
-static kal_uint16 read_cmos_eeprom_8(struct subdrv_ctx *ctx, kal_uint16 addr)
-{
-	kal_uint16 get_byte = 0;
-
-	adaptor_i2c_rd_u8(ctx->i2c_client, ZHUQUEC1WIDE_EEPROM_ADDR >> 1, addr, (u8 *)&get_byte);
-	return get_byte;
-}
-
-static kal_int32 table_write_eeprom_one_packet(struct subdrv_ctx *ctx,
-        kal_uint16 addr, kal_uint8 *para, kal_uint32 len)
-{
-    kal_int32 ret = ERROR_NONE;
-    ret = adaptor_i2c_wr_p8(ctx->i2c_client, ZHUQUEC1WIDE_EEPROM_ADDR >> 1,
-            addr, para, len);
-
-    return ret;
-}
-
-static kal_int32 write_eeprom_protect(struct subdrv_ctx *ctx, kal_uint16 enable)
-{
-    kal_int32 ret = ERROR_NONE;
-    kal_uint16 reg = 0xE000;
-
-    if (enable) {
-        adaptor_i2c_wr_u8(ctx->i2c_client, ZHUQUEC1WIDE_EEPROM_ADDR >> 1, reg, (ZHUQUEC1WIDE_EEPROM_ADDR & 0xFE) | 0x01);
-    }
-    else {
-        adaptor_i2c_wr_u8(ctx->i2c_client, ZHUQUEC1WIDE_EEPROM_ADDR >> 1, reg, ZHUQUEC1WIDE_EEPROM_ADDR & 0xFE);
-    }
-
-    return ret;
-}
-
-static kal_uint16 get_64align_addr(kal_uint16 data_base) {
-
-	kal_uint16 multiple = 0;
-	kal_uint16 surplus = 0;
-	kal_uint16 addr_64align = 0;
-
-	multiple = data_base / 64;
-	surplus = data_base % 64;
-	if(surplus) {
-		addr_64align = (multiple + 1) * 64;
-	} else {
-		addr_64align = multiple * 64;
-	}
-	//LOG_INF("data_base(0x%x), multiple(%d), surplus(%d), addr_64align(0x%x)", data_base, multiple, surplus, addr_64align);
-	return addr_64align;
-}
-
-static kal_int32 eeprom_table_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-
-	kal_uint16 idx;
-	kal_uint16 idy;
-	kal_int32 ret = ERROR_NONE;
-	UINT32 i = 0;
-
-	idx = data_length / EEPROM_WRITE_DATA_MAX_LENGTH;
-	idy = data_length % EEPROM_WRITE_DATA_MAX_LENGTH;
-
-    LOG_INF("data_base(0x%x) data_length(%d) idx(%d) idy(%d)\n", data_base, data_length, idx, idy);
-
-	for (i = 0; i < idx; i++ ) {
-		ret = table_write_eeprom_one_packet(ctx, (data_base + EEPROM_WRITE_DATA_MAX_LENGTH * i),
-				&pData[EEPROM_WRITE_DATA_MAX_LENGTH*i], EEPROM_WRITE_DATA_MAX_LENGTH);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: i=%d\n", i);
-			return -1;
-		}
-		msleep(6);
-	}
-
-	msleep(6);
-	if(idy) {
-		ret = table_write_eeprom_one_packet(ctx, (data_base + EEPROM_WRITE_DATA_MAX_LENGTH*idx),
-				&pData[EEPROM_WRITE_DATA_MAX_LENGTH*idx], idy);
-		if (ret != ERROR_NONE) {
-			LOG_INF("write_eeprom error: idx= %d idy= %d\n", idx, idy);
-			return -1;
-		}
-	}
-	return 0;
-}
-
-static kal_int32 eeprom_64align_write(struct subdrv_ctx *ctx, kal_uint16 data_base, kal_uint8 *pData, kal_uint16 data_length) {
-
-	kal_uint16 addr_64align = 0;
-	kal_uint16 part1_length = 0;
-	kal_uint16 part2_length = 0;
-	kal_int32 ret = ERROR_NONE;
-
-    addr_64align = get_64align_addr(data_base);
-
-	part1_length = addr_64align - data_base;
-	if(part1_length > data_length) {
-		part1_length = data_length;
-	}
-	part2_length = data_length - part1_length;
-
-	write_eeprom_protect(ctx, 0);
-	msleep(6);
-
-	if (part1_length) {
-		ret = eeprom_table_write(ctx, data_base, pData, part1_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part1\n");
-			msleep(6);
-			return -1;
-		}
-	}
-
-	msleep(6);
-	if (part2_length) {
-		ret = eeprom_table_write(ctx, addr_64align, pData + part1_length, part2_length);
-		if (ret == -1) {
-			/* open write protect */
-			write_eeprom_protect(ctx, 1);
-			LOG_INF("write_eeprom error part2\n");
-			msleep(6);
-			return -1;
-		}
-	}
-	msleep(6);
-	write_eeprom_protect(ctx, 1);
-	msleep(6);
-
-	return 0;
-}
-static kal_int32 write_Module_data(struct subdrv_ctx *ctx,
-    ACDK_SENSOR_ENGMODE_STEREO_STRUCT * pStereodata)
-{
-    kal_int32  ret = ERROR_NONE;
-    kal_uint16 data_base, data_length;
-    kal_uint8 *pData;
-
-    if(pStereodata != NULL) {
-        LOG_INF("SET_SENSOR_OTP: 0x%x %d 0x%x %d\n",
-                       pStereodata->uSensorId,
-                       pStereodata->uDeviceId,
-                       pStereodata->baseAddr,
-                       pStereodata->dataLength);
-
-        data_base = pStereodata->baseAddr;
-        data_length = pStereodata->dataLength;
-        pData = pStereodata->uData;
-        if (((pStereodata->uSensorId == ZHUQUEC1WIDE_SENSOR_ID) || (pStereodata->uSensorId == ZHUQUES1WIDE_SENSOR_ID))
-            && (data_length == CALI_DATA_SLAVE_LENGTH)
-            && (data_base == ZHUQUEC1WIDE_STEREO_MW_START_ADDR)) {
-            LOG_INF("Write: %x %x %x %x\n", pData[0], pData[39], pData[40], pData[1556]);
-
-            eeprom_64align_write(ctx, data_base, pData, data_length);
-
-            LOG_INF("com_0:0x%x\n", read_cmos_eeprom_8(ctx, data_base));
-            LOG_INF("com_39:0x%x\n", read_cmos_eeprom_8(ctx, data_base+39));
-            LOG_INF("innal_40:0x%x\n", read_cmos_eeprom_8(ctx, data_base+40));
-            LOG_INF("innal_1556:0x%x\n", read_cmos_eeprom_8(ctx, data_base+1556));
-            LOG_INF("write_Module_data Write end\n");
-
-        } else if (((pStereodata->uSensorId == ZHUQUEC1WIDE_SENSOR_ID) || (pStereodata->uSensorId == ZHUQUES1WIDE_SENSOR_ID))
-            && (data_length < AESYNC_DATA_LENGTH_TOTAL)
-            && (data_base == ZHUQUEC1WIDE_AESYNC_START_ADDR)) {
-            LOG_INF("write main aesync: %x %x %x %x %x %x %x %x\n", pData[0], pData[1],
-                pData[2], pData[3], pData[4], pData[5], pData[6], pData[7]);
-
-            eeprom_64align_write(ctx, data_base, pData, data_length);
-
-            LOG_INF("readback main aesync: %x %x %x %x %x %x %x %x\n",
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1WIDE_AESYNC_START_ADDR),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1WIDE_AESYNC_START_ADDR+1),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1WIDE_AESYNC_START_ADDR+2),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1WIDE_AESYNC_START_ADDR+3),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1WIDE_AESYNC_START_ADDR+4),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1WIDE_AESYNC_START_ADDR+5),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1WIDE_AESYNC_START_ADDR+6),
-                    read_cmos_eeprom_8(ctx, ZHUQUEC1WIDE_AESYNC_START_ADDR+7));
-            LOG_INF("AESync write_Module_data Write end\n");
-        } else {
-            LOG_INF("Invalid Sensor id:0x%x write eeprom\n", pStereodata->uSensorId);
-            return -1;
-        }
-    } else {
-        LOG_INF("zhuquec1wide write_Module_data pStereodata is null\n");
-        return -1;
-    }
-    return ret;
-}
-
-static int zhuquec1wide_set_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-    int ret = ERROR_NONE;
-    ret = write_Module_data(ctx, (ACDK_SENSOR_ENGMODE_STEREO_STRUCT *)(para));
-    if (ret != ERROR_NONE) {
-        LOG_INF("ret=%d\n", ret);
-    }
-	return 0;
-}
-
-static int zhuquec1wide_get_eeprom_calibration(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	UINT16 *feature_data_16 = (UINT16 *) para;
-	UINT32 *feature_return_para_32 = (UINT32 *) para;
-	if(*len > CALI_DATA_SLAVE_LENGTH)
-		*len = CALI_DATA_SLAVE_LENGTH;
-	LOG_INF("feature_data mode:%d  lens:%d", *feature_data_16, *len);
-	read_zhuquec1wide_eeprom_info(ctx, EEPROM_META_STEREO_MW_MAIN_DATA,
-			(BYTE *)feature_return_para_32, *len);
-	return 0;
-}
-
-static bool read_cmos_eeprom_p8(struct subdrv_ctx *ctx, kal_uint16 addr,
-                    BYTE *data, int size)
-{
-	if (adaptor_i2c_rd_p8(ctx->i2c_client, ZHUQUEC1WIDE_EEPROM_ADDR >> 1,
-			addr, data, size) < 0) {
-		return false;
-	}
-	return true;
-}
-
-static void read_otp_info(struct subdrv_ctx *ctx)
-{
-	DRV_LOGE(ctx, "zhuquec1wide read_otp_info begin\n");
-	read_cmos_eeprom_p8(ctx, 0, otp_data_checksum, sizeof(otp_data_checksum));
-	DRV_LOGE(ctx, "zhuquec1wide read_otp_info end\n");
-}
-
-static int zhuquec1wide_get_otp_checksum_data(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 *feature_return_para_32 = (u32 *)para;
-	u32 length = sizeof(otp_data_checksum);
-
-	if(*len < sizeof(otp_data_checksum)) {
-		length = *len;
-	}
-
-	DRV_LOGE(ctx, "get otp data length:0x%x", length);
-	if (otp_data_checksum[0] == 0) {
-		read_otp_info(ctx);
-	} else {
-		DRV_LOG(ctx, "otp data has already read");
-	}
-	memcpy(feature_return_para_32, (UINT32 *)otp_data_checksum, length);
-
-	return 0;
-}
-
-static int zhuquec1wide_check_sensor_id(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	get_imgsensor_id(ctx, (u32 *)para);
-	return 0;
-}
-
-static int get_imgsensor_id(struct subdrv_ctx *ctx, u32 *sensor_id)
-{
-	u8 i = 0;
-	u8 retry = 2;
-	static bool first_read = KAL_TRUE;
-	u32 addr_h = ctx->s_ctx.reg_addr_sensor_id.addr[0];
-	u32 addr_l = ctx->s_ctx.reg_addr_sensor_id.addr[1];
-	u32 addr_ll = ctx->s_ctx.reg_addr_sensor_id.addr[2];
-	LOG_INF("rst delay = %d, func: %s, line: %d\n", pw_seq[1].delay, __FUNCTION__, __LINE__);
-	while (ctx->s_ctx.i2c_addr_table[i] != 0xFF) {
-		ctx->i2c_write_id = ctx->s_ctx.i2c_addr_table[i];
-		do {
-			*sensor_id = (subdrv_i2c_rd_u8(ctx, addr_h) << 8) |
-				subdrv_i2c_rd_u8(ctx, addr_l);
-			if (addr_ll)
-				*sensor_id = ((*sensor_id) << 8) | subdrv_i2c_rd_u8(ctx, addr_ll);
-			LOG_INF("i2c_write_id(0x%x) sensor_id(0x%x/0x%x)\n",
-				ctx->i2c_write_id, *sensor_id, ctx->s_ctx.sensor_id);
-			if (*sensor_id == ZHUQUEC1WIDE_IMGSENSOR_ID) {
-				*sensor_id = ctx->s_ctx.sensor_id;
-				get_imgsensor_id_from_dts(ctx, sensor_id);
-				if (first_read) {
-					read_eeprom_common_data(ctx, &oplus_eeprom_info, oplus_eeprom_addr_table);
-					//read_unique_sensorid(ctx);
-					first_read = KAL_FALSE;
-				}
-				return ERROR_NONE;
-			}
-			LOG_INF("Read sensor id fail. i2c_write_id: 0x%x\n", ctx->i2c_write_id);
-			LOG_INF("sensor_id = 0x%x, ctx->s_ctx.sensor_id = 0x%x\n",
-				*sensor_id, ctx->s_ctx.sensor_id);
-			retry--;
-		} while (retry > 0);
-		i++;
-		retry = 2;
-	}
-	if (*sensor_id != ctx->s_ctx.sensor_id) {
-		*sensor_id = 0xFFFFFFFF;
-		return ERROR_SENSOR_CONNECT_FAIL;
-	}
-	return ERROR_NONE;
-}
-
-static u16 get_gain2reg(u32 gain)
-{
-	return gain * (0x100) / BASEGAIN;
-}
-
-static int open(struct subdrv_ctx *ctx)
-{
-	u32 sensor_id = 0;
-	u32 scenario_id = 0;
-	/* get sensor id */
-	if (get_imgsensor_id(ctx, &sensor_id) != ERROR_NONE)
-		return ERROR_SENSOR_CONNECT_FAIL;
-
-	// software reset
-	subdrv_i2c_wr_regs_u8(ctx, zhuquec1wide_soft_reset, ARRAY_SIZE(zhuquec1wide_soft_reset));
-	msleep(1);
-	//sensor_init(ctx);
-	zhuquec1wide_i2c_burst_wr_regs_u8(ctx, ctx->s_ctx.init_setting_table, ctx->s_ctx.init_setting_len);
-
-	/*PDC setting*/
-	if (ctx->s_ctx.s_cali != NULL) {
-		ctx->s_ctx.s_cali((void*)ctx);
-	} else {
-		write_sensor_Cali(ctx);
-	}
-
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	memset(ctx->ana_gain, 0, sizeof(ctx->gain));
-	ctx->exposure[0] = ctx->s_ctx.exposure_def;
-	ctx->ana_gain[0] = ctx->s_ctx.ana_gain_def;
-	ctx->current_scenario_id = scenario_id;
-	ctx->pclk = ctx->s_ctx.mode[scenario_id].pclk;
-	ctx->line_length = ctx->s_ctx.mode[scenario_id].linelength;
-	ctx->frame_length = ctx->s_ctx.mode[scenario_id].framelength;
-	ctx->current_fps = 10 * ctx->pclk / ctx->line_length / ctx->frame_length;
-	ctx->readout_length = ctx->s_ctx.mode[scenario_id].readout_length;
-	ctx->read_margin = ctx->s_ctx.mode[scenario_id].read_margin;
-	ctx->min_frame_length = ctx->frame_length;
-	ctx->autoflicker_en = FALSE;
-	ctx->test_pattern = 0;
-	ctx->ihdr_mode = 0;
-	ctx->pdaf_mode = 0;
-	ctx->hdr_mode = 0;
-	ctx->extend_frame_length_en = 0;
-	ctx->is_seamless = 0;
-	ctx->fast_mode_on = 0;
-	ctx->sof_cnt = 0;
-	ctx->ref_sof_cnt = 0;
-	ctx->is_streaming = 0;
-
-	return ERROR_NONE;
-}
-
-static void zhuquec1wide_get_sensor_cali(void* arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *buf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u8 write_id = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	/* Probe EEPROM device */
-	if (!probe_eeprom(ctx))
-		return;
-
-	idx = ctx->eeprom_index;
-
-	/* pdc data */
-	support = info[idx].pdc_support;
-	size = info[idx].pdc_size;
-	addr = info[idx].addr_pdc;
-	buf = info[idx].pdc_table;
-
-	if (support && size > 0) {
-		// Check PDC validation
-		//pdc_is_valid = i2c_read_eeprom(ctx, OTP_PDC_VALID_ADDR);
-		write_id = ctx->s_ctx.eeprom_info[idx].i2c_write_id;
-		adaptor_i2c_rd_u8(ctx->i2c_client, write_id >> 1, OTP_PDC_VALID_ADDR, (u8 *)&pdc_is_valid);
-
-
-		if(pdc_is_valid != OTP_PDC_IS_VALID_VAL) {
-			DRV_LOGE(ctx, "pdc is invalid %d", pdc_is_valid);
-			return;
-		}
-
-		if (info[idx].preload_pdc_table == NULL) {
-			info[idx].preload_pdc_table = kmalloc(size, GFP_KERNEL);
-			if (buf == NULL)
-				i2c_multi_read_eeprom(ctx, addr, size, info[idx].preload_pdc_table);
-			else
-				memcpy(info[idx].preload_pdc_table, buf, size);
-			DRV_LOG(ctx, "preload pdc data %u bytes", size);
-		} else {
-			DRV_LOG(ctx, "pdc data is already preloaded %u bytes", size);
-		}
-	}
-
-	ctx->is_read_preload_eeprom = 1;
-}
-
-static void zhuquec1wide_set_sensor_cali(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u16 idx = 0;
-	u8 support = FALSE;
-	u8 *pbuf = NULL;
-	u16 size = 0;
-	u16 addr = 0;
-	u8 i = 0;
-	u8 value = 0;
-	struct eeprom_info_struct *info = ctx->s_ctx.eeprom_info;
-
-	if (!probe_eeprom(ctx)) {
-		DRV_LOG(ctx, "eeprom not find\n");
-		return;
-	}
-
-	idx = ctx->eeprom_index;
-	/* pdc data */
-	support = info[idx].pdc_support;
-	if (support && (pdc_is_valid == OTP_PDC_IS_VALID_VAL)) {
-		pbuf = info[idx].preload_pdc_table;
-		size = info[idx].pdc_size;
-		addr = info[idx].sensor_reg_addr_pdc;
-		if (pbuf != NULL && addr > 0 && size > 0) {
-			subdrv_i2c_wr_seq_p8(ctx, addr, pbuf, size);
-			for (i = 0; i < 10; ++i) {
-				value = subdrv_i2c_rd_u8(ctx, addr + i);
-				DRV_LOG(ctx, "pdc addr:%x, write:%x , read:%x\n", (addr + i), pbuf[i], value);
-			}
-			DRV_LOG(ctx, "pdc buf[0] = %d ,addr(0x%x)\n", pbuf[0], addr);
-		}
-	} else {
-		DRV_LOG(ctx, "not need set pdc\n");
-	}
-}
-
-static int get_sensor_temperature(void *arg)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	u8 temperature = 0;
-	int temperature_convert = 0;
-	if (ctx->s_ctx.reg_addr_temp_read) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_temp_en, 0x01); //trigger temperature calculation 0x4D12
-		temperature = subdrv_i2c_rd_u8(ctx, ctx->s_ctx.reg_addr_temp_read);
-	if (temperature < 0xC0) {
-		temperature_convert = temperature;
-	} else {
-		temperature_convert = ((char)temperature) | 0xFFFFF00;
-	}
-	}
-	DRV_LOG(ctx, "reg_val:0x%x, temperature: %d degrees\n", temperature, temperature_convert);
-
-	return temperature_convert;
-}
-
-static void set_group_hold(void *arg, u8 en)
-{
-	struct subdrv_ctx *ctx = (struct subdrv_ctx *)arg;
-	if (en) {
-		set_i2c_buffer(ctx, 0x3208, 0x00);
-	} else {
-		set_i2c_buffer(ctx, 0x3208, 0x10);
-		set_i2c_buffer(ctx, 0x3208, 0xa0);
-	}
-}
-
-void zhuquec1wide_get_min_shutter_by_scenario(struct subdrv_ctx *ctx,
-		enum SENSOR_SCENARIO_ID_ENUM scenario_id,
-		u64 *min_shutter, u64 *exposure_step)
-{
-	u32 exp_cnt = 0;
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	check_current_scenario_id_bound(ctx);
-	LOG_INF("sensor_mode_num[%d]", ctx->s_ctx.sensor_mode_num);
-	if (scenario_id < ctx->s_ctx.sensor_mode_num) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-			case HDR_RAW_STAGGER:
-				*exposure_step = ctx->s_ctx.exposure_step * exp_cnt;
-				*min_shutter = ctx->s_ctx.exposure_min * exp_cnt;
-				break;
-			case HDR_NONE:
-				if (ctx->s_ctx.mode[scenario_id].coarse_integ_step &&
-					ctx->s_ctx.mode[scenario_id].min_exposure_line) {
-					*exposure_step = ctx->s_ctx.mode[scenario_id].coarse_integ_step;
-					*min_shutter = ctx->s_ctx.mode[scenario_id].min_exposure_line;
-				} else {
-					*exposure_step = ctx->s_ctx.exposure_step;
-					*min_shutter = ctx->s_ctx.exposure_min;
-				}
-				break;
-			default:
-				*exposure_step = ctx->s_ctx.exposure_step;
-				*min_shutter = ctx->s_ctx.exposure_min;
-				break;
-		}
-	} else {
-		DRV_LOG(ctx, "over sensor_mode_num[%d], use default", ctx->s_ctx.sensor_mode_num);
-		*exposure_step = ctx->s_ctx.exposure_step;
-		*min_shutter = ctx->s_ctx.exposure_min;
-	}
-	DRV_LOG(ctx, "scenario_id[%d] exposure_step[%llu] min_shutter[%llu]\n", scenario_id, *exposure_step, *min_shutter);
-}
-
-int zhuquec1wide_get_min_shutter_by_scenario_adapter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *) para;
-	zhuquec1wide_get_min_shutter_by_scenario(ctx,
-		(enum SENSOR_SCENARIO_ID_ENUM)*(feature_data),
-		feature_data + 1, feature_data + 2);
-	return 0;
-}
-
-/*
-static int zhuquec1wide_seamless_switch(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	enum SENSOR_SCENARIO_ID_ENUM scenario_id;
-	struct mtk_hdr_ae *ae_ctrl = NULL;
-	u64 *feature_data = (u64 *)para;
-	enum SENSOR_SCENARIO_ID_ENUM pre_seamless_scenario_id;
-	u32 frame_length_in_lut[IMGSENSOR_STAGGER_EXPOSURE_CNT] = {0};
-	u32 exp_cnt = 0;
-
-	if (feature_data == NULL) {
-		DRV_LOGE(ctx, "input scenario is null!");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	scenario_id = *feature_data;
-	if ((feature_data + 1) != NULL)
-		ae_ctrl = (struct mtk_hdr_ae *)((uintptr_t)(*(feature_data + 1)));
-	else
-		DRV_LOGE(ctx, "no ae_ctrl input");
-
-	check_current_scenario_id_bound(ctx);
-	DRV_LOG(ctx, "E: set seamless switch %u %u\n", ctx->current_scenario_id, scenario_id);
-	if (!ctx->extend_frame_length_en)
-		DRV_LOGE(ctx, "please extend_frame_length before seamless_switch!\n");
-	ctx->extend_frame_length_en = FALSE;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%u, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_group == 0 ||
-		ctx->s_ctx.mode[scenario_id].seamless_switch_group !=
-			ctx->s_ctx.mode[ctx->current_scenario_id].seamless_switch_group) {
-		DRV_LOGE(ctx, "seamless_switch not supported\n");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-	if (ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table == NULL) {
-		DRV_LOGE(ctx, "Please implement seamless_switch setting\n");
-		return ERROR_INVALID_SCENARIO_ID;
-	}
-
-	exp_cnt = ctx->s_ctx.mode[scenario_id].exp_cnt;
-	ctx->is_seamless = TRUE;
-	pre_seamless_scenario_id = ctx->current_scenario_id;
-	update_mode_info(ctx, scenario_id);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x01);
-	subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode, 0x02);
-	if (ctx->s_ctx.reg_addr_fast_mode_in_lbmf &&
-		(ctx->s_ctx.mode[scenario_id].hdr_mode == HDR_RAW_LBMF ||
-		ctx->s_ctx.mode[ctx->current_scenario_id].hdr_mode == HDR_RAW_LBMF))
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_fast_mode_in_lbmf, 0x4);
-
-	update_mode_info(ctx, scenario_id);
-	i2c_table_write(ctx,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_table,
-		ctx->s_ctx.mode[scenario_id].seamless_switch_mode_setting_len);
-
-	DRV_LOG(ctx, "write seamless switch setting done\n");
-	if (ae_ctrl) {
-		switch (ctx->s_ctx.mode[scenario_id].hdr_mode) {
-		case HDR_RAW_STAGGER:
-			set_multi_shutter_frame_length(ctx, (u64 *)&ae_ctrl->exposure, exp_cnt, 0);
-			set_multi_gain(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		case HDR_RAW_LBMF:
-			set_multi_shutter_frame_length_in_lut(ctx,
-				(u64 *)&ae_ctrl->exposure, exp_cnt, 0, frame_length_in_lut);
-			set_multi_gain_in_lut(ctx, (u32 *)&ae_ctrl->gain, exp_cnt);
-			break;
-		default:
-			set_shutter(ctx, ae_ctrl->exposure.le_exposure);
-			set_gain(ctx, ae_ctrl->gain.le_gain);
-			break;
-		}
-	}
-	common_get_prsh_length_lines(ctx, ae_ctrl, pre_seamless_scenario_id, scenario_id);
-
-	if (ctx->s_ctx.seamless_switch_prsh_length_lc > 0) {
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x01);
-
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[0],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 16) & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[1],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc >> 8)  & 0xFF);
-		subdrv_i2c_wr_u8(ctx,
-				ctx->s_ctx.reg_addr_prsh_length_lines.addr[2],
-				(ctx->s_ctx.seamless_switch_prsh_length_lc) & 0xFF);
-
-		DRV_LOG(ctx, "seamless switch pre-shutter set(%u)\n", ctx->s_ctx.seamless_switch_prsh_length_lc);
-	} else
-		subdrv_i2c_wr_u8(ctx, ctx->s_ctx.reg_addr_prsh_mode, 0x00);
-
-	subdrv_i2c_wr_u8(ctx, 0x0104, 0x00);
-
-	ctx->fast_mode_on = TRUE;
-	ctx->ref_sof_cnt = ctx->sof_cnt;
-	ctx->is_seamless = FALSE;
-	DRV_LOG(ctx, "X: set seamless switch done\n");
-	return ERROR_NONE;
-}
-*/
-
-static int zhuquec1wide_set_test_pattern(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u32 mode = *((u32 *)para);
-
-	if (mode) {
-		DRV_LOG(ctx, "mode(%u->%u)\n", ctx->test_pattern, mode);
-		LOG_INF("mode(%u->%u)\n", ctx->test_pattern, mode);
-	/* 1:Solid Color 2:Color Bar 5:Black */
-		switch (mode) {
-		case 5:
-			subdrv_i2c_wr_u8(ctx, 0x50C1, 0x01);
-			subdrv_i2c_wr_u8(ctx, 0x50C2, 0x04);
-			break;
-		default:
-			subdrv_i2c_wr_u8(ctx, 0x50C1, mode);
-			break;
-		}
-	} else if (ctx->test_pattern) {
-		LOG_INF("mode(%u->%u)\n", ctx->test_pattern, mode);
-		subdrv_i2c_wr_u8(ctx, 0x50C1, 0x00);
-		subdrv_i2c_wr_u8(ctx, 0x50C2, 0x00);
-	}
-	ctx->test_pattern = mode;
-	return 0;
-}
-
-static int init_ctx(struct subdrv_ctx *ctx,	struct i2c_client *i2c_client, u8 i2c_write_id)
-{
-	memcpy(&(ctx->s_ctx), &static_ctx, sizeof(struct subdrv_static_ctx));
-	subdrv_ctx_init(ctx);
-	//hw_init_time
-	for (int scenario_id = 0; scenario_id < ctx->s_ctx.sensor_mode_num; scenario_id++){
-		 ctx->hw_time_info[scenario_id].init_time_ns = 1 * 1000000;
-	}
-	ctx->i2c_client = i2c_client;
-	ctx->i2c_write_id = i2c_write_id;
-	return 0;
-}
-
-static int vsync_notify(struct subdrv_ctx *ctx,	unsigned int sof_cnt)
-{
-	DRV_LOG(ctx, "sof_cnt(%u) ctx->ref_sof_cnt(%u) ctx->fast_mode_on(%d)",
-		sof_cnt, ctx->ref_sof_cnt, ctx->fast_mode_on);
-	ctx->sof_cnt = sof_cnt;
-
-	return 0;
-}
-
-static void zhuquec1wide_set_multi_shutter_frame_length(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt, u16 frame_length)
-{
-
-	if(exp_cnt == 1) {  //force to 1exp func
-		zhuquec1wide_set_shutter_frame_length_convert(ctx, shutters[0], frame_length);
-		return ;
-	}
-}
-
-static int zhuquec1wide_set_multi_shutter_frame_length_ctrl(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1wide_set_multi_shutter_frame_length(ctx, (u64 *)(*feature_data),
-		(u64) (*(feature_data + 1)), (u64) (*(feature_data + 2)));
-	return 0;
-}
-
-static void zhuquec1wide_set_hdr_tri_shutter(struct subdrv_ctx *ctx, u64 *shutters, u16 exp_cnt)
-{
-	int i = 0;
-	u64 values[3] = {0};
-
-	if (shutters != NULL) {
-		for (i = 0; i < 3; i++)
-			values[i] = (u64) *(shutters + i);
-	}
-	zhuquec1wide_set_multi_shutter_frame_length(ctx, values, exp_cnt, 0);
-}
-
-static int zhuquec1wide_set_hdr_tri_shutter2(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1wide_set_hdr_tri_shutter(ctx, feature_data, 2);
-	return 0;
-}
-
-static int zhuquec1wide_set_hdr_tri_shutter3(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64* feature_data = (u64*)para;
-
-	zhuquec1wide_set_hdr_tri_shutter(ctx, feature_data, 3);
-	return 0;
-}
-
-void zhuquec1wide_set_shutter_frame_length_convert(struct subdrv_ctx *ctx, u64 shutter, u32 frame_length)
-{
-	static u32 lastshutter = 0;
-	int fine_integ_line = 0;
-	bool gph = !ctx->is_seamless && (ctx->s_ctx.s_gph != NULL);
-
-	ctx->frame_length = frame_length ? frame_length : ctx->min_frame_length;
-	check_current_scenario_id_bound(ctx);
-	/* check boundary of shutter */
-	fine_integ_line = ctx->s_ctx.mode[ctx->current_scenario_id].fine_integ_line;
-	shutter = FINE_INTEG_CONVERT(shutter, fine_integ_line);
-	shutter = max_t(u64, shutter,
-		(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[0].min);
-	shutter = min_t(u64, shutter,
-		(u64)ctx->s_ctx.mode[ctx->current_scenario_id].multi_exposure_shutter_range[0].max);
-	/* check boundary of framelength */
-	ctx->frame_length = max((u32)shutter + ctx->s_ctx.exposure_margin, ctx->frame_length);
-	ctx->frame_length = min(ctx->frame_length, ctx->s_ctx.frame_length_max);
-	ctx->frame_length = max(ctx->frame_length, ctx->min_frame_length);
-	/* restore shutter */
-	memset(ctx->exposure, 0, sizeof(ctx->exposure));
-	ctx->exposure[0] = (u32) shutter;
-
-	if ((lastshutter <= ctx->frame_length) && (ctx->frame_length <= (lastshutter + 6))) {
-		ctx->frame_length = lastshutter + 8;
-	} // binning
-	if (ctx->exposure[0] > ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin) {
-		ctx->exposure[0] = ctx->s_ctx.frame_length_max - ctx->s_ctx.exposure_margin;
-	}
-
-	/* group hold start */
-	if (gph)
-		ctx->s_ctx.s_gph((void *)ctx, 1);
-	/* enable auto extend */
-	if (ctx->s_ctx.reg_addr_auto_extend)
-		set_i2c_buffer(ctx, ctx->s_ctx.reg_addr_auto_extend, 0x01);
-	/* write framelength */
-	if (set_auto_flicker(ctx, 0) || frame_length || !ctx->s_ctx.reg_addr_auto_extend)
-		write_frame_length(ctx, ctx->frame_length);
-	/* write shutter */
-
-	if (ctx->s_ctx.reg_addr_exposure[0].addr[2]) {
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0],
-			(ctx->exposure[0] >> 16) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],
-			(ctx->exposure[0] >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[2],
-			ctx->exposure[0] & 0xFF);
-	} else {
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[0],
-			(ctx->exposure[0] >> 8) & 0xFF);
-		set_i2c_buffer(ctx,	ctx->s_ctx.reg_addr_exposure[0].addr[1],
-			ctx->exposure[0] & 0xFF);
-	}
-	DRV_LOG(ctx, "exp[0x%x], fll(input/output):%u/%u, flick_en:%d  lastshutter:%d\n",
-		ctx->exposure[0], frame_length, ctx->frame_length, ctx->autoflicker_en, lastshutter);
-	if (!ctx->ae_ctrl_gph_en) {
-		if (gph)
-			ctx->s_ctx.s_gph((void *)ctx, 0);
-		commit_i2c_buffer(ctx);
-	}
-	/* group hold end */
-	lastshutter = ctx->exposure[0];
-}
-
-static int zhuquec1wide_set_shutter_frame_length(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	zhuquec1wide_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], ((u64*)para)[1]);
-	return 0;
-}
-
-//static void zhuquec1wide_set_shutter_convert(struct subdrv_ctx *ctx, u64 shutter)
-//{
-//    zhuquec1wide_set_shutter_frame_length_convert(ctx, shutter, 0);
-//}
-static int zhuquec1wide_set_shutter(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	zhuquec1wide_set_shutter_frame_length_convert(ctx, ((u64*)para)[0], 0);
-	return 0;
-}
-void zhuquec1wide_set_dummy(struct subdrv_ctx *ctx)
-{
-}
-
-static bool dump_i2c_enable = false;
-
-static void dump_i2c_buf(struct subdrv_ctx *ctx, u8 * buf, u32 length)
-{
-	int i;
-	char *out_str = NULL;
-	char *strptr = NULL;
-	size_t buf_size = SUBDRV_I2C_BUF_SIZE * sizeof(char);
-	size_t remind = buf_size;
-	int num = 0;
-
-	out_str = kzalloc(buf_size + 1, GFP_KERNEL);
-	if (!out_str)
-		return;
-
-	strptr = out_str;
-	memset(out_str, 0, buf_size + 1);
-
-	num = snprintf(strptr, remind,"[ ");
-	remind -= num;
-	strptr += num;
-
-	for (i = 0 ; i < length; i ++) {
-		num = snprintf(strptr, remind,"0x%02x, ", buf[i]);
-
-		if (num <= 0) {
-			DRV_LOG(ctx, "snprintf return negative at line %d\n", __LINE__);
-			kfree(out_str);
-			return;
-		}
-
-		remind -= num;
-		strptr += num;
-
-		if (remind <= 20) {
-			DRV_LOG(ctx, " write %s\n", out_str);
-			memset(out_str, 0, buf_size + 1);
-			strptr = out_str;
-			remind = buf_size;
-		}
-	}
-
-	num = snprintf(strptr, remind," ]");
-	remind -= num;
-	strptr += num;
-
-	DRV_LOG(ctx, " write %s\n", out_str);
-	strptr = out_str;
-	remind = buf_size;
-
-	kfree(out_str);
-}
-
-static int zhuquec1wide_i2c_burst_wr_regs_u8(struct subdrv_ctx * ctx, u16 * list, u32 len)
-{
-	adapter_i2c_burst_wr_regs_u8(ctx, ctx->i2c_write_id >> 1, list, len);
-	return 	0;
-}
-
-//addr16 data8
-static int adapter_i2c_burst_wr_regs_u8(struct subdrv_ctx * ctx ,
-		u16 addr, u16 *list, u32 len)
-{
-	struct i2c_client *i2c_client = ctx->i2c_client;
-	struct i2c_msg  msg;
-	struct i2c_msg *pmsg = &msg;
-
-	u8 *pbuf = NULL;
-	u16 *plist = NULL;
-	u16 *plist_end = NULL;
-
-	u32 sent = 0;
-	u32 total = 0;
-	u32 per_sent = 0;
-	int ret, i;
-
-	if(!msg_buf) {
-		LOG_INF("malloc msg_buf retry");
-		msg_buf = kmalloc(MAX_BURST_LEN, GFP_KERNEL);
-		if(!msg_buf) {
-			LOG_INF("malloc error");
-			return -ENOMEM;
-		}
-	}
-
-	/* each msg contains addr(u16) + val(u8 *) */
-	sent = 0;
-	total = len / 2;
-	plist = list;
-	plist_end = list + len - 2;
-
-	DRV_LOG(ctx, "len(%u)  total(%u)", len, total);
-
-	while (sent < total) {
-
-		per_sent = 0;
-		pmsg = &msg;
-		pbuf = msg_buf;
-
-		pmsg->addr = addr;
-		pmsg->flags = i2c_client->flags;
-		pmsg->buf = pbuf;
-
-		pbuf[0] = plist[0] >> 8;    //address
-		pbuf[1] = plist[0] & 0xff;
-		pbuf[2] = plist[1] & 0xff;
-
-		pbuf += 3;
-		pmsg->len = 3;
-		per_sent += 1;
-
-		for (i = 0; i < total - sent - 1; i++) {  //Maximum number of remaining cycles - 1
-			if(plist[0] + 1 == plist[2] ) {  //Addresses are consecutive
-				pbuf[0] = plist[3] & 0xff;
-
-				pbuf += 1;
-				pmsg->len += 1;
-				per_sent += 1;
-				plist += 2;
-
-				if(pmsg->len >= MAX_BURST_LEN) {
-					break;
-				}
-			}
-		}
-		plist += 2;
-
-		if(dump_i2c_enable) {
-			DRV_LOG(ctx, "pmsg->len(%d) buff: ", pmsg->len);
-			dump_i2c_buf(ctx, msg_buf, pmsg->len);
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmsg, 1);
-
-		if (ret < 0) {
-			dev_info(&i2c_client->dev,
-				"i2c transfer failed (%d)\n", ret);
-			return -EIO;
-		}
-
-		sent += per_sent;
-
-		DRV_LOG(ctx, "sent(%u)  total(%u)  per_sent(%u)", sent, total, per_sent);
-	}
-
-	return 0;
-}
-
-static void get_imgsensor_id_from_dts(struct subdrv_ctx *ctx, u32 *sensor_id) {
-	struct subdrv_entry *m_subdrv_entry = &zhuquec1wide_mipi_raw_entry;
-	u32 final_sensor_id = 0xFFFFFFFF;
-	const char *of_sensor_names[OF_SENSOR_NAMES_MAXCNT];
-	const char *of_sensor_hal_names[OF_SENSOR_NAMES_MAXCNT];
-	u32   of_sensor_ids[OF_SENSOR_NAMES_MAXCNT] = {0};
-	int i, index, of_sensor_names_cnt, of_sensor_hal_names_cnt, of_sensor_ids_ret;
-	struct device *dev = &ctx->i2c_client->dev;
-
-	memset(&of_sensor_ids, 0xFF, sizeof(of_sensor_ids));
-
-	if(g_id_from_dts_flag == false) {
-		of_sensor_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-names", of_sensor_names, ARRAY_SIZE(of_sensor_names));
-
-		of_sensor_hal_names_cnt = of_property_read_string_array(dev->of_node,
-			"sensor-hal-names", of_sensor_hal_names, ARRAY_SIZE(of_sensor_hal_names));
-
-		of_sensor_ids_ret = of_property_read_u32_array(dev->of_node,
-				"sensor-ids", of_sensor_ids, of_sensor_names_cnt);
-
-		pr_err("%s of_sensor_names_cnt(%d), of_sensor_ids_ret(%d)",
-			__func__, of_sensor_names_cnt, of_sensor_ids_ret);
-		for(i = 0 ;i < of_sensor_names_cnt; i++) {
-				pr_err("%s of_sensor_names[%d] = %s  of_sensor_ids[%d] = %d",
-				__func__, i, of_sensor_names[i], i, of_sensor_ids[i]);
-		}
-		for(i = 0 ;i < of_sensor_hal_names_cnt; i++) {
-			pr_err("%s of_sensor_hal_names_cnt[%d] = %s",
-				__func__, i, of_sensor_hal_names[i]);
-		}
-
-		if (of_sensor_names_cnt && (of_sensor_ids_ret == 0)) {
-			for(index = 0; index < of_sensor_names_cnt; index++) {
-				if (strncmp(SENSOR_NAME, of_sensor_names[index], strlen(SENSOR_NAME)) == 0) {
-					final_sensor_id = of_sensor_ids[index];
-					break;
-				}
-			}
-		} else {
-			pr_err("%s sensor-ids error in dts", __func__);
-		}
-		g_id_from_dts_flag = true;
-	}
-
-	if(final_sensor_id != 0xFFFFFFFF) {
-		*sensor_id = final_sensor_id;
-		ctx->s_ctx.sensor_id = final_sensor_id;
-
-		m_subdrv_entry->id = final_sensor_id;
-		if(of_sensor_hal_names_cnt == of_sensor_names_cnt) {
-			m_subdrv_entry->name = of_sensor_hal_names[index];
-		}
-
-		pr_err("%s final index(%d), id(%d) name(%s)",
-			__func__, index, m_subdrv_entry->id, m_subdrv_entry->name);
-	} else {
-		*sensor_id = ctx->s_ctx.sensor_id;
-	}
-
-	return;
-}
-
-static int zhuquec1wide_get_readout_by_scenario(struct subdrv_ctx *ctx, u8 *para, u32 *len)
-{
-	u64 *feature_data = (u64 *)para;
-	u64 scenario_id = *feature_data;
-
-	u64 pclk;
-	u64 linelength;
-	u64 readout = 0;
-	MUINT16 h2_tg_size;
-
-	if (scenario_id >= ctx->s_ctx.sensor_mode_num) {
-		DRV_LOGE(ctx, "invalid sid:%llu, mode_num:%u\n",
-			scenario_id, ctx->s_ctx.sensor_mode_num);
-		return 0;
-	}
-
-	pclk       = ctx->s_ctx.mode[scenario_id].pclk;
-	pclk       = max_t(u64, (u64)1, pclk);
-	linelength = ctx->s_ctx.mode[scenario_id].linelength;
-	h2_tg_size = ctx->s_ctx.mode[scenario_id].imgsensor_winsize_info.h2_tg_size;
-
-	readout = (linelength * h2_tg_size * 1000000000 / pclk) * 2; /* unit: ns */
-
-	feature_data[1] = readout;
-
-	DRV_LOG(ctx, "%s scenario_id(%llu)  pclk(%llu) linelength(%llu) h2_tg_size(%u) readout(%llu)",
-		__func__, scenario_id, pclk, linelength, h2_tg_size, readout);
-
-	return 0;
-}
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1widemipiraw_Sensor.h b/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1widemipiraw_Sensor.h
deleted file mode 100755
index 13edefb0..00000000
--- a/vendor/oplus/kernel/camera/imgsensor/common/zhuquec1wide_mipi_raw/zhuquec1widemipiraw_Sensor.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2019 MediaTek Inc.
- */
-
-/*****************************************************************************
- *
- * Filename:
- * ---------
- *     zhuquec1widemipiraw_Sensor.h
- *
- * Project:
- * --------
- *     ALPS
- *
- * Description:
- * ------------
- *     CMOS sensor header file
- *
- ****************************************************************************/
-#ifndef _ZHUQUEC1WIDEMIPI_SENSOR_H
-#define _ZHUQUEC1WIDEMIPI_SENSOR_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "kd_camera_typedef.h"
-#include "kd_imgsensor.h"
-#include "kd_imgsensor_define_v4l2.h"
-#include "kd_imgsensor_errcode.h"
-#include "oplus_kd_eeprom.h"
-#include "oplus_kd_imgsensor.h"
-#include "zhuquec1wide_ana_gain_table.h"
-#include "zhuquec1wide_Sensor_setting.h"
-
-#include "adaptor-subdrv-ctrl.h"
-#include "adaptor-i2c.h"
-#include "adaptor.h"
-#include "oplus-adaptor-subdrv-ctrl.h"
-
-#endif
diff --git a/vendor/oplus/kernel/camera/imgsensor/inc/oplus_adaptor-ioctl.h b/vendor/oplus/kernel/camera/imgsensor/inc/oplus_adaptor-ioctl.h
index 95c4d7be..568b6aff 100755
--- a/vendor/oplus/kernel/camera/imgsensor/inc/oplus_adaptor-ioctl.h
+++ b/vendor/oplus/kernel/camera/imgsensor/inc/oplus_adaptor-ioctl.h
@@ -184,7 +184,7 @@ static int g_sensor_hwmode(struct adaptor_ctx *ctx, void *arg)
 	union feature_para para;
 	u32 len;
 	u8  hw_mode = 0;
-	para.u64[0] = (u64)&(info->sensor_mode);
+	para.u64[0] = info->sensor_mode;
 	para.u64[1] = (u64)&hw_mode;
 
 	subdrv_call(ctx, feature_control,
@@ -196,6 +196,24 @@ static int g_sensor_hwmode(struct adaptor_ctx *ctx, void *arg)
 	return 0;
 }
 
+static int g_sensor_buffer_increase(struct adaptor_ctx *ctx, void *arg)
+{
+	struct oplus_sensor_buffer_increase *info = arg;
+	union feature_para para;
+	u32 len;
+	u8  buffer_increase = 0;
+	para.u64[0] = info->sensor_mode;
+	para.u64[1] = (u64)&buffer_increase;
+
+	subdrv_call(ctx, feature_control,
+		SENSOR_FEATURE_GET_BUFFER_INCREASE,
+		para.u8, &len);
+	if (copy_to_user((void *)info->p_buffer_increase, &buffer_increase, sizeof(buffer_increase)))
+		return -EFAULT;
+	adaptor_logi(ctx, "sensor_mode: %d get buffer_increase %d\n", info->sensor_mode, buffer_increase);
+	return 0;
+}
+
 static const struct ioctl_entry oplus_ioctl_list[] = {
 	/* GET */
 	{VIDIOC_MTK_G_CAMERA_SN, g_get_camerasn},
@@ -207,6 +225,7 @@ static const struct ioctl_entry oplus_ioctl_list[] = {
 	{VIDIOC_MTK_G_QCOMPD_OFFSET_DATA, g_get_qcom_pdaf_offset_data},
 	{VIDIOC_MTK_G_SENSOR_SETTING_INFO, g_sensor_setting_info},
 	{VIDIOC_MTK_G_SENSOR_HWMODE, g_sensor_hwmode},
+	{VIDIOC_MTK_G_BUFFER_INCREASE, g_sensor_buffer_increase},
 };
 
 void oplus_adaptor_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg, int* ret)
diff --git a/vendor/oplus/kernel/camera/imgsensor/inc/oplus_imgsensor-user.h b/vendor/oplus/kernel/camera/imgsensor/inc/oplus_imgsensor-user.h
index 1db222ce..f3c2598a 100755
--- a/vendor/oplus/kernel/camera/imgsensor/inc/oplus_imgsensor-user.h
+++ b/vendor/oplus/kernel/camera/imgsensor/inc/oplus_imgsensor-user.h
@@ -27,6 +27,12 @@ struct oplus_sensor_hw_mode
 	__u8 *p_hw_mode;
 };
 
+struct oplus_sensor_buffer_increase
+{
+	__u32 sensor_mode;
+	__u8 *p_buffer_increase;
+};
+
 struct oplus_eeprom_info_struct
 {
 	__u16 sensorid_offset;
@@ -70,6 +76,9 @@ struct oplus_sensor_setting_info {
 #define VIDIOC_MTK_G_SENSOR_HWMODE \
 	_IOWR('M', BASE_VIDIOC_PRIVATE + 67, struct oplus_sensor_hw_mode)
 
+#define VIDIOC_MTK_G_BUFFER_INCREASE \
+	_IOWR('M', BASE_VIDIOC_PRIVATE + 68, struct oplus_sensor_buffer_increase)
+
 #define VIDIOC_MTK_S_CALIBRATION_EEPROM \
 	_IOW('M', BASE_VIDIOC_PRIVATE + 120, ACDK_SENSOR_ENGMODE_STEREO_STRUCT)
 
diff --git a/vendor/oplus/kernel/camera/imgsensor/inc/oplus_kd_imgsensor_define_v4l2.h b/vendor/oplus/kernel/camera/imgsensor/inc/oplus_kd_imgsensor_define_v4l2.h
index d4833c48..b0ae9302 100755
--- a/vendor/oplus/kernel/camera/imgsensor/inc/oplus_kd_imgsensor_define_v4l2.h
+++ b/vendor/oplus/kernel/camera/imgsensor/inc/oplus_kd_imgsensor_define_v4l2.h
@@ -356,6 +356,7 @@ enum SEAMLESS_FEATURE_SENSOR_SCENARIO {
 		SENSOR_FEATURE_GET_OTP_QCOM_PDAF_OFFSET_DATA, \
 		SENSOR_FEATURE_GET_DISTORTIONPARAMS, \
 		SENSOR_FEATURE_GET_SENSOR_SETTING_INFO, \
-		SENSOR_FEATURE_GET_HW_MODE
+		SENSOR_FEATURE_GET_HW_MODE, \
+		SENSOR_FEATURE_GET_BUFFER_INCREASE
 
 #endif    /* _OPLUS_KD_IMGSENSOR_DATA_V4L2_H */
diff --git a/vendor/oplus/kernel/camera/lens/ois/dw9786/Makefile b/vendor/oplus/kernel/camera/lens/ois/dw9786/Makefile
deleted file mode 100644
index f594b602..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/dw9786/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# Makefile for misc devices that really don't fit anywhere else.
-#
-ccflags-y += -I$(DEVICE_MODULES_PATH)/drivers/misc/mediatek/
-oplus_camera_dw9786-objs := adaptor-i2c.o dw9786af.o
-obj-m += oplus_camera_dw9786.o
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/lens/ois/dw9786/adaptor-i2c.c b/vendor/oplus/kernel/camera/lens/ois/dw9786/adaptor-i2c.c
deleted file mode 100755
index ea7bc922..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/dw9786/adaptor-i2c.c
+++ /dev/null
@@ -1,506 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2019 MediaTek Inc.
-
-#include 
-#include 
-
-#include "adaptor-i2c.h"
-
-#define MAX_BUF_SIZE 511
-#define MAX_MSG_NUM_U8 (MAX_BUF_SIZE / 3)
-#define MAX_MSG_NUM_U16 (MAX_BUF_SIZE / 4)
-#define MAX_VAL_NUM_U8 (MAX_BUF_SIZE - 2)
-#define MAX_VAL_NUM_U16 ((MAX_BUF_SIZE - 2) >> 1)
-
-struct cache_wr_regs_u8 {
-	u8 buf[MAX_BUF_SIZE];
-	struct i2c_msg msg[MAX_MSG_NUM_U8];
-};
-
-struct cache_wr_regs_u16 {
-	u8 buf[MAX_BUF_SIZE];
-	struct i2c_msg msg[MAX_MSG_NUM_U16];
-};
-
-int adaptor_i2c_rd_u8(struct i2c_client *i2c_client, u16 addr, u16 reg, u8 *val)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg[0].addr = addr;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = sizeof(buf);
-
-	msg[1].addr = addr;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 1;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return ret;
-	}
-
-	*val = buf[0];
-
-	return 0;
-}
-
-int adaptor_i2c_rd_u16(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u16 *val)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg[0].addr = addr;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = sizeof(buf);
-
-	msg[1].addr = addr;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 2;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return ret;
-	}
-
-	*val = ((u16)buf[0] << 8) | buf[1];
-
-	return 0;
-}
-
-int adaptor_i2c_rd_u32(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u32 *val)
-{
-	int ret;
-	u8 buf[4];
-	struct i2c_msg msg[2];
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg[0].addr = addr;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = 2;
-
-	msg[1].addr = addr;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 4;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return ret;
-	}
-
-	*val = (u32)(buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
-
-	return 0;
-}
-
-int adaptor_i2c_rd_p8(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		      u8 *p_vals, u32 n_vals)
-{
-	int ret, cnt, total, recv, reg_b;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-	u8 *pbuf;
-
-	recv = 0;
-	total = n_vals;
-	pbuf = p_vals;
-	reg_b = reg;
-
-	msg[0].addr = addr;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = sizeof(buf);
-
-	msg[1].addr = addr;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-
-	while (recv < total) {
-		cnt = total - recv;
-		if (cnt > MAX_VAL_NUM_U8)
-			cnt = MAX_VAL_NUM_U8;
-
-		buf[0] = reg_b >> 8;
-		buf[1] = reg_b & 0xff;
-
-		msg[1].buf = pbuf;
-		msg[1].len = cnt;
-
-		ret = i2c_transfer(i2c_client->adapter, msg, 2);
-		if (ret < 0) {
-			// dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-			// 	 ret);
-			return -EIO;
-		}
-
-		pbuf += cnt;
-		recv += cnt;
-		reg_b += cnt;
-	}
-
-	return ret;
-}
-
-int adaptor_i2c_wr_u8(struct i2c_client *i2c_client, u16 addr, u16 reg, u8 val)
-{
-	int ret;
-	u8 buf[3];
-	struct i2c_msg msg;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-	buf[2] = val;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-	msg.len = sizeof(buf);
-
-	ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-	if (ret < 0)
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-
-	return ret;
-}
-
-int adaptor_i2c_wr_u16(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u16 val)
-{
-	int ret;
-	u8 buf[4];
-	struct i2c_msg msg;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-	buf[2] = val >> 8;
-	buf[3] = val & 0xff;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-	msg.len = sizeof(buf);
-
-	ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-	if (ret < 0)
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-
-	return ret;
-}
-
-int adaptor_i2c_wr_u32(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u32 val)
-{
-	int ret;
-	u8 buf[6];
-	struct i2c_msg msg;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-	buf[2] = (val >> 24) & 0xff;
-	buf[3] = (val >> 16) & 0xff;
-	buf[4] = (val >> 8) & 0xff;
-	buf[5] = val & 0xff;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-	msg.len = sizeof(buf);
-
-	ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-	if (ret < 0)
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-
-	return ret;
-}
-
-int adaptor_i2c_wr_p8(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		      u8 *p_vals, u32 n_vals)
-{
-	u8 *buf, *pbuf, *pdata;
-	struct i2c_msg msg;
-	int ret, sent, total, cnt;
-
-	buf = kmalloc(MAX_BUF_SIZE, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	sent = 0;
-	total = n_vals;
-	pdata = p_vals;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-
-	while (sent < total) {
-		cnt = total - sent;
-		if (cnt > MAX_VAL_NUM_U8)
-			cnt = MAX_VAL_NUM_U8;
-
-		pbuf = buf + 2;
-		memcpy(pbuf, pdata, cnt);
-
-		msg.len = 2 + cnt;
-
-		ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-		if (ret < 0) {
-			dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-				 ret);
-			kfree(buf);
-			return -EIO;
-		}
-
-		sent += cnt;
-		pdata += cnt;
-	}
-
-	kfree(buf);
-
-	return 0;
-}
-
-int adaptor_i2c_wr_p16(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u16 *p_vals, u32 n_vals)
-{
-	u8 *buf, *pbuf;
-	u16 *pdata;
-	struct i2c_msg msg;
-	int i, ret, sent, total, cnt;
-
-	buf = kmalloc(MAX_BUF_SIZE, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	sent = 0;
-	total = n_vals;
-	pdata = p_vals;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-
-	while (sent < total) {
-		cnt = total - sent;
-		if (cnt > MAX_VAL_NUM_U16)
-			cnt = MAX_VAL_NUM_U16;
-
-		pbuf = buf + 2;
-
-		for (i = 0; i < cnt; i++) {
-			pbuf[0] = pdata[0] >> 8;
-			pbuf[1] = pdata[0] & 0xff;
-			pdata++;
-			pbuf += 2;
-		}
-
-		msg.len = 2 + (cnt << 1);
-
-		ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-		if (ret < 0) {
-			dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-				 ret);
-			kfree(buf);
-			return -EIO;
-		}
-
-		sent += cnt;
-	}
-
-	kfree(buf);
-
-	return 0;
-}
-
-int adaptor_i2c_wr_seq_p8(struct i2c_client *i2c_client, u16 addr, u16 reg,
-			  u8 *p_vals, u32 n_vals)
-{
-	u8 *buf, *pbuf, *pdata;
-	struct i2c_msg msg;
-	int ret, sent, total, cnt;
-
-	buf = kmalloc(MAX_BUF_SIZE, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	sent = 0;
-	total = n_vals;
-	pdata = p_vals;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-
-	while (sent < total) {
-		cnt = total - sent;
-		if (cnt > MAX_VAL_NUM_U8)
-			cnt = MAX_VAL_NUM_U8;
-
-		buf[0] = reg >> 8;
-		buf[1] = reg & 0xff;
-
-		pbuf = buf + 2;
-		memcpy(pbuf, pdata, cnt);
-
-		msg.len = 2 + cnt;
-
-		ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-		if (ret < 0) {
-			dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-				 ret);
-			kfree(buf);
-			return -EIO;
-		}
-
-		sent += cnt;
-		pdata += cnt;
-		reg += cnt;
-	}
-
-	kfree(buf);
-
-	return 0;
-}
-
-int adaptor_i2c_wr_regs_u8(struct i2c_client *i2c_client, u16 addr, u16 *list,
-			   u32 len)
-{
-	struct cache_wr_regs_u8 *pmem;
-	struct i2c_msg *pmsg;
-	u8 *pbuf;
-	u16 *plist;
-	int i, ret, sent, total, cnt;
-
-	pmem = kmalloc(sizeof(*pmem), GFP_KERNEL);
-	if (!pmem)
-		return -ENOMEM;
-
-	/* each msg contains 3 bytes: addr(u16) + val(u8) */
-	sent = 0;
-	total = len >> 1;
-	plist = list;
-
-	while (sent < total) {
-		cnt = total - sent;
-		if (cnt > ARRAY_SIZE(pmem->msg))
-			cnt = ARRAY_SIZE(pmem->msg);
-
-		pbuf = pmem->buf;
-		pmsg = pmem->msg;
-
-		for (i = 0; i < cnt; i++) {
-			pbuf[0] = plist[0] >> 8;
-			pbuf[1] = plist[0] & 0xff;
-			pbuf[2] = plist[1] & 0xff;
-
-			pmsg->addr = addr;
-			pmsg->flags = i2c_client->flags;
-			pmsg->len = 3;
-			pmsg->buf = pbuf;
-
-			plist += 2;
-			pbuf += 3;
-			pmsg++;
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmem->msg, cnt);
-		if (ret != cnt) {
-			dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-				 ret);
-			kfree(pmem);
-			return -EIO;
-		}
-
-		sent += cnt;
-	}
-
-	kfree(pmem);
-
-	return 0;
-}
-
-int adaptor_i2c_wr_regs_u16(struct i2c_client *i2c_client, u16 addr, u16 *list,
-			    u32 len)
-{
-	struct cache_wr_regs_u16 *pmem;
-	struct i2c_msg *pmsg;
-	u8 *pbuf;
-	u16 *plist;
-	int i, ret, sent, total, cnt;
-
-	pmem = kmalloc(sizeof(*pmem), GFP_KERNEL);
-	if (!pmem)
-		return -ENOMEM;
-
-	/* each msg contains 4 bytes: addr(u16) + val(u16) */
-	sent = 0;
-	total = len >> 1;
-	plist = list;
-
-	while (sent < total) {
-		cnt = total - sent;
-		if (cnt > ARRAY_SIZE(pmem->msg))
-			cnt = ARRAY_SIZE(pmem->msg);
-
-		pbuf = pmem->buf;
-		pmsg = pmem->msg;
-
-		for (i = 0; i < cnt; i++) {
-			pbuf[0] = plist[0] >> 8;
-			pbuf[1] = plist[0] & 0xff;
-			pbuf[2] = plist[1] >> 8;
-			pbuf[3] = plist[1] & 0xff;
-
-			pmsg->addr = addr;
-			pmsg->flags = i2c_client->flags;
-			pmsg->len = 4;
-			pmsg->buf = pbuf;
-
-			plist += 2;
-			pbuf += 4;
-			pmsg++;
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmem->msg, cnt);
-		if (ret != cnt) {
-			dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-				 ret);
-			kfree(pmem);
-			return -EIO;
-		}
-
-		sent += cnt;
-	}
-
-	kfree(pmem);
-
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/lens/ois/dw9786/adaptor-i2c.h b/vendor/oplus/kernel/camera/lens/ois/dw9786/adaptor-i2c.h
deleted file mode 100755
index ab11ed73..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/dw9786/adaptor-i2c.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright (c) 2019 MediaTek Inc. */
-
-#ifndef __ADAPTOR_I2C_H__
-#define __ADAPTOR_I2C_H__
-
-int adaptor_i2c_rd_u8(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		      u8 *val);
-
-int adaptor_i2c_rd_u16(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u16 *val);
-
-int adaptor_i2c_rd_p8(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		      u8 *p_vals, u32 n_vals);
-
-int adaptor_i2c_wr_u8(struct i2c_client *i2c_client, u16 addr, u16 reg, u8 val);
-
-int adaptor_i2c_wr_u16(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u16 val);
-
-int adaptor_i2c_wr_p8(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		      u8 *p_vals, u32 n_vals);
-
-int adaptor_i2c_wr_p16(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u16 *p_vals, u32 n_vals);
-
-int adaptor_i2c_wr_seq_p8(struct i2c_client *i2c_client, u16 addr, u16 reg,
-			  u8 *p_vals, u32 n_vals);
-
-int adaptor_i2c_wr_regs_u8(struct i2c_client *i2c_client, u16 addr, u16 *list,
-			   u32 len);
-
-int adaptor_i2c_wr_regs_u16(struct i2c_client *i2c_client, u16 addr, u16 *list,
-			    u32 len);
-
-#endif
diff --git a/vendor/oplus/kernel/camera/lens/ois/dw9786/dw9786af.c b/vendor/oplus/kernel/camera/lens/ois/dw9786/dw9786af.c
deleted file mode 100755
index a755d11e..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/dw9786/dw9786af.c
+++ /dev/null
@@ -1,843 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2023 OPLUS Inc.
- */
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include "adaptor-i2c.h"
-#include 
-#include 
-#include "hf_manager.h"
-
-#define DRIVER_NAME                  "dw9786"
-#define DW9786_I2C_SLAVE_ADDR        0x32
-
-#define LOG_INF(format, args...)                                               \
-	pr_info(DRIVER_NAME " [%s] " format, __func__, ##args)
-
-#define DW9786_NAME				 "dw9786"
-#define DW9786_MAX_FOCUS_POS		  4095
-#define DW9786_ORIGIN_FOCUS_POS	  512
-/*
- * This sets the minimum granularity for the focus positions.
- * A value of 1 gives maximum accuracy for a desired focus position
- */
-#define DW9786_FOCUS_STEPS			  1
-#define DW9786_SET_POSITION_ADDR	  0xB300
-// #define DW9786_STATUS_ADDR			  0x05
-
-#define DW9786_CMD_DELAY			  0xff
-#define DW9786_CTRL_DELAY_US		  1000
-#define DW9786_POS_CTRL_DELAY_US    1000
-/*
- * This acts as the minimum granularity of lens movement.
- * Keep this value power of 2, so the control steps can be
- * uniformly adjusted for gradual lens movement, with desired
- * number of control steps.
- */
-#define DW9786_MOVE_STEPS			  400
-// base on 0x06 and 0x07 setting
-// tVIB = (6.3 + (SACT[5:0]) *0.1)*DIV[2:0] ms
-// 0x06 = 0x40 ==> SAC3
-// 0x07 = 0x60 ==> tVIB = 9.4ms
-// op_time = 9.4 * 0.72 = 6.77ms
-// tolerance -+ 19%
-#define DW9786_MOVE_DELAY_US		  8100
-
-atomic_t g_is_need_standby = ATOMIC_INIT(0);
-static int g_last_pos = DW9786_ORIGIN_FOCUS_POS;
-extern struct mutex dw9786_mutex;
-static DEFINE_MUTEX(dw9786_suspend_mutex);
-static struct workqueue_struct *dw9786_suspend_wq;
-
-/* dw9786 device structure */
-struct dw9786_device {
-	struct v4l2_ctrl_handler ctrls;
-	struct v4l2_subdev sd;
-	struct v4l2_ctrl *focus;
-	struct regulator *afvdd;
-	struct regulator *iovdd;
-	struct regulator *oisvdd;
-	/* active or standby mode */
-	bool active;
-	bool is_suspending;
-	bool stop_wait_suspend_flag;
-	wait_queue_head_t wait_suspend_queue_head;
-	struct work_struct suspend_work;
-	struct hf_client *client;
-};
-
-#define VCM_IOC_POWER_ON         _IO('V', BASE_VIDIOC_PRIVATE + 4)
-#define VCM_IOC_POWER_OFF        _IO('V', BASE_VIDIOC_PRIVATE + 5)
-
-static inline struct dw9786_device *to_dw9786_vcm(struct v4l2_ctrl *ctrl)
-{
-	return container_of(ctrl->handler, struct dw9786_device, ctrls);
-}
-
-static inline struct dw9786_device *sd_to_dw9786_vcm(struct v4l2_subdev *subdev)
-{
-	return container_of(subdev, struct dw9786_device, sd);
-}
-
-struct regval_list {
-	unsigned char reg_num;
-	unsigned char value;
-};
-
-
-static int dw9786_set_position(struct dw9786_device *dw9786, u16 val)
-{
-	int ret;
-	struct i2c_client *client = v4l2_get_subdevdata(&dw9786->sd);
-	uint16_t set_pos, last_actual_pos, status;
-
-	adaptor_i2c_rd_u16(client, client->addr, 0xB300, &set_pos);
-	adaptor_i2c_rd_u16(client, client->addr, 0xB302, &last_actual_pos);
-	adaptor_i2c_rd_u16(client, client->addr, 0xB020, &status);
-	LOG_INF("set pos: %d, reg pos: %d, last actual pos: %d, AF status: 0x%x", val, set_pos, last_actual_pos, status);
-
-	ret = adaptor_i2c_wr_u16(client, client->addr, DW9786_SET_POSITION_ADDR, val);
-
-	return ret;
-}
-
-static int dw9786_release(struct dw9786_device *dw9786)
-{
-	int ret, val;
-	int diff_dac = 0;
-	int nStep_count = 0;
-	int i = 0;
-	struct i2c_client *client = v4l2_get_subdevdata(&dw9786->sd);
-
-	diff_dac = DW9786_ORIGIN_FOCUS_POS - dw9786->focus->val;
-
-	nStep_count = (diff_dac < 0 ? (diff_dac*(-1)) : diff_dac) /
-		DW9786_MOVE_STEPS;
-
-	val = dw9786->focus->val;
-
-	for (i = 0; i < nStep_count; ++i) {
-		val += (diff_dac < 0 ? (DW9786_MOVE_STEPS*(-1)) : DW9786_MOVE_STEPS);
-
-		ret = dw9786_set_position(dw9786, val);
-		if (ret < 0) {
-			LOG_INF("%s I2C failure: %d",
-				__func__, ret);
-			return ret;
-		}
-		usleep_range(DW9786_MOVE_DELAY_US,
-			     DW9786_MOVE_DELAY_US + 1000);
-	}
-
-	// last step to origin
-	ret = dw9786_set_position(dw9786, DW9786_ORIGIN_FOCUS_POS);
-	if (ret < 0) {
-		LOG_INF("%s I2C failure: %d",
-			__func__, ret);
-		return ret;
-	}
-
-	adaptor_i2c_wr_u16(client, client->addr, 0xE000, 0x0000);
-	dw9786->active  = false;
-
-	LOG_INF("-\n");
-
-	return 0;
-}
-
-static int dw9786_init(void* data)
-{
-	int retry = 6;
-	struct dw9786_device* dw9786 = (struct dw9786_device*)data;
-	struct i2c_client *client = v4l2_get_subdevdata(&dw9786->sd);
-	int ret = 0;
-	int puSendCmdArray[6][3] = {
-	{0xB026, 0x0001, 1},    // OP mode
-	{0xB022, 0x0002, 1},    // OIS Servo On
-	{0xB024, 0x0002, 1},    // AF Servo On
-	{0xB0B2, 0x8000, 1},    // still mode
-	{0xB96E, 0x1902, 1},    // EIS Param
-	{0xB022, 0x0001, 1},    // OIS On
-	};
-	unsigned short stdby[17] = {0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-								0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-								0x0000, 0x0000, 0x0000};
-	unsigned char cmd_number;
-	unsigned char checksum_byte[2];
-	uint16_t chip_en;
-	uint16_t mcu_active;
-	uint16_t af_status;
-	LOG_INF("+\n");
-	LOG_INF("dw9786_mutex: %p", &dw9786_mutex);
-	mutex_lock(&dw9786_mutex);
-
-	client->addr = DW9786_I2C_SLAVE_ADDR >> 1;
-
-	LOG_INF("Check HW version: %x\n", ret);
-
-	adaptor_i2c_rd_u16(client, client->addr, 0xB020, &af_status);
-	LOG_INF("af status: 0x%04X", af_status);
-	if (af_status == 0x1022 || af_status == 0x1021) {
-		dw9786->active  = true;
-		LOG_INF("af has been enabled, return 0");
-		mutex_unlock(&dw9786_mutex);
-		return 0;
-	}
-
-	do{
-		adaptor_i2c_rd_u16(client, client->addr, 0xE000, &chip_en);
-		LOG_INF("chip_en: 0x%04X", chip_en);
-		if (chip_en != 0x0001) {
-			ret = adaptor_i2c_wr_u16(client, client->addr, 0xE000, 0x0000);
-			mdelay(2);
-			adaptor_i2c_wr_p8(client, client->addr, 0xE000, (unsigned char *)stdby, 34);
-			mdelay(5);
-		}
-
-		adaptor_i2c_rd_u16(client, client->addr, 0xE004, &mcu_active);
-		LOG_INF("mcu_active: 0x%04X", mcu_active);
-		if(mcu_active != 0x0001) {
-			ret = adaptor_i2c_wr_u16(client, client->addr, 0xE004, 0x0001);
-			mdelay(20);
-		}
-
-		for (cmd_number = 0; cmd_number < sizeof(puSendCmdArray) / sizeof(puSendCmdArray[0]); cmd_number++) {
-			ret = adaptor_i2c_wr_u16(client, client->addr,
-					puSendCmdArray[cmd_number][0],
-					puSendCmdArray[cmd_number][1]);
-			mdelay(puSendCmdArray[cmd_number][2]);
-			LOG_INF("dw9786_init: %x\n", cmd_number);
-		}
-
-		adaptor_i2c_rd_u16(client, client->addr, 0xB020, &af_status);
-		LOG_INF("af status: 0x%04X", af_status);
-
-		retry--;
-	} while (af_status != 0x1021 && retry > 0);
-
-	dw9786->active  = true;
-
-	adaptor_i2c_rd_p8(client, client->addr, 0xB022, checksum_byte, 2);
-	LOG_INF("checksum: 0x%x%x\n", checksum_byte[0], checksum_byte[1]);
-
-	mutex_unlock(&dw9786_mutex);
-
-	LOG_INF("-\n");
-	return ret;
-}
-
-static void stop_background_works(struct dw9786_device *dw9786)
-{
-	LOG_INF("+\n");
-
-	atomic_set(&g_is_need_standby, 0);
-	dw9786->stop_wait_suspend_flag = true;
-
-	wake_up_interruptible(&dw9786->wait_suspend_queue_head);
-
-	if (dw9786_suspend_wq) {
-		LOG_INF("flush dw9786 suspend work queue\n");
-
-		/* flush work queue */
-		flush_work(&dw9786->suspend_work);
-
-		flush_workqueue(dw9786_suspend_wq);
-		destroy_workqueue(dw9786_suspend_wq);
-		dw9786_suspend_wq = NULL;
-	}
-
-	dw9786->stop_wait_suspend_flag = false;
-
-	LOG_INF("-\n");
-}
-
-static int enable_disable_imu(struct dw9786_device *dw9786, bool action)
-{
-	int ret = -1;
-	uint8_t sensor_type = SENSOR_TYPE_OIS_IMU;
-	struct hf_manager_cmd cmd;
-	struct hf_manager_batch *batch = NULL;
-
-	if (NULL == dw9786->client) {
-		dw9786->client = hf_client_create();
-	}
-	if (NULL == dw9786->client) {
-		LOG_INF("hf_client_create fail\n");
-		return -1;
-	}
-
-	ret = hf_client_find_sensor(dw9786->client, sensor_type);
-	if (ret < 0) {
-		LOG_INF("hf_client_find_sensor %u fail, ret: %d\n", sensor_type, ret);
-		return -2;
-	}
-	LOG_INF("hf_client_find_sensor %u success\n", sensor_type);
-
-	memset(&cmd, 0, sizeof(cmd));
-	cmd.sensor_type = sensor_type;
-
-	if (action) {
-		cmd.action = HF_MANAGER_SENSOR_ENABLE;
-		batch = (struct hf_manager_batch *)cmd.data;
-		batch->delay = 0;
-		batch->latency = 0;
-	} else {
-		cmd.action = HF_MANAGER_SENSOR_DISABLE;
-	}
-
-	ret = hf_client_control_sensor(dw9786->client, &cmd);
-	if (ret < 0) {
-		LOG_INF("hf_client_control_sensor %u fail, ret: %d\n", sensor_type, ret);
-		return -3;
-	}
-	LOG_INF("hf_client_control_sensor %u success\n", sensor_type);
-
-	return 0;
-}
-
-/* Power handling */
-static int dw9786_power_off(struct dw9786_device *dw9786)
-{
-	int ret;
-
-	LOG_INF("+\n");
-
-	ret = dw9786_release(dw9786);
-	if (ret)
-		LOG_INF("dw9786 release failed!\n");
-
-	ret = regulator_disable(dw9786->oisvdd);
-	if (ret) {
-		LOG_INF("disable dw9786->oisvdd failed!\n");
-		return ret;
-	}
-	LOG_INF("disable dw9786->iovdd success ret[%d]", ret);
-
-	ret = regulator_disable(dw9786->afvdd);
-	if (ret) {
-		LOG_INF("disable dw9786->iovdd failed!\n");
-		return ret;
-	}
-	LOG_INF("disable dw9786->iovdd success ret[%d]", ret);
-
-	ret = regulator_disable(dw9786->iovdd);
-	if (ret) {
-		LOG_INF("disable dw9786->iovdd failed!\n");
-		return ret;
-	}
-	LOG_INF("disable dw9786->iovdd success ret[%d]", ret);
-
-	dw9786->active = false;
-	enable_disable_imu(dw9786, false);
-	LOG_INF("-\n");
-
-	return ret;
-}
-
-static int dw9786_power_on(struct dw9786_device *dw9786)
-{
-	int ret, ret1;
-	int err;
-	struct task_struct *dw9786_init_task;
-
-	LOG_INF("+\n");
-
-	ret = regulator_enable(dw9786->iovdd);
-	ret1 = regulator_set_voltage(dw9786->iovdd, 1800000, 1800000);
-	if (ret < 0 || ret1 < 0) {
-		LOG_INF("%s dw9786->iovdd set failed ret[%d] ret1[%d]", __func__,
-			   ret, ret1);
-		return -1;
-	}
-	LOG_INF("dw9786->iovdd set success ret[%d], ret1[%d]", ret, ret1);
-
-	ret = regulator_enable(dw9786->oisvdd);
-	ret1 = regulator_set_voltage(dw9786->oisvdd, 3100000, 3100000);
-	if (ret < 0 || ret1 < 0) {
-		LOG_INF("%s dw9786->oisvdd set failed ret[%d] ret1[%d]", __func__,
-			   ret, ret1);
-		return -1;
-	}
-	LOG_INF("dw9786->oisvdd set success ret[%d], ret1[%d]", ret, ret1);
-	mdelay(2);
-
-	ret = regulator_enable(dw9786->afvdd);
-	ret1 = regulator_set_voltage(dw9786->afvdd, 3100000, 3100000);
-	if (ret < 0 || ret1 < 0) {
-		LOG_INF("%s dw9786->afvdd set failed ret[%d] ret1[%d]", __func__,
-			   ret, ret1);
-		return -1;
-	}
-	LOG_INF("dw9786->afvdd set success ret[%d], ret1[%d]", ret, ret1);
-
-	if (ret < 0)
-		return ret;
-
-	enable_disable_imu(dw9786, true);
-
-	/*
-	 * TODO(b/139784289): Confirm hardware requirements and adjust/remove
-	 * the delay.
-	 */
-	mdelay(3);
-
-	dw9786_init_task = kthread_create(dw9786_init, dw9786, "dw9786_init_kthread");
-	if (IS_ERR(dw9786_init_task)) {
-		LOG_INF("unable to start dw9786_init thread/n");
-		err = PTR_ERR(dw9786_init_task);
-		dw9786_init_task = NULL;
-		dw9786_init(dw9786);
-		return 0;
-	}
-	wake_up_process(dw9786_init_task);
-
-	LOG_INF("-\n");
-
-	return 0;
-}
-
-static int dw9786_set_ctrl(struct v4l2_ctrl *ctrl)
-{
-	int ret = 0;
-	struct dw9786_device *dw9786 = to_dw9786_vcm(ctrl);
-
-	if (ctrl->id == V4L2_CID_FOCUS_ABSOLUTE) {
-		LOG_INF("pos(%d)\n", ctrl->val);
-		ret = dw9786_set_position(dw9786, ctrl->val);
-		if (ret < 0) {
-			LOG_INF("%s I2C failure: %d",
-				__func__, ret);
-			return ret;
-		}
-		g_last_pos = ctrl->val;
-	}
-	return 0;
-}
-
-static const struct v4l2_ctrl_ops dw9786_vcm_ctrl_ops = {
-	.s_ctrl = dw9786_set_ctrl,
-};
-
-static int dw9786_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
-{
-	int ret;
-	struct dw9786_device *dw9786 = sd_to_dw9786_vcm(sd);
-
-	ret = dw9786_power_on(dw9786);
-	if (ret < 0) {
-		LOG_INF("power on fail, ret = %d\n", ret);
-		return ret;
-	}
-
-	return 0;
-}
-
-static int dw9786_close(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
-{
-	struct dw9786_device *dw9786 = sd_to_dw9786_vcm(sd);
-
-	dw9786_power_off(dw9786);
-
-	return 0;
-}
-
-static int dw9786_vcm_suspend(struct dw9786_device *dw9786)
-{
-	LOG_INF("+\n");
-	if (dw9786->is_suspending) {
-		return 0;
-	}
-
-	mutex_lock(&dw9786_suspend_mutex);
-	LOG_INF("dw9786_suspend_mutex: %p", &dw9786_suspend_mutex);
-	dw9786->is_suspending = true;
-
-	if (!dw9786->active) {
-		dw9786->is_suspending = false;
-		mutex_unlock(&dw9786_suspend_mutex);
-		return 0;
-	}
-
-	/* DW9786 suspend workqueue */
-	if (dw9786_suspend_wq == NULL) {
-		LOG_INF("create_singlethread_workqueue\n");
-		dw9786_suspend_wq = create_singlethread_workqueue("dw9786_suspend_work");
-		if (!dw9786_suspend_wq) {
-			LOG_INF("create_singlethread_workqueue fail\n");
-			dw9786->is_suspending = false;
-			mutex_unlock(&dw9786_suspend_mutex);
-			return -ENOMEM;
-		}
-	} else {
-		LOG_INF("flush work queue\n");
-		flush_work(&dw9786->suspend_work);    /* flush work queue */
-	}
-
-	atomic_set(&g_is_need_standby, 1);
-	queue_work(dw9786_suspend_wq, &dw9786->suspend_work);
-	mutex_unlock(&dw9786_suspend_mutex);
-	LOG_INF("-\n");
-
-	return 0;
-}
-
-static void dw9786_vcm_suspend_work_fun(struct work_struct *work)
-{
-	struct dw9786_device *dw9786 = container_of(work, struct dw9786_device, suspend_work);
-	int ret, val;
-	int diff_dac = 0;
-	int nStep_count = 0;
-	int i = 0;
-	uint16_t status;
-	struct i2c_client *client = v4l2_get_subdevdata(&dw9786->sd);
-	LOG_INF("+\n");
-	uint16_t ois_status;
-
-	if (!dw9786) {
-		LOG_INF("dw9786 device is NULL, return");
-		return;
-	}
-
-	if (!dw9786->active) {
-		dw9786->is_suspending = false;
-		return;
-	}
-
-	adaptor_i2c_rd_u16(client, client->addr, 0xB0B2, &ois_status);
-	if (ois_status == 0x8001) {
-		dw9786->active = false;
-		dw9786->is_suspending = false;
-		LOG_INF("ois has been used movie, return 0");
-		return;
-	}
-
-	// delay power off
-	dw9786->stop_wait_suspend_flag = false;
-	if (atomic_read(&g_is_need_standby) == 0) {
-		LOG_INF("delay power off stop\n");
-		dw9786->is_suspending = false;
-		return;
-	}
-	LOG_INF("delay power off start\n");
-	ret = wait_event_interruptible_timeout(dw9786->wait_suspend_queue_head,
-			dw9786->stop_wait_suspend_flag, msecs_to_jiffies(2000));
-	if (ret > 0) {
-		LOG_INF("interrupting, ret = %d\n", ret);
-		dw9786->is_suspending = false;
-		return;
-	} else {
-		// no interruptions, continue to power off
-		LOG_INF("delay power off end\n");
-	}
-
-	if (!dw9786->active) {
-		dw9786->is_suspending = false;
-		return;
-	}
-
-	diff_dac = DW9786_ORIGIN_FOCUS_POS - dw9786->focus->val;
-	nStep_count = (diff_dac < 0 ? (diff_dac*(-1)) : diff_dac) /
-		DW9786_MOVE_STEPS;
-	val = dw9786->focus->val;
-	for (i = 0; i < nStep_count; ++i) {
-		val += (diff_dac < 0 ? (DW9786_MOVE_STEPS*(-1)) : DW9786_MOVE_STEPS);
-
-		ret = dw9786_set_position(dw9786, val);
-		if (ret < 0) {
-			LOG_INF("%s I2C failure: %d", __func__, ret);
-			dw9786->is_suspending = false;
-			return;
-		}
-		usleep_range(DW9786_CTRL_DELAY_US, DW9786_CTRL_DELAY_US + 10);
-	}
-
-	// last step to origin
-	ret = dw9786_set_position(dw9786, DW9786_ORIGIN_FOCUS_POS);
-	if (ret < 0) {
-		LOG_INF("%s I2C failure: %d", __func__, ret);
-		dw9786->is_suspending = false;
-		return;
-	}
-	ret = adaptor_i2c_rd_u16(client, client->addr, 0xE000, &status);
-	if (!(ret < 0) && (status != 0)) {
-		LOG_INF("OIS step power off");
-		adaptor_i2c_wr_u16(client, client->addr, 0xB026, 0x0001);    /* active mode */
-		mdelay(1);
-		adaptor_i2c_wr_u16(client, client->addr, 0xB022, 0x0002);    /* ois servo on */
-		mdelay(1);
-		adaptor_i2c_wr_u16(client, client->addr, 0xB024, 0x0002);    /* af servo on */
-		mdelay(5);
-		adaptor_i2c_wr_u16(client, client->addr, 0xB100, -5000);
-		adaptor_i2c_wr_u16(client, client->addr, 0xB200, 5000);
-		mdelay(15);
-		adaptor_i2c_wr_u16(client, client->addr, 0xB100, -6000);
-		adaptor_i2c_wr_u16(client, client->addr, 0xB200, 6000);
-		mdelay(15);
-	}
-	ret = adaptor_i2c_wr_u16(client, client->addr, 0xE000, 0x0000);
-	if (ret < 0) {
-		LOG_INF("I2C failure!!!\n");
-	} else {
-		dw9786->active = false;
-		LOG_INF("enter stand by mode\n");
-	}
-	dw9786->is_suspending = false;
-	LOG_INF("-\n");
-	return;
-}
-
-static int dw9786_vcm_resume_thread_func(void* data)
-{
-	int ret, diff_dac, nStep_count, i;
-	int val = DW9786_ORIGIN_FOCUS_POS;
-	struct dw9786_device *dw9786 = (struct dw9786_device*)data;
-	struct i2c_client *client = v4l2_get_subdevdata(&dw9786->sd);
-	uint16_t af_status = 0;
-	LOG_INF("+\n");
-	mutex_lock(&dw9786_suspend_mutex);
-	stop_background_works(dw9786);
-	LOG_INF("dw9786_suspend_mutex: %p", &dw9786_suspend_mutex);
-
-	adaptor_i2c_rd_u16(client, client->addr, 0xB020, &af_status);
-	LOG_INF("af status: 0x%04X", af_status);
-	if ((af_status == 0x1022 || af_status == 0x1021) && dw9786->active) {
-		LOG_INF("af has been enabled, return 0");
-		mutex_unlock(&dw9786_suspend_mutex);
-		return 0;
-	}
-
-	ret = dw9786_init(dw9786);
-	if (ret < 0) {
-		LOG_INF("I2C failure!!!\n");
-		mutex_unlock(&dw9786_suspend_mutex);
-		return ret;
-	}
-	usleep_range(DW9786_CTRL_DELAY_US, DW9786_CTRL_DELAY_US + 10);
-	diff_dac = dw9786->focus->val - DW9786_ORIGIN_FOCUS_POS;
-	nStep_count = (diff_dac < 0 ? (diff_dac*(-1)) : diff_dac) /
-			DW9786_MOVE_STEPS;
-	for (i = 0; i < nStep_count; ++i) {
-		val += (diff_dac < 0 ? (DW9786_MOVE_STEPS*(-1)) : DW9786_MOVE_STEPS);
-		ret = dw9786_set_position(dw9786, val);
-		if (ret < 0) {
-			LOG_INF("%s I2C failure: %d", __func__, ret);
-			mutex_unlock(&dw9786_suspend_mutex);
-			return ret;
-		}
-		usleep_range(DW9786_CTRL_DELAY_US, DW9786_CTRL_DELAY_US + 10);
-	}
-	ret = dw9786_set_position(dw9786, dw9786->focus->val);
-	if (ret < 0) {
-		LOG_INF("%s I2C failure: %d", __func__, ret);
-		mutex_unlock(&dw9786_suspend_mutex);
-		return ret;
-	}
-	dw9786->active = true;
-	mutex_unlock(&dw9786_suspend_mutex);
-	LOG_INF("-\n");
-
-	return ret;
-}
-
-static int dw9786_vcm_resume(struct dw9786_device *dw9786)
-{
-	int err;
-
-	struct task_struct *dw9786_vcm_resume_task = kthread_create(dw9786_vcm_resume_thread_func, dw9786, "dw9786_vcm_resume_kthread");
-	if (IS_ERR(dw9786_vcm_resume_task)) {
-		LOG_INF("unable to start dw9786_dw9786_vcm_resume thread/n");
-		err = PTR_ERR(dw9786_vcm_resume_task);
-		dw9786_vcm_resume_task = NULL;
-		dw9786_vcm_resume_thread_func(dw9786);
-		return 0;
-	}
-	wake_up_process(dw9786_vcm_resume_task);
-	return 0;
-}
-
-static long dw9786_ops_core_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
-{
-	int ret = 0;
-	struct dw9786_device *dw9786 = sd_to_dw9786_vcm(sd);
-	struct i2c_client *client = v4l2_get_subdevdata(&dw9786->sd);
-
-	client->addr = DW9786_I2C_SLAVE_ADDR >> 1;
-
-	switch (cmd) {
-	case VCM_IOC_POWER_ON:
-		ret = dw9786_vcm_resume(dw9786);
-		LOG_INF("VCM_IOC_POWER_ON, cmd:%d\n", cmd);
-		break;
-	case VCM_IOC_POWER_OFF:
-		ret = dw9786_vcm_suspend(dw9786);
-		LOG_INF("VCM_IOC_POWER_OFF, cmd:%d\n", cmd);
-		break;
-	default:
-		ret = -ENOIOCTLCMD;
-		break;
-	}
-	return ret;
-}
-
-static const struct v4l2_subdev_internal_ops dw9786_int_ops = {
-	.open = dw9786_open,
-	.close = dw9786_close,
-};
-
-static struct v4l2_subdev_core_ops dw9786_ops_core = {
-	.ioctl = dw9786_ops_core_ioctl,
-};
-
-static const struct v4l2_subdev_ops dw9786_ops = {
-	.core = &dw9786_ops_core,
-};
-
-static void dw9786_subdev_cleanup(struct dw9786_device *dw9786)
-{
-	v4l2_async_unregister_subdev(&dw9786->sd);
-	v4l2_ctrl_handler_free(&dw9786->ctrls);
-#if IS_ENABLED(CONFIG_MEDIA_CONTROLLER)
-	media_entity_cleanup(&dw9786->sd.entity);
-#endif
-}
-
-static int dw9786_init_controls(struct dw9786_device *dw9786)
-{
-	struct v4l2_ctrl_handler *hdl = &dw9786->ctrls;
-	const struct v4l2_ctrl_ops *ops = &dw9786_vcm_ctrl_ops;
-
-	v4l2_ctrl_handler_init(hdl, 1);
-
-	dw9786->focus = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_FOCUS_ABSOLUTE,
-			  0, DW9786_MAX_FOCUS_POS, DW9786_FOCUS_STEPS, 0);
-
-	if (hdl->error)
-		return hdl->error;
-
-	dw9786->sd.ctrl_handler = hdl;
-
-	return 0;
-}
-
-static int dw9786_probe(struct i2c_client *client)
-{
-	struct device *dev = &client->dev;
-	struct dw9786_device *dw9786;
-	int ret;
-
-	LOG_INF("+\n");
-
-	dw9786 = devm_kzalloc(dev, sizeof(*dw9786), GFP_KERNEL);
-	if (!dw9786)
-		return -ENOMEM;
-
-	init_waitqueue_head(&dw9786->wait_suspend_queue_head);
-	LOG_INF("init_wait_suspend_queue_head done\n");
-
-	dw9786->afvdd = devm_regulator_get(dev, "afvdd");
-	if (IS_ERR(dw9786->afvdd)) {
-		ret = PTR_ERR(dw9786->afvdd);
-		if (ret != -EPROBE_DEFER)
-			LOG_INF("cannot get afvdd regulator\n");
-		return ret;
-	}
-
-	dw9786->oisvdd = devm_regulator_get(dev, "oisvdd");
-	if (IS_ERR(dw9786->oisvdd)) {
-		ret = PTR_ERR(dw9786->oisvdd);
-		if (ret != -EPROBE_DEFER)
-			LOG_INF("cannot get oisvdd regulator\n");
-		return ret;
-	}
-
-	dw9786->iovdd = devm_regulator_get(dev, "iovdd");
-	if (IS_ERR(dw9786->iovdd)) {
-		ret = PTR_ERR(dw9786->iovdd);
-		if (ret != -EPROBE_DEFER)
-			LOG_INF("cannot get iovdd regulator\n");
-		return ret;
-	}
-
-	INIT_WORK(&dw9786->suspend_work, dw9786_vcm_suspend_work_fun);
-
-	v4l2_i2c_subdev_init(&dw9786->sd, client, &dw9786_ops);
-	dw9786->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
-	dw9786->sd.internal_ops = &dw9786_int_ops;
-
-	ret = dw9786_init_controls(dw9786);
-	if (ret)
-		goto err_cleanup;
-
-#if IS_ENABLED(CONFIG_MEDIA_CONTROLLER)
-	ret = media_entity_pads_init(&dw9786->sd.entity, 0, NULL);
-	if (ret < 0)
-		goto err_cleanup;
-
-	dw9786->sd.entity.function = MEDIA_ENT_F_LENS;
-#endif
-
-	ret = v4l2_async_register_subdev(&dw9786->sd);
-	if (ret < 0)
-		goto err_cleanup;
-
-	dw9786->is_suspending = false;
-	dw9786->client = NULL;
-	LOG_INF("-\n");
-
-	return 0;
-
-err_cleanup:
-	dw9786_subdev_cleanup(dw9786);
-	return ret;
-}
-
-static void dw9786_remove(struct i2c_client *client)
-{
-	struct v4l2_subdev *sd = i2c_get_clientdata(client);
-	struct dw9786_device *dw9786 = sd_to_dw9786_vcm(sd);
-
-	LOG_INF("+\n");
-
-	dw9786_subdev_cleanup(dw9786);
-
-	LOG_INF("-\n");
-}
-
-static const struct i2c_device_id dw9786_id_table[] = {
-	{ DW9786_NAME, 0 },
-	{ },
-};
-MODULE_DEVICE_TABLE(i2c, dw9786_id_table);
-
-static const struct of_device_id dw9786_of_table[] = {
-	{ .compatible = "oplus,dw9786" },
-	{ },
-};
-MODULE_DEVICE_TABLE(of, dw9786_of_table);
-
-static struct i2c_driver dw9786_i2c_driver = {
-	.driver = {
-		.name = DW9786_NAME,
-		.of_match_table = dw9786_of_table,
-	},
-	.probe  = dw9786_probe,
-	.remove = dw9786_remove,
-	.id_table = dw9786_id_table,
-};
-
-module_i2c_driver(dw9786_i2c_driver);
-
-MODULE_AUTHOR("XXX");
-MODULE_DESCRIPTION("DW9786 VCM driver");
-MODULE_LICENSE("GPL v2");
diff --git a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/Makefile b/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/Makefile
deleted file mode 100644
index b30a03c8..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Makefile for misc devices that really don't fit anywhere else.
-#
-
-# ccflags-y += -I$(DEVICE_MODULES_PATH)/drivers/misc/mediatek/sensor/2.0/core
-# ccflags-y += -I$(DEVICE_MODULES_PATH)/drivers/misc/mediatek/include/mt-plat/
-ccflags-y += -I$(DEVICE_MODULES_PATH)/drivers/misc/mediatek/
-oplus_camera_ois_dw9786-objs := dw9786.o dw9786_if.o adaptor-i2c.o
-obj-m += oplus_camera_ois_dw9786.o
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/adaptor-i2c.c b/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/adaptor-i2c.c
deleted file mode 100644
index ea7bc922..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/adaptor-i2c.c
+++ /dev/null
@@ -1,506 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-// Copyright (c) 2019 MediaTek Inc.
-
-#include 
-#include 
-
-#include "adaptor-i2c.h"
-
-#define MAX_BUF_SIZE 511
-#define MAX_MSG_NUM_U8 (MAX_BUF_SIZE / 3)
-#define MAX_MSG_NUM_U16 (MAX_BUF_SIZE / 4)
-#define MAX_VAL_NUM_U8 (MAX_BUF_SIZE - 2)
-#define MAX_VAL_NUM_U16 ((MAX_BUF_SIZE - 2) >> 1)
-
-struct cache_wr_regs_u8 {
-	u8 buf[MAX_BUF_SIZE];
-	struct i2c_msg msg[MAX_MSG_NUM_U8];
-};
-
-struct cache_wr_regs_u16 {
-	u8 buf[MAX_BUF_SIZE];
-	struct i2c_msg msg[MAX_MSG_NUM_U16];
-};
-
-int adaptor_i2c_rd_u8(struct i2c_client *i2c_client, u16 addr, u16 reg, u8 *val)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg[0].addr = addr;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = sizeof(buf);
-
-	msg[1].addr = addr;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 1;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return ret;
-	}
-
-	*val = buf[0];
-
-	return 0;
-}
-
-int adaptor_i2c_rd_u16(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u16 *val)
-{
-	int ret;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg[0].addr = addr;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = sizeof(buf);
-
-	msg[1].addr = addr;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 2;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return ret;
-	}
-
-	*val = ((u16)buf[0] << 8) | buf[1];
-
-	return 0;
-}
-
-int adaptor_i2c_rd_u32(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u32 *val)
-{
-	int ret;
-	u8 buf[4];
-	struct i2c_msg msg[2];
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg[0].addr = addr;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = 2;
-
-	msg[1].addr = addr;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-	msg[1].buf = buf;
-	msg[1].len = 4;
-
-	ret = i2c_transfer(i2c_client->adapter, msg, 2);
-	if (ret < 0) {
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-		return ret;
-	}
-
-	*val = (u32)(buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
-
-	return 0;
-}
-
-int adaptor_i2c_rd_p8(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		      u8 *p_vals, u32 n_vals)
-{
-	int ret, cnt, total, recv, reg_b;
-	u8 buf[2];
-	struct i2c_msg msg[2];
-	u8 *pbuf;
-
-	recv = 0;
-	total = n_vals;
-	pbuf = p_vals;
-	reg_b = reg;
-
-	msg[0].addr = addr;
-	msg[0].flags = i2c_client->flags;
-	msg[0].buf = buf;
-	msg[0].len = sizeof(buf);
-
-	msg[1].addr = addr;
-	msg[1].flags = i2c_client->flags | I2C_M_RD;
-
-	while (recv < total) {
-		cnt = total - recv;
-		if (cnt > MAX_VAL_NUM_U8)
-			cnt = MAX_VAL_NUM_U8;
-
-		buf[0] = reg_b >> 8;
-		buf[1] = reg_b & 0xff;
-
-		msg[1].buf = pbuf;
-		msg[1].len = cnt;
-
-		ret = i2c_transfer(i2c_client->adapter, msg, 2);
-		if (ret < 0) {
-			// dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-			// 	 ret);
-			return -EIO;
-		}
-
-		pbuf += cnt;
-		recv += cnt;
-		reg_b += cnt;
-	}
-
-	return ret;
-}
-
-int adaptor_i2c_wr_u8(struct i2c_client *i2c_client, u16 addr, u16 reg, u8 val)
-{
-	int ret;
-	u8 buf[3];
-	struct i2c_msg msg;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-	buf[2] = val;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-	msg.len = sizeof(buf);
-
-	ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-	if (ret < 0)
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-
-	return ret;
-}
-
-int adaptor_i2c_wr_u16(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u16 val)
-{
-	int ret;
-	u8 buf[4];
-	struct i2c_msg msg;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-	buf[2] = val >> 8;
-	buf[3] = val & 0xff;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-	msg.len = sizeof(buf);
-
-	ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-	if (ret < 0)
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-
-	return ret;
-}
-
-int adaptor_i2c_wr_u32(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u32 val)
-{
-	int ret;
-	u8 buf[6];
-	struct i2c_msg msg;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-	buf[2] = (val >> 24) & 0xff;
-	buf[3] = (val >> 16) & 0xff;
-	buf[4] = (val >> 8) & 0xff;
-	buf[5] = val & 0xff;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-	msg.len = sizeof(buf);
-
-	ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-	if (ret < 0)
-		dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n", ret);
-
-	return ret;
-}
-
-int adaptor_i2c_wr_p8(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		      u8 *p_vals, u32 n_vals)
-{
-	u8 *buf, *pbuf, *pdata;
-	struct i2c_msg msg;
-	int ret, sent, total, cnt;
-
-	buf = kmalloc(MAX_BUF_SIZE, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	sent = 0;
-	total = n_vals;
-	pdata = p_vals;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-
-	while (sent < total) {
-		cnt = total - sent;
-		if (cnt > MAX_VAL_NUM_U8)
-			cnt = MAX_VAL_NUM_U8;
-
-		pbuf = buf + 2;
-		memcpy(pbuf, pdata, cnt);
-
-		msg.len = 2 + cnt;
-
-		ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-		if (ret < 0) {
-			dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-				 ret);
-			kfree(buf);
-			return -EIO;
-		}
-
-		sent += cnt;
-		pdata += cnt;
-	}
-
-	kfree(buf);
-
-	return 0;
-}
-
-int adaptor_i2c_wr_p16(struct i2c_client *i2c_client, u16 addr, u16 reg,
-		       u16 *p_vals, u32 n_vals)
-{
-	u8 *buf, *pbuf;
-	u16 *pdata;
-	struct i2c_msg msg;
-	int i, ret, sent, total, cnt;
-
-	buf = kmalloc(MAX_BUF_SIZE, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	sent = 0;
-	total = n_vals;
-	pdata = p_vals;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-
-	while (sent < total) {
-		cnt = total - sent;
-		if (cnt > MAX_VAL_NUM_U16)
-			cnt = MAX_VAL_NUM_U16;
-
-		pbuf = buf + 2;
-
-		for (i = 0; i < cnt; i++) {
-			pbuf[0] = pdata[0] >> 8;
-			pbuf[1] = pdata[0] & 0xff;
-			pdata++;
-			pbuf += 2;
-		}
-
-		msg.len = 2 + (cnt << 1);
-
-		ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-		if (ret < 0) {
-			dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-				 ret);
-			kfree(buf);
-			return -EIO;
-		}
-
-		sent += cnt;
-	}
-
-	kfree(buf);
-
-	return 0;
-}
-
-int adaptor_i2c_wr_seq_p8(struct i2c_client *i2c_client, u16 addr, u16 reg,
-			  u8 *p_vals, u32 n_vals)
-{
-	u8 *buf, *pbuf, *pdata;
-	struct i2c_msg msg;
-	int ret, sent, total, cnt;
-
-	buf = kmalloc(MAX_BUF_SIZE, GFP_KERNEL);
-	if (!buf)
-		return -ENOMEM;
-
-	sent = 0;
-	total = n_vals;
-	pdata = p_vals;
-
-	buf[0] = reg >> 8;
-	buf[1] = reg & 0xff;
-
-	msg.addr = addr;
-	msg.flags = i2c_client->flags;
-	msg.buf = buf;
-
-	while (sent < total) {
-		cnt = total - sent;
-		if (cnt > MAX_VAL_NUM_U8)
-			cnt = MAX_VAL_NUM_U8;
-
-		buf[0] = reg >> 8;
-		buf[1] = reg & 0xff;
-
-		pbuf = buf + 2;
-		memcpy(pbuf, pdata, cnt);
-
-		msg.len = 2 + cnt;
-
-		ret = i2c_transfer(i2c_client->adapter, &msg, 1);
-		if (ret < 0) {
-			dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-				 ret);
-			kfree(buf);
-			return -EIO;
-		}
-
-		sent += cnt;
-		pdata += cnt;
-		reg += cnt;
-	}
-
-	kfree(buf);
-
-	return 0;
-}
-
-int adaptor_i2c_wr_regs_u8(struct i2c_client *i2c_client, u16 addr, u16 *list,
-			   u32 len)
-{
-	struct cache_wr_regs_u8 *pmem;
-	struct i2c_msg *pmsg;
-	u8 *pbuf;
-	u16 *plist;
-	int i, ret, sent, total, cnt;
-
-	pmem = kmalloc(sizeof(*pmem), GFP_KERNEL);
-	if (!pmem)
-		return -ENOMEM;
-
-	/* each msg contains 3 bytes: addr(u16) + val(u8) */
-	sent = 0;
-	total = len >> 1;
-	plist = list;
-
-	while (sent < total) {
-		cnt = total - sent;
-		if (cnt > ARRAY_SIZE(pmem->msg))
-			cnt = ARRAY_SIZE(pmem->msg);
-
-		pbuf = pmem->buf;
-		pmsg = pmem->msg;
-
-		for (i = 0; i < cnt; i++) {
-			pbuf[0] = plist[0] >> 8;
-			pbuf[1] = plist[0] & 0xff;
-			pbuf[2] = plist[1] & 0xff;
-
-			pmsg->addr = addr;
-			pmsg->flags = i2c_client->flags;
-			pmsg->len = 3;
-			pmsg->buf = pbuf;
-
-			plist += 2;
-			pbuf += 3;
-			pmsg++;
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmem->msg, cnt);
-		if (ret != cnt) {
-			dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-				 ret);
-			kfree(pmem);
-			return -EIO;
-		}
-
-		sent += cnt;
-	}
-
-	kfree(pmem);
-
-	return 0;
-}
-
-int adaptor_i2c_wr_regs_u16(struct i2c_client *i2c_client, u16 addr, u16 *list,
-			    u32 len)
-{
-	struct cache_wr_regs_u16 *pmem;
-	struct i2c_msg *pmsg;
-	u8 *pbuf;
-	u16 *plist;
-	int i, ret, sent, total, cnt;
-
-	pmem = kmalloc(sizeof(*pmem), GFP_KERNEL);
-	if (!pmem)
-		return -ENOMEM;
-
-	/* each msg contains 4 bytes: addr(u16) + val(u16) */
-	sent = 0;
-	total = len >> 1;
-	plist = list;
-
-	while (sent < total) {
-		cnt = total - sent;
-		if (cnt > ARRAY_SIZE(pmem->msg))
-			cnt = ARRAY_SIZE(pmem->msg);
-
-		pbuf = pmem->buf;
-		pmsg = pmem->msg;
-
-		for (i = 0; i < cnt; i++) {
-			pbuf[0] = plist[0] >> 8;
-			pbuf[1] = plist[0] & 0xff;
-			pbuf[2] = plist[1] >> 8;
-			pbuf[3] = plist[1] & 0xff;
-
-			pmsg->addr = addr;
-			pmsg->flags = i2c_client->flags;
-			pmsg->len = 4;
-			pmsg->buf = pbuf;
-
-			plist += 2;
-			pbuf += 4;
-			pmsg++;
-		}
-
-		ret = i2c_transfer(i2c_client->adapter, pmem->msg, cnt);
-		if (ret != cnt) {
-			dev_info(&i2c_client->dev, "i2c transfer failed (%d)\n",
-				 ret);
-			kfree(pmem);
-			return -EIO;
-		}
-
-		sent += cnt;
-	}
-
-	kfree(pmem);
-
-	return 0;
-}
diff --git a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/adaptor-i2c.h b/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/adaptor-i2c.h
deleted file mode 100644
index 843b3e3f..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/adaptor-i2c.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/* Copyright (c) 2019 MediaTek Inc. */
-
-#ifndef __ADAPTOR_I2C_H__
-#define __ADAPTOR_I2C_H__
-
-int adaptor_i2c_rd_u8(struct i2c_client *i2c_client, u16 addr, u16 reg, u8 *val);
-int adaptor_i2c_rd_u16(struct i2c_client *i2c_client, u16 addr, u16 reg, u16 *val);
-int adaptor_i2c_rd_u32(struct i2c_client *i2c_client, u16 addr, u16 reg, u32 *val);
-int adaptor_i2c_rd_p8(struct i2c_client *i2c_client, u16 addr, u16 reg, u8 *p_vals, u32 n_vals);
-int adaptor_i2c_wr_u8(struct i2c_client *i2c_client, u16 addr, u16 reg, u8 val);
-int adaptor_i2c_wr_u16(struct i2c_client *i2c_client, u16 addr, u16 reg, u16 val);
-int adaptor_i2c_wr_u32(struct i2c_client *i2c_client, u16 addr, u16 reg, u32 val);
-int adaptor_i2c_wr_p8(struct i2c_client *i2c_client, u16 addr, u16 reg, u8 *p_vals, u32 n_vals);
-int adaptor_i2c_wr_p16(struct i2c_client *i2c_client, u16 addr, u16 reg, u16 *p_vals, u32 n_vals);
-int adaptor_i2c_wr_seq_p8(struct i2c_client *i2c_client, u16 addr, u16 reg, u8 *p_vals, u32 n_vals);
-int adaptor_i2c_wr_regs_u8(struct i2c_client *i2c_client, u16 addr, u16 *list, u32 len);
-int adaptor_i2c_wr_regs_u16(struct i2c_client *i2c_client, u16 addr, u16 *list, u32 len);
-
-#endif
diff --git a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786.c b/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786.c
deleted file mode 100755
index 9a974c37..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786.c
+++ /dev/null
@@ -1,1536 +0,0 @@
-/**************************************************************
-* Copyright (C), 2008-2024, OPLUS Mobile Comm Corp., Ltd.
-* VENDOR_EDIT
-* File: ois_dw9786.c
-* Description: OIS Function Implement
-* Version: 1.0
-* Date : 2024/02/28
-* Author: Wang Jianwei
-* ----------------------Revision History-----------------------
-*                     
-* Wang Jianwei   2024/02/28       1.0     OIS Function Implement
-****************************************************************/
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "hf_manager.h"
-#include "hf_sensor_io.h"
-#include "../ois_def.h"
-#include "dw9786_if.h"
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#define DW9786_NAME "ois_dw9786"
-
-#define GYRO_REG_MONITOR
-#define DW9786_EIS_DATA_GROUP_SIZE (1)
-#define DW9786_EIS_DATA_PACKET_SIZE (44)
-
-#define INPUT_MIN (4000)
-#define INPUT_MAX (28000)
-#define OUTPUT_MIN (-8192)
-#define OUTPUT_MAX (8191)
-#define GYRO_GAIN_X_GOLDEN 0x1BFE
-#define GYRO_GAIN_Y_GOLDEN 0x2212
-
-struct dw9786_device *dw9786;
-extern struct mutex dw9786_idle_mutex;
-
-static struct sensor_info support_sensors[] = {
-	{
-		.sensor_type = SENSOR_TYPE_OIS2,
-		.gain = 1,
-		.name = "ultra_tele_ois",
-		.vendor = "oplus"
-	},
-};
-
-static int g_gyro_offset[] = {0xdc, 0x18};
-static unsigned short g_gyro_gain_x = 0;
-static unsigned short g_gyro_gain_y = 0;
-static int g_still_en = 0;
-static int dbg = 0;
-static int g_gyro_cal = 0;
-static struct hf_client *gyro_client = NULL;
-static int buffer_dump = 0;
-static int64_t g_last_time = 0;
-static uint16_t gyro_gain_x = 0;
-static uint16_t gyro_gain_y = 0;
-static bool sleep_mode_state = false;
-extern struct mutex dw9786_mutex;
-static struct semaphore dw9786_power_on_sem;
-static atomic_t dw9786_power_on_sem_once = ATOMIC_INIT(0);
-static atomic_t dw9786_shake_state = ATOMIC_INIT(0);
-bool is_do_cali = false;
-
-#define OIS_DATA_NUMBER 32
-struct ois_info {
-	int32_t is_supported;
-	int32_t mode; /* ON/OFF */
-	int32_t samples;
-	int32_t x_shifts[OIS_DATA_NUMBER];
-	int32_t y_shifts[OIS_DATA_NUMBER];
-	int64_t timestamps[OIS_DATA_NUMBER];
-};
-
-struct mtk_ois_pos_info {
-	struct ois_info *p_ois_info;
-};
-
-/* OIS control interface of MTK, not actually used */
-#define VIDIOC_MTK_S_OIS_MODE _IOW('V', BASE_VIDIOC_PRIVATE + 2, int32_t)
-#define VIDIOC_MTK_G_OIS_POS_INFO _IOWR('V', BASE_VIDIOC_PRIVATE + 3, struct mtk_ois_pos_info)
-
-static inline struct dw9786_device *to_dw9786_ois(struct v4l2_ctrl *ctrl)
-{
-	return container_of(ctrl->handler, struct dw9786_device, ctrls);
-}
-
-static inline struct dw9786_device *subdev_to_dw9786_ois(struct v4l2_subdev *subdev)
-{
-	return container_of(subdev, struct dw9786_device, subdev);
-}
-
-static int dw9786_release(struct dw9786_device *dw9786)
-{
-	return 0;
-}
-
-static struct i2c_ops_info ops_inf = {"dw9786", 0, 0};
-
-#define SHOW(buf, len, fmt, ...) { \
-	len += snprintf(buf + len, PAGE_SIZE - len, fmt, ##__VA_ARGS__); \
-}
-
-static ssize_t dw9786_i2c_ops_show(struct device *dev, struct device_attribute *attr, char *buf)
-{
-	int len = 0;
-	SHOW(buf, len, "%s i2c read 0x%08x = 0x%08x\n", ops_inf.name, ops_inf.RegAddr, ops_inf.RegData);
-
-	return len;
-}
-
-
-static ssize_t dw9786_i2c_ops_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
-{
-	char delim[] = " ";
-	char *token = NULL;
-	char *sbuf = kzalloc(sizeof(char) * (count + 1), GFP_KERNEL);
-	char *s = sbuf;
-	int ret;
-	unsigned int num_para = 0;
-	char *arg[DBG_ARG_IDX_MAX_NUM];
-	u32 val;
-	u32 reg;
-	unsigned short tmp_val = 0;
-	struct i2c_client *client = i2c_verify_client(dev);
-	if (!client) {
-		LOG_ERR("client is null!");
-	}
-
-	ops_inf.RegAddr = 0;
-	ops_inf.RegData = 0;
-
-	if (!sbuf) {
-		goto ERR_DEBUG_OPS_STORE;
-	}
-
-	memcpy(sbuf, buf, count);
-
-	token = strsep(&s, delim);
-	while (token != NULL && num_para < DBG_ARG_IDX_MAX_NUM) {
-		if (strlen(token)) {
-			arg[num_para] = token;
-			num_para++;
-		}
-
-		token = strsep(&s, delim);
-	}
-
-	if (num_para > DBG_ARG_IDX_MAX_NUM) {
-		LOG_ERR("Wrong command parameter number %u\n", num_para);
-		goto ERR_DEBUG_OPS_STORE;
-	}
-	ret = kstrtouint(arg[DBG_ARG_IDX_I2C_ADDR], 0, ®);
-	if (ret) {
-		goto ERR_DEBUG_OPS_STORE;
-	}
-	ops_inf.RegAddr = reg;
-
-	if (num_para == DBG_ARG_IDX_MAX_NUM) {
-		ret = kstrtouint(arg[DBG_ARG_IDX_I2C_DATA], 0, &val);
-		if (ret) {
-			goto ERR_DEBUG_OPS_STORE;
-		}
-		ops_inf.RegData = val;
-
-		ret = I2C_WRITE_16BIT_OIS(ops_inf.RegAddr, (unsigned short)ops_inf.RegData);
-		LOG_INF("i2c write 0x%08x = 0x%08x ret = %d\n", ops_inf.RegAddr, ops_inf.RegData, ret);
-	}
-
-	ret = I2C_READ_16BIT_OIS(ops_inf.RegAddr, &tmp_val);
-	ops_inf.RegData = (unsigned int)tmp_val;
-	LOG_INF("i2c read 0x%08x = 0x%08x  ret = %d\n", ops_inf.RegAddr, ops_inf.RegData, ret);
-
-ERR_DEBUG_OPS_STORE:
-	kfree(sbuf);
-	LOG_ERR("exit\n");
-
-	return count;
-}
-static DEVICE_ATTR_RW(dw9786_i2c_ops);
-
-static ssize_t dw9786_i2c_ops32_show(struct device *dev,
-			   struct device_attribute *attr, char *buf)
-{
-	int len = 0;
-	SHOW(buf, len, "%s i2c read 0x%08x = 0x%08x\n", ops_inf.name, ops_inf.RegAddr, ops_inf.RegData);
-
-	return len;
-}
-
-
-static ssize_t dw9786_i2c_ops32_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
-{
-	char delim[] = " ";
-	char *token = NULL;
-	char *sbuf = kzalloc(sizeof(char) * (count + 1), GFP_KERNEL);
-	char *s = sbuf;
-	int ret;
-	unsigned int num_para = 0;
-	char *arg[DBG_ARG_IDX_MAX_NUM];
-	u32 val;
-	u32 reg;
-	struct i2c_client *client = i2c_verify_client(dev);
-	if (!client) {
-		LOG_ERR("client is null!");
-	}
-
-	ops_inf.RegAddr = 0;
-	ops_inf.RegData = 0;
-
-	if (!sbuf) {
-		goto ERR_DEBUG_OPS_STORE;
-	}
-
-	memcpy(sbuf, buf, count);
-
-	token = strsep(&s, delim);
-	while (token != NULL && num_para < DBG_ARG_IDX_MAX_NUM) {
-		if (strlen(token)) {
-			arg[num_para] = token;
-			num_para++;
-		}
-
-		token = strsep(&s, delim);
-	}
-
-	if (num_para > DBG_ARG_IDX_MAX_NUM) {
-		LOG_ERR("Wrong command parameter number %u\n", num_para);
-		goto ERR_DEBUG_OPS_STORE;
-	}
-	ret = kstrtouint(arg[DBG_ARG_IDX_I2C_ADDR], 0, ®);
-	if (ret) {
-		goto ERR_DEBUG_OPS_STORE;
-	}
-	ops_inf.RegAddr = reg;
-
-	if (num_para == DBG_ARG_IDX_MAX_NUM) {
-		ret = kstrtouint(arg[DBG_ARG_IDX_I2C_DATA], 0, &val);
-		if (ret) {
-			goto ERR_DEBUG_OPS_STORE;
-		}
-		ops_inf.RegData = val;
-
-		ret = I2C_WRITE_32BIT_OIS(ops_inf.RegAddr, ops_inf.RegData);
-		LOG_INF("i2c write 0x%08x = 0x%08x ret = %d\n", ops_inf.RegAddr, ops_inf.RegData, ret);
-	}
-
-	ret = I2C_READ_32BIT_OIS(ops_inf.RegAddr, &(ops_inf.RegData));
-	LOG_INF("i2c read 0x%08x = 0x%08x  ret = %d\n", ops_inf.RegAddr, ops_inf.RegData, ret);
-
-
-ERR_DEBUG_OPS_STORE:
-	kfree(sbuf);
-	LOG_ERR("exit\n");
-
-	return count;
-}
-static DEVICE_ATTR_RW(dw9786_i2c_ops32);
-
-static ssize_t dw9786_dbg_show(struct device *dev, struct device_attribute *attr, char *buf) {
-	return scnprintf(buf, PAGE_SIZE, "%d\n", dbg);
-}
-
-static ssize_t dw9786_dbg_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) {
-	unsigned long data;
-	int ret;
-	ret = kstrtoul(buf, 10, &data);
-	if (ret) {
-		LOG_ERR("kstrtoul failed %d", ret);
-		return count;
-	}
-	dbg = data & 0x1;
-	buffer_dump = data & 0x2;
-	return count;
-}
-static DEVICE_ATTR_RW(dw9786_dbg);
-
-static int dw9786_set_ctrl(struct v4l2_ctrl *ctrl)
-{
-	/* struct dw9786_device *dw9786 = to_dw9786_ois(ctrl); */
-	return 0;
-}
-
-static const struct v4l2_ctrl_ops dw9786_ois_ctrl_ops = {
-	.s_ctrl = dw9786_set_ctrl,
-};
-
-static int dw9786_open(struct v4l2_subdev *subdev, struct v4l2_subdev_fh *fh)
-{
-	int ret;
-
-	LOG_DBG(dbg, "%s\n", __func__);
-
-	ret = pm_runtime_get_sync(subdev->dev);
-	if (ret < 0) {
-		pm_runtime_put_noidle(subdev->dev);
-		return ret;
-	}
-
-	return 0;
-}
-
-static int dw9786_close(struct v4l2_subdev *subdev, struct v4l2_subdev_fh *fh)
-{
-	LOG_DBG(dbg, "%s\n", __func__);
-
-	pm_runtime_put(subdev->dev);
-
-	return 0;
-}
-
-static long dw9786_ops_core_ioctl(struct v4l2_subdev *subdev, unsigned int cmd, void *arg)
-{
-	int ret = 0;
-
-	switch (cmd) {
-	case VIDIOC_MTK_S_OIS_MODE: {
-		int *ois_mode = arg;
-
-		if (*ois_mode)
-			LOG_DBG(dbg, "VIDIOC_MTK_S_OIS_MODE Enable\n");
-		else
-			LOG_DBG(dbg, "VIDIOC_MTK_S_OIS_MODE Disable\n");
-	} break;
-
-	case VIDIOC_MTK_G_OIS_POS_INFO: {
-		struct mtk_ois_pos_info *info = arg;
-		struct ois_info pos_info;
-		int i = 0;
-
-		memset(&pos_info, 0, sizeof(struct ois_info));
-
-		/* To Do */
-		pos_info.mode = 1;
-
-		pos_info.samples = OIS_DATA_NUMBER;
-		pos_info.is_supported = 1;
-		for (i = 0; i < OIS_DATA_NUMBER; i++) {
-			pos_info.x_shifts[i] = 0xab + i;
-			pos_info.y_shifts[i] = 0xab + i;
-			pos_info.timestamps[i] = 123 + i;
-		}
-
-		if (copy_to_user((void *)info->p_ois_info, &pos_info,
-						 sizeof(pos_info)))
-			ret = -EFAULT;
-	} break;
-
-	default:
-		ret = -ENOIOCTLCMD;
-		break;
-	}
-
-	return ret;
-}
-
-#ifdef GYRO_REG_MONITOR
-
-static struct task_struct *reg_monitor_task = NULL;
-
-static int reg_monitor_kthread(void *arg) {
-	struct i2c_client *client = (struct i2c_client *)arg;
-	int16_t gyro_data[2];
-	int16_t acc_data[2];
-	int16_t gyro_offset[2];
-	uint16_t gyro_gain[2];
-	int16_t hall[2];
-	int16_t target[2];
-	uint16_t stable_gain[2];
-	int16_t gyro_filter_out[2];
-	uint16_t tripod_mode;
-	struct v4l2_subdev *subdev;
-	struct dw9786_device *dw9786;
-
-	subdev = i2c_get_clientdata(client);
-	if (subdev == NULL) {
-		LOG_ERR("subdev is NULL");
-		return -1;
-	}
-	dw9786 = subdev_to_dw9786_ois(subdev);
-	if (dw9786 == NULL) {
-		LOG_ERR("dw9786 is NULL");
-		return -1;
-	}
-
-	while(!kthread_should_stop()) {
-		I2C_READ_16BIT_OIS(DW9786_GYRO_RAW_X_ADDR, &gyro_data[0]);
-		I2C_READ_16BIT_OIS(DW9786_GYRO_RAW_Y_ADDR, &gyro_data[1]);
-		I2C_READ_16BIT_OIS(0xB1E0, &acc_data[0]);
-		I2C_READ_16BIT_OIS(0xB2E0, &acc_data[1]);
-
-		if (g_still_en) {
-			I2C_READ_16BIT_OIS(0xB80C, &gyro_offset[0]);
-			I2C_READ_16BIT_OIS(0xB80E, &gyro_offset[1]);
-
-			I2C_READ_16BIT_OIS(0xB806, &gyro_gain[0]);
-			I2C_READ_16BIT_OIS(0xB808, &gyro_gain[1]);
-
-			I2C_READ_16BIT_OIS(0xB102, &hall[0]);
-			I2C_READ_16BIT_OIS(0xB202, &hall[1]);
-
-			I2C_READ_16BIT_OIS(0xB1B8, &target[0]);
-			I2C_READ_16BIT_OIS(0xB2B8, &target[1]);
-
-			I2C_READ_16BIT_OIS(0xB082, &tripod_mode);
-
-			I2C_READ_16BIT_OIS(0xB1C8, &stable_gain[0]);
-			I2C_READ_16BIT_OIS(0xB2C8, &stable_gain[1]);
-
-			I2C_READ_16BIT_OIS(0xB1B0, &gyro_filter_out[0]);
-			I2C_READ_16BIT_OIS(0xB2B0, &gyro_filter_out[1]);
-			LOG_DBG(dbg, "gyro data: %d %d acc data: %d %d gyro offset: %d %d gyro gain: %d %d "
-					"hall: %d %d target: %d %d tripod mode: %d stable gain: %d %d gyro filter out: %d %d",
-					gyro_data[0], gyro_data[1], acc_data[0], acc_data[1], gyro_offset[0], gyro_offset[1],
-					gyro_gain[0], gyro_gain[1], hall[0], hall[1], target[0], target[1], tripod_mode,
-					stable_gain[0], stable_gain[1], gyro_filter_out[0], gyro_filter_out[1]);
-		}
-		msleep(30);
-	}
-	LOG_ERR("reg_monitor_kthread return...");
-	return 0;
-}
-
-static int reg_monitor_thread_init(struct i2c_client *client)
-{
-	int err;
-
-	if (!dbg) {
-		return 0;
-	}
-
-	LOG_ERR("Kernel thread initalizing...\n");
-	reg_monitor_task = kthread_create(reg_monitor_kthread, client, "reg_monitor_kthread");
-	if (IS_ERR(reg_monitor_task)) {
-		LOG_ERR("Unable to start kernel thread./n");
-		err = PTR_ERR(reg_monitor_task);
-		reg_monitor_task = NULL;
-		return err;
-	}
-	wake_up_process(reg_monitor_task);
-	return 0;
-}
-static void __maybe_unused reg_monitor_thread_exit(void)
-{
-	if (reg_monitor_task) {
-		LOG_INF("exit reg_monitor_thread\n");
-		kthread_stop(reg_monitor_task);
-		LOG_INF("exit\n");
-	}
-}
-
-void big_to_little_endian(uint16_t *data)
-{
-	unsigned char table[2] = {0};
-	table[0] = (*data >> 8) & 0xff;
-	table[1] = *data & 0xff;
-	*data = table[1] << 8 | table[0];
-}
-
-static int dw9786_init(void *data)
-{
-	struct dw9786_device* dw9786 = (struct dw9786_device*)data;
-	struct i2c_client *client = v4l2_get_subdevdata(&dw9786->subdev);
-	int ret = 0;
-	uint16_t status;
-
-	LOG_ERR("E");
-	LOG_INF("dw9786_mutex: %p", &dw9786_mutex);
-	mutex_lock(&dw9786_mutex);
-	client->addr = DW9786_OIS_SLAVE_ADDR;
-	LOG_DBG(dbg, "%s i2c_client %p addr 0x%x", __func__, client, client->addr);
-
-	dw9786_device_reset();
-
-	if (dw9786->need_ois_on) {
-		dw9786_ois_on();
-	}
-	I2C_READ_16BIT_OIS(DW9786_STATUS_ADDR, &status);
-	LOG_INF("0xB020: 0x%04X\n", status);
-
-	ret =  I2C_READ_16BIT_OIS(DW9786_GYRO_GAIN_X, &gyro_gain_x);
-	if (ret < 0) {
-		LOG_ERR("read gyro gain X failed ret[%d]", ret);
-		gyro_gain_x = GYRO_GAIN_X_GOLDEN;
-	}
-	ret =  I2C_READ_16BIT_OIS(DW9786_GYRO_GAIN_Y, &gyro_gain_y);
-	if (ret < 0) {
-		LOG_ERR("read gyro gain Y failed ret[%d]", ret);
-		gyro_gain_x = GYRO_GAIN_Y_GOLDEN;
-	}
-	LOG_ERR("gyro gain [0x%04X, 0x%04X]", gyro_gain_x, gyro_gain_y);
-	sleep_mode_state = false;
-	g_still_en = 0;
-	LOG_ERR("X");
-	mutex_unlock(&dw9786_mutex);
-	if (atomic_inc_return(&dw9786_power_on_sem_once) == 1) {
-		up(&dw9786_power_on_sem);
-	}
-
-	return 0;
-}
-
-static int dw9786_power_on(struct dw9786_device *dw9786, bool need_ois_on)
-{
-	int ret = 0;
-	int ret1 = 0;
-	int err;
-	struct task_struct *dw9786_init_task;
-
-	LOG_ERR("E\n");
-
-	if (dw9786->vin == NULL || dw9786->iovdd == NULL || dw9786->afvdd == NULL) {
-		LOG_ERR("regulator is NULL");
-		return -1;
-	}
-
-	ret = regulator_enable(dw9786->iovdd);
-	ret1 = regulator_set_voltage(dw9786->iovdd, 1800000, 1800000);
-	if (ret < 0 || ret1 < 0) {
-		LOG_ERR("%s dw9786->iovdd set failed ret[%d] ret1[%d]", __func__,
-			   ret, ret1);
-		return -1;
-	}
-	LOG_INF("dw9786->iovdd set success ret[%d], ret1[%d]", ret, ret1);
-
-	ret = regulator_enable(dw9786->vin);
-	if (ret < 0 || ret1 < 0) {
-		LOG_ERR("%s dw9786->vin set failed ret[%d] ret1[%d]", __func__,
-			   ret, ret1);
-		return -1;
-	}
-	LOG_INF("dw9786->vin set success ret[%d], ret1[%d]", ret, ret1);
-
-	ret = regulator_enable(dw9786->oisvdd);
-	ret1 = regulator_set_voltage(dw9786->oisvdd, 3100000, 3100000);
-	if (ret < 0 || ret1 < 0) {
-		LOG_ERR("%s dw9786->oisvdd set failed ret[%d] ret1[%d]", __func__,
-			   ret, ret1);
-		return -1;
-	}
-	LOG_INF("dw9786->oisvdd set success ret[%d], ret1[%d]", ret, ret1);
-	mdelay(2);
-
-	ret = regulator_enable(dw9786->afvdd);
-	ret1 = regulator_set_voltage(dw9786->afvdd, 3100000, 3100000);
-	if (ret < 0 || ret1 < 0) {
-		LOG_ERR("%s dw9786->afvdd set failed ret[%d] ret1[%d]", __func__,
-			   ret, ret1);
-		return -1;
-	}
-	LOG_INF("dw9786->afvdd set success ret[%d], ret1[%d]", ret, ret1);
-
-	udelay(5000);
-
-	dw9786->need_ois_on = need_ois_on;
-	dw9786_init_task = kthread_create(dw9786_init, dw9786, "dw9786_init_kthread");
-	if (IS_ERR(dw9786_init_task)) {
-		LOG_INF("unable to start dw9786_init thread/n");
-		err = PTR_ERR(dw9786_init_task);
-		dw9786_init_task = NULL;
-		dw9786_init(dw9786);
-		return 0;
-	}
-	wake_up_process(dw9786_init_task);
-
-	LOG_ERR("X\n");
-	return 0;
-}
-
-static int dw9786_power_off(struct dw9786_device *dw9786)
-{
-	int ret;
-	uint16_t status;
-
-	LOG_ERR("%s E\n", __func__);
-	g_gyro_cal = 0;
-
-	if (dw9786->vin == NULL || dw9786->iovdd == NULL || dw9786->afvdd == NULL) {
-		LOG_ERR("regulator is NULL");
-		return -1;
-	}
-
-	ret = I2C_READ_16BIT_OIS(DW9786_CHIP_EN_ADDR, &status);
-	if (!(ret < 0) && (status != 0)) {
-		LOG_INF("OIS step power off");
-		I2C_WRITE_16BIT_OIS(DW9786_MODE_CONTROL_ADDR, 0x0001);    /* active mode */
-		mdelay(1);
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0002);    /* ois servo on */
-		mdelay(1);
-		I2C_WRITE_16BIT_OIS(DW9786_AF_SERVO_ON_CONTROL, 0x0002);    /* af servo on */
-		mdelay(5);
-		I2C_WRITE_16BIT_OIS(DW9786_TARGET_HALL_X_ADDR, -5000);
-		I2C_WRITE_16BIT_OIS(DW9786_TARGET_HALL_Y_ADDR, 5000);
-		mdelay(15);
-		I2C_WRITE_16BIT_OIS(DW9786_TARGET_HALL_X_ADDR, -6000);
-		I2C_WRITE_16BIT_OIS(DW9786_TARGET_HALL_Y_ADDR, 6000);
-		mdelay(15);
-	}
-
-	ret = dw9786_release(dw9786);
-	if (ret) {
-		LOG_ERR("dw9786 release failed!\n");
-	}
-
-	ret = regulator_disable(dw9786->afvdd);
-	if (ret) {
-		LOG_ERR("disable dw9786->afvdd failed!\n");
-		return ret;
-	}
-	LOG_INF("disable dw9786->afvdd success ret[%d]", ret);
-
-	ret = regulator_disable(dw9786->vin);
-	if (ret) {
-		LOG_ERR("disable dw9786->vin failed!\n");
-		return ret;
-	}
-	LOG_INF("disable dw9786->vin success ret[%d]", ret);
-
-	ret = regulator_disable(dw9786->oisvdd);
-	if (ret) {
-		LOG_ERR("disable dw9786->oisvdd failed!\n");
-		return ret;
-	}
-	LOG_INF("disable dw9786->oisvdd success ret[%d]", ret);
-
-	ret = regulator_disable(dw9786->iovdd);
-	if (ret) {
-		LOG_ERR("disable dw9786->iovdd failed!\n");
-		return ret;
-	}
-	LOG_INF("disable dw9786->iovdd success ret[%d]", ret);
-
-	LOG_ERR("%s X\n", __func__);
-	return ret;
-}
-#endif    /* GYRO_REG_MONITOR */
-
-static int dw9786_batch(struct hf_device *hfdev, int sensor_type,
-						 int64_t delay, int64_t latency)
-{
-	pr_debug("%s id:%d delay:%lld latency:%lld\n", __func__, sensor_type, delay, latency);
-	return 0;
-}
-
-static short convert(unsigned short value)
-{
-	short l_value = 0;
-	l_value = (short)(value + 65536L);
-	return l_value;
-}
-
-int map_value(int value) {
-	int mapped_value = 0;
-	int64_t format_value = 0;
-	if (value == 0) {
-		LOG_ERR("map_value input error %d!\n", value);
-		return mapped_value;
-	}
-	format_value = (value - 16000) << 12;
-	format_value = format_value *125LL /3LL;
-	/* Map the ratio to the output range -2048*1000000~2048*1000000 */
-	mapped_value = (int)(format_value);
-	LOG_DBG(dbg, "%s value =%d ,format_value = %lld ,mapped_value =%d \n", __func__, value, format_value, mapped_value);
-
-	return mapped_value;
-}
-
-int dw9786_hall_convert(uint16_t value) {
-	int mapped_value = 0;
-	if (value > 8191) {
-		mapped_value = value - 65536;
-	} else {
-		mapped_value = value;
-	}
-
-	return mapped_value;
-}
-
-static int dw9786_enable(struct hf_device *hfdev, int sensor_type, int en)
-{
-	struct i2c_client *client;
-	struct v4l2_subdev *subdev;
-	struct dw9786_device *dw9786;
-	int ret = 0;
-
-	if (0 == hfdev) {
-		LOG_ERR("%s hfdev is null!! return error", __func__);
-		return -1;
-	}
-	LOG_DBG(dbg, "%s dw9786 hfdev[%p]", __func__, hfdev);
-	client = hf_device_get_private_data(hfdev);
-	subdev = i2c_get_clientdata(client);
-	dw9786 = subdev_to_dw9786_ois(subdev);
-
-	LOG_ERR("%s sensor_type[%d] en[%d]", __func__, sensor_type, en);
-	if (en) {
-		ret = dw9786_power_on(dw9786, true);
-		if (ret < 0) {
-			return -1;
-		}
-		g_last_time = 0;
-#ifdef GYRO_REG_MONITOR
-		reg_monitor_thread_init(client);
-#endif
-	} else {
-#ifdef GYRO_REG_MONITOR
-		reg_monitor_thread_exit();
-#endif
-		g_last_time = 0;
-		dw9786_power_off(dw9786);
-	}
-
-	return 0;
-}
-
-int dw9786_config_cali(struct hf_device *hfdev, int sensor_type, void *data, uint8_t length)
-{
-	struct i2c_client *client;
-	int ret = 0;
-	unsigned short offset_x, offset_y;
-	mois_config_data *config;
-	uint16_t status = 0;
-
-	client = hf_device_get_private_data(hfdev);
-	if (!client) {
-		LOG_ERR("i2c client is null");
-		return -1;
-	}
-	LOG_DBG(dbg, "sensor_type: %d, length: %d, mois_config_data size: %zd", sensor_type, length, sizeof(mois_config_data));
-	if (data) {
-		config = (mois_config_data *)data;
-	} else {
-		LOG_ERR("config data is null");
-		return -1;
-	}
-	LOG_INF("config->mode: %d", config->mode);
-
-	switch (config->mode) {
-	case AK_Centering: {
-		LOG_INF("into AK_Centering mode");
-		ret = dw9786_servo_on();
-		if (ret < 0) {
-			LOG_ERR("enter to servo on mode failed, ret: %d", ret);
-			return ret;
-		}
-		int ret = dw9786_set_hall(0, 0);
-		if (ret < 0) {
-			LOG_ERR("enter to AK_Centering failed, ret: %d", ret);
-			return -1;
-		}
-		LOG_INF("AK_Centering on success");
-	} break;
-	case AK_WorkingMode: {
-		LOG_INF("into AK_Working mode");
-		LOG_INF("this mode to do");
-	} break;
-	case AK_StandbyMode: {
-		LOG_INF("into AK_Standby mode");
-		LOG_INF("this mode to do");
-	} break;
-	case AK_EnableMOIS: {
-		if (sleep_mode_state) {
-			ret = dw9786_idle_mode();
-			if (ret < 0) {
-				LOG_ERR("enter idle mode failed, ret: %d", ret);
-				return -1;
-			}
-			sleep_mode_state = false;
-			LOG_INF("enter idle mode success");
-		}
-	}
-	fallthrough;
-	case AK_Still: {
-		LOG_INF("into ois on mode");
-		ret = dw9786_ois_on();
-		if (ret < 0) {
-			LOG_ERR("ois on failed, ret: %d", ret);
-			return -1;
-		}
-		g_still_en = 1;
-		LOG_INF("ois on success");
-	} break;
-	case AK_Movie: {
-		g_still_en = 1;
-		return 0;
-		if (sleep_mode_state) {
-			ret = dw9786_idle_mode();
-			if (ret < 0) {
-				LOG_ERR("enter idle mode failed, ret: %d", ret);
-				return 0;
-			}
-			sleep_mode_state = false;
-			LOG_INF("enter idle mode success");
-		}
-		LOG_INF("into movie on mode");
-		ret = dw9786_movie_mode_on();
-		if (ret < 0) {
-			LOG_ERR("movie on failed, ret: %d", ret);
-			return 0;
-		}
-		g_still_en = 1;
-		LOG_INF("movie on success");
-	} break;
-	case AK_DisableMOIS:
-	fallthrough;
-	case AK_CenteringOn: {
-		LOG_INF("into center on mode");
-		ret = dw9786_servo_on();
-		if (ret < 0) {
-			LOG_ERR("center_on failed, ret: %d", ret);
-		}
-		ret = dw9786_set_hall(0, 0);
-		if (ret < 0) {
-			LOG_ERR("center_on failed, ret: %d", ret);
-			return 0;
-		}
-		g_still_en = 0;
-		LOG_INF("center on success");
-	} break;
-	case AK_SleepMode: {
-		LOG_INF("into sleep mode");
-		ret = I2C_READ_16BIT_OIS(DW9786_CHIP_EN_ADDR, &status);
-		if ((ret < 0) || (status == 0)) {
-			LOG_INF("have enter sleep mode success");
-			sleep_mode_state = true;
-			return 0;
-		}
-		if (!sleep_mode_state) {
-			ret = dw9786_sleep_mode();
-			if (ret < 0) {
-				LOG_ERR("enter sleep mode failed, ret: %d", ret);
-				return 0;
-			}
-			sleep_mode_state = true;
-			LOG_INF("enter sleep mode success");
-		}
-	} break;
-	case AK_ManualMovieLens: {
-		LOG_INF("into manual mode");
-		ret = dw9786_servo_on();
-		if (ret < 0) {
-			LOG_ERR("enter to servo on mode failed, ret: %d", ret);
-			return ret;
-		}
-		int ret = dw9786_set_hall(0, 0);
-		if (ret < 0) {
-			LOG_ERR("fixed failed, ret: %d", ret);
-			return -1;
-		}
-		LOG_ERR("fixed on success");
-	} break;
-	case AK_Pantilt: {
-		LOG_ERR("into pantilt mode");
-		ret = dw9786_ois_on();
-		if (ret < 0) {
-			LOG_ERR("pantilt failed, ret: %d", ret);
-			return -1;
-		}
-		g_still_en = 1;
-		LOG_ERR("pantilt success");
-	} break;
-	case AK_TestMode: {
-		if (1) {
-			g_gyro_cal = 1;
-			is_do_cali = true;
-			LOG_ERR("do gyro offset...");
-			dw9786_gyro_offset_calibration(&offset_x, &offset_y);
-			g_gyro_offset[0] = convert(offset_x);
-			g_gyro_offset[1] = convert(offset_y);
-			LOG_ERR("%s sensor_type: %d, cali: [%d, %d], g_gyro_offset: [%d, %d]", __func__,
-					sensor_type, offset_x, offset_y, g_gyro_offset[0], g_gyro_offset[1]);
-			is_do_cali = false;
-		} else {
-			LOG_ERR("%s skip offset cali, sensor_type[%d] cali[%d,%d]",
-					__func__, sensor_type, g_gyro_offset[0], g_gyro_offset[1]);
-		}
-	} break;
-	case MOIS_Gyro_Gain_Cal: {
-		LOG_ERR("into MOIS_Gyro_Gain_Cal");
-		LOG_ERR("traverse gyro gain: [0x%04X, 0x%04X]", config->mois_gain_x, config->mois_gain_y);
-		if (!g_still_en) {
-			/* ois on */
-			ret = dw9786_ois_on();
-			if (ret < 0) {
-				LOG_ERR("Gyro Gain ois on failed, ret[%d] return", ret);
-				return -1;
-			}
-			LOG_ERR("Gyro Gain ois on success");
-			g_still_en = 1;
-		}
-		g_gyro_gain_x = (uint16_t)config->mois_gain_x;
-		g_gyro_gain_y = (uint16_t)config->mois_gain_y;
-		dw9786_set_gyro_gain(g_gyro_gain_x, g_gyro_gain_y);
-	} break;
-	default:
-		LOG_DBG(dbg, "into default mode, just break");
-		break;
-	}
-
-	return 0;
-}
-
-uint64_t reverse_bytes(uint64_t num) {
-	uint64_t reversed_num = 0;
-
-	for (int i = 0; i < 8; ++i) {
-		uint64_t byte_value = (num >> (i * 8)) & 0xFF;
-		reversed_num |= byte_value << ((7 - i) * 8);
-	}
-
-	return reversed_num;
-}
-
-static int dw9786_sample(struct hf_device *hfdev)
-{
-	struct i2c_client *client;
-	struct v4l2_subdev *subdev;
-	struct dw9786_device *dw9786;
-	struct hf_manager *manager;
-	struct hf_manager_event event;
-	int i2c_ret;
-	int16_t position_x = 0;
-	int16_t position_y = 0;
-	uint8_t data[110];
-	uint64_t reverse_timestamp = 0;
-	uint16_t fifo_count = 0;
-	uint32_t qtime_h = 0;
-	uint32_t qtime_l = 0;
-	uint64_t qtime = 0;
-	uint64_t after_i2c_write_timestamp = 0;
-
-	if (sleep_mode_state) {
-		goto err;
-	}
-
-	if (is_do_cali) {
-		goto err;
-	}
-
-	if (hfdev) {
-		client = hf_device_get_private_data(hfdev);
-	} else {
-		LOG_ERR("NULL hfdev");
-		goto err;
-	}
-	if (client) {
-		subdev = i2c_get_clientdata(client);
-	} else {
-		LOG_ERR("NULL client");
-		goto err;
-	}
-	if (subdev) {
-		dw9786 = subdev_to_dw9786_ois(subdev);
-	} else {
-		LOG_ERR("NULL subdev");
-		goto err;
-	}
-	if (dw9786) {
-		manager = dw9786->hf_dev.manager;
-	} else {
-		LOG_ERR("NULL dw9786");
-		goto err;
-	}
-	if (!manager) {
-		LOG_ERR("NULL manager");
-		goto err;
-	}
-
-	memset(&event, 0, sizeof(struct hf_manager_event));
-	event.sensor_type = SENSOR_TYPE_OIS2;
-	event.accurancy = SENSOR_ACCURANCY_HIGH;
-	event.action = DATA_ACTION;
-	event.timestamp = ktime_get_boottime_ns();
-
-	reverse_timestamp = reverse_bytes(event.timestamp);
-	I2C_BLOCK_WRITE_OIS(0xB970, &reverse_timestamp, sizeof(uint64_t));
-	after_i2c_write_timestamp = ktime_get_boottime_ns();
-	dw9786_udelay(500);
-	i2c_ret = I2C_BLOCK_READ_OIS(0xB900, data, 10);
-	if (i2c_ret < 0) {
-		LOG_ERR("read EIS data failed, ret: %d", i2c_ret);
-		goto err;
-	}
-	qtime_h = ((uint32_t)data[2] << 24) + ((uint32_t)data[3] << 16) + ((uint32_t)data[4] << 8) + data[5];
-	qtime_l = ((uint32_t)data[6] << 24) + ((uint32_t)data[7] << 16) + ((uint32_t)data[8] << 8) + data[9];
-	qtime = qtime_l + ((uint64_t)qtime_h << 32);
-	LOG_DBG(dbg, "write timestamp: 0x%016llX, reverse timestamp: 0x%016llX, read timestamp: 0x%016llX", event.timestamp, reverse_timestamp, qtime);
-	LOG_DBG(dbg, "write timestamp: %lld, read timestamp: %lld, Delta T:%lld", event.timestamp, qtime, event.timestamp - qtime);
-	qtime += after_i2c_write_timestamp - event.timestamp;
-	LOG_DBG(dbg, "i2c_write_time: %lld, timestamp after i2c_write_delay cali: %lld", after_i2c_write_timestamp - event.timestamp, qtime);
-
-	if (abs(event.timestamp - (int64_t)qtime) > 11 * 1000 * 1000) {
-		LOG_ERR("timestamps not legal, write timestamp: %lld, read timestamp: %lld, Delta T:%lld", event.timestamp, qtime, event.timestamp - qtime);
-		goto err;
-	}
-
-	fifo_count = data[1] & 0xFF;
-	fifo_count = fifo_count > 25 ? 25 : fifo_count;
-	LOG_DBG(dbg, "fifo_count: %d", fifo_count);
-	i2c_ret = I2C_BLOCK_READ_OIS(0xB90A, data, fifo_count * 4);
-	if (i2c_ret < 0) {
-		LOG_ERR("read EIS data failed, ret: %d", i2c_ret);
-		goto err;
-	}
-	for (int i = 0; i < fifo_count && i < 25; i += 1) {
-		event.timestamp = qtime - 2000000 * (fifo_count - i + 1);
-		position_x = dw9786_hall_convert(((uint16_t)data[i*4] << 8) + data[i*4 + 1]);
-		position_y = dw9786_hall_convert(((uint16_t)data[i*4 + 2] << 8) + data[i*4 + 3]);
-		LOG_DBG(dbg, "ts[%lld] data[%d]: hall_x: %d, hall_y: %d", event.timestamp, i, position_x, position_y);
-		if (abs(position_x) > 10000 || abs(position_y) > 10000) {
-			LOG_ERR("position not legal position_x: %d, position_y: %d", position_x, position_y);
-			continue;
-		}
-
-		/*OIS data format
-		data[0 1]: gyro_x, gyro_y
-		data[2 3]: target_x, target_y
-		data[4 5]: hall_x, hall_y*/
-		event.word[0] = 0;
-		event.word[1] = 0;
-		event.word[2] = position_x;
-		event.word[3] = position_y;
-		event.word[4] = position_x;
-		event.word[5] = position_y;
-		manager->report(manager, &event);
-	}
-	manager->complete(manager);
-
-	return 0;
-
-err:
-	g_last_time = 0;
-	return -1;
-}
-
-static int dw9786_set_lock_state(int state)
-{
-	int ret = 0;
-	int ret1 = 0;
-	uint16_t chip_en;
-	uint16_t mcu_active;
-	uint16_t af_status;
-
-	int puSendCmdArray[6][3] = {
-		{0xB026, 0x0001, 1},    /* OP mode */
-		{0xB022, 0x0002, 1},    /* OIS Servo On */
-		{0xB024, 0x0002, 1},    /* AF Servo On */
-		{0xB0B2, 0x8000, 1},    /* still mode */
-		{0xB96E, 0x1901, 1},    /* EIS Param */
-		{0xB022, 0x0001, 1},    /* OIS On */
-	};
-	unsigned short stdby[17] = {0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-								0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-								0x0000, 0x0000, 0x0000};
-
-	LOG_INF("E\n");
-
-	if (dw9786->vin == NULL || dw9786->iovdd == NULL || dw9786->afvdd == NULL) {
-		LOG_ERR("regulator is NULL");
-		return -1;
-	}
-
-	if (state && (atomic_read(&dw9786_shake_state) == 0)) {
-		ret = regulator_enable(dw9786->iovdd);
-		ret1 = regulator_set_voltage(dw9786->iovdd, 1800000, 1800000);
-		if (ret < 0 || ret1 < 0) {
-			LOG_ERR("%s dw9786->iovdd set failed ret[%d] ret1[%d]", __func__,
-				ret, ret1);
-			return -1;
-		}
-		LOG_INF("dw9786->iovdd set success ret[%d], ret1[%d]", ret, ret1);
-
-		ret = regulator_enable(dw9786->vin);
-		if (ret < 0 || ret1 < 0) {
-			LOG_ERR("%s dw9786->vin set failed ret[%d] ret1[%d]", __func__,
-				ret, ret1);
-			return -1;
-		}
-		LOG_INF("dw9786->vin set success ret[%d], ret1[%d]", ret, ret1);
-
-		ret = regulator_enable(dw9786->oisvdd);
-		ret1 = regulator_set_voltage(dw9786->oisvdd, 3100000, 3100000);
-		if (ret < 0 || ret1 < 0) {
-			LOG_ERR("%s dw9786->oisvdd set failed ret[%d] ret1[%d]", __func__,
-				ret, ret1);
-			return -1;
-		}
-		LOG_INF("dw9786->oisvdd set success ret[%d], ret1[%d]", ret, ret1);
-		mdelay(2);
-
-		ret = regulator_enable(dw9786->afvdd);
-		ret1 = regulator_set_voltage(dw9786->afvdd, 3100000, 3100000);
-		if (ret < 0 || ret1 < 0) {
-			LOG_ERR("%s dw9786->afvdd set failed ret[%d] ret1[%d]", __func__,
-				ret, ret1);
-			return -1;
-		}
-		LOG_INF("dw9786->afvdd set success ret[%d], ret1[%d]", ret, ret1);
-
-		udelay(5000);
-
-		I2C_READ_16BIT_OIS(0xE000, &chip_en);
-		LOG_INF("chip_en: 0x%04X", chip_en);
-		if (chip_en != 0x0001) {
-			ret = I2C_WRITE_16BIT_OIS(0xE000, 0x0000);
-			mdelay(2);
-			I2C_BLOCK_WRITE_OIS(0xE000, (unsigned char *)stdby, 34);
-			mdelay(5);
-		}
-
-		I2C_READ_16BIT_OIS(0xE004, &mcu_active);
-		LOG_INF("mcu_active: 0x%04X", mcu_active);
-		if(mcu_active != 0x0001) {
-			ret = I2C_WRITE_16BIT_OIS(0xE004, 0x0001);
-			mdelay(20);
-		}
-
-		for (int cmd_number = 0; cmd_number < sizeof(puSendCmdArray) / sizeof(puSendCmdArray[0]); cmd_number++) {
-			ret = I2C_WRITE_16BIT_OIS(puSendCmdArray[cmd_number][0], puSendCmdArray[cmd_number][1]);
-			mdelay(puSendCmdArray[cmd_number][2]);
-			LOG_INF("dw9786_init: %x\n", cmd_number);
-		}
-
-		I2C_READ_16BIT_OIS(0xB020, &af_status);
-		LOG_INF("af status: 0x%04X", af_status);
-		atomic_set(&dw9786_shake_state, 1);
-	} else if (state == 0 && (atomic_read(&dw9786_shake_state) == 1)) {
-		ret = regulator_disable(dw9786->afvdd);
-		if (ret) {
-			LOG_ERR("disable dw9786->afvdd failed!\n");
-			return ret;
-		}
-		LOG_INF("disable dw9786->afvdd success ret[%d]", ret);
-
-		ret = regulator_disable(dw9786->vin);
-		if (ret) {
-			LOG_ERR("disable dw9786->vin failed!\n");
-			return ret;
-		}
-		LOG_INF("disable dw9786->vin success ret[%d]", ret);
-
-		ret = regulator_disable(dw9786->oisvdd);
-		if (ret) {
-			LOG_ERR("disable dw9786->oisvdd failed!\n");
-			return ret;
-		}
-		LOG_INF("disable dw9786->oisvdd success ret[%d]", ret);
-
-		ret = regulator_disable(dw9786->iovdd);
-		if (ret) {
-			LOG_ERR("disable dw9786->iovdd failed!\n");
-			return ret;
-		}
-		LOG_INF("disable dw9786->iovdd success ret[%d]", ret);
-		atomic_set(&dw9786_shake_state, 0);
-	}
-	LOG_INF("X\n");
-	return 0;
-}
-
-static int dw9786_custom_cmd(struct hf_device *hfdev, int sensor_type, struct custom_cmd *cust_cmd)
-{
-	LOG_DBG(dbg, "cammand: 0x%x, type: %d, rxlen: %d, txlen: %d",
-			cust_cmd->command, sensor_type, cust_cmd->rx_len, cust_cmd->tx_len);
-	/* print cmd data for debug */
-	/*for (int i = 0; i < cust_cmd->tx_len; i++) {
-		printk("%s cust_cmd->data %x ", __func__, cust_cmd->data[i]);
-	}*/
-	switch (cust_cmd->command) {
-	case 0xDC: {
-		cust_cmd->rx_len = 2;
-		cust_cmd->data[0] = g_gyro_offset[0];
-		cust_cmd->data[1] = g_gyro_offset[1];
-	}
-		break;
-	case 0x85: {    /* save gain to flash */
-		LOG_ERR("save gain[%d,%d] len[%d]", cust_cmd->data[0], cust_cmd->data[1], cust_cmd->tx_len);
-		g_gyro_gain_x = (unsigned short)cust_cmd->data[0];
-		g_gyro_gain_y = (unsigned short)cust_cmd->data[1];
-		dw9786_set_gyro_gain(g_gyro_gain_x, g_gyro_gain_y);
-		dw9786_set_store();
-	}
-		break;
-	case 0x10: {    /* ois manual control */
-		uint16_t ois_status = 0;
-		I2C_READ_16BIT_OIS(DW9786_STATUS_ADDR, &ois_status);
-		if (ois_status != 0x1022) {
-			dw9786_servo_on();
-		}
-		LOG_ERR("save hall[%d,%d] len[%d]", cust_cmd->data[0], cust_cmd->data[1], cust_cmd->tx_len);
-		dw9786_set_hall(cust_cmd->data[0], cust_cmd->data[1]);
-	}
-		break;
-	case 0x8D: {    /* lock OIS by shake detect */
-		LOG_INF("into lock af and ois: %d", cust_cmd->data[0]);
-		dw9786_set_lock_state(cust_cmd->data[0]);
-	}
-		break;
-	default:
-		break;
-	}
-
-	return 0;
-}
-
-static const struct v4l2_subdev_internal_ops dw9786_int_ops = {
-	.open = dw9786_open,
-	.close = dw9786_close,
-};
-
-static struct v4l2_subdev_core_ops dw9786_ops_core = {
-	.ioctl = dw9786_ops_core_ioctl,
-};
-
-static const struct v4l2_subdev_ops dw9786_ops = {
-	.core = &dw9786_ops_core,
-};
-
-static void dw9786_subdev_cleanup(struct dw9786_device *dw9786)
-{
-	v4l2_async_unregister_subdev(&dw9786->subdev);
-	v4l2_ctrl_handler_free(&dw9786->ctrls);
-#if defined(CONFIG_MEDIA_CONTROLLER)
-	media_entity_cleanup(&dw9786->subdev.entity);
-#endif
-}
-
-static int dw9786_init_controls(struct dw9786_device *dw9786)
-{
-	struct v4l2_ctrl_handler *hdl = &dw9786->ctrls;
-
-	v4l2_ctrl_handler_init(hdl, 1);
-
-	if (hdl->error) {
-		LOG_ERR("v4l2_ctrl_handler_init failed, hdl->error: %d", hdl->error);
-		return hdl->error;
-	}
-
-	dw9786->subdev.ctrl_handler = hdl;
-
-	return 0;
-}
-static int dw9786_probe(struct i2c_client *client)
-{
-	struct device *dev = &client->dev;
-	int ret;
-	int boot_mode;
-	bool reg_rewrite_flag = false;
-
-	uint16_t id;
-
-	LOG_INF("E");
-
-	mutex_init(&dw9786_idle_mutex);
-	sema_init(&dw9786_power_on_sem, 0);
-
-	dw9786 = devm_kzalloc(dev, sizeof(*dw9786), GFP_KERNEL);
-	if (!dw9786)
-		return -ENOMEM;
-
-	dw9786->need_ois_on = true;
-
-	/* get regulator for OIS */
-	dw9786->vin = devm_regulator_get(dev, "vin");
-	if (IS_ERR(dw9786->vin)) {
-		ret = PTR_ERR(dw9786->vin);
-		if (ret != -EPROBE_DEFER)
-			LOG_ERR("cannot get vin regulator\n");
-		return ret;
-	}
-	dw9786->oisvdd = devm_regulator_get(dev, "oisvdd");
-	if (IS_ERR(dw9786->oisvdd)) {
-		ret = PTR_ERR(dw9786->oisvdd);
-		if (ret != -EPROBE_DEFER)
-			LOG_ERR("cannot get oisvdd regulator\n");
-		return ret;
-	}
-	/* get regulator for sensor, since the i2c is to be used */
-	dw9786->iovdd = devm_regulator_get(dev, "iovdd");
-	if (IS_ERR(dw9786->iovdd)) {
-		ret = PTR_ERR(dw9786->iovdd);
-		if (ret != -EPROBE_DEFER)
-			LOG_ERR("cannot get iovdd regulator\n");
-		return ret;
-	}
-	dw9786->afvdd = devm_regulator_get(dev, "afvdd");
-	if (IS_ERR(dw9786->afvdd)) {
-		ret = PTR_ERR(dw9786->afvdd);
-		if (ret != -EPROBE_DEFER)
-			LOG_ERR("cannot get afvdd regulator\n");
-		return ret;
-	}
-
-	v4l2_i2c_subdev_init(&dw9786->subdev, client, &dw9786_ops);
-	dw9786->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
-	dw9786->subdev.internal_ops = &dw9786_int_ops;
-
-	ret = dw9786_init_controls(dw9786);
-	if (ret != 0) {
-		LOG_ERR("dw9786_init_controls failed");
-		goto err_cleanup;
-	}
-
-	dw9786->hf_dev.dev_name = "dw9786_ois";
-	dw9786->hf_dev.device_poll = HF_DEVICE_IO_POLLING;
-	dw9786->hf_dev.device_bus = HF_DEVICE_IO_SYNC;
-	dw9786->hf_dev.support_list = support_sensors;
-	dw9786->hf_dev.support_size = ARRAY_SIZE(support_sensors);
-	dw9786->hf_dev.enable = dw9786_enable;
-	dw9786->hf_dev.batch = dw9786_batch;
-	dw9786->hf_dev.sample = dw9786_sample;
-	dw9786->hf_dev.custom_cmd = dw9786_custom_cmd;
-	dw9786->hf_dev.config_cali = dw9786_config_cali;
-	hf_device_set_private_data(&dw9786->hf_dev, client);
-	ret = hf_device_register_manager_create(&dw9786->hf_dev);
-	if (ret < 0) {
-		LOG_ERR("hf_manager_create fail");
-		goto err_cleanup;
-	}
-
-	ret = device_create_file(dev, &dev_attr_dw9786_dbg);
-	if (ret) {
-		LOG_ERR("failed to create sysfs dw9786_dbg\n");
-	}
-	ret = device_create_file(dev, &dev_attr_dw9786_i2c_ops);
-	if (ret) {
-		LOG_ERR("failed to create sysfs dw9786_i2c_ops\n");
-	}
-	ret = device_create_file(dev, &dev_attr_dw9786_i2c_ops32);
-	if (ret) {
-		LOG_ERR("failed to create sysfs dw9786_i2c_ops32\n");
-	}
-
-#if defined(CONFIG_MEDIA_CONTROLLER)
-	ret = media_entity_pads_init(&dw9786->subdev.entity, 0, NULL);
-	if (ret < 0) {
-		goto err_cleanup;
-	}
-
-	dw9786->subdev.entity.function = MEDIA_ENT_F_LENS;
-#endif
-
-	ret = v4l2_async_register_subdev(&dw9786->subdev);
-	if (ret < 0) {
-		LOG_ERR("v4l2_async_register_subdev failed.");
-		goto err_cleanup;
-	}
-
-	gyro_client = hf_client_create();
-
-	ret = dw9786_power_on(dw9786, false);
-	if (ret < 0) {
-		LOG_ERR("dw9786 init failed caused I2C failed.");
-		goto err_cleanup;
-	}
-	down(&dw9786_power_on_sem);
-	ret = I2C_READ_16BIT_OIS(DW9786_CHIP_ID_ADDR, &id);
-	LOG_INF("id: 0x%0x", id);
-	if (id == DW9786_CHIP_ID_VAL) {
-		LOG_INF("probed");
-	} else {
-		LOG_INF("probed failed");
-		goto err_probe;
-	}
-
-	/* set gyro type */
-	dw9786_check_and_write(DW9786_IMU_TYPE_ADDR, IMU_TYPE_ICM45621, ®_rewrite_flag);
-
-	/* Set gyro direction */
-	/* GYRO_ROT_MAT_X */
-	dw9786_check_and_write(0xB812, 0x7FFF, ®_rewrite_flag);
-	dw9786_check_and_write(0xB814, 0x7FFF, ®_rewrite_flag);
-	/* GYRO_ROT_MAT_Y */
-	dw9786_check_and_write(0xB818, 0x0000, ®_rewrite_flag);
-	dw9786_check_and_write(0xB81A, 0x0000, ®_rewrite_flag);
-	/* GYRO_GAIN_POL_X */
-	dw9786_check_and_write(0xB800, 0x0001, ®_rewrite_flag);
-	/* GYRO_GAIN_POL_Y */
-	dw9786_check_and_write(0xB802, 0xFFFF, ®_rewrite_flag);
-
-	/* read gyro gain, if gain is 0 write golden */
-	ret = I2C_READ_16BIT_OIS(DW9786_GYRO_GAIN_X, &gyro_gain_x);
-	if (ret < 0) {
-		LOG_ERR("read gyro gain X failed ret[%d]", ret);
-		gyro_gain_x = GYRO_GAIN_X_GOLDEN;
-	}
-	if (gyro_gain_x == 0 || gyro_gain_x > DW9786_GYRO_GAIN_X_MAX) {
-		ret = I2C_WRITE_16BIT_OIS(DW9786_GYRO_GAIN_X, GYRO_GAIN_X_GOLDEN);
-		LOG_INF("gyro gain x is 0 or too large, write golden");
-		if (ret < 0) {
-			LOG_ERR("write golden gain failed: ret: %d", ret);
-		}
-		gyro_gain_x = GYRO_GAIN_X_GOLDEN;
-	}
-	ret =  I2C_READ_16BIT_OIS(DW9786_GYRO_GAIN_Y, &gyro_gain_y);
-	if (ret < 0) {
-		LOG_ERR("read gyro gain Y failed ret[%d]", ret);
-		gyro_gain_y = GYRO_GAIN_Y_GOLDEN;
-	}
-	if (gyro_gain_y == 0 || gyro_gain_y > DW9786_GYRO_GAIN_Y_MAX) {
-		ret = I2C_WRITE_16BIT_OIS(DW9786_GYRO_GAIN_Y, GYRO_GAIN_Y_GOLDEN);
-		LOG_INF("gyro gain y is 0 or too large, write golden");
-		if (ret < 0) {
-			LOG_ERR("write golden gain failed: ret: %d", ret);
-		}
-		gyro_gain_y = GYRO_GAIN_Y_GOLDEN;
-	}
-	if (reg_rewrite_flag) {
-		LOG_INF("reg value has been changed, exec set store");
-		dw9786_set_store();
-		dw9786_device_reset();
-	}
-
-	dw9786_chip_info();
-	/* only update firmeware at normal boot */
-	boot_mode = get_boot_mode();
-	if (FACTORY_BOOT != boot_mode) {
-		ret = dw9786_update_fw();
-		if (ret < 0) {
-			LOG_ERR("updata firmware failed!");
-		}
-	} else {
-		LOG_ERR("boot_mode %d not update firmware", boot_mode);
-	}
-
-	dw9786_power_off(dw9786);
-
-	pm_runtime_enable(dev);
-
-	LOG_INF("X");
-
-	return 0;
-
-err_probe:
-	dw9786_power_off(dw9786);
-	return 0;
-
-err_cleanup:
-	dw9786_power_off(dw9786);
-	if (dw9786->hf_dev.manager) {
-		hf_device_unregister_manager_destroy(&dw9786->hf_dev);
-	}
-	dw9786_subdev_cleanup(dw9786);
-	LOG_ERR("dw9786 err_cleanup");
-	return ret;
-}
-
-static void dw9786_remove(struct i2c_client *client)
-{
-	struct v4l2_subdev *subdev = i2c_get_clientdata(client);
-	struct dw9786_device *dw9786 = subdev_to_dw9786_ois(subdev);
-	struct device *dev = &client->dev;
-	LOG_ERR("remove dw9786");
-
-	dw9786_subdev_cleanup(dw9786);
-	pm_runtime_disable(&client->dev);
-	device_remove_file(dev, &dev_attr_dw9786_dbg);
-	device_remove_file(dev, &dev_attr_dw9786_i2c_ops);
-	device_remove_file(dev, &dev_attr_dw9786_i2c_ops32);
-
-	if (gyro_client) {
-		hf_client_destroy(gyro_client);
-	}
-
-	if (!pm_runtime_status_suspended(&client->dev))
-		dw9786_power_off(dw9786);
-	pm_runtime_set_suspended(&client->dev);
-
-	mutex_destroy(&dw9786_idle_mutex);
-
-	return;
-}
-
-static int dw9786_ois_suspend(struct device *dev)
-{
-	struct i2c_client *client = to_i2c_client(dev);
-	struct v4l2_subdev *subdev = i2c_get_clientdata(client);
-	struct dw9786_device *dw9786 = subdev_to_dw9786_ois(subdev);
-
-	return dw9786_power_off(dw9786);
-}
-
-static int dw9786_ois_resume(struct device *dev)
-{
-	struct i2c_client *client = to_i2c_client(dev);
-	struct v4l2_subdev *subdev = i2c_get_clientdata(client);
-	struct dw9786_device *dw9786 = subdev_to_dw9786_ois(subdev);
-
-	return dw9786_power_on(dw9786, true);
-}
-
-static const struct i2c_device_id dw9786_id_table[] = {
-	{DW9786_NAME, 0},
-	{},
-};
-MODULE_DEVICE_TABLE(i2c, dw9786_id_table);
-
-static const struct of_device_id dw9786_of_table[] = {
-	{.compatible = "oplus,ois_dw9786"},
-	{},
-};
-MODULE_DEVICE_TABLE(of, dw9786_of_table);
-
-static const struct dev_pm_ops dw9786_pm_ops = {
-	SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume)
-	SET_RUNTIME_PM_OPS(dw9786_ois_suspend, dw9786_ois_resume, NULL)
-};
-
-static struct i2c_driver dw9786_i2c_driver = {
-	.driver = {
-		.name = DW9786_NAME,
-		.of_match_table = dw9786_of_table,
-	},
-	.probe = dw9786_probe,
-	.remove = dw9786_remove,
-	.id_table = dw9786_id_table,
-};
-module_i2c_driver(dw9786_i2c_driver);
-
-MODULE_AUTHOR("WangJianwei");
-MODULE_DESCRIPTION("DW9786 OIS driver");
-MODULE_LICENSE("GPL v2");
diff --git a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786_fw_data.h b/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786_fw_data.h
deleted file mode 100644
index 5f471ae0..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786_fw_data.h
+++ /dev/null
@@ -1,2590 +0,0 @@
-/**************************************************************
-* Copyright (C), 2008-2024, OPLUS Mobile Comm Corp., Ltd.
-* VENDOR_EDIT
-* File: dw9786_flash_data.h
-* Description: DW9786 Firmware
-* Version: 1.0
-* Date : 2024/02/28
-* Author: Wang Jianwei
-* ----------------------Revision History-----------------------
-*                     
-* Wang Jianwei   2024/02/28       1.0     DW9786 Firmware
-* Wang Jianwei   2024/07/09       1.1     update Firmware to 0613
-* Wang Jianwei   2024/07/19       1.2     update Firmware to 0719
-* Wang Jianwei   2024/08/21       1.3     update Firmware to 0821
-* Wang Jianwei   2024/10/14       1.3     update Firmware to 1011
-****************************************************************/
-
-#ifndef DW9786_FIRMWARE_H
-#define DW9786_FIRMWARE_H
-
-#define DW9786_FW_SIZE 0xA000
-#define DW9786_PROJECT_VERSION 0x0301
-#define DW9786_FW_VERSION 0x0803
-#define DW9786_RELEASE_DATE 0x1011
-#define DW9786_FW_CHECKSUM 0xF7F7ECEE
-
-const unsigned char dw9786_fw_data[DW9786_FW_SIZE] = {
-	0x00, 0x01, 0xB1, 0x97, 0x86, 0x01, 0x81, 0x93, 0x00, 0x00, 0x02, 0x97, 0x04, 0xC2, 0x82, 0x93,
-	0x30, 0x52, 0x90, 0x73, 0x00, 0x00, 0x02, 0x93, 0x00, 0x02, 0x84, 0x63, 0x7C, 0x10, 0x50, 0x73,
-	0x00, 0x00, 0x01, 0x13, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x83, 0x63, 0x25, 0x73, 0x90, 0x82,
-	0x45, 0x81, 0xF1, 0x40, 0x28, 0x05, 0x46, 0x01, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x83, 0x63,
-	0x02, 0x97, 0x90, 0x82, 0x82, 0x93, 0x00, 0x00, 0x90, 0x73, 0x00, 0xC2, 0x23, 0x03, 0x30, 0x52,
-	0xBF, 0xF5, 0x00, 0x00, 0x34, 0x20, 0x22, 0xF3, 0x34, 0x10, 0x23, 0x73, 0x34, 0x30, 0x23, 0xF3,
-	0x80, 0x82, 0xBF, 0xD5, 0x84, 0x06, 0x80, 0x82, 0x00, 0x01, 0xA1, 0x97, 0x7F, 0x81, 0x81, 0x93,
-	0x2D, 0x01, 0x81, 0x13, 0x03, 0x13, 0x42, 0x81, 0x85, 0x63, 0x40, 0x00, 0x91, 0x1A, 0x00, 0xA2,
-	0xBF, 0xE5, 0x02, 0x85, 0xFF, 0x01, 0x71, 0x13, 0x00, 0x00, 0x02, 0x93, 0x04, 0x55, 0x1F, 0x63,
-	0x00, 0x00, 0x82, 0x97, 0x12, 0x82, 0x82, 0x93, 0x00, 0x01, 0xA3, 0x17, 0xF6, 0x83, 0x03, 0x13,
-	0x83, 0x01, 0x83, 0x93, 0x00, 0x62, 0x8C, 0x63, 0x00, 0x73, 0x5A, 0x63, 0x00, 0x02, 0xA5, 0x03,
-	0x20, 0x23, 0x02, 0x91, 0x03, 0x11, 0x00, 0xA3, 0xFE, 0x73, 0x4A, 0xE3, 0x00, 0x00, 0x10, 0x0F,
-	0x86, 0x01, 0x83, 0x13, 0xED, 0x01, 0x83, 0x93, 0x00, 0x73, 0x57, 0x63, 0x00, 0x03, 0x20, 0x23,
-	0x4D, 0xE3, 0x03, 0x11, 0xC2, 0x11, 0xFE, 0x73, 0x75, 0x17, 0x96, 0x02, 0x05, 0x13, 0x00, 0x00,
-	0x70, 0xEF, 0x5A, 0x25, 0x70, 0xEF, 0x56, 0x80, 0x3F, 0xAD, 0x5C, 0xC0, 0x30, 0x10, 0x27, 0xF3,
-	0x00, 0x01, 0x07, 0x37, 0x02, 0x87, 0x07, 0x13, 0xCB, 0x89, 0x8F, 0xF9, 0x30, 0x00, 0x27, 0xF3,
-	0x8F, 0xD9, 0x67, 0x09, 0x30, 0x07, 0x90, 0x73, 0x00, 0x30, 0x50, 0x73, 0x85, 0x97, 0x45, 0x05,
-	0x85, 0x93, 0x00, 0x00, 0x86, 0x17, 0x08, 0x25, 0x06, 0x13, 0x00, 0x00, 0x20, 0x31, 0x07, 0xE6,
-	0x53, 0x40, 0x70, 0xEF, 0x80, 0x82, 0x80, 0xA2, 0x11, 0x41, 0x80, 0x82, 0x22, 0xF3, 0xC2, 0x06,
-	0x03, 0x13, 0xF1, 0x40, 0x85, 0x63, 0x00, 0x00, 0x00, 0x73, 0x00, 0x62, 0xBF, 0xF5, 0x10, 0x50,
-	0x40, 0x92, 0x20, 0x81, 0x80, 0x82, 0x01, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0xDE, 0x06, 0x71, 0x39, 0xDA, 0x26, 0xDC, 0x22, 0xD4, 0x52, 0xD6, 0x4E, 0xCE, 0x5E, 0xD0, 0x5A,
-	0xCA, 0x66, 0xCC, 0x62, 0xD2, 0x56, 0xD8, 0x4A, 0x17, 0x23, 0xC8, 0x6A, 0x50, 0xEF, 0x00, 0x01,
-	0x60, 0xEF, 0x7D, 0xD0, 0x60, 0xEF, 0x5A, 0x20, 0x30, 0xEF, 0x30, 0x80, 0xA7, 0x83, 0x59, 0x70,
-	0x8B, 0x37, 0x81, 0x01, 0xD7, 0x83, 0x20, 0x00, 0xAA, 0x37, 0x04, 0x07, 0x07, 0xC2, 0x20, 0x00,
-	0x17, 0x23, 0x83, 0xC1, 0x4C, 0x81, 0x00, 0xF1, 0x4C, 0x01, 0x44, 0x81, 0x81, 0x01, 0x84, 0x13,
-	0x0C, 0x8B, 0x0B, 0x13, 0x9F, 0x01, 0x89, 0x93, 0x80, 0x0A, 0x0A, 0x13, 0xA5, 0x01, 0x8B, 0x93,
-	0x99, 0xA1, 0x87, 0x93, 0x00, 0x07, 0xC7, 0x83, 0x99, 0xA1, 0x8A, 0x93, 0x0F, 0xF7, 0xF7, 0x93,
-	0xE7, 0x37, 0xDB, 0xE5, 0x27, 0x83, 0x20, 0x01, 0x40, 0x14, 0x18, 0x87, 0x24, 0x23, 0x07, 0x85,
-	0xD7, 0x83, 0x18, 0xF7, 0x47, 0x05, 0x04, 0x06, 0x83, 0xC1, 0x07, 0xC2, 0x02, 0xE7, 0x91, 0x63,
-	0x9B, 0x61, 0xD7, 0x03, 0x83, 0x41, 0x07, 0x42, 0x9A, 0x23, 0xCB, 0x19, 0x60, 0xEF, 0x02, 0xF6,
-	0x70, 0xEF, 0x75, 0x50, 0x70, 0xEF, 0x1C, 0xE0, 0x9B, 0x23, 0x10, 0xE0, 0x47, 0xBD, 0x9A, 0x01,
-	0x52, 0x97, 0xEE, 0x63, 0x94, 0xDA, 0x04, 0x8A, 0x87, 0x82, 0x40, 0x9C, 0x6D, 0x40, 0x60, 0xEF,
-	0xD7, 0x03, 0x40, 0x1C, 0x57, 0x83, 0x04, 0x07, 0x07, 0x42, 0x00, 0xE1, 0x83, 0x41, 0x07, 0xC2,
-	0x06, 0x63, 0x83, 0xC1, 0x60, 0xEF, 0x04, 0xF7, 0x40, 0x1C, 0x1A, 0x10, 0xD7, 0x03, 0x46, 0x85,
-	0x87, 0x93, 0x04, 0x07, 0x07, 0x42, 0x81, 0x81, 0x43, 0x9C, 0x83, 0x41, 0x50, 0xD7, 0x1C, 0x63,
-	0x04, 0x07, 0x9F, 0x23, 0x77, 0x30, 0x50, 0xEF, 0x00, 0xE1, 0x57, 0x83, 0x83, 0xC1, 0x07, 0xC2,
-	0x50, 0x07, 0x85, 0x63, 0x47, 0x05, 0x40, 0x1C, 0x02, 0xE7, 0x9A, 0x23, 0x3E, 0xF0, 0x60, 0xEF,
-	0xD7, 0x83, 0x40, 0x1C, 0x07, 0xC2, 0x04, 0x07, 0x17, 0x23, 0x83, 0xC1, 0x40, 0x1C, 0x00, 0xF1,
-	0x02, 0x47, 0xDD, 0x03, 0x5D, 0x13, 0x0D, 0x42, 0x80, 0x63, 0x01, 0x0D, 0xDD, 0x03, 0x03, 0xAC,
-	0x47, 0x09, 0x02, 0x47, 0x5D, 0x13, 0x0D, 0x42, 0x18, 0x63, 0x01, 0x0D, 0xA7, 0x03, 0x00, 0xED,
-	0x57, 0x03, 0x81, 0x81, 0x92, 0x23, 0x2C, 0xA7, 0xD9, 0x03, 0x00, 0xEB, 0x09, 0x42, 0x02, 0x67,
-	0x01, 0x09, 0x59, 0x13, 0x07, 0x2C, 0x09, 0x63, 0x02, 0x07, 0x91, 0x23, 0x02, 0x07, 0x92, 0x23,
-	0xA4, 0x01, 0x9B, 0x23, 0xA4, 0x01, 0x9E, 0x23, 0x80, 0x23, 0x47, 0x05, 0x88, 0x23, 0x00, 0x0A,
-	0x9B, 0x23, 0x9A, 0xE1, 0x45, 0x01, 0x9A, 0x01, 0x98, 0x01, 0x9C, 0x23, 0x36, 0xD0, 0x40, 0xEF,
-	0x40, 0xEF, 0x45, 0x05, 0x45, 0x09, 0x36, 0x70, 0x36, 0x10, 0x40, 0xEF, 0x17, 0xD0, 0x30, 0xEF,
-	0xA3, 0x81, 0x87, 0x93, 0x00, 0x07, 0x90, 0x23, 0x00, 0x07, 0x91, 0x23, 0x00, 0x07, 0x92, 0x23,
-	0x81, 0x81, 0xA7, 0x83, 0x98, 0x23, 0x45, 0x01, 0x98, 0x23, 0x0A, 0x07, 0x98, 0x23, 0x1A, 0x07,
-	0x30, 0xEF, 0x2A, 0x07, 0x45, 0x05, 0x3C, 0x90, 0x3C, 0x30, 0x30, 0xEF, 0x30, 0xEF, 0x45, 0x09,
-	0x40, 0xEF, 0x3B, 0xD0, 0x47, 0x89, 0x20, 0x30, 0x44, 0xF9, 0x15, 0x63, 0x80, 0x23, 0x47, 0x85,
-	0x44, 0x89, 0x00, 0xFA, 0x8C, 0x4A, 0x8C, 0xEA, 0x50, 0xEF, 0xB5, 0x61, 0xB5, 0xCD, 0x25, 0x80,
-	0x00, 0x80, 0x20, 0xEF, 0x40, 0x1C, 0xBD, 0xF1, 0x02, 0x27, 0xD7, 0x03, 0x83, 0x41, 0x07, 0x42,
-	0x67, 0x11, 0xE7, 0x09, 0x02, 0xE7, 0x90, 0x23, 0xD7, 0x83, 0xB5, 0xE1, 0x47, 0x05, 0x02, 0x27,
-	0x83, 0xC1, 0x07, 0xC2, 0xEA, 0xE7, 0x9E, 0xE3, 0x6C, 0xB0, 0x20, 0xEF, 0x40, 0x1C, 0xBD, 0x55,
-	0x02, 0x27, 0xD7, 0x03, 0x83, 0x41, 0x07, 0x42, 0x67, 0x15, 0xE3, 0x19, 0xD7, 0x03, 0xBF, 0xE1,
-	0x47, 0x85, 0x02, 0x27, 0x83, 0x41, 0x07, 0x42, 0xE8, 0xF7, 0x1C, 0xE3, 0x99, 0x81, 0x87, 0x93,
-	0x00, 0x07, 0xD6, 0x83, 0x82, 0xC1, 0x06, 0xC2, 0x90, 0x23, 0xEA, 0x81, 0xA7, 0x83, 0x00, 0xE7,
-	0x93, 0x23, 0x81, 0xC1, 0xBD, 0xAD, 0x30, 0x07, 0x51, 0x10, 0x20, 0xEF, 0x40, 0x1C, 0xBD, 0x95,
-	0x02, 0x27, 0xD7, 0x03, 0x83, 0x41, 0x07, 0x42, 0x67, 0x19, 0xE3, 0x19, 0xD9, 0x03, 0xBF, 0x61,
-	0x47, 0x85, 0x02, 0x27, 0x59, 0x13, 0x09, 0x42, 0x1B, 0xE3, 0x01, 0x09, 0x87, 0x13, 0xE4, 0xF9,
-	0x56, 0x83, 0x99, 0x81, 0x87, 0x93, 0x00, 0x07, 0x06, 0xC2, 0x99, 0xB1, 0xEE, 0x89, 0x82, 0xC1,
-	0x01, 0x27, 0x10, 0x23, 0x00, 0x07, 0x80, 0x23, 0x82, 0x01, 0xA7, 0x83, 0x9C, 0x23, 0x45, 0x19,
-	0x20, 0xEF, 0x02, 0x07, 0xB5, 0x2D, 0x34, 0xB0, 0x00, 0x07, 0xC7, 0x03, 0x07, 0x05, 0x46, 0x95,
-	0x0F, 0xF7, 0x77, 0x13, 0x00, 0xE7, 0x80, 0x23, 0x00, 0x07, 0xC7, 0x03, 0x0F, 0xF7, 0x77, 0x13,
-	0xE0, 0xE6, 0xF8, 0xE3, 0x00, 0x07, 0x80, 0x23, 0x1A, 0x20, 0x30, 0xEF, 0x82, 0x01, 0xA7, 0x03,
-	0x82, 0x01, 0x84, 0x93, 0x02, 0xA7, 0x1C, 0x23, 0x57, 0x03, 0x40, 0x18, 0x07, 0x42, 0x04, 0x07,
-	0x01, 0x63, 0x83, 0x41, 0x60, 0xEF, 0x03, 0x27, 0x60, 0xEF, 0x51, 0xD0, 0x60, 0xEF, 0x79, 0x70,
-	0xA7, 0x83, 0x6D, 0x70, 0x45, 0x01, 0x81, 0x81, 0x03, 0xE7, 0x96, 0x03, 0x00, 0xA7, 0x95, 0x83,
-	0x7F, 0x70, 0x60, 0xEF, 0xD7, 0x83, 0x40, 0x9C, 0x83, 0xE3, 0x03, 0x87, 0x40, 0x1C, 0xDC, 0x07,
-	0x02, 0x27, 0xD7, 0x03, 0x02, 0x07, 0xD6, 0x83, 0x90, 0x23, 0x8F, 0x55, 0x47, 0x3D, 0x02, 0xE7,
-	0x02, 0xE7, 0x93, 0x23, 0x40, 0x1C, 0xB3, 0x75, 0x46, 0x85, 0x74, 0xE9, 0x02, 0x27, 0xD7, 0x03,
-	0x02, 0x97, 0x90, 0x23, 0x83, 0x41, 0x07, 0x42, 0x08, 0xD7, 0x15, 0x63, 0x0A, 0x10, 0x40, 0xEF,
-	0xD7, 0x03, 0x40, 0x1C, 0x67, 0xA9, 0x03, 0xE7, 0x6A, 0x67, 0x87, 0x93, 0x04, 0xF7, 0x19, 0x63,
-	0x35, 0x20, 0x30, 0xEF, 0x81, 0xC1, 0xA7, 0x83, 0x41, 0x05, 0x57, 0x13, 0x3E, 0xE7, 0x9E, 0x23,
-	0x3E, 0xA7, 0x9F, 0x23, 0x35, 0xA0, 0x30, 0xEF, 0x82, 0x01, 0xA7, 0x83, 0x41, 0x05, 0x57, 0x13,
-	0x0E, 0xE7, 0x9E, 0x23, 0x0E, 0xA7, 0x9F, 0x23, 0x1D, 0xA0, 0x60, 0xEF, 0x77, 0x69, 0x40, 0x1C,
-	0x02, 0x07, 0x91, 0x23, 0x02, 0x07, 0x92, 0x23, 0x90, 0x23, 0x07, 0x05, 0x47, 0x3D, 0x02, 0xE7,
-	0x02, 0xE7, 0x93, 0x23, 0x02, 0x07, 0x9F, 0x23, 0x03, 0xD0, 0x40, 0xEF, 0x67, 0x99, 0xBB, 0x15,
-	0x95, 0x97, 0x87, 0x93, 0xFC, 0xF7, 0x1C, 0xE3, 0x31, 0x60, 0x30, 0xEF, 0x82, 0x01, 0xA7, 0x83,
-	0x41, 0x05, 0x57, 0x13, 0x0E, 0xE7, 0x9E, 0x23, 0x0E, 0xA7, 0x9F, 0x23, 0x12, 0xA0, 0x60, 0xEF,
-	0xD7, 0x03, 0xBF, 0x75, 0x46, 0x89, 0x02, 0x27, 0x83, 0x41, 0x07, 0x42, 0x02, 0xD7, 0x13, 0x63,
-	0x00, 0xD0, 0x40, 0xEF, 0x30, 0xA0, 0x30, 0xEF, 0x00, 0xAA, 0x24, 0x23, 0x06, 0x60, 0x60, 0xEF,
-	0x04, 0x89, 0x40, 0x1C, 0x02, 0x07, 0x91, 0x23, 0x02, 0x07, 0x92, 0x23, 0x02, 0x97, 0x90, 0x23,
-	0xD7, 0x83, 0xBF, 0x79, 0x47, 0x0D, 0x02, 0x27, 0x83, 0xC1, 0x07, 0xC2, 0xCC, 0xE7, 0x9A, 0xE3,
-	0x7D, 0xC0, 0x40, 0xEF, 0xD7, 0x03, 0x40, 0x1C, 0x67, 0xA9, 0x03, 0xE7, 0x6A, 0x67, 0x87, 0x93,
-	0x04, 0xF7, 0x16, 0x63, 0x28, 0xE0, 0x30, 0xEF, 0x81, 0xC1, 0xA7, 0x83, 0x41, 0x05, 0x57, 0x13,
-	0x3E, 0xE7, 0x9E, 0x23, 0x3E, 0xA7, 0x9F, 0x23, 0x29, 0x60, 0x30, 0xEF, 0x82, 0x01, 0xA7, 0x83,
-	0x41, 0x05, 0x57, 0x13, 0x0E, 0xE7, 0x9E, 0x23, 0x0E, 0xA7, 0x9F, 0x23, 0x11, 0x60, 0x60, 0xEF,
-	0x29, 0xE0, 0x30, 0xEF, 0x00, 0xAA, 0x24, 0x23, 0x7F, 0xB0, 0x50, 0xEF, 0x77, 0x69, 0x40, 0x1C,
-	0x02, 0x07, 0x91, 0x23, 0x02, 0x07, 0x92, 0x23, 0xBF, 0x05, 0x07, 0x0D, 0x87, 0x93, 0x67, 0x99,
-	0x1F, 0xE3, 0x95, 0x97, 0x30, 0xEF, 0xFC, 0xF7, 0xA7, 0x83, 0x25, 0x80, 0x57, 0x13, 0x82, 0x01,
-	0x9E, 0x23, 0x41, 0x05, 0x9F, 0x23, 0x0E, 0xE7, 0x60, 0xEF, 0x0E, 0xA7, 0xB7, 0xC9, 0x06, 0xC0,
-	0x74, 0xED, 0x40, 0x1C, 0xD7, 0x03, 0x46, 0x85, 0x90, 0x23, 0x02, 0x27, 0x07, 0x42, 0x02, 0x97,
-	0x1B, 0x63, 0x83, 0x41, 0x40, 0xEF, 0x04, 0xD7, 0x40, 0x1C, 0x74, 0x60, 0x03, 0xE7, 0xD7, 0x03,
-	0x87, 0x93, 0x67, 0xA9, 0x12, 0x63, 0x6A, 0x67, 0xA5, 0x03, 0x02, 0xF7, 0x06, 0x13, 0x81, 0xC1,
-	0x45, 0x81, 0x60, 0x00, 0x73, 0xF0, 0x60, 0xEF, 0x09, 0xA0, 0x60, 0xEF, 0x77, 0x6D, 0x40, 0x1C,
-	0x02, 0x07, 0x91, 0x23, 0x02, 0x07, 0x92, 0x23, 0x67, 0x99, 0xB5, 0xC1, 0x95, 0x97, 0x87, 0x93,
-	0xFE, 0xF7, 0x16, 0xE3, 0x82, 0x01, 0xA5, 0x03, 0x20, 0x00, 0x06, 0x13, 0x60, 0xEF, 0x45, 0x81,
-	0x60, 0xEF, 0x71, 0x50, 0xBF, 0xD9, 0x00, 0x40, 0x02, 0x27, 0xD7, 0x03, 0x07, 0x42, 0x46, 0x89,
-	0x17, 0x63, 0x83, 0x41, 0x40, 0xEF, 0x00, 0xD7, 0x50, 0xEF, 0x6E, 0x60, 0xBD, 0xF9, 0x7D, 0x90,
-	0x02, 0x27, 0xD7, 0x83, 0x07, 0xC2, 0x47, 0x0D, 0x93, 0xE3, 0x83, 0xC1, 0x40, 0xEF, 0xBC, 0xE7,
-	0x40, 0x1C, 0x6C, 0xE0, 0x03, 0xE7, 0xD7, 0x03, 0x87, 0x93, 0x67, 0xA9, 0x16, 0x63, 0x6A, 0x67,
-	0xA5, 0x03, 0x02, 0xF7, 0x06, 0x13, 0x81, 0xC1, 0x45, 0x81, 0x60, 0x00, 0x6C, 0x70, 0x60, 0xEF,
-	0x02, 0x20, 0x60, 0xEF, 0x79, 0xF0, 0x50, 0xEF, 0x70, 0xB0, 0x50, 0xEF, 0x77, 0x6D, 0x40, 0x1C,
-	0x02, 0x07, 0x91, 0x23, 0x02, 0x07, 0x92, 0x23, 0x67, 0x99, 0xBF, 0x01, 0x95, 0x97, 0x87, 0x93,
-	0xFE, 0xF7, 0x12, 0xE3, 0x82, 0x01, 0xA5, 0x03, 0x20, 0x00, 0x06, 0x13, 0x60, 0xEF, 0x45, 0x81,
-	0x50, 0xEF, 0x69, 0x50, 0xB7, 0xF9, 0x78, 0x50, 0x74, 0xF1, 0x40, 0x1C, 0x90, 0x23, 0x47, 0x05,
-	0xD7, 0x83, 0x02, 0x97, 0x07, 0xC2, 0x02, 0x27, 0x9B, 0xE3, 0x83, 0xC1, 0x40, 0xEF, 0xB4, 0xE7,
-	0x60, 0xEF, 0x65, 0xE0, 0x30, 0xEF, 0x05, 0x20, 0x40, 0x1C, 0x04, 0xB0, 0x47, 0x3D, 0x04, 0x85,
-	0x02, 0x07, 0x91, 0x23, 0x02, 0x07, 0x92, 0x23, 0x02, 0x97, 0x90, 0x23, 0x02, 0xE7, 0x93, 0x23,
-	0x40, 0x1C, 0xBB, 0xE5, 0xD9, 0x03, 0x74, 0xF5, 0x90, 0x23, 0x02, 0x27, 0x47, 0x85, 0x02, 0x97,
-	0x59, 0x13, 0x09, 0x42, 0x1D, 0xE3, 0x01, 0x09, 0x40, 0xEF, 0xB0, 0xF9, 0x45, 0x01, 0x62, 0x20,
-	0x73, 0x80, 0x40, 0xEF, 0x40, 0xEF, 0x45, 0x05, 0x45, 0x09, 0x73, 0x20, 0x72, 0xC0, 0x40, 0xEF,
-	0x54, 0x80, 0x30, 0xEF, 0x98, 0x01, 0x8D, 0xA3, 0x9B, 0x21, 0x88, 0x23, 0x40, 0x1C, 0xB7, 0x7D,
-	0x02, 0x07, 0x90, 0x23, 0x98, 0x01, 0x9C, 0x23, 0x90, 0x23, 0xB4, 0xE5, 0x91, 0x23, 0x00, 0x09,
-	0x92, 0x23, 0x00, 0x09, 0x9D, 0x23, 0x00, 0x09, 0xB7, 0xED, 0x96, 0x01, 0x98, 0x01, 0x9C, 0x23,
-	0x98, 0x01, 0x8D, 0xA3, 0x91, 0x23, 0x40, 0x1C, 0x92, 0x23, 0x02, 0x07, 0x90, 0x23, 0x02, 0x07,
-	0xBC, 0x7D, 0x02, 0x07, 0x04, 0xD7, 0x9F, 0x23, 0x40, 0x1C, 0xB4, 0xF5, 0x02, 0x07, 0x9A, 0x23,
-	0x80, 0x23, 0xBC, 0xF5, 0x84, 0xCA, 0x00, 0x0A, 0xA7, 0x03, 0xBE, 0x75, 0x87, 0x93, 0x81, 0x81,
-	0xA0, 0x23, 0xAA, 0xC1, 0xA2, 0x23, 0x00, 0x07, 0xA4, 0x23, 0x00, 0x07, 0x87, 0x93, 0x00, 0x07,
-	0xA0, 0x23, 0xAB, 0x81, 0xA2, 0x23, 0x00, 0x07, 0xA4, 0x23, 0x00, 0x07, 0x1F, 0x23, 0x00, 0x07,
-	0x1F, 0x23, 0x16, 0x07, 0x1F, 0x23, 0x26, 0x07, 0x95, 0x23, 0x36, 0x07, 0x1D, 0x23, 0x90, 0x01,
-	0x80, 0x82, 0x00, 0x07, 0x81, 0x01, 0xA8, 0x83, 0xD7, 0x03, 0x66, 0xA1, 0xA7, 0x83, 0x02, 0xE8,
-	0x07, 0x42, 0x81, 0x81, 0x11, 0x63, 0x83, 0x41, 0xD3, 0x03, 0x12, 0xD7, 0x0D, 0x63, 0x03, 0x08,
-	0x88, 0x13, 0x10, 0xE3, 0x85, 0x93, 0xAA, 0xC1, 0x86, 0x13, 0x8F, 0x41, 0x86, 0x93, 0x90, 0x41,
-	0x8F, 0x93, 0x15, 0xA7, 0x85, 0x13, 0x45, 0xA7, 0x8E, 0x93, 0xAA, 0xC1, 0x8E, 0x13, 0x8F, 0x41,
-	0xD7, 0x03, 0x90, 0x41, 0xDF, 0x03, 0x02, 0x06, 0x9F, 0x3A, 0x02, 0x26, 0x00, 0x06, 0xD7, 0x03,
-	0x41, 0xE7, 0x07, 0x33, 0x00, 0x08, 0x2F, 0x03, 0x87, 0x41, 0x07, 0x42, 0x20, 0x23, 0x9F, 0x3A,
-	0x9F, 0x03, 0x01, 0xE8, 0x52, 0x63, 0x00, 0x05, 0x90, 0x23, 0x16, 0xEF, 0x86, 0x93, 0x00, 0xE5,
-	0x08, 0x11, 0x10, 0x06, 0x06, 0x09, 0x05, 0x89, 0xFC, 0xDF, 0x95, 0xE3, 0x01, 0xA7, 0xD7, 0x03,
-	0x0F, 0xE0, 0x06, 0x93, 0x07, 0x42, 0x07, 0x05, 0x9D, 0x23, 0x83, 0x41, 0xF5, 0x63, 0x00, 0xE7,
-	0x41, 0x10, 0x0A, 0xE6, 0x45, 0x18, 0x41, 0x54, 0x86, 0xA1, 0x86, 0x21, 0x06, 0x42, 0x87, 0x21,
-	0x07, 0x42, 0x06, 0xC2, 0x86, 0xC1, 0x86, 0x41, 0x17, 0x63, 0x87, 0x41, 0x55, 0x93, 0x12, 0x03,
-	0x48, 0x33, 0x40, 0xF6, 0x08, 0x33, 0x00, 0xB6, 0x08, 0x42, 0x40, 0xB8, 0x58, 0x13, 0x65, 0x85,
-	0x85, 0x93, 0x01, 0x08, 0xE9, 0x63, 0xBB, 0x75, 0xD3, 0x13, 0x1F, 0x05, 0xC8, 0x33, 0x40, 0xF6,
-	0x08, 0x33, 0x00, 0x66, 0x08, 0x42, 0x40, 0x68, 0x01, 0x08, 0x58, 0x13, 0x1D, 0x05, 0xEE, 0x63,
-	0x40, 0xF7, 0x53, 0x13, 0x00, 0x67, 0x48, 0x33, 0x40, 0x68, 0x08, 0x33, 0x58, 0x13, 0x08, 0x42,
-	0xE3, 0x63, 0x01, 0x08, 0x45, 0x85, 0x1D, 0x05, 0x02, 0xB8, 0x98, 0x23, 0x16, 0xC7, 0x9E, 0x23,
-	0x26, 0xD7, 0x9E, 0x23, 0x36, 0xE7, 0x9E, 0x23, 0x80, 0x00, 0x87, 0x37, 0x00, 0xEE, 0xA0, 0x23,
-	0x7F, 0xFF, 0x86, 0xB7, 0x92, 0x23, 0x77, 0x61, 0x16, 0xFD, 0x00, 0xEE, 0xFF, 0xF7, 0x47, 0x13,
-	0x00, 0x05, 0x20, 0x23, 0x00, 0x05, 0x22, 0x23, 0x00, 0x05, 0x24, 0x23, 0x00, 0xDE, 0x20, 0x23,
-	0x00, 0xEE, 0x12, 0x23, 0x00, 0x07, 0x9D, 0x23, 0x17, 0xA7, 0x87, 0x13, 0x87, 0x93, 0x45, 0x81,
-	0x08, 0x93, 0x47, 0xA7, 0x03, 0x13, 0x10, 0x00, 0x0E, 0x13, 0x09, 0x40, 0x0E, 0x93, 0x12, 0xA0,
-	0x0F, 0x13, 0x12, 0xC0, 0x15, 0x03, 0x09, 0x50, 0x16, 0x83, 0x00, 0x47, 0x86, 0x33, 0x00, 0x07,
-	0x8F, 0x63, 0x40, 0xA6, 0x56, 0x83, 0x04, 0xA6, 0x06, 0x85, 0x00, 0x67, 0x82, 0xC1, 0x06, 0xC2,
-	0x00, 0xD7, 0x13, 0x23, 0x04, 0xD8, 0xF6, 0x63, 0x04, 0xA6, 0x06, 0x93, 0x14, 0xD3, 0x77, 0x63,
-	0x09, 0x56, 0x06, 0x93, 0x14, 0xDE, 0x76, 0x63, 0x41, 0xF6, 0x58, 0x13, 0x00, 0xC8, 0x46, 0xB3,
-	0x41, 0x06, 0x86, 0xB3, 0x14, 0xDE, 0xC1, 0x63, 0x00, 0xDF, 0x54, 0x63, 0x03, 0xC0, 0x05, 0x93,
-	0x02, 0xC5, 0x86, 0xB3, 0x40, 0xA6, 0xD8, 0x13, 0x16, 0x63, 0x86, 0xC2, 0x56, 0xFD, 0x00, 0x08,
-	0x00, 0xC0, 0x53, 0x63, 0x96, 0xAA, 0x46, 0x85, 0x00, 0xD7, 0x12, 0x23, 0x00, 0x07, 0x13, 0x23,
-	0x10, 0x07, 0x07, 0x13, 0xF8, 0xE7, 0x99, 0xE3, 0x1F, 0x03, 0x80, 0x82, 0x40, 0xE3, 0x00, 0x06,
-	0x10, 0x23, 0xEA, 0xEF, 0xBD, 0x61, 0x00, 0xE6, 0x17, 0xE3, 0x45, 0x85, 0x58, 0x13, 0xF2, 0xB3,
-	0x45, 0xB3, 0x40, 0xF6, 0x85, 0xB3, 0x01, 0x06, 0x05, 0xC2, 0x41, 0x05, 0x48, 0x25, 0x81, 0xC1,
-	0x90, 0xA1, 0x83, 0x13, 0x0A, 0xB8, 0x68, 0x63, 0x40, 0xF6, 0xDF, 0x13, 0x01, 0xE6, 0xC5, 0xB3,
-	0x41, 0xE5, 0x85, 0xB3, 0x81, 0xC1, 0x05, 0xC2, 0x08, 0xB8, 0x6E, 0x63, 0x40, 0xF7, 0x5F, 0x13,
-	0x01, 0xE7, 0x45, 0xB3, 0x41, 0xE5, 0x85, 0xB3, 0x81, 0xC1, 0x05, 0xC2, 0x08, 0xB8, 0x64, 0x63,
-	0x00, 0x03, 0x18, 0x03, 0x41, 0xE3, 0x4F, 0x11, 0x85, 0x93, 0xEF, 0x0F, 0xAF, 0x83, 0xAB, 0x81,
-	0x08, 0x05, 0x00, 0x05, 0x96, 0x7E, 0x08, 0x42, 0x00, 0x45, 0xAF, 0x83, 0x41, 0x08, 0x58, 0x13,
-	0x01, 0x03, 0x10, 0x23, 0xAF, 0x83, 0x96, 0xFE, 0xC1, 0x90, 0x00, 0x85, 0x97, 0x7E, 0xC1, 0xD4,
-	0x1B, 0xE3, 0xC5, 0x98, 0xD8, 0x03, 0xEB, 0xE8, 0xDF, 0x03, 0x17, 0xA7, 0x86, 0x09, 0x17, 0xC7,
-	0x98, 0x7A, 0x86, 0x89, 0x9D, 0x23, 0x96, 0x42, 0xD8, 0x03, 0x16, 0xC7, 0xD6, 0x03, 0x27, 0xC7,
-	0x87, 0x09, 0x27, 0xA7, 0x00, 0x03, 0x10, 0x23, 0x96, 0xB2, 0x96, 0x42, 0x26, 0xD7, 0x9D, 0x23,
-	0x37, 0xC7, 0xD6, 0x03, 0x37, 0xA7, 0xD6, 0x83, 0x00, 0x05, 0xA0, 0x23, 0x00, 0x05, 0xA2, 0x23,
-	0x97, 0x36, 0x96, 0xB2, 0x36, 0xE7, 0x9D, 0x23, 0x98, 0x23, 0x77, 0x61, 0xA4, 0x23, 0x02, 0xE8,
-	0xB5, 0x9D, 0x00, 0x05, 0xAB, 0x81, 0x87, 0x13, 0x00, 0x03, 0x10, 0x23, 0x00, 0x07, 0x20, 0x23,
-	0x00, 0x07, 0x22, 0x23, 0x00, 0x07, 0x24, 0x23, 0x02, 0x08, 0x98, 0x23, 0x16, 0x07, 0x9E, 0x23,
-	0x26, 0x07, 0x9E, 0x23, 0x36, 0x07, 0x9E, 0x23, 0x05, 0x93, 0xB5, 0x81, 0xBD, 0xC9, 0x07, 0x80,
-	0x05, 0xA0, 0x05, 0x93, 0x45, 0xF9, 0xB5, 0xF1, 0x87, 0x13, 0xB5, 0xE1, 0x57, 0x83, 0x94, 0x01,
-	0x06, 0x93, 0x00, 0x07, 0x85, 0x93, 0x04, 0x80, 0x07, 0x85, 0x94, 0x01, 0x83, 0xC1, 0x07, 0xC2,
-	0x00, 0xF7, 0x10, 0x23, 0x00, 0x07, 0x57, 0x03, 0x81, 0x81, 0xA7, 0x83, 0x83, 0x41, 0x07, 0x42,
-	0x20, 0xE6, 0xEE, 0x63, 0x81, 0x01, 0xA7, 0x03, 0x57, 0x03, 0x66, 0xA1, 0x07, 0x42, 0x02, 0x87,
-	0x18, 0x63, 0x83, 0x41, 0xD6, 0x83, 0x32, 0xD7, 0x11, 0x01, 0x00, 0x05, 0xA7, 0x37, 0x06, 0xC2,
-	0xCE, 0x22, 0x20, 0x00, 0x06, 0x13, 0x82, 0xC1, 0x85, 0x13, 0x04, 0x80, 0x07, 0x13, 0x8B, 0x01,
-	0x78, 0x63, 0x80, 0x07, 0x5E, 0x83, 0x14, 0xD6, 0x5F, 0x03, 0x2C, 0x27, 0x86, 0x13, 0x2C, 0x47,
-	0x85, 0x93, 0x86, 0x81, 0x88, 0x13, 0x87, 0x01, 0x4E, 0x01, 0x91, 0x01, 0x3E, 0x80, 0x0F, 0x93,
-	0x42, 0x89, 0x43, 0x05, 0x03, 0x10, 0x03, 0x93, 0x03, 0x20, 0x04, 0x13, 0x00, 0x1E, 0x16, 0x93,
-	0xD8, 0x83, 0x96, 0xAA, 0x56, 0x83, 0x00, 0x06, 0x08, 0xC2, 0x00, 0x06, 0x41, 0x08, 0xD8, 0x93,
-	0x25, 0x1F, 0xD8, 0x63, 0x06, 0xC2, 0x06, 0x8D, 0x00, 0x58, 0x10, 0x23, 0x00, 0x65, 0x90, 0x23,
-	0xEC, 0x63, 0x82, 0xC1, 0x10, 0x23, 0x22, 0xD3, 0x06, 0x09, 0x00, 0xD6, 0x08, 0x09, 0x05, 0x89,
-	0x22, 0x6E, 0x13, 0x63, 0x00, 0x05, 0x55, 0x83, 0x2A, 0x47, 0x18, 0x03, 0x85, 0xC1, 0x05, 0xC2,
-	0x87, 0x81, 0x86, 0x13, 0x87, 0xC1, 0x86, 0x93, 0x0D, 0x05, 0xD3, 0x63, 0x00, 0x25, 0x55, 0x83,
-	0x4A, 0x47, 0x18, 0x03, 0x85, 0xC1, 0x05, 0xC2, 0x0B, 0x05, 0xDB, 0x63, 0x8A, 0x81, 0x85, 0x93,
-	0x00, 0x05, 0xD8, 0x03, 0x2A, 0x67, 0x18, 0x83, 0x58, 0x13, 0x08, 0x42, 0x50, 0x63, 0x41, 0x08,
-	0xD5, 0x83, 0x0B, 0x18, 0x18, 0x03, 0x00, 0x25, 0x05, 0xC2, 0x4A, 0x67, 0xD8, 0x63, 0x85, 0xC1,
-	0xD5, 0x83, 0x09, 0x05, 0x98, 0x03, 0x01, 0x87, 0x18, 0x83, 0x15, 0x07, 0x05, 0x85, 0x00, 0x06,
-	0x81, 0xC1, 0x05, 0xC2, 0x00, 0xB7, 0x9C, 0x23, 0x01, 0x08, 0xD4, 0x63, 0x01, 0x06, 0x10, 0x23,
-	0x00, 0x06, 0x98, 0x83, 0x01, 0x08, 0xC4, 0x63, 0x01, 0x06, 0x90, 0x23, 0x25, 0x07, 0x98, 0x03,
-	0x00, 0x26, 0x18, 0x83, 0x01, 0x08, 0xD4, 0x63, 0x01, 0x06, 0x11, 0x23, 0x00, 0x26, 0x98, 0x83,
-	0x01, 0x08, 0xC4, 0x63, 0x01, 0x06, 0x91, 0x23, 0x9C, 0x63, 0x48, 0x39, 0x98, 0x03, 0x05, 0x05,
-	0x15, 0x83, 0x00, 0x06, 0x85, 0xB3, 0x00, 0x06, 0xD8, 0x13, 0x41, 0x05, 0x45, 0xB3, 0x41, 0xF5,
-	0x85, 0xB3, 0x00, 0xB8, 0x18, 0x03, 0x41, 0x05, 0x42, 0x63, 0x2A, 0x87, 0x98, 0x03, 0x02, 0xB8,
-	0x15, 0x83, 0x00, 0x26, 0x85, 0xB3, 0x00, 0x26, 0xD8, 0x13, 0x41, 0x05, 0x45, 0xB3, 0x41, 0xF5,
-	0x85, 0xB3, 0x00, 0xB8, 0x18, 0x03, 0x41, 0x05, 0x5C, 0x63, 0x4A, 0x87, 0x85, 0xB7, 0x00, 0xB8,
-	0x05, 0x85, 0x80, 0x01, 0x86, 0x37, 0xC2, 0x0C, 0x16, 0x7D, 0x7F, 0xFF, 0x00, 0x07, 0x9C, 0x23,
-	0x56, 0x83, 0xC2, 0x90, 0x16, 0x03, 0x00, 0x05, 0x06, 0xC2, 0x2A, 0x47, 0xD1, 0x63, 0x86, 0xC1,
-	0x56, 0x83, 0x16, 0xC6, 0x16, 0x03, 0x00, 0x25, 0x06, 0xC2, 0x4A, 0x47, 0xD9, 0x63, 0x86, 0xC1,
-	0x86, 0x93, 0x14, 0xC6, 0xD6, 0x03, 0x8A, 0x81, 0x15, 0x83, 0x00, 0x06, 0x06, 0x42, 0x2A, 0x67,
-	0x5F, 0x63, 0x86, 0x41, 0xD6, 0x83, 0x12, 0xB6, 0x17, 0x03, 0x00, 0x26, 0x06, 0xC2, 0x4A, 0x67,
-	0xD7, 0x63, 0x86, 0xC1, 0xD6, 0x83, 0x12, 0xE6, 0x47, 0x35, 0x01, 0x87, 0x04, 0xD7, 0x75, 0x63,
-	0x17, 0x87, 0x97, 0x03, 0x27, 0x87, 0x96, 0x03, 0x85, 0x93, 0x66, 0x89, 0x96, 0x83, 0xFF, 0x46,
-	0x07, 0x33, 0x37, 0x87, 0x06, 0x33, 0x02, 0xB7, 0x87, 0x35, 0x02, 0xB6, 0x16, 0xE7, 0x9C, 0x23,
-	0x02, 0xB6, 0x86, 0xB3, 0x8F, 0x51, 0x86, 0x35, 0x26, 0xC7, 0x9C, 0x23, 0x9C, 0x23, 0x86, 0xB5,
-	0x8F, 0x55, 0x36, 0xD7, 0xD7, 0x03, 0xEB, 0x09, 0x46, 0x85, 0xA5, 0x61, 0x11, 0x63, 0x8B, 0x0D,
-	0x99, 0x23, 0x12, 0xD7, 0x44, 0x72, 0x02, 0xE7, 0x80, 0x82, 0x61, 0x05, 0x93, 0x81, 0x86, 0x13,
-	0x15, 0x07, 0x93, 0x03, 0x00, 0x06, 0x17, 0x03, 0x8B, 0x01, 0x88, 0x13, 0x40, 0xE3, 0x07, 0x33,
-	0x41, 0xF7, 0x56, 0x93, 0x8F, 0x15, 0x8F, 0x35, 0x86, 0x93, 0x07, 0x42, 0x87, 0x41, 0x93, 0x01,
-	0x00, 0xE8, 0x10, 0x23, 0x19, 0x07, 0x98, 0x83, 0x00, 0x06, 0x97, 0x03, 0x00, 0x66, 0x10, 0x23,
-	0x01, 0x16, 0x90, 0x23, 0x40, 0xE8, 0x87, 0x33, 0x41, 0xF7, 0x55, 0x13, 0x8F, 0x09, 0x8F, 0x29,
-	0x87, 0x41, 0x07, 0x42, 0x8A, 0x81, 0x85, 0x13, 0x00, 0xE5, 0x10, 0x23, 0x25, 0x07, 0x98, 0x83,
-	0x00, 0x26, 0x17, 0x03, 0x01, 0x16, 0x11, 0x23, 0x40, 0xE8, 0x87, 0x33, 0x41, 0xF7, 0x53, 0x13,
-	0x00, 0xE3, 0x47, 0x33, 0x40, 0x67, 0x07, 0x33, 0x87, 0x41, 0x07, 0x42, 0x00, 0xE8, 0x11, 0x23,
-	0x29, 0x07, 0x98, 0x03, 0x00, 0x26, 0x97, 0x03, 0x01, 0x06, 0x91, 0x23, 0x40, 0xE8, 0x07, 0x33,
-	0x41, 0xF7, 0x53, 0x13, 0x00, 0xE3, 0x47, 0x33, 0x40, 0x67, 0x07, 0x33, 0x87, 0x41, 0x07, 0x42,
-	0x00, 0xE5, 0x11, 0x23, 0x4E, 0x05, 0xBB, 0x81, 0x10, 0x23, 0xB3, 0x55, 0xB3, 0xF1, 0x00, 0x86,
-	0x00, 0x05, 0xD8, 0x83, 0x06, 0xC2, 0x16, 0xFD, 0x08, 0xC2, 0x08, 0x85, 0xD8, 0x93, 0x82, 0xC1,
-	0x10, 0x23, 0x01, 0x08, 0x10, 0x23, 0x00, 0x68, 0x90, 0x23, 0x00, 0xD6, 0xE4, 0x63, 0x01, 0x15,
-	0x10, 0x23, 0x00, 0xDE, 0xE2, 0xE3, 0x01, 0xD6, 0x90, 0x23, 0xDB, 0xE8, 0xBB, 0x71, 0x01, 0xE5,
-	0x17, 0x87, 0x86, 0x93, 0x88, 0x93, 0x00, 0x30, 0x65, 0x09, 0x47, 0x87, 0x97, 0x03, 0x48, 0x09,
-	0x05, 0xB3, 0x00, 0x06, 0x85, 0x85, 0x40, 0xE5, 0x02, 0xB8, 0x57, 0x63, 0x00, 0xB6, 0x10, 0x23,
-	0x00, 0x06, 0x55, 0x83, 0x07, 0x42, 0x97, 0x2E, 0x41, 0x63, 0x87, 0x41, 0x90, 0x23, 0x02, 0xE5,
-	0x86, 0x93, 0x00, 0xE6, 0x06, 0x09, 0x10, 0x06, 0xFC, 0xD8, 0x9B, 0xE3, 0x00, 0x07, 0x9C, 0x23,
-	0x02, 0x07, 0x99, 0x23, 0x10, 0x23, 0xB5, 0xCD, 0xBF, 0xD9, 0x01, 0x06, 0x00, 0xA6, 0x90, 0x23,
-	0x67, 0x09, 0xB7, 0xCD, 0x16, 0xE7, 0x9C, 0x23, 0x26, 0xE7, 0x9C, 0x23, 0x36, 0xE7, 0x9C, 0x23,
-	0x00, 0x07, 0x9C, 0x23, 0x02, 0x07, 0x99, 0x23, 0x11, 0x41, 0x80, 0x82, 0x14, 0x93, 0xC2, 0x26,
-	0xC4, 0x22, 0x00, 0x35, 0x84, 0x2A, 0xC0, 0x4A, 0x01, 0x05, 0x19, 0x13, 0x94, 0x23, 0x85, 0x26,
-	0xC6, 0x06, 0x8C, 0x01, 0x2C, 0xD0, 0x20, 0xEF, 0x00, 0x14, 0x85, 0x13, 0x2C, 0x50, 0x20, 0xEF,
-	0x00, 0x24, 0x85, 0x13, 0x2B, 0xD0, 0x20, 0xEF, 0x00, 0x34, 0x85, 0x13, 0x2B, 0x50, 0x20, 0xEF,
-	0x01, 0x09, 0x59, 0x13, 0x45, 0x81, 0x46, 0x15, 0x20, 0xEF, 0x85, 0x4A, 0x15, 0x93, 0x65, 0xD0,
-	0x87, 0x93, 0x00, 0x14, 0x97, 0xAE, 0x91, 0x81, 0x00, 0x07, 0xD6, 0x83, 0x06, 0xC2, 0x04, 0x22,
-	0xE2, 0x8D, 0x86, 0xC1, 0x81, 0x81, 0xA6, 0x83, 0xD7, 0x03, 0x96, 0xA2, 0x92, 0x23, 0x16, 0x86,
-	0x87, 0x13, 0x16, 0xE6, 0x97, 0x2E, 0x8F, 0xC1, 0x10, 0x23, 0x66, 0x89, 0x47, 0x05, 0x00, 0xD7,
-	0x00, 0xE7, 0x90, 0x23, 0x81, 0x81, 0xA5, 0x03, 0x17, 0x03, 0x95, 0x22, 0x1A, 0x23, 0x16, 0x05,
-	0x17, 0x83, 0x16, 0x05, 0x4B, 0x63, 0x17, 0x05, 0x07, 0x13, 0x02, 0x07, 0x41, 0x63, 0x06, 0x40,
-	0x17, 0x03, 0x02, 0xF7, 0x07, 0x95, 0x14, 0xC5, 0x40, 0xF7, 0x56, 0x93, 0x14, 0xC5, 0x57, 0x03,
-	0x8F, 0x15, 0x8F, 0x35, 0x83, 0x41, 0x07, 0x42, 0x3E, 0x70, 0x06, 0x93, 0x02, 0xE6, 0xFB, 0x63,
-	0x44, 0x22, 0x40, 0xB2, 0x49, 0x02, 0x44, 0x92, 0x80, 0x82, 0x01, 0x41, 0xF9, 0xC0, 0x07, 0x13,
-	0xFE, 0xE7, 0xC8, 0xE3, 0x14, 0xC5, 0x17, 0x03, 0x40, 0xF7, 0x56, 0x93, 0x14, 0xC5, 0x57, 0x03,
-	0x8F, 0x15, 0x8F, 0x35, 0x83, 0x41, 0x07, 0x42, 0x3E, 0x70, 0x06, 0x93, 0xFC, 0xE6, 0xEA, 0xE3,
-	0x18, 0x23, 0x17, 0xED, 0xB7, 0xE9, 0x16, 0xF5, 0xC2, 0x26, 0x11, 0x41, 0x81, 0x81, 0xA5, 0x83,
-	0x17, 0x93, 0xC4, 0x22, 0x14, 0x13, 0x00, 0x15, 0x87, 0x13, 0x00, 0x85, 0x86, 0xB3, 0x86, 0x81,
-	0x97, 0x3E, 0x00, 0x85, 0x18, 0x66, 0x96, 0x03, 0x00, 0x07, 0x57, 0x03, 0x51, 0x63, 0xC6, 0x06,
-	0x87, 0x13, 0x06, 0xE6, 0x06, 0x05, 0x8C, 0xC1, 0x93, 0x23, 0x97, 0x3E, 0x56, 0x83, 0x18, 0xC6,
-	0xA6, 0x37, 0x00, 0x07, 0x56, 0x03, 0x20, 0x00, 0x06, 0x85, 0xAC, 0x26, 0x82, 0xC1, 0x06, 0xC2,
-	0x00, 0xD7, 0x10, 0x23, 0x02, 0xD6, 0x79, 0x63, 0x8F, 0xC1, 0x85, 0x13, 0x96, 0x83, 0x97, 0xAA,
-	0x10, 0x23, 0x02, 0x65, 0x97, 0x03, 0x00, 0x07, 0x86, 0xB3, 0x00, 0x07, 0x86, 0xB5, 0x02, 0xE6,
-	0x07, 0x42, 0x8F, 0x15, 0x8B, 0x61, 0xD6, 0x83, 0x90, 0x23, 0x87, 0x41, 0x54, 0x63, 0x00, 0xE7,
-	0x90, 0x23, 0x00, 0xD7, 0x40, 0xB2, 0x00, 0xD7, 0x44, 0x92, 0x44, 0x22, 0x80, 0x82, 0x01, 0x41,
-	0x18, 0x06, 0x93, 0x23, 0x18, 0x06, 0x94, 0x23, 0xA7, 0x83, 0x35, 0x49, 0x47, 0x0D, 0x81, 0x81,
-	0x9E, 0x23, 0x97, 0xA2, 0xB7, 0xC5, 0x18, 0xE7, 0x81, 0x81, 0xA7, 0x03, 0x00, 0x85, 0x15, 0x93,
-	0x87, 0x01, 0x86, 0x93, 0x06, 0x33, 0x05, 0x06, 0x96, 0xAA, 0x00, 0xB7, 0x18, 0x86, 0x17, 0x83,
-	0x00, 0x06, 0xD6, 0x83, 0x00, 0xD7, 0xD6, 0x63, 0x14, 0x23, 0x07, 0x85, 0x80, 0x82, 0x18, 0xF6,
-	0x91, 0x81, 0x86, 0x93, 0xD7, 0x83, 0x96, 0xAA, 0x14, 0x23, 0x00, 0x06, 0x13, 0x23, 0x18, 0x06,
-	0x07, 0xC2, 0x18, 0x06, 0xC7, 0x99, 0x87, 0xC1, 0x16, 0x86, 0x57, 0x83, 0x00, 0x06, 0x90, 0x23,
-	0x16, 0xF6, 0x12, 0x23, 0x81, 0x01, 0xA7, 0x83, 0xD6, 0x03, 0x68, 0x21, 0x07, 0xB3, 0x04, 0xC7,
-	0x96, 0x83, 0x00, 0xB7, 0x06, 0x42, 0x16, 0x47, 0x20, 0x00, 0xA7, 0xB7, 0x87, 0x93, 0x82, 0x41,
-	0x13, 0x63, 0x80, 0x07, 0xD7, 0x83, 0x09, 0x06, 0x87, 0xB3, 0x2C, 0x07, 0x87, 0xBD, 0x02, 0xD7,
-	0x87, 0xC1, 0x07, 0xC2, 0x47, 0x85, 0xE3, 0x91, 0x47, 0x81, 0xE2, 0x91, 0x06, 0x33, 0x8E, 0x9D,
-	0x12, 0x23, 0x00, 0xB7, 0x56, 0x83, 0x16, 0xD6, 0x47, 0x8D, 0x19, 0xC6, 0x00, 0xF6, 0x9D, 0x63,
-	0x8B, 0xC1, 0x86, 0x93, 0x90, 0x23, 0x96, 0xAA, 0x86, 0x93, 0x00, 0x06, 0x96, 0xAA, 0x8B, 0x81,
-	0x90, 0x23, 0x47, 0x85, 0x07, 0xB3, 0x00, 0xF6, 0x47, 0x09, 0x00, 0xB7, 0x18, 0xE7, 0x9E, 0x23,
-	0x92, 0x01, 0x87, 0x13, 0x56, 0x83, 0x97, 0x2A, 0x97, 0x03, 0x00, 0x07, 0x06, 0xC2, 0x16, 0x07,
-	0x40, 0xF7, 0x56, 0x13, 0x16, 0x07, 0xD7, 0x03, 0x86, 0x85, 0x86, 0xC1, 0x8F, 0x11, 0x8F, 0x31,
-	0x83, 0x41, 0x07, 0x42, 0x04, 0xD7, 0x51, 0x63, 0x17, 0x07, 0x97, 0x03, 0x00, 0xE0, 0x59, 0x63,
-	0x98, 0x23, 0x17, 0x7D, 0x80, 0x82, 0x16, 0xE7, 0x2C, 0x67, 0xD7, 0x83, 0xC3, 0x19, 0xBF, 0xBD,
-	0xBF, 0xC5, 0x07, 0x05, 0x17, 0x47, 0x96, 0x83, 0x40, 0x00, 0x07, 0x13, 0x00, 0xD7, 0x4B, 0x63,
-	0x91, 0x01, 0x87, 0x13, 0x57, 0x03, 0x95, 0x3A, 0x96, 0xBA, 0x00, 0x05, 0x16, 0xD7, 0x9A, 0x23,
-	0x9A, 0x23, 0x80, 0x82, 0x80, 0x82, 0x16, 0xE7, 0x81, 0x81, 0xA7, 0x03, 0x20, 0x00, 0xA7, 0xB7,
-	0x80, 0x07, 0x87, 0x93, 0x2C, 0x87, 0xD6, 0x83, 0x4C, 0x87, 0xD7, 0x83, 0x1A, 0xD7, 0x11, 0x23,
-	0x2A, 0xF7, 0x11, 0x23, 0xA7, 0x83, 0x80, 0x82, 0x87, 0x13, 0x81, 0x81, 0x96, 0x83, 0x92, 0x01,
-	0x92, 0x23, 0x1A, 0x27, 0x99, 0x23, 0x02, 0x07, 0x10, 0x23, 0x16, 0x07, 0x96, 0x83, 0x00, 0xD7,
-	0x99, 0x23, 0x2A, 0x27, 0x11, 0x23, 0x26, 0x07, 0x80, 0x82, 0x00, 0xD7, 0x81, 0x81, 0xA7, 0x83,
-	0xC6, 0x86, 0x71, 0x5D, 0xC2, 0xA6, 0xC4, 0xA2, 0xDE, 0x4E, 0xC0, 0xCA, 0xDA, 0x56, 0xDC, 0x52,
-	0xD4, 0x62, 0xD6, 0x5E, 0xD0, 0x6A, 0xD2, 0x66, 0xD8, 0x5A, 0xCE, 0x6E, 0x20, 0x00, 0xA5, 0xB7,
-	0x80, 0x05, 0x87, 0x13, 0x02, 0x07, 0xA4, 0x23, 0x80, 0x05, 0x85, 0x93, 0x2C, 0xE7, 0x56, 0x83,
-	0x85, 0x93, 0xC6, 0x2E, 0xC0, 0x2E, 0x8B, 0x01, 0x02, 0xD7, 0x93, 0x23, 0x74, 0x61, 0xC4, 0x42,
-	0x8A, 0x81, 0x85, 0x93, 0x2C, 0x27, 0x5A, 0x03, 0x2C, 0x47, 0x5C, 0x03, 0x00, 0x07, 0x91, 0x23,
-	0x02, 0x07, 0x92, 0x23, 0x00, 0x07, 0x9D, 0x23, 0xAA, 0xC1, 0x86, 0x13, 0x17, 0x07, 0x87, 0x93,
-	0xAB, 0x81, 0x86, 0x93, 0x45, 0x01, 0x47, 0x01, 0x40, 0x00, 0x04, 0x93, 0x8F, 0x41, 0x89, 0x93,
-	0x90, 0x41, 0x89, 0x13, 0xFF, 0xF4, 0x4D, 0x93, 0x8F, 0xC1, 0x80, 0x93, 0x92, 0x81, 0x83, 0x93,
-	0x91, 0x81, 0x82, 0x93, 0x88, 0x01, 0x8F, 0x93, 0x6C, 0x89, 0x4D, 0x65, 0x93, 0x81, 0x8F, 0x13,
-	0x93, 0x01, 0x8E, 0x93, 0x8C, 0xC1, 0x8E, 0x13, 0x86, 0x81, 0x83, 0x13, 0x87, 0x01, 0x88, 0x93,
-	0x91, 0x01, 0x88, 0x13, 0xC2, 0x2E, 0x4B, 0x89, 0x9B, 0x23, 0x4A, 0x8D, 0x9C, 0x23, 0x00, 0x07,
-	0x90, 0x23, 0x00, 0x07, 0x91, 0x23, 0x00, 0x07, 0x92, 0x23, 0x00, 0x07, 0x96, 0x23, 0x00, 0x97,
-	0x95, 0x23, 0x02, 0x07, 0x96, 0x23, 0x00, 0x07, 0x97, 0x23, 0x00, 0x07, 0x98, 0x23, 0x00, 0x07,
-	0x85, 0xB3, 0x00, 0x07, 0x90, 0x23, 0x00, 0xE9, 0x05, 0xB3, 0x00, 0x85, 0x90, 0x23, 0x00, 0xE9,
-	0x85, 0xB3, 0x01, 0xB5, 0x90, 0x23, 0x00, 0xE0, 0x85, 0xB3, 0x00, 0x05, 0x90, 0x23, 0x00, 0xE3,
-	0x15, 0x93, 0x00, 0x05, 0x8B, 0x33, 0x00, 0x15, 0x10, 0x23, 0x00, 0xB2, 0x8B, 0x33, 0x00, 0x0B,
-	0x10, 0x23, 0x00, 0xEF, 0x20, 0x23, 0x01, 0xAB, 0xA0, 0x23, 0x00, 0x06, 0x94, 0x23, 0x00, 0x06,
-	0x95, 0x23, 0x01, 0x97, 0x0B, 0x33, 0x02, 0x97, 0x10, 0x23, 0x00, 0xEF, 0x8B, 0x33, 0x00, 0x0B,
-	0x10, 0x23, 0x00, 0xEE, 0x0B, 0x33, 0x00, 0x0B, 0x10, 0x23, 0x00, 0xEE, 0x0B, 0x33, 0x01, 0x4B,
-	0x10, 0x23, 0x00, 0xE3, 0x8B, 0x33, 0x01, 0x4B, 0x10, 0x23, 0x00, 0xE8, 0x0B, 0x33, 0x01, 0x8B,
-	0x10, 0x23, 0x00, 0xE8, 0x4B, 0x02, 0x01, 0x7B, 0x87, 0x93, 0x05, 0x05, 0x9B, 0x2E, 0x10, 0x07,
-	0x00, 0x0B, 0x10, 0x23, 0x06, 0x11, 0x4B, 0x12, 0x95, 0xDA, 0x06, 0x91, 0x00, 0x05, 0x90, 0x23,
-	0x14, 0xE3, 0x07, 0x09, 0x3D, 0x85, 0xF5, 0x55, 0x92, 0x01, 0x9F, 0x23, 0x92, 0x01, 0x97, 0x23,
-	0x90, 0x01, 0x96, 0x23, 0x81, 0x01, 0xA6, 0x83, 0x07, 0x37, 0x47, 0xA2, 0x9D, 0x23, 0x00, 0x66,
-	0xA7, 0x83, 0x02, 0x86, 0x07, 0x35, 0x81, 0x81, 0x91, 0x23, 0x40, 0xB6, 0xD3, 0xF8, 0x06, 0x87,
-	0x00, 0x04, 0x47, 0x37, 0x06, 0x07, 0x90, 0x23, 0xD7, 0xB8, 0x17, 0x7D, 0x06, 0x07, 0x9B, 0x23,
-	0x94, 0x01, 0x90, 0x23, 0x96, 0x23, 0x47, 0x32, 0x98, 0x23, 0x06, 0x97, 0x56, 0x83, 0x02, 0x06,
-	0x44, 0x26, 0x2C, 0xC7, 0x8A, 0xD1, 0x9B, 0x23, 0x99, 0x23, 0x47, 0x59, 0x47, 0x41, 0x06, 0xE7,
-	0x49, 0x06, 0x44, 0x96, 0x5A, 0x62, 0x59, 0xF2, 0x5B, 0x42, 0x5A, 0xD2, 0x5C, 0x22, 0x5B, 0xB2,
-	0x5D, 0x02, 0x5C, 0x92, 0x06, 0xE7, 0x9A, 0x23, 0x61, 0x61, 0x4D, 0xF2, 0x71, 0x39, 0x80, 0x82,
-	0x97, 0x03, 0xD8, 0x4A, 0xD4, 0x52, 0x99, 0x01, 0xDE, 0x06, 0xCE, 0x5E, 0xDA, 0x26, 0xDC, 0x22,
-	0xD2, 0x56, 0xD6, 0x4E, 0xCC, 0x62, 0xD0, 0x5A, 0x47, 0x85, 0xCA, 0x66, 0x81, 0x81, 0xA6, 0x03,
-	0x1C, 0x63, 0x8B, 0xAA, 0x5C, 0x03, 0x24, 0xF7, 0x85, 0x93, 0x2A, 0x26, 0x05, 0x86, 0x03, 0x0B,
-	0x06, 0xC6, 0x15, 0x03, 0x97, 0x83, 0x95, 0xB2, 0x9B, 0x13, 0x00, 0xE5, 0x05, 0x93, 0x00, 0x8B,
-	0x07, 0x33, 0x40, 0x00, 0x86, 0xB3, 0x01, 0x66, 0x87, 0xB3, 0x40, 0xA5, 0x54, 0x83, 0x02, 0xD7,
-	0x56, 0x83, 0x19, 0x67, 0x96, 0xA6, 0x16, 0x67, 0x86, 0xC1, 0x06, 0xC2, 0x1A, 0x47, 0x19, 0x83,
-	0x00, 0x1B, 0x94, 0x13, 0x02, 0xA6, 0x86, 0xB3, 0x07, 0xC2, 0x87, 0xA9, 0x8C, 0x93, 0x87, 0xC1,
-	0x86, 0xA9, 0x92, 0x01, 0x86, 0xC1, 0x06, 0xC2, 0x16, 0x83, 0x97, 0xB6, 0x87, 0xB3, 0x17, 0x87,
-	0x66, 0xA1, 0x02, 0xD7, 0x07, 0xC2, 0x87, 0xB5, 0x12, 0x23, 0x87, 0xC1, 0xA7, 0x83, 0x18, 0xF7,
-	0xD7, 0x83, 0x81, 0x01, 0x07, 0xC2, 0x03, 0x27, 0x8E, 0x63, 0x83, 0xC1, 0x86, 0x93, 0x1E, 0xD7,
-	0x96, 0xA2, 0x92, 0x81, 0x00, 0x06, 0x97, 0x83, 0x16, 0xC7, 0x17, 0x03, 0xD6, 0x13, 0x85, 0x5E,
-	0xD7, 0x83, 0x40, 0xF7, 0x8F, 0xB1, 0x00, 0x06, 0x07, 0xC2, 0x8F, 0x91, 0xC1, 0x63, 0x83, 0xC1,
-	0x3E, 0x99, 0x1C, 0xE7, 0x81, 0x81, 0xA6, 0x83, 0xD8, 0x03, 0x47, 0x89, 0xE5, 0x63, 0x02, 0x46,
-	0x85, 0x33, 0x07, 0x07, 0x15, 0x83, 0x01, 0x66, 0x17, 0x83, 0x17, 0x25, 0x07, 0x33, 0x16, 0xA5,
-	0x07, 0x33, 0x40, 0xBC, 0xA7, 0x83, 0x02, 0xF7, 0x97, 0xDA, 0x81, 0xC1, 0x01, 0x47, 0x96, 0x03,
-	0x01, 0x47, 0xD7, 0x83, 0x8F, 0xB1, 0x86, 0x3D, 0x40, 0xC7, 0x86, 0x33, 0x87, 0x93, 0x67, 0x89,
-	0x87, 0x35, 0xE6, 0xF7, 0x07, 0x42, 0x8F, 0x91, 0x87, 0x41, 0x07, 0xC2, 0xDC, 0x63, 0x87, 0xC1,
-	0x05, 0x85, 0x16, 0xE7, 0x16, 0xB5, 0x19, 0x23, 0x01, 0x66, 0x87, 0xB3, 0x17, 0x27, 0xD7, 0x83,
-	0x00, 0x8C, 0x87, 0x33, 0x16, 0x06, 0x92, 0x23, 0x40, 0xFC, 0x07, 0xB3, 0x87, 0xC1, 0x07, 0xC2,
-	0x00, 0xF7, 0x10, 0x23, 0x26, 0x06, 0x92, 0x23, 0x81, 0x81, 0xA7, 0x03, 0xD7, 0x83, 0x9C, 0xA2,
-	0x97, 0x5A, 0x00, 0x0C, 0x01, 0x07, 0x96, 0x93, 0x16, 0xA7, 0x17, 0x83, 0x87, 0xB3, 0x86, 0xC1,
-	0x16, 0x83, 0x02, 0xD7, 0x86, 0x8D, 0x0D, 0x87, 0x97, 0xB6, 0x87, 0xB5, 0x16, 0xF7, 0x16, 0x23,
-	0x91, 0x61, 0xD7, 0x03, 0x91, 0x61, 0x8B, 0x93, 0x01, 0x87, 0x03, 0x63, 0xA7, 0x03, 0x31, 0x69,
-	0x90, 0x23, 0x81, 0x81, 0x67, 0xA1, 0x01, 0x8B, 0x06, 0x27, 0x56, 0x83, 0x82, 0xC1, 0x06, 0xC2,
-	0x04, 0xF6, 0x81, 0x63, 0x06, 0x27, 0x56, 0x83, 0x00, 0x17, 0x86, 0x13, 0x82, 0xC1, 0x06, 0xC2,
-	0x02, 0xC6, 0x89, 0x63, 0x06, 0x27, 0x56, 0x83, 0x00, 0x27, 0x86, 0x13, 0x82, 0xC1, 0x06, 0xC2,
-	0x02, 0xC6, 0x81, 0x63, 0x06, 0x27, 0x56, 0x83, 0x00, 0x37, 0x86, 0x13, 0x82, 0xC1, 0x06, 0xC2,
-	0x00, 0xC6, 0x89, 0x63, 0x06, 0x27, 0x56, 0x83, 0x06, 0xC2, 0x07, 0x91, 0x91, 0x63, 0x82, 0xC1,
-	0x06, 0x33, 0x0A, 0xF6, 0x15, 0x83, 0x01, 0x67, 0x57, 0x83, 0x16, 0x46, 0x86, 0x93, 0x18, 0x46,
-	0x97, 0xAE, 0x92, 0x81, 0x56, 0x03, 0x07, 0xC2, 0x96, 0xA2, 0x19, 0xC6, 0x90, 0x23, 0x87, 0xC1,
-	0x46, 0x8D, 0x00, 0xF6, 0x00, 0xD6, 0x1C, 0x63, 0x8F, 0xC1, 0x86, 0x93, 0x97, 0x83, 0x96, 0xA2,
-	0x87, 0xB3, 0x00, 0x06, 0x87, 0xB5, 0x02, 0xB7, 0x87, 0xC1, 0x07, 0xC2, 0x15, 0x83, 0x9B, 0x3A,
-	0x14, 0x23, 0x16, 0xCB, 0xD9, 0x63, 0x16, 0xFB, 0x14, 0x23, 0x0C, 0xF5, 0x96, 0x83, 0x16, 0xBB,
-	0xA6, 0x37, 0x99, 0x01, 0x47, 0x85, 0x20, 0x00, 0x80, 0x06, 0x06, 0x13, 0x0C, 0xF6, 0x95, 0x63,
-	0x03, 0x46, 0x17, 0x83, 0x03, 0x86, 0x13, 0x03, 0x03, 0x66, 0x1E, 0x03, 0x00, 0xF1, 0x16, 0x23,
-	0x00, 0xF1, 0x17, 0x23, 0x8B, 0x81, 0x85, 0x13, 0x18, 0x83, 0x95, 0x22, 0x47, 0x85, 0x00, 0x05,
-	0x8B, 0x81, 0x88, 0x13, 0x12, 0xF8, 0x9E, 0x63, 0x04, 0xC2, 0x94, 0xCE, 0x87, 0x93, 0x84, 0xC1,
-	0xD5, 0x63, 0x8B, 0xC1, 0x97, 0xA2, 0x0A, 0x95, 0x00, 0x07, 0x90, 0x23, 0x01, 0x15, 0x10, 0x23,
-	0x81, 0x01, 0xA6, 0x03, 0x57, 0x83, 0x46, 0x89, 0x07, 0xC2, 0x02, 0x26, 0x92, 0x63, 0x83, 0xC1,
-	0x47, 0x85, 0x12, 0xD7, 0x00, 0xF7, 0x11, 0x23, 0x5C, 0x03, 0xA2, 0x25, 0xB3, 0x75, 0x1A, 0x26,
-	0xA3, 0x9F, 0xF0, 0xEF, 0x45, 0x05, 0xB5, 0x81, 0x01, 0x75, 0x15, 0x33, 0x01, 0x05, 0x65, 0x33,
-	0x02, 0xA6, 0x92, 0x23, 0x47, 0x89, 0xB5, 0x51, 0x18, 0xF7, 0x1E, 0x23, 0x16, 0x07, 0x12, 0x23,
-	0x02, 0x06, 0x12, 0x23, 0x8F, 0xC1, 0x87, 0x93, 0x28, 0x23, 0x97, 0xA2, 0x1A, 0x23, 0x16, 0x07,
-	0x1D, 0x23, 0x16, 0xB7, 0x67, 0x09, 0x18, 0xB7, 0x00, 0xE7, 0x90, 0x23, 0x00, 0x8C, 0x87, 0xB3,
-	0x71, 0x07, 0x07, 0x13, 0x00, 0xE7, 0x90, 0x23, 0x88, 0x01, 0x87, 0x93, 0x07, 0x13, 0x97, 0xA2,
-	0x90, 0x23, 0x06, 0x50, 0xB5, 0x8D, 0x00, 0xE7, 0x40, 0xB0, 0x06, 0xB3, 0xF2, 0xD7, 0xD9, 0xE3,
-	0x16, 0xDB, 0x14, 0x23, 0x17, 0x83, 0xB7, 0x2D, 0x13, 0x03, 0x02, 0x66, 0x1E, 0x03, 0x03, 0x26,
-	0x16, 0x23, 0x02, 0xA6, 0x17, 0x23, 0x00, 0xF1, 0xBF, 0x2D, 0x00, 0xF1, 0x40, 0xB0, 0x05, 0xB3,
-	0xF4, 0xB4, 0xCB, 0xE3, 0x00, 0x87, 0x86, 0xB3, 0x00, 0x06, 0xD5, 0x03, 0x02, 0x86, 0x18, 0x83,
-	0x05, 0x42, 0x05, 0x05, 0x8C, 0x41, 0x85, 0x93, 0x90, 0x23, 0x85, 0x41, 0x95, 0xA2, 0x00, 0xA6,
-	0x00, 0x05, 0xD6, 0x83, 0x8C, 0x41, 0x86, 0x13, 0x03, 0x15, 0x4D, 0x63, 0x06, 0xC2, 0x96, 0xF2,
-	0x65, 0x09, 0x86, 0xC1, 0x02, 0xD5, 0x44, 0x63, 0x00, 0xD5, 0x90, 0x23, 0x90, 0x23, 0x97, 0xA2,
-	0x07, 0xB3, 0x01, 0x17, 0x96, 0x03, 0x00, 0x86, 0x66, 0x89, 0x00, 0x07, 0xF0, 0xD6, 0x4A, 0xE3,
-	0x90, 0x23, 0x98, 0x22, 0x10, 0x23, 0x00, 0xD7, 0xB7, 0x19, 0x00, 0x08, 0x00, 0xA5, 0x90, 0x23,
-	0x87, 0xB3, 0xBF, 0xF1, 0x08, 0x14, 0x40, 0x66, 0x07, 0xC2, 0x96, 0xA2, 0xFF, 0xC6, 0x96, 0x83,
-	0x90, 0x23, 0x87, 0xC1, 0xC6, 0xE3, 0x00, 0xF5, 0x90, 0x23, 0xFC, 0xF6, 0xB7, 0xD1, 0x00, 0xD5,
-	0x8C, 0x41, 0x87, 0x93, 0x67, 0x89, 0x94, 0x3E, 0x00, 0x05, 0x10, 0x23, 0x00, 0xF4, 0x10, 0x23,
-	0x57, 0x83, 0xBD, 0xC1, 0x07, 0xC2, 0x02, 0x26, 0xE3, 0x85, 0x83, 0xC1, 0x00, 0x07, 0x11, 0x23,
-	0x54, 0x62, 0x50, 0xF2, 0x59, 0x42, 0x54, 0xD2, 0x5A, 0x22, 0x59, 0xB2, 0x5B, 0x02, 0x5A, 0x92,
-	0x4C, 0x62, 0x4B, 0xF2, 0x61, 0x21, 0x4C, 0xD2, 0x56, 0x03, 0x80, 0x82, 0x47, 0x8D, 0x19, 0xC7,
-	0x00, 0xF6, 0x06, 0x63, 0x29, 0xC7, 0x56, 0x03, 0x00, 0xF6, 0x14, 0x63, 0xB5, 0x5D, 0x47, 0x8D,
-	0x00, 0xD7, 0x11, 0x23, 0x86, 0x93, 0xB7, 0xF1, 0xD7, 0x83, 0x90, 0xC1, 0x46, 0x3D, 0x00, 0x06,
-	0x07, 0xC2, 0x07, 0x85, 0x90, 0x23, 0x87, 0xC1, 0xD7, 0x03, 0x00, 0xF6, 0xA7, 0x83, 0x00, 0x06,
-	0x07, 0x42, 0x81, 0x81, 0x55, 0x63, 0x87, 0x41, 0xA6, 0x37, 0x02, 0xE6, 0xD7, 0x03, 0x20, 0x00,
-	0x56, 0x03, 0x06, 0xC7, 0x90, 0x23, 0x83, 0xA6, 0x06, 0x93, 0x00, 0x06, 0x97, 0x32, 0x40, 0x00,
-	0x87, 0x41, 0x07, 0x42, 0x06, 0xE7, 0x96, 0x23, 0x00, 0xE6, 0xD4, 0x63, 0x06, 0xD7, 0x96, 0x23,
-	0x06, 0x27, 0xD7, 0x03, 0x97, 0x36, 0x76, 0xE1, 0x83, 0x41, 0x07, 0x42, 0xE3, 0x63, 0x46, 0x91,
-	0x86, 0xB7, 0x0E, 0xE6, 0x07, 0x0A, 0x20, 0x00, 0x05, 0x06, 0x86, 0x93, 0x43, 0x18, 0x97, 0x36,
-	0xA7, 0xB7, 0x87, 0x02, 0x87, 0x93, 0x20, 0x00, 0x96, 0x03, 0x80, 0x07, 0x96, 0x83, 0x2A, 0xA7,
-	0x98, 0x23, 0x4A, 0xA7, 0xA0, 0x29, 0x98, 0x01, 0x98, 0x01, 0x98, 0x23, 0x66, 0x09, 0x66, 0x89,
-	0x20, 0x01, 0xA7, 0x37, 0x06, 0x07, 0x17, 0x83, 0x06, 0x07, 0x07, 0x13, 0x0C, 0xF6, 0x50, 0x63,
-	0xFC, 0xE7, 0x87, 0x93, 0x87, 0xC1, 0x07, 0xC2, 0x0C, 0xC7, 0xC2, 0x63, 0x00, 0xF7, 0x10, 0x23,
-	0x00, 0x27, 0x17, 0x83, 0x0A, 0xF6, 0xDF, 0x63, 0xFC, 0xE7, 0x87, 0x93, 0x87, 0xC1, 0x07, 0xC2,
-	0x0C, 0xD7, 0xC1, 0x63, 0x00, 0xF7, 0x11, 0x23, 0xA7, 0x37, 0x80, 0x82, 0x06, 0x93, 0x20, 0x00,
-	0xD6, 0x03, 0x80, 0x07, 0x66, 0xA1, 0x2B, 0x06, 0x80, 0x07, 0x07, 0x13, 0x00, 0xD6, 0x14, 0x63,
-	0x16, 0x07, 0x9A, 0x23, 0x4B, 0x07, 0x56, 0x83, 0x94, 0x63, 0x67, 0x21, 0x9A, 0x23, 0x00, 0xE6,
-	0x47, 0x85, 0x26, 0x07, 0x98, 0xF1, 0x98, 0x23, 0xA7, 0x37, 0xBF, 0x51, 0x05, 0x13, 0x20, 0x00,
-	0x16, 0x03, 0x80, 0x07, 0x16, 0x83, 0x2A, 0xC5, 0x58, 0x03, 0x4A, 0xC5, 0x65, 0x21, 0x2B, 0x25,
-	0x80, 0x07, 0x07, 0x13, 0x00, 0xA8, 0x14, 0x63, 0x16, 0x07, 0x9A, 0x23, 0x4B, 0x27, 0x55, 0x03,
-	0x14, 0x63, 0x67, 0x21, 0x9A, 0x23, 0x00, 0xE5, 0x47, 0x89, 0x26, 0x07, 0x98, 0xF1, 0x98, 0x23,
-	0xA7, 0x37, 0xB7, 0x85, 0x05, 0x13, 0x20, 0x00, 0x16, 0x03, 0x80, 0x07, 0x16, 0x83, 0x2A, 0xE5,
-	0xB7, 0xE1, 0x4A, 0xE5, 0x20, 0x00, 0xA7, 0x37, 0x80, 0x07, 0x07, 0x13, 0x2A, 0xA7, 0x16, 0x03,
-	0x4A, 0xA7, 0x16, 0x83, 0x91, 0x23, 0x77, 0x61, 0xB7, 0x25, 0x06, 0xE7, 0xF4, 0xC7, 0xDA, 0xE3,
-	0x03, 0x27, 0x87, 0x93, 0x87, 0xC1, 0x07, 0xC2, 0xF4, 0xF6, 0x52, 0xE3, 0x00, 0xC7, 0x10, 0x23,
-	0xDA, 0x63, 0xB7, 0x81, 0x87, 0x93, 0x00, 0xD7, 0x07, 0xC2, 0x03, 0x27, 0xD3, 0xE3, 0x87, 0xC1,
-	0x11, 0x23, 0xF4, 0xF6, 0x80, 0x82, 0x00, 0xD7, 0x81, 0xC1, 0xAE, 0x03, 0x67, 0xA1, 0x05, 0xC2,
-	0x31, 0x0E, 0x57, 0x03, 0x16, 0x13, 0x81, 0xC1, 0x1C, 0x63, 0x00, 0x85, 0x03, 0x33, 0x0C, 0xF7,
-	0x18, 0x83, 0x00, 0xCE, 0x57, 0x03, 0x0B, 0xE3, 0x66, 0x89, 0x0C, 0x03, 0xD7, 0x93, 0x18, 0xFD,
-	0x07, 0xB3, 0x40, 0x18, 0x96, 0xAE, 0x02, 0xF7, 0x68, 0x09, 0x06, 0xC2, 0x07, 0xC2, 0x82, 0xC1,
-	0x0E, 0xB3, 0x83, 0xC1, 0xD5, 0x63, 0x40, 0xF8, 0x98, 0x3E, 0x08, 0xDE, 0x08, 0xD8, 0x47, 0x63,
-	0x00, 0xB7, 0x86, 0xB3, 0x82, 0xC1, 0x06, 0xC2, 0x48, 0x01, 0x43, 0x01, 0x01, 0x18, 0x44, 0x63,
-	0xA0, 0x81, 0x45, 0x01, 0x00, 0x67, 0x0E, 0xB3, 0x04, 0xD3, 0x7B, 0x63, 0x01, 0x0E, 0x9F, 0x13,
-	0x01, 0x0F, 0x5F, 0x13, 0x04, 0xDF, 0x65, 0x63, 0x00, 0x75, 0x17, 0x13, 0x07, 0x06, 0x97, 0x42,
-	0x15, 0x03, 0x97, 0x72, 0x06, 0xC2, 0x04, 0x47, 0x86, 0xB3, 0x86, 0xC1, 0x05, 0x33, 0x40, 0x66,
-	0x56, 0x83, 0x02, 0xD5, 0x87, 0xB3, 0x01, 0xA7, 0x85, 0x29, 0x40, 0xF6, 0x05, 0x42, 0x95, 0x3E,
-	0x85, 0x33, 0x85, 0x41, 0x05, 0x42, 0x40, 0xA5, 0xA7, 0x83, 0x85, 0x41, 0x96, 0x3E, 0x81, 0x81,
-	0x0C, 0xA6, 0x19, 0x23, 0x40, 0xA5, 0x85, 0x33, 0x85, 0x41, 0x05, 0x42, 0x08, 0x05, 0x80, 0x82,
-	0x93, 0x13, 0x08, 0x42, 0x58, 0x13, 0x01, 0x0E, 0x53, 0x13, 0x41, 0x08, 0xB7, 0x79, 0x01, 0x03,
-	0x01, 0xA3, 0x55, 0x03, 0x40, 0xA0, 0x05, 0x33, 0x17, 0x13, 0xB7, 0xF9, 0x97, 0x46, 0x00, 0x75,
-	0x07, 0x06, 0x07, 0x21, 0x55, 0x03, 0x97, 0x72, 0x07, 0x86, 0x00, 0xA7, 0x40, 0xA7, 0x85, 0x33,
-	0x45, 0x01, 0xBF, 0x5D, 0xA7, 0x03, 0xBF, 0x5D, 0x66, 0x21, 0x81, 0xC1, 0x00, 0x85, 0x16, 0x93,
-	0x31, 0x87, 0x58, 0x03, 0x18, 0x63, 0x47, 0x81, 0xA6, 0x03, 0x04, 0xC8, 0x56, 0x03, 0x81, 0x01,
-	0x06, 0x42, 0x02, 0x46, 0xC2, 0x21, 0x82, 0x41, 0x00, 0xD7, 0x0E, 0x33, 0x0B, 0xEE, 0x58, 0x83,
-	0x87, 0x93, 0x68, 0x05, 0x47, 0xB3, 0xFF, 0xF8, 0x07, 0x85, 0x02, 0xF8, 0x01, 0x07, 0x96, 0x13,
-	0xC7, 0xB3, 0x82, 0x41, 0x93, 0x13, 0x02, 0xC5, 0x53, 0x13, 0x01, 0x07, 0x18, 0x63, 0x01, 0x03,
-	0x17, 0x83, 0x02, 0x03, 0x07, 0xB3, 0x01, 0xAE, 0x87, 0xB3, 0x40, 0xF6, 0xC7, 0xB3, 0x02, 0xB7,
-	0x07, 0xC2, 0x02, 0xC7, 0xA7, 0x03, 0x87, 0xC1, 0x19, 0x23, 0x81, 0x81, 0x97, 0x36, 0x2C, 0xF7,
-	0x0D, 0x27, 0x55, 0x03, 0x40, 0xA5, 0x85, 0x33, 0x85, 0x41, 0x05, 0x42, 0x18, 0xF9, 0x80, 0x82,
-	0xD8, 0x93, 0x08, 0xC2, 0x05, 0x1E, 0x01, 0x08, 0x02, 0x68, 0xFF, 0x63, 0x08, 0x93, 0x95, 0x46,
-	0x05, 0x21, 0x00, 0x75, 0x05, 0x06, 0x08, 0x86, 0x95, 0x3A, 0x98, 0xBA, 0x00, 0xA8, 0x98, 0x83,
-	0x00, 0xA5, 0x17, 0x03, 0x40, 0xC8, 0x07, 0xB3, 0x41, 0x17, 0x88, 0xB3, 0x40, 0xE8, 0x07, 0x33,
-	0x41, 0x05, 0x87, 0xB3, 0x41, 0x17, 0x07, 0x33, 0x07, 0xB3, 0x97, 0xB2, 0xC7, 0xB3, 0x02, 0xF7,
-	0x97, 0xC6, 0x02, 0xC7, 0x07, 0xC2, 0xBF, 0x79, 0x08, 0x33, 0x83, 0xC1, 0x95, 0x3E, 0x02, 0xF6,
-	0x00, 0x75, 0x07, 0x93, 0x05, 0x21, 0x07, 0x86, 0x05, 0x06, 0x97, 0xBA, 0x00, 0xA7, 0x97, 0x83,
-	0x17, 0x03, 0x95, 0x3A, 0x08, 0xB3, 0x00, 0xA5, 0x07, 0xB3, 0x40, 0xF8, 0x8F, 0x99, 0x01, 0x06,
-	0x41, 0x17, 0x87, 0xB3, 0x41, 0x05, 0x88, 0x33, 0x03, 0x07, 0x87, 0xB3, 0xA8, 0x03, 0xB7, 0xC9,
-	0xA6, 0x83, 0x81, 0xC1, 0x57, 0x03, 0x81, 0x81, 0x05, 0xC2, 0x31, 0x28, 0x81, 0xC1, 0x67, 0xA1,
-	0x00, 0x85, 0x16, 0x13, 0x0E, 0xF7, 0x15, 0x63, 0x00, 0xC8, 0x0E, 0x33, 0x0B, 0xEE, 0x13, 0x03,
-	0x0C, 0x0E, 0x5E, 0x83, 0x13, 0x7D, 0x67, 0x09, 0x40, 0x13, 0x57, 0x93, 0x02, 0xFE, 0x87, 0xB3,
-	0x07, 0x42, 0x97, 0x2E, 0x83, 0x41, 0x68, 0x89, 0x83, 0xC1, 0x07, 0xC2, 0x40, 0xF8, 0x8F, 0x33,
-	0x08, 0xEF, 0x53, 0x63, 0xC9, 0x63, 0x98, 0xBE, 0x97, 0xAE, 0x08, 0xE8, 0x83, 0xC1, 0x07, 0xC2,
-	0x48, 0x81, 0x4E, 0x01, 0x00, 0x68, 0xC4, 0x63, 0xA8, 0x2D, 0x47, 0x81, 0x01, 0xCE, 0x8F, 0x33,
-	0x04, 0xFE, 0x78, 0x63, 0x01, 0x0F, 0x17, 0x13, 0x63, 0x63, 0x83, 0x41, 0x17, 0x13, 0x04, 0xF7,
-	0x97, 0x46, 0x00, 0x75, 0x97, 0x42, 0x07, 0x06, 0x09, 0x67, 0x18, 0x03, 0x41, 0xC7, 0x87, 0xB3,
-	0x06, 0xC7, 0x57, 0x03, 0x03, 0x07, 0x87, 0xB3, 0x97, 0xBA, 0x87, 0xBD, 0x40, 0xF0, 0x07, 0xB3,
-	0x87, 0xC1, 0x07, 0xC2, 0x89, 0x05, 0x05, 0x05, 0x95, 0x36, 0x05, 0x22, 0x0C, 0xF5, 0x1A, 0x23,
-	0xD5, 0x03, 0x96, 0xB2, 0x85, 0x33, 0x0D, 0x46, 0x05, 0x42, 0x40, 0xA5, 0x80, 0x82, 0x85, 0x41,
-	0x00, 0x18, 0x87, 0x13, 0x01, 0x07, 0x18, 0x93, 0x01, 0x0F, 0x1E, 0x13, 0x41, 0x08, 0xD8, 0x93,
-	0x01, 0x0E, 0x5E, 0x13, 0x57, 0x83, 0xBF, 0x41, 0x05, 0x05, 0x06, 0xCE, 0x05, 0x22, 0x89, 0x05,
-	0x07, 0xB3, 0x95, 0x36, 0xB7, 0xD9, 0x40, 0xF0, 0x00, 0x15, 0x07, 0x93, 0x95, 0x1A, 0x05, 0x1E,
-	0x03, 0x05, 0x05, 0x13, 0x07, 0x33, 0x05, 0x06, 0x57, 0x03, 0x00, 0xA8, 0x8B, 0x85, 0x00, 0xC7,
-	0x97, 0xB6, 0x07, 0xA2, 0x40, 0xE0, 0x07, 0x33, 0x0C, 0xE7, 0x9A, 0x23, 0x07, 0x93, 0xB7, 0x55,
-	0x8B, 0x85, 0x00, 0x15, 0x97, 0xB6, 0x07, 0xA2, 0x0C, 0x07, 0x9A, 0x23, 0xA3, 0x03, 0xBF, 0x51,
-	0x11, 0x01, 0x81, 0x81, 0x99, 0x01, 0x9E, 0x83, 0x20, 0x00, 0xA7, 0xB7, 0x12, 0x23, 0xCE, 0x22,
-	0x48, 0x89, 0x00, 0x01, 0x80, 0x07, 0x87, 0x93, 0x86, 0x13, 0x6F, 0xA1, 0x87, 0x13, 0x8E, 0xC1,
-	0x42, 0x8D, 0x8D, 0xC1, 0x85, 0x13, 0x6E, 0x09, 0x88, 0x13, 0x8D, 0x41, 0x85, 0x93, 0x8A, 0x01,
-	0x4F, 0x05, 0x8E, 0x41, 0x00, 0x41, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x00, 0xD8, 0xD5, 0x63,
-	0x61, 0x05, 0x44, 0x72, 0x56, 0x83, 0x80, 0x82, 0x06, 0xC2, 0x00, 0x41, 0x86, 0x93, 0x86, 0xC1,
-	0x06, 0x92, 0x07, 0x06, 0xD6, 0x83, 0x96, 0xBE, 0x9E, 0x63, 0x00, 0x06, 0x56, 0x83, 0x27, 0xF6,
-	0x06, 0xC2, 0x00, 0x41, 0x06, 0x86, 0x86, 0xC1, 0xD3, 0x83, 0x96, 0xAA, 0x03, 0x85, 0x00, 0x06,
-	0xD3, 0x93, 0x03, 0xC2, 0x90, 0x23, 0x01, 0x03, 0x56, 0x83, 0x00, 0x76, 0x06, 0xC2, 0x00, 0x41,
-	0x06, 0x86, 0x86, 0xC1, 0xD6, 0x83, 0x96, 0xAA, 0x06, 0xC2, 0x00, 0x06, 0x9F, 0x63, 0x82, 0xC1,
-	0x56, 0x83, 0x13, 0x16, 0x08, 0x00, 0x00, 0x41, 0x86, 0xC1, 0x06, 0xC2, 0x96, 0xAA, 0x06, 0x86,
-	0x00, 0x06, 0x90, 0x23, 0x00, 0x41, 0x53, 0x83, 0x00, 0x41, 0x56, 0x83, 0xD3, 0x93, 0x03, 0xC2,
-	0x03, 0xA2, 0x41, 0x03, 0x93, 0x9A, 0x06, 0xC2, 0x0C, 0x83, 0x93, 0x83, 0x06, 0x86, 0x86, 0xC1,
-	0x9C, 0x23, 0x96, 0xA2, 0x56, 0x83, 0xFE, 0x76, 0x06, 0xC2, 0x00, 0x41, 0x06, 0x86, 0x86, 0xC1,
-	0xD3, 0x83, 0x96, 0xC2, 0x56, 0x83, 0x00, 0x06, 0x03, 0xC2, 0x00, 0x41, 0x86, 0xC1, 0x06, 0xC2,
-	0x96, 0xA2, 0x06, 0x86, 0xFF, 0x86, 0xD6, 0x83, 0x41, 0x03, 0xD3, 0x93, 0x86, 0xC1, 0x06, 0xC2,
-	0x16, 0xD3, 0x81, 0x63, 0x00, 0x41, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x96, 0xAE, 0x06, 0x86,
-	0x00, 0x06, 0x90, 0x23, 0x00, 0x41, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x96, 0xA2, 0x06, 0x86,
-	0xFF, 0x86, 0xD3, 0x83, 0x00, 0x41, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x96, 0xC2, 0x06, 0x86,
-	0x00, 0x06, 0xD6, 0x83, 0x40, 0xD3, 0x86, 0xB3, 0x86, 0xC1, 0x06, 0xC2, 0x00, 0xD1, 0x13, 0x23,
-	0x00, 0x41, 0x53, 0x83, 0x00, 0x41, 0x56, 0x83, 0xD3, 0x93, 0x03, 0xC2, 0x03, 0x86, 0x41, 0x03,
-	0x06, 0xC2, 0x93, 0xA2, 0xFF, 0x83, 0xD3, 0x83, 0x06, 0x86, 0x86, 0xC1, 0x90, 0x23, 0x96, 0xC2,
-	0x56, 0x83, 0x00, 0x76, 0x94, 0x13, 0x00, 0x61, 0x5A, 0x63, 0x01, 0x06, 0x56, 0x83, 0x00, 0x04,
-	0x06, 0xB3, 0x00, 0x61, 0x06, 0xC2, 0x40, 0xD0, 0x13, 0x23, 0x86, 0xC1, 0x56, 0x83, 0x00, 0xD1,
-	0x53, 0x83, 0x00, 0x41, 0x06, 0xC2, 0x00, 0x61, 0x86, 0x93, 0x86, 0xC1, 0x06, 0x92, 0x07, 0x06,
-	0x96, 0x83, 0x96, 0xBE, 0x03, 0xC2, 0x00, 0x26, 0x41, 0x03, 0xD3, 0x93, 0x0A, 0x76, 0xC2, 0x63,
-	0x00, 0x41, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x96, 0xB2, 0x06, 0x86, 0x01, 0xE6, 0x90, 0x23,
-	0x00, 0x41, 0x56, 0x83, 0x00, 0x41, 0x53, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x07, 0x06, 0x86, 0x93,
-	0x06, 0x92, 0x03, 0xC2, 0x41, 0x03, 0xD3, 0x93, 0x93, 0x63, 0x96, 0xBE, 0x94, 0x03, 0x07, 0xEE,
-	0x96, 0x93, 0x00, 0xA6, 0x96, 0xBA, 0x00, 0x13, 0x00, 0x86, 0x90, 0x23, 0x00, 0x41, 0x53, 0x83,
-	0x00, 0x41, 0x56, 0x83, 0xD3, 0x93, 0x03, 0xC2, 0x03, 0x86, 0x41, 0x03, 0x93, 0xB2, 0x06, 0xC2,
-	0x00, 0x03, 0xD3, 0x83, 0x06, 0xA2, 0x86, 0xC1, 0x98, 0x23, 0x96, 0x9A, 0x53, 0x83, 0x0E, 0x76,
-	0x56, 0x83, 0x00, 0x41, 0x03, 0xC2, 0x00, 0x41, 0x41, 0x03, 0xD3, 0x93, 0x06, 0xC2, 0x03, 0x86,
-	0xD3, 0x83, 0x93, 0xBA, 0x86, 0xC1, 0x00, 0x03, 0x96, 0x9A, 0x06, 0xA2, 0x0E, 0x76, 0x97, 0x23,
-	0x00, 0x41, 0x56, 0x83, 0x06, 0xC2, 0x06, 0x85, 0x12, 0x23, 0x86, 0xC1, 0xBD, 0x19, 0x00, 0xD1,
-	0x01, 0x1E, 0x95, 0x63, 0x00, 0xC6, 0x94, 0x03, 0x94, 0x03, 0xBF, 0x69, 0xBF, 0x51, 0x00, 0x46,
-	0x00, 0x41, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x96, 0xB2, 0x06, 0x86, 0x00, 0x06, 0x90, 0x23,
-	0x00, 0x41, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x96, 0xBA, 0x06, 0x86, 0x01, 0xC6, 0x90, 0x23,
-	0x56, 0x83, 0xBF, 0xB5, 0x06, 0xC2, 0x00, 0x41, 0x06, 0x86, 0x86, 0xC1, 0xD3, 0x83, 0x96, 0xAE,
-	0x03, 0x85, 0x00, 0x06, 0xD3, 0x93, 0x03, 0xC2, 0x90, 0x23, 0x01, 0x03, 0x56, 0x83, 0x00, 0x76,
-	0x06, 0xC2, 0x00, 0x41, 0x06, 0x86, 0x86, 0xC1, 0xD3, 0x83, 0x96, 0xAE, 0x56, 0x83, 0x00, 0x06,
-	0x03, 0xC2, 0x00, 0x41, 0x86, 0xC1, 0x06, 0xC2, 0x07, 0x06, 0x86, 0x93, 0x96, 0xBE, 0x06, 0x92,
-	0x00, 0x86, 0x96, 0x83, 0x01, 0x03, 0xD3, 0x93, 0xF2, 0x76, 0xDA, 0xE3, 0x00, 0x41, 0x56, 0x83,
-	0x00, 0x41, 0x53, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x07, 0x06, 0x86, 0x93, 0x96, 0xBE, 0x06, 0x92,
-	0xD4, 0x03, 0x03, 0xC2, 0xD3, 0x93, 0x00, 0x86, 0x96, 0x93, 0x41, 0x03, 0x96, 0xAE, 0x00, 0x13,
-	0x00, 0x86, 0x90, 0x23, 0x00, 0x41, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x96, 0xB2, 0x06, 0x86,
-	0x01, 0x16, 0x90, 0x23, 0x56, 0x83, 0xB7, 0xB5, 0x06, 0xC2, 0x00, 0x41, 0x06, 0x86, 0x86, 0xC1,
-	0x90, 0x23, 0x96, 0xB2, 0xBF, 0xA9, 0x00, 0x56, 0xA5, 0x61, 0xD7, 0x83, 0x20, 0x00, 0xA7, 0xB7,
-	0xF5, 0x27, 0xD7, 0x03, 0x1A, 0x63, 0x67, 0xA1, 0x97, 0x03, 0x0A, 0xF7, 0x47, 0x85, 0x9F, 0xE1,
-	0x0C, 0xF7, 0x01, 0x63, 0x8F, 0x21, 0x97, 0x03, 0x86, 0x93, 0x47, 0x95, 0x14, 0x63, 0x8F, 0x21,
-	0x90, 0x23, 0x00, 0xF7, 0x95, 0x83, 0x00, 0x06, 0x87, 0x93, 0x00, 0x06, 0xD5, 0x03, 0xA4, 0x01,
-	0x96, 0x13, 0x00, 0x07, 0x87, 0x13, 0x00, 0x15, 0x97, 0x32, 0xA9, 0x41, 0x00, 0xA7, 0x10, 0x23,
-	0x00, 0x27, 0xD7, 0x03, 0xAA, 0x01, 0x87, 0x93, 0x90, 0x23, 0x97, 0xB2, 0x46, 0x01, 0x00, 0xE7,
-	0x47, 0x01, 0x47, 0x81, 0xA9, 0x41, 0x88, 0x13, 0xAA, 0x01, 0x85, 0x13, 0x03, 0x33, 0x48, 0xA9,
-	0x13, 0x03, 0x00, 0xC8, 0x97, 0x1A, 0x00, 0x03, 0x00, 0xC5, 0x03, 0x33, 0x00, 0x03, 0x13, 0x03,
-	0x97, 0x9A, 0x06, 0x09, 0xFF, 0x16, 0x15, 0xE3, 0x66, 0x60, 0x08, 0x13, 0x03, 0x07, 0x07, 0x33,
-	0x81, 0x81, 0xA6, 0x03, 0x05, 0x85, 0x65, 0x05, 0x00, 0xB6, 0x90, 0x23, 0x05, 0x86, 0x16, 0x83,
-	0x03, 0x07, 0x87, 0xB3, 0x87, 0x35, 0x97, 0x2A, 0x87, 0x41, 0x07, 0x42, 0x0E, 0xE6, 0x1F, 0x23,
-	0x87, 0xB5, 0x97, 0xAA, 0x87, 0xC1, 0x07, 0xC2, 0x1E, 0xF6, 0x1F, 0x23, 0x02, 0x06, 0xC3, 0x63,
-	0x0C, 0xE6, 0x14, 0x23, 0x1C, 0xF6, 0x14, 0x23, 0xA7, 0x03, 0x80, 0x82, 0x87, 0x93, 0x81, 0x81,
-	0xD6, 0x83, 0xA4, 0x01, 0xD7, 0x83, 0x00, 0x07, 0x14, 0x23, 0x00, 0x27, 0x14, 0x23, 0x0C, 0xD7,
-	0x80, 0x82, 0x1C, 0xF7, 0x81, 0x81, 0xA7, 0x03, 0xA7, 0xB7, 0x11, 0x41, 0x13, 0x23, 0x20, 0x00,
-	0x48, 0x85, 0x00, 0x01, 0x80, 0x07, 0x87, 0x93, 0x85, 0x13, 0x63, 0x21, 0x4E, 0x09, 0x88, 0x81,
-	0x89, 0x01, 0x88, 0x13, 0x89, 0x81, 0x85, 0x93, 0x86, 0x01, 0x86, 0x13, 0x00, 0x61, 0x56, 0x83,
-	0x86, 0xC1, 0x06, 0xC2, 0x00, 0xD8, 0xD4, 0x63, 0x80, 0x82, 0x01, 0x41, 0x00, 0x61, 0x56, 0x83,
-	0x86, 0xC1, 0x06, 0xC2, 0x96, 0xBE, 0x06, 0xA6, 0x13, 0x86, 0xD6, 0x83, 0x28, 0x66, 0x94, 0x63,
-	0x00, 0x61, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x96, 0xAA, 0x06, 0x86, 0x00, 0x06, 0xDE, 0x83,
-	0x0E, 0xC2, 0x0E, 0x85, 0x01, 0x0E, 0xDE, 0x93, 0x01, 0xD6, 0x90, 0x23, 0x00, 0x61, 0x56, 0x83,
-	0x86, 0xC1, 0x06, 0xC2, 0x96, 0xAA, 0x06, 0x86, 0x00, 0x06, 0xD6, 0x83, 0x82, 0xC1, 0x06, 0xC2,
-	0x1D, 0xC6, 0x9E, 0x63, 0x00, 0x61, 0x56, 0x83, 0x01, 0x01, 0x0F, 0x13, 0x86, 0xC1, 0x06, 0xC2,
-	0x96, 0xAA, 0x06, 0x86, 0x00, 0x06, 0x90, 0x23, 0x00, 0x61, 0x5E, 0x83, 0x00, 0x61, 0x56, 0x83,
-	0xDE, 0x93, 0x0E, 0xC2, 0x0E, 0xA2, 0x41, 0x0E, 0x9E, 0xBA, 0x06, 0xC2, 0x0C, 0x8E, 0x9E, 0x83,
-	0x06, 0x86, 0x86, 0xC1, 0x9C, 0x23, 0x96, 0xFA, 0x56, 0x83, 0xFF, 0xD6, 0x06, 0xC2, 0x00, 0x61,
-	0x06, 0x86, 0x86, 0xC1, 0xDE, 0x83, 0x96, 0xC2, 0x56, 0x83, 0x00, 0x06, 0x0E, 0xC2, 0x00, 0x61,
-	0x86, 0xC1, 0x06, 0xC2, 0x96, 0xFA, 0x06, 0x86, 0xFF, 0x86, 0xD6, 0x83, 0x41, 0x0E, 0xDE, 0x93,
-	0x86, 0xC1, 0x06, 0xC2, 0x18, 0xDE, 0x84, 0x63, 0x00, 0x61, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2,
-	0x96, 0xAE, 0x06, 0x86, 0x00, 0x06, 0x90, 0x23, 0x00, 0x61, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2,
-	0x96, 0xFA, 0x06, 0x86, 0xFF, 0x86, 0xDE, 0x83, 0x00, 0x61, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2,
-	0x96, 0xC2, 0x06, 0x86, 0x00, 0x06, 0xDF, 0x03, 0x00, 0x61, 0x56, 0x83, 0x41, 0xEE, 0x8E, 0xB3,
-	0x86, 0xC1, 0x06, 0xC2, 0x06, 0x86, 0x0E, 0xC2, 0x41, 0x0E, 0xDE, 0x93, 0x90, 0x23, 0x96, 0xB2,
-	0x5E, 0x83, 0x01, 0xD6, 0x56, 0x83, 0x00, 0x61, 0x0F, 0x13, 0x00, 0x61, 0x0E, 0xC2, 0x01, 0x01,
-	0x41, 0x0E, 0xDE, 0x93, 0x06, 0xC2, 0x0E, 0x86, 0xDE, 0x83, 0x9E, 0xFA, 0x86, 0xC1, 0xFF, 0x8E,
-	0x96, 0xC2, 0x06, 0x86, 0x01, 0xD6, 0x90, 0x23, 0x00, 0x61, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2,
-	0x96, 0xB2, 0x06, 0x86, 0x00, 0x06, 0xD6, 0x83, 0x01, 0x06, 0x9E, 0x93, 0x02, 0x0E, 0xD7, 0x63,
-	0x00, 0x61, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x96, 0xB2, 0x06, 0x86, 0x00, 0x06, 0xDE, 0x83,
-	0x00, 0x61, 0x56, 0x83, 0x41, 0xD0, 0x0E, 0xB3, 0x86, 0xC1, 0x06, 0xC2, 0x06, 0x86, 0x0E, 0xC2,
-	0x41, 0x0E, 0xDE, 0x93, 0x90, 0x23, 0x96, 0xB2, 0x56, 0x83, 0x01, 0xD6, 0x06, 0xC2, 0x00, 0x61,
-	0x06, 0x86, 0x86, 0xC1, 0xDE, 0x83, 0x96, 0xB2, 0x56, 0x83, 0x00, 0x06, 0x0E, 0xC2, 0x00, 0x61,
-	0x86, 0xC1, 0x06, 0xC2, 0x96, 0xBE, 0x06, 0xA6, 0x13, 0xA6, 0x96, 0x83, 0x41, 0x0E, 0xDE, 0x93,
-	0x11, 0xD6, 0xCA, 0x63, 0x00, 0x61, 0x56, 0x83, 0x00, 0x61, 0x5E, 0x83, 0x86, 0xC1, 0x06, 0xC2,
-	0x07, 0x36, 0x86, 0x93, 0x0E, 0xC2, 0x06, 0x92, 0xD6, 0x83, 0x96, 0xBE, 0xDE, 0x93, 0x00, 0x86,
-	0x0E, 0xA2, 0x41, 0x0E, 0x9B, 0x23, 0x9E, 0xBA, 0x56, 0x83, 0x0E, 0xDE, 0x5E, 0x83, 0x00, 0x61,
-	0x06, 0xC2, 0x00, 0x61, 0x86, 0x93, 0x86, 0xC1, 0x06, 0x92, 0x07, 0x36, 0x96, 0xBE, 0x0E, 0xC2,
-	0x00, 0xA6, 0xD6, 0x83, 0x41, 0x0E, 0xDE, 0x93, 0x9E, 0xBA, 0x0E, 0xA2, 0x0E, 0xDE, 0x9C, 0x23,
-	0x00, 0x61, 0x56, 0x83, 0x00, 0x61, 0x5E, 0x83, 0x86, 0xC1, 0x06, 0xC2, 0x07, 0x36, 0x86, 0x93,
-	0x0E, 0xC2, 0x06, 0x92, 0xD6, 0x83, 0x96, 0xBE, 0xDE, 0x93, 0x00, 0xC6, 0x0E, 0xA2, 0x41, 0x0E,
-	0x9D, 0x23, 0x9E, 0xBA, 0x56, 0x83, 0x0E, 0xDE, 0x5E, 0x83, 0x00, 0x61, 0x06, 0xC2, 0x00, 0x61,
-	0x86, 0x93, 0x86, 0xC1, 0x06, 0x92, 0x07, 0x36, 0x96, 0xBE, 0x0E, 0xC2, 0x00, 0xE6, 0xD6, 0x83,
-	0x41, 0x0E, 0xDE, 0x93, 0x9E, 0xBA, 0x0E, 0xA2, 0x0E, 0xDE, 0x9E, 0x23, 0x00, 0x61, 0x56, 0x83,
-	0x06, 0xC2, 0x06, 0x85, 0x13, 0x23, 0x86, 0xC1, 0xB3, 0xC9, 0x00, 0xD1, 0x00, 0x61, 0x56, 0x83,
-	0x86, 0xC1, 0x06, 0xC2, 0x96, 0xAE, 0x06, 0x86, 0x00, 0x06, 0xDE, 0x83, 0x0E, 0xC2, 0x0E, 0x85,
-	0x01, 0x0E, 0xDE, 0x93, 0x01, 0xD6, 0x90, 0x23, 0x00, 0x61, 0x56, 0x83, 0x86, 0xC1, 0x06, 0xC2,
-	0x96, 0xAE, 0x06, 0x86, 0x00, 0x06, 0xDE, 0x83, 0x00, 0x61, 0x56, 0x83, 0x06, 0xC2, 0x0E, 0xC2,
-	0x06, 0xA6, 0x86, 0xC1, 0x96, 0x83, 0x96, 0xBE, 0xDE, 0x93, 0x13, 0xC6, 0xD7, 0xE3, 0x01, 0x0E,
-	0x5E, 0x83, 0xFB, 0xD6, 0x56, 0x83, 0x00, 0x61, 0x0E, 0xC2, 0x00, 0x61, 0x41, 0x0E, 0xDE, 0x93,
-	0x06, 0xC2, 0x0E, 0xA6, 0xDE, 0x83, 0x9E, 0xBE, 0x86, 0xC1, 0x13, 0xCE, 0x96, 0xAE, 0x06, 0x86,
-	0x01, 0xD6, 0x90, 0x23, 0x00, 0x61, 0x5E, 0x83, 0x00, 0x61, 0x56, 0x83, 0xDE, 0x93, 0x0E, 0xC2,
-	0x0E, 0xA6, 0x41, 0x0E, 0x9E, 0xBE, 0x06, 0xC2, 0x14, 0x2E, 0xDE, 0x83, 0x06, 0xA2, 0x86, 0xC1,
-	0x9B, 0x23, 0x96, 0xBA, 0x5E, 0x83, 0x0F, 0xD6, 0x56, 0x83, 0x00, 0x61, 0x0E, 0xC2, 0x00, 0x61,
-	0x41, 0x0E, 0xDE, 0x93, 0x06, 0xC2, 0x0E, 0xA6, 0xDE, 0x83, 0x9E, 0xBE, 0x86, 0xC1, 0x14, 0x4E,
-	0x96, 0xBA, 0x06, 0xA2, 0x0F, 0xD6, 0x9C, 0x23, 0x00, 0x61, 0x5E, 0x83, 0x00, 0x61, 0x56, 0x83,
-	0xDE, 0x93, 0x0E, 0xC2, 0x0E, 0xA6, 0x41, 0x0E, 0x9E, 0xBE, 0x06, 0xC2, 0x14, 0x6E, 0xDE, 0x83,
-	0x06, 0xA2, 0x86, 0xC1, 0x9D, 0x23, 0x96, 0xBA, 0x5E, 0x83, 0x0F, 0xD6, 0x56, 0x83, 0x00, 0x61,
-	0x0E, 0xC2, 0x00, 0x61, 0x41, 0x0E, 0xDE, 0x93, 0x06, 0xC2, 0x0E, 0xA6, 0xDE, 0x83, 0x9E, 0xBE,
-	0x86, 0xC1, 0x14, 0x8E, 0x96, 0xBA, 0x06, 0xA2, 0x0F, 0xD6, 0x9E, 0x23, 0xA7, 0xB7, 0xB7, 0x01,
-	0xD7, 0x03, 0x20, 0x00, 0x67, 0xA1, 0xF5, 0x47, 0x1C, 0x63, 0x11, 0x41, 0x47, 0xB5, 0x06, 0xF7,
-	0x02, 0xB7, 0xDF, 0x63, 0x17, 0x23, 0x67, 0x85, 0x15, 0xC9, 0x00, 0xF1, 0x85, 0xC1, 0x05, 0xC2,
-	0x00, 0xE1, 0x57, 0x03, 0x08, 0x00, 0x87, 0xB7, 0xA4, 0x17, 0x87, 0x93, 0x95, 0x3E, 0x07, 0x42,
-	0x67, 0x85, 0x87, 0x41, 0x1A, 0x63, 0x05, 0x0A, 0x87, 0xAE, 0x04, 0xF7, 0x00, 0xE5, 0xC4, 0x63,
-	0x17, 0xFD, 0x67, 0x85, 0x87, 0xC1, 0x07, 0xC2, 0x01, 0x41, 0xC1, 0x1C, 0x57, 0xCD, 0x80, 0x82,
-	0x02, 0xF5, 0xD6, 0x63, 0x67, 0x85, 0x05, 0xB9, 0x17, 0x23, 0x05, 0xC2, 0x85, 0xC1, 0x00, 0xF1,
-	0xFC, 0x05, 0xD0, 0xE3, 0x87, 0x93, 0x67, 0x85, 0x85, 0xB3, 0x80, 0x07, 0x05, 0xC2, 0x40, 0xB7,
-	0x16, 0x23, 0x85, 0xC1, 0x55, 0x83, 0x00, 0xB1, 0xB7, 0x4D, 0x00, 0xC1, 0x00, 0xB1, 0x17, 0x23,
-	0x67, 0x85, 0xB7, 0xC5, 0x00, 0xF1, 0x17, 0x23, 0x87, 0x93, 0xBF, 0xE1, 0xBF, 0x6D, 0x80, 0x07,
-	0x04, 0x00, 0x47, 0xB7, 0xC1, 0x67, 0x87, 0x93, 0x05, 0x0E, 0x95, 0x3E, 0x67, 0x41, 0x41, 0x1C,
-	0xF0, 0x07, 0x07, 0x13, 0x97, 0x03, 0x8F, 0xF9, 0x8F, 0xD9, 0x00, 0x85, 0x80, 0x82, 0xC1, 0x1C,
-	0x97, 0x83, 0x47, 0x09, 0x19, 0x63, 0x00, 0x65, 0xF7, 0x93, 0x00, 0xE5, 0xE7, 0x37, 0x0F, 0xF7,
-	0x22, 0x23, 0x20, 0x01, 0x80, 0x82, 0x0A, 0xF7, 0xE6, 0x37, 0xED, 0x09, 0x27, 0x03, 0x20, 0x01,
-	0x66, 0xC1, 0x0A, 0x06, 0xF0, 0x06, 0x86, 0x93, 0x8F, 0xD9, 0x8F, 0x75, 0x0A, 0xF6, 0x20, 0x23,
-	0xE6, 0xB7, 0x80, 0x82, 0xA7, 0x03, 0x20, 0x01, 0x07, 0xA2, 0x0A, 0x06, 0x0F, 0xF7, 0x77, 0x13,
-	0xA0, 0x23, 0x8F, 0xD9, 0x80, 0x82, 0x0A, 0xF6, 0xCC, 0x22, 0x11, 0x01, 0x84, 0x93, 0xCA, 0x26,
-	0xD7, 0x83, 0x95, 0xA1, 0xCE, 0x06, 0x00, 0x04, 0xC6, 0x4E, 0xC8, 0x4A, 0xC2, 0x56, 0xC4, 0x52,
-	0x62, 0xE3, 0x47, 0x25, 0x87, 0x37, 0x3A, 0xF7, 0x07, 0x8A, 0x20, 0x00, 0x06, 0x47, 0x07, 0x13,
-	0x43, 0x9C, 0x97, 0xBA, 0x95, 0xA1, 0x84, 0x13, 0xA6, 0x83, 0x87, 0x82, 0x9F, 0x23, 0x81, 0x01,
-	0xD4, 0x83, 0x94, 0x01, 0xD7, 0x83, 0x02, 0x26, 0x66, 0x0D, 0x02, 0x26, 0x07, 0xC2, 0x04, 0xC2,
-	0x90, 0x23, 0x83, 0xC1, 0xF5, 0x93, 0x02, 0xC6, 0x46, 0x05, 0xFF, 0x57, 0x89, 0x3A, 0x80, 0xC1,
-	0x00, 0xC5, 0x86, 0x63, 0x47, 0x15, 0x9B, 0xDD, 0x22, 0xE7, 0x9E, 0x63, 0xF7, 0xB7, 0x67, 0x29,
-	0x07, 0x13, 0x20, 0x01, 0xA8, 0x23, 0x23, 0xF7, 0xD6, 0x83, 0xDA, 0xE7, 0x96, 0x23, 0x02, 0x26,
-	0x67, 0x09, 0x96, 0xD1, 0x8C, 0xE1, 0x90, 0x23, 0x81, 0x81, 0xA6, 0x83, 0x97, 0x23, 0x88, 0xA1,
-	0x97, 0x23, 0x0E, 0xE6, 0x97, 0x23, 0x1E, 0xE6, 0xA2, 0x23, 0x2E, 0xE6, 0xA4, 0x23, 0x90, 0x07,
-	0xA6, 0x23, 0x90, 0x07, 0x87, 0x93, 0x90, 0x07, 0xA0, 0x23, 0x94, 0xC1, 0x92, 0x23, 0x00, 0x07,
-	0x30, 0xEF, 0x00, 0x07, 0x90, 0x23, 0x6C, 0x90, 0x99, 0x23, 0x96, 0x01, 0x94, 0x23, 0x94, 0x01,
-	0x91, 0x23, 0x98, 0x01, 0xA7, 0x83, 0x96, 0x01, 0xD7, 0x03, 0x81, 0x01, 0x87, 0x93, 0x02, 0x27,
-	0x83, 0x05, 0x94, 0x61, 0x90, 0x23, 0x8B, 0x0D, 0xD7, 0x03, 0x00, 0xE7, 0x07, 0x42, 0x00, 0x07,
-	0xE3, 0x55, 0x83, 0x41, 0x20, 0x00, 0xAA, 0x37, 0x80, 0x0A, 0x07, 0x93, 0x10, 0x67, 0xD7, 0x03,
-	0x80, 0x0A, 0x0A, 0x13, 0xC3, 0x11, 0x47, 0x85, 0x93, 0x23, 0x57, 0xFD, 0xAA, 0x83, 0x96, 0xF1,
-	0xE4, 0x99, 0x81, 0xC1, 0x30, 0x0A, 0xD7, 0x83, 0x66, 0x67, 0xF7, 0x93, 0x30, 0xFA, 0x90, 0x23,
-	0x02, 0x00, 0x06, 0x13, 0x11, 0x0A, 0x05, 0x93, 0xAD, 0x01, 0x85, 0x13, 0x00, 0xA0, 0x50, 0xEF,
-	0x30, 0x0A, 0xD6, 0x83, 0x98, 0x01, 0x93, 0x23, 0x96, 0xA1, 0x87, 0x13, 0x10, 0x23, 0x46, 0x05,
-	0x8A, 0x89, 0x00, 0xC7, 0x97, 0xA1, 0x87, 0x93, 0x16, 0x83, 0xCE, 0xDD, 0xCE, 0xC5, 0x02, 0x4A,
-	0x00, 0xC7, 0x90, 0x23, 0x00, 0x07, 0x57, 0x03, 0x9F, 0x01, 0x87, 0x93, 0x83, 0x41, 0x07, 0x42,
-	0x97, 0xBA, 0x07, 0x06, 0x07, 0x0D, 0x77, 0x61, 0x00, 0xE7, 0x90, 0x23, 0x94, 0x01, 0x9A, 0x23,
-	0xAD, 0x01, 0x87, 0x93, 0x00, 0x67, 0xD7, 0x03, 0x96, 0xE1, 0x9B, 0x23, 0x81, 0x81, 0xA7, 0x83,
-	0x0A, 0x07, 0x98, 0x23, 0x1A, 0x07, 0x98, 0x23, 0x2A, 0x07, 0x98, 0x23, 0x98, 0x63, 0x47, 0xA5,
-	0x47, 0x85, 0x4C, 0x04, 0xD7, 0x03, 0xA1, 0xE9, 0x46, 0x85, 0x00, 0x07, 0x83, 0x41, 0x07, 0x42,
-	0x06, 0xD7, 0x16, 0x63, 0x20, 0x00, 0xAA, 0x37, 0x80, 0x0A, 0x07, 0x93, 0x30, 0x67, 0xD7, 0x03,
-	0x80, 0x0A, 0x0A, 0x13, 0xC3, 0x11, 0x47, 0x85, 0x93, 0x23, 0x57, 0xFD, 0xAA, 0x83, 0x96, 0xF1,
-	0xE4, 0x99, 0x81, 0xC1, 0x30, 0x0A, 0xD7, 0x83, 0x55, 0x57, 0xF7, 0x93, 0x30, 0xFA, 0x90, 0x23,
-	0x02, 0x00, 0x06, 0x13, 0x31, 0x0A, 0x05, 0x93, 0xAD, 0x01, 0x85, 0x13, 0x75, 0xB0, 0x40, 0xEF,
-	0x30, 0x0A, 0xD6, 0x83, 0x98, 0x01, 0x93, 0x23, 0x96, 0xA1, 0x87, 0x13, 0x00, 0x07, 0x10, 0x23,
-	0x87, 0x93, 0x8A, 0x85, 0xCA, 0x81, 0x97, 0xA1, 0x02, 0x4A, 0x16, 0x83, 0x46, 0x85, 0xC6, 0x89,
-	0x00, 0xD7, 0x90, 0x23, 0x90, 0x23, 0xBF, 0x81, 0xB7, 0x8D, 0x00, 0x07, 0x00, 0x07, 0xD7, 0x83,
-	0x07, 0xC2, 0x47, 0x09, 0x9B, 0xE3, 0x83, 0xC1, 0xA5, 0xB7, 0xF4, 0xE7, 0x87, 0x93, 0x20, 0x00,
-	0xD7, 0x03, 0x80, 0x05, 0x85, 0x93, 0x50, 0x67, 0x47, 0x85, 0x80, 0x05, 0x57, 0xFD, 0xC3, 0x11,
-	0x96, 0xF1, 0x93, 0x23, 0xA7, 0x03, 0xE8, 0x89, 0x57, 0x83, 0x81, 0xC1, 0xF7, 0x93, 0x30, 0x07,
-	0x10, 0x23, 0x33, 0x37, 0x06, 0x13, 0x30, 0xF7, 0x85, 0x93, 0x02, 0x00, 0x85, 0x13, 0x51, 0x05,
-	0x40, 0xEF, 0xAD, 0x01, 0x93, 0x23, 0x6E, 0x50, 0xBF, 0x09, 0x98, 0x01, 0x81, 0x01, 0xA7, 0x83,
-	0xD6, 0x83, 0x89, 0x3A, 0xD6, 0x03, 0x02, 0x27, 0x06, 0xC2, 0x96, 0xC1, 0x84, 0x93, 0x82, 0xC1,
-	0x04, 0x63, 0x96, 0xC1, 0x10, 0x23, 0x00, 0xD6, 0x45, 0x01, 0x00, 0x04, 0x4C, 0xF0, 0x20, 0xEF,
-	0x20, 0xEF, 0x45, 0x05, 0x87, 0x93, 0x4C, 0x90, 0xD5, 0x03, 0x94, 0x61, 0xD7, 0x83, 0x00, 0x07,
-	0xA7, 0x03, 0x00, 0x07, 0x07, 0xC2, 0x81, 0x81, 0x07, 0xA2, 0x83, 0xC1, 0x95, 0x83, 0x97, 0xBA,
-	0x75, 0x13, 0x0B, 0x07, 0x39, 0xA5, 0x0F, 0xF5, 0x81, 0x01, 0xA7, 0x83, 0x02, 0x27, 0xD7, 0x83,
-	0x00, 0xF4, 0x90, 0x23, 0x44, 0x62, 0x40, 0xF2, 0x49, 0x42, 0x44, 0xD2, 0x4A, 0x22, 0x49, 0xB2,
-	0x61, 0x05, 0x4A, 0x92, 0x97, 0x03, 0x80, 0x82, 0x47, 0x85, 0x95, 0x41, 0x7D, 0x00, 0x06, 0x93,
-	0x00, 0xF7, 0x04, 0x63, 0xAD, 0x41, 0x96, 0x83, 0x98, 0x61, 0x87, 0x93, 0x00, 0x07, 0xD7, 0x03,
-	0x5E, 0xB0, 0x06, 0x13, 0x07, 0x42, 0x07, 0x05, 0x90, 0x23, 0x87, 0x41, 0xD7, 0x03, 0x00, 0xE7,
-	0x07, 0x42, 0x00, 0x07, 0x5F, 0xE3, 0x87, 0x41, 0x90, 0x23, 0xFA, 0xE6, 0xA0, 0x23, 0x00, 0xC7,
-	0x9C, 0x23, 0x98, 0x01, 0xD6, 0x03, 0x96, 0x01, 0x87, 0x93, 0x96, 0x21, 0x87, 0x13, 0x94, 0xC1,
-	0xE2, 0x69, 0x94, 0x61, 0x00, 0x07, 0x56, 0x03, 0xAD, 0x81, 0xD5, 0x03, 0x82, 0x41, 0x06, 0x42,
-	0x96, 0x3E, 0x06, 0x06, 0x00, 0x06, 0x55, 0x83, 0x10, 0x23, 0x95, 0xAA, 0x56, 0x03, 0x00, 0xB6,
-	0x06, 0x42, 0x00, 0x07, 0x06, 0x06, 0x82, 0x41, 0x16, 0x03, 0x96, 0x3E, 0xDA, 0x63, 0x00, 0x06,
-	0x56, 0x03, 0x00, 0xC6, 0x06, 0x42, 0x00, 0x07, 0x06, 0x06, 0x82, 0x41, 0x10, 0x23, 0x96, 0x3E,
-	0x56, 0x03, 0x00, 0xD6, 0x06, 0x42, 0x00, 0x07, 0x06, 0x06, 0x82, 0x41, 0x16, 0x03, 0x96, 0x3E,
-	0x0E, 0x63, 0x00, 0x06, 0x56, 0x03, 0x00, 0xD6, 0x06, 0xB3, 0x00, 0x07, 0x06, 0x42, 0x40, 0xD0,
-	0x06, 0x06, 0x82, 0x41, 0x16, 0x03, 0x96, 0x3E, 0x17, 0x63, 0x00, 0x06, 0xD5, 0x83, 0x02, 0xD6,
-	0x45, 0x29, 0xAD, 0xA1, 0x02, 0xA5, 0x85, 0xB3, 0x95, 0x21, 0x86, 0x13, 0x00, 0x06, 0x56, 0x83,
-	0x06, 0xC2, 0x06, 0x85, 0x10, 0x23, 0x86, 0xC1, 0xD7, 0x63, 0x00, 0xD6, 0x46, 0x89, 0x00, 0xD5,
-	0x00, 0xD4, 0x10, 0x23, 0x00, 0x06, 0x10, 0x23, 0x00, 0x07, 0x55, 0x03, 0x00, 0x07, 0x57, 0x03,
-	0x40, 0xF2, 0x44, 0x62, 0x83, 0x41, 0x07, 0x42, 0x97, 0xBA, 0x07, 0x06, 0x49, 0x42, 0x44, 0xD2,
-	0x4A, 0x22, 0x49, 0xB2, 0x95, 0x83, 0x4A, 0x92, 0x75, 0x13, 0x00, 0x07, 0x61, 0x05, 0x0F, 0xF5,
-	0xB4, 0xFF, 0xF0, 0x6F, 0x1E, 0xE3, 0x45, 0x85, 0x56, 0x03, 0xF6, 0xB6, 0xD5, 0x03, 0x00, 0x07,
-	0x06, 0x42, 0xAD, 0x81, 0x06, 0x06, 0x82, 0x41, 0x55, 0x83, 0x96, 0x3E, 0x8D, 0x89, 0x00, 0x06,
-	0x00, 0xB6, 0x10, 0x23, 0x00, 0x07, 0x56, 0x03, 0x40, 0xD0, 0x05, 0xB3, 0x82, 0x41, 0x06, 0x42,
-	0x96, 0x3E, 0x06, 0x06, 0x00, 0x06, 0x16, 0x03, 0xF4, 0xB6, 0x55, 0xE3, 0x00, 0x07, 0x56, 0x03,
-	0x82, 0x41, 0x06, 0x42, 0x96, 0x3E, 0x06, 0x06, 0x00, 0xB6, 0x10, 0x23, 0x86, 0x93, 0xBF, 0x1D,
-	0xA7, 0x03, 0x94, 0x61, 0xD7, 0x83, 0x81, 0x81, 0x07, 0xC2, 0x00, 0x06, 0x07, 0xA2, 0x83, 0xC1,
-	0xD7, 0x83, 0x97, 0xBA, 0x87, 0x13, 0x0B, 0x47, 0x43, 0x10, 0x98, 0x01, 0x87, 0xC1, 0x07, 0xC2,
-	0x86, 0x13, 0x97, 0xB2, 0xC3, 0x1C, 0x97, 0x81, 0x00, 0x06, 0x57, 0x03, 0x07, 0x42, 0x07, 0x05,
-	0x10, 0x23, 0x83, 0x41, 0x06, 0x13, 0x00, 0xE6, 0x7D, 0xE3, 0x0F, 0xF0, 0x87, 0x13, 0xE4, 0xE6,
-	0x56, 0x03, 0x96, 0x21, 0xE2, 0x31, 0x00, 0x07, 0x92, 0x23, 0x87, 0xA1, 0xD7, 0x83, 0x98, 0xF1,
-	0x44, 0x85, 0x00, 0x06, 0x00, 0x97, 0x10, 0x23, 0x83, 0xC1, 0x07, 0xC2, 0x94, 0xC1, 0x87, 0x13,
-	0x97, 0xBA, 0x07, 0x86, 0x00, 0x06, 0xD5, 0x03, 0x00, 0x07, 0x90, 0x23, 0x00, 0x06, 0xD7, 0x83,
-	0x0F, 0xF5, 0x75, 0x13, 0x83, 0xC1, 0x07, 0xC2, 0x97, 0x3E, 0x07, 0x86, 0x00, 0x07, 0x15, 0x83,
-	0xA7, 0xFF, 0xF0, 0xEF, 0x00, 0x94, 0x10, 0x23, 0x46, 0x85, 0xB5, 0x31, 0xE0, 0xD6, 0x14, 0xE3,
-	0x00, 0x07, 0x10, 0x23, 0x87, 0x13, 0x87, 0xA1, 0x91, 0x23, 0x98, 0x81, 0x57, 0x83, 0x94, 0xF1,
-	0xD6, 0x83, 0x00, 0x07, 0x07, 0x85, 0xAE, 0x01, 0x83, 0xC1, 0x07, 0xC2, 0x00, 0xF7, 0x10, 0x23,
-	0xCC, 0xD7, 0xE1, 0xE3, 0x00, 0x07, 0x10, 0x23, 0x95, 0x41, 0x97, 0x03, 0x03, 0x63, 0x47, 0x9D,
-	0x47, 0x8D, 0x00, 0xC7, 0x00, 0xF4, 0x10, 0x23, 0x96, 0x01, 0x87, 0x93, 0x00, 0x07, 0xD7, 0x03,
-	0x90, 0x23, 0x07, 0x05, 0xBB, 0x7D, 0x00, 0xE7, 0x94, 0x61, 0x84, 0x93, 0x00, 0x04, 0xD7, 0x83,
-	0x94, 0xC1, 0x86, 0x93, 0x83, 0xC1, 0x07, 0xC2, 0x97, 0xB6, 0x07, 0x86, 0x00, 0x04, 0xD5, 0x03,
-	0x00, 0x07, 0x90, 0x23, 0x00, 0x04, 0xD7, 0x83, 0x0F, 0xF5, 0x75, 0x13, 0x83, 0xC1, 0x07, 0xC2,
-	0x96, 0xBE, 0x07, 0x86, 0x00, 0x06, 0x95, 0x83, 0x9F, 0x7F, 0xF0, 0xEF, 0x81, 0xC1, 0xA6, 0x83,
-	0x00, 0x04, 0xD7, 0x83, 0x98, 0x41, 0x98, 0x83, 0x83, 0xC1, 0x07, 0xC2, 0x97, 0xB6, 0x07, 0xA2,
-	0x01, 0x17, 0x90, 0x23, 0x00, 0x04, 0xD7, 0x83, 0x94, 0x21, 0x95, 0x03, 0x83, 0xC1, 0x07, 0xC2,
-	0x97, 0xB6, 0x07, 0xA2, 0x00, 0xA7, 0x91, 0x23, 0x00, 0x04, 0xD7, 0x83, 0x40, 0xA8, 0x87, 0x33,
-	0x83, 0xC1, 0x07, 0xC2, 0x97, 0xB6, 0x07, 0xA2, 0x00, 0xE7, 0x92, 0x23, 0x00, 0x04, 0xD7, 0x83,
-	0x07, 0xC2, 0x46, 0x09, 0x87, 0x13, 0x83, 0xC1, 0x85, 0x93, 0x94, 0x61, 0x88, 0x13, 0xAD, 0x01,
-	0x90, 0x63, 0x96, 0x41, 0x57, 0x83, 0x06, 0xC7, 0x56, 0x03, 0x00, 0x07, 0x07, 0xC2, 0x00, 0x07,
-	0x83, 0xC1, 0x06, 0x42, 0x07, 0xA2, 0x82, 0x41, 0x97, 0xB6, 0x06, 0x22, 0x16, 0x03, 0x96, 0x36,
-	0x97, 0x83, 0x00, 0x26, 0x97, 0xB2, 0x00, 0x07, 0x76, 0x79, 0x87, 0x85, 0x10, 0x23, 0x97, 0xB2,
-	0xD7, 0x83, 0x00, 0xF8, 0x66, 0x09, 0x00, 0xC5, 0x06, 0x06, 0x8E, 0x1D, 0x86, 0x41, 0x06, 0x42,
-	0x07, 0xC2, 0x07, 0x86, 0xDC, 0x63, 0x87, 0xC1, 0x57, 0x83, 0x04, 0xA8, 0x47, 0x05, 0x00, 0x07,
-	0x83, 0xC1, 0x07, 0xC2, 0x17, 0xB3, 0x07, 0xB1, 0x9E, 0x23, 0x00, 0xF7, 0x47, 0xA1, 0x96, 0xF1,
-	0x56, 0x03, 0xA8, 0xBD, 0x57, 0x83, 0x00, 0x07, 0x06, 0x42, 0x00, 0x07, 0x82, 0x41, 0x07, 0xC2,
-	0x06, 0x22, 0x83, 0xC1, 0x96, 0x36, 0x07, 0xA2, 0x56, 0x03, 0x97, 0xB6, 0xD7, 0x83, 0x00, 0x06,
-	0x97, 0xB2, 0x00, 0x27, 0x00, 0xC5, 0xD6, 0x03, 0x00, 0xF8, 0x10, 0x23, 0x8F, 0x91, 0x67, 0x85,
-	0x96, 0x13, 0x07, 0x86, 0x86, 0x41, 0x01, 0x07, 0x40, 0xF0, 0x07, 0xB3, 0x55, 0x03, 0xB7, 0x5D,
-	0x05, 0x42, 0x00, 0x07, 0x05, 0x22, 0x81, 0x41, 0x58, 0x83, 0x95, 0x36, 0x95, 0x03, 0x00, 0x45,
-	0x59, 0x63, 0x00, 0x05, 0x47, 0x95, 0x03, 0x15, 0x00, 0xF4, 0x10, 0x23, 0x96, 0x01, 0xD6, 0x83,
-	0x97, 0x61, 0xD7, 0x83, 0xC6, 0xD7, 0xF8, 0xE3, 0x00, 0x07, 0x57, 0x83, 0x83, 0xC1, 0x07, 0xC2,
-	0x47, 0x05, 0x07, 0xA1, 0x00, 0xF7, 0x17, 0xB3, 0x96, 0xF1, 0x9E, 0x23, 0x10, 0x23, 0x47, 0x99,
-	0xB9, 0x89, 0x00, 0xF4, 0x00, 0x07, 0x55, 0x03, 0x81, 0x41, 0x05, 0x42, 0x95, 0x36, 0x05, 0x22,
-	0x00, 0x25, 0x15, 0x03, 0x00, 0xF5, 0x4C, 0x63, 0x00, 0x07, 0x57, 0x83, 0x83, 0xC1, 0x07, 0xC2,
-	0x97, 0xB6, 0x07, 0xA2, 0x00, 0x07, 0x97, 0x83, 0x00, 0xF6, 0x54, 0x63, 0xB7, 0x6D, 0x47, 0x91,
-	0x00, 0x08, 0x17, 0x83, 0x40, 0xF7, 0xD6, 0x13, 0x00, 0x08, 0x57, 0x83, 0x8F, 0x91, 0x8F, 0xB1,
-	0x00, 0xC5, 0xD6, 0x03, 0x83, 0xC1, 0x07, 0xC2, 0x41, 0xE3, 0x06, 0x06, 0x57, 0x83, 0xFE, 0xF6,
-	0x07, 0xC2, 0x00, 0x07, 0x07, 0xA2, 0x83, 0xC1, 0xD6, 0x83, 0x96, 0xBE, 0x97, 0x83, 0x00, 0x46,
-	0xDA, 0xE3, 0x00, 0x25, 0x56, 0x83, 0xF6, 0xD7, 0x47, 0x85, 0x00, 0x07, 0x00, 0xD7, 0x97, 0xB3,
-	0x96, 0xF1, 0x9E, 0x23, 0xB7, 0x8D, 0x47, 0x99, 0x96, 0x41, 0x97, 0x03, 0x96, 0x61, 0x96, 0x83,
-	0xD0, 0x07, 0x77, 0xD3, 0xD0, 0x06, 0xF7, 0x53, 0xAD, 0xC1, 0xD7, 0x83, 0x10, 0xE7, 0xF7, 0xD3,
-	0xD0, 0x07, 0xF7, 0x53, 0x18, 0xE7, 0xF7, 0xD3, 0xC0, 0x07, 0x97, 0xD3, 0x87, 0xC1, 0x07, 0xC2,
-	0xEB, 0x81, 0x87, 0x85, 0x46, 0x63, 0x87, 0xB6, 0x07, 0xB3, 0x00, 0xE0, 0x07, 0xC2, 0x40, 0xD0,
-	0xA5, 0x83, 0x87, 0xC1, 0x86, 0x93, 0x81, 0xC1, 0xD6, 0x83, 0x94, 0x61, 0x87, 0x13, 0x00, 0x06,
-	0x06, 0xC2, 0x94, 0x61, 0x06, 0xA2, 0x82, 0xC1, 0xD6, 0x83, 0x96, 0xAE, 0x87, 0xB3, 0x00, 0x86,
-	0x07, 0xC2, 0x40, 0xF6, 0xD1, 0x63, 0x87, 0xC1, 0x57, 0x83, 0x04, 0x07, 0x07, 0xC2, 0x00, 0x07,
-	0x07, 0xA2, 0x83, 0xC1, 0x94, 0x23, 0x97, 0xAE, 0x47, 0x99, 0x00, 0x07, 0x00, 0x07, 0x55, 0x03,
-	0x00, 0xF4, 0x10, 0x23, 0x00, 0x07, 0x57, 0x83, 0x40, 0xF2, 0x44, 0x62, 0x44, 0xD2, 0x07, 0xC2,
-	0x49, 0xB2, 0x49, 0x42, 0x4A, 0x92, 0x4A, 0x22, 0x07, 0xA2, 0x83, 0xC1, 0x75, 0x13, 0x95, 0xBE,
-	0x61, 0x05, 0x0F, 0xF5, 0x83, 0xDF, 0xF0, 0x6F, 0x0F, 0xF0, 0x06, 0x93, 0x00, 0xF6, 0xDB, 0x63,
-	0x00, 0x07, 0x57, 0x83, 0x83, 0xC1, 0x07, 0xC2, 0x97, 0xAE, 0x07, 0xA2, 0x00, 0xD7, 0x94, 0x23,
-	0x56, 0x83, 0xBF, 0x6D, 0x06, 0xC2, 0x00, 0x07, 0x06, 0xA2, 0x82, 0xC1, 0x94, 0x23, 0x96, 0xAE,
-	0x47, 0x85, 0x00, 0xF6, 0x86, 0x13, 0xB7, 0x65, 0x57, 0x03, 0x94, 0x61, 0x56, 0x83, 0x00, 0x06,
-	0xA7, 0x03, 0x00, 0x06, 0x06, 0xC2, 0x81, 0xC1, 0x06, 0xA2, 0x82, 0xC1, 0xD6, 0x83, 0x96, 0xBA,
-	0x05, 0x93, 0x00, 0x66, 0x87, 0x93, 0x0F, 0xD0, 0x16, 0xFD, 0x94, 0x61, 0x82, 0xC1, 0x06, 0xC2,
-	0x00, 0xD5, 0xF8, 0x63, 0x00, 0x06, 0x57, 0x83, 0x83, 0xC1, 0x07, 0xC2, 0xBD, 0x95, 0x07, 0x91,
-	0xAD, 0x01, 0x86, 0x13, 0x00, 0x07, 0xD5, 0x83, 0x00, 0x26, 0x16, 0x83, 0x00, 0x06, 0x16, 0x03,
-	0x81, 0xC1, 0x05, 0xC2, 0xD6, 0x03, 0x96, 0xB2, 0x05, 0xA2, 0x00, 0x07, 0x06, 0x42, 0x95, 0xBA,
-	0x00, 0x45, 0xD5, 0x83, 0x06, 0x22, 0x82, 0x41, 0x96, 0x3A, 0x86, 0x85, 0x00, 0x66, 0x16, 0x03,
-	0x40, 0xB6, 0x85, 0xB3, 0x85, 0xC1, 0x05, 0xC2, 0xD0, 0x06, 0x77, 0x53, 0xD0, 0x05, 0xF7, 0xD3,
-	0x00, 0x07, 0xD5, 0x83, 0x10, 0xE7, 0xF7, 0xD3, 0xD0, 0x06, 0xF7, 0x53, 0x81, 0xC1, 0x05, 0xC2,
-	0xF7, 0xD3, 0x05, 0xA2, 0x95, 0xBA, 0x18, 0xE7, 0xC0, 0x07, 0x96, 0x53, 0x01, 0x06, 0x15, 0x13,
-	0x96, 0x03, 0x85, 0x41, 0xED, 0x11, 0x00, 0x65, 0x00, 0x07, 0xD5, 0x83, 0x05, 0xC2, 0x45, 0x05,
-	0x05, 0xA2, 0x81, 0xC1, 0xD5, 0x83, 0x95, 0xBA, 0x8E, 0x8D, 0x00, 0x45, 0x00, 0xD0, 0x43, 0x63,
-	0x96, 0x2A, 0x55, 0x7D, 0x86, 0x41, 0x06, 0x42, 0x0F, 0xE0, 0x06, 0x93, 0x02, 0xC6, 0xDA, 0x63,
-	0x00, 0x07, 0xD6, 0x83, 0x0F, 0xF0, 0x06, 0x13, 0x82, 0xC1, 0x06, 0xC2, 0x96, 0xBA, 0x06, 0xA2,
-	0x00, 0xC6, 0x93, 0x23, 0x00, 0x07, 0xD5, 0x03, 0x00, 0x07, 0xD5, 0x83, 0x0F, 0xF5, 0x75, 0x13,
-	0x81, 0xC1, 0x05, 0xC2, 0x95, 0xBA, 0x05, 0xA2, 0xF3, 0x8F, 0xF0, 0xEF, 0x8F, 0x7F, 0xF0, 0x6F,
-	0x00, 0x07, 0xD6, 0x83, 0x82, 0xC1, 0x06, 0xC2, 0x96, 0xBA, 0x06, 0xA2, 0xFC, 0xC0, 0x4A, 0xE3,
-	0xB7, 0xF9, 0x46, 0x05, 0x94, 0x61, 0x86, 0x13, 0x00, 0x06, 0x55, 0x83, 0x97, 0xC1, 0xD6, 0x83,
-	0x81, 0xC1, 0xA7, 0x83, 0x40, 0xB6, 0xD6, 0xB3, 0x87, 0x13, 0x8A, 0x85, 0xC2, 0xF5, 0x94, 0x61,
-	0x00, 0x07, 0x56, 0x83, 0x06, 0xC2, 0x46, 0x09, 0x9D, 0x63, 0x82, 0xC1, 0x56, 0x03, 0x06, 0xC6,
-	0x56, 0x83, 0x00, 0x07, 0x06, 0x42, 0x00, 0x07, 0x06, 0x22, 0x82, 0x41, 0x56, 0x03, 0x96, 0x3E,
-	0x06, 0xC2, 0x00, 0x46, 0x77, 0x53, 0x82, 0xC1, 0x86, 0x37, 0xD0, 0x06, 0x27, 0x87, 0x20, 0x00,
-	0x06, 0xA2, 0x1A, 0x86, 0xF7, 0xD3, 0x96, 0xBE, 0x96, 0x53, 0x18, 0xE7, 0x98, 0x23, 0xC0, 0x07,
-	0x56, 0x03, 0x00, 0xC6, 0x56, 0x83, 0x00, 0x07, 0x06, 0x42, 0x00, 0x07, 0x06, 0x22, 0x82, 0x41,
-	0x96, 0x3E, 0x06, 0xC2, 0x56, 0x03, 0x82, 0xC1, 0x06, 0xA2, 0x00, 0x26, 0x99, 0x23, 0x96, 0xBE,
-	0x56, 0x83, 0x00, 0xC6, 0x57, 0x03, 0x00, 0x07, 0x06, 0xC2, 0x00, 0x07, 0x07, 0x42, 0x82, 0xC1,
-	0x83, 0x41, 0x06, 0xA2, 0x07, 0x22, 0x96, 0xBE, 0x00, 0x06, 0x95, 0x23, 0x96, 0x23, 0x97, 0xBA,
-	0xB1, 0x71, 0x00, 0x07, 0x00, 0x07, 0x56, 0x03, 0x00, 0x07, 0x56, 0x83, 0x82, 0x41, 0x06, 0x42,
-	0x96, 0x3E, 0x06, 0x22, 0x00, 0x46, 0x55, 0x83, 0x02, 0x00, 0x06, 0x37, 0x80, 0x06, 0x06, 0x13,
-	0x02, 0xB6, 0x46, 0x33, 0x82, 0xC1, 0x06, 0xC2, 0x96, 0xBE, 0x06, 0xA2, 0x00, 0x07, 0x55, 0x83,
-	0x81, 0xC1, 0x05, 0xC2, 0x95, 0xBE, 0x05, 0xA2, 0x00, 0x05, 0x95, 0x83, 0x00, 0xC6, 0x98, 0x23,
-	0x00, 0x07, 0x56, 0x03, 0x00, 0x07, 0x56, 0x83, 0x82, 0x41, 0x06, 0x42, 0x96, 0x3E, 0x06, 0x22,
-	0x00, 0x26, 0x16, 0x03, 0x82, 0xC1, 0x06, 0xC2, 0x96, 0x2E, 0x06, 0xA2, 0x86, 0x05, 0x96, 0xBE,
-	0x57, 0x03, 0xBF, 0xBD, 0x66, 0x85, 0x00, 0x06, 0x80, 0x06, 0x86, 0x93, 0x83, 0x41, 0x07, 0x42,
-	0x97, 0x3E, 0x07, 0x22, 0x00, 0xD7, 0x18, 0x23, 0x00, 0x06, 0x57, 0x03, 0x83, 0x41, 0x07, 0x42,
-	0x97, 0xBA, 0x07, 0x22, 0x00, 0x07, 0x99, 0x23, 0xA7, 0x03, 0xB1, 0x19, 0x87, 0x93, 0x81, 0xC1,
-	0xD6, 0x03, 0x94, 0x61, 0x95, 0x83, 0x00, 0x07, 0x06, 0x42, 0x98, 0x41, 0x06, 0x22, 0x82, 0x41,
-	0x56, 0x03, 0x96, 0x3A, 0xD6, 0x83, 0x01, 0x06, 0x86, 0x33, 0x00, 0x07, 0x06, 0xC2, 0x02, 0xC5,
-	0x06, 0xA2, 0x82, 0xC1, 0x95, 0x83, 0x96, 0xBA, 0x86, 0x2D, 0x94, 0x21, 0x0E, 0xC6, 0x90, 0x23,
-	0x00, 0x07, 0xD6, 0x03, 0x00, 0x07, 0xD6, 0x83, 0x82, 0x41, 0x06, 0x42, 0x96, 0x3A, 0x06, 0x22,
-	0x01, 0x06, 0x56, 0x03, 0x82, 0xC1, 0x06, 0xC2, 0x02, 0xC5, 0x86, 0x33, 0x96, 0xBA, 0x06, 0xA2,
-	0x91, 0x23, 0x86, 0x2D, 0xD6, 0x03, 0x0E, 0xC6, 0xD6, 0x83, 0x00, 0x07, 0x06, 0x42, 0x00, 0x07,
-	0x82, 0x41, 0x06, 0xC2, 0x06, 0x22, 0x82, 0xC1, 0x96, 0x3A, 0x06, 0xA2, 0x16, 0x03, 0x96, 0xBA,
-	0x96, 0x83, 0x0E, 0x06, 0x96, 0xB2, 0x0E, 0x26, 0x02, 0xD0, 0x5D, 0x63, 0x00, 0x07, 0xD6, 0x83,
-	0x00, 0x07, 0xD6, 0x03, 0x82, 0xC1, 0x06, 0xC2, 0x00, 0x86, 0x97, 0x93, 0x96, 0x83, 0x97, 0xBA,
-	0x06, 0x42, 0x0E, 0x07, 0xD7, 0x83, 0x82, 0x41, 0x06, 0x22, 0x0E, 0x07, 0x86, 0xBD, 0x96, 0x3A,
-	0x8F, 0x95, 0x8F, 0xB5, 0x0E, 0xF6, 0x12, 0x23, 0x07, 0x8D, 0x77, 0xE1, 0x30, 0xF7, 0x12, 0x23,
-	0xD6, 0x83, 0xB6, 0xB9, 0xD6, 0x03, 0x00, 0x07, 0x06, 0xC2, 0x00, 0x07, 0x97, 0x93, 0x82, 0xC1,
-	0x97, 0xBA, 0x00, 0x86, 0x0E, 0x27, 0x96, 0x83, 0x82, 0x41, 0x06, 0x42, 0xD7, 0x83, 0x06, 0x22,
-	0x96, 0x3A, 0x0E, 0x27, 0xB7, 0xE9, 0x86, 0xBD, 0x95, 0xE1, 0x87, 0x93, 0x00, 0x07, 0x97, 0x03,
-	0x1F, 0x30, 0x06, 0x93, 0x94, 0x61, 0x84, 0x93, 0x04, 0xE6, 0xC7, 0x63, 0x94, 0xC1, 0x84, 0x13,
-	0x20, 0x23, 0x07, 0x05, 0x12, 0x23, 0x00, 0x04, 0x45, 0x81, 0x00, 0x04, 0x90, 0x23, 0x45, 0x01,
-	0xF0, 0xEF, 0x00, 0xE7, 0x15, 0x83, 0xC3, 0xCF, 0x45, 0x05, 0x00, 0x24, 0xC3, 0x2F, 0xF0, 0xEF,
-	0x00, 0x44, 0x15, 0x83, 0xF0, 0xEF, 0x45, 0x09, 0xD5, 0x03, 0xC2, 0x8F, 0x44, 0x62, 0x00, 0x04,
-	0x44, 0xD2, 0x40, 0xF2, 0x49, 0xB2, 0x49, 0x42, 0x4A, 0x92, 0x4A, 0x22, 0x0F, 0xF5, 0x75, 0x13,
-	0x20, 0x6F, 0x61, 0x05, 0xD7, 0x03, 0x43, 0x80, 0xA9, 0x03, 0x00, 0x04, 0xA6, 0x83, 0x81, 0xC1,
-	0xD7, 0x83, 0x81, 0x81, 0x07, 0x42, 0x00, 0x04, 0x00, 0x04, 0xD5, 0x03, 0x07, 0x22, 0x83, 0x41,
-	0x07, 0xC2, 0x97, 0x36, 0x57, 0x03, 0x05, 0x42, 0x83, 0xC1, 0x0C, 0xA7, 0xA9, 0xB7, 0x81, 0x41,
-	0x07, 0xA2, 0x20, 0x00, 0x80, 0x09, 0x89, 0x93, 0x97, 0xCA, 0x05, 0x26, 0x97, 0x23, 0x95, 0x4E,
-	0x06, 0x13, 0x0E, 0xE7, 0x85, 0x93, 0x02, 0x00, 0x05, 0x13, 0xAD, 0x01, 0x40, 0xEF, 0x11, 0x05,
-	0x57, 0x83, 0x5D, 0x80, 0xD7, 0x03, 0x30, 0x09, 0x66, 0x05, 0x97, 0xC1, 0x80, 0x06, 0x06, 0x13,
-	0x77, 0x61, 0x8F, 0xD9, 0xD7, 0x03, 0x8F, 0xD9, 0x07, 0xC2, 0x00, 0x04, 0x07, 0x42, 0x83, 0xC1,
-	0x07, 0x22, 0x83, 0x41, 0x10, 0x23, 0x97, 0x4A, 0x1B, 0x23, 0x30, 0xF9, 0x67, 0x21, 0x00, 0xC7,
-	0x86, 0x93, 0x07, 0x1D, 0x96, 0x63, 0x97, 0xC1, 0xD7, 0x83, 0x00, 0xE7, 0x17, 0x23, 0x00, 0x69,
-	0xA7, 0x83, 0x30, 0xF9, 0x90, 0x23, 0x81, 0x01, 0x10, 0x23, 0x00, 0x06, 0xD6, 0x83, 0x00, 0x04,
-	0xD7, 0x03, 0x02, 0x07, 0x8F, 0x55, 0x02, 0x27, 0x02, 0xE7, 0x90, 0x23, 0x02, 0x07, 0x91, 0x23,
-	0x02, 0x07, 0x92, 0x23, 0x93, 0x23, 0x47, 0x3D, 0xF7, 0xB7, 0x02, 0xE7, 0xA8, 0x23, 0x20, 0x01,
-	0xF0, 0x6F, 0xDA, 0x07, 0x84, 0x13, 0xEE, 0x2F, 0x45, 0x81, 0x94, 0xC1, 0x20, 0x23, 0x45, 0x01,
-	0x12, 0x23, 0x00, 0x04, 0x9E, 0x23, 0x00, 0x04, 0xF0, 0xEF, 0x96, 0x01, 0x15, 0x83, 0xB3, 0x4F,
-	0x45, 0x05, 0x00, 0x24, 0xB2, 0xAF, 0xF0, 0xEF, 0x00, 0x44, 0x15, 0x83, 0xF0, 0xEF, 0x45, 0x09,
-	0xA7, 0x83, 0xB2, 0x0F, 0x90, 0x23, 0x81, 0x01, 0xBF, 0x4D, 0x00, 0x04, 0x85, 0xB7, 0x71, 0x5D,
-	0xC4, 0xA2, 0x20, 0x00, 0x46, 0x51, 0xC2, 0xA6, 0x08, 0xC5, 0x84, 0x93, 0x85, 0x93, 0x84, 0x2A,
-	0x00, 0x48, 0x08, 0xC5, 0x40, 0xEF, 0xC6, 0x86, 0x46, 0x51, 0x51, 0x00, 0x01, 0x44, 0x85, 0x93,
-	0x40, 0xEF, 0x08, 0x28, 0x46, 0x51, 0x50, 0x40, 0x02, 0x84, 0x85, 0x93, 0x40, 0xEF, 0x10, 0x68,
-	0x47, 0x99, 0x4F, 0x80, 0x06, 0xF4, 0x15, 0x63, 0x02, 0x80, 0x07, 0x13, 0x96, 0x01, 0x84, 0x23,
-	0x94, 0xE1, 0x9C, 0x23, 0x94, 0x01, 0x9B, 0x23, 0xAC, 0x41, 0x87, 0x93, 0x00, 0x07, 0xA0, 0x23,
-	0x00, 0x07, 0xA2, 0x23, 0x00, 0x07, 0xA4, 0x23, 0xAF, 0xC1, 0x87, 0x93, 0x00, 0x07, 0xA0, 0x23,
-	0x00, 0x07, 0xA2, 0x23, 0x00, 0x07, 0xA4, 0x23, 0x97, 0x01, 0x87, 0x93, 0x00, 0x07, 0xA0, 0x23,
-	0x00, 0x07, 0x92, 0x23, 0x45, 0x01, 0x00, 0x4C, 0x0F, 0x10, 0x00, 0xEF, 0x45, 0x05, 0x00, 0x4C,
-	0x0E, 0x90, 0x00, 0xEF, 0x00, 0xEF, 0x45, 0x01, 0x45, 0x05, 0x12, 0xB0, 0x12, 0x50, 0x00, 0xEF,
-	0xFA, 0xAF, 0xD0, 0xEF, 0x44, 0x26, 0x40, 0xB6, 0x61, 0x61, 0x44, 0x96, 0x47, 0x91, 0x80, 0x82,
-	0xFE, 0xF4, 0x1A, 0xE3, 0x45, 0x01, 0x10, 0x6C, 0x0C, 0x10, 0x00, 0xEF, 0x45, 0x05, 0x08, 0x2C,
-	0x0B, 0x90, 0x00, 0xEF, 0x45, 0x09, 0x08, 0x2C, 0x0B, 0x10, 0x00, 0xEF, 0x00, 0xEF, 0x45, 0x01,
-	0x45, 0x05, 0x0F, 0x30, 0x0E, 0xD0, 0x00, 0xEF, 0x00, 0xEF, 0x45, 0x09, 0xF7, 0xB7, 0x0E, 0x70,
-	0x07, 0x13, 0x20, 0x01, 0x9C, 0x23, 0x04, 0x70, 0x9E, 0x23, 0x02, 0xE7, 0xBF, 0x5D, 0x02, 0x07,
-	0x81, 0x81, 0xA7, 0x83, 0x00, 0x85, 0x18, 0x13, 0x00, 0x85, 0x07, 0x13, 0x95, 0x83, 0x97, 0xC2,
-	0xA6, 0x83, 0x0E, 0xC7, 0x48, 0x85, 0x81, 0xC1, 0x00, 0xE8, 0x97, 0x33, 0x01, 0x06, 0x8E, 0x33,
-	0x01, 0x4E, 0x13, 0x03, 0x00, 0xA8, 0x95, 0x33, 0x01, 0x07, 0x17, 0x93, 0x96, 0x03, 0x05, 0x42,
-	0x87, 0xC1, 0x30, 0x66, 0x47, 0x63, 0x85, 0x41, 0x1A, 0x23, 0x02, 0xB3, 0x8F, 0xD1, 0x00, 0xBE,
-	0xFF, 0xF5, 0x45, 0x13, 0x8D, 0x7D, 0x98, 0x36, 0x01, 0x48, 0x17, 0x83, 0x30, 0xA6, 0x93, 0x23,
-	0xD7, 0x83, 0xCF, 0x9D, 0x77, 0x61, 0x30, 0x66, 0x07, 0xC2, 0x8F, 0xD9, 0x93, 0x23, 0x83, 0xC1,
-	0x80, 0x82, 0x30, 0xF6, 0x40, 0xB8, 0x88, 0xB3, 0x01, 0x13, 0x55, 0x63, 0x40, 0xB0, 0x05, 0xB3,
-	0xC7, 0x93, 0xB7, 0xE9, 0x8F, 0xF1, 0xFF, 0xF7, 0x00, 0x03, 0x06, 0x63, 0x93, 0x23, 0x8F, 0xC9,
-	0xBF, 0xC1, 0x30, 0xF6, 0xFF, 0xF5, 0x45, 0x13, 0x93, 0x23, 0x8F, 0xE9, 0xD7, 0x83, 0x30, 0xF6,
-	0x07, 0xC6, 0x30, 0x66, 0xB7, 0xE1, 0x83, 0xC5, 0x94, 0x81, 0x86, 0x93, 0x00, 0x06, 0x97, 0x03,
-	0x81, 0xC1, 0xA5, 0x83, 0x3F, 0xF0, 0x06, 0x13, 0x94, 0x81, 0x88, 0x13, 0x94, 0x61, 0x87, 0x93,
-	0x0E, 0xE6, 0x56, 0x63, 0x20, 0x00, 0xA8, 0xB7, 0x00, 0x07, 0x90, 0x23, 0x85, 0x13, 0x4E, 0x09,
-	0x88, 0x93, 0xAF, 0x01, 0x43, 0x05, 0x80, 0x08, 0x00, 0x07, 0xD6, 0x83, 0x30, 0x65, 0xD7, 0x03,
-	0x82, 0xC1, 0x06, 0xC2, 0x02, 0xDE, 0x7F, 0x63, 0x8F, 0x5D, 0x77, 0xE1, 0x81, 0x01, 0xA7, 0x83,
-	0x30, 0xE5, 0x93, 0x23, 0x00, 0x08, 0x10, 0x23, 0x02, 0x27, 0xD7, 0x03, 0x02, 0x07, 0xD6, 0x83,
-	0x02, 0x07, 0x91, 0x23, 0x02, 0x07, 0x92, 0x23, 0x90, 0x23, 0x8F, 0x55, 0x47, 0x3D, 0x02, 0xE7,
-	0x00, 0x05, 0x20, 0x23, 0x00, 0x05, 0x22, 0x23, 0x00, 0x05, 0x24, 0x23, 0x02, 0xE7, 0x93, 0x23,
-	0xD6, 0x03, 0x80, 0x82, 0xD6, 0x83, 0x00, 0x07, 0x07, 0x42, 0x00, 0x07, 0x82, 0x41, 0x06, 0x42,
-	0x96, 0x2A, 0x06, 0x0A, 0x06, 0xC2, 0x42, 0x10, 0x06, 0xA2, 0x82, 0xC1, 0x86, 0x29, 0x96, 0xAE,
-	0x00, 0xC6, 0x9A, 0x23, 0x00, 0x07, 0xD6, 0x83, 0x00, 0x07, 0xD6, 0x03, 0x06, 0xC2, 0x87, 0x41,
-	0x82, 0xC1, 0x06, 0x42, 0x06, 0x26, 0x82, 0x41, 0x96, 0x46, 0x06, 0xA2, 0x5E, 0x83, 0x96, 0xAE,
-	0x96, 0x03, 0x1A, 0xE6, 0xD6, 0x83, 0x01, 0x46, 0x0E, 0xC2, 0x01, 0x46, 0x8E, 0xB1, 0x86, 0x3D,
-	0x06, 0xC2, 0x8E, 0x91, 0x01, 0x0E, 0xDE, 0x93, 0xF6, 0x63, 0x82, 0xC1, 0xD6, 0x83, 0x02, 0xDE,
-	0x06, 0xC2, 0x00, 0x07, 0x06, 0xA1, 0x82, 0xC1, 0x00, 0xD3, 0x16, 0xB3, 0x07, 0x42, 0x8F, 0x55,
-	0x93, 0x23, 0x83, 0x41, 0xD7, 0x03, 0x30, 0xE5, 0x07, 0x05, 0x00, 0x07, 0x83, 0x41, 0x07, 0x42,
-	0x00, 0xE7, 0x90, 0x23, 0xD6, 0x83, 0xBF, 0x15, 0xBF, 0xF9, 0x00, 0x07, 0x90, 0x23, 0x07, 0x05,
-	0xA8, 0x83, 0x00, 0xE6, 0x90, 0x23, 0x81, 0x81, 0x48, 0x09, 0x00, 0x07, 0xAF, 0x01, 0x85, 0x13,
-	0x00, 0x07, 0xD7, 0x03, 0x83, 0x41, 0x07, 0x42, 0x00, 0xE8, 0x73, 0x63, 0xD7, 0x03, 0x80, 0x82,
-	0x07, 0x42, 0x00, 0x07, 0x07, 0x22, 0x83, 0x41, 0x57, 0x03, 0x97, 0x46, 0xD6, 0x03, 0x0B, 0x47,
-	0xD6, 0x83, 0x00, 0x07, 0x13, 0x13, 0x00, 0x07, 0x06, 0x42, 0x01, 0x07, 0x06, 0x22, 0x82, 0x41,
-	0x57, 0x03, 0x96, 0x2E, 0x53, 0x13, 0x01, 0x06, 0x06, 0xC2, 0x41, 0x03, 0x02, 0x67, 0x07, 0x33,
-	0x06, 0x8A, 0x82, 0xC1, 0x42, 0x90, 0x96, 0xAA, 0x07, 0x42, 0x87, 0x2D, 0x97, 0x32, 0x87, 0x41,
-	0xD7, 0x03, 0xC2, 0x98, 0x07, 0x05, 0x00, 0x07, 0x83, 0x41, 0x07, 0x42, 0x00, 0xE7, 0x90, 0x23,
-	0x96, 0x83, 0xB7, 0x45, 0x11, 0x01, 0x95, 0xC1, 0xC8, 0x4A, 0xCC, 0x22, 0xCA, 0x26, 0xCE, 0x06,
-	0xC4, 0x52, 0xC6, 0x4E, 0x81, 0x81, 0xA7, 0x83, 0x95, 0xC1, 0x87, 0x13, 0x94, 0x61, 0x84, 0x13,
-	0xA6, 0x03, 0xE6, 0xBD, 0x66, 0x85, 0x81, 0xC1, 0x0E, 0x07, 0x93, 0x23, 0x1E, 0x07, 0x93, 0x23,
-	0x2E, 0x07, 0x93, 0x23, 0x80, 0x06, 0x86, 0x93, 0x00, 0xD6, 0x1B, 0x23, 0x10, 0xD6, 0x1B, 0x23,
-	0x20, 0xD6, 0x1B, 0x23, 0x02, 0x07, 0x9E, 0x23, 0x11, 0x23, 0x46, 0x85, 0x66, 0x1D, 0x30, 0x06,
-	0x53, 0x06, 0x06, 0x13, 0x00, 0xD7, 0x10, 0x23, 0x80, 0xC1, 0x95, 0x23, 0x86, 0x93, 0x76, 0xE5,
-	0x94, 0x23, 0xAD, 0x06, 0xA5, 0xB7, 0x80, 0xD1, 0x93, 0x23, 0x20, 0x01, 0xA6, 0x37, 0x06, 0xC5,
-	0x12, 0x23, 0x20, 0x01, 0x76, 0x61, 0x06, 0xD6, 0x9F, 0x01, 0x86, 0x93, 0x10, 0x23, 0x06, 0x0D,
-	0x90, 0x23, 0x00, 0x04, 0x91, 0x23, 0x00, 0xC6, 0x92, 0x23, 0x00, 0xC6, 0x56, 0x83, 0x00, 0xC6,
-	0x06, 0x85, 0x00, 0x04, 0x9B, 0x23, 0x8A, 0x85, 0xD6, 0x83, 0x02, 0xD7, 0xCA, 0xA9, 0x03, 0xC7,
-	0x84, 0x93, 0x46, 0x09, 0x8E, 0x63, 0x94, 0x41, 0x93, 0x23, 0x04, 0xC6, 0x93, 0x23, 0x0E, 0x07,
-	0x93, 0x23, 0x1E, 0x07, 0xA6, 0x83, 0x2E, 0x07, 0x76, 0x61, 0x81, 0xC1, 0x00, 0x04, 0x90, 0x23,
-	0x30, 0x26, 0xD7, 0x83, 0x00, 0x07, 0x10, 0x23, 0x91, 0x23, 0x8F, 0xD1, 0xA7, 0x83, 0x30, 0xF6,
-	0xD6, 0x83, 0x81, 0x01, 0xD6, 0x03, 0x02, 0x27, 0x91, 0x23, 0x02, 0x07, 0x92, 0x23, 0x02, 0x07,
-	0x8E, 0xD1, 0x02, 0x07, 0x02, 0xD7, 0x90, 0x23, 0x93, 0x23, 0x46, 0xBD, 0xAA, 0xD1, 0x02, 0xD7,
-	0xF0, 0xEF, 0x45, 0x11, 0xA7, 0x83, 0xC1, 0xBF, 0x47, 0x09, 0x81, 0x81, 0x02, 0xE7, 0x9E, 0x23,
-	0xD7, 0x03, 0xA2, 0xC9, 0x56, 0x83, 0x00, 0x04, 0x45, 0x85, 0x00, 0x04, 0x90, 0x23, 0x07, 0x05,
-	0x57, 0x03, 0x00, 0xE4, 0x06, 0xC2, 0x00, 0x04, 0x07, 0x42, 0x82, 0xC1, 0x07, 0x22, 0x83, 0x41,
-	0x96, 0xBE, 0x06, 0xA2, 0x96, 0x03, 0x97, 0xBA, 0x97, 0x83, 0x0E, 0x66, 0x46, 0x81, 0x0C, 0xA7,
-	0x8E, 0x1D, 0x45, 0x01, 0x11, 0x70, 0x00, 0xEF, 0x00, 0x04, 0x57, 0x83, 0x81, 0x81, 0xA7, 0x03,
-	0x07, 0xC2, 0x46, 0x81, 0x07, 0xA2, 0x83, 0xC1, 0x96, 0x03, 0x97, 0xBA, 0x45, 0x89, 0x0C, 0xA7,
-	0x45, 0x01, 0x8A, 0x2A, 0x0F, 0x70, 0x00, 0xEF, 0x46, 0x01, 0x46, 0x81, 0x45, 0x81, 0x89, 0xAA,
-	0x00, 0xEF, 0x45, 0x01, 0x56, 0x03, 0x0E, 0x90, 0xA7, 0x37, 0x00, 0x04, 0x07, 0x13, 0x20, 0x00,
-	0x06, 0x42, 0x80, 0x07, 0x06, 0x26, 0x82, 0x41, 0x56, 0x03, 0x96, 0x3A, 0x05, 0x42, 0x13, 0x66,
-	0x06, 0x33, 0x85, 0x41, 0x56, 0x83, 0x02, 0xA6, 0xA7, 0x83, 0x00, 0x04, 0x06, 0xC2, 0x81, 0x81,
-	0x06, 0xA2, 0x82, 0xC1, 0x86, 0x29, 0x96, 0xBE, 0x0E, 0xC6, 0x93, 0x23, 0x00, 0x04, 0x96, 0x03,
-	0x86, 0x93, 0x66, 0x89, 0xD2, 0x63, 0xD4, 0xC6, 0x56, 0x83, 0x18, 0xC6, 0xD5, 0x83, 0x00, 0x04,
-	0xD6, 0x03, 0x80, 0xA1, 0x06, 0xC2, 0x80, 0x81, 0x06, 0xA2, 0x82, 0xC1, 0x96, 0xBE, 0x8E, 0x0D,
-	0x0E, 0xC6, 0x94, 0x23, 0x00, 0x04, 0x56, 0x83, 0x00, 0x04, 0x5E, 0x83, 0x00, 0x04, 0x55, 0x03,
-	0x20, 0x01, 0xA8, 0x37, 0x05, 0x42, 0x0E, 0xC2, 0x01, 0x0E, 0xDE, 0x93, 0x0E, 0xA2, 0x81, 0x41,
-	0xA8, 0xB7, 0x05, 0x26, 0x9E, 0xBE, 0x20, 0x01, 0xD5, 0x83, 0x95, 0x3A, 0x56, 0x03, 0x06, 0x68,
-	0x9E, 0x83, 0x06, 0x48, 0x55, 0x03, 0x0E, 0x8E, 0x8E, 0x0D, 0x13, 0x45, 0x00, 0x04, 0x55, 0x83,
-	0x02, 0xAE, 0x85, 0x33, 0x82, 0xC1, 0x06, 0xC2, 0x06, 0xA2, 0x05, 0xC2, 0x96, 0xBE, 0x81, 0xC1,
-	0x95, 0x23, 0x05, 0xA2, 0x95, 0xBE, 0x0E, 0xC6, 0x0E, 0xA5, 0x95, 0x83, 0x00, 0x04, 0x56, 0x03,
-	0x02, 0xB5, 0x45, 0xB3, 0x81, 0xC1, 0xA6, 0x83, 0x82, 0x41, 0x06, 0x42, 0x96, 0x36, 0x06, 0x22,
-	0x30, 0x26, 0x95, 0x03, 0x80, 0xA1, 0x8E, 0x13, 0x80, 0x81, 0x83, 0x13, 0x06, 0x68, 0x88, 0x93,
-	0x06, 0x48, 0x08, 0x13, 0x00, 0xB6, 0x1B, 0x23, 0x00, 0x04, 0x55, 0x83, 0x00, 0x04, 0x56, 0x03,
-	0x06, 0x42, 0x05, 0xC2, 0x82, 0x41, 0x81, 0xC1, 0x06, 0x26, 0x05, 0xA2, 0x96, 0x3A, 0x95, 0xB6,
-	0x01, 0x65, 0xD5, 0x83, 0x13, 0x26, 0x56, 0x03, 0x06, 0xC5, 0xF5, 0x63, 0x00, 0x04, 0x56, 0x03,
-	0x10, 0x00, 0x07, 0x13, 0x00, 0xC7, 0x17, 0x33, 0x57, 0x03, 0x8D, 0x59, 0x91, 0x23, 0x00, 0x04,
-	0x66, 0x9D, 0x30, 0xA6, 0x83, 0x41, 0x07, 0x42, 0x97, 0x3E, 0x07, 0x22, 0x0E, 0x07, 0x13, 0x23,
-	0x07, 0x13, 0x77, 0x65, 0x10, 0x23, 0xAD, 0x07, 0x10, 0x23, 0x00, 0xE3, 0x57, 0x03, 0x00, 0xE8,
-	0x86, 0x93, 0x00, 0x04, 0x90, 0x23, 0x53, 0x06, 0x07, 0x42, 0x00, 0x04, 0x00, 0xDE, 0x10, 0x23,
-	0x00, 0xD8, 0x90, 0x23, 0xEB, 0x21, 0x83, 0x41, 0x10, 0x23, 0x47, 0x05, 0x9E, 0x23, 0x00, 0xE4,
-	0x40, 0xF2, 0x02, 0x07, 0x44, 0xD2, 0x44, 0x62, 0x49, 0xB2, 0x49, 0x42, 0x61, 0x05, 0x4A, 0x22,
-	0x56, 0x03, 0x80, 0x82, 0x55, 0x83, 0x00, 0x04, 0x06, 0x42, 0x00, 0x04, 0x82, 0x41, 0x05, 0xC2,
-	0x06, 0x22, 0x81, 0xC1, 0x96, 0x36, 0x05, 0xA6, 0x56, 0x03, 0x97, 0x2E, 0x57, 0x03, 0x01, 0x66,
-	0x76, 0x63, 0x13, 0x07, 0x56, 0x03, 0x00, 0xC7, 0x47, 0x41, 0x00, 0x04, 0x56, 0x03, 0xBF, 0xA5,
-	0x47, 0x05, 0x00, 0x04, 0x57, 0x03, 0xBF, 0x85, 0x46, 0x85, 0x00, 0x04, 0x83, 0x41, 0x07, 0x42,
-	0x00, 0xD7, 0x14, 0x63, 0xB7, 0x55, 0x47, 0x09, 0x00, 0x04, 0x57, 0x03, 0x07, 0x42, 0x46, 0x89,
-	0x10, 0xE3, 0x83, 0x41, 0x47, 0x0D, 0xFA, 0xD7, 0x67, 0x85, 0xBB, 0xD1, 0x38, 0x87, 0x87, 0x93,
-	0xF8, 0xC7, 0xD9, 0xE3, 0x80, 0x81, 0x87, 0x93, 0x00, 0x07, 0x97, 0x03, 0x01, 0x0A, 0x15, 0x13,
-	0x54, 0x63, 0x85, 0x41, 0x90, 0x23, 0x00, 0xA7, 0x87, 0x93, 0x00, 0xA7, 0x97, 0x03, 0x80, 0xA1,
-	0x54, 0x63, 0x00, 0x07, 0x90, 0x23, 0x00, 0xE5, 0xA7, 0xB7, 0x00, 0xA7, 0x87, 0x93, 0x20, 0x01,
-	0x97, 0x03, 0x06, 0x47, 0x95, 0x13, 0x00, 0x07, 0x85, 0x41, 0x01, 0x09, 0x00, 0xA7, 0x54, 0x63,
-	0x00, 0xA7, 0x90, 0x23, 0x20, 0x01, 0xA7, 0xB7, 0x06, 0x67, 0x87, 0x93, 0x00, 0x07, 0x97, 0x03,
-	0xF4, 0xE5, 0x51, 0xE3, 0x00, 0xA7, 0x90, 0x23, 0x11, 0x41, 0xBF, 0x2D, 0xA7, 0x83, 0xC4, 0x22,
-	0x46, 0x81, 0x81, 0x81, 0x96, 0x03, 0x45, 0x81, 0x45, 0x01, 0x15, 0x07, 0x25, 0x75, 0xC6, 0x06,
-	0x81, 0x81, 0xA7, 0x83, 0x45, 0x85, 0x46, 0x81, 0x25, 0x07, 0x96, 0x03, 0x14, 0xA7, 0x9C, 0x23,
-	0x2D, 0x61, 0x45, 0x01, 0x81, 0x81, 0xA7, 0x83, 0x45, 0x89, 0x46, 0x81, 0x35, 0x07, 0x96, 0x03,
-	0x24, 0xA7, 0x9C, 0x23, 0x25, 0x51, 0x45, 0x01, 0x95, 0x61, 0x98, 0x03, 0x81, 0x81, 0xAE, 0x03,
-	0x07, 0x93, 0x05, 0x42, 0x85, 0x41, 0xE0, 0x08, 0x1C, 0x23, 0x07, 0xC2, 0x83, 0xC1, 0x34, 0xAE,
-	0x20, 0x00, 0x07, 0x13, 0x95, 0x61, 0x86, 0x13, 0x0E, 0xF7, 0x65, 0x63, 0xAC, 0x41, 0x88, 0x93,
-	0x97, 0x01, 0x83, 0x93, 0x15, 0x8E, 0x15, 0x83, 0x00, 0x08, 0xAF, 0x83, 0x25, 0x8E, 0x16, 0x83,
-	0x00, 0x48, 0xAF, 0x03, 0x00, 0x88, 0xAE, 0x83, 0x00, 0x03, 0x97, 0x03, 0x9F, 0x36, 0x9F, 0xAE,
-	0x9E, 0xAA, 0x8F, 0x0D, 0x41, 0xF7, 0x57, 0x93, 0x01, 0xF8, 0xA0, 0x23, 0x01, 0xE8, 0xA2, 0x23,
-	0x01, 0xD8, 0xA4, 0x23, 0xAF, 0xC1, 0x82, 0x93, 0x00, 0xE7, 0xC5, 0xB3, 0xA7, 0x83, 0x8D, 0x9D,
-	0x83, 0x13, 0x00, 0x02, 0x95, 0xBE, 0xAC, 0x41, 0x00, 0x23, 0x97, 0x83, 0x00, 0xB2, 0xA0, 0x23,
-	0xD7, 0x13, 0x8F, 0x95, 0x46, 0xB3, 0x41, 0xF7, 0x8E, 0x99, 0x00, 0xF7, 0x00, 0x43, 0x97, 0x03,
-	0x00, 0x42, 0xA7, 0x83, 0x53, 0x93, 0x8F, 0x09, 0x96, 0xBE, 0x41, 0xF7, 0x00, 0xE3, 0xC7, 0xB3,
-	0x00, 0x82, 0xA7, 0x03, 0x40, 0x77, 0x87, 0xB3, 0x00, 0xD2, 0xA2, 0x23, 0xA4, 0x23, 0x97, 0xBA,
-	0x02, 0x93, 0x00, 0xF2, 0x87, 0x13, 0x40, 0x00, 0x1C, 0x63, 0xAF, 0xC1, 0xA5, 0x03, 0x04, 0x58,
-	0xDF, 0x93, 0x82, 0x01, 0x5F, 0x13, 0x40, 0x9F, 0xDE, 0x93, 0x40, 0x9F, 0x16, 0x23, 0x40, 0x9E,
-	0x17, 0x23, 0x01, 0xF5, 0x18, 0x23, 0x01, 0xE5, 0xC5, 0x81, 0x01, 0xD5, 0x45, 0x01, 0xC2, 0x99,
-	0x75, 0x65, 0xE7, 0x81, 0x80, 0x05, 0x05, 0x13, 0x00, 0x03, 0x20, 0x23, 0x00, 0x03, 0x22, 0x23,
-	0x00, 0x03, 0x24, 0x23, 0x00, 0x07, 0x20, 0x23, 0x00, 0x07, 0x22, 0x23, 0x00, 0x07, 0x24, 0x23,
-	0x00, 0x06, 0x57, 0x83, 0x44, 0x22, 0x40, 0xB2, 0x10, 0x23, 0x07, 0x85, 0x01, 0x41, 0x00, 0xF6,
-	0x07, 0x93, 0x80, 0x82, 0xC4, 0x63, 0x40, 0x00, 0x45, 0x01, 0x01, 0x07, 0xA8, 0x83, 0xB7, 0xD5,
-	0x16, 0x83, 0x82, 0x01, 0x97, 0x83, 0x15, 0x8E, 0x87, 0x13, 0x00, 0xC8, 0x93, 0x03, 0xAC, 0x41,
-	0x8E, 0x9D, 0x00, 0xE8, 0x98, 0x83, 0x43, 0x1C, 0x85, 0x93, 0x01, 0x08, 0x96, 0xBE, 0xAC, 0x41,
-	0x25, 0x8E, 0x17, 0x83, 0x41, 0x15, 0x05, 0x33, 0x00, 0x87, 0x28, 0x83, 0x40, 0x67, 0x87, 0xB3,
-	0x00, 0x47, 0x23, 0x03, 0xC3, 0x14, 0x95, 0x46, 0xC3, 0x5C, 0x97, 0x9A, 0x07, 0x13, 0xC7, 0x08,
-	0x5C, 0xE3, 0x5F, 0xF0, 0x86, 0xA5, 0xFB, 0x07, 0x01, 0x06, 0x97, 0x13, 0x55, 0x13, 0x87, 0x41,
-	0x47, 0x33, 0x40, 0xF7, 0x8F, 0x09, 0x00, 0xD5, 0x95, 0x81, 0x98, 0x03, 0x07, 0x42, 0x87, 0xA5,
-	0x83, 0x41, 0x07, 0xC2, 0x5B, 0x63, 0x87, 0xC1, 0xD5, 0x13, 0x01, 0x07, 0xC6, 0xB3, 0x40, 0xF7,
-	0x8E, 0x89, 0x00, 0xA7, 0x82, 0xC1, 0x06, 0xC2, 0x07, 0x06, 0xC2, 0x63, 0x96, 0x81, 0x85, 0x13,
-	0x00, 0x05, 0x46, 0x83, 0x00, 0x05, 0xA0, 0x23, 0x00, 0x05, 0xA2, 0x23, 0xA4, 0x23, 0x06, 0x85,
-	0x06, 0xE2, 0x00, 0x05, 0xAF, 0xC1, 0x85, 0x93, 0xA0, 0x23, 0x86, 0xE1, 0xA2, 0x23, 0x00, 0x05,
-	0xA4, 0x23, 0x00, 0x05, 0x00, 0x23, 0x00, 0x05, 0x10, 0x23, 0x00, 0xD5, 0x45, 0x89, 0x00, 0x06,
-	0xF4, 0xD5, 0xD5, 0xE3, 0x54, 0x63, 0x45, 0x01, 0x75, 0x61, 0x00, 0xE8, 0xD7, 0x13, 0x05, 0x41,
-	0x8F, 0xB9, 0x40, 0xF7, 0x07, 0xC2, 0x8F, 0x99, 0x5B, 0xE3, 0x83, 0xC1, 0x77, 0xE1, 0xF0, 0xF8,
-	0x02, 0x07, 0x87, 0x93, 0x05, 0x42, 0x8D, 0x5D, 0xB7, 0x19, 0x85, 0x41, 0x05, 0x0D, 0x75, 0x61,
-	0xA7, 0x83, 0xB7, 0x01, 0x55, 0x7D, 0x81, 0xC1, 0x3F, 0x67, 0x87, 0x13, 0x00, 0x07, 0x96, 0x83,
-	0x95, 0x36, 0x07, 0x89, 0xFE, 0xE7, 0x9C, 0xE3, 0xFF, 0xF5, 0x45, 0x13, 0xA7, 0x83, 0x80, 0x82,
-	0x55, 0x7D, 0x82, 0x01, 0x03, 0x67, 0x87, 0x13, 0x23, 0x27, 0x87, 0x93, 0x00, 0x07, 0x16, 0x83,
-	0x95, 0x36, 0x07, 0x09, 0xFE, 0xF7, 0x1C, 0xE3, 0xFF, 0xF5, 0x45, 0x13, 0xA7, 0xB7, 0x80, 0x82,
-	0x87, 0x93, 0x20, 0x00, 0x87, 0x13, 0x80, 0x07, 0x55, 0x7D, 0x7E, 0x07, 0x07, 0x91, 0x53, 0x94,
-	0x9D, 0xE3, 0x95, 0x36, 0x45, 0x13, 0xFE, 0xE7, 0x80, 0x82, 0xFF, 0xF5, 0x20, 0x02, 0x07, 0xB7,
-	0x80, 0xA7, 0x90, 0x23, 0x01, 0x05, 0x97, 0x13, 0x80, 0xC7, 0x92, 0x23, 0x94, 0x23, 0x83, 0x41,
-	0x81, 0xC1, 0x80, 0xE7, 0x80, 0xB7, 0x96, 0x23, 0x11, 0x41, 0x80, 0x82, 0x00, 0x01, 0x17, 0x23,
-	0x20, 0x02, 0x06, 0xB7, 0xD7, 0x83, 0x47, 0x05, 0x07, 0xC2, 0x82, 0x06, 0x17, 0x23, 0x83, 0xC1,
-	0x57, 0x83, 0x00, 0xF1, 0x07, 0xC2, 0x00, 0xE1, 0x96, 0xE3, 0x83, 0xC1, 0x01, 0x41, 0xFE, 0xE7,
-	0x07, 0x37, 0x80, 0x82, 0x57, 0x83, 0x20, 0x02, 0x55, 0x03, 0x81, 0x87, 0x07, 0xC2, 0x81, 0xC7,
-	0x05, 0x42, 0x83, 0xC1, 0x80, 0x82, 0x8D, 0x5D, 0xF7, 0xB7, 0x05, 0x1A, 0x06, 0xB3, 0x20, 0x01,
-	0x07, 0x91, 0x00, 0xF5, 0x86, 0x13, 0x97, 0xAA, 0x41, 0x98, 0x01, 0x45, 0x06, 0xA1, 0x05, 0x91,
-	0x01, 0x07, 0x18, 0x13, 0x01, 0x08, 0x58, 0x13, 0xFF, 0x06, 0x9C, 0x23, 0x90, 0x23, 0x83, 0x41,
-	0x07, 0xA1, 0x00, 0xE7, 0xFE, 0xB6, 0x13, 0xE3, 0x20, 0x01, 0xF7, 0xB7, 0x02, 0x87, 0x87, 0x13,
-	0x46, 0xD1, 0x97, 0x2A, 0x02, 0xC7, 0x87, 0x93, 0x95, 0x3E, 0xC3, 0x14, 0x80, 0x82, 0xC1, 0x14,
-	0x08, 0x00, 0x87, 0xB7, 0x87, 0x13, 0x05, 0x12, 0x97, 0x2A, 0xC0, 0xC7, 0x10, 0x23, 0x07, 0x0A,
-	0x87, 0x13, 0x00, 0x07, 0x97, 0x2A, 0xC0, 0xD7, 0x10, 0x23, 0x07, 0x0A, 0x87, 0x13, 0x00, 0x07,
-	0x97, 0x2A, 0xC0, 0xE7, 0xC0, 0xF7, 0x87, 0x93, 0x95, 0x3E, 0x07, 0x0A, 0x00, 0x07, 0x10, 0x23,
-	0x10, 0x23, 0x05, 0x0A, 0x80, 0x82, 0x00, 0x05, 0xCA, 0x26, 0x11, 0x01, 0x20, 0x00, 0xA4, 0xB7,
-	0xC4, 0x52, 0xCC, 0x22, 0xC8, 0x4A, 0xCE, 0x06, 0x84, 0x93, 0xC6, 0x4E, 0x44, 0x11, 0x95, 0x04,
-	0x09, 0x93, 0x4A, 0x21, 0x85, 0xA6, 0x00, 0x84, 0x09, 0xC2, 0x85, 0x22, 0xD9, 0x93, 0x3F, 0xB1,
-	0x09, 0x13, 0x01, 0x09, 0x85, 0x93, 0x01, 0x04, 0x85, 0x4E, 0x20, 0x04, 0x37, 0xA9, 0x09, 0x42,
-	0x01, 0x09, 0x59, 0x13, 0x40, 0x04, 0x85, 0x93, 0x3F, 0x3D, 0x85, 0x4A, 0x37, 0x49, 0x85, 0x22,
-	0x04, 0x05, 0x85, 0x4E, 0x04, 0x42, 0x3F, 0xB5, 0x80, 0x41, 0x85, 0x4A, 0x04, 0xD1, 0x3F, 0x95,
-	0xFD, 0x44, 0x11, 0xE3, 0x44, 0x62, 0x40, 0xF2, 0x49, 0x42, 0x44, 0xD2, 0x4A, 0x22, 0x49, 0xB2,
-	0x80, 0x82, 0x61, 0x05, 0xD4, 0x22, 0x71, 0x79, 0x20, 0x00, 0xA5, 0xB7, 0x00, 0x95, 0x14, 0x13,
-	0x1C, 0x04, 0x04, 0x13, 0x80, 0x05, 0x85, 0x93, 0xD0, 0x4A, 0xD2, 0x26, 0xD6, 0x06, 0xCE, 0x4E,
-	0x00, 0x35, 0x19, 0x93, 0x44, 0x81, 0x94, 0x2E, 0x85, 0x33, 0x49, 0x11, 0x05, 0x42, 0x00, 0x99,
-	0x85, 0xA2, 0x81, 0x41, 0xF0, 0xEF, 0xC6, 0x2A, 0x45, 0x32, 0xEE, 0x3F, 0x04, 0xC2, 0x04, 0x85,
-	0x3F, 0x39, 0x80, 0xC1, 0x92, 0xE3, 0x04, 0x51, 0x50, 0xB2, 0xFF, 0x24, 0x54, 0x92, 0x54, 0x22,
-	0x49, 0xF2, 0x59, 0x02, 0x80, 0x82, 0x61, 0x45, 0x97, 0x03, 0xED, 0x19, 0xC7, 0x19, 0x99, 0x01,
-	0x04, 0x63, 0x46, 0x85, 0x46, 0x89, 0x04, 0xD7, 0x02, 0xD7, 0x1F, 0x63, 0x20, 0x00, 0xA7, 0xB7,
-	0xAD, 0x47, 0x87, 0x93, 0x47, 0x05, 0xA8, 0x0D, 0x00, 0xE5, 0x1F, 0x63, 0x99, 0x01, 0x97, 0x03,
-	0x09, 0x63, 0xC7, 0x11, 0x46, 0x89, 0x02, 0xA7, 0x00, 0xD7, 0x1F, 0x63, 0x20, 0x00, 0xA7, 0xB7,
-	0xCD, 0x47, 0x87, 0x93, 0x05, 0x26, 0xA8, 0x09, 0x20, 0x00, 0xA7, 0xB7, 0x2D, 0x45, 0x05, 0x13,
-	0x80, 0x07, 0x87, 0x93, 0x85, 0x3E, 0x97, 0xAA, 0x97, 0xB7, 0x80, 0x82, 0x87, 0x93, 0x20, 0x00,
-	0xBF, 0xD5, 0x65, 0x07, 0x20, 0x00, 0x97, 0xB7, 0x6C, 0x87, 0x87, 0x93, 0x11, 0x01, 0xB7, 0xED,
-	0xCA, 0x26, 0xCC, 0x22, 0xC6, 0x4E, 0xC8, 0x4A, 0x89, 0x2A, 0xCE, 0x06, 0x84, 0x32, 0x89, 0xAE,
-	0xEE, 0x05, 0x84, 0xB6, 0x00, 0x95, 0x13, 0x13, 0x20, 0x00, 0xA5, 0x37, 0x24, 0x03, 0x03, 0x13,
-	0x80, 0x05, 0x05, 0x13, 0x0F, 0x13, 0x93, 0x2A, 0x0F, 0x33, 0x08, 0xC0, 0x85, 0x4E, 0x03, 0xE9,
-	0x86, 0x93, 0x4E, 0x01, 0x46, 0x51, 0xB0, 0x81, 0x00, 0x9E, 0x6C, 0x63, 0x44, 0x62, 0x40, 0xF2,
-	0x49, 0x42, 0x44, 0xD2, 0x61, 0x05, 0x49, 0xB2, 0x37, 0xB9, 0x80, 0x82, 0xBF, 0xE1, 0x83, 0x2A,
-	0x00, 0x8E, 0x08, 0xB3, 0x02, 0xC8, 0x88, 0xB3, 0x02, 0xCE, 0x0E, 0xB3, 0x98, 0xB6, 0x98, 0xFA,
-	0x00, 0x08, 0xA5, 0x83, 0x00, 0xC8, 0xA7, 0x83, 0x00, 0x48, 0xA7, 0x03, 0x00, 0xB8, 0xA2, 0x23,
-	0x00, 0xF8, 0xA8, 0x23, 0x00, 0xE8, 0xA4, 0x23, 0x9E, 0x9A, 0x0E, 0x05, 0x00, 0x0E, 0xA8, 0x03,
-	0x0F, 0xFE, 0x7E, 0x13, 0x03, 0x05, 0x87, 0xB3, 0x03, 0x05, 0x98, 0x33, 0x08, 0x32, 0x83, 0xD1,
-	0x00, 0xF8, 0x67, 0xB3, 0x00, 0x4E, 0xA8, 0x03, 0x03, 0x07, 0x0F, 0xB3, 0x03, 0x07, 0x18, 0x33,
-	0x01, 0x4F, 0xDF, 0x93, 0x6F, 0xB3, 0x08, 0x32, 0x97, 0xFE, 0x01, 0xF8, 0xA5, 0x03, 0x97, 0xAA,
-	0xA0, 0x23, 0x00, 0xCE, 0x88, 0x33, 0x00, 0xF8, 0x95, 0xB3, 0x02, 0xA5, 0x58, 0x13, 0x02, 0xA5,
-	0x05, 0xB2, 0x01, 0x48, 0x01, 0x05, 0xE8, 0x33, 0x01, 0x0E, 0xA5, 0x83, 0x02, 0xB7, 0x05, 0x33,
-	0x02, 0xB7, 0x17, 0x33, 0x07, 0x32, 0x81, 0x51, 0xA7, 0x03, 0x8D, 0x59, 0x98, 0x2A, 0x00, 0x8E,
-	0x02, 0xE7, 0x85, 0x33, 0x02, 0xE7, 0x97, 0xB3, 0x07, 0xB2, 0x81, 0x51, 0x95, 0x42, 0x8D, 0x5D,
-	0x00, 0xA8, 0xA6, 0x23, 0x71, 0x79, 0xB7, 0x91, 0xC6, 0x02, 0x47, 0x05, 0x98, 0xE1, 0x99, 0x23,
-	0x81, 0xC1, 0xA7, 0x83, 0x84, 0x2A, 0xD4, 0x22, 0x19, 0x13, 0xD0, 0x4A, 0x97, 0xCA, 0x00, 0x84,
-	0x01, 0x67, 0xD7, 0x03, 0x87, 0x93, 0xD2, 0x26, 0x14, 0x93, 0x99, 0x41, 0x97, 0xA6, 0x00, 0x14,
-	0x85, 0xB2, 0x85, 0x2E, 0x96, 0x83, 0x86, 0x36, 0xCE, 0x4E, 0x00, 0x07, 0x8B, 0x63, 0xD6, 0x06,
-	0xA6, 0x83, 0x00, 0xE6, 0x07, 0x42, 0x81, 0x81, 0x96, 0xCA, 0x87, 0x41, 0x0E, 0xE6, 0x91, 0x23,
-	0x00, 0xE7, 0x90, 0x23, 0x00, 0x34, 0x17, 0x93, 0xF0, 0xEF, 0x95, 0x3E, 0x07, 0xB7, 0xCB, 0x3F,
-	0x47, 0x05, 0x20, 0x02, 0x80, 0xE7, 0x98, 0x23, 0xCC, 0x3F, 0xF0, 0xEF, 0xCE, 0x7F, 0xF0, 0xEF,
-	0x81, 0x81, 0xA6, 0x83, 0x20, 0x00, 0xA7, 0x37, 0x96, 0xCA, 0x04, 0x26, 0x0E, 0x26, 0x97, 0x83,
-	0x80, 0x07, 0x07, 0x13, 0x87, 0xB3, 0x97, 0x22, 0x56, 0x03, 0x02, 0xA7, 0x06, 0x42, 0x14, 0xE7,
-	0x87, 0xAD, 0x86, 0x41, 0x02, 0xF6, 0x5C, 0x63, 0x14, 0xE7, 0x55, 0x03, 0x9D, 0x81, 0x86, 0x13,
-	0x85, 0x41, 0x05, 0x42, 0x8F, 0x89, 0x96, 0x26, 0x00, 0x06, 0x15, 0x03, 0x02, 0xA7, 0x87, 0xB3,
-	0x14, 0xE7, 0x55, 0x03, 0x93, 0x23, 0x87, 0xA1, 0x05, 0x42, 0x0C, 0xF6, 0x54, 0x22, 0x50, 0xB2,
-	0x59, 0x02, 0x54, 0x92, 0x85, 0x41, 0x49, 0xF2, 0x80, 0x82, 0x61, 0x45, 0x14, 0xE7, 0x56, 0x03,
-	0x86, 0x41, 0x06, 0x42, 0x40, 0xC0, 0x06, 0x33, 0x02, 0xC7, 0xD6, 0x63, 0x14, 0xE7, 0x55, 0x03,
-	0x9D, 0x81, 0x86, 0x13, 0x85, 0x41, 0x05, 0x42, 0x97, 0xAA, 0x96, 0x26, 0x00, 0x06, 0x15, 0x03,
-	0x02, 0xA7, 0x87, 0xB3, 0x14, 0xE7, 0x55, 0x03, 0x40, 0xA0, 0x05, 0x33, 0x93, 0x23, 0x87, 0xA1,
-	0xBF, 0x65, 0x0C, 0xF6, 0x0C, 0x06, 0x93, 0x23, 0x01, 0x07, 0x95, 0x13, 0x11, 0x41, 0xBF, 0x45,
-	0xC6, 0x06, 0x45, 0x01, 0xD4, 0x1F, 0xF0, 0xEF, 0xF0, 0xEF, 0x45, 0x05, 0x40, 0xB2, 0xD3, 0xBF,
-	0x01, 0x41, 0x45, 0x09, 0xD3, 0x1F, 0xF0, 0x6F, 0xC6, 0x06, 0x11, 0x41, 0xC9, 0x0F, 0xD0, 0xEF,
-	0x40, 0xB2, 0x3F, 0xF9, 0xF0, 0x6F, 0x01, 0x41, 0x05, 0x0E, 0xCB, 0x3F, 0x87, 0xB2, 0x95, 0x2E,
-	0x11, 0x41, 0x05, 0x42, 0x86, 0x36, 0x85, 0xBE, 0xC6, 0x06, 0x81, 0x41, 0xBC, 0x1F, 0xF0, 0xEF,
-	0x20, 0x02, 0x07, 0xB7, 0x98, 0x23, 0x47, 0x05, 0xF0, 0xEF, 0x80, 0xE7, 0x40, 0xB2, 0xBD, 0x1F,
-	0xF0, 0x6F, 0x01, 0x41, 0x07, 0x93, 0xBF, 0x1F, 0x05, 0x33, 0x08, 0xC0, 0x96, 0x2E, 0x02, 0xF5,
-	0xB0, 0x81, 0x87, 0x13, 0xC3, 0x63, 0x46, 0xD1, 0x80, 0x82, 0x00, 0xC5, 0x02, 0xD5, 0x87, 0xB3,
-	0x05, 0xC2, 0x05, 0x85, 0x97, 0xAA, 0x81, 0xC1, 0xA0, 0x23, 0x97, 0xBA, 0xA2, 0x23, 0x00, 0x07,
-	0xA4, 0x23, 0x00, 0x07, 0xA6, 0x23, 0x00, 0x07, 0xA8, 0x23, 0x00, 0x07, 0xBF, 0xE1, 0x00, 0x07,
-	0x82, 0x01, 0xA7, 0x03, 0xD2, 0x26, 0x71, 0x79, 0x14, 0x93, 0xCE, 0x4E, 0xA6, 0x83, 0x00, 0x15,
-	0x07, 0xB3, 0x81, 0x81, 0xD6, 0x03, 0x00, 0x97, 0xD4, 0x22, 0x00, 0x67, 0x00, 0x85, 0x14, 0x13,
-	0xD6, 0x06, 0xD0, 0x4A, 0x89, 0x2A, 0xCC, 0x52, 0x00, 0x86, 0x85, 0x33, 0x15, 0x23, 0xC6, 0x02,
-	0x43, 0x09, 0x16, 0xC5, 0x18, 0x69, 0x07, 0x63, 0x81, 0x01, 0xA6, 0x03, 0x56, 0x03, 0x08, 0x0C,
-	0x88, 0x33, 0x03, 0x66, 0x85, 0x93, 0x00, 0x95, 0x06, 0x42, 0xA6, 0x81, 0x17, 0x63, 0x82, 0x41,
-	0x56, 0x03, 0x16, 0x66, 0x55, 0x03, 0x17, 0x05, 0x96, 0x2A, 0x17, 0xE5, 0xFE, 0xC8, 0x1E, 0x23,
-	0x00, 0xC7, 0x56, 0x03, 0x00, 0xE7, 0x57, 0x03, 0xA6, 0xC1, 0x94, 0x23, 0x00, 0xE5, 0x91, 0x23,
-	0x00, 0x19, 0x06, 0x13, 0x15, 0x13, 0x8A, 0x05, 0x06, 0x06, 0x00, 0x86, 0x00, 0x95, 0x87, 0x33,
-	0x9E, 0x03, 0x96, 0x2E, 0x93, 0x03, 0x01, 0x27, 0x17, 0x03, 0x01, 0x87, 0x16, 0x03, 0x00, 0x07,
-	0x88, 0x33, 0x00, 0x06, 0x95, 0x36, 0x00, 0x86, 0x00, 0x07, 0x98, 0x83, 0x15, 0x05, 0x15, 0x03,
-	0x15, 0x08, 0x17, 0x83, 0x03, 0xC7, 0x07, 0x33, 0x02, 0x66, 0x06, 0x33, 0x87, 0xB3, 0x87, 0x3D,
-	0x86, 0x3D, 0x03, 0xC7, 0x05, 0x33, 0x97, 0x32, 0x87, 0xBD, 0x02, 0x65, 0x07, 0x33, 0x85, 0x3D,
-	0x97, 0xAA, 0x03, 0x17, 0x03, 0x17, 0x87, 0xB3, 0x14, 0xE8, 0x17, 0x23, 0x06, 0x13, 0x67, 0x15,
-	0x55, 0x63, 0xE1, 0xF7, 0x87, 0xB3, 0x10, 0xF6, 0x07, 0x13, 0x00, 0x86, 0x96, 0x23, 0xE2, 0x07,
-	0x87, 0xB3, 0x14, 0xE7, 0x97, 0x03, 0x00, 0x86, 0x96, 0x03, 0x14, 0xE7, 0x45, 0x81, 0x14, 0xC7,
-	0x8E, 0x19, 0x85, 0x4A, 0x03, 0x86, 0x97, 0x03, 0x06, 0x33, 0x46, 0x81, 0x86, 0x35, 0x02, 0xE6,
-	0x86, 0x41, 0x06, 0x42, 0x14, 0xC7, 0x9D, 0x23, 0x97, 0xA6, 0x08, 0x1C, 0xFF, 0xC7, 0x9A, 0x03,
-	0x41, 0x46, 0x06, 0x33, 0xE8, 0x7F, 0xF0, 0xEF, 0x81, 0x81, 0xA7, 0x03, 0x06, 0x93, 0x05, 0x42,
-	0x97, 0x22, 0x40, 0x00, 0x17, 0x47, 0x16, 0x03, 0x15, 0xA7, 0x17, 0x83, 0x8E, 0x91, 0x85, 0x41,
-	0x41, 0x47, 0x87, 0xB3, 0x14, 0xA7, 0x19, 0x23, 0x02, 0xD7, 0x87, 0xB3, 0x46, 0x89, 0x45, 0x85,
-	0x02, 0xC5, 0x05, 0x33, 0x56, 0x13, 0x87, 0xA9, 0x97, 0xB2, 0x40, 0xA5, 0x87, 0xC1, 0x07, 0xC2,
-	0x14, 0xF7, 0x1A, 0x23, 0x80, 0xC1, 0x96, 0x03, 0x06, 0x33, 0x85, 0x4A, 0xF0, 0xEF, 0x02, 0xF6,
-	0xA7, 0x83, 0xE3, 0xDF, 0x17, 0x13, 0x81, 0x81, 0x87, 0x41, 0x01, 0x05, 0x15, 0x03, 0x94, 0x3E,
-	0x87, 0x93, 0x16, 0xA4, 0x05, 0x33, 0x8C, 0x41, 0x97, 0xA6, 0x02, 0xE5, 0x00, 0x07, 0x97, 0x83,
-	0x16, 0xE4, 0x10, 0x23, 0x20, 0x01, 0xA7, 0x37, 0x06, 0x07, 0x07, 0x13, 0x97, 0x03, 0x94, 0xBA,
-	0x50, 0xB2, 0x00, 0x04, 0x85, 0x35, 0x54, 0x92, 0x02, 0xA7, 0x87, 0xB3, 0x1A, 0xA4, 0x12, 0x23,
-	0x49, 0xF2, 0x59, 0x02, 0x87, 0xB5, 0x4A, 0x62, 0x87, 0xC1, 0x07, 0xC2, 0x02, 0xE7, 0x87, 0xB3,
-	0x13, 0x23, 0x87, 0xB5, 0x54, 0x22, 0x16, 0xF4, 0x80, 0x82, 0x61, 0x45, 0xFE, 0x08, 0x1E, 0x23,
-	0x16, 0x03, 0xBD, 0x45, 0x97, 0x83, 0x00, 0x47, 0x57, 0x03, 0x35, 0x06, 0x87, 0xB3, 0x01, 0x07,
-	0x06, 0x33, 0x02, 0xC7, 0x97, 0x23, 0x02, 0xE6, 0xBD, 0xCD, 0x34, 0xC6, 0x06, 0x13, 0x77, 0x6D,
-	0xD7, 0x63, 0x1E, 0x17, 0x87, 0xB3, 0x00, 0xC7, 0x07, 0x13, 0x00, 0x86, 0xBD, 0xC5, 0x1E, 0x07,
-	0x00, 0x86, 0x87, 0x33, 0x14, 0xF7, 0x16, 0x23, 0xA7, 0xB7, 0xB5, 0xED, 0xD7, 0x03, 0x20, 0x00,
-	0x67, 0xA1, 0xF5, 0x47, 0x15, 0x63, 0x11, 0x41, 0x17, 0x23, 0x02, 0xF7, 0x57, 0x03, 0x00, 0x01,
-	0x87, 0xB7, 0x00, 0xE1, 0x87, 0x93, 0x08, 0x00, 0x07, 0x42, 0xA4, 0x17, 0x87, 0x41, 0x95, 0x3E,
-	0x05, 0x0A, 0x67, 0x85, 0x00, 0xF7, 0x1A, 0x63, 0x00, 0x05, 0x20, 0x23, 0x80, 0x82, 0x01, 0x41,
-	0x17, 0x23, 0x67, 0x85, 0xBF, 0xE1, 0x00, 0xF1, 0x80, 0x07, 0x87, 0x93, 0xB7, 0xFD, 0xC1, 0x1C,
-	0xC2, 0x26, 0x11, 0x41, 0x81, 0x01, 0x84, 0x93, 0x06, 0x13, 0x40, 0x88, 0x45, 0x81, 0x05, 0x00,
-	0xC4, 0x22, 0xC6, 0x06, 0x60, 0xE0, 0x30, 0xEF, 0x81, 0x81, 0xA5, 0x03, 0x3B, 0x00, 0x06, 0x13,
-	0x30, 0xEF, 0x45, 0x81, 0x97, 0x37, 0x60, 0x00, 0x07, 0x13, 0x20, 0x00, 0x40, 0x9C, 0x7F, 0x07,
-	0x00, 0x07, 0x56, 0x83, 0x81, 0x81, 0x84, 0x13, 0x00, 0x07, 0x96, 0x23, 0x00, 0xD7, 0x90, 0x23,
-	0x00, 0x27, 0x56, 0x83, 0x00, 0x07, 0x97, 0x23, 0x00, 0xD7, 0x91, 0x23, 0x00, 0x47, 0x56, 0x83,
-	0x00, 0xD7, 0x92, 0x23, 0x00, 0x67, 0x56, 0x83, 0x00, 0xD7, 0x93, 0x23, 0x00, 0x87, 0x56, 0x83,
-	0x00, 0xA7, 0x57, 0x03, 0x00, 0xD7, 0x94, 0x23, 0x00, 0xE7, 0x95, 0x23, 0x98, 0x01, 0x98, 0x23,
-	0x89, 0xFF, 0xF0, 0xEF, 0x9B, 0x23, 0x40, 0x9C, 0x9E, 0x23, 0xA4, 0x01, 0x93, 0x23, 0xA4, 0x01,
-	0x46, 0x85, 0x02, 0x07, 0x9A, 0xD1, 0x88, 0x23, 0x98, 0x01, 0x8D, 0xA3, 0x98, 0x01, 0x8D, 0x23,
-	0x9A, 0x01, 0x9B, 0x23, 0x07, 0x41, 0x77, 0x61, 0x02, 0xE7, 0x96, 0x23, 0x04, 0xD7, 0x90, 0x23,
-	0x00, 0xA7, 0x98, 0x23, 0x99, 0x23, 0x85, 0x41, 0x9A, 0x23, 0x00, 0xA7, 0xA7, 0x83, 0x02, 0x07,
-	0x66, 0xA1, 0x81, 0xC1, 0xD6, 0x03, 0x06, 0x8D, 0x40, 0x18, 0x30, 0x47, 0x08, 0xD6, 0x03, 0x63,
-	0x86, 0x93, 0x66, 0x85, 0x16, 0x23, 0x89, 0x06, 0x16, 0x23, 0x0E, 0xD7, 0x40, 0x18, 0x1E, 0xD7,
-	0xF4, 0x37, 0x66, 0x85, 0x1E, 0x23, 0x20, 0x01, 0x46, 0x89, 0x04, 0xD7, 0x04, 0xD7, 0x1A, 0x23,
-	0xF3, 0x80, 0x06, 0x93, 0x0C, 0x80, 0x07, 0x13, 0x1C, 0xD7, 0x9B, 0x23, 0x1C, 0xE7, 0x9C, 0x23,
-	0x1C, 0xD7, 0x9E, 0x23, 0x1C, 0xE7, 0x9F, 0x23, 0x1C, 0x07, 0x9A, 0x23, 0x1C, 0x07, 0x9D, 0x23,
-	0x87, 0x93, 0x67, 0xA9, 0x28, 0x23, 0x23, 0xF7, 0x00, 0xEF, 0xDA, 0xF4, 0x20, 0xEF, 0x3B, 0xF0,
-	0x20, 0xEF, 0x19, 0x80, 0x20, 0xEF, 0x15, 0x60, 0x20, 0xEF, 0x17, 0x20, 0xD0, 0xEF, 0x20, 0x80,
-	0x20, 0xEF, 0x87, 0xAF, 0xF0, 0xEF, 0x61, 0x90, 0x45, 0x05, 0xC2, 0x3F, 0x3E, 0x20, 0x20, 0xEF,
-	0x4D, 0x50, 0x00, 0xEF, 0x28, 0x23, 0x40, 0xB2, 0x44, 0x22, 0xDA, 0x04, 0x01, 0x41, 0x44, 0x92,
-	0xD6, 0x03, 0x80, 0x82, 0x76, 0xFD, 0x0E, 0x47, 0xE6, 0xC6, 0x86, 0x93, 0x16, 0x23, 0x96, 0x36,
-	0xD6, 0x03, 0x0E, 0xC7, 0x96, 0xB2, 0x1E, 0x47, 0xA7, 0x83, 0xBF, 0x8D, 0x47, 0x0D, 0x81, 0x01,
-	0x00, 0xE7, 0x9F, 0x23, 0x81, 0x41, 0xA7, 0x83, 0x06, 0x07, 0x98, 0x23, 0x06, 0x07, 0x99, 0x23,
-	0x06, 0x07, 0x9A, 0x23, 0x06, 0x07, 0x9B, 0x23, 0x9A, 0x01, 0x90, 0x23, 0x9A, 0x01, 0xA2, 0x23,
-	0x98, 0x01, 0x9F, 0x23, 0x98, 0x01, 0x9E, 0x23, 0xCA, 0xC1, 0x87, 0x13, 0xCA, 0xC1, 0x87, 0x93,
-	0x00, 0x07, 0x20, 0x23, 0x00, 0x07, 0x22, 0x23, 0x00, 0x07, 0x14, 0x23, 0x06, 0x47, 0x87, 0x13,
-	0x00, 0x07, 0x95, 0x23, 0x00, 0x07, 0x96, 0x23, 0x9B, 0xE3, 0x07, 0x91, 0x80, 0x82, 0xFE, 0xE7,
-	0x81, 0x41, 0xA7, 0x83, 0x9A, 0x01, 0x86, 0x93, 0x00, 0x06, 0xD6, 0x83, 0x07, 0x47, 0xD8, 0x83,
-	0x9A, 0x01, 0x88, 0x13, 0x82, 0xC1, 0x06, 0xC2, 0x09, 0x16, 0x84, 0x63, 0x07, 0x07, 0xD7, 0x03,
-	0x07, 0x27, 0xD6, 0x83, 0x07, 0x67, 0xD6, 0x03, 0x8F, 0x55, 0x07, 0x42, 0x01, 0x08, 0x96, 0x93,
-	0xA5, 0x83, 0x8E, 0xD1, 0x85, 0xB3, 0x9A, 0x41, 0xF3, 0x63, 0x40, 0xB6, 0x17, 0x7D, 0x00, 0xB6,
-	0xCA, 0xC1, 0x86, 0x93, 0x00, 0xA7, 0x85, 0x13, 0x06, 0xE7, 0x83, 0x13, 0xCA, 0xC1, 0x86, 0x13,
-	0x00, 0xA6, 0x9E, 0x03, 0x06, 0x91, 0x05, 0x11, 0xFF, 0xC5, 0x1E, 0x23, 0x00, 0x86, 0x9E, 0x03,
-	0xFF, 0xC5, 0x1F, 0x23, 0x00, 0x06, 0x93, 0x23, 0x00, 0x06, 0x94, 0x23, 0xFE, 0x65, 0x12, 0xE3,
-	0x01, 0x07, 0x56, 0x93, 0x00, 0xE7, 0x92, 0x23, 0x01, 0x05, 0xD7, 0x13, 0x00, 0xE7, 0x93, 0x23,
-	0x00, 0x06, 0x57, 0x03, 0x00, 0xD7, 0x91, 0x23, 0x00, 0xB7, 0x94, 0x23, 0x00, 0xE7, 0x90, 0x23,
-	0x98, 0x01, 0x9E, 0x23, 0x98, 0x01, 0x9F, 0x23, 0x00, 0x06, 0x10, 0x23, 0x01, 0x18, 0x10, 0x23,
-	0xA7, 0x83, 0x80, 0x82, 0x71, 0x79, 0x81, 0x41, 0x00, 0xA1, 0x17, 0x23, 0x06, 0xE7, 0xD7, 0x83,
-	0x00, 0x01, 0x1B, 0x23, 0xD7, 0x13, 0xD6, 0x06, 0x1A, 0x23, 0x00, 0x87, 0x47, 0x37, 0x00, 0xE1,
-	0x07, 0x13, 0x00, 0x0F, 0xF7, 0x93, 0x24, 0x07, 0x87, 0xB3, 0x0F, 0xF7, 0x47, 0x65, 0x02, 0xE7,
-	0x57, 0x83, 0xCC, 0x3E, 0x07, 0xC2, 0x01, 0x41, 0x74, 0x63, 0x83, 0xC1, 0x1A, 0x23, 0x00, 0xF7,
-	0x57, 0x83, 0x00, 0xE1, 0x47, 0x05, 0x00, 0xE1, 0x83, 0xC1, 0x07, 0xC2, 0x00, 0xE7, 0x89, 0x63,
-	0x00, 0xE1, 0x57, 0x83, 0x07, 0xC2, 0x47, 0x09, 0x9B, 0x63, 0x83, 0xC1, 0xA7, 0x03, 0x02, 0xE7,
-	0x47, 0xE2, 0x9A, 0x41, 0x00, 0xF7, 0x67, 0x63, 0xC7, 0x81, 0x47, 0xE2, 0x1B, 0x23, 0x47, 0x85,
-	0x57, 0x03, 0x00, 0xF1, 0x87, 0x93, 0x01, 0x41, 0x07, 0x42, 0x99, 0xE1, 0xEF, 0x01, 0x83, 0x41,
-	0x00, 0x07, 0x90, 0x23, 0x9E, 0x23, 0x47, 0x05, 0x50, 0xB2, 0x98, 0xE1, 0x80, 0x82, 0x61, 0x45,
-	0xE7, 0xBF, 0xF0, 0xEF, 0x57, 0x03, 0xBF, 0xF9, 0x46, 0x85, 0x01, 0x61, 0x87, 0x41, 0x07, 0x42,
-	0x0A, 0xD7, 0x19, 0x63, 0x99, 0xC1, 0xD7, 0x03, 0x87, 0x41, 0x07, 0x42, 0xA6, 0x03, 0xE3, 0x5D,
-	0x86, 0x93, 0x81, 0x81, 0x17, 0x03, 0xCA, 0xC1, 0x77, 0x53, 0x0F, 0x46, 0x17, 0x03, 0xD0, 0x07,
-	0x77, 0xD3, 0x16, 0xA6, 0x87, 0x37, 0xD0, 0x07, 0x26, 0x87, 0x20, 0x00, 0x77, 0x53, 0x1A, 0xC7,
-	0x77, 0x53, 0x18, 0xF7, 0x17, 0x53, 0x10, 0xD7, 0x07, 0x42, 0xC0, 0x07, 0x1E, 0x23, 0x87, 0x41,
-	0x17, 0x03, 0x00, 0xE1, 0x77, 0xD3, 0x1F, 0x46, 0x17, 0x03, 0xD0, 0x07, 0x77, 0x53, 0x26, 0xA6,
-	0xF7, 0xD3, 0xD0, 0x07, 0xF7, 0xD3, 0x18, 0xE7, 0x97, 0x53, 0x10, 0xD7, 0x07, 0x42, 0xC0, 0x07,
-	0x1F, 0x23, 0x87, 0x41, 0xD7, 0x03, 0x00, 0xE1, 0x55, 0x83, 0x00, 0x07, 0x07, 0x42, 0x01, 0xC1,
-	0x07, 0x0A, 0x83, 0x41, 0x15, 0x23, 0x97, 0x36, 0xD7, 0x03, 0x00, 0xB7, 0x07, 0x42, 0x00, 0x07,
-	0x05, 0x93, 0x83, 0x41, 0x05, 0xC2, 0x00, 0x17, 0x90, 0x23, 0x81, 0xC1, 0x55, 0x83, 0x00, 0xB7,
-	0x07, 0x0A, 0x01, 0xE1, 0x16, 0x23, 0x97, 0x36, 0x57, 0x03, 0x00, 0xB7, 0xD5, 0x83, 0x00, 0x26,
-	0x07, 0x22, 0x00, 0x07, 0x30, 0x07, 0x77, 0x13, 0x90, 0x23, 0x8F, 0x4D, 0xA2, 0x23, 0x00, 0xE6,
-	0x56, 0x83, 0x9A, 0x01, 0xD7, 0x03, 0x01, 0x41, 0x06, 0xC2, 0x00, 0x07, 0x82, 0xC1, 0x07, 0x42,
-	0x64, 0xE3, 0x83, 0x41, 0x57, 0x03, 0xF2, 0xD7, 0x17, 0x7D, 0x01, 0x41, 0x83, 0x41, 0x07, 0x42,
-	0x00, 0xE7, 0x90, 0x23, 0x11, 0x01, 0xBF, 0x01, 0xCC, 0x26, 0xCE, 0x22, 0x34, 0x20, 0x24, 0x73,
-	0x34, 0x10, 0x24, 0xF3, 0x30, 0x04, 0x60, 0x73, 0xF7, 0xB7, 0xC2, 0x3E, 0xCA, 0x2E, 0x20, 0x01,
-	0xC6, 0x36, 0xC8, 0x32, 0x06, 0x93, 0xC4, 0x3A, 0x87, 0x13, 0x02, 0x00, 0xC3, 0x14, 0xA0, 0x07,
-	0x98, 0x07, 0x86, 0x13, 0xCE, 0x58, 0x47, 0x05, 0x20, 0x01, 0xE5, 0xB7, 0xAA, 0x23, 0x66, 0x85,
-	0x06, 0x95, 0x06, 0x05, 0x87, 0x93, 0xDD, 0xB4, 0x46, 0x95, 0x90, 0x07, 0x88, 0x23, 0xDF, 0xF4,
-	0xC6, 0x18, 0x9A, 0xE1, 0x46, 0x42, 0x45, 0xD2, 0x47, 0x22, 0x46, 0xB2, 0x70, 0x73, 0x47, 0x92,
-	0x90, 0x73, 0x30, 0x04, 0x10, 0x73, 0x34, 0x14, 0x44, 0x72, 0x34, 0x24, 0x61, 0x05, 0x44, 0xE2,
-	0x30, 0x20, 0x00, 0x73, 0xCE, 0x22, 0x11, 0x01, 0x24, 0x73, 0xCC, 0x26, 0x24, 0xF3, 0x34, 0x20,
-	0x60, 0x73, 0x34, 0x10, 0xC6, 0x3A, 0x30, 0x04, 0xD7, 0x83, 0xC4, 0x3E, 0xCA, 0x32, 0x9B, 0x21,
-	0xF6, 0x13, 0xC8, 0x36, 0x87, 0x13, 0x00, 0x17, 0xE6, 0x93, 0x9B, 0x21, 0xC6, 0x09, 0x00, 0x17,
-	0x96, 0x93, 0x9B, 0xF9, 0x82, 0xC1, 0x01, 0x07, 0x81, 0x81, 0xA7, 0x83, 0x00, 0xD7, 0x10, 0x23,
-	0x04, 0xD7, 0x9D, 0x23, 0x8A, 0x23, 0x47, 0x85, 0xF7, 0x37, 0x9A, 0xF1, 0x20, 0x23, 0x20, 0x01,
-	0x46, 0x52, 0xA2, 0xF7, 0x47, 0x32, 0x46, 0xC2, 0x70, 0x73, 0x47, 0xA2, 0x90, 0x73, 0x30, 0x04,
-	0x10, 0x73, 0x34, 0x14, 0x44, 0x72, 0x34, 0x24, 0x61, 0x05, 0x44, 0xE2, 0x30, 0x20, 0x00, 0x73,
-	0xCE, 0x22, 0x11, 0x01, 0x24, 0x73, 0xCC, 0x26, 0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10,
-	0xC6, 0x3A, 0x30, 0x04, 0xD7, 0x83, 0xC4, 0x3E, 0xCA, 0x32, 0x9B, 0x21, 0xF6, 0x13, 0xC8, 0x36,
-	0x87, 0x13, 0x00, 0x27, 0xE6, 0x93, 0x9B, 0x21, 0xC6, 0x09, 0x00, 0x27, 0x96, 0x93, 0x9B, 0xF5,
-	0x82, 0xC1, 0x01, 0x07, 0x81, 0x81, 0xA7, 0x83, 0x00, 0xD7, 0x10, 0x23, 0x9D, 0x23, 0x47, 0x05,
-	0x97, 0x23, 0x04, 0xD7, 0xF7, 0xB7, 0x9A, 0xE1, 0x47, 0x09, 0x20, 0x01, 0xA2, 0xE7, 0xA0, 0x23,
-	0x46, 0xC2, 0x46, 0x52, 0x47, 0xA2, 0x47, 0x32, 0x30, 0x04, 0x70, 0x73, 0x34, 0x14, 0x90, 0x73,
-	0x34, 0x24, 0x10, 0x73, 0x44, 0xE2, 0x44, 0x72, 0x00, 0x73, 0x61, 0x05, 0x11, 0x41, 0x30, 0x20,
-	0xC4, 0x26, 0xC6, 0x22, 0x34, 0x20, 0x24, 0x73, 0x34, 0x10, 0x24, 0xF3, 0x30, 0x04, 0x60, 0x73,
-	0xF7, 0x37, 0xC2, 0x3A, 0xC0, 0x3E, 0x20, 0x01, 0xA0, 0x07, 0x27, 0x83, 0x00, 0x17, 0xE7, 0x93,
-	0xA0, 0xF7, 0x20, 0x23, 0x47, 0x82, 0x47, 0x12, 0x30, 0x04, 0x70, 0x73, 0x34, 0x14, 0x90, 0x73,
-	0x34, 0x24, 0x10, 0x73, 0x44, 0xA2, 0x44, 0x32, 0x00, 0x73, 0x01, 0x41, 0x11, 0x41, 0x30, 0x20,
-	0xC4, 0x26, 0xC6, 0x22, 0x34, 0x20, 0x24, 0x73, 0x34, 0x10, 0x24, 0xF3, 0x30, 0x04, 0x60, 0x73,
-	0xF7, 0x37, 0xC2, 0x3A, 0xC0, 0x3E, 0x20, 0x01, 0xA0, 0x07, 0x27, 0x83, 0x00, 0x27, 0xE7, 0x93,
-	0xA0, 0xF7, 0x20, 0x23, 0x9B, 0x23, 0x47, 0x05, 0x47, 0x12, 0x9A, 0xE1, 0x70, 0x73, 0x47, 0x82,
-	0x90, 0x73, 0x30, 0x04, 0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24, 0x01, 0x41, 0x44, 0xA2,
-	0x30, 0x20, 0x00, 0x73, 0x30, 0x20, 0x00, 0x73, 0xC6, 0x22, 0x11, 0x41, 0x24, 0x73, 0xC4, 0x26,
-	0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10, 0xC2, 0x3A, 0x30, 0x04, 0x20, 0x01, 0xF7, 0x37,
-	0x27, 0x83, 0xC0, 0x3E, 0xE7, 0x93, 0xA0, 0x07, 0x20, 0x23, 0x04, 0x07, 0x47, 0x12, 0xA0, 0xF7,
-	0x70, 0x73, 0x47, 0x82, 0x90, 0x73, 0x30, 0x04, 0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24,
-	0x01, 0x41, 0x44, 0xA2, 0x30, 0x20, 0x00, 0x73, 0xC6, 0x22, 0x11, 0x41, 0x24, 0x73, 0xC4, 0x26,
-	0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10, 0xC2, 0x3A, 0x30, 0x04, 0x20, 0x01, 0xF7, 0x37,
-	0x27, 0x83, 0xC0, 0x3E, 0xE7, 0x93, 0xA0, 0x07, 0x20, 0x23, 0x08, 0x07, 0x47, 0x12, 0xA0, 0xF7,
-	0x70, 0x73, 0x47, 0x82, 0x90, 0x73, 0x30, 0x04, 0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24,
-	0x01, 0x41, 0x44, 0xA2, 0x30, 0x20, 0x00, 0x73, 0xC6, 0x22, 0x11, 0x41, 0x24, 0x73, 0xC4, 0x26,
-	0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10, 0xC2, 0x3A, 0x30, 0x04, 0x20, 0x01, 0xF7, 0x37,
-	0x27, 0x83, 0xC0, 0x3E, 0xE7, 0x93, 0xA0, 0x07, 0x20, 0x23, 0x10, 0x07, 0x47, 0x12, 0xA0, 0xF7,
-	0x70, 0x73, 0x47, 0x82, 0x90, 0x73, 0x30, 0x04, 0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24,
-	0x01, 0x41, 0x44, 0xA2, 0x30, 0x20, 0x00, 0x73, 0xC6, 0x22, 0x11, 0x41, 0x24, 0x73, 0xC4, 0x26,
-	0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10, 0xC2, 0x3A, 0x30, 0x04, 0x20, 0x01, 0xF7, 0x37,
-	0x27, 0x83, 0xC0, 0x3E, 0xE7, 0x93, 0xA0, 0x07, 0x20, 0x23, 0x20, 0x07, 0x47, 0x12, 0xA0, 0xF7,
-	0x70, 0x73, 0x47, 0x82, 0x90, 0x73, 0x30, 0x04, 0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24,
-	0x01, 0x41, 0x44, 0xA2, 0x30, 0x20, 0x00, 0x73, 0xC6, 0x22, 0x11, 0x41, 0x24, 0x73, 0xC4, 0x26,
-	0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10, 0xC2, 0x3A, 0x30, 0x04, 0x20, 0x01, 0xF7, 0x37,
-	0x27, 0x83, 0xC0, 0x3E, 0xE7, 0x93, 0xA0, 0x07, 0x20, 0x23, 0x40, 0x07, 0x47, 0x12, 0xA0, 0xF7,
-	0x70, 0x73, 0x47, 0x82, 0x90, 0x73, 0x30, 0x04, 0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24,
-	0x01, 0x41, 0x44, 0xA2, 0x30, 0x20, 0x00, 0x73, 0xCE, 0x22, 0x11, 0x01, 0x24, 0x73, 0xCC, 0x26,
-	0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10, 0xCA, 0x36, 0x30, 0x04, 0x20, 0x01, 0xF6, 0xB7,
-	0xA7, 0x83, 0xC6, 0x3E, 0xC8, 0x3A, 0xA0, 0x06, 0x07, 0x13, 0x67, 0x05, 0x8F, 0xD9, 0x80, 0x07,
-	0xA0, 0xF6, 0xA0, 0x23, 0x46, 0xD2, 0x47, 0x42, 0x70, 0x73, 0x47, 0xB2, 0x90, 0x73, 0x30, 0x04,
-	0x10, 0x73, 0x34, 0x14, 0x44, 0x72, 0x34, 0x24, 0x61, 0x05, 0x44, 0xE2, 0x30, 0x20, 0x00, 0x73,
-	0xC6, 0x22, 0x11, 0x41, 0x24, 0x73, 0xC4, 0x26, 0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10,
-	0xC2, 0x3A, 0x30, 0x04, 0x20, 0x01, 0xF7, 0x37, 0x27, 0x83, 0xC0, 0x3E, 0xE7, 0x93, 0xA1, 0x07,
-	0x28, 0x23, 0x00, 0x17, 0x47, 0x12, 0xA0, 0xF7, 0x70, 0x73, 0x47, 0x82, 0x90, 0x73, 0x30, 0x04,
-	0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24, 0x01, 0x41, 0x44, 0xA2, 0x30, 0x20, 0x00, 0x73,
-	0xC6, 0x22, 0x11, 0x41, 0x24, 0x73, 0xC4, 0x26, 0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10,
-	0xC2, 0x3A, 0x30, 0x04, 0x20, 0x01, 0xF7, 0x37, 0x27, 0x83, 0xC0, 0x3E, 0xE7, 0x93, 0xA1, 0x07,
-	0x28, 0x23, 0x00, 0x27, 0x47, 0x12, 0xA0, 0xF7, 0x70, 0x73, 0x47, 0x82, 0x90, 0x73, 0x30, 0x04,
-	0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24, 0x01, 0x41, 0x44, 0xA2, 0x30, 0x20, 0x00, 0x73,
-	0xC6, 0x22, 0x11, 0x41, 0x24, 0x73, 0xC4, 0x26, 0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10,
-	0xC2, 0x3A, 0x30, 0x04, 0x20, 0x01, 0xF7, 0x37, 0x27, 0x83, 0xC0, 0x3E, 0xE7, 0x93, 0xA1, 0x07,
-	0x28, 0x23, 0x00, 0x47, 0x47, 0x12, 0xA0, 0xF7, 0x70, 0x73, 0x47, 0x82, 0x90, 0x73, 0x30, 0x04,
-	0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24, 0x01, 0x41, 0x44, 0xA2, 0x30, 0x20, 0x00, 0x73,
-	0xC6, 0x22, 0x11, 0x41, 0x24, 0x73, 0xC4, 0x26, 0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10,
-	0xC2, 0x3A, 0x30, 0x04, 0x20, 0x01, 0xF7, 0x37, 0x27, 0x83, 0xC0, 0x3E, 0xE7, 0x93, 0xA1, 0x07,
-	0x28, 0x23, 0x00, 0x87, 0x47, 0x12, 0xA0, 0xF7, 0x70, 0x73, 0x47, 0x82, 0x90, 0x73, 0x30, 0x04,
-	0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24, 0x01, 0x41, 0x44, 0xA2, 0x30, 0x20, 0x00, 0x73,
-	0xC6, 0x22, 0x11, 0x41, 0x24, 0x73, 0xC4, 0x26, 0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10,
-	0xC2, 0x3A, 0x30, 0x04, 0x47, 0x11, 0xC0, 0x3E, 0x20, 0x01, 0xF7, 0xB7, 0xA2, 0xE7, 0xA0, 0x23,
-	0x47, 0x82, 0x47, 0x12, 0x30, 0x04, 0x70, 0x73, 0x34, 0x14, 0x90, 0x73, 0x34, 0x24, 0x10, 0x73,
-	0x44, 0xA2, 0x44, 0x32, 0x00, 0x73, 0x01, 0x41, 0x00, 0x00, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0xC6, 0x3E, 0x11, 0x41, 0x34, 0x20, 0x27, 0xF3, 0x34, 0x10, 0x27, 0xF3, 0x34, 0x30, 0x27, 0xF3,
-	0x00, 0x00, 0xA0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x71, 0x71, 0x00, 0x00, 0xD5, 0x26, 0xD7, 0x22, 0x34, 0x20, 0x24, 0x73, 0x34, 0x10, 0x24, 0xF3,
-	0x30, 0x04, 0x60, 0x73, 0xDE, 0xBA, 0xC9, 0x26, 0xD3, 0x06, 0xDC, 0xBE, 0xCF, 0x1A, 0xD1, 0x16,
-	0xCB, 0x22, 0xCD, 0x1E, 0xC5, 0x2E, 0xC7, 0x2A, 0xC1, 0x36, 0xC3, 0x32, 0xD8, 0xC6, 0xDA, 0xC2,
-	0xD4, 0xF2, 0xD6, 0xCA, 0xD0, 0xFA, 0xD2, 0xF6, 0xE2, 0x82, 0xCE, 0xFE, 0xFE, 0x0A, 0xE0, 0x86,
-	0xFA, 0x12, 0xFC, 0x0E, 0xF6, 0x1A, 0xF8, 0x16, 0xF2, 0x2A, 0xF4, 0x1E, 0xEE, 0x32, 0xF0, 0x2E,
-	0xEA, 0x3A, 0xEC, 0x36, 0xF7, 0xB7, 0xE8, 0x3E, 0x47, 0x21, 0x20, 0x01, 0xE4, 0x46, 0xE6, 0x42,
-	0xE0, 0x76, 0xE2, 0x72, 0xFF, 0xE1, 0x2E, 0x27, 0xFF, 0xF1, 0x2C, 0x27, 0xA0, 0xE7, 0xA0, 0x23,
-	0x9B, 0xC1, 0xD7, 0x03, 0x84, 0x93, 0x47, 0x85, 0x14, 0x63, 0x9B, 0xC1, 0x90, 0x23, 0x00, 0xF7,
-	0x87, 0x93, 0x00, 0x04, 0xC7, 0x83, 0x9B, 0x01, 0x47, 0x09, 0x00, 0x07, 0x9B, 0x01, 0x84, 0x13,
-	0x0F, 0xF7, 0xF7, 0x93, 0x0E, 0xE7, 0x8C, 0x63, 0x86, 0x63, 0x46, 0x0D, 0x47, 0x05, 0x1C, 0xC7,
-	0x06, 0xE7, 0x94, 0x63, 0x20, 0x01, 0xF6, 0xB7, 0x98, 0x06, 0xA4, 0x23, 0x99, 0x86, 0xA7, 0x03,
-	0x87, 0x09, 0x65, 0x09, 0x81, 0x81, 0xA5, 0x83, 0x07, 0x42, 0x97, 0x2A, 0x9A, 0x23, 0x87, 0x41,
-	0xAE, 0x23, 0x2A, 0xE5, 0xE7, 0x37, 0x98, 0xF6, 0x45, 0x95, 0x20, 0x01, 0x65, 0x85, 0xDB, 0x6C,
-	0xAE, 0x23, 0xDF, 0x2C, 0xD5, 0x83, 0x96, 0xF6, 0xA6, 0x83, 0xA5, 0x61, 0x05, 0xC2, 0x81, 0x01,
-	0xD7, 0x03, 0x81, 0xC1, 0x07, 0x42, 0x02, 0x66, 0x13, 0x63, 0x83, 0x41, 0x85, 0x91, 0x08, 0xF7,
-	0x45, 0x09, 0x89, 0xB9, 0x77, 0x40, 0x10, 0xEF, 0x00, 0x23, 0x47, 0x89, 0x47, 0x05, 0x00, 0xF4,
-	0x20, 0x01, 0xF7, 0xB7, 0x98, 0xE7, 0xA4, 0x23, 0x52, 0x8A, 0x50, 0x9A, 0x43, 0xEA, 0x43, 0x7A,
-	0x44, 0xCA, 0x44, 0x5A, 0x45, 0xAA, 0x45, 0x3A, 0x46, 0x8A, 0x46, 0x1A, 0x57, 0xE6, 0x57, 0x76,
-	0x58, 0xC6, 0x58, 0x56, 0x5E, 0x26, 0x59, 0x36, 0x5F, 0x06, 0x5E, 0x96, 0x60, 0x16, 0x4F, 0xF6,
-	0x71, 0x72, 0x60, 0x86, 0x72, 0x52, 0x71, 0xE2, 0x73, 0x32, 0x72, 0xC2, 0x75, 0x12, 0x73, 0xA2,
-	0x66, 0x72, 0x75, 0x82, 0x67, 0x52, 0x66, 0xE2, 0x68, 0x32, 0x67, 0xC2, 0x6E, 0x12, 0x68, 0xA2,
-	0x2F, 0x07, 0x6E, 0x82, 0x2F, 0x87, 0xFF, 0xC1, 0x70, 0x73, 0xFF, 0x81, 0x90, 0x73, 0x30, 0x04,
-	0x10, 0x73, 0x34, 0x14, 0x54, 0x3A, 0x34, 0x24, 0x61, 0x4D, 0x54, 0xAA, 0x30, 0x20, 0x00, 0x73,
-	0x02, 0x66, 0xD7, 0x03, 0x83, 0x41, 0x07, 0x42, 0xF8, 0xC7, 0x10, 0xE3, 0x97, 0xA1, 0xD7, 0x03,
-	0x83, 0x41, 0x07, 0x42, 0xF6, 0xF7, 0x1A, 0xE3, 0xB7, 0xA5, 0x45, 0x8D, 0x20, 0x01, 0xF7, 0x37,
-	0x98, 0x07, 0x24, 0x23, 0x99, 0x87, 0x27, 0x83, 0x81, 0x81, 0xA6, 0x83, 0x07, 0xC2, 0x87, 0x89,
-	0x9A, 0x23, 0x87, 0xC1, 0x46, 0x85, 0x0A, 0xF6, 0x98, 0xD7, 0x2E, 0x23, 0x20, 0x01, 0xE7, 0xB7,
-	0x50, 0x00, 0x06, 0x13, 0x66, 0x05, 0xDB, 0xF0, 0x46, 0x0D, 0xDF, 0xB0, 0x96, 0xC7, 0x2E, 0x23,
-	0xA5, 0x61, 0xD5, 0x83, 0x81, 0x01, 0xA7, 0x83, 0xD7, 0x03, 0x05, 0xC2, 0x81, 0xC1, 0x02, 0x67,
-	0x07, 0x42, 0x89, 0xBD, 0x06, 0x63, 0x83, 0x41, 0xD7, 0x03, 0x08, 0xD7, 0x07, 0x42, 0x02, 0x67,
-	0x18, 0x63, 0x83, 0x41, 0xD7, 0x83, 0x06, 0xC7, 0x07, 0xC2, 0x97, 0xA1, 0x9E, 0x63, 0x83, 0xC1,
-	0xD7, 0x83, 0x00, 0xD7, 0x07, 0xC2, 0x96, 0xA1, 0xEB, 0x81, 0x83, 0xC1, 0x96, 0xA1, 0xD5, 0x03,
-	0x75, 0x13, 0x45, 0x8D, 0x10, 0xEF, 0x0F, 0xF5, 0x47, 0x8D, 0x66, 0x20, 0x00, 0xF4, 0x00, 0x23,
-	0x20, 0x01, 0xF7, 0x37, 0x24, 0x23, 0x47, 0x85, 0xA7, 0x03, 0x98, 0xF7, 0x90, 0x23, 0x81, 0x01,
-	0x57, 0x03, 0x00, 0xF4, 0x07, 0x42, 0x04, 0x07, 0x1F, 0xE3, 0x83, 0x41, 0xE7, 0xB7, 0xEC, 0xF7,
-	0xA7, 0x83, 0x20, 0x01, 0x83, 0xA1, 0x30, 0x07, 0x9C, 0x23, 0x8B, 0x85, 0x95, 0xE3, 0x9A, 0xF1,
-	0x87, 0x93, 0xEC, 0x07, 0xD7, 0x03, 0x9B, 0xA1, 0x07, 0x05, 0x00, 0x07, 0x00, 0xE7, 0x90, 0x23,
-	0xD7, 0x83, 0xBD, 0x65, 0x47, 0x11, 0x02, 0x67, 0x83, 0xC1, 0x07, 0xC2, 0xFA, 0xE7, 0x97, 0xE3,
-	0x45, 0x01, 0x45, 0x8D, 0xA6, 0x83, 0xB7, 0x4D, 0x46, 0x05, 0x81, 0x01, 0x04, 0x06, 0xD7, 0x03,
-	0x9B, 0xA1, 0x87, 0x93, 0x83, 0x41, 0x07, 0x42, 0x02, 0xC7, 0x10, 0x63, 0x20, 0x01, 0xE7, 0x37,
-	0x30, 0x07, 0x27, 0x03, 0x8B, 0x05, 0x83, 0x21, 0x9A, 0xE1, 0x9C, 0x23, 0xD7, 0x03, 0xE7, 0x11,
-	0x07, 0x05, 0x00, 0x07, 0x00, 0xE7, 0x90, 0x23, 0x04, 0x66, 0xD7, 0x03, 0x83, 0x41, 0x07, 0x42,
-	0xD7, 0x03, 0xE7, 0x01, 0xEF, 0x01, 0x00, 0x07, 0x20, 0x01, 0xF7, 0x37, 0x99, 0x87, 0x27, 0x03,
-	0x81, 0x81, 0xA6, 0x03, 0x07, 0x42, 0x87, 0x09, 0x1A, 0x23, 0x87, 0x41, 0x90, 0x23, 0x1A, 0xE6,
-	0xF6, 0x37, 0x00, 0x07, 0x47, 0x05, 0x20, 0x01, 0x98, 0xE6, 0x2E, 0x23, 0x20, 0x01, 0xE5, 0xB7,
-	0xAA, 0x23, 0x67, 0x85, 0x07, 0x95, 0x06, 0x05, 0x47, 0x95, 0xDD, 0xBC, 0x96, 0xF6, 0x2E, 0x23,
-	0xA5, 0x61, 0xD5, 0x83, 0x02, 0x66, 0xD7, 0x83, 0x07, 0xC2, 0x05, 0xC2, 0x83, 0xC1, 0x81, 0xC1,
-	0x83, 0x63, 0x89, 0xBD, 0xD7, 0x83, 0x0A, 0xE7, 0x46, 0x0D, 0x02, 0x66, 0x83, 0xC1, 0x07, 0xC2,
-	0x08, 0xC7, 0x94, 0x63, 0x97, 0xA1, 0xD7, 0x83, 0x83, 0xC1, 0x07, 0xC2, 0x00, 0xE7, 0x9F, 0x63,
-	0x96, 0xA1, 0xD7, 0x03, 0x83, 0x41, 0x07, 0x42, 0x00, 0xF7, 0x19, 0x63, 0x96, 0xA1, 0xD5, 0x03,
-	0x75, 0x13, 0x45, 0x8D, 0x10, 0xEF, 0x0F, 0xF5, 0xF7, 0xB7, 0x54, 0x20, 0x47, 0x11, 0x20, 0x01,
-	0x96, 0xE7, 0xAA, 0x23, 0x00, 0x23, 0x47, 0x85, 0x8D, 0x23, 0x00, 0xF4, 0xD7, 0x83, 0x98, 0xF1,
-	0x07, 0x85, 0x9A, 0xC1, 0x83, 0xC1, 0x07, 0xC2, 0x9A, 0xF1, 0x96, 0x23, 0x9A, 0x81, 0xD7, 0x83,
-	0x07, 0xC2, 0x07, 0x85, 0x94, 0x23, 0x83, 0xC1, 0xD7, 0x83, 0x9A, 0xF1, 0x07, 0x85, 0x9A, 0xA1,
-	0x83, 0xC1, 0x07, 0xC2, 0x9A, 0xF1, 0x95, 0x23, 0xA5, 0xA1, 0xD7, 0x83, 0x07, 0xC2, 0x07, 0x85,
-	0x9D, 0x23, 0x83, 0xC1, 0xA7, 0x83, 0xA4, 0xF1, 0x67, 0x41, 0x9A, 0x41, 0x46, 0xB7, 0x07, 0x13,
-	0xA2, 0x23, 0x97, 0xBA, 0xB3, 0x49, 0x9A, 0xF1, 0x02, 0x66, 0xD7, 0x83, 0x07, 0xC2, 0x47, 0x11,
-	0x9C, 0xE3, 0x83, 0xC1, 0x45, 0x8D, 0xF8, 0xE7, 0xB7, 0x71, 0x45, 0x05, 0xC6, 0x22, 0x11, 0x41,
-	0x24, 0x73, 0xC4, 0x26, 0x24, 0xF3, 0x34, 0x20, 0x60, 0x73, 0x34, 0x10, 0xC2, 0x3A, 0x30, 0x04,
-	0x20, 0x01, 0xF7, 0x37, 0x27, 0x83, 0xC0, 0x3E, 0xE7, 0x93, 0xA0, 0x07, 0x20, 0x23, 0x00, 0x47,
-	0x47, 0x85, 0xA0, 0xF7, 0x9A, 0xF1, 0x9B, 0x23, 0x9B, 0xC1, 0xD7, 0x03, 0x00, 0xF7, 0x19, 0x63,
-	0x9B, 0xA1, 0x87, 0x93, 0x00, 0x07, 0xD7, 0x03, 0x90, 0x23, 0x07, 0x05, 0x47, 0x12, 0x00, 0xE7,
-	0x70, 0x73, 0x47, 0x82, 0x90, 0x73, 0x30, 0x04, 0x10, 0x73, 0x34, 0x14, 0x44, 0x32, 0x34, 0x24,
-	0x01, 0x41, 0x44, 0xA2, 0x30, 0x20, 0x00, 0x73, 0x30, 0x20, 0x00, 0x73, 0x30, 0x20, 0x00, 0x73,
-	0x30, 0x20, 0x00, 0x73, 0x30, 0x20, 0x00, 0x73, 0xB7, 0xF3, 0x47, 0xA1, 0x46, 0xB7, 0x30, 0x07,
-	0x86, 0x93, 0x20, 0x00, 0xE7, 0x93, 0x7C, 0x06, 0x90, 0x73, 0x00, 0x36, 0x87, 0x13, 0x30, 0x57,
-	0x10, 0x73, 0xD6, 0x01, 0x06, 0x13, 0x30, 0x77, 0x87, 0x93, 0x0C, 0x07, 0xC3, 0x14, 0xD6, 0x01,
-	0x1E, 0xE3, 0x07, 0x11, 0x17, 0x37, 0xFE, 0xC7, 0x00, 0x23, 0x02, 0x80, 0x06, 0x93, 0xC0, 0x07,
-	0x55, 0xFD, 0x81, 0x07, 0x07, 0x13, 0x46, 0x05, 0x80, 0x23, 0x82, 0x77, 0x80, 0x23, 0x00, 0xB6,
-	0x06, 0x85, 0xC0, 0xC6, 0xFE, 0xE6, 0x9B, 0xE3, 0x20, 0x00, 0x47, 0x37, 0x44, 0xE7, 0x07, 0x13,
-	0x47, 0x37, 0xC3, 0xB8, 0x07, 0x13, 0x20, 0x00, 0xC3, 0xF8, 0x48, 0xE7, 0x20, 0x00, 0x57, 0x37,
-	0xB9, 0xC7, 0x07, 0x13, 0x57, 0x37, 0xC7, 0xB8, 0x07, 0x13, 0x20, 0x00, 0xC7, 0xF8, 0x80, 0x27,
-	0x20, 0x00, 0x47, 0x37, 0x4D, 0x47, 0x07, 0x13, 0x47, 0x37, 0xCB, 0xB8, 0x07, 0x13, 0x20, 0x00,
-	0xCB, 0xF8, 0x30, 0x67, 0x20, 0x00, 0x47, 0x37, 0x4D, 0x87, 0x07, 0x13, 0x47, 0x37, 0xCF, 0xB8,
-	0x07, 0x13, 0x20, 0x00, 0xCF, 0xF8, 0x51, 0x87, 0x20, 0x00, 0x47, 0x37, 0x55, 0x87, 0x07, 0x13,
-	0x47, 0x37, 0xD3, 0xB8, 0x07, 0x13, 0x20, 0x00, 0xD3, 0xF8, 0x59, 0x87, 0x20, 0x00, 0x47, 0x37,
-	0x5D, 0x87, 0x07, 0x13, 0x47, 0x37, 0xD7, 0xB8, 0x07, 0x13, 0x20, 0x00, 0xD7, 0xF8, 0x61, 0x87,
-	0x20, 0x00, 0x47, 0x37, 0x66, 0x07, 0x07, 0x13, 0x47, 0x37, 0xDB, 0xB8, 0x07, 0x13, 0x20, 0x00,
-	0xDB, 0xF8, 0x6A, 0x07, 0x20, 0x00, 0x47, 0x37, 0x6E, 0x07, 0x07, 0x13, 0x47, 0x37, 0xDF, 0xB8,
-	0x07, 0x13, 0x20, 0x00, 0xDF, 0xF8, 0x72, 0x07, 0x20, 0x00, 0x57, 0x37, 0x08, 0x07, 0x87, 0x93,
-	0xBF, 0x87, 0x07, 0x13, 0x57, 0x37, 0xC3, 0x98, 0x07, 0x13, 0x20, 0x00, 0xC3, 0xD8, 0xBF, 0xC7,
-	0x20, 0x00, 0x47, 0x37, 0x37, 0x47, 0x07, 0x13, 0x47, 0x37, 0xC7, 0x98, 0x07, 0x13, 0x20, 0x00,
-	0xC7, 0xD8, 0x3E, 0x07, 0x20, 0x00, 0x47, 0x37, 0x76, 0x07, 0x07, 0x13, 0x57, 0x37, 0xCB, 0x98,
-	0x07, 0x13, 0x20, 0x00, 0xCB, 0xD8, 0xC0, 0x07, 0x20, 0x00, 0x57, 0x37, 0xC0, 0x47, 0x07, 0x13,
-	0x80, 0x82, 0xCF, 0x98, 0xA7, 0xF3, 0x47, 0xA1, 0x80, 0x82, 0x30, 0x07, 0xB7, 0xF3, 0x47, 0xA1,
-	0x80, 0x82, 0x30, 0x07, 0x20, 0x00, 0xA7, 0xB7, 0xF5, 0x47, 0xD7, 0x03, 0x11, 0x41, 0x67, 0xA1,
-	0x06, 0xF7, 0x1C, 0x63, 0xDF, 0x63, 0x47, 0xB5, 0x67, 0x85, 0x02, 0xB7, 0x00, 0xF1, 0x17, 0x23,
-	0x05, 0xC2, 0x15, 0xC9, 0x57, 0x03, 0x85, 0xC1, 0x87, 0xB7, 0x00, 0xE1, 0x87, 0x93, 0x08, 0x00,
-	0x07, 0x42, 0xA4, 0x17, 0x87, 0x41, 0x95, 0x3E, 0x05, 0x0A, 0x67, 0x85, 0x04, 0xF7, 0x1A, 0x63,
-	0xC4, 0x63, 0x87, 0xAE, 0x67, 0x85, 0x00, 0xE5, 0x07, 0xC2, 0x17, 0xFD, 0xC1, 0x1C, 0x87, 0xC1,
-	0x80, 0x82, 0x01, 0x41, 0xD6, 0x63, 0x57, 0xCD, 0x05, 0xB9, 0x02, 0xF5, 0x05, 0xC2, 0x67, 0x85,
-	0x00, 0xF1, 0x17, 0x23, 0xD0, 0xE3, 0x85, 0xC1, 0x67, 0x85, 0xFC, 0x05, 0x80, 0x07, 0x87, 0x93,
-	0x40, 0xB7, 0x85, 0xB3, 0x85, 0xC1, 0x05, 0xC2, 0x00, 0xB1, 0x16, 0x23, 0x00, 0xC1, 0x55, 0x83,
-	0x17, 0x23, 0xB7, 0x4D, 0xB7, 0xC5, 0x00, 0xB1, 0x17, 0x23, 0x67, 0x85, 0xBF, 0xE1, 0x00, 0xF1,
-	0x80, 0x07, 0x87, 0x93, 0x47, 0x89, 0xBF, 0x6D, 0x00, 0xF5, 0x08, 0x63, 0x9E, 0x01, 0x9F, 0x23,
-	0x9C, 0x01, 0x94, 0x23, 0x9C, 0x01, 0x93, 0x23, 0xA6, 0x03, 0x80, 0x82, 0xA7, 0x37, 0x81, 0x81,
-	0x07, 0x13, 0x20, 0x00, 0x16, 0x83, 0x80, 0x07, 0x55, 0x83, 0x2C, 0xA6, 0xD7, 0x93, 0x54, 0x27,
-	0x87, 0xB3, 0x40, 0x16, 0x06, 0xBA, 0x02, 0xB7, 0xD0, 0x06, 0xF7, 0xD3, 0x2E, 0x23, 0x07, 0x8E,
-	0x57, 0x83, 0x2A, 0xF6, 0x77, 0x61, 0x54, 0x87, 0xF7, 0x53, 0x97, 0xBA, 0xF7, 0xD3, 0xD0, 0x07,
-	0x97, 0xD3, 0x18, 0xE7, 0x07, 0x8A, 0xC0, 0x07, 0x2C, 0xF6, 0x20, 0x23, 0xA7, 0x83, 0x80, 0x82,
-	0x17, 0x13, 0x81, 0x81, 0x97, 0xBA, 0x00, 0x85, 0x0A, 0x07, 0x9D, 0x23, 0x0A, 0x07, 0x9B, 0x23,
-	0x0A, 0x07, 0xAE, 0x23, 0x0C, 0x07, 0xA0, 0x23, 0x0C, 0x07, 0x93, 0x23, 0x14, 0x63, 0x47, 0x89,
-	0xF0, 0x6F, 0x00, 0xF5, 0x80, 0x82, 0xF9, 0x9F, 0xC6, 0x4E, 0x11, 0x01, 0x81, 0x81, 0xA7, 0x83,
-	0x14, 0x93, 0xCA, 0x26, 0xCE, 0x06, 0x01, 0x05, 0xCC, 0x22, 0x80, 0xC1, 0xC4, 0x52, 0xC8, 0x4A,
-	0x84, 0x2A, 0x67, 0x09, 0x99, 0x23, 0xCB, 0xB8, 0x85, 0x26, 0x02, 0x07, 0xFB, 0x3F, 0xF0, 0xEF,
-	0xF0, 0xEF, 0x85, 0x26, 0x16, 0x93, 0xF5, 0x5F, 0x87, 0x13, 0x00, 0x24, 0x97, 0x36, 0xE2, 0x01,
-	0x00, 0x07, 0x20, 0x23, 0xA8, 0x81, 0x87, 0x13, 0x20, 0x23, 0x97, 0x36, 0x87, 0x93, 0x00, 0x07,
-	0x97, 0xB6, 0xA7, 0xC1, 0x81, 0xC1, 0xA7, 0x03, 0x00, 0x07, 0xA0, 0x23, 0xA0, 0x41, 0x87, 0x93,
-	0x00, 0x84, 0x1A, 0x13, 0x00, 0x07, 0xA0, 0x23, 0xA2, 0x23, 0x97, 0x52, 0xA7, 0x83, 0x00, 0x07,
-	0x56, 0x83, 0x81, 0x81, 0x85, 0x26, 0x01, 0x67, 0x08, 0x07, 0x97, 0x23, 0x91, 0x23, 0x97, 0xD2,
-	0xAE, 0x23, 0x0E, 0xD7, 0x9D, 0x23, 0x0C, 0x07, 0x90, 0x23, 0x0C, 0x07, 0x86, 0x93, 0x0E, 0x07,
-	0x17, 0x93, 0xA1, 0x01, 0x96, 0xBE, 0x00, 0x14, 0x00, 0x06, 0x90, 0x23, 0x9E, 0x01, 0x86, 0x93,
-	0x90, 0x23, 0x96, 0xBE, 0x86, 0x93, 0x00, 0x06, 0x96, 0xBE, 0xA2, 0x01, 0x00, 0x06, 0x90, 0x23,
-	0x00, 0xA7, 0x56, 0x03, 0x9D, 0x01, 0x86, 0x93, 0x90, 0x23, 0x96, 0xBE, 0x57, 0x03, 0x00, 0xC6,
-	0x86, 0x93, 0x00, 0xC7, 0x96, 0xBE, 0x9C, 0x01, 0x00, 0xE6, 0x90, 0x23, 0xA1, 0x81, 0x86, 0x93,
-	0x90, 0x23, 0x96, 0xBE, 0x86, 0x93, 0x00, 0x06, 0x96, 0xBE, 0x9F, 0x01, 0x00, 0x06, 0x90, 0x23,
-	0x9F, 0x81, 0x86, 0x93, 0x90, 0x23, 0x97, 0xB6, 0x46, 0x09, 0x00, 0x07, 0xE0, 0xEF, 0x45, 0x95,
-	0x97, 0x93, 0xD7, 0x9F, 0x89, 0x13, 0x00, 0x34, 0x84, 0x93, 0x00, 0x47, 0x85, 0x4A, 0x00, 0x87,
-	0x09, 0x42, 0x09, 0x05, 0x01, 0x09, 0x59, 0x13, 0x9A, 0x9F, 0xE0, 0xEF, 0xFF, 0x24, 0x99, 0xE3,
-	0x20, 0x00, 0xA7, 0xB7, 0x00, 0x94, 0x15, 0x13, 0x80, 0x07, 0x84, 0x13, 0xA7, 0x03, 0x94, 0x2A,
-	0x57, 0x83, 0x81, 0x81, 0x40, 0xF2, 0x14, 0x24, 0x1B, 0x23, 0x97, 0x52, 0x57, 0x83, 0x0E, 0xF7,
-	0x44, 0xD2, 0x14, 0x44, 0x1C, 0x23, 0x49, 0x42, 0x57, 0x83, 0x0E, 0xF7, 0x49, 0xB2, 0x14, 0x64,
-	0x1D, 0x23, 0x4A, 0x22, 0x57, 0x83, 0x0E, 0xF7, 0x44, 0x62, 0x14, 0x84, 0x0E, 0xF7, 0x1E, 0x23,
-	0x80, 0x82, 0x61, 0x05, 0x0E, 0x63, 0x47, 0x89, 0x18, 0x93, 0x0A, 0xF5, 0x88, 0x13, 0x00, 0x15,
-	0x98, 0x46, 0x9C, 0xC1, 0x00, 0x08, 0x57, 0x83, 0x0A, 0xB7, 0x85, 0x63, 0x81, 0x81, 0xA6, 0x03,
-	0x00, 0x85, 0x17, 0x93, 0x17, 0x03, 0x96, 0x3E, 0x13, 0x13, 0x0C, 0xA6, 0x86, 0x93, 0x00, 0x95,
-	0x17, 0x93, 0x98, 0xC1, 0xF7, 0xD3, 0x00, 0xE7, 0xA7, 0xB7, 0xD0, 0x07, 0x87, 0x93, 0x20, 0x00,
-	0xED, 0x95, 0x80, 0x07, 0xD5, 0x83, 0x97, 0x9A, 0x87, 0x05, 0x14, 0x27, 0x07, 0x33, 0x96, 0xC6,
-	0x75, 0xE1, 0x02, 0xB7, 0x00, 0x08, 0x10, 0x23, 0x2E, 0x23, 0x07, 0x06, 0xD7, 0x03, 0x0A, 0xE6,
-	0x97, 0x2E, 0x14, 0x87, 0xD0, 0x07, 0x77, 0x53, 0x18, 0xE7, 0xF7, 0xD3, 0xC0, 0x07, 0x97, 0x53,
-	0x0C, 0xE6, 0x20, 0x23, 0x14, 0x07, 0x90, 0x23, 0x00, 0x06, 0x90, 0x23, 0x05, 0x13, 0x80, 0x82,
-	0x05, 0x12, 0x07, 0x35, 0x55, 0x83, 0x95, 0x3E, 0x97, 0x9A, 0x00, 0x05, 0x87, 0x33, 0x96, 0xC6,
-	0x25, 0x83, 0x02, 0xE5, 0x97, 0x2E, 0x0B, 0xC6, 0x0A, 0xE6, 0x2E, 0x23, 0x00, 0x65, 0x57, 0x03,
-	0x97, 0x2E, 0x75, 0xE1, 0xD0, 0x07, 0x77, 0x53, 0x18, 0xE7, 0xF7, 0xD3, 0xC0, 0x07, 0x97, 0x53,
-	0x0C, 0xE6, 0x20, 0x23, 0x90, 0x23, 0x47, 0x05, 0x10, 0x23, 0x14, 0xE7, 0x90, 0x23, 0x00, 0xE8,
-	0x80, 0x82, 0x00, 0xE6, 0xD4, 0x22, 0x71, 0x79, 0x81, 0xC1, 0xA4, 0x03, 0x19, 0x93, 0xCE, 0x4E,
-	0xD2, 0x26, 0x00, 0x85, 0x01, 0x34, 0x04, 0xB3, 0x46, 0x41, 0xD0, 0x4A, 0x85, 0xA6, 0x89, 0x2A,
-	0xD6, 0x06, 0x85, 0x0A, 0x3F, 0x20, 0x20, 0xEF, 0x9D, 0x01, 0x86, 0x13, 0x00, 0x19, 0x18, 0x93,
-	0x15, 0x03, 0x96, 0x46, 0xD7, 0x03, 0x00, 0x06, 0x9E, 0x03, 0x00, 0xA4, 0x97, 0x83, 0x00, 0x04,
-	0xD3, 0x03, 0x00, 0x24, 0x85, 0x93, 0x00, 0xC4, 0x86, 0x13, 0x9D, 0x01, 0x18, 0x63, 0x9C, 0x01,
-	0x06, 0xB3, 0x00, 0xE5, 0x96, 0x83, 0x01, 0x16, 0x89, 0x63, 0x00, 0x06, 0x95, 0x13, 0x06, 0x66,
-	0x81, 0x41, 0x01, 0x07, 0x40, 0xAE, 0x06, 0xB3, 0x82, 0xC1, 0x06, 0xC2, 0x90, 0x23, 0x95, 0xC6,
-	0x07, 0x33, 0x00, 0xE5, 0x96, 0x46, 0x02, 0xD7, 0x00, 0x66, 0x10, 0x23, 0x02, 0x66, 0x88, 0x33,
-	0x07, 0x42, 0x87, 0x29, 0x86, 0x33, 0x87, 0x41, 0x58, 0x13, 0x40, 0xE6, 0x18, 0x93, 0x40, 0xA8,
-	0xD8, 0x93, 0x01, 0x08, 0x05, 0xB3, 0x41, 0x08, 0x46, 0x09, 0x41, 0x16, 0x02, 0xC9, 0x1F, 0x63,
-	0x20, 0x00, 0x87, 0xB7, 0x1A, 0x87, 0xA7, 0x87, 0xD0, 0x05, 0xF7, 0x53, 0x19, 0x23, 0x95, 0x42,
-	0xF7, 0xD3, 0x20, 0xA4, 0x97, 0xD3, 0x18, 0xE7, 0x18, 0x23, 0xC0, 0x07, 0x46, 0x41, 0x20, 0xF4,
-	0x85, 0x26, 0x85, 0x8A, 0x00, 0xD1, 0x12, 0x23, 0x34, 0xE0, 0x20, 0xEF, 0x54, 0x22, 0x50, 0xB2,
-	0x59, 0x02, 0x54, 0x92, 0x61, 0x45, 0x49, 0xF2, 0x06, 0x37, 0x80, 0x82, 0x06, 0x13, 0x02, 0x00,
-	0x46, 0x33, 0x80, 0x06, 0x97, 0xF2, 0x02, 0xB6, 0x97, 0xC6, 0x8F, 0x99, 0x87, 0x85, 0x94, 0x4E,
-	0x00, 0xF4, 0x19, 0x23, 0x00, 0xC4, 0x18, 0x23, 0xA6, 0x03, 0xB7, 0xD9, 0x13, 0x13, 0x81, 0xC1,
-	0xAE, 0x37, 0x00, 0x85, 0x07, 0xB3, 0x20, 0x00, 0xD8, 0x83, 0x00, 0x66, 0xDF, 0x03, 0x00, 0xC7,
-	0xA8, 0x03, 0x00, 0xA7, 0x1E, 0x93, 0x81, 0x81, 0x07, 0xB3, 0x00, 0x95, 0x97, 0x03, 0x00, 0x68,
-	0x07, 0x93, 0x0D, 0x07, 0x97, 0xF6, 0x80, 0x0E, 0x14, 0xE7, 0xD6, 0x83, 0x80, 0x0E, 0x0E, 0x13,
-	0x86, 0xC1, 0x06, 0xC2, 0x0A, 0xE6, 0xDA, 0x63, 0x14, 0xE7, 0xD7, 0x03, 0x87, 0x41, 0x07, 0x42,
-	0x05, 0x0A, 0x9E, 0x76, 0xE2, 0x01, 0x8E, 0x93, 0x41, 0x14, 0x95, 0x76, 0x14, 0xCE, 0x1F, 0x83,
-	0x86, 0xB3, 0x67, 0xA1, 0x86, 0xBD, 0x02, 0xDF, 0x56, 0x83, 0x97, 0x36, 0xC1, 0x18, 0x14, 0xAE,
-	0x0C, 0xF6, 0x91, 0x63, 0xA5, 0x61, 0xD7, 0x83, 0xCF, 0xC5, 0x8B, 0x8D, 0x40, 0x00, 0x07, 0x93,
-	0x05, 0x33, 0x6E, 0x11, 0x87, 0xB3, 0x00, 0x66, 0x66, 0x09, 0x41, 0xE7, 0x87, 0xB3, 0x1E, 0x7D,
-	0x95, 0xB2, 0x41, 0x17, 0x03, 0xC8, 0x88, 0xB3, 0x41, 0xF6, 0x86, 0xB3, 0x0D, 0x45, 0x1E, 0x83,
-	0x87, 0xB3, 0x98, 0x1A, 0xD8, 0x93, 0x02, 0xB7, 0x75, 0xF9, 0x40, 0xA8, 0x86, 0xB3, 0x98, 0xAE,
-	0x87, 0xA9, 0x02, 0xE6, 0x07, 0xC2, 0x97, 0xC6, 0x17, 0x03, 0x87, 0xC1, 0x97, 0xB2, 0x0D, 0xA5,
-	0x06, 0xC2, 0x86, 0xBD, 0x56, 0x63, 0x86, 0xC1, 0x15, 0x83, 0x04, 0xD0, 0x16, 0x03, 0x0D, 0x65,
-	0x85, 0xB3, 0x0D, 0xC5, 0x8D, 0x91, 0x41, 0xD5, 0x85, 0xB3, 0x95, 0xBA, 0x07, 0xB3, 0x02, 0xF5,
-	0xD7, 0x13, 0x40, 0xE6, 0x97, 0xBA, 0x40, 0xE5, 0x02, 0xD7, 0x87, 0xB3, 0x40, 0x07, 0x87, 0x93,
-	0x1B, 0x23, 0x87, 0xAD, 0x80, 0x82, 0x0C, 0xF8, 0x14, 0xE7, 0xD6, 0x83, 0x86, 0xC1, 0x06, 0xC2,
-	0x40, 0xD0, 0x06, 0xB3, 0xF4, 0xD7, 0x56, 0xE3, 0x14, 0xE7, 0xD7, 0x03, 0x40, 0xE0, 0x07, 0x33,
-	0x16, 0x03, 0xBF, 0x35, 0x15, 0x83, 0x0D, 0x85, 0x06, 0x33, 0x0D, 0xE5, 0x8E, 0x0D, 0x41, 0xD6,
-	0x07, 0xB3, 0x96, 0x3A, 0xD6, 0x13, 0x02, 0xF6, 0x07, 0xB3, 0x40, 0xE7, 0x8F, 0x91, 0x40, 0xB7,
-	0x98, 0x1A, 0xBF, 0x65, 0x0C, 0x08, 0x1B, 0x23, 0x11, 0x41, 0x80, 0x82, 0xA7, 0x83, 0xC2, 0x26,
-	0xC4, 0x22, 0x81, 0x81, 0x00, 0x85, 0x14, 0x13, 0x95, 0x83, 0x97, 0xA2, 0xC6, 0x06, 0x0C, 0x87,
-	0xEB, 0xBF, 0xF0, 0xEF, 0x81, 0x81, 0xA7, 0x03, 0x81, 0xC1, 0xA5, 0x03, 0x97, 0x22, 0x40, 0xB2,
-	0x18, 0x03, 0x95, 0x22, 0x56, 0x83, 0x01, 0x25, 0x57, 0x83, 0x0D, 0x67, 0x55, 0x83, 0x0B, 0x47,
-	0x96, 0xC2, 0x01, 0x05, 0x07, 0xC2, 0x8F, 0x95, 0x87, 0xB3, 0x87, 0xC1, 0x56, 0x03, 0x02, 0xB7,
-	0x56, 0x83, 0x01, 0x45, 0x55, 0x03, 0x0D, 0x27, 0x44, 0x22, 0x0D, 0x47, 0x96, 0xAA, 0x44, 0x92,
-	0x8F, 0x91, 0x87, 0xAD, 0x83, 0xC1, 0x07, 0xC2, 0x0C, 0xF7, 0x15, 0x23, 0x19, 0x23, 0x97, 0xB6,
-	0x57, 0x83, 0x0A, 0xF7, 0x07, 0xC2, 0x0B, 0x47, 0x87, 0xB3, 0x87, 0xC1, 0x87, 0xB3, 0x41, 0x07,
-	0x87, 0xAD, 0x02, 0xB7, 0x16, 0x23, 0x8F, 0x91, 0x01, 0x41, 0x0C, 0xF7, 0xA8, 0x83, 0x80, 0x82,
-	0x11, 0x01, 0x81, 0x81, 0x63, 0x05, 0x68, 0x09, 0x20, 0x00, 0xA5, 0x37, 0x20, 0x00, 0x8E, 0x37,
-	0xCC, 0x26, 0xCE, 0x22, 0x0B, 0x28, 0x85, 0x93, 0x05, 0x13, 0xCA, 0x4A, 0x86, 0x13, 0x80, 0x05,
-	0x00, 0x7C, 0xA0, 0x41, 0x2B, 0x28, 0x88, 0x93, 0x0E, 0x13, 0x4E, 0x95, 0x0F, 0x13, 0x10, 0x8E,
-	0x0F, 0x93, 0xF0, 0x68, 0x02, 0x93, 0xE1, 0xC8, 0x03, 0x93, 0xC6, 0xD8, 0x04, 0x13, 0x85, 0xA8,
-	0x04, 0x93, 0x3A, 0x73, 0x16, 0x83, 0xE2, 0xE3, 0x87, 0x13, 0x1A, 0x05, 0x07, 0x42, 0xFF, 0xF6,
-	0xE7, 0x63, 0x83, 0x41, 0x07, 0x0A, 0x06, 0xEE, 0x43, 0x18, 0x97, 0x72, 0x90, 0x23, 0x87, 0x02,
-	0x42, 0x18, 0x00, 0x97, 0x00, 0x07, 0x96, 0x83, 0x00, 0x05, 0x99, 0x03, 0x10, 0x05, 0x85, 0x93,
-	0x02, 0xE6, 0x87, 0x33, 0x40, 0xD8, 0x06, 0xB3, 0x20, 0x05, 0x05, 0x13, 0x97, 0x1A, 0x07, 0x89,
-	0x97, 0x4A, 0x87, 0x35, 0x02, 0xE6, 0x86, 0xB3, 0x86, 0xB5, 0x96, 0x9A, 0xF4, 0xD5, 0x91, 0x23,
-	0x06, 0x11, 0xC2, 0x18, 0xFB, 0x15, 0x99, 0xE3, 0x44, 0xE2, 0x44, 0x72, 0x61, 0x05, 0x49, 0x52,
-	0x90, 0x23, 0x80, 0x82, 0xBF, 0x75, 0x00, 0x87, 0x00, 0x77, 0x90, 0x23, 0x90, 0x23, 0xBF, 0x5D,
-	0xBF, 0x45, 0x00, 0x57, 0x01, 0xF7, 0x90, 0x23, 0x90, 0x23, 0xB7, 0x6D, 0xB7, 0x55, 0x01, 0xE7,
-	0x00, 0xD7, 0x90, 0x23, 0xA6, 0x03, 0xBF, 0x79, 0x46, 0x89, 0x81, 0x81, 0x18, 0x13, 0x87, 0xAA,
-	0x8E, 0x13, 0x00, 0x85, 0x87, 0x13, 0xA3, 0x41, 0x88, 0x93, 0xA3, 0x21, 0x83, 0x13, 0xA2, 0xE1,
-	0x0D, 0x63, 0xA3, 0x01, 0x05, 0x33, 0x14, 0xD5, 0x56, 0x83, 0x01, 0x06, 0x5E, 0x83, 0x0C, 0xA5,
-	0x8D, 0x95, 0x03, 0x26, 0x01, 0x05, 0x96, 0x93, 0x1D, 0x23, 0x86, 0xC1, 0x45, 0x85, 0x0A, 0xD5,
-	0x0E, 0xBE, 0x94, 0x63, 0x00, 0x0E, 0x10, 0x23, 0x01, 0xD7, 0x10, 0x23, 0x00, 0x08, 0x90, 0x23,
-	0x00, 0x03, 0x10, 0x23, 0x00, 0x0E, 0x55, 0x03, 0x01, 0x06, 0x07, 0xB3, 0x0C, 0x67, 0xD5, 0x83,
-	0x02, 0xD5, 0x05, 0x33, 0x0B, 0xA7, 0xDE, 0x03, 0x40, 0xBE, 0x0E, 0x33, 0x00, 0x07, 0x55, 0x83,
-	0x5E, 0x13, 0x0E, 0x42, 0x5E, 0x93, 0x41, 0x0E, 0xA5, 0x03, 0x40, 0xA5, 0x87, 0xB3, 0x0B, 0xC7,
-	0x5F, 0x13, 0x03, 0xC5, 0x2E, 0x33, 0x41, 0xF5, 0x87, 0x33, 0x02, 0xBE, 0x35, 0xB3, 0x00, 0xA7,
-	0x9E, 0x7A, 0x00, 0xF7, 0x5E, 0x7D, 0x95, 0xF2, 0x01, 0xC5, 0xCA, 0x63, 0x01, 0xC5, 0x9D, 0x63,
-	0x82, 0xD4, 0x9E, 0x37, 0xB0, 0x0E, 0x0E, 0x13, 0x01, 0xC7, 0x77, 0x63, 0x82, 0xD4, 0x97, 0x37,
-	0xB0, 0x07, 0x07, 0x13, 0x0E, 0x33, 0x55, 0xFD, 0x49, 0x63, 0x01, 0x06, 0xE9, 0x99, 0x00, 0xB0,
-	0x7D, 0x2B, 0x75, 0xB7, 0x50, 0x05, 0x85, 0x93, 0x00, 0xE5, 0xF6, 0x63, 0x7D, 0x2B, 0x77, 0x37,
-	0x50, 0x07, 0x07, 0x13, 0x0A, 0xEE, 0x2E, 0x23, 0x01, 0x06, 0x0E, 0x33, 0x0C, 0x0E, 0x27, 0x03,
-	0x00, 0x03, 0x55, 0x83, 0x85, 0x2D, 0x95, 0x3E, 0x02, 0xE5, 0x85, 0xB3, 0x77, 0xE1, 0x95, 0x76,
-	0x30, 0x07, 0x87, 0x93, 0x96, 0xAE, 0x85, 0xBD, 0x00, 0x08, 0xD5, 0x83, 0x40, 0xE6, 0x87, 0x33,
-	0x0C, 0xDE, 0x20, 0x23, 0x02, 0xB7, 0x07, 0x33, 0x95, 0x3A, 0x87, 0x1D, 0x00, 0xF5, 0x53, 0x63,
-	0x67, 0xA1, 0x85, 0x3E, 0xD0, 0x07, 0x87, 0x93, 0x00, 0xA7, 0xD3, 0x63, 0x07, 0xB3, 0x85, 0x3E,
-	0x92, 0x23, 0x01, 0x06, 0x80, 0x82, 0x0C, 0xA7, 0x0F, 0x65, 0x55, 0x03, 0x04, 0xB7, 0x93, 0x63,
-	0x9F, 0xE1, 0x97, 0x83, 0xA7, 0xB7, 0xCF, 0x9D, 0xD7, 0x83, 0x20, 0x00, 0x0E, 0xB3, 0x84, 0x07,
-	0xD5, 0x83, 0x01, 0x06, 0xDF, 0x03, 0x0F, 0xAE, 0x9E, 0x83, 0x0F, 0xCE, 0x10, 0x23, 0x0E, 0xEE,
-	0x87, 0xB3, 0x01, 0xE3, 0x87, 0xB5, 0x03, 0xD7, 0x03, 0xD5, 0x05, 0x33, 0x00, 0xF7, 0x10, 0x23,
-	0x03, 0xD5, 0x87, 0xB3, 0x10, 0x23, 0x85, 0x35, 0x87, 0xB5, 0x00, 0xAE, 0x00, 0xF8, 0x90, 0x23,
-	0x07, 0xB3, 0xB5, 0xD5, 0xD7, 0x83, 0x01, 0x06, 0xB7, 0xD1, 0x0F, 0x87, 0x2C, 0xA6, 0x15, 0x03,
-	0x20, 0x00, 0xA7, 0xB7, 0x80, 0x07, 0x8E, 0x93, 0x40, 0xA5, 0x86, 0xB3, 0x9F, 0x03, 0x06, 0x8A,
-	0x06, 0xC2, 0x54, 0x0E, 0x1D, 0x23, 0x86, 0xC1, 0x4E, 0x85, 0x2A, 0xD6, 0x80, 0x07, 0x87, 0x93,
-	0x01, 0xDF, 0x18, 0x63, 0x40, 0x15, 0xD6, 0x93, 0x06, 0x8A, 0x8E, 0x89, 0x86, 0xC1, 0x06, 0xC2,
-	0x54, 0x27, 0xD5, 0x83, 0x00, 0xBE, 0x10, 0x23, 0x54, 0x47, 0xD5, 0x83, 0x00, 0xB7, 0x10, 0x23,
-	0x54, 0x67, 0xD5, 0x83, 0x54, 0x87, 0xD7, 0x83, 0x00, 0xB8, 0x90, 0x23, 0x00, 0xF3, 0x10, 0x23,
-	0x11, 0x41, 0xB5, 0x51, 0x01, 0x00, 0x06, 0x37, 0xC6, 0x06, 0xC2, 0x26, 0xC0, 0x4A, 0xC4, 0x22,
-	0x9D, 0x81, 0x86, 0x93, 0x10, 0x06, 0x06, 0x13, 0x06, 0x13, 0xC2, 0x90, 0x92, 0x23, 0x10, 0x00,
-	0xA6, 0x83, 0x00, 0xC6, 0x67, 0x89, 0x81, 0x01, 0x02, 0x26, 0xD6, 0x03, 0x8C, 0xF1, 0x90, 0x23,
-	0x81, 0x81, 0xA7, 0x03, 0x82, 0x41, 0x06, 0x42, 0x0E, 0xF7, 0x17, 0x23, 0x1E, 0xF7, 0x17, 0x23,
-	0x2E, 0xF7, 0x17, 0x23, 0x90, 0x23, 0xEE, 0x11, 0x67, 0x85, 0x02, 0xF6, 0x80, 0x07, 0x87, 0x93,
-	0x2A, 0xF7, 0x18, 0x23, 0x44, 0x22, 0x40, 0xB2, 0x49, 0x02, 0x44, 0x92, 0x80, 0x82, 0x01, 0x41,
-	0x02, 0x26, 0xD6, 0x03, 0x84, 0x26, 0x45, 0x85, 0x82, 0x41, 0x06, 0x42, 0x16, 0xB6, 0x13, 0x63,
-	0x90, 0x23, 0x07, 0x85, 0x45, 0x01, 0x02, 0xF6, 0x14, 0x83, 0x46, 0x89, 0x19, 0x03, 0x05, 0x07,
-	0x9B, 0x23, 0x0B, 0x07, 0xF0, 0xEF, 0xA4, 0xD1, 0x45, 0x05, 0xC6, 0x5F, 0xC5, 0xFF, 0xF0, 0xEF,
-	0xF0, 0xEF, 0x45, 0x09, 0xDF, 0xE3, 0xC5, 0x9F, 0xA7, 0x83, 0xFA, 0x04, 0x66, 0xA1, 0x81, 0x81,
-	0xFF, 0xF6, 0x87, 0x13, 0xD7, 0x03, 0x8C, 0xF9, 0x66, 0x09, 0x0C, 0xA7, 0x97, 0x32, 0x04, 0xC2,
-	0x04, 0xE7, 0x99, 0x23, 0x99, 0x3A, 0x77, 0x79, 0x20, 0x00, 0xA7, 0x37, 0x80, 0x07, 0x07, 0x13,
-	0x56, 0x03, 0x84, 0xC1, 0x98, 0x23, 0x75, 0x67, 0x94, 0xCA, 0x04, 0x97, 0x0C, 0x97, 0x94, 0x23,
-	0x0E, 0xD6, 0x10, 0x63, 0x9D, 0xE1, 0x84, 0x93, 0x00, 0x04, 0x97, 0x83, 0x55, 0x63, 0x47, 0x35,
-	0xC0, 0xEF, 0x0C, 0xF7, 0x90, 0x23, 0x88, 0x3F, 0xA7, 0x83, 0x00, 0x04, 0x45, 0x01, 0x81, 0x81,
-	0x0C, 0x87, 0x95, 0x83, 0xD4, 0x3F, 0xF0, 0xEF, 0x46, 0x89, 0x85, 0xAA, 0x45, 0x01, 0x46, 0x15,
-	0xBB, 0xEF, 0xE0, 0xEF, 0x46, 0x8D, 0x86, 0x2A, 0x45, 0x01, 0x45, 0x91, 0x81, 0x81, 0xA4, 0x83,
-	0xCA, 0x6F, 0xE0, 0xEF, 0x81, 0x81, 0xA7, 0x83, 0x0C, 0xA4, 0x98, 0x23, 0x95, 0x83, 0x45, 0x01,
-	0xF0, 0xEF, 0x0D, 0x07, 0xA7, 0x83, 0xE8, 0x2F, 0x45, 0x05, 0x81, 0x81, 0x1B, 0x07, 0x95, 0x83,
-	0xD0, 0x7F, 0xF0, 0xEF, 0x46, 0x89, 0x85, 0xAA, 0x45, 0x05, 0x46, 0x15, 0xB8, 0x2F, 0xE0, 0xEF,
-	0x45, 0x91, 0x86, 0x2A, 0x45, 0x05, 0x46, 0x8D, 0x81, 0x81, 0xA4, 0x83, 0xC6, 0xAF, 0xE0, 0xEF,
-	0x81, 0x81, 0xA7, 0x83, 0x1C, 0xA4, 0x98, 0x23, 0x95, 0x83, 0x45, 0x05, 0xF0, 0xEF, 0x1D, 0x07,
-	0xA7, 0x83, 0xE4, 0x6F, 0x45, 0x09, 0x81, 0x81, 0x2B, 0x07, 0x95, 0x83, 0xCC, 0xBF, 0xF0, 0xEF,
-	0x46, 0x89, 0x85, 0xAA, 0x45, 0x09, 0x46, 0x15, 0xB4, 0x6F, 0xE0, 0xEF, 0x45, 0x91, 0x86, 0x2A,
-	0x45, 0x09, 0x46, 0x8D, 0x81, 0x81, 0xA4, 0x83, 0xC2, 0xEF, 0xE0, 0xEF, 0x81, 0x81, 0xA7, 0x83,
-	0x2C, 0xA4, 0x98, 0x23, 0x95, 0x83, 0x45, 0x09, 0x44, 0x22, 0x2D, 0x07, 0x44, 0x92, 0x40, 0xB2,
-	0x01, 0x41, 0x49, 0x02, 0xE0, 0x0F, 0xF0, 0x6F, 0x90, 0x23, 0x07, 0x85, 0xBF, 0x35, 0x00, 0xF4,
-	0x14, 0x27, 0x56, 0x83, 0x0E, 0xD7, 0x9B, 0x23, 0x14, 0x47, 0x56, 0x83, 0x0E, 0xD7, 0x9C, 0x23,
-	0x14, 0x67, 0x56, 0x83, 0x14, 0x87, 0x57, 0x03, 0x0E, 0xD7, 0x9D, 0x23, 0x0E, 0xE7, 0x9E, 0x23,
-	0xD6, 0x03, 0xBF, 0x29, 0x45, 0x8D, 0x02, 0x26, 0x82, 0x41, 0x06, 0x42, 0x12, 0xB6, 0x11, 0x63,
-	0x90, 0x23, 0x07, 0x8D, 0x46, 0x89, 0x02, 0xF6, 0x9E, 0x01, 0x97, 0x23, 0x14, 0x83, 0x45, 0x01,
-	0x19, 0x03, 0x05, 0x07, 0x9B, 0x23, 0x1B, 0x07, 0xF0, 0xEF, 0xA4, 0xD1, 0x45, 0x05, 0xAF, 0x1F,
-	0xAE, 0xBF, 0xF0, 0xEF, 0xF0, 0xEF, 0x45, 0x09, 0xD5, 0xE3, 0xAE, 0x5F, 0xA7, 0x83, 0xE4, 0x04,
-	0x66, 0xA1, 0x81, 0x81, 0xFF, 0xF6, 0x87, 0x13, 0xD7, 0x03, 0x8C, 0xF9, 0x66, 0x09, 0x1C, 0xA7,
-	0x97, 0x32, 0x04, 0xC2, 0x04, 0xE7, 0x99, 0x23, 0x99, 0x3A, 0x77, 0x79, 0x20, 0x00, 0xA7, 0x37,
-	0x80, 0x07, 0x07, 0x13, 0x56, 0x03, 0x84, 0xC1, 0x98, 0x23, 0x75, 0x87, 0x94, 0xCA, 0x04, 0x97,
-	0x1C, 0x97, 0x94, 0x23, 0x08, 0xD6, 0x1C, 0x63, 0x9D, 0xE1, 0x84, 0x93, 0x00, 0x04, 0x97, 0x83,
-	0x51, 0x63, 0x47, 0x35, 0xC0, 0xEF, 0x08, 0xF7, 0x90, 0x23, 0xF0, 0xEF, 0xA7, 0x83, 0x00, 0x04,
-	0x45, 0x05, 0x81, 0x81, 0x1C, 0x87, 0x95, 0x83, 0xBC, 0xFF, 0xF0, 0xEF, 0x46, 0x89, 0x85, 0xAA,
-	0x45, 0x05, 0x46, 0x15, 0xA4, 0xAF, 0xE0, 0xEF, 0x46, 0x8D, 0x86, 0x2A, 0x45, 0x05, 0x45, 0x91,
-	0x81, 0x81, 0xA4, 0x83, 0xB3, 0x2F, 0xE0, 0xEF, 0x81, 0x81, 0xA7, 0x83, 0x1C, 0xA4, 0x98, 0x23,
-	0x95, 0x83, 0x45, 0x05, 0xF0, 0xEF, 0x1D, 0x07, 0xA7, 0x83, 0xD0, 0xEF, 0x45, 0x01, 0x81, 0x81,
-	0x0B, 0x07, 0x95, 0x83, 0xB9, 0x3F, 0xF0, 0xEF, 0x46, 0x89, 0x85, 0xAA, 0x45, 0x01, 0x46, 0x15,
-	0xA0, 0xEF, 0xE0, 0xEF, 0x45, 0x91, 0x86, 0x2A, 0x45, 0x01, 0x46, 0x8D, 0x81, 0x81, 0xA4, 0x83,
-	0xAF, 0x6F, 0xE0, 0xEF, 0x81, 0x81, 0xA7, 0x83, 0x0C, 0xA4, 0x98, 0x23, 0x95, 0x83, 0x45, 0x01,
-	0xB5, 0x71, 0x0D, 0x07, 0x90, 0x23, 0x07, 0x85, 0xB7, 0x51, 0x00, 0xF4, 0x34, 0x27, 0x56, 0x83,
-	0x1E, 0xD7, 0x9B, 0x23, 0x34, 0x47, 0x56, 0x83, 0x1E, 0xD7, 0x9C, 0x23, 0x34, 0x67, 0x56, 0x83,
-	0x34, 0x87, 0x57, 0x03, 0x1E, 0xD7, 0x9D, 0x23, 0x1E, 0xE7, 0x9E, 0x23, 0xD6, 0x03, 0xB7, 0x8D,
-	0x45, 0x95, 0x02, 0x26, 0x82, 0x41, 0x06, 0x42, 0xD4, 0xB6, 0x16, 0xE3, 0x90, 0x23, 0x07, 0x95,
-	0x45, 0x01, 0x02, 0xF6, 0x14, 0x03, 0x46, 0x89, 0x19, 0x03, 0x05, 0x07, 0x9B, 0x23, 0x2B, 0x07,
-	0xF0, 0xEF, 0xA4, 0xD1, 0x45, 0x05, 0x9C, 0x9F, 0x9C, 0x3F, 0xF0, 0xEF, 0xF0, 0xEF, 0x45, 0x09,
-	0x51, 0xE3, 0x9B, 0xDF, 0x04, 0x46, 0xD2, 0x04, 0x75, 0xF9, 0x80, 0x45, 0x81, 0x81, 0xA7, 0x83,
-	0x05, 0xC2, 0x95, 0xA2, 0x97, 0x03, 0x85, 0xC1, 0x85, 0x89, 0x2C, 0xA7, 0x05, 0xC2, 0x95, 0xCA,
-	0x85, 0xC1, 0x07, 0x0A, 0x04, 0xE7, 0x99, 0x23, 0x04, 0x87, 0x98, 0x23, 0x2C, 0xB7, 0x94, 0x23,
-	0xF0, 0xEF, 0x45, 0x09, 0x85, 0xAA, 0xAD, 0x5F, 0x46, 0x15, 0x46, 0x89, 0xE0, 0xEF, 0x45, 0x09,
-	0x86, 0x2A, 0x95, 0x0F, 0x45, 0x91, 0x46, 0x8D, 0xA4, 0x03, 0x45, 0x09, 0xE0, 0xEF, 0x81, 0x81,
-	0xA7, 0x83, 0xA3, 0x8F, 0x18, 0x23, 0x81, 0x81, 0x45, 0x09, 0x2C, 0xA4, 0x2D, 0x07, 0x95, 0x83,
-	0xC1, 0x4F, 0xF0, 0xEF, 0x81, 0x81, 0xA7, 0x83, 0x95, 0x83, 0x45, 0x01, 0xF0, 0xEF, 0x0B, 0x07,
-	0x85, 0xAA, 0xA9, 0x9F, 0x46, 0x15, 0x46, 0x89, 0xE0, 0xEF, 0x45, 0x01, 0x86, 0x2A, 0x91, 0x4F,
-	0x45, 0x91, 0x46, 0x8D, 0xA4, 0x03, 0x45, 0x01, 0xE0, 0xEF, 0x81, 0x81, 0xA7, 0x83, 0x9F, 0xCF,
-	0x18, 0x23, 0x81, 0x81, 0x45, 0x01, 0x0C, 0xA4, 0x0D, 0x07, 0x95, 0x83, 0xBD, 0x8F, 0xF0, 0xEF,
-	0x81, 0x81, 0xA7, 0x83, 0x95, 0x83, 0x45, 0x05, 0xF0, 0xEF, 0x1B, 0x07, 0x85, 0xAA, 0xA5, 0xDF,
-	0x46, 0x15, 0x46, 0x89, 0xE0, 0xEF, 0x45, 0x05, 0x86, 0x2A, 0x8D, 0x8F, 0x46, 0x8D, 0x45, 0x91,
-	0xA4, 0x03, 0x45, 0x05, 0xE0, 0xEF, 0x81, 0x81, 0xA7, 0x83, 0x9C, 0x0F, 0x18, 0x23, 0x81, 0x81,
-	0x45, 0x05, 0x1C, 0xA4, 0x1D, 0x07, 0x95, 0x83, 0xA7, 0x03, 0xBB, 0x49, 0x66, 0x21, 0x81, 0x01,
-	0x56, 0x83, 0x87, 0xAA, 0xA7, 0x37, 0x04, 0xC7, 0x85, 0x2E, 0x20, 0x00, 0x82, 0xC1, 0x06, 0xC2,
-	0x80, 0x07, 0x07, 0x13, 0x08, 0xC6, 0x9A, 0x63, 0x02, 0x07, 0x86, 0x93, 0x97, 0x36, 0x06, 0x86,
-	0x00, 0x27, 0x58, 0x03, 0xA4, 0x81, 0x87, 0x13, 0x97, 0x3E, 0x07, 0x86, 0x00, 0x07, 0x16, 0x03,
-	0xA4, 0x81, 0x86, 0x93, 0x02, 0xA6, 0x01, 0x63, 0xA3, 0x81, 0x87, 0x13, 0x17, 0x03, 0x97, 0x3E,
-	0xE7, 0x11, 0x00, 0x07, 0xA5, 0x01, 0x87, 0x13, 0x10, 0x23, 0x97, 0x3E, 0x87, 0x33, 0x00, 0xC7,
-	0x10, 0x23, 0x00, 0xF6, 0x0B, 0x63, 0x00, 0xA7, 0x87, 0x13, 0x08, 0x08, 0x96, 0xBE, 0xA5, 0x01,
-	0x95, 0x03, 0x97, 0x3E, 0x17, 0x03, 0x00, 0x06, 0x85, 0x93, 0x00, 0x07, 0x86, 0x93, 0xA3, 0x81,
-	0x09, 0x63, 0xA5, 0x01, 0x57, 0x63, 0x00, 0xA7, 0x86, 0x33, 0x04, 0xA7, 0x48, 0x85, 0x00, 0xF5,
-	0x01, 0x16, 0x10, 0x23, 0x00, 0xF5, 0x86, 0x33, 0x00, 0x06, 0x15, 0x83, 0x91, 0x63, 0x48, 0x85,
-	0x97, 0x42, 0x05, 0x15, 0x04, 0xA7, 0x55, 0x63, 0x00, 0xF6, 0x86, 0x33, 0x00, 0xE6, 0x10, 0x23,
-	0x95, 0x03, 0x97, 0xB6, 0x80, 0x82, 0x00, 0x07, 0x99, 0x01, 0x95, 0x83, 0x96, 0x93, 0x46, 0x05,
-	0x97, 0x36, 0x00, 0x97, 0x00, 0xC5, 0x95, 0x63, 0x1A, 0x27, 0x58, 0x03, 0x58, 0x03, 0xB7, 0xA5,
-	0xB7, 0x8D, 0x1A, 0x47, 0xFC, 0xE5, 0x50, 0xE3, 0x00, 0xF5, 0x86, 0x33, 0xBF, 0x4D, 0x48, 0x89,
-	0x97, 0xE3, 0x48, 0x89, 0x07, 0x33, 0xFD, 0x15, 0x4F, 0xE3, 0x41, 0x07, 0x87, 0x33, 0xFA, 0xE5,
-	0x10, 0x23, 0x00, 0xF6, 0x10, 0x23, 0x00, 0xA7, 0xBF, 0x5D, 0x00, 0x06, 0x90, 0x23, 0x97, 0xB6,
-	0x80, 0x82, 0x00, 0xA7, 0x81, 0x01, 0xA7, 0x03, 0x81, 0x81, 0xA7, 0x83, 0x04, 0x27, 0x56, 0x03,
-	0x98, 0x03, 0x66, 0xA1, 0x95, 0x03, 0x16, 0x87, 0x13, 0x63, 0x26, 0x87, 0x57, 0x03, 0x06, 0xD6,
-	0x07, 0x42, 0x02, 0x27, 0xCF, 0x29, 0x83, 0x41, 0x16, 0xE7, 0x97, 0x03, 0x41, 0x07, 0x07, 0x33,
-	0x41, 0xF7, 0x56, 0x93, 0x00, 0xE6, 0xC6, 0x33, 0x96, 0x83, 0x8E, 0x15, 0x06, 0x42, 0x26, 0xE7,
-	0x8E, 0x89, 0x86, 0x41, 0x41, 0xF6, 0xD5, 0x93, 0x00, 0xD5, 0xC7, 0x33, 0x09, 0x47, 0xD6, 0x83,
-	0x07, 0x42, 0x8F, 0x0D, 0xE2, 0xA1, 0x87, 0x41, 0x20, 0x00, 0xA6, 0xB7, 0x80, 0x06, 0x86, 0x93,
-	0x02, 0x70, 0x08, 0x93, 0x1A, 0xA6, 0xD5, 0x83, 0x1A, 0xC6, 0xD6, 0x83, 0x00, 0xC8, 0xCF, 0x63,
-	0x00, 0xE8, 0xCD, 0x63, 0x98, 0x23, 0x81, 0x89, 0x82, 0x85, 0x08, 0xB7, 0x08, 0xD7, 0x99, 0x23,
-	0x17, 0x07, 0x97, 0x23, 0x26, 0xA7, 0x97, 0x23, 0x77, 0x61, 0x80, 0x82, 0x08, 0xE7, 0x9A, 0x23,
-	0x08, 0xB7, 0x98, 0x23, 0x06, 0x93, 0xB7, 0xE5, 0xC4, 0x63, 0x23, 0x00, 0xD1, 0xE3, 0x00, 0xC6,
-	0xA6, 0xB7, 0xFE, 0xE6, 0xAE, 0x23, 0x20, 0x00, 0x86, 0x93, 0x0C, 0x07, 0xD5, 0x83, 0x80, 0x06,
-	0xD6, 0x83, 0x1A, 0xA6, 0x9D, 0x23, 0x1A, 0xC6, 0x05, 0x86, 0x0C, 0x07, 0x99, 0x23, 0x06, 0x86,
-	0x9D, 0x23, 0x08, 0xD7, 0xAE, 0x23, 0x1C, 0x07, 0x98, 0x23, 0x1C, 0x07, 0x06, 0x93, 0x08, 0xB7,
-	0xC4, 0x63, 0x41, 0x00, 0xD5, 0xE3, 0x00, 0xC6, 0x77, 0x61, 0xFA, 0xE6, 0x08, 0xE7, 0x97, 0x23,
-	0xA3, 0x03, 0xB7, 0x45, 0x58, 0x03, 0x81, 0x01, 0x67, 0x21, 0x04, 0x23, 0x81, 0x81, 0xA7, 0x83,
-	0x00, 0x85, 0x16, 0x93, 0xA1, 0x01, 0x85, 0x93, 0x00, 0x15, 0x18, 0x93, 0x16, 0xE8, 0x1A, 0x63,
-	0x02, 0x23, 0x57, 0x03, 0x83, 0x41, 0x07, 0x42, 0x16, 0x07, 0x04, 0x63, 0x00, 0xD7, 0x87, 0x33,
-	0x0D, 0xA7, 0x56, 0x03, 0x0C, 0x80, 0x0E, 0x13, 0x06, 0x42, 0x06, 0x05, 0x1D, 0x23, 0x82, 0x41,
-	0x7D, 0x63, 0x0C, 0xC7, 0xDE, 0x03, 0x0C, 0xCE, 0xA6, 0x37, 0x08, 0xE7, 0x06, 0x13, 0x20, 0x00,
-	0x08, 0x63, 0x80, 0x06, 0x5E, 0x03, 0x05, 0x0E, 0x58, 0x03, 0x0D, 0xE7, 0x68, 0x63, 0x1A, 0x66,
-	0x58, 0x03, 0x01, 0xC8, 0x57, 0x03, 0x0D, 0xC7, 0x7C, 0x63, 0x1A, 0x86, 0x8E, 0x33, 0x03, 0x07,
-	0x58, 0x03, 0x00, 0xD7, 0x47, 0x09, 0x0E, 0x0E, 0x08, 0x42, 0x08, 0x05, 0x41, 0x08, 0x58, 0x13,
-	0x0F, 0x0E, 0x10, 0x23, 0x9E, 0x61, 0x8E, 0x93, 0x07, 0x07, 0x45, 0x63, 0x0E, 0x2E, 0x17, 0x03,
-	0x2D, 0x40, 0x05, 0x13, 0x00, 0x0E, 0x90, 0x23, 0x02, 0xA7, 0x07, 0x33, 0x11, 0x23, 0x87, 0x29,
-	0x87, 0x33, 0x0E, 0xEE, 0x97, 0x23, 0x00, 0xD7, 0x2E, 0x23, 0x08, 0x07, 0x1D, 0x23, 0x0C, 0x07,
-	0x57, 0x03, 0x0C, 0x07, 0x98, 0x23, 0x1A, 0xA6, 0x57, 0x03, 0x08, 0xE7, 0x9A, 0x23, 0x1A, 0xC6,
-	0x99, 0x23, 0x08, 0x07, 0xD7, 0x03, 0x08, 0xE7, 0x8B, 0x0D, 0x03, 0x07, 0xA7, 0x03, 0xCF, 0x01,
-	0x11, 0x23, 0x81, 0xC1, 0x86, 0x33, 0x02, 0x03, 0x97, 0x36, 0x00, 0xD7, 0x01, 0x67, 0x57, 0x03,
-	0x0E, 0xE6, 0x11, 0x23, 0xD7, 0x83, 0x97, 0xB6, 0x95, 0xC6, 0x0B, 0x47, 0x00, 0xF5, 0x90, 0x23,
-	0xD8, 0x03, 0x80, 0x82, 0x47, 0x05, 0x03, 0x07, 0x00, 0xEE, 0x90, 0x23, 0x00, 0xA7, 0x17, 0x33,
-	0x01, 0x07, 0x67, 0x33, 0x02, 0xE7, 0x98, 0x23, 0x81, 0xC1, 0xA7, 0x03, 0x02, 0x03, 0x11, 0x23,
-	0x57, 0x03, 0x97, 0x36, 0x11, 0x23, 0x01, 0x67, 0xB7, 0x61, 0x0E, 0xEE, 0x01, 0x15, 0x85, 0x33,
-	0x0B, 0x47, 0x56, 0x03, 0x00, 0x05, 0x55, 0x03, 0x09, 0x27, 0xD8, 0x03, 0x86, 0x13, 0x8D, 0x11,
-	0x96, 0x46, 0x9E, 0x01, 0x00, 0x06, 0x1E, 0x03, 0x85, 0x41, 0x05, 0x42, 0x02, 0x0E, 0x1E, 0x63,
-	0x00, 0xA8, 0x55, 0x63, 0x10, 0x23, 0x47, 0x05, 0x86, 0x33, 0x00, 0xE6, 0x15, 0x03, 0x00, 0xD7,
-	0x17, 0x03, 0x0C, 0xA6, 0x8F, 0x09, 0x0C, 0x86, 0x41, 0xF7, 0x55, 0x13, 0x8F, 0x09, 0x8F, 0x29,
-	0x09, 0x07, 0xD5, 0x03, 0x87, 0x41, 0x07, 0x42, 0xF4, 0xE5, 0x5F, 0xE3, 0x0D, 0xE6, 0x57, 0x03,
-	0x1F, 0x23, 0x07, 0x05, 0xBF, 0x81, 0x0C, 0xE6, 0x41, 0x00, 0x08, 0x33, 0xFD, 0x05, 0x57, 0xE3,
-	0x00, 0x06, 0x10, 0x23, 0x0D, 0xC7, 0x56, 0x03, 0x1E, 0x23, 0x06, 0x05, 0xBF, 0x75, 0x0C, 0xC7,
-	0x9E, 0x01, 0x93, 0x23, 0x97, 0x83, 0xBF, 0x0D, 0x85, 0x2E, 0x9E, 0x61, 0x45, 0x01, 0xC3, 0x91,
-	0x81, 0x81, 0xA7, 0x83, 0x03, 0x07, 0xD7, 0x83, 0xC3, 0x91, 0x8B, 0x8D, 0x80, 0x82, 0x45, 0x01,
-	0x00, 0x15, 0x16, 0x93, 0xA4, 0x01, 0x87, 0x93, 0x87, 0x13, 0x97, 0xB6, 0x90, 0x23, 0xA4, 0x81,
-	0x97, 0x36, 0x00, 0xB7, 0x81, 0x81, 0xA7, 0x83, 0x00, 0xB7, 0x10, 0x23, 0xA5, 0x01, 0x87, 0x13,
-	0x95, 0x3E, 0x05, 0x22, 0x10, 0x23, 0x97, 0x36, 0x18, 0x23, 0x00, 0xB7, 0x14, 0x23, 0x0A, 0xB5,
-	0x80, 0x82, 0x0C, 0xB5, 0x01, 0x05, 0x17, 0x93, 0x20, 0x00, 0xA7, 0x37, 0x82, 0xC7, 0x57, 0x03,
-	0xCA, 0x63, 0x83, 0xC1, 0x97, 0xBA, 0x00, 0xA5, 0x87, 0xC1, 0x07, 0xC2, 0xDA, 0x63, 0x85, 0x2E,
-	0x85, 0x3E, 0x00, 0xB7, 0x8F, 0x99, 0xA0, 0x39, 0x87, 0xC1, 0x07, 0xC2, 0xCA, 0xE3, 0x85, 0x2E,
-	0x05, 0x42, 0xFE, 0xF5, 0x80, 0x82, 0x85, 0x41, 0x9F, 0x01, 0x87, 0x93, 0x71, 0x39, 0x43, 0x98,
-	0x80, 0x00, 0x86, 0xB7, 0xD6, 0x4E, 0xDC, 0x22, 0xDE, 0x06, 0x8F, 0x55, 0xD8, 0x4A, 0xDA, 0x26,
-	0xD2, 0x56, 0xD4, 0x52, 0xCE, 0x5E, 0xD0, 0x5A, 0xA9, 0xB7, 0xCC, 0x62, 0xC3, 0x98, 0x20, 0x00,
-	0x80, 0x09, 0x87, 0x93, 0x03, 0x07, 0xD7, 0x03, 0x00, 0xA1, 0x17, 0x23, 0x19, 0x63, 0x67, 0xA1,
-	0xD7, 0x83, 0x26, 0xF7, 0x47, 0x09, 0x93, 0xE1, 0x80, 0x09, 0x89, 0x93, 0x83, 0xC1, 0x07, 0xC2,
-	0x00, 0xE7, 0x9B, 0x63, 0x00, 0xE1, 0x57, 0x83, 0x8B, 0x8D, 0x47, 0x05, 0x00, 0xE7, 0x95, 0x63,
-	0xA5, 0x61, 0xD7, 0x83, 0xD7, 0x83, 0xA8, 0x35, 0x47, 0x05, 0x93, 0xE1, 0x83, 0xC1, 0x07, 0xC2,
-	0x9F, 0xE1, 0x84, 0x93, 0x02, 0xE7, 0x9A, 0x63, 0x00, 0xE1, 0x57, 0x83, 0x8B, 0x8D, 0x47, 0x09,
-	0x02, 0xE7, 0x94, 0x63, 0x81, 0x81, 0xA7, 0x83, 0x00, 0x04, 0x90, 0x23, 0x0A, 0x07, 0x98, 0x23,
-	0x1A, 0x07, 0x98, 0x23, 0x06, 0x07, 0x96, 0x23, 0x90, 0x01, 0x96, 0x23, 0x00, 0xE1, 0x57, 0x83,
-	0x9F, 0x23, 0x8B, 0x8D, 0xA8, 0x8D, 0x92, 0xF1, 0x93, 0xE1, 0xD7, 0x83, 0x07, 0xC2, 0x47, 0x05,
-	0x89, 0x63, 0x83, 0xC1, 0xD7, 0x83, 0x00, 0xE7, 0x47, 0x09, 0x93, 0xE1, 0x83, 0xC1, 0x07, 0xC2,
-	0x06, 0xE7, 0x98, 0x63, 0x00, 0xE1, 0x57, 0x83, 0xE3, 0xBD, 0x8B, 0x8D, 0x81, 0x81, 0xA7, 0x03,
-	0xA2, 0x81, 0x87, 0x93, 0x0C, 0xA7, 0x56, 0x83, 0x1C, 0xA7, 0x57, 0x03, 0x00, 0xD7, 0x90, 0x23,
-	0x00, 0xE7, 0x91, 0x23, 0x81, 0xC1, 0xA7, 0x03, 0x9E, 0x81, 0x87, 0x93, 0x0E, 0xE7, 0x56, 0x83,
-	0x1E, 0xE7, 0x57, 0x03, 0x00, 0xD7, 0x90, 0x23, 0x00, 0xE7, 0x91, 0x23, 0xA2, 0x01, 0x93, 0x23,
-	0x9C, 0x01, 0x93, 0x23, 0x90, 0x23, 0x47, 0x85, 0x57, 0x83, 0x00, 0xF4, 0x8B, 0x8D, 0x00, 0xE1,
-	0x92, 0xF1, 0x9F, 0x23, 0xA0, 0x01, 0x90, 0x23, 0x54, 0x62, 0x50, 0xF2, 0x59, 0x42, 0x54, 0xD2,
-	0x5A, 0x22, 0x59, 0xB2, 0x5B, 0x02, 0x5A, 0x92, 0x4C, 0x62, 0x4B, 0xF2, 0x80, 0x82, 0x61, 0x21,
-	0x93, 0xE1, 0xD7, 0x83, 0x83, 0xC1, 0x07, 0xC2, 0x57, 0x83, 0xE3, 0xBD, 0x47, 0x05, 0x00, 0xE1,
-	0x88, 0x63, 0x8B, 0x8D, 0x57, 0x83, 0x00, 0xE7, 0x47, 0x09, 0x00, 0xE1, 0x98, 0x63, 0x8B, 0x8D,
-	0xA7, 0x03, 0x04, 0xE7, 0x87, 0x93, 0x81, 0x81, 0x15, 0x83, 0xA2, 0x81, 0x19, 0x03, 0x0C, 0xA7,
-	0x90, 0x23, 0x1C, 0xA7, 0x91, 0x23, 0x00, 0xB7, 0x87, 0x93, 0x01, 0x27, 0x97, 0x03, 0xA0, 0xC1,
-	0xEB, 0x11, 0x00, 0x07, 0x81, 0xC1, 0xA7, 0x03, 0x0E, 0xB7, 0x17, 0x23, 0x1F, 0x27, 0x17, 0x23,
-	0x90, 0x23, 0x47, 0x05, 0x45, 0x01, 0x00, 0xE7, 0xA2, 0x01, 0x93, 0x23, 0xE1, 0x5F, 0xF0, 0xEF,
-	0x45, 0x05, 0x85, 0xCA, 0xE0, 0xDF, 0xF0, 0xEF, 0x9E, 0x01, 0xA4, 0x23, 0x9C, 0x03, 0xB7, 0x95,
-	0x47, 0x85, 0x00, 0x04, 0xF6, 0xFC, 0x1A, 0xE3, 0x70, 0xE9, 0xD7, 0x83, 0x9D, 0x81, 0x84, 0x13,
-	0x00, 0xF4, 0x10, 0x23, 0x71, 0xE9, 0xD7, 0x83, 0x9C, 0x61, 0x89, 0x13, 0xA2, 0x81, 0x8A, 0x13,
-	0x9E, 0x81, 0x8A, 0x93, 0x00, 0xF4, 0x11, 0x23, 0x00, 0x09, 0x57, 0x83, 0x00, 0x0A, 0x95, 0x83,
-	0x00, 0x0A, 0x15, 0x03, 0x10, 0x00, 0x0B, 0x93, 0x12, 0x23, 0x07, 0x85, 0x10, 0x23, 0x01, 0x74,
-	0xF0, 0xEF, 0x00, 0xF9, 0x85, 0xAA, 0xDF, 0x3F, 0x00, 0xAA, 0x10, 0x23, 0xF0, 0xEF, 0x45, 0x01,
-	0x9B, 0x03, 0xDB, 0x3F, 0x15, 0x03, 0x00, 0x2A, 0x85, 0xDA, 0x00, 0x2A, 0xDD, 0x9F, 0xF0, 0xEF,
-	0x00, 0xAA, 0x11, 0x23, 0x8A, 0xAA, 0x85, 0xAA, 0xF0, 0xEF, 0x45, 0x05, 0x8A, 0x13, 0xD9, 0x7F,
-	0x17, 0x03, 0xA0, 0x01, 0x86, 0x13, 0x00, 0x0A, 0x1A, 0x63, 0xA0, 0x01, 0x07, 0xB7, 0x03, 0x87,
-	0x87, 0x93, 0x01, 0x00, 0xC0, 0x1C, 0x10, 0x07, 0x45, 0x01, 0x45, 0x81, 0x01, 0x74, 0x12, 0x23,
-	0xD7, 0x1F, 0xF0, 0xEF, 0x45, 0x05, 0x45, 0x81, 0xD6, 0x9F, 0xF0, 0xEF, 0x00, 0x09, 0x10, 0x23,
-	0x00, 0x04, 0x90, 0x23, 0x90, 0x01, 0x96, 0x23, 0x00, 0x0A, 0x10, 0x23, 0x57, 0x83, 0xB5, 0xF1,
-	0x8B, 0x8D, 0x00, 0xE1, 0x97, 0x03, 0xEB, 0x99, 0x17, 0x83, 0x02, 0xE9, 0xCD, 0xE3, 0x00, 0x09,
-	0x47, 0x85, 0xEA, 0xE7, 0x00, 0xF6, 0x10, 0x23, 0x4F, 0xE3, 0xBD, 0x45, 0xA6, 0x83, 0xFD, 0x5B,
-	0x97, 0x83, 0x81, 0x81, 0xD7, 0x13, 0x1B, 0xA6, 0xD7, 0x83, 0x40, 0xF7, 0x06, 0x93, 0x1B, 0xA6,
-	0x8F, 0xB9, 0x3E, 0x80, 0x07, 0xC2, 0x8F, 0x99, 0x87, 0x13, 0x87, 0xC1, 0xCE, 0x63, 0xA2, 0x61,
-	0x57, 0x83, 0x00, 0xF6, 0x07, 0x85, 0x00, 0x07, 0x87, 0xC1, 0x07, 0xC2, 0x00, 0xF7, 0x10, 0x23,
-	0x06, 0x30, 0x07, 0x13, 0xFA, 0xF7, 0x4F, 0xE3, 0x10, 0x23, 0xBD, 0x85, 0xB5, 0xAD, 0x00, 0x07,
-	0x01, 0x00, 0x07, 0x37, 0x9D, 0x81, 0x87, 0x93, 0x10, 0x07, 0x07, 0x13, 0x07, 0x13, 0xC3, 0x98,
-	0x92, 0x23, 0x10, 0x00, 0xBB, 0x69, 0x00, 0xE7, 0xCC, 0x22, 0x11, 0x01, 0xC8, 0x4A, 0xCA, 0x26,
-	0xC6, 0x4E, 0xCE, 0x06, 0x84, 0xAE, 0x84, 0x2A, 0xA2, 0x2F, 0xF0, 0xEF, 0x18, 0x63, 0x47, 0x89,
-	0x89, 0x93, 0x0A, 0xF4, 0x97, 0x83, 0x9D, 0x61, 0x8D, 0x63, 0x00, 0x09, 0xC4, 0x8D, 0x02, 0xF4,
-	0x10, 0x00, 0x07, 0x13, 0x9C, 0xE1, 0x9E, 0x23, 0x81, 0x81, 0xA7, 0x83, 0x95, 0x83, 0x45, 0x09,
-	0xF0, 0xEF, 0x2B, 0x27, 0x90, 0x23, 0xC9, 0xFF, 0x40, 0xF2, 0x00, 0x99, 0x44, 0xD2, 0x44, 0x62,
-	0x49, 0xB2, 0x49, 0x42, 0x80, 0x82, 0x61, 0x05, 0x45, 0x09, 0x45, 0x81, 0xC8, 0x5F, 0xF0, 0xEF,
-	0x00, 0x09, 0x90, 0x23, 0x9A, 0x23, 0x77, 0x61, 0xA7, 0x83, 0x9E, 0xE1, 0x95, 0x83, 0x81, 0x81,
-	0x88, 0x8D, 0x2C, 0x87, 0x00, 0x84, 0x19, 0x93, 0xC4, 0xB5, 0x85, 0x22, 0xB0, 0xAF, 0xF0, 0xEF,
-	0x46, 0x8D, 0x86, 0x2A, 0x85, 0x22, 0x45, 0x91, 0x81, 0x81, 0xA4, 0x83, 0xA7, 0xBF, 0xD0, 0xEF,
-	0x81, 0x81, 0xA7, 0x83, 0x19, 0x13, 0x94, 0xCE, 0x87, 0x13, 0x00, 0x14, 0x97, 0xCE, 0x9F, 0x01,
-	0x0C, 0xA4, 0x98, 0x23, 0x94, 0x83, 0x97, 0x4A, 0x17, 0x83, 0x0D, 0x07, 0xDA, 0x63, 0x00, 0x07,
-	0x85, 0xA6, 0x00, 0x07, 0xF0, 0xEF, 0x85, 0x22, 0x85, 0xAA, 0xC1, 0x1F, 0xE0, 0xEF, 0x85, 0x22,
-	0x87, 0x93, 0xC3, 0x7F, 0x97, 0xCA, 0xA2, 0x01, 0x00, 0x97, 0x90, 0x23, 0x97, 0x83, 0xBF, 0xBD,
-	0xC3, 0x91, 0x9F, 0xE1, 0xA7, 0x83, 0x44, 0x89, 0x17, 0x13, 0x81, 0x81, 0x97, 0xBA, 0x00, 0x84,
-	0x0C, 0x87, 0x95, 0x83, 0xE0, 0xEF, 0xB7, 0x79, 0x45, 0x91, 0xD2, 0x3F, 0x46, 0x01, 0x46, 0x8D,
-	0xA4, 0x83, 0x45, 0x09, 0xD0, 0xEF, 0x81, 0x81, 0xA7, 0x83, 0xA1, 0x1F, 0x98, 0x23, 0x81, 0x81,
-	0x85, 0x22, 0x2C, 0xA4, 0x44, 0x62, 0x97, 0xCE, 0x44, 0xD2, 0x40, 0xF2, 0x49, 0xB2, 0x49, 0x42,
-	0x0B, 0x07, 0x95, 0x83, 0xE0, 0x6F, 0x61, 0x05, 0x67, 0xA9, 0xBD, 0xFF, 0x20, 0x01, 0xF7, 0x37,
-	0x23, 0xF7, 0x87, 0x93, 0xDA, 0xF7, 0x28, 0x23, 0x04, 0xD0, 0x06, 0x93, 0x20, 0x01, 0xE7, 0xB7,
-	0x60, 0xD7, 0xA2, 0x23, 0x0F, 0x70, 0x06, 0x93, 0x60, 0xD7, 0xA4, 0x23, 0xA6, 0x23, 0x46, 0xAD,
-	0x28, 0x23, 0x60, 0xD7, 0x80, 0x82, 0xDA, 0x07, 0x20, 0x01, 0xF7, 0xB7, 0xE0, 0x07, 0xA4, 0x23,
-	0xA6, 0x23, 0x47, 0x0D, 0xA8, 0x23, 0xE0, 0xE7, 0xAA, 0x23, 0xE0, 0x07, 0xAC, 0x23, 0xE0, 0x07,
-	0xAE, 0x23, 0xE0, 0x07, 0x80, 0x82, 0xE0, 0x07, 0x20, 0x01, 0xF7, 0xB7, 0xF0, 0x07, 0xA4, 0x23,
-	0xF0, 0x07, 0xA8, 0x23, 0x11, 0x00, 0x07, 0x13, 0xF0, 0xE7, 0xAA, 0x23, 0xF0, 0x07, 0xAC, 0x23,
-	0xF0, 0x07, 0xAE, 0x23, 0x67, 0xA9, 0x80, 0x82, 0x23, 0xF7, 0x87, 0x93, 0x20, 0x01, 0xF7, 0x37,
-	0xDA, 0xF7, 0x28, 0x23, 0x81, 0x01, 0xA7, 0x83, 0xD7, 0x83, 0x46, 0x85, 0x07, 0xC2, 0x04, 0x07,
-	0x88, 0x63, 0x83, 0xC1, 0xE7, 0x37, 0x04, 0xD7, 0x67, 0x85, 0x20, 0x01, 0x87, 0x93, 0xCF, 0x74,
-	0xD3, 0x3C, 0x21, 0x07, 0x20, 0x01, 0xE7, 0xB7, 0x22, 0x10, 0x07, 0x13, 0x67, 0x05, 0xD3, 0xF8,
-	0x87, 0x93, 0xD7, 0xB8, 0x47, 0x15, 0x30, 0x07, 0xDF, 0xD8, 0xDF, 0x98, 0xCB, 0x98, 0xC7, 0xD8,
-	0x46, 0xA1, 0xCB, 0xD8, 0xCF, 0xD4, 0xCF, 0x94, 0xD3, 0xD8, 0xD3, 0x98, 0xD7, 0xD4, 0xD7, 0x94,
-	0xC3, 0xF8, 0xC3, 0xB8, 0xC7, 0xB8, 0xCB, 0xB8, 0x20, 0x01, 0xF7, 0xB7, 0xDA, 0x07, 0xA8, 0x23,
-	0x67, 0x05, 0x80, 0x82, 0x20, 0x01, 0xE6, 0xB7, 0x21, 0x17, 0x07, 0x13, 0xD2, 0xBC, 0xCE, 0xF8,
-	0xE7, 0xB7, 0xBF, 0x55, 0x47, 0x25, 0x20, 0x01, 0x70, 0xE7, 0xA2, 0x23, 0x70, 0x07, 0xA6, 0x23,
-	0x0E, 0xF0, 0x07, 0x13, 0x70, 0xE7, 0xA8, 0x23, 0xA0, 0x23, 0x47, 0x05, 0x80, 0x82, 0x70, 0xE7,
-	0x20, 0x00, 0xA7, 0xB7, 0x80, 0x07, 0x87, 0x93, 0x50, 0x87, 0xD7, 0x03, 0x30, 0x87, 0xD6, 0x03,
-	0x20, 0x01, 0xE6, 0xB7, 0x06, 0x12, 0x07, 0x22, 0xD6, 0x03, 0x8F, 0x51, 0xAA, 0x23, 0x10, 0x87,
-	0x8F, 0x51, 0x04, 0x06, 0x0E, 0xE6, 0xA8, 0x23, 0x30, 0xA7, 0xD6, 0x03, 0x50, 0xA7, 0xD7, 0x03,
-	0x10, 0xA7, 0xD7, 0x83, 0x07, 0x22, 0x06, 0x12, 0x8F, 0xD9, 0x8F, 0x51, 0x0C, 0xF6, 0xA6, 0x23,
-	0x20, 0x01, 0xF7, 0xB7, 0x90, 0x07, 0xA2, 0x23, 0x90, 0x07, 0xA4, 0x23, 0x90, 0x07, 0xA6, 0x23,
-	0x11, 0x10, 0x07, 0x13, 0x90, 0xE7, 0xA0, 0x23, 0xA7, 0x83, 0x80, 0x82, 0x66, 0xA1, 0x81, 0xC1,
-	0x20, 0x00, 0xA7, 0x37, 0x30, 0x07, 0xD6, 0x03, 0x07, 0x13, 0x06, 0x9D, 0x0F, 0x63, 0x80, 0x07,
-	0x56, 0x83, 0x00, 0xD6, 0x97, 0x23, 0x10, 0x27, 0x56, 0x83, 0x00, 0xD7, 0x97, 0x23, 0x30, 0x27,
-	0x56, 0x83, 0x10, 0xD7, 0x97, 0x23, 0x50, 0x27, 0xA0, 0x21, 0x20, 0xD7, 0x00, 0xE7, 0xD6, 0x83,
-	0x96, 0x83, 0xD2, 0xED, 0xC6, 0x89, 0x00, 0x67, 0x0F, 0xF0, 0x06, 0x13, 0x00, 0xC6, 0x9A, 0x63,
-	0x10, 0x07, 0x56, 0x83, 0x00, 0xD7, 0x93, 0x23, 0x10, 0x47, 0x56, 0x83, 0x00, 0xD7, 0x94, 0x23,
-	0x10, 0x67, 0x96, 0x83, 0x06, 0x13, 0xC6, 0x89, 0x9A, 0x63, 0x0F, 0xF0, 0x56, 0x83, 0x00, 0xC6,
-	0x93, 0x23, 0x30, 0x07, 0x56, 0x83, 0x10, 0xD7, 0x94, 0x23, 0x30, 0x47, 0x96, 0x83, 0x10, 0xD7,
-	0xC6, 0x89, 0x20, 0x67, 0x0F, 0xF0, 0x06, 0x13, 0x00, 0xC6, 0x9A, 0x63, 0x50, 0x07, 0x56, 0x83,
-	0x20, 0xD7, 0x93, 0x23, 0x50, 0x47, 0x56, 0x83, 0x20, 0xD7, 0x94, 0x23, 0x00, 0xE7, 0xD6, 0x03,
-	0x00, 0x87, 0x95, 0x83, 0x00, 0x03, 0xC8, 0xB7, 0x00, 0x66, 0x16, 0x93, 0x18, 0x7D, 0x68, 0x41,
-	0x01, 0x16, 0xF6, 0xB3, 0xD5, 0x03, 0x06, 0x32, 0x8E, 0xCD, 0x10, 0xE7, 0x01, 0x06, 0x76, 0x33,
-	0xE6, 0x37, 0x8E, 0xD1, 0x93, 0x03, 0x20, 0x01, 0x05, 0x93, 0x10, 0x87, 0xE6, 0x93, 0x08, 0x06,
-	0xD9, 0x94, 0x10, 0x06, 0x00, 0x65, 0x16, 0x93, 0x01, 0x16, 0xF6, 0xB3, 0x75, 0x33, 0x05, 0x32,
-	0xE6, 0xB3, 0x01, 0x05, 0x8E, 0xC9, 0x00, 0x66, 0x10, 0x06, 0xE6, 0x93, 0x96, 0x83, 0xDD, 0x94,
-	0x95, 0x03, 0x10, 0x67, 0x06, 0xA2, 0x00, 0x67, 0xD1, 0x94, 0x8E, 0xC9, 0x30, 0x67, 0x55, 0x03,
-	0x50, 0x67, 0x56, 0x83, 0x10, 0x67, 0x57, 0x03, 0x06, 0x96, 0x05, 0x0E, 0x07, 0x06, 0x8E, 0xC9,
-	0xCE, 0x34, 0x8E, 0xD9, 0x20, 0xE7, 0xD6, 0x83, 0x20, 0x87, 0x95, 0x03, 0x11, 0x10, 0x07, 0x13,
-	0x97, 0x13, 0xD6, 0x78, 0x77, 0x33, 0x00, 0x66, 0x06, 0xB2, 0x01, 0x17, 0xF6, 0xB3, 0x8F, 0x49,
-	0x97, 0x83, 0x01, 0x06, 0x8F, 0x55, 0x20, 0x67, 0x10, 0x07, 0x67, 0x13, 0xD1, 0xDC, 0xC1, 0xB8,
-	0xDA, 0x7C, 0x47, 0x95, 0xDE, 0x3C, 0x67, 0x85, 0xC1, 0x98, 0x47, 0x05, 0x0C, 0x06, 0x24, 0x23,
-	0x10, 0x57, 0x87, 0x93, 0x80, 0x82, 0xDE, 0x7C, 0x20, 0x01, 0xF7, 0xB7, 0x90, 0x07, 0x87, 0x13,
-	0xDB, 0x30, 0x46, 0x05, 0xDB, 0x74, 0x46, 0x91, 0x06, 0x85, 0x66, 0x85, 0xDF, 0x70, 0xDF, 0x34,
-	0x98, 0x07, 0xA0, 0x23, 0x98, 0x07, 0xA2, 0x23, 0x98, 0x07, 0xA4, 0x23, 0xF7, 0xB7, 0x80, 0x82,
-	0x67, 0x29, 0x20, 0x01, 0xD8, 0x07, 0x86, 0x93, 0x23, 0xF7, 0x07, 0x13, 0x66, 0x85, 0xDA, 0x98,
-	0xA0, 0x07, 0x87, 0x13, 0xC3, 0x14, 0x16, 0xFD, 0x03, 0xF0, 0x06, 0x93, 0x46, 0x9D, 0xCB, 0x14,
-	0x07, 0x13, 0xD3, 0x14, 0xC1, 0x19, 0x02, 0x00, 0x02, 0xC0, 0x07, 0x13, 0xA0, 0xE7, 0xA2, 0x23,
-	0x20, 0x01, 0xF7, 0xB7, 0xA2, 0x23, 0x47, 0x0D, 0xAA, 0x23, 0xA2, 0xE7, 0xA8, 0x23, 0xA0, 0x07,
-	0xAA, 0x23, 0xA2, 0x07, 0xAC, 0x23, 0xA2, 0x07, 0xAE, 0x23, 0xA2, 0x07, 0x47, 0x29, 0xA2, 0x07,
-	0xA4, 0xE7, 0xA0, 0x23, 0xA4, 0x07, 0xA2, 0x23, 0xDA, 0x07, 0xA8, 0x23, 0x11, 0x41, 0x80, 0x82,
-	0xC6, 0x06, 0x67, 0xA9, 0x87, 0x93, 0xC4, 0x22, 0xF4, 0x37, 0x23, 0xF7, 0x28, 0x23, 0x20, 0x01,
-	0xF0, 0xEF, 0xDA, 0xF4, 0xF0, 0xEF, 0xE1, 0x9F, 0xF0, 0xEF, 0xDB, 0xBF, 0x40, 0xB2, 0xF5, 0xFF,
-	0xDA, 0x04, 0x28, 0x23, 0x01, 0x41, 0x44, 0x22, 0x11, 0x41, 0x80, 0x82, 0x00, 0x01, 0x17, 0x23,
-	0x57, 0x83, 0x47, 0x0D, 0x07, 0xC2, 0x00, 0xE1, 0xE4, 0x63, 0x83, 0xC1, 0x01, 0x41, 0x00, 0xA7,
-	0x16, 0x23, 0x80, 0x82, 0x57, 0x83, 0x00, 0x01, 0x07, 0xC2, 0x00, 0xC1, 0x7A, 0x63, 0x83, 0xC1,
-	0x57, 0x83, 0x00, 0xF7, 0x07, 0x85, 0x00, 0xE1, 0x83, 0xC1, 0x07, 0xC2, 0x00, 0xF1, 0x17, 0x23,
-	0x00, 0x01, 0xBF, 0xC9, 0x57, 0x83, 0x00, 0x01, 0x07, 0x85, 0x00, 0xC1, 0x83, 0xC1, 0x07, 0xC2,
-	0x00, 0xF1, 0x16, 0x23, 0x11, 0x41, 0xBF, 0xC9, 0x00, 0x01, 0x17, 0x23, 0x00, 0x01, 0x17, 0x23,
-	0x02, 0x90, 0x07, 0x13, 0x00, 0xE1, 0x57, 0x83, 0x83, 0xC1, 0x07, 0xC2, 0x00, 0xF7, 0x74, 0x63,
-	0x80, 0x82, 0x01, 0x41, 0x57, 0x83, 0x00, 0x01, 0x07, 0x85, 0x00, 0xE1, 0x83, 0xC1, 0x07, 0xC2,
-	0x00, 0xF1, 0x17, 0x23, 0x11, 0x01, 0xB7, 0xC5, 0xCA, 0x26, 0xCC, 0x22, 0x84, 0x2A, 0xCE, 0x06,
-	0x00, 0x01, 0x17, 0x23, 0x07, 0x40, 0x04, 0x93, 0x00, 0xE1, 0x57, 0x83, 0x83, 0xC1, 0x07, 0xC2,
-	0x00, 0x87, 0xE7, 0x63, 0x44, 0x62, 0x40, 0xF2, 0x61, 0x05, 0x44, 0xD2, 0x16, 0x23, 0x80, 0x82,
-	0x57, 0x83, 0x00, 0x01, 0x07, 0xC2, 0x00, 0xC1, 0xFA, 0x63, 0x83, 0xC1, 0x57, 0x83, 0x00, 0xF4,
-	0x07, 0x85, 0x00, 0xE1, 0x83, 0xC1, 0x07, 0xC2, 0x00, 0xF1, 0x17, 0x23, 0xF0, 0xEF, 0xB7, 0xF1,
-	0x57, 0x83, 0xF8, 0x9F, 0x07, 0x85, 0x00, 0xC1, 0x83, 0xC1, 0x07, 0xC2, 0x00, 0xF1, 0x16, 0x23,
-	0x71, 0x79, 0xBF, 0xC9, 0xD2, 0x26, 0xD4, 0x22, 0x20, 0x01, 0xF4, 0x37, 0xD0, 0x4A, 0x64, 0xC1,
-	0xCC, 0x52, 0xCE, 0x4E, 0xC8, 0x5A, 0xCA, 0x56, 0xD6, 0x06, 0xC6, 0x5E, 0x80, 0x04, 0x84, 0x93,
-	0xD0, 0xC4, 0x09, 0x93, 0x7A, 0x69, 0x4B, 0x85, 0x08, 0x00, 0x0A, 0x93, 0x69, 0x41, 0x4B, 0x09,
-	0xD0, 0x04, 0x20, 0x23, 0xD0, 0x94, 0x24, 0x23, 0x01, 0x79, 0xA0, 0x23, 0xF0, 0xEF, 0x45, 0x15,
-	0x27, 0x83, 0xF6, 0x9F, 0x8B, 0x85, 0xD0, 0x44, 0x20, 0x23, 0xFF, 0xED, 0x87, 0xB3, 0xD0, 0x04,
-	0x2C, 0x23, 0x01, 0x44, 0x2E, 0x23, 0xD2, 0xF4, 0x20, 0x23, 0xD2, 0x94, 0x22, 0x23, 0xD5, 0x54,
-	0x45, 0x15, 0xD5, 0x64, 0xF4, 0x3F, 0xF0, 0xEF, 0xD0, 0x44, 0x27, 0x83, 0xFF, 0xED, 0x8B, 0x85,
-	0x20, 0x04, 0x84, 0x93, 0xFB, 0x24, 0x9E, 0xE3, 0x2E, 0x23, 0x50, 0xB2, 0x54, 0x22, 0xDA, 0x04,
-	0x59, 0x02, 0x54, 0x92, 0x4A, 0x62, 0x49, 0xF2, 0x4B, 0x42, 0x4A, 0xD2, 0x61, 0x45, 0x4B, 0xB2,
-	0x66, 0x05, 0x80, 0x82, 0x20, 0x00, 0xA5, 0x37, 0x80, 0x06, 0x06, 0x13, 0x05, 0x13, 0x45, 0x81,
-	0x00, 0x6F, 0x80, 0x05, 0x11, 0x41, 0x71, 0x10, 0x20, 0x01, 0xF7, 0xB7, 0x47, 0x05, 0xC6, 0x06,
-	0xD0, 0xE7, 0xA0, 0x23, 0x40, 0x00, 0x06, 0x93, 0xD0, 0xD7, 0xA4, 0x23, 0xD0, 0xE7, 0xA6, 0x23,
-	0xF0, 0xEF, 0x45, 0x15, 0xF7, 0xB7, 0xEE, 0x5F, 0xA7, 0x03, 0x20, 0x01, 0x8B, 0x05, 0xD0, 0x47,
-	0x87, 0x93, 0xFF, 0x6D, 0x47, 0x05, 0xD0, 0x07, 0x67, 0x31, 0xC3, 0x98, 0x80, 0x07, 0x07, 0x13,
-	0x07, 0x13, 0xDF, 0x98, 0xDF, 0xD8, 0x40, 0x00, 0x04, 0x00, 0x07, 0x13, 0x47, 0x09, 0xC3, 0xB8,
-	0x45, 0x15, 0xC3, 0xF8, 0xEB, 0x3F, 0xF0, 0xEF, 0x20, 0x01, 0xF7, 0xB7, 0xD0, 0x47, 0xA7, 0x03,
-	0xFF, 0x6D, 0x8B, 0x05, 0xA0, 0x23, 0x40, 0xB2, 0xA8, 0x23, 0xD0, 0x07, 0x01, 0x41, 0xDA, 0x07,
-	0x11, 0x01, 0x80, 0x82, 0xF4, 0x37, 0xCC, 0x22, 0xCA, 0x26, 0x20, 0x01, 0xC6, 0x4E, 0xC8, 0x4A,
-	0xCE, 0x06, 0xC4, 0x52, 0x0A, 0x13, 0x44, 0x81, 0x49, 0x05, 0xD0, 0x04, 0x40, 0x00, 0x09, 0x93,
-	0x01, 0x2A, 0x20, 0x23, 0xD0, 0x94, 0x24, 0x23, 0xD1, 0x24, 0x26, 0x23, 0xF0, 0xEF, 0x45, 0x15,
-	0x27, 0x83, 0xE6, 0x9F, 0x8B, 0x85, 0xD0, 0x44, 0x84, 0x93, 0xFF, 0xED, 0x91, 0xE3, 0x10, 0x04,
-	0x07, 0x93, 0xFF, 0x34, 0x47, 0x05, 0xD0, 0x04, 0x67, 0x2D, 0xC3, 0x98, 0x40, 0x07, 0x07, 0x13,
-	0x2E, 0x23, 0xDF, 0x98, 0x07, 0x13, 0xD2, 0x04, 0xC3, 0xB8, 0x10, 0x00, 0xC3, 0xF8, 0x47, 0x09,
-	0xF0, 0xEF, 0x45, 0x15, 0xF7, 0x37, 0xE3, 0x5F, 0x27, 0x83, 0x20, 0x01, 0x8B, 0x85, 0xD0, 0x47,
-	0x44, 0x62, 0xFF, 0xED, 0x44, 0xD2, 0x40, 0xF2, 0x49, 0xB2, 0x49, 0x42, 0x61, 0x05, 0x4A, 0x22,
-	0xF1, 0x7F, 0xF0, 0x6F, 0x20, 0x01, 0xF7, 0x37, 0x07, 0x93, 0x11, 0x41, 0xC6, 0x06, 0xD0, 0x07,
-	0xC3, 0x94, 0x46, 0x85, 0xD2, 0x07, 0x2C, 0x23, 0x07, 0x13, 0x67, 0x2D, 0xDF, 0xD8, 0x40, 0x07,
-	0x18, 0x00, 0x07, 0x13, 0xC3, 0xF4, 0xC3, 0xB8, 0xF0, 0xEF, 0x45, 0x0D, 0xF7, 0xB7, 0xDE, 0xDF,
-	0xA7, 0x03, 0x20, 0x01, 0x8B, 0x05, 0xD0, 0x47, 0x40, 0xB2, 0xFF, 0x6D, 0xD0, 0x07, 0xA0, 0x23,
-	0xDA, 0x07, 0xA8, 0x23, 0x80, 0x82, 0x01, 0x41, 0xA7, 0x03, 0x11, 0x01, 0xC4, 0x52, 0x81, 0x81,
-	0x87, 0x93, 0x8A, 0x3E, 0xD7, 0x83, 0xA5, 0x61, 0xCC, 0x22, 0x00, 0x07, 0xCE, 0x06, 0xC8, 0x4A,
-	0xC6, 0x4E, 0xCA, 0x26, 0x19, 0x13, 0x46, 0x89, 0x84, 0x13, 0x00, 0x15, 0x1B, 0x63, 0xA4, 0x01,
-	0x83, 0x91, 0x02, 0xD5, 0x16, 0x93, 0x8B, 0xB9, 0x97, 0x36, 0x00, 0x85, 0x0B, 0x07, 0x16, 0x83,
-	0x9A, 0x63, 0x47, 0x09, 0x07, 0xB3, 0x12, 0xE7, 0x44, 0x62, 0x01, 0x24, 0x44, 0xD2, 0x40, 0xF2,
-	0x49, 0xB2, 0x49, 0x42, 0x90, 0x23, 0x4A, 0x22, 0x75, 0x13, 0x00, 0xD7, 0x61, 0x05, 0x0F, 0xF5,
-	0x89, 0x5F, 0xE0, 0x6F, 0x46, 0x05, 0x8B, 0x8D, 0xFC, 0xC7, 0x97, 0xE3, 0x05, 0x87, 0x58, 0x03,
-	0x01, 0x08, 0x16, 0x13, 0x56, 0x63, 0x86, 0x41, 0x5E, 0x03, 0x0E, 0x06, 0x86, 0x13, 0x05, 0xA7,
-	0x58, 0x83, 0xA5, 0x81, 0x83, 0x13, 0x00, 0x06, 0x84, 0x93, 0xA5, 0x81, 0xFA, 0x63, 0xA6, 0x01,
-	0x47, 0x91, 0x07, 0xC6, 0x40, 0xA8, 0xD5, 0xB3, 0x04, 0xF7, 0x1D, 0x23, 0xE5, 0xA1, 0x89, 0x85,
-	0x00, 0x85, 0x16, 0x13, 0x00, 0xC7, 0x06, 0xB3, 0x00, 0x28, 0x78, 0x13, 0x16, 0x86, 0x95, 0x83,
-	0x0A, 0x63, 0x47, 0x81, 0x97, 0x83, 0x00, 0x08, 0x97, 0xAE, 0x0C, 0xE6, 0x40, 0xF0, 0x07, 0xB3,
-	0x07, 0xC2, 0x87, 0x85, 0x86, 0xB3, 0x87, 0xC1, 0x90, 0x23, 0x01, 0x24, 0x47, 0x85, 0x00, 0xF6,
-	0x00, 0xA7, 0x95, 0x33, 0x05, 0xB3, 0x96, 0x3A, 0x65, 0x33, 0x40, 0xB0, 0x17, 0x23, 0x01, 0x15,
-	0x10, 0x23, 0x0C, 0xB6, 0x94, 0xCA, 0x00, 0xA3, 0x00, 0x04, 0x97, 0x83, 0x10, 0x23, 0x94, 0x4A,
-	0x40, 0xF2, 0x00, 0xF4, 0x44, 0xD2, 0x44, 0x62, 0x49, 0xB2, 0x49, 0x42, 0x61, 0x05, 0x4A, 0x22,
-	0x95, 0xB3, 0x80, 0x82, 0xF6, 0xB3, 0x00, 0xA7, 0x19, 0x93, 0x01, 0x15, 0x9B, 0x63, 0x00, 0x85,
-	0x06, 0xB3, 0x02, 0xD5, 0xD8, 0x03, 0x01, 0x37, 0x08, 0x33, 0x16, 0x86, 0x97, 0x23, 0x41, 0x00,
-	0x46, 0x8D, 0x0D, 0x06, 0xF6, 0xB3, 0x8E, 0x8D, 0x10, 0x23, 0x01, 0x16, 0xEA, 0x99, 0x00, 0xD6,
-	0x45, 0x01, 0x45, 0x81, 0x04, 0xF7, 0x1D, 0x23, 0xEF, 0xCF, 0xE0, 0xEF, 0x45, 0x05, 0x45, 0x81,
-	0xEF, 0x4F, 0xE0, 0xEF, 0x81, 0x81, 0xA5, 0x03, 0x95, 0x4E, 0x94, 0xCA, 0x0C, 0xE5, 0x57, 0x03,
-	0x16, 0x85, 0x57, 0x83, 0xD7, 0x03, 0x97, 0xBA, 0x97, 0xBA, 0x00, 0x04, 0x87, 0xC1, 0x07, 0xC2,
-	0x05, 0x22, 0xB7, 0x71, 0x00, 0xA7, 0x06, 0x33, 0x16, 0x86, 0x17, 0x03, 0x01, 0x24, 0x07, 0xB3,
-	0x00, 0xE7, 0x90, 0x23, 0x94, 0x4A, 0xBF, 0xBD, 0x00, 0xD4, 0x10, 0x23, 0x00, 0x04, 0x10, 0x23,
-	0xF6, 0xE5, 0x09, 0xE3, 0xA4, 0x81, 0x87, 0x93, 0x90, 0x23, 0x97, 0xCA, 0xB7, 0x95, 0x00, 0x07,
-	0xC4, 0x22, 0x11, 0x41, 0x81, 0x01, 0xA7, 0x03, 0x57, 0x83, 0xC2, 0x26, 0x56, 0x83, 0x02, 0x47,
-	0xC6, 0x06, 0x02, 0x27, 0x83, 0xC1, 0x07, 0xC2, 0x82, 0xC1, 0x06, 0xC2, 0x8F, 0xD5, 0x07, 0x92,
-	0xC0, 0x4A, 0x07, 0xC2, 0xA5, 0x61, 0x84, 0x93, 0x90, 0x23, 0x83, 0xC1, 0xD7, 0x83, 0x00, 0xF4,
-	0xD5, 0x03, 0x00, 0x04, 0x66, 0x85, 0x00, 0x04, 0x05, 0x42, 0x8F, 0xD5, 0x02, 0xF7, 0x10, 0x23,
-	0xF0, 0xEF, 0x81, 0x41, 0xA7, 0x03, 0xC5, 0x6F, 0x46, 0x85, 0x81, 0x01, 0x04, 0x07, 0x57, 0x83,
-	0x83, 0xC1, 0x07, 0xC2, 0x02, 0xD7, 0x97, 0x63, 0x03, 0x47, 0x59, 0x03, 0x59, 0x13, 0x09, 0x42,
-	0x18, 0x63, 0x01, 0x09, 0xD7, 0x83, 0x04, 0xF9, 0x07, 0xC2, 0x00, 0x04, 0xC7, 0x91, 0x83, 0xC1,
-	0xD0, 0xEF, 0x45, 0x01, 0x92, 0x23, 0xB7, 0xEF, 0xA7, 0x83, 0xA7, 0x21, 0x9A, 0x23, 0x81, 0x01,
-	0xC7, 0x83, 0x02, 0x07, 0x46, 0xB9, 0x99, 0xB1, 0x07, 0x85, 0x84, 0xBA, 0x0F, 0xF7, 0xF7, 0x93,
-	0x98, 0xF1, 0x8D, 0xA3, 0x99, 0xB1, 0xC7, 0x83, 0xF7, 0x93, 0x17, 0xFD, 0xE5, 0x63, 0x0F, 0xF7,
-	0x87, 0x37, 0x12, 0xF6, 0x07, 0x8A, 0x20, 0x00, 0x12, 0x07, 0x07, 0x13, 0x43, 0x9C, 0x97, 0xBA,
-	0x84, 0x93, 0x87, 0x82, 0x97, 0x83, 0xA6, 0x41, 0xD7, 0xE1, 0x00, 0x04, 0xD0, 0xEF, 0x45, 0x05,
-	0x90, 0x23, 0xB3, 0x2F, 0xBF, 0x75, 0x00, 0x04, 0x81, 0x01, 0xA7, 0x83, 0xD7, 0x83, 0x47, 0x05,
-	0x07, 0xC2, 0x04, 0x07, 0x8B, 0x63, 0x83, 0xC1, 0xA7, 0x83, 0x00, 0xE7, 0x45, 0x01, 0x81, 0x81,
-	0x03, 0xE7, 0x96, 0x03, 0x00, 0xA7, 0x95, 0x83, 0x26, 0xF0, 0x00, 0xEF, 0x81, 0x01, 0xA7, 0x03,
-	0x57, 0x83, 0x46, 0x85, 0x07, 0xC2, 0x03, 0x47, 0x97, 0x63, 0x83, 0xC1, 0x57, 0x83, 0x0C, 0xD7,
-	0x07, 0xC2, 0x03, 0x67, 0x81, 0x63, 0x83, 0xC1, 0x44, 0x22, 0x0C, 0x07, 0x44, 0x92, 0x40, 0xB2,
-	0x45, 0x01, 0x49, 0x02, 0xD0, 0x6F, 0x01, 0x41, 0xA7, 0x03, 0xAD, 0xAF, 0x46, 0x85, 0x81, 0x01,
-	0x03, 0x47, 0x57, 0x83, 0x83, 0xC1, 0x07, 0xC2, 0x00, 0xD7, 0x9A, 0x63, 0x03, 0x67, 0x57, 0x83,
-	0x83, 0xC1, 0x07, 0xC2, 0x45, 0x05, 0xC7, 0x81, 0xAB, 0x8F, 0xD0, 0xEF, 0x85, 0xEF, 0xA0, 0xEF,
-	0x40, 0xB2, 0x44, 0x22, 0x49, 0x02, 0x44, 0x92, 0x90, 0x6F, 0x01, 0x41, 0xB0, 0xEF, 0xD7, 0xBF,
-	0x45, 0x01, 0xBD, 0xAF, 0x89, 0xBF, 0xA0, 0xEF, 0xA0, 0xEF, 0x45, 0x05, 0xA7, 0x83, 0x89, 0x5F,
-	0x47, 0x05, 0x81, 0x01, 0x04, 0x07, 0xD7, 0x83, 0x83, 0xC1, 0x07, 0xC2, 0x00, 0xE7, 0x88, 0x63,
-	0x6F, 0x20, 0x00, 0xEF, 0x16, 0xD0, 0x00, 0xEF, 0x0A, 0xD0, 0x00, 0xEF, 0x81, 0x01, 0xA7, 0x83,
-	0x02, 0x27, 0xD5, 0x03, 0x81, 0x41, 0x05, 0x42, 0xEF, 0xAF, 0xD0, 0xEF, 0x40, 0xB2, 0x44, 0x22,
-	0x49, 0x02, 0x44, 0x92, 0xD0, 0x6F, 0x01, 0x41, 0xE0, 0xEF, 0xE4, 0xAF, 0xF0, 0xEF, 0x87, 0x5F,
-	0xA0, 0xEF, 0x80, 0x6F, 0xA7, 0x83, 0xC2, 0x5F, 0x67, 0x21, 0x81, 0x01, 0x02, 0xA7, 0xD7, 0x83,
-	0x83, 0xC1, 0x07, 0xC2, 0x00, 0xE7, 0x9A, 0x63, 0x9A, 0x6F, 0xD0, 0xEF, 0x81, 0x01, 0xA7, 0x03,
-	0x07, 0x85, 0x77, 0xE1, 0x02, 0xF7, 0x15, 0x23, 0x44, 0x22, 0x40, 0xB2, 0x49, 0x02, 0x44, 0x92,
-	0x80, 0x82, 0x01, 0x41, 0x84, 0x13, 0x45, 0x01, 0xF0, 0xEF, 0xA4, 0x01, 0x55, 0x83, 0xC9, 0xFF,
-	0x45, 0x01, 0x00, 0x04, 0x85, 0xC1, 0x05, 0xC2, 0xEC, 0x3F, 0xE0, 0xEF, 0x00, 0xA4, 0x10, 0x23,
-	0x00, 0x04, 0x55, 0x83, 0x05, 0xC2, 0x45, 0x01, 0xA0, 0xEF, 0x85, 0xC1, 0x10, 0x23, 0xF3, 0x5F,
-	0x55, 0x83, 0x00, 0xA4, 0x45, 0x01, 0x00, 0x04, 0x85, 0xC1, 0x05, 0xC2, 0xD3, 0xDF, 0xA0, 0xEF,
-	0x00, 0xA4, 0x10, 0x23, 0xF0, 0xEF, 0x45, 0x05, 0x55, 0x83, 0xC6, 0x3F, 0x45, 0x05, 0x00, 0x24,
-	0x85, 0xC1, 0x05, 0xC2, 0xE8, 0x7F, 0xE0, 0xEF, 0x00, 0xA4, 0x11, 0x23, 0x00, 0x24, 0x55, 0x83,
-	0x05, 0xC2, 0x45, 0x05, 0xA0, 0xEF, 0x85, 0xC1, 0x11, 0x23, 0xEF, 0x9F, 0x55, 0x83, 0x00, 0xA4,
-	0x45, 0x05, 0x00, 0x24, 0x85, 0xC1, 0x05, 0xC2, 0xD0, 0x1F, 0xA0, 0xEF, 0x00, 0xA4, 0x11, 0x23,
-	0x45, 0x09, 0xBF, 0xA5, 0xC2, 0x5F, 0xF0, 0xEF, 0xA4, 0x01, 0x84, 0x13, 0x00, 0x44, 0x55, 0x83,
-	0x05, 0xC2, 0x45, 0x09, 0xE0, 0xEF, 0x85, 0xC1, 0x12, 0x23, 0xE4, 0x5F, 0x55, 0x83, 0x00, 0xA4,
-	0x45, 0x09, 0x00, 0x44, 0x85, 0xC1, 0x05, 0xC2, 0xDB, 0xFF, 0xA0, 0xEF, 0x00, 0xA4, 0x12, 0x23,
-	0x00, 0x44, 0x57, 0x03, 0x81, 0x81, 0xA7, 0x83, 0x2C, 0xE7, 0x94, 0x23, 0xA9, 0xCF, 0xB0, 0xEF,
-	0xC0, 0xEF, 0x45, 0x01, 0x45, 0x05, 0xC9, 0xEF, 0xC9, 0x8F, 0xC0, 0xEF, 0x45, 0x01, 0xBD, 0xC5,
-	0xFE, 0x3F, 0xE0, 0xEF, 0x40, 0xB2, 0x44, 0x22, 0x49, 0x02, 0x44, 0x92, 0x01, 0x41, 0x45, 0x05,
-	0xFD, 0x3F, 0xE0, 0x6F, 0xD2, 0xCF, 0xD0, 0xEF, 0x40, 0xB2, 0x44, 0x22, 0x49, 0x02, 0x44, 0x92,
-	0xB0, 0x6F, 0x01, 0x41, 0xA0, 0xEF, 0xA6, 0x6F, 0x44, 0x22, 0xF7, 0x9F, 0x44, 0x92, 0x40, 0xB2,
-	0x01, 0x41, 0x49, 0x02, 0xB3, 0x0F, 0xB0, 0x6F, 0xD0, 0x8F, 0xD0, 0xEF, 0xA4, 0xCF, 0xB0, 0xEF,
-	0x98, 0x01, 0x8D, 0xA3, 0xA7, 0x03, 0xB5, 0xD5, 0x77, 0xE1, 0x81, 0x01, 0x16, 0x23, 0x07, 0x85,
-	0x9D, 0x23, 0x02, 0xF7, 0x93, 0x23, 0xA4, 0x01, 0x87, 0x93, 0xA6, 0x01, 0xA0, 0x23, 0xA7, 0x01,
-	0xA2, 0x23, 0x00, 0x07, 0x1B, 0x23, 0x00, 0x07, 0xA4, 0x23, 0x02, 0x07, 0x80, 0x82, 0xA6, 0x01,
-	0xC4, 0x22, 0x11, 0x41, 0xC6, 0x06, 0xC2, 0x26, 0x20, 0x01, 0xF7, 0xB7, 0xE0, 0x07, 0x84, 0x13,
-	0xE2, 0x07, 0xA0, 0x23, 0xD0, 0x58, 0x47, 0x09, 0x07, 0x10, 0x07, 0x13, 0xA2, 0x23, 0xC0, 0x38,
-	0x44, 0x8D, 0xE4, 0x07, 0x05, 0x13, 0xC0, 0x44, 0xF0, 0xEF, 0x06, 0x40, 0x07, 0x93, 0x89, 0x1F,
-	0xC0, 0x3C, 0x07, 0x20, 0xC0, 0x7C, 0x47, 0xA1, 0x44, 0x22, 0xC0, 0x44, 0x44, 0x92, 0x40, 0xB2,
-	0x06, 0x40, 0x05, 0x13, 0xF0, 0x6F, 0x01, 0x41, 0x11, 0x41, 0x87, 0x5F, 0xC2, 0x26, 0xC4, 0x22,
-	0xF7, 0xB7, 0xC6, 0x06, 0x84, 0x13, 0x20, 0x01, 0xA0, 0x23, 0xE0, 0x07, 0x47, 0x09, 0xE2, 0x07,
-	0x07, 0x13, 0xD0, 0x58, 0xC0, 0x38, 0x07, 0x10, 0xE4, 0x07, 0xA2, 0x23, 0xC0, 0x44, 0x44, 0x8D,
-	0x06, 0x40, 0x05, 0x13, 0x84, 0x7F, 0xF0, 0xEF, 0x07, 0x20, 0x07, 0x93, 0x47, 0xE1, 0xC0, 0x3C,
-	0xC0, 0x44, 0xC0, 0x7C, 0x40, 0xB2, 0x44, 0x22, 0x05, 0x13, 0x44, 0x92, 0x01, 0x41, 0x06, 0x40,
-	0x82, 0xBF, 0xF0, 0x6F, 0xC6, 0x06, 0x11, 0x41, 0xC2, 0x26, 0xC4, 0x22, 0x20, 0x01, 0xF4, 0x37,
-	0xE2, 0x04, 0x20, 0x23, 0x04, 0x13, 0x47, 0x89, 0xD0, 0x5C, 0xE0, 0x04, 0x07, 0x60, 0x07, 0x13,
-	0x44, 0x8D, 0xC0, 0x38, 0xC0, 0x44, 0xC0, 0x7C, 0x06, 0x40, 0x05, 0x13, 0xFF, 0xEF, 0xF0, 0xEF,
-	0x04, 0x50, 0x07, 0x93, 0x07, 0x93, 0xC0, 0x3C, 0xC0, 0x7C, 0x05, 0xB0, 0x05, 0x13, 0xC0, 0x44,
-	0xF0, 0xEF, 0x06, 0x40, 0x07, 0x93, 0xFE, 0x8F, 0xC0, 0x3C, 0x04, 0x40, 0xC0, 0x44, 0xC0, 0x64,
-	0x40, 0xB2, 0x44, 0x22, 0x05, 0x13, 0x44, 0x92, 0x01, 0x41, 0x06, 0x40, 0xFC, 0xEF, 0xF0, 0x6F,
-	0xC6, 0x06, 0x11, 0x41, 0xC2, 0x26, 0xC4, 0x22, 0x20, 0x01, 0xF4, 0x37, 0xE2, 0x04, 0x20, 0x23,
-	0x04, 0x13, 0x47, 0x89, 0xD0, 0x5C, 0xE0, 0x04, 0x07, 0x60, 0x07, 0x13, 0x44, 0x8D, 0xC0, 0x38,
-	0xC0, 0x44, 0xC0, 0x7C, 0x06, 0x40, 0x05, 0x13, 0xFA, 0x2F, 0xF0, 0xEF, 0x05, 0xA0, 0x07, 0x93,
-	0x07, 0x93, 0xC0, 0x3C, 0xC0, 0x7C, 0x05, 0xB0, 0x05, 0x13, 0xC0, 0x44, 0xF0, 0xEF, 0x06, 0x40,
-	0x07, 0x93, 0xF8, 0xCF, 0xC0, 0x3C, 0x05, 0x90, 0xC0, 0x44, 0xC0, 0x64, 0x40, 0xB2, 0x44, 0x22,
-	0x05, 0x13, 0x44, 0x92, 0x01, 0x41, 0x06, 0x40, 0xF7, 0x2F, 0xF0, 0x6F, 0xCE, 0x06, 0x11, 0x01,
-	0xCA, 0x26, 0xCC, 0x22, 0xC6, 0x4E, 0xC8, 0x4A, 0xF9, 0x37, 0xC4, 0x52, 0x04, 0x13, 0x20, 0x01,
-	0x20, 0x23, 0xE0, 0x09, 0x47, 0xA1, 0xE2, 0x09, 0x09, 0x93, 0xD0, 0x5C, 0x20, 0x23, 0x07, 0xC0,
-	0x07, 0x93, 0x05, 0x34, 0xC0, 0x7C, 0x0A, 0x40, 0x0A, 0xB0, 0x07, 0x93, 0x4A, 0x05, 0xC4, 0x3C,
-	0x26, 0x23, 0x44, 0x8D, 0xC0, 0x44, 0x05, 0x44, 0x06, 0x40, 0x05, 0x13, 0xF2, 0xEF, 0xF0, 0xEF,
-	0x0A, 0x50, 0x07, 0x93, 0x05, 0x34, 0x20, 0x23, 0x07, 0x93, 0xC0, 0x7C, 0xC4, 0x3C, 0x08, 0x20,
-	0x03, 0x00, 0x07, 0x93, 0xC0, 0x44, 0xC4, 0x7C, 0x06, 0x40, 0x05, 0x13, 0xF0, 0xEF, 0xF0, 0xEF,
-	0x0A, 0x20, 0x07, 0x93, 0x05, 0x34, 0x20, 0x23, 0x07, 0x93, 0xC0, 0x7C, 0xC4, 0x3C, 0x06, 0x70,
-	0xE4, 0x09, 0x26, 0x23, 0x05, 0x13, 0xC0, 0x44, 0xF0, 0xEF, 0x06, 0x40, 0x20, 0x23, 0xEF, 0x0F,
-	0x22, 0x23, 0x05, 0x34, 0x24, 0x23, 0xE4, 0x09, 0x26, 0x23, 0xE4, 0x09, 0xC0, 0x44, 0xE4, 0x09,
-	0x06, 0x40, 0x05, 0x13, 0xED, 0x6F, 0xF0, 0xEF, 0x20, 0x23, 0x47, 0x89, 0xD0, 0x5C, 0xE2, 0x09,
-	0x02, 0xF0, 0x07, 0x93, 0x22, 0x23, 0xC0, 0x3C, 0xC0, 0x44, 0x05, 0x44, 0x06, 0x40, 0x05, 0x13,
-	0xEB, 0xAF, 0xF0, 0xEF, 0x05, 0x40, 0x07, 0x93, 0xC0, 0x64, 0xC0, 0x3C, 0x05, 0x13, 0xC0, 0x44,
-	0xF0, 0xEF, 0x06, 0x40, 0x07, 0x93, 0xEA, 0x8F, 0xC0, 0x3C, 0x05, 0x50, 0x02, 0x20, 0x07, 0x93,
-	0xC0, 0x44, 0xC0, 0x7C, 0x06, 0x40, 0x05, 0x13, 0xE9, 0x2F, 0xF0, 0xEF, 0xC0, 0x3C, 0x47, 0xED,
-	0xC0, 0x44, 0xC0, 0x64, 0x06, 0x40, 0x05, 0x13, 0xE8, 0x2F, 0xF0, 0xEF, 0xC0, 0x3C, 0x47, 0xF1,
-	0xC0, 0x44, 0xC0, 0x64, 0x40, 0xF2, 0x44, 0x62, 0x49, 0x42, 0x44, 0xD2, 0x4A, 0x22, 0x49, 0xB2,
-	0x06, 0x40, 0x05, 0x13, 0xF0, 0x6F, 0x61, 0x05, 0x11, 0x01, 0xE6, 0x4F, 0xA7, 0x83, 0xCA, 0x26,
-	0xC8, 0x4A, 0x81, 0x01, 0xD7, 0x83, 0xCE, 0x06, 0xCC, 0x22, 0x04, 0x07, 0x07, 0xC2, 0xC6, 0x4E,
-	0x47, 0x05, 0x83, 0xC1, 0x26, 0xE7, 0x89, 0x63, 0x20, 0x01, 0xF4, 0x37, 0xE0, 0x04, 0x07, 0x93,
-	0xE2, 0x04, 0x20, 0x23, 0xD3, 0xD4, 0x46, 0x89, 0x07, 0x60, 0x06, 0x93, 0xC3, 0xF8, 0xC3, 0xB4,
-	0xA2, 0x23, 0x49, 0x8D, 0x05, 0x13, 0x01, 0x37, 0xF0, 0xEF, 0x06, 0x40, 0xA7, 0x83, 0xE2, 0x0F,
-	0x97, 0x83, 0x81, 0x81, 0xCF, 0xDD, 0x05, 0xE7, 0x07, 0xA0, 0x07, 0x93, 0xE4, 0xF4, 0x20, 0x23,
-	0x08, 0x70, 0x07, 0x93, 0xE4, 0xF4, 0x22, 0x23, 0xE1, 0x34, 0x22, 0x23, 0x06, 0x40, 0x05, 0x13,
-	0xDF, 0xAF, 0xF0, 0xEF, 0x20, 0x01, 0xF7, 0xB7, 0xE0, 0x07, 0x84, 0x13, 0x07, 0x60, 0x07, 0x13,
-	0xA2, 0x23, 0xC0, 0x38, 0x49, 0x8D, 0xE4, 0x07, 0x01, 0x34, 0x22, 0x23, 0x06, 0x40, 0x05, 0x13,
-	0xDD, 0xAF, 0xF0, 0xEF, 0xD0, 0x1C, 0x47, 0x89, 0x07, 0x93, 0xD0, 0x5C, 0xC0, 0x3C, 0x0F, 0x50,
-	0x01, 0x34, 0x22, 0x23, 0x20, 0x01, 0xF4, 0x37, 0xE0, 0x04, 0x27, 0x83, 0xFF, 0xED, 0x8B, 0x85,
-	0x06, 0x40, 0x05, 0x13, 0xDB, 0x6F, 0xF0, 0xEF, 0xE4, 0x44, 0x27, 0x83, 0x81, 0x81, 0xA7, 0x03,
-	0x05, 0xC0, 0x06, 0x93, 0x83, 0xC1, 0x07, 0xC2, 0x00, 0xF7, 0x14, 0x23, 0x04, 0xD7, 0x9B, 0x63,
-	0x82, 0x01, 0xA7, 0x83, 0x9B, 0x23, 0x47, 0x15, 0xA7, 0x83, 0x02, 0xE7, 0x07, 0x13, 0x81, 0x81,
-	0x95, 0x23, 0x0C, 0x90, 0x47, 0x31, 0x00, 0xE7, 0x02, 0xE7, 0x9F, 0x23, 0x40, 0x00, 0x27, 0x37,
-	0xA7, 0x83, 0xDF, 0x98, 0x47, 0x05, 0x81, 0x01, 0x04, 0x07, 0xD7, 0x83, 0x83, 0xC1, 0x07, 0xC2,
-	0x1E, 0xE7, 0x8A, 0x63, 0x40, 0xF2, 0x44, 0x62, 0x49, 0x42, 0x44, 0xD2, 0x61, 0x05, 0x49, 0xB2,
-	0xD3, 0x5F, 0xF0, 0x6F, 0x07, 0xA0, 0x07, 0x93, 0xE4, 0xF4, 0x20, 0x23, 0x08, 0x10, 0x07, 0x93,
-	0x06, 0x93, 0xB7, 0x91, 0x96, 0x63, 0x04, 0x10, 0xA7, 0x83, 0x00, 0xD7, 0x47, 0x1D, 0x82, 0x01,
-	0x46, 0xA5, 0xB7, 0x5D, 0x04, 0xD7, 0x94, 0x63, 0x82, 0x01, 0xA7, 0x83, 0x9B, 0x23, 0x47, 0x39,
-	0xA7, 0x83, 0x02, 0xE7, 0x07, 0x13, 0x81, 0x81, 0x95, 0x23, 0x0C, 0x40, 0x47, 0x31, 0x00, 0xE7,
-	0x02, 0xE7, 0x9F, 0x23, 0x40, 0x00, 0x27, 0x37, 0xA7, 0x83, 0xDF, 0x98, 0x47, 0x05, 0x81, 0x01,
-	0x04, 0x07, 0xD7, 0x83, 0x83, 0xC1, 0x07, 0xC2, 0x18, 0xE7, 0x86, 0x63, 0x40, 0xF2, 0x44, 0x62,
-	0x49, 0x42, 0x44, 0xD2, 0x61, 0x05, 0x49, 0xB2, 0xD8, 0x5F, 0xF0, 0x6F, 0x20, 0x23, 0x47, 0x89,
-	0x22, 0x23, 0xE2, 0x04, 0x17, 0x83, 0xE2, 0xF4, 0xC7, 0xDD, 0x05, 0xE7, 0x07, 0x00, 0x07, 0x93,
-	0xE4, 0xF4, 0x20, 0x23, 0x22, 0x23, 0x47, 0xC5, 0x47, 0x8D, 0xE4, 0xF4, 0xE0, 0xF4, 0x22, 0x23,
-	0x06, 0x40, 0x05, 0x13, 0xCC, 0x6F, 0xF0, 0xEF, 0x20, 0x01, 0xF7, 0xB7, 0xE0, 0x07, 0x87, 0x93,
-	0xD3, 0x98, 0x47, 0x09, 0x07, 0x13, 0xD3, 0xD8, 0xC3, 0xB8, 0x08, 0xF0, 0xC3, 0xD8, 0x47, 0x0D,
-	0x20, 0x01, 0xF4, 0x37, 0xE0, 0x04, 0x27, 0x83, 0xFF, 0xED, 0x8B, 0x85, 0x06, 0x40, 0x05, 0x13,
-	0xC9, 0xAF, 0xF0, 0xEF, 0xE4, 0x44, 0x27, 0x83, 0x81, 0x81, 0xA7, 0x03, 0x06, 0xC0, 0x06, 0x93,
-	0x83, 0xC1, 0x07, 0xC2, 0x00, 0xF7, 0x14, 0x23, 0xE4, 0x04, 0x22, 0x23, 0x04, 0xD7, 0x9D, 0x63,
-	0x82, 0x01, 0xA7, 0x83, 0x9B, 0x23, 0x47, 0x11, 0xA7, 0x83, 0x02, 0xE7, 0x07, 0x13, 0x81, 0x81,
-	0x95, 0x23, 0x0A, 0x20, 0x47, 0x31, 0x00, 0xE7, 0x02, 0xE7, 0x9F, 0x23, 0x07, 0x13, 0x67, 0x09,
-	0x9C, 0x23, 0x4B, 0x87, 0xA7, 0x83, 0x02, 0xE7, 0x47, 0x05, 0x81, 0x01, 0x04, 0x07, 0xD7, 0x83,
-	0x83, 0xC1, 0x07, 0xC2, 0x0C, 0xE7, 0x88, 0x63, 0x40, 0xF2, 0x44, 0x62, 0x49, 0x42, 0x44, 0xD2,
-	0x61, 0x05, 0x49, 0xB2, 0xBC, 0x7F, 0xF0, 0x6F, 0x07, 0x00, 0x07, 0x93, 0xE4, 0xF4, 0x20, 0x23,
-	0x03, 0x10, 0x07, 0x93, 0x06, 0x93, 0xBF, 0x89, 0x96, 0x63, 0x06, 0xA0, 0xA7, 0x83, 0x04, 0xD7,
-	0x47, 0x09, 0x82, 0x01, 0x02, 0xE7, 0x9B, 0x23, 0x81, 0x81, 0xA7, 0x83, 0x0A, 0x20, 0x07, 0x13,
-	0x00, 0xE7, 0x95, 0x23, 0x9F, 0x23, 0x47, 0x31, 0x27, 0x37, 0x02, 0xE7, 0x07, 0x13, 0x40, 0x00,
-	0xDF, 0x98, 0x4B, 0x87, 0x81, 0x01, 0xA7, 0x83, 0xD7, 0x83, 0x47, 0x05, 0x07, 0xC2, 0x04, 0x07,
-	0x89, 0x63, 0x83, 0xC1, 0x44, 0x62, 0x06, 0xE7, 0x44, 0xD2, 0x40, 0xF2, 0x49, 0xB2, 0x49, 0x42,
-	0xF0, 0x6F, 0x61, 0x05, 0xA7, 0x83, 0xB1, 0xFF, 0x47, 0x31, 0x82, 0x01, 0x03, 0x67, 0xD7, 0x83,
-	0x07, 0xC2, 0x17, 0xF9, 0x6A, 0xE3, 0x83, 0xC1, 0x87, 0x37, 0xF4, 0xF7, 0x07, 0x8A, 0x20, 0x00,
-	0x15, 0xC7, 0x07, 0x13, 0x43, 0x9C, 0x97, 0xBA, 0xA7, 0x83, 0x87, 0x82, 0x06, 0x93, 0x81, 0x81,
-	0xA7, 0x03, 0x0D, 0xE0, 0x95, 0x23, 0x81, 0x01, 0x46, 0xB1, 0x00, 0xD7, 0x02, 0xD7, 0x9F, 0x23,
-	0x40, 0x00, 0x26, 0xB7, 0x57, 0x83, 0xDF, 0x94, 0x47, 0x05, 0x04, 0x07, 0x83, 0xC1, 0x07, 0xC2,
-	0x00, 0xE7, 0x8A, 0x63, 0x40, 0xF2, 0x44, 0x62, 0x49, 0x42, 0x44, 0xD2, 0x61, 0x05, 0x49, 0xB2,
-	0xBB, 0x1F, 0xF0, 0x6F, 0x44, 0x62, 0x40, 0xF2, 0x49, 0x42, 0x44, 0xD2, 0x61, 0x05, 0x49, 0xB2,
-	0xD7, 0x83, 0x80, 0x82, 0x11, 0x41, 0xA5, 0xA1, 0x07, 0xC2, 0xC2, 0x26, 0xC4, 0x22, 0xC6, 0x06,
-	0x83, 0xC1, 0xC0, 0x4A, 0x2E, 0xD0, 0x07, 0x13, 0x00, 0xF7, 0x6F, 0x63, 0x81, 0x01, 0xA7, 0x03,
-	0x03, 0x47, 0x57, 0x83, 0x83, 0xC1, 0x07, 0xC2, 0x40, 0xB2, 0xEF, 0xBD, 0x44, 0x92, 0x44, 0x22,
-	0x01, 0x41, 0x49, 0x02, 0xA7, 0x83, 0x80, 0x82, 0x67, 0x21, 0x81, 0x01, 0xD6, 0x83, 0x07, 0x05,
-	0x06, 0xC2, 0x02, 0xC7, 0x9B, 0xE3, 0x82, 0xC1, 0x77, 0x61, 0xFC, 0xE6, 0x96, 0x23, 0x07, 0x41,
-	0x47, 0x05, 0x02, 0xE7, 0x02, 0xE7, 0x9A, 0x23, 0xDD, 0x2F, 0x90, 0xEF, 0x49, 0x11, 0x44, 0x01,
-	0x80, 0x41, 0x04, 0x42, 0xC0, 0xEF, 0x85, 0x22, 0x05, 0x13, 0xF3, 0xAF, 0x05, 0x42, 0x00, 0x84,
-	0x04, 0x05, 0x81, 0x41, 0xF2, 0xCF, 0xC0, 0xEF, 0x01, 0x04, 0x17, 0x93, 0x04, 0x42, 0x83, 0xC1,
-	0x9F, 0xE3, 0x84, 0x41, 0x46, 0x15, 0xFD, 0x27, 0x45, 0x01, 0x45, 0x81, 0xAC, 0xBF, 0xC0, 0xEF,
-	0x45, 0x81, 0x46, 0x15, 0xC0, 0xEF, 0x45, 0x05, 0x46, 0x15, 0xAC, 0x1F, 0x45, 0x09, 0x45, 0x81,
-	0xAB, 0x7F, 0xC0, 0xEF, 0x57, 0x83, 0xBF, 0xA5, 0x47, 0x05, 0x04, 0x07, 0x83, 0xC1, 0x07, 0xC2,
-	0x06, 0xE7, 0x9B, 0x63, 0x20, 0x01, 0xF7, 0xB7, 0xFC, 0x07, 0x87, 0x93, 0x82, 0x01, 0xA7, 0x03,
-	0x56, 0x83, 0x46, 0x21, 0xA7, 0x03, 0x03, 0x67, 0x63, 0x63, 0x81, 0x81, 0x46, 0x19, 0x06, 0xD6,
-	0x0A, 0xD6, 0x64, 0x63, 0x81, 0x63, 0x46, 0x15, 0x47, 0x94, 0x0A, 0xC6, 0x06, 0xA2, 0x43, 0xD0,
-	0x18, 0x23, 0x8E, 0xD1, 0x53, 0x94, 0x14, 0xD7, 0x06, 0xA2, 0x4F, 0xD0, 0x18, 0x23, 0x8E, 0xD1,
-	0x4B, 0x94, 0x18, 0xD7, 0x06, 0xA2, 0x47, 0xD0, 0x18, 0x23, 0x8E, 0xD1, 0x57, 0x94, 0x24, 0xD7,
-	0x06, 0xA2, 0x53, 0xD0, 0x18, 0x23, 0x8E, 0xD1, 0x5B, 0x94, 0x28, 0xD7, 0x06, 0xA2, 0x57, 0xD0,
-	0x18, 0x23, 0x8E, 0xD1, 0x4F, 0x94, 0x38, 0xD7, 0x97, 0x93, 0x4B, 0xD0, 0x8F, 0xD1, 0x00, 0x86,
-	0x34, 0xF7, 0x18, 0x23, 0xF7, 0xB7, 0xB7, 0x19, 0x87, 0x93, 0x20, 0x01, 0xB7, 0x79, 0xE4, 0x07,
-	0x94, 0xE3, 0x46, 0x39, 0x53, 0x94, 0xFA, 0xC6, 0x06, 0xA2, 0x4F, 0xD0, 0x13, 0x23, 0x8E, 0xD1,
-	0x57, 0x94, 0x1A, 0xD7, 0x06, 0xA2, 0x53, 0xD0, 0x13, 0x23, 0x8E, 0xD1, 0x5B, 0x94, 0x2A, 0xD7,
-	0x06, 0xA2, 0x57, 0xD0, 0x13, 0x23, 0x8E, 0xD1, 0x47, 0x94, 0x3A, 0xD7, 0x06, 0xA2, 0x43, 0xD0,
-	0x14, 0x23, 0x8E, 0xD1, 0x4B, 0x94, 0x1A, 0xD7, 0x06, 0xA2, 0x47, 0xD0, 0x14, 0x23, 0x8E, 0xD1,
-	0x4F, 0x94, 0x2A, 0xD7, 0xA0, 0x89, 0x4B, 0xD0, 0x53, 0x90, 0x4F, 0xD4, 0x8E, 0xD1, 0x06, 0xA2,
-	0x1A, 0xD7, 0x13, 0x23, 0x57, 0x90, 0x53, 0xD4, 0x8E, 0xD1, 0x06, 0xA2, 0x2A, 0xD7, 0x13, 0x23,
-	0x5B, 0x90, 0x57, 0xD4, 0x8E, 0xD1, 0x06, 0xA2, 0x3A, 0xD7, 0x13, 0x23, 0x47, 0x90, 0x43, 0xD4,
-	0x8E, 0xD1, 0x06, 0xA2, 0x1A, 0xD7, 0x14, 0x23, 0x4B, 0x90, 0x47, 0xD4, 0x8E, 0xD1, 0x06, 0xA2,
-	0x2A, 0xD7, 0x14, 0x23, 0x4F, 0x90, 0x4B, 0xD4, 0x00, 0x86, 0x97, 0x93, 0x14, 0x23, 0x8F, 0xD1,
-	0xB5, 0xA5, 0x3A, 0xF7, 0x81, 0x01, 0xA5, 0x83, 0x03, 0x65, 0xD7, 0x83, 0x83, 0xC1, 0x07, 0xC2,
-	0x87, 0x93, 0xE7, 0xDD, 0xD6, 0x83, 0xA6, 0x61, 0x86, 0x13, 0x00, 0x07, 0x06, 0x85, 0xA7, 0x01,
-	0x86, 0xC1, 0x06, 0xC2, 0x00, 0xD7, 0x90, 0x23, 0x81, 0x81, 0xA5, 0x03, 0x28, 0x03, 0x42, 0x1C,
-	0x17, 0x03, 0x00, 0x46, 0x97, 0x3E, 0x15, 0x05, 0x25, 0x05, 0x17, 0x83, 0x97, 0xC2, 0xC2, 0x18,
-	0x06, 0x13, 0xC2, 0x5C, 0x9B, 0x63, 0x02, 0x00, 0x86, 0x93, 0x00, 0xC6, 0x87, 0x15, 0xA6, 0xC1,
-	0x90, 0x23, 0x87, 0x95, 0x91, 0x23, 0x00, 0xE6, 0x80, 0x82, 0x00, 0xF6, 0x03, 0xF0, 0x06, 0x13,
-	0x04, 0xD6, 0x5F, 0x63, 0x87, 0x99, 0x87, 0x19, 0x07, 0xC2, 0x07, 0x42, 0xA6, 0x81, 0x86, 0x93,
-	0x87, 0xC1, 0x87, 0x41, 0x00, 0xE6, 0x90, 0x23, 0x00, 0xF6, 0x91, 0x23, 0xA6, 0xC1, 0x86, 0x93,
-	0x00, 0x06, 0x96, 0x03, 0x07, 0x25, 0x8F, 0x11, 0x67, 0x63, 0x46, 0x49, 0x97, 0x03, 0x02, 0xE6,
-	0x8F, 0x99, 0x00, 0x26, 0x61, 0x63, 0x07, 0xA5, 0x47, 0x85, 0x02, 0xF6, 0x02, 0xF5, 0x9B, 0x23,
-	0x02, 0x85, 0xD7, 0x83, 0x07, 0xC2, 0x67, 0x21, 0x9A, 0x63, 0x83, 0xC1, 0x1C, 0x23, 0x00, 0xE7,
-	0x1C, 0x23, 0x16, 0x05, 0x80, 0x82, 0x26, 0x05, 0x9B, 0x23, 0x47, 0x89, 0x80, 0x82, 0x02, 0xF5,
-	0x20, 0x00, 0xA7, 0x37, 0x81, 0x81, 0xA7, 0x83, 0xF5, 0x07, 0x13, 0x03, 0x68, 0x89, 0x65, 0x85,
-	0x40, 0x68, 0x88, 0xB3, 0x15, 0x07, 0x87, 0x13, 0xE3, 0x81, 0x86, 0x13, 0xE2, 0xC1, 0x86, 0x93,
-	0x45, 0x07, 0x88, 0x13, 0x6B, 0x95, 0x8E, 0x93, 0x94, 0x75, 0x8E, 0x13, 0x15, 0x03, 0x42, 0x1C,
-	0x07, 0x13, 0x05, 0x67, 0x07, 0xB3, 0x10, 0x07, 0x97, 0xAE, 0x02, 0xF3, 0x97, 0xAA, 0x87, 0xB5,
-	0x02, 0xF8, 0x85, 0x33, 0x85, 0x35, 0x95, 0x2E, 0xF0, 0xA7, 0x10, 0x23, 0x42, 0x9C, 0xC2, 0x1C,
-	0xF5, 0x87, 0x15, 0x03, 0x87, 0xB3, 0x06, 0x11, 0x97, 0xAE, 0x03, 0xD7, 0x97, 0xAA, 0x87, 0xB5,
-	0x03, 0xC7, 0x85, 0x33, 0x85, 0x35, 0x95, 0x2E, 0xF4, 0xA7, 0x10, 0x23, 0x06, 0x91, 0xC2, 0x9C,
-	0xFB, 0x07, 0x1E, 0xE3, 0x47, 0x85, 0x80, 0x82, 0x00, 0xC7, 0x96, 0x33, 0xFF, 0xF6, 0x07, 0x13,
-	0x20, 0x01, 0xF7, 0xB7, 0xE0, 0x07, 0x87, 0x93, 0xD3, 0x98, 0x07, 0x06, 0xC3, 0xAC, 0xD3, 0xD0,
-	0xC3, 0xD8, 0x47, 0x0D, 0xC7, 0xB3, 0x80, 0x82, 0x8B, 0x8D, 0x00, 0xA5, 0x00, 0xC5, 0x06, 0xB3,
-	0x47, 0x8D, 0xE7, 0x81, 0x00, 0xC7, 0xEE, 0x63, 0x71, 0x63, 0x87, 0xAA, 0xC7, 0x03, 0x06, 0xD5,
-	0x07, 0x85, 0x00, 0x05, 0x8F, 0xA3, 0x05, 0x85, 0xEA, 0xE3, 0xFE, 0xE7, 0x80, 0x82, 0xFE, 0xD7,
-	0x00, 0x35, 0x77, 0x13, 0xCB, 0x11, 0x87, 0xAA, 0x00, 0x05, 0xC7, 0x03, 0x05, 0x85, 0x07, 0x85,
-	0xFE, 0xE7, 0x8F, 0xA3, 0x00, 0x37, 0xF7, 0x13, 0xF7, 0x13, 0xB7, 0xFD, 0x08, 0x33, 0xFF, 0xC6,
-	0x06, 0x13, 0x40, 0xF7, 0x44, 0x63, 0x02, 0x00, 0x88, 0x2E, 0x03, 0x06, 0x6B, 0x63, 0x86, 0x3E,
-	0x88, 0x13, 0x06, 0xE6, 0x46, 0x01, 0xFF, 0xD7, 0x01, 0x07, 0x66, 0x63, 0x8F, 0x1D, 0x07, 0x0D,
-	0xFF, 0xC7, 0x76, 0x13, 0x95, 0xB2, 0x97, 0xB2, 0xFA, 0xD7, 0xE3, 0xE3, 0xA3, 0x83, 0x80, 0x82,
-	0xA2, 0x83, 0x00, 0x05, 0xAF, 0x83, 0x00, 0x45, 0xAF, 0x03, 0x00, 0x85, 0xAE, 0x83, 0x00, 0xC5,
-	0xAE, 0x03, 0x01, 0x05, 0xA3, 0x03, 0x01, 0x45, 0xA8, 0x83, 0x01, 0x85, 0xA0, 0x23, 0x01, 0xC5,
-	0xA2, 0x23, 0x00, 0x77, 0xA8, 0x03, 0x00, 0x57, 0xA4, 0x23, 0x02, 0x05, 0xA6, 0x23, 0x01, 0xF7,
-	0xA8, 0x23, 0x01, 0xE7, 0xAA, 0x23, 0x01, 0xD7, 0xAC, 0x23, 0x01, 0xC7, 0xAE, 0x23, 0x00, 0x67,
-	0x87, 0x93, 0x01, 0x17, 0x85, 0x93, 0x02, 0x47, 0xAE, 0x23, 0x02, 0x45, 0x08, 0x33, 0xFF, 0x07,
-	0xB7, 0x51, 0x40, 0xF7, 0x00, 0x08, 0x28, 0x83, 0x08, 0x11, 0x06, 0x11, 0xFF, 0x16, 0x2E, 0x23,
-	0x43, 0x3D, 0xBF, 0xBD, 0x73, 0x63, 0x87, 0x2A, 0x77, 0x93, 0x02, 0xC3, 0xEF, 0xBD, 0x00, 0xF7,
-	0x76, 0x93, 0xE5, 0xAD, 0x8A, 0x3D, 0xFF, 0x06, 0xC3, 0x0C, 0x96, 0xBA, 0xC7, 0x0C, 0xC3, 0x4C,
-	0x07, 0x41, 0xC7, 0x4C, 0xFE, 0xD7, 0x6B, 0xE3, 0x80, 0x82, 0xE2, 0x11, 0x40, 0xC3, 0x06, 0xB3,
-	0x02, 0x97, 0x06, 0x8A, 0x96, 0x96, 0x00, 0x00, 0x00, 0xA6, 0x80, 0x67, 0x00, 0xB7, 0x07, 0x23,
-	0x00, 0xB7, 0x06, 0xA3, 0x00, 0xB7, 0x06, 0x23, 0x00, 0xB7, 0x05, 0xA3, 0x00, 0xB7, 0x05, 0x23,
-	0x00, 0xB7, 0x04, 0xA3, 0x00, 0xB7, 0x04, 0x23, 0x00, 0xB7, 0x03, 0xA3, 0x00, 0xB7, 0x03, 0x23,
-	0x00, 0xB7, 0x02, 0xA3, 0x00, 0xB7, 0x02, 0x23, 0x00, 0xB7, 0x01, 0xA3, 0x00, 0xB7, 0x01, 0x23,
-	0x00, 0xB7, 0x00, 0xA3, 0x00, 0xB7, 0x00, 0x23, 0xF5, 0x93, 0x80, 0x82, 0x96, 0x93, 0x0F, 0xF5,
-	0x8D, 0xD5, 0x00, 0x85, 0x01, 0x05, 0x96, 0x93, 0xB7, 0x61, 0x8D, 0xD5, 0x00, 0x27, 0x96, 0x93,
-	0x00, 0x00, 0x02, 0x97, 0x82, 0x86, 0x96, 0x96, 0xFA, 0x86, 0x80, 0xE7, 0x17, 0xC1, 0x80, 0x96,
-	0x96, 0x3E, 0x8F, 0x1D, 0xF8, 0xC3, 0x74, 0xE3, 0x87, 0x93, 0xB7, 0xA5, 0x07, 0xB3, 0x82, 0x41,
-	0xB7, 0x93, 0x40, 0xF5, 0x07, 0xBA, 0x00, 0x17, 0x01, 0x05, 0x97, 0x13, 0x66, 0x8D, 0xC5, 0x99,
-	0x33, 0x36, 0x86, 0x93, 0xC3, 0x98, 0x97, 0x36, 0x66, 0x95, 0xBF, 0xFD, 0x55, 0x56, 0x86, 0x93,
-	0x11, 0x41, 0xBF, 0xD5, 0x41, 0x1C, 0xC6, 0x06, 0x97, 0x82, 0x43, 0x9C, 0xC6, 0x06, 0x11, 0x41,
-	0x85, 0x13, 0x85, 0xAA, 0xF0, 0xEF, 0x82, 0x41, 0x85, 0xAA, 0xFE, 0xDF, 0x46, 0x01, 0x46, 0x81,
-	0xA8, 0x7D, 0x45, 0x01, 0xC4, 0x22, 0x11, 0x41, 0x07, 0x97, 0xC6, 0x06, 0x87, 0x93, 0x00, 0x00,
-	0x84, 0x2A, 0x12, 0xA7, 0x45, 0x81, 0xC3, 0x99, 0x15, 0x17, 0x2A, 0x31, 0x25, 0x03, 0x00, 0x00,
-	0x55, 0x1C, 0xB4, 0x65, 0x97, 0x82, 0xC3, 0x91, 0x22, 0xF9, 0x85, 0x22, 0xC4, 0x22, 0x11, 0x41,
-	0x14, 0x17, 0xC2, 0x26, 0x04, 0x13, 0x00, 0x00, 0x14, 0x97, 0xB3, 0x24, 0x84, 0x93, 0x00, 0x00,
-	0x8C, 0x05, 0xB2, 0xA4, 0x84, 0x09, 0xC6, 0x06, 0x40, 0xB2, 0xE4, 0x11, 0x44, 0x92, 0x44, 0x22,
-	0x80, 0x82, 0x01, 0x41, 0x17, 0x93, 0x14, 0x7D, 0x97, 0xA6, 0x00, 0x24, 0x97, 0x82, 0x43, 0x9C,
-	0x11, 0x41, 0xB7, 0xE5, 0xC2, 0x26, 0xC4, 0x22, 0x00, 0x00, 0x14, 0x17, 0xAF, 0xC4, 0x04, 0x13,
-	0x00, 0x00, 0x14, 0x97, 0xAF, 0x44, 0x84, 0x93, 0xC0, 0x4A, 0x8C, 0x81, 0x84, 0x89, 0xC6, 0x06,
-	0x15, 0x63, 0x49, 0x01, 0x14, 0x17, 0x02, 0x99, 0x04, 0x13, 0x00, 0x00, 0x14, 0x97, 0xAD, 0xE4,
-	0x84, 0x93, 0x00, 0x00, 0x8C, 0x81, 0xAD, 0x64, 0x49, 0x01, 0x84, 0x89, 0x00, 0x99, 0x1D, 0x63,
-	0x44, 0x22, 0x40, 0xB2, 0x49, 0x02, 0x44, 0x92, 0x80, 0x82, 0x01, 0x41, 0x09, 0x05, 0x40, 0x1C,
-	0x97, 0x82, 0x04, 0x11, 0x40, 0x1C, 0xB7, 0xF9, 0x04, 0x11, 0x09, 0x05, 0xBF, 0xF9, 0x97, 0x82,
-	0x85, 0x13, 0x88, 0xAA, 0x41, 0x1C, 0xA7, 0x81, 0x87, 0x13, 0xEF, 0x81, 0xC1, 0x18, 0xE4, 0x41,
-	0x00, 0x00, 0x05, 0x13, 0xC5, 0x09, 0x87, 0xBA, 0x24, 0x23, 0x41, 0x1C, 0x87, 0xBA, 0x08, 0xF7,
-	0x48, 0x7D, 0x43, 0xD8, 0x46, 0x63, 0x55, 0x7D, 0x8D, 0x63, 0x04, 0xE8, 0xA8, 0x03, 0x02, 0x08,
-	0x00, 0x63, 0x08, 0x87, 0x15, 0x13, 0x04, 0x08, 0x95, 0x42, 0x00, 0x27, 0x23, 0x03, 0xC1, 0x10,
-	0x46, 0x05, 0x10, 0x08, 0x00, 0xE6, 0x16, 0x33, 0x00, 0xC3, 0x63, 0x33, 0x10, 0x68, 0x20, 0x23,
-	0x08, 0xD5, 0x20, 0x23, 0x97, 0x63, 0x46, 0x89, 0x26, 0x83, 0x00, 0xD8, 0x8E, 0x55, 0x10, 0x48,
-	0x10, 0xC8, 0x22, 0x23, 0x00, 0x17, 0x06, 0x93, 0xC3, 0xD4, 0x07, 0x0A, 0xC7, 0x8C, 0x97, 0xBA,
-	0x80, 0x82, 0x45, 0x01, 0xCA, 0x56, 0x71, 0x79, 0xC6, 0x5E, 0xC8, 0x5A, 0xD6, 0x06, 0xC4, 0x62,
-	0xD2, 0x26, 0xD4, 0x22, 0xCE, 0x4E, 0xD0, 0x4A, 0xC2, 0x66, 0xCC, 0x52, 0x8A, 0xAE, 0x8B, 0x2A,
-	0xA7, 0x81, 0x8B, 0x93, 0xA4, 0x83, 0x4C, 0x05, 0xCC, 0x81, 0x00, 0x0B, 0xA9, 0x83, 0x40, 0xC0,
-	0x09, 0x13, 0x08, 0x84, 0x04, 0x0A, 0xFF, 0xF4, 0x00, 0x89, 0x8A, 0x33, 0x5F, 0x63, 0x94, 0x26,
-	0x50, 0xB2, 0x00, 0x09, 0x54, 0x92, 0x54, 0x22, 0x49, 0xF2, 0x59, 0x02, 0x4A, 0xD2, 0x4A, 0x62,
-	0x4B, 0xB2, 0x4B, 0x42, 0x4C, 0x92, 0x4C, 0x22, 0x80, 0x82, 0x61, 0x45, 0x00, 0x0A, 0x8C, 0x63,
-	0x00, 0x09, 0x96, 0x63, 0x1A, 0x71, 0x19, 0x7D, 0xBF, 0xD1, 0x14, 0x71, 0x07, 0xCA, 0x27, 0x83,
-	0xFF, 0x57, 0x9A, 0xE3, 0x40, 0x5C, 0x40, 0xD8, 0x18, 0x63, 0x17, 0x7D, 0xA2, 0x23, 0x03, 0x27,
-	0xD3, 0xED, 0x01, 0x24, 0x00, 0x44, 0xAC, 0x83, 0x00, 0x09, 0x88, 0x63, 0x10, 0x09, 0xA6, 0x83,
-	0x01, 0x2C, 0x17, 0x33, 0xEE, 0x89, 0x8E, 0xF9, 0x40, 0xD8, 0x97, 0x82, 0x00, 0x0B, 0xA7, 0x83,
-	0xF9, 0x97, 0x13, 0xE3, 0xFC, 0xF4, 0x80, 0xE3, 0x22, 0x23, 0xBF, 0xBD, 0xBF, 0xD1, 0x00, 0x04,
-	0x10, 0x49, 0xA6, 0x83, 0xFF, 0xCA, 0x25, 0x83, 0xE7, 0x01, 0x8F, 0x75, 0x97, 0x82, 0x85, 0x5A,
-	0x85, 0x2E, 0xBF, 0xE9, 0xBF, 0xD1, 0x97, 0x82, 0xC6, 0x06, 0x11, 0x41, 0xDF, 0x1F, 0xF0, 0xEF,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x20, 0x00, 0x17, 0x42, 0x20, 0x00, 0x17, 0x9A, 0x20, 0x00, 0x17, 0xCA, 0x20, 0x00, 0x18, 0x02,
-	0x20, 0x00, 0x17, 0x58, 0x20, 0x00, 0x23, 0x9A, 0x20, 0x00, 0x26, 0x16, 0x20, 0x00, 0x27, 0x6E,
-	0x20, 0x00, 0x28, 0x48, 0x20, 0x00, 0x2A, 0x28, 0x20, 0x00, 0x2A, 0xF6, 0x20, 0x00, 0x2C, 0x04,
-	0x20, 0x00, 0x2D, 0x2A, 0x20, 0x00, 0x2E, 0x08, 0x20, 0x00, 0x25, 0xAC, 0x00, 0x0F, 0x9A, 0x54,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xD6, 0x00, 0x00, 0x32, 0xD6, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x1F, 0xEE, 0x24, 0xFF, 0xF0, 0x11, 0x36, 0xFF, 0xFF, 0xF7, 0x66, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x08, 0x9A, 0x00, 0x1F, 0xFF, 0x79, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x07, 0x4E, 0x20, 0x00, 0x02, 0x3C,
-	0x20, 0x00, 0x03, 0x5A, 0x20, 0x00, 0x03, 0x60, 0x20, 0x00, 0x03, 0x66, 0x20, 0x00, 0x03, 0x8E,
-	0x20, 0x00, 0x03, 0xCE, 0x20, 0x00, 0x07, 0x6C, 0x20, 0x00, 0x07, 0x6C, 0x20, 0x00, 0x07, 0x6C,
-	0x20, 0x00, 0x04, 0x96, 0x20, 0x00, 0x05, 0xF0, 0x20, 0x00, 0x06, 0xD8, 0x20, 0x00, 0x07, 0x12,
-	0x20, 0x00, 0x07, 0x6C, 0x20, 0x00, 0x07, 0x5A, 0x20, 0x00, 0x53, 0x7E, 0x20, 0x00, 0x53, 0xC2,
-	0x20, 0x00, 0x53, 0xC8, 0x20, 0x00, 0x53, 0xCE, 0x20, 0x00, 0x53, 0xD4, 0x20, 0x00, 0x53, 0xDA,
-	0x20, 0x00, 0x69, 0xD8, 0x20, 0x00, 0x6A, 0x2A, 0x20, 0x00, 0x6A, 0x5E, 0x20, 0x00, 0x6A, 0xAA,
-	0x20, 0x00, 0x6A, 0xE4, 0x20, 0x00, 0x6B, 0x62, 0x20, 0x00, 0x6B, 0xAE, 0x20, 0x00, 0x6A, 0xD8,
-	0x20, 0x00, 0x6B, 0xC4, 0x20, 0x00, 0x6B, 0xD6, 0x20, 0x00, 0x6A, 0xD8, 0x20, 0x00, 0x6B, 0xC4,
-	0x20, 0x00, 0x6A, 0xD8, 0x20, 0x00, 0x6A, 0xD8, 0x20, 0x00, 0x6B, 0xE8, 0x20, 0x00, 0x70, 0xC8,
-	0x20, 0x00, 0x70, 0x6A, 0x20, 0x00, 0x70, 0x6A, 0x20, 0x00, 0x6F, 0x4A, 0x20, 0x00, 0x70, 0x6A,
-	0x20, 0x00, 0x6F, 0x4A, 0x20, 0x00, 0x71, 0x2A, 0x20, 0x00, 0x70, 0x6A, 0x20, 0x00, 0x70, 0x6A,
-	0x20, 0x00, 0x70, 0x6A, 0x20, 0x00, 0x70, 0x6A, 0x20, 0x00, 0x70, 0x6A, 0x20, 0x00, 0x6F, 0xB2,
-	0x20, 0x00, 0x81, 0x98, 0x00, 0x00, 0x00, 0x00, 0x67, 0x62, 0x69, 0x6C, 0x73, 0x73, 0x6F, 0x6C,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00,
-	0x20, 0x01, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x75, 0x30, 0x8A, 0xD0,
-	0x75, 0x30, 0x8A, 0xD0, 0x00, 0x00, 0x00, 0x0C, 0x20, 0x01, 0xB0, 0x00, 0x20, 0x01, 0xB9, 0x00,
-	0x20, 0x01, 0xB0, 0x50, 0x20, 0x01, 0xB4, 0x00, 0x20, 0x01, 0xB8, 0x00, 0x20, 0x01, 0xA0, 0x88,
-	0x20, 0x00, 0x76, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x01, 0xC2, 0x13, 0x88, 0x4E, 0x20, 0x0B, 0xB8, 0x00, 0xAA, 0x11, 0x94, 0x3A, 0x98, 0x17, 0x70,
-	0x00, 0x0E, 0x1B, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x19, 0xF6, 0xFF, 0xF0, 0xFE, 0x41,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xEE, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x22, 0x3E,
-	0xFF, 0xF0, 0x33, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1B, 0xB6, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0xF2, 0x25, 0x00, 0x00, 0xF2, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x75, 0x63,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC5, 0x4F, 0x00, 0x02, 0xC5, 0x4F, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x13, 0xB0, 0xF6, 0xFF, 0xF2, 0x92, 0x67, 0x00, 0x0E, 0xD7, 0xB8, 0xFF, 0xEC, 0x4F, 0x0A,
-	0x00, 0x0E, 0x95, 0xE1, 0x00, 0x08, 0xB2, 0x4A, 0xFF, 0xF3, 0xDB, 0x95, 0x00, 0x0E, 0x43, 0x97,
-	0xFF, 0xF7, 0x4D, 0xB6, 0x00, 0x0D, 0xE0, 0xD5, 0x00, 0x0D, 0xD0, 0x82, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x0E, 0xF4, 0x3E, 0xFF, 0xF1, 0x23, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xEE, 0xE1,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x1F, 0xFF, 0xF0, 0x22, 0x3E, 0x00, 0x00, 0x00, 0x00,
-	0xFF, 0xF0, 0xCB, 0xCC, 0xFF, 0xF1, 0x97, 0x97, 0x00, 0x0F, 0x36, 0x3E, 0x00, 0x0F, 0x34, 0x34,
-	0x00, 0x0F, 0x32, 0x2B, 0x00, 0x0F, 0xE9, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x1F,
-	0x00, 0x00, 0x0B, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF1, 0x84, 0x46, 0xFF, 0xF3, 0x08, 0x8B,
-	0x00, 0x0E, 0xA2, 0x8E, 0x00, 0x0E, 0x7B, 0xBA, 0x00, 0x0E, 0x54, 0xE7, 0x00, 0x12, 0x39, 0xF4,
-	0xFF, 0xF4, 0xC2, 0xD8, 0x00, 0x0D, 0xDB, 0x85, 0xFF, 0xED, 0xC6, 0x0C, 0x00, 0x0D, 0x61, 0xA3,
-	0x01, 0xC2, 0x13, 0x88, 0x4E, 0x20, 0x0B, 0xB8, 0x00, 0x14, 0x01, 0xF4, 0x00, 0x00, 0x03, 0x20,
-	0x00, 0x0E, 0x1B, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x19, 0xF6, 0xFF, 0xF0, 0xFE, 0x41,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xEE, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x22, 0x3E,
-	0xFF, 0xF0, 0x33, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x1B, 0xB6, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0xF2, 0x25, 0x00, 0x00, 0xF2, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x75, 0x63,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC5, 0x4F, 0x00, 0x02, 0xC5, 0x4F, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x13, 0xB0, 0xF6, 0xFF, 0xF2, 0x92, 0x67, 0x00, 0x0E, 0xD7, 0xB8, 0xFF, 0xEC, 0x4F, 0x0A,
-	0x00, 0x0E, 0x95, 0xE1, 0x00, 0x08, 0xB2, 0x4A, 0xFF, 0xF3, 0xDB, 0x95, 0x00, 0x0E, 0x43, 0x97,
-	0xFF, 0xF7, 0x4D, 0xB6, 0x00, 0x0D, 0xE0, 0xD5, 0x00, 0x0E, 0xB6, 0xA6, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0xA4, 0xAD, 0x00, 0x00, 0xA4, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB6, 0xA6,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x5B, 0x53, 0xFF, 0xE1, 0xEE, 0x06, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x1D, 0x7B, 0xFD, 0xFF, 0xF2, 0x78, 0xCF, 0x00, 0x0F, 0x22, 0x84, 0xFF, 0xE2, 0x84, 0x03,
-	0x00, 0x0E, 0x64, 0xAD, 0x00, 0x08, 0x59, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xD3, 0x2E,
-	0x00, 0x03, 0xD3, 0x2E, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF1, 0x84, 0x46, 0xFF, 0xF3, 0x08, 0x8B,
-	0x00, 0x0E, 0xA2, 0x8E, 0x00, 0x0E, 0x7B, 0xBA, 0x00, 0x0E, 0x54, 0xE7, 0x00, 0x12, 0x39, 0xF4,
-	0xFF, 0xF4, 0xC2, 0xD8, 0x00, 0x0D, 0xDB, 0x85, 0xFF, 0xED, 0xC6, 0x0C, 0x00, 0x0D, 0x61, 0xA3,
-	0x80, 0x0C, 0x97, 0x86, 0x10, 0x11, 0x00, 0x1C, 0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
-	0x08, 0x03, 0x03, 0x01, 0x00, 0x05, 0x10, 0x11, 0x6B, 0xBD, 0x1F, 0xFA, 0x19, 0xD2, 0x03, 0x8F,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x01, 0x80, 0x00, 0x20, 0x00, 0x80, 0x00, 0x00, 0x0A, 0x09, 0x60, 0x27, 0x10, 0x00, 0x07,
-	0x00, 0x0A, 0x80, 0x00, 0x00, 0x0A, 0x0F, 0xFF, 0x03, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xC8,
-	0x00, 0x64, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x01, 0x02, 0x00, 0x80, 0x00, 0x01, 0x00, 0x80, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-	0x30, 0xD4, 0x3A, 0x98, 0x00, 0x1E, 0x03, 0xE8, 0x00, 0xC8, 0x00, 0x02, 0x00, 0x00, 0x00, 0xC8,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A,
-	0x0A, 0xF0, 0x00, 0x00, 0x16, 0xA8, 0x00, 0xB4, 0x00, 0x00, 0x3E, 0x80, 0x07, 0xFF, 0x00, 0x00,
-	0x00, 0x0E, 0x1B, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x25, 0x00, 0x00, 0xF2, 0x25,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xF4, 0x42, 0xFF, 0xF2, 0x73, 0x5A, 0x00, 0x0F, 0x82, 0x88,
-	0xFF, 0xE3, 0x0B, 0xBE, 0x00, 0x0E, 0x0A, 0x1E, 0x00, 0x1D, 0x6D, 0x45, 0xFF, 0xF2, 0x78, 0x37,
-	0x00, 0x0F, 0xB0, 0xF9, 0xFF, 0xE2, 0x92, 0xBB, 0x00, 0x0D, 0xD6, 0xD0, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x01, 0x90, 0x00, 0x02, 0x00, 0xB4, 0x01, 0x90, 0x04, 0xB0, 0x00, 0x0F, 0x07, 0xD0, 0x00, 0x5A,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x0F, 0xFC, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0x97, 0xFF, 0xF0, 0x0A, 0xAD,
-	0x00, 0x00, 0x00, 0x00, 0xFF, 0xF9, 0x1B, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x35, 0x8B,
-	0xFF, 0xD0, 0xAE, 0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFA, 0xDB, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x0F, 0xFD, 0x6E, 0xFF, 0xF0, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF5, 0xB8,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x24, 0x00, 0x00, 0x05, 0x24, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC8, 0x20, 0x00, 0x00, 0x2D, 0x20, 0x00, 0x20, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x04, 0x00, 0xC8, 0x02, 0x58, 0x00, 0x0A, 0x00, 0x00, 0x0F, 0xA0, 0x00, 0x00, 0x20, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x02, 0x00, 0x70, 0x00, 0x01, 0x00, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x23, 0x28, 0x3A, 0x98, 0x00, 0x1E, 0x03, 0xE8, 0x01, 0x2C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x96,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x80, 0x00, 0x00, 0x00, 0x00, 0x05,
-	0x0C, 0x80, 0x00, 0x00, 0x0A, 0x28, 0x00, 0xB6, 0x00, 0x00, 0x1F, 0x40, 0x07, 0xFE, 0x00, 0x00,
-	0x00, 0x1F, 0xDD, 0xC2, 0xFF, 0xF0, 0x22, 0x2C, 0x00, 0x10, 0x22, 0x2C, 0xFF, 0xE0, 0x22, 0x3E,
-	0x00, 0x0F, 0xBB, 0xA8, 0x00, 0x0A, 0x75, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x5E, 0x28,
-	0xFF, 0xF2, 0xE8, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x06, 0x7B, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x7C, 0xC3, 0x00, 0x00, 0x7C, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x15, 0x26,
-	0xFF, 0xF1, 0xE4, 0x17, 0x00, 0x0F, 0x9F, 0x2F, 0xFF, 0xE1, 0xEA, 0xDA, 0x00, 0x0E, 0x7C, 0xBA,
-	0x01, 0x90, 0x00, 0x02, 0x00, 0xB4, 0x01, 0x90, 0x04, 0xB0, 0x00, 0x0F, 0x07, 0xD0, 0x00, 0x5A,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x0F, 0xFD, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x07, 0xE4, 0xFF, 0xF0, 0x0A, 0xA2,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x50, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0x4D, 0x79,
-	0xFF, 0xE3, 0x62, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFA, 0xDB, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x0F, 0xFD, 0x6E, 0xFF, 0xF0, 0x02, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF5, 0xB8,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x24, 0x00, 0x00, 0x05, 0x24, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0xC8, 0x20, 0x00, 0x00, 0x2D, 0x1D, 0x70, 0x1D, 0x70,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x04, 0x00, 0xC8, 0x02, 0x58, 0x00, 0x0A, 0x00, 0x00, 0x0F, 0xA0, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x90, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
-	0x34, 0xBC, 0x3A, 0x98, 0x00, 0x1E, 0x05, 0xDC, 0x01, 0x2C, 0x00, 0x05, 0x00, 0x00, 0x00, 0xC8,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x12, 0xC0, 0x00, 0x01, 0x15, 0x7C, 0x00, 0x8C, 0x00, 0x00, 0x55, 0xF0, 0x07, 0xFF, 0x00, 0x00,
-	0x00, 0x0E, 0x1B, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x25, 0x00, 0x00, 0xF2, 0x25,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x75, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC5, 0x4F,
-	0x00, 0x02, 0xC5, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xB0, 0xF6, 0xFF, 0xF2, 0x92, 0x67,
-	0x00, 0x0E, 0xBA, 0x17, 0xFF, 0xEC, 0x4F, 0x0A, 0x00, 0x0E, 0xB3, 0x82, 0x00, 0x08, 0xB2, 0x4A,
-	0xFF, 0xF3, 0xDB, 0x95, 0x00, 0x0E, 0x17, 0x26, 0xFF, 0xF7, 0x4D, 0xB6, 0x00, 0x0E, 0x0D, 0x45,
-	0x00, 0x00, 0x00, 0x00, 0x04, 0xB0, 0x00, 0x00, 0x08, 0x49, 0x00, 0x0D, 0x00, 0x00, 0x04, 0xB0,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x96, 0x80, 0x00, 0x00, 0x0A, 0x2E, 0xE0, 0x2E, 0xE0, 0x00, 0x0A, 0x01, 0x00, 0x2E, 0xE0,
-	0x00, 0x64, 0x80, 0x00, 0x00, 0x0A, 0x32, 0xC8, 0x32, 0xC8, 0x00, 0x05, 0x2E, 0xE0, 0x32, 0xC8,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x0A, 0xF0, 0x00, 0x00, 0x13, 0x88,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x5E, 0x09, 0xC4, 0x00, 0x00, 0x07, 0xD0,
-	0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-
-#endif	/* DW9786_FIRMWARE_H */
diff --git a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786_if.c b/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786_if.c
deleted file mode 100755
index 8a407737..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786_if.c
+++ /dev/null
@@ -1,1278 +0,0 @@
-#include "dw9786_if.h"
-#include "dw9786_fw_data.h"
-
-#include "adaptor-i2c.h"
-
-struct mutex dw9786_idle_mutex;
-
-int i2c_read_8bit(uint16_t slave_addr, uint16_t reg_addr, uint8_t *data)
-{
-	int ret;
-	struct i2c_client *i2c_client;
-	i2c_client = dw9786->hf_dev.private_data;
-	ret = adaptor_i2c_rd_u8(i2c_client, slave_addr, reg_addr, data);
-	if (ret < 0) {
-		LOG_ERR("failed, slave addr: 0x%02X, reg addr: 0x%02X, ret: %d", slave_addr, reg_addr, ret);
-	}
-	return ret;
-}
-
-int i2c_read_16bit(uint16_t slave_addr, uint16_t reg_addr, uint16_t *data)
-{
-	int ret;
-	struct i2c_client *i2c_client;
-	i2c_client = dw9786->hf_dev.private_data;
-	ret = adaptor_i2c_rd_u16(i2c_client, slave_addr, reg_addr, data);
-	if (ret < 0) {
-		LOG_ERR("failed, slave addr: 0x%02X, reg addr: 0x%02X, ret: %d", slave_addr, reg_addr, ret);
-	}
-	return ret;
-}
-
-int i2c_read_32bit(uint16_t slave_addr, uint16_t reg_addr, uint32_t *data)
-{
-	int ret;
-	struct i2c_client *i2c_client;
-	i2c_client = dw9786->hf_dev.private_data;
-	ret = adaptor_i2c_rd_p8(i2c_client, slave_addr, reg_addr, (uint8_t*)data, 4);
-	if (ret < 0) {
-		LOG_ERR("failed, slave addr: 0x%02X, reg addr: 0x%02X, ret: %d", slave_addr, reg_addr, ret);
-	}
-	return ret;
-}
-
-int i2c_block_read(uint16_t slave_addr, uint16_t reg_addr, void *data, uint32_t size)
-{
-	int ret;
-	struct i2c_client *i2c_client;
-	i2c_client = dw9786->hf_dev.private_data;
-	ret = adaptor_i2c_rd_p8(i2c_client, slave_addr, reg_addr, (uint8_t*)data, size);
-	if (ret < 0) {
-		LOG_ERR("failed, slave addr: 0x%02X, reg addr: 0x%02X, data: %p, size: %d, ret: %d", slave_addr, reg_addr, data, size, ret);
-	}
-	return ret;
-}
-
-int i2c_write_8bit(uint16_t slave_addr, uint16_t reg_addr, uint8_t data)
-{
-	int ret;
-	struct i2c_client *i2c_client;
-	i2c_client = dw9786->hf_dev.private_data;
-	ret = adaptor_i2c_wr_u8(i2c_client, slave_addr, reg_addr, data);
-	if (ret < 0) {
-		LOG_ERR("failed, slave addr: 0x%02X, reg addr: 0x%02X, data: 0x%02X, ret: %d", slave_addr, reg_addr, data, ret);
-	}
-	return ret;
-}
-
-int i2c_write_16bit(uint16_t slave_addr, uint16_t reg_addr, uint16_t data)
-{
-	int ret;
-	struct i2c_client *i2c_client;
-	i2c_client = dw9786->hf_dev.private_data;
-	ret = adaptor_i2c_wr_u16(i2c_client, slave_addr, reg_addr, data);
-	if (ret < 0) {
-		LOG_ERR("failed, slave addr: 0x%02X, reg addr: 0x%02X, data: 0x%02X, ret: %d", slave_addr, reg_addr, data, ret);
-	}
-	return ret;
-}
-
-int i2c_write_32bit(uint16_t slave_addr, uint16_t reg_addr, uint32_t data)
-{
-	int ret;
-	struct i2c_client *i2c_client;
-	i2c_client = dw9786->hf_dev.private_data;
-	ret = adaptor_i2c_wr_p8(i2c_client, slave_addr, reg_addr, (uint8_t*)&data, 4);
-	if (ret < 0) {
-		LOG_ERR("failed, slave addr: 0x%02X, reg addr: 0x%02X, data: 0x%02X, ret: %d", slave_addr, reg_addr, data, ret);
-	}
-	return ret;
-}
-
-int i2c_block_write(uint16_t slave_addr, uint16_t reg_addr, void *data, uint32_t size)
-{
-	int ret;
-	struct i2c_client *i2c_client;
-	i2c_client = dw9786->hf_dev.private_data;
-	ret = adaptor_i2c_wr_p8(i2c_client, slave_addr, reg_addr, (uint8_t*)data, size);
-	if (ret < 0) {
-		LOG_ERR("failed, slave addr: 0x%02X, reg addr: 0x%02X, data: %p, ret: %d", slave_addr, reg_addr, data, ret);
-	}
-	return ret;
-}
-
-void dw9786_udelay(int us)
-{
-	mdelay((us + 999) / 1000);
-	return;
-}
-
-void dw9786_mdelay(int ms)
-{
-	mdelay(ms + 1);
-	return;
-}
-
-int DW9786_Store_OIS_Cal_Data (void)
-{
-	uint8_t txdata[DW9786_TX_BUFFER_SIZE];
-	uint8_t rxdata[DW9786_RX_BUFFER_SIZE];
-	uint16_t repeatedCnt = 1000;
-	int32_t data_error = 0xFFFF;
-
-	I2C_READ_8BIT_OIS(DW9786_REG_OIS_STS, rxdata);
-	LOG_ERR("DW9786_REG_OIS_STS: %u", rxdata[0]);
-
-	if (rxdata[0] != DW9786_STATE_READY)
-	{
-		txdata[0] = DW9786_OIS_OFF;
-		I2C_WRITE_8BIT_OIS(DW9786_REG_OIS_CTRL, txdata[0]);
-	}
-
-	txdata[0] = DW9786_OIS_INFO_EN; /* Set OIS_INFO_EN */
-	/* Write 1 Byte to REG_INFO_BLK_UP_CTRL */
-	I2C_WRITE_8BIT_OIS(DW9786_REGINFO_BLK_UP_CTRL, txdata[0]);
-	LOG_ERR("write DW9786_REGINFO_BLK_UP_CTRL: %u", txdata[0]);
-	/* I2C_Write_Data(REG_INFO_BLK_UP_CTRL, 1, txdata); */
-	dw9786_udelay(100); /* Delay 100 ms */
-
-	do
-	{
-		if (repeatedCnt == 0)
-		{
-			/* Abnormal Termination Error. */
-			LOG_ERR("REG_INFO_BLK_UP_CTRL failed,: %u", rxdata[0]);
-			return 0;
-		}
-		dw9786_udelay(50); /* Delay 50 ms */
-		I2C_READ_8BIT_OIS(DW9786_REGINFO_BLK_UP_CTRL, rxdata);
-		repeatedCnt--;
-	} while ((rxdata[0] & DW9786_OIS_INFO_EN) == DW9786_OIS_INFO_EN);
-
-	I2C_READ_8BIT_OIS(DW9786_REG_OIS_ERR, rxdata);
-	I2C_READ_8BIT_OIS(DW9786_REG_OIS_ERR + 1, rxdata + 1);
-	data_error = (uint16_t)((rxdata[0]) | (rxdata[1] << 8 ));
-
-	if ((data_error & DW9786_ERR_ODI) != DW9786_NO_ERROR)
-	{
-		/* Different INFORWRITE data on flash */
-		LOG_ERR("DW9786_ERR_ODI error %d", data_error);
-		return 0;
-	}
-
-	return 1;
-	/* INFORWRITE data on flash Success Process */
-}
-
-void GyroRead(uint32_t addr)
-{
-	unsigned char rxdata[4];
-	I2C_READ_8BIT_OIS(addr, rxdata);
-	I2C_READ_8BIT_OIS(addr+1, rxdata + 1);
-	I2C_READ_8BIT_OIS(addr+2, rxdata + 2);
-	I2C_READ_8BIT_OIS(addr+3, rxdata + 3);
-	LOG_ERR("[GyroRead] addr= 0x%x, read = 0x%x %x %x %x", addr, rxdata[0], rxdata[1], rxdata[2], rxdata[3]);
-}
-
-void GyroWrite(uint32_t addr, uint32_t gain)
-{
-	unsigned char txdata[4];
-	txdata[0] = gain & 0x00FF;
-	txdata[1] = (gain & 0xFF00) >> 8;
-	txdata[2] = (gain & 0xFF0000) >> 16;
-	txdata[3] = (gain & 0xFF000000) >> 24;
-	I2C_WRITE_8BIT_OIS(addr, txdata[0]); /* write REG_GGX Little endian*/
-	I2C_WRITE_8BIT_OIS(addr+1, txdata[1]);
-	I2C_WRITE_8BIT_OIS(addr+2, txdata[2]);
-	I2C_WRITE_8BIT_OIS(addr+3, txdata[3]);
-	LOG_ERR("[GyroRead] gain = %u, addr= 0x%x, write = 0x%x %x %x %x", gain, addr, txdata[0], txdata[1], txdata[2], txdata[3]);
-}
-
-void dw9786_set_gyro_gain(uint32_t gain_x, uint32_t gain_y)
-{
-	uint16_t gain_x_origin, gain_y_origin;
-	uint16_t gain_x_current, gain_y_current;
-	int ret;
-	I2C_READ_16BIT_OIS(DW9786_GYRO_GAIN_X, &gain_x_origin);
-	I2C_READ_16BIT_OIS(DW9786_GYRO_GAIN_Y, &gain_y_origin);
-	LOG_INF("original gyro gain: [%04X, %04X]", gain_x_origin, gain_y_origin);
-	ret = I2C_WRITE_16BIT_OIS(DW9786_GYRO_GAIN_X, gain_x);
-	if (ret < 0) {
-		LOG_ERR("write gyro gain x failed");
-	}
-	ret = I2C_WRITE_16BIT_OIS(DW9786_GYRO_GAIN_Y, gain_y);
-	if (ret < 0) {
-		LOG_ERR("write gyro gain y failed");
-	}
-	I2C_READ_16BIT_OIS(DW9786_GYRO_GAIN_X, &gain_x_current);
-	I2C_READ_16BIT_OIS(DW9786_GYRO_GAIN_Y, &gain_y_current);
-	LOG_INF("after write gyro gain: [%04X, %04X]", gain_x_current, gain_y_current);
-
-	return;
-}
-
-int dw9786_set_hall(uint32_t x, uint32_t y)
-{
-	int ret = -1;
-	int ret1 = -1;
-	ret = I2C_WRITE_16BIT_OIS(DW9786_TARGET_HALL_X_ADDR, x);
-	ret1 = I2C_WRITE_16BIT_OIS(DW9786_TARGET_HALL_Y_ADDR, y);
-	if (ret < 0 || ret1 < 0) {
-		return -1;
-	}
-
-	return 0;
-}
-
-int dw9786_get_position(uint16_t* position_x, uint16_t* position_y)
-{
-	int ret;
-	int ret1;
-	ret = I2C_READ_16BIT_OIS(0xB102, position_x);
-	ret1 = I2C_READ_16BIT_OIS(0xB202, position_y);
-	if (ret < 0 || ret1 < 0) {
-		return -1;
-	}
-
-	return 0;
-}
-
-int dw9786_fw_download(void)
-{
-	uint8_t txdata[DW9786_TX_BUFFER_SIZE + 2];
-	uint8_t rxdata[DW9786_RX_BUFFER_SIZE];
-	uint8_t* chkBuff = NULL;
-	uint16_t txBuffSize;
-	uint32_t i, chkIdx;
-	uint16_t subaddr_FLASH_DATA_BIN_1;
-
-	uint16_t idx = 0;
-	uint16_t check_sum;
-	uint32_t updated_ver;
-	uint32_t new_fw_ver;
-	uint32_t current_fw_ver;
-	uint16_t reg_addr;
-	int rc = 0;
-	chkBuff = (uint8_t*)kzalloc(DW9786_FW_SIZE, GFP_KERNEL);
-
-	I2C_READ_8BIT_OIS(DW9786_REG_APP_VER, rxdata);
-	I2C_READ_8BIT_OIS(DW9786_REG_APP_VER + 1, rxdata + 1);
-	I2C_READ_8BIT_OIS(DW9786_REG_APP_VER + 2, rxdata + 2);
-	I2C_READ_8BIT_OIS(DW9786_REG_APP_VER + 3, rxdata + 3);
-	new_fw_ver = *(uint32_t *)&dw9786_fw_data[DW9786_FW_SIZE - 12];
-	current_fw_ver = ((uint32_t *)rxdata)[0];
-
-	LOG_ERR("current_fw_ver: 0x%x, new_fw_ver: 0x%x", current_fw_ver, new_fw_ver);
-	if (current_fw_ver == new_fw_ver)
-	{
-		LOG_ERR("version is the same, no need to update");
-		return 0;
-	}
-
-	if (current_fw_ver != 0)
-	{
-		I2C_READ_8BIT_OIS(DW9786_REG_OIS_STS, rxdata);
-		if (rxdata[0] != DW9786_STATE_READY)
-		{
-			txdata[0] = DW9786_OIS_OFF;
-			rc = I2C_WRITE_8BIT_OIS(DW9786_REG_OIS_CTRL, txdata[0]);
-			if (rc < 0)
-			{
-				LOG_ERR("error 1");
-				goto error_hand;
-			}
-		}
-		I2C_READ_8BIT_OIS(DW9786_REG_AF_STS, rxdata);
-		if (rxdata[0] != DW9786_STATE_READY)
-		{
-			txdata[0] = DW9786_AF_OFF;
-			rc = I2C_WRITE_8BIT_OIS(DW9786_REG_AF_CTRL, txdata[0]);
-			if (rc < 0)
-			{
-				LOG_ERR("error 2");
-				goto error_hand;
-			}
-		}
-	}
-
-	txBuffSize = DW9786_TX_SIZE_256_BYTE;
-	switch (txBuffSize)
-	{
-		case DW9786_TX_SIZE_32_BYTE:
-			txdata[0] =  DW9786_FWUP_CTRL_32_SET;
-			break;
-		case DW9786_TX_SIZE_64_BYTE:
-			txdata[0] = DW9786_FWUP_CTRL_64_SET;
-			break;
-		case DW9786_TX_SIZE_128_BYTE:
-			txdata[0] = DW9786_FWUP_CTRL_128_SET;
-			break;
-		case DW9786_TX_SIZE_256_BYTE:
-			txdata[0] = DW9786_FWUP_CTRL_256_SET;
-			break;
-		default:
-			break;
-	}
-	rc = I2C_WRITE_8BIT_OIS(DW9786_REG_FWUP_CTRL, txdata[0]);
-	if (rc < 0)
-	{
-		LOG_ERR("error 3");
-		goto error_hand;
-	}
-	dw9786_udelay(60);
-	check_sum = 0;
-
-	subaddr_FLASH_DATA_BIN_1 = DW9786_REG_DATA_BUF;
-	for (i = 0; i < (DW9786_FW_SIZE / txBuffSize); i++)
-	{
-		memcpy(&chkBuff[txBuffSize * i], &dw9786_fw_data[idx], txBuffSize);
-		for (chkIdx = 0; chkIdx < txBuffSize; chkIdx += 2)
-		{
-			check_sum += ((chkBuff[chkIdx + 1 + (txBuffSize * i)] << 8) |  chkBuff[chkIdx + (txBuffSize * i)]);
-		}
-		memcpy(txdata, &dw9786_fw_data[idx], txBuffSize);
-		reg_addr = subaddr_FLASH_DATA_BIN_1;
-		rc = I2C_BLOCK_WRITE_OIS(reg_addr, txdata, DW9786_TX_BUFFER_SIZE);
-		if (rc < 0)
-		{
-			LOG_ERR("error 4");
-			goto error_hand;
-		}
-		LOG_ERR("update ois fw blk_num: %d 0x%x%x rc %d", i + 1, txdata[0], txdata[1], rc);
-		idx += txBuffSize;
-		dw9786_udelay(20);
-	}
-
-	((uint16_t*)txdata)[0] = check_sum;
-	LOG_ERR("test %d",((uint16_t*)txdata)[1]);
-	reg_addr = DW9786_REG_FWUP_CHKSUM;
-	rc = I2C_BLOCK_WRITE_OIS(reg_addr, txdata, 2);
-	if (rc < 0)
-	{
-		LOG_ERR("error 5");
-		goto error_hand;
-	}
-	dw9786_udelay(200);
-
-	I2C_READ_8BIT_OIS(DW9786_REG_FWUP_ERR, rxdata);
-	if (rxdata[0] != DW9786_NO_ERROR)
-	{
-		LOG_ERR("update fw error 0x%x", rxdata[0]);
-		return -1;
-	}
-
-	txdata[0] = DW9786_RESET_REQ;
-	rc = I2C_WRITE_8BIT_OIS(DW9786_REG_FWUP_CTRL,txdata[0]);
-	if (rc < 0)
-	{
-		goto error_hand;
-	}
-	dw9786_udelay(200);
-
-	I2C_READ_8BIT_OIS(DW9786_REG_APP_VER, rxdata);
-	I2C_READ_8BIT_OIS(DW9786_REG_APP_VER + 1, rxdata + 1);
-	I2C_READ_8BIT_OIS(DW9786_REG_APP_VER + 2, rxdata + 2);
-	I2C_READ_8BIT_OIS(DW9786_REG_APP_VER + 3, rxdata + 3);
-
-	updated_ver = *(uint32_t *)rxdata;
-
-	LOG_ERR("updated_ver: 0x%x, new_fw_ver: 0x%x", updated_ver, new_fw_ver);
-	if (updated_ver != new_fw_ver)
-	{
-		LOG_ERR("update fw failed,, update version is not equal with read");
-		return -1;
-	}
-error_hand:
-
-	LOG_ERR("update fw end, rc: %d", rc);
-
-	return rc;
-}
-
-int dw9786_chip_enable(bool en)
-{
-	int ret = -1;
-	unsigned short stdby[17] = {0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-								0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-								0x0000, 0x0000, 0x0000};
-	if (en) {
-		LOG_INF("enter standby mode");
-		ret = I2C_BLOCK_WRITE_OIS(DW9786_CHIP_EN_ADDR, (unsigned char *)stdby, 34);
-	} else {
-		LOG_INF("enter sleep mode");
-		ret = I2C_WRITE_16BIT_OIS(DW9786_CHIP_EN_ADDR, 0);
-	}
-
-	return ret;
-}
-
-int dw9786_mcu_active(bool en)
-{
-	int ret = -1;
-
-	if (en) {
-		LOG_INF("enter idle mode");
-		ret = I2C_WRITE_16BIT_OIS(DW9786_MCU_ACTIVE_ADDR, 1);
-	} else {
-		LOG_INF("enter standby mode");
-		ret = I2C_WRITE_16BIT_OIS(DW9786_MCU_ACTIVE_ADDR, 0);
-	}
-
-	if (!(ret < 0)) {
-		mdelay(1);
-		LOG_ERR("mcu active(%d) success", en);
-	} else {
-		LOG_ERR("mcu active(%d) failed,", en);
-	}
-
-	return ret;
-}
-
-int dw9786_device_reset(void)
-{
-	int ret = -1;
-	uint16_t ois_status;
-	uint16_t chip_en;
-	uint16_t mcu_active;
-	unsigned short stdby[17] = {0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-								0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-								0x0000, 0x0000, 0x0000};
-
-	mutex_lock(&dw9786_idle_mutex);
-	LOG_INF("dw9786_idle_mutex: %p", &dw9786_idle_mutex);
-	I2C_READ_16BIT_OIS(DW9786_STATUS_ADDR, &ois_status);
-	LOG_INF("ois status: 0x%04X", ois_status);
-
-	if (ois_status == 0x1021) {
-		LOG_INF("ois has been enabled, return 0");
-		mutex_unlock(&dw9786_idle_mutex);
-		return 0;
-	}
-
-	I2C_READ_16BIT_OIS(DW9786_STATUS_ADDR, &chip_en);
-	LOG_INF("chip_en: 0x%04X", chip_en);
-	if (chip_en != 0x0001) {
-		ret = I2C_WRITE_16BIT_OIS(DW9786_CHIP_EN_ADDR, 0x0000);    /* sleep mode */
-		if (ret < 0) {
-			LOG_ERR("enter sleep mode failed,");
-			mutex_unlock(&dw9786_idle_mutex);
-			return ret;
-		}
-		dw9786_mdelay(2);
-		ret = I2C_BLOCK_WRITE_OIS(DW9786_CHIP_EN_ADDR, (unsigned char *)stdby, 34);    /* standby mode */
-		if (ret < 0) {
-			LOG_ERR("enter standby mode failed,");
-			mutex_unlock(&dw9786_idle_mutex);
-			return ret;
-		}
-		dw9786_mdelay(5);
-	}
-
-	I2C_READ_16BIT_OIS(DW9786_STATUS_ADDR, &mcu_active);
-	LOG_INF("mcu_active: 0x%04X", mcu_active);
-	if (mcu_active != 0x0001) {
-		ret = I2C_WRITE_16BIT_OIS(DW9786_MCU_ACTIVE_ADDR, 0x0001);    /* idle mode */
-		if (ret < 0) {
-			LOG_ERR("enter Idle mode failed,");
-			mutex_unlock(&dw9786_idle_mutex);
-			return ret;
-		}
-		dw9786_mdelay(20);
-	}
-
-	mutex_unlock(&dw9786_idle_mutex);
-	LOG_INF("reset complete");
-	return 0;
-}
-
-void dw9786_chip_info(void)
-{
-	uint16_t data;
-	uint32_t fw_version;
-
-	I2C_READ_16BIT_OIS(DW9786_PRODUCT_ID_ADDR, &data);
-	LOG_INF("product_id: 0x%04X", data);
-	I2C_READ_16BIT_OIS(DW9786_CHIP_ID_ADDR, &data);
-	LOG_INF("chip_id: 0x%04X", data);
-	I2C_READ_32BIT_OIS(DW9786_FW_VERSION_ADDR, &fw_version);
-	LOG_INF("firmware_version: 0x%08X", fw_version);
-	I2C_READ_16BIT_OIS(DW9786_FW_DATE_ADDR, &data);
-	LOG_INF("firmware_date: 0x%04X", data);
-
-	return;
-}
-
-int dw9786_set_spi_work_mode(uint8_t mode)
-{
-	int ret = -1;
-
-	if (mode == 0) {
-		LOG_INF("set spi work mode to master");
-		ret = I2C_WRITE_16BIT_OIS(DW9786_SPI_WORK_MODE_ADDR, 0);
-	} else if (mode == 1) {
-		LOG_INF("set spi work mode to intercept");
-		ret = I2C_WRITE_16BIT_OIS(DW9786_SPI_WORK_MODE_ADDR, 1);
-	}
-
-	return ret;
-}
-
-int dw9786_set_imu_type(uint8_t type)
-{
-	return I2C_WRITE_16BIT_OIS(DW9786_IMU_TYPE_ADDR, type);
-}
-
-/***************************************************
-* @brief wait and compare register value and reference value
-* @param [i] reg register add to read
-* @param [o] ref reference value
-* @return 0: equal, others: unequal
-****************************************************/
-int dw9786_wait_check_register(uint16_t reg, uint16_t ref)
-{
-	int ret = -1;
-	uint16_t data;
-
-	for (int i = 0; i < DW9786_CHECK_LOOP_TIMES; i++) {
-		I2C_READ_16BIT_OIS(reg, &data);
-		if (data == ref) {
-			ret = 0;
-			break;
-		} else {
-			if (i > DW9786_CHECK_LOOP_TIMES - 2) {
-				LOG_INF("check_register failed,: 0x%04X", data);
-			}
-		}
-		mdelay(DW9786_CHECK_WAIT_TIME);
-	}
-
-	return ret;
-}
-
-/***************************************************
-* @brief compare register value and reference value, retry 1 time
-* @param [i] reg register add to read
-* @param [o] ref reference value
-* @return 0: equal, others: unequal
-****************************************************/
-int dw9786_check_register(uint16_t reg, uint16_t ref)
-{
-	int ret = -1;
-	uint16_t data;
-
-	for (int i = 0; i < 2; i++) {
-		I2C_READ_16BIT_OIS(reg, &data);
-		LOG_INF("dw9786_check_register 0x%x 0x%x", data, reg);
-		if (data == ref) {
-			ret = 0;
-			break;
-		}
-		mdelay(10);
-	}
-
-	return ret;
-}
-
-/***************************************************
-* @brief check register value, if not equal to ref then rewrite
-* @param [i] reg register add to read
-* @param [o] ref reference value
-* @return 0: success, others: failed
-****************************************************/
-int dw9786_check_and_write(uint16_t reg, uint16_t ref, bool* rewrite_flag)
-{
-	int ret = -1;
-	uint16_t data;
-
-	ret = I2C_READ_16BIT_OIS(reg, &data);
-	if (ret < 0) {
-		LOG_ERR("read reg: %04X failed, ret: %d", reg, ret);
-		return ret;
-	}
-
-	if (ref == data) {
-		return 0;
-	}
-
-	LOG_INF("reg %04X value not equal to ref, rewrite, reg value: %04X, ref value: %04X", reg, data, ref);
-	ret = I2C_WRITE_16BIT_OIS(reg, ref);
-	if (ret < 0) {
-		LOG_ERR("rewrite failed, ret: %d", ret);
-		return ret;
-	}
-	*rewrite_flag = true;
-
-	return 0;
-}
-
-uint32_t dw9786_calc_checksum(uint8_t *data, uint32_t length)
-{
-	uint32_t check_sum = 0xFFFFFFFF;
-
-	for (int i = 0; i < length; i += 4) {
-		check_sum += (unsigned int)(*(data + i + 3)) +
-					 (unsigned int)(*(data + i + 2) << 8) +
-					 (unsigned int)(*(data + i + 1) << 16) +
-					 (unsigned int)(*(data + i + 0) << 24);
-	}
-
-	return ~check_sum;
-}
-
-int dw9786_module_store(void)
-{
-	LOG_INF("start module store....");
-	I2C_WRITE_8BIT_FLASH(DW9786_USER_PROTECTION_ADDR, 0xEA);    /* user protection off */
-	I2C_WRITE_8BIT_FLASH(DW9786_DUMMY_DATA_ADDR, 0x00);    /* user memory write dummy data */
-	mdelay(10);    /* absolutely necessary */
-
-	I2C_WRITE_16BIT_OIS(DW9786_MODE_CONTROL_ADDR, 0x000A);    /* store&erase mode */
-
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0xA000) == 0) {
-		I2C_WRITE_16BIT_OIS(DW9786_USER_PROTECTION_A_ADDR, 0xA23F);    /* user protection a off */
-		I2C_WRITE_16BIT_OIS(DW9786_MEMORY_AREA_SELECT_ADDR, 0xA6A6);    /* seleect module memory */
-		mdelay(1);
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0001);    /* execute store */
-		mdelay(100);
-	} else {
-		LOG_ERR("module store execute failed,");
-		return -1;
-	}
-
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0xA001) == 0) {
-		LOG_INF("module store success");
-	} else {
-		LOG_ERR("module store failed,");
-		return -1;
-	}
-
-	return 0;
-}
-
-int dw9786_set_store(void)
-{
-	LOG_INF("start set store....");
-	I2C_WRITE_8BIT_FLASH(DW9786_USER_PROTECTION_ADDR, 0xEA);    /* user protection off */
-	I2C_WRITE_8BIT_FLASH(DW9786_DUMMY_DATA_ADDR, 0x00);    /* user memory write dummy data */
-	mdelay(10);    /* absolutely necessary */
-
-	I2C_WRITE_16BIT_OIS(DW9786_MODE_CONTROL_ADDR, 0x000A);    /* store&erase mode */
-
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0xA000) == 0) {
-		I2C_WRITE_16BIT_OIS(DW9786_USER_PROTECTION_A_ADDR, 0xA23F);    /* user protection a off */
-		I2C_WRITE_16BIT_OIS(DW9786_MEMORY_AREA_SELECT_ADDR, 0x5959);    /* seleect set memory */
-		mdelay(1);
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0001);    /* execute store */
-		mdelay(100);
-	} else {
-		LOG_ERR("set store execute failed,");
-		return -1;
-	}
-
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0xA001) == 0) {
-		LOG_INF("set store success");
-	} else {
-		LOG_ERR("set store failed,");
-		return -1;
-	}
-
-	return 0;
-}
-
-int dw9786_module_erase(void)
-{
-	LOG_INF("start module erase....");
-
-	I2C_WRITE_16BIT_OIS(DW9786_MODE_CONTROL_ADDR, 0x000B);    /* store&erase mode */
-
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0xB000) == 0) {    /* read status */
-		I2C_WRITE_16BIT_OIS(DW9786_USER_PROTECTION_A_ADDR, 0xA23F);    /* user protection a off */
-		I2C_WRITE_16BIT_OIS(DW9786_MEMORY_AREA_SELECT_ADDR, 0xA6A6);    /* seleect module memory */
-		mdelay(1);
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0001);    /* execute erase */
-		mdelay(100);
-	} else {
-		LOG_ERR("module erase failed,");
-		return -1;
-	}
-
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0xB001) == 0) {
-		LOG_INF("module erase success");
-	} else {
-		LOG_ERR("module erase failed,");
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0000);    /* user protection on */
-		return -1;
-	}
-
-	return 0;
-}
-
-int dw9786_set_erase(void)
-{
-	LOG_INF("module erase start....");
-
-	I2C_WRITE_16BIT_OIS(DW9786_MODE_CONTROL_ADDR, 0x000B);    /* store&erase mode */
-
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0xB000) == 0) {    /* read Status */
-		I2C_WRITE_16BIT_OIS(DW9786_USER_PROTECTION_A_ADDR, 0xA23F);    /* user protection a off */
-		I2C_WRITE_16BIT_OIS(DW9786_MEMORY_AREA_SELECT_ADDR, 0x5959);    /* seleect set memory */
-		mdelay(1);
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0001);    /* execute erase */
-		mdelay(100);
-	} else {
-		LOG_ERR("module erase failed,");
-		return -1;
-	}
-
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0xB001) == 0) {
-		LOG_INF("module erase success");
-	} else {
-		LOG_ERR("module erase failed,");
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0000);    /* user protection on */
-		return -1;
-	}
-
-	return 0;
-}
-
-uint32_t dw9786_read_flash_checksum(void)
-{
-	uint16_t csh, csl;
-	uint32_t checksum;
-
-	I2C_READ_16BIT_OIS(0xED60, &csh);
-	I2C_READ_16BIT_OIS(0xED64, &csl);
-	checksum = ((uint32_t)(csh << 16)) | csl;
-	LOG_INF("flash memory checksum: 0x%08X", checksum);
-
-	return checksum;
-}
-
-uint32_t dw9786_checksum(int type)
-{
-	unsigned short csh, csl;
-	unsigned int checksum;
-
-	if (type == MEMORY_AREA_LUT) {
-	    /* not used */
-	} else if (type == MEMORY_AREA_CODE) {
-		dw9786_memory_area_select(MEMORY_AREA_CODE);
-		I2C_WRITE_16BIT_OIS(0xED48, MCS_START_ADDRESS);
-		I2C_WRITE_16BIT_OIS(0xED4C, MCS_CHECKSUM_SIZE);
-		I2C_WRITE_16BIT_OIS(0xED50, 0x0001);
-	}
-
-	dw9786_wait_check_register(0xED04, 0x00);
-	I2C_READ_16BIT_OIS(0xED54, &csh);
-	I2C_READ_16BIT_OIS(0xED58, &csl);
-	checksum = ((unsigned int)(csh << 16)) | csl;
-	LOG_INF("flash memory checksum: 0x%08X", checksum);
-
-	return checksum;
-}
-
-void dw9786_memory_area_select(int type)
-{
-	I2C_WRITE_16BIT_OIS(DW9786_CHIP_EN_ADDR, 1);
-	I2C_WRITE_16BIT_OIS(DW9786_MCU_ACTIVE_ADDR, 0);
-
-	if (type == MEMORY_AREA_LUT) {
-		I2C_WRITE_16BIT_OIS(0xEDBC, 0xDB01);
-	}
-	else if (type == MEMORY_AREA_CODE) {
-		I2C_WRITE_16BIT_OIS(0xE2F8, 0xC0DE);
-	}
-	else if (type == MEMORY_AREA_USER) {
-		I2C_WRITE_16BIT_OIS(0xEDB0, 0xA23F);
-	}
-
-	I2C_WRITE_16BIT_OIS(0xED00, 0x0000);
-	mdelay(1);
-
-	return;
-}
-
-int dw9786_gyro_offset_calibration(uint16_t *offset_x, uint16_t *offset_y)
-{
-	int ret = 0;
-	uint16_t gyro_status;
-
-	LOG_INF("start gyro offset cali....");
-
-	I2C_WRITE_16BIT_OIS(DW9786_MODE_CONTROL_ADDR, 0x0006);    /* gyro offset calibration mode */
-
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x6000) == 0) {
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0001);    /* Lens ofs calibration execute command */
-		mdelay(100);
-	} else {
-		LOG_INF("switch to calibration mode failed,");
-		return -1;
-	}
-
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x6001) == 0) {    /* when calibration is done, Status changes to 0x6001 */
-		LOG_INF("calibration finish");
-	} else {
-		LOG_INF("calibration failed,");
-		return -2;
-	}
-
-	I2C_READ_16BIT_OIS(0xB80C, offset_x);
-	I2C_READ_16BIT_OIS(0xB80E, offset_y);
-	I2C_READ_16BIT_OIS(0xB838, &gyro_status);
-	LOG_INF("gyro offset x: 0x%04X(%d)", *offset_x, (int16_t)*offset_x);
-	LOG_INF("gyro offset y: 0x%04X(%d)", *offset_y, (int16_t)*offset_y);
-	LOG_INF("gyro offset calibration result status: 0x%04X", gyro_status);
-
-	if((gyro_status & 0x8000) == 0x8000) {
-		if (gyro_status & GYRO_OFFSET_X_CALI_PASS) {
-			LOG_INF("gyro offset x calibration pass");
-		}
-		if (gyro_status & GYRO_OFFSET_X_CALI_ERR) {
-			ret += GYRO_OFFSET_X_CALI_ERR;
-			LOG_INF("gyro offset x calibration failed,");
-		}
-		if (gyro_status & GYRO_OFFSET_Y_CALI_PASS) {
-			LOG_INF("gyro offset y calibration pass");
-		}
-		if (gyro_status & GYRO_OFFSET_Y_CALI_ERR) {
-			ret += GYRO_OFFSET_Y_CALI_ERR;
-			LOG_INF("gyro offset y calibration failed,");
-		}
-	} else {
-		ret = -3;
-		LOG_INF("calibration failed,");
-		return ret;
-	}
-
-	if(ret == 0) {
-		ret = dw9786_set_store();
-		dw9786_device_reset();
-	}
-
-	return ret;
-}
-
-int dw9786_hall_calibration(void)
-{
-	int ret = 0;
-	uint16_t cali_status;
-	LOG_INF("start hall cali....");
-	dw9786_device_reset();
-
-	I2C_WRITE_16BIT_OIS(0xB026, 0x0003);    /* hall calibration mode */
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x3000) == 0) {
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0001);    /* x axis hall calibration execute command */
-	} else {
-		LOG_INF("switch to calibration mode failed,");
-		return -1;
-	}
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x3001) == 0) {    /* when calibration is done, Status changes to 3x6001 */
-		LOG_INF("x axis hall calibration finish");
-	} else {
-		LOG_INF("x axis hall calibration failed,");
-		return -2;
-	}
-	I2C_READ_16BIT_OIS(0xB700, &cali_status);
-	LOG_INF("x axis hall calibration status:0x%04X", cali_status);
-
-	I2C_WRITE_16BIT_OIS(0xB026, 0x0003);    /* hall calibration mode */
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x3000) == 0) {
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0003);    /* y axis hall calibration execute command */
-	} else {
-		LOG_INF("switch to calibration mode failed,");
-		return -1;
-	}
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x3003) == 0) {    /* when calibration is done, Status changes to 3x6001 */
-		LOG_INF("y axis hall calibration finish");
-	} else {
-		LOG_INF("y axis hall calibration failed,");
-		return -2;
-	}
-	I2C_READ_16BIT_OIS(0xB700, &cali_status);
-	LOG_INF("x and y axis hall calibration status: 0x%04X", cali_status);
-
-	I2C_WRITE_16BIT_OIS(0xB026, 0x0003);    /* hall calibration mode */
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x3000) == 0) {
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0005);    /* z axis hall calibration execute command */
-	} else {
-		LOG_INF("switch to calibration mode failed,");
-		return -1;
-	}
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x3005) == 0) {    /* when calibration is done, Status changes to 3x6001 */
-		LOG_INF("z axis hall calibration finish");
-	} else {
-		LOG_INF("z axis hall calibration failed,");
-		return -2;
-	}
-	I2C_READ_16BIT_OIS(0xB700, &cali_status);
-	LOG_INF("z axis hall calibration status: 0x%04X", cali_status);
-
-	dw9786_set_store();
-	dw9786_module_store();
-	dw9786_device_reset();
-
-	return ret;
-}
-
-int dw9786_servo_gain_calibration(void)
-{
-	int ret = 0;
-	uint16_t cali_status;
-	LOG_INF("start servo gain cali....");
-	dw9786_device_reset();
-
-	I2C_WRITE_16BIT_OIS(0xB026, 0x0004);    /* servo gain calibration mode */
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x4000) == 0) {
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0001);    /* servo gain calibration execute command */
-	} else {
-		LOG_INF("switch to calibration mode failed,");
-		return -1;
-	}
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x4001) == 0) {    /* when calibration is done, Status changes to 0x4001 */
-		LOG_INF("servo gain calibration finish");
-	} else {
-		LOG_INF("servo gain calibration failed,");
-		return -2;
-	}
-	I2C_READ_16BIT_OIS(0xB702, &cali_status);
-	LOG_INF("servo gain calibration status:0x%04X", cali_status);
-
-	dw9786_set_store();
-	dw9786_module_store();
-	dw9786_device_reset();
-
-	return ret;
-}
-
-int dw9786_lens_offset_calibration(void)
-{
-	int ret = 0;
-	uint16_t cali_status;
-	LOG_INF("start lens offset cali....");
-	dw9786_device_reset();
-
-	I2C_WRITE_16BIT_OIS(0xB026, 0x0005);    /* lens offset calibration mode */
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x5000) == 0) {
-		I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0001);    /* lens offset calibration execute command */
-	} else {
-		LOG_INF("switch to calibration mode failed,");
-		return -1;
-	}
-	if (dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x5001) == 0) {    /* when calibration is done, Status changes to 0x4001 */
-		LOG_INF("lens offset calibration finish");
-	} else {
-		LOG_INF("lens offset calibration failed,");
-		return -2;
-	}
-
-	I2C_READ_16BIT_OIS(0xB706, &cali_status);
-	LOG_INF("lens offset calibration status:0x%04X", cali_status);
-
-	dw9786_set_store();
-	dw9786_module_store();
-	dw9786_device_reset();
-
-	return ret;
-}
-
-int dw9786_update_fw(void)
-{
-	uint16_t project_info = 0, fw_version = 0, release_date = 0;
-	uint32_t checksum;
-
-	I2C_READ_16BIT_OIS(DW9786_RELEASE_VERSION_H_ADDR, &project_info);
-	I2C_READ_16BIT_OIS(DW9786_RELEASE_VERSION_L_ADDR, &fw_version);
-	I2C_READ_16BIT_OIS(DW9786_RELEASE_DATE_ADDR, &release_date);
-	checksum = dw9786_read_flash_checksum();
-	LOG_INF("module project info: 0x%04X, fw_version: 0x%04X, release date: 0x%04X, checksum: %04X",
-	        project_info, fw_version, release_date, checksum);
-	LOG_INF("firmware project info: 0x%04X, fw_version: 0x%04X, release date: 0x%04X, checksum: %04X",
-	        DW9786_PROJECT_VERSION, DW9786_FW_VERSION, DW9786_RELEASE_DATE, DW9786_FW_CHECKSUM);
-
-	if ((project_info == DW9786_PROJECT_VERSION) && (fw_version == DW9786_FW_VERSION) &&
-	    (release_date == DW9786_RELEASE_DATE) && (checksum == DW9786_FW_CHECKSUM)) {
-		LOG_INF("firmware is the latest version, no firmware update required");
-		return 0;
-	}
-
-	LOG_INF("firmware update required, start download firmware...");
-	int addr = MCS_START_ADDRESS;
-	dw9786_memory_area_select(MEMORY_AREA_CODE);
-	/* firmware memory erase */
-	for (uint32_t i = 0; i < DW9786_FMC_PAGE_NUM; ++i) {
-		I2C_WRITE_16BIT_OIS(0xED08, addr);    /* set erase address */
-		I2C_WRITE_16BIT_OIS(0xED0C, 0x0002);    /* sector erase(2KB) */
-		addr += 0x800;
-		mdelay(5);
-	}
-	/* flash firmware */
-	I2C_WRITE_16BIT_OIS(0xED28, MCS_START_ADDRESS);
-	for (uint32_t i = 0; i < DW9786_FW_SIZE; i += DW9786_FW_PACKET_SIZE) {
-		I2C_BLOCK_WRITE_OIS(0xED2C, (unsigned char*)(dw9786_fw_data + i), DW9786_FW_PACKET_SIZE);
-	}
-
-	uint32_t checksum_flash = dw9786_checksum(MEMORY_AREA_CODE);
-	if (checksum_flash != DW9786_FW_CHECKSUM) {
-		LOG_INF("flash checksum failed,!, firmware checksum: 0x%08X, flash checksum: 0x%08X", DW9786_FW_CHECKSUM, checksum_flash);
-		LOG_INF("firmware download failed,");
-		dw9786_chip_enable(false);
-		return -1;
-	}
-	LOG_INF("flash checksum passed!, checksum: 0x%08X", checksum_flash);
-	LOG_INF("firmware download success");
-
-	dw9786_device_reset();
-
-	return 0;
-}
-
-int dw9786_servo_on(void)
-{
-	I2C_WRITE_16BIT_OIS(DW9786_MODE_CONTROL_ADDR, 0x0001);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0002);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_AF_SERVO_ON_CONTROL, 0x0002);
-	mdelay(1);
-
-	if(dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x1022) == 0) {
-		LOG_INF("servo on success");
-		return 0;
-	}
-	LOG_INF("servo on failed,");
-
-	return -1;
-}
-
-int dw9786_servo_off(void)
-{
-	I2C_WRITE_16BIT_OIS(DW9786_MODE_CONTROL_ADDR, 0x0001);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0000);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_AF_SERVO_ON_CONTROL, 0x0000);
-	mdelay(1);
-
-	if(dw9786_wait_check_register(DW9786_STATUS_ADDR, 0x1000) == 0) {
-		LOG_INF("servo off success");
-		return 0;
-	}
-	LOG_INF("servo off failed,");
-
-	return -1;
-}
-
-int dw9786_ois_on_thread_func(void* data)
-{
-	uint16_t reg_value;
-	uint16_t ois_mode = 0;
-	mutex_lock(&dw9786_idle_mutex);
-	I2C_READ_16BIT_OIS(DW9786_MCU_ACTIVE_ADDR, ®_value);
-	LOG_INF("mcu active: 0x%04X", reg_value);
-	I2C_READ_16BIT_OIS(DW9786_STATUS_ADDR, ®_value);
-	LOG_INF("ois status: 0x%04X", reg_value);
-	LOG_INF("dw9786_idle_mutex: %p", &dw9786_idle_mutex);
-	I2C_READ_16BIT_OIS(DW9786_OIS_OP_MODE_ADDR, &ois_mode);
-	LOG_INF("ois mode: 0x%04X", ois_mode);
-
-	if (reg_value == 0x1021 && ois_mode == 0x8000) {
-		LOG_INF("ois has been enabled, return 0");
-		mutex_unlock(&dw9786_idle_mutex);
-		return 0;
-	}
-
-	I2C_WRITE_16BIT_OIS(DW9786_MODE_CONTROL_ADDR, 0x0001);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0002);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_AF_SERVO_ON_CONTROL, 0x0002);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_OIS_OP_MODE_ADDR, 0x8000);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(0xB96E, 0x1902);    /* set eis data sample rate */
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0001);
-	mdelay(1);
-	mutex_unlock(&dw9786_idle_mutex);
-
-	if(dw9786_check_register(DW9786_STATUS_ADDR, 0x1021) == 0) {
-		LOG_INF("ois on success");
-		return 0;
-	}
-	LOG_INF("ois on failed,");
-
-	return -1;
-}
-
-int dw9786_ois_on(void)
-{
-	int err;
-
-	LOG_ERR("dw9786_ois_on thread initalizing...\n");
-	struct task_struct *ois_on_task = kthread_create(dw9786_ois_on_thread_func, NULL, "ois_on_kthread");
-	if (IS_ERR(ois_on_task)) {
-		LOG_ERR("unable to start dw9786_ois_on thread/n");
-		err = PTR_ERR(ois_on_task);
-		ois_on_task = NULL;
-		dw9786_ois_on_thread_func(NULL);
-		return 0;
-	}
-	wake_up_process(ois_on_task);
-	return 0;
-}
-
-int dw9786_movie_on_thread_func(void* data)
-{
-	uint16_t ois_status = 0;
-	uint16_t ois_mode = 0;
-	mutex_lock(&dw9786_idle_mutex);
-	I2C_READ_16BIT_OIS(DW9786_STATUS_ADDR, &ois_status);
-	LOG_INF("ois status: 0x%04X", ois_status);
-	I2C_READ_16BIT_OIS(DW9786_OIS_OP_MODE_ADDR, &ois_mode);
-	LOG_INF("ois mode: 0x%04X", ois_mode);
-
-	if (ois_status == 0x1021 && ois_mode == 0x8001) {
-		LOG_INF("ois has been enabled, return 0");
-		mutex_unlock(&dw9786_idle_mutex);
-		return 0;
-	}
-
-	I2C_WRITE_16BIT_OIS(DW9786_MODE_CONTROL_ADDR, 0x0001);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0002);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_AF_SERVO_ON_CONTROL, 0x0002);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_OIS_OP_MODE_ADDR, 0x8001);
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(0xB96E, 0x1901);    /* set eis data sample rate */
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(DW9786_ACTIVE_CONTROL_ADDR, 0x0001);
-	mdelay(1);
-
-	if(dw9786_check_register(DW9786_STATUS_ADDR, 0x1021) == 0) {
-		LOG_INF("movie mode on success");
-		mutex_unlock(&dw9786_idle_mutex);
-		return 0;
-	}
-	LOG_ERR("movie mode on failed");
-	mutex_unlock(&dw9786_idle_mutex);
-
-	return -1;
-}
-
-int dw9786_movie_mode_on(void)
-{
-	int err;
-
-	struct task_struct *movie_on_task = kthread_create(dw9786_movie_on_thread_func, NULL, "movie_on_kthread");
-	if (IS_ERR(movie_on_task)) {
-		LOG_ERR("unable to start dw9786_movie_on thread/n");
-		err = PTR_ERR(movie_on_task);
-		movie_on_task = NULL;
-		dw9786_movie_on_thread_func(NULL);
-		return 0;
-	}
-	wake_up_process(movie_on_task);
-	return 0;
-}
-
-int dw9786_sleep_mode(void)
-{
-	int ret = -1;
-	int ret1 = -1;
-
-	mutex_lock(&dw9786_idle_mutex);
-	ret = dw9786_mcu_active(false);
-	ret1 = dw9786_chip_enable(false);
-	mutex_unlock(&dw9786_idle_mutex);
-	if (ret < 0 || ret1 < 0) {
-		LOG_INF("dw9786_sleep_mode failed %d ,%d", ret, ret1);
-		return -1;
-	}
-
-	return 0;
-}
-
-int dw9786_idle_mode_thread_func(void *arg)
-{
-	int ret = -1;
-	int ret1 = -1;
-
-	mutex_lock(&dw9786_idle_mutex);
-	LOG_INF("dw9786_idle_mutex: %p", &dw9786_idle_mutex);
-	ret = dw9786_chip_enable(true);
-	mdelay(5);
-	ret1 = dw9786_mcu_active(true);
-	mdelay(20);
-	mutex_unlock(&dw9786_idle_mutex);
-	if (ret < 0 || ret1 < 0) {
-		return -1;
-	}
-
-	LOG_ERR("idle_mode_thread return...");
-
-	return 0;
-}
-
-int dw9786_idle_mode(void)
-{
-	int err;
-	int ret = -1;
-	uint16_t mcu_active = 0;
-
-	ret = I2C_READ_16BIT_OIS(DW9786_MCU_ACTIVE_ADDR, &mcu_active);
-	LOG_INF("mcu_active: 0x%04X", mcu_active);
-	if (mcu_active == 0x0001) {
-		LOG_INF("have enter idle mode success");
-		return 0;
-	}
-
-	LOG_ERR("dw9786_idle_mode thread initalizing...\n");
-	struct task_struct *idle_mode_task = kthread_create(dw9786_idle_mode_thread_func, NULL, "idle_mode_kthread");
-	if (IS_ERR(idle_mode_task)) {
-		LOG_ERR("unable to start dw9786_idle_mode thread/n");
-		err = PTR_ERR(idle_mode_task);
-		idle_mode_task = NULL;
-		dw9786_idle_mode_thread_func(NULL);
-		return err;
-	}
-	wake_up_process(idle_mode_task);
-	return 0;
-}
-
-int dw9786_read_firmware(void)
-{
-	uint16_t *buffer = kmalloc(40960, GFP_KERNEL);
-	if (buffer == NULL) {
-		LOG_ERR("malloc buffer failed");
-		return -1;
-	}
-
-	I2C_WRITE_16BIT_OIS(DW9786_CHIP_EN_ADDR, 0x0000); /* shutdown mode */
-	mdelay(2);
-	I2C_WRITE_16BIT_OIS(DW9786_CHIP_EN_ADDR, 0x0001); /* standby mode */
-	mdelay(5);
-	I2C_WRITE_16BIT_OIS(0xE2F8, 0xC0DE);   /* code protection off */
-	mdelay(1);
-	I2C_WRITE_16BIT_OIS(0xED00, 0x0000);   /* select mcs */
-	mdelay(1);
-
-	for (uint16_t i = 0; i < DW9786_FW_SIZE; i += DW9786_FW_PACKET_SIZE) {
-		I2C_WRITE_16BIT_OIS(0xED28, MCS_START_ADDRESS + i);
-		I2C_BLOCK_READ_OIS(MCS_START_ADDRESS + i, (uint8_t*)buffer + i, DW9786_FW_PACKET_SIZE);
-	}
-
-	for (int i = 0; i < 40960; ++i) {
-		LOG_INF("addr: %d< 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, ", i,
-				buffer[i + 0], buffer[i + 1], buffer[i + 2], buffer[i + 3], buffer[i + 4], buffer[i + 5], buffer[i + 6], buffer[i + 7],
-				buffer[i + 8], buffer[i + 9], buffer[i + 10], buffer[i + 11], buffer[i + 12], buffer[i + 13], buffer[i + 14], buffer[i + 15]);
-	}
-
-	if (buffer) {
-		kfree(buffer);
-	}
-
-	return 0;
-}
-
diff --git a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786_if.h b/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786_if.h
deleted file mode 100755
index b5753ee8..00000000
--- a/vendor/oplus/kernel/camera/lens/ois/ois_dw9786/dw9786_if.h
+++ /dev/null
@@ -1,240 +0,0 @@
-#ifndef DW9786_IF_H
-#define DW9786_IF_H
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#include "hf_manager.h"
-#include "hf_sensor_io.h"
-#include "adaptor-i2c.h"
-
-#define DW9786_OIS_SLAVE_ADDR 0x19    /* OIS slave address(7bit) */
-#define DW9786_FLASH_SLAVE_ADDR 0x3A    /* flash memory slave address(7bit) */
-
-#define DW9786_CHIP_EN_ADDR 0xE000    /* standby mode enable, 0: sleep mode, 1: standby mode */
-#define DW9786_MCU_ACTIVE_ADDR 0xE004    /* idle mode, 0: standby mode, 1: idle mode(MCU on) */
-#define DW9786_DEVICE_RESET_ADDR 0xE008    /* device reset enable, 1: reset */
-#define DW9786_SPI_WORK_MODE_ADDR 0xB040    /* 0: master, 1: intercept */
-#define DW9786_IMU_TYPE_ADDR 0xB836    /* b'0110: bmi260 */
-#define DW9786_USER_PROTECTION_ADDR 0x97E6    /* 0xEA: user protect off, 0x00: user protect on */
-#define DW9786_USER_PROTECTION_A_ADDR 0xEDB0    /* 0xA23F: user protect a off, 0x00: user protect a on */
-#define DW9786_DUMMY_DATA_ADDR 0x3FFF
-#define DW9786_MODE_CONTROL_ADDR 0xB026
-#define DW9786_STATUS_ADDR 0xB020
-#define DW9786_MEMORY_AREA_SELECT_ADDR 0xB03E    /* 0x5959: set area, 0xA6A6: module area */
-#define DW9786_ACTIVE_CONTROL_ADDR 0xB022
-#define DW9786_AF_SERVO_ON_CONTROL 0xB024
-#define DW9786_DUMMY_DATA_ADDR 0x3FFF
-#define MCS_START_ADDRESS 0x6000
-#define LUT_START_ADDRESS 0x4000
-#define MCS_CHECKSUM_SIZE 10240
-#define GYRO_OFFSET_X_CALI_PASS 0x1
-#define GYRO_OFFSET_X_CALI_ERR 0x10
-#define GYRO_OFFSET_Y_CALI_PASS 0x2
-#define GYRO_OFFSET_Y_CALI_ERR 0x20
-#define DW9786_RELEASE_VERSION_H_ADDR 0x9800
-#define DW9786_RELEASE_VERSION_L_ADDR 0x9802
-#define DW9786_RELEASE_DATE_ADDR 0x9804
-#define DW9786_FMC_PAGE_NUM 20
-#define DW9786_FW_PACKET_SIZE 128
-#define DW9786_GYRO_GAIN_POL_X 0xB800
-#define DW9786_GYRO_GAIN_POL_Y 0xB802
-#define DW9786_GYRO_ROT_MAT_X 0xB812
-#define DW9786_GYRO_ROT_MAT_Y 0xB814
-#define DW9786_GYRO_GAIN_X 0xB806
-#define DW9786_GYRO_GAIN_Y 0xB808
-#define DW9786_GYRO_RAW_X_ADDR 0xB1A0
-#define DW9786_GYRO_RAW_Y_ADDR 0xB2A0
-#define DW9786_OIS_TARGET_X_ADDR 0xB118
-#define DW9786_OIS_TARGET_Y_ADDR 0xB218
-#define DW9786_OIS_HALL_X_ADDR 0xB104
-#define DW9786_OIS_HALL_Y_ADDR 0xB204
-#define DW9786_LEN_POS_X_ADDR 0xB102
-#define DW9786_LEN_POS_Y_ADDR 0xB202
-#define DW9786_TARGET_HALL_X_ADDR 0xB100
-#define DW9786_TARGET_HALL_Y_ADDR 0xB200
-#define DW9786_GYRO_GAIN_X_MAX 0x8000
-#define DW9786_GYRO_GAIN_Y_MAX 0x8000
-#define DW9786_TRIPOD_EN_ADDR 0xB028
-#define DW9786_OIS_OP_MODE_ADDR 0xB0B2
-
-#define DW9786_CHIP_ID_ADDR 0xB000
-#define DW9786_CHIP_ID_VAL 0x9786
-#define DW9786_PRODUCT_ID_ADDR 0xE018
-#define DW9786_FW_VERSION_ADDR 0xB002
-#define DW9786_FW_DATE_ADDR 0xB006
-
-#define DW9786_CHECK_LOOP_TIMES 200
-#define DW9786_CHECK_WAIT_TIME 100
-#define MEMORY_AREA_CODE 1
-#define MEMORY_AREA_LUT 2
-#define MEMORY_AREA_USER 3
-
-#define DW9786_TX_SIZE_32_BYTE  32
-#define DW9786_TX_SIZE_64_BYTE  64
-#define DW9786_TX_SIZE_128_BYTE  128
-#define DW9786_TX_SIZE_256_BYTE  256
-#define DW9786_TX_BUFFER_SIZE  DW9786_TX_SIZE_256_BYTE
-#define DW9786_RX_BUFFER_SIZE  4
-
-
-#define DW9786_REG_OIS_CTRL  0x0000
-#define DW9786_REG_OIS_STS  0x0001
-#define DW9786_REG_AF_CTRL  0x0200
-#define DW9786_REG_AF_STS   0x0201
-#define DW9786_REG_FWUP_CTRL  0x1000
-#define DW9786_REG_FWUP_ERR  0x1001
-#define DW9786_REG_FWUP_CHKSUM  0x1002
-#define DW9786_REG_APP_VER  0x1008
-#define DW9786_REG_DATA_BUF  0x1100
-
-#define DW9786_OIS_OFF   0x00
-#define DW9786_AF_OFF   0x00
-#define DW9786_STATE_READY  0x01
-#define DW9786_STATE_INIT  0x00
-#define DW9786_RESET_REQ   0x80
-#define DW9786_FWUP_CTRL_32_SET  0x01
-#define DW9786_FWUP_CTRL_64_SET  0x03
-#define DW9786_FWUP_CTRL_128_SET  0x05
-#define DW9786_FWUP_CTRL_256_SET  0x07
-
-#define DW9786_REG_GCAL_CTRL 0x0600
-#define DW9786_REG_GX_OFFSET 0x0604
-#define DW9786_REG_GY_OFFSET 0x0606
-#define DW9786_REG_OIS_ERR 0x0004
-#define DW9786_G_OFFSET_EN 0x01
-#define DW9786_ERR_GCALX 0x0100
-#define DW9786_ERR_GCALY 0x0200
-#define DW9786_NO_ERROR 0x0000
-
-#define DW9786_REGINFO_BLK_UP_CTRL 0x0300
-#define DW9786_OIS_INFO_EN 0x01
-#define DW9786_ERR_ODI 0x0040
-
-#define DW9786_HALL_DATA_START  0x1100
-
-#define DW9786_REG_OIS_CTRL  0x0000
-#define DW9786_REG_OIS_MODE  0x0002
-#define DW9786_REG_GX_GAIN 0x0608
-#define DW9786_REG_GY_GAIN 0x060C
-#define DW9786_OIS_ON   0x01
-#define DW9786_STILL_MODE   0x00
-#define DW9786_GX_GAIN_EN 0x02
-#define DW9786_GY_GAIN_EN 0x04
-#define DW9786_REG_GYRO_X 0x0B04
-#define DW9786_REG_GYRO_Y 0x0B06
-#define DW9786_REG_HALL_X 0x0700
-#define DW9786_REG_HALL_Y 0x0702
-#define DW9786_REG_GYRO_COMPUTED_X 0x0B08
-#define DW9786_REG_GYRO_COMPUTED_Y 0x0B0A
-#define DW9786_REG_SX_OUT 0x0B10
-#define DW9786_REG_SY_OUT 0x0B12
-#define DW9786_REG_STATMON_CTRL 0x0B00
-#define DW9786_REG_SLEEP_MODE 0x0080
-
-/* dw9786 device structure */
-struct dw9786_device {
-	struct v4l2_ctrl_handler ctrls;
-	struct v4l2_subdev subdev;
-	struct regulator *vin;
-	struct regulator *iovdd;
-	struct regulator *afvdd;
-	struct regulator *oisvdd;
-	struct hf_device hf_dev;
-	bool need_ois_on;
-};
-
-struct DW9786_GYRO_OFFSET {
-	uint16_t offset_x;
-	uint16_t offset_y;
-};
-
-enum IMU_TYPE {
-	IMU_TYPE_BMI260 = 0b0110,
-	IMU_TYPE_ICM45621 = 0b1110,
-};
-
-extern struct dw9786_device *dw9786;
-
-/* Log interfaces */
-#define LOG_INF(fmt, args...) pr_info("ois_dw9786 I [%s] " fmt, __func__, ##args)
-#define LOG_ERR(fmt, args...) pr_err("ois_dw9786 E [%s] " fmt, __func__, ##args)
-#define LOG_DBG(cond, ...)  do { if ( (cond) ) { LOG_INF(__VA_ARGS__); } }while(0)
-
-/* i2c communication interfaces */
-int i2c_read_8bit(uint16_t slave_addr, uint16_t reg_addr, uint8_t *data);
-int i2c_read_16bit(uint16_t slave_addr, uint16_t reg_addr, uint16_t *data);
-int i2c_read_32bit(uint16_t slave_addr, uint16_t reg_addr, uint32_t *data);
-int i2c_block_read(uint16_t slave_addr, uint16_t reg_addr, void *data, uint32_t size);
-int i2c_write_8bit(uint16_t slave_addr, uint16_t reg_addr, uint8_t data);
-int i2c_write_16bit(uint16_t slave_addr, uint16_t reg_addr, uint16_t data);
-int i2c_write_32bit(uint16_t slave_addr, uint16_t reg_addr, uint32_t data);
-int i2c_block_write(uint16_t slave_addr, uint16_t reg_addr, void *data, uint32_t size);
-
-/* i2c communation interfaces for OIS control*/
-#define I2C_READ_8BIT_OIS(reg_addr, data) i2c_read_8bit((DW9786_OIS_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_READ_16BIT_OIS(reg_addr, data) i2c_read_16bit((DW9786_OIS_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_READ_32BIT_OIS(reg_addr, data) i2c_read_32bit((DW9786_OIS_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_BLOCK_READ_OIS(reg_addr, data, size) i2c_block_read((DW9786_OIS_SLAVE_ADDR), (reg_addr), (data), (size))
-#define I2C_WRITE_8BIT_OIS(reg_addr, data) i2c_write_8bit((DW9786_OIS_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_WRITE_16BIT_OIS(reg_addr, data) i2c_write_16bit((DW9786_OIS_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_WRITE_32BIT_OIS(reg_addr, data) i2c_write_32bit((DW9786_OIS_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_BLOCK_WRITE_OIS(reg_addr, data, size) i2c_block_write((DW9786_OIS_SLAVE_ADDR), (reg_addr), (data), (size))
-
-/* i2c communation interfaces for firmware update*/
-#define I2C_READ_8BIT_FLASH(reg_addr, data) i2c_read_8bit((DW9786_FLASH_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_READ_16BIT_FLASH(reg_addr, data) i2c_read_16bit((DW9786_FLASH_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_READ_32BIT_FLASH(reg_addr, data) i2c_read_32bit((DW9786_FLASH_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_BLOCK_READ_FLASH(reg_addr, data, size) i2c_block_write((DW9786_FLASH_SLAVE_ADDR), (reg_addr), (data), (size))
-#define I2C_WRITE_8BIT_FLASH(reg_addr, data) i2c_write_8bit((DW9786_FLASH_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_WRITE_16BIT_FLASH(reg_addr, data) i2c_write_16bit((DW9786_FLASH_SLAVE_ADDR), (reg_addr), (data))
-#define I2C_BLOCK_WRITE_FLASH(reg_addr, data, size) i2c_block_write((DW9786_FLASH_SLAVE_ADDR), (reg_addr), (data), (size))
-
-/* delay interfaces */
-void dw9786_udelay(int us);
-void dw9786_mdelay(int ms);
-
-/* dw9786 functional interfaces */
-void dw9786_set_gyro_gain(uint32_t gain_x, uint32_t gain_y);
-int dw9786_set_hall(uint32_t hall_x, uint32_t hall_y);
-int dw9786_get_position(uint16_t* position_x, uint16_t* position_y);
-
-int dw9786_chip_enable(bool en);
-int dw9786_mcu_active(bool en);
-int dw9786_device_reset(void);
-void dw9786_chip_info(void);
-int dw9786_set_spi_work_mode(uint8_t mode);
-int dw9786_set_imu_type(uint8_t type);
-int dw9786_wait_check_register(uint16_t reg, uint16_t ref);
-int dw9786_check_register(uint16_t reg, uint16_t ref);
-int dw9786_check_and_write(uint16_t reg, uint16_t data, bool* rewrite_flag);
-uint32_t dw9786_calc_checksum(uint8_t *data, uint32_t length);
-int dw9786_module_store(void);
-int dw9786_set_store(void);
-int dw9786_module_erase(void);
-int dw9786_set_erase(void);
-uint32_t dw9786_read_flash_checksum(void);
-uint32_t dw9786_checksum(int type);
-void dw9786_memory_area_select(int type);
-int dw9786_auto_read_check(void);
-int dw9786_gyro_offset_calibration(uint16_t *offset_x, uint16_t *offset_y);
-int dw9786_update_fw(void);
-int dw9786_servo_on(void);
-int dw9786_servo_off(void);
-int dw9786_ois_on(void);
-int dw9786_movie_mode_on(void);
-int dw9786_sleep_mode(void);
-int dw9786_idle_mode(void);
-int dw9786_read_firmware(void);
-int dw9786_hall_calibration(void);
-int dw9786_servo_gain_calibration(void);
-int dw9786_lens_offset_calibration(void);
-
-#endif    /* DW9786_IF_H */
\ No newline at end of file
diff --git a/vendor/oplus/kernel/camera/lens/vcm/v4l2/gt9764v_24069/gt9764v_24069.c b/vendor/oplus/kernel/camera/lens/vcm/v4l2/gt9764v_24069/gt9764v_24069.c
index 1743ac0b..07cf44f8 100755
--- a/vendor/oplus/kernel/camera/lens/vcm/v4l2/gt9764v_24069/gt9764v_24069.c
+++ b/vendor/oplus/kernel/camera/lens/vcm/v4l2/gt9764v_24069/gt9764v_24069.c
@@ -35,11 +35,13 @@
  * number of control steps.
  */
 #define GT9764_MOVE_STEPS			50
+#define GT9764_MOVE_STEPS_100			100
 #define GT9764_MOVE_DELAY_US			5000
 
 #define VIDIOC_MTK_SET_LOCK        _IOWR('V', BASE_VIDIOC_PRIVATE + 6, int)
 
 static bool firstPowerOn = false;
+static bool isVibration = false;
 
 /* gt9764 device structure */
 struct gt9764_device {
@@ -75,6 +77,10 @@ static int gt9764_set_position(struct gt9764_device *gt9764, u16 val)
 
 	if(firstPowerOn) {
 		int ret;
+		int diff_dac = 0;
+		int nStep_count = 0;
+		int i = 0;
+
 		LOG_INF("init +\n");
 		ret = i2c_smbus_read_byte_data(client, 0x00);
 		LOG_INF("Check HW version: %x\n", ret);
@@ -86,6 +92,21 @@ static int gt9764_set_position(struct gt9764_device *gt9764, u16 val)
 		i2c_smbus_write_byte_data(client, 0x07, 0x02);
 		firstPowerOn = false;
 
+		nStep_count = val / GT9764_MOVE_STEPS_100;
+
+		for (i = 0; i < nStep_count; ++i) {
+			diff_dac += GT9764_MOVE_STEPS_100;
+			ret = i2c_smbus_write_word_data(client, GT9764_SET_POSITION_ADDR,
+						swab16(diff_dac));
+			if (ret) {
+				LOG_INF("%s I2C failure: %d",
+					__func__, ret);
+				return ret;
+			}
+			usleep_range(GT9764_MOVE_DELAY_US,
+					GT9764_MOVE_DELAY_US + 1000);
+		}
+
 		LOG_INF("init -\n");
 	}
 
@@ -95,6 +116,11 @@ static int gt9764_set_position(struct gt9764_device *gt9764, u16 val)
 
 static int gt9764_release(struct gt9764_device *gt9764)
 {
+	if (isVibration) {
+		LOG_INF("isVibration is true,release out");
+		isVibration = false;
+		return 0;
+	}
 	int ret, val;
 	int diff_dac = 0;
 	int nStep_count = 0;
@@ -262,27 +288,20 @@ static int gt9764v_set_lock(struct gt9764_device *gt9764, void *arg)
 {
 	struct i2c_client *client = v4l2_get_subdevdata(>9764->sd);
 	int *val = (int *)arg;
-	int val1 = 170;  //(val1/1023)*120 = 20ma
+	int val1 = 0x019A;  //512 - (20*511/100) = 20ma
 	LOG_INF("setvibration lock in val:%d", *val);
 	if (*val == 1) {
 		LOG_INF("setvibration lock");
 		i2c_smbus_write_byte_data(client, 0x02, 0x00);
-		i2c_smbus_write_byte_data(client, 0x0B, 0x12);
+		i2c_smbus_write_byte_data(client, 0x0B, 0x02);
 		i2c_smbus_write_byte_data(client, 0x02, 0x02);
 		i2c_smbus_write_byte_data(client, 0x06, 0x40);
 		i2c_smbus_write_byte_data(client, 0x07, 0x02);
 		i2c_smbus_write_word_data(client, GT9764_SET_POSITION_ADDR,
 				swab16(val1));
+		isVibration = true;
 	} else if (*val == 0){
-		LOG_INF("setvibration unlock in");
-		val1 = 150;
-		while (val1 > 0){
-			i2c_smbus_write_word_data(client, GT9764_SET_POSITION_ADDR,
-					swab16(val1));
-			val1 = val1 - 2;
-			usleep_range(1000, 1100);
-		}
-		LOG_INF("setvibration unlock out");
+		LOG_INF("setvibration unlock");
 	} else {
 		LOG_INF("setvibration error");
 	}
diff --git a/vendor/oplus/kernel/camera/oplus_local_modules.bzl b/vendor/oplus/kernel/camera/oplus_local_modules.bzl
index 12ade0af..07a3247c 100755
--- a/vendor/oplus/kernel/camera/oplus_local_modules.bzl
+++ b/vendor/oplus/kernel/camera/oplus_local_modules.bzl
@@ -166,29 +166,6 @@ def define_oplus_local_modules():
         includes = ["."],
     )
 
-    define_oplus_ddk_module(
-        name = "oplus_camera_dw9786",
-        srcs = native.glob([
-            "**/*.h",
-            "lens/ois/dw9786/adaptor-i2c.c",
-            "lens/ois/dw9786/dw9786af.c",
-        ]),
-        ko_deps = ["//vendor/mediatek/kernel_modules/mtkcam/cam_cal/src_v4l2/custom:mtk_cam_cal",],
-        includes = ["."],
-    )
-
-    define_oplus_ddk_module(
-        name = "oplus_camera_ois_dw9786",
-        srcs = native.glob([
-            "**/*.h",
-            "lens/ois/ois_dw9786/adaptor-i2c.c",
-            "lens/ois/ois_dw9786/dw9786_if.c",
-            "lens/ois/ois_dw9786/dw9786.c",
-        ]),
-        ko_deps = ["//vendor/mediatek/kernel_modules/mtkcam/cam_cal/src_v4l2/custom:mtk_cam_cal",],
-        includes = ["."],
-    )
-
     define_oplus_ddk_module(
         name = "oplus_camera_aw36515_brza",
         srcs = native.glob([
@@ -259,8 +236,6 @@ def define_oplus_local_modules():
             "oplus_camera_ak7316t",
             "oplus_camera_ak7316t33",
             "oplus_camera_jd5516w",
-            "oplus_camera_dw9786",
-            "oplus_camera_ois_dw9786",
             "oplus_camera_ois_power",
             "oplus_camera_tof8801",
             "oplus_camera_jd5516we4",
diff --git a/vendor/oplus/kernel/camera/regulator/wl28681c1-regulator.c b/vendor/oplus/kernel/camera/regulator/wl28681c1-regulator.c
index fa596b29..e14fa9c7 100755
--- a/vendor/oplus/kernel/camera/regulator/wl28681c1-regulator.c
+++ b/vendor/oplus/kernel/camera/regulator/wl28681c1-regulator.c
@@ -267,6 +267,7 @@ static int multi_reg_i2c_probe(struct i2c_client *i2c)
         }
     }
 
+    mdelay(1);
     /*process the fan53870 wl2868 wl28681c IC*/
     pdata->regmap = devm_regmap_init_i2c(i2c, &multi_reg_regmap);
     if (IS_ERR(pdata->regmap)) {
@@ -317,6 +318,11 @@ static int multi_reg_i2c_probe(struct i2c_client *i2c)
         }
         dev_info(&i2c->dev, "register regulator ldo %s ok\n", multi_reg_regulators[i].name);
     }
+
+{
+// disable UVP
+    ret = regmap_write(pdata->regmap, 0x11, 0x07);
+}
     g_pdata = pdata;
     ret = device_create_file(&i2c->dev, &dev_attr_debug_i2c_ops);
     dev_info(&i2c->dev, "regulator probe end\n");
diff --git a/vendor/oplus/kernel/charger/gauge_ic/oplus_cw2217b.c b/vendor/oplus/kernel/charger/gauge_ic/oplus_cw2217b.c
index 16af589f..9d4d3a50 100755
--- a/vendor/oplus/kernel/charger/gauge_ic/oplus_cw2217b.c
+++ b/vendor/oplus/kernel/charger/gauge_ic/oplus_cw2217b.c
@@ -473,12 +473,30 @@ static int cw_update_data(struct cw_battery *cw_bat)
 {
 	int ret = NUM_0;
 
-	ret += cw_get_voltage(cw_bat);
-	ret += cw_get_capacity(cw_bat);
-	ret += cw_get_temp(cw_bat);
-	ret += cw_get_current(cw_bat);
-	ret += cw_get_cycle_count(cw_bat);
-	ret += cw_get_soh(cw_bat);
+	ret = cw_get_voltage(cw_bat);
+	if (ret < 0)
+		chg_err("cw_get_voltage error, ret = %d\n", ret);
+
+	ret = cw_get_capacity(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_capacity error, ret = %d\n", ret);
+
+	ret = cw_get_temp(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_temp error, ret = %d\n", ret);
+
+	ret = cw_get_current(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_current error, ret = %d\n", ret);
+
+	ret = cw_get_cycle_count(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_cycle_count error, ret = %d\n", ret);
+
+	ret = cw_get_soh(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_soh error, ret = %d\n", ret);
+
 	chg_err("vol = %d  current = %ld cap = %d temp = %d\n",
 		cw_bat->voltage, cw_bat->cw_current, cw_bat->ui_soc, cw_bat->temp);
 
@@ -489,14 +507,38 @@ static int cw_init_data(struct cw_battery *cw_bat)
 {
 	int ret = NUM_0;
 
-	ret += cw_get_chip_id(cw_bat);
-	ret += cw_get_voltage(cw_bat);
-	ret += cw_get_capacity(cw_bat);
-	ret += cw_get_temp(cw_bat);
-	ret += cw_get_current(cw_bat);
-	ret += cw_get_cycle_count(cw_bat);
-	ret += cw_get_soh(cw_bat);
-	ret += cw_get_fw_version(cw_bat);
+	ret = cw_get_chip_id(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_chip_id error, ret = %d\n", ret);
+
+	ret = cw_get_voltage(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_voltage error, ret = %d\n", ret);
+
+	ret = cw_get_capacity(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_capacity error, ret = %d\n", ret);
+
+	ret = cw_get_temp(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_temp error, ret = %d\n", ret);
+
+	ret = cw_get_current(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_current error, ret = %d\n", ret);
+
+	ret = cw_get_cycle_count(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_cycle_count error, ret = %d\n", ret);
+
+	ret = cw_get_soh(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_soh error, ret = %d\n", ret);
+
+	ret = cw_get_fw_version(cw_bat);
+	if (ret < 0)
+        	chg_err("cw_get_fw_version error, ret = %d\n", ret);
+
 	chg_err("chip_id = %d vol = %d  cur = %ld cap = %d temp = %d  fw_version = %d\n",
 		cw_bat->chip_id, cw_bat->voltage, cw_bat->cw_current, cw_bat->ui_soc, cw_bat->temp, cw_bat->fw_version);
 
diff --git a/vendor/oplus/kernel/charger/oplus_charger.c b/vendor/oplus/kernel/charger/oplus_charger.c
index 3fb1dbe5..e013d5ca 100755
--- a/vendor/oplus/kernel/charger/oplus_charger.c
+++ b/vendor/oplus/kernel/charger/oplus_charger.c
@@ -11610,14 +11610,16 @@ void monitor_ui_soc_to_enable_chg_up_limit(struct oplus_chg_chip *chip)
 			over_count = 0;
 			oplus_enforce_chg_up_limit_result(chip, true);
 			return;
-		} else if (chip->ui_soc == chg_up_limit_data.charge_limit_value) {
+		} else if (chip->ui_soc == chg_up_limit_data.charge_limit_value &&
+			chg_up_limit_data.charge_limit_value < OPLUS_FULL_SOC) {
 			over_count++;
 			if (over_count >= CHG_UP_DELAY_COUNT) {
 				over_count = CHG_UP_DELAY_COUNT;
 				oplus_enforce_chg_up_limit_result(chip, true);
 			}
 			return;
-		} else if (chip->ui_soc >= chg_up_limit_data.charge_limit_recharge_value) {
+		} else if (chip->ui_soc >= chg_up_limit_data.charge_limit_recharge_value &&
+			chg_up_limit_data.charge_limit_recharge_value < OPLUS_FULL_SOC) {
 			over_count = 0;
 			return;
 		} else {
diff --git a/vendor/oplus/kernel/charger/pd_ext/inc/tcpci.h b/vendor/oplus/kernel/charger/pd_ext/inc/tcpci.h
index b6f06c37..688e0078 100755
--- a/vendor/oplus/kernel/charger/pd_ext/inc/tcpci.h
+++ b/vendor/oplus/kernel/charger/pd_ext/inc/tcpci.h
@@ -151,6 +151,7 @@ int tcpci_notify_wd0_state(struct tcpc_device *tcpc, bool wd0_state);
 int tcpci_notify_chrdet_state(struct tcpc_device *tcpc, bool uvlo_state);
 int tcpci_notify_bc12_complete_state(struct tcpc_device *tcpc, bool bc12_complete_state);
 int tcpci_notify_hvdcp_detect_dn(struct tcpc_device *tcpc, bool hvdcp_detect_dn);
+int tcpci_notify_sourcecap_done(struct tcpc_device *tcpc, struct power_caps *info);
 #endif
 int tcpci_notify_plug_out(struct tcpc_device *tcpc);
 
diff --git a/vendor/oplus/kernel/charger/pd_ext/inc/tcpm.h b/vendor/oplus/kernel/charger/pd_ext/inc/tcpm.h
index fd0206bb..31515509 100755
--- a/vendor/oplus/kernel/charger/pd_ext/inc/tcpm.h
+++ b/vendor/oplus/kernel/charger/pd_ext/inc/tcpm.h
@@ -152,10 +152,22 @@ enum {
 	TCP_NOTIFY_CHRDET_STATE,
 	TCP_NOTIFY_BC12_COMPLETE_STATE,
 	TCP_NOTIFY_HVDCP_DETECT_DN,
-	TCP_NOTIFY_MISC_END = TCP_NOTIFY_HVDCP_DETECT_DN,
+	TCP_NOTIFY_PD_SOURCECAP_DONE,
+	TCP_NOTIFY_MISC_END = TCP_NOTIFY_PD_SOURCECAP_DONE,
 #endif
 };
 
+#ifdef OPLUS_FEATURE_CHG_BASIC
+struct power_caps {
+	uint8_t nr;
+	uint32_t pdos[7];
+};
+
+struct tcp_ny_srccap {
+	const struct power_caps *caps;
+};
+#endif
+
 struct tcp_ny_pd_state {
 	uint8_t connected;
 };
@@ -391,6 +403,7 @@ struct tcp_notify {
 		struct tcp_ny_chrdet_state chrdet_state;
 		struct tcp_ny_bc12_complete_state bc12_complete_state;
 		struct tcp_ny_hvdcp_detect_dn hvdcp_detect;
+		struct tcp_ny_srccap caps_msg;
 #endif
 	};
 };
diff --git a/vendor/oplus/kernel/charger/pd_ext/pd_dpm_core.c b/vendor/oplus/kernel/charger/pd_ext/pd_dpm_core.c
index 54661312..db46d837 100755
--- a/vendor/oplus/kernel/charger/pd_ext/pd_dpm_core.c
+++ b/vendor/oplus/kernel/charger/pd_ext/pd_dpm_core.c
@@ -376,6 +376,11 @@ static bool dpm_build_request_info(
 	for (i = 0; i < src_cap->nr; i++)
 		DPM_INFO("SrcCap%d: 0x%08x\n", i+1, src_cap->pdos[i]);
 
+#ifdef OPLUS_FEATURE_CHG_BASIC
+	if (src_cap->pdos[0])
+		tcpci_notify_sourcecap_done(tcpc, (struct power_caps *)src_cap);
+#endif
+
 #ifdef CONFIG_USB_PD_REV30_PPS_SINK
 	if ((charging_policy & DPM_CHARGING_POLICY_MASK)
 		== DPM_CHARGING_POLICY_PPS) {
@@ -703,11 +708,19 @@ void pd_dpm_snk_standby_power(struct pd_port *pd_port)
 		/* Case8 Decreasing the Voltage and the Current*/
 		ma = standby_curr;
 		type = TCP_VBUS_CTRL_STANDBY_DOWN;
+#ifdef OPLUS_FEATURE_CHG_BASIC
+	} else if (pd_port->request_i == -1 || pd_port->request_i_new < pd_port->request_i) {
+		/* Case6 Decreasing the Current, t1 i = new */
+		ma = standby_curr;
+		type = TCP_VBUS_CTRL_STANDBY;
+	}
+#else
 	} else if (pd_port->request_i_new < pd_port->request_i) {
 		/* Case6 Decreasing the Current, t1 i = new */
 		ma = pd_port->request_i_new;
 		type = TCP_VBUS_CTRL_STANDBY;
 	}
+#endif
 
 	if (ma >= 0)
 		tcpci_sink_vbus(pd_port->tcpc, type, pd_port->request_v_new, 0);
diff --git a/vendor/oplus/kernel/charger/pd_ext/pd_policy_engine_snk.c b/vendor/oplus/kernel/charger/pd_ext/pd_policy_engine_snk.c
index c80c584c..bb177ed9 100755
--- a/vendor/oplus/kernel/charger/pd_ext/pd_policy_engine_snk.c
+++ b/vendor/oplus/kernel/charger/pd_ext/pd_policy_engine_snk.c
@@ -81,6 +81,7 @@ void pe_snk_evaluate_capability_entry(struct pd_port *pd_port)
 	pd_handle_first_pd_command(pd_port);
 
 #ifdef OPLUS_FEATURE_CHG_BASIC
+	pd_port->request_i = -1;
 	pd_dpm_snk_evaluate_caps(pd_port);
 	pd_port->pe_data.explicit_contract = false;
 #else
diff --git a/vendor/oplus/kernel/charger/pd_ext/tcpc_rt1711h.c b/vendor/oplus/kernel/charger/pd_ext/tcpc_rt1711h.c
index b192e1fb..22507920 100755
--- a/vendor/oplus/kernel/charger/pd_ext/tcpc_rt1711h.c
+++ b/vendor/oplus/kernel/charger/pd_ext/tcpc_rt1711h.c
@@ -41,7 +41,7 @@
 
 #define RT1711H_DRV_VERSION	"2.0.6_G"
 
-#define RT1711H_IRQ_WAKE_TIME	(500) /* ms */
+#define RT1711H_IRQ_WAKE_TIME	(1000) /* ms */
 
 
 #define RICHTEK_1711_VID	0x29cf
diff --git a/vendor/oplus/kernel/charger/pd_ext/tcpci.c b/vendor/oplus/kernel/charger/pd_ext/tcpci.c
index 500040ec..b1e1263b 100755
--- a/vendor/oplus/kernel/charger/pd_ext/tcpci.c
+++ b/vendor/oplus/kernel/charger/pd_ext/tcpci.c
@@ -678,6 +678,16 @@ bool tcpm_inquire_usb_comm(struct tcpc_device *tcpc)
 	return !!(pd_port->pe_data.dpm_flags & DPM_FLAGS_PARTNER_USB_COMM);
 }
 EXPORT_SYMBOL(tcpm_inquire_usb_comm);
+
+int tcpci_notify_sourcecap_done(struct tcpc_device *tcpc, struct power_caps *info)
+{
+	struct tcp_notify tcp_noti;
+
+	tcp_noti.caps_msg.caps = info;
+
+	return tcpc_check_notify_time(tcpc, &tcp_noti, TCP_NOTIFY_IDX_MISC,
+					TCP_NOTIFY_PD_SOURCECAP_DONE);
+}
 #endif
 
 
diff --git a/vendor/oplus/kernel/charger/v2/Makefile b/vendor/oplus/kernel/charger/v2/Makefile
index c075ed25..946a0f9b 100755
--- a/vendor/oplus/kernel/charger/v2/Makefile
+++ b/vendor/oplus/kernel/charger/v2/Makefile
@@ -21,7 +21,9 @@ ccflags-y += -Werror=format
 ccflags-y += -DOPLUS_CHG_KO_BUILD
 
 ifeq ($(CONFIG_OPLUS_CHARGER_MTK),y)
+ifndef CONFIG_OPLUS_PD_EXT_SUPPORT
 subdir-ccflags-y += -I$(DEVICE_MODULES_PATH)/drivers/misc/mediatek/typec/tcpc/inc
+endif
 subdir-ccflags-y += -I$(DEVICE_MODULES_PATH)/drivers/misc/mediatek/include/mt-plat
 subdir-ccflags-y += -I$(DEVICE_MODULES_PATH)/drivers/misc/mediatek/include
 
diff --git a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_adsp.c b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_adsp.c
index c36eafe1..0f14c6ce 100644
--- a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_adsp.c
+++ b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_adsp.c
@@ -64,6 +64,7 @@
 #define CID_STATUS_DELAY_MS 55
 #define OPLUS_VND_POWER_INFO_MAX 7
 #define GAUGE_INVALID_TEMP (-400)
+#define IBATT_FULL_CURR_DEFAULT 1000
 
 #define AICL_POINT_VOL_5V           4100
 #define HW_AICL_POINT_VOL_5V_PHASE1 4400
@@ -97,7 +98,10 @@ static int oplus_chg_set_input_current_with_no_aicl(struct battery_chg_dev *bcde
 static bool oplus_vooc_get_fastchg_ing(struct battery_chg_dev *bcdev);
 static bool is_common_topic_available(struct battery_chg_dev *bcdev);
 static bool oplus_get_ufcs_charging(struct battery_chg_dev *bcdev);
+static bool oplus_get_oplus_ufcs(struct battery_chg_dev *bcdev);
+static unsigned int oplus_update_batt_full_para(struct battery_chg_dev *bcdev);
 __maybe_unused static bool oplus_get_pps_charging(struct battery_chg_dev *bcdev);
+__maybe_unused static bool oplus_get_oplus_pps(struct battery_chg_dev *bcdev);
 static int oplus_chg_set_input_current(struct battery_chg_dev *bcdev, int current_ma);
 static int oplus_get_pps_info_from_adsp(struct oplus_chg_ic_dev *ic_dev, u32 *pdo, int num);
 static int oplus_chg_set_aicl_point(struct oplus_chg_ic_dev *ic_dev, int vbatt);
@@ -383,15 +387,15 @@ static int oem_read_buffer(struct battery_chg_dev *bcdev)
 	return oem_battery_chg_write(bcdev, &req_msg, sizeof(req_msg));
 }
 
-static void oplus_adsp_voocphy_set_full_para_qbg(struct battery_chg_dev *bcdev, u8 fcss_status);
+static void oplus_adsp_voocphy_set_full_para_qbg(struct battery_chg_dev *bcdev, u32 fcss_status);
 static void oplus_get_props_from_adsp_by_buffer(void)
 {
 	struct battery_chg_dev *bcdev = g_bcdev;
 	union mms_msg_data data = { 0 };
 	unsigned int ffc_status = 0, temp_region = 5;
 	bool fastchg_ing = false;
-	static u8 pre_fcss_status = 0;
-	u8 fcss_status = 0;
+	static u32 pre_fcss_status = 0;
+	u32 fcss_status = 0;
 
 	if (!bcdev) {
 		chg_err("bcdev is null, oplus_get_batt_argv_buffer\n");
@@ -402,26 +406,30 @@ static void oplus_get_props_from_adsp_by_buffer(void)
 	if(bcdev->read_buffer_dump.data_buffer[14] == 0)
 		return;
 
-	if (is_common_topic_available(bcdev)) {
-		oplus_mms_get_item_data(bcdev->common_topic, COMM_ITEM_TEMP_REGION, &data,
-				false);
-		temp_region = data.intval;
-		oplus_mms_get_item_data(bcdev->common_topic, COMM_ITEM_FFC_STATUS,
-				&data, false);
-		ffc_status = data.intval;
-	} else {
-		chg_err("common topic not found\n");
-	}
+	if (!bcdev->batt_full_method_new) {
+		if (is_common_topic_available(bcdev)) {
+			oplus_mms_get_item_data(bcdev->common_topic, COMM_ITEM_TEMP_REGION,
+					&data, false);
+			temp_region = data.intval;
+			oplus_mms_get_item_data(bcdev->common_topic, COMM_ITEM_FFC_STATUS,
+					&data, false);
+			ffc_status = data.intval;
+		} else {
+			chg_err("common topic not found\n");
+		}
 
-	fastchg_ing = oplus_vooc_get_fastchg_ing(bcdev) ||
-	    oplus_get_ufcs_charging(bcdev) ||
-	    oplus_get_pps_charging(bcdev);
-	fcss_status = fastchg_ing | ((u8)ffc_status << 1) | ((u8)temp_region << 3);
+		fastchg_ing = oplus_vooc_get_fastchg_ing(bcdev) ||
+		        oplus_get_ufcs_charging(bcdev) ||
+		        oplus_get_pps_charging(bcdev);
+		fcss_status = fastchg_ing | ((u8)ffc_status << 1) | ((u8)temp_region << 3);
+	} else {
+		fcss_status = oplus_update_batt_full_para(bcdev);
+	}
 
 	if(pre_fcss_status != fcss_status) {
 		oplus_adsp_voocphy_set_full_para_qbg(bcdev, fcss_status);
 		pre_fcss_status = fcss_status;
-		chg_info("fcss_status is %d\n", fcss_status);
+		chg_info("method %d, fcss_status is %d\n", bcdev->batt_full_method_new, fcss_status);
 	}
 }
 
@@ -1152,7 +1160,7 @@ static bool is_common_topic_available(struct battery_chg_dev *bcdev)
 	return !!bcdev->common_topic;
 }
 
-static void oplus_adsp_voocphy_set_full_para_qbg(struct battery_chg_dev *bcdev, u8 fcss_status)
+static void oplus_adsp_voocphy_set_full_para_qbg(struct battery_chg_dev *bcdev, u32 fcss_status)
 {
 	int rc = 0;
 	struct psy_state *pst = &bcdev->psy_list[PSY_TYPE_BATTERY];
@@ -4818,6 +4826,30 @@ static int oplus_chg_parse_custom_dt(struct battery_chg_dev *bcdev)
 			chg_info(" valid_temp[%d] = %d", i, bcdev->sub_btb_valid_temp[i]);
 	}
 
+	bcdev->batt_full_method_new = of_property_read_bool(node, "oplus,batt_full_method_new");
+	chg_info("get batt_full_method_new %d\n", bcdev->batt_full_method_new);
+
+	if (bcdev->batt_full_method_new) {
+		rc = read_signed_data_from_node(node, "oplus,batt_full_temp",
+						(u32 *)bcdev->batt_full_temp, QBG_TEMP_MAX);
+		if (rc < 0) {
+			chg_err("get oplus,batt_full_temp property error, use old method, rc=%d\n",
+				rc);
+			bcdev->batt_full_method_new = false;
+		}
+	}
+
+	if (bcdev->batt_full_method_new) {
+		rc = read_unsigned_data_from_node(node, "oplus,batt_full_para",
+						(u32 *)bcdev->batt_full_para,
+						CHARGING_TYPE_MAX * QBG_TEMP_MAX);
+		if (rc < 0) {
+			chg_err("get oplus,batt_full_para property error, use old method, rc=%d\n",
+				rc);
+			bcdev->batt_full_method_new = false;
+		}
+	}
+
 	return 0;
 }
 #endif /*OPLUS_FEATURE_CHG_BASIC*/
@@ -5224,6 +5256,9 @@ static void oplus_plugin_irq_work(struct work_struct *work)
 	if (usb_pre_plugin_status != usb_plugin_status || !usb_plugin_status) {
 		oplus_chg_suspend_charger(false, PD_PDO_ICL_VOTER);
 		oplus_chg_ic_virq_trigger(bcdev->buck_ic, OPLUS_IC_VIRQ_PLUGIN);
+		if (bcdev->qcom_gauge_cali_track_support &&
+		    usb_pre_plugin_status != usb_plugin_status)
+			schedule_work(&bcdev->gauge_cali_track_by_plug_work);
 	}
 	if (usb_pre_plugin_status != usb_plugin_status && !usb_pre_plugin_status)
 		bcdev->read_by_reg = 0;
@@ -5289,6 +5324,25 @@ __maybe_unused static bool oplus_get_pps_charging(struct battery_chg_dev *bcdev)
 	return pps_charging;
 }
 
+__maybe_unused static bool oplus_get_oplus_pps(struct battery_chg_dev *bcdev)
+{
+	bool oplus_pps = false;
+	union mms_msg_data data = {0};
+
+	if (!bcdev)
+		return false;
+
+	if (!bcdev->pps_topic)
+		bcdev->pps_topic = oplus_mms_get_by_name("pps");
+
+	if (bcdev->pps_topic) {
+		oplus_mms_get_item_data(bcdev->pps_topic,
+					PPS_ITEM_OPLUS_ADAPTER, &data, false);
+		oplus_pps = !!data.intval;
+	}
+	return oplus_pps;
+}
+
 static bool oplus_get_ufcs_charging(struct battery_chg_dev *bcdev)
 {
 	bool ufcs_charging = false;
@@ -5309,6 +5363,96 @@ static bool oplus_get_ufcs_charging(struct battery_chg_dev *bcdev)
 	return ufcs_charging;
 }
 
+static bool oplus_get_oplus_ufcs(struct battery_chg_dev *bcdev)
+{
+	bool oplus_ufcs = false;
+	union mms_msg_data data = {0};
+
+	if (!bcdev)
+		return false;
+
+	if (!bcdev->ufcs_topic)
+		bcdev->ufcs_topic = oplus_mms_get_by_name("ufcs");
+
+	if (bcdev->ufcs_topic) {
+		oplus_mms_get_item_data(bcdev->ufcs_topic,
+					UFCS_ITEM_OPLUS_ADAPTER, &data, false);
+		oplus_ufcs = !!data.intval;
+	}
+	return oplus_ufcs;
+}
+
+
+static unsigned int oplus_update_batt_full_para(struct battery_chg_dev *bcdev)
+{
+	unsigned int ibatt_full_cur = 0;
+	union mms_msg_data data = {0};
+	int charging_status = 0;
+	int temp_region = 0;
+	static unsigned int pre_ibatt_full_cur = IBATT_FULL_CURR_DEFAULT;
+	int temp = 250;
+	unsigned int ffc_status = 0;
+
+	if (is_common_topic_available(bcdev)) {
+		oplus_mms_get_item_data(bcdev->common_topic, COMM_ITEM_FFC_STATUS,
+				&data, false);
+		ffc_status = data.intval;
+
+		oplus_mms_get_item_data(bcdev->common_topic, COMM_ITEM_SHELL_TEMP,
+				&data, false);
+		temp = data.intval;
+	} else {
+		chg_err("common topic not found, return\n");
+		goto exit;
+	}
+
+	if (temp < bcdev->batt_full_temp[QBG_TEMP_COOL])    /* - 12 */
+		temp_region = QBG_TEMP_COLD;
+	else if (temp < bcdev->batt_full_temp[QBG_TEMP_NORMAL])   /* 12 - 21 */
+		temp_region = QBG_TEMP_COOL;
+	else if (temp < bcdev->batt_full_temp[QBG_TEMP_WARM])  /* 21 - 44 */
+		temp_region = QBG_TEMP_NORMAL;
+	else  /* 44 -  */
+		temp_region = QBG_TEMP_WARM;
+
+	if (oplus_vooc_get_fastchg_ing(bcdev)) {
+		charging_status = CHARGING_TYPE_VOOC_SVOOC;
+	} else if (oplus_get_ufcs_charging(bcdev)) {
+		if (oplus_get_oplus_ufcs(bcdev))
+			charging_status = CHARGING_TYPE_OPLUS_UFCS;
+		else
+			charging_status = CHARGING_TYPE_THIRD_UFCS;
+	} else if (oplus_get_pps_charging(bcdev)) {
+		if (oplus_get_oplus_pps(bcdev))
+			charging_status = CHARGING_TYPE_OPLUS_PPS;
+		else
+			charging_status = CHARGING_TYPE_THIRD_PPS;
+	} else {
+		if (ffc_status == FFC_WAIT || ffc_status == FFC_FAST)
+			charging_status = CHARGING_TYPE_FFC;
+		else
+			charging_status = CHARGING_TYPE_UNKNOW;
+	}
+
+	if (charging_status < CHARGING_TYPE_MAX && temp_region < QBG_TEMP_MAX)
+		ibatt_full_cur = bcdev->batt_full_para[charging_status][temp_region];
+	else
+		goto exit;
+
+	if (pre_ibatt_full_cur == ibatt_full_cur)
+		goto exit;
+
+	chg_info("pre_ibatt_full_cur = %d, ibatt_full_cur = %d, charging_status = %d, temp = %d, temp_region = %d\n",
+		pre_ibatt_full_cur, ibatt_full_cur, charging_status, temp, temp_region);
+
+	pre_ibatt_full_cur = ibatt_full_cur;
+
+	return ibatt_full_cur;
+
+exit:
+	return pre_ibatt_full_cur;
+}
+
 __maybe_unused static int fg_sm8350_get_battery_mvolts_max(void)
 {
 	int rc = 0;
@@ -5612,9 +5756,24 @@ static bool fg_sm8350_get_battery_hmac(struct battery_chg_dev *bcdev)
 	return pst->prop[BATT_BATTERY_HMAC];
 }
 
-static void fg_sm8350_set_battery_full(bool full)
+static int fg_sm8350_set_battery_full(struct oplus_chg_ic_dev *ic_dev, bool full)
 {
-	/*Do nothing*/
+	int rc = 0;
+	struct battery_chg_dev *bcdev;
+
+	if (ic_dev == NULL) {
+		chg_err("oplus_chg_ic_dev is NULL");
+		return -ENODEV;
+	}
+
+	bcdev = oplus_chg_ic_get_drvdata(ic_dev);
+	if (!bcdev)
+		return -ENODEV;
+
+	if(full && bcdev->qcom_gauge_cali_track_support)
+		schedule_work(&bcdev->gauge_cali_track_by_full_work);
+
+	return rc;
 }
 /*
 static int fg_sm8350_get_prev_battery_mvolts(void)
@@ -6018,7 +6177,234 @@ static int oplus_chg_ssr_notifier_cb(struct notifier_block *nb,
 
 	return NOTIFY_DONE;
 }
+
+#define QCOM_PLATFORM_FG_TRACK_VER "1.0"
+#define OPLUS_GAUGE_CYCLE_COUNT_JUMP_ERR_NUM 3
+#define OPLUS_GAUGE_CALI_TRACK_PLUG_TIME_THD_MS (2 * 60 * 1000)
+enum oplus_track_item_idx {
+	TRACK_ITEM_START = 0,
+	TRACK_PRE_VBAT = TRACK_ITEM_START,
+	TRACK_CUR_VBAT,
+	TRACK_PRE_TBAT,
+	TRACK_CUR_TBAT,
+	TRACK_PRE_SOC,
+	TRACK_CUR_SOC,
+	TRACK_BATT_CC,
+	TRACK_PRE_LEARN_CAPACITY,
+	TRACK_CUR_LEARN_CAPACITY,
+	TRACK_PRE_IMP,
+	TRACK_CUR_IMP,
+	TRACK_PRE_SOH,
+	TRACK_CUR_SOH,
+	TRACK_ITEM_END
+};
+
+const static unsigned int oplus_chg_track_pattern[] = {
+	/*plugout*/
+	[GAUGE_TRACK_CALI_FLAG_PLUGOUT] =
+		BIT(TRACK_PRE_VBAT)            | BIT(TRACK_CUR_VBAT)   | BIT(TRACK_PRE_TBAT)      | BIT(TRACK_CUR_TBAT)           |
+		BIT(TRACK_PRE_SOC)             | BIT(TRACK_CUR_SOC)    | BIT(TRACK_BATT_CC)       | BIT(TRACK_PRE_LEARN_CAPACITY) |
+		BIT(TRACK_CUR_LEARN_CAPACITY)  | BIT(TRACK_PRE_IMP)    | BIT(TRACK_CUR_IMP)       | BIT(TRACK_PRE_SOH)            |
+		BIT(TRACK_CUR_SOH),
+
+	/*full*/
+	[GAUGE_TRACK_CALI_FLAG_CHG_FULL] =
+		BIT(TRACK_PRE_VBAT)            | BIT(TRACK_CUR_VBAT)   | BIT(TRACK_PRE_TBAT)      | BIT(TRACK_CUR_TBAT)           |
+		BIT(TRACK_PRE_SOC)             | BIT(TRACK_CUR_SOC)    | BIT(TRACK_BATT_CC)       | BIT(TRACK_PRE_LEARN_CAPACITY) |
+		BIT(TRACK_CUR_LEARN_CAPACITY)  | BIT(TRACK_PRE_IMP)    | BIT(TRACK_CUR_IMP)       | BIT(TRACK_PRE_SOH)            |
+		BIT(TRACK_CUR_SOH)
+};
+
+static int oplus_plat_cali_info_item_to_val(struct gauge_track_cali_info_s *info,
+	enum oplus_track_item_idx idx)
+{
+	switch (idx) {
+	case TRACK_PRE_VBAT:
+	case TRACK_CUR_VBAT:
+		return info->vbat;
+	case TRACK_PRE_TBAT:
+	case TRACK_CUR_TBAT:
+		return info->tbat;
+	case TRACK_PRE_SOC:
+	case TRACK_CUR_SOC:
+		return info->soc;
+	case TRACK_BATT_CC:
+		return info->cycle_count;
+	case TRACK_PRE_LEARN_CAPACITY:
+	case TRACK_CUR_LEARN_CAPACITY:
+		return info->learn_capacity;
+	case TRACK_PRE_IMP:
+	case TRACK_CUR_IMP:
+		return info->imp;
+	case TRACK_PRE_SOH:
+	case TRACK_CUR_SOH:
+		return info->soh;
+	default:
+		return 0;
+	}
+	return 0;
+}
+
+static int oplus_plat_cali_info(struct gauge_track_cali_info_s *pre,
+	struct gauge_track_cali_info_s *cur, int reason, char *buf)
+{
+	int i;
+	int index = 0;
+	int offset = 0;
+	unsigned int pattern;
+
+	pattern = oplus_chg_track_pattern[reason];
+	index = scnprintf(buf, OPLUS_CHG_TRACK_PLAT_CALI_INFO_LEN,
+			"$$track_reason@@%d$$err_scene@@%s$$info_ver@@%s$$qcom_info@@(",
+			reason, "gauge_cali", QCOM_PLATFORM_FG_TRACK_VER);
+	for (i = TRACK_ITEM_START; i < TRACK_ITEM_END; i++) {
+		if (i != TRACK_ITEM_START)
+			index += scnprintf(buf + index, OPLUS_CHG_TRACK_PLAT_CALI_INFO_LEN - index, ",");
+		if((pattern & BIT(i)) == 0)
+			continue;
+
+		if (i == TRACK_BATT_CC) {
+			offset++;
+			index += scnprintf(buf + index, OPLUS_CHG_TRACK_PLAT_CALI_INFO_LEN - index,
+				"%d", oplus_plat_cali_info_item_to_val(cur, i));
+			continue;
+		}
+		if ((offset + i) % 2 == 0)
+			index += scnprintf(buf + index, OPLUS_CHG_TRACK_PLAT_CALI_INFO_LEN - index,
+				"%d", oplus_plat_cali_info_item_to_val(pre, i));
+		else
+			index += scnprintf(buf + index, OPLUS_CHG_TRACK_PLAT_CALI_INFO_LEN - index,
+				"%d", oplus_plat_cali_info_item_to_val(cur, i));
+	}
+	index += scnprintf(buf + index, OPLUS_CHG_TRACK_PLAT_CALI_INFO_LEN - index, ")");
+
+	if (index > OPLUS_CHG_TRACK_PLAT_CALI_INFO_LEN) {
+		chg_err("track info exceeds length limit.");
+		return -EINVAL;
+	}
+
+	return index;
+}
+
+static int oplus_plat_trigger_gauge_cali_track(struct gauge_track_cali_info_s *pre_info,
+	struct gauge_track_cali_info_s *cur_info, int reason)
+{
+	char *buf = NULL;
+	int len = 0;
+	struct battery_chg_dev *bcdev = g_bcdev;
+
+	chg_info("trigger reason:%d\n", reason);
+
+	if (bcdev == NULL)
+		return -EINVAL;
+
+	buf = kzalloc(OPLUS_CHG_TRACK_PLAT_CALI_INFO_LEN, GFP_KERNEL);
+	if (buf == NULL) {
+		chg_err("buf alloc error.\n");
+		return -ENOMEM;
+	}
+
+	len = oplus_plat_cali_info(pre_info, cur_info, reason, buf);
+
+	if (len > 0) {
+		oplus_chg_ic_creat_err_msg(bcdev->gauge_ic, OPLUS_IC_ERR_GAUGE, TRACK_GAGUE_QCOM_CALI_INFO, buf);
+		oplus_chg_ic_virq_trigger(bcdev->gauge_ic, OPLUS_IC_VIRQ_ERR);
+	}
+	kfree(buf);
+	return 0;
+}
+
+static void oplus_chg_update_gauge_cali_track_info_internal(struct battery_chg_dev *bcdev,
+	struct gauge_track_cali_info_s *info)
+{
+	struct psy_state *pst = &bcdev->psy_list[PSY_TYPE_BATTERY];
+	int rc = 0;
+
+	if (bcdev == NULL || info == NULL || pst == NULL) {
+		chg_err("input is null\n");
+		return;
+	}
+
+	oem_read_buffer(bcdev);
+	rc = read_property_id(bcdev, pst, BATT_RESISTANCE);
+	if (rc < 0)
+		chg_err("get r_final_total fail, rc=%d\n", rc);
+
+	info->tbat = bcdev->read_buffer_dump.data_buffer[0];
+	info->vbat = bcdev->read_buffer_dump.data_buffer[2];
+	info->soc = oplus_chg_get_battery_soc(bcdev);
+	info->cycle_count = bcdev->read_buffer_dump.data_buffer[7];
+	info->learn_capacity = bcdev->read_buffer_dump.data_buffer[6];
+	info->imp = pst->prop[BATT_RESISTANCE];
+	info->soh = bcdev->read_buffer_dump.data_buffer[8];
+}
+
+static bool oplus_plat_gauge_cali_changed(struct gauge_track_cali_info_s *pre_info,
+					  struct gauge_track_cali_info_s *cur_info)
+{
+	if ((pre_info->cycle_count - cur_info->cycle_count) > OPLUS_GAUGE_CYCLE_COUNT_JUMP_ERR_NUM ||
+	    (pre_info->learn_capacity != cur_info->learn_capacity) ||
+	    (pre_info->soh != cur_info->soh)) {
+		chg_info("guege_info: pre[%d %d %d %d %d %d %d], cur[%d %d %d %d %d %d %d]",
+			 pre_info->tbat, pre_info->vbat, pre_info->soc, pre_info->cycle_count,
+			 pre_info->learn_capacity, pre_info->imp, pre_info->soh,
+			 cur_info->tbat, cur_info->vbat, cur_info->soc, cur_info->cycle_count,
+                         cur_info->learn_capacity, cur_info->imp, cur_info->soh);
+		return true;
+	}
+	return false;
+}
+
+static struct gauge_track_cali_info_s pre_info;
+static struct gauge_track_cali_info_s cur_info;
+static void oplus_plat_gauge_cali_track_by_plug_work(struct work_struct *work)
+{
+	static ktime_t online_time;
+	struct battery_chg_dev *bcdev = container_of(work,
+		struct battery_chg_dev, gauge_cali_track_by_plug_work);
+
+	if (bcdev == NULL || bcdev->pre_info == NULL)
+		return;
+
+	if (bcdev->usb_in_status) {
+		online_time = ktime_get();
+		mutex_lock(&bcdev->pre_info_lock);
+		oplus_chg_update_gauge_cali_track_info_internal(bcdev, &pre_info);
+		mutex_unlock(&bcdev->pre_info_lock);
+		bcdev->pre_info = &pre_info;
+	} else {
+		if(ktime_ms_delta(ktime_get(), online_time) < OPLUS_GAUGE_CALI_TRACK_PLUG_TIME_THD_MS)
+			return;
+		mutex_lock(&bcdev->cur_info_lock);
+		oplus_chg_update_gauge_cali_track_info_internal(bcdev, &cur_info);
+		mutex_unlock(&bcdev->cur_info_lock);
+		if (oplus_plat_gauge_cali_changed(&pre_info, &cur_info)) {
+			oplus_plat_trigger_gauge_cali_track(&pre_info, &cur_info,
+							    GAUGE_TRACK_CALI_FLAG_PLUGOUT);
+			bcdev->pre_info = &cur_info;
+		}
+	}
+}
+
+static void oplus_plat_gauge_cali_track_by_full_work(struct work_struct *work)
+{
+	struct battery_chg_dev *bcdev = container_of(work,
+		struct battery_chg_dev, gauge_cali_track_by_full_work);
+
+	if (bcdev == NULL || bcdev->pre_info == NULL)
+		return;
+
+	mutex_lock(&bcdev->cur_info_lock);
+	oplus_chg_update_gauge_cali_track_info_internal(bcdev, &cur_info);
+	mutex_unlock(&bcdev->cur_info_lock);
+	if (oplus_plat_gauge_cali_changed(bcdev->pre_info, &cur_info)) {
+		oplus_plat_trigger_gauge_cali_track(bcdev->pre_info, &cur_info,
+						    GAUGE_TRACK_CALI_FLAG_CHG_FULL);
+		bcdev->pre_info = &cur_info;
+	}
+}
 #endif
+
 static int oplus_chg_8350_init(struct oplus_chg_ic_dev *ic_dev)
 {
 	ic_dev->online = true;
@@ -6050,6 +6436,10 @@ static int oplus_chg_8350_reg_dump(struct oplus_chg_ic_dev *ic_dev)
 	oplus_chg_8350_output_is_suspend(ic_dev, &chg_en);
 	oplus_chg_8350_get_charger_type(ic_dev, &chg_type);
 	oem_read_buffer(bcdev);
+	if (bcdev->qcom_gauge_cali_track_support != bcdev->read_buffer_dump.data_buffer[14]) {
+		bcdev->qcom_gauge_cali_track_support = bcdev->read_buffer_dump.data_buffer[14];
+		chg_info("update qcom_gauge_cali_track_support:%d", bcdev->qcom_gauge_cali_track_support);
+	}
 	chg_info("sm8450_st_dump: [chg_en=%d, suspend=%d, pd_svooc=%d], subtype=0x%02x],"
 			"[oplus_UsbCommCapable=%d, oplus_pd_svooc=%d, typec_mode=%d, cid_status=0x%02x, usb_in_status=%d],"
 			"[0x%4x=0x%02x, 0x%4x=0x%02x, 0x%4x=0x%02x, 0x%4x=0x%02x], "
@@ -6359,10 +6749,10 @@ static int oplus_chg_usb_set_input_current(struct battery_chg_dev *bcdev, int cu
 	for (i = 1; i <= current_ma / 100; i++) {
 		rc = write_property_id(bcdev, pst, prop_id, i * 100000);
 		if (rc) {
-			chg_err("set icl to %d mA fail, rc=%d\n", i * 100000, rc);
+			chg_err("set icl to %d mA fail, rc=%d\n", i * 100, rc);
 			return rc;
 		} else {
-			chg_err("set icl to %d mA\n", i * 100000);
+			chg_info("set icl to %d mA\n", i * 100);
 		}
 		usleep_range(50000, 51000);
 		if (qpnp_get_prop_vbus_collapse_status(bcdev) == true) {
@@ -6384,14 +6774,14 @@ static int oplus_chg_usb_set_input_current(struct battery_chg_dev *bcdev, int cu
 	if (pre_step) {
 		rc = write_property_id(bcdev, pst, prop_id, i * 100000);
 		if (rc) {
-			chg_err("set icl to %d mA fail, rc=%d\n", i * 100000, rc);
+			chg_err("set icl to %d mA fail, rc=%d\n", i * 100, rc);
 			return rc;
 		} else {
-			chg_err("set icl to %d mA\n", i * 100000);
+			chg_info("set icl to %d mA\n", i * 100);
 		}
 	}
 	chg_info("usb input max current limit aicl chg_vol=%d j[%d]=%d sw_aicl_point:%d aicl_end\n",
-		 chg_vol, i, i * 100000, aicl_point);
+		 chg_vol, i, i * 100, aicl_point);
 
 	return rc;
 }
@@ -8544,7 +8934,29 @@ struct oplus_chg_ic_virq oplus_chg_8350_buck_virq_table[] = {
 
 static int oplus_sm8350_init(struct oplus_chg_ic_dev *ic_dev)
 {
+	struct battery_chg_dev *bcdev;
+
+	if (ic_dev == NULL) {
+		chg_err("ic_dev null\n");
+		return -ENODEV;
+	}
+
 	ic_dev->online = true;
+	bcdev = oplus_chg_ic_get_drvdata(ic_dev);
+	if (!bcdev) {
+		chg_err("bcdev null\n");
+		return -ENODEV;
+	}
+
+	oem_read_buffer(bcdev);
+	bcdev->qcom_gauge_cali_track_support = bcdev->read_buffer_dump.data_buffer[14];
+	chg_info("qcom_gauge_cali_track_support = %d\n", bcdev->qcom_gauge_cali_track_support);
+
+	if (bcdev->qcom_gauge_cali_track_support) {
+		mutex_lock(&bcdev->pre_info_lock);
+		oplus_chg_update_gauge_cali_track_info_internal(bcdev, &pre_info);
+		mutex_unlock(&bcdev->pre_info_lock);
+	}
 
 	return 0;
 }
@@ -8735,9 +9147,7 @@ static int oplus_sm8350_get_batt_hmac(struct oplus_chg_ic_dev *ic_dev,
 static int oplus_sm8350_set_batt_full(struct oplus_chg_ic_dev *ic_dev,
 				       bool full)
 {
-	fg_sm8350_set_battery_full(full);
-
-	return 0;
+	return fg_sm8350_set_battery_full(ic_dev, full);
 }
 
 static int oplus_sm8350_update_dod0(struct oplus_chg_ic_dev *ic_dev)
@@ -9587,7 +9997,7 @@ static int oplus_fg_get_dec_fg_type(struct oplus_chg_ic_dev *ic_dev, int *fg_typ
 
 	*fg_type = DEC_CV_QCOM_FG;
 
-	return DEC_CV_QCOM_FG;
+	return 0;
 }
 
 static int oplus_fg_get_dec_cv_soh(struct oplus_chg_ic_dev *ic_dev, int *dec_soh)
@@ -11336,6 +11746,7 @@ static int battery_chg_probe(struct platform_device *pdev)
 	bcdev->adspfg_i2c_reset_processing = false;
 	bcdev->adspfg_i2c_reset_notify_done = false;
 	bcdev->pd_chg_volt = OPLUS_PD_5V;
+	bcdev->pre_info = &pre_info;
 #endif
 
 	bcdev->psy_list[PSY_TYPE_BATTERY].map = battery_prop_map;
@@ -11377,6 +11788,8 @@ static int battery_chg_probe(struct platform_device *pdev)
 	mutex_init(&bcdev->ufcs_read_buffer_lock);
 	init_completion(&bcdev->ufcs_read_ack);
 	mutex_init(&bcdev->ap_read_buffer_lock);
+	mutex_init(&bcdev->pre_info_lock);
+	mutex_init(&bcdev->cur_info_lock);
 	for (i = 0; i< AP_MESSAGE_MAX_SIZE; i++)
 		init_completion(&bcdev->ap_read_ack[i]);
 	mutex_init(&bcdev->ap_write_buffer_lock);
@@ -11391,6 +11804,8 @@ static int battery_chg_probe(struct platform_device *pdev)
 	INIT_WORK(&bcdev->subsys_up_work, battery_chg_subsys_up_work);
 	INIT_WORK(&bcdev->usb_type_work, battery_chg_update_usb_type_work);
 #ifdef OPLUS_FEATURE_CHG_BASIC
+	INIT_WORK(&bcdev->gauge_cali_track_by_plug_work, oplus_plat_gauge_cali_track_by_plug_work);
+	INIT_WORK(&bcdev->gauge_cali_track_by_full_work, oplus_plat_gauge_cali_track_by_full_work);
 	INIT_DELAYED_WORK(&bcdev->adsp_voocphy_status_work, oplus_adsp_voocphy_status_func);
 	INIT_DELAYED_WORK(&bcdev->unsuspend_usb_work, oplus_unsuspend_usb_work);
 	INIT_DELAYED_WORK(&bcdev->otg_init_work, oplus_otg_init_status_func);
diff --git a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_adsp.h b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_adsp.h
index 24b60a96..0a87284b 100644
--- a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_adsp.h
+++ b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_adsp.h
@@ -411,6 +411,25 @@ enum WLS_BOOST_SOURCE {
 	WLS_BOOST_SOURCE_PMIC_WLS,
 };
 
+enum charging_status {
+	CHARGING_TYPE_UNKNOW,
+	CHARGING_TYPE_VOOC_SVOOC,
+	CHARGING_TYPE_OPLUS_UFCS,
+	CHARGING_TYPE_OPLUS_PPS,
+	CHARGING_TYPE_THIRD_UFCS,
+	CHARGING_TYPE_THIRD_PPS,
+	CHARGING_TYPE_FFC,
+	CHARGING_TYPE_MAX,
+};
+
+enum qbg_full_temp_region {
+	QBG_TEMP_COLD,
+	QBG_TEMP_COOL,
+	QBG_TEMP_NORMAL,
+	QBG_TEMP_WARM,
+	QBG_TEMP_MAX,
+};
+
 enum OEM_MISC_CTL_CMD {
 	OEM_MISC_CTL_CMD_LCM_EN = 0,
 	OEM_MISC_CTL_CMD_LCM_25K = 2,
@@ -581,6 +600,25 @@ enum oplus_sub_btb_adc_index {
 	OPLUS_SUB_BTB_VALD_MAX_ADC,
 	OPLUS_SUB_BTB_MAX,
 };
+
+#define OPLUS_CHG_TRACK_PLAT_CALI_INFO_LEN	300
+
+enum oplus_gauge_track_type {
+	GAUGE_TRACK_CALI_FLAG_ZCV = 1,
+	GAUGE_TRACK_CALI_FLAG_AGING = 2,
+	GAUGE_TRACK_CALI_FLAG_PLUGOUT = 4,
+	GAUGE_TRACK_CALI_FLAG_CHG_FULL = 5
+};
+
+struct gauge_track_cali_info_s {
+	int vbat;
+	int tbat;
+	int soc;
+	int cycle_count;
+	int learn_capacity;
+	int imp;
+	int soh;
+};
 #endif
 
 struct battery_chg_dev {
@@ -677,6 +715,12 @@ struct battery_chg_dev {
 	bool					voocphy_err_check;
 	bool			bypass_vooc_support;
 	bool			usb_aicl_enhance;
+	bool				qcom_gauge_cali_track_support;
+	struct gauge_track_cali_info_s 	*pre_info;
+	struct work_struct		gauge_cali_track_by_plug_work;
+	struct work_struct		gauge_cali_track_by_full_work;
+	struct mutex                    pre_info_lock;
+	struct mutex                    cur_info_lock;
 #endif
 #ifdef OPLUS_FEATURE_CHG_BASIC
 	int vchg_trig_irq;
@@ -751,6 +795,9 @@ struct battery_chg_dev {
 	bool error_prop;
 	int sub_btb_valid_temp[OPLUS_SUB_BTB_MAX];
 #endif
+	int batt_full_para[CHARGING_TYPE_MAX][QBG_TEMP_MAX];
+	int batt_full_temp[QBG_TEMP_MAX];
+	bool batt_full_method_new;
 };
 
 /**********************************************************************
diff --git a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_mtk6895S.c b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_mtk6895S.c
index 0fb86d50..5b1a22da 100755
--- a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_mtk6895S.c
+++ b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_mtk6895S.c
@@ -63,7 +63,11 @@
 #ifdef OPLUS_FEATURE_CHG_BASIC
 #include 
 #include 
+#if IS_ENABLED(CONFIG_OPLUS_PD_MANAGER_CHARGER)
+#include 
+#else
 #include "../../../misc/mediatek/typec/tcpc/inc/tcpci.h"
+#endif
 #include 
 #include 
 
@@ -1016,6 +1020,10 @@ static void mtk_charger_parse_dt(struct mtk_charger *info,
 	u32 val = 0;
 	struct device_node *boot_node = NULL;
 	struct tag_bootmode *tag = NULL;
+	int ret = 0;
+	int i = 0;
+	unsigned int support_subboard_parameter[SUPPORT_PARAMETER_SIZE] = {0};
+	struct temp_param subboard_table[SUPPORT_TABLE_SIZE / 2] = {{0, 0}, };
 
 	boot_node = of_parse_phandle(dev->of_node, "bootmode", 0);
 	if (!boot_node)
@@ -1348,6 +1356,45 @@ static void mtk_charger_parse_dt(struct mtk_charger *info,
 	chr_debug("%s: support_ntc_01c_precision: %d, support_subboard_ntc = %d\n",
 		__func__, info->support_ntc_01c_precision, info->support_subboard_ntc);
 
+	ret = read_signed_data_from_node(np, "oplus,support_subboard_parameter",
+			(s32 *)(support_subboard_parameter), SUPPORT_PARAMETER_SIZE);
+	if (ret < 0) {
+		info->subboard_parameters.parameters_support = 0;
+		info->subboard_parameters.table_support = 0;
+	} else {
+		info->subboard_parameters.parameters_support = support_subboard_parameter[0];
+		info->subboard_parameters.table_support = support_subboard_parameter[1];
+		info->subboard_parameters.i_tap_over_critical_low = support_subboard_parameter[2];
+		info->subboard_parameters.i_rap_pull_up_r = support_subboard_parameter[3];
+		info->subboard_parameters.i_rap_pull_up_voltage = support_subboard_parameter[4];
+		info->subboard_parameters.i_tap_min = support_subboard_parameter[5];
+		info->subboard_parameters.i_tap_max = support_subboard_parameter[6];
+		info->subboard_parameters.i_25c_volt = support_subboard_parameter[7];
+		ret = read_signed_data_from_node(np, "oplus,support_subboard_table",
+			(s32 *)subboard_table, SUPPORT_TABLE_SIZE);
+		if (ret < 0) {
+			info->subboard_parameters.table_support = 0;
+		} else {
+			info->support_subboard_table = vmalloc(sizeof(struct temp_param *) * SUPPORT_TABLE_SIZE / 2);
+			if (info->support_subboard_table) {
+				for (i = 0; i < SUPPORT_TABLE_SIZE / 2; i++) {
+					info->support_subboard_table[i].temperature_r = subboard_table[i].temperature_r;
+					info->support_subboard_table[i].bts_temp = subboard_table[i].bts_temp;
+				}
+			}
+		}
+		chr_debug("%s:%d, %d, %d, %d,%d, %d, %d, %d\n", __func__, info->subboard_parameters.parameters_support,
+				info->subboard_parameters.table_support, info->subboard_parameters.i_tap_over_critical_low,
+				info->subboard_parameters.i_rap_pull_up_r, info->subboard_parameters.i_rap_pull_up_voltage,
+				info->subboard_parameters.i_tap_min, info->subboard_parameters.i_tap_max,
+				info->subboard_parameters.i_25c_volt);
+	}
+
+	if (of_property_read_u32(np, "oplus,sub_board_pull_up_r", &val) >= 0)
+		info->sub_board_pull_up_r = val;
+	else
+		info->sub_board_pull_up_r = 100000;
+
 	info->usbtemp_dischg_reg_configurable =
 		of_property_read_bool(np, "oplus,support_usbtemp_dischg_reg_configurable");
 
@@ -4085,6 +4132,7 @@ static void mtk_charger_external_power_changed(struct power_supply *psy)
 }
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0))
+#if !IS_ENABLED(CONFIG_OPLUS_PD_MANAGER_CHARGER)
 static void hvdcp_detect_dn_check(struct mtk_charger *info)
 {
 	union power_supply_propval prop = {0}, prop2 = {0};
@@ -4117,6 +4165,7 @@ static void hvdcp_detect_dn_check(struct mtk_charger *info)
 	_wake_up_charger(info);
 }
 #endif
+#endif
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
 int notify_adapter_event(struct notifier_block *notifier,
@@ -7409,6 +7458,7 @@ static int oplus_get_subboard_temp(void)
 	int sub_board_temp = 0;
 	static bool is_param_init = false;
 	static struct ntc_temp ntc_param = {0};
+	int i = 0;
 
 	if (!pinfo) {
 		chg_err("null pinfo\n");
@@ -7427,6 +7477,24 @@ static int oplus_get_subboard_temp(void)
 		ntc_param.i_table_size = (sizeof(sub_board_temp_table) / sizeof(struct temp_param));
 		is_param_init = true;
 
+		if (pinfo->subboard_parameters.parameters_support) {
+			ntc_param.i_tap_over_critical_low = pinfo->subboard_parameters.i_tap_over_critical_low;
+			ntc_param.i_rap_pull_up_r = pinfo->subboard_parameters.i_rap_pull_up_r;
+			ntc_param.i_rap_pull_up_voltage = pinfo->subboard_parameters.i_rap_pull_up_voltage;
+			ntc_param.i_tap_min = pinfo->subboard_parameters.i_tap_min;
+			ntc_param.i_tap_max = pinfo->subboard_parameters.i_tap_max;
+			ntc_param.i_25c_volt = pinfo->subboard_parameters.i_25c_volt;
+			if (pinfo->subboard_parameters.table_support && pinfo->support_subboard_table) {
+				for (i = 0; i < SUPPORT_TABLE_SIZE / 2; i++) {
+					ntc_param.pst_temp_table[i].temperature_r = pinfo->support_subboard_table[i].temperature_r;
+					ntc_param.pst_temp_table[i].bts_temp = pinfo->support_subboard_table[i].bts_temp;
+				}
+				ntc_param.i_table_size = (SUPPORT_TABLE_SIZE / 2);
+				kvfree(pinfo->support_subboard_table);
+				pinfo->support_subboard_table = NULL;
+			}
+		} else if (pinfo->sub_board_pull_up_r)
+			ntc_param.i_rap_pull_up_r = pinfo->sub_board_pull_up_r;
 		chg_info("ntc_type:%d,critical_low:%d,pull_up_r=%d,pull_up_voltage=%d,tap_min=%d,tap_max=%d,table_size=%d\n", \
 			ntc_param.e_ntc_type, ntc_param.i_tap_over_critical_low, ntc_param.i_rap_pull_up_r, \
 			ntc_param.i_rap_pull_up_voltage, ntc_param.i_tap_min, ntc_param.i_tap_max, ntc_param.i_table_size);
diff --git a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_mtk6895S.h b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_mtk6895S.h
index 3347a767..56f470df 100755
--- a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_mtk6895S.h
+++ b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_mtk6895S.h
@@ -102,6 +102,11 @@ struct charger_data;
 
 #define MAX_ALG_NO 10
 
+#ifdef OPLUS_FEATURE_CHG_BASIC
+#define SUPPORT_PARAMETER_SIZE 8
+#define SUPPORT_TABLE_SIZE 360
+#endif
+
 enum bat_temp_state_enum {
 	BAT_TEMP_LOW = 0,
 	BAT_TEMP_NORMAL,
@@ -300,6 +305,17 @@ struct ntc_temp{
 	int i_table_size;
 };
 
+struct ntc_temp_parameters {
+	int parameters_support;
+	int table_support;
+	int i_tap_over_critical_low;
+	int i_rap_pull_up_r;
+	int i_rap_pull_up_voltage;
+	int i_tap_min;
+	int i_tap_max;
+	unsigned int i_25c_volt;
+};
+
 struct oplus_custom_gpio_pinctrl {
 	int vchg_trig_gpio;
 	int ccdetect_gpio;
@@ -348,6 +364,8 @@ struct mtk_charger {
 	struct oplus_mms *gauge_topic;
 	struct oplus_mms  *err_topic;
 	int low_batt_otg_boost_curr_ua;
+	struct ntc_temp_parameters subboard_parameters;
+	struct temp_param *support_subboard_table;
 #endif
 
 	struct platform_device *pdev;
@@ -540,6 +558,7 @@ struct mtk_charger {
 	bool cp_btb_temp_share;
 	bool support_subboard_ntc;
 	bool pd_svooc;
+	int sub_board_pull_up_r;
 
 	struct tcpc_device *tcpc;
 	struct adapter_power_cap srccap;
diff --git a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_pd_manager.c b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_pd_manager.c
index 597f3e43..56b77e3b 100755
--- a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_pd_manager.c
+++ b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_pd_manager.c
@@ -29,6 +29,8 @@
 #define USB_TYPE_POLLING_CNT_MAX	100
 #define BC12_TIMEOUT_MS			1500
 #define MICRO_5V 			5000
+#define VBUS_5V			5000
+#define VBUS_9V			9000
 
 enum dr {
 	DR_IDLE,
@@ -144,8 +146,19 @@ static void tcpc_set_voltage_max_and_min(struct pd_manager_chip *chip, int max,
 
 static void tcpc_set_current_max(struct pd_manager_chip *chip, int max)
 {
-	if (chip->current_max_ma == max)
+	struct votable *icl_votable;
+	int icl_tmp_ma = 0;
+
+	icl_votable = find_votable("WIRED_ICL");
+	if (!icl_votable)
+		chg_err("WIRED_ICL votable not found\n");
+	else
+		icl_tmp_ma = get_client_vote(icl_votable, MAX_VOTER);
+
+	if (chip->current_max_ma == max && icl_tmp_ma <= max && icl_tmp_ma > 0) {
+		chg_info("current_max_ma = %d\n", icl_tmp_ma);
 		return;
+	}
 	chg_info("current_max_ma = %d\n", max);
 	chip->current_max_ma = max;
 	oplus_chg_ic_virq_trigger(chip->ic_dev, OPLUS_IC_VIRQ_CURRENT_CHANGED);
@@ -1059,6 +1072,16 @@ static int oplus_pdc_setup(struct pd_manager_chip *chip, int *vbus_mv, int *ibus
 	int ibus_ma_t = 0;
 	struct tcpc_device *tcpc = chip->tcpc;
 
+	if (*vbus_mv == VBUS_5V)
+		ret = tcpm_set_pd_charging_policy(tcpc, DPM_CHARGING_POLICY_VSAFE5V, NULL);
+	else
+		ret = tcpm_set_pd_charging_policy(tcpc, DPM_CHARGING_POLICY_MAX_POWER_LVIC, NULL);
+
+	if (ret != TCPM_SUCCESS) {
+		chg_err("tcpm_set_apdo_charging_policy fail\n");
+		return -EINVAL;
+	}
+
 	ret = tcpm_dpm_pd_request(tcpc, *vbus_mv, *ibus_ma, NULL);
 	if (ret != TCPM_SUCCESS) {
 		chg_err("tcpm_dpm_pd_request fail, rc=%d\n", ret);
@@ -1125,18 +1148,19 @@ static int oplus_pdo_select(struct pd_manager_chip *chip, int vbus_mv, int ibus_
 					ibus = pd_cap.ma[i];
 					if (ibus > ibus_ma)
 						ibus = ibus_ma;
-					break;
+					goto out;
 				}
 				chg_info("%d mv:[%d,%d] type:%d %d\n", i,
 					 pd_cap.min_mv[i], pd_cap.max_mv[i],
 					 pd_cap.ma[i], pd_cap.type[i]);
 			}
+			return -EINVAL;
 		}
 	} else {
 		vbus = 5000;
 		ibus = 2000;
 	}
-
+out:
 	return oplus_pdc_setup(chip, &vbus, &ibus);
 }
 
diff --git a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_sm8450.c b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_sm8450.c
index 78532fe0..d584aa6e 100755
--- a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_sm8450.c
+++ b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_sm8450.c
@@ -58,7 +58,13 @@
 #define OPLUS_PD_5V 5000
 #define OPLUS_PD_9V 9000
 #define ICL_IBUS_ABS_THRESHOLD_MA	600
+#define IBATT_FULL_CURR_DEFAULT	    1000
 
+#define AICL_POINT_VOL_5V           4100
+#define HW_AICL_POINT_VOL_5V_PHASE1 4400
+#define HW_AICL_POINT_VOL_5V_PHASE2 4500
+#define USB_HW_AICL_POINT           4600
+#define USB_SW_AICL_POINT           4620
 struct battery_chg_dev *g_bcdev = NULL;
 static int oplus_get_vchg_trig_status(void);
 static bool oplus_vchg_trig_is_support(void);
@@ -72,9 +78,17 @@ static int oplus_chg_8350_get_charger_type(struct oplus_chg_ic_dev *ic_dev, int
 #endif /*OPLUS_FEATURE_CHG_BASIC*/
 static int oplus_chg_8350_get_icl(struct oplus_chg_ic_dev *ic_dev, int *icl_ma);
 static int oplus_chg_set_input_current_with_no_aicl(struct battery_chg_dev *bcdev, int current_ma);
+static bool oplus_vooc_get_fastchg_ing(struct battery_chg_dev *bcdev);
+static bool is_common_topic_available(struct battery_chg_dev *bcdev);
+static bool oplus_get_ufcs_charging(struct battery_chg_dev *bcdev);
 static int oplus_chg_8350_get_input_curr(struct oplus_chg_ic_dev *ic_dev, int *curr_ma);
 static int oplus_chg_8350_aicl_rerun(struct oplus_chg_ic_dev *ic_dev);
+__maybe_unused static bool oplus_get_pps_charging(struct battery_chg_dev *bcdev);
+static bool oplus_get_oplus_ufcs(struct battery_chg_dev *bcdev);
+static unsigned int oplus_update_batt_full_para(struct battery_chg_dev *bcdev);
+__maybe_unused static bool oplus_get_oplus_pps(struct battery_chg_dev *bcdev);
 static int oplus_get_pps_info_from_adsp(struct oplus_chg_ic_dev *ic_dev, u32 *pdo, int num);
+static int oplus_chg_set_aicl_point(struct oplus_chg_ic_dev *ic_dev, int vbatt);
 
 #ifdef OPLUS_FEATURE_CHG_BASIC
 /*for p922x compile*/
@@ -320,15 +334,27 @@ static int oem_read_buffer(struct battery_chg_dev *bcdev)
 	return oem_battery_chg_write(bcdev, &req_msg, sizeof(req_msg));
 }
 
-void oplus_get_props_from_adsp_by_buffer(void)
+static void oplus_adsp_voocphy_set_full_para_qbg(struct battery_chg_dev *bcdev, u32 fcss_status);
+static void oplus_get_props_from_adsp_by_buffer(void)
 {
 	struct battery_chg_dev *bcdev = g_bcdev;
+	static u32 pre_fcss_status = 0;
+	u32 fcss_status = 0;
 
 	if (!bcdev) {
 		chg_err("bcdev is null, oplus_get_batt_argv_buffer\n");
 		return;
 	}
 	oem_read_buffer(bcdev);
+
+	if (bcdev->batt_full_method_new) {
+		fcss_status = oplus_update_batt_full_para(bcdev);
+		if(pre_fcss_status != fcss_status) {
+			oplus_adsp_voocphy_set_full_para_qbg(bcdev, fcss_status);
+			pre_fcss_status = fcss_status;
+			chg_info("method %d, fcss_status is %d\n", bcdev->batt_full_method_new, fcss_status);
+		}
+	}
 }
 
 static void handle_oem_read_buffer(struct battery_chg_dev *bcdev,
@@ -875,6 +901,18 @@ static bool is_common_topic_available(struct battery_chg_dev *bcdev)
 	return !!bcdev->common_topic;
 }
 
+static void oplus_adsp_voocphy_set_full_para_qbg(struct battery_chg_dev *bcdev, u32 fcss_status)
+{
+	int rc = 0;
+	struct psy_state *pst = &bcdev->psy_list[PSY_TYPE_BATTERY];
+
+	rc = write_property_id(bcdev, pst, BATT_BAT_FULL_CURR_SET, fcss_status);
+	if (rc) {
+		chg_err("set current level fail, rc=%d\n", rc);
+		return;
+	}
+}
+
 void oplus_chg_set_curr_level_to_voocphy(struct battery_chg_dev *bcdev)
 {
 	int rc = 0;
@@ -1101,6 +1139,13 @@ static int oplus_get_max_current_from_fixed_pdo(struct battery_chg_dev *bcdev, i
 	return -EINVAL;
 }
 
+#define SUSPEND_RECOVERY_DELAY_MS 2000
+static void oplus_sourcecap_suspend_recovery_work(struct work_struct *work)
+{
+	chg_info("sourcecap suspend recovery, unsuspend\n");
+	oplus_chg_suspend_charger(false, PD_PDO_ICL_VOTER);
+}
+
 static void oplus_sourcecap_done_work(struct work_struct *work)
 {
 	struct battery_chg_dev *bcdev = container_of(work,
@@ -2263,6 +2308,11 @@ static void handle_notification(struct battery_chg_dev *bcdev, void *data,
 		bcdev->ufcs_pdo_ready = true;
 		chg_info("ufcs pdo ready = %d\n", bcdev->ufcs_pdo_ready);
 		break;
+	case PD_SOURCECAP_DONE:
+		chg_info("PD_SOURCECAP_DONE\n");
+		if (oplus_chg_get_common_charge_icl_support_flags())
+			schedule_delayed_work(&bcdev->sourcecap_done_work, 0);
+		break;
 #endif
 	default:
 		break;
@@ -4016,6 +4066,8 @@ static int oplus_chg_parse_custom_dt(struct battery_chg_dev *bcdev)
 		bcdev->otg_boost_src = OTG_BOOST_SOURCE_EXTERNAL;
 	}
 
+	bcdev->usb_aicl_enhance = of_property_read_bool(node, "oplus,usb_aicl_enhance");
+
 	rc = of_property_read_u32(node, "oplus,otg_curr_limit_max",
 				  &bcdev->otg_curr_limit_max);
 	if (rc) {
@@ -4038,6 +4090,31 @@ static int oplus_chg_parse_custom_dt(struct battery_chg_dev *bcdev)
 	}
 
 	bcdev->ufcs_run_check_support = of_property_read_bool(node, "oplus,ufcs_run_check_support");
+
+	bcdev->batt_full_method_new = of_property_read_bool(node, "oplus,batt_full_method_new");
+	chg_info("get batt_full_method_new %d\n", bcdev->batt_full_method_new);
+
+	if (bcdev->batt_full_method_new) {
+		rc = read_signed_data_from_node(node, "oplus,batt_full_temp",
+						(u32 *)bcdev->batt_full_temp, QBG_TEMP_MAX);
+		if (rc < 0) {
+			chg_err("get oplus,batt_full_temp property error, use old method, rc=%d\n",
+				rc);
+			bcdev->batt_full_method_new = false;
+		}
+	}
+
+	if (bcdev->batt_full_method_new) {
+		rc = read_unsigned_data_from_node(node, "oplus,batt_full_para",
+						(u32 *)bcdev->batt_full_para,
+						CHARGING_TYPE_MAX * QBG_TEMP_MAX);
+		if (rc < 0) {
+			chg_err("get oplus,batt_full_para property error, use old method, rc=%d\n",
+				rc);
+			bcdev->batt_full_method_new = false;
+		}
+	}
+
 	return 0;
 }
 #endif /*OPLUS_FEATURE_CHG_BASIC*/
@@ -4361,6 +4438,7 @@ static void oplus_plugin_irq_work(struct work_struct *work)
 	chg_info("usb_pre_plugin_status[%d], usb_plugin_status[%d]\n",
 		 usb_pre_plugin_status, usb_plugin_status);
 	if (usb_pre_plugin_status != usb_plugin_status || !usb_plugin_status) {
+		oplus_chg_suspend_charger(false, PD_PDO_ICL_VOTER);
 		oplus_chg_ic_virq_trigger(bcdev->buck_ic, OPLUS_IC_VIRQ_PLUGIN);
 	}
 	if (usb_pre_plugin_status != usb_plugin_status && !usb_pre_plugin_status)
@@ -4400,6 +4478,152 @@ static void oplus_plugin_irq_work(struct work_struct *work)
  * battery gauge ops *
  **********************************************************************/
 #ifdef OPLUS_FEATURE_CHG_BASIC
+__maybe_unused static bool oplus_get_pps_charging(struct battery_chg_dev *bcdev)
+{
+	bool pps_charging = false;
+	union mms_msg_data data = {0};
+
+	if (!bcdev)
+		return false;
+
+	if (!bcdev->pps_topic)
+		bcdev->pps_topic = oplus_mms_get_by_name("pps");
+
+	if (bcdev->pps_topic) {
+		oplus_mms_get_item_data(bcdev->pps_topic,
+					PPS_ITEM_CHARGING, &data, false);
+		pps_charging = !!data.intval;
+	}
+	return pps_charging;
+}
+
+__maybe_unused static bool oplus_get_oplus_pps(struct battery_chg_dev *bcdev)
+{
+	bool oplus_pps = false;
+	union mms_msg_data data = {0};
+
+	if (!bcdev)
+		return false;
+
+	if (!bcdev->pps_topic)
+		bcdev->pps_topic = oplus_mms_get_by_name("pps");
+
+	if (bcdev->pps_topic) {
+		oplus_mms_get_item_data(bcdev->pps_topic,
+					PPS_ITEM_OPLUS_ADAPTER, &data, false);
+		oplus_pps = !!data.intval;
+	}
+	return oplus_pps;
+}
+
+static bool oplus_get_ufcs_charging(struct battery_chg_dev *bcdev)
+{
+	bool ufcs_charging = false;
+	union mms_msg_data data = {0};
+
+	if (!bcdev)
+		return false;
+
+	if (!bcdev->ufcs_topic)
+		bcdev->ufcs_topic = oplus_mms_get_by_name("ufcs");
+
+	if (bcdev->ufcs_topic) {
+		oplus_mms_get_item_data(bcdev->ufcs_topic,
+					UFCS_ITEM_CHARGING, &data, false);
+		ufcs_charging = !!data.intval;
+	}
+	return ufcs_charging;
+}
+
+static bool oplus_get_oplus_ufcs(struct battery_chg_dev *bcdev)
+{
+	bool oplus_ufcs = false;
+	union mms_msg_data data = {0};
+
+	if (!bcdev)
+		return false;
+
+	if (!bcdev->ufcs_topic)
+		bcdev->ufcs_topic = oplus_mms_get_by_name("ufcs");
+
+	if (bcdev->ufcs_topic) {
+		oplus_mms_get_item_data(bcdev->ufcs_topic,
+					UFCS_ITEM_OPLUS_ADAPTER, &data, false);
+		oplus_ufcs = !!data.intval;
+	}
+	return oplus_ufcs;
+}
+
+static unsigned int oplus_update_batt_full_para(struct battery_chg_dev *bcdev)
+{
+	unsigned int ibatt_full_cur = 0;
+	union mms_msg_data data = { 0 };
+	int charging_status = 0;
+	int temp_region = 0;
+	static unsigned int pre_ibatt_full_cur = IBATT_FULL_CURR_DEFAULT;
+	int temp = 250;
+	unsigned int ffc_status = 0;
+
+	if (is_common_topic_available(bcdev)) {
+		oplus_mms_get_item_data(bcdev->common_topic, COMM_ITEM_FFC_STATUS,
+				&data, false);
+		ffc_status = data.intval;
+
+		oplus_mms_get_item_data(bcdev->common_topic, COMM_ITEM_SHELL_TEMP,
+				&data, false);
+		temp = data.intval;
+	} else {
+		chg_err("common topic not found, return\n");
+		goto exit;
+	}
+
+	if (temp < bcdev->batt_full_temp[QBG_TEMP_COOL])    /* - 12 */
+		temp_region = QBG_TEMP_COLD;
+	else if (temp < bcdev->batt_full_temp[QBG_TEMP_NORMAL])   /* 12 - 21 */
+		temp_region = QBG_TEMP_COOL;
+	else if (temp < bcdev->batt_full_temp[QBG_TEMP_WARM])  /* 21 - 44 */
+		temp_region = QBG_TEMP_NORMAL;
+	else  /* 44 -  */
+		temp_region = QBG_TEMP_WARM;
+
+	if (oplus_vooc_get_fastchg_ing(bcdev)) {
+		charging_status = CHARGING_TYPE_VOOC_SVOOC;
+	} else if (oplus_get_ufcs_charging(bcdev)) {
+		if (oplus_get_oplus_ufcs(bcdev))
+			charging_status = CHARGING_TYPE_OPLUS_UFCS;
+		else
+			charging_status = CHARGING_TYPE_THIRD_UFCS;
+	} else if (oplus_get_pps_charging(bcdev)) {
+		if (oplus_get_oplus_pps(bcdev))
+			charging_status = CHARGING_TYPE_OPLUS_PPS;
+		else
+			charging_status = CHARGING_TYPE_THIRD_PPS;
+	} else {
+		if (ffc_status == FFC_WAIT || ffc_status == FFC_FAST)
+			charging_status = CHARGING_TYPE_FFC;
+		else
+			charging_status = CHARGING_TYPE_UNKNOW;
+	}
+
+	if (charging_status < CHARGING_TYPE_MAX && temp_region < QBG_TEMP_MAX)
+		ibatt_full_cur = bcdev->batt_full_para[charging_status][temp_region];
+	else
+		goto exit;
+
+	if (pre_ibatt_full_cur == ibatt_full_cur)
+		goto exit;
+
+	chg_info("pre_ibatt_full_cur = %d, ibatt_full_cur = %d, charging_status = %d, temp = %d, temp_region = %d\n",
+		pre_ibatt_full_cur, ibatt_full_cur, charging_status, temp, temp_region);
+
+	pre_ibatt_full_cur = ibatt_full_cur;
+
+	return ibatt_full_cur;
+
+exit:
+	return pre_ibatt_full_cur;
+}
+
 __maybe_unused static int fg_sm8350_get_battery_mvolts(void)
 {
 	int rc = 0;
@@ -5192,6 +5416,58 @@ static int oplus_input_current_limit_ctrl_by_vooc_write(struct oplus_chg_ic_dev
 	return rc;
 }
 
+static int oplus_chg_usb_set_input_current(struct battery_chg_dev *bcdev, int current_ma,
+	int aicl_point)
+{
+	int rc = 0, i = 0;
+	int chg_vol = 0;
+	int prop_id = 0;
+	struct psy_state *pst = &bcdev->psy_list[PSY_TYPE_USB];
+	bool pre_step = false;
+
+	prop_id = get_property_id(pst, POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT);
+	for (i = 1; i <= current_ma / 100; i++) {
+		rc = write_property_id(bcdev, pst, prop_id, i * 100000);
+		if (rc) {
+			chg_err("set icl to %d mA fail, rc=%d\n", i * 100, rc);
+			return rc;
+		} else {
+			chg_info("set icl to %d mA\n", i * 100);
+		}
+		usleep_range(50000, 51000);
+		if (qpnp_get_prop_vbus_collapse_status(bcdev) == true) {
+			i = i - 1;
+			pre_step = true;
+			break;
+		}
+		chg_vol = qpnp_get_prop_charger_voltage_now(bcdev);
+		if (chg_vol < aicl_point) {
+			i = i - 1;
+			pre_step = true;
+			break;
+		}
+		if (i == current_ma / 100)
+			break;
+	}
+	if (i <= 0)
+		i = 1;
+	if (pre_step) {
+		rc = write_property_id(bcdev, pst, prop_id, i * 100000);
+		if (rc) {
+			chg_err("set icl to %d mA fail, rc=%d\n", i * 100, rc);
+			return rc;
+		} else {
+			chg_info("set icl to %d mA\n", i * 100);
+		}
+	}
+	chg_info("usb input max current limit aicl chg_vol=%d j[%d]=%d sw_aicl_point:%d aicl_end\n",
+		 chg_vol, i, i * 100, aicl_point);
+
+	return rc;
+}
+
+#define UNKONW_CURR 500
+#define DEFAULT_CURR_BY_CC 100
 static int oplus_chg_set_input_current(struct battery_chg_dev *bcdev, int current_ma)
 {
 	int rc = 0, i = 0;
@@ -5200,13 +5476,16 @@ static int oplus_chg_set_input_current(struct battery_chg_dev *bcdev, int curren
 	int prop_id = 0;
 	struct psy_state *pst = &bcdev->psy_list[PSY_TYPE_USB];
 	struct oplus_mms *gauge_topic;
+	bool present;
+	int max_pdo_current;
+	int batt_volt;
+	int type = 0;
 
 	prop_id = get_property_id(pst, POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT);
 
 	chg_info("usb input max current limit=%d setting %02x\n", current_ma, i);
 	gauge_topic = oplus_mms_get_by_name("gauge");
 	if (gauge_topic) {
-		int batt_volt;
 		union mms_msg_data data = {0};
 
 		oplus_mms_get_item_data(gauge_topic,
@@ -5221,6 +5500,41 @@ static int oplus_chg_set_input_current(struct battery_chg_dev *bcdev, int curren
 		chg_info("gauge_topic is null, use default aicl_point 4500\n");
 		aicl_point = 4500;
 	}
+	if (bcdev->usb_aicl_enhance) {
+		oplus_chg_8350_input_present(bcdev->buck_ic, &present);
+		oplus_chg_8350_get_charger_type(bcdev->buck_ic, &type);
+		if ((bcdev->charger_type == OPLUS_CHG_USB_TYPE_SDP ||
+		     bcdev->charger_type == OPLUS_CHG_USB_TYPE_CDP ||
+		     (bcdev->charger_type == OPLUS_CHG_USB_TYPE_UNKNOWN && current_ma == UNKONW_CURR)) &&
+		    present) {
+			if (bcdev->charger_type == OPLUS_CHG_USB_TYPE_SDP) {
+				aicl_point = USB_SW_AICL_POINT;
+				oplus_chg_set_aicl_point(bcdev->buck_ic, batt_volt);
+			}
+			rc = oplus_chg_usb_set_input_current(bcdev, current_ma, aicl_point);
+			goto aicl_return;
+		}
+	}
+
+	if (oplus_chg_get_common_charge_icl_support_flags()) {
+		max_pdo_current = oplus_get_max_current_from_fixed_pdo(bcdev, bcdev->pd_chg_volt);
+		chg_info("max_pdo_current:%d ma\n", max_pdo_current);
+
+		if (max_pdo_current >= 0)
+			current_ma = min(current_ma, max_pdo_current);
+		if (current_ma < DEFAULT_CURR_BY_CC) {
+			cancel_delayed_work(&bcdev->sourcecap_suspend_recovery_work);
+			oplus_chg_suspend_charger(true, PD_PDO_ICL_VOTER);
+			schedule_delayed_work(&bcdev->sourcecap_suspend_recovery_work,
+				msecs_to_jiffies(SUSPEND_RECOVERY_DELAY_MS));
+			goto aicl_return;
+		} else if (current_ma < usb_icl[0]) {
+			oplus_chg_suspend_charger(false, PD_PDO_ICL_VOTER);
+			goto common_charge_aicl_end;
+		} else {
+			oplus_chg_suspend_charger(false, PD_PDO_ICL_VOTER);
+		}
+	}
 
 	if (current_ma < 500) {
 		i = 0;
@@ -5236,7 +5550,7 @@ static int oplus_chg_set_input_current(struct battery_chg_dev *bcdev, int curren
 	}
 	usleep_range(50000, 51000);
 	if (qpnp_get_prop_vbus_collapse_status(bcdev) == true) {
-		if (bcdev->rerun_max > 0) {
+		if (bcdev->rerun_max > 0 && bcdev->usb_in_status) {
 			bcdev->g_icl_ma = current_ma;
 			schedule_delayed_work(&bcdev->vbus_collapse_rerun_icl_work,
 				msecs_to_jiffies(3000)); /* vbus_collapse_status resumes after three seconds */
@@ -5412,8 +5726,11 @@ aicl_boost_back:
 	}
 	chg_info("usb input max current limit aicl chg_vol=%d j[%d]=%d sw_aicl_point:%d aicl_boost_back\n", chg_vol, i, usb_icl[i], aicl_point);
 	goto aicl_return;
+common_charge_aicl_end:
+	rc = write_property_id(bcdev, pst, prop_id, DEFAULT_CURR_BY_CC * 1000);
+	chg_info("common_charge_aicl_end set icl:%d mA, rc=%d\n", DEFAULT_CURR_BY_CC, rc);
+	goto aicl_return;
 aicl_return:
-	schedule_delayed_work(&bcdev->ibus_collapse_rerun_aicl_work, OPLUS_RERUN_AICL_THRESHOLD_MS);
 	return rc;
 }
 
@@ -5425,30 +5742,6 @@ static void oplus_vbus_collapse_rerun_icl_work(struct work_struct *work)
 	oplus_chg_set_input_current(bcdev, bcdev->g_icl_ma);
 }
 
-static void oplus_ibus_collapse_rerun_aicl_work(struct work_struct *work)
-{
-	int icl_ma;
-	int ibus_ma;
-	struct oplus_chg_ic_dev *ic_dev;
-
-	struct battery_chg_dev *bcdev = container_of(work,
-		struct battery_chg_dev, ibus_collapse_rerun_aicl_work.work);
-
-	if (!bcdev || !bcdev->buck_ic) {
-		chg_err("bcdev is NULL");
-		return;
-	}
-
-	ic_dev = bcdev->buck_ic;
-	oplus_chg_8350_get_icl(ic_dev, &icl_ma);
-	oplus_chg_8350_get_input_curr(ic_dev, &ibus_ma);
-
-	if (abs(icl_ma - ibus_ma) > ICL_IBUS_ABS_THRESHOLD_MA) {
-		chg_info("icl_ma:%d, ibus_ma:%d, ibus error, rerun aicl", icl_ma, ibus_ma);
-		oplus_chg_8350_aicl_rerun(ic_dev);
-	}
-}
-
 static int oplus_chg_8350_set_icl(struct oplus_chg_ic_dev *ic_dev,
 				  bool vooc_mode, bool step, int icl_ma)
 {
@@ -5985,8 +6278,10 @@ static int oplus_chg_8350_set_pd_config(struct oplus_chg_ic_dev *ic_dev, u32 pdo
 		rc = write_property_id(bcdev, pst, BATT_SET_PDO, vol_mv);
 		if (rc)
 			chg_err("set PD to %d mV fail, rc=%d\n", vol_mv, rc);
-		else
+		else {
 			chg_err("set PD to %d mV, rc=%d\n", vol_mv, rc);
+			bcdev->pd_chg_volt = vol_mv;
+		}
 		break;
 	case PD_SRC_PDO_TYPE_BATTERY:
 	case PD_SRC_PDO_TYPE_VARIABLE:
@@ -6442,6 +6737,100 @@ static int oplus_chg_8350_get_batt_btb_temp(struct oplus_chg_ic_dev *ic_dev,
 	return 0;
 }
 
+static int oplus_chg_8350_get_usb_aicl_enhance(struct oplus_chg_ic_dev *ic_dev, bool *enable)
+{
+	struct battery_chg_dev *bcdev;
+
+	if (ic_dev == NULL) {
+		chg_err("oplus_chg_ic_dev is NULL");
+		return -ENODEV;
+	}
+
+	bcdev = oplus_chg_ic_get_drvdata(ic_dev);
+	*enable = bcdev->usb_aicl_enhance;
+
+	return 0;
+}
+
+static int oplus_chg_8350_set_aicl_vol(struct battery_chg_dev *bcdev, int vol)
+{
+	struct psy_state *pst = NULL;
+	int rc = 0;
+
+	if (bcdev == NULL) {
+		chg_err("bcdev is NULL");
+		return -ENODEV;
+	}
+
+	pst = &bcdev->psy_list[PSY_TYPE_USB];
+
+	rc = write_property_id(bcdev, pst, USB_SET_AICL_VOL, vol);
+	if (rc)
+		chg_err("set aicl vol fail, rc=%d\n", rc);
+
+	return rc;
+}
+
+static int oplus_chg_8350_get_aicl_vol(struct battery_chg_dev *bcdev, int *vol)
+{
+	struct psy_state *pst = NULL;
+	int rc = 0;
+
+	if (bcdev == NULL) {
+		chg_err("bcdev is NULL");
+		return -ENODEV;
+	}
+
+	pst = &bcdev->psy_list[PSY_TYPE_USB];
+
+	rc = read_property_id(bcdev, pst, USB_GET_AICL_VOL);
+	if (rc < 0) {
+		chg_err("get aicl vol fail, rc = %d\n", rc);
+		return -1;
+	}
+
+	*vol = pst->prop[USB_GET_AICL_VOL];
+
+	return rc;
+}
+
+static int oplus_chg_set_aicl_point(struct oplus_chg_ic_dev *ic_dev, int vbatt)
+{
+	struct battery_chg_dev *bcdev;
+	int hw_aicl_point = HW_AICL_POINT_VOL_5V_PHASE1;
+	int curr_aicl = 0;
+	int type = 0;
+	bool present = false;
+
+	if (ic_dev == NULL) {
+		chg_err("oplus_chg_ic_dev is NULL");
+		return -ENODEV;
+	}
+
+	bcdev = oplus_chg_ic_get_drvdata(ic_dev);
+	if (!bcdev || !bcdev->usb_aicl_enhance)
+		return 0;
+
+	if (vbatt > AICL_POINT_VOL_5V)
+		hw_aicl_point = HW_AICL_POINT_VOL_5V_PHASE2;
+	else if (vbatt <= AICL_POINT_VOL_5V)
+		hw_aicl_point = HW_AICL_POINT_VOL_5V_PHASE1;
+
+	oplus_chg_8350_input_present(bcdev->buck_ic, &present);
+	oplus_chg_8350_get_charger_type(bcdev->buck_ic, &type);
+	if (bcdev->charger_type == OPLUS_CHG_USB_TYPE_SDP && present)
+		hw_aicl_point = USB_HW_AICL_POINT;
+
+	oplus_chg_8350_get_aicl_vol(bcdev, &curr_aicl);
+	if (!present && curr_aicl <= hw_aicl_point)
+		return 0;
+	if (curr_aicl != hw_aicl_point) {
+		chg_info("curr_aicl = %d new aicl %d\n", curr_aicl, hw_aicl_point);
+		oplus_chg_8350_set_aicl_vol(bcdev, hw_aicl_point);
+	}
+
+	return 0;
+}
 #ifdef OPLUS_FEATURE_CHG_BASIC
 static void *oplus_chg_8350_buck_get_func(struct oplus_chg_ic_dev *ic_dev, enum oplus_chg_ic_func func_id)
 {
@@ -6621,6 +7010,12 @@ static void *oplus_chg_8350_buck_get_func(struct oplus_chg_ic_dev *ic_dev, enum
 	case OPLUS_IC_FUNC_GET_TYPEC_ROLE:
 		func = OPLUS_CHG_IC_FUNC_CHECK(OPLUS_IC_FUNC_GET_TYPEC_ROLE, oplus_chg_8350_get_typec_mode);
 		break;
+	case OPLUS_IC_FUNC_BUCK_GET_USB_AICL_ENHANCE:
+		func = OPLUS_CHG_IC_FUNC_CHECK(OPLUS_IC_FUNC_BUCK_GET_USB_AICL_ENHANCE, oplus_chg_8350_get_usb_aicl_enhance);
+		break;
+	case OPLUS_IC_FUNC_BUCK_SET_AICL_POINT:
+		func = OPLUS_CHG_IC_FUNC_CHECK(OPLUS_IC_FUNC_BUCK_SET_AICL_POINT, oplus_chg_set_aicl_point);
+		break;
 	default:
 		chg_err("this func(=%d) is not supported\n", func_id);
 		func = NULL;
@@ -7137,6 +7532,31 @@ static int oplus_set_read_mode(struct oplus_chg_ic_dev *ic_dev, int value)
 	return 0;
 }
 
+static int oplus_fg_get_dec_fg_type(struct oplus_chg_ic_dev *ic_dev, int *fg_type)
+{
+	if (ic_dev == NULL || !fg_type) {
+		chg_err("oplus_chg_ic_dev or deep_dischg_count is NULL");
+		return -ENODEV;
+	}
+/* TODO DEC_CV_PACK_SOH/DEC_CV_MB_TI */
+
+	*fg_type = DEC_CV_QCOM_FG;
+
+	return 0;
+}
+
+static int oplus_fg_get_dec_cv_soh(struct oplus_chg_ic_dev *ic_dev, int *dec_soh)
+{
+	if (ic_dev == NULL || !dec_soh) {
+		chg_err("oplus_chg_ic_dev is NULL");
+		return -ENODEV;
+	}
+
+	*dec_soh = fg_sm8350_get_battery_cc();
+
+	return 0;
+}
+
 static void *oplus_chg_8350_gauge_get_func(struct oplus_chg_ic_dev *ic_dev,
 					   enum oplus_chg_ic_func func_id)
 {
@@ -7319,6 +7739,14 @@ static void *oplus_chg_8350_gauge_get_func(struct oplus_chg_ic_dev *ic_dev,
 		func = OPLUS_CHG_IC_FUNC_CHECK(OPLUS_IC_FUNC_GAUGE_SET_READ_MODE,
 			oplus_set_read_mode);
 		break;
+	case OPLUS_IC_FUNC_GAUGE_GET_DEC_FG_TYPE:
+		func = OPLUS_CHG_IC_FUNC_CHECK(OPLUS_IC_FUNC_GAUGE_GET_DEC_FG_TYPE,
+						   oplus_fg_get_dec_fg_type);
+		break;
+	case OPLUS_IC_FUNC_GAUGE_GET_DEC_CV_SOH:
+		func = OPLUS_CHG_IC_FUNC_CHECK(OPLUS_IC_FUNC_GAUGE_GET_DEC_CV_SOH,
+						   oplus_fg_get_dec_cv_soh);
+		break;
 	default:
 		chg_err("this func(=%d) is not supported\n", func_id);
 		func = NULL;
@@ -8327,8 +8755,8 @@ static int battery_chg_probe(struct platform_device *pdev)
 	INIT_DELAYED_WORK(&bcdev->qc_type_check_work, oplus_qc_type_check_work);
 	INIT_DELAYED_WORK(&bcdev->vbus_collapse_rerun_icl_work, oplus_vbus_collapse_rerun_icl_work);
 	INIT_DELAYED_WORK(&bcdev->publish_close_cp_item_work, oplus_publish_close_cp_item_work);
-	INIT_DELAYED_WORK(&bcdev->ibus_collapse_rerun_aicl_work, oplus_ibus_collapse_rerun_aicl_work);
 	INIT_DELAYED_WORK(&bcdev->sourcecap_done_work, oplus_sourcecap_done_work);
+	INIT_DELAYED_WORK(&bcdev->sourcecap_suspend_recovery_work, oplus_sourcecap_suspend_recovery_work);
 #endif
 #ifdef OPLUS_FEATURE_CHG_BASIC
 	INIT_DELAYED_WORK(&bcdev->vchg_trig_work, oplus_vchg_trig_work);
diff --git a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_sm8450.h b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_sm8450.h
index ce8c6c98..b220303e 100755
--- a/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_sm8450.h
+++ b/vendor/oplus/kernel/charger/v2/charger_ic/oplus_hal_sm8450.h
@@ -91,6 +91,7 @@
 #define BC_UFCS_HANDSHAKE_OK		0X71
 #define BC_UFCS_DISABLE_MOS		0X72
 #define BC_UFCS_PDO_READY		0X74
+#define PD_SOURCECAP_DONE		0X79
 #endif
 
 #ifdef OPLUS_FEATURE_CHG_BASIC
@@ -491,6 +492,8 @@ enum usb_property_id {
 	USB_GET_SRC_INFO_L,
 	USB_GET_SRC_INFO_H,
 	USB_SET_GET_SRC,
+	USB_SET_AICL_VOL,
+	USB_GET_AICL_VOL,
 #endif /*OPLUS_FEATURE_CHG_BASIC*/
 	USB_PROP_MAX,
 };
@@ -573,6 +576,8 @@ enum usb_property_id {
 	USB_GET_SRC_INFO_L,
 	USB_GET_SRC_INFO_H,
 	USB_SET_GET_SRC,
+	USB_SET_AICL_VOL,
+	USB_GET_AICL_VOL,
 #endif /*OPLUS_FEATURE_CHG_BASIC*/
 	USB_PROP_MAX,
 };
@@ -617,6 +622,25 @@ enum OTG_BOOST_SOURCE {
 	OTG_BOOST_SOURCE_EXTERNAL,
 };
 
+enum charging_status {
+	CHARGING_TYPE_UNKNOW,
+	CHARGING_TYPE_VOOC_SVOOC,
+	CHARGING_TYPE_OPLUS_UFCS,
+	CHARGING_TYPE_OPLUS_PPS,
+	CHARGING_TYPE_THIRD_UFCS,
+	CHARGING_TYPE_THIRD_PPS,
+	CHARGING_TYPE_FFC,
+	CHARGING_TYPE_MAX,
+};
+
+enum qbg_full_temp_region {
+	QBG_TEMP_COLD,
+	QBG_TEMP_COOL,
+	QBG_TEMP_NORMAL,
+	QBG_TEMP_WARM,
+	QBG_TEMP_MAX,
+};
+
 enum OEM_MISC_CTL_CMD {
 	OEM_MISC_CTL_CMD_LCM_EN = 0,
 	OEM_MISC_CTL_CMD_LCM_25K = 2,
@@ -781,6 +805,8 @@ struct battery_chg_dev {
 	struct oplus_chg_ic_dev		*ufcs_ic;
 	struct oplus_impedance_node	*input_imp_node;
 	struct oplus_mms		*common_topic;
+	struct oplus_mms		*pps_topic;
+	struct oplus_mms		*ufcs_topic;
 	struct oplus_mms		*err_topic;
 	struct votable			*chg_disable_votable;
 #endif
@@ -823,6 +849,7 @@ struct battery_chg_dev {
 	struct delayed_work	oem_lcm_en_check_work;
 	struct delayed_work	ctrl_lcm_frequency;
 	struct delayed_work	sourcecap_done_work;
+	struct delayed_work	sourcecap_suspend_recovery_work;
 	u32			oem_misc_ctl_data;
 	bool			oem_usb_online;
 	bool			oem_lcm_check;
@@ -846,12 +873,12 @@ struct battery_chg_dev {
 	struct delayed_work 	pd_only_check_work;
 	pd_msg_data			pdo[PPS_PDO_MAX];
 	bool					voocphy_err_check;
+	bool			usb_aicl_enhance;
 #endif
 #ifdef OPLUS_FEATURE_CHG_BASIC
 	int vchg_trig_irq;
 	struct delayed_work vchg_trig_work;
 	struct delayed_work vbus_collapse_rerun_icl_work;
-	struct delayed_work ibus_collapse_rerun_aicl_work;
 	struct delayed_work wait_wired_charge_on;
 	struct delayed_work wait_wired_charge_off;
 	struct delayed_work mcu_en_init_work;
@@ -901,6 +928,9 @@ struct battery_chg_dev {
 	int read_by_reg;
 	bool ufcs_run_check_support;
 #endif
+	int batt_full_para[CHARGING_TYPE_MAX][QBG_TEMP_MAX];
+	int batt_full_temp[QBG_TEMP_MAX];
+	bool batt_full_method_new;
 };
 
 /**********************************************************************
diff --git a/vendor/oplus/kernel/charger/v2/config/ic/buck_boost.json b/vendor/oplus/kernel/charger/v2/config/ic/buck_boost.json
index 83219289..b1b2a2e5 100755
--- a/vendor/oplus/kernel/charger/v2/config/ic/buck_boost.json
+++ b/vendor/oplus/kernel/charger/v2/config/ic/buck_boost.json
@@ -1326,8 +1326,40 @@
                     }
                 }
             }
+        },
+        {
+            "lable": "OPLUS_IC_FUNC_BUCK_SET_FLASH_MODE",
+            "desc": {
+                "zh": "设置高压打闪模式"
+            },
+            "auto_debug_code": true,
+            "parameter_list": ["bool"],
+            "parameter_desc": [
+                {
+                    "range": "0-1",
+                    "type": "in",
+                    "desc": {
+                        "zh": "1: 高压打闪模式, 0: 非高压打闪模式"
+                    }
+                }
+            ],
+            "vict": {
+                "read": false,
+                "write": {
+                    "cmd": "vict -f {id} -S{val} vic-*",
+                    "desc": {
+                        "zh": "N/A"
+                    }
+                },
+                "overwrite": {
+                    "cmd": "vict -f {id} -O {val} vic-*",
+                    "desc": {
+                        "zh": "N/A"
+                    }
+                }
+            }
         }
     ],
 
-    "version": "V2.3:47:e1275e5df36010c455e16271cf1ce152893fe17d03b56f87a86e56e8027958b7"
+    "version": "V2.4:48:c7994cffa768028306890fd8b50e121a31af02ae4a94398dddafb7836e115e50"
 }
diff --git a/vendor/oplus/kernel/charger/v2/config/oplus_chg_ic.json b/vendor/oplus/kernel/charger/v2/config/oplus_chg_ic.json
index 624b3aa5..b1f73a87 100755
--- a/vendor/oplus/kernel/charger/v2/config/oplus_chg_ic.json
+++ b/vendor/oplus/kernel/charger/v2/config/oplus_chg_ic.json
@@ -767,6 +767,13 @@
                     },
                     "str": "batt_sub_btb"
                 },
+                {
+                    "lable": "TRACK_GAGUE_QCOM_CALI_INFO",
+                    "desc": {
+                        "zh": "QCOM平台电量计异常校准信息"
+                    },
+                    "str": "qcom_cali_info"
+                },
                 {
                     "lable": "TRACK_GAGUE_ERR_MAX",
                     "desc": {
diff --git a/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_hal_bq27z561.c b/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_hal_bq27z561.c
index 3c2722bf..de929825 100755
--- a/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_hal_bq27z561.c
+++ b/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_hal_bq27z561.c
@@ -211,8 +211,6 @@ static int bq27z561_sealed(struct chip_bq27z561 *chip)
 static int bq27z561_i2c_deep_int(struct chip_bq27z561 *chip)
 {
 	int rc = 0;
-	u8 seal_cmd_1[2] = { 0x14, 0x04 };
-	u8 seal_cmd_2[2] = { 0x72, 0x36 };
 	int retry = 5;
 
 	if (!chip)
@@ -222,16 +220,20 @@ static int bq27z561_i2c_deep_int(struct chip_bq27z561 *chip)
 		/* need to delay 2s before write 0x0414, delay 1s before write 0x3672
 		 * make sure unseal Success rate
 		 */
-		usleep_range(2000000, 2000000);
-		bq27z561_write_i2c_block(chip, BQ28Z610_REG_CNTL1, 2, seal_cmd_1);
+		mutex_lock(&chip->chip_mutex);
+		i2c_smbus_write_word_data(chip->client, BQ28Z610_REG_CNTL1, BQ28Z610_UNSEAL_SUBCMD1);
 		usleep_range(1000000, 1000000);
-		bq27z561_write_i2c_block(chip, BQ28Z610_REG_CNTL1, 2, seal_cmd_2);
+		i2c_smbus_write_word_data(chip->client, BQ28Z610_REG_CNTL1, BQ28Z610_UNSEAL_SUBCMD2);
+		mutex_unlock(&chip->chip_mutex);
 
 		rc = bq27z561_sealed(chip);
-		if (rc == 1)
+		if (rc == 1) {
 			retry = 0;
-		else
+		} else {
 			retry--;
+			usleep_range(2000000, 2000000);
+			chg_info("bq27z561_unseal retry:%d, rc:%d\n", retry, rc);
+		}
 	} while (retry > 0);
 	chg_info("bq27z561_unseal flag [%d]\n", rc);
 
diff --git a/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_hal_mtk_platform_gauge.c b/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_hal_mtk_platform_gauge.c
index 4968d68a..cc9166c3 100755
--- a/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_hal_mtk_platform_gauge.c
+++ b/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_hal_mtk_platform_gauge.c
@@ -702,9 +702,7 @@ static int oplus_mt6375_guage_set_reset_gauge(struct oplus_chg_ic_dev *ic_dev, c
 	int reset_cc = 0;
 	int rc = 0;
 	int get_soh;
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0))
 	int get_cc;
-#endif
 	int retry_count = 0;
 
 	if (buf == NULL) {
@@ -724,7 +722,6 @@ static int oplus_mt6375_guage_set_reset_gauge(struct oplus_chg_ic_dev *ic_dev, c
 
 	do {
 		retry_count++;
-		chg_info("%s: Reset retry_count %d\n", __func__, retry_count);
 		if (!g_gauge_chip) {
 			chg_err("%s: Gauge chip not initialized\n", __func__);
 			rc = -ENODEV;
@@ -755,22 +752,24 @@ static int oplus_mt6375_guage_set_reset_gauge(struct oplus_chg_ic_dev *ic_dev, c
 			continue;
 		}
 
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0))
 		get_cc = g_gauge_chip->gauge_ops->get_battery_cc();
+		chg_info("%s: Reset retry_count = %d %d %d %d\n", __func__, retry_count, enable, get_soh, get_cc);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0))
 		if (get_cc != reset_cc) {
+#else
+		if (get_cc != 0) {
+#endif
 			g_gauge_chip->gauge_ops->set_gauge_cycles(reset_cc);
 			continue;
 		}
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0))
 		if (get_soh == reset_soh && get_cc == reset_cc) {
-			chg_info("%s: Reset successful\n", __func__);
-			break;
-		}
 #else
-		if (get_soh == reset_soh) {
+		if (get_soh == reset_soh && get_cc == 0) {
+#endif
 			chg_info("%s: Reset successful\n", __func__);
 			break;
 		}
-#endif
 	} while (retry_count < RESET_GAUGE_RETRY_TIMES);
 
 out:
diff --git a/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_ds28e30/1wire_protocol.c b/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_ds28e30/1wire_protocol.c
index 0e605dad..45991753 100644
--- a/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_ds28e30/1wire_protocol.c
+++ b/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_ds28e30/1wire_protocol.c
@@ -190,6 +190,9 @@ unsigned char read_bit(void)
 	} else {
 		ONE_WIRE_OUT_LOW;
 		ONE_WIRE_OUT_LOW;
+		if (g_onewire_data->maxim_trl_ndelay != 0) {
+			delay_ns(g_onewire_data->maxim_trl_ndelay);
+		}
 		ONE_WIRE_CONFIG_IN;
 		delay_ns(500);	/* wait 500 ns */
 		value = readl_relaxed(g_onewire_data->gpio_in_reg);
@@ -276,6 +279,7 @@ int onewire_init(struct onewire_gpio_data *onewire_data)
 	g_onewire_data->write_begin_low_level_time = onewire_data->write_begin_low_level_time;
 	g_onewire_data->write_relese_ic_time = onewire_data->write_relese_ic_time;
 	g_onewire_data->maxim_romid_crc_support = onewire_data->maxim_romid_crc_support;
+	g_onewire_data->maxim_trl_ndelay = onewire_data->maxim_trl_ndelay;
 	ONE_WIRE_CONFIG_OUT;
 	ONE_WIRE_OUT_HIGH;
 	delay_ms(10);
diff --git a/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_ds28e30/1wire_protocol.h b/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_ds28e30/1wire_protocol.h
index d577334d..6848e95e 100644
--- a/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_ds28e30/1wire_protocol.h
+++ b/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_ds28e30/1wire_protocol.h
@@ -35,6 +35,7 @@ struct onewire_gpio_data {
 	unsigned int write_begin_low_level_time;
 	unsigned int write_relese_ic_time;
 	bool maxim_romid_crc_support;
+	unsigned int maxim_trl_ndelay;
 	unsigned int gpio_reg[2];
 };
 
diff --git a/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_maxim.c b/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_maxim.c
index d3390203..04315a45 100644
--- a/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_maxim.c
+++ b/vendor/oplus/kernel/charger/v2/gauge_ic/oplus_maxim/oplus_maxim.c
@@ -248,6 +248,12 @@ static int oplus_maxim_parse_dt(struct oplus_maxim_gauge_chip *chip)
 	chip->gpio_info.maxim_romid_crc_support = of_property_read_bool(node, "oplus,maxim_romid_crc_support");
 	chg_info("maxim_romid_crc_support %d\n", chip->gpio_info.maxim_romid_crc_support);
 
+	rc = of_property_read_u32(node, "maxim_trl_ndelay", &chip->gpio_info.maxim_trl_ndelay);
+	if (rc) {
+		chip->gpio_info.maxim_trl_ndelay = 0;
+	}
+	chg_info("maxim_trl_ndelay %d\n", chip->gpio_info.maxim_trl_ndelay);
+
 	chip->maxim_in_kernel_init_ok = true;
 	chg_info("maxim_in_kernel_init_ok: %d\n", chip->maxim_in_kernel_init_ok);
 
@@ -496,6 +502,11 @@ static void *oplus_chg_get_func(struct oplus_chg_ic_dev *ic_dev,
 			OPLUS_IC_FUNC_GAUGE_GET_BATT_AUTH,
 			oplus_maxim_guage_get_batt_auth);
 		break;
+	case OPLUS_IC_FUNC_GAUGE_GET_BATT_HMAC:
+		func = OPLUS_CHG_IC_FUNC_CHECK(
+			OPLUS_IC_FUNC_GAUGE_GET_BATT_HMAC,
+			oplus_maxim_guage_get_batt_auth);
+		break;
 	case OPLUS_IC_FUNC_GAUGE_SET_BATT_HISTSOH_DATA:
 		func = OPLUS_CHG_IC_FUNC_CHECK(
 			OPLUS_IC_FUNC_GAUGE_SET_BATT_HISTSOH_DATA,
diff --git a/vendor/oplus/kernel/charger/v2/hal/oplus_virtual_buck.c b/vendor/oplus/kernel/charger/v2/hal/oplus_virtual_buck.c
index 03307bfa..05d0d1aa 100755
--- a/vendor/oplus/kernel/charger/v2/hal/oplus_virtual_buck.c
+++ b/vendor/oplus/kernel/charger/v2/hal/oplus_virtual_buck.c
@@ -507,6 +507,10 @@ static int oplus_vc_ship_gpio_init(struct oplus_virtual_buck_ic *chip)
 	int rc;
 
 	chip->misc_gpio.pinctrl = devm_pinctrl_get(chip->dev);
+	if (IS_ERR_OR_NULL(chip->misc_gpio.pinctrl)) {
+		chg_err("get pinctrl fail\n");
+		return -EPROBE_DEFER;
+	}
 
 	chip->misc_gpio.ship_active = pinctrl_lookup_state(chip->misc_gpio.pinctrl, "ship_active");
 	if (IS_ERR_OR_NULL(chip->misc_gpio.ship_active)) {
@@ -531,6 +535,12 @@ static int oplus_vc_ccdetect_gpio_init(struct oplus_virtual_buck_ic *chip)
 {
 	int rc;
 
+	chip->misc_gpio.pinctrl = devm_pinctrl_get(chip->dev);
+	if (IS_ERR_OR_NULL(chip->misc_gpio.pinctrl)) {
+		chg_err("get pinctrl fail\n");
+		return -EPROBE_DEFER;
+	}
+
 	chip->misc_gpio.ccdetect_active = pinctrl_lookup_state(
 		chip->misc_gpio.pinctrl, "ccdetect_active");
 	if (IS_ERR_OR_NULL(chip->misc_gpio.ccdetect_active)) {
@@ -2199,6 +2209,7 @@ static int oplus_chg_vb_set_pd_config(struct oplus_chg_ic_dev *ic_dev, u32 pdo)
 	struct oplus_virtual_buck_ic *vb;
 	int i;
 	int rc = 0;
+	int status = -ENOTSUPP;
 
 	if (ic_dev == NULL) {
 		chg_err("oplus_chg_ic_dev is NULL");
@@ -2215,13 +2226,17 @@ static int oplus_chg_vb_set_pd_config(struct oplus_chg_ic_dev *ic_dev, u32 pdo)
 			vb->child_list[i].ic_dev,
 			OPLUS_IC_FUNC_BUCK_SET_PD_CONFIG,
 			pdo);
-		if (rc < 0)
+		if (rc < 0) {
 			chg_err("child ic[%d] set pdo(=0x%08x) error, rc=%d\n", i, pdo, rc);
-		else
-			return 0;
+			return rc;
+		} else {
+			status = 0;
+		}
 	}
-
-	return rc;
+	if (status == -ENOTSUPP && rc == -ENOTSUPP)
+		return rc;
+	else
+		return 0;
 }
 
 static int oplus_chg_vb_wls_boost_enable(struct oplus_chg_ic_dev *ic_dev, bool en)
@@ -4233,6 +4248,37 @@ static int oplus_chg_vb_get_lpd_info(struct oplus_chg_ic_dev *ic_dev, u32 *buffe
 	return rc;
 }
 
+int oplus_chg_vb_set_flash_mode(struct oplus_chg_ic_dev *ic_dev, bool flash_mode)
+{
+	struct oplus_virtual_buck_ic *vb;
+	int i;
+	int rc = 0;
+
+	if (ic_dev == NULL) {
+		chg_err("oplus_chg_ic_dev is NULL");
+		return -ENODEV;
+	}
+
+	vb = oplus_chg_ic_get_drvdata(ic_dev);
+
+	for (i = 0; i < vb->child_num; i++) {
+		if (!func_is_support(&vb->child_list[i], OPLUS_IC_FUNC_BUCK_SET_FLASH_MODE)) {
+			rc = -ENOTSUPP;
+			continue;
+		}
+		rc = oplus_chg_ic_func(
+			vb->child_list[i].ic_dev,
+			OPLUS_IC_FUNC_BUCK_SET_FLASH_MODE,
+			flash_mode);
+		if (rc < 0)
+			chg_err("child ic[%d] set flash mode error, rc=%d\n", i, rc);
+		else
+			return 0;
+	}
+
+	return rc;
+}
+
 static void *oplus_chg_vb_get_func(struct oplus_chg_ic_dev *ic_dev, enum oplus_chg_ic_func func_id)
 {
 	void *func = NULL;
@@ -4501,6 +4547,9 @@ static void *oplus_chg_vb_get_func(struct oplus_chg_ic_dev *ic_dev, enum oplus_c
 	case OPLUS_IC_FUNC_BUCK_GET_LPD_INFO:
 		func = OPLUS_CHG_IC_FUNC_CHECK(OPLUS_IC_FUNC_BUCK_GET_LPD_INFO, oplus_chg_vb_get_lpd_info);
 		break;
+	case OPLUS_IC_FUNC_BUCK_SET_FLASH_MODE:
+		func = OPLUS_CHG_IC_FUNC_CHECK(OPLUS_IC_FUNC_BUCK_SET_FLASH_MODE, oplus_chg_vb_set_flash_mode);
+		break;
 	default:
 		chg_err("this func(=%d) is not supported\n", func_id);
 		func = NULL;
diff --git a/vendor/oplus/kernel/charger/v2/hal/oplus_virtual_gauge.c b/vendor/oplus/kernel/charger/v2/hal/oplus_virtual_gauge.c
index 31f7af6d..1b484e13 100755
--- a/vendor/oplus/kernel/charger/v2/hal/oplus_virtual_gauge.c
+++ b/vendor/oplus/kernel/charger/v2/hal/oplus_virtual_gauge.c
@@ -1870,7 +1870,11 @@ static int oplus_chg_vg_get_exist_status(struct oplus_chg_ic_dev *ic_dev,
 	*exist = true;
 	chip = oplus_chg_ic_get_drvdata(ic_dev);
 	for (i = 0; i < chip->child_num; i++) {
-		if (!chip->child_list[i].ic_dev->online) {
+		if (chip->child_list[i].ic_dev->online)
+			continue;
+
+		if (func_is_support(&chip->child_list[i],
+				     OPLUS_IC_FUNC_GAUGE_GET_BATT_EXIST)) {
 			*exist = false;
 			break;
 		}
diff --git a/vendor/oplus/kernel/charger/v2/include/oplus_chg.h b/vendor/oplus/kernel/charger/v2/include/oplus_chg.h
index d46c332d..3d90cb77 100755
--- a/vendor/oplus/kernel/charger/v2/include/oplus_chg.h
+++ b/vendor/oplus/kernel/charger/v2/include/oplus_chg.h
@@ -3,6 +3,7 @@
 
 #include 
 #include "oplus_chg_symbol.h"
+#include 
 
 extern int oplus_log_level;
 
diff --git a/vendor/oplus/kernel/charger/v2/include/oplus_chg_monitor.h b/vendor/oplus/kernel/charger/v2/include/oplus_chg_monitor.h
index 27aa22ff..b65fe43c 100755
--- a/vendor/oplus/kernel/charger/v2/include/oplus_chg_monitor.h
+++ b/vendor/oplus/kernel/charger/v2/include/oplus_chg_monitor.h
@@ -29,6 +29,7 @@ enum err_topic_item {
 	ERR_ITEM_PLC_INFO,
 	ERR_ITEM_DEC_CV_INFO,
 	ERR_ITEM_LPD,
+	ERR_ITEM_PPS,
 };
 
 enum oplus_chg_track_mcu_voocphy_break_code {
diff --git a/vendor/oplus/kernel/charger/v2/include/oplus_chg_pps.h b/vendor/oplus/kernel/charger/v2/include/oplus_chg_pps.h
old mode 100644
new mode 100755
index 36500565..403a2241
--- a/vendor/oplus/kernel/charger/v2/include/oplus_chg_pps.h
+++ b/vendor/oplus/kernel/charger/v2/include/oplus_chg_pps.h
@@ -19,11 +19,17 @@
 #define PD_PDO_VOL(pdo)			((pdo) * 50)
 #define PD_PDO_CURR_MAX(pdo)		((pdo) * 10)
 
+#define OPLUS_CHG_TRACK_SCENE_PPS_ERR	"pps_err"
+
 enum pps_topic_item {
 	PPS_ITEM_ONLINE,
 	PPS_ITEM_CHARGING,
 	PPS_ITEM_OPLUS_ADAPTER,
 	PPS_ITEM_ONLINE_KEEP,
+	PPS_ITEM_CPA_POWER,
+	PPS_ITEM_ADAPTER_POWER,
+	PPS_ITEM_PPS_ADAPTER_INFO,
+	PPS_ITEM_ADAPTER_MAX_POWER,
 };
 
 typedef enum
@@ -97,9 +103,18 @@ enum pps_power_type {
 	OPLUS_PPS_POWER_MAX = 0xFFFF,
 };
 
+enum pps_user_err_type {
+	PPS_ERR_BTB_OVER = 1,
+	PPS_ERR_TFG_OVER,
+	PPS_ERR_IBAT_OVER,
+	PPS_ERR_REQUEST_VOLT_OVER,
+	PPS_ERR_MAX,
+};
+
 int oplus_pps_current_to_level(struct oplus_mms *mms, int ibus_curr);
 int oplus_pps_get_charging_power_watt(struct oplus_mms *mms);
 int oplus_pps_get_adapter_power_mw(struct oplus_mms *mms);
 int oplus_pps_get_curve_ibus(struct oplus_mms *mms);
 int oplus_pps_level_to_current(struct oplus_mms *mms, int level);
+int oplus_chg_get_pdo_info(struct oplus_mms *mms, u32* pdo);
 #endif /* __OPLUS_CHG_PPS_H__ */
diff --git a/vendor/oplus/kernel/charger/v2/include/oplus_chg_ufcs.h b/vendor/oplus/kernel/charger/v2/include/oplus_chg_ufcs.h
old mode 100755
new mode 100644
index 514982ec..6209357c
--- a/vendor/oplus/kernel/charger/v2/include/oplus_chg_ufcs.h
+++ b/vendor/oplus/kernel/charger/v2/include/oplus_chg_ufcs.h
@@ -19,6 +19,8 @@ enum ufcs_topic_item {
 	UFCS_ITEM_BCC_TEMP_RANGE,
 	UFCS_ITEM_SLOW_CHG_BATT_LIMIT,
 	UFCS_ITEM_UFCS_VID,
+	UFCS_ITEM_EMARK_POWER,
+	UFCS_ITEM_ADAPTER_POWER,
 };
 
 enum ufcs_fastchg_type {
diff --git a/vendor/oplus/kernel/charger/v2/include/oplus_chg_voter.h b/vendor/oplus/kernel/charger/v2/include/oplus_chg_voter.h
index 759b2bf3..90758b87 100755
--- a/vendor/oplus/kernel/charger/v2/include/oplus_chg_voter.h
+++ b/vendor/oplus/kernel/charger/v2/include/oplus_chg_voter.h
@@ -154,6 +154,7 @@ enum votable_type {
 #define OCP_VOTER		"OCP_VOTER"
 #define IIC_VOTER		"IIC_VOTER"
 #define WLS_TIMEOUT_VOTER	"WLS_TIMEOUT_VOTER"
+#define COMMON_POWER_CHECK	"COMMON_POWER_CHECK"
 
 /* TOPIC voter */
 #define COMM_TOPIC_VOTER	"COMM_TOPIC_VOTER"
diff --git a/vendor/oplus/kernel/charger/v2/include/oplus_mms.h b/vendor/oplus/kernel/charger/v2/include/oplus_mms.h
index 5e36b9b3..b494f403 100755
--- a/vendor/oplus/kernel/charger/v2/include/oplus_mms.h
+++ b/vendor/oplus/kernel/charger/v2/include/oplus_mms.h
@@ -138,6 +138,7 @@ struct oplus_mms {
 	struct mutex sync_msg_lock;
 	struct delayed_work update_work;
 	struct delayed_work msg_work;
+	struct work_struct callback_work;
 
 	struct device_node *of_node;
 	void *drv_data;
diff --git a/vendor/oplus/kernel/charger/v2/include/oplus_mms_wired.h b/vendor/oplus/kernel/charger/v2/include/oplus_mms_wired.h
index f32353f7..d1dbf441 100755
--- a/vendor/oplus/kernel/charger/v2/include/oplus_mms_wired.h
+++ b/vendor/oplus/kernel/charger/v2/include/oplus_mms_wired.h
@@ -29,6 +29,7 @@ enum wired_topic_item {
 	WIRED_ITEM_CHARGING_DISABLE,
 	WIRED_ITEM_COEXISTENCE,
 	WIRED_ITEM_PD_COMPLETED,
+	WIRED_ITEM_ICL_DONE_STATUS,
 };
 
 enum oplus_wired_cc_detect_status {
diff --git a/vendor/oplus/kernel/charger/v2/mms/oplus_mms.c b/vendor/oplus/kernel/charger/v2/mms/oplus_mms.c
index b3299d8c..759fa0af 100755
--- a/vendor/oplus/kernel/charger/v2/mms/oplus_mms.c
+++ b/vendor/oplus/kernel/charger/v2/mms/oplus_mms.c
@@ -1088,6 +1088,14 @@ static void oplus_mms_msg_work(struct work_struct *work)
 	queue_delayed_work(mms_wq, &mms->msg_work, 0);
 }
 
+static void oplus_mms_callback_work(struct work_struct *work)
+{
+	struct oplus_mms *mms = container_of(work, struct oplus_mms,
+					callback_work);
+
+	oplus_mms_call(mms);
+}
+
 static int oplus_mms_match_device_by_name(struct device *dev, const void *data)
 {
 	const char *name = data;
@@ -1189,6 +1197,7 @@ __oplus_mms_register(struct device *parent, const struct oplus_mms_desc *desc,
 	}
 	INIT_DELAYED_WORK(&mms->update_work, oplus_mms_update_work);
 	INIT_DELAYED_WORK(&mms->msg_work, oplus_mms_msg_work);
+	INIT_WORK(&mms->callback_work, oplus_mms_callback_work);
 	INIT_LIST_HEAD(&mms->subscribe_list);
 	INIT_LIST_HEAD(&mms->msg_list);
 
@@ -1227,7 +1236,7 @@ __oplus_mms_register(struct device *parent, const struct oplus_mms_desc *desc,
 	kobject_uevent(&dev->kobj, KOBJ_CHANGE);
 
 	queue_delayed_work(mms_wq, &mms->update_work, 0);
-	oplus_mms_call(mms);
+	schedule_work(&mms->callback_work);
 
 	return mms;
 
@@ -1318,6 +1327,7 @@ void oplus_mms_unregister(struct oplus_mms *mms)
 	mms->removing = true;
 	cancel_delayed_work_sync(&mms->update_work);
 	cancel_delayed_work_sync(&mms->msg_work);
+	cancel_work_sync(&mms->callback_work);
 	sysfs_remove_link(&mms->dev.kobj, "powers");
 #ifdef CONFIG_OPLUS_CHG_MMS_DEBUG
 	if (!IS_ERR_OR_NULL(mms->debug_subs))
diff --git a/vendor/oplus/kernel/charger/v2/mms/oplus_mms_wired.c b/vendor/oplus/kernel/charger/v2/mms/oplus_mms_wired.c
old mode 100644
new mode 100755
index 9a372b2d..eff37548
--- a/vendor/oplus/kernel/charger/v2/mms/oplus_mms_wired.c
+++ b/vendor/oplus/kernel/charger/v2/mms/oplus_mms_wired.c
@@ -87,20 +87,32 @@ struct oplus_usbtemp_spec_config {
 	int usbtemp_otg_cc_boot_current_limit;
 };
 typedef union {
-	u32 buf[12];
+	int buf[24];
 	struct {
-		u32 plugin_sbu1_volt;
-		u32 plugin_sbu2_volt;
-		u32 plugin_sbu1_pullup_volt;
-		u32 plugin_sbu2_pullup_volt;
-		u32 cc1_volt;
-		u32 cc2_volt;
-		u32 dp_volt;
-		u32 dm_volt;
-		u32 plugout_sbu1_volt;
-		u32 plugout_sbu2_volt;
-		u32 plugout_sbu1_pullup_volt;
-		u32 plugout_sbu2_pullup_volt;
+		int plugin_sbu1_volt;
+		int plugin_sbu2_volt;
+		int plugin_sbu1_pullup_volt;
+		int plugin_sbu2_pullup_volt;
+		int cc1_volt;
+		int cc2_volt;
+		int dp_volt;
+		int dm_volt;
+		int plugout_sbu1_volt;
+		int plugout_sbu2_volt;
+		int plugout_sbu1_pullup_volt;
+		int plugout_sbu2_pullup_volt;
+		int sbu1_max_volt;
+		int sbu1_min_volt;
+		int sbu1_pullup_max_volt;
+		int sbu1_pullup_min_volt;
+		int sbu2_max_volt;
+		int sbu2_min_volt;
+		int sbu2_pullup_max_volt;
+		int sbu2_pullup_min_volt;
+		int cc1_max_volt;
+		int cc1_min_volt;
+		int cc2_max_volt;
+		int cc2_min_volt;
 	} info;
 } oplus_lpd_info;
 
@@ -113,6 +125,16 @@ struct oplus_lpd_spec_config {
 	u32 support_status;
 	struct oplus_lpd_rang sbu_rang;
 	struct oplus_lpd_rang sbu_pullup_rang;
+	u32 lpd_sbu_ovp_thr_mv;
+	int lpd_retry_count;
+	int lpd_info_status;
+	int lpd_cc_status;
+	int sbu1_err;
+	int sbu2_err;
+	int sbu1_diff_err;
+	int sbu2_diff_err;
+	int ignore_sbu1_err_data;
+	int ignore_sbu2_err_data;
 };
 
 struct oplus_mms_wired_abnormal_monitor {
@@ -173,6 +195,7 @@ struct oplus_mms_wired {
 	struct work_struct back_ui_soc_work;
 	struct work_struct otg_enable_pending_work;
 	struct work_struct pd_completed_handler_work;
+	struct work_struct icl_done_handler_work;
 
 	struct wakeup_source *usbtemp_wakelock;
 	struct adc_vol_temp_info *adc_vol_temp_info;
@@ -242,8 +265,7 @@ struct oplus_mms_wired {
 	oplus_lpd_info lpd_info;
 	struct delayed_work lpd_info_update_work;
 	struct oplus_lpd_spec_config lpd_spec;
-	int lpd_retry_count;
-	int lpd_info_status;
+	bool set_icl_done;
 };
 
 static struct oplus_mms_wired *g_mms_wired;
@@ -597,6 +619,12 @@ int oplus_wired_set_icl(int icl_ma, bool step)
 		chg_info("set icl to %d, step=%s\n", icl_ma,
 			 step ? "true" : "false");
 
+	if (chip->set_icl_done == false && chip->wired_present == true) {
+		/* first insert need to inform icl status */
+		schedule_work(&chip->icl_done_handler_work);
+		chip->set_icl_done = true;
+	}
+
 	return rc;
 }
 
@@ -1355,7 +1383,8 @@ int oplus_wired_set_qc_config(enum oplus_chg_qc_version version, int vol_mv)
 	return rc;
 }
 
-int oplus_wired_set_lpd_config(struct oplus_mms *topic, int *config) {
+int oplus_wired_set_lpd_config(struct oplus_mms *topic, int *config)
+{
 	struct oplus_mms_wired *chip = g_mms_wired;
 	struct oplus_lpd_spec_config *lpd_spec = &chip->lpd_spec;
 
@@ -1364,11 +1393,33 @@ int oplus_wired_set_lpd_config(struct oplus_mms *topic, int *config) {
 	lpd_spec->sbu_rang.high_thr_mv = config[2];
 	lpd_spec->sbu_pullup_rang.low_thr_mv = config[3];
 	lpd_spec->sbu_pullup_rang.high_thr_mv = config[4];
-	chg_info("support_status:%d, rang[%dmv-%dmv], rang[%dmv-%dmv]", lpd_spec->support_status,
+	lpd_spec->lpd_sbu_ovp_thr_mv = config[5];
+	chg_info("support_status:%d, rang[%dmv-%dmv], rang[%dmv-%dmv], sbu_ovp:%d", lpd_spec->support_status,
 		lpd_spec->sbu_rang.low_thr_mv, lpd_spec->sbu_rang.high_thr_mv,
-		lpd_spec->sbu_pullup_rang.low_thr_mv, lpd_spec->sbu_pullup_rang.high_thr_mv);
+		lpd_spec->sbu_pullup_rang.low_thr_mv, lpd_spec->sbu_pullup_rang.high_thr_mv,
+		lpd_spec->lpd_sbu_ovp_thr_mv);
 	return 0;
 }
+
+int lpd_set_value(u32 value, int *target_value, int *min_value, int *max_value)
+{
+	struct oplus_mms_wired *chip = g_mms_wired;
+
+	if (value < 0 || target_value == NULL || min_value == NULL || max_value == NULL || chip == NULL) {
+		chg_err("invalid input\n");
+		return -EINVAL;
+	}
+	*target_value = value;
+	if (chip->wired_present && *min_value == -1) {
+		*min_value = value;
+		*max_value = value;
+	} else if (chip->wired_present) {
+		*min_value = min_t(int, value, *min_value);
+		*max_value = max_t(int, value, *max_value);
+	}
+	return 0;
+}
+
 int oplus_wired_update_lpd_info(struct oplus_mms_wired *chip, int flag, bool plugin)
 {
 	int rc = 0;
@@ -1377,7 +1428,7 @@ int oplus_wired_update_lpd_info(struct oplus_mms_wired *chip, int flag, bool plu
 
 	if (chip == NULL) {
 		chg_err("chip is NULL");
-		return -ENODEV;
+		return -EINVAL;
 	}
 
 	rc = oplus_chg_ic_func(chip->buck_ic,
@@ -1391,33 +1442,63 @@ int oplus_wired_update_lpd_info(struct oplus_mms_wired *chip, int flag, bool plu
 		switch (flag & (0x1 << i)) {
 		case OPLUS_LPD_SEL_SBU1_MASK:
 			if (plugin)
-				chip->lpd_info.info.plugin_sbu1_volt = buf[i];
+				lpd_set_value(buf[i], &chip->lpd_info.info.plugin_sbu1_volt,
+					      &chip->lpd_info.info.sbu1_min_volt,
+					      &chip->lpd_info.info.sbu1_max_volt);
 			else
-				chip->lpd_info.info.plugout_sbu1_volt = buf[i];
+				lpd_set_value(buf[i], &chip->lpd_info.info.plugout_sbu1_volt,
+					      &chip->lpd_info.info.sbu1_min_volt,
+					      &chip->lpd_info.info.sbu1_max_volt);
 			break;
 		case OPLUS_LPD_SEL_SBU2_MASK:
 			if (plugin)
-				chip->lpd_info.info.plugin_sbu2_volt = buf[i];
+				lpd_set_value(buf[i], &chip->lpd_info.info.plugin_sbu2_volt,
+					      &chip->lpd_info.info.sbu2_min_volt,
+					      &chip->lpd_info.info.sbu2_max_volt);
 			else
-				chip->lpd_info.info.plugout_sbu2_volt = buf[i];
+				lpd_set_value(buf[i], &chip->lpd_info.info.plugout_sbu2_volt,
+					      &chip->lpd_info.info.sbu2_min_volt,
+					      &chip->lpd_info.info.sbu2_max_volt);
 			break;
 		case OPLUS_LPD_SEL_SBU1_PULLUP_MASK:
-			if (plugin)
-				chip->lpd_info.info.plugin_sbu1_pullup_volt = buf[i];
-			else
-				chip->lpd_info.info.plugout_sbu1_pullup_volt = buf[i];
+			if (plugin) {
+				if (buf[i] == 0 && chip->lpd_spec.ignore_sbu1_err_data == 0) {
+					chip->lpd_spec.ignore_sbu1_err_data = 1;
+					break;
+				}
+				lpd_set_value(buf[i], &chip->lpd_info.info.plugin_sbu1_pullup_volt,
+					      &chip->lpd_info.info.sbu1_pullup_min_volt,
+					      &chip->lpd_info.info.sbu1_pullup_max_volt);
+			} else {
+				lpd_set_value(buf[i], &chip->lpd_info.info.plugout_sbu1_pullup_volt,
+					      &chip->lpd_info.info.sbu1_pullup_min_volt,
+					      &chip->lpd_info.info.sbu1_pullup_max_volt);
+			}
 			break;
 		case OPLUS_LPD_SEL_SBU2_PULLUP_MASK:
-			if (plugin)
-				chip->lpd_info.info.plugin_sbu2_pullup_volt = buf[i];
-			else
-				chip->lpd_info.info.plugout_sbu2_pullup_volt = buf[i];
+			if (plugin) {
+				if (buf[i] == 0 && chip->lpd_spec.ignore_sbu2_err_data == 0) {
+					chip->lpd_spec.ignore_sbu2_err_data = 1;
+					break;
+				}
+				lpd_set_value(buf[i], &chip->lpd_info.info.plugin_sbu2_pullup_volt,
+					      &chip->lpd_info.info.sbu2_pullup_min_volt,
+					      &chip->lpd_info.info.sbu2_pullup_max_volt);
+			} else {
+				lpd_set_value(buf[i], &chip->lpd_info.info.plugout_sbu2_pullup_volt,
+					      &chip->lpd_info.info.sbu2_pullup_min_volt,
+					      &chip->lpd_info.info.sbu2_pullup_max_volt);
+			}
 			break;
 		case OPLUS_LPD_SEL_CC1_MASK:
-			chip->lpd_info.info.cc1_volt = buf[i];
+			lpd_set_value(buf[i], &chip->lpd_info.info.cc1_volt,
+				      &chip->lpd_info.info.cc1_min_volt,
+				      &chip->lpd_info.info.cc1_max_volt);
 			break;
 		case OPLUS_LPD_SEL_CC2_MASK:
-			chip->lpd_info.info.cc2_volt = buf[i];
+			lpd_set_value(buf[i], &chip->lpd_info.info.cc1_volt,
+				      &chip->lpd_info.info.cc2_min_volt,
+				      &chip->lpd_info.info.cc2_max_volt);
 			break;
 		case OPLUS_LPD_SEL_DP_MASK:
 			chip->lpd_info.info.dp_volt = buf[i];
@@ -1431,45 +1512,163 @@ int oplus_wired_update_lpd_info(struct oplus_mms_wired *chip, int flag, bool plu
 		chg_info("buf[%d]=%d\n", i, buf[i]);
 	}
 
+	if (chip->wired_present && chip->lpd_info.info.sbu1_min_volt != -1) {
+		chg_info("lpd_count:%d, sbu1:%d, sbu1_pullup:%d, sbu2:%d, sbu2_pullup:%d, "
+			"sbu1_rang[%d,%d], sbu1_pullup_rang[%d,%d], sbu2_rang[%d,%d], sbu2_pullup_rang[%d,%d],"
+			"cc1_rang[%d,%d], cc2_rang[%d,%d]\n",
+			chip->lpd_spec.lpd_retry_count, chip->lpd_info.info.plugin_sbu1_volt,
+			chip->lpd_info.info.plugin_sbu1_pullup_volt,
+			chip->lpd_info.info.plugin_sbu2_volt, chip->lpd_info.info.plugin_sbu2_pullup_volt,
+			chip->lpd_info.info.sbu1_min_volt, chip->lpd_info.info.sbu1_max_volt,
+			chip->lpd_info.info.sbu1_pullup_min_volt,chip->lpd_info.info.sbu1_pullup_max_volt,
+			chip->lpd_info.info.sbu2_min_volt, chip->lpd_info.info.sbu2_max_volt,
+			chip->lpd_info.info.sbu2_pullup_min_volt, chip->lpd_info.info.sbu2_pullup_max_volt,
+			chip->lpd_info.info.cc1_min_volt, chip->lpd_info.info.cc1_max_volt,
+			chip->lpd_info.info.cc2_min_volt, chip->lpd_info.info.cc2_max_volt);
+	}
+
 	return rc;
 }
 
-int oplus_wired_check_lpd_info(oplus_lpd_info *info)
+static int oplus_wired_clear_sbu_info(struct oplus_mms_wired *chip)
+{
+	if (chip == NULL) {
+		chg_err("chip is NULL");
+		return -EINVAL;
+	}
+	chip->lpd_spec.lpd_retry_count = 0;
+	chip->lpd_spec.lpd_info_status = OPLUS_LPD_NOT_DETECT;
+	chip->lpd_spec.lpd_cc_status = OPLUS_LPD_NOT_DETECT;
+	chip->lpd_info.info.sbu1_min_volt = -1;
+	chip->lpd_info.info.sbu1_max_volt = -1;
+	chip->lpd_info.info.sbu2_min_volt = -1;
+	chip->lpd_info.info.sbu2_max_volt = -1;
+	chip->lpd_info.info.sbu1_pullup_min_volt = -1;
+	chip->lpd_info.info.sbu1_pullup_max_volt = -1;
+	chip->lpd_info.info.sbu2_pullup_min_volt = -1;
+	chip->lpd_info.info.sbu2_pullup_max_volt = -1;
+	chip->lpd_info.info.cc1_min_volt = -1;
+	chip->lpd_info.info.cc1_max_volt = -1;
+	chip->lpd_info.info.cc2_min_volt = -1;
+	chip->lpd_info.info.cc2_max_volt = -1;
+	chip->lpd_spec.sbu1_err = 0;
+	chip->lpd_spec.sbu2_err = 0;
+	chip->lpd_spec.sbu1_diff_err = 0;
+	chip->lpd_spec.sbu2_diff_err = 0;
+	chip->lpd_spec.ignore_sbu1_err_data = 0;
+	chip->lpd_spec.ignore_sbu2_err_data = 0;
+	chg_info("clear");
+	return 0;
+}
+
+#define LPD_DIFF_MV_MAX 350
+#define LPD_CC_MV_MAX   2000
+static int oplus_wired_check_sbu_info(oplus_lpd_info *info)
 {
 	struct oplus_mms_wired *chip = g_mms_wired;
-	struct oplus_lpd_spec_config *lpd_spec = &chip->lpd_spec;
-	int sbu1_err = 0;
-	int sbu2_err = 0;
+	struct oplus_lpd_spec_config *lpd_spec;
 
-	if (chip == NULL || lpd_spec == NULL) {
+	if (chip == NULL) {
 		chg_err("chip is NULL");
-		return 0;
+		return -EINVAL;
+	}
+
+	lpd_spec = &chip->lpd_spec;
+	if (lpd_spec == NULL) {
+		chg_err("lpd_spec is NULL");
+		return -EINVAL;
 	}
 	if ((info->info.plugin_sbu1_volt < lpd_spec->sbu_rang.low_thr_mv) ||
 	    (info->info.plugin_sbu1_volt > lpd_spec->sbu_rang.high_thr_mv) ||
 	    (info->info.plugin_sbu1_pullup_volt < lpd_spec->sbu_pullup_rang.low_thr_mv) ||
 	    (info->info.plugin_sbu1_pullup_volt > lpd_spec->sbu_pullup_rang.high_thr_mv)) {
-		chg_err("sbu1 abnormal, sbu1_volt:%d, rang[%dmv-%dmv], sbu1_pullup_volt:%d, rang[%dmv-%dmv]",
+		chg_err("sbu1 error, sbu1_volt:%d, rang[%dmv-%dmv], sbu1_pullup_volt:%d, rang[%dmv-%dmv]",
 		       info->info.plugin_sbu1_volt, lpd_spec->sbu_rang.low_thr_mv, lpd_spec->sbu_rang.high_thr_mv,
 		       info->info.plugin_sbu1_pullup_volt, lpd_spec->sbu_pullup_rang.low_thr_mv,
 		       lpd_spec->sbu_pullup_rang.high_thr_mv);
-		sbu1_err = 1;
+		lpd_spec->sbu1_err = 1;
 	}
 
 	if ((info->info.plugin_sbu2_volt < lpd_spec->sbu_rang.low_thr_mv) ||
 	    (info->info.plugin_sbu2_volt > lpd_spec->sbu_rang.high_thr_mv) ||
 	    (info->info.plugin_sbu2_pullup_volt < lpd_spec->sbu_pullup_rang.low_thr_mv) ||
 	    (info->info.plugin_sbu2_pullup_volt > lpd_spec->sbu_pullup_rang.high_thr_mv)) {
-		chg_err("sbu2 abnormal, sbu2_volt:%d, rang[%dmv-%dmv], sbu2_pullup_volt:%d, rang[%dmv-%dmv]",
+		chg_err("sbu2 error, sbu2_volt:%d, rang[%dmv-%dmv], sbu2_pullup_volt:%d, rang[%dmv-%dmv]",
 		       info->info.plugin_sbu2_volt, lpd_spec->sbu_rang.low_thr_mv, lpd_spec->sbu_rang.high_thr_mv,
 		       info->info.plugin_sbu2_pullup_volt, lpd_spec->sbu_pullup_rang.low_thr_mv,
 		       lpd_spec->sbu_pullup_rang.high_thr_mv);
-		sbu2_err = 1;
+		lpd_spec->sbu2_err = 1;
 	}
 
-	if (sbu1_err && sbu2_err) {
-		chip->lpd_info_status = OPLUS_LPD_ERROR;
-		return 1;
+	return 0;
+}
+
+static int oplus_wired_check_sbu_diff_info(oplus_lpd_info *info)
+{
+	struct oplus_mms_wired *chip = g_mms_wired;
+	struct oplus_lpd_spec_config *lpd_spec;
+
+	if (chip == NULL) {
+		chg_err("chip is NULL");
+		return -EINVAL;
+	}
+
+	lpd_spec = &chip->lpd_spec;
+	if (lpd_spec == NULL) {
+		chg_err("lpd_spec is NULL");
+		return -EINVAL;
+	}
+
+	if (((info->info.sbu1_max_volt - info->info.sbu1_min_volt) > LPD_DIFF_MV_MAX) ||
+	    ((info->info.sbu1_pullup_max_volt - info->info.sbu1_pullup_min_volt) > LPD_DIFF_MV_MAX)) {
+		chg_err("sbu1 diff error, sbu1_diff[%d, %d], sbu1_pullup_diff[%d, %d]", info->info.sbu1_min_volt,
+			info->info.sbu1_max_volt, info->info.sbu1_pullup_min_volt, info->info.sbu1_pullup_max_volt);
+		lpd_spec->sbu1_diff_err = 1;
+	}
+
+	if (((info->info.sbu2_max_volt - info->info.sbu2_min_volt) > LPD_DIFF_MV_MAX) ||
+	    ((info->info.sbu2_pullup_max_volt - info->info.sbu2_pullup_min_volt) > LPD_DIFF_MV_MAX)) {
+		chg_err("sbu2 diff error, sbu2_diff[%d, %d], sbu2_pullup_diff[%d, %d]", info->info.sbu2_min_volt,
+			info->info.sbu2_max_volt, info->info.sbu2_pullup_min_volt, info->info.sbu2_pullup_max_volt);
+		lpd_spec->sbu2_diff_err = 1;
+	}
+
+	if ((info->info.cc1_max_volt > LPD_CC_MV_MAX) &&
+	    (info->info.cc2_max_volt > LPD_CC_MV_MAX)) {
+		chg_err("CC voltage error, cc1_max_volt:%d, cc2_max_volt:%d",
+			info->info.cc1_max_volt,info->info.cc2_max_volt);
+			chip->lpd_spec.lpd_cc_status = OPLUS_LPD_ERROR;
+	}
+
+	return 0;
+}
+
+static int oplus_wired_check_sbu_ovp_info(oplus_lpd_info *info)
+{
+	struct oplus_mms_wired *chip = g_mms_wired;
+	struct oplus_lpd_spec_config *lpd_spec;
+
+	if (chip == NULL) {
+		chg_err("chip is NULL");
+		return -EINVAL;
+	}
+
+	lpd_spec = &chip->lpd_spec;
+	if (lpd_spec == NULL) {
+		chg_err("lpd_spec is NULL");
+		return -EINVAL;
+	}
+
+	if (info->info.sbu1_max_volt >= lpd_spec->lpd_sbu_ovp_thr_mv) {
+		chg_err("sbu1 ovp, sbu1_max_volt:%d, sbu_ovp_thr_mv:%d",
+		info->info.sbu1_max_volt, lpd_spec->lpd_sbu_ovp_thr_mv);
+		lpd_spec->sbu1_diff_err = 1;
+	}
+
+	if (info->info.sbu2_max_volt >= lpd_spec->lpd_sbu_ovp_thr_mv) {
+		chg_err("sbu2 ovp, sbu2_max_volt:%d, sbu_ovp_thr_mv:%d",
+		info->info.sbu2_max_volt, lpd_spec->lpd_sbu_ovp_thr_mv);
+		lpd_spec->sbu2_diff_err = 1;
 	}
 
 	return 0;
@@ -1487,8 +1686,8 @@ int oplus_wired_get_lpd_info_status(struct oplus_mms *topic)
 	if (chip->lpd_spec.support_status == OPLUS_LPD_NOT_SUPPORT)
 		return OPLUS_LPD_NOT_DETECT;
 
-	chg_info("lpd_info_status:%d", chip->lpd_info_status);
-	return chip->lpd_info_status;
+	chg_info("lpd_info_status:%d", chip->lpd_spec.lpd_info_status);
+	return chip->lpd_spec.lpd_info_status;
 }
 
 
@@ -2354,10 +2553,17 @@ static int oplus_lpd_push_track_msg(struct oplus_mms_wired *chip)
 
 	msg = oplus_mms_alloc_str_msg(
 		MSG_TYPE_ITEM, MSG_PRIO_MEDIUM, ERR_ITEM_LPD,
-		"$$lpd_status@@[%d]$$lpd_info@@[%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d]", chip->lpd_info_status,
+		"$$lpd_status@@[%d,%d]$$lpd_info@@[%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d]"
+		"$$lpd_d_info@@[%d,%d,%d,%d,%d,%d,%d,%d,%d,%d]",
+		chip->lpd_spec.lpd_info_status, chip->lpd_spec.lpd_cc_status,
 		chip->lpd_info.buf[0], chip->lpd_info.buf[1], chip->lpd_info.buf[2], chip->lpd_info.buf[3],
 		chip->lpd_info.buf[4], chip->lpd_info.buf[5], chip->lpd_info.buf[6], chip->lpd_info.buf[7],
-		chip->lpd_info.buf[8], chip->lpd_info.buf[9], chip->lpd_info.buf[10], chip->lpd_info.buf[11]);
+		chip->lpd_info.buf[8], chip->lpd_info.buf[9], chip->lpd_info.buf[10], chip->lpd_info.buf[11],
+		chip->lpd_info.info.sbu1_min_volt, chip->lpd_info.info.sbu1_max_volt,
+		chip->lpd_info.info.sbu1_pullup_min_volt, chip->lpd_info.info.sbu1_pullup_max_volt,
+		chip->lpd_info.info.sbu2_min_volt, chip->lpd_info.info.sbu2_max_volt,
+		chip->lpd_info.info.sbu2_pullup_min_volt, chip->lpd_info.info.sbu2_pullup_max_volt,
+		chip->lpd_info.info.cc1_max_volt, chip->lpd_info.info.cc2_max_volt);
 
 	if (msg == NULL) {
 		chg_err("alloc usbtemp error msg error\n");
@@ -2374,15 +2580,15 @@ static int oplus_lpd_push_track_msg(struct oplus_mms_wired *chip)
 	return rc;
 }
 
-#define LPD_RETRY_COUNT		1
-#define LPD_RETRY_DELAY		100
+#define LPD_RETRY_COUNT		10
+#define LPD_RETRY_DELAY		200
 static int oplus_wired_check_lpd(struct oplus_mms_wired *chip, int real_chg_type)
 {
 	static int last_real_chg_type = OPLUS_CHG_USB_TYPE_UNKNOWN;
 
 	if ((last_real_chg_type == OPLUS_CHG_USB_TYPE_UNKNOWN) && (last_real_chg_type != real_chg_type) &&
 	     chip->lpd_spec.support_status != OPLUS_LPD_NOT_SUPPORT) {
-		chip->lpd_info_status = OPLUS_LPD_NOT_DETECT;
+		oplus_wired_clear_sbu_info(chip);
 		if (real_chg_type == OPLUS_CHG_USB_TYPE_DCP || real_chg_type == OPLUS_CHG_USB_TYPE_PD_PPS
 		    || real_chg_type == OPLUS_CHG_USB_TYPE_PD) {
 			oplus_wired_update_lpd_info(chip, OPLUS_LPD_SEL_CC1_MASK | OPLUS_LPD_SEL_CC2_MASK |
@@ -3576,20 +3782,46 @@ static void oplus_wired_lpd_info_update_work(struct work_struct *work)
 	int rc = 0;
 
 	oplus_wired_update_lpd_info(chip, OPLUS_LPD_SEL_SBU1_MASK | OPLUS_LPD_SEL_SBU2_MASK |
-			OPLUS_LPD_SEL_SBU1_PULLUP_MASK | OPLUS_LPD_SEL_SBU2_PULLUP_MASK, 1);
-	chip->lpd_info_status = OPLUS_LPD_DETECT;
-	rc = oplus_wired_check_lpd_info(&chip->lpd_info);
-	if (rc != 0) {
-		if (chip->lpd_retry_count < LPD_RETRY_COUNT) {
-			chip->lpd_retry_count++;
-			schedule_delayed_work(&chip->lpd_info_update_work, msecs_to_jiffies(LPD_RETRY_DELAY));
-			return;
-		} else {
-			if ((chip->lpd_spec.support_status == OPLUS_LPD_SUPPORT) &&
-			    ((chip->usb_status & USB_TEMP_HIGH) != USB_TEMP_HIGH)) {
-				chg_err("check lpd info error!\n");
-				oplus_wired_set_usb_status(chip, USB_LPD_DETECT);
+			OPLUS_LPD_SEL_SBU1_PULLUP_MASK | OPLUS_LPD_SEL_SBU2_PULLUP_MASK |
+			OPLUS_LPD_SEL_CC1_MASK | OPLUS_LPD_SEL_CC2_MASK, 1);
+	chip->lpd_spec.lpd_info_status = OPLUS_LPD_DETECT;
+	chip->lpd_spec.lpd_cc_status = OPLUS_LPD_DETECT;
+	oplus_wired_check_sbu_info(&chip->lpd_info);
+	if (chip->lpd_spec.lpd_retry_count < LPD_RETRY_COUNT) {
+		chip->lpd_spec.lpd_retry_count++;
+		if (chip->wired_present) {
+			rc = schedule_delayed_work(&chip->lpd_info_update_work, msecs_to_jiffies(LPD_RETRY_DELAY));
+		}
+		return;
+	} else {
+		oplus_wired_check_sbu_ovp_info(&chip->lpd_info);
+		oplus_wired_check_sbu_diff_info(&chip->lpd_info);
+#ifndef CONFIG_DISABLE_OPLUS_FUNCTION
+		if (get_eng_version() == FACTORY) {
+#else
+		if (1) {
+#endif
+			if (chip->lpd_spec.sbu1_err && chip->lpd_spec.sbu2_err) {
+				chip->lpd_spec.lpd_info_status = OPLUS_LPD_ERROR;
+				rc = 1;
 			}
+		} else {
+			if (chip->lpd_spec.sbu1_err && chip->lpd_spec.sbu2_err &&
+			    chip->lpd_spec.sbu1_diff_err && chip->lpd_spec.sbu2_diff_err) {
+				chip->lpd_spec.lpd_info_status = OPLUS_LPD_ERROR;
+				rc = 1;
+			}
+		}
+		if ((chip->lpd_spec.support_status == OPLUS_LPD_SUPPORT) &&
+		    ((chip->usb_status & USB_TEMP_HIGH) != USB_TEMP_HIGH) &&
+		    (rc != 0)) {
+#ifndef CONFIG_DISABLE_OPLUS_FUNCTION
+			chg_err("check lpd info error!eng_version:%d\n", get_eng_version());
+#else
+			chg_err("check lpd info error! DISABLE_OPLUS_FUNCTION!\n");
+#endif
+			oplus_wired_set_usb_status(chip, USB_LPD_DETECT);
+
 		}
 	}
 }
@@ -3766,6 +3998,27 @@ static void oplus_wired_pd_completed_work(struct work_struct *work)
 	}
 }
 
+static void oplus_wired_icl_done_work(struct work_struct *work)
+{
+	struct oplus_mms_wired *chip =
+		container_of(work, struct oplus_mms_wired, icl_done_handler_work);
+	struct mms_msg *msg;
+	int rc;
+
+	msg = oplus_mms_alloc_msg(MSG_TYPE_ITEM, MSG_PRIO_HIGH,
+				  WIRED_ITEM_ICL_DONE_STATUS);
+	if (msg == NULL) {
+		chg_err("alloc msg error\n");
+		return;
+	}
+
+	rc = oplus_mms_publish_msg(chip->wired_topic, msg);
+	if (rc < 0) {
+		chg_err("publish icl done msg error, rc=%d\n", rc);
+		kfree(msg);
+	}
+}
+
 static void oplus_wired_vooc_subs_callback(struct mms_subscribe *subs,
 					   enum mms_msg_type type, u32 id, bool sync)
 {
@@ -4205,7 +4458,10 @@ static void oplus_mms_wired_plugin_handler_work(struct work_struct *work)
 	if (!present) {
 		chip->bc12_completed = false;
 		chip->pd_completed = false;
-		chip->lpd_retry_count = 0;
+		chip->set_icl_done = false;
+		/* need inform when quick attach/unattach */
+		if (present != chip->wired_present)
+			schedule_work(&chip->icl_done_handler_work);
 		oplus_wired_clear_usb_status(chip, USB_LPD_DETECT);
 	}
 
@@ -5031,6 +5287,27 @@ static int oplus_mms_wired_update_pd_completed(struct oplus_mms *mms,
 	return 0;
 }
 
+static int oplus_mms_wired_update_icl_status(struct oplus_mms *mms,
+						 union mms_msg_data *data)
+{
+	struct oplus_mms_wired *chip;
+
+	if (mms == NULL) {
+		chg_err("mms is NULL");
+		return -EINVAL;
+	}
+
+	if (data == NULL) {
+		chg_err("data is NULL");
+		return -EINVAL;
+	}
+
+	chip = oplus_mms_get_drvdata(mms);
+	data->intval = chip->set_icl_done;
+
+	return 0;
+}
+
 void oplus_wired_check_bcc_curr_done(struct oplus_mms *topic)
 {
 	struct oplus_mms_wired *chip = g_mms_wired;
@@ -5569,6 +5846,16 @@ static struct mms_item oplus_mms_wired_item[] = {
 			.update = oplus_mms_wired_update_pd_completed,
 		}
 	},
+	{
+		.desc = {
+			.item_id = WIRED_ITEM_ICL_DONE_STATUS,
+			.str_data = false,
+			.up_thr_enable = false,
+			.down_thr_enable = false,
+			.dead_thr_enable = false,
+			.update = oplus_mms_wired_update_icl_status,
+		}
+	},
 };
 
 static const struct oplus_mms_desc oplus_mms_wired_desc = {
@@ -5833,9 +6120,15 @@ static void oplus_mms_wired_parse_dt(struct oplus_mms_wired *chip)
 		lpd_spec->sbu_pullup_rang.low_thr_mv = buf[0];
 		lpd_spec->sbu_pullup_rang.high_thr_mv = buf[1];
 	}
-	chg_info("support_status:%d, rang[%dmv-%dmv], rang[%dmv-%dmv]", lpd_spec->support_status,
+
+	rc = of_property_read_u32(node, "oplus_spec,lpd_sbu_ovp_thr_mv", &lpd_spec->lpd_sbu_ovp_thr_mv);
+	if (rc)
+		lpd_spec->lpd_sbu_ovp_thr_mv = 6500;
+
+	chg_info("support_status:%d, rang[%dmv-%dmv], rang[%dmv-%dmv], sbu_ovp:%d", lpd_spec->support_status,
 		lpd_spec->sbu_rang.low_thr_mv, lpd_spec->sbu_rang.high_thr_mv,
-		lpd_spec->sbu_pullup_rang.low_thr_mv, lpd_spec->sbu_pullup_rang.high_thr_mv);
+		lpd_spec->sbu_pullup_rang.low_thr_mv, lpd_spec->sbu_pullup_rang.high_thr_mv,
+		lpd_spec->lpd_sbu_ovp_thr_mv);
 
 	chip->support_wlsotg_non_coexistence = of_property_read_bool(node, "oplus,support_wlsotg_non_coexistence");
 	chip->support_usbtemp_protect_v2 = of_property_read_bool(node, "oplus,support_usbtemp_protect_v2");
@@ -5893,6 +6186,25 @@ static int oplus_mms_wired_votable_init(struct oplus_mms_wired *chip)
 	return 0;
 }
 
+void oplus_chg_set_camera_on(bool val)
+{
+	int rc;
+	struct oplus_mms_wired *chip = g_mms_wired;
+
+	if (!chip || !chip->buck_ic)
+		return;
+
+	chg_info("set flash mode to %s\n", val ? "true" : "false");
+
+	rc = oplus_chg_ic_func(chip->buck_ic, OPLUS_IC_FUNC_BUCK_SET_FLASH_MODE, val);
+	if (rc < 0) {
+		chg_err("can't set flash mode, rc=%d\n", rc);
+		return;
+	}
+	return;
+}
+EXPORT_SYMBOL(oplus_chg_set_camera_on);
+
 static int oplus_mms_wired_probe(struct platform_device *pdev)
 {
 	struct oplus_mms_wired *chip;
@@ -5958,9 +6270,12 @@ static int oplus_mms_wired_probe(struct platform_device *pdev)
 	INIT_WORK(&chip->otg_enable_pending_work, oplus_wired_otg_enable_pending_work);
 	INIT_WORK(&chip->wls_upgrading_work, oplus_wls_upgrading_work);
 	INIT_WORK(&chip->pd_completed_handler_work, oplus_wired_pd_completed_work);
+	INIT_WORK(&chip->icl_done_handler_work, oplus_wired_icl_done_work);
 
+	oplus_wired_clear_sbu_info(chip);
 	chip->dischg_flag = false;
 	chip->cpa_support = oplus_cpa_support();
+	chip->set_icl_done = false;
 
 	schedule_delayed_work(&chip->mms_wired_init_work, 0);
 
diff --git a/vendor/oplus/kernel/charger/v2/monitor/oplus_chg_track.c b/vendor/oplus/kernel/charger/v2/monitor/oplus_chg_track.c
index 2ef1098f..927e13c8 100644
--- a/vendor/oplus/kernel/charger/v2/monitor/oplus_chg_track.c
+++ b/vendor/oplus/kernel/charger/v2/monitor/oplus_chg_track.c
@@ -45,6 +45,8 @@
 #include "oplus_mms_wired.h"
 #include "oplus_smart_chg.h"
 #include 
+#include 
+#include "oplus_chg_pps.h"
 
 #define OPLUS_CHG_TRACK_WAIT_TIME_MS			3000
 #define OPLUS_CHG_UPDATE_INFO_DELAY_MS			500
@@ -224,6 +226,8 @@
 
 #define TRACK_VALID_UTC_MIN_TIME		946656000
 
+#define MILLIMETER	1000
+
 enum oplus_chg_track_voocphy_type {
 	TRACK_NO_VOOCPHY = 0,
 	TRACK_ADSP_VOOCPHY,
@@ -319,6 +323,7 @@ struct oplus_chg_track_wired_type {
 	int power;
 	int adapter_id;
 	char adapter_type[OPLUS_CHG_TRACK_POWER_TYPE_LEN];
+	int emark_power;
 };
 
 struct oplus_chg_track_wls_type {
@@ -573,6 +578,13 @@ struct oplus_chg_track_gauge_info {
 	int lifetime_upload_time;
 };
 
+struct oplus_chg_track_pps_info {
+	int cpa_power;
+	int adapter_power;
+	int adapter_power_max_index;
+	u32 *adapter_pdo;
+};
+
 struct oplus_chg_track_hidl_bcc_si_cmd {
 	u8 type;
 	u8 data_buf[TRACK_HIDL_DATA_LEN];
@@ -787,6 +799,7 @@ struct oplus_chg_track {
 	struct task_struct *track_upload_kthread;
 
 	struct mms_subscribe *err_subs;
+	struct mms_subscribe *pps_subs;
 
 	bool trigger_data_ok;
 	struct mutex upload_lock;
@@ -866,6 +879,7 @@ struct oplus_chg_track {
 	oplus_chg_track_trigger *chg_cycle_info_trigger;
 	oplus_chg_track_trigger *wls_info_trigger;
 	oplus_chg_track_trigger *ufcs_info_trigger;
+	oplus_chg_track_trigger *pps_info_trigger;
 	oplus_chg_track_trigger *deep_dischg_info_trigger;
 	oplus_chg_track_trigger *wired_online_err_trigger;
 	oplus_chg_track_trigger *uisoc_keep_2_err_trigger;
@@ -882,6 +896,7 @@ struct oplus_chg_track {
 	struct delayed_work chg_cycle_info_trigger_work;
 	struct delayed_work wls_info_trigger_work;
 	struct delayed_work ufcs_info_trigger_work;
+	struct delayed_work pps_info_trigger_work;
 	struct delayed_work deep_dischg_info_trigger_work;
 	struct delayed_work rechg_info_trigger_work;
 	struct delayed_work bidirect_cp_info_trigger_work;
@@ -894,6 +909,7 @@ struct oplus_chg_track {
 	struct mutex chg_cycle_info_lock;
 	struct mutex wls_info_lock;
 	struct mutex ufcs_info_lock;
+	struct mutex pps_info_lock;
 	struct mutex deep_dischg_info_lock;
 	struct mutex rechg_info_lock;
 	struct mutex bidirect_cp_info_lock;
@@ -907,6 +923,7 @@ struct oplus_chg_track {
 
 	struct oplus_chg_track_gauge_info gauge_info;
 	struct oplus_chg_track_gauge_info sub_gauge_info;
+	struct oplus_chg_track_pps_info pps_info;
 };
 
 struct type_reason_table {
@@ -965,6 +982,7 @@ oplus_chg_track_record_general_info(struct oplus_monitor *monitor,
 				    struct oplus_chg_track_status *track_status,
 				    oplus_chg_track_trigger *p_trigger_data,
 				    int index);
+static int oplus_chg_track_handle_pps_pdo_info(struct oplus_chg_track *chip, char *p_data, int *ret, int t_len);
 static void oplus_chg_track_gauge_sili_alg_application_work(struct work_struct *work);
 static void oplus_chg_track_sub_gauge_sili_alg_application_work(struct work_struct *work);
 static void oplus_chg_track_gauge_sili_alg_lifetime_work(struct work_struct *work);
@@ -1092,7 +1110,7 @@ static struct oplus_chg_track_type wired_type_table[] = {
 	{ OPLUS_CHG_USB_TYPE_PD_PPS, TRACK_POWER_30000MW, "pps" },
 	{ OPLUS_CHG_USB_TYPE_VOOC, TRACK_POWER_20000MW, "vooc" },
 	{ OPLUS_CHG_USB_TYPE_SVOOC, 0, "svooc" },
-	{ OPLUS_CHG_USB_TYPE_UFCS, TRACK_POWER_100000MW, "ufcs" },
+	{ OPLUS_CHG_USB_TYPE_UFCS, TRACK_POWER_10000MW, "ufcs" },
 };
 
 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0))
@@ -1322,6 +1340,7 @@ static struct oplus_chg_track_gague_err_reason gague_err_reason_table[] = {
 	{ TRACK_GAGUE_ERR_LIFETIME_OVER, "lifetime_over" },
 	{ TRACK_GAGUE_MTK_CALI_INFO, "mtk_cali_info"},
 	{ TRACK_GAGUE_ERR_SUB_BTB_CONNECT, "sub_btb_connect_state"},
+	{ TRACK_GAGUE_QCOM_CALI_INFO, "qcom_cali_info"},
 };
 
 static struct oplus_chg_track_speed_ref wired_series_double_cell_125w_150w[] = {
@@ -1577,6 +1596,13 @@ __maybe_unused static bool is_wls_fcc_votable_available(struct oplus_monitor *ch
 	return !!chip->wls_fcc_votable;
 }
 
+__maybe_unused static bool is_pps_topic_available(struct oplus_monitor *chip)
+{
+	if (!chip->pps_topic)
+		chip->pps_topic = oplus_mms_get_by_name("pps");
+	return !!chip->pps_topic;
+}
+
 static int oplus_chg_track_pack_app_stats(u8 *curx, int *index)
 {
 	int i;
@@ -1598,7 +1624,7 @@ static int oplus_chg_track_pack_app_stats(u8 *curx, int *index)
 		}
 	}
 
-	*index += snprintf(&(curx[*index]),
+	*index += scnprintf(&(curx[*index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - *index,
 		"$$ledon_app@@%s,%d;%s,%d;%s,%d",
 		app_table[record_index].alias_name, app_table[record_index].cont_time,
@@ -1709,7 +1735,7 @@ int oplus_chg_track_olc_config_get(char *buf)
 	cfg_chip = &g_track_chip->track_cfg;
 
 	for (num = 0; num < OLC_CONFIG_NUM_MAX; num++) {
-		len = snprintf(tmpbuf, OLC_CONFIG_SIZE - idx, "%llx,",
+		len = scnprintf(tmpbuf, OLC_CONFIG_SIZE - idx, "%llx,",
 				cfg_chip->exception_data.olc_config[num]);
 		memcpy(&buf[idx], tmpbuf, len);
 		idx += len;
@@ -1776,10 +1802,10 @@ static int oplus_chg_track_set_hidl_bcc_info(struct oplus_chg_track_hidl_cmd *cm
 	track_chip->track_status.bcc_info->count++;
 	len = strlen(track_chip->track_status.bcc_info->data_buf);
 	if (!len)
-		snprintf(&(track_chip->track_status.bcc_info->data_buf[len]), TRACK_HIDL_BCC_INFO_LEN - len, "%s",
+		scnprintf(&(track_chip->track_status.bcc_info->data_buf[len]), TRACK_HIDL_BCC_INFO_LEN - len, "%s",
 			 bcc_info_cmd->data_buf);
 	else
-		snprintf(&(track_chip->track_status.bcc_info->data_buf[len]), TRACK_HIDL_BCC_INFO_LEN - len, ";%s",
+		scnprintf(&(track_chip->track_status.bcc_info->data_buf[len]), TRACK_HIDL_BCC_INFO_LEN - len, ";%s",
 			 bcc_info_cmd->data_buf);
 	return 0;
 }
@@ -1902,7 +1928,7 @@ static void oplus_track_upload_ttf_info(struct work_struct *work)
 	ttf_info_p->info_uploading = true;
 	mutex_unlock(&ttf_info_p->track_lock);
 
-	index += snprintf(&(ttf_info_p->load_trigger_info->crux_info[index]),
+	index += scnprintf(&(ttf_info_p->load_trigger_info->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"%s", ttf_info_p->ttf_info.data_buf);
 
@@ -2053,7 +2079,7 @@ static void oplus_track_upload_parallelchg_foldmode_info(struct work_struct *wor
 	mutex_unlock(¶llel_foldmode_p->track_lock);
 
 
-	index += snprintf(&(parallel_foldmode_p->load_trigger_info->crux_info[index]),
+	index += scnprintf(&(parallel_foldmode_p->load_trigger_info->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"%s", parallel_foldmode_p->parallelchg_foldmode_info.data_buf);
 	oplus_chg_track_record_general_info(monitor, track_status, parallel_foldmode_p->load_trigger_info, index);
@@ -2117,13 +2143,13 @@ static void oplus_track_upload_bcc_err_info(struct work_struct *work)
 	pre_upload_time = oplus_chg_track_get_local_time_s();
 	mutex_unlock(&bcc_err->track_bcc_err_lock);
 
-	index += snprintf(&(bcc_err->bcc_err_load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(bcc_err->bcc_err_load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$err_scene@@%s", "bcc_err");
 
-	index += snprintf(&(bcc_err->bcc_err_load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(bcc_err->bcc_err_load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$err_reason@@%s", bcc_err->bcc_err.err_reason);
 
-	index += snprintf(&(bcc_err->bcc_err_load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(bcc_err->bcc_err_load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$curx_info@@%s", bcc_err->bcc_err.data_buf);
 	oplus_chg_track_obtain_power_info(&(bcc_err->bcc_err_load_trigger->crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index);
@@ -2186,21 +2212,21 @@ static void oplus_track_upload_uisoh_info(struct work_struct *work)
 	pre_upload_time = oplus_chg_track_get_local_time_s();
 	mutex_unlock(&uisoh_info_p->track_uisoh_info_lock);
 
-	index += snprintf(
+	index += scnprintf(
 		&(uisoh_info_p->uisoh_info_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$err_scene@@%s",
 		"uisoh_info");
 
-	index += snprintf(&(uisoh_info_p->uisoh_info_load_trigger->crux_info[index]),
+	index += scnprintf(&(uisoh_info_p->uisoh_info_load_trigger->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$curx_info@@%s", uisoh_info_p->uisoh_info.data_buf);
-	index += snprintf(&(uisoh_info_p->uisoh_info_load_trigger->crux_info[index]),
+	index += scnprintf(&(uisoh_info_p->uisoh_info_load_trigger->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$ori_fcc@@%d", track_chip->monitor->batt_fcc);
-	index += snprintf(&(uisoh_info_p->uisoh_info_load_trigger->crux_info[index]),
+	index += scnprintf(&(uisoh_info_p->uisoh_info_load_trigger->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$ori_soh@@%d", track_chip->monitor->batt_soh);
-	index += snprintf(&(uisoh_info_p->uisoh_info_load_trigger->crux_info[index]),
+	index += scnprintf(&(uisoh_info_p->uisoh_info_load_trigger->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$design_capacity@@%d", oplus_gauge_get_batt_capacity_mah(track_chip->monitor->gauge_topic));
 
@@ -2262,12 +2288,12 @@ static void oplus_track_upload_chg_up_info(struct work_struct *work)
 	pre_upload_time = oplus_chg_track_get_local_time_s();
 	mutex_unlock(&chg_up_info_p->track_chg_up_info_lock);
 
-	index += snprintf(
+	index += scnprintf(
 		&(chg_up_info_p->chg_up_info_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$err_scene@@%s",
 		"chg_up_info");
 
-	index += snprintf(&(chg_up_info_p->chg_up_info_load_trigger->crux_info[index]),
+	index += scnprintf(&(chg_up_info_p->chg_up_info_load_trigger->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$curx_info@@%s", chg_up_info_p->chg_up_info.data_buf);
 
@@ -2328,12 +2354,12 @@ static void oplus_track_upload_anti_expansion_info(struct work_struct *work)
 	pre_upload_time = oplus_chg_track_get_local_time_s();
 	mutex_unlock(&bae_info_p->track_bae_info_lock);
 
-	index += snprintf(
+	index += scnprintf(
 		&(bae_info_p->bae_info_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$err_scene@@%s",
 		"anti_expansion_info");
 
-	index += snprintf(&(bae_info_p->bae_info_load_trigger->crux_info[index]),
+	index += scnprintf(&(bae_info_p->bae_info_load_trigger->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$curx_info@@%d,%d,%d,%d", bae_info_p->bae_info.anti_expansion_status,
 			bae_info_p->bae_info.anti_expansion_rus_status, bae_info_p->bae_info.anti_expansion_high_risk_of_6hours,
@@ -2547,7 +2573,7 @@ static void oplus_track_upload_bcc_si(struct work_struct *work)
 	pre_upload_time = oplus_chg_track_get_local_time_s();
 	mutex_unlock(&bcc_si->bcc_si_lock);
 
-	index += snprintf(&(bcc_si->bcc_si_load_trigger->crux_info[index]),
+	index += scnprintf(&(bcc_si->bcc_si_load_trigger->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"%s", bcc_si->bcc_si.data_buf);
 
@@ -2663,7 +2689,7 @@ static void oplus_track_upload_eis(struct work_struct *work)
 	pre_upload_time = oplus_chg_track_get_local_time_s();
 	mutex_unlock(&eis->eis_lock);
 
-	index += snprintf(&(eis->eis_load_trigger->crux_info[index]),
+	index += scnprintf(&(eis->eis_load_trigger->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"%s", eis->eis.data_buf);
 
@@ -2711,10 +2737,10 @@ static int oplus_chg_track_set_hidl_bms_info(struct oplus_chg_track_hidl_cmd *cm
 	len = strlen(track_chip->track_status.bms_info);
 	if (strlen(cmd->data_buf) < TRACK_HIDL_BMS_INFO_LEN - len) {
 		if (!len)
-			snprintf(&(track_chip->track_status.bms_info[len]), TRACK_HIDL_BMS_INFO_LEN - len, "%s",
+			scnprintf(&(track_chip->track_status.bms_info[len]), TRACK_HIDL_BMS_INFO_LEN - len, "%s",
 				 cmd->data_buf);
 		else
-			snprintf(&(track_chip->track_status.bms_info[len]), TRACK_HIDL_BMS_INFO_LEN - len, ";%s",
+			scnprintf(&(track_chip->track_status.bms_info[len]), TRACK_HIDL_BMS_INFO_LEN - len, ";%s",
 				 cmd->data_buf);
 	}
 	chg_info("bms_info: %s\n", track_chip->track_status.bms_info);
@@ -2891,6 +2917,25 @@ oplus_chg_track_get_vooc_type_info(int vooc_type,
 	return vooc_index;
 }
 
+static void oplus_chg_track_get_ufcs_type_info(struct oplus_chg_track_status *track_status,
+	bool is_oplus, int id, int adapter_power, int emark_power)
+{
+	if (!strstr(track_status->power_info.wired_info.adapter_type, "ufcs"))
+		return;
+
+	if (is_oplus)
+		strncpy(track_status->power_info.wired_info.adapter_type, "ufcs_oplus",
+			OPLUS_CHG_TRACK_POWER_TYPE_LEN - 1);
+	else
+		strncpy(track_status->power_info.wired_info.adapter_type, "ufcs_third",
+			OPLUS_CHG_TRACK_POWER_TYPE_LEN - 1);
+
+	track_status->power_info.wired_info.adapter_id = id;
+	if (adapter_power > 0)
+		track_status->power_info.wired_info.power = adapter_power;
+	track_status->power_info.wired_info.emark_power = emark_power;
+}
+
 __maybe_unused static int oplus_chg_track_get_wls_adapter_type_info(
 	int charge_type, struct oplus_chg_track_status *track_status)
 {
@@ -2963,7 +3008,7 @@ static int oplus_chg_track_get_chg_abnormal_reason_info(
 		    chg_abnormal_reason_table[i].notify_code == notify_code) {
 			chg_abnormal_reason_table[i].happened = true;
 			if (!index)
-				index += snprintf(
+				index += scnprintf(
 					&(track_status
 						  ->chg_abnormal_reason[index]),
 					OPLUS_CHG_TRACK_CHG_ABNORMAL_REASON_LENS -
@@ -2971,7 +3016,7 @@ static int oplus_chg_track_get_chg_abnormal_reason_info(
 					"%s",
 					chg_abnormal_reason_table[i].reason);
 			else
-				index += snprintf(
+				index += scnprintf(
 					&(track_status
 						  ->chg_abnormal_reason[index]),
 					OPLUS_CHG_TRACK_CHG_ABNORMAL_REASON_LENS -
@@ -3302,11 +3347,11 @@ oplus_chg_track_record_general_info(struct oplus_monitor *monitor,
 	}
 
 	if (monitor->main_gauge_topic && monitor->sub_gauge_topic)
-		idx += snprintf(sub_batt_info + idx, MAX_SUB_BATT_INFO - idx,
+		idx += scnprintf(sub_batt_info + idx, MAX_SUB_BATT_INFO - idx,
 			"main_sub[%d %d %d %d]",
 			monitor->main_ibat, monitor->main_soc, monitor->sub_ibat, monitor->sub_soc);
 
-	index += snprintf(
+	index += scnprintf(
 		&(p_trigger_data->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 		"$$other@@BATTERY[%d %d %d %d %d %d %d %d %d %d %d 0x%x], "
@@ -3346,7 +3391,7 @@ oplus_chg_track_record_general_info(struct oplus_monitor *monitor,
 
 	if (track_status->power_info.power_type == TRACK_CHG_TYPE_WIRELESS) {
 		if (strlen(track_status->wls_break_crux_info))
-			index += snprintf(&(p_trigger_data->crux_info[index]),
+			index += scnprintf(&(p_trigger_data->crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 					  "%s ",
 					  track_status->wls_break_crux_info);
@@ -3365,13 +3410,13 @@ static int oplus_chg_track_pack_cool_down_stats(
 		return -1;
 
 	for (i = 0; i < ARRAY_SIZE(cool_down_stats_table) - 1; i++) {
-		index += snprintf(&(cool_down_pack[index]),
+		index += scnprintf(&(cool_down_pack[index]),
 				  OPLUS_CHG_TRACK_COOL_DOWN_PACK_LEN - index,
 				  "%s,%d;", cool_down_stats_table[i].level_name,
 				  cool_down_stats_table[i].time);
 	}
 
-	index += snprintf(&(cool_down_pack[index]),
+	index += scnprintf(&(cool_down_pack[index]),
 			  OPLUS_CHG_TRACK_COOL_DOWN_PACK_LEN - index, "%s,%d",
 			  cool_down_stats_table[i].level_name,
 			  cool_down_stats_table[i].time *
@@ -3395,7 +3440,7 @@ oplus_chg_track_record_charger_info(struct oplus_monitor *monitor,
 		return;
 
 	memset(p_trigger_data->crux_info, 0, sizeof(p_trigger_data->crux_info));
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$power_mode@@%s",
 			  track_status->power_info.power_mode);
@@ -3407,232 +3452,237 @@ oplus_chg_track_record_charger_info(struct oplus_monitor *monitor,
 			"$$adapter_t@@%s",
 			track_status->power_info.wired_info.adapter_type);
 		if (track_status->power_info.wired_info.adapter_id)
-			index += snprintf(
+			index += scnprintf(
 				&(p_trigger_data->crux_info[index]),
 				OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				"$$adapter_id@@0x%x",
 				track_status->power_info.wired_info.adapter_id);
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$power@@%d",
 				  track_status->power_info.wired_info.power);
 
+		if (track_status->power_info.wired_info.emark_power > 0)
+			index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+				"$$emark_power@@%d",
+				track_status->power_info.wired_info.emark_power);
+
 		if (track_status->wired_max_power <= 0)
-			index += snprintf(&(p_trigger_data->crux_info[index]),
+			index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$match_power@@%d", -1);
 		else
-			index += snprintf(&(p_trigger_data->crux_info[index]),
+			index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$match_power@@%d",
 				(track_status->power_info.wired_info.power >= track_status->wired_max_power));
 	} else if (track_status->power_info.power_type ==
 		   TRACK_CHG_TYPE_WIRELESS) {
-		index += snprintf(
+		index += scnprintf(
 			&(p_trigger_data->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$adapter_t@@%s",
 			track_status->power_info.wls_info.adapter_type);
 		if (strlen(track_status->power_info.wls_info.dock_type))
-			index += snprintf(
+			index += scnprintf(
 				&(p_trigger_data->crux_info[index]),
 				OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				"$$dock_type@@%s",
 				track_status->power_info.wls_info.dock_type);
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$power@@%d",
 				  track_status->power_info.wls_info.power);
 
 		if (track_status->wls_max_power <= 0)
-			index += snprintf(&(p_trigger_data->crux_info[index]),
+			index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$match_power@@%d", -1);
 		else
-			index += snprintf(&(p_trigger_data->crux_info[index]),
+			index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$match_power@@%d",
 				(track_status->power_info.wls_info.power >= track_status->wls_max_power));
 	}
 
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$start_soc@@%d", track_status->chg_start_soc);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$end_soc@@%d", track_status->chg_end_soc);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$start_temp@@%d", track_status->chg_start_temp);
-	index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$end_temp@@%d", track_status->chg_end_temp);
 	if (track_status->chg_soc50_time > 0)
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$soc50_time@@%d", track_status->chg_soc50_time);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$max_temp@@%d", track_status->chg_max_temp);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$batt_start_temp@@%d",
 			  track_status->batt_start_temp);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$batt_max_temp@@%d", track_status->batt_max_temp);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$batt_max_vol@@%d", track_status->batt_max_vol);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$batt_max_curr@@%d", track_status->batt_max_curr);
-	index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$chg_max_vol@@%d", track_status->chg_max_vol);
 
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			 OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			 "$$ledon_time@@%d", track_status->continue_ledon_time);
 	if (track_status->ledon_ave_speed)
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$ledon_ave_speed@@%d",
 				  track_status->ledon_ave_speed);
 
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$ledoff_time@@%d",
 			  track_status->continue_ledoff_time);
 	if (track_status->ledoff_ave_speed)
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$ledoff_ave_speed@@%d",
 				  track_status->ledoff_ave_speed);
 
 	if (track_status->chg_five_mins_cap != TRACK_PERIOD_CHG_CAP_INIT)
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$chg_five_mins_cap@@%d",
 				  track_status->chg_five_mins_cap);
 
 	if (track_status->chg_ten_mins_cap != TRACK_PERIOD_CHG_CAP_INIT)
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$chg_ten_mins_cap@@%d",
 				  track_status->chg_ten_mins_cap);
 
 	if (track_status->chg_twenty_mins_cap != TRACK_PERIOD_CHG_CAP_INIT)
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$20mins_cap@@%d", track_status->chg_twenty_mins_cap);
 
 	if (track_status->chg_thirty_mins_cap != TRACK_PERIOD_CHG_CAP_INIT)
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$30mins_cap@@%d", track_status->chg_thirty_mins_cap);
 
 	if (track_status->chg_average_speed !=
 	    TRACK_PERIOD_CHG_AVERAGE_SPEED_INIT)
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$chg_average_speed@@%d",
 				  track_status->chg_average_speed);
 
 	if (track_status->chg_fast_full_time)
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$fast_full_time@@%d",
 				  track_status->chg_fast_full_time);
 
 	if (track_status->chg_report_full_time)
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$report_full_time@@%d",
 				  track_status->chg_report_full_time);
 
 	if (track_status->chg_normal_full_time)
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$normal_full_time@@%d",
 				  track_status->chg_normal_full_time);
 
 	if (strlen(track_status->batt_full_reason))
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$full_reason@@%s",
 				  track_status->batt_full_reason);
 
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$chg_warm_once@@%d", track_status->tbatt_warm_once);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$batt_fcc@@%d", monitor->batt_fcc);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$batt_soh@@%d", monitor->batt_soh);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$batt_cc@@%d", monitor->batt_cc);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$rechg_counts@@%d", track_status->rechg_counts);
 
 	if (strlen(track_status->chg_abnormal_reason))
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$chg_abnormal@@%s",
 				  track_status->chg_abnormal_reason);
 
 	/* nrr: not_record_reason */
-	index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$nrr@@%lu", track_status->not_record_reason);
 
 	oplus_chg_track_pack_cool_down_stats(track_status, cool_down_pack);
 	if (strlen(track_status->bcc_info->data_buf)) {
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$bcc_trig_sta@@%s", track_status->bcc_info->data_buf);
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$bcc_code@@0x%x", track_status->bcc_info->err_code);
 	}
 
 	if (strlen(track_status->bms_info)) {
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$bms_sta@@%s", track_status->bms_info);
 	}
 
 	if (track_status->hyper_en == 1) {
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$hyper_sta@@%s", track_status->hyper_info);
 	} else {
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$hyper_sta@@hyper_en=%d", track_status->hyper_en);
 	}
 
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$cool_down_sta@@%s", cool_down_pack);
 
 	oplus_chg_track_pack_app_stats(p_trigger_data->crux_info, &index);
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$plugin_utc_t@@%d", track_status->chg_plugin_utc_t);
 
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$plugout_utc_t@@%d",
 			  track_status->chg_plugout_utc_t);
 
 	if (track_status->aging_ffc_trig && index < OPLUS_CHG_TRACK_CURX_INFO_LEN) {
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$aging_ffc@@%d", track_status->aging_ffc_trig);
 		for (i = 0; i < FFC_CHG_STEP_MAX; i++) {
 			if (track_status->aging_ffc_judge_vol[i] <= 0 ||
 			    index >= OPLUS_CHG_TRACK_CURX_INFO_LEN)
 				break;
-			index += snprintf(&(p_trigger_data->crux_info[index]),
+			index += scnprintf(&(p_trigger_data->crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 					  ",%d", track_status->aging_ffc_judge_vol[i]);
 		}
 		if (track_status->aging_ffc_to_full_time && index < OPLUS_CHG_TRACK_CURX_INFO_LEN) {
-			index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+			index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 					  "$$aging_ffc_t@@%d", track_status->aging_ffc_to_full_time);
 		}
 	}
 
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$mmi_chg@@%d", track_status->once_mmi_chg);
 	if(track_status->mmi_chg_open_t) {
@@ -3641,11 +3691,11 @@ oplus_chg_track_record_charger_info(struct oplus_monitor *monitor,
 			track_status->mmi_chg_constant_t =
 				track_status->chg_plugout_utc_t - track_status->mmi_chg_open_t;
 		}
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				"$$mmi_sta@@open,%d;", track_status->mmi_chg_open_t);
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				"close,%d;", track_status->mmi_chg_close_t);
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				"constant,%d", track_status->mmi_chg_constant_t);
 	}
 
@@ -3658,18 +3708,18 @@ oplus_chg_track_record_charger_info(struct oplus_monitor *monitor,
 				track_status->slow_chg_duration +=
 					track_status->chg_plugout_utc_t - track_status->slow_chg_open_t;
 		}
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$slow_chg@@%d,%d,%d,%d,%d,%d,%d", track_status->slow_chg_open_t,
 				  track_status->slow_chg_open_n_t, track_status->slow_chg_close_t,
 				  track_status->slow_chg_open_cnt, track_status->slow_chg_duration,
 				  track_status->slow_chg_pct, track_status->slow_chg_watt);
 	}
 
-	index += snprintf(&(p_trigger_data->crux_info[index]),
+	index += scnprintf(&(p_trigger_data->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$chg_cycle_status@@%d", track_status->once_chg_cycle_status);
 	if (track_status->ffc_time) {
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$ffc_cv_status@@"
 				  "%d,%d,%d,%d,%d,%d",
@@ -3678,14 +3728,14 @@ oplus_chg_track_record_charger_info(struct oplus_monitor *monitor,
 				  track_status->ffc_end_sub_soc, track_status->cv_time);
 	}
 	if (track_status->dual_chan_time)
-		index += snprintf(&(p_trigger_data->crux_info[index]),
+		index += scnprintf(&(p_trigger_data->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$dual_chan_status@@%d,%d",
 				  track_status->dual_chan_open_count, track_status->dual_chan_time);
 
-	index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$fcc_comp@@%d",
+	index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$fcc_comp@@%d",
 			  monitor->batt_fcc_comp);
-	index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$soh_comp@@%d",
+	index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$soh_comp@@%d",
 			 monitor->batt_soh_comp);
 
 	oplus_comm_get_dec_vol(monitor->comm_topic, &fv_dec, &wired_ffc_dec, &wls_ffc_dec, &vct);
@@ -3695,7 +3745,7 @@ oplus_chg_track_record_charger_info(struct oplus_monitor *monitor,
 			 monitor->batt_rm - track_status->chg_start_rm);
 
 	if (monitor->plc_support) {
-		index += snprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_trigger_data->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$enable_count@@%d$$plc_init_sm_soc@@%d$$plc_init_ui_soc@@%d$$plc_init_temp@@%d",
 			monitor->enable_count, monitor->plc_init_sm_soc, monitor->plc_init_ui_soc,
 			monitor->plc_init_temp);
@@ -4057,6 +4107,20 @@ static void oplus_chg_track_ufcs_info_trigger_work(struct work_struct *work)
 	mutex_unlock(&chip->ufcs_info_lock);
 }
 
+static void oplus_chg_track_pps_info_trigger_work(struct work_struct *work)
+{
+	struct delayed_work *dwork = to_delayed_work(work);
+	struct oplus_chg_track *chip = container_of(dwork, struct oplus_chg_track,
+						    pps_info_trigger_work);
+
+	if (chip->pps_info_trigger) {
+		oplus_chg_track_upload_trigger_data(chip->pps_info_trigger);
+		kfree(chip->pps_info_trigger);
+		chip->pps_info_trigger = NULL;
+	}
+	mutex_unlock(&chip->pps_info_lock);
+}
+
 static void oplus_chg_track_deep_dischg_info_trigger_work(struct work_struct *work)
 {
 	struct delayed_work *dwork = to_delayed_work(work);
@@ -4133,12 +4197,12 @@ static void oplus_chg_track_wired_retention_online_trigger_work(struct work_stru
 
 	oplus_chg_track_get_charger_type(monitor, track_status,
 					 TRACK_CHG_GET_LAST_TIME_TYPE);
-	index += snprintf(&(chip->wired_retention_online_trigger->crux_info[index]),
+	index += scnprintf(&(chip->wired_retention_online_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$retention_state@@%d", monitor->pre_retention_state);
-	index += snprintf(&(chip->wired_retention_online_trigger->crux_info[index]),
+	index += scnprintf(&(chip->wired_retention_online_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 		"$$retention_disconnect_count@@%d", monitor->total_disconnect_count);
-	index += snprintf(&(chip->wired_retention_online_trigger->crux_info[index]),
+	index += scnprintf(&(chip->wired_retention_online_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 		"$$retention_real_type@@%s", track_status->power_info.wired_info.adapter_type);
 
@@ -4209,13 +4273,13 @@ static void oplus_chg_track_uisoc_keep_2_err_trigger_work(struct work_struct *wo
 	chip->uisoc_keep_2_err_trigger->type_reason = TRACK_NOTIFY_TYPE_SOFTWARE_ABNORMAL;
 	chip->uisoc_keep_2_err_trigger->flag_reason = TRACK_NOTIFY_FLAG_UISOC_KEEP_2_ERROR;
 
-	index += snprintf(&(chip->uisoc_keep_2_err_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(chip->uisoc_keep_2_err_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$err_scene@@%s", "uisoc_keep_2_err");
 
-	index += snprintf(&(chip->uisoc_keep_2_err_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(chip->uisoc_keep_2_err_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$err_reason@@%s", "default");
 
-	index += snprintf(&(chip->uisoc_keep_2_err_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(chip->uisoc_keep_2_err_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$soc@@%d$$smooth_soc@@%d$$uisoc@@%d$$vbatt_max@@%d$$vbatt_min@@%d"
 			"$$batt_rm@@%d$$batt_fcc@@%d$$batt_cc@@%d$$batt_curr@@%d",
 			monitor->batt_soc, monitor->smooth_soc, monitor->ui_soc,
@@ -4292,7 +4356,7 @@ static void upload_endurance_info(struct oplus_chg_track *chip, struct oplus_mon
 	chip->endurance_info_trigger->type_reason = TRACK_NOTIFY_TYPE_GENERAL_RECORD;
 	chip->endurance_info_trigger->flag_reason = TRACK_NOTIFY_FLAG_ENDURANCE_INFO;
 
-	index += snprintf(&(chip->endurance_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(chip->endurance_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$start_soc@@%d$$end_soc@@%d"
 			  "$$start_uisoc@@%d$$end_uisoc@@%d"
 			  "$$start_vol_max@@%d$$end_vol_max@@%d"
@@ -4314,7 +4378,7 @@ static void upload_endurance_info(struct oplus_chg_track *chip, struct oplus_mon
 
 	rc = oplus_mms_get_item_data(monitor->gauge_topic, GAUGE_ITEM_REG_INFO, &data, true);
 	if (rc == 0 && data.strval && strlen(data.strval))
-		index += snprintf(&(chip->endurance_info_trigger->crux_info[index]),
+		index += scnprintf(&(chip->endurance_info_trigger->crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$main_reg_info@@%s", data.strval);
 
 	oplus_chg_track_upload_trigger_data(chip->endurance_info_trigger);
@@ -4437,7 +4501,7 @@ static void oplus_chg_track_rechg_info_trigger_work(struct work_struct *work)
 	chip->rechg_info_trigger->type_reason = TRACK_NOTIFY_TYPE_GENERAL_RECORD;
 	chip->rechg_info_trigger->flag_reason = TRACK_NOTIFY_FLAG_RECHG_INFO;
 
-	index += snprintf(&(chip->rechg_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(chip->rechg_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$rechging@@%d$$rechg_soc_en@@%d$$rechg_soc_thld@@%d$$uisoc@@%d$$soc@@%d$$vbatt_max@@%d$$charge_status@@%d",
 			monitor->rechging, monitor->rechg_soc_en, monitor->rechg_soc_threshold, monitor->ui_soc,
 			monitor->batt_soc, monitor->vbat_mv, monitor->batt_status);
@@ -4485,6 +4549,7 @@ static int oplus_chg_track_init(struct oplus_chg_track *track_dev)
 	mutex_init(&chip->chg_cycle_info_lock);
 	mutex_init(&chip->wls_info_lock);
 	mutex_init(&chip->ufcs_info_lock);
+	mutex_init(&chip->pps_info_lock);
 	mutex_init(&chip->deep_dischg_info_lock);
 	mutex_init(&chip->gauge_info.track_lock);
 	mutex_init(&chip->sub_gauge_info.track_lock);
@@ -4705,6 +4770,7 @@ static int oplus_chg_track_init(struct oplus_chg_track *track_dev)
 	INIT_DELAYED_WORK(&chip->chg_cycle_info_trigger_work, oplus_chg_track_chg_cycle_info_trigger_work);
 	INIT_DELAYED_WORK(&chip->wls_info_trigger_work, oplus_chg_track_wls_info_trigger_work);
 	INIT_DELAYED_WORK(&chip->ufcs_info_trigger_work, oplus_chg_track_ufcs_info_trigger_work);
+	INIT_DELAYED_WORK(&chip->pps_info_trigger_work, oplus_chg_track_pps_info_trigger_work);
 	INIT_DELAYED_WORK(&chip->deep_dischg_info_trigger_work, oplus_chg_track_deep_dischg_info_trigger_work);
 	INIT_DELAYED_WORK(&chip->eis_timeout_info_trigger_work, oplus_chg_track_eis_timeout_info_trigger_work);
 	INIT_DELAYED_WORK(&chip->wired_online_err_trigger_work, oplus_chg_track_wired_online_err_trigger_work);
@@ -5019,6 +5085,53 @@ int oplus_chg_track_get_bidirect_cp_err_reason(int err_type, char *err_reason, i
 	return charge_index;
 }
 
+static int oplus_chg_track_handle_pps_pdo_info(struct oplus_chg_track *chip,
+					       char *p_data, int *ret, int t_len) {
+	int i = 0;
+	pps_msg_data pps_data = {0};
+	pd_msg_data pd_data = {0};
+
+	if (chip == NULL) {
+		chg_err("chip is NULL");
+		return -EINVAL;
+	}
+
+	if (p_data == NULL) {
+                chg_err("p_data is NULL");
+                return -EINVAL;
+        }
+
+	if (chip->pps_info.adapter_pdo == NULL) {
+		chg_err("adapter_pdo is NULL");
+                return -EINVAL;
+	}
+
+	if (ret == NULL) {
+		chg_err("ret is NULL");
+		return -EINVAL;
+	}
+
+	for (i = 0; i < PPS_PDO_MAX; i++) {
+		pps_data = (pps_msg_data)chip->pps_info.adapter_pdo[i];
+		if (pps_data.pdo_type
+		    == USBPD_PDMSG_PDOTYPE_AUGMENTED) {
+			*ret += scnprintf(&p_data[*ret], t_len - *ret,
+					  "(%u %u-%umV %umA)", pps_data.pdo_type,
+					  PPS_PDO_VOL_MIN(pps_data.min_voltage100mv),
+					  PPS_PDO_VOL_MAX(pps_data.max_voltage100mv),
+	                        	  PPS_PDO_CURR_MAX(pps_data.max_current50ma));
+		} else if (chip->pps_info.adapter_pdo[i] > 0) {
+			pd_data = (pd_msg_data)chip->pps_info.adapter_pdo[i];
+			*ret += scnprintf(&p_data[*ret], t_len - *ret,
+					  "(%u %umV %umA)", pd_data.pdo_type,
+					  PD_PDO_VOL(pd_data.voltage_50mv),
+					  PD_PDO_CURR_MAX(pd_data.max_current_10ma));
+	        }
+	}
+
+	return 0;
+}
+
 /*
 * track sub version
 * 3: default version for chg track
@@ -5038,7 +5151,7 @@ int oplus_chg_track_get_bidirect_cp_err_reason(int err_type, char *err_reason, i
 static int oplus_chg_track_pack_dcs_info(struct oplus_chg_track *chip)
 {
 	int ret = 0;
-	int len;
+	int len, index;
 	struct rtc_time tm;
 	char log_tag[] = OPLUS_CHG_TRACK_LOG_TAG;
 	char event_id[] = OPLUS_CHG_TRACK_EVENT_ID;
@@ -5047,22 +5160,24 @@ static int oplus_chg_track_pack_dcs_info(struct oplus_chg_track *chip)
 	char flag_reason_tag[OPLUS_CHG_TRIGGER_REASON_TAG_LEN] = { 0 };
 	char battery_type_str[OPLUS_BATTERY_TYPE_LEN] = { 0 };
 	int rc = oplus_gauge_get_battery_type_str(battery_type_str);
+	pps_msg_data pps_data = {0};
+
 	if (rc != 0) {
 		if (chip->monitor->deep_support)
-			snprintf(battery_type_str, OPLUS_BATTERY_TYPE_LEN,"silicon");
+			scnprintf(battery_type_str, OPLUS_BATTERY_TYPE_LEN,"silicon");
 		else
-			snprintf(battery_type_str, OPLUS_BATTERY_TYPE_LEN,"graphite");
+			scnprintf(battery_type_str, OPLUS_BATTERY_TYPE_LEN,"graphite");
 	}
 
 	memset(p_data, 0x0, sizeof(char) * OPLUS_CHG_TRIGGER_MSG_LEN);
 	ret += sizeof(struct kernel_packet_info);
-	ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+	ret += scnprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret,
 			OPLUS_CHG_TRACK_EVENT_ID);
 
 	ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret,
 			"$$track_ver@@%s", TRACK_VERSION);
 
-	ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, "$$battery_type@@%s", battery_type_str);
+	ret += scnprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, "$$battery_type@@%s", battery_type_str);
 
 	oplus_chg_track_get_type_tag(chip->trigger_data.type_reason,
 				     type_reason_tag);
@@ -5070,18 +5185,70 @@ static int oplus_chg_track_pack_dcs_info(struct oplus_chg_track *chip)
 	oplus_chg_track_get_flag_tag(chip->trigger_data.flag_reason,
 				     flag_reason_tag);
 	flag_reason_tag[OPLUS_CHG_TRIGGER_REASON_TAG_LEN - 1] = 0;
-	ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+	ret += scnprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret,
 			"$$type_reason@@%s", type_reason_tag);
-	ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+	ret += scnprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret,
 			"$$flag_reason@@%s", flag_reason_tag);
 
 	oplus_chg_track_get_current_time(&tm);
-	ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+	ret += scnprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret,
 			"$$time@@[%04d-%02d-%02d %02d:%02d:%02d]", tm.tm_year,
 			tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min,
 			tm.tm_sec);
 
-	ret += snprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, "%s",
+	if (is_pps_topic_available(chip->monitor)
+	    && strstr(chip->trigger_data.crux_info, "pps") != NULL) {
+		if (chip->trigger_data.flag_reason == TRACK_NOTIFY_FLAG_CHARGER_INFO) {
+			ret += scnprintf(&p_data[ret],
+					 OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+					 "$$pps_adapter_info");
+			if (chip->pps_info.adapter_pdo != NULL) {
+				ret += scnprintf(&p_data[ret],
+						 OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+						 "@@[");
+				oplus_chg_track_handle_pps_pdo_info(chip, p_data, &ret,
+								    OPLUS_CHG_TRIGGER_MSG_LEN);
+				ret += scnprintf(&p_data[ret],
+						 OPLUS_CHG_TRIGGER_MSG_LEN - ret, "]");
+			} else {
+				ret += scnprintf(&p_data[ret],
+						 OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+                                                 "@@NULL");
+			}
+		}
+
+		if (chip->trigger_data.flag_reason == TRACK_NOTIFY_FLAG_CHARGER_INFO ||
+		    chip->trigger_data.flag_reason == TRACK_NOTIFY_FLAG_USBTEMP_INFO ||
+		    chip->trigger_data.type_reason == TRACK_NOTIFY_TYPE_NO_CHARGING ||
+		    chip->trigger_data.type_reason == TRACK_NOTIFY_TYPE_CHARGING_BREAK ||
+		    chip->trigger_data.type_reason == TRACK_NOTIFY_TYPE_CHARGING_SLOW) {
+			index = chip->pps_info.adapter_power_max_index;
+			if (chip->pps_info.adapter_pdo != NULL)
+				pps_data = (pps_msg_data)chip->pps_info.adapter_pdo[index];
+			if (chip->pps_info.adapter_pdo != NULL &&
+			    pps_data.pdo_type == USBPD_PDMSG_PDOTYPE_AUGMENTED) {
+				ret += scnprintf(&p_data[ret],
+					OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+					"$$pps_adapter_max@@(%uW %umV %umA)",
+					(PPS_PDO_VOL_MAX(pps_data.max_voltage100mv) / MILLIMETER *
+					PPS_PDO_CURR_MAX(pps_data.max_current50ma) / MILLIMETER),
+					PPS_PDO_VOL_MAX(pps_data.max_voltage100mv),
+					PPS_PDO_CURR_MAX(pps_data.max_current50ma));
+			} else {
+				ret += scnprintf(&p_data[ret],
+					OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+					"$$pps_adapter_max@@0");
+			}
+			ret += scnprintf(&p_data[ret],
+				OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+				"$$cpa_power@@%d", chip->pps_info.cpa_power);
+			ret += scnprintf(&p_data[ret],
+				OPLUS_CHG_TRIGGER_MSG_LEN - ret,
+				"$$adapter_power@@%d", chip->pps_info.adapter_power);
+		}
+	}
+
+	ret += scnprintf(&p_data[ret], OPLUS_CHG_TRIGGER_MSG_LEN - ret, "%s",
 			chip->trigger_data.crux_info);
 
 	len = strlen(&(p_data[sizeof(struct kernel_packet_info)]));
@@ -5131,6 +5298,47 @@ static void oplus_chg_track_upload_info_dwork(struct work_struct *work)
 	chip->dwork_retry_cnt--;
 }
 
+static bool oplus_chg_track_has_protocol_changed(struct oplus_chg_track_status *track_status, int type)
+{
+	if (type != track_status->pre_wired_type &&
+	   (type == OPLUS_CHG_USB_TYPE_PD_PPS ||
+	    type == OPLUS_CHG_USB_TYPE_VOOC ||
+	    type == OPLUS_CHG_USB_TYPE_UFCS ||
+	    type == OPLUS_CHG_USB_TYPE_SVOOC)) {
+		chg_info("protocol changed, %d->%d\n",  track_status->pre_wired_type, type);
+		return true;
+	}
+
+	return false;
+}
+
+static bool oplus_chg_track_has_power_changed(struct oplus_monitor *monitor, int type)
+{
+	struct oplus_chg_track *track_chip;
+	struct oplus_chg_track_status *track_status;
+
+	if (!monitor)
+		return false;
+	track_chip = monitor->track;
+	if (!track_chip)
+		return false;
+	track_status = &track_chip->track_status;
+
+	if (type != TRACK_CHG_GET_THTS_TIME_TYPE)
+		return false;
+
+	if (strstr(track_status->power_info.wired_info.adapter_type, "ufcs") &&
+	    (monitor->ufcs_adapter_power > track_status->power_info.wired_info.power ||
+	    monitor->ufcs_emark_power > track_status->power_info.wired_info.emark_power)) {
+		chg_info("power changed, Adapter %d->%d, Emark %d->%d\n",
+			track_status->power_info.wired_info.power, monitor->ufcs_adapter_power,
+			track_status->power_info.wired_info.emark_power, monitor->ufcs_emark_power);
+		return true;
+	}
+
+	return false;
+}
+
 int oplus_chg_track_handle_wired_type_info(
 	struct oplus_monitor *monitor, int type)
 {
@@ -5145,16 +5353,21 @@ int oplus_chg_track_handle_wired_type_info(
 	track_status = &track_chip->track_status;
 
 	if (track_status->power_info.wired_info.adapter_id ||
-	    !strcmp(track_status->power_info.wired_info.adapter_type, "vooc") ||
+	    strstr(track_status->power_info.wired_info.adapter_type, "vooc") ||
+	    strstr(track_status->power_info.wired_info.adapter_type, "ufcs") ||
+	    strstr(track_status->power_info.wired_info.adapter_type, "pps") ||
 	    (!strcmp(track_status->power_info.wired_info.adapter_type, "pd") &&
 	    monitor->wired_charge_type == OPLUS_CHG_USB_TYPE_DCP) ||
 	    !strcmp(track_status->power_info.wired_info.adapter_type, "qc")) {
-		chg_debug("has know type and not handle\n");
-		return 0;
+		if (!oplus_chg_track_has_protocol_changed(track_status, monitor->wired_charge_type) &&
+		    !oplus_chg_track_has_power_changed(monitor, type)) {
+			chg_debug("has know type and not handle\n");
+			return 0;
+		}
 	}
 
 	if (!monitor->wired_charge_type) {
-		chg_info("wired_charge_type is unknow, no update\n");
+		chg_debug("wired_charge_type is unknow, no update\n");
 		return 0;
 	}
 
@@ -5177,20 +5390,27 @@ int oplus_chg_track_handle_wired_type_info(
 			sid_to_adapter_id(monitor->vooc_sid);
 		oplus_chg_track_get_vooc_type_info(track_status->fast_chg_type,
 						   track_status);
+		oplus_chg_track_get_ufcs_type_info(track_status,
+			monitor->ufcs_oplus_adapter, monitor->ufcs_adapter_id,
+			monitor->ufcs_adapter_power, monitor->ufcs_emark_power);
 	} else {
 		oplus_chg_track_get_vooc_type_info(
 			track_status->pre_fastchg_type, track_status);
+		oplus_chg_track_get_ufcs_type_info(track_status,
+			monitor->pre_ufcs_oplus_adapter, monitor->pre_ufcs_adapter_id,
+			monitor->pre_ufcs_adapter_power, monitor->pre_ufcs_emark_power);
 	}
 
 	if (monitor->pd_svooc && !strcmp(track_status->power_info.wired_info.adapter_type, "svooc"))
 		strncpy(track_status->power_info.wired_info.adapter_type,
 			"pd_svooc", OPLUS_CHG_TRACK_POWER_TYPE_LEN - 1);
 
-	chg_info("power_mode:%s, type:%s, adapter_id:0x%0x, power:%d\n",
+	chg_info("power_mode:%s, type:%s, adapter_id:0x%0x, power:%d, emark_power:%d\n",
 		track_status->power_info.power_mode,
 		track_status->power_info.wired_info.adapter_type,
 		track_status->power_info.wired_info.adapter_id,
-		track_status->power_info.wired_info.power);
+		track_status->power_info.wired_info.power,
+		track_status->power_info.wired_info.emark_power);
 
 	return 0;
 }
@@ -5748,48 +5968,52 @@ static void oplus_chg_track_record_break_charging_info(
 	if (power_info.power_type == TRACK_CHG_TYPE_WIRE) {
 		memset(track_chip->charging_break_trigger.crux_info, 0,
 		       sizeof(track_chip->charging_break_trigger.crux_info));
-		index += snprintf(
+		index += scnprintf(
 			&(track_chip->charging_break_trigger.crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$power_mode@@%s", power_info.power_mode);
-		index += snprintf(
+		index += scnprintf(
 			&(track_chip->charging_break_trigger.crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$adapter_t@@%s", power_info.wired_info.adapter_type);
 		if (power_info.wired_info.adapter_id)
-			index += snprintf(&(track_chip->charging_break_trigger
+			index += scnprintf(&(track_chip->charging_break_trigger
 						    .crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 					  "$$adapter_id@@0x%x",
 					  power_info.wired_info.adapter_id);
-		index += snprintf(
+		index += scnprintf(
 			&(track_chip->charging_break_trigger.crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$power@@%d",
 			power_info.wired_info.power);
+		if (power_info.wired_info.emark_power > 0)
+			index += snprintf(&(track_chip->charging_break_trigger.crux_info[index]),
+				OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$emark_power@@%d",
+				power_info.wired_info.emark_power);
 
 		if (track_status->wired_max_power <= 0)
-			index += snprintf(&(track_chip->charging_break_trigger.crux_info[index]),
+			index += scnprintf(&(track_chip->charging_break_trigger.crux_info[index]),
 				OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$match_power@@%d", -1);
 		else
-			index += snprintf(&(track_chip->charging_break_trigger.crux_info[index]),
+			index += scnprintf(&(track_chip->charging_break_trigger.crux_info[index]),
 				OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$match_power@@%d",
 				(track_status->power_info.wired_info.power >= track_status->wired_max_power));
 
 		if (strlen(track_status->fastchg_break_info.name)) {
-			index += snprintf(&(track_chip->charging_break_trigger
+			index += scnprintf(&(track_chip->charging_break_trigger
 						    .crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 					  "$$voocphy_name@@%s",
 					  track_chip->voocphy_name);
 			index +=
-				snprintf(&(track_chip->charging_break_trigger
+				scnprintf(&(track_chip->charging_break_trigger
 						   .crux_info[index]),
 					 OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 					 "$$reason@@%s",
 					 track_status->fastchg_break_info.name);
 		}
 		if (strlen(sub_crux_info)) {
-			index += snprintf(&(track_chip->charging_break_trigger
+			index += scnprintf(&(track_chip->charging_break_trigger
 						    .crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 					  "$$crux_info@@%s", sub_crux_info);
@@ -5802,42 +6026,42 @@ static void oplus_chg_track_record_break_charging_info(
 	} else if (power_info.power_type == TRACK_CHG_TYPE_WIRELESS) {
 		memset(track_chip->wls_charging_break_trigger.crux_info, 0,
 		       sizeof(track_chip->wls_charging_break_trigger.crux_info));
-		index += snprintf(&(track_chip->wls_charging_break_trigger
+		index += scnprintf(&(track_chip->wls_charging_break_trigger
 					    .crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$power_mode@@%s", power_info.power_mode);
-		index += snprintf(&(track_chip->wls_charging_break_trigger
+		index += scnprintf(&(track_chip->wls_charging_break_trigger
 					    .crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$adapter_t@@%s",
 				  power_info.wls_info.adapter_type);
 		if (strlen(power_info.wls_info.dock_type))
-			index += snprintf(
+			index += scnprintf(
 				&(track_chip->wls_charging_break_trigger
 					  .crux_info[index]),
 				OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				"$$dock_type@@%s",
 				power_info.wls_info.dock_type);
-		index += snprintf(&(track_chip->wls_charging_break_trigger
+		index += scnprintf(&(track_chip->wls_charging_break_trigger
 					    .crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$power@@%d", power_info.wls_info.power);
 
 		if (track_status->wls_max_power <= 0)
-			index += snprintf(&(track_chip->wls_charging_break_trigger.crux_info[index]),
+			index += scnprintf(&(track_chip->wls_charging_break_trigger.crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 					  "$$match_power@@%d", -1);
 		else
-			index += snprintf(&(track_chip->wls_charging_break_trigger.crux_info[index]),
+			index += scnprintf(&(track_chip->wls_charging_break_trigger.crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 					  "$$match_power@@%d",
 					  (track_status->power_info.wls_info.power >= track_status->wls_max_power));
-		index += snprintf(&(track_chip->wls_charging_break_trigger.crux_info[index]),
+		index += scnprintf(&(track_chip->wls_charging_break_trigger.crux_info[index]),
 				  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				  "$$delta_time_ms@@%llu",
 				  track_status->wls_attach_time_ms - track_status->wls_detach_time_ms);
 		if (strlen(sub_crux_info)) {
-			index += snprintf(
+			index += scnprintf(
 				&(track_chip->wls_charging_break_trigger
 					  .crux_info[index]),
 				OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
@@ -6204,7 +6428,8 @@ int oplus_chg_track_check_wired_charging_break(int vbus_rising)
 		if ((track_status->chg_attach_time_ms -
 			     track_status->chg_detach_time_ms <
 		     track_chip->track_cfg.fast_chg_break_t_thd) &&
-		    !fastchg_code_ok && track_status->mmi_chg) {
+		    (!fastchg_code_ok || strstr(power_info.wired_info.adapter_type, "ufcs")) &&
+		    track_status->mmi_chg) {
 			if (!break_recording) {
 				break_recording = true;
 				track_chip->charging_break_trigger.flag_reason =
@@ -6256,6 +6481,7 @@ int oplus_chg_track_check_wired_charging_break(int vbus_rising)
 			break_recording = 0;
 		}
 		memset(&(track_status->power_info), 0, sizeof(track_status->power_info));
+		track_status->power_info.power_type = TRACK_CHG_TYPE_WIRE;
 		strcpy(track_status->power_info.power_mode, "unknow");
 	} else if (!vbus_rising && (pre_vbus_rising != vbus_rising)) {
 		track_status->chg_detach_time_ms =
@@ -6272,8 +6498,11 @@ int oplus_chg_track_check_wired_charging_break(int vbus_rising)
 	if (vbus_rising) {
 		track_status->mmi_chg = oplus_chg_track_get_mmi_chg();
 		track_chip->monitor->pre_vooc_sid = 0;
-		oplus_chg_track_set_fastchg_break_code(
-			TRACK_VOOCPHY_BREAK_DEFAULT);
+		oplus_chg_track_set_fastchg_break_code(TRACK_VOOCPHY_BREAK_DEFAULT);
+		monitor->pre_ufcs_oplus_adapter = monitor->ufcs_oplus_adapter;
+		monitor->pre_ufcs_adapter_id = monitor->ufcs_adapter_id;
+		monitor->pre_ufcs_emark_power = monitor->ufcs_emark_power;
+		monitor->pre_ufcs_adapter_power = monitor->ufcs_adapter_power;
 	}
 	pre_vbus_rising = vbus_rising;
 
@@ -6906,14 +7135,20 @@ oplus_chg_track_get_charger_type(struct oplus_monitor *monitor,
 				 struct oplus_chg_track_status *track_status,
 				 int type)
 {
-	if (monitor == NULL || track_status == NULL)
+	struct oplus_chg_track *track_chip;
+
+	if (!monitor || !track_status)
+		return -EINVAL;
+	track_chip = monitor->track;
+	if (!track_chip)
 		return -EINVAL;
 
-	if (monitor->wls_online)
+	if (monitor->wls_online) {
 		oplus_chg_track_handle_wls_type_info(track_status);
-	else if (monitor->wired_online)
+	} else if (monitor->wired_online) {
 		oplus_chg_track_handle_wired_type_info(monitor, type);
-
+		*track_status = track_chip->track_status;
+	}
 	return 0;
 }
 
@@ -6946,6 +7181,10 @@ static int oplus_chg_track_obtain_power_info(char *power_info, int len)
 		index += snprintf(&(power_info[index]), len - index,
 				  "$$power@@%d",
 				  track_status->power_info.wired_info.power);
+		if (track_status->power_info.wired_info.emark_power > 0)
+			index += snprintf(&(power_info[index]), len - index, "$$emark_power@@%d",
+				track_status->power_info.wired_info.emark_power);
+
 		if (g_track_chip->track_status.wired_max_power <= 0)
 			index += snprintf(&(power_info[index]), len - index, "$$match_power@@%d", -1);
 		else
@@ -7000,44 +7239,47 @@ static int oplus_chg_track_get_err_comm_info(struct oplus_chg_track *track, char
 
 	oplus_chg_track_get_charger_type(monitor, track_status,
 					 TRACK_CHG_GET_THTS_TIME_TYPE);
-	index = snprintf(buf, buf_size, "$$power_mode@@%s",
+	index = scnprintf(buf, buf_size, "$$power_mode@@%s",
 			 track_status->power_info.power_mode);
 
 	if (track_status->power_info.power_type == TRACK_CHG_TYPE_WIRE) {
-		index += snprintf(
+		index += scnprintf(
 			buf + index, buf_size - index, "$$adapter_t@@%s",
 			track_status->power_info.wired_info.adapter_type);
 		if (track_status->power_info.wired_info.adapter_id)
-			index += snprintf(
+			index += scnprintf(
 				buf + index, buf_size - index,
 				"$$adapter_id@@0x%x",
 				track_status->power_info.wired_info.adapter_id);
-		index += snprintf(buf + index, buf_size - index, "$$power@@%d",
+		index += scnprintf(buf + index, buf_size - index, "$$power@@%d",
 				  track_status->power_info.wired_info.power);
-		index += snprintf(buf + index, buf_size - index, "$$vbus@@%d",
+		if (track_status->power_info.wired_info.emark_power > 0)
+			index += snprintf(buf + index, buf_size - index, "$$emark_power@@%d",
+				track_status->power_info.wired_info.power);
+		index += scnprintf(buf + index, buf_size - index, "$$vbus@@%d",
 				  monitor->wired_vbus_mv);
 		if (track_status->wired_max_power <= 0)
-			index += snprintf(buf + index, buf_size - index, "$$match_power@@%d", -1);
+			index += scnprintf(buf + index, buf_size - index, "$$match_power@@%d", -1);
 		else
-			index += snprintf(buf + index, buf_size - index, "$$match_power@@%d",
+			index += scnprintf(buf + index, buf_size - index, "$$match_power@@%d",
 					  (track_status->power_info.wired_info.power >= track_status->wired_max_power));
 	} else if (track_status->power_info.power_type == TRACK_CHG_TYPE_WIRELESS) {
-		index += snprintf(
+		index += scnprintf(
 			buf + index, buf_size - index, "$$adapter_t@@%s",
 			track_status->power_info.wls_info.adapter_type);
 		if (strlen(track_status->power_info.wls_info.dock_type))
-			index += snprintf(
+			index += scnprintf(
 				buf + index, buf_size - index,
 				"$$dock_type@@%s",
 				track_status->power_info.wls_info.dock_type);
-		index += snprintf(buf + index, buf_size - index, "$$power@@%d",
+		index += scnprintf(buf + index, buf_size - index, "$$power@@%d",
 				  track_status->power_info.wls_info.power);
-		index += snprintf(buf + index, buf_size - index, "$$vbus@@%d",
+		index += scnprintf(buf + index, buf_size - index, "$$vbus@@%d",
 				  monitor->wls_vout_mv);
 		if (track_status->wls_max_power <= 0)
-			index += snprintf(buf + index, buf_size - index, "$$match_power@@%d", -1);
+			index += scnprintf(buf + index, buf_size - index, "$$match_power@@%d", -1);
 		else
-			index += snprintf(buf + index, buf_size - index, "$$match_power@@%d",
+			index += scnprintf(buf + index, buf_size - index, "$$match_power@@%d",
 					  (track_status->power_info.wls_info.power >= track_status->wls_max_power));
 	}
 
@@ -7085,7 +7327,7 @@ static int oplus_chg_track_upload_ic_err_info(struct oplus_chg_track *track)
 	}
 	chg_info("err_type=%d, sub_err_type=%d\n", err_type, sub_err_type);
 
-	index = snprintf(track_buf, OPLUS_CHG_TRACK_CURX_INFO_LEN,
+	index = scnprintf(track_buf, OPLUS_CHG_TRACK_CURX_INFO_LEN,
 			 "$$device_id@@%s$$err_type@@%d", msg_buf + name_index,
 			 sub_err_type);
 
@@ -7167,7 +7409,7 @@ static int oplus_chg_track_upload_ic_err_info(struct oplus_chg_track *track)
 		return -EINVAL;
 	}
 
-	index += snprintf(track_buf + index, OPLUS_CHG_TRIGGER_MSG_LEN - index,
+	index += scnprintf(track_buf + index, OPLUS_CHG_TRIGGER_MSG_LEN - index,
 			  "$$ic_msg@@%s", msg_buf + msg_index);
 
 	schedule_delayed_work(&track->ic_err_msg_trigger_work, 0);
@@ -7233,7 +7475,7 @@ static int oplus_chg_track_upload_uisoc_drop_err_info(struct oplus_chg_track *tr
 		chg_err("get msg data error, rc=%d\n", rc);
 		return rc;
 	}
-	snprintf(track->uisoc_drop_err_trigger.crux_info,
+	scnprintf(track->uisoc_drop_err_trigger.crux_info,
 		 OPLUS_CHG_TRACK_CURX_INFO_LEN, "%s", data.strval);
 
 	schedule_delayed_work(&track->uisoc_drop_err_trigger_work, 0);
@@ -7254,7 +7496,7 @@ oplus_chg_track_upload_vbatt_too_low_info(struct oplus_chg_track *track)
 		chg_err("get msg data error, rc=%d\n", rc);
 		return rc;
 	}
-	snprintf(track->vbatt_too_low_load_trigger.crux_info,
+	scnprintf(track->vbatt_too_low_load_trigger.crux_info,
 		 OPLUS_CHG_TRACK_CURX_INFO_LEN, "%s", data.strval);
 
 	schedule_delayed_work(&track->vbatt_too_low_load_trigger_work, 0);
@@ -7268,7 +7510,7 @@ oplus_chg_track_upload_vbatt_diff_over_info(struct oplus_chg_track *track)
 {
 	struct oplus_monitor *monitor = track->monitor;
 
-	(void)snprintf(track->vbatt_diff_over_load_trigger.crux_info,
+	(void)scnprintf(track->vbatt_diff_over_load_trigger.crux_info,
 		       OPLUS_CHG_TRACK_CURX_INFO_LEN,
 		       "$$soc@@%d$$smooth_soc@@%d$$uisoc@@%d$$vbatt_max@@%d$$vbatt_min@@%d"
 		       "$$vbatt_diff@@%d$$batt_rm@@%d$$batt_fcc@@%d$$batt_cc@@%d"
@@ -7316,12 +7558,12 @@ oplus_chg_track_upload_uisoc_keep_1_t_info(struct oplus_chg_track *chip)
 		 uisoc_1_end_time, chip->uisoc_1_start_time);
 	memset(chip->uisoc_keep_1_t_load_trigger.crux_info, 0,
 	       sizeof(chip->uisoc_keep_1_t_load_trigger.crux_info));
-	index += snprintf(&(chip->uisoc_keep_1_t_load_trigger.crux_info[index]),
+	index += scnprintf(&(chip->uisoc_keep_1_t_load_trigger.crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$uisoc_keep_1_t@@%d",
 			  uisoc_1_end_time - chip->uisoc_1_start_time);
 
-	index += snprintf(
+	index += scnprintf(
 		&(chip->uisoc_keep_1_t_load_trigger.crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 		"$$pre_vbatt_max@@%d$$pre_vbatt_min@@%d$$curr_vbatt_max@@%d"
@@ -7351,7 +7593,7 @@ oplus_chg_track_upload_dual_chan_err_info(struct oplus_chg_track *track)
 		chg_err("get msg data error, rc=%d\n", rc);
 		return rc;
 	}
-	snprintf(track->dual_chan_err_load_trigger.crux_info,
+	scnprintf(track->dual_chan_err_load_trigger.crux_info,
 		 OPLUS_CHG_TRACK_CURX_INFO_LEN, "%s", data.strval);
 
 	schedule_delayed_work(&track->dual_chan_err_load_trigger_work, 0);
@@ -7439,7 +7681,7 @@ void oplus_chg_track_upload_dischg_profile(struct oplus_monitor *monitor)
 		return;
 
 	if (chip->dischg_profile.index >= DEEP_DISCHG_AVG_PROFILE_SIZE) {
-		index = snprintf(profile_info, REG_INFO_LEN, "$$voltage_10per@@%d$$voltage_5per@@%d$$voltage_avg@@%d"
+		index = scnprintf(profile_info, REG_INFO_LEN, "$$voltage_10per@@%d$$voltage_5per@@%d$$voltage_avg@@%d"
 			"$$vmin@@%d$$vmax@@%d$$tbat_max@@%d$$tbat_min@@%d$$tbat_avg@@%d$$tbat_now@@%d$$current_max@@%d"
 			"$$current_min@@%d$$current_avg@@%d$$tsub_max@@%d$$tsub_min@@%d$$tsub_avg@@%d$$tsub_now@@%d"
 			"$$tshell_max@@%d$$tshell_min@@%d$$tshell_avg@@%d$$tshell_now@@%d$$gaugesoc_final@@%d"
@@ -7750,7 +7992,7 @@ static int oplus_chg_track_upload_mmi_chg_info(struct oplus_chg_track *chip)
 		return rc;
 	}
 
-	index += snprintf(&(chip->mmi_chg_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
+	index += scnprintf(&(chip->mmi_chg_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
 			  data.strval);
 	oplus_chg_track_obtain_power_info(&(chip->mmi_chg_info_trigger->crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index);
@@ -7792,7 +8034,7 @@ static int oplus_chg_track_upload_slow_chg_info(struct oplus_chg_track *chip)
 		return rc;
 	}
 
-	index += snprintf(&(chip->slow_chg_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
+	index += scnprintf(&(chip->slow_chg_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
 			  data.strval);
 	oplus_chg_track_obtain_power_info(&(chip->slow_chg_info_trigger->crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index);
@@ -7834,7 +8076,7 @@ static int oplus_chg_track_upload_chg_cycle_info(struct oplus_chg_track *chip)
 		return rc;
 	}
 
-	index += snprintf(&(chip->chg_cycle_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(chip->chg_cycle_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "%s$$status@@%d", data.strval, chip->monitor->chg_cycle_status);
 	oplus_chg_track_obtain_power_info(&(chip->chg_cycle_info_trigger->crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index);
@@ -7876,7 +8118,7 @@ static int oplus_chg_track_upload_wls_info(struct oplus_chg_track *chip)
 		return rc;
 	}
 
-	index += snprintf(&(chip->wls_info_trigger->crux_info[index]),
+	index += scnprintf(&(chip->wls_info_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s", data.strval);
 	oplus_chg_track_obtain_power_info(&(chip->wls_info_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index);
@@ -7918,7 +8160,7 @@ static int oplus_chg_track_upload_ufcs_info(struct oplus_chg_track *chip)
 		return rc;
 	}
 
-	index += snprintf(&(chip->ufcs_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(chip->ufcs_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "%s", data.strval);
 	oplus_chg_track_obtain_power_info(&(chip->ufcs_info_trigger->crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index);
@@ -7928,6 +8170,79 @@ static int oplus_chg_track_upload_ufcs_info(struct oplus_chg_track *chip)
 	return 0;
 }
 
+static int oplus_chg_track_upload_pps_info(struct oplus_chg_track *chip)
+{
+	int index = 0, temp_index = 0;
+	union mms_msg_data data = { 0 };
+	pps_msg_data pps_data = {0};
+	int rc = 0;
+
+	if (!chip)
+		return -EINVAL;
+
+	mutex_lock(&chip->pps_info_lock);
+	if (chip->pps_info_trigger)
+		kfree(chip->pps_info_trigger);
+
+	chip->pps_info_trigger = kzalloc(sizeof(oplus_chg_track_trigger), GFP_KERNEL);
+	if (!chip->pps_info_trigger) {
+		chg_err("pps_info_trigger memery alloc fail\n");
+		mutex_unlock(&chip->pps_info_lock);
+		return -ENOMEM;
+	}
+
+	chip->pps_info_trigger->type_reason = TRACK_NOTIFY_TYPE_SOFTWARE_ABNORMAL;
+	chip->pps_info_trigger->flag_reason = TRACK_NOTIFY_FLAG_PPS_ABNORMAL;
+
+	rc = oplus_mms_get_item_data(chip->monitor->err_topic, ERR_ITEM_PPS, &data, false);
+	if (rc < 0) {
+		chg_err("get msg data error, rc=%d\n", rc);
+		kfree(chip->pps_info_trigger);
+		chip->pps_info_trigger = NULL;
+		mutex_unlock(&chip->pps_info_lock);
+		return rc;
+	}
+
+	index += scnprintf(&(chip->pps_info_trigger->crux_info[index]),
+			   OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s", data.strval);
+	index += scnprintf(&(chip->pps_info_trigger->crux_info[index]),
+			   OPLUS_CHG_TRIGGER_MSG_LEN - index,
+                           "$$cpa_power@@%d", chip->pps_info.cpa_power);
+	index += scnprintf(&(chip->pps_info_trigger->crux_info[index]),
+			   OPLUS_CHG_TRIGGER_MSG_LEN - index,
+                           "$$adapter_power@@%d", chip->pps_info.adapter_power);
+
+	index += scnprintf(&(chip->pps_info_trigger->crux_info[index]),
+			   OPLUS_CHG_TRIGGER_MSG_LEN - index, "$$pps_adapter_info@@[");
+	oplus_chg_track_handle_pps_pdo_info(chip, chip->pps_info_trigger->crux_info,
+					    &index, OPLUS_CHG_TRIGGER_MSG_LEN);
+	index += scnprintf(&(chip->pps_info_trigger->crux_info[index]),
+			   OPLUS_CHG_TRIGGER_MSG_LEN - index, "]");
+
+	temp_index = chip->pps_info.adapter_power_max_index;
+	if (chip->pps_info.adapter_pdo != NULL)
+		pps_data = (pps_msg_data)chip->pps_info.adapter_pdo[temp_index];
+	if (!(chip->pps_info.adapter_pdo) && pps_data.pdo_type == USBPD_PDMSG_PDOTYPE_AUGMENTED) {
+		index += scnprintf(&(chip->pps_info_trigger->crux_info[index]),
+				 OPLUS_CHG_TRIGGER_MSG_LEN - index,
+                                 "$$pps_adapter_max@@(%uW %umV %umA)",
+				 PPS_PDO_VOL_MAX(pps_data.max_voltage100mv) / MILLIMETER *
+				 PPS_PDO_CURR_MAX(pps_data.max_current50ma) / MILLIMETER,
+				 PPS_PDO_VOL_MAX(pps_data.max_voltage100mv),
+				 PPS_PDO_CURR_MAX(pps_data.max_current50ma));
+	} else {
+		index += scnprintf(&(chip->pps_info_trigger->crux_info[index]),
+				   OPLUS_CHG_TRIGGER_MSG_LEN - index, "$$pps_adapter_max@@0");
+	}
+
+	oplus_chg_track_obtain_power_info(&(chip->pps_info_trigger->crux_info[index]),
+					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index);
+
+	schedule_delayed_work(&chip->pps_info_trigger_work, 0);
+	chg_info("success\n");
+	return 0;
+}
+
 static int oplus_chg_track_upload_deep_dischg_info(struct oplus_chg_track *chip , u32 id)
 {
 	int index = 0;
@@ -7960,7 +8275,7 @@ static int oplus_chg_track_upload_deep_dischg_info(struct oplus_chg_track *chip
 		mutex_unlock(&chip->deep_dischg_info_lock);
 		return rc;
 	}
-	index += snprintf(&(chip->deep_dischg_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
+	index += scnprintf(&(chip->deep_dischg_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
 			  data.strval);
 
 	schedule_delayed_work(&chip->deep_dischg_info_trigger_work, 0);
@@ -7999,7 +8314,7 @@ static int oplus_chg_track_upload_plc_info(struct oplus_chg_track *chip)
 		mutex_unlock(&chip->plc_info_lock);
 		return rc;
 	}
-	index += snprintf(&(chip->plc_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
+	index += scnprintf(&(chip->plc_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
 			  data.strval);
 
 	schedule_delayed_work(&chip->plc_info_trigger_work, 0);
@@ -8057,7 +8372,7 @@ static int oplus_chg_track_upload_chg_into_liquid(struct oplus_chg_track *track)
 		chg_err("get msg data error, rc=%d\n", rc);
 		return rc;
 	}
-	snprintf(track->chg_into_liquid_load_trigger.crux_info,
+	scnprintf(track->chg_into_liquid_load_trigger.crux_info,
 		 OPLUS_CHG_TRACK_CURX_INFO_LEN, "%s", data.strval);
 
 	schedule_delayed_work(&track->chg_into_liquid_trigger_work, 0);
@@ -8097,7 +8412,7 @@ static int oplus_chg_track_upload_deep_dischg_profile(struct oplus_chg_track *ch
 		mutex_unlock(&chip->deep_dischg_info_lock);
 		return rc;
 	}
-	index += snprintf(&(chip->deep_dischg_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
+	index += scnprintf(&(chip->deep_dischg_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
 			  data.strval);
 
 	schedule_delayed_work(&chip->deep_dischg_info_trigger_work, 0);
@@ -8137,7 +8452,7 @@ static int oplus_chg_track_upload_bidirect_cp_info(struct oplus_chg_track *chip)
 		return rc;
 	}
 
-	index += snprintf(&(chip->bidirect_cp_info_trigger->crux_info[index]),
+	index += scnprintf(&(chip->bidirect_cp_info_trigger->crux_info[index]),
 			  OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
 			  data.strval);
 	oplus_chg_track_obtain_power_info(&(chip->bidirect_cp_info_trigger->crux_info[index]),
@@ -8180,7 +8495,7 @@ static int oplus_chg_track_upload_eis_timeout_info(struct oplus_chg_track *chip)
 		return rc;
 	}
 
-	index += snprintf(&(chip->eis_timeout_info_trigger->crux_info[index]),
+	index += scnprintf(&(chip->eis_timeout_info_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s", data.strval);
 
 	schedule_delayed_work(&chip->eis_timeout_info_trigger_work, 0);
@@ -8220,7 +8535,7 @@ static int oplus_chg_track_upload_bal_info(struct oplus_chg_track *chip)
 		return rc;
 	}
 
-	index += snprintf(&(chip->bal_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
+	index += scnprintf(&(chip->bal_info_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%s",
 			  data.strval);
 	oplus_chg_track_obtain_power_info(&(chip->bal_info_trigger->crux_info[index]),
 					  OPLUS_CHG_TRACK_CURX_INFO_LEN - index);
@@ -8377,22 +8692,22 @@ static void oplus_chg_track_hyper_speed_record(struct oplus_chg_track_status *tr
 	int index = 0;
 
 	if (track_status->hyper_en) {
-		index += snprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
+		index += scnprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
 				  "hyper_en=%d,", track_status->hyper_en);
 
-		index += snprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
+		index += scnprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
 				  "hyper_stop_cap=%d,", track_status->hyper_stop_soc);
 
-		index += snprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
+		index += scnprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
 				  "hyper_stop_temp=%d,", track_status->hyper_stop_temp);
 
-		index += snprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
+		index += scnprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
 				  "hyper_last_t=%d,", track_status->hyper_last_time);
 
-		index += snprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
+		index += scnprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
 				  "hyper_ave_speed=%d,", track_status->hyper_ave_speed);
 
-		index += snprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
+		index += scnprintf(&(track_status->hyper_info[index]), TRACK_HIDL_HYPER_INFO_LEN - index,
 				  "hyper_est_save_t=%d", track_status->hyper_est_save_time);
 	}
 }
@@ -8738,7 +9053,7 @@ static int oplus_chg_track_uisoc_soc_jump_check(struct oplus_monitor *monitor)
 			chg_info("The gap between loaded uisoc and soc is too large\n");
 			memset(g_track_chip->uisoc_load_trigger.crux_info, 0,
 			       sizeof(g_track_chip->uisoc_load_trigger.crux_info));
-			ret = snprintf(g_track_chip->uisoc_load_trigger.crux_info, OPLUS_CHG_TRACK_CURX_INFO_LEN,
+			ret = scnprintf(g_track_chip->uisoc_load_trigger.crux_info, OPLUS_CHG_TRACK_CURX_INFO_LEN,
 				       "$$curr_uisoc@@%d$$curr_soc@@%d$$load_uisoc_soc_gap@@%d"
 				       "$$pre_vbatt@@%d$$curr_vbatt@@%d"
 				       "$$pre_time_utc@@%d$$curr_time_utc@@%d"
@@ -8774,7 +9089,7 @@ static int oplus_chg_track_uisoc_soc_jump_check(struct oplus_monitor *monitor)
 		track_status->soc_jumped = true;
 		chg_info("The gap between curr_soc and pre_soc is too large\n");
 		memset(g_track_chip->soc_trigger.crux_info, 0, sizeof(g_track_chip->soc_trigger.crux_info));
-		ret = snprintf(g_track_chip->soc_trigger.crux_info, OPLUS_CHG_TRACK_CURX_INFO_LEN,
+		ret = scnprintf(g_track_chip->soc_trigger.crux_info, OPLUS_CHG_TRACK_CURX_INFO_LEN,
 			       "$$curr_soc@@%d$$pre_soc@@%d$$curr_soc_pre_soc_gap@@%d"
 			       "$$pre_vbatt@@%d$$curr_vbatt@@%d"
 			       "$$pre_time_utc@@%d$$curr_time_utc@@%d$$kernel_diff_t@@%d"
@@ -8798,7 +9113,7 @@ static int oplus_chg_track_uisoc_soc_jump_check(struct oplus_monitor *monitor)
 		track_status->uisoc_jumped = true;
 		chg_info("The gap between curr_uisoc and pre_uisoc is too large\n");
 		memset(g_track_chip->uisoc_trigger.crux_info, 0, sizeof(g_track_chip->uisoc_trigger.crux_info));
-		ret = snprintf(g_track_chip->uisoc_trigger.crux_info, OPLUS_CHG_TRACK_CURX_INFO_LEN,
+		ret = scnprintf(g_track_chip->uisoc_trigger.crux_info, OPLUS_CHG_TRACK_CURX_INFO_LEN,
 			       "$$curr_uisoc@@%d$$pre_uisoc@@%d$$curr_uisoc_pre_uisoc_gap@@%d"
 			       "$$pre_vbatt@@%d$$curr_vbatt@@%d"
 			       "$$pre_time_utc@@%d$$curr_time_utc@@%d$$kernel_diff_t@@%d"
@@ -8823,7 +9138,7 @@ static int oplus_chg_track_uisoc_soc_jump_check(struct oplus_monitor *monitor)
 		chg_info("The gap between curr_uisoc and curr_soc is too large\n");
 		memset(g_track_chip->uisoc_to_soc_trigger.crux_info, 0,
 		       sizeof(g_track_chip->uisoc_to_soc_trigger.crux_info));
-		ret = snprintf(g_track_chip->uisoc_to_soc_trigger.crux_info, OPLUS_CHG_TRACK_CURX_INFO_LEN,
+		ret = scnprintf(g_track_chip->uisoc_to_soc_trigger.crux_info, OPLUS_CHG_TRACK_CURX_INFO_LEN,
 			       "$$curr_uisoc@@%d$$curr_soc@@%d$$curr_uisoc_curr_soc_gap@@%d"
 			       "$$pre_vbatt@@%d$$curr_vbatt@@%d"
 			       "$$pre_time_utc@@%d$$curr_time_utc@@%d$$kernel_diff_t@@%d"
@@ -8899,9 +9214,9 @@ static int oplus_chg_track_pack_gauge_info(struct kfifo *kfifo, u8 *crux_info, i
 			return -EINVAL;
 		}
 		chg_debug("len:%zu, reg_info:%s\n", strlen(gauge_data), gauge_data);
-		index += snprintf(crux_info + index, len - index,"%s", gauge_data);
+		index += scnprintf(crux_info + index, len - index,"%s", gauge_data);
 		if (!kfifo_is_empty(kfifo))
-			index += snprintf(crux_info + index, len - index, "||");
+			index += scnprintf(crux_info + index, len - index, "||");
 	}
 
 	kfree(gauge_data);
@@ -8959,25 +9274,25 @@ static int oplus_chg_track_gauge_info_record(
 	p_gauge_info->upload_count++;
 	p_gauge_info->pre_upload_time = curr_time;
 
-	index += snprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$device_id@@%s", p_gauge_info->device_name);
 	if (err_type != TRACK_GAGUE_SOC_1_PCT_INFO)
-		index += snprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$err_scene@@%s", OPLUS_CHG_TRACK_SCENE_GAGUE_DEFAULT);
 	else
-		index += snprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$err_scene@@%s", OPLUS_CHG_TRACK_SCENE_GAGUE_SOC_1_PCT);
 
 	oplus_chg_track_get_gague_err_reason(err_type, err_reason, sizeof(err_reason));
-	index += snprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$err_reason@@%s", err_reason);
 
 	if (err_type == TRACK_GAGUE_GENERAL_INFO)
-		index += snprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+		index += scnprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$calib_t@@%s", data.strval);
-	index += snprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			  "$$delta_time@@%d", delta_time);
-	index += snprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
+	index += scnprintf(&(p_gauge_info->load_trigger->crux_info[index]), OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 			"$$reg_info@@");
 	rc = oplus_chg_track_pack_gauge_info(&p_gauge_info->fifo, &(p_gauge_info->load_trigger->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index);
@@ -9132,7 +9447,7 @@ static int oplus_chg_track_gauge_fifo_push(struct kfifo *kfifo, struct oplus_mms
 	memset(gauge_data, 0, GAUGE_INFO_TRACK_FIFO_ONE_SIZE);
 	ret = oplus_mms_get_item_data(gauge_topic, GAUGE_ITEM_REG_INFO, &data, true);
 	if (ret == 0 && data.strval && strlen(data.strval)) {
-		ret += snprintf(&gauge_data[ret], GAUGE_INFO_TRACK_FIFO_ONE_SIZE - ret,
+		ret += scnprintf(&gauge_data[ret], GAUGE_INFO_TRACK_FIFO_ONE_SIZE - ret,
 			"time[%04d-%02d-%02d %02d:%02d:%02d]-%s",
 			tm.tm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, data.strval);
 	} else {
@@ -9387,17 +9702,17 @@ static int oplus_chg_track_gauge_sili_alg_application_info_record(
 	p_gauge_info->sili_alg_application_load_trigger->type_reason = TRACK_NOTIFY_TYPE_GENERAL_RECORD;
 	p_gauge_info->sili_alg_application_load_trigger->flag_reason = TRACK_NOTIFY_FLAG_GAUGE_INFO;
 
-	index += snprintf(&(p_gauge_info->sili_alg_application_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_application_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$device_id@@%s", p_gauge_info->device_name);
-	index += snprintf(&(p_gauge_info->sili_alg_application_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_application_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$err_scene@@application");
-	index += snprintf(&(p_gauge_info->sili_alg_application_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_application_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$sys_term_volt@@%d,%d",
 		pre_sys_term_volt, p_gauge_info->params.sili_application_sys_term_volt);
-	index += snprintf(&(p_gauge_info->sili_alg_application_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_application_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$cc@@%d, %d",
 		p_gauge_info->params.pre_cc, p_gauge_info->params.cc);
-	index += snprintf(&(p_gauge_info->sili_alg_application_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_application_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$reg_info@@");
 
 	oplus_gauge_get_sili_alg_application_info(p_gauge_info->params.gauge_topic,
@@ -9656,41 +9971,41 @@ static int oplus_chg_track_gauge_sili_alg_monitor_record(
 	}
 	upload_count++;
 	pre_upload_time = curr_time;
-	index += snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$device_id@@%s", p_gauge_info->device_name);
 	if (err_type != TRACK_GAGUE_TERM_VOLT_OK)
 		index +=
-			snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+			scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 				OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$err_scene@@%s",
 				OPLUS_CHG_TRACK_SCENE_GAGUE_DEFAULT);
 	else
 		index +=
-			snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+			scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 				OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				 "$$err_scene@@%s", OPLUS_CHG_TRACK_SCENE_GAGUE_TERM_VOLT_OK);
 
 	oplus_chg_track_get_gague_err_reason(err_type, err_reason, sizeof(err_reason));
-	index += snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$err_reason@@%s", err_reason);
-	index += snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$batt_temp@@%d", p_gauge_info->params.batt_temp);
-	index += snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$cc_term_volt_ref@@%d,%d",
 		p_gauge_info->params.cc, term_volt_ref);
-	index += snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$sys_term_volt@@%d,%d",
 		p_gauge_info->params.pre_sili_monitor_sys_term_volt, p_gauge_info->params.sili_monitor_sys_term_volt);
-	index += snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$term_vol_maximum@@");
 	p_temp = (char *)p_gauge_info->params.sys_term_vol_maximum;
 	for (i = 0; i < sizeof(p_gauge_info->params.sys_term_vol_maximum); i += sizeof(int))
-		index += snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+		index += scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%d,", *(int *)(p_temp + i));
-	index += snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "||");
 	p_temp = (char *)p_gauge_info->params.pre_sys_term_vol_maximum;
 	for (i = 0; i < sizeof(p_gauge_info->params.pre_sys_term_vol_maximum); i += sizeof(int))
-		index += snprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
+		index += scnprintf(&(p_gauge_info->sili_alg_monitor_load_trigger->crux_info[index]),
 			OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "%d,", *(int *)(p_temp + i));
 
 	schedule_delayed_work(&p_gauge_info->sili_alg_monitor_load_trigger_work, 0);
@@ -9813,23 +10128,23 @@ static int oplus_chg_track_gauge_sili_alg_lifetime_record(
 	}
 	upload_count++;
 	pre_upload_time = curr_time;
-	index += snprintf(&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$device_id@@%s", p_gauge_info->device_name);
 	if (err_type != TRACK_GAGUE_LIFETIME_INFO)
 		index +=
-			snprintf(&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
+			scnprintf(&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
 				OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				 "$$err_scene@@%s", OPLUS_CHG_TRACK_SCENE_GAGUE_DEFAULT);
 	else
 		index +=
-			snprintf(&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
+			scnprintf(&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
 				OPLUS_CHG_TRACK_CURX_INFO_LEN - index,
 				 "$$err_scene@@%s", OPLUS_CHG_TRACK_SCENE_GAGUE_LIFETIME_INFO);
 
 	oplus_chg_track_get_gague_err_reason(err_type, err_reason, sizeof(err_reason));
-	index += snprintf(&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$err_reason@@%s", err_reason);
-	index += snprintf(&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
+	index += scnprintf(&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
 		OPLUS_CHG_TRACK_CURX_INFO_LEN - index, "$$reg_info@@");
 	oplus_gauge_get_sili_alg_lifetime_info(p_gauge_info->params.gauge_topic,
 		&(p_gauge_info->sili_alg_lifetime_load_trigger->crux_info[index]),
@@ -9933,9 +10248,9 @@ static int oplus_chg_track_gauge_status_check(struct oplus_monitor *monitor)
 			track_chip->gauge_info.params.pre_soh = track_chip->gauge_info.params.soh;
 			rc = oplus_gauge_get_physical_name(monitor->gauge_topic, name, TRACK_GAUGE_NAME_LEN);
 			if (rc == 0)
-				snprintf(track_chip->gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s", name);
+				scnprintf(track_chip->gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s", name);
 			else
-				snprintf(track_chip->gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s", "main_gauge");
+				scnprintf(track_chip->gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s", "main_gauge");
 			enter = true;
 		}
 		oplus_chg_track_get_gauge_status(track_chip, &track_chip->gauge_info, &track_chip->gauge_info.params);
@@ -9999,11 +10314,11 @@ static int oplus_chg_track_gauge_status_check(struct oplus_monitor *monitor)
 			track_chip->sub_gauge_info.params.pre_soh = track_chip->sub_gauge_info.params.soh;
 			rc = oplus_gauge_get_physical_name(monitor->gauge_topic, name, TRACK_GAUGE_NAME_LEN);
 			if (rc == 0) {
-				snprintf(track_chip->gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s_0", name);
-				snprintf(track_chip->sub_gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s_1", name);
+				scnprintf(track_chip->gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s_0", name);
+				scnprintf(track_chip->sub_gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s_1", name);
 			} else {
-				snprintf(track_chip->gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s", "main_gauge");
-				snprintf(track_chip->sub_gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s", "sub_gauge");
+				scnprintf(track_chip->gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s", "main_gauge");
+				scnprintf(track_chip->sub_gauge_info.device_name, TRACK_GAUGE_NAME_LEN, "%s", "sub_gauge");
 			}
 			enter = true;
 		}
@@ -10098,6 +10413,9 @@ static void oplus_chg_track_err_subs_callback(struct mms_subscribe *subs,
 		case ERR_ITEM_UFCS:
 			oplus_chg_track_upload_ufcs_info(track);
 			break;
+		case ERR_ITEM_PPS:
+			oplus_chg_track_upload_pps_info(track);
+			break;
 		case ERR_ITEM_DEEP_DISCHG_INFO:
 		case ERR_ITEM_SUB_DEEP_DISCHG_INFO:
 			oplus_chg_track_upload_deep_dischg_info(track, id);
@@ -10135,6 +10453,65 @@ static void oplus_chg_track_err_subs_callback(struct mms_subscribe *subs,
 	}
 }
 
+static void oplus_chg_track_pps_subs_callback(struct mms_subscribe *subs,
+					      enum mms_msg_type type, u32 id, bool sync)
+{
+	struct oplus_chg_track *track = subs->priv_data;
+	pps_msg_data pps_data = {0};
+	int i, temp_i;
+
+	if (track->pps_info.adapter_pdo == NULL)
+		track->pps_info.adapter_pdo =
+			(u32 *)devm_kzalloc(track->monitor->dev,
+					    sizeof(u32 *) * PPS_PDO_MAX, GFP_KERNEL);
+	if (track->pps_info.adapter_pdo == NULL) {
+		chg_err("devm_kzalloc is failed!!!");
+		return;
+	}
+
+	switch (type) {
+	case MSG_TYPE_ITEM:
+		chg_info("pps msg id:%d\n", id);
+		switch(id) {
+		case PPS_ITEM_CPA_POWER:
+			track->pps_info.cpa_power =
+				oplus_pps_get_charging_power_watt(track->monitor->pps_topic);
+			break;
+		case PPS_ITEM_ADAPTER_POWER:
+			track->pps_info.adapter_power =
+				oplus_pps_get_adapter_power_mw(track->monitor->pps_topic);
+			break;
+		case PPS_ITEM_PPS_ADAPTER_INFO:
+			if (track->pps_info.adapter_pdo == NULL)
+				break;
+
+			oplus_chg_get_pdo_info(track->monitor->pps_topic, track->pps_info.adapter_pdo);
+			for (i = 0; i < PPS_PDO_MAX; i++)
+			{
+				temp_i = track->pps_info.adapter_power_max_index;
+				pps_data = (pps_msg_data)track->pps_info.adapter_pdo[i];
+				if (pps_data.pdo_type == USBPD_PDMSG_PDOTYPE_AUGMENTED) {
+					if (pps_data.pdo_type == USBPD_PDMSG_PDOTYPE_AUGMENTED &&
+					    ((PPS_PDO_VOL_MAX(pps_data.max_voltage100mv) *
+					      PPS_PDO_CURR_MAX(pps_data.max_current50ma)) >
+					    ((PPS_PDO_VOL_MAX(pps_data.max_voltage100mv) *
+                                              PPS_PDO_CURR_MAX(pps_data.max_current50ma))))) {
+						track->pps_info.adapter_power_max_index = i;
+					} else {
+						track->pps_info.adapter_power_max_index = i;
+					}
+				}
+			}
+			break;
+		default:
+			break;
+		}
+		break;
+	default:
+		break;
+	}
+}
+
 static int oplus_chg_track_subscribe_err_topic(struct oplus_chg_track *track)
 {
 	track->err_subs =
@@ -10149,6 +10526,21 @@ static int oplus_chg_track_subscribe_err_topic(struct oplus_chg_track *track)
 	return 0;
 }
 
+static void oplus_chg_track_subscribe_pps_topic(struct oplus_mms *topic, void *prv_data)
+{
+	struct oplus_chg_track *track = prv_data;
+
+	track->monitor->pps_topic = topic;
+	track->pps_subs =
+		oplus_mms_subscribe(track->monitor->pps_topic, track,
+				    oplus_chg_track_pps_subs_callback, "track");
+	if (IS_ERR_OR_NULL(track->pps_subs)) {
+		chg_err("subscribe pps topic error, rc=%ld\n",
+			PTR_ERR(track->pps_subs));
+	}
+	return;
+}
+
 static int oplus_chg_track_debugfs_init(struct oplus_chg_track *track_dev)
 {
 	int ret = 0;
@@ -10306,6 +10698,7 @@ int oplus_chg_track_driver_init(struct oplus_monitor *monitor)
 	}
 
 	rc = oplus_chg_track_subscribe_err_topic(track_dev);
+	oplus_mms_wait_topic("pps", oplus_chg_track_subscribe_pps_topic, track_dev);
 	oplus_chg_track_bcc_err_init(track_dev);
 	oplus_chg_track_uisoh_err_init(track_dev);
 	oplus_chg_track_chg_up_err_init(track_dev);
@@ -10367,6 +10760,9 @@ int oplus_chg_track_driver_exit(struct oplus_monitor *monitor)
 	if (!IS_ERR_OR_NULL(track_dev->err_subs))
 		oplus_mms_unsubscribe(track_dev->err_subs);
 
+	if (!IS_ERR_OR_NULL(track_dev->pps_subs))
+		oplus_mms_unsubscribe(track_dev->pps_subs);
+
 	if (track_debugfs_root)
 		debugfs_remove_recursive(track_debugfs_root);
 #if defined(CONFIG_OPLUS_FEATURE_FEEDBACK) || \
@@ -10375,6 +10771,7 @@ int oplus_chg_track_driver_exit(struct oplus_monitor *monitor)
 	kfree(track_dev->dcs_info);
 #endif
 	kfree(track_dev->track_status.bcc_info);
+	devm_kfree(monitor->dev, track_dev->pps_info.adapter_pdo);
 	devm_kfree(monitor->dev, track_dev);
 	return 0;
 }
diff --git a/vendor/oplus/kernel/charger/v2/monitor/oplus_monitor_core.c b/vendor/oplus/kernel/charger/v2/monitor/oplus_monitor_core.c
old mode 100755
new mode 100644
index be52e7e1..c257f7a7
--- a/vendor/oplus/kernel/charger/v2/monitor/oplus_monitor_core.c
+++ b/vendor/oplus/kernel/charger/v2/monitor/oplus_monitor_core.c
@@ -376,14 +376,15 @@ static int comm_info_dump_log_data(char *buffer, int size, void *dev_data)
 
 	snprintf(buffer, size, ",%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,"
 		"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,"
-		"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
+		"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,"
+		"%d,%d,%d,%d",
 		chip->batt_temp, chip->shell_temp, chip->vbat_mv, chip->vbat_min_mv, chip->ibat_ma,
 		chip->batt_soc, chip->ui_soc, chip->wired_online, chip->wired_charge_type, chip->notify_code,
 		chip->wired_ibus_ma, chip->wired_vbus_mv, chip->smooth_soc, chip->led_on, chip->fv_mv,
 		chip->fcc_ma, chip->wired_icl_ma, chip->otg_switch_status, chip->cool_down, chip->bcc_current,
 		chip->normal_cool_down, chip->chg_cycle_status, chip->mmi_chg, chip->usb_status, chip->cc_detect,
 		chip->batt_full, chip->rechging, chip->pd_svooc, chip->batt_status, chip->batt_qmax,
-		chip->batt_soh, chip->gauge_car_c);
+		chip->batt_soh, chip->gauge_car_c, chip->batt_rm, chip->batt_fcc);
 
 	return 0;
 }
@@ -401,7 +402,7 @@ static int comm_info_get_log_head(char *buffer, int size, void *dev_data)
 		"wired_ibus_ma,wired_vbus_mv,smooth_soc,led_on,fv_mv,"
 		"fcc_ma,wired_icl_ma,otg_switch,cool_down,bcc_current,normal_cool_down,chg_cycle,"
 		"mmi_chg,usb_status,cc_detect,batt_full,rechging,pd_svooc,prop_status,batt_qmax,"
-		"batt_soh,gauge_car_c");
+		"batt_soh,gauge_car_c,batt_rm,batt_fcc");
 
 	return 0;
 }
@@ -693,12 +694,36 @@ static void oplus_monitor_ufcs_subs_callback(struct mms_subscribe *subs,
 			if (rc < 0)
 				break;
 			chip->ufcs_adapter_id = (u32)data.intval;
+			if (chip->ufcs_adapter_id > 0)
+				chip->pre_ufcs_adapter_id = chip->ufcs_adapter_id;
 			break;
 		case UFCS_ITEM_OPLUS_ADAPTER:
 			rc = oplus_mms_get_item_data(chip->ufcs_topic, id, &data, false);
 			if (rc < 0)
 				break;
 			chip->ufcs_oplus_adapter = !!data.intval;
+			if (chip->ufcs_oplus_adapter > 0)
+				chip->pre_ufcs_oplus_adapter = chip->ufcs_oplus_adapter;
+			break;
+		case UFCS_ITEM_EMARK_POWER:
+			rc = oplus_mms_get_item_data(chip->ufcs_topic, id, &data, false);
+			if (rc < 0)
+				break;
+			chip->ufcs_emark_power = data.intval;
+			if (chip->ufcs_emark_power > 0) {
+				chip->pre_ufcs_emark_power = chip->ufcs_emark_power;
+				oplus_chg_track_handle_wired_type_info(chip, TRACK_CHG_GET_THTS_TIME_TYPE);
+			}
+			break;
+		case UFCS_ITEM_ADAPTER_POWER:
+			rc = oplus_mms_get_item_data(chip->ufcs_topic, id, &data, false);
+			if (rc < 0)
+				break;
+			chip->ufcs_adapter_power = data.intval;
+			if (chip->ufcs_adapter_power > 0) {
+				chip->pre_ufcs_adapter_power = chip->ufcs_adapter_power;
+				oplus_chg_track_handle_wired_type_info(chip, TRACK_CHG_GET_THTS_TIME_TYPE);
+			}
 			break;
 		default:
 			break;
@@ -730,15 +755,38 @@ static void oplus_monitor_subscribe_ufcs_topic(struct oplus_mms *topic,
 	rc = oplus_mms_get_item_data(chip->ufcs_topic, UFCS_ITEM_ONLINE, &data, true);
 	if (rc >= 0)
 		chip->ufcs_online = !!data.intval;
+
 	rc = oplus_mms_get_item_data(chip->ufcs_topic, UFCS_ITEM_CHARGING, &data, true);
 	if (rc >= 0)
 		chip->ufcs_charging = !!data.intval;
+
 	rc = oplus_mms_get_item_data(chip->ufcs_topic, UFCS_ITEM_ADAPTER_ID, &data, true);
-	if (rc >= 0)
+	if (rc >= 0) {
 		chip->ufcs_adapter_id = (u32)data.intval;
+		chip->pre_ufcs_adapter_id = chip->ufcs_adapter_id;
+	}
+
 	rc = oplus_mms_get_item_data(chip->ufcs_topic, UFCS_ITEM_OPLUS_ADAPTER, &data, true);
-	if (rc >= 0)
+	if (rc >= 0) {
 		chip->ufcs_oplus_adapter = !!data.intval;
+		chip->pre_ufcs_oplus_adapter = chip->ufcs_oplus_adapter;
+	}
+
+	rc = oplus_mms_get_item_data(chip->ufcs_topic, UFCS_ITEM_EMARK_POWER, &data, true);
+	if (rc >= 0) {
+		chip->ufcs_emark_power = data.intval;
+		chip->pre_ufcs_emark_power = chip->ufcs_emark_power;
+	}
+
+	rc = oplus_mms_get_item_data(chip->ufcs_topic, UFCS_ITEM_ADAPTER_POWER, &data, true);
+	if (rc >= 0) {
+		chip->ufcs_adapter_power = data.intval;
+		chip->pre_ufcs_adapter_power = chip->ufcs_adapter_power;
+	}
+
+	if (chip->ufcs_emark_power > 0 || chip->ufcs_adapter_power > 0)
+		oplus_chg_track_handle_wired_type_info(chip, TRACK_CHG_GET_THTS_TIME_TYPE);
+
 }
 
 static void oplus_monitor_plc_subs_callback(struct mms_subscribe *subs,
@@ -1997,6 +2045,16 @@ static struct mms_item oplus_monitor_item[] = {
 			.update = NULL,
 		}
 	},
+	{
+		.desc = {
+			.item_id = ERR_ITEM_PPS,
+			.str_data = true,
+			.up_thr_enable = false,
+			.down_thr_enable = false,
+			.dead_thr_enable = false,
+			.update = NULL,
+		}
+	},
 };
 
 static const struct oplus_mms_desc oplus_monitor_desc = {
diff --git a/vendor/oplus/kernel/charger/v2/monitor/oplus_monitor_internal.h b/vendor/oplus/kernel/charger/v2/monitor/oplus_monitor_internal.h
old mode 100755
new mode 100644
index 41b2181b..b51f488a
--- a/vendor/oplus/kernel/charger/v2/monitor/oplus_monitor_internal.h
+++ b/vendor/oplus/kernel/charger/v2/monitor/oplus_monitor_internal.h
@@ -113,6 +113,7 @@ struct oplus_monitor {
 	struct mms_subscribe *retention_subs;
 	struct oplus_mms *plc_topic;
 	struct mms_subscribe *plc_subs;
+	struct oplus_mms *pps_topic;
 
 	struct oplus_chg_track *track;
 
@@ -257,6 +258,13 @@ struct oplus_monitor {
 	bool ufcs_charging;
 	u32 ufcs_adapter_id;
 	bool ufcs_oplus_adapter;
+	int ufcs_emark_power;
+	int ufcs_adapter_power;
+
+	u32 pre_ufcs_adapter_id;
+	bool pre_ufcs_oplus_adapter;
+	int pre_ufcs_emark_power;
+	int pre_ufcs_adapter_power;
 
 	/* plc */
 	int plc_status;
diff --git a/vendor/oplus/kernel/charger/v2/oplus_chg_comm.c b/vendor/oplus/kernel/charger/v2/oplus_chg_comm.c
index 189948a5..bee8948f 100644
--- a/vendor/oplus/kernel/charger/v2/oplus_chg_comm.c
+++ b/vendor/oplus/kernel/charger/v2/oplus_chg_comm.c
@@ -480,7 +480,7 @@ struct oplus_chg_comm {
 
 	unsigned int nvid_support_flags;
 	int plc_status;
-
+	bool use_pm_power_off_with_hightemp;
 	bool dec_cv_down_init;
 	struct mutex dec_data_lock;
 	struct dec_cv_down_load dec_cv_down_info;
@@ -491,6 +491,15 @@ struct oplus_chg_comm {
 	struct work_struct set_reserve_dec_cv_down_info_work;
 };
 
+typedef struct {
+	int charge_limit_enable;
+	int charge_limit_value;
+	int is_force_set_charge_limit;
+	int charge_limit_recharge_value;
+	int callname;
+}chg_up_limit_info;
+static chg_up_limit_info chg_up_limit_data;
+
 static struct oplus_comm_spec_config default_spec = {
 	.fcc_gear_shake_mv = {
 		100, 100, 100, 100, 100, 100, 100, 100, 100
@@ -3289,6 +3298,17 @@ static bool oplus_comm_is_under_uv(struct oplus_chg_comm *chip)
 		return false;
 }
 
+#define CHG_UP_LIMIT_FAIL_THRESHOLD	3
+#define CHG_UP_LIMIT_REAL_SOC_THRESHOLD	99
+static bool get_chg_up_not_limit_state(int ui_soc, int smooth_soc)
+{
+	if (chg_up_limit_data.charge_limit_enable == 1 && ui_soc >= chg_up_limit_data.charge_limit_value &&
+	    smooth_soc <= (ui_soc + CHG_UP_LIMIT_FAIL_THRESHOLD) && smooth_soc <= CHG_UP_LIMIT_REAL_SOC_THRESHOLD)
+		return false;
+	else
+		return true;
+}
+
 #define CHARGE_FORCE_DEC_INTERVAL	60
 #define NON_CHARGE_FORCE_DEC_INTERVAL	20
 #define VBAT_MIN			2500
@@ -3472,7 +3492,7 @@ static void oplus_comm_ui_soc_update(struct oplus_chg_comm *chip)
 
 	/* Here ui_soc is only allowed to drop to 1% as low as possible */
 	mmi_chg = oplus_comm_get_mmi_state(chip);
-	if (charging && mmi_chg) {
+	if (charging && mmi_chg && get_chg_up_not_limit_state(ui_soc, smooth_soc)) {
 		if (ui_soc < smooth_soc &&
 		    time_is_before_jiffies(soc_up_jiffies)) {
 			ui_soc = (ui_soc < 100) ? (ui_soc + 1) : 100;
@@ -3750,7 +3770,8 @@ void oplus_comm_ui_soc_decimal_deinit(struct oplus_chg_comm *chip)
 	ui_soc = (soc_decimal->ui_soc_integer + soc_decimal->ui_soc_decimal) / 1000;
 	mutex_unlock(&chip->decimal_lock);
 	if (ui_soc != 0) {
-		if (soc_decimal->ui_soc_decimal != 0 && ui_soc < chip->smooth_soc)
+		if (soc_decimal->ui_soc_decimal != 0 && ui_soc < chip->smooth_soc &&
+		    get_chg_up_not_limit_state(ui_soc, chip->smooth_soc))
 			ui_soc = (ui_soc < 100) ? (ui_soc + 1) : 100;
 		oplus_comm_set_ui_soc(chip, ui_soc);
 	}
@@ -3800,7 +3821,7 @@ static void oplus_comm_show_ui_soc_decimal(struct work_struct *work)
 
 	/*calculate the speed*/
 	mmi_chg = oplus_comm_get_mmi_state(chip);
-	if (icharging > 0 && mmi_chg) {
+	if (icharging > 0 && mmi_chg && get_chg_up_not_limit_state(chip->ui_soc, chip->smooth_soc)) {
 		if (!oplus_comm_calculate_eis_soc_speed(chip, &speed))
 			speed = 100000 * icharging * UPDATE_TIME * batt_num / (chip->batt_fcc * 3600);
 
@@ -3820,6 +3841,11 @@ static void oplus_comm_show_ui_soc_decimal(struct work_struct *work)
 	if (speed > 500)
 		speed = 500;
 
+	if (get_chg_up_not_limit_state(chip->ui_soc, chip->smooth_soc) == false) {
+		speed = 0;
+		soc_decimal->ui_soc_decimal = 0;
+	}
+
 	mutex_lock(&chip->decimal_lock);
 	soc_decimal->ui_soc_decimal += speed;
 	chg_info("ui_soc_decimal: (ui_soc_decimal+ui_soc)=%d, speed=%ld, soc=%d, calculate_decimal_time:%d\n",
@@ -3861,15 +3887,6 @@ is_chg_suspend_votable_available(struct oplus_chg_comm *chip)
 	return !!chip->chg_suspend_votable;
 }
 
-typedef struct {
-    int charge_limit_enable;
-    int charge_limit_value;
-    int is_force_set_charge_limit;
-    int charge_limit_recharge_value;
-    int callname;
-}chg_up_limit_info;
-static chg_up_limit_info chg_up_limit_data;
-
 int oplus_set_chg_up_limit(struct oplus_mms *topic, int charge_limit_enable, int charge_limit_value,
 	int is_force_set_charge_limit, int charge_limit_recharge_value, int callname)
 {
@@ -3891,12 +3908,65 @@ int oplus_set_chg_up_limit(struct oplus_mms *topic, int charge_limit_enable, int
 	return 1;
 }
 
+#define DEFAULT_OVER_CHARGE_DOD 550
+static bool chg_up_limit_decimal_enable(struct oplus_chg_comm *chip)
+{
+	union mms_msg_data data = { 0 };
+	int ui_soc_decimal;
+	int batt_rm;
+	int batt_fcc;
+
+	if (chip == NULL || chip->gauge_topic == NULL) {
+		chg_err("chg_up chip->gauge_topic == NULL\n");
+		return true;
+	}
+
+	oplus_mms_get_item_data(chip->gauge_topic, GAUGE_ITEM_RM, &data, false);
+	batt_rm = data.intval;
+	if (batt_rm < 0) {
+		chg_err("batt_rm is < 0\n");
+		goto out;
+	}
+	oplus_mms_get_item_data(chip->gauge_topic, GAUGE_ITEM_FCC, &data, false);
+	batt_fcc = data.intval;
+	if (batt_fcc == 0) {
+		chg_err("batt_fcc is 0\n");
+		goto out;
+	}
+	ui_soc_decimal =
+		batt_rm * 100000 / batt_fcc;
+	if (ui_soc_decimal >
+	    (chg_up_limit_data.charge_limit_value - 1) * 1000 + DEFAULT_OVER_CHARGE_DOD ||
+	    chip->smooth_soc > chg_up_limit_data.charge_limit_value) {
+		chg_info("chg_up get_ui_soc_decimal %d %d %d %d %d\n",
+		    ui_soc_decimal, batt_rm, batt_fcc, chip->smooth_soc,
+		    chg_up_limit_data.charge_limit_value);
+		return true;
+	}
+	return false;
+
+out:
+	if (chip->smooth_soc > chg_up_limit_data.charge_limit_value) {
+		chg_info("chg_up get_ui_soc_decimal %d %d\n",
+		    chip->smooth_soc, chg_up_limit_data.charge_limit_value);
+		return true;
+	}
+	return false;
+}
+
 static int oplus_enforce_chg_up_limit_result(struct oplus_chg_comm *chip, bool cut_off_charge)
 {
 	int val = cut_off_charge;
 	int rc = 0;
 	static int pre_val = 0;
 	static int pre_is_force_set_flag = 0;
+	bool decimal_status;
+
+	if (chip == NULL) {
+		chg_err("chip == NULL\n");
+		return rc;
+	}
+
 	chg_debug("oplus_set_chg_up_limit %d\n", val);
 	if ((pre_val == val) && (pre_is_force_set_flag == chg_up_limit_data.is_force_set_charge_limit)) {
 		if ((val == true && (get_client_vote(chip->chg_disable_votable, CHG_LIMIT_CHG_VOTER) > 0 ||
@@ -3909,6 +3979,26 @@ static int oplus_enforce_chg_up_limit_result(struct oplus_chg_comm *chip, bool c
 		}
 	}
 
+	/* When the charging upper limit suspend is enabled before,
+	and ui_soc drops to the charging upper limit value, change it to disable charge. */
+	if (cut_off_charge == true &&
+	    chip->ui_soc == chg_up_limit_data.charge_limit_value &&
+		chg_up_limit_data.is_force_set_charge_limit == 1 &&
+		get_client_vote(chip->chg_suspend_votable, CHG_LIMIT_CHG_VOTER) > 0) {
+		rc = vote(chip->chg_suspend_votable, CHG_LIMIT_CHG_VOTER, false, 0, false);
+		if (is_chg_disable_votable_available(chip))
+			rc = vote(chip->chg_disable_votable, CHG_LIMIT_CHG_VOTER,
+				  true, val, false);
+		else
+			rc = -ENOTSUPP;
+	}
+
+	if (chip->ui_soc == chg_up_limit_data.charge_limit_value && cut_off_charge == true) {
+		decimal_status = chg_up_limit_decimal_enable(chip);
+		if (decimal_status == false)
+			return rc;
+	}
+
 	if (chg_up_limit_data.is_force_set_charge_limit == 0 || chip->ui_soc == chg_up_limit_data.charge_limit_value) {
 		rc = vote(chip->chg_suspend_votable, CHG_LIMIT_CHG_VOTER, false, 0, false);
 		if (is_chg_disable_votable_available(chip))
@@ -3985,7 +4075,8 @@ static void monitor_ui_soc_to_enable_chg_up_limit(struct oplus_chg_comm *chip, b
 		chg_up_limit_data.charge_limit_recharge_value, over_count);
 
 	if (chg_up_limit_data.charge_limit_enable == 1) {
-		if (chip->ui_soc >= chg_up_limit_data.charge_limit_value) {
+		if (chip->ui_soc >= chg_up_limit_data.charge_limit_value &&
+			chg_up_limit_data.charge_limit_value < OPLUS_FULL_SOC) {
 			over_count++;
 			if (over_count >= CHG_UP_DELAY_COUNT || chip->vooc_charging || chip->ufcs_charging ||
 			    chip->pps_charging || is_wls_fastchg_started(chip)) {
@@ -3993,7 +4084,8 @@ static void monitor_ui_soc_to_enable_chg_up_limit(struct oplus_chg_comm *chip, b
 				oplus_enforce_chg_up_limit_result(chip, true);
 			}
 			return;
-		} else if (chip->ui_soc >= chg_up_limit_data.charge_limit_recharge_value) {
+		} else if (chip->ui_soc >= chg_up_limit_data.charge_limit_recharge_value &&
+		    chg_up_limit_data.charge_limit_recharge_value < OPLUS_FULL_SOC) {
 			over_count = 0;
 			return;
 		} else {
@@ -8220,8 +8312,10 @@ static int oplus_comm_parse_dt(struct oplus_chg_comm *comm_dev)
 		config->chg_shutdown_max_mv = -EINVAL;
 	config->dual_panel_support = of_property_read_bool(node, "oplus,dual_panel_support");
 	config->not_pop_up = of_property_read_bool(node, "oplus,not_pop_up");
-	chg_err("not_pop_up = %d\n", config->not_pop_up);
+	chg_info("not_pop_up = %d\n", config->not_pop_up);
 
+	comm_dev->use_pm_power_off_with_hightemp = of_property_read_bool(node, "oplus,pm_power_off_with_hightemp");
+	chg_info("comm_dev->use_pm_power_off_with_hightemp = %d\n", comm_dev->use_pm_power_off_with_hightemp);
 	oplus_comm_parse_dec_vol_dt(comm_dev);
 
 	oplus_comm_parse_smooth_soc_dt(comm_dev);
@@ -8461,6 +8555,11 @@ static ssize_t proc_ui_soc_decimal_read(struct file *file,
 		val = 0;
 	}
 
+	if (get_chg_up_not_limit_state(chip->ui_soc, chip->smooth_soc) == false) {
+		soc_decimal->init_decimal_ui_soc = 0;
+		val = 0;
+	}
+
 	sprintf(read_data, "%d, %d", soc_decimal->init_decimal_ui_soc / 10, val);
 	chg_info("APK successful, %d,%d", soc_decimal->init_decimal_ui_soc / 10, val);
 	len = sprintf(page, "%s", read_data);
@@ -8601,7 +8700,13 @@ static int oplus_comm_tbatt_power_off_kthread(void *arg)
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 4, 0))
 					machine_power_off();
 #else
-					kernel_power_off();
+					if (chip->use_pm_power_off_with_hightemp && pm_power_off) {
+						chg_err("pm_power_off\n");
+						pm_power_off();
+					} else {
+						chg_err("kernel_power_off\n");
+						kernel_power_off();
+					}
 #endif
 				}
 			}
@@ -9258,7 +9363,6 @@ __maybe_unused static int oplus_comm_set_led_on(struct oplus_chg_comm *chip, boo
 		return 0;
 
 	chip->led_on = on;
-	chg_info("set led_on=%d\n", chip->led_on);
 	msg = oplus_mms_alloc_msg(MSG_TYPE_ITEM, MSG_PRIO_MEDIUM,
 				  COMM_ITEM_LED_ON);
 	if (msg == NULL) {
@@ -9271,6 +9375,7 @@ __maybe_unused static int oplus_comm_set_led_on(struct oplus_chg_comm *chip, boo
 		kfree(msg);
 		return rc;
 	}
+	chg_info("set led_on=%d\n", chip->led_on);
 
 	return 0;
 }
diff --git a/vendor/oplus/kernel/charger/v2/oplus_chg_cpa.c b/vendor/oplus/kernel/charger/v2/oplus_chg_cpa.c
index a9440135..7760569f 100644
--- a/vendor/oplus/kernel/charger/v2/oplus_chg_cpa.c
+++ b/vendor/oplus/kernel/charger/v2/oplus_chg_cpa.c
@@ -367,6 +367,7 @@ static int oplus_cpa_request_lock_vote_callback(struct votable *votable,
 						const char *client, bool step)
 {
 	struct oplus_cpa *cpa = data;
+	int rc;
 
 	if (votable == NULL) {
 		chg_err("votable is NUL\n");
@@ -403,7 +404,10 @@ static int oplus_cpa_request_lock_vote_callback(struct votable *votable,
 	mutex_lock(&cpa->cpa_request_lock);
 	cpa->def_req = true;
 	chg_info("start request default protocol\n");
-	protocol_identify_request(cpa, cpa->default_protocol_type);
+	rc = protocol_identify_request(cpa, cpa->default_protocol_type);
+	/* If setting protocol_to_be_switched fails, def_req should be set to false */
+	if (rc < 0 && rc != -EBUSY)
+		cpa->def_req = false;
 	mutex_unlock(&cpa->cpa_request_lock);
 
 	return 0;
@@ -669,7 +673,10 @@ static void oplus_cpa_chg_type_change_work(struct work_struct *work)
 					mutex_lock(&cpa->cpa_request_lock);
 					cpa->def_req = true;
 					chg_info("start request default protocol\n");
-					protocol_identify_request(cpa, cpa->default_protocol_type);
+					rc = protocol_identify_request(cpa, cpa->default_protocol_type);
+					/* If setting protocol_to_be_switched fails, def_req should be set to false */
+					if (rc < 0 && rc != -EBUSY)
+						cpa->def_req = false;
 					mutex_unlock(&cpa->cpa_request_lock);
 				}
 				break;
@@ -907,9 +914,8 @@ static void oplus_cpa_subscribe_wired_topic(struct oplus_mms *topic, void *prv_d
 	}
 
 	oplus_mms_get_item_data(cpa->wired_topic, WIRED_ITEM_ONLINE, &data, true);
-	cpa->wired_online = !!data.intval;
-	if (cpa->wired_online)
-		schedule_work(&cpa->chg_type_change_work);
+	if (data.intval)
+		schedule_work(&cpa->wired_online_work);
 	oplus_mms_get_item_data(cpa->wired_topic, WIRED_ITEM_PRESENT, &data, true);
 	cpa->wired_present = !!data.intval;
 	if (!cpa->wired_present)
@@ -1151,6 +1157,8 @@ static void oplus_cpa_retention_subs_callback(struct mms_subscribe *subs,
 			cpa->retention_state = !!data.intval;
 			if (cpa->retention_state)
 				cpa->pre_retention_state = cpa->retention_state;
+			if (cpa->wired_present && !cpa->retention_state)
+				cpa->pre_retention_state = false;
 			break;
 		case RETENTION_ITEM_STATE_READY:
 			cpa->retention_state_ready = true;
diff --git a/vendor/oplus/kernel/charger/v2/oplus_chg_plc.c b/vendor/oplus/kernel/charger/v2/oplus_chg_plc.c
index 2a9a3827..e6221091 100644
--- a/vendor/oplus/kernel/charger/v2/oplus_chg_plc.c
+++ b/vendor/oplus/kernel/charger/v2/oplus_chg_plc.c
@@ -2303,6 +2303,7 @@ static int oplus_chg_plc_probe(struct platform_device *pdev)
 	rc = oplus_plc_topic_init(chip);
 	if (rc < 0)
 		goto topic_reg_err;
+	spin_lock_init(&chip->protocol_list_lock);
 	chip->buck_opp = oplus_plc_register_protocol(chip->plc_topic,
 		&g_plc_protocol_desc, chip->dev->of_node, chip);
 	if (chip->buck_opp == NULL)
@@ -2314,7 +2315,6 @@ static int oplus_chg_plc_probe(struct platform_device *pdev)
 	INIT_WORK(&chip->chg_mode_change_work, oplus_plc_chg_mode_change_work);
 	INIT_WORK(&chip->wired_online_work, oplus_plc_wired_online_work);
 	mutex_init(&chip->status_control_lock);
-	spin_lock_init(&chip->protocol_list_lock);
 
 	return 0;
 
diff --git a/vendor/oplus/kernel/charger/v2/oplus_chg_pps.c b/vendor/oplus/kernel/charger/v2/oplus_chg_pps.c
index dec33d97..699a031b 100644
--- a/vendor/oplus/kernel/charger/v2/oplus_chg_pps.c
+++ b/vendor/oplus/kernel/charger/v2/oplus_chg_pps.c
@@ -20,6 +20,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -39,6 +40,7 @@
 #include 
 #include 
 #include 
+#include "monitor/oplus_chg_track.h"
 
 #define PPS_MONITOR_CYCLE_MS		1500
 #define PPS_WATCHDOG_TIME_MS		3000
@@ -49,6 +51,7 @@
 #define OPLUS_FIXED_PDO_CURR_MA		3000
 #define OPLUS_FIXED_PDO_DEF_VOL		5000
 #define OPLUS_PPS_UW_MV_TRANSFORM	1000
+#define PPS_GET_CP_VIN_DELAY		30
 
 
 #define PPS_UPDATE_PDO_TIME		5
@@ -368,6 +371,7 @@ struct oplus_pps {
 	int bcc_min_curr;
 	int bcc_exit_curr;
 	int pps_connect_error_count;
+	int pdo_set_error_count;
 	enum exit_pps_flag_status retention_exit_pps_flag;
 	enum oplus_chg_protocol_type cpa_current_type;
 	int rmos_mohm;
@@ -410,9 +414,12 @@ struct oplus_pps {
 	int delta_vbus[PPS_TEMP_RANGE_NORMAL + 1];
 	bool enable_pps_status;
 	bool lift_vbus_use_cpvout;
-
 	int plc_status;
 	unsigned int usb_status;
+
+	struct dentry *debugfs_pps;
+	int debug_force_pps_err;
+	long pps_online_time;
 };
 
 struct current_level {
@@ -499,6 +506,92 @@ static int pps_find_current_to_level(int val, const struct current_level * const
 	return 0;
 }
 
+static const char *const pps_user_err_type_str[] = {
+	[PPS_ERR_BTB_OVER] = "BTB_ERROR",
+	[PPS_ERR_TFG_OVER] = "TFG_OVER",
+	[PPS_ERR_IBAT_OVER] = "IBAT_OVER",
+	[PPS_ERR_REQUEST_VOLT_OVER] = "REQUEST_VOLT_OVER",
+};
+
+static const char *oplus_pps_get_err_type_str(enum pps_user_err_type type)
+{
+	if (type < PPS_ERR_BTB_OVER || type >= PPS_ERR_MAX)
+		return "Inval";
+	return pps_user_err_type_str[type];
+}
+
+static inline long oplus_chg_pps_get_current_time_s(void)
+{
+	struct timespec ts;
+	struct rtc_time tm;
+
+	getnstimeofday(&ts);
+	rtc_time_to_tm(ts.tv_sec, &tm);
+	tm.tm_year = tm.tm_year + 1900;
+	tm.tm_mon = tm.tm_mon + 1;
+	return ts.tv_sec;
+}
+
+#define PPS_BURIED_POINT_INTERVAL	(60 * 60)
+static void oplus_pps_push_err_info(struct oplus_pps *chip, enum pps_user_err_type type, int value)
+{
+	struct mms_msg *msg;
+	int rc;
+	char *buf;
+	size_t index;
+	static long last_time[PPS_ERR_MAX + 1], time, pre_pps_online_time;
+	static u32 mask = 0;
+
+	if (!is_err_topic_available(chip)) {
+		chg_err("err_topic is NULL\n");
+		return;
+	}
+
+	if (type >= PPS_ERR_MAX || type < PPS_ERR_BTB_OVER) {
+		chg_err("Invalid type value: %d[%d,%d)\n", type, PPS_ERR_BTB_OVER, PPS_ERR_MAX);
+		return;
+	}
+
+	time = oplus_chg_pps_get_current_time_s();
+	if (mask & BIT(type)) {
+		if ((time < last_time[type]) ||
+		    ((time - last_time[type]) < PPS_BURIED_POINT_INTERVAL) ||
+		    (pre_pps_online_time == chip->pps_online_time)) {
+			chg_err("Time anomaly: last_time[%d] = %ld, time = %ld, online_time = %ld\n",
+				type, last_time[type], time, chip->pps_online_time);
+			return;
+		} else {
+			mask &= 0 << type;
+		}
+	} else {
+		mask |= BIT(type);
+	}
+	pre_pps_online_time = chip->pps_online_time;
+	last_time[type] = time;
+
+	buf = kzalloc(PAGE_SIZE, GFP_KERNEL);
+	if (buf == NULL)
+		return;
+
+	index = scnprintf(buf, PAGE_SIZE, "$$err_scene@@%s$$err_reason@@%s",
+			  OPLUS_CHG_TRACK_SCENE_PPS_ERR, oplus_pps_get_err_type_str(type));
+	if (chip->debug_force_pps_err != 0)
+		index += scnprintf(buf + index, PAGE_SIZE, "$$value@@NA$$debug@@%d",
+				   chip->debug_force_pps_err);
+	else
+		index += scnprintf(buf + index, PAGE_SIZE, "$$value@@%d$$debug@@%d",
+                                   value, chip->debug_force_pps_err);
+
+	msg = oplus_mms_alloc_str_msg(MSG_TYPE_ITEM, MSG_PRIO_MEDIUM, ERR_ITEM_PPS, buf);
+	kfree(buf);
+	rc = oplus_mms_publish_msg_sync(chip->err_topic, msg);
+	if (rc < 0) {
+		chg_err("publish usbtemp error msg error, rc=%d\n", rc);
+		kfree(msg);
+	}
+	return;
+}
+
 static int pps_find_level_to_current(int val, const struct current_level * const table, int len)
 {
 	int i;
@@ -624,6 +717,34 @@ int oplus_pps_get_curve_ibus(struct oplus_mms *mms)
 	return min(data.target_ibus, chip->adapter_max_curr);
 }
 
+int oplus_chg_get_pdo_info(struct oplus_mms *mms, u32 *pdo)
+{
+	struct oplus_pps *chip;
+	int pdo_index;
+
+	if (mms == NULL) {
+		chg_err("mms is NULL\n");
+		return -EINVAL;
+	}
+
+	chip = oplus_mms_get_drvdata(mms);
+	if (chip == NULL) {
+		chg_err("chip is NULL\n");
+		return -EINVAL;
+	}
+
+	if (pdo == NULL) {
+		chg_err("pdo is NULL\n");
+                return -EINVAL;
+	}
+
+	for (pdo_index = 0; pdo_index < PPS_PDO_MAX; pdo_index++) {
+		pdo[pdo_index] = *((u32 *)chip->pdo + pdo_index);
+	}
+
+	return 0;
+}
+
 __maybe_unused
 static int oplus_pps_pdo_set(struct oplus_pps *chip, int vol_mv, int curr_ma)
 {
@@ -1083,6 +1204,67 @@ static int oplus_pps_switch_to_normal(struct oplus_pps *chip)
 
 	return rc;
 }
+
+static int oplus_pps_publish_cpa_power(struct oplus_pps *chip)
+{
+        struct mms_msg *msg;
+        int rc;
+
+        msg = oplus_mms_alloc_msg(MSG_TYPE_ITEM, MSG_PRIO_MEDIUM,
+                                  PPS_ITEM_CPA_POWER);
+        if (msg == NULL) {
+                chg_err("alloc msg error\n");
+                return -ENOMEM;
+        }
+        rc = oplus_mms_publish_msg_sync(chip->pps_topic, msg);
+        if (rc < 0) {
+                chg_err("publish pps online msg error, rc=%d\n", rc);
+                kfree(msg);
+        }
+
+        return rc;
+}
+
+static int oplus_pps_publish_adapter_power(struct oplus_pps *chip)
+{
+        struct mms_msg *msg;
+        int rc;
+
+        msg = oplus_mms_alloc_msg(MSG_TYPE_ITEM, MSG_PRIO_MEDIUM,
+                                  PPS_ITEM_ADAPTER_POWER);
+        if (msg == NULL) {
+                chg_err("alloc msg error\n");
+                return -ENOMEM;
+        }
+        rc = oplus_mms_publish_msg_sync(chip->pps_topic, msg);
+        if (rc < 0) {
+                chg_err("publish pps online msg error, rc=%d\n", rc);
+                kfree(msg);
+        }
+
+        return rc;
+}
+
+static int oplus_pps_publish_adapter_info(struct oplus_pps *chip)
+{
+        struct mms_msg *msg;
+        int rc;
+
+        msg = oplus_mms_alloc_msg(MSG_TYPE_ITEM, MSG_PRIO_MEDIUM,
+                                  PPS_ITEM_PPS_ADAPTER_INFO);
+        if (msg == NULL) {
+                chg_err("alloc msg error\n");
+                return -ENOMEM;
+        }
+        rc = oplus_mms_publish_msg_sync(chip->pps_topic, msg);
+        if (rc < 0) {
+                chg_err("publish pps online msg error, rc=%d\n", rc);
+                kfree(msg);
+        }
+
+        return rc;
+}
+
 static int oplus_pps_set_online(struct oplus_pps *chip, bool online)
 {
 	struct mms_msg *msg;
@@ -1092,7 +1274,9 @@ static int oplus_pps_set_online(struct oplus_pps *chip, bool online)
 		return 0;
 
 	chip->pps_online = online;
-	chg_info("set pps_online=%s\n", online ? "true" : "false");
+	if (chip->pps_online)
+		chip->pps_online_time = oplus_chg_pps_get_current_time_s();
+	chg_info("set pps_online=%s, online_time = %ld\n", online ? "true" : "false", chip->pps_online_time);
 
 	msg = oplus_mms_alloc_msg(MSG_TYPE_ITEM, MSG_PRIO_MEDIUM,
 				  PPS_ITEM_ONLINE);
@@ -1270,6 +1454,7 @@ static void oplus_pps_charge_btb_allow_check(struct oplus_pps *chip)
 		if (is_wired_icl_votable_available(chip))
 			vote(chip->wired_icl_votable, BTB_TEMP_OVER_VOTER, true,
 			     BTB_TEMP_OVER_MAX_INPUT_CUR, true);
+		oplus_pps_push_err_info(chip, PPS_ERR_BTB_OVER, 0);
 	}
 }
 
@@ -1411,6 +1596,7 @@ static void oplus_pps_variables_init(struct oplus_pps *chip)
 	chip->pps_fastchg_batt_temp_status = PPS_BAT_TEMP_NATURAL;
 	chip->pps_temp_cur_range = PPS_TEMP_RANGE_INIT;
 	chip->error_count = 0;
+	chip->pdo_set_error_count = 0;
 	chip->need_check_current = false;
 	chip->quit_pps_protocol = false;
 	chip->mos_on_check = false;
@@ -1442,6 +1628,7 @@ static void oplus_pps_force_exit(struct oplus_pps *chip)
 	oplus_pps_set_oplus_adapter(chip, false);
 	chip->cp_work_mode = CP_WORK_MODE_UNKNOWN;
 	chip->cp_ratio = 0;
+	chip->pdo_set_error_count = 0;
 	oplus_pps_exit_pps_mode(chip);
 	oplus_pps_cp_set_work_start(chip, false);
 	oplus_pps_cp_enable(chip, false);
@@ -1462,6 +1649,7 @@ static void oplus_pps_soft_exit(struct oplus_pps *chip)
 	oplus_pps_set_oplus_adapter(chip, false);
 	chip->cp_work_mode = CP_WORK_MODE_UNKNOWN;
 	chip->cp_ratio = 0;
+	chip->pdo_set_error_count = 0;
 	oplus_pps_exit_pps_mode(chip);
 	oplus_pps_cp_set_work_start(chip, false);
 	oplus_pps_cp_enable(chip, false);
@@ -1544,6 +1732,9 @@ static void oplus_pps_switch_check_work(struct work_struct *work)
 				oplus_cpa_switch_end(chip->cpa_topic, CHG_PROTOCOL_PPS);
 				return;
 			}
+			/* alreday re-into pps_charging during thread blocking period */
+			if (chip->pps_online)
+				return;
 		} else {
 			chg_err("wired_type=%d, Not PPS adapter", wired_type);
 			oplus_cpa_switch_end(chip->cpa_topic, CHG_PROTOCOL_PPS);
@@ -1585,6 +1776,7 @@ static void oplus_pps_switch_check_work(struct work_struct *work)
 		goto err;
 	}
 	chip->pdo_num = PPS_PDO_MAX;
+	oplus_pps_publish_adapter_info(chip);
 
 	for (i = 0; i < chip->pdo_num; i++) {
 		target_vbus_max = chip->config.target_vbus_mv;
@@ -1679,8 +1871,13 @@ static void oplus_pps_switch_check_work(struct work_struct *work)
 		goto err;
 	}
 
+	if (chip->pps_online) {
+		oplus_pps_publish_cpa_power(chip);
+		oplus_pps_publish_adapter_power(chip);
+	}
+
 	oplus_pps_sub_btb_connnect_check(chip);
-	schedule_delayed_work(&chip->monitor_work, 0);
+	schedule_delayed_work(&chip->monitor_work, msecs_to_jiffies(PPS_GET_CP_VIN_DELAY));
 
 	return;
 err:
@@ -1791,6 +1988,7 @@ static int oplus_pps_charge_start(struct oplus_pps *chip)
 		if (chip->mos_on_check) {
 			bool work_start;
 
+			chip->mos_on_check = false;
 			rc = oplus_pps_cp_get_work_status(chip, &work_start);
 			if (rc < 0) {
 				chg_err("can't get cp work status, rc=%d\n", rc);
@@ -1817,7 +2015,6 @@ static int oplus_pps_charge_start(struct oplus_pps *chip)
 						chg_err("lcf_strategy_init error, not support low curr full\n");
 
 					retry_count = 0;
-					chip->mos_on_check = false;
 					oplus_pps_set_charging(chip, true);
 					if (chip->led_on && chip->adapter_max_curr > LED_ON_SYS_CONSUME_MA &&
 					    chip->pps_charging && !chip->support_cp_ibus)
@@ -1838,7 +2035,6 @@ static int oplus_pps_charge_start(struct oplus_pps *chip)
 			}
 			if (retry_count >= PPS_START_RETAY_MAX) {
 				retry_count = 0;
-				chip->mos_on_check = false;
 				oplus_pps_cp_set_work_start(chip, false);
 				oplus_pps_cp_enable(chip, false);
 				oplus_pps_cp_watchdog_enable(chip, CP_WATCHDOG_DISABLE);
@@ -1860,7 +2056,6 @@ static int oplus_pps_charge_start(struct oplus_pps *chip)
 			chg_err("set cp work start error, rc=%d\n", rc);
 			return rc;
 		}
-		retry_count = 0;
 		chip->mos_on_check = true;
 
 		return PPS_START_CHECK_DELAY_MS;
@@ -2808,6 +3003,7 @@ static void oplus_pps_check_ibat_safety(struct oplus_pps *chip)
 		if (chip->count.ibat_high >= PPS_IBAT_HIGH_CNT) {
 			chip->quit_pps_protocol = true;
 			vote(chip->pps_disable_votable, IBAT_OVER_VOTER, true, 1, false);
+			oplus_pps_push_err_info(chip, PPS_ERR_IBAT_OVER, ibat);
 			return;
 		}
 	} else {
@@ -2884,6 +3080,7 @@ static void oplus_pps_check_temp(struct oplus_pps *chip)
 				if (chip->count.tfg_over >= PPS_TFG_OV_CNT) {
 					chip->count.tfg_over = 0;
 					vote(chip->pps_disable_votable, TFG_VOTER, true, 1, false);
+                			oplus_pps_push_err_info(chip, PPS_ERR_TFG_OVER, batt_temp);
 				}
 			} else {
 				chip->count.tfg_over = 0;
@@ -3321,6 +3518,11 @@ static void oplus_pps_monitor_work(struct work_struct *work)
 			chg_info("pps communication exception, exit pps mode\n");
 			goto exit;
 		}
+		if (chip->pdo_set_error_count > PPS_ERROR_COUNT_MAX) {
+			chg_info("pps pdo_set_error exception, exit pps mode\n");
+			chip->quit_pps_protocol = true;
+			goto exit;
+		}
 		if (chip->pps_not_allow || chip->pps_disable) {
 			chg_info("pps charge not allow or disable, exit pps mode\n");
 			goto exit;
@@ -3338,6 +3540,11 @@ static void oplus_pps_monitor_work(struct work_struct *work)
 		oplus_pps_set_soc_current(chip);
 	}
 
+	if (chip->debug_force_pps_err >= PPS_ERR_BTB_OVER &&
+	    chip->debug_force_pps_err < PPS_ERR_MAX) {
+		oplus_pps_push_err_info(chip, chip->debug_force_pps_err, 0);
+		chip->debug_force_pps_err = 0;
+	}
 	if (chip->wired_online)
 		schedule_delayed_work(&chip->monitor_work, msecs_to_jiffies(delay));
 	return;
@@ -3436,8 +3643,10 @@ static void oplus_pps_current_work(struct work_struct *work)
 			chg_err("set cp input current error, rc=%d\n", rc);
 		} else {
 			rc = oplus_pps_pdo_set(chip, target_vbus, curr_set);
-			if (rc < 0)
-				chg_err("pdo set error, rc=%d\n", rc);
+			if (rc < 0) {
+				chip->pdo_set_error_count++;
+				chg_err("pdo set error, cnt=%d, rc=%d\n", chip->pdo_set_error_count, rc);
+			}
 		}
 	}
 
@@ -3460,7 +3669,6 @@ static void oplus_pps_wired_online_work(struct work_struct *work)
 	if (!chip->wired_online) {
 		oplus_pps_force_exit(chip);
 		oplus_pps_set_online_keep(chip, false); /* Keep the pps ui show until charger is pluged out.*/
-		cancel_delayed_work_sync(&chip->switch_check_work);
 		cancel_delayed_work_sync(&chip->monitor_work);
 		cancel_delayed_work_sync(&chip->current_work);
 		cancel_delayed_work_sync(&chip->switch_end_recheck_work);
@@ -3470,8 +3678,11 @@ static void oplus_pps_wired_online_work(struct work_struct *work)
 			     false, 0, true);
 		chip->wired_type = OPLUS_CHG_USB_TYPE_UNKNOWN;
 		chip->pdsvooc_id_adapter = false;
-		complete_all(&chip->pd_svooc_wait_ack);
 		vote(chip->pps_curr_votable, BAD_SUB_BTB_VOTER, false, 0, false);
+		/* switch_check_work needs to be cancelled last, as it may blocks current threads, otherwise
+		   blocking thread may continuing to cancel work in wired_online state */
+		cancel_delayed_work_sync(&chip->switch_check_work);
+		complete_all(&chip->pd_svooc_wait_ack);
 	} else {
 		chip->retention_state_ready = false;
 		if (READ_ONCE(chip->disconnect_change) && !chip->pps_online &&
@@ -4496,6 +4707,49 @@ static int oplus_pps_update_oplus_adapter(struct oplus_mms *mms,
 
 	return 0;
 }
+
+static int oplus_pps_update_cpa_power(struct oplus_mms *mms,
+                                           union mms_msg_data *data)
+{
+        data->intval = 0;
+        return 0;
+}
+
+static int oplus_pps_update_adapter_power(struct oplus_mms *mms,
+                                           union mms_msg_data *data)
+{
+        data->intval = 0;
+        return 0;
+}
+
+static int oplus_chg_track_upload_pps_adapter_info(struct oplus_mms *mms,
+                                           union mms_msg_data *data)
+{
+        data->intval = 0;
+        return 0;
+}
+
+static int oplus_pps_track_debugfs_init(struct oplus_pps *chip)
+{
+	int ret = 0;
+	struct dentry *debugfs_root;
+
+	debugfs_root = oplus_chg_track_get_debugfs_root();
+	if (!debugfs_root) {
+		ret = -ENOENT;
+		return ret;
+	}
+
+	chip->debugfs_pps = debugfs_create_dir("pps", debugfs_root);
+	if (!chip->debugfs_pps) {
+                ret = -ENOENT;
+                return ret;
+        }
+
+	debugfs_create_u32("debug_force_pps_err", 0644, chip->debugfs_pps, &(chip->debug_force_pps_err));
+	return ret;
+}
+
 static void oplus_pps_topic_update(struct oplus_mms *mms, bool publish)
 {
 }
@@ -4525,6 +4779,24 @@ static struct mms_item oplus_pps_item[] = {
 			.update = oplus_pps_update_online_keep,
 		}
 	},
+	{
+		.desc = {
+			.item_id = PPS_ITEM_CPA_POWER,
+			.update = oplus_pps_update_cpa_power,
+		}
+	},
+	{
+		.desc = {
+			.item_id = PPS_ITEM_ADAPTER_POWER,
+			.update = oplus_pps_update_adapter_power,
+		}
+	},
+	{
+		.desc = {
+			.item_id = PPS_ITEM_PPS_ADAPTER_INFO,
+			.update = oplus_chg_track_upload_pps_adapter_info,
+		}
+	},
 };
 
 static const struct oplus_mms_desc oplus_pps_desc = {
@@ -5659,6 +5931,9 @@ static int oplus_pps_probe(struct platform_device *pdev)
 		chg_err("oplus,impedance_unit not found\n");
 	}
 	chip->boot_time = local_clock() / LOCAL_T_NS_TO_MS_THD;
+	chip->debug_force_pps_err = 0;
+
+	oplus_pps_track_debugfs_init(chip);
 
 	return 0;
 
@@ -5728,6 +6003,8 @@ static int oplus_pps_remove(struct platform_device *pdev)
 		oplus_imp_node_unregister(chip->dev, chip->input_imp_node);
 	if (chip->temperature_strategy)
 		oplus_chg_strategy_release(chip->temperature_strategy);
+	if (chip->debugfs_pps)
+		debugfs_remove_recursive(chip->debugfs_pps);
 	devm_kfree(&pdev->dev, chip);
 
 	return 0;
diff --git a/vendor/oplus/kernel/charger/v2/oplus_chg_ufcs.c b/vendor/oplus/kernel/charger/v2/oplus_chg_ufcs.c
index 339a0c0a..d76a4360 100644
--- a/vendor/oplus/kernel/charger/v2/oplus_chg_ufcs.c
+++ b/vendor/oplus/kernel/charger/v2/oplus_chg_ufcs.c
@@ -103,6 +103,8 @@
 #define UFCS_CP_WATCHDOG_TIMEOUT_MS	5000
 #define UFCS_CP_WATCHDOG_DISABLE	0
 
+#define UFCS_POWER(v_mv, i_ma)		(v_mv * i_ma / 1000 / 1000 * 1000)
+
 enum {
 	UFCS_BAT_TEMP_NATURAL = 0,
 	UFCS_BAT_TEMP_HIGH0,
@@ -822,11 +824,13 @@ static int oplus_ufcs_config_cp_watchdog(struct oplus_ufcs *chip, int timeout_ms
 		chg_err("cp_ic is NULL\n");
 		return -ENODEV;
 	}
-	chg_info("ufcs set cp watchdog time to %dms\n", timeout_ms);
 
 	rc = oplus_chg_ic_func(chip->cp_ic, OPLUS_IC_FUNC_CP_WATCHDOG_ENABLE, timeout_ms);
+	chg_info("ufcs set cp watchdog time to %dms, rc=%d\n", timeout_ms, rc);
+	if (rc < 0 && rc != -ENOTSUPP)
+		return rc;
 
-	return rc;
+	return 0;
 }
 
 static int oplus_ufcs_set_online(struct oplus_ufcs *chip, bool online)
@@ -1132,6 +1136,52 @@ static int oplus_ufcs_push_lcf_alarm_status(struct oplus_ufcs *chip, int status)
 	return rc;
 }
 
+static int oplus_ufcs_push_emark_power(struct oplus_ufcs *chip, int power_mw)
+{
+	struct mms_msg *msg;
+	int rc;
+
+	if (!chip->ufcs_topic)
+		return -ENODEV;
+
+	msg = oplus_mms_alloc_int_msg(MSG_TYPE_ITEM, MSG_PRIO_MEDIUM, UFCS_ITEM_EMARK_POWER, power_mw);
+	if (msg == NULL) {
+		chg_err("alloc emark power msg error\n");
+		return -ENOMEM;
+	}
+
+	rc = oplus_mms_publish_msg(chip->ufcs_topic, msg);
+	if (rc < 0) {
+		chg_err("publish emark power msg error, rc=%d\n", rc);
+		kfree(msg);
+	}
+
+	return rc;
+}
+
+static int oplus_ufcs_push_adapter_power(struct oplus_ufcs *chip, int power_mw)
+{
+	struct mms_msg *msg;
+	int rc;
+
+	if (!chip->ufcs_topic)
+		return -ENODEV;
+
+	msg = oplus_mms_alloc_int_msg(MSG_TYPE_ITEM, MSG_PRIO_MEDIUM, UFCS_ITEM_ADAPTER_POWER, power_mw);
+	if (msg == NULL) {
+		chg_err("alloc emark power msg error\n");
+		return -ENOMEM;
+	}
+
+	rc = oplus_mms_publish_msg(chip->ufcs_topic, msg);
+	if (rc < 0) {
+		chg_err("publish emark power msg error, rc=%d\n", rc);
+		kfree(msg);
+	}
+
+	return rc;
+}
+
 __maybe_unused
 static int oplus_ufcs_handshake(struct oplus_ufcs *chip)
 {
@@ -2023,6 +2073,8 @@ static void oplus_ufcs_force_exit(struct oplus_ufcs *chip)
 	chip->startup_retry_times = 0;
 	chip->emark_imax = 0;
 	chip->power_imax = 0;
+	oplus_ufcs_push_emark_power(chip, UFCS_POWER(chip->config.target_vbus_mv, 0));
+	oplus_ufcs_push_adapter_power(chip, UFCS_POWER(chip->config.target_vbus_mv, 0));
 	oplus_ufcs_config_cp_watchdog(chip, UFCS_CP_WATCHDOG_DISABLE);
 	oplus_ufcs_cp_set_work_start(chip, false);
 	oplus_ufcs_exit_ufcs_mode(chip);
@@ -2199,6 +2251,7 @@ static int oplus_ufcs_deal_emark_info(struct oplus_ufcs *chip)
 		return chip->emark_imax;
 
 	vote(chip->ufcs_curr_votable, CABLE_MAX_VOTER, true, chip->emark_imax, false);
+	oplus_ufcs_push_emark_power(chip, UFCS_POWER(chip->config.target_vbus_mv, chip->emark_imax));
 
 	return 0;
 }
@@ -2565,6 +2618,7 @@ static void oplus_ufcs_switch_check_work(struct work_struct *work)
 		goto err;
 	}
 	vote(chip->ufcs_curr_votable, BASE_MAX_VOTER, true, max_curr, false);
+	oplus_ufcs_push_adapter_power(chip, UFCS_POWER(chip->config.target_vbus_mv, max_curr));
 
 /* TODO
 	rc = oplus_ufcs_get_cable_info(chip, &chip->cable_info);
@@ -2819,7 +2873,7 @@ static int oplus_ufcs_charge_start(struct oplus_ufcs *chip)
 			}
 			rc = oplus_ufcs_config_cp_watchdog(chip, UFCS_CP_WATCHDOG_TIMEOUT_MS);
 			if (rc < 0) {
-				chg_err("ufcs config cp watchdog error,rc=%d", rc);
+				chg_err("ufcs config cp watchdog error,rc=%d\n", rc);
 				return rc;
 			}
 			oplus_ufcs_cp_adc_enable(chip, true);
@@ -6057,6 +6111,16 @@ static struct mms_item oplus_ufcs_item[] = {
 			.update = oplus_ufcs_update_ufcs_vid,
 		}
 	},
+	{
+		.desc = {
+			.item_id = UFCS_ITEM_EMARK_POWER,
+		}
+	},
+	{
+		.desc = {
+			.item_id = UFCS_ITEM_ADAPTER_POWER,
+		}
+	},
 };
 
 static const struct oplus_mms_desc oplus_ufcs_desc = {
diff --git a/vendor/oplus/kernel/charger/v2/oplus_chg_vooc.c b/vendor/oplus/kernel/charger/v2/oplus_chg_vooc.c
index af32159d..2587d9b3 100644
--- a/vendor/oplus/kernel/charger/v2/oplus_chg_vooc.c
+++ b/vendor/oplus/kernel/charger/v2/oplus_chg_vooc.c
@@ -76,6 +76,7 @@
 #define ABNORMAL_ADAPTER_CONNECT_ERROR_COUNT_LEVEL	12
 #define ABNORMAL_65W_ADAPTER_CONNECT_ERROR_COUNT_LEVEL	8
 #define WAIT_BC1P2_GET_TYPE 600
+#define VOOC_WAIT_BC1P2_GET_TYPE 1000
 
 
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0))
@@ -311,6 +312,8 @@ struct oplus_chg_vooc {
 	int slow_chg_batt_limit;
 	u16 ufcs_vid;
 	struct completion pdsvooc_check_ack;
+	struct completion vooc_wait_bc12;
+	struct completion icl_done_ack;
 #if IS_ENABLED(CONFIG_OPLUS_DYNAMIC_CONFIG_CHARGER)
 	struct oplus_cfg spec_debug_cfg;
 	struct oplus_cfg normal_debug_cfg;
@@ -1671,6 +1674,8 @@ static int oplus_vooc_get_real_wired_type(struct oplus_chg_vooc *chip)
 
 #define PDSVOOC_CHECK_WAIT_TIME_MS		350
 #define OPLUS_SVID	0x22d9
+#define BEFORE_VOOC_CURR_CHECK 200
+#define WAIT_CURR_STARUP 500
 static void oplus_vooc_switch_check_work(struct work_struct *work)
 {
 	struct delayed_work *dwork = to_delayed_work(work);
@@ -1682,6 +1687,7 @@ static void oplus_vooc_switch_check_work(struct work_struct *work)
 	static unsigned long fastchg_check_timeout;
 	unsigned long schedule_delay = 0;
 	int rc;
+	union mms_msg_data data = { 0 };
 
 	chg_info("vooc switch check\n");
 
@@ -1801,9 +1807,12 @@ static void oplus_vooc_switch_check_work(struct work_struct *work)
 		}
 	}
 
+	reinit_completion(&chip->vooc_wait_bc12);
 	chg_info("chg_type=%d\n", chg_type);
 	if (chg_type == OPLUS_CHG_USB_TYPE_UNKNOWN) {
-		msleep(WAIT_BC1P2_GET_TYPE);
+		wait_for_completion_timeout(
+			&chip->vooc_wait_bc12,
+			msecs_to_jiffies(VOOC_WAIT_BC1P2_GET_TYPE));
 		chg_type = oplus_wired_get_chg_type();
 		if (chg_type == OPLUS_CHG_USB_TYPE_UNKNOWN) {
 			if (!chip->vooc_online) {
@@ -1814,6 +1823,16 @@ static void oplus_vooc_switch_check_work(struct work_struct *work)
 		}
 	}
 
+	if (chip->switch_retry_count == 0 && oplus_wired_get_ibus() < BEFORE_VOOC_CURR_CHECK) {
+		rc = oplus_mms_get_item_data(chip->wired_topic, WIRED_ITEM_ICL_DONE_STATUS, &data, true);
+		if (rc == 0 && data.intval == 0) {
+			reinit_completion(&chip->icl_done_ack);
+			rc = wait_for_completion_timeout(&chip->icl_done_ack,
+							 msecs_to_jiffies(WAIT_CURR_STARUP));
+			chg_info("wait wired icl done over\n");
+		}
+	}
+
 	chg_info("switch_retry_count=%d, fast_chg_status=%d fastchg_check_timeout=%lu\n",
 		 chip->switch_retry_count, chip->fast_chg_status, fastchg_check_timeout);
 	if (chip->switch_retry_count == 0) {
@@ -3470,6 +3489,7 @@ static void oplus_vooc_wired_subs_callback(struct mms_subscribe *subs,
 {
 	struct oplus_chg_vooc *chip = subs->priv_data;
 	union mms_msg_data data = { 0 };
+	static int chg_type = 0;
 
 	switch (type) {
 	case MSG_TYPE_ITEM:
@@ -3478,6 +3498,11 @@ static void oplus_vooc_wired_subs_callback(struct mms_subscribe *subs,
 			schedule_work(&chip->plugin_work);
 			break;
 		case WIRED_ITEM_CHG_TYPE:
+			oplus_mms_get_item_data(chip->wired_topic, id, &data, false);
+			if (chg_type != data.intval) {
+				chg_type = data.intval;
+				complete_all(&chip->vooc_wait_bc12);
+			}
 			schedule_work(&chip->chg_type_change_work);
 			break;
 		case WIRED_ITEM_CC_MODE:
@@ -3521,6 +3546,10 @@ static void oplus_vooc_wired_subs_callback(struct mms_subscribe *subs,
 				schedule_work(&chip->turn_off_work);
 			}
 			break;
+		case WIRED_ITEM_ICL_DONE_STATUS:
+			complete_all(&chip->icl_done_ack);
+			chg_info("accept icl done\n");
+			break;
 		default:
 			break;
 		}
@@ -5215,7 +5244,7 @@ static int oplus_chg_vooc_parse_dt(struct oplus_chg_vooc *chip,
 		chg_err("oplus_spec,vooc_low_temp reading failed, rc=%d\n", rc);
 		spec->vooc_low_temp = default_spec_config.vooc_low_temp;
 	}
-	spec->vooc_over_low_temp = spec->vooc_low_temp - 5;
+	spec->vooc_over_low_temp = spec->vooc_low_temp - 10;
 
 	rc = of_property_read_s32(node, "oplus_spec,vooc_little_cold_temp",
 				  &spec->vooc_little_cold_temp);
@@ -6436,6 +6465,8 @@ static int oplus_vooc_probe(struct platform_device *pdev)
 		goto proc_init_err;
 
 	init_completion(&chip->pdsvooc_check_ack);
+	init_completion(&chip->vooc_wait_bc12);
+	init_completion(&chip->icl_done_ack);
 	INIT_DELAYED_WORK(&chip->vooc_init_work, oplus_vooc_init_work);
 	INIT_DELAYED_WORK(&chip->vooc_switch_check_work,
 			  oplus_vooc_switch_check_work);
diff --git a/vendor/oplus/kernel/charger/v2/oplus_chg_wired.c b/vendor/oplus/kernel/charger/v2/oplus_chg_wired.c
index 98c0e1d8..8d682a16 100755
--- a/vendor/oplus/kernel/charger/v2/oplus_chg_wired.c
+++ b/vendor/oplus/kernel/charger/v2/oplus_chg_wired.c
@@ -62,6 +62,9 @@
 #define PDQC_SALE_MODE_ALLOW_BUCK_MV	5000
 #define DPQC_CONNECT_ERROR_COUNT_LEVEL	3
 #define WAIT_BC1P2_GET_TYPE 600
+#define RETENTION_QC_WAIT_BC1P2_GET_TYPE 1000
+#define COMMON_POWER_CHECK_MIN_SOC	20
+#define COMMON_POWER_CHECK_RECOVERY_MSECS	600
 
 struct oplus_wired_spec_config {
 	int32_t pd_iclmax_ma;
@@ -127,6 +130,7 @@ struct oplus_chg_wired {
 	struct delayed_work pd_config_work;
 	struct delayed_work qc_config_work;
 	struct delayed_work pd_boost_icl_disable_work;
+	struct delayed_work common_power_check_recover_work;
 
 	struct power_supply *usb_psy;
 	struct power_supply *batt_psy;
@@ -144,6 +148,7 @@ struct oplus_chg_wired {
 	struct completion pd_action_ack;
 	struct completion qc_check_ack;
 	struct completion pd_check_ack;
+	struct completion retention_wait_bc12;
 
 	bool unwakelock_chg;
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0))
@@ -164,6 +169,7 @@ struct oplus_chg_wired {
 	bool vooc_started;
 	bool pd_boost_disable;
 	bool cpa_support;
+	bool need_common_power_check;
 
 	int chg_type;
 	int vbus_set_mv;
@@ -831,6 +837,15 @@ static void oplus_wired_pd_boost_icl_disable_work(struct work_struct *work)
 	vote(chip->icl_votable, BOOST_VOTER, false, 0, true);
 }
 
+static void oplus_common_power_check_recover_work(struct work_struct *work)
+{
+	struct oplus_chg_wired *chip = container_of(work, struct oplus_chg_wired, common_power_check_recover_work.work);
+
+	vote(chip->icl_votable, COMMON_POWER_CHECK, false, 0, true);
+	chip->need_common_power_check = false;
+	chg_info("oplus_common_power_check_recover_work need_common_power_check %d\n", chip->need_common_power_check);
+}
+
 #define PD_RETRY_DELAY msecs_to_jiffies(1000)
 #define PD_RETRY_COUNT_MAX 3
 static void oplus_wired_pd_config_work(struct work_struct *work)
@@ -1175,6 +1190,7 @@ static void oplus_wired_wired_subs_callback(struct mms_subscribe *subs,
 {
 	struct oplus_chg_wired *chip = subs->priv_data;
 	union mms_msg_data data = { 0 };
+	static int chg_type = 0;
 
 	switch (type) {
 	case MSG_TYPE_ITEM:
@@ -1183,11 +1199,32 @@ static void oplus_wired_wired_subs_callback(struct mms_subscribe *subs,
 			schedule_work(&chip->plugin_work);
 			break;
 		case WIRED_ITEM_CHG_TYPE:
+			oplus_mms_get_item_data(chip->wired_topic, id, &data, false);
+			if (chg_type != data.intval) {
+				chg_type = data.intval;
+				complete_all(&chip->retention_wait_bc12);
+			}
 			schedule_work(&chip->chg_type_change_work);
+			if (oplus_chg_get_common_charge_icl_support_flags()) {
+				oplus_mms_get_item_data(chip->wired_topic, id, &data, false);
+				if (data.intval != OPLUS_CHG_USB_TYPE_UNKNOWN && chip->need_common_power_check) {
+					chip->need_common_power_check = false;
+					cancel_delayed_work(&chip->common_power_check_recover_work);
+					schedule_delayed_work(&chip->common_power_check_recover_work, 0);
+				}
+			}
 			break;
 		case WIRED_ITEM_REAL_CHG_TYPE:
 			if (get_client_vote(chip->pd_boost_disable_votable, SVID_VOTER) == 0)
 				complete(&chip->pd_check_ack);
+			if (oplus_chg_get_common_charge_icl_support_flags()) {
+				oplus_mms_get_item_data(chip->wired_topic, id, &data, false);
+				if (data.intval != OPLUS_CHG_USB_TYPE_UNKNOWN && chip->need_common_power_check) {
+					chip->need_common_power_check = false;
+					cancel_delayed_work(&chip->common_power_check_recover_work);
+					schedule_delayed_work(&chip->common_power_check_recover_work, 0);
+				}
+			}
 			break;
 		case WIRED_ITEM_PRESENT:
 			oplus_mms_get_item_data(chip->wired_topic, id, &data, false);
@@ -1241,6 +1278,42 @@ static void oplus_wired_subscribe_wired_topic(struct oplus_mms *topic,
 		schedule_work(&chip->plugin_work);
 }
 
+static void oplus_common_power_check(struct oplus_chg_wired *chip)
+{
+	int temp_ui_soc = 0;
+	int chg_type = OPLUS_CHG_USB_TYPE_UNKNOWN;
+	int real_type = OPLUS_CHG_USB_TYPE_UNKNOWN;
+	union mms_msg_data data = { 0 };
+
+	if (oplus_chg_get_common_charge_icl_support_flags()) {
+		if (chip->comm_topic) {
+			oplus_mms_get_item_data(chip->comm_topic, COMM_ITEM_UI_SOC, &data,
+						false);
+			temp_ui_soc = data.intval;
+		}
+		if (chip->wired_topic) {
+			oplus_mms_get_item_data(chip->wired_topic, WIRED_ITEM_REAL_CHG_TYPE, &data,
+						false);
+			real_type = data.intval;
+			oplus_mms_get_item_data(chip->wired_topic, WIRED_ITEM_CHG_TYPE, &data,
+						false);
+			chg_type = data.intval;
+		}
+		chg_info("ui_soc %d real_type %s chg_type %s\n", temp_ui_soc,
+			oplus_wired_get_chg_type_str(real_type), oplus_wired_get_chg_type_str(chg_type));
+
+		if (temp_ui_soc >= COMMON_POWER_CHECK_MIN_SOC &&
+		    ((real_type == OPLUS_CHG_USB_TYPE_UNKNOWN && chg_type == OPLUS_CHG_USB_TYPE_UNKNOWN) ||
+		    (real_type == OPLUS_CHG_USB_TYPE_PD))) {
+			chip->need_common_power_check = true;
+			vote(chip->icl_votable, COMMON_POWER_CHECK, true, 100, false);
+			cancel_delayed_work(&chip->common_power_check_recover_work);
+			schedule_delayed_work(&chip->common_power_check_recover_work,
+						msecs_to_jiffies(COMMON_POWER_CHECK_RECOVERY_MSECS));
+		}
+	}
+}
+
 static void oplus_wired_plugin_work(struct work_struct *work)
 {
 	struct oplus_chg_wired *chip =
@@ -1256,6 +1329,7 @@ static void oplus_wired_plugin_work(struct work_struct *work)
 				false);
 	chip->chg_online = data.intval;
 	if (chip->chg_online) {
+		oplus_common_power_check(chip);
 		chip->retention_state_ready = false;
 		oplus_wired_set_awake(chip, true);
 		if (chip->gauge_topic != NULL) {
@@ -1303,6 +1377,8 @@ static void oplus_wired_plugin_work(struct work_struct *work)
 		vote(chip->icl_votable, STRATEGY_VOTER, false, 0, true);
 		vote(chip->icl_votable, USB_ENHANCE_VOTER, false, 0, false);
 		vote(chip->icl_votable, PD_PDO_ICL_VOTER, false, 0, true);
+		vote(chip->icl_votable, COMMON_POWER_CHECK, false, 0, true);
+		chip->need_common_power_check = false;
 		chip->pd_retry_count = 0;
 		chip->qc_retry_count = 0;
 		chip->qc_action = OPLUS_ACTION_NULL;
@@ -1318,6 +1394,8 @@ static void oplus_wired_plugin_work(struct work_struct *work)
 		cancel_delayed_work_sync(&chip->switch_end_recheck_work);
 		cancel_work_sync(&chip->qc_check_work);
 		cancel_work_sync(&chip->pd_check_work);
+		if (oplus_chg_get_common_charge_icl_support_flags())
+			cancel_delayed_work(&chip->common_power_check_recover_work);
 		chip->vbus_set_mv = OPLUS_CHG_VBUS_5V;
 		oplus_wired_set_err_code(chip, 0);
 
@@ -1451,11 +1529,27 @@ static void oplus_wired_qc_check_work(struct work_struct *work)
 		return;
 	}
 	if (chip->chg_type == OPLUS_CHG_USB_TYPE_QC2 ||
-		chip->chg_type == OPLUS_CHG_USB_TYPE_QC3 ||
-		chip->chg_type == OPLUS_CHG_USB_TYPE_UNKNOWN) {
-		chg_info("type is qc charging or unknown, not retry\n");
+	    chip->chg_type == OPLUS_CHG_USB_TYPE_QC3) {
+		chg_info("type is qc charging  not retry\n");
 		return;
 	}
+
+	reinit_completion(&chip->retention_wait_bc12);
+	if (chip->chg_type == OPLUS_CHG_USB_TYPE_UNKNOWN) {
+		if (!chip->retention_state) {
+			chg_info("type is unknown  not retry\n");
+			return;
+		}
+		wait_for_completion_timeout(
+			&chip->retention_wait_bc12,
+			msecs_to_jiffies(RETENTION_QC_WAIT_BC1P2_GET_TYPE));
+		chip->chg_type = oplus_wired_get_chg_type();
+		if (chip->chg_type == OPLUS_CHG_USB_TYPE_UNKNOWN) {
+			chg_info("type is unknown, not retry\n");
+			return;
+		}
+	}
+
 	oplus_wired_qc_detect_enable(true);
 	rc = wait_for_completion_timeout(
 		&chip->qc_check_ack,
@@ -2459,7 +2553,7 @@ static int oplus_wired_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, chip);
 
 	of_platform_populate(chip->dev->of_node, NULL, NULL, chip->dev);
-
+	chip->need_common_power_check = false;
 	rc = oplus_wired_parse_dt(chip);
 	if (rc < 0)
 		goto parse_dt_err;
@@ -2472,6 +2566,7 @@ static int oplus_wired_probe(struct platform_device *pdev)
 	init_completion(&chip->pd_action_ack);
 	init_completion(&chip->qc_check_ack);
 	init_completion(&chip->pd_check_ack);
+	init_completion(&chip->retention_wait_bc12);
 	INIT_WORK(&chip->plugin_work, oplus_wired_plugin_work);
 	INIT_WORK(&chip->chg_type_change_work,
 		  oplus_wired_chg_type_change_work);
@@ -2484,6 +2579,7 @@ static int oplus_wired_probe(struct platform_device *pdev)
 	INIT_DELAYED_WORK(&chip->pd_config_work, oplus_wired_pd_config_work);
 	INIT_DELAYED_WORK(&chip->retention_disconnect_work,
 		  oplus_pdqc_retention_disconnect_work);
+	INIT_DELAYED_WORK(&chip->common_power_check_recover_work, oplus_common_power_check_recover_work);
 	INIT_WORK(&chip->charger_current_changed_work,
 		  oplus_wired_charger_current_changed_work);
 	INIT_WORK(&chip->led_on_changed_work, oplus_wired_led_on_changed_work);
diff --git a/vendor/oplus/kernel/charger/v2/oplus_chg_wls.c b/vendor/oplus/kernel/charger/v2/oplus_chg_wls.c
index c825092d..ec514d98 100755
--- a/vendor/oplus/kernel/charger/v2/oplus_chg_wls.c
+++ b/vendor/oplus/kernel/charger/v2/oplus_chg_wls.c
@@ -5422,6 +5422,7 @@ static void oplus_chg_wls_usb_int_work(struct work_struct *work)
 	if (wls_dev->usb_present) {
 		oplus_chg_wls_rx_set_rx_mode_safety(wls_dev, OPLUS_CHG_WLS_RX_MODE_UNKNOWN);
 		vote(wls_dev->rx_disable_votable, USB_VOTER, true, 1, false);
+		rerun_election(wls_dev->rx_disable_votable, true);
 		if (!wls_dev->support_tx_boost && !wls_dev->support_wls_and_tx_boost && !wls_dev->support_no_hw_interlock)
 			(void)oplus_chg_wls_set_trx_enable(wls_dev, false);
 		/*oplus_chg_anon_mod_event(wls_dev->wls_ocm, OPLUS_CHG_EVENT_OFFLINE);*/
diff --git a/vendor/oplus/kernel/charger/v2/oplus_smart_chg.c b/vendor/oplus/kernel/charger/v2/oplus_smart_chg.c
index 189fe330..3591f7eb 100644
--- a/vendor/oplus/kernel/charger/v2/oplus_smart_chg.c
+++ b/vendor/oplus/kernel/charger/v2/oplus_smart_chg.c
@@ -53,6 +53,7 @@ struct oplus_smart_charge {
 	bool vooc_online;
 	bool wls_online;
 	bool vooc_charging;
+	bool voocphy_bcc_fastchg_ing;
 	unsigned int vooc_sid;
 
 	bool ufcs_online;
@@ -1044,7 +1045,8 @@ static void oplus_smart_chg_bcc_set_buffer(int *buffer)
 	    return;
 	}
 
-	if (true == oplus_voocphy_get_fastchg_ing() ||
+	g_smart_chg->voocphy_bcc_fastchg_ing = oplus_voocphy_get_fastchg_ing();
+	if (g_smart_chg->voocphy_bcc_fastchg_ing ||
 		(oplus_vooc_get_fastchg_ing() && oplus_vooc_get_fast_chg_type() != BCC_TYPE_IS_VOOC)){
 		bcc_current_max = oplus_vooc_check_bcc_max_curr();
 		bcc_current_min = oplus_vooc_check_bcc_min_curr();
@@ -1129,7 +1131,6 @@ int oplus_smart_chg_get_battery_bcc_parameters(char *buf)
 	struct oplus_mms *wired_topic;
 	bool vooc_get_fastchg_ing;
 	int vooc_get_fast_chg_type;
-	bool voocphy_get_fastchg_ing;
 	int vooc_check_bcc_temp_range;
 	bool wls_fastchg_charging;
 
@@ -1141,12 +1142,12 @@ int oplus_smart_chg_get_battery_bcc_parameters(char *buf)
 	oplus_smart_chg_bcc_set_buffer(buffer);
 	vooc_get_fastchg_ing = oplus_vooc_get_fastchg_ing();
 	vooc_get_fast_chg_type = oplus_vooc_get_fast_chg_type();
-	voocphy_get_fastchg_ing = oplus_voocphy_get_fastchg_ing();
 	vooc_check_bcc_temp_range = oplus_vooc_check_bcc_temp_range();
 	wls_fastchg_charging = oplus_wls_get_fastchg_ing();
 
 	if ((vooc_get_fastchg_ing && vooc_get_fast_chg_type != BCC_TYPE_IS_VOOC) ||
-	    voocphy_get_fastchg_ing || g_smart_chg->ufcs_charging || wls_fastchg_charging) {
+	    g_smart_chg->voocphy_bcc_fastchg_ing || g_smart_chg->ufcs_charging ||
+	    wls_fastchg_charging) {
 		buffer[15] = 1;
 	} else {
 		buffer[15] = 0;
@@ -1170,7 +1171,7 @@ int oplus_smart_chg_get_battery_bcc_parameters(char *buf)
 
 	buffer[16] = oplus_wired_get_bcc_curr_done_status(wired_topic);
 
-	if (voocphy_get_fastchg_ing ||
+	if (g_smart_chg->voocphy_bcc_fastchg_ing ||
 	    (vooc_get_fastchg_ing && (vooc_get_fast_chg_type != BCC_TYPE_IS_VOOC))) {
 		if (vooc_check_bcc_temp_range == BCC_TEMP_RANGE_WRONG) {
 			buffer[9] = 0;
@@ -1201,7 +1202,7 @@ int oplus_smart_chg_get_battery_bcc_parameters(char *buf)
 		buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5], buffer[6], buffer[7],
 		buffer[8], buffer[9], buffer[10], buffer[11], buffer[12], buffer[13], buffer[14], buffer[15], buffer[16],
 		buffer[17], buffer[18], vooc_get_fastchg_ing, vooc_get_fast_chg_type, vooc_check_bcc_temp_range,
-		voocphy_get_fastchg_ing, g_smart_chg->ufcs_charging, oplus_ufcs_check_bcc_temp_range(g_smart_chg),
+		g_smart_chg->voocphy_bcc_fastchg_ing, g_smart_chg->ufcs_charging, oplus_ufcs_check_bcc_temp_range(g_smart_chg),
 		wls_fastchg_charging, oplus_wls_check_bcc_temp_range(g_smart_chg));
 
 	memset(buf, 0, BCC_PAGE_SIZE);
diff --git a/vendor/oplus/kernel/charger/v2/ufcs/include/internal/ufcs_timer.h b/vendor/oplus/kernel/charger/v2/ufcs/include/internal/ufcs_timer.h
index 4b1b62b8..c1f37cc0 100644
--- a/vendor/oplus/kernel/charger/v2/ufcs/include/internal/ufcs_timer.h
+++ b/vendor/oplus/kernel/charger/v2/ufcs/include/internal/ufcs_timer.h
@@ -36,7 +36,7 @@ enum ufcs_timer {
 #define T_RETRY_US			500
 #define T_RECEIVER_RESPONSE_MS		40
 
-#define T_ACK_RECEIVE_NO_RESEND_MS	50
+#define T_ACK_RECEIVE_NO_RESEND_MS	100
 
 /* customize */
 #define T_HANDSHAKE_TIMEOUT_MS		300
diff --git a/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc2201.c b/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc2201.c
index 6d2c1a5d..2734ab68 100755
--- a/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc2201.c
+++ b/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc2201.c
@@ -570,6 +570,12 @@ static int sc2201_ufcs_enable(struct ufcs_dev *ufcs)
 	sc2201_write_bit_mask(chip, SC2201_ADDR_UFCS_RXTX_HARDRESET_TIME, SC2201_FLAG_RXTX_HARDRESET_TIME_MASK,
 		(SC2201_FLAG_RXTX_HARDRESET_TIME_VALUE << SC2201_FLAG_RXTX_HARDRESET_TIME_SHIFT));
 
+	/* Add for the issue of UFCS exit communication error: end one frame by frame length, dp falling edge is detected. */
+	sc2201_write_bit_mask(chip, SC2201_ADDR_UFCS_OPTION1, SC2201_FLAG_EN_LENGTH_END_MASK,
+		(SC2201_FLAG_EN_LENGTH_END_VALUE << SC2201_FLAG_EN_LENGTH_END_SHIFT));
+	sc2201_write_bit_mask(chip, SC2201_ADDR_UFCS_OPTION4, SC2201_FLAG_DIS_LENGTH_END_DLY_MASK,
+		(SC2201_FLAG_DIS_LENGTH_END_DLY_VALUE << SC2201_FLAG_DIS_LENGTH_END_DLY_SHIFT));
+
 	ufcs_clr_error_flag(chip->ufcs);
 
 	return 0;
diff --git a/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc2201.h b/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc2201.h
index b9135fb5..48d1a06f 100755
--- a/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc2201.h
+++ b/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc2201.h
@@ -121,4 +121,16 @@
 #define SC2201_FLAG_RXTX_HARDRESET_TIME_VALUE   0x3
 #define SC2201_FLAG_RXTX_HARDRESET_TIME_SHIFT   2
 
+/*reg02F0*/
+#define SC2201_ADDR_UFCS_OPTION1    (0x02F0)
+#define SC2201_FLAG_EN_LENGTH_END_MASK    BIT(2)
+#define SC2201_FLAG_EN_LENGTH_END_VALUE   1
+#define SC2201_FLAG_EN_LENGTH_END_SHIFT   2
+
+/*reg02F3*/
+#define SC2201_ADDR_UFCS_OPTION4    (0x02F3)
+#define SC2201_FLAG_DIS_LENGTH_END_DLY_MASK    BIT(2)
+#define SC2201_FLAG_DIS_LENGTH_END_DLY_VALUE   1
+#define SC2201_FLAG_DIS_LENGTH_END_DLY_SHIFT   2
+
 #endif /*_OPLUS_SC2201_H_*/
diff --git a/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc8547a.c b/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc8547a.c
index 607efd01..b45b2d38 100755
--- a/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc8547a.c
+++ b/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc8547a.c
@@ -51,6 +51,7 @@
 
 #include "../voocphy/phy/oplus_sc8547.h"
 #include "oplus_hal_sc8547a.h"
+#include 
 
 #define DEFUALT_VBUS_LOW 100
 #define DEFUALT_VBUS_HIGH 200
@@ -112,6 +113,24 @@ static enum oplus_cp_work_mode g_cp_support_work_mode[] = {
 
 static int sc8547_voocphy_get_chg_enable(struct oplus_voocphy_manager *chip, u8 *data);
 
+static int oplus_chg_get_vooc_charging(void)
+{
+	int vooc_charging_status = 0;
+	struct oplus_mms *vooc_topic;
+	union mms_msg_data data = { 0 };
+	int rc;
+
+	vooc_topic = oplus_mms_get_by_name("vooc");
+	if (!vooc_topic)
+		return 0;
+
+	rc = oplus_mms_get_item_data(vooc_topic, VOOC_ITEM_VOOC_CHARGING, &data, true);
+	if (!rc)
+		vooc_charging_status = data.intval;
+
+	return vooc_charging_status;
+}
+
 #define ERR_MSG_BUF	PAGE_SIZE
 
 static void sc8547_i2c_error(struct oplus_voocphy_manager *voocphy, bool happen, bool read)
@@ -445,17 +464,21 @@ static int sc8547a_write_bit_mask(struct sc8547a_device *chip, u8 reg,
 	u8 temp = 0;
 	int rc = 0;
 
-	rc = sc8547a_read_byte(chip, reg, &temp);
-	if (rc < 0)
-		return rc;
+	mutex_lock(&chip->i2c_rw_lock);
+	rc = __sc8547_read_byte(chip->client, reg, &temp);
+	if (rc < 0) {
+		chg_err("read failed: reg=%02X, rc=%d\n", reg, rc);
+		goto out;
+	}
 
 	temp = (data & mask) | (temp & (~mask));
 
-	rc = sc8547a_write_byte(chip, reg, temp);
+	rc = __sc8547_write_byte(chip->client, reg, temp);
 	if (rc < 0)
-		return rc;
-
-	return 0;
+		chg_err("write failed: reg=%02X, rc=%d\n", reg, rc);
+out:
+	mutex_unlock(&chip->i2c_rw_lock);
+	return rc;
 }
 
 static int sc8547_voocphy_set_predata(struct oplus_voocphy_manager *chip, u16 val)
@@ -580,6 +603,7 @@ static void sc8547_voocphy_update_data(struct oplus_voocphy_manager *chip)
 			data_block[1]) *
 		       SC8547_VAC_ADC_LSB;
 
+	chip->master_cp_ichg = chip->cp_ichg;
 	chg_info("cp_ichg = %d cp_vbus = %d, cp_vsys = %d cp_vbat = %d cp_vac = "
 		"%d int_flag = %d",
 		chip->cp_ichg, chip->cp_vbus, chip->cp_vsys, chip->cp_vbat,
@@ -597,6 +621,9 @@ static int sc8547_voocphy_get_cp_ichg(struct oplus_voocphy_manager *chip)
 
 	if (cp_enable == 0)
 		return 0;
+
+	if (oplus_chg_get_vooc_charging())
+		return chip->master_cp_ichg;
 	/*parse data_block for improving time of interrupt*/
 	ret = i2c_smbus_read_i2c_block_data(chip->client, SC8547_REG_13, 2,
 					    data_block);
@@ -641,6 +668,8 @@ static int sc8547_voocphy_get_cp_vbat(struct oplus_voocphy_manager *chip)
 	u8 data_block[2] = { 0 };
 	s32 ret = 0;
 
+	if (oplus_chg_get_vooc_charging())
+		return chip->cp_vbat;
 	/*parse data_block for improving time of interrupt*/
 	ret = i2c_smbus_read_i2c_block_data(chip->client, SC8547_REG_1B, 2,
 					    data_block);
@@ -677,6 +706,8 @@ static int sc8547_voocphy_get_cp_vbus(struct oplus_voocphy_manager *chip)
 	u8 data_block[2] = { 0 };
 	s32 ret = 0;
 
+	if (oplus_chg_get_vooc_charging())
+		return chip->cp_vbus;
 	/* parse data_block for improving time of interrupt */
 	ret = i2c_smbus_read_i2c_block_data(chip->client, SC8547_REG_15, 2,
 					    data_block);
@@ -1132,7 +1163,7 @@ static int sc8547_voocphy_init_vooc(struct oplus_voocphy_manager *voocphy)
 	return 0;
 }
 
-static int sc8547_svooc_hw_setting(struct sc8547a_device *chip)
+static int sc8547_svooc_hw_setting(struct sc8547a_device *chip, bool wdt_cfg)
 {
 	u8 reg_data;
 	sc8547_write_byte(chip->client, SC8547_REG_02, 0x01); /*VAC_OVP:12v*/
@@ -1144,7 +1175,10 @@ static int sc8547_svooc_hw_setting(struct sc8547a_device *chip)
 
 	sc8547_write_byte(chip->client, SC8547_REG_05,
 			  reg_data); /*IBUS_OCP_UCP:3.6A*/
-	sc8547_write_byte(chip->client, SC8547_REG_09, 0x13); /*WD:1000ms*/
+	if (wdt_cfg)
+		sc8547_write_byte(chip->client, SC8547_REG_09, 0x13); /* WD:1000ms */
+	else
+		sc8547_update_bits(chip->client, SC8547_REG_09, 0x90, 0x10); /* 2:1, IBUS_UCP_RISE_MASK */
 	sc8547_write_byte(chip->client, SC8547_REG_11,
 			  0x80); /*ADC_CTRL:ADC_EN*/
 	sc8547_write_byte(chip->client, SC8547_REG_0D, 0x70);
@@ -1155,7 +1189,7 @@ static int sc8547_svooc_hw_setting(struct sc8547a_device *chip)
 	return 0;
 }
 
-static int sc8547_vooc_hw_setting(struct sc8547a_device *chip)
+static int sc8547_vooc_hw_setting(struct sc8547a_device *chip, bool wdt_cfg)
 {
 	sc8547_write_byte(chip->client, SC8547_REG_02, 0x07); /*VAC_OVP:6.5*/
 	sc8547_write_byte(chip->client, SC8547_REG_04, chip->vooc_vbus_ovp_reg); /*VBUS_OVP:*/
@@ -1163,7 +1197,10 @@ static int sc8547_vooc_hw_setting(struct sc8547a_device *chip)
 		sc8547_write_byte(chip->client, SC8547_REG_05, 0x1c); /*IBUS_OCP_UCP:*/
 	else
 		sc8547_write_byte(chip->client, SC8547_REG_05, 0x2c);
-	sc8547_write_byte(chip->client, SC8547_REG_09, 0x93); /*WD:1000ms*/
+	if (wdt_cfg)
+		sc8547_write_byte(chip->client, SC8547_REG_09, 0x93); /* WD:1000ms */
+	else
+		sc8547_update_bits(chip->client, SC8547_REG_09, 0x90, 0x90); /* 1:1, IBUS_UCP_RISE_MASK */
 	sc8547_write_byte(chip->client, SC8547_REG_11, 0x80); /*ADC_CTRL:*/
 	sc8547_write_byte(chip->client, SC8547_REG_33, 0xd1); /*Loose_det*/
 	sc8547_write_byte(chip->client, SC8547_REG_3A, 0x60);
@@ -1220,11 +1257,11 @@ static int sc8547_voocphy_hw_setting(struct oplus_voocphy_manager *voocphy, int
 		chg_info("SETTING_REASON_RESET OR PROBE\n");
 		break;
 	case SETTING_REASON_SVOOC:
-		sc8547_svooc_hw_setting(chip);
+		sc8547_svooc_hw_setting(chip, true);
 		chg_info("SETTING_REASON_SVOOC\n");
 		break;
 	case SETTING_REASON_VOOC:
-		sc8547_vooc_hw_setting(chip);
+		sc8547_vooc_hw_setting(chip, true);
 		chg_info("SETTING_REASON_VOOC\n");
 		break;
 	case SETTING_REASON_5V2A:
@@ -1805,7 +1842,6 @@ static int sc8547_irq_register(struct sc8547a_device *chip)
 				voocphy->irq, ret);
 			return ret;
 		}
-		enable_irq_wake(voocphy->irq);
 		chg_debug("request irq ok\n");
 	}
 
@@ -2161,9 +2197,9 @@ static int sc8547a_cp_set_work_mode(struct oplus_chg_ic_dev *ic_dev, enum oplus_
 	}
 
 	if (mode == CP_WORK_MODE_BYPASS)
-		rc = sc8547_vooc_hw_setting(chip);
+		rc = sc8547_vooc_hw_setting(chip, false);
 	else
-		rc = sc8547_svooc_hw_setting(chip);
+		rc = sc8547_svooc_hw_setting(chip, false);
 
 	if (rc < 0)
 		chg_err("set work mode to %d error\n", mode);
diff --git a/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc8547d.c b/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc8547d.c
old mode 100644
new mode 100755
index bca7ccdd..afc526ff
--- a/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc8547d.c
+++ b/vendor/oplus/kernel/charger/v2/ufcs_ic/oplus_hal_sc8547d.c
@@ -2173,7 +2173,6 @@ static int sc8547_irq_register(struct sc8547d_device *chip)
 				voocphy->irq, ret);
 			return ret;
 		}
-		enable_irq_wake(voocphy->irq);
 		chg_debug("request irq ok\n");
 	}
 
diff --git a/vendor/oplus/kernel/charger/v2/voocphy/oplus_ap_voocphy.c b/vendor/oplus/kernel/charger/v2/voocphy/oplus_ap_voocphy.c
index 585bbfd7..13487dd4 100644
--- a/vendor/oplus/kernel/charger/v2/voocphy/oplus_ap_voocphy.c
+++ b/vendor/oplus/kernel/charger/v2/voocphy/oplus_ap_voocphy.c
@@ -2577,14 +2577,17 @@ static int oplus_voocphy_get_ichg_devation(struct oplus_voocphy_manager *chip)
 		cp_ibus_devation = slave_cp_ibus - main_cp_ibus;
 	}
 
-	voocphy_info("cp ibus devation = %d\n", cp_ibus_devation);
+	voocphy_info("cp main_cp_ibus = %d, slave_cp_ibus = %d, ibus devation = %d\n",
+		      main_cp_ibus, slave_cp_ibus, cp_ibus_devation);
 
 	return cp_ibus_devation;
 }
 
+#define OPLUS_VOOCPHY_SLAVE_CHECK_DELAY_MS              300
+#define OPLUS_VOOCPHY_SLAVE_STATUS_CHECK_DELAY_MS       50
+#define OPLUS_VOOCPHY_SLAVE_STATUS_CHECK_MAX_COUNT      60
 static bool oplus_voocphy_check_slave_cp_status(struct oplus_voocphy_manager *chip)
 {
-	int count = 0;
 	int i;
 	u8 slave_cp_status = 0;
 
@@ -2592,25 +2595,29 @@ static bool oplus_voocphy_check_slave_cp_status(struct oplus_voocphy_manager *ch
 		return false;
 
 	if (chip->slave_ops && chip->slave_ops->get_cp_status) {
-		for (i=0; i<3; i++) {
+		for (i = 0; i < OPLUS_VOOCPHY_SLAVE_STATUS_CHECK_MAX_COUNT; i++) {
 			oplus_voocphy_slave_get_chg_enable(chip, &slave_cp_status);
 			if (oplus_voocphy_get_slave_ichg(chip) < g_voocphy_chip->slave_cp_enable_thr_low ||
 			    chip->slave_ops->get_cp_status(chip) == 0 ||
 			    oplus_voocphy_get_ichg_devation(chip) > chip->cp_ibus_devation) {
-				count = count + 1;
+				voocphy_err("slave cp ichg=%d mA, status:%d, devation:%d, cp_ibus_devation:%d count:%d!\n",
+					    oplus_voocphy_get_slave_ichg(chip),
+					    chip->slave_ops->get_cp_status(chip),
+					    oplus_voocphy_get_ichg_devation(chip),
+					    chip->cp_ibus_devation,
+					    i);
+				if (oplus_chglib_is_wired_present(chip->dev) == false) {
+					voocphy_err("offline!!\n");
+					return false;
+				}
 			} else {
-				count = 0;
+				voocphy_err("slave cp is not in trouble!\n");
+				return true;
 			}
-			msleep(10);
-		}
-
-		if (count >= 3) {
-			voocphy_err("count >= 3, return false, slave cp is in trouble!\n");
-			return false;
-		} else {
-			voocphy_err("count < 3, return true, slave cp is not in trouble!\n");
-			return true;
+			msleep(OPLUS_VOOCPHY_SLAVE_STATUS_CHECK_DELAY_MS);
 		}
+		voocphy_err("slave cp is in trouble!\n");
+		return false;
 	} else {
 		voocphy_err("slave cp don't exist, return false!\n");
 		return false;
@@ -5034,7 +5041,7 @@ static int oplus_voocphy_curr_event_handle(struct device *dev, unsigned long dat
 			}
 			voocphy_info("chip->cp_vbus = %d chip->cp_vbat = %d!!!!!\n", chip->cp_vbus, chip->cp_vbat);
 			oplus_voocphy_slave_set_chg_enable(chip, true);
-			msleep(200);
+			msleep(OPLUS_VOOCPHY_SLAVE_CHECK_DELAY_MS);
 			if (oplus_voocphy_check_slave_cp_status(chip)) {
 				voocphy_err("slave cp is normal, then set current!\n");
 			} else {
diff --git a/vendor/oplus/kernel/cpu/freq_tune_policy/oplus_freq_tune_policy.c b/vendor/oplus/kernel/cpu/freq_tune_policy/oplus_freq_tune_policy.c
index 60b2c765..ac4913ae 100755
--- a/vendor/oplus/kernel/cpu/freq_tune_policy/oplus_freq_tune_policy.c
+++ b/vendor/oplus/kernel/cpu/freq_tune_policy/oplus_freq_tune_policy.c
@@ -14,9 +14,11 @@
 #include 
 
 #define MAX_ENTRIES 16
+#define MAX_CLUSTERS 5
 
 static struct proc_dir_entry *dir_entry;
-static struct proc_dir_entry *proc_entry;
+static struct proc_dir_entry *inefficient_proc_entry;
+static struct proc_dir_entry *disable_proc_entry;
 
 #define CPUFREQ_OPLUS_INEFFICIENT_FREQ	(1 << 5)
 
@@ -27,6 +29,11 @@ struct freq_entry {
 static struct freq_entry entries[MAX_ENTRIES];
 static unsigned int num_entries;
 
+static DEFINE_MUTEX(g_mutex);
+static bool have_set_inefficient = false;
+static bool disable_inefficient = false;
+static bool inefficient_backup[MAX_CLUSTERS];
+
 static int set_inefficient_freq(unsigned int cpu, unsigned long freq)
 {
 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
@@ -43,6 +50,7 @@ static int set_inefficient_freq(unsigned int cpu, unsigned long freq)
 		if (pos->frequency == freq) {
 			pos->flags |= CPUFREQ_OPLUS_INEFFICIENT_FREQ | CPUFREQ_INEFFICIENT_FREQ;
 			policy->efficiencies_available = true;
+			have_set_inefficient = true;
 			cpufreq_cpu_put(policy);
 			return 0;
 		}
@@ -74,6 +82,8 @@ static ssize_t inefficient_write(struct file *file, const char __user *buf,
 		goto out;
 	}
 
+	mutex_lock(&g_mutex);
+
 	num_entries = 0;
 	next = kbuf;
 	token = strsep(&next, ",");
@@ -117,6 +127,9 @@ static ssize_t inefficient_write(struct file *file, const char __user *buf,
 		num_entries++;
 		token = strsep(&next, ",");
 	}
+
+	mutex_unlock(&g_mutex);
+
 out:
 	kfree(kbuf);
 	return ret ? ret : count;
@@ -146,24 +159,134 @@ static const struct proc_ops inefficient_fops = {
 	.proc_release = single_release,
 };
 
+static ssize_t disable_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
+{
+	char page[32] = {0};
+	int ret, value;
+	bool disable;
+	int i, j, cluster_id;
+	struct cpufreq_policy *policy;
+	struct cpumask temp_mask;
+
+	ret = simple_write_to_buffer(page, sizeof(page) - 1, ppos, buf, count);
+	if (ret <= 0)
+		return ret;
+
+	ret = sscanf(page, "%d", &value);
+	if (ret != 1)
+		return -EINVAL;
+
+	disable = !!value;
+
+	mutex_lock(&g_mutex);
+
+	if (!have_set_inefficient)
+		goto out;
+
+	if (disable_inefficient == disable)
+		goto out;
+
+	disable_inefficient = disable;
+
+	cpumask_copy(&temp_mask, cpu_possible_mask);
+
+	if (disable_inefficient) {
+		for (i = 0; i < MAX_CLUSTERS; i++)
+			inefficient_backup[i] = false;
+
+		for_each_cpu(i, &temp_mask) {
+			policy = cpufreq_cpu_get(i);
+			if (unlikely(!policy))
+				continue;
+
+			for_each_cpu(j, policy->related_cpus)
+				cpumask_clear_cpu(j, &temp_mask);
+
+			cluster_id = topology_cluster_id(policy->cpu);
+
+			if (cluster_id < MAX_CLUSTERS) {
+				if (policy->efficiencies_available) {
+					inefficient_backup[cluster_id] = true;
+					/* set efficiencies_available false */
+					policy->efficiencies_available = false;
+				}
+			}
+
+			cpufreq_cpu_put(policy);
+		}
+	} else {
+		for_each_cpu(i, &temp_mask) {
+			policy = cpufreq_cpu_get(i);
+			if (unlikely(!policy))
+				continue;
+
+			for_each_cpu(j, policy->related_cpus)
+				cpumask_clear_cpu(j, &temp_mask);
+
+			cluster_id = topology_cluster_id(policy->cpu);
+
+			if (cluster_id < MAX_CLUSTERS) {
+				/* restore efficiencies_available */
+				if (inefficient_backup[cluster_id])
+					policy->efficiencies_available = true;
+			}
+
+			cpufreq_cpu_put(policy);
+		}
+	}
+
+out:
+	mutex_unlock(&g_mutex);
+	return count;
+}
+
+static int disable_show(struct seq_file *m, void *v)
+{
+	seq_printf(m, "%d\n", disable_inefficient ? 1 : 0);
+	return 0;
+}
+
+static int disable_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, disable_show, NULL);
+}
+
+static const struct proc_ops disable_fops = {
+	.proc_open = disable_open,
+	.proc_read = seq_read,
+	.proc_write = disable_write,
+	.proc_lseek = seq_lseek,
+	.proc_release = single_release,
+};
+
 static int __init inefficient_init(void)
 {
 	dir_entry = proc_mkdir("oplus_cpu", NULL);
 	if (!dir_entry)
 		return -ENOMEM;
 
-	proc_entry = proc_create("inefficient", 0644, dir_entry, &inefficient_fops);
-	if (!proc_entry) {
+	inefficient_proc_entry = proc_create("inefficient", 0644, dir_entry, &inefficient_fops);
+	if (!inefficient_proc_entry) {
 		proc_remove(dir_entry);
 		return -ENOMEM;
 	}
+
+	disable_proc_entry = proc_create("disable_inefficient", 0644, dir_entry, &disable_fops);
+	if (!disable_proc_entry) {
+		proc_remove(inefficient_proc_entry);
+		proc_remove(dir_entry);
+		return -ENOMEM;
+	}
+
 	return 0;
 }
 
 static void __exit inefficient_exit(void)
 {
-	if (proc_entry)
-		proc_remove(proc_entry);
+	if (disable_proc_entry)
+		proc_remove(disable_proc_entry);
+	if (inefficient_proc_entry)
+		proc_remove(inefficient_proc_entry);
 	if (dir_entry)
 		proc_remove(dir_entry);
 }
diff --git a/vendor/oplus/kernel/cpu/game_opt/cpu_load.c b/vendor/oplus/kernel/cpu/game_opt/cpu_load.c
index e4eaf6b1..8e976d26 100755
--- a/vendor/oplus/kernel/cpu/game_opt/cpu_load.c
+++ b/vendor/oplus/kernel/cpu/game_opt/cpu_load.c
@@ -256,17 +256,68 @@ err_out:
 	return 0;
 }
 
-static int cpu_load_show(struct seq_file *m, void *v)
+static DEFINE_MUTEX(cl_mutex);
+static char cpu_load_buf[512];
+static ssize_t clb_len;
+static bool cpu_load_is_ready = false;
+static u64 last_read = 0;
+
+static void read_cpu_load_data(void)
 {
 	int cpu;
-	int util_pct = 0, busy_pct = 0;
+	int util_pct = 60, busy_pct = 90;
+	u64 now = ktime_get_ns();
+	u64 delta = now - last_read;
+	int interval;
+	bool just_init = false;
+
+	if (!initialized) {
+		time_in_state_init();
+		just_init = true;
+	}
+
+	if (delta > 1000000000) /* 1s */
+		delta = 1000000000;
+	interval = (int)delta;
+	last_read = now;
+
+	memset(cpu_load_buf, 0, sizeof(cpu_load_buf));
+	clb_len = 0;
 
 	for_each_possible_cpu(cpu) {
-		if (need_stat_cpu_load())
+		if (need_stat_cpu_load() && !just_init)
 			get_cpu_load(cpu, &util_pct, &busy_pct);
-		seq_printf(m, "CPU:%d busy_pct:%d util_pct:%d\n", cpu, busy_pct, util_pct);
+		clb_len += snprintf(cpu_load_buf + clb_len, sizeof(cpu_load_buf) - clb_len,
+			"CPU:%d busy_pct:%d util_pct:%d\n", cpu, busy_pct, util_pct);
 	}
 
+	snprintf(cpu_load_buf + clb_len, sizeof(cpu_load_buf) - clb_len,
+		"interval:%d\n", interval);
+}
+
+void cl_notify_frame_produce(void)
+{
+	mutex_lock(&cl_mutex);
+
+	read_cpu_load_data();
+	cpu_load_is_ready = true;
+
+	mutex_unlock(&cl_mutex);
+}
+
+static int cpu_load_show(struct seq_file *m, void *v)
+{
+	mutex_lock(&cl_mutex);
+
+	if (!cpu_load_is_ready)
+		read_cpu_load_data();
+	cpu_load_is_ready = false;
+
+	if (clb_len > 0)
+		seq_puts(m, cpu_load_buf);
+
+	mutex_unlock(&cl_mutex);
+
 	return 0;
 }
 
@@ -322,8 +373,6 @@ static const struct proc_ops gamt_proc_ops = {
 
 int cpu_load_init(void)
 {
-	time_in_state_init();
-
 	proc_create_data("cpu_load", 0444, game_opt_dir, &cpu_load_proc_ops, NULL);
 	proc_create_data("gamt", 0664, game_opt_dir, &gamt_proc_ops, NULL);
 
diff --git a/vendor/oplus/kernel/cpu/game_opt/critical_task_boost.c b/vendor/oplus/kernel/cpu/game_opt/critical_task_boost.c
index 2188c81e..6a87e25e 100755
--- a/vendor/oplus/kernel/cpu/game_opt/critical_task_boost.c
+++ b/vendor/oplus/kernel/cpu/game_opt/critical_task_boost.c
@@ -314,12 +314,12 @@ void reset_critical_task_time(void)
     mutex_unlock(&chb_mutex);
 }
 
-void notify_frame_produdce(void)
+void ctb_notify_frame_produce(void)
 {
     if (!ct_enable) {
         return;
     }
-    systrace_c_printk("notify_frame_produdce", 1);
+    systrace_c_printk("ctb_notify_frame_produce", 1);
     kthread_cancel_work_sync(&ct_work);
     kthread_cancel_work_sync(&cb_work);
     kthread_cancel_work_sync(&sw_work);
@@ -329,7 +329,7 @@ void notify_frame_produdce(void)
     reset_time();
     start_hrtimer();
     mutex_unlock(&chb_mutex);
-    systrace_c_printk("notify_frame_produdce", 0);
+    systrace_c_printk("ctb_notify_frame_produce", 0);
 }
 
 static void update_critical_task_time(struct task_struct *task, int i, bool is_prev_task)
@@ -461,7 +461,7 @@ static ssize_t expire_time_percentage_proc_write(struct file *file,
     if (target_fps > 0 && unitymain_expire_time_percentage > 0) {
         std_frame_length = NSEC_PER_SEC / target_fps;
         unitymain_expire_time_ns = std_frame_length / 100 * unitymain_expire_time_percentage;
-        per_window_time_span_ns = std_frame_length / SLIDE_WINDOW_SIZE;
+        per_window_time_span_ns = (int) (percentage / 100 + 1) * std_frame_length / SLIDE_WINDOW_SIZE;
     }
 
     mutex_unlock(&chb_mutex);
diff --git a/vendor/oplus/kernel/cpu/game_opt/critical_task_boost.h b/vendor/oplus/kernel/cpu/game_opt/critical_task_boost.h
index f0102337..630449ef 100755
--- a/vendor/oplus/kernel/cpu/game_opt/critical_task_boost.h
+++ b/vendor/oplus/kernel/cpu/game_opt/critical_task_boost.h
@@ -1,7 +1,7 @@
 #ifndef __CRITICAL_TASK_BOOST__
 #define __CRITICAL_TASK_BOOST__
 
-void notify_frame_produdce(void);
+void ctb_notify_frame_produce(void);
 void hrtimer_boost_init(void);
 void hrtimer_boost_exit(void);
 void reset_critical_task_time(void);
diff --git a/vendor/oplus/kernel/cpu/game_opt/debug.c b/vendor/oplus/kernel/cpu/game_opt/debug.c
index fd5ed5be..3e2c422b 100755
--- a/vendor/oplus/kernel/cpu/game_opt/debug.c
+++ b/vendor/oplus/kernel/cpu/game_opt/debug.c
@@ -14,7 +14,12 @@
 
 #include "game_ctrl.h"
 
+#define SKIP_GAMESELF_SCHED_SETAFFINITY (1 << 0)
+#define DEBUG_SCHED_SETAFFINITY_INFO (1 << 1)
+
 int g_debug_enable = 0;
+int skip_gameself_setaffinity = 0;
+static DEFINE_MUTEX(d_mutex);
 
 static noinline int tracing_mark_write(const char *buf)
 {
@@ -49,16 +54,6 @@ inline void htb_systrace_c_printk(const char *prefix, int digit, const char *com
 	}
 }
 
-static void sched_setaffinity_early_hook(void *unused, struct task_struct *p,
-	const struct cpumask *in_mask, bool *skip)
-{
-	if (p->tgid == game_pid) {
-		pr_info("gameopt, %s: c_comm=%s, c_pid=%d, c_tgid=%d, comm=%s, pid=%d, tgid=%d, in_mask=%*pbl\n",
-			__func__, current->comm, current->pid, current->tgid, p->comm, p->pid, p->tgid,
-			cpumask_pr_args(in_mask));
-	}
-}
-
 static ssize_t debug_enable_proc_write(struct file *file,
 	const char __user *buf, size_t count, loff_t *ppos)
 {
@@ -73,10 +68,6 @@ static ssize_t debug_enable_proc_write(struct file *file,
 	if (ret != 1)
 		return -EINVAL;
 
-	if (g_debug_enable == 2) {
-		register_trace_android_vh_sched_setaffinity_early(sched_setaffinity_early_hook, NULL);
-	}
-
 	return count;
 }
 
@@ -97,9 +88,76 @@ static const struct proc_ops debug_enable_proc_ops = {
 	.proc_lseek		= default_llseek,
 };
 
+static void sched_setaffinity_early_hook(void *unused, struct task_struct *p,
+	const struct cpumask *in_mask, bool *skip)
+{
+	if (p->tgid == game_pid) {
+		if ((skip_gameself_setaffinity & SKIP_GAMESELF_SCHED_SETAFFINITY) && (current->tgid == p->tgid)) {
+			*skip = true;
+		}
+
+		if ((skip_gameself_setaffinity & DEBUG_SCHED_SETAFFINITY_INFO) || (g_debug_enable == 2)) {
+			pr_info("gameopt, %s: c_comm=%s, c_pid=%d, c_tgid=%d, comm=%s, pid=%d, tgid=%d, in_mask=%*pbl, cpus_ptr=%*pbl, skip=%d\n",
+				__func__, current->comm, current->pid, current->tgid, p->comm, p->pid, p->tgid,
+				cpumask_pr_args(in_mask), cpumask_pr_args(p->cpus_ptr), *skip ? 1: 0);
+		}
+	}
+}
+
+static ssize_t skip_gameself_setaffinity_proc_write(struct file *file,
+	const char __user *buf, size_t count, loff_t *ppos)
+{
+	char page[32] = {0};
+	int ret, value;
+	static bool register_trace = false;
+
+	ret = simple_write_to_buffer(page, sizeof(page) - 1, ppos, buf, count);
+	if (ret <= 0)
+		return ret;
+
+	ret = sscanf(page, "%d", &value);
+	if (ret != 1)
+		return -EINVAL;
+
+	mutex_lock(&d_mutex);
+	skip_gameself_setaffinity = value;
+	if (skip_gameself_setaffinity > 0) {
+		if (!register_trace) {
+			register_trace_android_vh_sched_setaffinity_early(sched_setaffinity_early_hook, NULL);
+			register_trace = true;
+		}
+	} else {
+		if (register_trace) {
+			unregister_trace_android_vh_sched_setaffinity_early(sched_setaffinity_early_hook, NULL);
+			register_trace = false;
+		}
+	}
+	mutex_unlock(&d_mutex);
+
+	return count;
+}
+
+static ssize_t skip_gameself_setaffinity_proc_read(struct file *file,
+	char __user *buf, size_t count, loff_t *ppos)
+{
+	char page[32] = {0};
+	int len;
+
+	len = sprintf(page, "%d\n", skip_gameself_setaffinity);
+
+	return simple_read_from_buffer(buf, count, ppos, page, len);
+}
+
+static const struct proc_ops skip_gameself_setaffinity_proc_ops = {
+	.proc_write		= skip_gameself_setaffinity_proc_write,
+	.proc_read		= skip_gameself_setaffinity_proc_read,
+	.proc_lseek		= default_llseek,
+};
+
 int debug_init(void)
 {
-	proc_create_data("debug_enable", 0666, game_opt_dir, &debug_enable_proc_ops, NULL);
+	proc_create_data("debug_enable", 0644, game_opt_dir, &debug_enable_proc_ops, NULL);
+	proc_create_data("skip_gameself_setaffinity", 0644, game_opt_dir, &skip_gameself_setaffinity_proc_ops, NULL);
 
 	return 0;
 }
diff --git a/vendor/oplus/kernel/cpu/game_opt/dsu_freq.c b/vendor/oplus/kernel/cpu/game_opt/dsu_freq.c
new file mode 100755
index 00000000..ba1c776d
--- /dev/null
+++ b/vendor/oplus/kernel/cpu/game_opt/dsu_freq.c
@@ -0,0 +1,42 @@
+#include "dsu_freq.h"
+#include "game_ctrl.h"
+
+#define DSU_FREQ_LEN 256
+
+#if IS_ENABLED(CONFIG_OPLUS_DSU_OPT)
+extern u32 get_dsu_freq(void);
+#endif
+
+static int dsu_freq_show(struct seq_file *m, void *v)
+{
+    char page[DSU_FREQ_LEN];
+    ssize_t len = 0;
+    u32 dsu_freq = 0;
+
+#if IS_ENABLED(CONFIG_OPLUS_DSU_OPT)
+    dsu_freq = get_dsu_freq();
+#endif
+    systrace_c_printk("dsu_freq", dsu_freq);
+    len += snprintf(page + len, DSU_FREQ_LEN - len, "%u\n", dsu_freq);
+    if (len > 0) {
+        seq_puts(m, page);
+    }
+    return 0;
+}
+
+static int dsu_freq_proc_open(struct inode *inode, struct file *filp)
+{
+	return single_open(filp, dsu_freq_show, inode);
+}
+
+static const struct proc_ops dsu_freq_proc_ops = {
+    .proc_open		= dsu_freq_proc_open,
+	.proc_read		= seq_read,
+	.proc_lseek		= seq_lseek,
+	.proc_release	= single_release,
+};
+
+void dsu_freq_init(void)
+{
+    proc_create_data("dsu_freq", 0664, game_opt_dir, &dsu_freq_proc_ops, NULL);
+}
diff --git a/vendor/oplus/kernel/cpu/game_opt/dsu_freq.h b/vendor/oplus/kernel/cpu/game_opt/dsu_freq.h
new file mode 100755
index 00000000..4e632715
--- /dev/null
+++ b/vendor/oplus/kernel/cpu/game_opt/dsu_freq.h
@@ -0,0 +1,6 @@
+#ifndef __DSU_FREQ__
+#define __DSU_FREQ__
+
+void dsu_freq_init(void);
+
+#endif // __DSU_FREQ__
diff --git a/vendor/oplus/kernel/cpu/game_opt/frame_load.c b/vendor/oplus/kernel/cpu/game_opt/frame_load.c
new file mode 100755
index 00000000..7e6923ee
--- /dev/null
+++ b/vendor/oplus/kernel/cpu/game_opt/frame_load.c
@@ -0,0 +1,635 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2025 Oplus. All rights reserved.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "game_ctrl.h"
+
+struct tracked_task {
+	struct task_struct *task;
+	pid_t pid;
+	bool running;
+};
+struct tracked_task active_tasks[MAX_TRACKED_TASK_NUM];
+struct tracked_task tracked_tasks[MAX_TRACKED_TASK_NUM];
+static int tracked_task_num = 0;
+
+struct sched_cluster_info {
+	int cpu;
+	struct cpumask related_cpus;
+
+	u64 curr_window_exec;
+	u64 curr_window_scale;
+	u64 prev_window_exec;
+	u64 prev_window_scale;
+
+	int window_busy;
+	int window_util;
+} sched_clusters[MAX_SCHED_CLUSTER_NUM];
+static int cluster_num = 0;
+
+struct frame_group_info {
+	u64 window_start;
+	u64 mark_start;
+	int nr_running;
+	struct cpumask running_cpumask;
+
+	u64 curr_window_exec;
+	u64 curr_window_scale;
+	u64 prev_window_exec;
+	u64 prev_window_scale;
+
+	int window_busy;
+	int window_util;
+} frame_group;
+
+#define FPS_120_WINDOW_SIZE 8333333 /* ns */
+static u64 std_window_size = FPS_120_WINDOW_SIZE;
+
+static bool frame_load_track_enable = false;
+
+static DEFINE_RAW_SPINLOCK(fl_raw_spinlock);
+static DEFINE_MUTEX(fl_mutex);
+
+static struct proc_dir_entry *frame_load_track_dir = NULL;
+static void frame_load_init_delay(void);
+
+/*----------- frame group clock ------------------*/
+static ktime_t ktime_last;
+static bool fg_ktime_suspended;
+
+u64 fg_ktime_get_ns(void)
+{
+	if (unlikely(fg_ktime_suspended))
+		return ktime_to_ns(ktime_last);
+
+	return ktime_get_ns();
+}
+
+static void fg_resume(void)
+{
+	fg_ktime_suspended = false;
+}
+
+static int fg_suspend(void)
+{
+	ktime_last = ktime_get();
+	fg_ktime_suspended = true;
+	return 0;
+}
+
+static struct syscore_ops fg_syscore_ops = {
+	.resume		= fg_resume,
+	.suspend	= fg_suspend
+};
+/*----------- frame group clock ------------------*/
+
+static void build_sched_cluster_info(void)
+{
+	int i, j;
+	struct cpufreq_policy policy;
+	struct cpumask temp_mask;
+
+	cpumask_copy(&temp_mask, cpu_present_mask);
+
+	for_each_cpu(i, &temp_mask) {
+		if (unlikely(cpufreq_get_policy(&policy, i)))
+			continue;
+
+		for_each_cpu(j, policy.related_cpus)
+			cpumask_clear_cpu(j, &temp_mask);
+
+		sched_clusters[cluster_num].cpu = policy.cpu;
+		cpumask_copy(&sched_clusters[cluster_num].related_cpus, policy.related_cpus);
+
+		printk("frame_load: cluster_num=%d, cpu=%d\n", cluster_num, policy.cpu);
+
+		cluster_num++;
+		if (unlikely(cluster_num >= MAX_SCHED_CLUSTER_NUM))
+			break;
+	}
+}
+
+#define DIV64_U64_ROUNDUP(X, Y) div64_u64((X) + (Y - 1), Y)
+static inline u64 scale_exec_time(u64 delta, int cpu)
+{
+	u64 task_exec_scale;
+	struct cpufreq_policy *policy = cpufreq_cpu_get_raw(cpu);
+
+	if (unlikely(policy == NULL))
+		return delta;
+
+	task_exec_scale = DIV64_U64_ROUNDUP(policy->cur *
+				arch_scale_cpu_capacity(cpu),
+				policy->cpuinfo.max_freq);
+
+	return (delta * task_exec_scale) >> 10;
+}
+
+void add_tasks_to_frame_group(pid_t *tracked_pids, int tracked_pid_num)
+{
+	int i, j;
+	struct task_struct *task;
+	unsigned long flags;
+
+	if (!frame_load_track_enable)
+		return;
+
+	if (unlikely(tracked_pid_num > MAX_TRACKED_TASK_NUM))
+		return;
+
+	mutex_lock(&fl_mutex);
+	if (!frame_load_track_enable)
+		goto unlock_mutex;
+
+	for (i = 0, j = 0; i < tracked_pid_num; i++) {
+		rcu_read_lock();
+		task = find_task_by_vpid(tracked_pids[i]);
+		if (task) {
+			active_tasks[j].task = task;
+			active_tasks[j].pid = tracked_pids[i];
+			j++;
+		}
+		rcu_read_unlock();
+	}
+
+	raw_spin_lock_irqsave(&fl_raw_spinlock, flags);
+
+	tracked_task_num = j;
+	frame_group.nr_running = 0;
+	cpumask_clear(&frame_group.running_cpumask);
+
+	frame_group.curr_window_exec = 0;
+	frame_group.curr_window_scale = 0;
+	for (i = 0; i < cluster_num; i++) {
+		struct sched_cluster_info * cluster = &sched_clusters[i];
+		cluster->curr_window_exec = 0;
+		cluster->curr_window_scale = 0;
+	}
+	for (i = 0; i < tracked_task_num; i++) {
+		tracked_tasks[i].task = active_tasks[i].task;
+		tracked_tasks[i].pid = active_tasks[i].pid;
+		tracked_tasks[i].running = false;
+	}
+
+	raw_spin_unlock_irqrestore(&fl_raw_spinlock, flags);
+
+unlock_mutex:
+	mutex_unlock(&fl_mutex);
+}
+
+static void update_frame_group_load(u64 wallclock)
+{
+	int i;
+	struct cpumask temp_mask;
+	u64 delta_exec, exec_scale, max_exec_scale = 0;
+
+	/* lockdep_assert_held(&fl_raw_spinlock); */
+
+	if (unlikely(wallclock <= frame_group.mark_start))
+		return;
+
+	delta_exec = wallclock - frame_group.mark_start;
+
+	for (i = 0; i < cluster_num; i++) {
+		struct sched_cluster_info *cluster = &sched_clusters[i];
+
+		if (cpumask_and(&temp_mask, &cluster->related_cpus, &frame_group.running_cpumask)) {
+			exec_scale = scale_exec_time(delta_exec, cluster->cpu);
+			cluster->curr_window_exec += delta_exec;
+			cluster->curr_window_scale += exec_scale;
+
+			if (g_debug_enable == 1) {
+				char buf[64];
+				snprintf(buf, sizeof(buf), "cluster%d_exec\n", i);
+				systrace_c_printk(buf, cluster->curr_window_exec);
+				snprintf(buf, sizeof(buf), "cluster%d_scale\n", i);
+				systrace_c_printk(buf, cluster->curr_window_scale);
+			}
+
+			if (exec_scale > max_exec_scale)
+				max_exec_scale = exec_scale;
+		}
+	}
+
+	frame_group.curr_window_exec += delta_exec;
+	frame_group.curr_window_scale += max_exec_scale;
+
+	systrace_c_printk("frame_exec", frame_group.curr_window_exec);
+	systrace_c_printk("frame_scale", frame_group.curr_window_scale);
+}
+
+static inline struct tracked_task* get_tracked_task(struct task_struct *task)
+{
+	int i;
+
+	/* lockdep_assert_held(&fl_raw_spinlock); */
+
+	for (i = 0; i < tracked_task_num; i++) {
+		if ((tracked_tasks[i].task == task) && (tracked_tasks[i].pid == task->pid))
+			return &tracked_tasks[i];
+	}
+
+	return NULL;
+}
+
+static void frame_sched_switch(void *data, bool preempt, struct task_struct *prev, struct task_struct *next, unsigned int prev_state)
+{
+	unsigned long flags;
+	struct tracked_task* prev_tracked_task;
+	struct tracked_task* next_tracked_task;
+	u64 wallclock;
+
+	if (!frame_load_track_enable)
+		return;
+
+	if ((prev->tgid != game_pid) && (next->tgid != game_pid))
+		return;
+
+	raw_spin_lock_irqsave(&fl_raw_spinlock, flags);
+	if (!frame_load_track_enable)
+		goto unlock_raw_spin;
+
+	prev_tracked_task = get_tracked_task(prev);
+	next_tracked_task = get_tracked_task(next);
+
+	if (!prev_tracked_task && !next_tracked_task)
+		goto unlock_raw_spin;
+
+	if ((prev_tracked_task && !prev_tracked_task->running) && !next_tracked_task)
+		goto unlock_raw_spin;
+
+	if ((prev_tracked_task && prev_tracked_task->running) && next_tracked_task) {
+		prev_tracked_task->running = false;
+		next_tracked_task->running = true;
+		goto unlock_raw_spin;
+	}
+
+	wallclock = fg_ktime_get_ns();
+
+	if (frame_group.nr_running > 0)
+		update_frame_group_load(wallclock);
+
+	if (prev_tracked_task && prev_tracked_task->running) {
+		prev_tracked_task->running = false;
+		frame_group.nr_running--;
+		cpumask_clear_cpu(task_cpu(prev), &frame_group.running_cpumask);
+	}
+
+	if (next_tracked_task) {
+		next_tracked_task->running = true;
+		frame_group.nr_running++;
+		cpumask_set_cpu(task_cpu(prev), &frame_group.running_cpumask);
+	}
+
+	if (frame_group.nr_running > 0)
+		frame_group.mark_start = wallclock;
+
+	systrace_c_printk("nr_running", frame_group.nr_running);
+
+unlock_raw_spin:
+	raw_spin_unlock_irqrestore(&fl_raw_spinlock, flags);
+}
+
+static void frame_android_vh_cpufreq_fast_switch(void *data, struct cpufreq_policy *policy,
+		unsigned int *target_freq, unsigned int old_target_freq)
+{
+	unsigned long flags;
+	u64 wallclock;
+
+	if (!frame_load_track_enable)
+		return;
+
+	raw_spin_lock_irqsave(&fl_raw_spinlock, flags);
+	if (!frame_load_track_enable)
+		goto unlock_raw_spin;
+
+	wallclock = fg_ktime_get_ns();
+
+	if (frame_group.nr_running > 0) {
+		update_frame_group_load(wallclock);
+		frame_group.mark_start = wallclock;
+	}
+
+unlock_raw_spin:
+	raw_spin_unlock_irqrestore(&fl_raw_spinlock, flags);
+}
+
+static void rollover_frame_group_window(void)
+{
+	u64 wallclock = fg_ktime_get_ns();
+	u64 window_size;
+	int i, util;
+	unsigned long flags;
+
+	raw_spin_lock_irqsave(&fl_raw_spinlock, flags);
+
+	if (unlikely(wallclock <= frame_group.window_start))
+		goto out;
+
+	window_size = wallclock - frame_group.window_start;
+
+	if (frame_group.nr_running > 0) {
+		update_frame_group_load(wallclock);
+		frame_group.mark_start = wallclock;
+	}
+
+	systrace_c_printk("window_start", 1);
+	systrace_c_printk("window_start", 0);
+	systrace_c_printk("window_size", window_size);
+
+	for (i = 0; i < cluster_num; i++) {
+		struct sched_cluster_info * cluster = &sched_clusters[i];
+
+		cluster->prev_window_exec = cluster->curr_window_exec;
+		cluster->curr_window_exec = 0;
+		cluster->prev_window_scale = cluster->curr_window_scale;
+		cluster->curr_window_scale = 0;
+		cluster->window_busy = (cluster->prev_window_exec * 100) / window_size;
+		util = div_u64((cluster->prev_window_scale << SCHED_CAPACITY_SHIFT), std_window_size);
+		cluster->window_util = util > 1024 ? 1024 : util;
+
+		if (g_debug_enable == 1) {
+			char buf[64];
+			snprintf(buf, sizeof(buf), "cluster%d_exec\n", i);
+			systrace_c_printk(buf, 0);
+			snprintf(buf, sizeof(buf), "cluster%d_scale\n", i);
+			systrace_c_printk(buf, 0);
+			snprintf(buf, sizeof(buf), "cluster%d_busy\n", i);
+			systrace_c_printk(buf, cluster->window_busy);
+			snprintf(buf, sizeof(buf), "cluster%d_util\n", i);
+			systrace_c_printk(buf, cluster->window_util);
+		}
+	}
+
+	frame_group.prev_window_exec = frame_group.curr_window_exec;
+	frame_group.curr_window_exec = 0;
+	frame_group.prev_window_scale = frame_group.curr_window_scale;
+	frame_group.curr_window_scale = 0;
+	frame_group.window_busy = (frame_group.prev_window_exec * 100) / window_size;
+	util = div_u64((frame_group.prev_window_scale << SCHED_CAPACITY_SHIFT), std_window_size);
+	frame_group.window_util = util > 1024 ? 1024 : util;
+
+	systrace_c_printk("frame_exec", 0);
+	systrace_c_printk("frame_scale", 0);
+	systrace_c_printk("frame_busy", frame_group.window_busy);
+	systrace_c_printk("frame_util", frame_group.window_util);
+
+out:
+	frame_group.window_start = wallclock;
+
+	raw_spin_unlock_irqrestore(&fl_raw_spinlock, flags);
+}
+
+static char frame_load_buf[256];
+static ssize_t flb_len;
+static bool frame_load_is_ready = false;
+
+static void read_frame_load_data(void)
+{
+	int i;
+
+	rollover_frame_group_window();
+
+	memset(frame_load_buf, 0, sizeof(frame_load_buf));
+	flb_len = 0;
+
+	flb_len = snprintf(frame_load_buf, sizeof(frame_load_buf), "%d %d\n",
+			frame_group.window_busy, frame_group.window_util);
+
+	for (i = 0; i < cluster_num; i++) {
+		struct sched_cluster_info * cluster = &sched_clusters[i];
+		flb_len += snprintf(frame_load_buf + flb_len, sizeof(frame_load_buf) - flb_len, "%d %d\n",
+			cluster->window_busy, cluster->window_util);
+	}
+}
+
+void fl_notify_frame_produce(void)
+{
+	if (!frame_load_track_enable)
+		return;
+
+	mutex_lock(&fl_mutex);
+	if (!frame_load_track_enable)
+		goto unlock_mutex;
+
+	read_frame_load_data();
+	frame_load_is_ready = true;
+
+unlock_mutex:
+	mutex_unlock(&fl_mutex);
+}
+
+static int frame_load_show(struct seq_file *m, void *v)
+{
+	mutex_lock(&fl_mutex);
+
+	if (!frame_load_is_ready)
+		read_frame_load_data();
+	frame_load_is_ready = false;
+
+	if (flb_len > 0)
+		seq_puts(m, frame_load_buf);
+
+	mutex_unlock(&fl_mutex);
+
+	return 0;
+}
+
+static int frame_load_proc_open(struct inode *inode, struct file *filp)
+{
+	return single_open(filp, frame_load_show, inode);
+}
+
+static const struct proc_ops frame_load_proc_ops = {
+	.proc_open		= frame_load_proc_open,
+	.proc_read		= seq_read,
+	.proc_lseek		= seq_lseek,
+	.proc_release	= single_release,
+};
+
+static int tracked_tasks_show(struct seq_file *m, void *v)
+{
+	char task_name[TASK_COMM_LEN];
+	int i;
+
+	mutex_lock(&fl_mutex);
+	for (i = 0; i < tracked_task_num; i++) {
+		if (get_task_name(tracked_tasks[i].pid, tracked_tasks[i].task, task_name))
+			seq_printf(m, "comm=%-16s  pid=%-6d\n", task_name, tracked_tasks[i].pid);
+	}
+	mutex_unlock(&fl_mutex);
+
+	return 0;
+}
+
+static int tracked_tasks_proc_open(struct inode *inode, struct file *filp)
+{
+	return single_open(filp, tracked_tasks_show, inode);
+}
+
+static const struct proc_ops tracked_tasks_proc_ops = {
+	.proc_open		= tracked_tasks_proc_open,
+	.proc_read		= seq_read,
+	.proc_lseek		= seq_lseek,
+	.proc_release	= single_release,
+};
+
+static ssize_t std_window_size_proc_write(struct file *file,
+	const char __user *buf, size_t count, loff_t *ppos)
+{
+	char page[32] = {0};
+	int ret, value;
+	unsigned long flags;
+
+	ret = simple_write_to_buffer(page, sizeof(page) - 1, ppos, buf, count);
+	if (ret <= 0)
+		return ret;
+
+	ret = sscanf(page, "%d", &value);
+	if (ret != 1)
+		return -EINVAL;
+
+	raw_spin_lock_irqsave(&fl_raw_spinlock, flags);
+	if (value > 0)
+		std_window_size = value;
+	else
+		std_window_size = FPS_120_WINDOW_SIZE;
+	raw_spin_unlock_irqrestore(&fl_raw_spinlock, flags);
+
+	return count;
+}
+
+static ssize_t std_window_size_proc_read(struct file *file,
+	char __user *buf, size_t count, loff_t *ppos)
+{
+	char page[32] = {0};
+	int len;
+
+	len = sprintf(page, "%llu\n", std_window_size);
+
+	return simple_read_from_buffer(buf, count, ppos, page, len);
+}
+
+static const struct proc_ops std_window_size_proc_ops = {
+	.proc_write		= std_window_size_proc_write,
+	.proc_read		= std_window_size_proc_read,
+	.proc_lseek		= default_llseek,
+};
+
+static void reset_frame_load_state(void)
+{
+	int i;
+
+	/* lockdep_assert_held(&fl_raw_spinlock); */
+
+	tracked_task_num = 0;
+	frame_group.nr_running = 0;
+	cpumask_clear(&frame_group.running_cpumask);
+
+	for (i = 0; i < cluster_num; i++) {
+		struct sched_cluster_info * cluster = &sched_clusters[i];
+
+		cluster->prev_window_exec = 0;
+		cluster->curr_window_exec = 0;
+		cluster->prev_window_scale = 0;
+		cluster->curr_window_scale = 0;
+		cluster->window_busy = 0;
+		cluster->window_util = 0;
+	}
+
+	frame_group.prev_window_exec = 0;
+	frame_group.curr_window_exec = 0;
+	frame_group.prev_window_scale = 0;
+	frame_group.curr_window_scale = 0;
+	frame_group.window_busy = 0;
+	frame_group.window_util = 0;
+
+	frame_group.window_start = fg_ktime_get_ns();
+}
+
+static ssize_t flt_enable_proc_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
+{
+	char page[32] = {0};
+	int ret, value;
+	unsigned long flags;
+
+	ret = simple_write_to_buffer(page, sizeof(page) - 1, ppos, buf, count);
+	if (ret <= 0)
+		return ret;
+
+	ret = sscanf(page, "%d", &value);
+	if (ret != 1)
+		return -EINVAL;
+
+	/* one time */
+	frame_load_init_delay();
+
+	mutex_lock(&fl_mutex);
+	raw_spin_lock_irqsave(&fl_raw_spinlock, flags);
+
+	frame_load_track_enable = value > 0 ? true : false;
+	reset_frame_load_state();
+
+	raw_spin_unlock_irqrestore(&fl_raw_spinlock, flags);
+	mutex_unlock(&fl_mutex);
+
+	return count;
+}
+
+static ssize_t flt_enable_proc_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
+{
+	char page[32] = {0};
+	int len;
+
+	len = sprintf(page, "%d\n", frame_load_track_enable ? 1 : 0);
+
+	return simple_read_from_buffer(buf, count, ppos, page, len);
+}
+
+static const struct proc_ops flt_enable_proc_ops = {
+	.proc_write		= flt_enable_proc_write,
+	.proc_read		= flt_enable_proc_read,
+	.proc_lseek		= default_llseek,
+};
+
+static void frame_load_init_delay(void)
+{
+	static bool initialized = false;
+
+	if (!initialized) {
+		build_sched_cluster_info();
+
+		register_syscore_ops(&fg_syscore_ops);
+
+		register_trace_sched_switch(frame_sched_switch, NULL);
+		register_trace_android_vh_cpufreq_fast_switch(frame_android_vh_cpufreq_fast_switch, NULL);
+
+		proc_create_data("tracked_tasks", 0440, frame_load_track_dir, &tracked_tasks_proc_ops, NULL);
+		proc_create_data("std_window_size", 0660, frame_load_track_dir, &std_window_size_proc_ops, NULL);
+		proc_create_data("frame_load", 0440, frame_load_track_dir, &frame_load_proc_ops, NULL);
+
+		initialized = true;
+	}
+}
+
+void frame_load_init(void)
+{
+	frame_load_track_dir = proc_mkdir("frame_load_track", game_opt_dir);
+	if (!frame_load_track_dir) {
+		pr_err("fail to mkdir /proc/game_opt/frame_load_track\n");
+		return;
+	}
+
+	proc_create_data("flt_enable", 0660, frame_load_track_dir, &flt_enable_proc_ops, NULL);
+}
diff --git a/vendor/oplus/kernel/cpu/game_opt/frame_sync.c b/vendor/oplus/kernel/cpu/game_opt/frame_sync.c
index 6b56020e..90ba8780 100755
--- a/vendor/oplus/kernel/cpu/game_opt/frame_sync.c
+++ b/vendor/oplus/kernel/cpu/game_opt/frame_sync.c
@@ -9,6 +9,7 @@
 #include "frame_sync.h"
 #include "game_ctrl.h"
 #include "task_boost/heavy_task_boost.h"
+#include "critical_task_boost.h"
 
 #if IS_ENABLED(CONFIG_OPLUS_FEATURE_GEAS)
 #include 
@@ -24,8 +25,6 @@ struct gameopt_frame_data produce_data;
 struct gameopt_frame_data consume_data;
 struct gameopt_frame_data tl_pred_data;
 
-#include "critical_task_boost.h"
-
 int epoll_notify(struct ctl_table* ro_table, int write, void* buffer, size_t* lenp, loff_t* ppos) {
     return 0;
 }
@@ -71,12 +70,15 @@ static long sync_ctrl_ioctl(struct file* file, unsigned int cmd, unsigned long a
             data.mode = NOTIFY_FRAME_PRODUCE;
             produce_data = data;
             read_pointer = &produce_data;
+             /* read load data befor wakeup the user space */
+            cl_notify_frame_produce();
+            fl_notify_frame_produce();
             ret = notify_wait_fd();
 #if IS_ENABLED(CONFIG_OPLUS_FEATURE_GEAS)
             bwmon_on_frame_event(255, 1);
 #endif
-			htb_notify_frame_produce();
-			notify_frame_produdce();
+            htb_notify_frame_produce();
+            ctb_notify_frame_produce();
         break;
 
         case CMD_ID_GAMEOPT_EPOLL_CONSUME:
@@ -89,19 +91,21 @@ static long sync_ctrl_ioctl(struct file* file, unsigned int cmd, unsigned long a
         case CMD_ID_GAMEOPT_EPOLL_TLPRED:
             tl_pred_data = data;
             read_pointer = &tl_pred_data;
+            /* read load data befor wakeup the user space */
+            cl_notify_frame_produce();
+            fl_notify_frame_produce();
             ret = notify_wait_fd();
 #if IS_ENABLED(CONFIG_OPLUS_FEATURE_GEAS)
             bwmon_on_frame_event(255, 1);
 #endif
-			htb_notify_frame_produce();
-			notify_frame_produdce();
+            htb_notify_frame_produce();
+            ctb_notify_frame_produce();
         break;
 
         default:
             ret = reset_wait_event_cnt();
         break;
     }
-
     return ret;
 }
 
@@ -144,7 +148,7 @@ static int consume_open(struct inode *inode, struct file *file) {
 
 static int tl_pred_read(struct seq_file *m, void *v) {
     if (read_pointer != NULL) {
-        seq_printf(m, "%ld;%ld;%d;%d\n", read_pointer->timeStamp1, read_pointer->timeStamp2, read_pointer->bufferN, read_pointer->mode);
+        seq_printf(m, "%ld:%ld:%d:%d\n", read_pointer->timeStamp1, read_pointer->timeStamp2, read_pointer->bufferN, read_pointer->mode);
     }
     return 0;
 }
diff --git a/vendor/oplus/kernel/cpu/game_opt/game_ctrl.c b/vendor/oplus/kernel/cpu/game_opt/game_ctrl.c
index 7dab6653..a6447351 100755
--- a/vendor/oplus/kernel/cpu/game_opt/game_ctrl.c
+++ b/vendor/oplus/kernel/cpu/game_opt/game_ctrl.c
@@ -9,6 +9,7 @@
 #include 
 
 #include "game_ctrl.h"
+#include "dsu_freq.h"
 
 struct proc_dir_entry *game_opt_dir = NULL;
 struct proc_dir_entry *early_detect_dir = NULL;
@@ -37,12 +38,15 @@ static int __init game_ctrl_init(void)
 	}
 
 	cpu_load_init();
+	frame_load_init();
 	cpufreq_limits_init();
 	early_detect_init();
 	task_util_init();
 	rt_info_init();
 	fake_cpufreq_init();
 	debug_init();
+	dsu_freq_init();
+
 
 	return 0;
 }
diff --git a/vendor/oplus/kernel/cpu/game_opt/game_ctrl.h b/vendor/oplus/kernel/cpu/game_opt/game_ctrl.h
index 0376cdbc..dd9a3170 100755
--- a/vendor/oplus/kernel/cpu/game_opt/game_ctrl.h
+++ b/vendor/oplus/kernel/cpu/game_opt/game_ctrl.h
@@ -13,6 +13,8 @@
 #define MAX_TID_COUNT 256
 #define MAX_TASK_NR 18
 #define RESULT_PAGE_SIZE 1024
+#define MAX_TRACKED_TASK_NUM 10
+#define MAX_SCHED_CLUSTER_NUM 5
 
 extern struct proc_dir_entry *game_opt_dir;
 extern struct proc_dir_entry *early_detect_dir;
@@ -29,6 +31,7 @@ extern inline void systrace_c_signed_printk(const char *msg, long val);
 extern inline void htb_systrace_c_printk(const char *prefix, int digit, const char *comm, int val);
 
 int cpu_load_init(void);
+void frame_load_init(void);
 int cpufreq_limits_init(void);
 int task_util_init(void);
 int rt_info_init(void);
@@ -39,6 +42,9 @@ int debug_init(void);
 bool get_task_name(pid_t pid, struct task_struct *in_task, char *name);
 void ui_assist_threads_wake_stat(struct task_struct *task);
 bool task_is_fair(struct task_struct *task);
+void add_tasks_to_frame_group(pid_t *tracked_pids, int tracked_pid_num);
+void cl_notify_frame_produce(void);
+void fl_notify_frame_produce(void);
 
 /*----------------------------- early detect start -----------------------------*/
 enum ED_BOOST_TYPE {
diff --git a/vendor/oplus/kernel/cpu/game_opt/oplus_local_modules.bzl b/vendor/oplus/kernel/cpu/game_opt/oplus_local_modules.bzl
index 42cf7b07..ee5310ad 100755
--- a/vendor/oplus/kernel/cpu/game_opt/oplus_local_modules.bzl
+++ b/vendor/oplus/kernel/cpu/game_opt/oplus_local_modules.bzl
@@ -14,12 +14,14 @@ def define_oplus_local_modules():
             "cpu_load.c",
             "cpufreq_limits.c",
             "debug.c",
+            "dsu_freq.c",
             "early_detect.c",
             "fake_cpufreq.c",
             "game_ctrl.c",
             "rt_info.c",
             "task_util.c",
             "yield_opt.c",
+            "frame_load.c",
             "frame_sync.c",
             "task_boost/heavy_task_boost.c",
             "task_boost/boost_proc.c",
diff --git a/vendor/oplus/kernel/cpu/game_opt/rt_info.c b/vendor/oplus/kernel/cpu/game_opt/rt_info.c
index 534a7c0c..1550d927 100755
--- a/vendor/oplus/kernel/cpu/game_opt/rt_info.c
+++ b/vendor/oplus/kernel/cpu/game_opt/rt_info.c
@@ -30,7 +30,7 @@ static int rt_num = 0;
 static int total_num = 0;
 static pid_t game_tgid = -1;
 
-static DEFINE_RWLOCK(rt_info_rwlock);
+static DEFINE_RAW_SPINLOCK(rt_info_lock);
 atomic_t have_valid_render_pid = ATOMIC_INIT(0);
 
 static inline bool same_rt_thread_group(struct task_struct *waker,
@@ -40,7 +40,7 @@ static inline bool same_rt_thread_group(struct task_struct *waker,
 }
 
 static inline bool sf_app_wakeup_game_thread(struct task_struct *waker,
-        struct task_struct *wakee)
+		struct task_struct *wakee)
 {
 	/*
 	 * surfaceflinger app thread start game logic every frame
@@ -82,6 +82,7 @@ static void try_to_wake_up_success_hook(void *unused, struct task_struct *task)
 {
 	struct render_related_thread *wakee;
 	struct render_related_thread *waker;
+	unsigned long flags;
 
 	ui_assist_threads_wake_stat(task);
 
@@ -101,7 +102,7 @@ static void try_to_wake_up_success_hook(void *unused, struct task_struct *task)
 	 * only update wake stat when lock is available,
 	 * if not available, skip.
 	 */
-	if (write_trylock(&rt_info_rwlock)) {
+	if (raw_spin_trylock_irqsave(&rt_info_lock, flags)) {
 		if (sf_app_wakeup_game_thread(current, task)) {
 			wakee = find_related_thread(task);
 			if (!wakee) {
@@ -157,11 +158,19 @@ static void try_to_wake_up_success_hook(void *unused, struct task_struct *task)
 		}
 
 unlock:
-		write_unlock(&rt_info_rwlock);
+		raw_spin_unlock_irqrestore(&rt_info_lock, flags);
 	}
 	heavy_task_boost(task, related_threads, total_num);
 }
 
+static bool need_tracked_task(char *name)
+{
+	bool skip = strstr(name, "binder:") || strstr(name, "HwBinder:") ||
+				strstr(name, "AudioTrack") || strstr(name, "NativeThread");
+
+	return !skip;
+}
+
 /*
  * Ascending order by wake_count
  */
@@ -189,7 +198,10 @@ static int rt_info_show(struct seq_file *m, void *v)
 	struct render_related_thread *results;
 	char *page;
 	char task_name[TASK_COMM_LEN];
+	pid_t tracked_pids[MAX_TRACKED_TASK_NUM];
+	int tracked_pid_num = 0;
 	ssize_t len = 0;
+	unsigned long flags;
 
 	if (atomic_read(&have_valid_render_pid) == 0)
 		return -ESRCH;
@@ -203,7 +215,7 @@ static int rt_info_show(struct seq_file *m, void *v)
 		return -ENOMEM;
 	}
 
-	read_lock(&rt_info_rwlock);
+	raw_spin_lock_irqsave(&rt_info_lock, flags);
 	for (i = 0; i < total_num; i++) {
 		results[i].pid = related_threads[i].pid;
 		results[i].task = related_threads[i].task;
@@ -215,7 +227,7 @@ static int rt_info_show(struct seq_file *m, void *v)
 	result_num = total_num;
 	gl_num = rt_num;
 	total_num = rt_num;
-	read_unlock(&rt_info_rwlock);
+	raw_spin_unlock_irqrestore(&rt_info_lock, flags);
 
 	if (unlikely(gl_num > 1)) {
 		sort(&results[0], gl_num,
@@ -229,11 +241,19 @@ static int rt_info_show(struct seq_file *m, void *v)
 
 	for (i = 0; i < result_num && i < MAX_TASK_NR; i++) {
 		if (get_task_name(results[i].pid, results[i].task, task_name)) {
+			if ((tracked_pid_num < MAX_TRACKED_TASK_NUM) && need_tracked_task(task_name)) {
+				tracked_pids[tracked_pid_num] = results[i].pid;
+				tracked_pid_num++;
+			}
+
 			len += snprintf(page + len, RESULT_PAGE_SIZE - len, "%d;%s;%u\n",
 				results[i].pid, task_name, results[i].wake_count);
 		}
 	}
 
+	if (tracked_pid_num > 0)
+		add_tasks_to_frame_group(tracked_pids, tracked_pid_num);
+
 	if (len > 0)
 		seq_puts(m, page);
 
@@ -268,6 +288,7 @@ static ssize_t rt_info_proc_write(struct file *file, const char __user *buf,
 	char *iter = page;
 	struct task_struct *task;
 	pid_t pid;
+	unsigned long flags;
 
 	ret = simple_write_to_buffer(page, sizeof(page) - 1, ppos, buf, count);
 	if (ret <= 0)
@@ -275,7 +296,7 @@ static ssize_t rt_info_proc_write(struct file *file, const char __user *buf,
 
 	atomic_set(&have_valid_render_pid, 0);
 
-	write_lock(&rt_info_rwlock);
+	raw_spin_lock_irqsave(&rt_info_lock, flags);
 
 	for (i = 0; i < rt_num; i++) {
 		if (related_threads[i].task)
@@ -332,7 +353,7 @@ static ssize_t rt_info_proc_write(struct file *file, const char __user *buf,
 		}
 	}
 
-	write_unlock(&rt_info_rwlock);
+	raw_spin_unlock_irqrestore(&rt_info_lock, flags);
 
 	return count;
 }
@@ -350,8 +371,9 @@ static int rt_num_show(struct seq_file *m, void *v)
 	char page[256] = {0};
 	ssize_t len = 0;
 	int i;
+	unsigned long flags;
 
-	read_lock(&rt_info_rwlock);
+	raw_spin_lock_irqsave(&rt_info_lock, flags);
 	len += snprintf(page + len, sizeof(page) - len, "rt_num=%d total_num=%d\n",
 		rt_num, total_num);
 	for (i = 0; i < rt_num; i++) {
@@ -359,7 +381,7 @@ static int rt_num_show(struct seq_file *m, void *v)
 			related_threads[i].task->tgid, related_threads[i].task->pid,
 			related_threads[i].task->comm);
 	}
-	read_unlock(&rt_info_rwlock);
+	raw_spin_unlock_irqrestore(&rt_info_lock, flags);
 
 	seq_puts(m, page);
 
@@ -384,28 +406,62 @@ static void register_rt_info_vendor_hooks(void)
 	register_trace_android_rvh_try_to_wake_up_success(try_to_wake_up_success_hook, NULL);
 }
 
-int get_critical_task_state(const char *name, pid_t pid)
+int check_task_name(const char *name)
 {
+	int name_len;
+	if (!name || strlen(name) >= TASK_COMM_LEN) {
+		return -1;
+	}
 	if (total_num <= 0 || atomic_read(&have_valid_render_pid) == 0) {
 		return -1;
 	}
-	struct task_struct *task = NULL;
-	int name_len = strlen(name);
-	for (int i = 0; i < total_num; i++) {
+	name_len = strlen(name);
+	return name_len;
+}
+
+int get_critical_task_by_name(const char *name, struct task_struct **task)
+{
+	int name_len, i;
+	unsigned long flags;
+
+	name_len = check_task_name(name);
+
+	if (name_len < 0)
+		return -1;
+
+	raw_spin_lock_irqsave(&rt_info_lock, flags);
+	for (i = 0; i < total_num; i++) {
 		if (strncmp(name, related_threads[i].task->comm, name_len) == 0) {
-			task = related_threads[i].task;
+			*task = get_pid_task(find_vpid(related_threads[i].pid), PIDTYPE_PID);
 			break;
 		}
 	}
-	if (task == NULL || task_pid_nr(task) != pid) {
-		return -1;
-	}
+	raw_spin_unlock_irqrestore(&rt_info_lock, flags);
+	return 0;
+}
 
-	if (task_is_running(task)) {
-		return 0;
-	} else {
-		return 1;
+int get_critical_task_state(const char *name, pid_t pid)
+{
+	int state = -1;
+	int name_len, i;
+	unsigned long flags;
+
+	name_len = check_task_name(name);
+
+	if (name_len < 0)
+		return -1;
+
+	raw_spin_lock_irqsave(&rt_info_lock, flags);
+	for (i = 0; i < total_num; i++) {
+		if (strncmp(name, related_threads[i].task->comm, name_len) == 0) {
+			if (related_threads[i].pid == pid) {
+				state = task_is_running(related_threads[i].task) ? 0 : 1;
+			}
+			break;
+		}
 	}
+	raw_spin_unlock_irqrestore(&rt_info_lock, flags);
+	return state;
 }
 
 int rt_info_init(void)
diff --git a/vendor/oplus/kernel/cpu/game_opt/task_boost/heavy_task_boost.c b/vendor/oplus/kernel/cpu/game_opt/task_boost/heavy_task_boost.c
index 6e757f02..bcd47c62 100644
--- a/vendor/oplus/kernel/cpu/game_opt/task_boost/heavy_task_boost.c
+++ b/vendor/oplus/kernel/cpu/game_opt/task_boost/heavy_task_boost.c
@@ -29,6 +29,7 @@ struct render_related_thread {
 struct heavy_task {
 	struct task_struct *task;
 	u64 last_wake_time;
+	pid_t pid;
 	int cluster;
 	bool boosting;
 };
@@ -36,11 +37,11 @@ static int htsks_num = 0;
 static struct heavy_task heavy_tasks[MAX_HEAVY_TASK_COUNT];
 static int boosted_htsks_num = 0;
 
-static struct task_struct *renders[RENDER_COUNT] = { NULL };
-static int policy_num;
-static int *policy2cpu;
-static int *clusters_boost_state;
-static unsigned long cluster_bitmap;
+static pid_t renders[RENDER_COUNT] = { -1, -1 };
+static int policy_num = 0;
+static int policy2cpu[NR_CPUS] = { 0 };
+static int clusters_boost_state[NR_CPUS] = { 0 };
+static unsigned long cluster_bitmap = 0;
 
 static u64 heavy_task_threshold = STANDARD_FRAME_INTERVAL;
 static u64 frame_produce_time;
@@ -57,32 +58,50 @@ static cpumask_var_t limit_cpumask;
 
 static int boost_strategy = 0;
 static bool htb_enable = false;
+static bool cpu_topo_info_inited = false;
 
-static inline bool render_is_running(void)
+static noinline bool render_is_running(void)
 {
-	return (renders[0] == NULL ? false : task_is_running(renders[0])) ||
-	       (renders[1] == NULL ? false : task_is_running(renders[1]));
+	int i;
+	struct task_struct *p;
+	for (i = 0; i < RENDER_COUNT; i++) {
+		if (renders[i] == -1)
+			continue;
+		p = get_pid_task(find_vpid(renders[i]), PIDTYPE_PID);
+		if (p) {
+			if (task_is_running(p)) {
+				put_task_struct(p);
+				return true;
+			}
+			put_task_struct(p);
+		}
+	}
+	return false;
 }
 
-static inline bool is_gc_marker_thread(struct task_struct *p)
+static noinline bool is_gc_marker_thread(struct task_struct *p)
 {
 	return (strncmp(p->comm, GC_MARKER_PREFIX, strlen(GC_MARKER_PREFIX)) ==
 		0);
 }
 
-static inline bool should_boost(struct heavy_task *htsk, u64 running_time)
+static noinline bool should_boost(struct heavy_task *htsk, u64 running_time,
+				bool render_running)
 {
 	return !htsk->boosting &&
-	       (!render_is_running() || is_gc_marker_thread(htsk->task)) &&
+	       (!render_running || is_gc_marker_thread(htsk->task)) &&
 	       running_time > heavy_task_threshold;
 }
 
-static inline int get_task_cpu_cluster(struct task_struct *task)
+static noinline int get_task_cpu_cluster(struct task_struct *task)
 {
-	return cpu_topology[task_cpu(task)].cluster_id;
+	int cpu = task_cpu(task);
+	if (cpu < 0 || cpu >= NR_CPUS) return 0;
+	int ci = cpu_topology[task_cpu(task)].cluster_id;
+	return (ci >= 0 && ci < NR_CPUS) ? ci : 0;
 }
 
-static bool is_render_related_thread(struct task_struct *task,
+static noinline bool is_render_related_thread(struct task_struct *task,
 				     struct render_related_thread *rrt,
 				     int rrt_num)
 {
@@ -95,28 +114,29 @@ static bool is_render_related_thread(struct task_struct *task,
 	return false;
 }
 
-static bool is_render_thread(struct task_struct *p)
+static noinline bool is_render_thread(struct task_struct *p)
 {
 	return (strncmp(p->comm, "UnityMain", 9) == 0) ||
 	       (strncmp(p->comm, "UnityGfx", 8) == 0);
 }
 
-static void update_renders(struct task_struct *p)
+static noinline void update_renders(struct task_struct *p)
 {
 	if (strncmp(p->comm, "UnityMain", 9) == 0) {
-		renders[0] = p;
+		renders[0] =
+			renders[0] == -1 ? p->pid : min(renders[0], p->pid);
 	} else {
-		renders[1] = p;
+		renders[1] = p->pid;
 	}
 }
 
-static void cancel_boost(unsigned long flags)
+static noinline void cancel_boost(unsigned long flags)
 {
 	int cpu, cluster;
 
 	mutex_lock(&htb_mutex);
 	cpumask_clear(limit_cpumask);
-	for (cluster = 0; cluster < policy_num; cluster++) {
+	for (cluster = 0; cluster < policy_num && cluster < NR_CPUS; cluster++) {
 		if (flags & (1 << cluster)) {
 			cpu = policy2cpu[cluster];
 			cpumask_set_cpu(cpu, limit_cpumask);
@@ -128,7 +148,7 @@ static void cancel_boost(unsigned long flags)
 	mutex_unlock(&htb_mutex);
 }
 
-static bool try_to_cancel_boost(struct heavy_task *htsk)
+static noinline bool try_to_cancel_boost(struct heavy_task *htsk)
 {
 	if (htsk->boosting) {
 		htb_systrace_c_printk("boosting", htsk->task->pid,
@@ -142,28 +162,27 @@ static bool try_to_cancel_boost(struct heavy_task *htsk)
 	return false;
 }
 
-static unsigned long try_to_cancel_boost_all(bool reset_wake_time)
+static noinline unsigned long try_to_cancel_boost_all(bool reset_wake_time)
 {
 	int i;
 	unsigned long flags = 0;
-	for (i = 0; i < htsks_num; i++) {
+	for (i = 0; i < htsks_num && i < MAX_HEAVY_TASK_COUNT; i++) {
 		if (try_to_cancel_boost(&heavy_tasks[i])) {
 			flags |= (1 << heavy_tasks[i].cluster);
 		}
 		if (reset_wake_time)
 			heavy_tasks[i].last_wake_time = 0;
 	}
-	boosted_htsks_num = 0;
 	return flags;
 }
 
-static void do_boost(unsigned long flags)
+static noinline void do_boost(unsigned long flags)
 {
 	int cpu, cluster;
 
 	mutex_lock(&htb_mutex);
 	cpumask_clear(limit_cpumask);
-	for (cluster = 0; cluster < policy_num; cluster++) {
+	for (cluster = 0; cluster < policy_num && cluster < NR_CPUS; cluster++) {
 		if (flags & (1 << cluster)) {
 			cpu = policy2cpu[cluster];
 			cpumask_set_cpu(cpu, limit_cpumask);
@@ -175,34 +194,57 @@ static void do_boost(unsigned long flags)
 	mutex_unlock(&htb_mutex);
 }
 
-static void check_htsks_full(void)
+static noinline void check_htsks_full(void)
 {
+	int i;
 	if (htsks_num >= MAX_HEAVY_TASK_COUNT) {
 		systrace_c_signed_printk("reset htsk_array", 1);
 		systrace_c_signed_printk("reset htsk_array", 0);
+		for (i = boosted_htsks_num; i < htsks_num && i < MAX_HEAVY_TASK_COUNT; i++) {
+			heavy_tasks[i].task = NULL;
+		}
 		htsks_num = boosted_htsks_num;
+		if (htsks_num >= MAX_HEAVY_TASK_COUNT) {
+			htsks_num = 0;
+			boosted_htsks_num = 0;
+		}
 	}
 }
 
-static void add_new_heavy_task(struct task_struct *p)
+static noinline bool is_in_heavy_tasks(pid_t pid)
+{
+	int i;
+	for (i = 0; i < htsks_num && i < MAX_HEAVY_TASK_COUNT; i++) {
+		if (heavy_tasks[i].pid == pid)
+			return true;
+	}
+	return false;
+}
+
+static noinline void add_new_heavy_task(struct task_struct *p)
 {
 	check_htsks_full();
-	heavy_tasks[htsks_num].task = current;
+	heavy_tasks[htsks_num].task = p;
+	heavy_tasks[htsks_num].pid = p->pid;
 	heavy_tasks[htsks_num].last_wake_time = 0;
 	heavy_tasks[htsks_num].boosting = false;
-	heavy_tasks[htsks_num].cluster = get_task_cpu_cluster(current);
+	heavy_tasks[htsks_num].cluster = get_task_cpu_cluster(p);
 	htsks_num++;
 }
 
-static void update_heavy_tasks(struct task_struct *task,
+static noinline void update_heavy_tasks(struct task_struct *task,
 			       struct render_related_thread *rrt, int rrt_num)
 {
 	int i;
 	unsigned long flags;
 	bool in_heavy_tasks = false;
 
+	if (!is_render_related_thread(task, rrt, rrt_num) ||
+	    !is_render_related_thread(current, rrt, rrt_num)) {
+		return;
+	}
 	raw_spin_lock_irqsave(&htb_spinlock, flags);
-	for (i = 0; i < htsks_num; i++) {
+	for (i = 0; i < htsks_num && i < MAX_HEAVY_TASK_COUNT; i++) {
 		if (heavy_tasks[i].task == task) {
 			heavy_tasks[i].last_wake_time = ktime_get_ns();
 			heavy_tasks[i].cluster = get_task_cpu_cluster(task);
@@ -212,12 +254,7 @@ static void update_heavy_tasks(struct task_struct *task,
 		}
 	}
 
-	/*
-	 * Add task that may block render to heavy tasks array.
-	 * Right now just set last_wake_time to 0.
-	 */
 	if (!in_heavy_tasks && is_render_thread(task) &&
-	    is_render_related_thread(task, rrt, rrt_num) &&
 	    !is_render_thread(current)) {
 		update_renders(task);
 		add_new_heavy_task(current);
@@ -227,35 +264,74 @@ out:
 	raw_spin_unlock_irqrestore(&htb_spinlock, flags);
 }
 
-void heavy_task_boost(struct task_struct *task, void *rrt, int rrt_num)
+noinline void heavy_task_boost(struct task_struct *task, void *rrt, int rrt_num)
 {
-	if (!htb_enable) {
+	if (!htb_enable || !cpu_topo_info_inited) {
 		return;
 	}
-
 	update_heavy_tasks(task, (struct render_related_thread *)rrt, rrt_num);
 }
 
-static void swap_boosted_htsk(int idx)
+static noinline void swap_boosted_htsk(int idx)
 {
-	if (idx >= boosted_htsks_num) {
+	if (idx >= boosted_htsks_num && idx < MAX_HEAVY_TASK_COUNT && boosted_htsks_num < MAX_HEAVY_TASK_COUNT) {
 		struct heavy_task tmp = heavy_tasks[boosted_htsks_num];
 		heavy_tasks[boosted_htsks_num] = heavy_tasks[idx];
 		heavy_tasks[idx] = tmp;
-		if (++boosted_htsks_num >= MAX_HEAVY_TASK_COUNT) {
+		++boosted_htsks_num;
+		if (boosted_htsks_num >= htsks_num || boosted_htsks_num >= MAX_HEAVY_TASK_COUNT) {
 			boosted_htsks_num = 0;
 		}
 	}
 }
 
-static u64 calculate_running_time(u64 now, u64 last_wake_time, int strategy)
+static noinline u64 calculate_running_time(u64 now, u64 last_wake_time, int strategy)
 {
 	return strategy > 0 ?
 		       now - frame_produce_time - (heavy_task_threshold / 10) :
 		       now - last_wake_time;
 }
 
-static void htb_work_fn(struct kthread_work *work)
+static noinline void mark_cancel_flags(int i, struct task_struct *p, int cluster,
+			      unsigned long *cancel_flags,
+			      bool *gc_marker_is_boosting)
+{
+	/*
+	* When a boosting task is migrated to another cluster, cancel it and
+	* boost it in the new cluster if possible.
+	*/
+	if (i >= MAX_HEAVY_TASK_COUNT) return;
+	if (heavy_tasks[i].boosting && get_task_cpu_cluster(p) != cluster) {
+		if (try_to_cancel_boost(&heavy_tasks[i])) {
+			*cancel_flags = (*cancel_flags) | (1 << cluster);
+		}
+	}
+
+	if (is_gc_marker_thread(p) && heavy_tasks[i].boosting) {
+		*gc_marker_is_boosting = true;
+	}
+}
+
+static noinline void mark_boost_flags(int i, struct task_struct *p, int cluster,
+			     u64 running_time, bool render_running,
+			     unsigned long *boost_flags)
+{
+	if (i >= MAX_HEAVY_TASK_COUNT) return;
+	if (should_boost(&heavy_tasks[i], running_time, render_running)) {
+		htb_systrace_c_printk("boosting", p->pid, p->comm,
+				      (task_rq(p)->cpu + 1));
+		heavy_tasks[i].boosting = true;
+		cluster = get_task_cpu_cluster(p);
+		heavy_tasks[i].cluster = cluster;
+		clusters_boost_state[cluster]++;
+		swap_boosted_htsk(i);
+		if (clusters_boost_state[cluster] == 1) {
+			*boost_flags = (*boost_flags) | (1 << cluster);
+		}
+	}
+}
+
+static noinline void htb_work_fn(struct kthread_work *work)
 {
 	int i, cluster;
 	bool render_running = false, gc_marker_is_boosting = false;
@@ -263,81 +339,49 @@ static void htb_work_fn(struct kthread_work *work)
 	u64 now, last_wake_time, running_time;
 	struct task_struct *p;
 
-	systrace_c_signed_printk("check boost", 1);
+	if (!htb_enable || !cpu_topo_info_inited)
+		return;
 
+	systrace_c_signed_printk("check boost", 1);
+	render_running = render_is_running();
 	raw_spin_lock_irqsave(&htb_spinlock, flags);
-	for (i = 0; i < htsks_num; i++) {
-		now = ktime_get_ns();
-		p = heavy_tasks[i].task;
+	for (i = 0; i < htsks_num && i < MAX_HEAVY_TASK_COUNT; i++) {
+		p = get_pid_task(find_vpid(heavy_tasks[i].pid), PIDTYPE_PID);
+		if (p == NULL || p != heavy_tasks[i].task)
+			continue;
 		cluster = heavy_tasks[i].cluster;
 		last_wake_time = heavy_tasks[i].last_wake_time;
-
+		now = ktime_get_ns();
 		running_time = 0;
-		if (READ_ONCE((p)->__state) == TASK_RUNNING &&
-		    last_wake_time != 0 && likely(now > last_wake_time)) {
+		if (task_is_running(p) && last_wake_time != 0 &&
+		    likely(now > last_wake_time)) {
 			running_time = calculate_running_time(
 				now, last_wake_time, boost_strategy);
-		} else {
-			if (try_to_cancel_boost(&heavy_tasks[i])) {
-				cancel_flags |= (1 << cluster);
-			}
+		} else if (try_to_cancel_boost(&heavy_tasks[i])) {
+			cancel_flags |= (1 << cluster);
 		}
-
 		if (task_is_running(p) && last_wake_time == 0) {
 			heavy_tasks[i].last_wake_time = now;
 		}
-
 		if (running_time == 0) {
+			put_task_struct(p);
 			continue;
 		}
-
-		/*
-		 * When a boosting task is migrated to another cluster, cancel it and
-		 * boost it in the new cluster if possible.
-		 */
-		if (heavy_tasks[i].boosting &&
-		    get_task_cpu_cluster(p) != cluster) {
-			if (try_to_cancel_boost(&heavy_tasks[i])) {
-				cancel_flags |= (1 << cluster);
-			}
-		}
-
-		if (is_gc_marker_thread(p) && heavy_tasks[i].boosting) {
-			gc_marker_is_boosting = true;
-		}
-
-		if (should_boost(&heavy_tasks[i], running_time)) {
-			htb_systrace_c_printk("boosting", p->pid, p->comm,
-					      (task_rq(p)->cpu + 1));
-			heavy_tasks[i].boosting = true;
-			cluster = get_task_cpu_cluster(p);
-			heavy_tasks[i].cluster = cluster;
-			clusters_boost_state[cluster]++;
-			swap_boosted_htsk(i);
-			if (clusters_boost_state[cluster] == 1) {
-				boost_flags |= (1 << cluster);
-			}
-		} else if (render_is_running()) {
-			render_running = true;
-			break;
-		}
+		mark_cancel_flags(i, p, cluster, &cancel_flags,
+				  &gc_marker_is_boosting);
+		mark_boost_flags(i, p, cluster, running_time, render_running,
+				 &boost_flags);
+		put_task_struct(p);
 	}
 
 	if (render_running && !gc_marker_is_boosting) {
-		/* If the render restores running state, cancel all boost */
 		cancel_flags |= try_to_cancel_boost_all(false);
 	}
-
-	for (i = 0; i < policy_num; i++) {
-		htb_systrace_c_printk("clst stt", i, "",
-				      clusters_boost_state[i]);
-	}
 	raw_spin_unlock_irqrestore(&htb_spinlock, flags);
 
 	if (cancel_flags > 0) {
 		cancel_boost(cancel_flags);
 	}
-
 	if (boost_flags > 0) {
 		is_boosting = true;
 		do_boost(boost_flags);
@@ -345,7 +389,7 @@ static void htb_work_fn(struct kthread_work *work)
 	systrace_c_signed_printk("check boost", 0);
 }
 
-static int htb_kthread_create(void)
+static noinline int htb_kthread_create(void)
 {
 	int ret;
 	struct sched_param param = {.sched_priority = MAX_RT_PRIO - 1 };
@@ -371,7 +415,7 @@ static int htb_kthread_create(void)
 	return 0;
 }
 
-static void sched_switch_hook(void *unused, bool preempt,
+static noinline void sched_switch_hook(void *unused, bool preempt,
 			      struct task_struct *prev,
 			      struct task_struct *next, unsigned int prev_state)
 {
@@ -379,75 +423,59 @@ static void sched_switch_hook(void *unused, bool preempt,
 	unsigned long flags;
 	pid_t pid;
 	struct heavy_task *htsk;
-	u64 now;
 
-	if (!htb_enable)
+	if (!htb_enable || !cpu_topo_info_inited)
 		return;
 
 	raw_spin_lock_irqsave(&htb_spinlock, flags);
-	for (i = 0; i < htsks_num; i++) {
+	for (i = 0; i < htsks_num && i < MAX_HEAVY_TASK_COUNT; i++) {
 		htsk = &heavy_tasks[i];
-		pid = htsk->task->pid;
-		now = ktime_get_ns();
+		pid = htsk->pid;
 		if (prev->pid == pid && prev_state > TASK_UNINTERRUPTIBLE) {
 			htsk->last_wake_time = 0;
 			break;
 		}
 	}
-	if (is_gc_marker_thread(next)) {
+	if (is_gc_marker_thread(next) && !is_in_heavy_tasks(next->pid)) {
 		add_new_heavy_task(next);
 	}
 	raw_spin_unlock_irqrestore(&htb_spinlock, flags);
 }
 
-static void cpu_policy_init(void)
+static noinline int cpu_topo_info_init(void)
 {
-	int i, cpu;
-	struct cpufreq_policy *policy;
-
+	int cpu, ci, cur_ci;
 	policy_num = 0;
+	ci = -1;
 	for_each_possible_cpu (cpu) {
-		policy = cpufreq_cpu_get(cpu);
-		if (policy) {
+		if (cpu < 0 || cpu >= NR_CPUS) return -EINVAL;
+		cur_ci = cpu_topology[cpu].cluster_id;
+		if (cur_ci < 0 || cur_ci >= NR_CPUS) {
+			return -EINVAL;
+		}
+		if (ci != cur_ci) {
+			ci = cur_ci;
+			policy2cpu[ci] = cpu;
 			cluster_bitmap |= (1 << policy_num);
+			clusters_boost_state[ci] = 0;
 			policy_num++;
-			cpu = cpumask_last(policy->related_cpus);
-			cpufreq_cpu_put(policy);
-		}
-	}
-
-	clusters_boost_state = kcalloc(policy_num, sizeof(int), GFP_KERNEL);
-	policy2cpu = kcalloc(policy_num, sizeof(int), GFP_KERNEL);
-
-	i = 0;
-	for_each_possible_cpu (cpu) {
-		policy = cpufreq_cpu_get(cpu);
-		if (policy) {
-			policy2cpu[i] = cpu;
-			clusters_boost_state[i] = 0;
-			cpu = cpumask_last(policy->related_cpus);
-			i++;
-			cpufreq_cpu_put(policy);
 		}
 	}
+	policy_num = (policy_num < NR_CPUS) ? policy_num : 0;
+	return 0;
 }
 
-static void cpu_policy_exit(void)
-{
-	kfree(policy2cpu);
-	kfree(clusters_boost_state);
-}
-
-static enum hrtimer_restart
+static noinline enum hrtimer_restart
 checking_boost_hrtimer_callback(struct hrtimer *timer)
 {
+	if (!htb_enable || !cpu_topo_info_inited) return HRTIMER_NORESTART;
 	kthread_queue_work(&htb_worker, &htb_work);
 	hrtimer_forward_now(timer, ktime_set(0, CHECKING_BOOST_INTERVAL));
 
 	return HRTIMER_RESTART;
 }
 
-static void timer_init(void)
+static noinline void timer_init(void)
 {
 	hrtimer_init(&checking_boost_hrtimer, CLOCK_MONOTONIC,
 		     HRTIMER_MODE_REL);
@@ -464,15 +492,15 @@ int heavy_task_boost_init(void)
 		return -ENOMEM;
 
 	timer_init();
-	cpu_policy_init();
 	boost_proc_init();
 	register_trace_sched_switch(sched_switch_hook, NULL);
+
 	return 0;
 }
 
 void heavy_task_boost_exit(void)
 {
-	cpu_policy_exit();
+	free_cpumask_var(limit_cpumask);
 	boost_proc_exit();
 	unregister_trace_sched_switch(sched_switch_hook, NULL);
 }
@@ -493,12 +521,33 @@ void htb_notify_target_fps_changed(int target_fps)
 
 void htb_notify_enable(bool enable)
 {
+	int i, success;
+	unsigned long flags;
+
 	htb_enable = enable;
 	if (!enable) {
+		cpu_topo_info_inited = false;
+		raw_spin_lock_irqsave(&htb_spinlock, flags);
+		for (i = 0; i < RENDER_COUNT; i++) {
+			renders[i] = -1;
+		}
+		for (i = 0; i < htsks_num && i < MAX_HEAVY_TASK_COUNT; i++) {
+			heavy_tasks[i].task = NULL;
+		}
 		htsks_num = 0;
 		boosted_htsks_num = 0;
+		raw_spin_unlock_irqrestore(&htb_spinlock, flags);
 		hrtimer_cancel(&checking_boost_hrtimer);
 		kthread_cancel_work_sync(&htb_work);
+	} else {
+		raw_spin_lock_irqsave(&htb_spinlock, flags);
+		success = cpu_topo_info_init();
+		raw_spin_unlock_irqrestore(&htb_spinlock, flags);
+		if (success < 0) {
+			pr_warn("htb cpu topology info init failed.");
+		} else {
+			cpu_topo_info_inited = true;
+		}
 	}
 }
 
@@ -510,14 +559,14 @@ void htb_notify_frame_produce(void)
 	int i;
 	unsigned long flags, cancel_flags = 0;
 
-	if (!htb_enable)
+	if (!htb_enable || !cpu_topo_info_inited) {
 		return;
+	}
 
 	systrace_c_signed_printk("frame produce", 1);
-
 	frame_produce_time = ktime_get_ns();
 	raw_spin_lock_irqsave(&htb_spinlock, flags);
-	for (i = 0; i < policy_num; i++) {
+	for (i = 0; i < policy_num && i < NR_CPUS; i++) {
 		clusters_boost_state[i] = 0;
 	}
 	cancel_flags = try_to_cancel_boost_all(true);
@@ -533,6 +582,5 @@ void htb_notify_frame_produce(void)
 
 	hrtimer_start(&checking_boost_hrtimer,
 		      ktime_set(0, heavy_task_threshold), HRTIMER_MODE_REL);
-
 	systrace_c_signed_printk("frame produce", 0);
 }
diff --git a/vendor/oplus/kernel/cpu/geas/geas.c b/vendor/oplus/kernel/cpu/geas/geas.c
index d02c5a42..20e4e01c 100755
--- a/vendor/oplus/kernel/cpu/geas/geas.c
+++ b/vendor/oplus/kernel/cpu/geas/geas.c
@@ -929,6 +929,7 @@ static int geas_irq_handler(struct hwmon_node *node)
 	struct bw_hwmon *hw = node->hw;
 	bool new_freq = false;
 	int ret = 0;
+	int handled = 0;
 	u64 now = ktime_get();
 
 	if (node_ext->frame_drive || node_ext->timer_drive) {
@@ -960,24 +961,15 @@ static int geas_irq_handler(struct hwmon_node *node)
 				}
 				node_ext->wake = 0;
 			}
+			handled = 1;
 		}
-	} else {
-		if (bwmon_update_cur_freq(node)) {
-			ret = qcom_dcvs_update_votes(dev_name(hw->dev),
-						node->cur_freqs,
-						1 + (hw->second_vote_supported << 1),
-						hw->dcvs_path);
-		}
-		node_ext->last_ts = now;
-		if (ret < 0)
-			dev_err(hw->dev, "bwmon irq update failed: %d\n", ret);
 	}
 
 	if (node_ext->frame_debug_level >= 1)
 		pr_err("%s, frame_drive = %u, timer_drive = %u, enable_irq = %u, new_freq = %d, ret = %d",
 				__func__, node_ext->frame_drive, node_ext->timer_drive, node_ext->enable_irq, new_freq, ret);
 
-	return ret;
+	return handled;
 }
 
 static struct frame_bw_history_manager *init_frame_bw_manager(void)
diff --git a/vendor/oplus/kernel/cpu/sched/Kconfig b/vendor/oplus/kernel/cpu/sched/Kconfig
index c79baa68..9e946a6b 100755
--- a/vendor/oplus/kernel/cpu/sched/Kconfig
+++ b/vendor/oplus/kernel/cpu/sched/Kconfig
@@ -112,7 +112,7 @@ config OPLUS_FEATURE_CPU_JANKINFO
 config OPLUS_PROCS_LOAD_STATE
 	tristate "config oplus_procs_load_state"
 	depends on OPLUS_FEATURE_CPU_JANKINFO
-	default y
+	default n
 	help
 	  oplus power procs load
 
@@ -190,6 +190,12 @@ config OPLUS_FEATURE_CEILING_FREE
 	help
 		set cb/omrg max frequency to default when user touch screen.
 
+config OPLUS_FEATURE_SCHED_DDL
+	bool "sched deadline"
+	default n
+	help
+		normal cfs tasks worst sched latency optimization
+
 config OPLUS_SCHED_HALT_MASK_PRT
 	tristate "print cpu halt_mask partial_halt_mask and parse_client"
 	default n
diff --git a/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_boost.c b/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_boost.c
index 831affb4..d74a0237 100755
--- a/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_boost.c
+++ b/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_boost.c
@@ -635,14 +635,13 @@ inline bool is_curr_cfbt_task(struct task_struct *p)
 	return false;
 }
 
-#define DEF_SKIP_CPU (6)
 int cfbt_should_skip(int first_cpu)
 {
 	struct oplus_sched_cluster *cluster;
 	int cpu, cpu_tmp;
 	struct rq *rq = NULL;
 	int ret = 1;
-	int skip_cpu = DEF_SKIP_CPU;
+	int skip_cpu = get_skip_cpu_by_user_config();
 
 	if (first_cpu < skip_cpu) {
 		ret = 0;
diff --git a/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_config.c b/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_config.c
index 0d4ede63..626f0f9a 100755
--- a/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_config.c
+++ b/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_config.c
@@ -9,7 +9,7 @@
 
 #define MAX_CFBT_STAGES 5
 
-int user_configurations[MAX_USER_CFG_COUNT] = {1, 512, 512, 0, 0, 0};
+int user_configurations[MAX_USER_CFG_COUNT] = {1, 512, 512, 7, 0, 0};
 EXPORT_SYMBOL(user_configurations);
 
 int tracing_enabled = 0;
@@ -20,6 +20,7 @@ EXPORT_SYMBOL(selection_option_enabled);
 
 int cfbt_enable = 0;
 int cfbt_suspend = 0;
+int cfbt_down_util = 1024;
 int stage_timeouts[MAX_CFBT_STAGES] = {20, 16, 16, 33, 20};
 
 struct scene_stage_mapping {
@@ -58,6 +59,11 @@ int get_frame_enhancement_value(void)
 	return get_user_configuration(CFBT_CONF_FRAME_ENHANCE);
 }
 
+int get_skip_cpu_by_user_config(void)
+{
+	return get_user_configuration(CFBT_CONF_SKIP_CPU);
+}
+
 // Stage time functions
 int get_default_stage_timeout(int stage)
 {
@@ -183,7 +189,7 @@ extern int __cfbt_set_scene_end(struct cfbt_struct *data);
 void enable_cfbt(int value)
 {
 	struct cfbt_struct tmp;
-    cfbt_enable = value;
+	cfbt_enable = value;
 
 	if (!value)
 		__cfbt_set_scene_end(&tmp);
@@ -192,18 +198,30 @@ EXPORT_SYMBOL(enable_cfbt);
 
 int is_cfbt_enabled(void)
 {
-    return cfbt_enable;
+	return cfbt_enable;
 }
 EXPORT_SYMBOL(is_cfbt_enabled);
 
 void suspend_cfbt(int value)
 {
-    cfbt_suspend = value;
+	cfbt_suspend = value;
 }
 EXPORT_SYMBOL(suspend_cfbt);
 
 int is_cfbt_suspend(void)
 {
-    return cfbt_suspend;
+	return cfbt_suspend;
 }
-EXPORT_SYMBOL(is_cfbt_suspend);
\ No newline at end of file
+EXPORT_SYMBOL(is_cfbt_suspend);
+
+void set_cfbt_util_down(int value)
+{
+	cfbt_down_util = value;
+}
+EXPORT_SYMBOL(set_cfbt_util_down);
+
+int get_cfbt_util_down(void)
+{
+	return cfbt_down_util;
+}
+EXPORT_SYMBOL(get_cfbt_util_down);
diff --git a/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_config.h b/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_config.h
index 3202f828..236776cb 100755
--- a/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_config.h
+++ b/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_config.h
@@ -13,6 +13,7 @@ enum {
 	CFBT_CONF_RESCUE_ENABLE = 0,
 	CFBT_CONF_STAGE_ENHANCE = 1,
 	CFBT_CONF_FRAME_ENHANCE = 2,
+	CFBT_CONF_SKIP_CPU      = 3,
 };
 
 #define MAX_USER_CFG_COUNT 6
@@ -115,4 +116,9 @@ int is_cfbt_enabled(void);
 void suspend_cfbt(int value);
 int is_cfbt_suspend(void);
 
+int get_skip_cpu_by_user_config(void);
+
+void set_cfbt_util_down(int value);
+int get_cfbt_util_down(void);
+
 #endif // CFBT_CONFIG_H
\ No newline at end of file
diff --git a/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_rescue.c b/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_rescue.c
index eecbdc7b..949ad335 100755
--- a/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_rescue.c
+++ b/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_rescue.c
@@ -166,7 +166,7 @@ unsigned long calculate_utilization(u64 utilization)
 	return (utilization * get_stage_enhancement_value()) >> 10;
 }
 
-unsigned long get_rescue_utilization(struct cfbt_frame_group *group, unsigned long fbg_util)
+unsigned long get_rescue_utilization_inner(struct cfbt_frame_group *group, unsigned long fbg_util)
 {
 	unsigned long real_util = 0;
 	unsigned long enhance = 0;
@@ -203,6 +203,11 @@ out:
 	return real_util;
 }
 
+unsigned long get_rescue_utilization(struct cfbt_frame_group *group, unsigned long fbg_util)
+{
+	return (get_rescue_utilization_inner(group, fbg_util) * get_cfbt_util_down()) >> 10;
+}
+
 /* timer management */
 bool should_process_frame_rescue(struct cfbt_frame_group *group, struct timer_data *timer_data)
 {
diff --git a/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_trace.c b/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_trace.c
index d8137ad3..1cb29f8e 100755
--- a/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_trace.c
+++ b/vendor/oplus/kernel/cpu/sched/frame_boost/cfbt_trace.c
@@ -36,6 +36,13 @@ struct cfbt_trace_filed {
 
 struct cfbt_trace_filed trace_fileds [CFBT_MAX_GROUP_NUM] = {0};
 
+inline bool test_frameid_valid(int grp_id)
+{
+	if (grp_id < 0 || grp_id > (CFBT_MAX_GROUP_NUM - 1))
+		return false;
+	return true;
+}
+
 noinline int tracing_mark_write(const char *buf)
 {
 	trace_printk(buf);
@@ -115,41 +122,57 @@ static void trace_value(int frame_id, unsigned long val, const char *msg, int ms
 
 void trace_cfbt_util(int frame_id, unsigned long val)
 {
+	if (!test_frameid_valid(frame_id))
+		return;
 	trace_value(frame_id, val, "cfbt_util", TRACE_CFBT_UTIL, get_last_val_util(frame_id));
 }
 
 void trace_cfbt_frame_state(int frame_id, unsigned long val)
 {
+	if (!test_frameid_valid(frame_id))
+		return;
 	trace_value(frame_id, val, "cfbt_frame_state", TRACE_CFBT_FRAME_STATE, get_last_val_frame_state(frame_id));
 }
 
 void trace_cfbt_stage(int frame_id, unsigned long val)
 {
+	if (!test_frameid_valid(frame_id))
+		return;
 	trace_value(frame_id, val, "cfbt_stage", TRACE_CFBT_STAGE, get_last_val_stage(frame_id));
 }
 
 void trace_cfbt_task(int frame_id, unsigned long val)
 {
+	if (!test_frameid_valid(frame_id))
+		return;
 	trace_value(frame_id, val, "cfbt_task", TRACE_CFBT_TASK, get_last_val_task(frame_id));
 }
 
 void trace_cfbt_rescue(int frame_id, unsigned long val)
 {
+	if (!test_frameid_valid(frame_id))
+		return;
 	trace_value(frame_id, val, "cfbt_rescue", TRACE_CFBT_RESCUE, get_last_val_rescue(frame_id));
 }
 
 void trace_cfbt_enhance(int frame_id, unsigned long val)
 {
+	if (!test_frameid_valid(frame_id))
+		return;
 	trace_value(frame_id, val, "cfbt_enhance", TRACE_CFBT_ENHANCE, get_last_val_enhance(frame_id));
 }
 
 void trace_cfbt_rutil(int frame_id, unsigned long val)
 {
+	if (!test_frameid_valid(frame_id))
+		return;
 	trace_value(frame_id, val, "cfbt_rutil", TRACE_CFBT_RUTIL, get_last_val_rutil(frame_id));
 }
 
 void trace_cfbt_uframeid(int frame_id, unsigned long val)
 {
+	if (!test_frameid_valid(frame_id))
+		return;
 	trace_value(frame_id, val, "cfbt_uframeid", TRACE_CFBT_UFRAMEID, get_last_val_uframeid(frame_id));
 }
 
diff --git a/vendor/oplus/kernel/cpu/sched/frame_boost/frame_group.c b/vendor/oplus/kernel/cpu/sched/frame_boost/frame_group.c
index fdb25e20..918f0672 100755
--- a/vendor/oplus/kernel/cpu/sched/frame_boost/frame_group.c
+++ b/vendor/oplus/kernel/cpu/sched/frame_boost/frame_group.c
@@ -2491,7 +2491,8 @@ bool set_frame_group_task_to_perfer_cpu(struct task_struct *p, int *target_cpu)
 	bool walk_next_cls = false;
 	struct oplus_sched_cluster *cluster = NULL;
 	cpumask_t search_cpus = CPU_MASK_NONE;
-	unsigned long spare_cap = 0, max_spare_cap = 0;
+	long spare_cap = 0;
+	long max_spare_cap = -1;
 	int max_spare_cap_cpu = -1, backup_cpu = -1;
 	struct frame_group *grp = NULL;
 	struct oplus_task_struct *ots = get_oplus_task_struct(p);
@@ -2541,7 +2542,7 @@ bool set_frame_group_task_to_perfer_cpu(struct task_struct *p, int *target_cpu)
 
 
 		orig_rq = cpu_rq(*target_cpu);
-		orig_orq = (struct oplus_rq *)orig_rq->android_oem_data1;
+		orig_orq = get_oplus_rq(orig_rq);
 		orig_cls_id = topology_cluster_id(*target_cpu);
 
 		/*
@@ -2595,7 +2596,7 @@ retry:
 
 		rq = cpu_rq(iter_cpu);
 		curr = rq->curr;
-		orq = (struct oplus_rq *)rq->android_oem_data1;
+		orq = get_oplus_rq(rq);
 
 		if (curr) {
 			struct oplus_task_struct *ots_curr =
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/Makefile b/vendor/oplus/kernel/cpu/sched/sched_assist/Makefile
index b47a39ff..c0bca633 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/Makefile
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/Makefile
@@ -13,6 +13,7 @@ oplus_bsp_sched_assist-y += sa_fair.o
 oplus_bsp_sched_assist-y += sa_jankinfo.o
 oplus_bsp_sched_assist-y += sa_oemdata.o
 oplus_bsp_sched_assist-y += sa_priority.o
+oplus_bsp_sched_assist-$(CONFIG_OPLUS_FEATURE_SCHED_DDL) += sa_ddl.o
 oplus_bsp_sched_assist-$(CONFIG_OPLUS_SCHED_GROUP_OPT) += sa_group.o
 oplus_bsp_sched_assist-$(CONFIG_OPLUS_CPU_AUDIO_PERF) += sa_audio.o
 oplus_bsp_sched_assist-$(CONFIG_OPLUS_FEATURE_LOADBALANCE) += sa_balance.o
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_balance.c b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_balance.c
index 457e95b4..0e07f433 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_balance.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_balance.c
@@ -12,7 +12,6 @@
 #include "sa_common.h"
 #include "sa_fair.h"
 #include "sa_balance.h"
-
 /*
  * When the following macros are enabled, some debug information
  * will be output, which is very helpful for finding bugs.
@@ -1098,7 +1097,8 @@ bool ux_need_up_migration(struct task_struct *p, struct rq *rq)
  *                          with smaller capacity to CPUs with larger capacity.
  * TICKPULL_MIGR_RUNNABLE : pull long-runnable tasks from other CPUs. Unlike
  *                          TICKPULL_MIGR_RUNNING, tasks can be migrated to
- *                          CPUs with the same capacity.
+ *                          CPUs with the same capacity  or little util tasks
+ *                          can been migrated to small cores.
  */
 enum migr_type {
 	DOWN_MIGR = 1,
@@ -1181,7 +1181,7 @@ enum migr_type {
  *
  * TICKPULL_MIGR_RUNNABLE
  * cur_idx    order_idx   walk_cnt
- *    0            0          1
+ *    0            0          3    (only little util task can been migrated to small cores)
  *    1            1          3
  *    2            2          1
  *
@@ -1267,10 +1267,14 @@ bool calc_order_idx(enum migr_type type,
 		break;
 	case TICKPULL_MIGR_RUNNABLE:
 		*order_idx = curr_cls;
-		if ((cls_nr >= 3) && (curr_cls == cls_nr-2)) {
-			*walk_cnt = cls_nr;
-		} else {
+		/*
+		 * When curr_cls is biggest cores, only allow pull other biggest cores' task to it,
+		 * meanwhile, will allow sliver cores to pull other cores' task to it after ajust the logic.
+		 */
+		if (curr_cls == cls_nr-1) {
 			*walk_cnt = 1;
+		} else {
+			*walk_cnt = cls_nr;
 		}
 		break;
 	default:
@@ -1323,7 +1327,7 @@ int find_cpu_in_migration(struct task_struct *p,
 		for_each_cpu(cpu, &search_cpus) {
 			rq = cpu_rq(cpu);
 			curr = rq->curr;
-			orq = (struct oplus_rq *) rq->android_oem_data1;
+			orq = get_oplus_rq(rq);
 
 #ifdef DEBUG_LB_TICK
 			trace_printk("OPLUS_LB_TICK[%d]: cpu=%d, curr=%s$%d$%d, "
@@ -1408,7 +1412,7 @@ int oplus_kick_active_balance(struct rq *rq,
 {
 	unsigned long flags;
 	bool ret = false;
-	struct oplus_rq *orq = (struct oplus_rq *) rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(rq);
 
 	/* Invoke active balance to force migrate currently running task */
 	raw_spin_lock_irqsave(&rq->__lock, flags);
@@ -1439,7 +1443,7 @@ int oplus_kick_active_balance(struct rq *rq,
 static struct task_struct *oplus_detach_running_task(struct lb_env *env)
 {
 	struct task_struct *p;
-	struct oplus_rq *orq = (struct oplus_rq *) env->src_rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(env->src_rq);
 	pid_t pid = orq->lb.pid;
 
 #ifdef DEBUG_LB_TEST
@@ -1490,7 +1494,7 @@ static int oplus_active_load_balance_cpu_stop(void *data)
 	struct sched_domain *sd;
 	struct task_struct *p = NULL;
 	struct rq_flags rf;
-	struct oplus_rq *orq = (struct oplus_rq *) busiest_rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(busiest_rq);
 
 	rq_lock_irq(busiest_rq, &rf);
 
@@ -1631,7 +1635,7 @@ static struct task_struct *oplus_detach_running_task_for_rt(struct lb_env *env)
 {
 	struct rq *rq = env->src_rq;
 	struct plist_head *head = &rq->rt.pushable_tasks;
-	struct oplus_rq *orq = (struct oplus_rq *) rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(rq);
 	pid_t pid = orq->lb.pid;
 	struct task_struct *p;
 
@@ -1698,7 +1702,7 @@ static int oplus_active_load_balance_cpu_stop_for_rt(void *data)
 	struct sched_domain *sd;
 	struct task_struct *p = NULL;
 	struct rq_flags rf;
-	struct oplus_rq *orq = (struct oplus_rq *) busiest_rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(busiest_rq);
 #ifdef DEBUG_LB_RT_TICK
 	struct task_struct *task = NULL;
 #endif
@@ -1916,7 +1920,7 @@ static struct task_struct *oplus_pick_runnable_ux(
 	struct task_struct *task = NULL;
 	struct oplus_task_struct *ots = NULL;
 	struct rq *src_rq = cpu_rq(src_cpu);
-	struct oplus_rq *orq = (struct oplus_rq *) src_rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(src_rq);
 	u64 runnable_time, threshold_time = ULLONG_MAX;
 	unsigned long irqflag;
 	struct rb_node *node;
@@ -1988,6 +1992,7 @@ static noinline bool oplus_migrate_runnable_ux(void *data, struct rq *rq)
 	unsigned int this_cpu = cpu_of(rq);
 	int new_cpu = -1;
 	bool ret = false;
+	bool ux_cls_boost = false;
 
 	/*
 	 * Pick a ux_task that has been in the runnable state for a long time.
@@ -2000,6 +2005,11 @@ static noinline bool oplus_migrate_runnable_ux(void *data, struct rq *rq)
 	 * Choose a suitable cpu for this ux_task.
 	 */
 	new_cpu = find_cpu_in_migration(ux_task, this_cpu, NORMAL_MIGR, false);
+	if (new_cpu < 0) {
+		ux_cls_boost = get_task_cls_for_scene(ux_task) > 0 ? true : false;
+		if (!ux_cls_boost && !is_task_util_over(ux_task, BOOST_THRESHOLD_UNIT))
+			new_cpu = find_cpu_in_migration(ux_task, this_cpu, DOWN_MIGR, false);
+	}
 	if (new_cpu < 0)
 		return false;
 
@@ -2309,7 +2319,7 @@ static noinline bool oplus_tickpull_runnable_rt(void *data,
 			struct rq *rq, bool rt_boost)
 {
 	struct task_struct *curr = rq->curr;
-	struct oplus_rq *orq = (struct oplus_rq *)rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(rq);
 	int this_cpu = cpu_of(rq);
 	int cur_cls = topology_cluster_id(this_cpu);
 	int order_idx = -1, walk_cnt = -1, idx = -1;
@@ -2364,7 +2374,7 @@ static noinline bool oplus_tickpull_runnable_rt(void *data,
 
 		for_each_cpu(iter_cpu, &search_cpus) {
 			iter_rq = cpu_rq(iter_cpu);
-			iter_orq = (struct oplus_rq *) iter_rq->android_oem_data1;
+			iter_orq = get_oplus_rq(iter_rq);
 
 			/*
 			 * Cannot migrate to itself.
@@ -2413,6 +2423,15 @@ static noinline bool oplus_tickpull_runnable_rt(void *data,
 				continue;
 			}
 
+			/*
+			 * Just allow big cores'  rt task can been pulled to sliver core.
+			 */
+			if (cur_cls == 0 && topology_cluster_id(iter_cpu) > 0 &&
+				is_task_util_over(rt_task, BOOST_THRESHOLD_UNIT)) {
+				rq_unlock(busiest_rq, &rf);
+				continue;
+			}
+
 #ifdef DEBUG_LB_RT_TICK
 			trace_printk("OPLUS_LB_TICKPULL[%d]: this_cpu=%d, curr=%s$%d, "
 				"busiest_cpu=%d, rt_task=%s$%d,\n",
@@ -2449,7 +2468,7 @@ static noinline bool oplus_tickpull_runnable_rt(void *data,
 static noinline bool oplus_tickpull_running_ux(void *data, struct rq *rq)
 {
 	struct task_struct *curr = rq->curr;
-	struct oplus_rq *orq = (struct oplus_rq *)rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(rq);
 	int this_cpu = cpu_of(rq);
 	int cur_cls = topology_cluster_id(this_cpu);
 	int order_idx = -1, walk_cnt = -1, idx = -1;
@@ -2509,7 +2528,7 @@ static noinline bool oplus_tickpull_running_ux(void *data, struct rq *rq)
 
 		for_each_cpu(iter_cpu, &search_cpus) {
 			iter_rq = cpu_rq(iter_cpu);
-			iter_orq = (struct oplus_rq *) iter_rq->android_oem_data1;
+			iter_orq = get_oplus_rq(iter_rq);
 
 			/*
 			 * Cannot migrate to itself.
@@ -2600,7 +2619,7 @@ static noinline bool oplus_tickpull_running_ux(void *data, struct rq *rq)
 static noinline bool oplus_tickpull_runnable_ux(void *data, struct rq *rq)
 {
 	struct task_struct *curr = rq->curr;
-	struct oplus_rq *orq = (struct oplus_rq *)rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(rq);
 	int this_cpu = cpu_of(rq);
 	int cur_cls = topology_cluster_id(this_cpu);
 	int order_idx = -1, walk_cnt = -1, idx = -1;
@@ -2653,7 +2672,7 @@ static noinline bool oplus_tickpull_runnable_ux(void *data, struct rq *rq)
 
 		for_each_cpu(iter_cpu, &search_cpus) {
 			iter_rq = cpu_rq(iter_cpu);
-			iter_orq = (struct oplus_rq *) iter_rq->android_oem_data1;
+			iter_orq = get_oplus_rq(iter_rq);
 
 			/*
 			 * Cannot migrate to itself.
@@ -2691,6 +2710,15 @@ static noinline bool oplus_tickpull_runnable_ux(void *data, struct rq *rq)
 				continue;
 			}
 
+			/*
+			 * Just allow big cores'  ux task can been pulled to sliver core.
+			 */
+			if (cur_cls == 0 && topology_cluster_id(iter_cpu) > 0 &&
+				(is_task_util_over(iter_task, BOOST_THRESHOLD_UNIT) || get_task_cls_for_scene(iter_task) > 0)) {
+				rq_unlock(iter_rq, &rf);
+				continue;
+			}
+
 			/*
 			 * Ha, ux_task can be migrated to this_cpu to perform enqueue
 			 * and dequeue operations.
@@ -3334,7 +3362,7 @@ static bool oplus_newidle_balance_pull_runnable_ux(
 
 		for_each_cpu(cpu, &search_cpus) {
 			rq = cpu_rq(cpu);
-			orq = (struct oplus_rq *) rq->android_oem_data1;
+			orq = get_oplus_rq(rq);
 
 			/*
 			 * Cannot migrate to itself.
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common.c b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common.c
index 93f1baa6..462da5e7 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common.c
@@ -42,12 +42,15 @@
 #include <../kernel/oplus_cpu/sched/frame_boost/frame_group.h>
 #endif
 
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+#include "sa_ddl.h"
+#endif
+
 #include "sched_assist.h"
 #include "sa_common.h"
 #include "sa_fair.h"
 #include "sa_priority.h"
 
-
 #ifdef CONFIG_OPLUS_CPU_AUDIO_PERF
 #include "sa_audio.h"
 #endif
@@ -79,14 +82,18 @@
 
 #define SCHED_MAX_CPUSET 100ULL
 #define SCHED_MAX_CPUCTL 100ULL
-#define SCHED_MAX_CFS_R 1000ULL
+#define SCHED_MAX_CFS_R 100ULL
 #define SCHED_MAX_RT_R 10ULL
+#define SCHED_MAX_DDL_ACTIVE 10ULL
+#define SCHED_MAX_DDL_TASK 10ULL
 #define SCHED_MAX_AFFINITY_MASK 1000ULL
 #define MAX_PID (32768)
 #define CPUCTL_MULT_UNIT (SCHED_MAX_CPUSET)
 #define CFS_R_MULT_UNIT (CPUCTL_MULT_UNIT * SCHED_MAX_CPUCTL)
 #define RT_R_MULT_UNIT (CFS_R_MULT_UNIT * SCHED_MAX_CFS_R)
-#define AFFINITY_MASK_MULT_UNIT (RT_R_MULT_UNIT * SCHED_MAX_RT_R)
+#define DDL_ACTIVE_MULT_UNIT (RT_R_MULT_UNIT * SCHED_MAX_RT_R)
+#define DDL_TASK_MULT_UNIT (DDL_ACTIVE_MULT_UNIT * SCHED_MAX_DDL_ACTIVE)
+#define AFFINITY_MASK_MULT_UNIT (DDL_TASK_MULT_UNIT * SCHED_MAX_DDL_TASK)
 #define AFFINITY_SET_MULT_UNIT (AFFINITY_MASK_MULT_UNIT * SCHED_MAX_AFFINITY_MASK)
 
 #ifdef CONFIG_OPLUS_SCHED_HALT_MASK_PRT
@@ -176,6 +183,21 @@ bool is_webview(struct task_struct *p)
 }
 #endif
 
+struct oplus_rq *get_oplus_rq(struct rq *rq)
+{
+	struct oplus_rq *orq = NULL;
+
+	if (!rq)
+		return NULL;
+
+	orq = (struct oplus_rq *) READ_ONCE(rq->android_oem_data1[ORQ_IDX]);
+	if (IS_ERR_OR_NULL(orq))
+		return NULL;
+
+	return orq;
+}
+EXPORT_SYMBOL_GPL(get_oplus_rq);
+
 bool is_heavy_load_top_task(struct task_struct *p)
 {
 	if (!is_top(p))
@@ -513,7 +535,7 @@ void oplus_set_ux_state_lock(struct task_struct *t, int ux_state, int inherit_ty
 #endif
 
 set:
-	orq = (struct oplus_rq *) rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 	/* BUG 6523080
 	* 1. task T is migrating from rq1 -> rq2
 	* 2. set task T ux state to 0 without locking rq1
@@ -702,7 +724,7 @@ void ux_priority_systrace_c(unsigned int cpu, struct task_struct *t)
 	}
 
 	rq = cpu_rq(cpu);
-	orq = (struct oplus_rq *) rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 	value = orq->min_vruntime;
 	if (per_cpu(prev_min_vruntime, cpu) != value) {
 		char buf[256];
@@ -738,6 +760,11 @@ void sched_info_systrace_c(unsigned int cpu, struct task_struct *p)
 	int cfs_running = cfs_rq->h_nr_running;
 	int rt_running = rt_rq->rt_nr_running;
 	struct oplus_task_struct *ots = get_oplus_task_struct(p);
+	int ddl_hint = ots && test_bit(OTS_STATE_DDL_ACTIVE, &ots->state) ? 1 : 0;
+	int ddl_task = 0;
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	ddl_task = ots && oplus_get_task_ddl(p) ? 1 : 0;
+#endif
 	u64 s_info = 0;
 	char buf[256];
 	struct css_set *cset;
@@ -760,6 +787,8 @@ void sched_info_systrace_c(unsigned int cpu, struct task_struct *p)
 	s_info += cpu_cid * CPUCTL_MULT_UNIT;
 	s_info += cfs_running * CFS_R_MULT_UNIT;
 	s_info += rt_running * RT_R_MULT_UNIT;
+	s_info += ddl_hint * DDL_ACTIVE_MULT_UNIT;
+	s_info += ddl_task * DDL_TASK_MULT_UNIT;
 	s_info += ((u8)cpumask_bits(&p->cpus_mask)[0]) * AFFINITY_MASK_MULT_UNIT;
 	if (cpumask_weight(&p->cpus_mask) < nr_cpu_ids) {
 		if (ots && likely(test_bit(OTS_STATE_SET_AFFINITY, &ots->state))
@@ -850,7 +879,12 @@ void sched_assist_init_oplus_rq(void)
 			ux_err("failed to init oplus rq(%d)", cpu);
 			continue;
 		}
-		orq = (struct oplus_rq *) rq->android_oem_data1;
+		orq = kzalloc_node(sizeof(struct oplus_rq), GFP_KERNEL, cpu_to_node(cpu));
+		if (!orq) {
+			pr_err("alloc oplus_rq%d failed %lu\n", cpu, sizeof(struct oplus_rq));
+			continue;
+		}
+
 		orq->ux_list = RB_ROOT_CACHED;
 		orq->exec_timeline = RB_ROOT_CACHED;
 		orq->ux_list_lock = kmalloc(sizeof(spinlock_t), GFP_KERNEL);
@@ -858,6 +892,13 @@ void sched_assist_init_oplus_rq(void)
 		orq->nr_running = 0;
 		orq->min_vruntime = 0;
 		orq->load_weight = 0;
+
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+		orq->ddl_root = RB_ROOT_CACHED;
+		orq->ddl_lock = kmalloc(sizeof(spinlock_t), GFP_KERNEL);
+		spin_lock_init(orq->ddl_lock);
+#endif
+
 #ifdef CONFIG_LOCKING_PROTECT
 #ifndef CONFIG_LOCKING_LAST_ENTITY
 		INIT_LIST_HEAD(&orq->locking_thread_list);
@@ -885,6 +926,8 @@ void sched_assist_init_oplus_rq(void)
 #ifdef CONFIG_OPLUS_FEATURE_TICK_GRAN
 		orq->resched_timer = kmalloc(sizeof(struct hrtimer), GFP_KERNEL);
 #endif
+		smp_mb();
+		WRITE_ONCE(rq->android_oem_data1[ORQ_IDX], (u64) orq);
 	}
 
 #ifdef CONFIG_OPLUS_FEATURE_SCHED_SPREAD
@@ -927,28 +970,6 @@ bool oplus_task_misfit(struct task_struct *tsk, int cpu)
 	return false;
 }
 
-inline bool test_task_is_fair(struct task_struct *task)
-{
-	DEBUG_BUG_ON(!task);
-
-	/* valid CFS priority is MAX_RT_PRIO..MAX_PRIO-1 */
-	if ((task->prio >= MAX_RT_PRIO) && (task->prio <= MAX_PRIO-1))
-		return true;
-	return false;
-}
-
-inline bool test_task_is_rt(struct task_struct *task)
-{
-	DEBUG_BUG_ON(!task);
-
-	/* valid RT priority is 0..MAX_RT_PRIO-1 */
-	if ((task->prio >= 0) && (task->prio <= MAX_RT_PRIO-1))
-		return true;
-
-	return false;
-}
-EXPORT_SYMBOL_GPL(test_task_is_rt);
-
 unsigned int ux_task_exec_limit(struct task_struct *p)
 {
 	int ux_state = oplus_get_ux_state(p);
@@ -1061,7 +1082,7 @@ bool is_multiple_ux(struct oplus_task_struct *ots)
 
 /*s64 __maybe_unused account_ux_runtime(struct rq *rq, struct task_struct *curr)
 {
-	struct oplus_rq *orq = (struct oplus_rq *) rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(rq);
 	struct oplus_task_struct *ots = get_oplus_task_struct(curr);
 	s64 delta;
 	unsigned int limit;
@@ -1126,7 +1147,7 @@ static void enqueue_ux_thread(struct rq *rq, struct task_struct *p)
 	if (!test_task_is_fair(p) || !oplus_rbnode_empty(&ots->ux_entry))
 		return;
 
-	orq = (struct oplus_rq *) rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 	spin_lock_irqsave(orq->ux_list_lock, irqflag);
 	smp_mb__after_spinlock();
 	if (!oplus_rbnode_empty(&ots->ux_entry)) {
@@ -1169,7 +1190,7 @@ static void dequeue_ux_thread(struct rq *rq, struct task_struct *p)
 	if (IS_ERR_OR_NULL(ots))
 		return;
 
-	orq = (struct oplus_rq *) rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 	spin_lock_irqsave(orq->ux_list_lock, irqflag);
 	smp_mb__after_spinlock();
 	if (!oplus_rbnode_empty(&ots->ux_entry)) {
@@ -1436,9 +1457,17 @@ void adjust_rt_lowest_mask(struct task_struct *p, struct cpumask *local_cpu_mask
 	while (drop_cpu < nr_cpu_ids) {
 		int ux_task_state;
 
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_PIPELINE)
+		if (oplus_pipeline_rt_skip_prime_cpu(drop_cpu)) {
+			cpumask_clear_cpu(drop_cpu, local_cpu_mask);
+			drop_cpu = cpumask_next(drop_cpu, local_cpu_mask);
+			continue;
+		}
+#endif
+
 		/* unlocked access */
 		rq = cpu_rq(drop_cpu);
-		orq = (struct oplus_rq *) rq->android_oem_data1;
+		orq = get_oplus_rq(rq);
 		task = rcu_dereference(rq->curr);
 
 		if (!task || (task->flags & PF_EXITING)) {
@@ -1571,10 +1600,19 @@ EXPORT_SYMBOL(adjust_rt_lowest_mask);
 bool sa_skip_rt_sync(struct rq *rq, struct task_struct *p, bool *sync)
 {
 	int cpu = cpu_of(rq);
-	struct oplus_rq *orq = (struct oplus_rq *) rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(rq);
 	struct oplus_task_struct *ots;
 	unsigned long irqflag;
 
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_PIPELINE)
+	if (oplus_pipeline_rt_skip_prime_cpu(cpu)) {
+		if (*sync) {
+			*sync = false;
+			return true;
+		}
+	}
+#endif
+
 	spin_lock_irqsave(orq->ux_list_lock, irqflag);
 	ots = ux_list_first_entry(&orq->ux_list);
 	if (IS_ERR_OR_NULL(ots) || test_bit(IM_FLAG_CAMERA_HAL, &ots->im_flag)) {
@@ -1601,8 +1639,13 @@ bool sa_rt_skip_ux_cpu(int cpu)
 	struct oplus_rq *orq;
 	struct task_struct *curr;
 
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_PIPELINE)
+	if (oplus_pipeline_rt_skip_prime_cpu(cpu))
+		return true;
+#endif
+
 	rq = cpu_rq(cpu);
-	orq = (struct oplus_rq *) rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 	curr = rq->curr;
 
 	/* skip running ux */
@@ -1695,6 +1738,7 @@ EXPORT_SYMBOL(android_rvh_after_enqueue_task_handler);
 void android_rvh_dequeue_task_handler(void *unused, struct rq *rq, struct task_struct *p, int flags)
 {
 	queue_ux_thread(rq, p, 0);
+
 #if IS_ENABLED(CONFIG_OPLUS_FEATURE_CPU_JANKINFO)
 	if (!rt_task(p))
 		return;
@@ -1793,6 +1837,11 @@ void android_rvh_schedule_handler(void *unused, struct task_struct *prev, struct
 	if (unlikely(global_debug_enabled & DEBUG_SYSTRACE) && likely(prev != next))
 		LOCKING_CALL_OP(state_systrace_c, cpu_of(rq), next);
 #endif
+
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	oplus_ddl_preempt_tint(rq, prev);
+	oplus_task_ddl_tint(rq, next);
+#endif
 }
 EXPORT_SYMBOL(android_rvh_schedule_handler);
 
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common.h b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common.h
index f1b21343..6f76d7cf 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common.h
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common.h
@@ -20,6 +20,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include "sa_oemdata.h"
 #include "sa_common_struct.h"
@@ -194,6 +195,7 @@ enum IM_FLAG_TYPE {
 	IM_FLAG_AFFINITY_THREAD,
 	IM_FLAG_TPD_SET_CPU_AFFINITY = 16,
 	IM_FLAG_COMPRESS_THREAD = 17, /* compress thread skips locking protect */
+	IM_FLAG_RENDER_THREAD = 18,
 	MAX_IM_FLAG_TYPE,
 };
 
@@ -201,6 +203,8 @@ enum IM_FLAG_TYPE {
 
 enum ots_state {
 	OTS_STATE_SET_AFFINITY,
+	OTS_STATE_DDL_ACTIVE,
+	OTS_STATE_DDL_ACTIVE_PREEMPTED,
 	OTS_STATE_MAX,
 };
 
@@ -236,6 +240,12 @@ struct oplus_rq {
 	int nr_running;
 	u64 min_vruntime;
 	u64 load_weight;
+
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	struct rb_root_cached ddl_root;
+	spinlock_t *ddl_lock;
+#endif
+
 #ifdef CONFIG_LOCKING_PROTECT
 #ifndef CONFIG_LOCKING_LAST_ENTITY
 	struct list_head locking_thread_list;
@@ -360,6 +370,28 @@ extern struct kmem_cache *oplus_task_struct_cachep;
 
 #define ots_to_ts(ots)	(ots->task)
 #define OTS_IDX			0
+#define ORQ_IDX			0
+
+static inline bool test_task_is_fair(struct task_struct *task)
+{
+	DEBUG_BUG_ON(!task);
+
+	/* valid CFS priority is MAX_RT_PRIO..MAX_PRIO-1 */
+	if ((task->prio >= MAX_RT_PRIO) && (task->prio <= MAX_PRIO-1))
+		return true;
+	return false;
+}
+
+static inline bool test_task_is_rt(struct task_struct *task)
+{
+	DEBUG_BUG_ON(!task);
+
+	/* valid RT priority is 0..MAX_RT_PRIO-1 */
+	if (rt_prio(task->prio))
+		return true;
+
+	return false;
+}
 
 static inline struct oplus_task_struct *get_oplus_task_struct(struct task_struct *t)
 {
@@ -671,6 +703,7 @@ bool is_mid_cluster(int cpu);
 bool im_mali(const char *comm);
 bool is_top(struct task_struct *p);
 bool task_is_runnable(struct task_struct *task);
+struct oplus_rq *get_oplus_rq(struct rq *rq);
 
 typedef unsigned long (*kallsyms_lookup_name_t)(const char *name);
 extern kallsyms_lookup_name_t _kallsyms_lookup_name;
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common_struct.h b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common_struct.h
index d862af25..01fab099 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common_struct.h
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_common_struct.h
@@ -99,6 +99,13 @@ struct oplus_task_struct {
 	unsigned long state;
 	unsigned long im_flag;
 	atomic_t is_vip_mvp;
+
+/* #if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL) */
+	u64 ddl;
+	u64 ddl_active_ts;
+	u64 runnable_ts;
+	struct rb_node ddl_node;
+/* #endif */
 /*#if IS_ENABLED(CONFIG_OPLUS_FEATURE_ABNORMAL_FLAG)*/
 	int abnormal_flag;
 /*#endif*/
@@ -132,7 +139,6 @@ struct oplus_task_struct {
 	int locking_depth;
 	int lk_tick_hit;
 /*#endif*/
-
 /*#if IS_ENABLED(CONFIG_OPLUS_LOCKING_STRATEGY)*/
 	struct locking_info lkinfo;
 /*#endif*/
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_ddl.c b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_ddl.c
new file mode 100755
index 00000000..fc847af3
--- /dev/null
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_ddl.c
@@ -0,0 +1,579 @@
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "sa_common.h"
+#include "sa_sysfs.h"
+#include "sa_ddl.h"
+#if IS_ENABLED(CONFIG_OPLUS_SCHED_GROUP_OPT)
+#include "sa_group.h"
+#endif
+
+#ifdef CONFIG_HMBIRD_SCHED
+#include "sa_hmbird.h"
+#endif
+
+pid_t ddl_pid_rd = -1;
+
+#define MSEC_TO_NSEC(val) (val * NSEC_PER_MSEC)
+#define NSEC_TO_MSEC(val) (val / NSEC_PER_MSEC)
+
+struct ddl_sinfo_data ddl_sdata[PID_MAX_DEFAULT];
+
+u64 oplus_get_task_ddl(struct task_struct *task)
+{
+	struct oplus_task_struct *ots = get_oplus_task_struct(task);
+
+	if (IS_ERR_OR_NULL(ots))
+		return 0;
+
+	return READ_ONCE(ots->ddl);
+}
+EXPORT_SYMBOL_GPL(oplus_get_task_ddl);
+
+static inline bool runnable_at_comp(struct rb_node *a_node, const struct rb_node *b_node)
+{
+	struct oplus_task_struct *ots_a = rb_entry(a_node, struct oplus_task_struct, ddl_node);
+	struct oplus_task_struct *ots_b = rb_entry(b_node, struct oplus_task_struct, ddl_node);
+	u64 ddl_a = ots_a->runnable_ts + MSEC_TO_NSEC(ots_a->ddl);
+	u64 ddl_b = ots_b->runnable_ts + MSEC_TO_NSEC(ots_b->ddl);
+
+	return (s64)(ddl_a - ddl_b) < 0;
+}
+
+void oplus_set_task_ddl(struct task_struct *task, u64 ddl)
+{
+	struct oplus_task_struct *ots = get_oplus_task_struct(task);
+	struct rq *rq;
+	struct oplus_rq *orq;
+	struct rq_flags flags;
+	unsigned long irqflag;
+
+	if (IS_ERR_OR_NULL(ots))
+		return;
+
+	if (ddl > MAX_DDL_LIMIT)
+		return;
+
+	if (!test_task_is_fair(task) || test_task_ux(task))
+		return;
+
+	rq = task_rq_lock(task, &flags);
+	orq = get_oplus_rq(rq);
+
+	spin_lock_irqsave(orq->ddl_lock, irqflag);
+	smp_mb__after_spinlock();
+	WRITE_ONCE(ots->ddl, ddl);
+
+	if (!ddl) {
+		if (!oplus_rbnode_empty(&ots->ddl_node)) {
+			rb_erase_cached(&ots->ddl_node, &orq->ddl_root);
+			RB_CLEAR_NODE(&ots->ddl_node);
+			put_task_struct(task);
+		}
+	} else if (task->se.on_rq && !task_on_cpu(rq, task)) {
+		ots->runnable_ts = ots->enqueue_time;
+		if (oplus_rbnode_empty(&ots->ddl_node)) {
+			clear_bit(OTS_STATE_DDL_ACTIVE, &ots->state);
+			clear_bit(OTS_STATE_DDL_ACTIVE_PREEMPTED, &ots->state);
+			WRITE_ONCE(ots->ddl_active_ts, 0);
+			get_task_struct(task);
+			rb_add_cached(&ots->ddl_node, &orq->ddl_root, runnable_at_comp);
+		} else {
+			rb_erase_cached(&ots->ddl_node, &orq->ddl_root);
+			rb_add_cached(&ots->ddl_node, &orq->ddl_root, runnable_at_comp);
+		}
+	}
+	spin_unlock_irqrestore(orq->ddl_lock, irqflag);
+	task_rq_unlock(rq, task, &flags);
+}
+EXPORT_SYMBOL_GPL(oplus_set_task_ddl);
+
+bool oplus_ddl_within_limit(struct rq *rq, struct task_struct *task)
+{
+	u64 now = rq_clock(rq);
+	struct oplus_task_struct *ots = get_oplus_task_struct(task);
+	u64 ddl_thres;
+
+	if (!oplus_get_task_ddl(task) || !ots->ddl_active_ts)
+		return false;
+
+	if (!task->se.on_rq)
+		return false;
+
+	ddl_thres = get_sg_ddl_rthres(task->sched_task_group);
+	return now - ots->ddl_active_ts < MSEC_TO_NSEC(ddl_thres);
+}
+
+void oplus_ddl_check_preempt(struct rq *rq, struct task_struct *p,
+		struct task_struct *curr, bool *preempt, bool *nopreempt)
+{
+	u64 ddl_p = oplus_get_task_ddl(p);
+	u64 ddl_curr = oplus_get_task_ddl(curr);
+
+	if (!ddl_p && !ddl_curr)
+		return;
+
+	if (ddl_curr) {
+		if (oplus_ddl_within_limit(rq, curr)) {
+			*nopreempt = true;
+			return;
+		}
+	}
+
+	if (ddl_p) {
+		struct oplus_task_struct *ots_p = get_oplus_task_struct(p);
+		u64 now = rq_clock(rq);
+		if (IS_ERR_OR_NULL(ots_p))
+			return;
+
+		if (now - ots_p->runnable_ts >= ddl_p)
+			*preempt = true;
+	}
+}
+
+void oplus_dequeue_ddl_node(struct rq *rq, struct task_struct *p)
+{
+	struct oplus_rq *orq = get_oplus_rq(rq);
+	struct oplus_task_struct *ots = get_oplus_task_struct(p);
+	unsigned long irqflag;
+
+	if (!p || IS_ERR_OR_NULL(ots))
+		return;
+
+	spin_lock_irqsave(orq->ddl_lock, irqflag);
+	if (!oplus_rbnode_empty(&ots->ddl_node)) {
+		/*
+		 * don't reset ddl status in dequeue path, set_next_entity
+		 * also do the dequeue work, thus, we will use the active
+		 * bit and active_ts in the following preemption check.
+		 * reset ddl status in enqueue path because we only care about
+		 * the runnable status.
+		 */
+		rb_erase_cached(&ots->ddl_node, &orq->ddl_root);
+		RB_CLEAR_NODE(&ots->ddl_node);
+		put_task_struct(p);
+	}
+	spin_unlock_irqrestore(orq->ddl_lock, irqflag);
+}
+
+void oplus_enqueue_ddl_node(struct rq *rq, struct task_struct *p)
+{
+	struct oplus_rq *orq = get_oplus_rq(rq);
+	struct oplus_task_struct *ots = get_oplus_task_struct(p);
+	u64 now = rq_clock(rq);
+	unsigned long irqflag;
+
+	if (!p || !oplus_get_task_ddl(p) || IS_ERR_OR_NULL(ots))
+		return;
+
+	/*
+	 * reset ddl status in enqueue path, but plz keep in mind that
+	 * don't reset ddl_active_ts in preeempted path. ddl_active_ts
+	 * is used to keep ddl running time in preempted path. Don't reset
+	 * ddl_active_ts when the ddl task consumed all the cpu time and queued
+	 * in rq again until the task enqueued through enqueue_entity path.
+	 */
+	clear_bit(OTS_STATE_DDL_ACTIVE, &ots->state);
+
+	if (!p->se.on_rq) {
+		ots->runnable_ts = now;
+		WRITE_ONCE(ots->ddl_active_ts, 0);
+		clear_bit(OTS_STATE_DDL_ACTIVE_PREEMPTED, &ots->state);
+	} else {
+		struct cfs_rq *cfs_rq = task_cfs_rq(p);
+		if (cfs_rq && cfs_rq->curr == &p->se) {
+			ots->runnable_ts = now;
+			if (ots->ddl_active_ts && !oplus_ddl_within_limit(rq, p))
+				return;
+		}
+	}
+
+	spin_lock_irqsave(orq->ddl_lock, irqflag);
+	smp_mb__after_spinlock();
+	if (!oplus_rbnode_empty(&ots->ddl_node)) {
+		WARN_ON_ONCE(1);
+		spin_unlock_irqrestore(orq->ddl_lock, irqflag);
+		return;
+	}
+
+	get_task_struct(p);
+	rb_add_cached(&ots->ddl_node, &orq->ddl_root, runnable_at_comp);
+	spin_unlock_irqrestore(orq->ddl_lock, irqflag);
+}
+
+void oplus_ddl_preempt_tint(struct rq *rq, struct task_struct *prev)
+{
+	struct oplus_task_struct *ots = get_oplus_task_struct(prev);
+	u64 now = rq_clock(rq);
+
+	if(!prev->se.on_rq || IS_ERR_OR_NULL(ots))
+		return;
+
+	if (ots->ddl_active_ts ) {
+		if (!oplus_ddl_within_limit(rq, prev)) {
+			if (test_bit(OTS_STATE_DDL_ACTIVE_PREEMPTED, &ots->state))
+				clear_bit(OTS_STATE_DDL_ACTIVE_PREEMPTED, &ots->state);
+			return;
+		}
+
+		set_bit(OTS_STATE_DDL_ACTIVE_PREEMPTED, &ots->state);
+		WRITE_ONCE(ots->ddl_active_ts, now - ots->ddl_active_ts);
+	}
+}
+
+void oplus_task_ddl_tint(struct rq *rq, struct task_struct *next)
+{
+	struct oplus_task_struct *ots = get_oplus_task_struct(next);
+	u64 now = rq_clock(rq);
+
+	if (!oplus_get_task_ddl(next))
+		return;
+
+	if (!test_bit(OTS_STATE_DDL_ACTIVE, &ots->state)
+			&& !test_bit(OTS_STATE_DDL_ACTIVE_PREEMPTED, &ots->state))
+		return;
+
+	/*
+	 * clear active preempt bit when the task scheduled in, and ensure the
+	 * preempted active ddl task running time within limit after several
+	 * preemptions.
+	 */
+	if (unlikely(test_bit(OTS_STATE_DDL_ACTIVE_PREEMPTED, &ots->state))) {
+		WRITE_ONCE(ots->ddl_active_ts, now - ots->ddl_active_ts);
+		clear_bit(OTS_STATE_DDL_ACTIVE_PREEMPTED, &ots->state);
+		return;
+	}
+
+	WRITE_ONCE(ots->ddl_active_ts, now);
+}
+
+#define __node_2_ots(node) \
+	rb_entry((node), struct oplus_task_struct, ddl_node)
+
+static struct oplus_task_struct *pick_ddl_task(struct rq *rq, bool *active_preempted)
+{
+	struct oplus_rq *orq = get_oplus_rq(rq);
+	struct rb_node *left, *node;
+	unsigned long irqflag;
+	struct oplus_task_struct *ots = NULL;
+
+	if (!orq)
+		return NULL;
+
+	spin_lock_irqsave(orq->ddl_lock, irqflag);
+	left = rb_first_cached(&orq->ddl_root);
+	if (!left)
+		goto out_unlock;
+
+	for (node = left; node; node = rb_next(node)) {
+		ots = __node_2_ots(node);
+
+		if (IS_ERR_OR_NULL(ots)) {
+			WARN_ON_ONCE(1);
+			goto out_leftmost;
+		}
+
+		if (test_bit(OTS_STATE_DDL_ACTIVE_PREEMPTED, &ots->state)) {
+			*active_preempted = true;
+			goto out_unlock;
+		}
+	}
+
+out_leftmost:
+	ots = __node_2_ots(left);
+
+out_unlock:
+	spin_unlock_irqrestore(orq->ddl_lock, irqflag);
+	return ots;
+}
+
+void update_ddl_hit_history(struct task_struct *p)
+{
+	if(p) {
+		if (!strlen(ddl_sdata[p->pid].comm) ||
+			strncmp(p->comm, ddl_sdata[p->pid].comm, strlen(p->comm))) {
+			memset(&ddl_sdata[p->pid], 0, sizeof(struct ddl_sinfo_data));
+			strscpy_pad(ddl_sdata[p->pid].comm, p->comm, TASK_COMM_LEN);
+		}
+		ddl_sdata[p->pid].hit++;
+	}
+}
+
+void oplus_replace_next_task_ddl(struct rq *rq, struct task_struct **p,
+	struct sched_entity **se, bool *repick, bool simple)
+{
+	bool active_preempted = false;
+	u64 now = rq_clock(rq), runnable_time;
+	struct oplus_task_struct *ots;
+
+#ifdef CONFIG_HMBIRD_SCHED
+	if (is_hmbird_enable()) {
+		return;
+	}
+#endif
+
+	ots = pick_ddl_task(rq, &active_preempted);
+	if (IS_ERR_OR_NULL(ots))
+		return;
+
+	runnable_time = now - ots->runnable_ts;
+	if (unlikely((s64)runnable_time <= 0) && !active_preempted)
+		return;
+
+	if (NSEC_TO_MSEC(runnable_time) >= oplus_get_task_ddl(ots->task) ||
+			active_preempted) {
+		*p = ots->task;
+		*se = &ots->task->se;
+		*repick = true;
+		set_bit(OTS_STATE_DDL_ACTIVE, &ots->state);
+		update_ddl_hit_history(*p);
+	}
+}
+
+static ssize_t proc_ddl_task_read(struct file *file, char __user *buf,
+		size_t count, loff_t *ppos)
+{
+	char buffer[BUFFER_SIZE_DDL];
+	size_t len = 0;
+	struct task_struct *task;
+
+	rcu_read_lock();
+	task = find_task_by_vpid(ddl_pid_rd);
+	if (task)
+		get_task_struct(task);
+	rcu_read_unlock();
+
+	if (task) {
+		len = snprintf(buffer, sizeof(buffer), "%d ddl = %llu\n",
+			ddl_pid_rd, oplus_get_task_ddl(task));
+		put_task_struct(task);
+	}
+
+	return simple_read_from_buffer(buf, count, ppos, buffer, len);
+};
+
+/*
+ * Example:
+ * adb shell "echo "p 1611 8" > proc/oplus_scheduler/sched_assist/ux_task"
+ * 'p' means pid, '1611' is thread pid, '8' means set ux state as '2'
+ *
+ * adb shell "echo "r 1611" > proc/oplus_scheduler/sched_assist/ux_task"
+ * "r" means we want to read thread "1611"'s ddl info
+ */
+static ssize_t proc_ddl_task_write(struct file *file, const char __user *buf,
+		size_t count, loff_t *ppos)
+{
+	char buffer[BUFFER_SIZE_DDL];
+	char *str, *token;
+	char opt_str[OPT_STR_MAX][13] = {"0", "0", "0"};
+	int cnt = 0, pid, ddl, err;
+
+	int uid = task_uid(current).val;
+	/* only accept ux from system server or performance binder */
+	if (SYSTEM_UID != uid && ROOT_UID != uid) {
+		return -EFAULT;
+	}
+
+	memset(buffer, 0, sizeof(buffer));
+
+	if (count > sizeof(buffer) - 1)
+		count = sizeof(buffer) - 1;
+
+	if (copy_from_user(buffer, buf, count))
+		return -EFAULT;
+
+	buffer[count] = '\0';
+	str = strstrip(buffer);
+	while ((token = strsep(&str, " ")) && *token && (cnt < OPT_STR_MAX)) {
+		strlcpy(opt_str[cnt], token, sizeof(opt_str[cnt]));
+		cnt += 1;
+	}
+
+	if (cnt != OPT_STR_MAX) {
+		if (cnt == (OPT_STR_MAX - 1) && !strncmp(opt_str[OPT_STR_TYPE], "r", 1)) {
+			err = kstrtoint(strstrip(opt_str[OPT_STR_PID]), 10, &pid);
+			if (err)
+				return err;
+
+			if (pid > 0 && pid <= PID_MAX_DEFAULT)
+				ddl_pid_rd = pid;
+		}
+
+		return -EFAULT;
+	}
+
+	err = kstrtoint(strstrip(opt_str[OPT_STR_PID]), 10, &pid);
+	if (err)
+		return err;
+
+	err = kstrtoint(strstrip(opt_str[OPT_STR_VAL]), 10, &ddl);
+	if (err)
+		return err;
+
+	if (!strncmp(opt_str[OPT_STR_TYPE], "p", 1) && (ddl >= 0)) {
+		struct task_struct *ddl_task = NULL;
+
+		if (pid > 0 && pid <= PID_MAX_DEFAULT) {
+			rcu_read_lock();
+			ddl_task = find_task_by_vpid(pid);
+			if (ddl_task)
+				get_task_struct(ddl_task);
+			rcu_read_unlock();
+
+			if (ddl_task) {
+				oplus_set_task_ddl(ddl_task, ddl);
+				put_task_struct(ddl_task);
+			}
+		}
+	}
+
+	return count;
+};
+
+static long proc_ddl_task_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+	void __user *__arg = (void __user *) arg;
+	struct task_struct *ddl_task = NULL, *t = NULL;
+	int ret = 0;
+	struct ddl_ioctl_data data;
+	pid_t pid;
+	u64 ddl;
+
+	if (_IOC_TYPE(cmd) != DDL_MAGIC ||
+		_IOC_NR(cmd) >= DDL_CMD_MAX) {
+		return -EINVAL;
+	}
+
+	if (copy_from_user(&data, (void __user *)__arg, sizeof(data))) {
+		pr_err("Invalid address!!!");
+		return -EFAULT;
+	}
+
+	pid = data.pid;
+	ddl = data.ddl;
+
+	rcu_read_lock();
+	ddl_task = find_task_by_vpid(pid);
+	if (!ddl_task || !pid_alive(ddl_task)) {
+		rcu_read_unlock();
+		return -ECHILD;
+	}
+	get_task_struct(ddl_task);
+	rcu_read_unlock();
+
+	switch (cmd) {
+	case SET_THREAD_DDL:
+		oplus_set_task_ddl(ddl_task, ddl);
+		break;
+
+	case SET_PROCESS_DDL:
+		for_each_thread(ddl_task, t) {
+			if (!t || !pid_alive(t))
+				continue;
+			get_task_struct(t);
+			oplus_set_task_ddl(t, ddl);
+			put_task_struct(t);
+		}
+		break;
+
+	default:
+		ret = -EINVAL;
+		break;
+	}
+
+	put_task_struct(ddl_task);
+	return ret;
+}
+
+#ifdef CONFIG_COMPAT
+static long proc_ddl_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+	return proc_ddl_task_ioctl(file, cmd, (unsigned long)(compat_ptr(arg)));
+}
+#endif
+
+static int ddl_sinfo_comp(const void *a, const void *b)
+{
+	const struct ddl_sinfo_data sa = *(const struct ddl_sinfo_data *)a;
+	const struct ddl_sinfo_data sb = *(const struct ddl_sinfo_data *)b;
+	return sb.hit - sa.hit;
+}
+
+static ssize_t proc_ddl_sinfo_read(struct file *file, char __user *buf,
+		size_t count, loff_t *ppos)
+{
+	size_t len = 0;
+	unsigned int i = 0, num = 0;
+	char buffer[BUFFER_SIZE_DDL];
+
+	while (i < PID_MAX_DEFAULT && num = MAX_GUARDS_SIZE) {
+			len += snprintf(buffer + len, sizeof(buffer) - len, "...");
+			break;
+		}
+	}
+	buffer[len++] = '\n';
+	memset(ddl_sdata, 0, sizeof(struct ddl_sinfo_data) * PID_MAX_DEFAULT);
+
+	return simple_read_from_buffer(buf, count, ppos, buffer, len);
+}
+
+static const struct proc_ops ddl_task_fops = {
+	.proc_read		= proc_ddl_task_read,
+	.proc_write		= proc_ddl_task_write,
+	.proc_ioctl		= proc_ddl_task_ioctl,
+#ifdef CONFIG_COMPAT
+	.proc_compat_ioctl = proc_ddl_compat_ioctl,
+#endif
+	.proc_lseek		= default_llseek,
+};
+
+static const struct proc_ops ddl_sinfo_fops = {
+	.proc_read		= proc_ddl_sinfo_read,
+	.proc_lseek		= default_llseek,
+};
+
+void oplus_sched_ddl_init(struct proc_dir_entry *pde)
+{
+	struct proc_dir_entry *proc_node;
+
+	proc_node = proc_create("ddl_task", 0666, pde, &ddl_task_fops);
+	if (!proc_node) {
+		remove_proc_entry("ddl_task", pde);
+		pr_err("failed to create proc node ddl_task\n");
+	}
+
+	proc_node = proc_create("ddl_sinfo", 0666, pde, &ddl_sinfo_fops);
+	if (!proc_node) {
+		remove_proc_entry("ddl_task", pde);
+		pr_err("failed to create proc node ddl_task\n");
+	}
+
+}
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_ddl.h b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_ddl.h
new file mode 100755
index 00000000..0f643f4b
--- /dev/null
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_ddl.h
@@ -0,0 +1,47 @@
+#ifndef _OPLUS_SA_DDL_H_
+#define _OPLUS_SA_DDL_H_
+
+#define BUFFER_SIZE_DDL	(512)
+#define SAVED_SIZE	(50)
+#define MAX_GUARDS_SIZE	(BUFFER_SIZE_DDL - SAVED_SIZE)
+#define MAX_DDL_LIMIT (5000)
+#define MAX_DDL_RTHRES (150)
+#define NUM_DDL_HIT_ITEM (50)
+
+struct proc_dir_entry;
+
+enum ddl_cmd_id {
+	SET_THREAD_DDL,
+	SET_PROCESS_DDL,
+	DDL_CMD_MAX,
+};
+
+struct ddl_ioctl_data {
+	pid_t pid;
+	u64 ddl;
+};
+
+struct ddl_sinfo_data {
+	char	comm[TASK_COMM_LEN];
+	u64	hit;
+};
+
+#define DDL_MAGIC (0XDD)
+#define IOCTL_SET_THREAD_DDL \
+	_IOW(DDL_MAGIC, SET_THREAD_DDL, struct ddl_ioctl_data)
+#define IOCTL_SET_PROCESS_DDL \
+	_IOW(DDL_MAGIC, SET_PROCESS_DDL, struct ddl_ioctl_data)
+
+
+u64 oplus_get_task_ddl(struct task_struct *task);
+void oplus_set_task_ddl(struct task_struct *task, u64 ddl);
+void oplus_enqueue_ddl_node(struct rq *rq, struct task_struct *p);
+void oplus_dequeue_ddl_node(struct rq *rq, struct task_struct *p);
+void oplus_task_ddl_tint(struct rq *rq, struct task_struct *next);
+bool oplus_ddl_within_limit(struct rq *rq, struct task_struct *task);
+void oplus_ddl_check_preempt(struct rq *rq, struct task_struct *p, struct task_struct *curr, bool *preempt, bool *nopreempt);
+void oplus_replace_next_task_ddl(struct rq *rq, struct task_struct **p,
+	struct sched_entity **se, bool *repick, bool simple);
+void oplus_sched_ddl_init(struct proc_dir_entry *pde);
+void oplus_ddl_preempt_tint(struct rq *rq, struct task_struct *prev);
+#endif
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_fair.c b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_fair.c
index 132b8ae6..70f26d96 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_fair.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_fair.c
@@ -30,8 +30,11 @@
 
 #include "sa_hmbird.h"
 
-#include "trace_sched_assist.h"
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+#include "sa_ddl.h"
+#endif
 
+#include "trace_sched_assist.h"
 
 extern unsigned int sysctl_sched_latency;
 
@@ -66,7 +69,7 @@ int oplus_idle_cpu(int cpu)
 	return 1;
 }
 
-static inline int get_task_cls_for_scene(struct task_struct *task)
+inline int get_task_cls_for_scene(struct task_struct *task)
 {
 	struct ux_sched_cputopo ux_cputopo = ux_sched_cputopo;
 	int cls_max = ux_cputopo.cls_nr - 1;
@@ -222,7 +225,7 @@ bool should_ux_task_skip_cpu(struct task_struct *task, unsigned int dst_cpu)
 		if (test_bit(IM_FLAG_CAMERA_HAL, &im_flag))
 			return false;
 
-		orq = (struct oplus_rq *) cpu_rq(dst_cpu)->android_oem_data1;
+		orq = get_oplus_rq(cpu_rq(dst_cpu));
 		if (orq_has_ux_tasks(orq)) {
 			reason = 2;
 			goto skip;
@@ -264,7 +267,7 @@ int get_topology_cluster_id(int cpu)
 static inline bool select_target_cpu_fastpath(struct task_struct *task, int target_cpu)
 {
 	struct rq *orig_rq = cpu_rq(target_cpu);
-	struct oplus_rq *orig_orq = (struct oplus_rq *)orig_rq->android_oem_data1;
+	struct oplus_rq *orig_orq = get_oplus_rq(orig_rq);
 
 	if (test_task_ux(orig_rq->curr))
 		return false;
@@ -422,18 +425,19 @@ bool set_ux_task_to_prefer_cpu(struct task_struct *task, int *orig_target_cpu)
 	int start_cls = -1;
 	int cpu = 0;
 	int direction = -1;
-	int subopt_cpu = -1, vip_cpu = -1;
 	int orig_cls_id = 0;
 	cpumask_t search_cpus = CPU_MASK_NONE;
 	int max_spare_cap_cpu = -1;
 	int best_idle_cpu = -1;
-	unsigned long spare_cap = 0, max_spare_cap = 0;
-	unsigned long vip_max_spare_cap = 0;
-	unsigned long subopt_max_spare_cap = 0;
 	unsigned int min_exit_latency = UINT_MAX;
 	unsigned long best_idle_cuml_util = ULONG_MAX;
 	bool walk_next_cls = true;
 	bool ux_cls_boost = false;
+	int cpu_rq_ux_runnable_cnt = UINT_MAX;
+	int least_nr_cpu = -1;
+	int subopt_cpu = -1, vip_cpu = -1, max_subopt_cpu = -1;
+	long spare_cap = 0, subopt_max_spare_cap = 0;
+	long vip_max_spare_cap = -1, max_spare_cap = -1, rt_max_spare_cap = -1;
 
 	if (unlikely(!global_sched_assist_enabled))
 		return false;
@@ -475,7 +479,7 @@ retry:
 
 	for_each_cpu(cpu, &search_cpus) {
 		rq = cpu_rq(cpu);
-		orq = (struct oplus_rq *)rq->android_oem_data1;
+		orq = get_oplus_rq(rq);
 
 		/* fit status to check if taks util fits cpu capacity */
 		if (cls_nr == 0 && (!task_fits_max(task, cpu) || ux_cls_boost))
@@ -508,18 +512,33 @@ retry:
 		if (best_idle_cpu != -1)
 			continue;
 
+		/*
+		 * case: The system runs on a heavy load picking no cpu, and prevent
+		 * EAS picking a small core, pick max_spare_cap cpu and first cluster
+		 */
 		spare_cap = oplus_capacity_spare_of(cpu, task);
+		if (spare_cap > subopt_max_spare_cap) {
+			subopt_max_spare_cap = spare_cap;
+			max_subopt_cpu = cpu;
+		}
+
+		/*
+		 * Keep track of runnables for each CPU, if none of the
+		 * CPUs have spare capacity then use CPU with less
+		 * number of ux runnables.
+		 */
+		if (orq->nr_running < cpu_rq_ux_runnable_cnt) {
+			cpu_rq_ux_runnable_cnt = orq->nr_running;
+			least_nr_cpu = cpu;
+		}
+
 		/*
 		 * strict_ux case: The system runs on a heavy load picking no cpu,
 		 * and prevent EAS picking a small core, pick max_spare_cap cpu
 		 * and first cluster
 		 */
-		if (walk_next_cls && strict_ux_task(task) && !global_silver_perf_core) {
-			if (spare_cap > subopt_max_spare_cap) {
-				subopt_max_spare_cap = spare_cap;
-				subopt_cpu = cpu;
-			}
-		}
+		if (walk_next_cls && strict_ux_task(task) && !global_silver_perf_core)
+			subopt_cpu = cpu;
 
 		/* If an ux thread running on this CPU, drop it! */
 		if (oplus_get_ux_state(rq->curr) & SCHED_ASSIST_UX_MASK)
@@ -528,8 +547,13 @@ retry:
 		if (orq_has_ux_tasks(orq))
 			continue;
 
-		if (rq->curr->prio < MAX_RT_PRIO)
+		if (rq->curr->prio < MAX_RT_PRIO) {
+			if (spare_cap > rt_max_spare_cap) {
+				rt_max_spare_cap = spare_cap;
+				subopt_cpu = cpu;
+			}
 			continue;
+		}
 
 		/* If there are rt threads in runnable state on this CPU, drop it! */
 		if (rt_rq_is_runnable(&rq->rt))
@@ -599,6 +623,7 @@ retry:
 		return true;
 	}
 
+	/* 4 No cpu select, RT: max_spare_cap/strict_ux */
 	if (subopt_cpu != -1) {
 		trace_set_ux_task_to_prefer_cpu(task, "subopt",
 						*orig_target_cpu, subopt_cpu,
@@ -608,6 +633,26 @@ retry:
 		return true;
 	}
 
+	/* 5 No cpu select, cpu:max_spare_cap */
+	if (max_subopt_cpu != -1) {
+		trace_set_ux_task_to_prefer_cpu(task, "spare_sub",
+						*orig_target_cpu, max_subopt_cpu,
+						start_cls, cls_nr,
+						&search_cpus);
+		*orig_target_cpu = max_subopt_cpu;
+		return true;
+	}
+
+	/* 6 No cpu select, Keep track of runnables for each CPU */
+	if (least_nr_cpu != -1) {
+		trace_set_ux_task_to_prefer_cpu(task, "nr_cpu",
+						*orig_target_cpu, least_nr_cpu,
+						start_cls, cls_nr,
+						&search_cpus);
+		*orig_target_cpu = least_nr_cpu;
+		return true;
+	}
+
 	return false;
 }
 EXPORT_SYMBOL(set_ux_task_to_prefer_cpu);
@@ -630,7 +675,7 @@ EXPORT_SYMBOL(should_ux_task_skip_eas);
 extern void set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se);
 void oplus_replace_next_task_fair(struct rq *rq, struct task_struct **p, struct sched_entity **se, bool *repick, bool simple)
 {
-	struct oplus_rq *orq = (struct oplus_rq *) rq->android_oem_data1;
+	struct oplus_rq *orq = get_oplus_rq(rq);
 	struct rb_node *node;
 	unsigned long irqflag;
 
@@ -734,7 +779,7 @@ void resched_timer_init(void)
 
 	for_each_possible_cpu(i) {
 		rq = cpu_rq(i);
-		orq = (struct oplus_rq *) rq->android_oem_data1;
+		orq = get_oplus_rq(rq);
 		orq->cpu = i;
 		hrtimer_init(orq->resched_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 		orq->resched_timer->function = &no_preempt_resched;
@@ -794,6 +839,11 @@ inline void oplus_check_preempt_wakeup(struct rq *rq, struct task_struct *p, boo
 #endif
 		}
 #endif
+
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+		oplus_ddl_check_preempt(rq, p, curr, preempt, nopreempt);
+#endif
+
 		return;
 	}
 
@@ -809,7 +859,7 @@ inline void oplus_check_preempt_wakeup(struct rq *rq, struct task_struct *p, boo
 	}
 
 	/* both of wake_task and curr_task are ux */
-	orq = (struct oplus_rq *) rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 	spin_lock_irqsave(orq->ux_list_lock, irqflag);
 	smp_mb__after_spinlock();
 	if (!IS_ERR_OR_NULL(ots) && !oplus_rbnode_empty(&ots->ux_entry)) {
@@ -1053,6 +1103,8 @@ void android_rvh_update_deadline_handler(void *unused, struct cfs_rq *cfs_rq, st
 
 void android_rvh_enqueue_entity_handler(void *unused, struct cfs_rq *cfs_rq, struct sched_entity *se)
 {
+	struct task_struct *p = entity_is_task(se) ? task_of(se) : NULL;
+	struct rq *rq = rq_of(cfs_rq);
 #ifdef OPLUS_UX_EEVDF_COMPATIBLE
 	/* if enqueue back the current task */
 	if ((cfs_rq->curr == se) && entity_is_task(se)) {
@@ -1066,29 +1118,34 @@ void android_rvh_enqueue_entity_handler(void *unused, struct cfs_rq *cfs_rq, str
 
 #ifdef CONFIG_LOCKING_PROTECT
 #ifndef CONFIG_LOCKING_LAST_ENTITY
-	do {
-		struct task_struct *p = entity_is_task(se) ? task_of(se) : NULL;
-		struct rq *rq = rq_of(cfs_rq);
-		LOCKING_CALL_OP(enqueue_entity, rq, p);
-	} while (0);
+	LOCKING_CALL_OP(enqueue_entity, rq, p);
 #endif
 #endif
+
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	oplus_enqueue_ddl_node(rq, p);
+#endif
 }
 
-#ifdef CONFIG_LOCKING_PROTECT
+
 void android_rvh_dequeue_entity_handler(void *unused, struct cfs_rq *cfs, struct sched_entity *se)
 {
 	struct task_struct *p = entity_is_task(se) ? task_of(se) : NULL;
 	struct rq *rq = rq_of(cfs);
-
+#ifdef CONFIG_LOCKING_PROTECT
 #ifndef CONFIG_LOCKING_LAST_ENTITY
 	LOCKING_CALL_OP(dequeue_entity, rq, p);
 #else
 	LOCKING_CALL_OP(clear_last_entity, rq, p);
 #endif
-}
 #endif
 
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	oplus_dequeue_ddl_node(rq, p);
+#endif
+}
+
+
 void android_rvh_check_preempt_wakeup_handler(void *unused, struct rq *rq, struct task_struct *p, bool *preempt, bool *nopreempt,
 	int wake_flags, struct sched_entity *se, struct sched_entity *pse, int next_buddy_marked)
 {
@@ -1116,6 +1173,11 @@ void android_rvh_replace_next_task_fair_handler(void *unused,
 	}
 #endif
 
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	if (*repick != true)
+		oplus_replace_next_task_ddl(rq, p, se, repick, simple);
+#endif
+
 	/*
 	* NOTE:
 	* Because the following code is not merged in kernel-5.15,
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_fair.h b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_fair.h
index 2f5de43f..a87da0f9 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_fair.h
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_fair.h
@@ -52,6 +52,7 @@ void nopreempt_state_systrace_c(unsigned int cpu, int nopreempt_state);
 #endif
 
 int oplus_idle_cpu(int cpu);
+inline int get_task_cls_for_scene(struct task_struct *task);
 
 #ifdef CONFIG_OPLUS_ADD_CORE_CTRL_MASK
 bool oplus_cpu_halted(unsigned int cpu);
@@ -88,9 +89,7 @@ void android_rvh_post_init_entity_util_avg_handler(void *unused, struct sched_en
 void android_rvh_replace_next_task_fair_handler(void *unused, struct rq *rq, struct task_struct **p, struct sched_entity **se,
 	bool *repick, bool simple, struct task_struct *prev);
 void android_rvh_can_migrate_task_handler(void *unused, struct task_struct *p, int dst_cpu, int *can_migrate);
-#ifdef CONFIG_LOCKING_PROTECT
 void android_rvh_enqueue_entity_handler(void *unused, struct cfs_rq *cfs, struct sched_entity *se);
 void android_rvh_dequeue_entity_handler(void *unused, struct cfs_rq *cfs, struct sched_entity *se);
-#endif
 
 #endif /* _OPLUS_SA_FAIR_H_ */
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_group.c b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_group.c
index bfd1caca..b0417406 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_group.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_group.c
@@ -2,10 +2,21 @@
 #include 
 #include 
 #include 
+#include 
+#include 
 #include "sa_group.h"
 
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+#include "sa_ddl.h"
+#endif
+
 LIST_HEAD(css_tg_map_list);
 
+static struct task_group *css_tg(struct cgroup_subsys_state *css)
+{
+	return css ? container_of(css, struct task_group, css) : NULL;
+}
+
 static ssize_t tg_map_read(struct file *file, char __user *buf,
 		size_t count, loff_t *ppos)
 {
@@ -17,8 +28,8 @@ static ssize_t tg_map_read(struct file *file, char __user *buf,
 
 	rcu_read_lock();
 	list_for_each_entry_rcu(iter, &css_tg_map_list, map_list) {
-		len += sprintf(buffer + len, "%s:%d ",
-			iter->tg_name, iter->id);
+		len += snprintf(buffer + len, sizeof(buffer) - len, "%s:%d:%llu ",
+			iter->tg_name, iter->id, iter->ddl);
 		if (len > MAX_GUARD_SIZE) {
 			len += sprintf(buffer + len, "... ");
 			break;
@@ -31,13 +42,17 @@ static ssize_t tg_map_read(struct file *file, char __user *buf,
 	return simple_read_from_buffer(buf, count, ppos, buffer, len);
 };
 
-struct css_tg_map *get_tg_map(const char *tg_name)
+static struct css_tg_map *get_tg_map(const char *tg_name)
 {
 	struct css_tg_map *iter = NULL;
 
 	rcu_read_lock();
 	list_for_each_entry_rcu(iter, &css_tg_map_list, map_list) {
-		if (!(strcmp(iter->tg_name, tg_name))) {
+		if (!(strncmp(iter->tg_name, tg_name, strlen(tg_name)))) {
+
+			if (strlen(iter->tg_name) != strlen(tg_name))
+				continue;
+
 			rcu_read_unlock();
 			return iter;
 		}
@@ -51,53 +66,310 @@ static const struct proc_ops tg_map_fops = {
 	.proc_read		= tg_map_read,
 };
 
-struct css_tg_map *map_node_init(struct cgroup_subsys_state *css)
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+void oplus_update_ddl_tasks(struct cgroup_subsys_state *css, struct css_tg_map *map)
 {
-	struct cgroup *cgrp = NULL;
+	struct css_task_iter it;
+	struct task_struct *p;
+
+	css_task_iter_start(css, 0, &it);
+	while ((p = css_task_iter_next(&it)))
+		oplus_set_task_ddl(p, map->ddl);
+
+	css_task_iter_end(&it);
+}
+
+static u64 sg_ddl_read_u64(struct cgroup_subsys_state *css,
+		struct cftype *cft)
+{
+	struct task_group *tg = css_tg(css);
 	struct css_tg_map *map = NULL;
 
-	map = kzalloc(sizeof(struct css_tg_map), GFP_KERNEL);
-	if (!map || !css)
+	map = (struct css_tg_map *) READ_ONCE(tg->android_kabi_reserved3);
+	if (IS_ERR_OR_NULL(map))
+		return 0;
+
+	return map->ddl;
+}
+
+static int sg_ddl_write_u64(struct cgroup_subsys_state *css,
+		struct cftype *cft, u64 ddlval)
+{
+	struct task_group *tg = css_tg(css);
+	struct css_tg_map *map = NULL;
+
+	map = (struct css_tg_map *) READ_ONCE(tg->android_kabi_reserved3);
+	if (IS_ERR_OR_NULL(map))
+		return -ENOENT;
+
+	if (ddlval >= MAX_DDL_LIMIT)
+		return -EINVAL;
+
+	WRITE_ONCE(map->ddl, ddlval);
+	oplus_update_ddl_tasks(css, map);
+	return 0;
+}
+
+static u64 sg_ddl_rthres_read(struct cgroup_subsys_state *css,
+		struct cftype *cft)
+{
+	struct task_group *tg = css_tg(css);
+	struct css_tg_map *map = NULL;
+
+	map = (struct css_tg_map *) READ_ONCE(tg->android_kabi_reserved3);
+	if (IS_ERR_OR_NULL(map))
+		return 0;
+
+	return map->ddl_rthres;
+}
+
+static int sg_ddl_rthres_write(struct cgroup_subsys_state *css,
+		struct cftype *cft, u64 ddl_rthres)
+{
+	struct task_group *tg = css_tg(css);
+	struct css_tg_map *map = NULL;
+
+	map = (struct css_tg_map *) READ_ONCE(tg->android_kabi_reserved3);
+	if (IS_ERR_OR_NULL(map))
+		return -ENOENT;
+
+	if (ddl_rthres >= MAX_DDL_RTHRES)
+		return -EINVAL;
+
+	WRITE_ONCE(map->ddl_rthres, ddl_rthres);
+	return 0;
+}
+
+static struct cftype sg_ddl_files[] = {
+	{
+		.name = "sg.ddl",
+		.read_u64 = sg_ddl_read_u64,
+		.write_u64 = sg_ddl_write_u64,
+	},
+	{
+		.name = "sg.ddl_rthres",
+		.read_u64 = sg_ddl_rthres_read,
+		.write_u64 = sg_ddl_rthres_write,
+	},
+	{ }, /* terminate */
+};
+
+const struct oplus_sg_ddl cgrp_ddl_info[DDL_CGRP_MAX] = {
+	{
+		.ddl = 300,
+		.ddl_rthres = 60,
+	},
+	{
+		.tg_name = "foreground",
+		.ddl = 200,
+		.ddl_rthres = 80,
+	},
+	{
+		.tg_name = "background",
+		.ddl = 600,
+		.ddl_rthres = 50,
+	},
+	{
+		.tg_name = "top-app",
+		.ddl = 100,
+		.ddl_rthres = 100,
+	},
+	{
+		.tg_name = "system-background",
+		.ddl = 500,
+		.ddl_rthres = 60,
+	},
+	{
+		.tg_name = "bg",
+		.ddl = 600,
+		.ddl_rthres = 50,
+	},
+	{
+		.ddl = 400,
+		.ddl_rthres = 60,
+	},
+};
+
+static const struct oplus_sg_ddl *get_oplus_sg_ddl(int id, const char *tg_name)
+{
+	int iter = FOREGROUND;
+
+	if (0 >= id)
 		return NULL;
 
-	cgrp = css->cgroup;
-	if (cgrp && cgrp->kn) {
-		map->tg_name = kstrdup_const(cgrp->kn->name, GFP_KERNEL);
-		map->id = css->id;
-		return map;
+	if (1 == id)
+		return &cgrp_ddl_info[ROOTGROUP];
+
+	while (iter < DDL_CGRP_DEFAULT) {
+		if(!(strncmp(cgrp_ddl_info[iter].tg_name, tg_name, strlen(tg_name))))
+			return &cgrp_ddl_info[iter];
+		iter++;
 	}
+
+	return &cgrp_ddl_info[DDL_CGRP_DEFAULT];
+}
+
+u64 get_sg_ddl_rthres(struct task_group *tg)
+{
+	struct css_tg_map *map = NULL;
+
+	if (!tg)
+		return SG_DDL_RTHRES_DEFAULT;
+
+	map = (struct css_tg_map *) READ_ONCE(tg->android_kabi_reserved3);
+	if (IS_ERR_OR_NULL(map))
+		return SG_DDL_RTHRES_DEFAULT;
+
+	return map->ddl_rthres;
+}
+
+static struct css_tg_map *get_oplus_tg_map(struct task_group *tg)
+{
+	struct css_tg_map *map = NULL;
+
+	if (!tg)
+		return NULL;
+
+	map = (struct css_tg_map *) READ_ONCE(tg->android_kabi_reserved3);
+	if (IS_ERR_OR_NULL(map))
+		return NULL;
+
+	return map;
+}
+
+#else
+
+static const struct oplus_sg_ddl *get_oplus_sg_ddl(int id, const char *tg_name)
+{
 	return NULL;
 }
 
-void oplus_update_tg_map(struct cgroup_subsys_state *css)
+u64 get_sg_ddl_rthres(struct task_group *tg)
+{
+	return 0;
+}
+
+void oplus_update_ddl_tasks(struct cgroup_subsys_state *css, struct css_tg_map *map)
+{
+
+}
+
+#endif
+
+static struct css_tg_map *map_node_init(struct cgroup_subsys_state *css, bool initial)
+{
+	struct cgroup *cgrp = NULL;
+	struct css_tg_map *map = NULL;
+	struct task_group *tg = NULL;
+	const struct oplus_sg_ddl *sg_ddl = NULL;
+
+	map = kzalloc(sizeof(struct css_tg_map), GFP_KERNEL);
+	if (!map || !css) {
+		pr_err("alloc %s tg_map failed\n",
+			css && css->cgroup && css->cgroup->kn ? css->cgroup->kn->name : "CSS_NONAME");
+		return NULL;
+	}
+
+	tg = css_tg(css);
+	cgrp = css->cgroup;
+	sg_ddl = get_oplus_sg_ddl(css->id, cgrp->kn->name);
+	if (sg_ddl) {
+		map->ddl = sg_ddl->ddl;
+		map->ddl_rthres = sg_ddl->ddl_rthres;
+	}
+	map->tg_name = kstrdup_const(cgrp->kn->name, GFP_KERNEL);
+	map->id = css->id;
+
+	if (likely(tg)) {
+		smp_mb();
+		WRITE_ONCE(tg->android_kabi_reserved3, (u64) map);
+	}
+	if (initial)
+		oplus_update_ddl_tasks(css, map);
+
+	return map;
+}
+
+void oplus_update_tg_map(struct cgroup_subsys_state *css, bool initial)
 {
 	struct cgroup *cgrp = css->cgroup;
 	struct css_tg_map *map = NULL, *iter = NULL;
 
-	if (!(map = map_node_init(css)))
+	if (!cgrp || !cgrp->kn)
 		return;
 
-	if (cgrp && cgrp->kn) {
-		iter = get_tg_map(cgrp->kn->name);
-		if (iter) {
-			list_replace_rcu(&iter->map_list, &map->map_list);
-			synchronize_rcu();
-			kfree_const(iter->tg_name);
-			kfree(iter);
-			return;
-		}
-		list_add_tail_rcu(&map->map_list, &css_tg_map_list);
+	if (!(map = map_node_init(css, initial)))
+		return;
+
+	iter = get_tg_map(cgrp->kn->name);
+	if (iter) {
+		list_replace_rcu(&iter->map_list, &map->map_list);
+		kfree_const(iter->tg_name);
+		kfree(iter);
+		return;
 	}
+	list_add_tail_rcu(&map->map_list, &css_tg_map_list);
 }
 EXPORT_SYMBOL(oplus_update_tg_map);
 
+static void android_vh_sched_move_task_handler(void *unused, struct task_struct *tsk)
+{
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	struct css_tg_map *map = NULL;
+	struct task_group *tg = NULL;
+	u64 ddl;
+
+	tg = container_of(task_css(tsk, cpu_cgrp_id),
+		struct task_group, css);
+	if (tg == tsk->sched_task_group)
+		return;
+
+	map = get_oplus_tg_map(tg);
+	if (!map)
+		return;
+
+	ddl = oplus_get_task_ddl(tsk);
+	if (ddl == map->ddl)
+		return;
+
+	oplus_set_task_ddl(tsk, map->ddl);
+#endif
+}
+
+void oplus_sg_wake_up_new_task(struct task_struct *tsk)
+{
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	struct css_tg_map *map = NULL;
+	struct task_group *tg = NULL;
+
+	tg = tsk->sched_task_group;
+	map = get_oplus_tg_map(tg);
+	if (!map)
+		return;
+
+	oplus_set_task_ddl(tsk, map->ddl);
+#endif
+}
+
+static void register_oplus_cgrp_hooks(void)
+{
+	register_trace_android_vh_sched_move_task(android_vh_sched_move_task_handler, NULL);
+}
+
 void oplus_sched_group_init(struct proc_dir_entry *pde)
 {
 	struct proc_dir_entry *proc_node;
-
 	proc_node = proc_create("tg_map", 0666, pde, &tg_map_fops);
 	if (!proc_node) {
 		pr_err("failed to create proc node tg_css_map\n");
 		remove_proc_entry("tg_map", pde);
 	}
+
+	register_oplus_cgrp_hooks();
+
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	int ret = cgroup_add_legacy_cftypes(&cpu_cgrp_subsys, sg_ddl_files);
+	if (ret < 0)
+		pr_err("add sg_ddl file fail\n");
+#endif
 }
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_group.h b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_group.h
index 897d1535..616d5ae5 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_group.h
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_group.h
@@ -2,23 +2,61 @@
 #ifndef _OPLUS_SA_GROUP_H_
 #define _OPLUS_SA_GROUP_H_
 
+#ifdef pr_fmt
+#undef pr_fmt
+#endif
+
+#define pr_fmt(fmt) "sa_group: " fmt
+
 #include 
 
 #define NR_TG_GRP (40)
 #define SHARE_DEFAULT (100)
 #define BG_SHARE_DEFAULT (50)
-#define MAX_OUTPUT	(512)
+#define MAX_OUTPUT	(1024)
 #define EXTRA_SIZE (100)
 #define MAX_GUARD_SIZE (MAX_OUTPUT - EXTRA_SIZE)
+#define SG_DDL_RTHRES_DEFAULT (60)
+
+enum ddl_cgrp {
+	ROOTGROUP,
+	FOREGROUND,
+	BACKGROUND,
+	TOP_APP,
+	SYSTEM_BG,
+	BG,
+	DDL_CGRP_DEFAULT,
+	DDL_CGRP_MAX,
+};
+
+struct oplus_sg_ddl {
+	const char *tg_name;
+	u64 ddl;
+	u64 ddl_rthres;
+};
 
 struct css_tg_map {
 	struct list_head map_list;
 	const char *tg_name;
 	int id;
+	u64 ddl;
+	u64 ddl_rthres;
 	int share_pct;
 };
 
 extern struct task_group root_task_group;
-void oplus_update_tg_map(struct cgroup_subsys_state *css);
+
+#ifdef CONFIG_OPLUS_SCHED_GROUP_OPT
+u64 get_sg_ddl_rthres(struct task_group *tg);
+
+#else
+
+u64 get_sg_ddl_rthres(struct task_group *tg)
+{
+	return SG_DDL_RTHRES_DEFAULT;
+}
+#endif
+void oplus_sg_wake_up_new_task(struct task_struct *tsk);
 void oplus_sched_group_init(struct proc_dir_entry *pde);
+void oplus_update_tg_map(struct cgroup_subsys_state *css, bool initial);
 #endif
\ No newline at end of file
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_oemdata.c b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_oemdata.c
index ec4ef649..6b74b39c 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_oemdata.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_oemdata.c
@@ -47,7 +47,8 @@ void android_vh_dup_task_struct_handler(void *unused,
 		struct task_struct *tsk, struct task_struct *orig)
 {
 	int node;
-	struct oplus_task_struct *ots = NULL;
+	struct oplus_task_struct *ots;
+	struct oplus_task_struct *orig_ots;
 
 	if (!tsk || !orig)
 		return;
@@ -64,6 +65,14 @@ void android_vh_dup_task_struct_handler(void *unused,
 #if IS_ENABLED(CONFIG_ARM64_AMU_EXTN) && IS_ENABLED(CONFIG_OPLUS_FEATURE_CPU_JANKINFO)
 	ots->uid_struct = NULL;
 #endif
+	/* if thread fork from RenderThread, inherit its IM_FLAG_RENDER_THREAD */
+	orig_ots = get_oplus_task_struct(orig);
+	if (!IS_ERR_OR_NULL(orig_ots)) {
+		if (test_bit(IM_FLAG_RENDER_THREAD, &orig_ots->im_flag) && !strcmp(orig->comm, "RenderThread")) {
+			set_bit(IM_FLAG_RENDER_THREAD, &ots->im_flag);
+		}
+	}
+
 	smp_mb();
 
 	WRITE_ONCE(tsk->android_oem_data1[OTS_IDX], (u64) ots);
@@ -101,6 +110,13 @@ void android_vh_free_task_handler(void *unused, struct task_struct *tsk)
 	list_del_init(&ots->fbg_list);
 	atomic_set(&ots->is_vip_mvp, 0);
 	ots->task = NULL;
+
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	RB_CLEAR_NODE(&ots->ddl_node);
+	ots->ddl = ots->ddl_active_ts = 0;
+	memset(&ots->state, 0, sizeof(unsigned long));
+#endif
+
 #if IS_ENABLED(CONFIG_ARM64_AMU_EXTN) && IS_ENABLED(CONFIG_OPLUS_FEATURE_CPU_JANKINFO)
 	ots->uid_struct = NULL;
 #endif
@@ -154,6 +170,11 @@ static void init_oplus_task_struct(void *ptr)
 	INIT_LIST_HEAD(&ots->lkinfo.node);
 /*#endif*/
 	INIT_LIST_HEAD(&ots->fbg_list);
+
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	RB_CLEAR_NODE(&ots->ddl_node);
+#endif
+
 #ifdef CONFIG_LOCKING_PROTECT
 	INIT_LIST_HEAD(&ots->locking_entry);
 	ots->locking_start_time = 0;
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_pipeline.c b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_pipeline.c
index 58ac2fcf..165250e4 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_pipeline.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_pipeline.c
@@ -23,13 +23,13 @@ static DEFINE_RAW_SPINLOCK(pipeline_lock);
 
 #if IS_ENABLED(CONFIG_SCHED_WALT)
 #define PIPELINE_MIGRATE_UTIL_DIFF 300
-#define SWAP_DIFF_DEFAULT_PERCENT 70
-#define COLOC_DEMAND_DEFAULT_CNT 10;
+#define DEFAULT_AMPLIFICATION_COEF 200
+#define DEFAULT_COLOC_DEMAND_CNT 2
 #define MAX_NEW_WALT_WINDOWN_CNT 3000
-static bool pipeline_prime_rearrange = false;
+static int pipeline_prime_rearrange = 0;
 static bool new_pipeline_task_set = true;
-static int swap_diff_percent = SWAP_DIFF_DEFAULT_PERCENT;
-static int coloc_demand_cnt = COLOC_DEMAND_DEFAULT_CNT;
+static int amplification_coef = DEFAULT_AMPLIFICATION_COEF;
+static int coloc_demand_cnt = DEFAULT_COLOC_DEMAND_CNT;
 static int walt_windown_cnt = 0;
 static unsigned int pipeline_prev_coloc_demand[MAX_PIPELINE_TASK_NUM] = {0, 0, 0, 0, 0, 0};
 static unsigned int pipeline_task_sum_util[MAX_PIPELINE_TASK_NUM] = {0, 0, 0, 0, 0, 0};
@@ -295,7 +295,9 @@ static inline bool task_can_run_on_prime_cpu(struct task_struct *task)
 		task_util = pipeline_task_util_trace(task);
 		prime_util = pipeline_task_util_trace(prime_task);
 
-		if ((task_util > prime_util) && (task_util - prime_util >= PIPELINE_MIGRATE_UTIL_DIFF))
+		if ((task_util > prime_util) &&
+			(task_util - prime_util >= PIPELINE_MIGRATE_UTIL_DIFF) &&
+			(task_util >= prime_util * amplification_coef / 100))
 			can = true;
 
 unlock:
@@ -315,22 +317,20 @@ void qcom_rearrange_pipeline_preferred_cpus(unsigned int divisor)
 	unsigned int task_util = 0;
 	unsigned int max_util = 0;
 	unsigned int prime_util = 0;
-	unsigned int diff_util = 0;
-	int diff_percent = 0;
 	int max_walt_windown_cnt;
 	unsigned long flags;
 
 	if (unlikely(!global_sched_assist_enabled))
 		return;
 
-	if (!pipeline_prime_rearrange)
+	if (pipeline_prime_rearrange <= 0)
 		return;
 
 	if ((pipeline_task_nr <= 1) || (prime_task == NULL))
 		return;
 
 	if (raw_spin_trylock_irqsave(&pipeline_lock, flags)) {
-		if (!pipeline_prime_rearrange)
+		if (pipeline_prime_rearrange <= 0)
 			goto unlock;
 
 		if ((pipeline_task_nr <= 1) || (prime_task == NULL))
@@ -405,21 +405,13 @@ void qcom_rearrange_pipeline_preferred_cpus(unsigned int divisor)
 		if ((max_util_task != NULL) &&
 				(max_util_task != prime_task) &&
 				(max_util > prime_util)) {
-			if (prime_util == 0) {
-				diff_percent = 100;
-			} else {
-				diff_util = max_util - prime_util;
-				if (diff_util >= prime_util)
-					diff_percent = 100;
-				else
-					diff_percent = (diff_util * 100) / prime_util;
-			}
-
-			if (diff_percent >= swap_diff_percent) {
-				atomic_set(&prime_ots->pipeline_cpu, atomic_read(&max_util_ots->pipeline_cpu));
-				atomic_set(&max_util_ots->pipeline_cpu, nr_cpu_ids - 1);
-				prime_task = max_util_task;
-				prime_ots = max_util_ots;
+			if (max_util >= prime_util * amplification_coef / 100) {
+				if (pipeline_prime_rearrange == 1) { /* pipeline_prime_rearrange > 1, only output debug info */
+					atomic_set(&prime_ots->pipeline_cpu, atomic_read(&max_util_ots->pipeline_cpu));
+					atomic_set(&max_util_ots->pipeline_cpu, nr_cpu_ids - 1);
+					prime_task = max_util_task;
+					prime_ots = max_util_ots;
+				}
 
 				if (unlikely(global_debug_enabled & DEBUG_PIPELINE)) {
 					systrace_c_printk("swap_prime_task", 1);
@@ -428,9 +420,6 @@ void qcom_rearrange_pipeline_preferred_cpus(unsigned int divisor)
 			}
 		}
 
-		if (unlikely(global_debug_enabled & DEBUG_PIPELINE))
-			systrace_c_printk("diff_percent", diff_percent);
-
 unlock:
 		raw_spin_unlock_irqrestore(&pipeline_lock, flags);
 	}
@@ -662,6 +651,8 @@ bool oplus_pipeline_task_skip_cpu(struct task_struct *task, unsigned int dst_cpu
 
 #if IS_ENABLED(CONFIG_SCHED_WALT)
 	/* dst_cpu == nr_cpu_ids - 1 */
+	if (pipeline_prime_rearrange > 0)
+		return true;
 	if (task_can_run_on_prime_cpu(task))
 		skip = false;
 #endif
@@ -680,6 +671,24 @@ debug:
 }
 EXPORT_SYMBOL_GPL(oplus_pipeline_task_skip_cpu);
 
+bool oplus_pipeline_rt_skip_prime_cpu(unsigned int dst_cpu)
+{
+	if (unlikely(!global_sched_assist_enabled))
+		return false;
+
+	if (likely(prime_task == NULL))
+		return false;
+
+	if ((prime_cpu_num == 1) && (dst_cpu == nr_cpu_ids - 1))
+		return true;
+
+	if ((prime_cpu_num == 2) && ((dst_cpu == nr_cpu_ids - 1) || (dst_cpu == nr_cpu_ids - 2)))
+		return true;
+
+	return false;
+}
+EXPORT_SYMBOL_GPL(oplus_pipeline_rt_skip_prime_cpu);
+
 core_ctl_set_boost_t oplus_core_ctl_set_boost = NULL;
 EXPORT_SYMBOL_GPL(oplus_core_ctl_set_boost);
 core_ctl_set_cluster_boost_t oplus_core_ctl_set_cluster_boost = NULL;
@@ -909,7 +918,7 @@ static ssize_t pipeline_prime_proc_write(struct file *file,
 	char buffer[128] = {0};
 	int ret;
 	int rearrange;
-	int percent = -1;
+	int amp_coef = -1;
 	int cnt = -1;
 	unsigned long flags;
 
@@ -917,23 +926,23 @@ static ssize_t pipeline_prime_proc_write(struct file *file,
 	if (ret <= 0)
 		return ret;
 
-	ret = sscanf(buffer, "%d %d %d", &rearrange, &percent, &cnt);
+	ret = sscanf(buffer, "%d %d %d", &rearrange, &_coef, &cnt);
 	if (ret < 1)
 		return -EINVAL;
 
 	mutex_lock(&p_mutex);
 	raw_spin_lock_irqsave(&pipeline_lock, flags);
-	pipeline_prime_rearrange = !!rearrange;
+	pipeline_prime_rearrange = rearrange;
 
-	if (percent > 0 && percent <= 100)
-		swap_diff_percent = percent;
+	if (amp_coef > 100 && amp_coef <= 500)
+		amplification_coef = amp_coef;
 	else
-		swap_diff_percent = SWAP_DIFF_DEFAULT_PERCENT;
+		amplification_coef = DEFAULT_AMPLIFICATION_COEF;
 
-	if (cnt > 0 && cnt <= 20)
+	if (cnt > 0 && cnt <= 50)
 		coloc_demand_cnt = cnt;
 	else
-		coloc_demand_cnt = COLOC_DEMAND_DEFAULT_CNT;
+		coloc_demand_cnt = DEFAULT_COLOC_DEMAND_CNT;
 	raw_spin_unlock_irqrestore(&pipeline_lock, flags);
 	mutex_unlock(&p_mutex);
 
@@ -947,8 +956,8 @@ static ssize_t pipeline_prime_proc_read(struct file *file,
 	int len;
 
 	mutex_lock(&p_mutex);
-	len = sprintf(buffer, "%d %d %d\n", pipeline_prime_rearrange? 1 : 0,
-		swap_diff_percent, coloc_demand_cnt);
+	len = sprintf(buffer, "%d %d %d\n", pipeline_prime_rearrange,
+		amplification_coef, coloc_demand_cnt);
 	mutex_unlock(&p_mutex);
 
 	return simple_read_from_buffer(buf, count, ppos, buffer, len);
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_pipeline.h b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_pipeline.h
index b4445369..f703928c 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_pipeline.h
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_pipeline.h
@@ -17,6 +17,7 @@ void mtk_rearrange_pipeline_preferred_cpus(struct task_struct *p, const struct c
 #endif
 bool oplus_is_pipeline_scene(void);
 bool oplus_pipeline_task_skip_cpu(struct task_struct *task, unsigned int dst_cpu);
+bool oplus_pipeline_rt_skip_prime_cpu(unsigned int dst_cpu);
 
 typedef int (*core_ctl_set_boost_t)(bool boost);
 typedef int (*core_ctl_set_cluster_boost_t)(int idx, bool boost);
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_priority.c b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_priority.c
index c248045e..01fba29e 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_priority.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_priority.c
@@ -11,6 +11,10 @@
 #include "sa_common.h"
 #include "sa_priority.h"
 
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+#include "sa_ddl.h"
+#endif
+
 #define UX_NICE_0_LOAD  1024
 #define WMULT_CONST (~0U)
 #define WMULT_SHIFT 32
@@ -701,7 +705,7 @@ void android_vh_sched_stat_runtime_handler(void *unused, struct task_struct *tas
 #endif
 
 	rq = task_rq(task);
-	orq = (struct oplus_rq *)rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 	ots = get_oplus_task_struct(task);
 	if (IS_ERR_OR_NULL(ots)) {
 		return;
@@ -761,4 +765,13 @@ void android_vh_sched_stat_runtime_handler(void *unused, struct task_struct *tas
 
 out:
 	spin_unlock_irqrestore(orq->ux_list_lock, irqflag);
+
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	/* Ensure the calling here after the oplus_task_ddl_tint */
+	if (!READ_ONCE(task->on_cpu))
+		return;
+
+	if (ots->ddl_active_ts && !oplus_ddl_within_limit(rq, task))
+		resched_curr(rq);
+#endif
 }
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_sysfs.c b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_sysfs.c
index f9f79ac6..a5fd3e35 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_sysfs.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_sysfs.c
@@ -32,6 +32,10 @@
 #include "sa_group.h"
 #endif
 
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+#include "sa_ddl.h"
+#endif
+
 #define OPLUS_SCHEDULER_PROC_DIR		"oplus_scheduler"
 #define OPLUS_SCHEDASSIST_PROC_DIR		"sched_assist"
 
@@ -73,13 +77,6 @@ static u64 last_total_ncsw;
 static u64 last_total_nvcsw;
 #endif
 
-enum {
-	OPT_STR_TYPE = 0,
-	OPT_STR_PID,
-	OPT_STR_VAL,
-	OPT_STR_MAX = 3,
-};
-
 static ssize_t proc_debug_enabled_write(struct file *file, const char __user *buf,
 		size_t count, loff_t *ppos)
 {
@@ -180,7 +177,7 @@ static ssize_t proc_sched_group_enabled_read(struct file *file, char __user *buf
 	char buffer[20];
 	size_t len = 0;
 
-	len = snprintf(buffer, sizeof(buffer), "enabled=%d\n", global_sched_group_enabled);
+	len = snprintf(buffer, sizeof(buffer), "%d\n", global_sched_group_enabled);
 
 	return simple_read_from_buffer(buf, count, ppos, buffer, len);
 }
@@ -1314,6 +1311,10 @@ int oplus_sched_assist_proc_init(void)
 	oplus_pipeline_init(d_sched_assist);
 #endif
 
+#if IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_DDL)
+	oplus_sched_ddl_init(d_sched_assist);
+#endif
+
 	return 0;
 
 err_creat_ux_task:
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_sysfs.h b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_sysfs.h
index de12df97..d9d8138c 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sa_sysfs.h
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sa_sysfs.h
@@ -7,6 +7,13 @@
 #ifndef _OPLUS_SA_SYSFS_H_
 #define _OPLUS_SA_SYSFS_H_
 
+enum {
+	OPT_STR_TYPE = 0,
+	OPT_STR_PID,
+	OPT_STR_VAL,
+	OPT_STR_MAX = 3,
+};
+
 extern int global_sched_assist_enabled;
 extern int global_sched_assist_scene;
 extern char global_ux_task[];
diff --git a/vendor/oplus/kernel/cpu/sched/sched_assist/sched_assist.c b/vendor/oplus/kernel/cpu/sched/sched_assist/sched_assist.c
index ad531c94..bc6cf499 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_assist/sched_assist.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_assist/sched_assist.c
@@ -28,6 +28,10 @@
 #endif
 #include "sa_hmbird.h"
 
+#if IS_ENABLED(CONFIG_OPLUS_SCHED_GROUP_OPT)
+#include "sa_group.h"
+#endif
+
 #define HI_MASK		0xFF00000000000000UL
 #define HI_FLAG		0xAB00000000000000UL
 
@@ -67,6 +71,10 @@ static void set_ux_to_task(struct task_struct *new) {
 
 static void android_rvh_wake_up_new_task_handler(void *unused, struct task_struct *new) {
 	set_ux_to_task(new);
+
+#if IS_ENABLED(CONFIG_OPLUS_SCHED_GROUP_OPT)
+	oplus_sg_wake_up_new_task(new);
+#endif
 }
 
 static int register_scheduler_vendor_hooks(void)
@@ -86,9 +94,7 @@ static int register_scheduler_vendor_hooks(void)
 	/* REGISTER_TRACE_RVH(android_rvh_find_energy_efficient_cpu, android_rvh_find_energy_efficient_cpu_handler); */
 
 	REGISTER_TRACE_RVH(android_rvh_enqueue_entity, android_rvh_enqueue_entity_handler);
-#ifdef CONFIG_LOCKING_PROTECT
 	REGISTER_TRACE_RVH(android_rvh_dequeue_entity, android_rvh_dequeue_entity_handler);
-#endif
 
 #ifndef CONFIG_OPLUS_SYSTEM_KERNEL_QCOM
 	REGISTER_TRACE_RVH(android_rvh_check_preempt_wakeup, android_rvh_check_preempt_wakeup_handler);
@@ -159,10 +165,6 @@ static int register_scheduler_vendor_hooks(void)
 	return 0;
 }
 
-#define OPLUS_OEM_DATA_SIZE_TEST(ostruct, kstruct)		\
-	BUILD_BUG_ON(sizeof(ostruct) > (sizeof(u64) *		\
-		ARRAY_SIZE(((kstruct *)0)->android_oem_data1)))
-
 typedef int (*profile_event_register_t)(enum profile_type type,
 		struct notifier_block *n);
 static profile_event_register_t  _profile_event_register;
@@ -194,9 +196,6 @@ static int __init oplus_sched_assist_init(void)
 {
 	int ret;
 
-	/* compile time checks for vendor data size */
-	OPLUS_OEM_DATA_SIZE_TEST(struct oplus_rq, struct rq);
-
 	ret = sa_oemdata_init();
 	if (ret != 0)
 		return ret;
diff --git a/vendor/oplus/kernel/cpu/sched/sched_info/osi_freq.c b/vendor/oplus/kernel/cpu/sched/sched_info/osi_freq.c
index 69a8c695..731c3728 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_info/osi_freq.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_info/osi_freq.c
@@ -48,13 +48,13 @@ void get_cpufreq_info(bool *is_sample)
 			orig_min_id = cpufreq_table_find_index(pol, pol->cpuinfo.min_freq);
 			osi_debug("cpu:%d,pol->cur:%d,idx:%d min_idx:%d,max_idx:%d,orig_min_idx:%d,orig_max_idx:%d",
 				start_cpu, pol->cur, cur_idx, min_idx, max_idx, orig_min_id, orig_max_id);
-#ifdef CONFIG_ARCH_MEDIATEK
-			if ((max_idx < orig_min_id - 2) && (cur_idx <= min_idx - 2))
-				*is_sample = true;
-#else
-			if ((max_idx > 2) && (cur_idx >= max_idx - 2))
-				*is_sample = true;
-#endif
+			if (pol->freq_table_sorted == CPUFREQ_TABLE_SORTED_DESCENDING) {
+				if ((max_idx <= orig_min_id - 4) && (cur_idx <= max_idx + 2))
+					*is_sample = true;
+			} else {
+				if ((max_idx >= orig_min_id + 4) && (cur_idx >= max_idx - 2))
+					*is_sample = true;
+			}
 			cpufreq_cpu_put(pol);
 		}
 	}
diff --git a/vendor/oplus/kernel/cpu/sched/sched_info/osi_healthinfo.c b/vendor/oplus/kernel/cpu/sched/sched_info/osi_healthinfo.c
index 87d7fbd4..9e6eefd2 100755
--- a/vendor/oplus/kernel/cpu/sched/sched_info/osi_healthinfo.c
+++ b/vendor/oplus/kernel/cpu/sched/sched_info/osi_healthinfo.c
@@ -10,7 +10,6 @@
 #include 
 #include 
 #include 
-#include 
 #include 
 #include 
 #include 
@@ -245,10 +244,11 @@ static inline int get_task_cgroup_id(struct task_struct *task)
 #else
 inline int get_task_cgroup_id(struct task_struct *task) { return 0; }
 #endif
-
-#if  IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_ASSIST)
-// todo add ux type
-#endif
+/*
+ * #if  IS_ENABLED(CONFIG_OPLUS_FEATURE_SCHED_ASSIST)
+ * todo add ux type
+ * #endif
+ */
 
 void ohm_trig_init(void)
 {
@@ -445,7 +445,7 @@ void ohm_schedstats_record(int sched_type, struct task_struct *task, u64 delta_m
 	if (rt_task(task)) {
 		ohm_sched_stat_record_common(sched_stat, &sched_stat->rt, delta_ms);
 	}
-	if (SA_CGROUP_FOREGROUND == grp_id) {
+	if (SA_CGROUP_BACKGROUND == grp_id) {
 		ohm_sched_stat_record_common(sched_stat, &sched_stat->bg, delta_ms);
 	}
 	if (SA_CGROUP_SYS_BACKGROUND == grp_id) {
@@ -596,7 +596,6 @@ static ssize_t iowait_read(struct file *filp, char __user *buff, size_t count, l
 	*off += len < count ? len : count;
 
 	return (len < count ? len : count);
-
 }
 
 static const struct proc_ops proc_iowait_fops = {
@@ -747,7 +746,6 @@ static ssize_t dstate_read(struct file *filp, char __user *buff, size_t count, l
 static const struct proc_ops proc_dstate_fops = {
 	.proc_read = dstate_read,
 	.proc_lseek = default_llseek,
-
 };
 
 /*******alloc wait ************/
@@ -1290,7 +1288,7 @@ static void uids_proc_fs_init(struct proc_dir_entry *p_parent)
 		goto out_p_temp;
 
 out_p_temp:
-	return ;
+	return;
 }
 
 
diff --git a/vendor/oplus/kernel/cpu/uad/ua_ioctl/frame_ioctl.c b/vendor/oplus/kernel/cpu/uad/ua_ioctl/frame_ioctl.c
index 064c02de..997b1936 100755
--- a/vendor/oplus/kernel/cpu/uad/ua_ioctl/frame_ioctl.c
+++ b/vendor/oplus/kernel/cpu/uad/ua_ioctl/frame_ioctl.c
@@ -1354,6 +1354,30 @@ static ssize_t proc_cfbt_suspend_write(struct file *file, const char __user *buf
 	return count;
 }
 
+static ssize_t proc_cfbt_util_down_write(struct file *file, const char __user *buf,
+		size_t count, loff_t *ppos)
+{
+	char buffer[13];
+	int err, val;
+
+	memset(buffer, 0, sizeof(buffer));
+
+	if (count > sizeof(buffer) - 1)
+		count = sizeof(buffer) - 1;
+
+	if (copy_from_user(buffer, buf, count))
+		return -EFAULT;
+
+	buffer[count] = '\0';
+	err = kstrtoint(strstrip(buffer), 10, &val);
+	if (err)
+		return err;
+
+	set_cfbt_util_down(val);
+
+	return count;
+}
+
 #define MAX_INPUT_LEN 100
 static ssize_t proc_cfbt_rescue_write(struct file *file, const char __user *buffer,
 		size_t count, loff_t *ppos)
@@ -1412,6 +1436,17 @@ static ssize_t proc_cfbt_suspend_read(struct file *file, char __user *buf,
 	return simple_read_from_buffer(buf, count, ppos, buffer, len);
 }
 
+static ssize_t proc_cfbt_util_down_read(struct file *file, char __user *buf,
+		size_t count, loff_t *ppos)
+{
+	char buffer[20];
+	size_t len = 0;
+
+	len = snprintf(buffer, sizeof(buffer), "%d\n", get_cfbt_util_down());
+
+	return simple_read_from_buffer(buf, count, ppos, buffer, len);
+}
+
 static ssize_t proc_cfbt_rescue_read(struct file *file, char __user *buf,
 		size_t count, loff_t *ppos)
 {
@@ -1515,6 +1550,12 @@ static const struct proc_ops proc_cfbt_suspend_fops = {
 	.proc_lseek		= default_llseek,
 };
 
+static const struct proc_ops proc_cfbt_util_down_fops = {
+	.proc_write		= proc_cfbt_util_down_write,
+	.proc_read		= proc_cfbt_util_down_read,
+	.proc_lseek		= default_llseek,
+};
+
 static const struct proc_ops proc_cfbt_rescue_fops = {
 	.proc_write		= proc_cfbt_rescue_write,
 	.proc_read		= proc_cfbt_rescue_read,
@@ -1639,6 +1680,9 @@ int frame_ioctl_init(void)
 	if (!pentry)
 		goto ERROR_INIT;
 	pentry = proc_create("cfbt_suspend", 0666, frame_boost_proc, &proc_cfbt_suspend_fops);
+	if (!pentry)
+		goto ERROR_INIT;
+	pentry = proc_create("cfbt_util_down", 0666, frame_boost_proc, &proc_cfbt_util_down_fops);
 	if (!pentry)
 		goto ERROR_INIT;
 	pentry = proc_create("cfbt_rescue", 0666, frame_boost_proc, &proc_cfbt_rescue_fops);
diff --git a/vendor/oplus/kernel/framework_stability/oplus_stability_helper/binder_watcher.c b/vendor/oplus/kernel/framework_stability/oplus_stability_helper/binder_watcher.c
index 4f516b76..4e02899e 100644
--- a/vendor/oplus/kernel/framework_stability/oplus_stability_helper/binder_watcher.c
+++ b/vendor/oplus/kernel/framework_stability/oplus_stability_helper/binder_watcher.c
@@ -56,7 +56,7 @@ void binder_buffer_watcher(void *ignore, size_t size, size_t *free_async_space,
 			goto watcher_done;
 
 	 	//if this async transaction is from surfaceflinger backgroud thread or main thread, do nothing.		
-  		if (is_surface_flinger(current)) {
+  		if (is_surface_flinger(current->group_leader)) {
 			//binder_watcher_debug("%d:%s is calling alloc binder buffer  %d\n",current->tgid, current->comm,alloc->pid);
   			goto watcher_done;
 		}
diff --git a/vendor/oplus/kernel/ipc/binder_sched.c b/vendor/oplus/kernel/ipc/binder_sched.c
index af2a3b7b..1baa631d 100755
--- a/vendor/oplus/kernel/ipc/binder_sched.c
+++ b/vendor/oplus/kernel/ipc/binder_sched.c
@@ -35,7 +35,6 @@ unsigned long long g_sched_debug = 0;
 unsigned int g_async_ux_enable = 1;
 unsigned int g_set_last_async_ux = 1;
 unsigned int g_set_async_ux_after_pending = 1;
-int get_random_binder_task = 1;
 static unsigned int async_insert_queue = 1;
 int sync_insert_queue = 0;
 static int insert_limit[NUM_INSERT_MAX] = {0};
@@ -51,6 +50,11 @@ static int fg_debug_pid = FG_DEBUG_DEFAULT_SYSTEM_SERVER;
 static int fg_debug_interval = FG_DEBUG_INTERVAL_DEFAULT;
 int fg_list_dynamic_enable = 1;
 
+int get_random_binder_task = 0;
+/* g_desired_select_task_num should <= MAX_SELECTED_TASK */
+int g_desired_select_task_num = DESIRED_SELECT_TASK_NUM;
+static int select_more_tasks = 1;
+
 static int binder_ux_test_debug(void);
 
 static inline bool binder_feature_enable(unsigned int feature_mask)
@@ -63,6 +67,7 @@ static void binder_sched_dts_init(void)
 	struct device_node *np = NULL;
 	int feature_enable = 0;
 	int ret = -1;
+	int boost_task_enable = 0;
 
 	np = of_find_node_by_name(NULL, "oplus_sync_ipc");
 	if(np) {
@@ -81,6 +86,17 @@ static void binder_sched_dts_init(void)
 
 	pr_info("bd_feature_enable: 0x%x, fg_list_enable: %d, ret: %d\n",
 		bd_feature_enable, fg_list_enable, ret);
+
+	np = of_find_node_by_name(NULL, "oplus_binder_sched");
+	if(np) {
+		ret = of_property_read_u32(np, "thread_full_boost_task", &boost_task_enable);
+		if(ret)
+			pr_info("oplus_binder_sched no 'thread_full_boost_task' prop");
+		else
+			get_random_binder_task = boost_task_enable;
+	} else {
+		pr_info("no oplus_binder_sched node");
+	}
 }
 
 static inline struct oplus_binder_struct *alloc_oplus_binder_struct(void)
@@ -221,6 +237,8 @@ void set_task_async_ux_enable(pid_t pid, int enable)
 	}
 	ots->binder_async_ux_enable = enable;
 
+	binder_ux_state_systrace(current, task, STATE_USER_SET_ASYNC_UX,
+		LOG_BINDER_SYSTRACE_LVL1, NULL, NULL);
 	trace_binder_set_get_ux(task, pid, enable, "set enable end");
 	oplus_binder_debug(LOG_SET_ASYNC_UX, "(set_pid=%d task_pid=%d comm=%s) enable=%d ux_sts=%d set enable end\n",
 		pid, task->pid, task->comm, ots->binder_async_ux_enable, ots->binder_async_ux_sts);
@@ -294,7 +312,8 @@ void get_all_tasks_async_ux_enable(void)
 
 static inline bool is_sync_inherit_ux(struct binder_transaction *t)
 {
-	if (IS_ERR_OR_NULL(t) || IS_ERR_OR_NULL(t->from)) {
+	if (IS_ERR_OR_NULL(t) || IS_ERR_OR_NULL(t->from)
+		|| IS_ERR_OR_NULL(t->from->task)) {
 		return false;
 	}
 
@@ -958,6 +977,14 @@ static void binder_set_inherit_ux(struct task_struct *thread_task,
 	}
 }
 
+/* only used in try_set_ux_when_no_thread(), don't know whether it is sync or async */
+static void binder_set_inherit_ux_directly(struct task_struct *thread_task,
+	struct task_struct *from_task, struct binder_transaction *t,
+	struct binder_proc *proc)
+{
+	async_binder_set_inherit_ux(thread_task, from_task, false, t, proc);
+}
+
 static void binder_unset_inherit_ux(struct task_struct *thread_task,
 	int unset_type, struct binder_transaction *t, struct binder_proc *proc)
 {
@@ -1158,9 +1185,11 @@ static void set_binder_thread_node(struct binder_transaction *t,
 	}
 	ots = get_oplus_task_struct(task);
 	if (!IS_ERR_OR_NULL(ots)) {
-		oplus_binder_debug(LOG_TRACK_ASYNC_NODE, "before, thread(pid:%d tgid:%d comm:%s) sync:%d, reset:%d, ots_node:0x%llx, node:0x%llx t:%d\n",
-			task->pid, task->tgid, task->comm, sync, reset, (unsigned long long)ots->binder_thread_node,
-			(unsigned long long)node, t ? t->debug_id : 0);
+		oplus_binder_debug(LOG_TRACK_ASYNC_NODE, "before, thread(pid:%d tgid:%d comm:%s) sync:%d, reset:%d \
+			ots_node:[%d has_async:%d], node:[%d has_async:%d] t:%d\n",
+			task->pid, task->tgid, task->comm, sync, reset, ots->binder_thread_node ? ots->binder_thread_node->debug_id : 0,
+			ots->binder_thread_node ? ots->binder_thread_node->has_async_transaction : 0,
+			node ? node->debug_id : 0, node ? node->has_async_transaction : 0, t ? t->debug_id : 0);
 		if (reset) {
 			ots->binder_thread_node = NULL;
 			set_node = true;
@@ -1170,9 +1199,11 @@ static void set_binder_thread_node(struct binder_transaction *t,
 			set_node = true;
 			trace_set_thread_node(task, node, sync, "async set");
 		}
-		oplus_binder_debug(LOG_TRACK_ASYNC_NODE, "after, thread(pid:%d tgid:%d comm:%s) sync:%d, reset:%d, ots_node:0x%llx, node:0x%llx, set_node:%d t:%d\n",
-			task->pid, task->tgid, task->comm, sync, reset, (unsigned long long)ots->binder_thread_node, (unsigned long long)node,
-			set_node,  t ? t->debug_id : 0);
+		oplus_binder_debug(LOG_TRACK_ASYNC_NODE, "after, thread(pid:%d tgid:%d comm:%s) sync:%d, reset:%d \
+			ots_node:[%d has_async:%d], node:[%d has_async:%d], set_node:%d t:%d\n",
+			task->pid, task->tgid, task->comm, sync, reset, ots->binder_thread_node ? ots->binder_thread_node->debug_id : 0,
+			ots->binder_thread_node ? ots->binder_thread_node->has_async_transaction : 0,
+			node ? node->debug_id : 0, node ? node->has_async_transaction : 0, set_node, t ? t->debug_id : 0);
 	} else {
 		trace_set_thread_node(task, NULL, sync, "ots null");
 	}
@@ -1755,18 +1786,24 @@ static bool sync_mode_check_ux(struct binder_proc *proc,
 	return set_ux;
 }
 
-#define CHECK_MAX_NODE_FOR_ASYNC_THREAD		400
+/* if get same node task fail, maybe in proc->todo list */
 static struct task_struct *get_same_node_task(struct binder_proc *proc,
-	struct binder_node *node, struct binder_transaction *t)
+	struct binder_transaction *t)
 {
 	struct binder_thread *thread = NULL;
 	struct task_struct *task = NULL;
 	struct task_struct *select_task = NULL;
 	struct oplus_task_struct *ots = NULL;
+	struct binder_node *node = NULL;
 	struct rb_node *n = NULL;
 	bool has_async = true;
 	int count = 0;
+	static unsigned int get_count = 0;
+	static unsigned int not_get_count = 0;
 
+	if (t && t->buffer) {
+		node = t->buffer->target_node;
+	}
 	if (!proc || !node) {
 		return NULL;
 	}
@@ -1787,8 +1824,8 @@ static struct task_struct *get_same_node_task(struct binder_proc *proc,
 		if (count > CHECK_MAX_NODE_FOR_ASYNC_THREAD) {
 			break;
 		}
-		if ((g_sched_debug & LOG_TRACK_LAST_ASYNC) && !IS_ERR_OR_NULL(ots) && task) {
-			oplus_binder_debug(LOG_TRACK_LAST_ASYNC, "get_same_node t:%d proc(pid:%d tgid:%d comm:%s) task(pid:%d tgid:%d comm:%s) \
+		if ((g_sched_debug & LOG_TRACK_SELECT_TASK) && !IS_ERR_OR_NULL(ots) && task) {
+			oplus_binder_debug(LOG_TRACK_SELECT_TASK, "get_same_node t:%d proc(pid:%d tgid:%d comm:%s) task(pid:%d tgid:%d comm:%s) \
 				max_threads:%d request:%d started:%d count:%d ots_node:%d node:%d\n",
 				t ? t->debug_id : 0, proc->tsk->pid, proc->tsk->tgid, proc->tsk->comm, task->pid, task->tgid,
 				task->comm, proc->max_threads, proc->requested_threads, proc->requested_threads_started,
@@ -1797,14 +1834,19 @@ static struct task_struct *get_same_node_task(struct binder_proc *proc,
 	}
 
 end:
-	oplus_binder_debug(LOG_GET_LAST_ASYNC, "get_same_node end t:%d proc(pid:%d tgid:%d comm:%s) task(pid:%d tgid:%d comm:%s) \
-		max_threads:%d request:%d started:%d count:%d ots_node:%d node:%d, has_async:%d node get_result:%d\n",
+	if (g_sched_debug & LOG_GET_SELECT_TASK) {
+		if (select_task)
+			get_count++;
+		else
+			not_get_count++;
+	}
+	oplus_binder_debug(LOG_GET_SELECT_TASK, "get_same_node end t:%d proc(pid:%d tgid:%d comm:%s) task(pid:%d tgid:%d comm:%s) \
+		max_threads:%d request:%d started:%d count:%d node:%d, has_async:%d node get_result:%d get:%d, not_get:%d\n",
 		t ? t->debug_id : 0, proc->tsk->pid, proc->tsk->tgid, proc->tsk->comm,
 		select_task ? task->pid : 0, select_task ? task->tgid : 0,
 		select_task ? task->comm : "null", proc->max_threads, proc->requested_threads,
-		proc->requested_threads_started, count,
-		(ots->binder_thread_node ? ots->binder_thread_node->debug_id : 0), node->debug_id,
-		has_async, select_task ? true : false);
+		proc->requested_threads_started, count, node->debug_id,
+		has_async, select_task ? true : false, get_count, not_get_count);
 
 	return select_task;
 }
@@ -1833,7 +1875,7 @@ static inline bool is_binder_thread(struct binder_proc *proc, struct task_struct
 	} else {
 		ret = false;
 	}
-	oplus_binder_debug(LOG_TRACK_LAST_ASYNC, "is_binder_thread:%d, proc_context:%d \
+	oplus_binder_debug(LOG_TRACK_SELECT_TASK, "is_binder_thread:%d, proc_context:%d \
 		proc(pid:%d comm:%s) task(pid:%d, tgid:%d comm:%s)\n", ret, proc_context,
 		proc->tsk->pid, proc->tsk->comm, task->pid, task->tgid, task->comm);
 
@@ -1846,51 +1888,59 @@ static inline bool is_binder_thread(struct binder_proc *proc, struct task_struct
 #define GET_STATE(t) (t->state)
 #endif
 
-/* get same node task fail, maybe in proc->todo list, not in thread, select one (not_rt && not_ux && running) binder task */
-static struct task_struct *get_proc_lowprio_binder_task(struct binder_proc *proc,
-	struct binder_node *node, struct binder_transaction *t)
+static int get_proc_lowprio_binder_task(struct binder_proc *proc,
+	struct binder_transaction *t, int get_type, bool sync,
+	struct task_struct **select_tasks, int desired_select_num)
 {
 	struct binder_thread *thread = NULL;
 	struct task_struct *task = NULL;
-	struct task_struct *select_task = NULL;
 	struct rb_node *n = NULL;
 	int ux_type = 0;
 	int binder_thread_count = 0;
-	static int ux_thread = 0;
-	static int not_ux_thread = 0;
-	static int proc_allthread_ux = 0;
-	static int proc_not_allthread_ux = 0;
-	static int not_ux_not_running = 0;
+	int thread_not_ux = 0;
 	bool allthread_is_ux = false;
-	bool has_async = true;
 	int count = 0;
+	int ux_rt_thread = 0;
+	int truly_select_num = 0;
+	static unsigned int ux_max_count = 0;
+	static unsigned int proc_allthread_ux = 0;
+	static unsigned int proc_not_allthread_ux = 0;
+	static unsigned int not_ux_not_running = 0;
+	static unsigned int sync_has_got = 0;
+	static unsigned int sync_not_get = 0;
+	static unsigned int async_has_got = 0;
+	static unsigned int async_not_get = 0;
+	static unsigned int all_get = 0;
+	static unsigned int all_not_get = 0;
+	static unsigned int truly_select_more = 0;
 
 	if (!get_random_binder_task) {
-		return NULL;
+		return 0;
 	}
 	if (!proc) {
-		return NULL;
+		return 0;
+	}
+	if (proc->max_threads <= 0 || proc->requested_threads_started <= 0) {
+		return 0;
+	}
+	if (desired_select_num > MAX_SELECTED_TASK) {
+		desired_select_num = MAX_SELECTED_TASK;
 	}
 
 	/* for debug */
-	if (g_sched_debug & LOG_TRACK_LAST_ASYNC) {
-		for (n = rb_first(&proc->threads); n != NULL; n = rb_next(n)) {
-			thread = rb_entry(n, struct binder_thread, rb_node);
-			task = thread->task;
-			if (is_binder_thread(proc, task)) {
-				ux_type = get_ux_state_type(task);
-				if (ux_type == UX_STATE_NONE) {
-					ux_thread++;
-				} else {
-					not_ux_thread++;
+	if (g_sched_debug & LOG_TRACK_SELECT_TASK) {
+		if (strncmp(proc->tsk->comm, SURFACEFLINGER_NAME, TASK_COMM_LEN)) {
+			for (n = rb_first(&proc->threads); n != NULL; n = rb_next(n)) {
+				thread = rb_entry(n, struct binder_thread, rb_node);
+				task = thread->task;
+				if (is_binder_thread(proc, task)) {
+					ux_type = get_ux_state_type(task);
+					if (ux_type == UX_STATE_NONE)
+						thread_not_ux++;
 				}
 			}
-			count++;
-			if (count > CHECK_MAX_NODE_FOR_ASYNC_THREAD) {
-				break;
-			}
 		}
-		if (not_ux_thread)
+		if (thread_not_ux)
 			proc_not_allthread_ux++;
 		else {
 			proc_allthread_ux++;
@@ -1898,33 +1948,65 @@ static struct task_struct *get_proc_lowprio_binder_task(struct binder_proc *proc
 		}
 	}
 
-	count = 0;
-	binder_thread_count = 0;
 	for (n = rb_first(&proc->threads); n != NULL; n = rb_next(n)) {
 		thread = rb_entry(n, struct binder_thread, rb_node);
 		task = thread->task;
 		if (is_binder_thread(proc, task)) {
+			if (test_task_ux(task) || test_task_is_rt(task)) {
+				ux_rt_thread++;
+			}
+			if (ux_rt_thread > MAX_UX_THREAD_FOR_SET_RANDOM) {
+				if (!truly_select_num) {
+					binder_ux_state_systrace(current, NULL, STATE_MAX_UX_FOR_SET_RANDOM,
+						LOG_BINDER_SYSTRACE_LVL0, NULL, proc);
+				}
+				if (g_sched_debug & LOG_GET_SELECT_TASK)
+					ux_max_count++;
+				goto end;
+			}
+			ux_type = get_ux_state_type(task);
 			if (ux_type == UX_STATE_NONE) {
 				if (GET_STATE(task) == TASK_RUNNING) {
-					select_task = task;
-					goto end;
-				} else if (g_sched_debug & LOG_GET_LAST_ASYNC) {
+					if (truly_select_num < desired_select_num) {
+						*(select_tasks + truly_select_num) = task;
+						truly_select_num++;
+					}
+					if (truly_select_num >= desired_select_num) {
+						goto end;
+					}
+				} else if (g_sched_debug & LOG_GET_SELECT_TASK) {
 					not_ux_not_running++;
 				}
 			}
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0))
-			oplus_binder_debug(LOG_TRACK_LAST_ASYNC, "get_binder_task t:%d proc(pid:%d tgid:%d comm:%s) task(pid:%d tgid:%d comm:%s) \
-				max_threads:%d request:%d started:%d count:%d node_id:%d binder_thread_count:%d ux_type:%d ux_state:%d tsk_state:0x%x\n",
-				t ? t->debug_id : 0, proc->tsk->pid, proc->tsk->tgid, proc->tsk->comm, task->pid, task->tgid, task->comm,
-				proc->max_threads, proc->requested_threads, proc->requested_threads_started,
-				count, node ? node->debug_id : 0, binder_thread_count, ux_type, oplus_get_ux_state(task), GET_STATE(task));
-#else
-			oplus_binder_debug(LOG_TRACK_LAST_ASYNC, "get_binder_task t:%d proc(pid:%d tgid:%d comm:%s) task(pid:%d tgid:%d comm:%s) \
-				max_threads:%d request:%d started:%d count:%d node_id:%d binder_thread_count:%d ux_type:%d ux_state:%d tsk_state:0x%lx\n",
-				t ? t->debug_id : 0, proc->tsk->pid, proc->tsk->tgid, proc->tsk->comm, task->pid, task->tgid, task->comm,
-				proc->max_threads, proc->requested_threads, proc->requested_threads_started,
-				count, node ? node->debug_id : 0, binder_thread_count, ux_type, oplus_get_ux_state(task), GET_STATE(task));
+
+			if (g_sched_debug & LOG_GET_SELECT_TASK) {
+				struct oplus_task_struct *ots = get_oplus_task_struct(task);
+				int ots_ux_state = -1;
+				int ots_sub_ux_state = -1;
+				if (!IS_ERR_OR_NULL(ots)) {
+					ots_ux_state = ots->ux_state;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
+					ots_sub_ux_state = ots->sub_ux_state;
 #endif
+				}
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 15, 0))
+				oplus_binder_debug(LOG_GET_SELECT_TASK, "get_binder_task t:%d proc(pid:%d tgid:%d comm:%s) task(pid:%d tgid:%d comm:%s) \
+					max_threads:%d request:%d started:%d count:%d binder_thread_count:%d \
+					ux_type:%d ux_state:0x%x ots_ux_state:0x%x ots_sub:0x%x tsk_state:0x%x prio:%d get_type:%d\n",
+					t ? t->debug_id : 0, proc->tsk->pid, proc->tsk->tgid, proc->tsk->comm, task->pid, task->tgid, task->comm,
+					proc->max_threads, proc->requested_threads, proc->requested_threads_started,
+					count, binder_thread_count, ux_type, oplus_get_ux_state(task), ots_ux_state, ots_sub_ux_state,
+					GET_STATE(task), task->prio, get_type);
+#else
+				oplus_binder_debug(LOG_GET_SELECT_TASK, "get_binder_task t:%d proc(pid:%d tgid:%d comm:%s) task(pid:%d tgid:%d comm:%s) \
+					max_threads:%d request:%d started:%d count:%d binder_thread_count:%d \
+					ux_type:%d ux_state:0x%x ots_ux_state:0x%x ots_sub:0x%x tsk_state:0x%lx prio:%d get_type:%d\n",
+					t ? t->debug_id : 0, proc->tsk->pid, proc->tsk->tgid, proc->tsk->comm, task->pid, task->tgid, task->comm,
+					proc->max_threads, proc->requested_threads, proc->requested_threads_started,
+					count, binder_thread_count, ux_type, oplus_get_ux_state(task), ots_ux_state, ots_sub_ux_state,
+					GET_STATE(task), task->prio, get_type);
+#endif
+			}
 			if (g_sched_debug & LOG_BINDER_SYSTRACE_LVL1) {
 				binder_ux_state_systrace(current, task, STATE_TASK_STRUCT_STATE + GET_STATE(task),
 					LOG_BINDER_SYSTRACE_LVL1, t, proc);
@@ -1934,11 +2016,6 @@ static struct task_struct *get_proc_lowprio_binder_task(struct binder_proc *proc
 				break;
 			}
 		}
-
-		if (node && (node->has_async_transaction == false)) {
-			has_async = false;
-			break;
-		}
 		count++;
 		if (count > CHECK_MAX_NODE_FOR_ASYNC_THREAD) {
 			break;
@@ -1946,84 +2023,50 @@ static struct task_struct *get_proc_lowprio_binder_task(struct binder_proc *proc
 	}
 
 end:
-	oplus_binder_debug(LOG_GET_LAST_ASYNC, "get_binder_task end t:%d proc(pid:%d tgid:%d comm:%s) task(pid:%d tgid:%d comm:%s) \
-		max_threads:%d request:%d started:%d count:%d node_id:%d binder_thread_count:%d ux_state:%d, has_async:%d ux_thread:%d \
-		not_ux_thread:%d proc_allthread_ux:%d proc_not_allthread_ux:%d allthread_is_ux:%d not_ux_not_running:%d task get_result:%d\n",
-		t ? t->debug_id : 0, proc->tsk->pid, proc->tsk->tgid, proc->tsk->comm,
-		select_task ? task->pid : 0, select_task ? task->tgid : 0, select_task ? task->comm : "null",
-		proc->max_threads, proc->requested_threads, proc->requested_threads_started,
-		count, node ? node->debug_id : 0, binder_thread_count, oplus_get_ux_state(select_task), has_async,
-		ux_thread, not_ux_thread, proc_allthread_ux, proc_not_allthread_ux, allthread_is_ux, not_ux_not_running,
-		select_task ? true : false);
-
-	return select_task;
-}
-
-static struct task_struct *get_current_async_thread(struct binder_transaction *t, struct binder_proc *proc)
-{
-	struct task_struct *select_task = NULL;
-	struct binder_node *node = NULL;
-	ktime_t time = 0;
-	static int get_same_node = 0;
-	static int get_lowprio_binder = 0;
-	static int notget_lowprio_binder = 0;
-	static int get_task = 0;
-	static int not_get = 0;
-
-	if (unlikely(!g_set_last_async_ux)) {
-		return NULL;
-	}
-
-	if (t && t->buffer) {
-		node = t->buffer->target_node;
-	}
-	if (!node || !proc) {
-		return NULL;
-	}
-	if (g_sched_debug & LOG_GET_LAST_ASYNC) {
-		time = ktime_get();
-	}
-
-	select_task = get_same_node_task(proc, node, t);
-	if (select_task) {
-		if (g_sched_debug & LOG_GET_LAST_ASYNC) {
-			get_same_node++;
+	if (g_sched_debug & LOG_GET_SELECT_TASK) {
+		if (truly_select_num) {
+			int i;
+			for (i = 0; i < truly_select_num; i++) {
+				task = *(select_tasks + i);
+				oplus_binder_debug(LOG_GET_SELECT_TASK, "get_binder_task end t:%d, task[%d]:(pid:%d tgid:%d comm:%s) \
+					ux_state:%d truly_select_num:%d\n",
+					t ? t->debug_id : 0, i, task ? task->pid : 0, task ? task->tgid : 0,
+					task ? task->comm : "null", oplus_get_ux_state(task), truly_select_num);
+				all_get++;
+				if (sync)
+					sync_has_got++;
+				else
+					async_has_got++;
+			}
+		} else {
+			all_not_get++;
+			if (sync)
+				sync_not_get++;
+			else
+				async_not_get++;
 		}
-		goto end;
-	}
-	select_task = get_proc_lowprio_binder_task(proc, node, t);
-	if (g_sched_debug & LOG_GET_LAST_ASYNC) {
-		if (select_task)
-			get_lowprio_binder++;
-		else
-			notget_lowprio_binder++;	/* maybe all rt /all ux / no binder thread / not running / has_async false  */
+		if (truly_select_num > g_desired_select_task_num)
+			truly_select_more++;
 	}
+	oplus_binder_debug(LOG_GET_SELECT_TASK, "get_binder_task end  t:%d sync:%d proc(pid:%d tgid:%d comm:%s) \
+		task(pid:%d tgid:%d comm:%s) max_threads:%d request:%d started:%d count:%d binder_thread_count:%d \
+		thread_not_ux:%d proc_allthread_ux:%d proc_not_allthread_ux:%d allthread_is_ux:%d not_ux_not_running:%d \
+		ux_type:%d ux_rt_thread:%d desired_select_num:%d, truly_select_num:%d select_more:%d ux_max_count:%d \
+		task get_result:%d get_type:%d sync[get:%d not_get:%d] async[get:%d not_get:%d] all[get:%d not_get:%d]\n",
+		t ? t->debug_id : 0, sync, proc->tsk->pid, proc->tsk->tgid, proc->tsk->comm,
+		task ? task->pid : 0, task ? task->tgid : 0, task ? task->comm : "null",
+		proc->max_threads, proc->requested_threads, proc->requested_threads_started,
+		count, binder_thread_count, thread_not_ux, proc_allthread_ux, proc_not_allthread_ux,
+		allthread_is_ux, not_ux_not_running, ux_type, ux_rt_thread, desired_select_num, truly_select_num,
+		truly_select_more, ux_max_count, truly_select_num ? true : false, get_type, sync_has_got,
+		sync_not_get, async_has_got, async_not_get, all_get, all_not_get);
 
-end:
-	if (g_sched_debug & LOG_GET_LAST_ASYNC) {
-		time = ktime_get() - time;
-		if (select_task)
-			get_task++;
-		else
-			not_get++;
-	}
-	oplus_binder_debug(LOG_GET_LAST_ASYNC, "t:%d current(pid:%d tgid:%d comm:%s) proc(pid:%d tgid:%d comm:%s) \
-		task(pid:%d tgid:%d comm:%s) max_threads:%d request:%d started:%d node:%d get_same_node:%d \
-		get_lowprio_binder:%d notget_lowprio_binder:%d time:%lldns final get_result:%d get_task:%d not_get:%d\n",
-		t ? t->debug_id : 0, current->pid, current->tgid, current->comm,
-		proc->tsk->pid, proc->tsk->tgid, proc->tsk->comm,
-		select_task ? select_task->pid : 0, select_task ? select_task->tgid : 0,
-		select_task ? select_task->comm : "null", proc->max_threads, proc->requested_threads,
-		proc->requested_threads_started, node->debug_id, get_same_node, get_lowprio_binder,
-		notget_lowprio_binder, time, select_task ? true : false, get_task, not_get);
-
-	return select_task;
+	return truly_select_num;
 }
 
-
 static bool async_mode_check_ux(struct binder_proc *proc, struct binder_transaction *t,
 		struct task_struct *binder_th_task, bool sync, bool pending_async,
-		struct task_struct **last_task, bool *force_sync)
+		struct task_struct **last_task, bool *force_sync, bool *async_need_select)
 {
 	struct oplus_binder_struct *obs = NULL;
 	struct task_struct *ux_task = binder_th_task;
@@ -2057,22 +2100,21 @@ static bool async_mode_check_ux(struct binder_proc *proc, struct binder_transact
 
 	/* pending_async, no binder_th_task */
 	if (pending_async) {
-		ux_task = get_current_async_thread(t, proc);
+		ux_task = get_same_node_task(proc, t);
 		if (ux_task) {
 			*last_task = ux_task;
 			set_ux = true;
 			binder_ux_state_systrace(current, ux_task, STATE_ASYNC_SET_LAST_UX, LOG_BINDER_SYSTRACE_LVL0, t, proc);
 		} else {
 			set_ux = false;
+			*async_need_select = true;
 			binder_ux_state_systrace(current, NULL, STATE_ASYNC_NOT_SET_LAST_UX, LOG_BINDER_SYSTRACE_LVL0, t, proc);
 		}
 		obs->pending_async = true;
-		trace_binder_ux_task(sync, pending_async, set_ux, ux_task, obs->async_ux_enable,
-			t, obs, "async_ux set last");
 		goto end;
 	} else {
+		*async_need_select = true;
 		obs->async_ux_no_thread = true;
-		binder_ux_state_systrace(current, NULL, STATE_ASYNC_NO_THREAD_NO_PENDING, LOG_BINDER_SYSTRACE_LVL0, t, proc);
 	}
 end:
 	trace_binder_ux_task(sync, pending_async, set_ux, ux_task, INVALID_VALUE,
@@ -2176,6 +2218,74 @@ static void dump_binder_sched_info(struct binder_transaction *t,
 	dump_fg_list_info(proc, sync);
 }
 
+static bool need_select_more_tasks(struct binder_transaction *t,
+	struct task_struct *from_task)
+{
+	struct task_struct *group_leader = NULL;
+
+	if (!select_more_tasks)
+		return false;
+
+	if (!from_task)
+		return false;
+
+	group_leader = from_task->group_leader;
+	if (IS_ERR_OR_NULL(group_leader))
+		return false;
+	if (strncmp(group_leader->comm, SURFACEFLINGER_NAME, TASK_COMM_LEN))
+		return false;
+	if (strncmp(from_task->comm, SF_BCKGRNDEXEC_THREAD_NAME, TASK_COMM_LEN))
+		return false;
+	else
+		return true;
+}
+
+static void try_set_ux_when_no_thread(struct binder_proc *proc,
+	struct binder_transaction *t, struct task_struct *thread_task,
+	bool set_ux, bool sync, bool async_need_select)
+{
+	struct task_struct *select_tasks[MAX_SELECTED_TASK] = {0};
+	struct task_struct *task = NULL;
+	int desired_select_num = g_desired_select_task_num;
+	int truly_select_num = 0;
+	int i;
+
+	if (!get_random_binder_task)
+		return;
+
+	if (set_ux || thread_task || !proc)
+		return;
+	if (proc->max_threads <= 0
+		|| proc->requested_threads_started <= 0 || !proc->tsk)
+		return;
+
+	if (sync && !is_sync_inherit_ux(t))
+		return;
+	if (!sync && !async_need_select)
+		return;
+
+	if (need_select_more_tasks(t, current)) {
+		desired_select_num += select_more_tasks;
+	}
+	truly_select_num = get_proc_lowprio_binder_task(proc, t,
+		GET_TASK_WHEN_SYNC_NO_THREAD, sync, select_tasks, desired_select_num);
+	if (truly_select_num) {
+		for (i = 0; i < truly_select_num; i++) {
+			task = *(select_tasks + i);
+			if (!IS_ERR_OR_NULL(task)) {
+				binder_ux_state_systrace(current, task,
+					STATE_SET_RANDOM_UX_NO_THREAD, LOG_BINDER_SYSTRACE_LVL0, t, proc);
+				binder_set_inherit_ux_directly(task, current, t, proc);
+			} else {
+				binder_ux_state_systrace(current, proc->tsk,
+					STATE_NOT_SET_NO_THREAD_ERR, LOG_BINDER_SYSTRACE_LVL0, t, proc);
+			}
+		}
+	} else {
+		binder_ux_state_systrace(current, proc->tsk,
+			STATE_NOT_SET_NO_THREAD, LOG_BINDER_SYSTRACE_LVL0, t, proc);
+	}
+}
 
 static void android_vh_binder_proc_transaction_finish_handler(void *unused, struct binder_proc *proc,
 		struct binder_transaction *t, struct task_struct *binder_th_task, bool pending_async, bool sync)
@@ -2183,6 +2293,7 @@ static void android_vh_binder_proc_transaction_finish_handler(void *unused, stru
 	struct task_struct *last_task = NULL;
 	bool set_ux = false;
 	bool force_sync = false;
+	bool async_need_select = false;
 
 	if (unlikely(!g_sched_enable))
 		return;
@@ -2201,7 +2312,7 @@ static void android_vh_binder_proc_transaction_finish_handler(void *unused, stru
 		set_ux = sync_mode_check_ux(proc, t, binder_th_task, sync);
 	} else {
 		set_ux = async_mode_check_ux(proc, t, binder_th_task, sync,
-			pending_async, &last_task, &force_sync);
+			pending_async, &last_task, &force_sync, &async_need_select);
 	}
 
 #if IS_ENABLED(CONFIG_ANDROID_BINDER_IPC_VIP_THREAD)
@@ -2219,6 +2330,8 @@ static void android_vh_binder_proc_transaction_finish_handler(void *unused, stru
 		}
 	}
 
+	try_set_ux_when_no_thread(proc, t, binder_th_task, set_ux, sync, async_need_select);
+
 	if (last_task) {
 		trace_binder_ux_task(sync, pending_async, set_ux, last_task,
 			INVALID_VALUE, t, NULL, "ux t_finish last");
@@ -2364,3 +2477,5 @@ module_param_named(binder_fg_debug_pid, fg_debug_pid, int, 0664);
 module_param_named(binder_fg_debug_interval, fg_debug_interval, int, 0664);
 module_param_named(binder_feature_enable, bd_feature_enable, int, 0444);
 module_param_named(get_random_binder_task, get_random_binder_task, int, 0664);
+module_param_named(g_desired_select_task_num, g_desired_select_task_num, int, 0664);
+module_param_named(select_more_tasks, select_more_tasks, int, 0664);
diff --git a/vendor/oplus/kernel/ipc/binder_sched.h b/vendor/oplus/kernel/ipc/binder_sched.h
index dc21245e..7525f21d 100755
--- a/vendor/oplus/kernel/ipc/binder_sched.h
+++ b/vendor/oplus/kernel/ipc/binder_sched.h
@@ -30,6 +30,8 @@ extern unsigned long long g_sched_debug;
 
 #define CURRENT_TASK_PID				-1
 #define SYSTEM_SERVER_NAME              "system_server"
+#define SURFACEFLINGER_NAME		"surfaceflinger"
+#define SF_BCKGRNDEXEC_THREAD_NAME	"BckgrndExec HP"
 #define BD_FEATURE_MASK                 0xffffffff
 
 extern unsigned int g_sched_enable;
@@ -107,8 +109,8 @@ enum {
 	LOG_SET_ASYNC_UX	= 1U << 3,
 	LOG_TRACK_ASYNC_UX	= 1U << 4,
 	LOG_SET_SYNC_UX		= 1U << 5,
-	LOG_GET_LAST_ASYNC	= 1U << 6,
-	LOG_TRACK_LAST_ASYNC	= 1U << 7,
+	LOG_GET_SELECT_TASK	= 1U << 6,
+	LOG_TRACK_SELECT_TASK	= 1U << 7,
 	LOG_SET_ASYNC_AFTER_PENDING	= 1U << 8,
 	LOG_SET_SF_UX	= 1U << 9,
 	LOG_FG_LIST_LVL0	= 1U << 10,
@@ -150,7 +152,11 @@ enum {
 	STATE_FG_VIP_THREAD_SKIP = 29,
 	STATE_PENDING_ASYNC = 30,
 	STATE_MAX_DEPTH_NOT_SET_UX = 31,
-	STATE_TASK_STRUCT_STATE = 100,
+	STATE_NOT_SET_NO_THREAD = 32,
+	STATE_NOT_SET_NO_THREAD_ERR = 33,
+	STATE_USER_SET_ASYNC_UX = 33,
+	STATE_MAX_UX_FOR_SET_RANDOM = 34,
+	STATE_TASK_STRUCT_STATE = 200,
 	STATE_SYNC_SET_UX = 50,
 	STATE_SYNC_RESET_UX = 51,
 	STATE_SYNC_RT_SET_UX = 52,
@@ -159,6 +165,7 @@ enum {
 	STATE_ASYNC_SET_UX_AFTER_NO_THREAD = 55,
 	STATE_SYNC_SET_UX_AGAIN_SERVICEMG = 56,
 	STATE_SYNC_RESET_UX_SERVICEMG = 57,
+	STATE_SET_RANDOM_UX_NO_THREAD = 58,
 };
 
 enum {
@@ -217,4 +224,15 @@ static inline void oplus_bd_feat_enable(unsigned int bd_feat, bool enable)
 void binder_ux_state_systrace(struct task_struct *from, struct task_struct *target,
 	int ux_state, int systrace_lvl, struct binder_transaction *t, struct binder_proc *proc);
 
+enum {
+	GET_TASK_WHEN_SYNC_NO_THREAD,
+	GET_TASK_WHEN_ASYNC_NO_THREAD,
+	GET_TASK_WHEN_PENDING_ASYNC,
+};
+
+#define CHECK_MAX_NODE_FOR_ASYNC_THREAD	400
+#define MAX_SELECTED_TASK	5
+#define MAX_UX_THREAD_FOR_SET_RANDOM	5
+#define DESIRED_SELECT_TASK_NUM	1
+
 #endif /* _OPLUS_BINDER_SCHED_H_ */
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zcomp.c b/vendor/oplus/kernel/mm/hybridswap_zram/zcomp.c
index df8ae2ce..defd0c78 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zcomp.c
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zcomp.c
@@ -34,6 +34,9 @@ static const char * const backends[] = {
 #if IS_ENABLED(CONFIG_CRYPTO_LZ4K)
 	"lz4k",
 #endif
+#if IS_ENABLED(CONFIG_CRYPTO_ZSTDN)
+	"zstdn",
+#endif
 };
 
 static void zcomp_strm_free(struct zcomp_strm *zstrm)
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/error_private.h b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/error_private.h
index 99e2439e..f02b9d52 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/error_private.h
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/error_private.h
@@ -19,7 +19,7 @@
 *  Dependencies
 ******************************************/
 #include "zstd_deps.h"    /* size_t */
-#include "zstd_errors.h"  /* enum list */
+#include "../include/zstd_errors.h"  /* enum list */
 
 
 /* ****************************************
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/fse_decompress.c b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/fse_decompress.c
index 2c8bbe3e..f37b7aec 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/fse_decompress.c
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/fse_decompress.c
@@ -312,7 +312,7 @@ size_t FSE_decompress_wksp(void* dst, size_t dstCapacity, const void* cSrc, size
 
 typedef struct {
     short ncount[FSE_MAX_SYMBOL_VALUE + 1];
-    FSE_DTable dtable[1]; /* Dynamically sized */
+    FSE_DTable dtable[]; /* Dynamically sized */
 } FSE_DecompressWksp;
 
 
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/zstd_internal.h b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/zstd_internal.h
index a5417183..78bfb6d6 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/zstd_internal.h
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/common/zstd_internal.h
@@ -24,12 +24,12 @@
 #include "debug.h"                 /* assert, DEBUGLOG, RAWLOG, g_debuglevel */
 #include "error_private.h"
 #define ZSTD_STATIC_LINKING_ONLY
-#include "zstd.h"
+#include "../include/zstd.h"
 #define FSE_STATIC_LINKING_ONLY
 #include "fse.h"
 #define HUF_STATIC_LINKING_ONLY
 #include "huf.h"
-#include "xxhash.h"                /* XXH_reset, update, digest */
+#include "../include/xxhash.h"                /* XXH_reset, update, digest */
 #define ZSTD_TRACE 0
 
 
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_compress.c b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_compress.c
index a4e91600..befb2575 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_compress.c
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_compress.c
@@ -26,8 +26,8 @@
 #include "zstd_double_fast.h"
 #include "zstd_lazy.h"
 #include "zstd_opt.h"
-#include "zstd_ldm.h"
-#include "zstd_compress_superblock.h"
+#include "../compress/zstd_ldm.h"
+#include "../compress/zstd_compress_superblock.h"
 
 /* ***************************************************************
 *  Tuning parameters
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_compress_superblock.h b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_compress_superblock.h
index ab549c25..3e91aec4 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_compress_superblock.h
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_compress_superblock.h
@@ -15,7 +15,7 @@
 *  Dependencies
 ***************************************/
 
-#include "zstd.h" /* ZSTD_CCtx */
+#include "../include/zstd.h" /* ZSTD_CCtx */
 
 /*-*************************************
 *  Target Compressed Block Size
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_ldm.c b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_ldm.c
index fbb8553e..553572c5 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_ldm.c
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_ldm.c
@@ -11,7 +11,7 @@
 #include "zstd_ldm.h"
 
 #include "../common/debug.h"
-#include "xxhash.h"
+#include "../include/xxhash.h"
 #include "zstd_fast.h"          /* ZSTD_fillHashTable() */
 #include "zstd_double_fast.h"   /* ZSTD_fillDoubleHashTable() */
 #include "zstd_ldm_geartab.h"
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_ldm.h b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_ldm.h
index 024af0b4..0cbba196 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_ldm.h
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/compress/zstd_ldm.h
@@ -13,7 +13,7 @@
 
 
 #include "zstd_compress_internal.h"   /* ldmParams_t, U32 */
-#include "zstd.h"   /* ZSTD_CCtx, size_t */
+#include "../include/zstd.h"   /* ZSTD_CCtx, size_t */
 
 /*-*************************************
 *  Long distance matching
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/crypto_zstd.c b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/crypto_zstd.c
index 2676a504..855d6009 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/crypto_zstd.c
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/crypto_zstd.c
@@ -13,7 +13,7 @@
 #include 
 #include 
 #include 
-#include "../zstd/include/zstd.h"
+#include "include/zstd.h"
 #include 
 
 
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_ddict.h b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_ddict.h
index 66a7e35f..66d2d98e 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_ddict.h
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_ddict.h
@@ -16,7 +16,7 @@
  *  Dependencies
  *********************************************************/
 #include "../common/zstd_deps.h"   /* size_t */
-#include "zstd.h"     /* ZSTD_DDict, and several public functions */
+#include "../include/zstd.h"     /* ZSTD_DDict, and several public functions */
 
 
 /*-*******************************************************
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_decompress.c b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_decompress.c
index bbe758d1..aa758e1a 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_decompress.c
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_decompress.c
@@ -59,7 +59,7 @@
 #include "../common/fse.h"
 #define HUF_STATIC_LINKING_ONLY
 #include "../common/huf.h"
-#include "xxhash.h" /* xxh64_reset, xxh64_update, xxh64_digest, XXH64 */
+#include "../include/xxhash.h" /* xxh64_reset, xxh64_update, xxh64_digest, XXH64 */
 #include "../common/zstd_internal.h"  /* blockProperties_t */
 #include "zstd_decompress_internal.h"   /* ZSTD_DCtx */
 #include "zstd_ddict.h"  /* ZSTD_DDictDictContent */
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_decompress_block.h b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_decompress_block.h
index cc427e3f..79f39897 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_decompress_block.h
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/decompress/zstd_decompress_block.h
@@ -16,7 +16,7 @@
  *  Dependencies
  *********************************************************/
 #include "../common/zstd_deps.h"   /* size_t */
-#include "zstd.h"    /* DCtx, and some public functions */
+#include "../include/zstd.h"    /* DCtx, and some public functions */
 #include "../common/zstd_internal.h"  /* blockProperties_t, and some public functions */
 #include "zstd_decompress_internal.h"  /* ZSTD_seqSymbol */
 
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/xxhash.c b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/xxhash.c
index 45aa195d..e857a448 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/xxhash.c
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/xxhash.c
@@ -44,7 +44,7 @@
 #include 
 #include 
 #include 
-#include "xxhash.h"
+#include "include/xxhash.h"
 
 /*-*************************************
  * Macros
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/zstd_compress_module.c b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/zstd_compress_module.c
index 6412b4d5..9d458c82 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/zstd_compress_module.c
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/zstd_compress_module.c
@@ -12,7 +12,7 @@
 #include 
 #include 
 #include 
-#include "zstd.h"
+#include "include/zstd.h"
 
 #include "common/zstd_deps.h"
 #include "common/zstd_internal.h"
diff --git a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/zstd_decompress_module.c b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/zstd_decompress_module.c
index f8732746..7b91d6cb 100755
--- a/vendor/oplus/kernel/mm/hybridswap_zram/zstd/zstd_decompress_module.c
+++ b/vendor/oplus/kernel/mm/hybridswap_zram/zstd/zstd_decompress_module.c
@@ -12,7 +12,7 @@
 #include 
 #include 
 #include 
-#include "zstd.h"
+#include "include/zstd.h"
 
 #include "common/zstd_deps.h"
 
diff --git a/vendor/oplus/kernel/mm/kswapd_opt/kswapd_opt.c b/vendor/oplus/kernel/mm/kswapd_opt/kswapd_opt.c
index 45c91938..75bba5a8 100755
--- a/vendor/oplus/kernel/mm/kswapd_opt/kswapd_opt.c
+++ b/vendor/oplus/kernel/mm/kswapd_opt/kswapd_opt.c
@@ -13,6 +13,7 @@
 #define CONFIG_ALLOC_ORDER_STAT 1
 #define CONFIG_KSWAPS_LOAD_STAT 1
 #define CONFIG_KSWAPD_NICE 1
+#define CONFIG_ORDER3_OPT 1
 #endif
 
 #include 
@@ -34,6 +35,7 @@
 #include 
 #include 
 #endif
+#include "../../mm/internal.h"
 
 #if defined(CONFIG_ALLOC_ADJUST_FLAGS) || defined(CONFIG_ALLOC_ORDER_STAT) \
 	|| defined(CONFIG_KSWAPS_LOAD_STAT) || defined(CONFIG_COSTLY_ALLOC_MASK_RECLAIM)
@@ -498,6 +500,237 @@ static void remove_kswapd_load_stat_proc(void)
 #endif
 
 #ifdef CONFIG_COSTLY_ALLOC_MASK_RECLAIM
+#ifdef CONFIG_ORDER3_OPT
+static int g_order3_opt_status = 0; /* 0 for disabled, >0 for enabled, <0 for error*/
+static struct proc_dir_entry *order3_opt_entry;
+static struct proc_dir_entry *order3_pool_entry;
+
+#define POOL_ORDER PAGE_FRAG_CACHE_MAX_ORDER /* 3 */
+#define POOL_MAX_SIZE SZ_8M
+#define POOL_MAX_COUNT ((POOL_MAX_SIZE >> PAGE_SHIFT) >> POOL_ORDER)
+static LIST_HEAD(pool_page_list);
+static DEFINE_SPINLOCK(pool_lock);
+static unsigned int pool_count = 0;
+
+typedef void (*prep_new_page_t)(struct page *page, unsigned int order, gfp_t gfp_flags,
+												unsigned int alloc_flags);
+static prep_new_page_t prep_new_page_dup = NULL;
+typedef void (*wake_all_kswapds_t)(unsigned int order, gfp_t gfp_mask,
+									const struct alloc_context *ac);
+static wake_all_kswapds_t wake_all_kswapds_dup = NULL;
+
+static int order3_opt_show(struct seq_file *m, void *v)
+{
+	seq_printf(m, "%d\n", g_order3_opt_status);
+	return 0;
+}
+
+static int order3_opt_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, order3_opt_show, NULL);
+}
+
+static ssize_t order3_opt_write(struct file *file, const char __user *buf,
+		size_t count, loff_t *ppos)
+{
+	char kbuf[KBUF_LEN] = {0};
+	char *str;
+	int val;
+
+	if (g_order3_opt_status < 0) {
+		pr_warn("unabled to set order3_opt");
+		return -EINVAL;
+	}
+
+	if (count > KBUF_LEN - 1) {
+		pr_warn("input too long\n");
+		return -EINVAL;
+	}
+
+	if (copy_from_user(kbuf, buf, count))
+		return -EINVAL;
+
+	kbuf[count] = 0;
+	str = strstrip(kbuf);
+	if (!str) {
+		pr_warn("input empty\n");
+		return -EINVAL;
+	}
+
+	if (!is_digit_str(str)) {
+		pr_warn("input invalid, not a digit string\n");
+		return -EINVAL;
+	}
+
+	if (kstrtoint(str, 0, &val)) {
+		pr_warn("not a valid number\n");
+		return -EINVAL;
+	}
+
+	g_order3_opt_status = val;
+
+	return count;
+}
+
+static const struct proc_ops proc_order3_opt_ops = {
+	.proc_open = order3_opt_open,
+	.proc_read = seq_read,
+	.proc_write = order3_opt_write,
+	.proc_lseek = seq_lseek,
+	.proc_release = single_release,
+};
+
+static int order3_pool_show(struct seq_file *m, void *v)
+{
+	if (g_order3_opt_status > 0)
+		seq_printf(m, "order=%d count=%u max=%u\n",
+				POOL_ORDER, pool_count, POOL_MAX_COUNT);
+	else
+		seq_printf(m, "disabled\n");
+
+	return 0;
+}
+
+static int order3_pool_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, order3_pool_show, NULL);
+}
+
+static const struct proc_ops proc_order3_pool_ops = {
+	.proc_open = order3_pool_open,
+	.proc_read = seq_read,
+	.proc_lseek = seq_lseek,
+	.proc_release = single_release,
+};
+
+static void create_order3_opt_proc(void)
+{
+	order3_opt_entry = proc_create("oplus_mem/order3_opt",
+			0660, NULL, &proc_order3_opt_ops);
+
+	if (!order3_opt_entry) {
+		pr_err("order3_opt_proc create failed, ENOMEM\n");
+		return;
+	}
+
+	order3_pool_entry = proc_create("oplus_mem/order3_pool",
+			0660, NULL, &proc_order3_pool_ops);
+
+	if (!order3_pool_entry) {
+		proc_remove(order3_opt_entry);
+		pr_err("order3_opt_proc create failed, ENOMEM\n");
+		return;
+	}
+}
+
+static void remove_order3_opt_proc(void)
+{
+	if (order3_opt_entry) {
+		proc_remove(order3_opt_entry);
+		order3_opt_entry = NULL;
+	}
+
+	if (order3_pool_entry) {
+		proc_remove(order3_pool_entry);
+		order3_pool_entry = NULL;
+	}
+}
+
+static void __nocfi get_page_from_pool(void *data, gfp_t gfp_mask, int order, int alloc_flags,
+		int migratetype, struct page **p_page)
+{
+	struct page *page = NULL;
+	unsigned long flags;
+
+	if (g_order3_opt_status <= 0)
+		return;
+
+	if (order != POOL_ORDER || gfp_mask & __GFP_DMA32)
+		return;
+
+	/* someone else provided page */
+	if (*p_page)
+		return;
+
+	spin_lock_irqsave(&pool_lock, flags);
+	page = list_first_entry_or_null(&pool_page_list, struct page, lru);
+	if (page) {
+		list_del(&page->lru);
+		pool_count--;
+		prep_new_page_dup(page, order, gfp_mask & ~(__GFP_DIRECT_RECLAIM), ALLOC_WMARK_LOW);
+	} else {
+		struct alloc_context ac = { };
+		ac.highest_zoneidx = ZONE_NORMAL;
+		ac.zonelist = node_zonelist(numa_mem_id(), gfp_mask);
+		ac.nodemask = NULL;
+
+		pr_info_ratelimited("%s: %s:%d order3 pool is empty\n",
+				__func__, current->comm, current->pid);
+		wake_all_kswapds_dup(order, gfp_mask | __GFP_KSWAPD_RECLAIM, &ac);
+	}
+	spin_unlock_irqrestore(&pool_lock, flags);
+
+	*p_page = page;
+}
+
+static void pool_refill(void *data, struct page *page, int order,
+		int migratetype, bool *bypass)
+{
+	unsigned long flags;
+
+	if (g_order3_opt_status <= 0)
+		return;
+
+	/* we do not keep movable pages to avoid fragmentation */
+	if (order != POOL_ORDER || migratetype != MIGRATE_UNMOVABLE)
+		return;
+
+	/* someone else get the page */
+	if (*bypass)
+		return;
+
+	spin_lock_irqsave(&pool_lock, flags);
+	if (pool_count < POOL_MAX_COUNT) {
+		list_add_tail(&page->lru, &pool_page_list);
+		pool_count++;
+		*bypass = true;
+	}
+	spin_unlock_irqrestore(&pool_lock, flags);
+}
+
+static int pool_symbol_init(void)
+{
+	int ret;
+	struct kprobe prep_new_page_kp = {
+		.symbol_name = "prep_new_page"
+	};
+
+	struct kprobe wake_all_kswapds_kp = {
+		.symbol_name = "wake_all_kswapds"
+	};
+
+	ret = register_kprobe(&prep_new_page_kp);
+	if (ret) {
+		pr_err("get prep_new_page addr from kprobe failed! ret=%d\n", ret);
+		return ret;
+	}
+	prep_new_page_dup = (prep_new_page_t)prep_new_page_kp.addr;
+	pr_info("suceesfully get prep_new_page addr:0x%px\n", prep_new_page_dup);
+	unregister_kprobe(&prep_new_page_kp);
+
+	ret = register_kprobe(&wake_all_kswapds_kp);
+	if (ret) {
+		pr_err("get wake_all_kswapds addr from kprobe failed! ret=%d\n", ret);
+		return ret;
+	}
+	wake_all_kswapds_dup = (wake_all_kswapds_t)wake_all_kswapds_kp.addr;
+	pr_info("suceesfully get wake_all_kswapds addr:0x%px\n", wake_all_kswapds_dup);
+	unregister_kprobe(&wake_all_kswapds_kp);
+
+	return 0;
+}
+#endif /* CONFIG_ORDER3_OPT */
+
 DEFINE_STATIC_KEY_TRUE(costly_alloc_mask_reclaim);
 static bool g_mask_reclaim_enabled = true;
 static struct proc_dir_entry *mask_reclaim_entry;
@@ -573,6 +806,9 @@ static void create_mask_reclaim_proc(void)
 
 	if (!mask_reclaim_entry)
 		pr_err("costly_alloc_mask_reclaim_proc create failed, ENOMEM\n");
+#ifdef CONFIG_ORDER3_OPT
+	create_order3_opt_proc();
+#endif
 }
 
 static void remove_mask_reclaim_proc(void)
@@ -581,6 +817,9 @@ static void remove_mask_reclaim_proc(void)
 		proc_remove(mask_reclaim_entry);
 		mask_reclaim_entry = NULL;
 	}
+#ifdef CONFIG_ORDER3_OPT
+	remove_order3_opt_proc();
+#endif
 }
 
 static void mask_reclaim(void *data, gfp_t *alloc_gfp, unsigned int order)
@@ -588,6 +827,11 @@ static void mask_reclaim(void *data, gfp_t *alloc_gfp, unsigned int order)
 	if (!static_branch_likely(&costly_alloc_mask_reclaim))
 		return;
 
+#ifdef CONFIG_ORDER3_OPT
+	if ((g_order3_opt_status > 0) && (order == POOL_ORDER) && !(*alloc_gfp & __GFP_DMA32))
+		*alloc_gfp &= ~__GFP_KSWAPD_RECLAIM;
+#endif
+
 #if defined(CONFIG_QCOM_ALLOC_MASK_RECLAIM)
 	if (likely(order <= QCOM_ALLOC_MASK_RECLAIM_ORDER))
 #else
@@ -600,12 +844,61 @@ static void mask_reclaim(void *data, gfp_t *alloc_gfp, unsigned int order)
 
 static int register_customize_alloc_gfp(void)
 {
-	return register_trace_android_vh_customize_alloc_gfp(mask_reclaim, NULL);
+	int ret = 0;
+	ret = register_trace_android_vh_customize_alloc_gfp(mask_reclaim, NULL);
+	if (ret)
+		return ret;
+
+#ifdef CONFIG_ORDER3_OPT
+	ret = register_trace_android_vh_alloc_pages_failure_bypass(get_page_from_pool, NULL);
+	if (ret != 0) {
+		pr_err("register_trace_android_vh_alloc_pages_failure_bypass failed! ret=%d\n",
+				ret);
+		g_order3_opt_status = -1;
+		goto out;
+	}
+
+	ret = register_trace_android_vh_alloc_pages_reclaim_bypass(get_page_from_pool, NULL);
+	if (ret != 0) {
+		pr_err("register_trace_android_vh_alloc_pages_reclaim_bypass failed! ret=%d\n",
+				ret);
+		unregister_trace_android_vh_alloc_pages_failure_bypass(get_page_from_pool, NULL);
+		g_order3_opt_status = -1;
+		goto out;
+	}
+
+	ret = register_trace_android_vh_free_unref_page_bypass(pool_refill, NULL);
+	if (ret != 0) {
+		pr_err("register_trace_android_vh_free_page failed! ret=%d\n", ret);
+		unregister_trace_android_vh_alloc_pages_reclaim_bypass(get_page_from_pool, NULL);
+		unregister_trace_android_vh_alloc_pages_failure_bypass(get_page_from_pool, NULL);
+		g_order3_opt_status = -1;
+		goto out;
+	}
+
+	ret = pool_symbol_init();
+
+	if (ret != 0) {
+		pr_err("pool_symbol_init failed! ret=%d\n", ret);
+		unregister_trace_android_vh_free_unref_page_bypass(pool_refill, NULL);
+		unregister_trace_android_vh_alloc_pages_reclaim_bypass(get_page_from_pool, NULL);
+		unregister_trace_android_vh_alloc_pages_failure_bypass(get_page_from_pool, NULL);
+		g_order3_opt_status = -1;
+		goto out;
+	}
+out:
+#endif
+	return ret;
 }
 
 static void unregister_customize_alloc_gfp(void)
 {
 	unregister_trace_android_vh_customize_alloc_gfp(mask_reclaim, NULL);
+#ifdef CONFIG_ORDER3_OPT
+	unregister_trace_android_vh_free_unref_page_bypass(pool_refill, NULL);
+	unregister_trace_android_vh_alloc_pages_reclaim_bypass(get_page_from_pool, NULL);
+	unregister_trace_android_vh_alloc_pages_failure_bypass(get_page_from_pool, NULL);
+#endif
 }
 #else
 static int register_customize_alloc_gfp(void)
diff --git a/vendor/oplus/kernel/mm/mm_osvelte/lowmem-dbg.c b/vendor/oplus/kernel/mm/mm_osvelte/lowmem-dbg.c
index 2fdcd371..9507ec1f 100755
--- a/vendor/oplus/kernel/mm/mm_osvelte/lowmem-dbg.c
+++ b/vendor/oplus/kernel/mm/mm_osvelte/lowmem-dbg.c
@@ -26,12 +26,7 @@
 #include 
 #include 
 #include 
-/*
-#ifdef CONFIG_ANDROID_DEBUG_SYMBOLS
-#include 
-#else
-#include "../../../drivers/soc/qcom/debug_symbol.h"
-#endif */
+#include 
 #include "../../../mm/slab.h"
 
 #include "common.h"
@@ -41,6 +36,8 @@
 
 static struct list_head *debug_slab_caches;
 static struct mutex *debug_slab_mutex;
+typedef unsigned long(*kallsyms_lookup_name_t)(const char *name);
+static kallsyms_lookup_name_t kallsyms_lookup_name_dup = NULL;
 
 static void lowmem_dbg_dump(struct work_struct *work);
 
@@ -214,18 +211,17 @@ int dump_procs_fd_info(struct files_acct *acct, const char *title, bool verbose)
 }
 
 #ifdef CONFIG_SLUB_DEBUG
-static int dump_slab_info(bool verbose)
+static int __nocfi dump_slab_info(bool verbose)
 {
-/*
-#ifdef CONFIG_ANDROID_DEBUG_SYMBOLS
-	debug_slab_caches = (struct list_head *)android_debug_symbol(ADS_SLAB_CACHES);
-	debug_slab_mutex = (struct mutex *) android_debug_symbol(ADS_SLAB_MUTEX);
-#endif*/
-	if(!debug_slab_caches)
+	if(!debug_slab_caches) {
+		pr_err("unable to get slab_caches\n");
 		return 0;
+	}
 
-	if(!debug_slab_mutex)
+	if(!debug_slab_mutex) {
+		pr_err("unable to get slab_mutex\n");
 		return 0;
+	}
 
 	osvelte_info("======= %s\n", __func__);
 	if (likely(!verbose)) {
@@ -546,16 +542,6 @@ static void lowmem_dbg_dump(struct work_struct *work)
 {
 	__lowmem_dbg_dump(&g_cfg);
 }
-/*
-#ifndef CONFIG_ANDROID_DEBUG_SYMBOLS
-#define OSVELTE_DEBUG_LOOKUP(_var, type) \
-	do { \
-		debug_##_var = (type *)DEBUG_SYMBOL_LOOKUP(_var); \
-		if (!debug_##_var) { \
-			pr_err("osvelte: %s symbol not available in vmlinux\n", #_var); \
-		} \
-	} while (0)
-#endif*/
 
 void direct_reclaim_vh(void *data, int order, gfp_t gfp_flags)
 {
@@ -595,23 +581,27 @@ static int lowmem_dbg_show(struct seq_file *m, void *unused)
 }
 DEFINE_PROC_SHOW_ATTRIBUTE(lowmem_dbg);
 
-int osvelte_lowmem_dbg_init(struct proc_dir_entry *root)
+int __nocfi osvelte_lowmem_dbg_init(struct proc_dir_entry *root)
 {
 	struct lowmem_dbg_cfg *cfg = &g_cfg;
 	unsigned long total_ram = sys_totalram();
+	struct kprobe kallsyms_lookup_name_kp = {
+		.symbol_name = "kallsyms_lookup_name"
+	};
 
 	if (register_trace_mm_vmscan_direct_reclaim_begin(direct_reclaim_vh, NULL)) {
 		pr_err("register lowmem-dbg vendor hook failed\n");
 		return -EINVAL;
 	}
-/*
-#ifndef CONFIG_ANDROID_DEBUG_SYMBOLS
-	if(!debug_symbol_available())
-		return -EPROBE_DEFER;
+	if (!register_kprobe(&kallsyms_lookup_name_kp)) {
+		kallsyms_lookup_name_dup = (kallsyms_lookup_name_t)kallsyms_lookup_name_kp.addr;
+		pr_info("suceesfully get kallsyms_lookup_name addr:0x%px\n", kallsyms_lookup_name_dup);
+		unregister_kprobe(&kallsyms_lookup_name_kp);
+		debug_slab_caches = (struct list_head *)kallsyms_lookup_name_dup("slab_caches");
+		debug_slab_mutex = (struct mutex *)kallsyms_lookup_name_dup("slab_mutex");
+	} else
+		pr_err("get kallsyms_lookup_name addr from kprobe failed!\n");
 
-	OSVELTE_DEBUG_LOOKUP(slab_caches, struct list_head);
-	OSVELTE_DEBUG_LOOKUP(slab_mutex, struct mutex);
-#endif */
 	cfg->interval = 10 * HZ;
 
 	if (total_ram >= PAGES(SZ_4G + SZ_8G))
diff --git a/vendor/oplus/kernel/mm/oplus_local_modules.bzl b/vendor/oplus/kernel/mm/oplus_local_modules.bzl
index 1a28f5fa..7e90db04 100644
--- a/vendor/oplus/kernel/mm/oplus_local_modules.bzl
+++ b/vendor/oplus/kernel/mm/oplus_local_modules.bzl
@@ -34,7 +34,7 @@ def define_oplus_local_modules():
             "//vendor/oplus/kernel/mm:oplus_bsp_zsmalloc",
         ],
         includes = ["."],
-        local_defines = ["CONFIG_HYBRIDSWAP","CONFIG_HYBRIDSWAP_SWAPD","CONFIG_HYBRIDSWAP_CORE","CONFIG_CRYPTO_LZ4K"],
+        local_defines = ["CONFIG_HYBRIDSWAP","CONFIG_HYBRIDSWAP_SWAPD","CONFIG_HYBRIDSWAP_CORE","CONFIG_CRYPTO_LZ4K","CONFIG_CRYPTO_ZSTDN"],
         conditional_defines = {
              "qcom":  ["CONFIG_QCOM_PANEL_EVENT_NOTIFIER"],
              "mtk":  ["CONFIG_OPLUS_MTK_DRM_GKI_NOTIFY"],
@@ -74,10 +74,7 @@ def define_oplus_local_modules():
         ko_deps = [
             "//vendor/oplus/kernel/mm:oplus_bsp_hybridswap_zram",
         ],
-        local_defines = ["CONFIG_DYNAMIC_TUNING_SWAPPINESS", "CONFIG_OPLUS_BALANCE_ANON_FILE_RECLAIM", "CONFIG_HYBRIDSWAP_SWAPD"],
-        conditional_defines = {
-             "mtk":  ["CONFIG_OPLUS_EXTRA_FREE_KBYTES"],
-        },
+        local_defines = ["CONFIG_DYNAMIC_TUNING_SWAPPINESS", "CONFIG_OPLUS_BALANCE_ANON_FILE_RECLAIM", "CONFIG_HYBRIDSWAP_SWAPD", "CONFIG_OPLUS_EXTRA_FREE_KBYTES"],
         copts = select({
             "//build/kernel/kleaf:kocov_is_true": ["-fprofile-arcs", "-ftest-coverage"],
             "//conditions:default": [],
@@ -170,6 +167,43 @@ def define_oplus_local_modules():
         includes = ["."],
         )
 
+    define_oplus_ddk_module(
+        name = "oplus_bsp_zstdn",
+        srcs = native.glob([
+            "**/*.h",
+            "hybridswap_zram/zstd/include/*.h",
+            "hybridswap_zram/zstd/common/*.h",
+            "hybridswap_zram/zstd/compress/*.h",
+            "hybridswap_zram/zstd/decompress/*.h",
+            "hybridswap_zram/zstd/crypto_zstd.c",
+            "hybridswap_zram/zstd/zstd_compress_module.c",
+            "hybridswap_zram/zstd/xxhash.c",
+            "hybridswap_zram/zstd/common/debug.c",
+            "hybridswap_zram/zstd/common/entropy_common.c",
+            "hybridswap_zram/zstd/common/error_private.c",
+            "hybridswap_zram/zstd/common/fse_decompress.c",
+            "hybridswap_zram/zstd/common/zstd_common.c",
+            "hybridswap_zram/zstd/compress/fse_compress.c",
+            "hybridswap_zram/zstd/compress/hist.c",
+            "hybridswap_zram/zstd/compress/huf_compress.c",
+            "hybridswap_zram/zstd/compress/zstd_compress.c",
+            "hybridswap_zram/zstd/compress/zstd_compress_literals.c",
+            "hybridswap_zram/zstd/compress/zstd_compress_sequences.c",
+            "hybridswap_zram/zstd/compress/zstd_compress_superblock.c",
+            "hybridswap_zram/zstd/compress/zstd_double_fast.c",
+            "hybridswap_zram/zstd/compress/zstd_fast.c",
+            "hybridswap_zram/zstd/compress/zstd_lazy.c",
+            "hybridswap_zram/zstd/compress/zstd_ldm.c",
+            "hybridswap_zram/zstd/compress/zstd_opt.c",
+            "hybridswap_zram/zstd/zstd_decompress_module.c",
+            "hybridswap_zram/zstd/decompress/huf_decompress.c",
+            "hybridswap_zram/zstd/decompress/zstd_ddict.c",
+            "hybridswap_zram/zstd/decompress/zstd_decompress.c",
+            "hybridswap_zram/zstd/decompress/zstd_decompress_block.c"
+        ]),
+        includes = ["."],
+    )
+
     ddk_copy_to_dist_dir(
         name = "oplus_bsp_mm",
         module_list = [
@@ -187,5 +221,6 @@ def define_oplus_local_modules():
             "oplus_bsp_kswapd_opt",
 #            "oplus_bsp_look_around",
             "oplus_bsp_memleak_detect",
+            "oplus_bsp_zstdn",
         ],
     )
diff --git a/vendor/oplus/kernel/nfc/sn_nci/nfc/common.c b/vendor/oplus/kernel/nfc/sn_nci/nfc/common.c
index 571814f9..44e889c4 100755
--- a/vendor/oplus/kernel/nfc/sn_nci/nfc/common.c
+++ b/vendor/oplus/kernel/nfc/sn_nci/nfc/common.c
@@ -62,15 +62,10 @@ int nfc_parse_dt(struct device *dev, struct platform_configs *nfc_configs,
 			nfc_gpio->dwl_req);
 
 	nfc_gpio->clkreq = of_get_named_gpio(np, DTS_CLKREQ_GPIO_STR, 0);
-	if ((!gpio_is_valid(nfc_gpio->clkreq))) {
+	if ((!gpio_is_valid(nfc_gpio->clkreq)))
 		pr_warn("%s: clkreq gpio invalid %d\n", __func__,
 			nfc_gpio->clkreq);
-	} else {
-		//#ifdef OPLUS_BUG_STABILITY
-		//IS_ENABLED(CONFIG_NXP_NFC_CLK_REQ_HIGH)
-		nfc_configs->sys_idle_clkreq = false;
-		//#endif /*OPLUS_BUG_STABILITY*/
-	}
+
 	pr_info("%s: %d, %d, %d, %d\n", __func__, nfc_gpio->irq, nfc_gpio->ven,
 		nfc_gpio->dwl_req, nfc_gpio->clkreq);
 	return 0;
diff --git a/vendor/oplus/kernel/nfc/sn_nci/nfc/common.h b/vendor/oplus/kernel/nfc/sn_nci/nfc/common.h
index 7b236692..c57a7b23 100755
--- a/vendor/oplus/kernel/nfc/sn_nci/nfc/common.h
+++ b/vendor/oplus/kernel/nfc/sn_nci/nfc/common.h
@@ -165,10 +165,6 @@ struct platform_gpio {
 /* NFC Struct to get all the required configs from DTS */
 struct platform_configs {
 	struct platform_gpio gpio;
-	//#ifdef OPLUS_BUG_STABILITY
-	//IS_ENABLED(CONFIG_NXP_NFC_CLK_REQ_HIGH)
-	bool sys_idle_clkreq;
-	//#endif /*OPLUS_BUG_STABILITY*/
 };
 
 /* cold reset Features specific Parameters */
diff --git a/vendor/oplus/kernel/nfc/sn_nci/nfc/i2c_drv.c b/vendor/oplus/kernel/nfc/sn_nci/nfc/i2c_drv.c
index 681f5e3a..7317d3c9 100755
--- a/vendor/oplus/kernel/nfc/sn_nci/nfc/i2c_drv.c
+++ b/vendor/oplus/kernel/nfc/sn_nci/nfc/i2c_drv.c
@@ -124,10 +124,7 @@ int i2c_read(struct nfc_dev *nfc_dev, char *buf, size_t count, int timeout)
 	int ret;
 	struct i2c_dev *i2c_dev = &nfc_dev->i2c_dev;
 	struct platform_gpio *nfc_gpio = &nfc_dev->configs.gpio;
- 	//#ifdef OPLUS_BUG_STABILITY
-	//IS_ENABLED(CONFIG_NXP_NFC_CLK_REQ_HIGH)
-	struct platform_configs *nfc_config = &nfc_dev->configs;
-	//#endif /*OPLUS_BUG_STABILITY*/
+
 	/*pr_debug("%s: reading %zu bytes.\n", __func__, count);*/
 
 	if (timeout > NCI_CMD_RSP_TIMEOUT_MS)
@@ -166,17 +163,6 @@ int i2c_read(struct nfc_dev *nfc_dev, char *buf, size_t count, int timeout)
 					}
 				}
 			}
-			//#ifdef OPLUS_BUG_STABILITY
-			//IS_ENABLED(CONFIG_NXP_NFC_CLK_REQ_HIGH)
-                        if(gpio_is_valid(nfc_gpio->clkreq)) {
-				if (nfc_config->sys_idle_clkreq) {
-					pr_err("%s: NFC sys_idle_clkreq -->recovering  state \n", __func__);
-					nfc_config->sys_idle_clkreq = false;
-        	                        ret = -EREMOTEIO;
-                                        goto err;
-				}
-                        }
-			//#endif /*OPLUS_BUG_STABILITY*/
 			i2c_disable_irq(nfc_dev);
 
 			if (gpio_get_value(nfc_gpio->irq))
@@ -705,10 +691,6 @@ int nfc_i2c_dev_suspend(struct device *device)
 	struct nfc_dev *nfc_dev = i2c_get_clientdata(client);
 	struct i2c_dev *i2c_dev = NULL;
 	struct platform_gpio *nfc_gpio = &nfc_dev->configs.gpio;
-	//#ifdef OPLUS_BUG_STABILITY
-	//IS_ENABLED(CONFIG_NXP_NFC_CLK_REQ_HIGH)
-	struct platform_configs *nfc_config = &nfc_dev->configs;
-	//#endif /*OPLUS_BUG_STABILITY*/
 	if (!nfc_dev) {
 		pr_err("%s: device doesn't exist anymore\n", __func__);
 		return -ENODEV;
@@ -719,17 +701,11 @@ int nfc_i2c_dev_suspend(struct device *device)
 		if (!enable_irq_wake(client->irq))
 			i2c_dev->irq_wake_up = true;
 	}
-	//#ifdef OPLUS_BUG_STABILITY
-	//IS_ENABLED(CONFIG_NXP_NFC_CLK_REQ_HIGH)
-	if(gpio_is_valid(nfc_gpio->clkreq)) {
-		if (gpio_get_value(nfc_gpio->clkreq)) {
-			nfc_config->sys_idle_clkreq = true;
-		} else {
-			nfc_config->sys_idle_clkreq = false;
-		}
-		pr_err("%s: clkreq = %d , sys_idle_clkreq = %d  \n",__func__ ,gpio_get_value(nfc_gpio->clkreq) , nfc_config->sys_idle_clkreq);
+	pr_debug("%s: irq_wake_up = %d", __func__, i2c_dev->irq_wake_up);
+
+	if(gpio_is_valid(nfc_gpio->clkreq)){
+		pr_info("%s: clkreq = %d \n",__func__ ,gpio_get_value(nfc_gpio->clkreq));
 	}
-	//#endif /*OPLUS_BUG_STABILITY*/
 
 	return 0;
 }
diff --git a/vendor/oplus/kernel/storage/storage_feature_in_module/common/ufs_oplus_dbg/ufs-oplus-dbg.c b/vendor/oplus/kernel/storage/storage_feature_in_module/common/ufs_oplus_dbg/ufs-oplus-dbg.c
index 2d47a01d..acd9f5ac 100755
--- a/vendor/oplus/kernel/storage/storage_feature_in_module/common/ufs_oplus_dbg/ufs-oplus-dbg.c
+++ b/vendor/oplus/kernel/storage/storage_feature_in_module/common/ufs_oplus_dbg/ufs-oplus-dbg.c
@@ -764,7 +764,7 @@ int ufs_ioctl_monitor(struct scsi_device *dev, void __user *buf_user)
 	cmdlen = COMMAND_SIZE(opcode);
 	if (((VENDOR_SPECIFIC_CDB == opcode) && (0 == strncmp(dev->vendor, "SAMSUNG ", 8)))
 	         || ((READ_BUFFER == opcode) && (0 == strncmp(dev->vendor, "XBSTOR ", 7)))
-	         || ((READ_BUFFER == opcode) && (0 == strncmp(dev->vendor, "YMTC ", 5)) && (strstr(dev->model, "B4TF")))) {
+	         || ((READ_BUFFER == opcode) && (0 == strncmp(dev->vendor, "YMTC ", 5)) && (strnstr(dev->model, "B4TF", 15)))) {
 		cmdlen = 16;
 	}
 
diff --git a/vendor/oplus/kernel/storage/storage_feature_in_module/common/wq_dynamic_priority/oplus_wq_dynamic_priority.c b/vendor/oplus/kernel/storage/storage_feature_in_module/common/wq_dynamic_priority/oplus_wq_dynamic_priority.c
index 04330a93..c0f581ab 100755
--- a/vendor/oplus/kernel/storage/storage_feature_in_module/common/wq_dynamic_priority/oplus_wq_dynamic_priority.c
+++ b/vendor/oplus/kernel/storage/storage_feature_in_module/common/wq_dynamic_priority/oplus_wq_dynamic_priority.c
@@ -99,13 +99,8 @@ static int handler_worker_attach_to_pool_pre(struct kprobe *p, struct pt_regs *r
 
     if ((worker && worker->task) && (pool && pool->attrs)) {
         if (pool->attrs->nice == VIRTUAL_KWORKER_NICE) {
-        #ifdef CONFIG_OPLUS_SYSTEM_KERNEL_QCOM
             oplus_set_ux_state_lock(worker->task, SA_TYPE_LIGHT, -1, true);
             printk(KERN_INFO "worker_attach_to_pool:comm:%s set UX and set nice to %d\n", worker->task->comm, MIN_NICE);
-        #else
-            sched_set_fifo_low(worker->task);
-            printk(KERN_INFO "worker_attach_to_pool:comm:%s set RT and set nice to %d\n", worker->task->comm, MIN_NICE);
-        #endif /* CONFIG_OPLUS_SYSTEM_KERNEL_QCOM */
             set_user_nice(worker->task, MIN_NICE);
         }
     }
diff --git a/vendor/oplus/kernel/synchronize/sched_assist_locking.c b/vendor/oplus/kernel/synchronize/sched_assist_locking.c
index 680bfe5f..72decd6c 100755
--- a/vendor/oplus/kernel/synchronize/sched_assist_locking.c
+++ b/vendor/oplus/kernel/synchronize/sched_assist_locking.c
@@ -54,17 +54,6 @@ noinline int tracing_mark_write(const char *buf)
 	return 0;
 }
 
-inline bool test_task_is_fair(struct task_struct *task)
-{
-	if (unlikely(!task))
-		return false;
-
-	/* valid CFS priority is MAX_RT_PRIO..MAX_PRIO-1 */
-	if ((task->prio >= MAX_RT_PRIO) && (task->prio <= MAX_PRIO-1))
-		return true;
-	return false;
-}
-
 #ifndef CONFIG_LOCKING_LAST_ENTITY
 static DEFINE_PER_CPU(int, prev_locking_state);
 #else
@@ -190,7 +179,7 @@ void enqueue_locking_thread(struct rq *rq, struct task_struct *p)
 		return;
 
 	ots = get_oplus_task_struct(p);
-	orq = (struct oplus_rq *) rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 
 	if (IS_ERR_OR_NULL(ots) || !orq)
 		return;
@@ -231,7 +220,7 @@ void dequeue_locking_thread(struct rq *rq, struct task_struct *p)
 		return;
 
 	ots = get_oplus_task_struct(p);
-	orq = (struct oplus_rq *) rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 
 	if (IS_ERR_OR_NULL(ots) || !orq)
 		return;
@@ -283,7 +272,7 @@ void replace_next_task_fair_locking(struct rq *rq, struct task_struct **p,
 	if (!rq || !p || !se)
 		return;
 
-	orq = (struct oplus_rq *)rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 	if (!orq_has_locking_tasks(orq))
 		return;
 	spin_lock_irqsave(orq->locking_list_lock, irqflag);
@@ -366,7 +355,7 @@ void set_last_entity(struct task_struct *prev, struct task_struct *next, struct
 		return;
 
 	if ((task_inlock(ots) && prev->se.on_rq == TASK_ON_RQ_QUEUED) && (test_task_is_rt(next) || test_task_ux(next))){
-		orq = (struct oplus_rq *) rq->android_oem_data1;
+		orq = get_oplus_rq(rq);
 		if (!orq->last_entity) {
 			orq->last_entity = &prev->se;
 			if (unlikely(global_debug_enabled & DEBUG_SYSTRACE)) {
@@ -391,7 +380,7 @@ void pick_last_entity(struct rq *rq, struct task_struct **p,
 	if (!rq || !p || !se)
 		return;
 
-	orq = (struct oplus_rq *)rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 	if (!orq)
 		return;
 
@@ -435,7 +424,7 @@ void clear_last_entity(struct rq *rq, struct task_struct *p)
 	if (!rq || !p)
 		return;
 
-	orq = (struct oplus_rq *) rq->android_oem_data1;
+	orq = get_oplus_rq(rq);
 	if (!orq)
 		return;
 
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/Kconfig b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/Kconfig
index 33660298..0a197299 100755
--- a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/Kconfig
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/Kconfig
@@ -4,3 +4,4 @@ source "drivers/input/touchscreen/oplus_touchscreen_v2/Focal/ft3658u_spi/Kconfig
 source "drivers/input/touchscreen/oplus_touchscreen_v2/Focal/ft3681/Kconfig"
 source "drivers/input/touchscreen/oplus_touchscreen_v2/Focal/ft8057p/Kconfig"
 source "drivers/input/touchscreen/oplus_touchscreen_v2/Focal/ft3683g/Kconfig"
+source "drivers/input/touchscreen/oplus_touchscreen_v2/Focal/ft3419u/Kconfig"
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/Makefile b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/Makefile
index 1642e925..29849b1e 100755
--- a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/Makefile
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/Makefile
@@ -14,6 +14,7 @@ obj-$(CONFIG_TOUCHPANEL_FOCAL_FT3658U_SPI) += ft3658u_spi/
 obj-$(CONFIG_TOUCHPANEL_FOCAL_FT3681) += ft3681/
 obj-$(CONFIG_TOUCHPANEL_FOCAL_FT8057P) += ft8057p/
 obj-$(CONFIG_TOUCHPANEL_FOCAL_FT3683G) += ft3683g/
+obj-$(CONFIG_TOUCHPANEL_FOCAL_FT3419U) += ft3419u/
 
 oplus_bsp_tp_focal_common-y += focal_common.o
 obj-$(CONFIG_TOUCHPANEL_FOCAL) += oplus_bsp_tp_focal_common.o
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/FT5452J_Pramboot_V4.1_20210427.h b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/FT5452J_Pramboot_V4.1_20210427.h
new file mode 100755
index 00000000..5a18a19e
--- /dev/null
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/FT5452J_Pramboot_V4.1_20210427.h
@@ -0,0 +1,452 @@
+0x2, 0x0, 0x46,0x32,0x0, 0x0, 0xb2,0x0, 0xff,0xff,0xff,0x2, 0x7, 0x45,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0x2, 0xd, 0x9a,0xff,0xff,0xff,0xff,0xff,0x2, 0xb, 0x91,0xff,0xff,
+0xff,0xff,0xff,0x2, 0x0, 0x3, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0x2, 0xb, 0xdb,0x75,0x84,0x1, 0x7e,0x44,0x1f,0xff,0xe4,0x7a,0x49,
+0xb0,0x1b,0x44,0x78,0xf9,0x7e,0xf8,0x13,0xff,0xd2,0x7, 0xc2,0x8, 0xc2,0x9, 0x75,
+0x22,0x0, 0x75,0x27,0xff,0xd2,0x0, 0xc2,0x2, 0xc2,0x3, 0xc2,0x4, 0xc2,0x6, 0x7e,
+0x4, 0x0, 0xff,0x7e,0x14,0x1, 0x45,0xb, 0xa, 0x40,0x5d,0x44,0x68,0x1a,0x69,0x20,
+0x0, 0x2, 0xb, 0xe, 0xb, 0x44,0x80,0xa, 0x7e,0xb, 0xb0,0x7a,0x29,0xb0,0xb, 0x24,
+0xb, 0xc, 0x1b,0x44,0x78,0xf2,0x80,0xdf,0x2, 0x19,0x93,0x6d,0x0, 0x74,0x10,0x4d,
+0x0, 0x78,0xb, 0x4d,0x22,0x78,0x27,0x8d,0x31,0x7d,0x12,0x6d,0x22,0x22,0x7d,0x43,
+0x7d,0x32,0x6d,0x22,0x2f,0x11,0x2d,0x44,0x50,0x2, 0xa5,0xf, 0xbf,0x10,0x40,0x4, 
+0x9f,0x10,0xb, 0x90,0x14,0x78,0xed,0x7f,0x1, 0x6d,0x22,0x7d,0x34,0x22,0x7d,0x41,
+0x7d,0x13,0x8d,0x24,0x7d,0x2, 0x2f,0x0, 0x40,0x4, 0xbd,0x4, 0x40,0x4, 0x9d,0x4, 
+0xb, 0x14,0x14,0x78,0xf1,0x7d,0x23,0x7d,0x31,0x7d,0x10,0x6d,0x0, 0x22,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0x1c,0x40,0xe3,0xbf,0x93,0x6c,0xdd,0x22,0xff,0x0, 0xff,0x0, 0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xca,0xf8,0x7f,0x20,0x80,0xa, 0x7e,0x1b,0xf0,0x7a,0x2b,0xf0,0xb, 0x34,0xb, 0x54,
+0x69,0xff,0xff,0xfc,0x7d,0xef,0x1b,0xe4,0x79,0xef,0xff,0xfc,0x4d,0xff,0x78,0xe6,
+0x7f,0x10,0xda,0xf8,0x22,0x0, 0x1, 0x2, 0x79,0x0, 0x0, 0xa, 0x2, 0x7a,0x54,0x5b,
+0xaa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0, 0x1, 0x2, 0x84,0x0, 0x0, 0x1, 0x2, 
+0x85,0xff,0x0, 0x2, 0x2, 0x86,0x0, 0x0, 0x0, 0x1, 0x3, 0x8c,0x0, 0x0, 0x1, 0x2, 
+0x44,0x0, 0x0, 0x1, 0x2, 0x46,0x0, 0x0, 0x2, 0x2, 0x61,0x0, 0x0, 0x0, 0x4, 0x2, 
+0x63,0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x2, 0x67,0x0, 0x0, 0x0, 0x1, 0x2, 0x69,0x0, 
+0x0, 0x1, 0x2, 0x6a,0xb, 0x0, 0x1, 0x2, 0x6b,0x0, 0x0, 0x0, 0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0x56,0x31,0x2e,0x32,0x5f,0x41,0x70,0x72,0x20,0x32,0x37,0x20,0x32,0x30,0x32,0x31,
+0x46,0x54,0x53,0x35,0x34,0x35,0x32,0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x7c,0x97,0x7c,0x8b,0x7f,0x70,0xd2,0xc9,0x7a,0x81,0xf2,0x75,0xf3,0x80,0xa, 0x59,
+0x1b,0x54,0xf5,0xf4,0x75,0xf5,0x1, 0x6c,0xaa,0x80,0x14,0xe5,0xf5,0x54,0x80,0xb4,
+0x80,0xf9,0xe5,0xf6,0xa, 0x3a,0x2d,0x3f,0x7d,0x2e,0x7a,0x1b,0xb0,0xb, 0xa0,0xbc,
+0x9a,0x38,0xe8,0xc2,0xc9,0x22,0xd2,0xcf,0xe5,0xcc,0x54,0xf8,0xf5,0xcc,0xa9,0xd0,
+0xce,0xa9,0xd2,0xc9,0xa9,0xd0,0xce,0xa9,0xd3,0xc9,0xa9,0xd5,0xca,0x75,0xeb,0x23,
+0x75,0xed,0xf, 0x75,0xac,0x40,0x75,0xad,0x30,0xd2,0x86,0x75,0xec,0xff,0x75,0xee,
+0xff,0xa9,0xc1,0xea,0xa9,0xc7,0x94,0xa9,0xc4,0x94,0xc2,0xae,0x7e,0x8, 0x0, 0xc, 
+0x74,0x21,0x7e,0x70,0x1, 0x91,0x20,0xe5,0xc, 0xbe,0xb0,0x9, 0x28,0x5, 0xa9,0xc3,
+0xe2,0x80,0x3, 0xa9,0xd3,0xe2,0xe5,0xc, 0x7a,0xb3,0x2, 0x7d,0x22,0x7e,0x35,0x25,
+0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 0x7a,0x1f,0x12,0xb0,0x7e,0x35,0x25,0x7d,
+0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 0x7a,0x1f,0x12,0xac,0x7e,0x35,0x25,0x2e,0x34,
+0x0, 0xa, 0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0xa, 0x7a,0x1f,0x10,0xc, 0x7e,0x35,
+0x25,0x2e,0x34,0x0, 0xa, 0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 0x7a,0x1f,0x12,
+0xfc,0x22,0x7e,0x34,0x0, 0x4, 0x7e,0x54,0x0, 0x4, 0x7e,0x44,0x0, 0xff,0x69,0x12,
+0x0, 0x2, 0xb, 0x2a,0x0, 0x79,0x30,0x0, 0x1e,0x7e,0x34,0x1, 0x0, 0x7e,0x24,0x10,
+0x0, 0x9f,0x0, 0x59,0x12,0x0, 0x2, 0x1b,0x28,0x0, 0xb, 0x26,0x1b,0x34,0x78,0xf3,
+0x7e,0x34,0x2, 0x88,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 0x7a,0x1f,0x10,0x1c,
+0x7e,0x34,0x2, 0x88,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 0x7a,0x1f,0x10,0x20,
+0x7e,0x34,0x2, 0x88,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 0x7a,0x1f,0x11,0x54,
+0x7e,0x34,0x2, 0x88,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 0x7a,0x1f,0x12,0xa8,
+0x7e,0x35,0x25,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 0x7a,0x1f,0x12,0xb0,0x7e,
+0x35,0x25,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 0x7a,0x1f,0x12,0xac,0x7e,0x35,
+0x25,0x2e,0x34,0x0, 0xa, 0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0xa, 0x7a,0x1f,0x10,
+0xc, 0x7e,0x35,0x25,0x2e,0x34,0x0, 0xa, 0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 
+0x7a,0x1f,0x12,0xfc,0x7e,0x34,0x2, 0x63,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 
+0x7a,0x1f,0x12,0xc0,0x7e,0x34,0x2, 0x7a,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0xa, 
+0x7a,0x1f,0x12,0x40,0x7e,0x34,0x2, 0x88,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 
+0x7a,0x1f,0x11,0x84,0x7e,0x34,0x2, 0x88,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 
+0x7a,0x1f,0x11,0x7c,0x7e,0x34,0x2, 0x88,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 
+0x7a,0x1f,0x11,0x88,0x7e,0x34,0x2, 0x67,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0xa, 
+0x7a,0x1f,0x11,0xa8,0x7e,0x34,0x2, 0x79,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0xa, 
+0x7a,0x1f,0x13,0x30,0x7e,0x34,0x2, 0x79,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0xa, 
+0x7a,0x1f,0x11,0x98,0x7e,0x34,0x2, 0x79,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 
+0x7a,0x1f,0x11,0x90,0x7e,0x34,0x2, 0x88,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 
+0x7a,0x1f,0x11,0x94,0x7e,0x34,0x2, 0x88,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 
+0x7a,0x1f,0x10,0x40,0x7e,0x34,0x2, 0x88,0x7d,0x23,0x6d,0x33,0x2e,0x18,0x0, 0x8, 
+0x7a,0x1f,0x10,0x24,0x22,0xa9,0xc4,0xe1,0xa9,0xc0,0xe1,0xa9,0xd0,0xce,0xd2,0xcc,
+0x7e,0x34,0xff,0xff,0x7e,0x54,0x0, 0x4, 0x7e,0x44,0x0, 0xff,0x69,0x12,0x0, 0x2, 
+0xb, 0x2a,0x0, 0x79,0x30,0x0, 0x6, 0x7e,0x34,0x0, 0x1, 0x1b,0xa, 0x30,0xa9,0xc1,
+0xe2,0xa9,0xc2,0xe2,0xd2,0x9e,0xc2,0x9d,0x43,0xeb,0xb4,0x7e,0x34,0x0, 0xef,0x7e,
+0x54,0x0, 0x4, 0x7e,0x44,0x0, 0xff,0x69,0x12,0x0, 0x2, 0xb, 0x2a,0x0, 0x79,0x30,
+0x0, 0x18,0x2e,0x14,0x0, 0xa, 0xb, 0xa, 0x30,0x5e,0x70,0xfc,0x1b,0xa, 0x30,0x7e,
+0x34,0x0, 0x3, 0x7e,0x54,0x0, 0x4, 0x7e,0x44,0x0, 0xff,0x69,0x12,0x0, 0x2, 0xb, 
+0x2a,0x0, 0x79,0x30,0x0, 0x8, 0x7e,0x34,0x0, 0x8, 0x79,0x30,0x0, 0x4, 0x91,0xf2,
+0xd2,0xac,0x22,0xc2,0xad,0x75,0x91,0x0, 0xc2,0x90,0xc2,0x91,0xa9,0xc0,0x93,0x75,
+0x92,0x70,0xc2,0xc0,0xa9,0xd5,0xb7,0xd2,0xbd,0xd2,0xe8,0xd2,0xad,0x22,0x80,0x14,
+0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 
+0x0, 0x0, 0x0, 0x0, 0x7d,0x23,0x1b,0x34,0x4d,0x22,0x78,0xe4,0x22,0xc2,0xa9,0xc2,
+0x8c,0x43,0x89,0x2, 0x75,0x8c,0x1, 0x75,0x8a,0x0, 0xd2,0xa9,0x22,0xc2,0x8c,0x6d,
+0x33,0x7a,0x37,0x2, 0x86,0xd2,0x8c,0x22,0x7e,0x37,0x2, 0x86,0xb, 0x34,0x7a,0x37,
+0x2, 0x86,0x22,0xe1,0x38,0xca,0x39,0xf1,0x38,0xda,0x39,0x32,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0x7c,0xab,0x7e,0x70,0xef,0x7e,0xb3,0x2, 0x44,0x24,0xfd,0x68,0x5c,0x1b,0xb1,0x68,
+0x48,0x24,0x9f,0x68,0x67,0x1b,0xb2,0x68,0x69,0x24,0xda,0x68,0x1f,0x24,0xc4,0x68,
+0x53,0x1b,0xb2,0x68,0x51,0x24,0xf5,0x78,0x6e,0x7e,0xa3,0x2, 0x6e,0x7c,0xba,0x4, 
+0x7a,0xb3,0x2, 0x6e,0xa, 0x3a,0x9, 0x73,0x2, 0x51,0x80,0x5b,0x4c,0xaa,0x78,0x5, 
+0x7e,0x70,0x54,0x80,0x52,0xbe,0xa0,0x1, 0x78,0x5, 0x7e,0x70,0x5b,0x80,0x48,0xbe,
+0xa0,0x2, 0x78,0x43,0x7e,0x70,0xaa,0x80,0x3e,0x4c,0xaa,0x78,0x2, 0x80,0x5, 0xbe,
+0xa0,0x1, 0x78,0x33,0x7e,0x70,0x1, 0x80,0x2e,0xa, 0x3a,0x2e,0x35,0x25,0x9, 0x73,
+0x0, 0xa, 0x80,0x23,0x80,0x6, 0x7e,0x73,0x3, 0x8c,0x80,0x1b,0x7e,0x73,0x2, 0x79,
+0x80,0x15,0x4c,0xaa,0x78,0x8, 0x7e,0x37,0x2, 0x67,0xa, 0x36,0x80,0x9, 0xbe,0xa0,
+0x1, 0x78,0x4, 0x7e,0x37,0x2, 0x67,0x7c,0xb7,0x22,0x7c,0x97,0x7c,0x8b,0xc2,0x2, 
+0x7e,0xb3,0x2, 0x44,0x14,0x78,0x2, 0x41,0xa2,0x1b,0xb1,0x78,0x2, 0x41,0x22,0x1b,
+0xb1,0x78,0x2, 0x41,0xa2,0x1b,0xb1,0x78,0x2, 0x41,0x65,0x14,0x78,0x2, 0x41,0x81,
+0x14,0x78,0x2, 0x41,0x87,0x24,0xf9,0x78,0x2, 0x41,0x9d,0x24,0xbb,0x68,0x55,0x24,
+0xf6,0x78,0x2, 0x61,0x7e,0x1b,0xb1,0x78,0x2, 0x61,0x6c,0x14,0x78,0x2, 0x61,0x76,
+0x1b,0xb1,0x78,0x2, 0x41,0xa5,0x14,0x78,0x2, 0x41,0xa7,0x14,0x78,0x2, 0x41,0xa2,
+0x1b,0xb2,0x78,0x2, 0x41,0xa2,0x24,0xda,0x68,0x2e,0x24,0xe6,0x68,0x28,0x24,0xfa,
+0x68,0x3f,0x24,0xf1,0x68,0x74,0x24,0xf3,0x78,0x2, 0x41,0xa2,0x24,0xec,0x78,0x2, 
+0x61,0x8c,0x24,0x5, 0x68,0x2, 0x61,0x90,0xbe,0x80,0x1, 0x68,0x2, 0x61,0x90,0x7a,
+0x93,0x2, 0x6e,0x22,0x61,0x86,0x61,0x86,0xbe,0x80,0x4, 0x50,0xb, 0xe4,0x7a,0xb3,
+0x2, 0x79,0xa, 0x58,0x19,0x95,0x2, 0x47,0x4c,0x88,0x68,0x2, 0x61,0x90,0xd2,0x2, 
+0x22,0x7c,0xb8,0x14,0x68,0xa, 0x14,0x68,0xf, 0x14,0x68,0x1e,0x24,0x3, 0x78,0x2a,
+0xa, 0x39,0x7d,0x23,0x6d,0x33,0x80,0xc, 0x7c,0x29,0x6c,0x33,0x6d,0x0, 0x7e,0x1f,
+0x2, 0x63,0x2f,0x10,0x7a,0x1f,0x2, 0x63,0x80,0x10,0xa, 0x19,0x6d,0x0, 0x7e,0x1f,
+0x2, 0x63,0x2f,0x10,0x7a,0x1f,0x2, 0x63,0xd2,0x3, 0x7c,0xb8,0x14,0x68,0x19,0x14,
+0x68,0x27,0x14,0x68,0x26,0x14,0x68,0x25,0x14,0x68,0x2a,0x24,0x5, 0x78,0x48,0x20,
+0x1, 0x2, 0x41,0xcc,0x41,0xc6,0x41,0xcc,0xa, 0x39,0x7d,0x3, 0x6d,0x11,0x7e,0x35,
+0x25,0x59,0x13,0x0, 0x2, 0x1b,0x38,0x0, 0x22,0x41,0xef,0x61,0x4, 0x7c,0x69,0x6c,
+0x77,0x6d,0x22,0x61,0x1c,0xa, 0x59,0x6d,0x44,0x7e,0x25,0x25,0x7d,0x32,0xb, 0x36,
+0x49,0x13,0x0, 0x2, 0xb, 0x38,0x0, 0x2f,0x2, 0x59,0x13,0x0, 0x2, 0x1b,0x38,0x0, 
+0x6d,0x33,0x59,0x32,0x0, 0x8, 0x22,0x7e,0xb3,0x2, 0x79,0x6c,0xb9,0x7a,0xb3,0x2, 
+0x79,0x7e,0x25,0x25,0x2e,0x24,0x0, 0x8, 0xb, 0x28,0x50,0x7d,0x35,0xb, 0x34,0x1b,
+0x28,0x30,0x2e,0x55,0x25,0x19,0x95,0x0, 0xa, 0x7e,0x55,0x25,0x49,0x15,0x0, 0x8, 
+0x6d,0x0, 0x49,0x35,0x0, 0x6, 0x49,0x25,0x0, 0x4, 0xbf,0x1, 0x50,0x2, 0x61,0x90,
+0x20,0x1, 0x3, 0xd3,0x80,0x1, 0xc3,0x92,0x1, 0x7a,0x55,0x23,0x7e,0x34,0x0, 0x2, 
+0x61,0x67,0x7c,0xb8,0x14,0x68,0x15,0x14,0x68,0x14,0x14,0x68,0x13,0x24,0x3, 0x68,
+0x2, 0x61,0x90,0x20,0x1, 0x2, 0x41,0xcc,0x41,0xc6,0x41,0xcc,0x41,0xd4,0x41,0xef,
+0xa, 0x59,0x6d,0x44,0x7e,0x15,0x25,0x49,0x31,0x0, 0x2, 0xb, 0x18,0x20,0x2f,0x12,
+0x59,0x31,0x0, 0x2, 0x1b,0x18,0x20,0x7e,0x35,0x25,0x7a,0x35,0x23,0xd2,0x2, 0x7e,
+0x34,0x0, 0x1, 0x61,0x67,0x75,0xe6,0x0, 0x75,0xe7,0x0, 0xe4,0x7e,0x34,0x1, 0x6, 
+0x7e,0x24,0x0, 0xff,0x7a,0x1b,0xb0,0x7e,0x34,0x1, 0x7, 0x7a,0x1b,0xb0,0xd2,0x6, 
+0x22,0x75,0xe6,0x0, 0xd2,0x9f,0x22,0xbe,0x80,0x1, 0x78,0x5, 0x7a,0x93,0x2, 0x6a,
+0x22,0xbe,0x80,0x2, 0x68,0x2, 0x61,0x90,0x7a,0x93,0x2, 0x46,0x22,0x7a,0x93,0x2, 
+0x69,0x22,0xd2,0x2, 0x22,0x61,0x86,0x7c,0xb8,0x14,0x68,0x28,0x14,0x68,0x40,0x14,
+0x68,0x52,0x14,0x68,0x61,0x14,0x68,0x70,0x14,0x78,0x2, 0x61,0x45,0x24,0x6, 0x68,
+0x2, 0x61,0x90,0x30,0x1, 0x6, 0x7e,0x34,0x0, 0x28,0x80,0x4, 0x7e,0x34,0x1, 0x36,
+0x7a,0x35,0x25,0x22,0xa, 0x39,0x6d,0x22,0x7e,0x15,0x25,0x59,0x31,0x0, 0x2, 0x1b,
+0x18,0x20,0x49,0x31,0x0, 0x2, 0xb, 0x18,0x20,0x7d,0x23,0x6d,0x33,0x80,0x4e,0xa, 
+0x59,0x7c,0xab,0xe4,0x6d,0x44,0x7e,0x15,0x25,0x49,0x31,0x0, 0x2, 0xb, 0x18,0x20,
+0x2f,0x12,0x80,0x39,0xa, 0x59,0x6d,0x44,0x7e,0x15,0x25,0x49,0x31,0x0, 0x2, 0xb, 
+0x18,0x20,0x2f,0x12,0x80,0x27,0xa, 0x39,0x7d,0x23,0x6d,0x33,0x7e,0x15,0x25,0x59,
+0x31,0x0, 0x6, 0x59,0x21,0x0, 0x4, 0x22,0xa, 0x59,0x7c,0xab,0xe4,0x6d,0x44,0x7e,
+0x15,0x25,0xb, 0x16,0x49,0x31,0x0, 0x2, 0xb, 0x18,0x20,0x2f,0x12,0x59,0x31,0x0, 
+0x2, 0x1b,0x18,0x20,0x22,0xa, 0x59,0x6d,0x44,0x7e,0x35,0x25,0x7d,0x23,0xb, 0x26,
+0x49,0x12,0x0, 0x2, 0xb, 0x28,0x0, 0x2f,0x2, 0x59,0x12,0x0, 0x2, 0x1b,0x28,0x0, 
+0x7a,0x35,0x23,0x7e,0x34,0x0, 0x3, 0x7a,0x37,0x2, 0x61,0x22,0x7e,0x34,0x0, 0x4, 
+0x7a,0x37,0x2, 0x61,0x80,0x10,0xe4,0x7c,0x78,0x7c,0x69,0x2, 0x18,0x0, 0x7e,0x34,
+0x0, 0x5, 0x7a,0x37,0x2, 0x61,0xe4,0x7a,0xb3,0x2, 0x79,0x22,0x7a,0x93,0x2, 0x84,
+0x22,0xca,0x7b,0xca,0x2b,0xca,0x1b,0xca,0xb, 0xd2,0x0, 0x30,0x90,0x22,0xc2,0x90,
+0x7e,0x71,0x91,0x7e,0xb3,0x2, 0x6b,0x70,0x4, 0x7a,0x73,0x2, 0x44,0x11,0x9a,0x7e,
+0xb3,0x2, 0x6b,0x4, 0x7a,0xb3,0x2, 0x6b,0x30,0x2, 0x5, 0xe4,0x11,0x0, 0xf5,0x91,
+0x30,0x91,0xf, 0xc2,0x91,0x7e,0xb3,0x2, 0x6b,0x4, 0x7a,0xb3,0x2, 0x6b,0x11,0x0, 
+0xf5,0x91,0xda,0xb, 0xda,0x1b,0xda,0x2b,0xda,0x7b,0x32,0xca,0xb8,0xa9,0xc0,0x93,
+0xe4,0x7a,0xb3,0x2, 0x6b,0xda,0xb8,0x32,0x7c,0x7b,0x2e,0x70,0xf9,0x78,0x2, 0x81,
+0xe0,0x1b,0x70,0x78,0x2, 0x81,0xfc,0x1b,0x70,0x78,0x2, 0xa1,0x2, 0x2e,0x70,0xf9,
+0x78,0x2, 0xa1,0x13,0x2e,0x70,0xb1,0x78,0x2, 0xa1,0x8c,0x1b,0x71,0x78,0x2, 0xa1,
+0x79,0x1b,0x70,0x78,0x2, 0xa1,0x83,0x1b,0x71,0x78,0x2, 0xa1,0x1c,0x1b,0x70,0x78,
+0x2, 0xa1,0x1e,0x2e,0x70,0xd5,0x68,0x1f,0x2e,0x70,0xe6,0x68,0x1a,0x1b,0x70,0x68,
+0x29,0x1b,0x70,0x78,0x2, 0x81,0xb8,0x1b,0x72,0x68,0xe, 0x2e,0x70,0xf1,0x68,0x32,
+0x2e,0x70,0x6a,0x68,0x2, 0xa1,0x99,0xa1,0x94,0x7e,0x1f,0x2, 0x63,0x7c,0x76,0x7c,
+0x65,0xa, 0x24,0x7a,0x1f,0x2, 0x63,0xd2,0x3, 0x22,0x7e,0x15,0x25,0x49,0x31,0x0, 
+0x2, 0xb, 0x18,0x20,0x7c,0x76,0x7c,0x65,0xa, 0x24,0x59,0x31,0x0, 0x2, 0x1b,0x18,
+0x20,0x22,0x7e,0x14,0x0, 0x4, 0x7e,0x4, 0x0, 0xff,0x69,0x30,0x0, 0x2, 0xb, 0xa, 
+0x20,0x69,0x11,0x0, 0x10,0x6d,0x0, 0x7e,0x35,0x25,0x59,0x13,0x0, 0x6, 0x59,0x3, 
+0x0, 0x4, 0x7a,0x35,0x23,0x7e,0x34,0x0, 0x2, 0x7a,0x37,0x2, 0x61,0x20,0x1, 0x3, 
+0xd3,0x80,0x1, 0xc3,0x92,0x1, 0x30,0x1, 0x6, 0x7e,0x34,0x0, 0x28,0x80,0x4, 0x7e,
+0x34,0x1, 0x36,0x7a,0x35,0x25,0x80,0x25,0x7e,0x15,0x25,0x49,0x31,0x0, 0x2, 0xb, 
+0x18,0x20,0x7c,0x76,0x7c,0x65,0xa, 0x24,0x59,0x31,0x0, 0x2, 0x1b,0x18,0x20,0x7e,
+0x35,0x25,0x7a,0x35,0x23,0x7e,0x34,0x0, 0x1, 0x7a,0x37,0x2, 0x61,0x2, 0x4, 0xad,
+0x75,0xe6,0x0, 0x75,0xe7,0x0, 0xe4,0x7e,0x34,0x1, 0x6, 0x7e,0x24,0x0, 0xff,0x7a,
+0x1b,0xb0,0x7e,0x34,0x1, 0x7, 0x7a,0x1b,0xb0,0xd2,0x6, 0x22,0x75,0xe6,0x0, 0xd2,
+0x9f,0x22,0x7e,0x73,0x2, 0x88,0x7a,0x73,0x2, 0x6a,0x7e,0x73,0x2, 0x89,0x7a,0x73,
+0x2, 0x46,0x22,0x7e,0x73,0x2, 0x88,0x7a,0x73,0x2, 0x69,0x22,0x80,0x76,0x7e,0x73,
+0x2, 0x89,0xa, 0x37,0x6d,0x22,0x7c,0x67,0x6c,0x77,0x7e,0x33,0x2, 0x88,0xa, 0x13,
+0x7d,0x1, 0x6d,0x11,0x2f,0x1, 0x7e,0x73,0x2, 0x8a,0xa, 0x37,0x2f,0x10,0x7e,0x15,
+0x23,0x59,0x31,0x0, 0x2, 0x1b,0x18,0x20,0x7e,0x73,0x2, 0x8c,0xa, 0x37,0x6d,0x22,
+0x7c,0x67,0x6c,0x77,0x7e,0x13,0x2, 0x8b,0xa, 0x51,0x7d,0x45,0x6d,0x55,0x2f,0x21,
+0x7e,0x73,0x2, 0x8d,0xa, 0x37,0x2f,0x12,0x59,0x31,0x0, 0x6, 0x59,0x21,0x0, 0x4, 
+0x7e,0x34,0x0, 0x3, 0x7a,0x37,0x2, 0x61,0x22,0x7e,0x34,0x0, 0x4, 0x7a,0x37,0x2, 
+0x61,0x80,0x11,0x74,0x1, 0x6c,0x77,0x6c,0x66,0x2, 0x18,0x0, 0x7e,0x34,0x0, 0x5, 
+0x7a,0x37,0x2, 0x61,0xe4,0x7a,0xb3,0x2, 0x79,0x22,0xca,0x7b,0xca,0x2b,0xca,0x1b,
+0xca,0xb, 0xc2,0x0, 0x7e,0x14,0x0, 0x4, 0x7e,0x4, 0x0, 0xff,0x69,0x50,0x0, 0x2, 
+0xb, 0xa, 0x40,0xb, 0x2a,0x30,0x4e,0x70,0x80,0x1b,0x2a,0x30,0x69,0x30,0x0, 0x2, 
+0xb, 0xa, 0x20,0x69,0x11,0x0, 0x2, 0x5e,0x14,0xff,0x0, 0x68,0x3f,0xb, 0x1a,0x10,
+0x4e,0x30,0x8, 0x1b,0x1a,0x10,0x7e,0x14,0x0, 0x4, 0x7e,0x4, 0x0, 0xff,0x69,0x50,
+0x0, 0x2, 0xb, 0xa, 0x40,0x69,0x12,0x0, 0x2, 0xa, 0x2, 0x1e,0x4, 0x1e,0x4, 0x5e,
+0x4, 0x0, 0x1, 0x78,0xc, 0xa, 0x12,0x1e,0x14,0x5e,0x14,0x0, 0x1, 0x78,0x2, 0xc1,
+0x96,0xb, 0x2a,0x10,0x4e,0x30,0x4, 0x1b,0x2a,0x10,0xc1,0x96,0x69,0x11,0x0, 0x2, 
+0x1e,0x14,0x1e,0x14,0x1e,0x14,0x5e,0x14,0x0, 0x1, 0x68,0x6, 0x69,0x51,0x0, 0xe, 
+0x71,0xe8,0x7e,0x34,0x0, 0x4, 0x7e,0x24,0x0, 0xff,0x69,0x11,0x0, 0x2, 0xb, 0x1a,
+0x0, 0x69,0x30,0x0, 0x2, 0x1e,0x34,0x1e,0x34,0x5e,0x34,0x0, 0x1, 0x68,0x9, 0xb, 
+0xa, 0x30,0x5e,0x70,0xdf,0x1b,0xa, 0x30,0x7e,0x34,0x0, 0x4, 0x7e,0x24,0x0, 0xff,
+0x69,0x11,0x0, 0x2, 0xb, 0x1a,0x0, 0x69,0x30,0x0, 0x2, 0x1e,0x34,0x5e,0x34,0x0, 
+0x1, 0x68,0xd, 0x2e,0x14,0x0, 0x6, 0xb, 0xa, 0x30,0x4e,0x70,0x2, 0x1b,0xa, 0x30,
+0x7e,0x34,0x0, 0x4, 0x7e,0x24,0x0, 0xff,0x69,0x11,0x0, 0x2, 0xb, 0x1a,0x0, 0x69,
+0x30,0x0, 0x2, 0x5e,0x34,0x0, 0x1, 0x68,0xd, 0x2e,0x14,0x0, 0x6, 0xb, 0xa, 0x30,
+0x4e,0x70,0x1, 0x1b,0xa, 0x30,0x7e,0x34,0xff,0xff,0x7e,0x54,0x0, 0x4, 0x7e,0x44,
+0x0, 0xff,0x69,0x12,0x0, 0x2, 0xb, 0x2a,0x0, 0x79,0x30,0x0, 0x6, 0xb, 0xa, 0x30,
+0x5e,0x34,0x0, 0x3, 0x1b,0xa, 0x30,0xda,0xb, 0xda,0x1b,0xda,0x2b,0xda,0x7b,0x32,
+0x7f,0x50,0x7f,0x41,0x6c,0xaa,0xbe,0x58,0x0, 0x0, 0x38,0x3a,0x7e,0x58,0xff,0xff,
+0x7e,0xa0,0x1, 0x80,0x31,0x7e,0x18,0x0, 0x80,0x7a,0x1d,0x10,0x7f,0x14,0x7e,0x8, 
+0x3, 0x8d,0x12,0x14,0x93,0x9e,0x58,0x0, 0x80,0x2e,0x48,0x0, 0x80,0x6d,0x44,0x9, 
+0x34,0x3, 0x8d,0x7e,0x1d,0xc, 0x7e,0x1b,0xb0,0x6c,0xb3,0x7a,0x1b,0xb0,0xb, 0x44,
+0xbe,0x44,0x0, 0x80,0x78,0xe9,0xbe,0x58,0x0, 0x80,0x38,0xc9,0x4c,0xaa,0x68,0x2, 
+0xb, 0x5c,0x7a,0x5d,0x10,0x7f,0x14,0x7e,0x8, 0x3, 0x8d,0x12,0x14,0x93,0x6d,0x44,
+0x80,0x11,0x9, 0x64,0x3, 0x8d,0x7e,0xd, 0xc, 0x7e,0xb, 0x70,0x6c,0x76,0x7a,0xb, 
+0x70,0xb, 0x44,0x7d,0x34,0x6d,0x22,0xbf,0x15,0x40,0xe7,0x22,0xca,0x3b,0x7f,0x60,
+0x7f,0x71,0x7e,0x3d,0xc, 0x75,0x14,0x0, 0xa2,0x3, 0xe4,0x33,0x78,0xc, 0x7a,0x3d,
+0x15,0x7f,0x17,0x7f,0x6, 0x12,0x11,0x6e,0xe1,0xf6,0x7f,0x57,0x7f,0x7, 0x2f,0x3, 
+0x7a,0xd, 0x10,0x7e,0x1f,0x2, 0x63,0xbf,0x1, 0x28,0x2, 0xe1,0xf6,0x4d,0xef,0x78,
+0x3, 0x75,0x27,0x0, 0xe5,0x27,0xbe,0xb0,0x4, 0x50,0x46,0xe5,0x27,0xa, 0x2b,0x7e,
+0x34,0x0, 0x4, 0x9d,0x32,0x7a,0x71,0x14,0xa, 0x37,0x6d,0x22,0xbf,0x13,0x28,0x4, 
+0x7c,0xbf,0xf5,0x14,0xe5,0x14,0xa, 0x3b,0xca,0x39,0xe5,0x27,0xa, 0x1b,0x2e,0x14,
+0x2, 0x6f,0x6d,0x0, 0x7f,0x16,0x12,0x1, 0x20,0x1b,0xfd,0xe5,0x14,0x25,0x27,0xf5,
+0x27,0xe5,0x14,0xa, 0x3b,0x6d,0x22,0x2f,0x51,0xe5,0x14,0xa, 0x1b,0x2d,0xd1,0x9f,
+0x31,0xbe,0x38,0x0, 0x0, 0x28,0xa, 0x7a,0x3d,0x15,0x7f,0x15,0x7f,0x6, 0x12,0x11,
+0x6e,0x7e,0xf, 0x2, 0x63,0x7e,0x1d,0x10,0xbf,0x10,0x78,0x1a,0xe5,0x27,0xb4,0x4, 
+0x15,0x7e,0x18,0x0, 0x4, 0x7a,0x1d,0x15,0x9f,0x11,0x7e,0x8, 0x2, 0x6f,0x12,0x11,
+0x6e,0x75,0x27,0xff,0xc2,0x3, 0xda,0x3b,0x22,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xa9,0xc2,0xb4,0x74,0x9f,0x11,0x68,0x7e,0x8, 0x0, 0xc, 0x7e,0x18,0x0, 0x1, 0x11,
+0x83,0xa9,0xd2,0xb4,0xe5,0xc, 0x60,0x5, 0xe5,0xc, 0xb4,0xff,0x2, 0xc3,0x22,0xd3,
+0x22,0xd2,0xc8,0x43,0xed,0xf, 0xc2,0xea,0x75,0xb3,0x13,0xa9,0xd1,0xb4,0xa9,0xc0,
+0xb4,0x22,0xca,0xf8,0x7e,0xf0,0x10,0x7e,0x34,0x15,0x0, 0xc2,0xa, 0x7d,0x23,0x1b,
+0x34,0x4d,0x22,0x78,0xf8,0x11,0x0, 0x92,0xa, 0x20,0xa, 0x19,0x75,0xed,0x9f,0xd2,
+0x8, 0xa9,0xd1,0xea,0xa9,0xd5,0xca,0xa9,0xc1,0xea,0x80,0x1, 0x0, 0x7c,0xaf,0x1b,
+0xf0,0x4c,0xaa,0x78,0xf7,0xda,0xf8,0x22,0x7c,0x7b,0x7a,0x71,0xb5,0xa9,0x36,0xb3,
+0xfc,0xa9,0xc6,0xb3,0xd3,0x22,0x75,0xb5,0x0, 0xa9,0x36,0xb3,0xfc,0xa9,0xc6,0xb3,
+0xe5,0xb5,0x22,0x7f,0x61,0x7f,0x70,0x9f,0x11,0x80,0x13,0x75,0xb5,0x0, 0xa9,0x36,
+0xb3,0xfc,0xa9,0xc6,0xb3,0xe5,0xb5,0x7a,0x7b,0xb0,0xb, 0xf4,0xb, 0x1c,0xbf,0x16,
+0x40,0xe9,0x22,0xa9,0xc2,0xb4,0x30,0xa, 0x6, 0x74,0x6, 0x11,0x68,0x80,0x4, 0x74,
+0x4, 0x11,0x68,0xa9,0xd2,0xb4,0x22,0xa9,0xc2,0xb4,0x74,0x5, 0x11,0x68,0x11,0x76,
+0xa9,0xd2,0xb4,0x30,0xe0,0x2, 0xd3,0x22,0xc3,0x22,0xca,0xf8,0x7f,0x1, 0x7c,0xfb,
+0x7c,0xb1,0xf5,0x1f,0x7c,0xb2,0xf5,0x1e,0x7c,0xb3,0xf5,0x1d,0xa9,0xc2,0xb4,0x7c,
+0xbf,0x11,0x68,0xe5,0x1f,0x11,0x68,0xe5,0x1e,0x11,0x68,0xe5,0x1d,0x11,0x68,0xda,
+0xf8,0x22,0x7f,0x70,0x7f,0x61,0xe5,0x22,0xb4,0x1, 0x1d,0x7e,0x34,0xf0,0x0, 0x7e,
+0x24,0x0, 0x1, 0xbf,0x61,0x50,0x11,0x7e,0xd, 0x19,0x2f,0x6, 0x7e,0x34,0xe0,0x0, 
+0x7e,0x24,0x0, 0x1, 0xbf,0x1, 0x38,0x55,0xd2,0xa, 0x11,0xa3,0x74,0x2, 0x7f,0x16,
+0x11,0xca,0x9f,0x11,0x80,0x14,0x7d,0x13,0x2d,0x1f,0x7d,0xe, 0x7e,0xb, 0xb0,0xf5,
+0xb5,0xa9,0x36,0xb3,0xfc,0xa9,0xc6,0xb3,0xb, 0x1c,0x7e,0xd, 0x19,0xbf,0x10,0x40,
+0xe5,0xa9,0xd2,0xb4,0x12,0x7, 0x2d,0x11,0xb7,0x50,0xa, 0x7e,0x37,0x2, 0x86,0xbe,
+0x34,0x1, 0xf4,0x28,0xf2,0x7e,0x37,0x2, 0x86,0xbe,0x34,0x1, 0xf4,0x38,0x3, 0x2, 
+0x7, 0x43,0xc2,0x86,0x7e,0x34,0x13,0x88,0x12,0x6, 0xfe,0xd2,0x86,0x22,0xca,0x3b,
+0x7f,0x30,0x7f,0x51,0x7e,0x4d,0x15,0x7f,0x15,0x5e,0x34,0x0, 0x7f,0x7d,0x53,0x7e,
+0x44,0x0, 0x80,0x9d,0x45,0x7d,0x34,0x6d,0x22,0xbf,0x14,0x40,0xc, 0x7a,0x4d,0x19,
+0x7f,0x15,0x7f,0x3, 0x11,0xf2,0xd3,0x80,0x48,0x7d,0x34,0x6d,0x22,0x7a,0x1d,0x19,
+0x7f,0x15,0x7f,0x3, 0x11,0xf2,0x7d,0x34,0x6d,0x22,0x9f,0x41,0x2f,0x51,0x2d,0x74,
+0x80,0x19,0x7e,0x18,0x0, 0x80,0x7a,0x1d,0x19,0x7f,0x15,0x7f,0x3, 0x11,0xf2,0x9e,
+0x48,0x0, 0x80,0x2e,0x74,0x0, 0x80,0x2e,0x58,0x0, 0x80,0xbe,0x48,0x0, 0x80,0x50,
+0xe1,0xbe,0x48,0x0, 0x0, 0x68,0x9, 0x7a,0x4d,0x19,0x7f,0x15,0x7f,0x3, 0x11,0xf2,
+0xd3,0xda,0x3b,0x22,0x7c,0x6b,0xd2,0xa, 0x11,0xa3,0x74,0x20,0xca,0xb8,0xa, 0x36,
+0x6d,0x22,0x74,0xc, 0x2f,0x11,0x14,0x78,0xfb,0xda,0xb8,0x11,0xca,0xa9,0xd2,0xb4,
+0x12,0x7, 0x2d,0x11,0xb7,0x50,0xa, 0x7e,0x37,0x2, 0x86,0xbe,0x34,0x1, 0xf4,0x28,
+0xf2,0x7e,0x37,0x2, 0x86,0xbe,0x34,0x1, 0xf4,0x38,0x5, 0x12,0x7, 0x43,0xd3,0x22,
+0xc2,0x86,0x7e,0x34,0x13,0x88,0x12,0x6, 0xfe,0xd2,0x86,0xc3,0x22,0xd2,0xa, 0x11,
+0xa3,0xa9,0xc2,0xb4,0x74,0x60,0x11,0x68,0xa9,0xd2,0xb4,0x11,0xb7,0x40,0xfc,0xd3,
+0x22,0x7c,0x7b,0xa9,0xc2,0xb4,0xa9,0xc6,0xb3,0x75,0xb5,0x5, 0xa9,0x36,0xb3,0xfc,
+0xa9,0xc6,0xb3,0x75,0xb5,0x0, 0xa9,0x36,0xb3,0xfc,0xa9,0xc6,0xb3,0x75,0xb5,0x0, 
+0xa9,0x36,0xb3,0xfc,0xa9,0xc6,0xb3,0x7a,0x71,0xb5,0xa9,0x36,0xb3,0xfc,0xa9,0xc6,
+0xb3,0x75,0xb5,0x0, 0xa9,0x36,0xb3,0xfc,0xa9,0xc6,0xb3,0x75,0xb5,0x0, 0xa9,0x36,
+0xb3,0xfc,0xa9,0xc6,0xb3,0x7e,0x61,0xb5,0x75,0xb5,0x0, 0xa9,0x36,0xb3,0xfc,0xa9,
+0xc6,0xb3,0x7e,0x71,0xb5,0xa9,0xd2,0xb4,0x7c,0x46,0x7c,0x64,0x22,0x7d,0x43,0x7c,
+0x5b,0xa, 0x58,0x7d,0x34,0x7c,0x47,0xa9,0xc2,0xb4,0xa9,0xc6,0xb3,0x75,0xb5,0x1, 
+0xa9,0x36,0xb3,0xfc,0xa9,0xc6,0xb3,0x75,0xb5,0x0, 0xa9,0x36,0xb3,0xfc,0xa9,0xc6,
+0xb3,0x75,0xb5,0x0, 0xa9,0x36,0xb3,0xfc,0xa9,0xc6,0xb3,0x7a,0x51,0xb5,0xa9,0x36,
+0xb3,0xfc,0xa9,0xc6,0xb3,0xf5,0xb5,0xa9,0x36,0xb3,0xfc,0xa9,0xc6,0xb3,0x7a,0x41,
+0xb5,0xa9,0x36,0xb3,0xfc,0xa9,0xc6,0xb3,0xa9,0xd2,0xb4,0x22,0x7c,0x7b,0xbe,0x70,
+0x0, 0x28,0x2, 0x61,0x22,0x74,0x1, 0x7e,0x34,0xdf,0xff,0x51,0x9d,0x74,0x6, 0x51,
+0x41,0x7d,0x13,0x6c,0x33,0x7d,0x31,0x51,0x9d,0x74,0x6, 0x7d,0x31,0x51,0x9d,0x74,
+0x6, 0x7d,0x31,0x51,0x9d,0x74,0x2, 0x51,0x41,0x7d,0x13,0x4e,0x30,0x1, 0x7d,0x31,
+0x41,0x9d,0x74,0x6, 0x51,0x41,0x7d,0x13,0x7e,0x30,0xa5,0x7d,0x31,0x51,0x9d,0x7e,
+0x30,0xf, 0x74,0x6, 0x7d,0x31,0x51,0x9d,0x7e,0x30,0x6a,0x74,0x6, 0x7d,0x31,0x51,
+0x9d,0x7e,0x34,0x0, 0x5, 0x2, 0x6, 0xfe,0xca,0x79,0x7c,0xf7,0x7c,0xeb,0x74,0x1, 
+0x51,0xec,0x74,0x1, 0x6d,0x33,0x51,0x9d,0xe4,0x51,0x41,0x7d,0x13,0x5e,0x14,0x80,
+0x0, 0x7c,0xf, 0x6c,0x11,0x3e,0x4, 0x4d,0x10,0x7d,0x31,0x51,0x9d,0x6d,0x0, 0xbe,
+0xe0,0x1, 0x78,0x6, 0x7e,0x14,0x0, 0x8, 0x80,0x2, 0x7d,0x10,0x74,0x4, 0x7d,0x31,
+0x51,0x9d,0x4e,0x30,0x10,0x4e,0x30,0x40,0x74,0x4, 0x7d,0x31,0x51,0x9d,0x7e,0x34,
+0x0, 0x19,0x12,0x6, 0xfe,0x4e,0x30,0x1, 0x74,0x4, 0x7d,0x31,0x51,0x9d,0x7e,0x34,
+0xa2,0x1c,0x12,0x6, 0xfe,0x5e,0x30,0xbf,0x74,0x4, 0x7d,0x31,0x51,0x9d,0x7e,0x34,
+0x0, 0x19,0x12,0x6, 0xfe,0x5e,0x30,0xfe,0x74,0x4, 0x7d,0x31,0x51,0x9d,0x7e,0x34,
+0x0, 0x19,0x12,0x6, 0xfe,0x5e,0x30,0xef,0x74,0x4, 0x7d,0x31,0x51,0x9d,0x7e,0x34,
+0x0, 0x5, 0x12,0x6, 0xfe,0xe4,0x51,0xec,0x7e,0x34,0xff,0xf7,0x74,0x4, 0x51,0x9d,
+0xda,0x79,0x22,0xca,0xf8,0x7c,0xfb,0x74,0x1, 0x51,0xec,0xe4,0x6d,0x33,0x51,0x9d,
+0x74,0x1, 0x6d,0x33,0x51,0x9d,0x6d,0x0, 0xbe,0xf0,0x1, 0x78,0x6, 0x7e,0x14,0x0, 
+0x8, 0x80,0x2, 0x7d,0x10,0x74,0x4, 0x7d,0x31,0x51,0x9d,0x4e,0x30,0x10,0x4e,0x30,
+0x40,0x4e,0x30,0x4, 0x74,0x4, 0x7d,0x31,0x51,0x9d,0x7e,0x34,0x0, 0x19,0x12,0x6, 
+0xfe,0x4e,0x30,0x1, 0x74,0x4, 0x7d,0x31,0x51,0x9d,0x7e,0x34,0xa2,0x1c,0x12,0x6, 
+0xfe,0x5e,0x30,0xbf,0x74,0x4, 0x7d,0x31,0x51,0x9d,0x7e,0x34,0x0, 0xa0,0x12,0x6, 
+0xfe,0x5e,0x30,0xfe,0x74,0x4, 0x7d,0x31,0x51,0x9d,0x7e,0x34,0x0, 0x19,0x12,0x6, 
+0xfe,0x5e,0x30,0xef,0x74,0x4, 0x7d,0x31,0x51,0x9d,0x7e,0x34,0x0, 0x1, 0x12,0x6, 
+0xfe,0xe4,0x51,0xec,0x7e,0x34,0xff,0xf7,0x74,0x4, 0x51,0x9d,0xda,0xf8,0x22,0x7f,
+0x1, 0x7c,0xb1,0xf5,0x16,0x7c,0xb2,0xf5,0x15,0x7c,0xb3,0xf5,0x14,0xa9,0xc2,0xb4,
+0x74,0xb, 0x11,0x68,0xe5,0x16,0x11,0x68,0xe5,0x15,0x11,0x68,0xe5,0x14,0x11,0x68,
+0xe4,0x1, 0x68,0x7f,0x70,0x7f,0x1, 0x91,0x6f,0x7f,0x7, 0x7e,0x1d,0x10,0x11,0x83,
+0xa9,0xd2,0xb4,0xd3,0x22,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+0x7c,0xa7,0xa, 0xf6,0x6d,0xee,0x60,0x2, 0x1, 0xb0,0x1b,0xa0,0x68,0x23,0x1b,0xa0,
+0x68,0x2e,0x1b,0xa0,0x68,0x3a,0x1b,0xa0,0x68,0x44,0x1b,0xa0,0x68,0x50,0x1b,0xa0,
+0x68,0x6d,0x2e,0xa0,0x6, 0x68,0x2, 0x21,0x15,0x7e,0x34,0x0, 0x28,0x7a,0x35,0x25,
+0x22,0x7d,0xf, 0x6d,0x11,0x7e,0x35,0x25,0x59,0x13,0x0, 0x2, 0x1b,0x38,0x0, 0x22,
+0x7d,0x4e,0x7c,0x89,0x7d,0x5f,0x7c,0x9a,0x7c,0xab,0xe4,0x7e,0x15,0x25,0x80,0x2e,
+0x7e,0x15,0x25,0x49,0x31,0x0, 0x2, 0xb, 0x18,0x20,0x2f,0x17,0x80,0x29,0x7d,0x2f,
+0x6d,0x33,0x7e,0x15,0x25,0x59,0x31,0x0, 0x6, 0x59,0x21,0x0, 0x4, 0x22,0x7d,0x4e,
+0x7c,0x89,0x7d,0x5f,0x7c,0x9a,0x7c,0xab,0xe4,0x7e,0x15,0x25,0xb, 0x16,0x49,0x31,
+0x0, 0x2, 0xb, 0x18,0x20,0x2f,0x12,0x59,0x31,0x0, 0x2, 0x1b,0x18,0x20,0x22,0x7e,
+0x35,0x25,0x7d,0x23,0xb, 0x26,0x49,0x12,0x0, 0x2, 0xb, 0x28,0x0, 0x2f,0x7, 0x59,
+0x12,0x0, 0x2, 0x1b,0x28,0x0, 0x7e,0x24,0x0, 0x6, 0x7a,0x27,0x2, 0x61,0x80,0x5d,
+0x7e,0x73,0x2, 0x89,0xa, 0x37,0x6d,0x22,0x7c,0x67,0x6c,0x77,0x7e,0x33,0x2, 0x88,
+0xa, 0x13,0x7d,0x1, 0x6d,0x11,0x2f,0x1, 0x7e,0x73,0x2, 0x8a,0xa, 0x37,0x2f,0x10,
+0x7e,0x15,0x25,0x59,0x31,0x0, 0x2, 0x1b,0x18,0x20,0x7e,0x73,0x2, 0x8c,0xa, 0x37,
+0x6d,0x22,0x7c,0x67,0x6c,0x77,0x7e,0x13,0x2, 0x8b,0xa, 0x51,0x7d,0x45,0x6d,0x55,
+0x2f,0x21,0x7e,0x73,0x2, 0x8d,0xa, 0x37,0x2f,0x12,0x59,0x31,0x0, 0x6, 0x59,0x21,
+0x0, 0x4, 0x7e,0x34,0x0, 0x6, 0x7a,0x37,0x2, 0x61,0x7e,0x35,0x25,0x7a,0x35,0x23,
+0xe4,0x7a,0xb3,0x2, 0x79,0x22,0x75,0xa8,0x0, 0x75,0xdf,0x0, 0x12,0x4, 0x56,0x12,
+0x6, 0x65,0x12,0x10,0x21,0xd2,0x7, 0x12,0x10,0x32,0x12,0x6, 0xe3,0x12,0x7, 0x1d,
+0xd2,0xaf,0x22,0x7e,0xb3,0x2, 0x69,0xb4,0xc, 0xb, 0xc2,0x86,0x7e,0x34,0x0, 0x64,
+0x12,0x6, 0xfe,0xd2,0x86,0x22,0x7e,0xa3,0x2, 0x6a,0xbe,0xa0,0xb, 0x78,0x3a,0x7e,
+0x1f,0x2, 0x63,0xbe,0x18,0x0, 0x0, 0x68,0x12,0x7e,0x14,0xe0,0x0, 0x7e,0x4, 0x0, 
+0x1, 0xbf,0x10,0x38,0x6, 0xa2,0x3, 0xe4,0x33,0x78,0x3, 0x74,0x1, 0x22,0x7e,0x45,
+0x23,0x49,0xf4,0x0, 0x6, 0x49,0xe4,0x0, 0x4, 0x49,0x34,0x0, 0x2, 0xb, 0x48,0x20,
+0x2f,0x17,0xbf,0x10,0x40,0xb, 0x74,0x1, 0x22,0xbe,0xa0,0xa, 0x68,0x3, 0x74,0x1, 
+0x22,0xe4,0x22,0x6d,0x33,0x7a,0x37,0x2, 0x61,0x7e,0x34,0x0, 0x28,0x7a,0x35,0x25,
+0x31,0x16,0x7e,0x37,0x2, 0x61,0x1b,0x34,0x68,0x6d,0x1b,0x35,0x78,0x2, 0x41,0x4f,
+0x1b,0x34,0x78,0x2, 0x41,0x81,0x1b,0x34,0x78,0x2, 0x61,0x3f,0x1b,0x34,0x78,0x2, 
+0x61,0x70,0xb, 0x36,0x68,0x2, 0x81,0x27,0x6d,0x33,0x7a,0x37,0x2, 0x61,0x7a,0x37,
+0x2, 0x67,0x31,0x46,0x60,0x2, 0x81,0x27,0x7e,0x15,0x23,0x49,0x31,0x0, 0x6, 0x49,
+0x21,0x0, 0x4, 0x7a,0x1d,0xc, 0x49,0x31,0x0, 0x2, 0xb, 0x18,0x20,0x2e,0x14,0x0, 
+0xa, 0x6d,0x0, 0x12,0xf, 0x3c,0x7e,0x55,0x23,0x49,0x15,0x0, 0x6, 0x49,0x5, 0x0, 
+0x4, 0x49,0x35,0x0, 0x2, 0xb, 0x58,0x20,0x12,0x0, 0x9d,0x2e,0x34,0x10,0x0, 0x7a,
+0x37,0x2, 0x67,0x31,0x33,0x81,0x27,0x6d,0x33,0x7a,0x37,0x2, 0x61,0x7a,0x37,0x2, 
+0x67,0x7e,0x18,0x1, 0x0, 0x7a,0x1d,0x10,0x7e,0x15,0x23,0x49,0x31,0x0, 0x2, 0xb, 
+0x18,0x20,0x2e,0x14,0x0, 0xa, 0x6d,0x0, 0x12,0x14,0x93,0x30,0x0, 0x9, 0x7e,0x35,
+0x23,0x9, 0xb3,0x0, 0xa, 0xf5,0x91,0x31,0x33,0x7e,0x34,0xf0,0x88,0x80,0x2c,0x6d,
+0x33,0x7a,0x37,0x2, 0x61,0x7a,0x37,0x2, 0x67,0x7e,0x18,0x2, 0x79,0x7a,0x1d,0xc, 
+0x7e,0x55,0x23,0x49,0x35,0x0, 0x2, 0xb, 0x58,0x20,0x49,0x15,0x0, 0x6, 0x49,0x5, 
+0x0, 0x4, 0x12,0xe, 0xc0,0x31,0x33,0x7e,0x34,0xf0,0x55,0x7a,0x37,0x2, 0x67,0x81,
+0x27,0x75,0x22,0x0, 0x6d,0x33,0x7a,0x37,0x2, 0x61,0x7a,0x37,0x2, 0x67,0x7e,0xb3,
+0x2, 0x6a,0xb4,0xa, 0xe, 0x30,0x8, 0x6, 0xe4,0x12,0x13,0xe3,0x81,0x1d,0x12,0x12,
+0x2d,0x81,0x1d,0x7e,0xb3,0x2, 0x6a,0xb4,0xb, 0x67,0x7e,0x1f,0x2, 0x63,0xbe,0x18,
+0x0, 0x0, 0x78,0x2, 0x81,0x27,0x7e,0x14,0xe0,0x0, 0x7e,0x4, 0x0, 0x1, 0xbf,0x10,
+0x28,0x2, 0x81,0x27,0xa2,0x3, 0xe4,0x33,0x78,0x2, 0x81,0x27,0x7d,0x13,0x5e,0x14,
+0xf, 0xff,0x78,0x14,0x74,0xc, 0x7f,0x1, 0x1e,0x14,0x1e,0x4, 0x50,0x3, 0x4e,0x20,
+0x80,0x14,0x78,0xf4,0x7c,0xb3,0x80,0x12,0x74,0xc, 0x1e,0x34,0x1e,0x24,0x50,0x3, 
+0x4e,0x60,0x80,0x14,0x78,0xf4,0x7f,0x21,0xb, 0x2c,0xf5,0xb, 0x75,0xa, 0x0, 0x80,
+0x7, 0xe5,0xa, 0x12,0x11,0xe4,0x5, 0xa, 0xe5,0xb, 0xbe,0xb1,0xa, 0x38,0xf2,0x81,
+0x1d,0x20,0x8, 0x2, 0x81,0x1d,0x7e,0x73,0x2, 0x6a,0xa, 0x57,0x9e,0x54,0x0, 0x80,
+0xf5,0x8, 0x6d,0x66,0x80,0xd, 0xe4,0x7e,0xa1,0x8, 0xa, 0x3a,0x2d,0x36,0x12,0x13,
+0x48,0xb, 0x64,0x7e,0x73,0x2, 0x46,0xa, 0x37,0xbd,0x36,0x18,0xe9,0x81,0x1d,0x75,
+0x22,0x1, 0x6d,0x33,0x7a,0x37,0x2, 0x61,0x6d,0x22,0x7a,0x27,0x2, 0x67,0x30,0x8, 
+0x2, 0x81,0x1d,0x7d,0x63,0xbe,0x64,0x0, 0x1e,0x48,0x6, 0xbe,0x64,0x0, 0x1f,0x48,
+0x5, 0x7c,0xbd,0x12,0x11,0xe4,0xb, 0x64,0xbe,0x64,0x0, 0x20,0x78,0xe7,0x81,0x1d,
+0x6d,0x33,0x7a,0x37,0x2, 0x61,0x7a,0x37,0x2, 0x67,0x30,0x8, 0x2, 0x81,0x1d,0x7e,
+0x15,0x23,0x49,0x31,0x0, 0x2, 0xb, 0x18,0x20,0x7d,0x3, 0x5e,0x4, 0xf, 0xff,0x68,
+0x2, 0x81,0x27,0x49,0x31,0x0, 0x6, 0x49,0x21,0x0, 0x4, 0x4d,0x23,0x78,0x2, 0x81,
+0x27,0x49,0x31,0x0, 0x2, 0xb, 0x18,0x20,0x74,0xc, 0x1e,0x34,0x1e,0x24,0x50,0x3, 
+0x4e,0x60,0x80,0x14,0x78,0xf4,0x7c,0xb7,0xf5,0x8, 0x49,0x31,0x0, 0x6, 0x49,0x21,
+0x0, 0x4, 0x7d,0x3, 0x5e,0x4, 0xf, 0xff,0x78,0x1a,0x49,0x31,0x0, 0x6, 0x49,0x21,
+0x0, 0x4, 0x74,0xc, 0x1e,0x34,0x1e,0x24,0x50,0x3, 0x4e,0x60,0x80,0x14,0x78,0xf4,
+0x7c,0xe7,0x80,0x1a,0x49,0x31,0x0, 0x6, 0x49,0x21,0x0, 0x4, 0x74,0xc, 0x1e,0x34,
+0x1e,0x24,0x50,0x3, 0x4e,0x60,0x80,0x14,0x78,0xf4,0x7c,0xe7,0xb, 0xe0,0xa, 0x2e,
+0xe5,0x8, 0xa, 0x3b,0x2d,0x32,0xbe,0x34,0x0, 0x1f,0x18,0x1b,0x6c,0xff,0x80,0x9, 
+0xe5,0x8, 0x2c,0xbf,0x12,0x11,0xe4,0xb, 0xf0,0xbc,0xef,0x38,0xf3,0x7e,0x34,0xf0,
+0xaa,0x7a,0x37,0x2, 0x67,0x31,0x33,0x20,0x6, 0x2, 0x21,0xa2,0x7e,0x34,0x13,0x88,
+0x12,0x6, 0xfe,0x7e,0x34,0x13,0x88,0x12,0x6, 0xfe,0x75,0xe9,0xff,0x21,0xa2,0xff,
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/Kconfig b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/Kconfig
new file mode 100755
index 00000000..f01242be
--- /dev/null
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/Kconfig
@@ -0,0 +1,5 @@
+config TOUCHPANEL_FOCAL_FT3419U
+	tristate "TP focal ft3419u IC enable or not for OPLUS"
+	help
+	Say Y to enable driver for Touchpanel using Focal FT3518
+	Say M to enable driver for Touchpanel using Focal FT3518 as module
\ No newline at end of file
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/Makefile b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/Makefile
new file mode 100755
index 00000000..49dc53a6
--- /dev/null
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/Makefile
@@ -0,0 +1,10 @@
+#
+# Makefile for the touchscreen drivers.
+#
+
+# Each configuration option enables a list of files.
+
+
+oplus_bsp_tp_ft3419u-y += ft3419u_driver.o
+oplus_bsp_tp_ft3419u-y += ft3419u_test.o
+obj-$(CONFIG_TOUCHPANEL_FOCAL_FT3419U) += oplus_bsp_tp_ft3419u.o
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/ft3419u_core.h b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/ft3419u_core.h
new file mode 100755
index 00000000..2fbc58e9
--- /dev/null
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/ft3419u_core.h
@@ -0,0 +1,327 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2018-2020 Oplus. All rights reserved.
+ */
+
+#ifndef __FT3419U_CORE_H__
+#define __FT3419U_CORE_H__
+
+/*********PART1:Head files**********************/
+#include 
+#include 
+#include "../focal_common.h"
+
+/*********PART2:Define Area**********************/
+
+#define RESET_TO_NORMAL_TIME                    200        /*Sleep time after reset*/
+#define POWEWRUP_TO_RESET_TIME                  10
+
+#define INTERVAL_READ_REG                       200  /* unit:ms */
+#define TIMEOUT_READ_REG                        1000 /* unit:ms */
+
+#define FTS_VAL_CHIP_ID                         0x54
+#define FTS_VAL_CHIP_ID2                        0x52
+#define FTS_VAL_RB_ID                           0x54
+#define FTS_VAL_RB_ID2                          0x52
+#define FTS_VAL_BT_ID                           0x54
+#define FTS_VAL_BT_ID2                          0x5E
+#define FTS_VAL_PB_ID                           0x54
+#define FTS_VAL_PB_ID2                          0x5B
+
+
+
+#define FTS_REG_SMOOTH_LEVEL                    0x85
+#define FTS_REG_GAME_MODE_EN                    0x86
+#define FTS_REG_REPORT_RATE                     0x88/*0x12:180hz, 0x0C:120hz*/
+#define FTS_REG_HIGH_FRAME_TIME                 0x8A
+#define FTS_REG_CHARGER_MODE_EN                 0x8B
+#define FTS_REG_EDGE_LIMIT                      0x8C
+#define FTS_REG_STABLE_DISTANCE_AFTER_N         0xB9
+#define FTS_REG_STABLE_DISTANCE                 0xBA
+#define FTS_REG_HEADSET_MODE_EN                 0xC4
+#define FTS_REG_DIAPHRAGM_TOUCH_MODE_EN         0xC5
+#define FTS_REG_PALM_TO_SLEEP_STATUS            0x9B
+#define FTS_REG_FOD_EN                          0xCF
+#define FTS_REG_FOD_INFO                        0xE1
+#define FTS_REG_FOD_INFO_LEN                    9
+
+#define FTS_REG_INT_CNT                         0x8F
+#define FTS_REG_FLOW_WORK_CNT                   0x91
+#define FTS_REG_CHIP_ID                         0xA3
+#define FTS_REG_CHIP_ID                         0xA3
+#define FTS_REG_CHIP_ID2                        0x9F
+#define FTS_REG_POWER_MODE                      0xA5
+#define FTS_REG_FW_VER                          0xA6
+#define FTS_REG_VENDOR_ID                       0xA8
+#define FTS_REG_GESTURE_EN                      0xD0
+#define FTS_REG_GESTURE_CONFIG1                 0xD1
+#define FTS_REG_GESTURE_CONFIG2                 0xD2
+#define FTS_REG_GESTURE_CONFIG3                 0xD5
+#define FTS_REG_GESTURE_CONFIG4                 0xD6
+#define FTS_REG_GESTURE_CONFIG5                 0xD7
+#define FTS_REG_GESTURE_CONFIG6                 0xD8
+#define FTS_REG_GESTURE_OUTPUT_ADDRESS          0xD3
+#define FTS_REG_MODULE_ID                       0xE3
+#define FTS_REG_LIC_VER                         0xE4
+#define FTS_REG_AUTOCLB_ADDR                    0xEE
+#define FTS_REG_SAMSUNG_SPECIFAL                0xFA
+#define FTS_REG_HEALTH_1                        0xFD
+#define FTS_REG_HEALTH_2                        0xFE
+
+
+#define FTS_MAX_POINTS_SUPPORT                  10
+#define FTS_MAX_ID                              0x0A
+#define FTS_POINTS_ONE                          15  /*2 + 6*3 + 1*/
+#define FTS_POINTS_TWO                          47  /*8*10 - 1*/
+#define FTS_MAX_POINTS_LENGTH          ((FTS_POINTS_ONE) + (FTS_POINTS_TWO))
+#define FTS_REG_POINTS                          0x01
+#define FTS_REG_POINTS_N                        (FTS_POINTS_ONE + 1)
+#define FTS_REG_POINTS_LB                       0x3E
+#define FTS_REG_GRIP                            0x3F
+
+#define FTS_GRIP_ONE                            8   /* The first two grip_info: 4*2 */
+#define FTS_GRIP_TWO                            32  /* The last eight grip_info: 4*8 */
+#define FTS_GRIP_LENGTH                ((FTS_GRIP_ONE) + (FTS_GRIP_TWO))
+#define FTS_REG_GRIP_N                          0x47
+
+#define FTS_MAX_POINTS_GRIP_LENGTH          ((FTS_MAX_POINTS_LENGTH) + (FTS_GRIP_LENGTH))
+
+#define FTS_MAX_TOUCH_BUF                       4096
+
+#define FTS_GESTURE_DATA_LEN                    28
+
+
+#define BYTES_PER_TIME                          (128)  /* max:128 */
+
+/*
+ * factory test registers
+ */
+#define ENTER_WORK_FACTORY_RETRIES              5
+#define DEVIDE_MODE_ADDR                        0x00
+#define FTS_FACTORY_MODE_VALUE                  0x40
+#define FTS_WORK_MODE_VALUE                     0x00
+#define FACTORY_TEST_RETRY                      50
+#define FACTORY_TEST_DELAY                      18
+#define FACTORY_TEST_RETRY_DELAY                100
+
+/* mc_sc */
+#define FACTORY_REG_LINE_ADDR                   0x01
+#define FACTORY_REG_CHX_NUM                     0x02
+#define FACTORY_REG_CHY_NUM                     0x03
+#define FACTORY_REG_CLB                         0x04
+#define FACTORY_REG_DATA_SELECT                 0x06
+#define FACTORY_REG_FRE_LIST                    0x0A
+#define FACTORY_REG_DATA_TYPE                   0x5B
+#define FACTORY_REG_TOUCH_THR                   0x0D
+#define FACTORY_REG_NORMALIZE                   0x16
+#define FACTORY_REG_MAX_DIFF                    0x1B
+#define FACTORY_REG_FRAME_NUM                   0x1C
+#define FACTORY_REG_GCB                         0xBD
+
+#define FACTORY_REG_RAWDATA_ADDR_MC_SC          0x36
+#define FACTORY_REG_FIR                         0xFB
+#define FACTORY_REG_WC_SEL                      0x09
+#define FACTORY_REG_MC_SC_MODE                  0x44
+#define FACTORY_REG_HC_SEL                      0x0F
+#define FACTORY_REG_MC_SC_CB_H_ADDR_OFF         0x49
+#define FACTORY_REG_MC_SC_CB_ADDR_OFF           0x45
+#define FACTORY_REG_MC_SC_CB_ADDR               0x4E
+#define FACTROY_REG_SHORT_TEST_EN               0x07
+#define FACTROY_REG_SHORT_CA                    0x01
+#define FACTROY_REG_SHORT_CC                    0x02
+#define FACTROY_REG_SHORT_CG                    0x03
+#define FACTROY_REG_SHORT_OFFSET                0x04
+#define FACTROY_REG_SHORT_AB_CH                 0x58
+#define FACTROY_REG_SHORT_DELAY                 0x5A
+#define FACTORY_REG_SHORT_ADDR_MC               0xF4
+
+#define FACTROY_REG_SCAP_CFG                    0x58
+#define FACTROY_REG_SCAP_GCB_TX                 0xBC
+#define FACTROY_REG_SCAP_GCB_RX                 0xBE
+#define FACTROY_REG_CB_BUF_SEL                  0xBF
+
+#define FACTROY_REG_SHORT2_TEST_EN              0xC0
+#define FACTROY_REG_SHORT2_CA                   0x01
+#define FACTROY_REG_SHORT2_CC                   0x02
+#define FACTROY_REG_SHORT2_CG                   0x03
+#define FACTROY_REG_SHORT2_OFFSET               0x04
+#define FACTROY_REG_SHORT2_RES_LEVEL            0xC1
+#define FACTROY_REG_SHORT2_DEALY                0xC2
+#define FACTROY_REG_SHORT2_TEST_STATE           0xC3
+#define FACTORY_REG_SHORT2_ADDR_MC              0xC4
+#define FACTROY_REG_SHORT2_AB_CH                0xC6
+
+#define SC_NUM_MAX                              256
+
+
+#define FACTORY_REG_PARAM_UPDATE_STATE_TOUCH    0xB5
+
+#define FTS_MAX_COMMMAND_LENGTH                 16
+
+#define TEST_RETVAL_00                          0x00
+#define TEST_RETVAL_AA                          0xAA
+
+#define FTS_EVENT_FOD                           0x26
+
+#define MAX_PACKET_SIZE                         128
+
+#define FTS_WRITE_RATE_120                      120
+#define FTS_WRITE_RATE_180                      180
+#define FTS_WRITE_RATE_240                      240
+#define FTS_WRITE_RATE_360                      360
+#define FTS_WRITE_RATE_720                      720
+
+#define FTS_120HZ_REPORT_RATE                   0x0C
+#define FTS_180HZ_REPORT_RATE                   0x12
+#define FTS_240HZ_REPORT_RATE                   0x18
+#define FTS_360HZ_REPORT_RATE                   0x24
+#define FTS_720HZ_REPORT_RATE                   0x24
+
+#define FTS_DIAPHRAGM_MODE_0                    0
+#define FTS_DIAPHRAGM_MODE_1                    1
+#define FTS_DIAPHRAGM_MODE_2                    2
+#define FTS_DIAPHRAGM_MODE_3                    3
+
+struct fts_autotest_offset {
+	int32_t *fts_raw_data_P;
+	int32_t *fts_raw_data_N;
+	int32_t *fts_panel_differ_data_P;
+	int32_t *fts_panel_differ_data_N;
+	int32_t *fts_noise_data_P;
+	int32_t *fts_noise_data_N;
+	int32_t *fts_uniformity_data_P;
+	int32_t *fts_uniformity_data_N;
+	int32_t *fts_scap_cb_data_P;
+	int32_t *fts_scap_cb_data_N;
+	int32_t *fts_scap_cb_data_waterproof_P;
+	int32_t *fts_scap_cb_data_waterproof_N;
+	int32_t *fts_scap_raw_data_P;
+	int32_t *fts_scap_raw_data_N;
+	int32_t *fts_scap_raw_waterproof_data_P;
+	int32_t *fts_scap_raw_waterproof_data_N;
+};
+
+enum FW_STATUS {
+	FTS_RUN_IN_ERROR,
+	FTS_RUN_IN_APP,
+	FTS_RUN_IN_ROM,
+	FTS_RUN_IN_PRAM,
+	FTS_RUN_IN_BOOTLOADER,
+};
+
+enum DIAPHRAGM_MODE{
+	DIAPHRAGM_DEFAULT_MODE = 0,
+	DIAPHRAGM_FILM_MODE = 1,
+	DIAPHRAGM_WATERPROOF_MODE = 2,
+	DIAPHRAGM_FILM_WATERPROOF_MODE = 3,
+};
+
+struct fts_fod_info {
+	u8 fp_id;
+	u8 event_type;
+	u8 fp_area_rate;
+	u8 tp_area;
+	u16 fp_x;
+	u16 fp_y;
+	u8 fp_down;
+	u8 fp_down_report;
+};
+
+struct ftxxxx_proc {
+	struct proc_dir_entry *proc_entry;
+	u8 opmode;
+	u8 cmd_len;
+	u8 cmd[FTS_MAX_COMMMAND_LENGTH];
+};
+
+struct chip_data_ft3419u {
+	bool esd_check_need_stop;   /*true:esd check do nothing*/
+	bool esd_check_enabled;
+	bool use_panelfactory_limit;
+	bool prc_mode;
+	u8 rbuf[FTS_MAX_POINTS_GRIP_LENGTH];
+	u8 irq_type;
+	u8 fwver;
+	u8 touch_direction;
+	u8 fp_en;
+	u8 fp_down;
+
+	int rl_cnt;
+	int scb_cnt;
+	int srawdata_cnt;
+	int last_mode;
+	int csv_fd;
+	int irq_num;
+	int probe_done;
+	int *rawdata;
+	int *panel_differ;
+	int *scap_cb;
+	int *scap_rawdata;
+	int *rawdata_linearity;
+	int tp_index;
+	int *node_valid;
+	int *node_valid_sc;
+	int *noise_rawdata;
+	u8 fre_num;
+
+	char *test_limit_name;
+	char *fw_name;
+	tp_dev tp_type;             /*tp_devices.h*/
+
+	struct i2c_client *client;
+	struct device *dev;
+	struct hw_resource *hw_res;
+	struct ftxxxx_proc proc;
+	struct fts_fod_info fod_info;
+	struct seq_file *s;
+	struct fts_autotest_offset *fts_autotest_offset;
+	struct touchpanel_data *ts;
+	struct monitor_data *monitor_data;
+	struct delayed_work prc_work;
+	struct workqueue_struct *ts_workqueue;
+	unsigned long intr_jiffies;
+	bool high_resolution_support;
+	bool high_resolution_support_x8;
+	bool ft3419u_grip_v2_support;
+	int gesture_state;
+	bool water_mode;
+};
+
+
+extern struct chip_data_ft3419u *g_fts_data;
+
+int fts_test_entry(struct chip_data_ft3419u *ts_data,
+                   struct auto_testdata *focal_testdata);
+int ft3419u_auto_preoperation(struct seq_file *s, void *chip_data,
+                             struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info);
+int ft3419u_noise_autotest(struct seq_file *s, void *chip_data,
+                         struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info);
+int ft3419u_rawdata_autotest(struct seq_file *s, void *chip_data,
+                            struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info);
+int ft3419u_uniformity_autotest(struct seq_file *s, void *chip_data,
+                               struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info);
+int ft3419u_scap_cb_autotest(struct seq_file *s, void *chip_data,
+                            struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info);
+int ft3419u_scap_rawdata_autotest(struct seq_file *s, void *chip_data,
+                                 struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info);
+int ft3419u_short_test(struct seq_file *s, void *chip_data,
+                      struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info);
+int ft3419u_panel_differ_test(struct seq_file *s, void *chip_data,
+                             struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info);
+int ft3419u_auto_endoperation(struct seq_file *s, void *chip_data,
+                             struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info);
+
+/*
+int fts_write(u8 *writebuf, u32 writelen);
+int fts_write_reg(u8 addr, u8 value);
+int fts_read(u8 *cmd, u32 cmdlen, u8 *data, u32 datalen);
+int fts_read_reg(u8 addr, u8 *value);
+
+int fts_spi_write_direct(u8 *writebuf, u32 writelen);
+int fts_spi_read_direct(u8 *writebuf, u32 writelen, u8 *readbuf, u32 readlen);
+int fts_set_spi_max_speed(unsigned int speed, char mode);
+*/
+int fts_reset_proc(int hdelayms);
+
+
+#endif /*__FT3419U_CORE_H__*/
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/ft3419u_driver.c b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/ft3419u_driver.c
new file mode 100755
index 00000000..6cbc0ced
--- /dev/null
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/ft3419u_driver.c
@@ -0,0 +1,2991 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2018-2020 Oplus. All rights reserved.
+ */
+
+#include 
+#include 
+#include 
+#include 
+
+#include "ft3419u_core.h"
+
+struct chip_data_ft3419u *g_fts_data = NULL;
+
+/*******Part0:LOG TAG Declear********************/
+
+#ifdef TPD_DEVICE
+#undef TPD_DEVICE
+#define TPD_DEVICE "focaltech,ft3419u"
+#else
+#define TPD_DEVICE "focaltech,ft3419u"
+#endif
+#define TPD_INFO(a, arg...)  pr_err("[TP]"TPD_DEVICE ": " a, ##arg)
+/*
+#define TPD_DEBUG(a, arg...)\
+	do {\
+		if (LEVEL_DEBUG == tp_debug)\
+			pr_err("[TP]"TPD_DEVICE ": " a, ##arg);\
+	}while(0)
+*/
+
+
+#define FTS_REG_UPGRADE                             0xFC
+#define FTS_UPGRADE_AA                              0xAA
+#define FTS_UPGRADE_55                              0x55
+#define FTS_DELAY_UPGRADE_AA                        10
+#define FTS_DELAY_UPGRADE_RESET                     80
+#define FTS_UPGRADE_LOOP                            10
+
+#define FTS_ROMBOOT_CMD_SET_PRAM_ADDR               0xAD
+#define FTS_ROMBOOT_CMD_SET_PRAM_ADDR_LEN           4
+#define FTS_ROMBOOT_CMD_WRITE                       0xAE
+#define FTS_ROMBOOT_CMD_START_APP                   0x08
+#define FTS_DELAY_PRAMBOOT_START                    100
+#define FTS_ROMBOOT_CMD_ECC                         0xCC
+#define FTS_ROMBOOT_CMD_ECC_NEW_LEN                 8
+#define FTS_ECC_FINISH_TIMEOUT                      100
+#define FTS_ROMBOOT_CMD_ECC_FINISH                  0xCE
+#define FTS_ROMBOOT_CMD_ECC_READ                    0xCD
+#define FTS_PRAM_SADDR                              0x000000
+#define FTS_DRAM_SADDR                              0xD00000
+#define FTS_DELAY_READ_ID                           20
+
+#define FTS_CMD_RESET                               0x07
+#define FTS_CMD_START1                              0x55
+#define FTS_CMD_START2                              0xAA
+#define FTS_CMD_START_DELAY                         12
+#define FTS_CMD_READ_ID                             0x90
+#define FTS_CMD_DATA_LEN                            0xB0
+#define FTS_CMD_ERASE_APP                           0x61
+#define FTS_RETRIES_REASE                           50
+#define FTS_RETRIES_DELAY_REASE                     400
+#define FTS_REASE_APP_DELAY                         1350
+#define FTS_CMD_ECC_INIT                            0x64
+#define FTS_CMD_ECC_CAL                             0x65
+#define FTS_RETRIES_ECC_CAL                         10
+#define FTS_RETRIES_DELAY_ECC_CAL                   50
+#define FTS_CMD_ECC_READ                            0x66
+#define FTS_CMD_FLASH_STATUS                        0x6A
+#define FTS_CMD_WRITE                               0xBF
+#define FTS_RETRIES_WRITE                           100
+#define FTS_RETRIES_DELAY_WRITE                     1
+
+#define FTS_CMD_GAME_AIUINIT_EN                     0xC9
+#define FTS_CMD_GAME_AIUINIT                        0xCA
+
+#define FTS_CMD_FLASH_STATUS_NOP                    0x0000
+#define FTS_CMD_FLASH_STATUS_ECC_OK                 0xF055
+#define FTS_CMD_FLASH_STATUS_ERASE_OK               0xF0AA
+#define FTS_CMD_FLASH_STATUS_WRITE_OK               0x1000
+
+#define POINT_REPORT_CHECK_WAIT_TIME                200    /* unit:ms */
+#define PRC_INTR_INTERVALS                          100    /* unit:ms */
+
+#define PRAMBOOT_MIN_SIZE                           0x120
+#define PRAMBOOT_MAX_SIZE                           (64*1024)
+
+
+#define AL2_FCS_COEF                ((1 << 15) + (1 << 10) + (1 << 3))
+
+enum GESTURE_ID {
+	GESTURE_RIGHT2LEFT_SWIP = 0x20,
+	GESTURE_LEFT2RIGHT_SWIP = 0x21,
+	GESTURE_DOWN2UP_SWIP = 0x22,
+	GESTURE_UP2DOWN_SWIP = 0x23,
+	GESTURE_DOUBLE_TAP = 0x24,
+	GESTURE_DOUBLE_SWIP = 0x25,
+	GESTURE_RIGHT_VEE = 0x51,
+	GESTURE_LEFT_VEE = 0x52,
+	GESTURE_DOWN_VEE = 0x53,
+	GESTURE_UP_VEE = 0x54,
+	GESTURE_O_CLOCKWISE = 0x57,
+	GESTURE_O_ANTICLOCK = 0x30,
+	GESTURE_W = 0x31,
+	GESTURE_M = 0x32,
+	GESTURE_FINGER_PRINT = 0x26,
+	GESTURE_SINGLE_TAP = 0x27,
+	GESTURE_HEART_ANTICLOCK = 0x55,
+	GESTURE_HEART_CLOCKWISE = 0x59,
+};
+
+static void focal_esd_check_enable(void *chip_data, bool enable);
+static int fts_hw_reset(struct chip_data_ft3419u *ts_data, u32 delayms);
+
+
+/*********************************************************
+ *              proc/ftxxxx-debug                        *
+ *********************************************************/
+#define PROC_READ_REGISTER                      1
+#define PROC_WRITE_REGISTER                     2
+#define PROC_WRITE_DATA                         6
+#define PROC_READ_DATA                          7
+#define PROC_SET_TEST_FLAG                      8
+#define PROC_HW_RESET                           11
+#define PROC_NAME                               "ftxxxx-debug"
+#define PROC_BUF_SIZE                           256
+
+static ssize_t fts_debug_write(struct file *filp, const char __user *buff, size_t count, loff_t *ppos)
+{
+	u8 *writebuf = NULL;
+	u8 tmpbuf[PROC_BUF_SIZE] = { 0 };
+	int buflen = count;
+	int writelen = 0;
+	int ret = 0;
+	char tmp[PROC_BUF_SIZE];
+	struct chip_data_ft3419u *ts_data = PDE_DATA(file_inode(filp));
+	struct ftxxxx_proc *proc;
+
+	if (!ts_data) {
+		TPD_INFO("ts_data is null");
+		return 0;
+	}
+	proc = &ts_data->proc;
+
+	if (buflen <= 1) {
+		TPD_INFO("apk proc wirte count(%d) fail", buflen);
+		return -EINVAL;
+	}
+
+	if (buflen > PROC_BUF_SIZE) {
+		writebuf = (u8 *)kzalloc(buflen * sizeof(u8), GFP_KERNEL);
+		if (NULL == writebuf) {
+			TPD_INFO("apk proc wirte buf zalloc fail");
+			return -ENOMEM;
+		}
+	} else {
+		writebuf = tmpbuf;
+	}
+
+	if (copy_from_user(writebuf, buff, buflen)) {
+		TPD_INFO("[APK]: copy from user error!!");
+		ret = -EFAULT;
+		goto proc_write_err;
+	}
+
+	proc->opmode = writebuf[0];
+	switch (proc->opmode) {
+	case PROC_SET_TEST_FLAG:
+		TPD_INFO("[APK]: PROC_SET_TEST_FLAG = %x", writebuf[1]);
+		if (writebuf[1] == 0) {
+			focal_esd_check_enable(ts_data, true);
+		} else {
+			focal_esd_check_enable(ts_data, false);
+		}
+		break;
+
+	case PROC_READ_REGISTER:
+		proc->cmd[0] = writebuf[1];
+		break;
+
+	case PROC_WRITE_REGISTER:
+		ret = touch_i2c_write_byte(ts_data->client, writebuf[1], writebuf[2]);
+		if (ret < 0) {
+			TPD_INFO("PROC_WRITE_REGISTER write error");
+			goto proc_write_err;
+		}
+		break;
+
+	case PROC_READ_DATA:
+		writelen = buflen - 1;
+		ret = touch_i2c_write(ts_data->client, writebuf + 1, writelen);
+		if (ret < 0) {
+			TPD_INFO("PROC_READ_DATA write error");
+			goto proc_write_err;
+		}
+		break;
+
+	case PROC_WRITE_DATA:
+		writelen = buflen - 1;
+		ret = touch_i2c_write(ts_data->client, writebuf + 1, writelen);
+		if (ret < 0) {
+			TPD_INFO("PROC_WRITE_DATA write error");
+			goto proc_write_err;
+		}
+		break;
+
+	case PROC_HW_RESET:
+		if (buflen < PROC_BUF_SIZE) {
+			snprintf(tmp, PROC_BUF_SIZE, "%s", writebuf + 1);
+			tmp[buflen - 1] = '\0';
+			if (strncmp(tmp, "focal_driver", 12) == 0) {
+				TPD_INFO("APK execute HW Reset");
+				fts_hw_reset(ts_data, 0);
+			}
+		}
+		break;
+
+	default:
+		break;
+	}
+
+	ret = buflen;
+proc_write_err:
+	if ((buflen > PROC_BUF_SIZE) && writebuf) {
+		kfree(writebuf);
+		writebuf = NULL;
+	}
+
+	return ret;
+}
+
+static ssize_t fts_debug_read(struct file *filp, char __user *buff, size_t count, loff_t *ppos)
+{
+	int ret = 0;
+	int num_read_chars = 0;
+	int buflen = count;
+	u8 *readbuf = NULL;
+	u8 tmpbuf[PROC_BUF_SIZE] = { 0 };
+	struct chip_data_ft3419u *ts_data = PDE_DATA(file_inode(filp));
+	struct ftxxxx_proc *proc;
+
+	if (!ts_data) {
+		TPD_INFO("ts_data is null");
+		return 0;
+	}
+	proc = &ts_data->proc;
+
+	if (buflen <= 0) {
+		TPD_INFO("apk proc read count(%d) fail", buflen);
+		return -EINVAL;
+	}
+
+	if (buflen > PROC_BUF_SIZE) {
+		readbuf = (u8 *)kzalloc(buflen * sizeof(u8), GFP_KERNEL);
+		if (NULL == readbuf) {
+			TPD_INFO("apk proc wirte buf zalloc fail");
+			return -ENOMEM;
+		}
+	} else {
+		readbuf = tmpbuf;
+	}
+
+	switch (proc->opmode) {
+	case PROC_READ_REGISTER:
+		num_read_chars = 1;
+		ret = touch_i2c_read(ts_data->client, &proc->cmd[0], 1, &readbuf[0], num_read_chars);
+		if (ret < 0) {
+			TPD_INFO("PROC_READ_REGISTER read error");
+			goto proc_read_err;
+		}
+		break;
+	case PROC_WRITE_REGISTER:
+		break;
+
+	case PROC_READ_DATA:
+		num_read_chars = buflen;
+		ret = touch_i2c_read(ts_data->client, NULL, 0, readbuf, num_read_chars);
+		if (ret < 0) {
+			TPD_INFO("PROC_READ_DATA read error");
+			goto proc_read_err;
+		}
+		break;
+
+	case PROC_WRITE_DATA:
+		break;
+
+	default:
+		break;
+	}
+
+	ret = num_read_chars;
+proc_read_err:
+	if (copy_to_user(buff, readbuf, num_read_chars)) {
+		TPD_INFO("copy to user error");
+		ret = -EFAULT;
+	}
+
+	if ((buflen > PROC_BUF_SIZE) && readbuf) {
+		kfree(readbuf);
+		readbuf = NULL;
+	}
+
+	return ret;
+}
+/*
+static const struct file_operations fts_proc_fops = {
+	.owner  = THIS_MODULE,
+	.read   = fts_debug_read,
+	.write  = fts_debug_write,
+};
+*/
+DECLARE_PROC_OPS(fts_proc_fops, simple_open, fts_debug_read, fts_debug_write, NULL);
+
+static int fts_create_apk_debug_channel(struct chip_data_ft3419u *ts_data)
+{
+	struct ftxxxx_proc *proc = &ts_data->proc;
+
+	proc->proc_entry = proc_create_data(PROC_NAME, 0777, NULL, &fts_proc_fops, ts_data);
+	if (NULL == proc->proc_entry) {
+		TPD_INFO("create proc entry fail");
+		return -ENOMEM;
+	}
+	TPD_INFO("Create proc entry success!");
+	return 0;
+}
+
+static void fts_release_apk_debug_channel(struct chip_data_ft3419u *ts_data)
+{
+	struct ftxxxx_proc *proc = &ts_data->proc;
+
+	if (proc->proc_entry) {
+		proc_remove(proc->proc_entry);
+	}
+}
+
+
+/*******Part1:Call Back Function implement*******/
+
+static int fts_rstgpio_set(struct hw_resource *hw_res, bool on)
+{
+	if (gpio_is_valid(hw_res->reset_gpio)) {
+		TPD_INFO("Set the reset_gpio \n");
+		gpio_direction_output(hw_res->reset_gpio, on);
+
+	} else {
+		TPD_INFO("reset is invalid!!\n");
+	}
+
+	return 0;
+}
+
+/*
+ * return success: 0; fail : negative
+ */
+static int fts_hw_reset(struct chip_data_ft3419u *ts_data, u32 delayms)
+{
+	TPD_INFO("%s.\n", __func__);
+	fts_rstgpio_set(ts_data->hw_res, false); /* reset gpio*/
+	msleep(5);
+	fts_rstgpio_set(ts_data->hw_res, true); /* reset gpio*/
+
+	if (delayms) {
+		msleep(delayms);
+	}
+
+	return 0;
+}
+static int fts_power_control(void *chip_data, bool enable)
+{
+	int ret = 0;
+
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	if (true == enable) {
+		fts_rstgpio_set(ts_data->hw_res, false);
+		msleep(1);
+		ret = tp_powercontrol_avdd(ts_data->hw_res, true);
+
+		if (ret) {
+			return -1;
+		}
+		ret = tp_powercontrol_vddi(ts_data->hw_res, true);
+
+		if (ret) {
+			return -1;
+		}
+		msleep(POWEWRUP_TO_RESET_TIME);
+		fts_rstgpio_set(ts_data->hw_res, true);
+		msleep(RESET_TO_NORMAL_TIME);
+
+	} else {
+		fts_rstgpio_set(ts_data->hw_res, false);
+		msleep(1);
+		ret = tp_powercontrol_avdd(ts_data->hw_res, false);
+
+		if (ret) {
+			return -1;
+		}
+		ret = tp_powercontrol_vddi(ts_data->hw_res, false);
+
+		if (ret) {
+			return -1;
+		}
+	}
+
+	return ret;
+}
+
+static int focal_dump_reg_state(void *chip_data, char *buf)
+{
+	int count = 0;
+	u8 regvalue = 0;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	/*power mode 0:active 1:monitor 3:sleep*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_POWER_MODE);
+	count += sprintf(buf + count, "Power Mode:0x%02x\n", regvalue);
+
+	/*FW version*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_FW_VER);
+	count += sprintf(buf + count, "FW Ver:0x%02x\n", regvalue);
+
+	/*Vendor ID*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_VENDOR_ID);
+	count += sprintf(buf + count, "Vendor ID:0x%02x\n", regvalue);
+
+	/* 1 Gesture mode,0 Normal mode*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_GESTURE_EN);
+	count += sprintf(buf + count, "Gesture Mode:0x%02x\n", regvalue);
+
+	/* 3 charge in*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_CHARGER_MODE_EN);
+	count += sprintf(buf + count, "charge stat:0x%02x\n", regvalue);
+
+	/*Interrupt counter*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_INT_CNT);
+	count += sprintf(buf + count, "INT count:0x%02x\n", regvalue);
+
+	/*Flow work counter*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_FLOW_WORK_CNT);
+	count += sprintf(buf + count, "ESD count:0x%02x\n", regvalue);
+
+	return count;
+}
+
+static int focal_get_fw_version(void *chip_data)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	return touch_i2c_read_byte(ts_data->client, FTS_REG_FW_VER);
+}
+
+static void focal_esd_check_enable(void *chip_data, bool enable)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	ts_data->esd_check_enabled = enable;
+}
+
+static bool focal_get_esd_check_flag(void *chip_data)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	return ts_data->esd_check_need_stop;
+}
+
+static int fts_esd_handle(void *chip_data)
+{
+	int ret = -1;
+	int i = 0;
+	static int flow_work_cnt_last = 0;
+	static int err_cnt = 0;
+	static int i2c_err = 0;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	if (!ts_data->esd_check_enabled) {
+		goto NORMAL_END;
+	}
+
+	ret = touch_i2c_read_byte(ts_data->client, 0x00);
+
+	if ((ret & 0x70) == 0x40) { /*work in factory mode*/
+		goto NORMAL_END;
+	}
+
+	for (i = 0; i < 3; i++) {
+		ret = touch_i2c_read_byte(ts_data->client, FTS_REG_CHIP_ID);
+
+		if (ret != FTS_VAL_CHIP_ID) {
+			TPD_INFO("%s: read chip_id failed!(ret:%x)\n", __func__, ret);
+			msleep(10);
+			i2c_err++;
+
+		} else {
+			i2c_err = 0;
+			break;
+		}
+	}
+
+	ret = touch_i2c_read_byte(ts_data->client, FTS_REG_FLOW_WORK_CNT);
+
+	if (ret < 0) {
+		TPD_INFO("%s: read FTS_REG_FLOW_WORK_CNT failed!\n", __func__);
+		i2c_err++;
+	}
+
+	if (flow_work_cnt_last == ret) {
+		err_cnt++;
+
+	} else {
+		err_cnt = 0;
+	}
+
+	flow_work_cnt_last = ret;
+
+	if ((err_cnt >= 5) || (i2c_err >= 3)) {
+		TPD_INFO("esd check failed, start reset!\n");
+		disable_irq_nosync(ts_data->client->irq);
+		tp_touch_btnkey_release(ts_data->tp_index);
+		fts_hw_reset(ts_data, RESET_TO_NORMAL_TIME);
+		enable_irq(ts_data->client->irq);
+		flow_work_cnt_last = 0;
+		err_cnt = 0;
+		i2c_err = 0;
+	}
+
+NORMAL_END:
+	return 0;
+}
+
+
+static void fts_release_all_finger(struct touchpanel_data *ts)
+{
+#ifdef TYPE_B_PROTOCOL
+	int i = 0;
+
+	if (!ts->touch_count || !ts->irq_slot)
+		return;
+
+	mutex_lock(&ts->report_mutex);
+	for (i = 0; i < ts->max_num; i++) {
+		input_mt_slot(ts->input_dev, i);
+		input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 0);
+	}
+	input_report_key(ts->input_dev, BTN_TOUCH, 0);
+	input_report_key(ts->input_dev, BTN_TOOL_FINGER, 0);
+	input_sync(ts->input_dev);
+	mutex_unlock(&ts->report_mutex);
+	TPD_INFO("fts_release_all_finger");
+	ts->view_area_touched = 0; /*realse all touch point,must clear this flag*/
+	ts->touch_count = 0;
+	ts->irq_slot = 0;
+#endif
+}
+
+static void fts_prc_func(struct work_struct *work)
+{
+	struct chip_data_ft3419u *ts_data = container_of(work,
+	                                   struct chip_data_ft3419u, prc_work.work);
+	unsigned long cur_jiffies = jiffies;
+	unsigned long intr_timeout = msecs_to_jiffies(PRC_INTR_INTERVALS);
+
+	if (ts_data->ts->is_suspended)
+		return;
+
+	intr_timeout += ts_data->intr_jiffies;
+	if (time_after(cur_jiffies, intr_timeout)) {
+		if (!ts_data->ts->is_suspended)
+			fts_release_all_finger(ts_data->ts);
+		ts_data->prc_mode = 0;
+		/*FTS_DEBUG("interval:%lu", (cur_jiffies - ts_data->intr_jiffies) * 1000 / HZ);*/
+	} else {
+		queue_delayed_work(ts_data->ts_workqueue, &ts_data->prc_work,
+		                   msecs_to_jiffies(POINT_REPORT_CHECK_WAIT_TIME));
+		ts_data->prc_mode = 1;
+	}
+}
+
+static void fts_prc_queue_work(struct chip_data_ft3419u *ts_data)
+{
+	ts_data->intr_jiffies = jiffies;
+	if (!ts_data->prc_mode) {
+		queue_delayed_work(ts_data->ts_workqueue, &ts_data->prc_work,
+		                   msecs_to_jiffies(POINT_REPORT_CHECK_WAIT_TIME));
+		ts_data->prc_mode = 1;
+	}
+}
+
+
+
+static int fts_point_report_check_init(struct chip_data_ft3419u *ts_data)
+{
+	TPD_INFO("point check init");
+
+	if (ts_data->ts_workqueue) {
+		INIT_DELAYED_WORK(&ts_data->prc_work, fts_prc_func);
+	} else {
+		TPD_INFO("fts workqueue is NULL, can't run point report check function");
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
+static int fts_point_report_check_exit(struct chip_data_ft3419u *ts_data)
+{
+	TPD_INFO("point check exit");
+	cancel_delayed_work_sync(&ts_data->prc_work);
+	return 0;
+}
+
+
+static bool fts_fwupg_check_flash_status(struct chip_data_ft3419u *ts_data,
+        u16 flash_status, int retries, int retries_delay)
+{
+	int ret = 0;
+	int i = 0;
+	u8 cmd = 0;
+	u8 val[2] = { 0 };
+	u16 read_status = 0;
+
+	for (i = 0; i < retries; i++) {
+		cmd = FTS_CMD_FLASH_STATUS;
+		ret = touch_i2c_read_block(ts_data->client, cmd, 2, val);
+		read_status = (((u16)val[0]) << 8) + val[1];
+
+		if (flash_status == read_status) {
+			return true;
+		}
+
+		TPD_DEBUG("flash status fail,ok:%04x read:%04x, retries:%d", flash_status,
+		          read_status, i);
+		msleep(retries_delay);
+	}
+
+	TPD_INFO("flash status fail,ok:%04x read:%04x, retries:%d", flash_status,
+	         read_status, i);
+	return false;
+}
+
+/*upgrade function*/
+static u8 pb_file_ft3419u[] = {
+#include "./FT5452J_Pramboot_V4.1_20210427.h"
+};
+
+static int ft3419u_fwupg_get_boot_state(struct chip_data_ft3419u *ts_data, enum FW_STATUS *fw_sts)
+{
+	int ret = 0;
+	u8 cmd[4] = { 0 };
+	u8 val[3] = { 0 };
+
+	TPD_INFO("**********read boot id**********");
+	if (!fw_sts) {
+		TPD_INFO("fw_sts is null");
+		return -EINVAL;
+	}
+
+	ret = touch_i2c_write_byte(ts_data->client, FTS_CMD_START1, FTS_CMD_START2);
+	if (ret < 0) {
+		TPD_INFO("write 55 AA cmd fail");
+		return ret;
+	}
+
+	msleep(FTS_CMD_START_DELAY);
+	cmd[0] = FTS_CMD_READ_ID;
+	cmd[1] = cmd[2] = cmd[3] = 0x00;
+	ret = touch_i2c_read(ts_data->client, cmd, 4, val, 2);
+	if (ret < 0) {
+		TPD_INFO("write 90 cmd fail");
+		return ret;
+	}
+
+	TPD_INFO("read boot id:0x%02x%02x", val[0], val[1]);
+	if ((val[0] == FTS_VAL_RB_ID) && (val[1] == FTS_VAL_RB_ID2)) {
+		TPD_INFO("tp run in romboot");
+		*fw_sts = FTS_RUN_IN_ROM;
+	} else if ((val[0] == FTS_VAL_PB_ID) && (val[1] == FTS_VAL_PB_ID2)) {
+		TPD_INFO("tp run in pramboot");
+		*fw_sts = FTS_RUN_IN_PRAM;
+	}
+
+	return 0;
+}
+
+static bool ft3419u_fwupg_check_state(struct chip_data_ft3419u *ts_data, enum FW_STATUS rstate)
+{
+	int ret = 0;
+	int i = 0;
+	enum FW_STATUS cstate = FTS_RUN_IN_ERROR;
+
+	for (i = 0; i < FTS_UPGRADE_LOOP; i++) {
+		ret = ft3419u_fwupg_get_boot_state(ts_data, &cstate);
+		/* TPD_INFO("fw state=%d, retries=%d", cstate, i); */
+		if (cstate == rstate)
+			return true;
+		msleep(FTS_DELAY_READ_ID);
+	}
+
+	return false;
+}
+
+static int ft3419u_fwupg_reset_to_romboot(struct chip_data_ft3419u *ts_data)
+{
+	int ret = 0;
+	int i = 0;
+	u8 cmd = FTS_CMD_RESET;
+	enum FW_STATUS state = FTS_RUN_IN_ERROR;
+
+	ret = touch_i2c_write_block(ts_data->client, cmd, 0, NULL);
+	if (ret < 0) {
+		TPD_INFO("pram/rom/bootloader reset cmd write fail");
+		return ret;
+	}
+	mdelay(10);
+
+	for (i = 0; i < FTS_UPGRADE_LOOP; i++) {
+		ret = ft3419u_fwupg_get_boot_state(ts_data, &state);
+		if (FTS_RUN_IN_ROM == state)
+			break;
+		mdelay(5);
+	}
+	if (i >= FTS_UPGRADE_LOOP) {
+		TPD_INFO("reset to romboot fail");
+		return -EIO;
+	}
+
+	return 0;
+}
+
+static void ft3419u_crc16_calc_host(u8 *pbuf, u32 length, u16 *ecc)
+{
+	u32 i = 0;
+	u32 j = 0;
+	u16 tmp_ecc = 0;
+
+	for (i = 0; i < length; i += 2) {
+		tmp_ecc ^= ((pbuf[i] << 8) | (pbuf[i + 1]));
+		for (j = 0; j < 16; j ++) {
+			if (tmp_ecc & 0x01)
+				tmp_ecc = (u16)((tmp_ecc >> 1) ^ AL2_FCS_COEF);
+			else
+				tmp_ecc >>= 1;
+		}
+	}
+
+	*ecc = tmp_ecc;
+}
+
+static int ft3419u_pram_ecc_cal(struct chip_data_ft3419u *ts_data, u32 start_addr, u32 ecc_length, u16 *ecc)
+{
+	int ret = 0;
+	u8 val[2] = { 0 };
+	u8 tmp = 0;
+	int i = 0;
+	u8 cmd[FTS_ROMBOOT_CMD_ECC_NEW_LEN] = { 0 };
+
+	TPD_INFO("read out pramboot checksum");
+	cmd[0] = FTS_ROMBOOT_CMD_ECC;
+	cmd[1] = (start_addr >> 16) & 0xFF;
+	cmd[2] = (start_addr >> 8) & 0xFF;
+	cmd[3] = (start_addr) & 0xFF;
+	cmd[4] = (ecc_length >> 16) & 0xFF;
+	cmd[5] = (ecc_length >> 8) & 0xFF;
+	cmd[6] = (ecc_length) & 0xFF;
+	cmd[7] = 0xCC;
+	ret = touch_i2c_write(ts_data->client, cmd, FTS_ROMBOOT_CMD_ECC_NEW_LEN);
+	if (ret < 0) {
+		TPD_INFO("write pramboot ecc cal cmd fail");
+		return ret;
+	}
+
+	cmd[0] = FTS_ROMBOOT_CMD_ECC_FINISH;
+	for (i = 0; i < FTS_ECC_FINISH_TIMEOUT; i++) {
+        msleep(1);
+        ret = touch_i2c_read_byte(ts_data->client, cmd[0]);
+        if (ret < 0) {
+			TPD_INFO("ecc_finish read cmd fail");
+			return ret;
+        }
+        tmp = 0x33;
+        if (tmp == ret)
+			break;
+	}
+	if (i >= FTS_ECC_FINISH_TIMEOUT) {
+        TPD_INFO("wait ecc finish fail");
+        return -EIO;
+	}
+
+	msleep(10);
+	cmd[0] = FTS_ROMBOOT_CMD_ECC_READ;
+	ret = touch_i2c_read_block(ts_data->client, cmd[0], 2, val);
+	if (ret < 0) {
+		TPD_INFO("read pramboot ecc fail");
+		return ret;
+	}
+
+	*ecc = ((u16)(val[0] << 8) + val[1]);
+	return 0;
+}
+
+static int ft3419u_pram_write_buf(struct chip_data_ft3419u *ts_data, u8 *buf, u32 len)
+{
+	int ret = 0;
+	u32 i = 0;
+	u32 j = 0;
+	u32 offset = 0;
+	u32 remainder = 0;
+	u32 packet_number;
+	u32 packet_len = 0;
+	u8 packet_buf[BYTES_PER_TIME + 6] = { 0 };
+	u32 cmdlen = 0;
+
+	TPD_INFO("write pramboot to pram,pramboot len=%d", len);
+	if (!buf || (len < PRAMBOOT_MIN_SIZE) || (len > (PRAMBOOT_MAX_SIZE))) {
+		TPD_INFO("buf/pramboot length(%d) fail", len);
+		return -EINVAL;
+	}
+
+	packet_number = len / BYTES_PER_TIME;
+	remainder = len % BYTES_PER_TIME;
+	if (remainder > 0)
+		packet_number++;
+	packet_len = BYTES_PER_TIME;
+
+	for (i = 0; i < packet_number; i++) {
+		offset = i * BYTES_PER_TIME;
+		/* last packet */
+		if ((i == (packet_number - 1)) && remainder)
+			packet_len = remainder;
+
+		packet_buf[0] = FTS_ROMBOOT_CMD_SET_PRAM_ADDR;
+		packet_buf[1] = (offset >> 16) & 0xFF;
+		packet_buf[2] = (offset >> 8) & 0xFF;
+		packet_buf[3] = (offset) & 0xFF;
+
+		ret = touch_i2c_write(ts_data->client, packet_buf, FTS_ROMBOOT_CMD_SET_PRAM_ADDR_LEN);
+		if (ret < 0) {
+			TPD_INFO("pramboot set write address(%d) fail", i);
+			return ret;
+		}
+
+		packet_buf[0] = FTS_ROMBOOT_CMD_WRITE;
+		cmdlen = 1;
+
+		for (j = 0; j < packet_len; j++) {
+			packet_buf[cmdlen + j] = buf[offset + j];
+		}
+
+		ret = touch_i2c_write(ts_data->client, packet_buf, packet_len + cmdlen);
+		if (ret < 0) {
+			TPD_INFO("pramboot write data(%d) fail", i);
+			return ret;
+		}
+	}
+
+	return 0;
+}
+
+static int ft3419u_pram_start(struct chip_data_ft3419u *ts_data)
+{
+	u8 cmd = FTS_ROMBOOT_CMD_START_APP;
+	int ret = 0;
+
+	TPD_INFO("remap to start pramboot");
+
+	ret = touch_i2c_write_block(ts_data->client, cmd, 0, NULL);
+	if (ret < 0) {
+		TPD_INFO("write start pram cmd fail");
+		return ret;
+	}
+	msleep(FTS_DELAY_PRAMBOOT_START);
+
+	return 0;
+}
+
+static int fts_ft3419u_write_pramboot_private(struct chip_data_ft3419u *ts_data)
+{
+	int ret = 0;
+	bool state = 0;
+	enum FW_STATUS status = FTS_RUN_IN_ERROR;
+	u16 ecc_in_host = 0;
+	u16 ecc_in_tp = 0;
+	u8 *pb_buf = pb_file_ft3419u;
+	u32 pb_len = sizeof(pb_file_ft3419u);
+
+	TPD_INFO("**********pram write and init**********");
+	if (pb_len < 0x120) {
+		TPD_INFO("pramboot length(%d) fail", pb_len);
+		return -EINVAL;
+	}
+
+	TPD_INFO("check whether tp is in romboot or not ");
+	/* need reset to romboot when non-romboot state */
+	ret = ft3419u_fwupg_get_boot_state(ts_data, &status);
+	if (status != FTS_RUN_IN_ROM) {
+		TPD_INFO("tp isn't in romboot, need send reset to romboot");
+		ret = ft3419u_fwupg_reset_to_romboot(ts_data);
+		if (ret < 0) {
+			TPD_INFO("reset to romboot fail");
+			return ret;
+		}
+	}
+
+	/* write pramboot to pram */
+	ret = ft3419u_pram_write_buf(ts_data, pb_buf, pb_len);
+	if (ret < 0) {
+		TPD_INFO("write pramboot buffer fail");
+		return ret;
+	}
+
+	/* check CRC */
+	ft3419u_crc16_calc_host(pb_buf, pb_len, &ecc_in_host);
+	ret = ft3419u_pram_ecc_cal(ts_data, 0, pb_len, &ecc_in_tp);
+	if (ret < 0) {
+		TPD_INFO("read pramboot ecc fail");
+		return ret;
+	}
+
+	TPD_INFO("pram ecc in tp:%x, host:%x", ecc_in_tp, ecc_in_host);
+	/*  pramboot checksum != fw checksum, upgrade fail */
+	if (ecc_in_host != ecc_in_tp) {
+		TPD_INFO("pramboot ecc check fail");
+		return -EIO;
+	}
+
+	/*start pram*/
+	ret = ft3419u_pram_start(ts_data);
+	if (ret < 0) {
+		TPD_INFO("pram start fail");
+		return ret;
+	}
+
+	TPD_INFO("after write pramboot, confirm run in pramboot");
+	state = ft3419u_fwupg_check_state(ts_data, FTS_RUN_IN_PRAM);
+	if (!state) {
+		TPD_INFO("not in pramboot");
+		return -EIO;
+	}
+
+	return 0;
+}
+
+static int fts_fwupg_enter_into_boot(struct chip_data_ft3419u *ts_data)
+{
+	int ret = 0;
+	int i = 0;
+	u8 cmd[4] = { 0 };
+	u8 id[2] = { 0 };
+
+	do {
+		/*reset to boot*/
+		ret = touch_i2c_write_byte(ts_data->client, FTS_REG_UPGRADE, FTS_UPGRADE_AA);
+
+		if (ret < 0) {
+			TPD_INFO("write FC=0xAA fail");
+			return ret;
+		}
+
+		msleep(FTS_DELAY_UPGRADE_AA);
+
+		ret = touch_i2c_write_byte(ts_data->client, FTS_REG_UPGRADE, FTS_UPGRADE_55);
+
+		if (ret < 0) {
+			TPD_INFO("write FC=0x55 fail");
+			return ret;
+		}
+
+		msleep(FTS_DELAY_UPGRADE_RESET);
+
+		/*read boot id*/
+        ret = touch_i2c_write_byte(ts_data->client, FTS_CMD_START1, FTS_CMD_START2);
+		if (ret < 0) {
+			TPD_INFO("write 0x55 0xAA fail");
+			return ret;
+		}
+
+		cmd[0] = FTS_CMD_READ_ID;
+        cmd[1] = cmd[2] = cmd[3] = 0;
+		ret = touch_i2c_read(ts_data->client, cmd, 4, id, 2);
+
+		if (ret < 0) {
+			TPD_INFO("read boot id fail");
+			return ret;
+		}
+
+		TPD_INFO("read boot id:0x%02x%02x", id[0], id[1]);
+
+		if ((id[0] == 0x54) && (id[1] == 0x52)) {
+			break;
+		}
+	} while (i++ < FTS_UPGRADE_LOOP);
+
+	if (i >= 10) {
+		TPD_INFO("read boot id fail");
+		return -EIO;
+	}
+
+
+	ret = fts_ft3419u_write_pramboot_private(ts_data);
+	if (ret < 0) {
+		TPD_INFO("pram write_init fail");
+		return ret;
+	}
+
+	return 0;
+}
+
+static int fts_fwupg_erase(struct chip_data_ft3419u *ts_data, u32 delay)
+{
+	int ret = 0;
+	u8 cmd = 0;
+	bool flag = false;
+
+	TPD_INFO("**********erase now**********");
+
+	/*send to erase flash*/
+	cmd = FTS_CMD_ERASE_APP;
+	ret = touch_i2c_write_block(ts_data->client, cmd, 0, NULL);
+
+	if (ret < 0) {
+		TPD_INFO("send erase cmd fail");
+		return ret;
+	}
+
+	msleep(delay);
+
+	/* read status 0xF0AA: success */
+	flag = fts_fwupg_check_flash_status(ts_data, FTS_CMD_FLASH_STATUS_ERASE_OK,
+	                                    FTS_RETRIES_REASE, FTS_RETRIES_DELAY_REASE);
+
+	if (!flag) {
+		TPD_INFO("check ecc flash status fail");
+		return -EIO;
+	}
+
+	return 0;
+}
+
+static int fts_flash_write_buf(struct chip_data_ft3419u *ts_data, u32 saddr,
+                               u8 *buf, u32 len, u32 delay)
+{
+	int ret = 0;
+	u32 i = 0;
+	u32 j = 0;
+	u32 packet_number = 0;
+	u32 packet_len = 0;
+	u32 addr = 0;
+	u32 offset = 0;
+	u32 remainder = 0;
+	u32 cmdlen = 0;
+	u8 packet_buf[BYTES_PER_TIME + 6] = { 0 };
+	u8 cmd = 0;
+	u8 val[2] = { 0 };
+	u16 read_status = 0;
+	u16 wr_ok = 0;
+
+	TPD_INFO("**********write data to flash**********");
+	TPD_INFO("data buf start addr=0x%x, len=0x%x", saddr, len);
+	packet_number = len / BYTES_PER_TIME;
+	remainder = len % BYTES_PER_TIME;
+
+	if (remainder > 0) {
+		packet_number++;
+	}
+
+	packet_len = BYTES_PER_TIME;
+	TPD_INFO("write data, num:%d remainder:%d", packet_number, remainder);
+
+	for (i = 0; i < packet_number; i++) {
+		offset = i * BYTES_PER_TIME;
+		addr = saddr + offset;
+		cmdlen = 6;
+		packet_buf[0] = FTS_CMD_WRITE;
+		packet_buf[1] = (addr >> 16) & 0xFF;
+		packet_buf[2] = (addr >> 8) & 0xFF;
+		packet_buf[3] = (addr) & 0xFF;
+
+		/* last packet */
+		if ((i == (packet_number - 1)) && remainder) {
+			packet_len = remainder;
+		}
+
+		packet_buf[4] = (packet_len >> 8) & 0xFF;
+		packet_buf[5] = (packet_len) & 0xFF;
+		memcpy(&packet_buf[cmdlen], &buf[offset], packet_len);
+		ret = touch_i2c_write_block(ts_data->client, packet_buf[0],
+		                            packet_len + cmdlen - 1, &packet_buf[1]);
+
+		if (ret < 0) {
+			TPD_INFO("app write fail");
+			return ret;
+		}
+
+		mdelay(delay);
+
+		/* read status */
+		wr_ok = FTS_CMD_FLASH_STATUS_WRITE_OK + addr / packet_len;
+
+		for (j = 0; j < FTS_RETRIES_WRITE; j++) {
+			cmd = FTS_CMD_FLASH_STATUS;
+			ret = touch_i2c_read_block(ts_data->client, cmd, 2, val);
+			read_status = (((u16)val[0]) << 8) + val[1];
+
+			/* TPD_DEBUG("%x %x", wr_ok, read_status); */
+			if (wr_ok == read_status) {
+				break;
+			}
+
+			mdelay(FTS_RETRIES_DELAY_WRITE);
+		}
+	}
+
+	return 0;
+}
+
+static int fts_fwupg_ecc_cal_host(u8 *buf, u32 len)
+{
+	u8 ecc = 0;
+	u32 i = 0;
+
+	for (i = 0; i < len; i++) {
+		ecc ^= buf[i];
+	}
+
+	return (int)ecc;
+}
+
+int fts_fwupg_ecc_cal_tp(struct chip_data_ft3419u *ts_data, u32 saddr, u32 len)
+{
+	int ret = 0;
+	u8 wbuf[7] = { 0 };
+	u8 val[2] = { 0 };
+	int ecc = 0;
+	bool bflag = false;
+
+	TPD_INFO("**********read out checksum**********");
+	/* check sum init */
+	wbuf[0] = FTS_CMD_ECC_INIT;
+	ret = touch_i2c_write_block(ts_data->client, wbuf[0] & 0xff, 0, NULL);
+
+	if (ret < 0) {
+		TPD_INFO("ecc init cmd write fail");
+		return ret;
+	}
+
+	/* send commond to start checksum */
+	wbuf[0] = FTS_CMD_ECC_CAL;
+	wbuf[1] = (saddr >> 16) & 0xFF;
+	wbuf[2] = (saddr >> 8) & 0xFF;
+	wbuf[3] = (saddr);
+	wbuf[4] = (len >> 16) & 0xFF;
+	wbuf[5] = (len >> 8) & 0xFF;
+	wbuf[6] = (len);
+	TPD_INFO("ecc calc startaddr:0x%04x, len:%d", saddr, len);
+	ret = touch_i2c_write_block(ts_data->client, wbuf[0] & 0xff, 6, &wbuf[1]);
+
+	if (ret < 0) {
+		TPD_INFO("ecc calc cmd write fail");
+		return ret;
+	}
+
+	msleep(len / 256);
+
+	/* read status if check sum is finished */
+	bflag = fts_fwupg_check_flash_status(ts_data, FTS_CMD_FLASH_STATUS_ECC_OK,
+	                                     FTS_RETRIES_ECC_CAL,
+	                                     FTS_RETRIES_DELAY_ECC_CAL);
+
+	if (!bflag) {
+		TPD_INFO("ecc flash status read fail");
+		return -EIO;
+	}
+
+	/* read out check sum */
+	wbuf[0] = FTS_CMD_ECC_READ;
+	ret = touch_i2c_read_block(ts_data->client, wbuf[0], 2, val);
+
+	if (ret < 0) {
+		TPD_INFO("ecc read cmd write fail");
+		return ret;
+	}
+
+	ecc = val[0];
+
+	return ecc;
+}
+
+static int fts_upgrade(struct chip_data_ft3419u *ts_data, u8 *buf, u32 len)
+{
+	struct monitor_data *monitor_data = ts_data->monitor_data;
+	int ret = 0;
+	u32 start_addr = 0;
+	u8 cmd[4] = { 0 };
+	int ecc_in_host = 0;
+	int ecc_in_tp = 0;
+
+	if (!buf) {
+		TPD_INFO("fw_buf is invalid");
+		return -EINVAL;
+	}
+
+	/* enter into upgrade environment */
+	ret = fts_fwupg_enter_into_boot(ts_data);
+
+	if (ret < 0) {
+		tp_healthinfo_report(monitor_data, HEALTH_FW_UPDATE, "Enter pramboot/bootloader failed");
+		TPD_INFO("enter into pramboot/bootloader fail,ret=%d", ret);
+		goto fw_reset;
+	}
+
+	cmd[0] = FTS_CMD_DATA_LEN;
+	cmd[1] = (len >> 16) & 0xFF;
+	cmd[2] = (len >> 8) & 0xFF;
+	cmd[3] = (len) & 0xFF;
+	ret = touch_i2c_write_block(ts_data->client, cmd[0], 3, &cmd[1]);
+
+	if (ret < 0) {
+		tp_healthinfo_report(monitor_data, HEALTH_FW_UPDATE, "FTS_CMD_DATA_LEN failed");
+		TPD_INFO("data len cmd write fail");
+		goto fw_reset;
+	}
+
+	/*erase*/
+	ret = fts_fwupg_erase(ts_data, FTS_REASE_APP_DELAY);
+
+	if (ret < 0) {
+		tp_healthinfo_report(monitor_data, HEALTH_FW_UPDATE, "FTS_REASE_APP_DELAY failed");
+		TPD_INFO("erase cmd write fail");
+		goto fw_reset;
+	}
+
+	/* write app */
+	start_addr = 0;
+	ret = fts_flash_write_buf(ts_data, start_addr, buf, len, 1);
+
+	if (ret < 0) {
+		tp_healthinfo_report(monitor_data, HEALTH_FW_UPDATE, "Flash Write failed");
+		TPD_INFO("flash write fail");
+		goto fw_reset;
+	}
+
+	ecc_in_host = fts_fwupg_ecc_cal_host(buf, len);
+	ecc_in_tp = fts_fwupg_ecc_cal_tp(ts_data, start_addr, len);
+
+	if (ecc_in_tp < 0) {
+		tp_healthinfo_report(monitor_data, HEALTH_FW_UPDATE, "ECC Read failed");
+		TPD_INFO("ecc read fail");
+		goto fw_reset;
+	}
+
+	TPD_INFO("ecc in tp:%x, host:%x", ecc_in_tp, ecc_in_host);
+
+	if (ecc_in_tp != ecc_in_host) {
+		tp_healthinfo_report(monitor_data, HEALTH_FW_UPDATE, "ECC Read failed");
+		TPD_INFO("ecc check fail");
+		goto fw_reset;
+	}
+
+	TPD_INFO("upgrade success, reset to normal boot");
+	cmd[0] = FTS_CMD_RESET;
+	ret = touch_i2c_write_block(ts_data->client, cmd[0], 0, NULL);
+
+	if (ret < 0) {
+		tp_healthinfo_report(monitor_data, HEALTH_FW_UPDATE, "FTS_CMD_RESET failed");
+		TPD_INFO("reset to normal boot fail");
+	}
+
+	msleep(200);
+	return 0;
+
+fw_reset:
+	TPD_INFO("upgrade fail, reset to normal boot");
+	cmd[0] = FTS_CMD_RESET;
+	ret = touch_i2c_write_block(ts_data->client, cmd[0], 0, NULL);
+
+	if (ret < 0) {
+		tp_healthinfo_report(monitor_data, HEALTH_FW_UPDATE, "FTS_CMD_RESET failed");
+		TPD_INFO("reset to normal boot fail");
+	}
+
+	return -EIO;
+}
+
+
+static fw_check_state fts_fw_check(void *chip_data,
+                                   struct resolution_info *resolution_info, struct panel_info *panel_data)
+{
+	u8 cmd[4] = { 0 };
+	u8 id[2] = { 0 };
+	char dev_version[MAX_DEVICE_VERSION_LENGTH] = {0};
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	id[0] = touch_i2c_read_byte(ts_data->client, FTS_REG_CHIP_ID);
+	id[1] = touch_i2c_read_byte(ts_data->client, FTS_REG_CHIP_ID2);
+
+	if ((id[0] != FTS_VAL_CHIP_ID) || (id[1] != FTS_VAL_CHIP_ID2)) {
+		cmd[0] = 0x55;
+		touch_i2c_write_block(ts_data->client, cmd[0], 0, NULL);
+		msleep(12);
+		cmd[0] = 0x90;
+        cmd[1] = cmd[2] = cmd[3] = 0;
+		touch_i2c_read(ts_data->client, cmd, 4, id, 2);
+		TPD_INFO("boot id:0x%02x%02x, fw abnormal", id[0], id[1]);
+		return FW_ABNORMAL;
+	}
+
+	/*fw check normal need update tp_fw  && device info*/
+	ts_data->fwver = touch_i2c_read_byte(ts_data->client, FTS_REG_FW_VER);
+	panel_data->tp_fw = ts_data->fwver;
+	TPD_INFO("FW VER:%d", panel_data->tp_fw);
+
+	if (panel_data->manufacture_info.version) {
+		sprintf(dev_version, "%04x", panel_data->tp_fw);
+		strlcpy(&(panel_data->manufacture_info.version[7]), dev_version, 5);
+	}
+
+	return FW_NORMAL;
+}
+
+int fts_reset_proc(int hdelayms)
+{
+	TPD_INFO("tp reset");
+	fts_rstgpio_set(g_fts_data->hw_res, false); /* reset gpio*/
+	msleep(5);
+	fts_rstgpio_set(g_fts_data->hw_res, true); /* reset gpio*/
+
+	if (hdelayms) {
+		msleep(hdelayms);
+	}
+
+	return 0;
+}
+
+#define OFFSET_FW_DATA_FW_VER 0x010E
+static fw_update_state fts_fw_update(void *chip_data, const struct firmware *fw,
+                                     bool force)
+{
+	int ret = 0;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	u8 *buf = NULL;
+	u32 len = 0;
+
+	if (!fw) {
+		TPD_INFO("fw is null");
+		return FW_UPDATE_ERROR;
+	}
+
+	buf = (u8 *)fw->data;
+	len = (int)fw->size;
+
+	if ((len < 0x120) || (len > (120 * 1024))) {
+		TPD_INFO("fw_len(%d) is invalid", len);
+		return FW_UPDATE_ERROR;
+	}
+
+	if (force || (buf[OFFSET_FW_DATA_FW_VER] != ts_data->fwver)) {
+		TPD_INFO("Need update, force(%d)/fwver:Host(0x%02x),TP(0x%02x)", force,
+		         buf[OFFSET_FW_DATA_FW_VER], ts_data->fwver);
+		focal_esd_check_enable(ts_data, false);
+		ret = fts_upgrade(ts_data, buf, len);
+		focal_esd_check_enable(ts_data, true);
+
+		if (ret < 0) {
+			TPD_INFO("fw update fail");
+			return FW_UPDATE_ERROR;
+		}
+
+		return FW_UPDATE_SUCCESS;
+	}
+
+	return FW_NO_NEED_UPDATE;
+}
+
+
+static int fts_enter_factory_work_mode(struct chip_data_ft3419u *ts_data,
+                                       u8 mode_val)
+{
+	int ret = 0;
+	int retry = 20;
+	u8 regval = 0;
+
+	TPD_INFO("%s:enter %s mode", __func__, (mode_val == 0x40) ? "factory" : "work");
+	ret = touch_i2c_write_byte(ts_data->client, DEVIDE_MODE_ADDR, mode_val);
+
+	if (ret < 0) {
+		TPD_INFO("%s:write mode(val:0x%x) fail", __func__, mode_val);
+		return ret;
+	}
+
+	while (--retry) {
+		regval = touch_i2c_read_byte(ts_data->client, DEVIDE_MODE_ADDR);
+
+		if (regval == mode_val) {
+			break;
+		}
+
+		msleep(20);
+	}
+
+	if (!retry) {
+		TPD_INFO("%s:enter mode(val:0x%x) timeout", __func__, mode_val);
+		return -EIO;
+	}
+
+	msleep(FACTORY_TEST_DELAY);
+	return 0;
+}
+
+static int fts_start_scan(struct chip_data_ft3419u *ts_data)
+{
+	int ret = 0;
+	int retry = 50;
+	u8 regval = 0;
+	u8 scanval = FTS_FACTORY_MODE_VALUE | (1 << 7);
+
+	TPD_INFO("%s: start to scan a frame", __func__);
+	ret = touch_i2c_write_byte(ts_data->client, DEVIDE_MODE_ADDR, scanval);
+
+	if (ret < 0) {
+		TPD_INFO("%s:start to scan a frame fail", __func__);
+		return ret;
+	}
+
+	while (--retry) {
+		regval = touch_i2c_read_byte(ts_data->client, DEVIDE_MODE_ADDR);
+
+		if (regval == FTS_FACTORY_MODE_VALUE) {
+			break;
+		}
+
+		msleep(20);
+	}
+
+	if (!retry) {
+		TPD_INFO("%s:scan a frame timeout", __func__);
+		return -EIO;
+	}
+
+	return 0;
+}
+
+static int fts_get_rawdata(struct chip_data_ft3419u *ts_data, int *raw,
+                           bool is_diff)
+{
+	int ret = 0;
+	int i = 0;
+	int byte_num = ts_data->hw_res->tx_num * ts_data->hw_res->rx_num * 2;
+	int size = 0;
+	int packet_len = 0;
+	int offset = 0;
+	u8 raw_addr = 0;
+	u8 regval = 0;
+	u8 *buf = NULL;
+
+	TPD_INFO("%s:call", __func__);
+	/*kzalloc buffer*/
+	buf = kzalloc(byte_num, GFP_KERNEL);
+
+	if (!buf) {
+		TPD_INFO("%s:kzalloc for raw byte buf fail", __func__);
+		return -ENOMEM;
+	}
+
+	ret = fts_enter_factory_work_mode(ts_data, FTS_FACTORY_MODE_VALUE);
+
+	if (ret < 0) {
+		TPD_INFO("%s:enter factory mode fail", __func__);
+		goto raw_err;
+	}
+
+	if (is_diff) {
+		regval = touch_i2c_read_byte(ts_data->client, FACTORY_REG_DATA_SELECT);
+		ret = touch_i2c_write_byte(ts_data->client, FACTORY_REG_DATA_SELECT, 0x01);
+
+		if (ret < 0) {
+			TPD_INFO("%s:write 0x01 to reg0x06 fail", __func__);
+			goto reg_restore;
+		}
+	}
+
+	ret = fts_start_scan(ts_data);
+
+	if (ret < 0) {
+		TPD_INFO("%s:scan a frame fail", __func__);
+		goto reg_restore;
+	}
+
+	ret = touch_i2c_write_byte(ts_data->client, FACTORY_REG_LINE_ADDR, 0xAA);
+
+	if (ret < 0) {
+		TPD_INFO("%s:write 0xAA to reg0x01 fail", __func__);
+		goto reg_restore;
+	}
+
+	raw_addr = FACTORY_REG_RAWDATA_ADDR_MC_SC;
+	ret = touch_i2c_read_block(ts_data->client, raw_addr, MAX_PACKET_SIZE, buf);
+	size = byte_num - MAX_PACKET_SIZE;
+	offset = MAX_PACKET_SIZE;
+
+	while (size > 0) {
+		if (size >= MAX_PACKET_SIZE) {
+			packet_len = MAX_PACKET_SIZE;
+
+		} else {
+			packet_len = size;
+		}
+
+		ret = touch_i2c_read(ts_data->client, NULL, 0, buf + offset, packet_len);
+
+		if (ret < 0) {
+			TPD_INFO("%s:read raw data(packet:%d) fail", __func__,
+			         offset / MAX_PACKET_SIZE);
+			goto reg_restore;
+		}
+
+		size -= packet_len;
+		offset += packet_len;
+	}
+
+	for (i = 0; i < byte_num; i = i + 2) {
+		raw[i >> 1] = (int)(short)((buf[i] << 8) + buf[i + 1]);
+	}
+
+reg_restore:
+
+	if (is_diff) {
+		ret = touch_i2c_write_byte(ts_data->client, FACTORY_REG_DATA_SELECT, regval);
+
+		if (ret < 0) {
+			TPD_INFO("%s:restore reg0x06 fail", __func__);
+		}
+	}
+
+raw_err:
+	kfree(buf);
+	ret = fts_enter_factory_work_mode(ts_data, FTS_WORK_MODE_VALUE);
+
+	if (ret < 0) {
+		TPD_INFO("%s:enter work mode fail", __func__);
+	}
+
+	return ret;
+}
+
+static void fts_delta_read(struct seq_file *s, void *chip_data)
+{
+	int ret = 0;
+	int i = 0;
+	int j = 0;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int *raw = NULL;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+
+	TPD_INFO("%s:start to read diff data", __func__);
+	focal_esd_check_enable(ts_data, false);   /*no allowed esd check*/
+
+	raw = kzalloc(tx_num * rx_num * sizeof(int), GFP_KERNEL);
+
+	if (!raw) {
+		seq_printf(s, "kzalloc for raw fail\n");
+		goto raw_fail;
+	}
+
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_AUTOCLB_ADDR, 0x01);
+
+	if (ret < 0) {
+		TPD_INFO("%s, write 0x01 to reg 0xee failed \n", __func__);
+	}
+
+	ret = fts_get_rawdata(ts_data, raw, true);
+
+	if (ret < 0) {
+		seq_printf(s, "get diff data fail\n");
+		goto raw_fail;
+	}
+
+	for (i = 0; i < tx_num; i++) {
+		seq_printf(s, "\n[%2d]", i + 1);
+
+		for (j = 0; j < rx_num; j++) {
+			seq_printf(s, " %5d,", raw[i * rx_num + j]);
+		}
+	}
+
+	seq_printf(s, "\n");
+
+raw_fail:
+	touch_i2c_write_byte(ts_data->client, FTS_REG_AUTOCLB_ADDR, 0x00);
+	focal_esd_check_enable(ts_data, true);
+	kfree(raw);
+}
+
+static void fts_baseline_read(struct seq_file *s, void *chip_data)
+{
+	int ret = 0;
+	int i = 0;
+	int j = 0;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int *raw = NULL;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+
+	TPD_INFO("%s:start to read raw data", __func__);
+	focal_esd_check_enable(ts_data, false);
+
+	raw = kzalloc(tx_num * rx_num * sizeof(int), GFP_KERNEL);
+
+	if (!raw) {
+		seq_printf(s, "kzalloc for raw fail\n");
+		goto raw_fail;
+	}
+
+	ret = fts_get_rawdata(ts_data, raw, false);
+
+	if (ret < 0) {
+		seq_printf(s, "get raw data fail\n");
+		goto raw_fail;
+	}
+
+	for (i = 0; i < tx_num; i++) {
+		seq_printf(s, "\n[%2d]", i + 1);
+
+		for (j = 0; j < rx_num; j++) {
+			seq_printf(s, " %5d,", raw[i * rx_num + j]);
+		}
+	}
+
+	seq_printf(s, "\n");
+
+raw_fail:
+	focal_esd_check_enable(ts_data, true);
+	kfree(raw);
+}
+
+static void fts_main_register_read(struct seq_file *s, void *chip_data)
+{
+	u8 regvalue = 0;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	/*TP FW version*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_FW_VER);
+	seq_printf(s, "TP FW Ver:0x%02x\n", regvalue);
+
+	/*Vendor ID*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_VENDOR_ID);
+	seq_printf(s, "Vendor ID:0x%02x\n", regvalue);
+
+	/*Gesture enable*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_GESTURE_EN);
+	seq_printf(s, "Gesture Mode:0x%02x\n", regvalue);
+
+	/*charge in*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_CHARGER_MODE_EN);
+	seq_printf(s, "charge state:0x%02x\n", regvalue);
+
+	/*edge limit*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_EDGE_LIMIT);
+	seq_printf(s, "edge Mode:0x%02x\n", regvalue);
+
+	/*game mode*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_GAME_MODE_EN);
+	seq_printf(s, "Game Mode:0x%02x\n", regvalue);
+
+	/*FOD mode*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_FOD_EN);
+	seq_printf(s, "FOD Mode:0x%02x\n", regvalue);
+
+	/*Interrupt counter*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_INT_CNT);
+	seq_printf(s, "INT count:0x%02x\n", regvalue);
+
+	/*Flow work counter*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_FLOW_WORK_CNT);
+	seq_printf(s, "ESD count:0x%02x\n", regvalue);
+
+	/*Panel ID*/
+	regvalue = touch_i2c_read_byte(ts_data->client, FTS_REG_MODULE_ID);
+	seq_printf(s, "PANEL ID:0x%02x\n", regvalue);
+
+	return;
+}
+
+static int fts_enable_black_gesture(struct chip_data_ft3419u *ts_data,
+                                    bool enable)
+{
+	int ret = 0;
+	int config1 = 0xff;
+	int config2 = 0xff;
+	int config4 = 0xff;
+	int state = ts_data->gesture_state;
+
+	if (enable) {
+		SET_GESTURE_BIT(state, RIGHT2LEFT_SWIP, config1, 0)
+		SET_GESTURE_BIT(state, LEFT2RIGHT_SWIP, config1, 1)
+		SET_GESTURE_BIT(state, DOWN2UP_SWIP, config1, 2)
+		SET_GESTURE_BIT(state, UP2DOWN_SWIP, config1, 3)
+		SET_GESTURE_BIT(state, DOU_TAP, config1, 4)
+		SET_GESTURE_BIT(state, DOU_SWIP, config1, 5)
+		SET_GESTURE_BIT(state, SINGLE_TAP, config1, 7)
+		SET_GESTURE_BIT(state, CIRCLE_GESTURE, config2, 0)
+		SET_GESTURE_BIT(state, W_GESTURE, config2, 1)
+		SET_GESTURE_BIT(state, M_GESTRUE, config2, 2)
+		SET_GESTURE_BIT(state, RIGHT_VEE, config4, 1)
+		SET_GESTURE_BIT(state, LEFT_VEE, config4, 2)
+		SET_GESTURE_BIT(state, DOWN_VEE, config4, 3)
+		SET_GESTURE_BIT(state, UP_VEE, config4, 4)
+		SET_GESTURE_BIT(state, HEART, config4, 5)
+	} else {
+		config1 = 0;
+		config2 = 0;
+		config4 = 0;
+	}
+
+	TPD_INFO("MODE_GESTURE, write 0xD0=%d", enable);
+	TPD_INFO("%s: config1:%x, config2:%x config4:%x\n", __func__, config1, config2, config4);
+
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_GESTURE_CONFIG1, config1);
+	if (ret < 0) {
+		TPD_INFO("%s: write FTS_REG_GESTURE_CONFIG1 enable(%x=%x) fail", __func__, FTS_REG_GESTURE_CONFIG1, config1);
+	}
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_GESTURE_CONFIG2, config2);
+	if (ret < 0) {
+		TPD_INFO("%s: write FTS_REG_GESTURE_CONFIG2 enable(%x=%x) fail", __func__, FTS_REG_GESTURE_CONFIG2, config2);
+	}
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_GESTURE_CONFIG4, config4);
+	if (ret < 0) {
+		TPD_INFO("%s: write FTS_REG_GESTURE_CONFIG4 enable(%x=%x) fail", __func__, FTS_REG_GESTURE_CONFIG4, config4);
+	}
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_GESTURE_EN, enable);
+	if (ret < 0) {
+		TPD_INFO("%s: write FTS_REG_GESTURE_EN enable(%x=%x) fail", __func__, FTS_REG_GESTURE_EN, enable);
+	}
+
+	return ret;
+}
+
+static int fts_enable_edge_limit(struct chip_data_ft3419u *ts_data, int enable)
+{
+	u8 edge_mode = 0;
+
+	/*0:Horizontal, 1:Vertical*/
+	if (enable == VERTICAL_SCREEN) {
+		edge_mode = 0;
+
+	} else if (enable == LANDSCAPE_SCREEN_90) {
+		edge_mode = 1;
+
+	} else if (enable == LANDSCAPE_SCREEN_270) {
+		edge_mode = 2;
+	}
+
+	TPD_INFO("MODE_EDGE, write 0x8C=%d", edge_mode);
+	return touch_i2c_write_byte(ts_data->client, FTS_REG_EDGE_LIMIT, edge_mode);
+}
+
+static int fts_enable_charge_mode(struct chip_data_ft3419u *ts_data, bool enable)
+{
+	TPD_INFO("MODE_CHARGE, write 0x8B=%d", enable);
+	return touch_i2c_write_byte(ts_data->client, FTS_REG_CHARGER_MODE_EN, enable);
+}
+
+static int fts_enable_game_mode(struct chip_data_ft3419u *ts_data, bool enable)
+{
+	struct touchpanel_data *ts = i2c_get_clientdata(ts_data->client);
+	int ret = 0;
+
+	if (ts == NULL) {
+		return 0;
+	}
+
+	if (ts->aiunit_game_info_support) {
+		ret = touch_i2c_write_byte(ts_data->client, FTS_CMD_GAME_AIUINIT_EN, enable);
+		TPD_INFO("%s: game aiuinit C9 set\n", __func__);
+		if (ret < 0) {
+			TPD_INFO("%s: write game aiuinit enable(%x=%x) fail", __func__, FTS_CMD_GAME_AIUINIT_EN, enable);
+		}
+		msleep(1);
+	}
+	TPD_INFO("MODE_GAME, write 0x86=%d", enable);
+	return touch_i2c_write_byte(ts_data->client, FTS_REG_GAME_MODE_EN, !enable);
+}
+
+static int fts_enable_headset_mode(struct chip_data_ft3419u *ts_data,
+                                   bool enable)
+{
+	TPD_INFO("MODE_HEADSET, write 0xC3=%d \n", enable);
+	return touch_i2c_write_byte(ts_data->client, FTS_REG_HEADSET_MODE_EN, enable);
+}
+
+static int fts_mode_switch(void *chip_data, work_mode mode, int flag)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int ret = 0;
+
+	switch (mode) {
+	case MODE_NORMAL:
+		TPD_INFO("MODE_NORMAL");
+		break;
+
+	case MODE_SLEEP:
+		TPD_INFO("MODE_SLEEP, write 0xA5=3");
+		ret = touch_i2c_write_byte(ts_data->client, FTS_REG_POWER_MODE, 0x03);
+
+		if (ret < 0) {
+			TPD_INFO("%s: enter into sleep failed.\n", __func__);
+			goto mode_err;
+		}
+
+		break;
+
+	case MODE_GESTURE:
+		TPD_INFO("MODE_GESTURE, Melo, ts->is_suspended = %d \n",
+		         ts_data->ts->is_suspended);
+
+		if (ts_data->ts->is_suspended) {                             /* do not pull up reset when doing resume*/
+			if (ts_data->last_mode == MODE_SLEEP) {
+				fts_hw_reset(ts_data, RESET_TO_NORMAL_TIME);
+			}
+		}
+
+		ret = fts_enable_black_gesture(ts_data, flag);
+
+		if (ret < 0) {
+			TPD_INFO("%s: enable gesture failed.\n", __func__);
+			goto mode_err;
+		}
+
+		break;
+
+	/*    case MODE_GLOVE:*/
+	/*        break;*/
+
+	case MODE_EDGE:
+		ret = fts_enable_edge_limit(ts_data, flag);
+
+		if (ret < 0) {
+			TPD_INFO("%s: enable edg limit failed.\n", __func__);
+			goto mode_err;
+		}
+
+		break;
+
+	case MODE_FACE_DETECT:
+		break;
+
+	case MODE_CHARGE:
+		ret = fts_enable_charge_mode(ts_data, flag);
+
+		if (ret < 0) {
+			TPD_INFO("%s: enable charge mode failed.\n", __func__);
+			goto mode_err;
+		}
+
+		break;
+
+	case MODE_GAME:
+		ret = fts_enable_game_mode(ts_data, flag);
+
+		if (ret < 0) {
+			TPD_INFO("%s: enable game mode failed.\n", __func__);
+			goto mode_err;
+		}
+
+		break;
+
+	case MODE_HEADSET:
+		ret = fts_enable_headset_mode(ts_data, flag);
+
+		if (ret < 0) {
+			TPD_INFO("%s: enable headset mode failed.\n", __func__);
+			goto mode_err;
+		}
+
+		break;
+
+	default:
+		TPD_INFO("%s: Wrong mode.\n", __func__);
+		goto mode_err;
+	}
+
+	ts_data->last_mode = mode;
+	return 0;
+mode_err:
+	return ret;
+}
+
+
+
+/*
+ * return success: 0; fail : negative
+ */
+static int fts_reset(void *chip_data)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	TPD_INFO("%s:call\n", __func__);
+	fts_hw_reset(ts_data, RESET_TO_NORMAL_TIME);
+
+	return 0;
+}
+
+static int  fts_reset_gpio_control(void *chip_data, bool enable)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	return fts_rstgpio_set(ts_data->hw_res, enable);
+}
+
+static int fts_get_vendor(void *chip_data, struct panel_info *panel_data)
+{
+	int len = 0;
+
+	len = strlen(panel_data->fw_name);
+
+	if ((len > 3) && (panel_data->fw_name[len - 3] == 'i') && \
+	    (panel_data->fw_name[len - 2] == 'm')
+	    && (panel_data->fw_name[len - 1] == 'g')) {
+		TPD_INFO("tp_type = %d, panel_data->fw_name = %s\n", panel_data->tp_type,
+		         panel_data->fw_name);
+	}
+
+	TPD_INFO("tp_type = %d, panel_data->fw_name = %s\n", panel_data->tp_type,
+	         panel_data->fw_name);
+
+	return 0;
+}
+
+static int fts_get_chip_info(void *chip_data)
+{
+	u8 cmd = 0x90;
+	u8 id[2] = { 0 };
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	id[0] = touch_i2c_read_byte(ts_data->client, FTS_REG_CHIP_ID);
+	id[1] = touch_i2c_read_byte(ts_data->client, FTS_REG_CHIP_ID2);
+	TPD_INFO("read chip id:0x%02x%02x", id[0], id[1]);
+
+	if ((id[0] == FTS_VAL_CHIP_ID) && (id[1] == FTS_VAL_CHIP_ID2)) {
+		return 0;
+	}
+
+	TPD_INFO("fw is invalid, need read boot id");
+	cmd = 0x55;
+	touch_i2c_write_block(ts_data->client, cmd, 0, NULL);
+	msleep(12);
+	cmd = 0x90;
+	touch_i2c_read_block(ts_data->client, cmd, 2, id);
+	TPD_INFO("read boot id:0x%02x%02x", id[0], id[1]);
+
+	if ((id[0] == FTS_VAL_BT_ID) && (id[1] == FTS_VAL_BT_ID2)) {
+		return 0;
+	}
+
+	return 0;
+}
+
+static int fts_ftm_process(void *chip_data)
+{
+	int ret = 0;
+
+	ret = fts_mode_switch(chip_data, MODE_SLEEP, true);
+
+	if (ret < 0) {
+		TPD_INFO("%s:switch mode to MODE_SLEEP fail", __func__);
+		return ret;
+	}
+
+	ret = fts_power_control(chip_data, false);
+
+	if (ret < 0) {
+		TPD_INFO("%s:power on fail", __func__);
+		return ret;
+	}
+
+	return 0;
+}
+
+static void fts_read_fod_info(struct chip_data_ft3419u *ts_data)
+{
+	int ret = 0;
+	u8 cmd = FTS_REG_FOD_INFO;
+	u8 val[FTS_REG_FOD_INFO_LEN] = { 0 };
+
+	ret = touch_i2c_read_block(ts_data->client, cmd, FTS_REG_FOD_INFO_LEN, val);
+
+	if (ret < 0) {
+		TPD_INFO("%s:read FOD info fail", __func__);
+		return;
+	}
+
+	TPD_DEBUG("%s:FOD info buffer:%x %x %x %x %x %x %x %x %x", __func__, val[0],
+	          val[1], val[2], val[3], val[4], val[5], val[6], val[7], val[8]);
+	ts_data->fod_info.fp_id = val[0];
+	ts_data->fod_info.event_type = val[1];
+
+	if (val[8] == 0) {
+		ts_data->fod_info.fp_down = 1;
+
+	} else if (val[8] == 1) {
+		ts_data->fod_info.fp_down = 0;
+	}
+
+	ts_data->fod_info.fp_area_rate = val[2];
+	ts_data->fod_info.fp_x = (val[4] << 8) + val[5];
+	ts_data->fod_info.fp_y = (val[6] << 8) + val[7];
+}
+
+static u32 fts_u32_trigger_reason(void *chip_data, int gesture_enable,
+                                  int is_suspended)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int ret = 0;
+	u8 cmd = FTS_REG_POINTS;
+	u8 cmd_grip = FTS_REG_GRIP;
+	u32 result_event = 0;
+	u8 *buf = ts_data->rbuf;
+
+	fts_prc_queue_work(ts_data);
+
+	memset(buf, 0xFF, FTS_MAX_POINTS_GRIP_LENGTH);
+
+	if (ts_data->ts->palm_to_sleep_enable && !is_suspended) {
+		ret = touch_i2c_read_byte(ts_data->client, FTS_REG_PALM_TO_SLEEP_STATUS);
+		if (ret < 0) {
+			TPD_INFO("touch_i2c_read_byte PALM_TO_SLEEP_STATUS fail\n");
+		} else {
+			if(ret == 0x01) {
+				SET_BIT(result_event, IRQ_PALM);
+				TPD_INFO("fts_enable_palm_to_sleep enable\n");
+				return result_event;
+			}
+		}
+	}
+
+	if (gesture_enable && is_suspended) {
+		ret = touch_i2c_read_byte(ts_data->client, FTS_REG_GESTURE_EN);
+		if (ret == 0x01) {
+			return IRQ_GESTURE;
+		}
+	}
+
+	ret = touch_i2c_read_block(ts_data->client, cmd, FTS_POINTS_ONE, &buf[0]);
+	if (ret < 0) {
+		TPD_INFO("read touch point one fail");
+		return IRQ_IGNORE;
+	}
+
+	if (ts_data->ft3419u_grip_v2_support) {
+		ret = touch_i2c_read_block(ts_data->client, cmd_grip, FTS_GRIP_ONE, &buf[FTS_MAX_POINTS_LENGTH]);
+		if (ret < 0) {
+			TPD_INFO("[prevent-ft] read grip_info one fail");
+		}
+	}
+
+	if ((buf[0] == 0xFF) && (buf[1] == 0xFF) && (buf[2] == 0xFF)) {
+		TPD_INFO("Need recovery TP state");
+		return IRQ_FW_AUTO_RESET;
+	}
+
+	/*confirm need print debug info*/
+	if (ts_data->rbuf[0] != ts_data->irq_type) {
+		SET_BIT(result_event, IRQ_FW_HEALTH);
+	}
+
+	ts_data->irq_type = ts_data->rbuf[0];
+
+	/*normal touch*/
+	SET_BIT(result_event, IRQ_TOUCH);
+	TPD_DEBUG("%s, fgerprint, is_suspended = %d, fp_en = %d, ", __func__,
+	          is_suspended, ts_data->fp_en);
+	TPD_DEBUG("%s, fgerprint, touched = %d, event_type = %d, fp_down = %d, fp_down_report = %d, ",
+	          __func__, ts_data->ts->view_area_touched, ts_data->fod_info.event_type,
+	          ts_data->fod_info.fp_down, ts_data->fod_info.fp_down_report);
+
+	if (!is_suspended && ts_data->fp_en) {
+		fts_read_fod_info(ts_data);
+
+		if ((ts_data->fod_info.event_type == FTS_EVENT_FOD)
+		    && (ts_data->fod_info.fp_down)) {
+			if (!ts_data->fod_info.fp_down_report) {    /* 38, 1, 0*/
+				ts_data->fod_info.fp_down_report = 1;
+				SET_BIT(result_event, IRQ_FINGERPRINT);
+				TPD_DEBUG("%s, fgerprint, set IRQ_FINGERPRINT when fger down but not reported! \n",
+				          __func__);
+			}
+
+			/*            if (ts_data->fod_info.fp_down_report) {      38, 1, 1*/
+			/*            }*/
+
+		} else if ((ts_data->fod_info.event_type == FTS_EVENT_FOD)
+		           && (!ts_data->fod_info.fp_down)) {
+			if (ts_data->fod_info.fp_down_report) {     /* 38, 0, 1*/
+				ts_data->fod_info.fp_down_report = 0;
+				SET_BIT(result_event, IRQ_FINGERPRINT);
+				TPD_DEBUG("%s, fgerprint, set IRQ_FINGERPRINT when fger up but still reported! \n",
+				          __func__);
+			}
+
+			/*                if (!ts_data->fod_info.fp_down_report) {     38, 0, 0*/
+			/*                }*/
+		}
+	}
+
+	return result_event;
+}
+
+static int fts_get_touch_points(void *chip_data, struct point_info *points,
+                                int max_num)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int ret = 0;
+	int retval = 0;
+	int i = 0;
+	int obj_attention = 0;
+	int base = 0;
+	int base_prevent = 0;
+	int touch_point = 0;
+	u8 point_num = 0;
+	u8 pointid = 0;
+	u8 event_flag = 0;
+	u8 cmd = FTS_REG_POINTS_N;
+	u8 cmd_grip = FTS_REG_GRIP_N;
+	u8 *buf = ts_data->rbuf;
+
+	if (buf[FTS_POINTS_ONE - 1] == 0xFF) {
+		if (ts_data->ft3419u_grip_v2_support == FALSE)
+			ret = touch_i2c_read_byte(ts_data->client, FTS_REG_POINTS_LB);
+	} else {
+		ret = touch_i2c_read_block(ts_data->client, cmd, FTS_POINTS_TWO,
+		                           &buf[FTS_POINTS_ONE]);
+
+		if (ts_data->ft3419u_grip_v2_support) {
+			retval = touch_i2c_read_block(ts_data->client, cmd_grip, FTS_GRIP_TWO,
+			               &buf[FTS_MAX_POINTS_LENGTH + FTS_GRIP_ONE]);
+			if (retval < 0) {
+				TPD_INFO("[prevent-ft] read grip_info two fail");
+			}
+		}
+	}
+
+	if (ret < 0) {
+		TPD_INFO("read touch point two fail");
+		return -EINVAL;
+	}
+
+	/*    fts_show_touch_buffer(buf, FTS_MAX_POINTS_LENGTH);*/
+
+	point_num = buf[1] & 0xFF;
+
+	if (point_num > max_num) {
+		TPD_INFO("invalid point_num(%d),max_num(%d)", point_num, max_num);
+		return -EINVAL;
+	}
+
+	for (i = 0; i < max_num; i++) {
+		base = 6 * i;
+		base_prevent = 4 * i;
+		pointid = (buf[4 + base]) >> 4;
+
+		if (pointid >= FTS_MAX_ID) {
+			break;
+
+		} else if (pointid >= max_num) {
+			TPD_INFO("ID(%d) beyond max_num(%d)", pointid, max_num);
+			return -EINVAL;
+		}
+
+		touch_point++;
+		if (!ts_data->high_resolution_support && !ts_data->high_resolution_support_x8) {
+			points[pointid].x = ((buf[2 + base] & 0x0F) << 8) + (buf[3 + base] & 0xFF);
+			points[pointid].y = ((buf[4 + base] & 0x0F) << 8) + (buf[5 + base] & 0xFF);
+			points[pointid].touch_major = buf[7 + base];
+			points[pointid].width_major = buf[7 + base];
+			points[pointid].z =  buf[7 + base];
+			event_flag = (buf[2 + base] >> 6);
+
+			if (ts_data->ft3419u_grip_v2_support) {
+				points[pointid].tx_press = buf[62 + base_prevent];
+				points[pointid].rx_press = buf[63 + base_prevent];
+				points[pointid].tx_er = buf[65 + base_prevent];
+				points[pointid].rx_er = buf[64 + base_prevent];
+				TPD_DEBUG("[prevent-ft] id:%2d x:%3d y:%3d | tx_press:%3d rx_press:%3d tx_er:%3d rx_er:%3d", pointid, points[pointid].x, points[pointid].y,
+					points[pointid].tx_press, points[pointid].rx_press, points[pointid].tx_er, points[pointid].rx_er);
+			}
+		} else if (ts_data->high_resolution_support_x8) {
+			points[pointid].x = (((buf[2 + base] & 0x0F) << 11) +
+			                     ((buf[3 + base] & 0xFF) << 3) +
+			                     ((buf[6 + base] >> 5) & 0x07));
+			points[pointid].y = (((buf[4 + base] & 0x0F) << 11) +
+			                     ((buf[5 + base] & 0xFF) << 3) +
+			                     ((buf[6 + base] >> 2) & 0x07));
+			points[pointid].touch_major = buf[7 + base];
+			points[pointid].width_major = buf[7 + base];
+			points[pointid].z =  buf[7 + base];
+			event_flag = (buf[2 + base] >> 6);
+
+			if (ts_data->ft3419u_grip_v2_support) {
+				points[pointid].tx_press = buf[62 + base_prevent];
+				points[pointid].rx_press = buf[63 + base_prevent];
+				points[pointid].tx_er = buf[65 + base_prevent];
+				points[pointid].rx_er = buf[64 + base_prevent];
+				TPD_DEBUG("[prevent-ft] id:%2d x:%3d y:%3d | tx_press:%3d rx_press:%3d tx_er:%3d rx_er:%3d", pointid, points[pointid].x, points[pointid].y,
+					points[pointid].tx_press, points[pointid].rx_press, points[pointid].tx_er, points[pointid].rx_er);
+			}
+		}
+
+		points[pointid].status = 0;
+
+		if ((event_flag == 0) || (event_flag == 2)) {
+			points[pointid].status = 1;
+			obj_attention |= (1 << pointid);
+
+			if (point_num == 0) {
+				TPD_INFO("abnormal touch data from fw");
+				return -EIO;
+			}
+		}
+	}
+
+	if (touch_point == 0) {
+		TPD_INFO("no touch point information");
+		return -EINVAL;
+	}
+
+	return obj_attention;
+}
+
+static void fts_health_report(void *chip_data, struct monitor_data *mon_data)
+{
+	int ret = 0;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	ret = touch_i2c_read_byte(ts_data->client, 0x01);
+	if(ret != 0xff) {
+		if ((ret & 0x01) && (ts_data->water_mode == 0)) {
+			ts_data->water_mode = 1;
+			TPD_INFO("%s:water flag =%d", __func__, ts_data->water_mode);
+		}
+		if ((!(ret & 0x01)) && (ts_data->water_mode == 1)) {
+			ts_data->water_mode = 0;
+			TPD_INFO("%s:water flag =%d", __func__, ts_data->water_mode);
+		}
+	}
+	TPD_INFO("Health register(0x01):0x%x", ret);
+	ret = touch_i2c_read_byte(ts_data->client, FTS_REG_HEALTH_1);
+	TPD_INFO("Health register(0xFD):0x%x", ret);
+	ret = touch_i2c_read_byte(ts_data->client, FTS_REG_HEALTH_2);
+	TPD_INFO("Health register(0xFE):0x%x", ret);
+}
+
+static int fts_get_gesture_info(void *chip_data, struct gesture_info *gesture)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int ret = 0;
+	u8 cmd = FTS_REG_GESTURE_OUTPUT_ADDRESS;
+	u8 buf[FTS_GESTURE_DATA_LEN] = { 0 };
+	u8 gesture_id = 0;
+	u8 point_num = 0;
+
+	ret = touch_i2c_read_block(ts_data->client, cmd, FTS_GESTURE_DATA_LEN - 2,
+	                           &buf[2]);
+
+	if (ret < 0) {
+		TPD_INFO("read gesture data fail");
+		return ret;
+	}
+
+	gesture_id = buf[2];
+	point_num = buf[3];
+	TPD_INFO("gesture_id=%d, point_num=%d", gesture_id, point_num);
+
+	switch (gesture_id) {
+	case GESTURE_DOUBLE_TAP:
+		gesture->gesture_type = DOU_TAP;
+		break;
+
+	case GESTURE_UP_VEE:
+		gesture->gesture_type = UP_VEE;
+		break;
+
+	case GESTURE_DOWN_VEE:
+		gesture->gesture_type = DOWN_VEE;
+		break;
+
+	case GESTURE_LEFT_VEE:
+		gesture->gesture_type = LEFT_VEE;
+		break;
+
+	case GESTURE_RIGHT_VEE:
+		gesture->gesture_type = RIGHT_VEE;
+		break;
+
+	case GESTURE_O_CLOCKWISE:
+		gesture->clockwise = 1;
+		gesture->gesture_type = CIRCLE_GESTURE;
+		break;
+
+	case GESTURE_O_ANTICLOCK:
+		gesture->clockwise = 0;
+		gesture->gesture_type = CIRCLE_GESTURE;
+		break;
+
+	case GESTURE_DOUBLE_SWIP:
+		gesture->gesture_type = DOU_SWIP;
+		break;
+
+	case GESTURE_LEFT2RIGHT_SWIP:
+		gesture->gesture_type = LEFT2RIGHT_SWIP;
+		break;
+
+	case GESTURE_RIGHT2LEFT_SWIP:
+		gesture->gesture_type = RIGHT2LEFT_SWIP;
+		break;
+
+	case GESTURE_UP2DOWN_SWIP:
+		gesture->gesture_type = UP2DOWN_SWIP;
+		break;
+
+	case GESTURE_DOWN2UP_SWIP:
+		gesture->gesture_type = DOWN2UP_SWIP;
+		break;
+
+	case GESTURE_M:
+		gesture->gesture_type = M_GESTRUE;
+		break;
+
+	case GESTURE_W:
+		gesture->gesture_type = W_GESTURE;
+		break;
+
+	case GESTURE_FINGER_PRINT:
+		fts_read_fod_info(ts_data);
+		TPD_INFO("FOD event type:0x%x", ts_data->fod_info.event_type);
+		TPD_DEBUG("%s, fgerprint, touched = %d, fp_down = %d, fp_down_report = %d, \n",
+		          __func__, ts_data->ts->view_area_touched, ts_data->fod_info.fp_down,
+		          ts_data->fod_info.fp_down_report);
+
+		if (ts_data->fod_info.event_type == FTS_EVENT_FOD) {
+			if (ts_data->fod_info.fp_down && !ts_data->fod_info.fp_down_report) {
+				gesture->gesture_type = FINGER_PRINTDOWN;
+				ts_data->fod_info.fp_down_report = 1;
+
+			} else if (!ts_data->fod_info.fp_down && ts_data->fod_info.fp_down_report) {
+				gesture->gesture_type = FRINGER_PRINTUP;
+				ts_data->fod_info.fp_down_report = 0;
+			}
+
+			gesture->Point_start.x = ts_data->fod_info.fp_x;
+			gesture->Point_start.y = ts_data->fod_info.fp_y;
+			gesture->Point_end.x = ts_data->fod_info.fp_area_rate;
+			gesture->Point_end.y = 0;
+		}
+
+		break;
+
+	case GESTURE_SINGLE_TAP:
+		gesture->gesture_type = SINGLE_TAP;
+		break;
+
+	default:
+		gesture->gesture_type = UNKOWN_GESTURE;
+	}
+
+	if ((gesture->gesture_type != FINGER_PRINTDOWN)
+	    && (gesture->gesture_type != FRINGER_PRINTUP)
+	    && (gesture->gesture_type != UNKOWN_GESTURE)) {
+		gesture->Point_start.x = (u16)((buf[4] << 8) + buf[5]);
+		gesture->Point_start.y = (u16)((buf[6] << 8) + buf[7]);
+		gesture->Point_end.x = (u16)((buf[8] << 8) + buf[9]);
+		gesture->Point_end.y = (u16)((buf[10] << 8) + buf[11]);
+		gesture->Point_1st.x = (u16)((buf[12] << 8) + buf[13]);
+		gesture->Point_1st.y = (u16)((buf[14] << 8) + buf[15]);
+		gesture->Point_2nd.x = (u16)((buf[16] << 8) + buf[17]);
+		gesture->Point_2nd.y = (u16)((buf[18] << 8) + buf[19]);
+		gesture->Point_3rd.x = (u16)((buf[20] << 8) + buf[21]);
+		gesture->Point_3rd.y = (u16)((buf[22] << 8) + buf[23]);
+		gesture->Point_4th.x = (u16)((buf[24] << 8) + buf[25]);
+		gesture->Point_4th.y = (u16)((buf[26] << 8) + buf[27]);
+	}
+
+	return 0;
+}
+
+static void fts_enable_fingerprint_underscreen(void *chip_data, uint32_t enable)
+{
+	int ret = 0;
+	u8 val = 0xFF;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+
+	TPD_INFO("%s:enable=%d", __func__, enable);
+	ret = touch_i2c_read_byte(ts_data->client, FTS_REG_FOD_EN);
+
+	if (ret < 0) {
+		TPD_INFO("%s: read FOD enable(%x) fail", __func__, FTS_REG_FOD_EN);
+		return;
+	}
+
+	TPD_DEBUG("%s, fgerprint, touched = %d, event_type = %d, fp_down = %d. fp_down_report = %d \n",
+	          __func__, ts_data->ts->view_area_touched, ts_data->fod_info.event_type,
+	          ts_data->fod_info.fp_down, ts_data->fod_info.fp_down_report);
+	val = ret;
+
+	if (enable) {
+		val |= 0x02;
+		ts_data->fp_en = 1;
+
+		if ((!ts_data->ts->view_area_touched)
+		    && (ts_data->fod_info.event_type != FTS_EVENT_FOD)
+		    && (!ts_data->fod_info.fp_down)
+		    && (ts_data->fod_info.fp_down_report)) {   /* notouch, !38, 0, 1*/
+			ts_data->fod_info.fp_down_report = 0;
+			TPD_DEBUG("%s, fgerprint, fp_down_report status abnormal (notouch, 38!, 0, 1), needed to be reseted! \n",
+			          __func__);
+		}
+
+	} else {
+		val &= 0xFD;
+		ts_data->fp_en = 0;
+		ts_data->fod_info.fp_down = 0;
+		ts_data->fod_info.event_type = 0;
+		/*        ts_data->fod_info.fp_down_report = 0;*/
+	}
+
+	TPD_INFO("%s:write %x=%x.", __func__, FTS_REG_FOD_EN, val);
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_FOD_EN, val);
+
+	if (ret < 0) {
+		TPD_INFO("%s: write FOD enable(%x=%x) fail", __func__, FTS_REG_FOD_EN, val);
+	}
+}
+
+static void fts_screenon_fingerprint_info(void *chip_data,
+        struct fp_underscreen_info *fp_tpinfo)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	memset(fp_tpinfo, 0, sizeof(struct fp_underscreen_info));
+	TPD_INFO("FOD event type:0x%x", ts_data->fod_info.event_type);
+
+	if (ts_data->fod_info.fp_down) {
+		fp_tpinfo->touch_state = FINGERPRINT_DOWN_DETECT;
+
+	} else {
+		fp_tpinfo->touch_state = FINGERPRINT_UP_DETECT;
+	}
+
+	fp_tpinfo->area_rate = ts_data->fod_info.fp_area_rate;
+	fp_tpinfo->x = ts_data->fod_info.fp_x;
+	fp_tpinfo->y = ts_data->fod_info.fp_y;
+
+	TPD_INFO("FOD Info:touch_state:%d,area_rate:%d,x:%d,y:%d[fp_down:%d]",
+	         fp_tpinfo->touch_state, fp_tpinfo->area_rate, fp_tpinfo->x,
+	         fp_tpinfo->y, ts_data->fod_info.fp_down);
+}
+
+static void fts_register_info_read(void *chip_data, uint16_t register_addr,
+                                   uint8_t *result, uint8_t length)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	u8 addr = (u8)register_addr;
+
+	touch_i2c_read_block(ts_data->client, addr, length, result);
+}
+
+static void fts_set_touch_direction(void *chip_data, uint8_t dir)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	ts_data->touch_direction = dir;
+}
+
+static uint8_t fts_get_touch_direction(void *chip_data)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	return ts_data->touch_direction;
+}
+
+static int fts_smooth_lv_set(void *chip_data, int level)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	TPD_INFO("set smooth lv to %d", level);
+
+	return touch_i2c_write_byte(ts_data->client, FTS_REG_SMOOTH_LEVEL, level);
+}
+
+static int fts_sensitive_lv_set(void *chip_data, int level)
+{
+	int ret = 0;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	TPD_INFO("set sensitive lv to %d", level);
+
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_STABLE_DISTANCE_AFTER_N, level);
+	if (ret < 0) {
+		TPD_INFO("write FTS_REG_STABLE_DISTANCE_AFTER_N fail");
+		return ret;
+	}
+
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_STABLE_DISTANCE, level);
+	if (ret < 0) {
+		TPD_INFO("write FTS_REG_STABLE_DISTANCE fail");
+		return ret;
+	}
+
+	return 0;
+}
+
+static int fts_set_high_frame_rate(void *chip_data, int level, int time)
+{
+	int ret = 0;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	struct touchpanel_data *ts = i2c_get_clientdata(ts_data->client);
+
+	TPD_INFO("set high_frame_rate to %d, keep %ds", level, time);
+	if (level != 0) {
+		level = 4;
+	}
+	level = level | (!ts->noise_level);
+
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_GAME_MODE_EN, level);
+	if (ret < 0) {
+		return ret;
+	}
+	if (level) {
+		ret = touch_i2c_write_byte(ts_data->client, FTS_REG_HIGH_FRAME_TIME, time);
+	}
+	return ret;
+}
+
+static void fts_set_gesture_state(void *chip_data, int state)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	TPD_INFO("%s:state:%d!\n", __func__, state);
+	ts_data->gesture_state = state;
+}
+
+static void fts_aiunit_game_info(void *chip_data)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	u8 cmd[MAX_AIUNIT_SET_NUM * 10 + 1] = { 0 };
+	int i = 0;
+	int ret = 0;
+
+	if (ts_data == NULL) {
+		return;
+	}
+
+	if (ts_data->ts->is_suspended) {
+		return;
+	}
+
+	if (ts_data->ts->aiunit_game_enable) {
+		ret = touch_i2c_write_byte(ts_data->client, FTS_CMD_GAME_AIUINIT_EN, 1);
+			if (ret < 0)
+				TPD_INFO("%s, write 1 to reg 0xc9 failed \n", __func__);
+			msleep(3);
+				ret = touch_i2c_read_byte(ts_data->client, FTS_CMD_GAME_AIUINIT_EN);
+			if (ret == 1) {
+				TPD_INFO("%s: aiunit game info enter suc.\n", __func__);
+			} else {
+				TPD_INFO("%s: aiunit game info enter fail.\n", __func__);
+			}
+	} else {
+		ret = touch_i2c_write_byte(ts_data->client, FTS_CMD_GAME_AIUINIT_EN, 0);
+			if (ret < 0)
+				TPD_INFO("%s, write 0 to reg 0xc9 failed \n", __func__);
+			msleep(3);
+				ret = touch_i2c_read_byte(ts_data->client, FTS_CMD_GAME_AIUINIT_EN);
+			if (ret == 0) {
+				TPD_INFO("%s: aiunit game info exit suc.\n", __func__);
+			} else {
+				TPD_INFO("%s: aiunit game info exit fail.\n", __func__);
+		}
+	}
+
+	cmd[0] = FTS_CMD_GAME_AIUINIT;
+	for (i = 0; i < MAX_AIUNIT_SET_NUM; i++) {
+		cmd[10 * i + 1] = ts_data->ts->tp_ic_aiunit_game_info[i].gametype;
+		cmd[10 * i + 2] = ts_data->ts->tp_ic_aiunit_game_info[i].aiunit_game_type;
+		cmd[10 * i + 3] = ts_data->ts->tp_ic_aiunit_game_info[i].left & 0xff;
+		cmd[10 * i + 4] = (ts_data->ts->tp_ic_aiunit_game_info[i].left >> 8) & 0xff;
+		cmd[10 * i + 5] = ts_data->ts->tp_ic_aiunit_game_info[i].top & 0xff;
+		cmd[10 * i + 6] = (ts_data->ts->tp_ic_aiunit_game_info[i].top >> 8) & 0xff;
+		cmd[10 * i + 7] = ts_data->ts->tp_ic_aiunit_game_info[i].right & 0xff;
+		cmd[10 * i + 8] = (ts_data->ts->tp_ic_aiunit_game_info[i].right >> 8) & 0xff;
+		cmd[10 * i + 9] = ts_data->ts->tp_ic_aiunit_game_info[i].bottom & 0xff;
+		cmd[10 * i + 10] = (ts_data->ts->tp_ic_aiunit_game_info[i].bottom >> 8) & 0xff;
+		TPD_INFO("type:%x,%x left:%x,%x top:%x,%x right:%x,%x bottom:%x,%x.", \
+				cmd[10 * i + 1], cmd[10 * i + 2], \
+				cmd[10 * i + 3], cmd[10 * i + 4], \
+				cmd[10 * i + 5], cmd[10 * i + 6], \
+				cmd[10 * i + 7], cmd[10 * i + 8], \
+				cmd[10 * i + 9], cmd[10 * i + 10]);
+	}
+
+	ret = touch_i2c_write(ts_data->client, cmd, 10 * MAX_AIUNIT_SET_NUM + 1);
+	if (ret < 0) {
+		TPD_INFO("fts tp aiunit game write fail");
+	}
+}
+
+static void fts_rate_white_list_ctrl(void *chip_data, int value)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	u8 send_value = FTS_120HZ_REPORT_RATE;
+	int ret = 0;
+
+	TPD_INFO("fts_rate_white_list_ctrl to  value: %d", value);
+	if (ts_data == NULL) {
+		return;
+	}
+
+	if (ts_data->ts->is_suspended) {
+		return;
+	}
+
+	switch(value) {
+		/* TP RATE */
+	case FTS_WRITE_RATE_120:
+		send_value = FTS_120HZ_REPORT_RATE;
+		break;
+	case FTS_WRITE_RATE_180:
+		send_value = FTS_180HZ_REPORT_RATE;
+		break;
+	case FTS_WRITE_RATE_240:
+		send_value = FTS_240HZ_REPORT_RATE;
+		break;
+	case FTS_WRITE_RATE_360:
+		send_value = FTS_360HZ_REPORT_RATE;
+		break;
+	case FTS_WRITE_RATE_720:
+		send_value = FTS_720HZ_REPORT_RATE;
+		break;
+	default:
+		TPD_INFO("%s: report rate = %d, not support\n", __func__, value);
+		return;
+	}
+
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_REPORT_RATE, send_value);
+
+	if (ret < 0) {
+		TPD_INFO("write FTS_REG_REPORT_RATE fail");
+		return;
+	}
+}
+
+static int fts_diaphragm_touch_lv_set(void *chip_data, int value)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int ret = 0;
+	int regvalue = 0;
+
+	TPD_INFO("fts_diaphragm_touch_lv_set to %d", value);
+	if (ts_data == NULL) {
+		return 0;
+	}
+
+	switch(value) {
+	case DIAPHRAGM_DEFAULT_MODE:
+		regvalue = FTS_DIAPHRAGM_MODE_0;
+		break;
+	case DIAPHRAGM_FILM_MODE:
+		regvalue = FTS_DIAPHRAGM_MODE_1;
+		break;
+	case DIAPHRAGM_WATERPROOF_MODE:
+		regvalue = FTS_DIAPHRAGM_MODE_2;
+		break;
+	case DIAPHRAGM_FILM_WATERPROOF_MODE:
+		regvalue = FTS_DIAPHRAGM_MODE_3;
+		break;
+	default:
+		TPD_INFO("%s: report rate = %d, not support\n", __func__, value);
+		return 0;
+	}
+	ret = touch_i2c_write_byte(ts_data->client, FTS_REG_DIAPHRAGM_TOUCH_MODE_EN, regvalue);
+	if (ret < 0) {
+		TPD_INFO("write FTS_REG_DIAPHRAGM_TOUCH_MODE_EN fail");
+		return 0;
+	}
+
+	return 0;
+}
+
+static void fts_get_water_mode(void *chip_data)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	struct touchpanel_data *ts = i2c_get_clientdata(ts_data->client);
+	TPD_INFO("%s: water flag %d!\n", __func__, ts_data->water_mode);
+	if (ts_data->water_mode == 1) {
+		ts->water_mode = 1;
+	}
+	else {
+		ts->water_mode = 0;
+	}
+}
+
+static void fts_force_water_mode(void *chip_data, bool enable)
+{
+	TPD_INFO("%s: %s force_water_mode is not supported .\n", __func__, enable ? "Enter" : "Exit");
+}
+
+static struct oplus_touchpanel_operations fts_ops = {
+	.power_control              = fts_power_control,
+	.get_vendor                 = fts_get_vendor,
+	.get_chip_info              = fts_get_chip_info,
+	.fw_check                   = fts_fw_check,
+	.mode_switch                = fts_mode_switch,
+	.reset                      = fts_reset,
+	.reset_gpio_control         = fts_reset_gpio_control,
+	.fw_update                  = fts_fw_update,
+	.set_high_frame_rate        = fts_set_high_frame_rate,
+	.trigger_reason             = fts_u32_trigger_reason,
+	.get_touch_points           = fts_get_touch_points,
+	.health_report              = fts_health_report,
+	.get_gesture_info           = fts_get_gesture_info,
+	.ftm_process                = fts_ftm_process,
+	.enable_fingerprint         = fts_enable_fingerprint_underscreen,
+	.screenon_fingerprint_info  = fts_screenon_fingerprint_info,
+	.register_info_read         = fts_register_info_read,
+	.set_touch_direction        = fts_set_touch_direction,
+	.get_touch_direction        = fts_get_touch_direction,
+	.esd_handle                 = fts_esd_handle,
+	.smooth_lv_set              = fts_smooth_lv_set,
+	.sensitive_lv_set           = fts_sensitive_lv_set,
+	.set_gesture_state          = fts_set_gesture_state,
+	.aiunit_game_info           = fts_aiunit_game_info,
+	.rate_white_list_ctrl       = fts_rate_white_list_ctrl,
+	.diaphragm_touch_lv_set     = fts_diaphragm_touch_lv_set,
+	.get_water_mode             = fts_get_water_mode,
+	.force_water_mode           = fts_force_water_mode,
+};
+
+static struct focal_auto_test_operations ft3419u_test_ops = {
+	.auto_test_preoperation = ft3419u_auto_preoperation,
+	.test1 = ft3419u_noise_autotest,
+	.test2 = ft3419u_rawdata_autotest,
+	.test3 = ft3419u_uniformity_autotest,
+	.test4 = ft3419u_scap_cb_autotest,
+	.test5 = ft3419u_scap_rawdata_autotest,
+	.test6 = ft3419u_short_test,
+	.test7 = ft3419u_panel_differ_test,
+	.auto_test_endoperation = ft3419u_auto_endoperation,
+};
+
+static struct engineer_test_operations ft3419u_engineer_test_ops = {
+	.auto_test              = focal_auto_test,
+};
+
+static struct debug_info_proc_operations fts_debug_info_proc_ops = {
+	.delta_read        = fts_delta_read,
+	/*key_trigger_delta_read = fts_key_trigger_delta_read,*/
+	.baseline_read = fts_baseline_read,
+	.main_register_read = fts_main_register_read,
+	/*.self_delta_read   = fts_self_delta_read,*/
+};
+
+struct focal_debug_func focal_debug_ops = {
+	.esd_check_enable       = focal_esd_check_enable,
+	.get_esd_check_flag     = focal_get_esd_check_flag,
+	.get_fw_version         = focal_get_fw_version,
+	.dump_reg_sate          = focal_dump_reg_state,
+};
+
+static int ft3419u_parse_dts(struct chip_data_ft3419u *ts_data, struct i2c_client *client)
+{
+	struct device *dev;
+	struct device_node *np;
+
+	dev = &client->dev;
+	np = dev->of_node;
+
+	ts_data->high_resolution_support = of_property_read_bool(np, "high_resolution_support");
+	ts_data->high_resolution_support_x8 = of_property_read_bool(np, "high_resolution_support_x8");
+	TPD_INFO("%s:high_resolution_support is:%d %d\n", __func__, ts_data->high_resolution_support, ts_data->high_resolution_support_x8);
+
+	return 0;
+}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)
+static int fts_tp_probe(struct i2c_client *client)
+#else
+static int fts_tp_probe(struct i2c_client *client,
+                        const struct i2c_device_id *id)
+#endif
+{
+	struct chip_data_ft3419u *ts_data = NULL;
+	struct touchpanel_data *ts = NULL;
+	u64 time_counter = 0;
+	int ret = -1;
+
+	TPD_INFO("%s  is called\n", __func__);
+
+	reset_healthinfo_time_counter(&time_counter);
+
+	/*step1:Alloc chip_info*/
+	ts_data = kzalloc(sizeof(struct chip_data_ft3419u), GFP_KERNEL);
+
+	if (ts_data == NULL) {
+		TPD_INFO("ts_data kzalloc error\n");
+		ret = -ENOMEM;
+		return ret;
+	}
+
+	memset(ts_data, 0, sizeof(*ts_data));
+	g_fts_data = ts_data;
+
+	ts_data->ts_workqueue = create_singlethread_workqueue("fts_wq");
+	if (!ts_data->ts_workqueue) {
+		TPD_INFO("create fts workqueue fail");
+	}
+
+	fts_point_report_check_init(ts_data);
+
+	/*step2:Alloc common ts*/
+	ts = common_touch_data_alloc();
+
+	if (ts == NULL) {
+		TPD_INFO("ts kzalloc error\n");
+		goto ts_malloc_failed;
+	}
+
+	memset(ts, 0, sizeof(*ts));
+
+	/*step3:binding client && dev for easy operate*/
+	ts_data->dev = ts->dev;
+	ts_data->client = client;
+	ts_data->hw_res = &ts->hw_res;
+	ts_data->irq_num = ts->irq;
+	ts_data->ts = ts;
+	ts_data->monitor_data = &ts->monitor_data;
+	ts->debug_info_ops = &fts_debug_info_proc_ops;
+	ts->client = client;
+	ts->irq = client->irq;
+	i2c_set_clientdata(client, ts);
+	ts->dev = &client->dev;
+	ts->chip_data = ts_data;
+
+	/*step4:file_operations callback binding*/
+	ts->ts_ops = &fts_ops;
+	ts->engineer_ops = &ft3419u_engineer_test_ops;
+	ts->com_test_data.chip_test_ops = &ft3419u_test_ops;
+
+	ts->private_data = &focal_debug_ops;
+	ft3419u_parse_dts(ts_data, client);
+
+	/*step5:register common touch*/
+	ret = register_common_touch_device(ts);
+
+	if (ret < 0) {
+		goto err_register_driver;
+	}
+
+	ts_data->ft3419u_grip_v2_support = ts->kernel_grip_support;
+
+	/*step6:create ftxxxx-debug related proc files*/
+	fts_create_apk_debug_channel(ts_data);
+
+	/*step7:Chip Related function*/
+	focal_create_sysfs(client);
+
+	if (ts->health_monitor_support) {
+		tp_healthinfo_report(&ts->monitor_data, HEALTH_PROBE, &time_counter);
+	}
+	ts_data->probe_done = 1;
+	TPD_INFO("%s, probe normal end\n", __func__);
+
+	return 0;
+
+err_register_driver:
+	common_touch_data_free(ts);
+	ts = NULL;
+
+ts_malloc_failed:
+	kfree(ts_data);
+	ts_data = NULL;
+/*	ret = -1;*/
+
+	TPD_INFO("%s, probe error\n", __func__);
+
+	return ret;
+}
+
+static void fts_tp_shutdown(struct i2c_client *client)
+{
+	struct touchpanel_data *ts = i2c_get_clientdata(client);
+
+	TPD_INFO("%s is called\n", __func__);
+	tp_shutdown(ts);
+}
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
+static void fts_tp_remove(struct i2c_client *client)
+#else
+static int fts_tp_remove(struct i2c_client *client)
+#endif
+{
+	struct touchpanel_data *ts = i2c_get_clientdata(client);
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)ts->chip_data;
+
+	TPD_INFO("%s is called\n", __func__);
+	fts_point_report_check_exit(ts_data);
+	fts_release_apk_debug_channel(ts_data);
+	kfree(ts_data);
+	ts_data = NULL;
+
+	kfree(ts);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
+#else
+	return 0;
+#endif
+}
+
+static int fts_i2c_suspend(struct device *dev)
+{
+	struct touchpanel_data *ts = dev_get_drvdata(dev);
+
+	TPD_INFO("%s: is called\n", __func__);
+	tp_pm_suspend(ts);
+
+
+	return 0;
+}
+
+static int fts_i2c_resume(struct device *dev)
+{
+	struct touchpanel_data *ts = dev_get_drvdata(dev);
+
+	TPD_INFO("%s is called\n", __func__);
+	tp_pm_resume(ts);
+
+
+	return 0;
+}
+
+static const struct i2c_device_id tp_id[] = {
+	{ TPD_DEVICE, 0 },
+	{ }
+};
+
+static struct of_device_id tp_match_table[] = {
+	{ .compatible = TPD_DEVICE, },
+	{ },
+};
+
+static const struct dev_pm_ops tp_pm_ops = {
+	.suspend = fts_i2c_suspend,
+	.resume = fts_i2c_resume,
+};
+
+static struct i2c_driver tp_i2c_driver = {
+	.probe          = fts_tp_probe,
+	.remove         = fts_tp_remove,
+	.id_table       = tp_id,
+	.shutdown       = fts_tp_shutdown,
+	.driver         = {
+		.name   = TPD_DEVICE,
+		.of_match_table =  tp_match_table,
+		.pm = &tp_pm_ops,
+	},
+};
+
+static int __init tp_driver_init_ft3419u(void)
+{
+	TPD_INFO("%s is called\n", __func__);
+
+	if (!tp_judge_ic_match(TPD_DEVICE)) {
+		return 0;
+	}
+
+	if (i2c_add_driver(&tp_i2c_driver) != 0) {
+		TPD_INFO("unable to add i2c driver.\n");
+		return 0;
+	}
+
+	return 0;
+}
+
+/* should never be called */
+static void __exit tp_driver_exit_ft3419u(void)
+{
+	i2c_del_driver(&tp_i2c_driver);
+	return;
+}
+#ifdef CONFIG_TOUCHPANEL_LATE_INIT
+late_initcall(tp_driver_init_ft3419u);
+#else
+module_init(tp_driver_init_ft3419u);
+#endif
+module_exit(tp_driver_exit_ft3419u);
+
+MODULE_DESCRIPTION("Touchscreen FT3419U Driver");
+MODULE_LICENSE("GPL");
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/ft3419u_test.c b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/ft3419u_test.c
new file mode 100755
index 00000000..72817966
--- /dev/null
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3419u/ft3419u_test.c
@@ -0,0 +1,3022 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (C) 2018-2020 Oplus. All rights reserved.
+ */
+
+#include 
+#include "ft3419u_core.h"
+
+/*******Part0:LOG TAG Declear********************/
+
+#ifdef TPD_DEVICE
+#undef TPD_DEVICE
+#define TPD_DEVICE "ft3419u-test"
+#else
+#define TPD_DEVICE "ft3419u-test"
+#endif
+#define TPD_INFO(a, arg...)  pr_err("[TP]"TPD_DEVICE ": " a, ##arg)
+/*
+#define TPD_DEBUG(a, arg...)\
+	do {\
+		if (LEVEL_DEBUG == tp_debug)\
+			pr_err("[TP]"TPD_DEVICE ": " a, ##arg);\
+	}while(0)
+*/
+
+
+#define FTS_TEST_FUNC_ENTER() do { \
+	TPD_INFO("[FTS_TS][TEST]%s: Enter\n", __func__); \
+} while (0)
+
+#define FTS_TEST_FUNC_EXIT()  do { \
+	TPD_INFO("[FTS_TS][TEST]%s: Exit(%d)\n", __func__, __LINE__); \
+} while (0)
+
+
+#define FTS_TEST_SAVE_INFO(fmt, args...) do { \
+	if (g_fts_data->s) { \
+        seq_printf(g_fts_data->s, fmt, ##args); \
+	} \
+	TPD_INFO(fmt, ##args); \
+} while (0)
+
+#define FTS_TEST_SAVE_ERR(fmt, args...)  do { \
+	if (g_fts_data->s) { \
+        seq_printf(g_fts_data->s, fmt, ##args); \
+	} \
+	TPD_INFO(fmt, ##args); \
+} while (0)
+
+#define SHORT_MIN_CC                    1200
+#define SHORT_MIN_CG                    1200
+
+#define  SCAP_CB_ON_GCB_MIN             -256
+#define  SCAP_CB_ON_GCB_MAX             256
+#define  SCAP_CB_OFF_GCB_MIN            -256
+#define  SCAP_CB_OFF_GCB_MAX            256
+
+
+enum wp_type {
+	WATER_PROOF_OFF = 0,
+	WATER_PROOF_ON = 1,
+	HIGH_SENSITIVITY = 2,
+	HOV = 3,
+	WATER_PROOF_ON_TX = 100,
+	WATER_PROOF_ON_RX,
+	WATER_PROOF_OFF_TX,
+	WATER_PROOF_OFF_RX,
+};
+
+enum byte_mode {
+	DATA_ONE_BYTE,
+	DATA_TWO_BYTE,
+};
+
+enum normalize_type {
+	NORMALIZE_OVERALL,
+	NORMALIZE_AUTO,
+};
+
+
+#define MAX_LENGTH_TEST_NAME            64
+
+
+static void sys_delay(int ms)
+{
+	msleep(ms);
+}
+
+int focal_abs(int value)
+{
+	if (value < 0) {
+		value = 0 - value;
+	}
+
+	return value;
+}
+
+void print_buffer(int *buffer, int length, int line_num)
+{
+	int i = 0;
+	int j = 0;
+	int tmpline = 0;
+	char *tmpbuf = NULL;
+	int tmplen = 0;
+	int cnt = 0;
+
+	if ((NULL == buffer) || (length <= 0)) {
+		TPD_INFO("buffer/length(%d) fail", length);
+		return;
+	}
+
+	tmpline = line_num ? line_num : length;
+	tmplen = tmpline * 6 + 128;
+	tmpbuf = kzalloc(tmplen, GFP_KERNEL);
+
+	if (!tmpbuf) {
+		TPD_INFO("%s, alloc failed \n", __func__);
+		return;
+	}
+
+	for (i = 0; i < length; i = i + tmpline) {
+		cnt = 0;
+
+		for (j = 0; j < tmpline; j++) {
+			cnt += snprintf(tmpbuf + cnt, tmplen - cnt, "%5d ", buffer[i + j]);
+
+			if ((cnt >= tmplen) || ((i + j + 1) >= length)) {
+				break;
+			}
+		}
+
+		TPD_DEBUG("%s", tmpbuf);
+	}
+
+	if (tmpbuf) {
+		kfree(tmpbuf);
+		tmpbuf = NULL;
+	}
+}
+
+#define NODE_MATCH      1
+#define CHANNEL_MATCH   2
+#define CHEN_MATCH      3
+#define ONE_MATCH       4
+int ft3419u_output_data(int *buffer, struct chip_data_ft3419u *ts_data,
+                       struct auto_testdata *focal_testdata, int limit_type)
+{
+	uint8_t data_buf[64];
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int i = 0;
+	int num_each_line = 0;
+	int data_volumn = 0;
+
+	if (limit_type == NODE_MATCH) {
+		num_each_line = rx_num;
+		data_volumn = rx_num * tx_num;
+
+	} else if (limit_type == CHANNEL_MATCH) {
+		num_each_line = rx_num + tx_num;
+		data_volumn = (rx_num + tx_num) * 2;
+	} else if (limit_type == CHEN_MATCH) {
+		num_each_line = rx_num;
+		data_volumn = rx_num + tx_num;
+	} else if (limit_type == ONE_MATCH) {
+		num_each_line = rx_num;
+		data_volumn = 1;
+	}
+
+	memset(data_buf, 0, sizeof(data_buf));
+
+	for (i = 0; i < data_volumn; i += 1) {
+		snprintf(data_buf, 64, "%d,", buffer[i]);
+		tp_test_write(focal_testdata->fp, focal_testdata->length, data_buf,
+		              strlen(data_buf), focal_testdata->pos);
+
+		if (!((i + 1) % num_each_line) || (i == data_volumn - 1)) {
+			snprintf(data_buf, 64, "\n");
+			tp_test_write(focal_testdata->fp, focal_testdata->length, data_buf,
+			              strlen(data_buf), focal_testdata->pos);
+		}
+	}
+
+	return 0;
+}
+
+/********************************************************************
+* test read/write interface
+*******************************************************************/
+static int fts_test_bus_read(u8 *cmd, int cmdlen, u8 *data, int datalen)
+{
+	int ret = 0;
+	unsigned char *read_buf = NULL;
+	unsigned char *write_buf = NULL;
+
+	read_buf = (u8 *)kzalloc(datalen * sizeof(u8), GFP_KERNEL);
+
+	if (NULL == read_buf) {
+	   FTS_TEST_SAVE_ERR("mass read_buf buffer malloc fail\n");
+	   return -ENOMEM;
+	}
+
+	write_buf = (u8 *)kzalloc(cmdlen * sizeof(u8), GFP_KERNEL);
+
+	if (NULL == write_buf) {
+	   FTS_TEST_SAVE_ERR("mass write_buf buffer malloc fail\n");
+	   ret = -ENOMEM;
+	   goto malloc_fail;
+	}
+
+	memcpy(write_buf, cmd, cmdlen);
+
+	ret = touch_i2c_read(g_fts_data->client, (char *)write_buf, cmdlen,
+						(char *)read_buf, datalen);
+	memcpy(data, read_buf, datalen);
+
+	kfree(write_buf);
+malloc_fail:
+	kfree(read_buf);
+
+	if (ret < 0) {
+	   return ret;
+
+	} else {
+	   return 0;
+	}
+}
+
+static int fts_test_bus_write(u8 *writebuf, int writelen)
+{
+	int ret = 0;
+
+	ret = touch_i2c_write_block(g_fts_data->client, writebuf[0], writelen - 1,
+							   &writebuf[1]);
+
+	if (ret < 0) {
+	   return ret;
+
+	} else {
+	   return 0;
+	}
+}
+
+static int fts_test_read_reg(u8 addr, u8 *val)
+{
+	int ret = 0;
+
+	ret = touch_i2c_read_block(g_fts_data->client, addr, 1, val);
+
+	if (ret < 0) {
+	   return ret;
+
+	} else {
+	   return 0;
+	}
+}
+
+static int fts_test_write_reg(u8 addr, u8 val)
+{
+	int ret;
+	u8 cmd[2] = {0};
+
+	cmd[0] = addr;
+	cmd[1] = val;
+	ret = fts_test_bus_write(cmd, 2);
+
+	return ret;
+}
+
+static int fts_test_read(u8 addr, u8 *readbuf, int readlen)
+{
+	int ret = 0;
+	int i = 0;
+	int packet_length = 0;
+	int packet_num = 0;
+	int packet_remainder = 0;
+	int offset = 0;
+	int byte_num = readlen;
+
+	packet_num = byte_num / BYTES_PER_TIME;
+	packet_remainder = byte_num % BYTES_PER_TIME;
+
+	if (packet_remainder) {
+	   packet_num++;
+	}
+
+	if (byte_num < BYTES_PER_TIME) {
+	   packet_length = byte_num;
+
+	} else {
+	   packet_length = BYTES_PER_TIME;
+	}
+
+	/* FTS_TEST_DBG("packet num:%d, remainder:%d", packet_num, packet_remainder); */
+
+	ret = fts_test_bus_read(&addr, 1, &readbuf[offset], packet_length);
+
+	if (ret < 0) {
+	   FTS_TEST_SAVE_ERR("read buffer fail\n");
+	   return ret;
+	}
+
+	for (i = 1; i < packet_num; i++) {
+	   offset += packet_length;
+
+	   if ((i == (packet_num - 1)) && packet_remainder) {
+		   packet_length = packet_remainder;
+	   }
+
+
+	   ret = fts_test_bus_read(NULL, 0, &readbuf[offset],
+							   packet_length);
+
+	   if (ret < 0) {
+		   FTS_TEST_SAVE_ERR("read buffer fail\n");
+		   return ret;
+	   }
+	}
+
+	return 0;
+}
+
+static int fts_abs(int value)
+{
+	if (value < 0)
+        value = 0 - value;
+
+	return value;
+}
+
+/*
+ * read_mass_data - read rawdata/short test data
+ * addr - register addr which read data from
+ * byte_num - read data length, unit:byte
+ * buf - save data
+ *
+ * return 0 if read data succuss, otherwise return error code
+ */
+static int read_mass_data(u8 addr, int byte_num, int *buf)
+{
+	int ret = 0;
+	int i = 0;
+	u8 *data = NULL;
+
+	data = (u8 *)kzalloc(byte_num * sizeof(u8), GFP_KERNEL);
+
+	if (NULL == data) {
+		FTS_TEST_SAVE_ERR("mass data buffer malloc fail\n");
+		return -ENOMEM;
+	}
+
+	/* read rawdata buffer */
+	TPD_INFO("mass data len:%d", byte_num);
+	ret = fts_test_read(addr, data, byte_num);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read mass data fail\n");
+		goto read_massdata_err;
+	}
+
+	for (i = 0; i < byte_num; i = i + 2) {
+		buf[i >> 1] = (int)(short)((data[i] << 8) + data[i + 1]);
+	}
+
+	ret = 0;
+read_massdata_err:
+	kfree(data);
+	return ret;
+}
+
+
+/********************************************************************
+ * test global function enter work/factory mode
+ *******************************************************************/
+static int enter_work_mode(void)
+{
+	int ret = 0;
+	u8 mode = 0;
+	int i = 0;
+	int j = 0;
+
+	TPD_INFO("%s +\n", __func__);
+	ret = fts_test_read_reg(DEVIDE_MODE_ADDR, &mode);
+
+	if ((ret >= 0) && (0x00 == mode)) {
+		return 0;
+	}
+
+	for (i = 0; i < ENTER_WORK_FACTORY_RETRIES; i++) {
+		ret = fts_test_write_reg(DEVIDE_MODE_ADDR, 0x00);
+
+		if (ret >= 0) {
+			sys_delay(FACTORY_TEST_DELAY);
+
+			for (j = 0; j < 20; j++) {
+				ret = fts_test_read_reg(DEVIDE_MODE_ADDR, &mode);
+
+				if ((ret >= 0) && (0x00 == mode)) {
+					TPD_INFO("enter work mode success");
+					return 0;
+
+				} else {
+					sys_delay(FACTORY_TEST_DELAY);
+				}
+			}
+		}
+
+		sys_delay(50);
+	}
+
+	if (i >= ENTER_WORK_FACTORY_RETRIES) {
+		FTS_TEST_SAVE_ERR("Enter work mode fail\n");
+		return -EIO;
+	}
+
+	TPD_INFO("%s -\n", __func__);
+	return 0;
+}
+
+
+static int fts_special_operation_for_samsung(struct chip_data_ft3419u *ts_data)
+{
+	int ret = 0;
+
+	if (true ==
+	    ts_data->use_panelfactory_limit) {                      /*only for firmware released to samsung factory*/
+		ret = fts_test_write_reg(FTS_REG_SAMSUNG_SPECIFAL, 0x01);
+
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("write FTS_REG_SAMSUNG_SPECIFAL fail at %s,ret=%d\n", __func__, ret);
+			return -EIO;
+		}
+	}
+
+	return ret;
+}
+
+
+#define FTS_FACTORY_MODE 0x40
+static int enter_factory_mode(struct chip_data_ft3419u *ts_data)
+{
+	int ret = 0;
+	u8 mode = 0;
+	int i = 0;
+	int j = 0;
+
+	ret = fts_test_read_reg(DEVIDE_MODE_ADDR, &mode);
+
+	if ((ret >= 0) && (FTS_FACTORY_MODE == mode)) {
+		fts_special_operation_for_samsung(ts_data);
+		return 0;
+	}
+
+	for (i = 0; i < ENTER_WORK_FACTORY_RETRIES; i++) {
+		ret = fts_test_write_reg(DEVIDE_MODE_ADDR, 0x40);
+
+		if (ret >= 0) {
+			sys_delay(FACTORY_TEST_DELAY);
+
+			for (j = 0; j < 20; j++) {
+				ret = fts_test_read_reg(DEVIDE_MODE_ADDR, &mode);
+
+				if ((ret >= 0) && (FTS_FACTORY_MODE == mode)) {
+					TPD_INFO("enter factory mode success");
+					sys_delay(200);
+					fts_special_operation_for_samsung(ts_data);
+					return 0;
+
+				} else {
+					sys_delay(FACTORY_TEST_DELAY);
+				}
+			}
+		}
+
+		sys_delay(50);
+	}
+
+	if (i >= ENTER_WORK_FACTORY_RETRIES) {
+		FTS_TEST_SAVE_ERR("Enter factory mode fail\n");
+		return -EIO;
+	}
+
+	fts_special_operation_for_samsung(ts_data);
+	return 0;
+}
+
+static int get_channel_num(struct chip_data_ft3419u *ts_data)
+{
+	int ret = 0;
+	u8 tx_num = 0;
+	u8 rx_num = 0;
+
+	ret = fts_test_read_reg(FACTORY_REG_CHX_NUM, &tx_num);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read tx_num register fail\n");
+		return ret;
+	}
+
+	ret = fts_test_read_reg(FACTORY_REG_CHY_NUM, &rx_num);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read rx_num register fail\n");
+		return ret;
+	}
+
+	if ((tx_num != ts_data->hw_res->tx_num)
+	    || (rx_num != ts_data->hw_res->rx_num)) {
+		FTS_TEST_SAVE_ERR("channel num check fail, tx_num:%d-%d, rx_num:%d-%d\n",
+		                  tx_num, ts_data->hw_res->tx_num,
+		                  rx_num, ts_data->hw_res->rx_num);
+		return -EIO;
+	}
+
+	return 0;
+}
+
+static int read_rawdata(u8 off_addr, u8 off_val, u8 rawdata_addr, int byte_num,
+                        int *data)
+{
+	int ret = 0;
+
+	/* set line addr or rawdata start addr */
+	ret = fts_test_write_reg(off_addr, off_val);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("wirte line/start addr fail\n");
+		return ret;
+	}
+
+	ret = read_mass_data(rawdata_addr, byte_num, data);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read rawdata fail\n");
+		return ret;
+	}
+
+	return 0;
+}
+
+static int start_scan(void)
+{
+	int ret = 0;
+	u8 addr = 0;
+	u8 val = 0;
+	u8 finish_val = 0;
+	int times = 0;
+
+	addr = DEVIDE_MODE_ADDR;
+	val = 0xC0;
+	finish_val = 0x40;
+
+	/* write register to start scan */
+	ret = fts_test_write_reg(addr, val);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("write start scan mode fail\n");
+		return ret;
+	}
+
+	/* Wait for the scan to complete */
+	while (times++ < FACTORY_TEST_RETRY) {
+		sys_delay(FACTORY_TEST_DELAY);
+
+		ret = fts_test_read_reg(addr, &val);
+
+		if ((ret >= 0) && (val == finish_val)) {
+			break;
+
+		} else {
+			TPD_INFO("reg%x=%x,retry:%d", addr, val, times);
+		}
+	}
+
+	if (times >= FACTORY_TEST_RETRY) {
+		FTS_TEST_SAVE_ERR("scan timeout\n");
+		return -EIO;
+	}
+
+	return 0;
+}
+
+/*
+ * start_scan - start to scan a frame
+ */
+int ft3419u_start_scan(int frame_num)
+{
+	int ret = 0;
+	u8 addr = 0;
+	u8 val = 0;
+	u8 finish_val = 0;
+	int times = 0;
+
+	addr = DEVIDE_MODE_ADDR;
+	val = 0xC0;
+	finish_val = 0x40;
+
+	/* write register to start scan */
+	ret = fts_test_write_reg(addr, val);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("write start scan mode fail\n");
+		return ret;
+	}
+
+	sys_delay(frame_num * FACTORY_TEST_DELAY / 2);
+	/* Wait for the scan to complete */
+	while (times++ < 100) {
+		sys_delay(FACTORY_TEST_DELAY);
+
+		ret = fts_test_read_reg(addr, &val);
+		if ((ret >= 0) && (val == finish_val)) {
+			break;
+		} else
+			TPD_INFO("reg%x=%x,retry:%d", addr, val, times);
+	}
+
+	if (times >= 100) {
+		FTS_TEST_SAVE_ERR("scan timeout\n");
+		return -EIO;
+	}
+
+	return 0;
+}
+
+static bool get_fw_wp(u8 wp_ch_sel, enum wp_type water_proof_type)
+{
+	bool fw_wp_state = false;
+
+	switch (water_proof_type) {
+	case WATER_PROOF_ON:
+		/* bit5: 0-check in wp on, 1-not check */
+		fw_wp_state = !(wp_ch_sel & 0x20);
+		break;
+
+	case WATER_PROOF_ON_TX:
+		/* Bit6:  0-check Rx+Tx in wp mode  1-check one channel
+		   Bit2:  0-check Tx in wp mode;  1-check Rx in wp mode
+		*/
+		fw_wp_state = (!(wp_ch_sel & 0x40) || !(wp_ch_sel & 0x04));
+		break;
+
+	case WATER_PROOF_ON_RX:
+		fw_wp_state = (!(wp_ch_sel & 0x40) || (wp_ch_sel & 0x04));
+		break;
+
+	case WATER_PROOF_OFF:
+		/* bit7: 0-check in wp off, 1-not check */
+		fw_wp_state = !(wp_ch_sel & 0x80);
+		break;
+
+	case WATER_PROOF_OFF_TX:
+		/* Bit1-0:  00-check Tx in non-wp mode
+		            01-check Rx in non-wp mode
+		            10:check Rx+Tx in non-wp mode
+		*/
+		fw_wp_state = ((0x0 == (wp_ch_sel & 0x03)) || (0x02 == (wp_ch_sel & 0x03)));
+		break;
+
+	case WATER_PROOF_OFF_RX:
+		fw_wp_state = ((0x01 == (wp_ch_sel & 0x03)) || (0x02 == (wp_ch_sel & 0x03)));
+		break;
+
+	default:
+		break;
+	}
+
+	return fw_wp_state;
+}
+
+static int get_cb_ft3419u(int *cb_buf, int byte_num, bool is_cf)
+{
+	int ret = 0;
+	int i = 0;
+	u8 cb[SC_NUM_MAX] = { 0 };
+
+	if (byte_num > SC_NUM_MAX) {
+		FTS_TEST_SAVE_ERR("CB byte(%d)>max(%d)", byte_num, SC_NUM_MAX);
+		return -EINVAL;
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_MC_SC_CB_ADDR_OFF, 0);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("write cb addr offset fail\n");
+		return ret;
+	}
+
+	ret = fts_test_read(FACTORY_REG_MC_SC_CB_ADDR, cb, byte_num);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read cb fail\n");
+		return ret;
+	}
+
+	for (i = 0; i < byte_num; i = i + 2) {
+		cb_buf[i >> 1] = (int)(((int)(cb[i]) << 8) + cb[i + 1]);
+	}
+
+	return 0;
+}
+
+static int get_rawdata_mc_sc(enum wp_type wp, int byte_num, int *data)
+{
+	int ret = 0;
+	u8 val = 0;
+	u8 addr = 0;
+	u8 rawdata_addr = 0;
+
+	addr = FACTORY_REG_LINE_ADDR;
+	rawdata_addr = FACTORY_REG_RAWDATA_ADDR_MC_SC;
+
+	if (WATER_PROOF_ON == wp) {
+		val = 0xAC;
+
+	} else if (WATER_PROOF_OFF == wp) {
+		val = 0xAB;
+	} else if (HIGH_SENSITIVITY == wp) {
+		val = 0xA0;
+	} else if (HOV == wp) {
+		val = 0xA1;
+		byte_num = 4 * 2;
+	}
+
+	ret = read_rawdata(addr, val, rawdata_addr, byte_num, data);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read rawdata fail\n");
+		return ret;
+	}
+
+	return 0;
+}
+
+static bool compare_mc_sc(struct chip_data_ft3419u *ts_data, bool tx_check,
+                          bool rx_check, int *data, int *min, int *max)
+{
+	int i = 0;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int channel_num = tx_num + rx_num;
+	bool result = true;
+
+	if (rx_check) {
+		for (i = 0; i < rx_num; i++) {
+			if (0 == ts_data->node_valid_sc[i]) {
+				continue;
+			}
+
+			if ((data[i] < min[i]) || (data[i] > max[i])) {
+				TPD_INFO("rx check ERR [%d]: [%d] > [%d] > [%d] \n", i, max[i], data[i],
+				         min[i]);
+				FTS_TEST_SAVE_ERR("test fail,rx%d=%5d,range=(%5d,%5d)\n",
+				                  i + 1, data[i], min[i], max[i]);
+				result = false;
+			}
+		}
+	}
+
+	if (tx_check) {
+		for (i = rx_num; i < channel_num; i++) {
+			if (0 == ts_data->node_valid_sc[i]) {
+				continue;
+			}
+
+			if ((data[i] < min[i]) || (data[i] > max[i])) {
+				TPD_INFO("tx check ERR [%d]: [%d] > [%d] > [%d] \n", i, max[i], data[i],
+				         min[i]);
+				FTS_TEST_SAVE_INFO("test fail,tx%d=%5d,range=(%5d,%5d)\n",
+				                   i - rx_num + 1, data[i], min[i], max[i]);
+				result = false;
+			}
+		}
+	}
+
+	return result;
+}
+
+static int short_get_adc_data_mc(u8 retval, int byte_num, int *adc_buf, u8 mode)
+{
+	int ret = 0;
+	int i = 0;
+	u8 short_state = 0;
+
+	FTS_TEST_FUNC_ENTER();
+	/* select short test mode & start test */
+	ret = fts_test_write_reg(FACTROY_REG_SHORT_TEST_EN, mode);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("write short test mode fail\n");
+		goto test_err;
+	}
+
+	for (i = 0; i < FACTORY_TEST_RETRY; i++) {
+		sys_delay(FACTORY_TEST_RETRY_DELAY);
+
+		ret = fts_test_read_reg(FACTROY_REG_SHORT_TEST_EN, &short_state);
+
+		if ((ret >= 0) && (retval == short_state)) {
+			break;
+		} else
+			TPD_DEBUG("reg%x=%x,retry:%d",
+			          FACTROY_REG_SHORT2_TEST_STATE, short_state, i);
+	}
+
+	if (i >= FACTORY_TEST_RETRY) {
+		FTS_TEST_SAVE_ERR("short test timeout, ADC data not OK\n");
+		ret = -EIO;
+		goto test_err;
+	}
+
+	ret = read_mass_data(FACTORY_REG_SHORT_ADDR_MC, byte_num, adc_buf);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("get short(adc) data fail\n");
+	}
+
+	/*    TPD_DEBUG("adc data:\n");*/
+	/*    print_buffer(adc_buf, byte_num / 2, 0);*/
+test_err:
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+}
+
+static int short_test_channel_to_all(struct chip_data_ft3419u *ts_data,
+                                int *ca_short_resistance, int *adc_data, int offset, bool *result)
+{
+	int ret = 0;
+	int i = 0;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int min_cc = SHORT_MIN_CC;
+	int ch_num = tx_num + rx_num;
+	int byte_num = 0;
+	u8 err_ch_num = 0;
+	int code_1 = 1437;
+	int code = 0;
+	int numerator = 0;
+	int denominator = 0;
+
+	TPD_INFO("short test:channel to all other\n");
+	/*get adc data for channel to all*/
+	ret = fts_test_write_reg(FACTROY_REG_SHORT_DELAY, 0x01);
+	if (ret < 0) {
+        FTS_TEST_SAVE_ERR("write 5A fails,ret:%d\n", ret);
+        return ret;
+	}
+	/*get resistance data*/
+	byte_num = (ch_num + 1) * 2;
+	ret = short_get_adc_data_mc(TEST_RETVAL_00, byte_num, &adc_data[0], \
+	                            FACTROY_REG_SHORT_CA);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("get weak short data fail,ret:%d\n", ret);
+		return ret;
+	}
+
+	for (i = 0; i < ch_num; i++) {
+        code = adc_data[i];
+        denominator = code_1 - code;
+        if (denominator <= 0) {
+			ca_short_resistance[i] = min_cc;
+        } else {
+			numerator = (code - offset + 395) * 111;
+			ca_short_resistance[i] = fts_abs(numerator / denominator - 3);
+        }
+
+        if (ca_short_resistance[i] < min_cc) {
+			err_ch_num++;
+        }
+	}
+
+	if (err_ch_num) {
+        /* print all Adc value */
+        FTS_TEST_SAVE_INFO("Offset:%d, Code1:%d\n", offset, code_1);
+		print_buffer(adc_data, ch_num, ch_num);
+        *result = false;
+	} else {
+        *result = true;
+	}
+
+	return 0;
+}
+static int short_test_channel_to_gnd(struct chip_data_ft3419u *ts_data,
+	                        int *ca_short_resistance, int *adc_data, int offset)
+{
+	int ret = 0;
+	int error_num = 0;
+	int min_70k_num = 0;
+	int ch_num = 0;
+	int tx_num = 0;
+	int rx_num = 0;
+	int min_cg = 0;
+	int min_cc = 0;
+	int i = 0;
+	int code_1 = 1437;
+	int code = 0;
+	int numerator = 0;
+	int denominator = 0;
+	int tmp_res = 0;
+	bool is_short_gnd = false;
+	int *cg_short_resistance = NULL;
+	int *tmp_adc_data = NULL;
+	u8 *w_buf = NULL;
+	u8 *error_ch = NULL;
+	u8 *min_70k_ch = NULL;
+
+	FTS_TEST_FUNC_ENTER();
+	tx_num = ts_data->hw_res->tx_num;
+	rx_num = ts_data->hw_res->rx_num;
+	ch_num = tx_num + rx_num;
+	min_cc = SHORT_MIN_CC;
+	min_cg = SHORT_MIN_CG;
+
+	/*store channels of abnormal*/
+	error_ch = (u8 *)kzalloc(ch_num * sizeof(u8), GFP_KERNEL);
+	if (NULL == error_ch) {
+        FTS_TEST_SAVE_ERR("error_ch buffer malloc fail\n");
+        ret = -ENOMEM;
+        goto TEST_END;
+	}
+
+	/*store channels of resistor which are less than 70k*/
+	min_70k_ch = (u8 *)kzalloc(ch_num * sizeof(u8), GFP_KERNEL);
+	if (NULL == min_70k_ch) {
+        FTS_TEST_SAVE_ERR("min_70k_ch buffer malloc fail\n");
+        ret = -ENOMEM;
+        goto TEST_END;
+	}
+
+	w_buf = (u8 *)kzalloc((ch_num + 1) * sizeof(u8), GFP_KERNEL);
+	if (NULL == w_buf) {
+        FTS_TEST_SAVE_ERR("w_buf buffer malloc fail\n");
+        ret = -ENOMEM;
+        goto TEST_END;
+	}
+
+	tmp_adc_data = (int *)kzalloc((ch_num + 1) * sizeof(int), GFP_KERNEL);
+	if (NULL == tmp_adc_data) {
+        FTS_TEST_SAVE_ERR("adc_data buffer malloc fail\n");
+        ret = -ENOMEM;
+        goto TEST_END;
+	}
+
+	/*store resistor after channel to gnd test*/
+	cg_short_resistance = (int *)kzalloc(ch_num * sizeof(int), GFP_KERNEL);
+	if (NULL == cg_short_resistance) {
+        FTS_TEST_SAVE_ERR("cg_short_resistance buffer malloc fail\n");
+        ret = -ENOMEM;
+        goto TEST_END;
+	}
+	/*get abnormal channels from the 1st test step*/
+	for (i = 0; i < ch_num; i++) {
+		cg_short_resistance[i] = ca_short_resistance[i];
+		if (ca_short_resistance[i] < min_cc) {
+			error_ch[error_num++] = (u8)(i + 1);
+		}
+	}
+
+	if (error_num > 0) {
+		/*write error channel numbers*/
+		w_buf[0] = FACTROY_REG_SHORT_AB_CH;
+		w_buf[1] = (u8)error_num;
+		for (i = 0; i < error_num; i++) {
+			w_buf[2 + i] = error_ch[i];
+			TPD_DEBUG("cg:%d,", error_ch[i]);
+		}
+
+		ret = fts_test_bus_write(w_buf, error_num + 2);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("failed to set error channels,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		/*get adc data of test of channel to gnd*/
+		ret = fts_test_write_reg(FACTROY_REG_SHORT_DELAY, 0x01);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("write 5A fails,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		ret = short_get_adc_data_mc(TEST_RETVAL_00, error_num * 2, \
+									tmp_adc_data, FACTROY_REG_SHORT_CG);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("get adc data of cg fails,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		for (i = 0; i < error_num; i++) {
+			code = tmp_adc_data[i];
+			denominator = code_1 - code;
+			if (denominator <= 0) {
+				tmp_res = min_cg;
+			} else {
+				numerator = (code - offset + 395) * 111;
+				tmp_res = fts_abs(numerator / denominator - 3);
+			}
+
+			/*resistor for channel to gnd fails*/
+			if (tmp_res < min_cg) {
+				cg_short_resistance[error_ch[i] - 1] = tmp_res;
+				adc_data[error_ch[i] - 1] = code;
+
+				if (!is_short_gnd) {
+					is_short_gnd = true;
+					FTS_TEST_SAVE_INFO("\nGND Short:\n");
+				}
+				if (tmp_res > 70) {
+					if (error_ch[i] <= tx_num) {
+						FTS_TEST_SAVE_INFO("Tx%d with GND:", error_ch[i]);
+					} else {
+						FTS_TEST_SAVE_INFO("Rx%d with GND:", (error_ch[i] - tx_num));
+					}
+
+					FTS_TEST_SAVE_INFO("%d(K), ADC:%d\n", tmp_res, code);
+				} else {
+					min_70k_ch[min_70k_num++] = error_ch[i];
+				}
+			}
+		}
+	}
+
+	if (min_70k_num > 0) {
+		/*resistor of some channels are less than 70k*/
+
+		memset(tmp_adc_data, 0, (ch_num + 1) * sizeof(int));
+		w_buf[0] = FACTROY_REG_SHORT_AB_CH;
+		w_buf[1] = (u8)min_70k_num;
+		for (i = 0; i < min_70k_num; i++) {
+			w_buf[2 + i] = min_70k_ch[i];
+			TPD_DEBUG("cg:%d,", min_70k_ch[i]);
+		}
+
+		ret = fts_test_bus_write(w_buf, min_70k_num + 2);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("failed to set error channels,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		ret = fts_test_write_reg(FACTROY_REG_SHORT_DELAY, 0x00);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("write 5A fails,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		ret = short_get_adc_data_mc(TEST_RETVAL_00, min_70k_num * 2, \
+									tmp_adc_data, FACTROY_REG_SHORT_CG);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("get adc data of cg(70K) fails,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		for (i = 0; i < min_70k_num; i++) {
+			code = tmp_adc_data[i];
+			denominator = code_1 - code;
+			if (denominator <= 0) {
+				tmp_res = min_cg;
+			} else {
+				numerator = (code - offset + 395) * 4;
+				tmp_res = fts_abs(numerator / denominator - 3);
+			}
+
+			if (tmp_res < min_cg) {
+				cg_short_resistance[min_70k_ch[i] - 1] = tmp_res;
+				adc_data[min_70k_ch[i] - 1] = tmp_adc_data[i];
+				if (min_70k_ch[i] <= tx_num) {
+					FTS_TEST_SAVE_INFO("Tx%d with GND:", min_70k_ch[i]);
+				} else {
+					FTS_TEST_SAVE_INFO("Rx%d with GND:", (min_70k_ch[i] - tx_num));
+				}
+
+				FTS_TEST_SAVE_INFO("%d(K), ADC:%d\n", tmp_res, code);
+			}
+		}
+	}
+
+	if (is_short_gnd) {
+		TPD_DEBUG("channel to gnd test fail");
+	}
+	ret = 0;
+TEST_END:
+	kfree(error_ch);
+	kfree(min_70k_ch);
+	kfree(tmp_adc_data);
+	kfree(cg_short_resistance);
+	kfree(w_buf);
+
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+}
+
+static int short_test_channel_to_channel(struct chip_data_ft3419u *ts_data,
+	                             int *ca_short_resistance, int *adc_data, int offset)
+{
+	int ret = 0;
+	int error_num = 0;
+	int tmp_num = 0;
+	int min_70k_num = 0;
+	int ch_num = 0;
+	int rx_num = 0;
+	int tx_num = 0;
+	int min_cc = 0;
+	int i = 0;
+	int j = 0;
+	int k = 0;
+	int code_1 = 1437;
+	int code = 0;
+	int numerator = 0;
+	int denominator = 0;
+	int tmp_res = 0;
+	int adc_count = 0;
+	bool is_short_mutual = false;
+	int *cc_short_resistance = NULL;
+	int *tmp_adc_data = NULL;
+	u8 *w_buf = NULL;
+	u8 *error_ch = NULL;
+	u8 *min_70k_ch = NULL;
+
+	FTS_TEST_FUNC_ENTER();
+	tx_num = ts_data->hw_res->tx_num;
+	rx_num = ts_data->hw_res->rx_num;
+	ch_num = tx_num + rx_num;
+	min_cc = SHORT_MIN_CC;
+
+	w_buf = (u8 *)kzalloc((ch_num + 1) * sizeof(u8), GFP_KERNEL);
+	if (NULL == w_buf) {
+		FTS_TEST_SAVE_ERR("w_buf buffer malloc fail\n");
+		ret = -ENOMEM;
+		goto TEST_END;
+	}
+
+	error_ch = (u8 *)kzalloc(ch_num * sizeof(u8), GFP_KERNEL);
+	if (NULL == error_ch) {
+		FTS_TEST_SAVE_ERR("error_ch buffer malloc fail\n");
+		ret = -ENOMEM;
+		goto TEST_END;
+	}
+	min_70k_ch = (u8 *)kzalloc(ch_num * sizeof(u8), GFP_KERNEL);
+	if (NULL == min_70k_ch) {
+		FTS_TEST_SAVE_ERR("min_70k_ch buffer malloc fail\n");
+		ret = -ENOMEM;
+		goto TEST_END;
+	}
+
+	tmp_adc_data = (int *)kzalloc((ch_num + 1) * sizeof(int), GFP_KERNEL);
+	if (NULL == tmp_adc_data) {
+		FTS_TEST_SAVE_ERR("adc_data buffer malloc fail\n");
+		ret = -ENOMEM;
+		goto TEST_END;
+	}
+
+	/*store resistor after channel to gnd test*/
+	cc_short_resistance = (int *)kzalloc(ch_num * sizeof(int), GFP_KERNEL);
+	if (NULL == cc_short_resistance) {
+		FTS_TEST_SAVE_ERR("cc_short_resistance buffer malloc fail\n");
+		ret = -ENOMEM;
+		goto TEST_END;
+	}
+
+	/*get abnormal channels from the 1st test step*/
+	for (i = 0; i < ch_num; i++) {
+		cc_short_resistance[i] = ca_short_resistance[i];
+		if (ca_short_resistance[i] < min_cc) {
+			error_ch[error_num++] = (u8)(i + 1);
+		}
+	}
+
+	/*channel to channel, must have 2 or multiple of 2*/
+	if (error_num >= 2) {
+		w_buf[0] = FACTROY_REG_SHORT_AB_CH;
+		w_buf[0] = (u8)error_num;
+		for (i = 0; i < error_num; i++) {
+			w_buf[2 + i] = error_ch[i];
+			TPD_DEBUG("cc:%d,", error_ch[i]);
+		}
+
+		ret = fts_test_bus_write(w_buf, error_num + 2);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("failed to set error channels,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		/*get adc data of test of channel to channel*/
+		ret = fts_test_write_reg(FACTROY_REG_SHORT_DELAY, 0x01);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("write 5A fails,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		/*channel to channel: num * (num - 1) / 2, max. node_num*/
+		tmp_num = error_num * (error_num - 1) / 2;
+		tmp_num = (tmp_num > ch_num) ? ch_num : tmp_num;
+		ret = short_get_adc_data_mc(TEST_RETVAL_00, tmp_num * 2, \
+									tmp_adc_data, FACTROY_REG_SHORT_CC);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("get adc data of cc fails,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		for (i = 0; i < error_num; i++) {
+			for (j = i + 1; j < error_num; j++) {
+				if (adc_count >= tmp_num)
+					break;
+				code = tmp_adc_data[adc_count];
+				denominator = code_1 - code;
+				if (denominator <= 0) {
+					tmp_res = min_cc;
+				} else {
+					numerator = (code - offset + 395) * 111;
+					tmp_res = fts_abs(numerator / denominator - 3);
+				}
+
+				if (tmp_res < min_cc) {
+					cc_short_resistance[error_ch[i] - 1] = tmp_res;
+					cc_short_resistance[error_ch[j] - 1] = tmp_res;
+					adc_data[error_ch[i] - 1] = code;
+					adc_data[error_ch[j] - 1] = code;
+
+					if (!is_short_mutual) {
+						FTS_TEST_SAVE_INFO("\nMutual Short:\n");
+						is_short_mutual = true;
+					}
+					if (tmp_res > 70) {
+						if (error_ch[i] <= tx_num) {
+							FTS_TEST_SAVE_INFO("Tx%d with", (error_ch[i]));
+						} else {
+							FTS_TEST_SAVE_INFO("Rx%d with", (error_ch[i] - tx_num));
+						}
+
+						if (error_ch[j] <= tx_num) {
+							FTS_TEST_SAVE_INFO("Tx%d", (error_ch[j]));
+						} else {
+							FTS_TEST_SAVE_INFO(" Rx%d", (error_ch[j] - tx_num));
+						}
+						FTS_TEST_SAVE_INFO(":%d(K), ADC:%d\n", tmp_res, code);
+					} else {
+						int has_ch_i = 0;
+						int has_ch_j = 0;
+
+						for (k = 0; k < min_70k_num; k++) {
+							if (min_70k_ch[k] == error_ch[i])
+								has_ch_i = 1;
+							else if (min_70k_ch[k] == error_ch[j])
+								has_ch_j = 1;
+						}
+
+						if (!has_ch_i)
+							min_70k_ch[min_70k_num++] = error_ch[i];
+						if (!has_ch_j)
+							min_70k_ch[min_70k_num++] = error_ch[j];
+					}
+				}
+
+				adc_count++;
+			}
+		}
+	}
+
+	if (min_70k_num > 0) {
+		/*resistor of some channels are less than 70k*/
+		memset(tmp_adc_data, 0, (ch_num + 1) * sizeof(int));
+		w_buf[0] = FACTROY_REG_SHORT_AB_CH;
+	    w_buf[1] = (u8)min_70k_num;
+		for (i = 0; i < min_70k_num; i++) {
+			w_buf[2 + i] = min_70k_ch[i];
+			TPD_DEBUG("cc(70K):%d,", min_70k_ch[i]);
+		}
+
+		ret = fts_test_bus_write(w_buf, min_70k_num + 2);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("failed to set error channels,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		ret = fts_test_write_reg(FACTROY_REG_SHORT_DELAY, 0x00);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("write 5A fails,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		tmp_num = min_70k_num * (min_70k_num - 1) / 2;
+		tmp_num = (tmp_num > ch_num) ? ch_num : tmp_num;
+		ret = short_get_adc_data_mc(TEST_RETVAL_00, tmp_num * 2, \
+									tmp_adc_data, FACTROY_REG_SHORT_CC);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("get adc data of cc(70K) fails,ret:%d\n", ret);
+			goto TEST_END;
+		}
+
+		adc_count = 0;
+		for (i = 0; i < min_70k_num; i++) {
+			for (j = i + 1; j < min_70k_num; j++) {
+				if (adc_count >= tmp_num)
+					break;
+				code = tmp_adc_data[adc_count];
+				denominator = code_1 - code;
+				if (denominator <= 0) {
+					tmp_res = min_cc;
+				} else {
+					numerator = (code - offset + 395) * 4;
+					tmp_res = fts_abs(numerator / denominator - 3);
+				}
+
+				if (tmp_res < min_cc) {
+					cc_short_resistance[min_70k_ch[i] - 1] = tmp_res;
+					cc_short_resistance[min_70k_ch[j] - 1] = tmp_res;
+					adc_data[min_70k_ch[i] - 1] = code;
+					adc_data[min_70k_ch[j] - 1] = code;
+					if (min_70k_ch[i] <= tx_num) {
+						FTS_TEST_SAVE_INFO("Tx%d with", (min_70k_ch[i]));
+					} else {
+						FTS_TEST_SAVE_INFO("Rx%d with", (min_70k_ch[i] - tx_num));
+					}
+
+					if (min_70k_ch[j] <= tx_num) {
+						FTS_TEST_SAVE_INFO(" Tx%d", (min_70k_ch[j]));
+					} else {
+						FTS_TEST_SAVE_INFO(" Rx%d", (min_70k_ch[j] - tx_num));
+					}
+
+					FTS_TEST_SAVE_INFO(":%d(K), ADC:%d\n", tmp_res, code);
+				}
+
+				adc_count++;
+			}
+		}
+	}
+
+	if (is_short_mutual) {
+		TPD_DEBUG("channel to channel test fail");
+	}
+	ret = 0;
+TEST_END:
+	kfree(error_ch);
+	kfree(min_70k_ch);
+	kfree(tmp_adc_data);
+	kfree(cc_short_resistance);
+	kfree(w_buf);
+
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+}
+
+static void ft3419u_autotest_populate_result_head(
+	struct chip_data_ft3419u *ts_data, struct auto_testdata *p_testdata)
+{
+	uint8_t  data_buf[256];
+	uint32_t buflen = 0;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int line_num = 0;
+
+	FTS_TEST_FUNC_ENTER();
+
+	/*header*/
+	buflen = snprintf(data_buf, 256, "ECC, 85, 170, IC Name, %s, IC Code, %x\n",
+	                  "FT3419U", 0);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	buflen = snprintf(data_buf, 256, "TestItem Num, %d, ", 12);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	line_num = 11;
+	buflen = snprintf(data_buf, 256, "%s, %d, %d, %d, %d, %d, ", "Rawdata Test", 7,
+	                  tx_num, rx_num, line_num, 2);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	line_num += tx_num;
+	buflen = snprintf(data_buf, 256, "%s, %d, %d, %d, %d, %d, ",
+	                  "Rawdata Uniformity Test", 16, tx_num, rx_num, line_num, 1);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	line_num += tx_num;
+	buflen = snprintf(data_buf, 256, "%s, %d, %d, %d, %d, %d, ",
+	                  "Rawdata Uniformity Test", 16, tx_num, rx_num, line_num, 2);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	line_num += tx_num;
+	buflen = snprintf(data_buf, 256, "%s, %d, %d, %d, %d, %d, ", "SCAP CB Test", 9,
+	                  2, rx_num, line_num, 1);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	line_num += 2;
+	buflen = snprintf(data_buf, 256, "%s, %d, %d, %d, %d, %d, ", "SCAP CB Test", 9,
+	                  2, 1, line_num, 2);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	line_num += 2;
+	buflen = snprintf(data_buf, 256, "%s, %d, %d, %d, %d, %d, ", "SCAP CB Test", 9,
+	                  2, rx_num, line_num, 3);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	line_num += 2;
+	buflen = snprintf(data_buf, 256, "%s, %d, %d, %d, %d, %d, ", "SCAP CB Test", 9,
+	                  2, 1, line_num, 4);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	line_num += 2;
+	buflen = snprintf(data_buf, 256, "%s, %d, %d, %d, %d, %d, ",
+	                  "SCAP Rawdata Test", 10, 2, rx_num, line_num, 1);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	line_num += 2;
+	buflen = snprintf(data_buf, 256, "%s, %d, %d, %d, %d, %d, ",
+	                  "SCAP Rawdata Test", 10, 2, rx_num, line_num, 2);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	line_num += 2;
+	buflen = snprintf(data_buf, 256, "%s, %d, %d, %d, %d, %d, ", "Panel Differ Test", 20,
+	                  tx_num, rx_num, line_num, 1);
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	buflen = snprintf(data_buf, 256, "\n\n\n\n\n\n\n\n\n");
+	tp_test_write(p_testdata->fp, p_testdata->length, data_buf, buflen,
+	              p_testdata->pos);
+
+	FTS_TEST_FUNC_EXIT();
+	return;
+}
+
+
+#define NUM_MODE 2
+#define TEST_RESULT_NORMAL     0
+#define TEST_RESULT_ABNORMAL  -1
+int ft3419u_auto_preoperation(struct seq_file *s, void *chip_data,
+                             struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int node_num = ts_data->hw_res->tx_num * ts_data->hw_res->rx_num;
+	int channel_num = ts_data->hw_res->tx_num + ts_data->hw_res->rx_num;
+
+
+	ts_data->node_valid = (int *)kzalloc(node_num * sizeof(int), GFP_KERNEL);
+	if (!ts_data->node_valid) {
+		FTS_TEST_SAVE_ERR("kzalloc for node_valid fail\n");
+		goto alloc_err;
+	}
+
+	ts_data->node_valid_sc = (int *)kzalloc(channel_num * sizeof(int), GFP_KERNEL);
+	if (!ts_data->node_valid_sc) {
+		FTS_TEST_SAVE_ERR("kzalloc for node_valid_sc fail\n");
+		goto alloc_err;
+	}
+
+	ts_data->noise_rawdata = (int *)kzalloc(node_num * sizeof(int), GFP_KERNEL);
+
+	if (!ts_data->noise_rawdata) {
+		FTS_TEST_SAVE_ERR("kzalloc for noise_rawdata fail\n");
+		goto alloc_err;
+	}
+
+	ts_data->rawdata = (int *)kzalloc(node_num * sizeof(int), GFP_KERNEL);
+
+	if (!ts_data->rawdata) {
+		FTS_TEST_SAVE_ERR("kzalloc for rawdata fail\n");
+		goto alloc_err;
+	}
+
+	ts_data->panel_differ = (int *)kzalloc(node_num * sizeof(int), GFP_KERNEL);
+
+	if (!ts_data->panel_differ) {
+		FTS_TEST_SAVE_ERR("kzalloc for panel_differ fail\n");
+		goto alloc_err;
+	}
+
+	ts_data->scap_cb = (int *)kzalloc(channel_num * NUM_MODE * sizeof(int),
+	                                  GFP_KERNEL);
+
+	if (!ts_data->scap_cb) {
+		FTS_TEST_SAVE_ERR("kzalloc for scap_cb fail\n");
+		goto alloc_err;
+	}
+
+	ts_data->scap_rawdata = (int *)kzalloc(channel_num * NUM_MODE * sizeof(int),
+	                                       GFP_KERNEL);
+
+	if (!ts_data->scap_rawdata) {
+		FTS_TEST_SAVE_ERR("kzalloc for scap_rawdata fail\n");
+		goto alloc_err;
+	}
+
+	ts_data->rawdata_linearity = kzalloc(node_num * 2 * sizeof(int), GFP_KERNEL);
+
+	if (!ts_data->rawdata_linearity) {
+		FTS_TEST_SAVE_ERR("ts_data->rawdata_linearity buffer malloc fail\n");
+		goto alloc_err;
+	}
+
+	ft3419u_autotest_populate_result_head(ts_data, focal_testdata);
+	fts_test_entry(ts_data, focal_testdata);
+
+	return TEST_RESULT_NORMAL;
+
+alloc_err:
+
+	if (ts_data->node_valid) {
+		kfree(ts_data->node_valid);
+		ts_data->node_valid = NULL;
+	}
+
+	if (ts_data->node_valid_sc) {
+		kfree(ts_data->node_valid_sc);
+		ts_data->node_valid_sc = NULL;
+	}
+
+	if (ts_data->rawdata_linearity) {
+		kfree(ts_data->rawdata_linearity);
+		ts_data->rawdata_linearity = NULL;
+	}
+
+	if (ts_data->scap_rawdata) {
+		kfree(ts_data->scap_rawdata);
+		ts_data->scap_rawdata = NULL;
+	}
+
+	if (ts_data->scap_cb) {
+		kfree(ts_data->scap_cb);
+		ts_data->scap_cb = NULL;
+	}
+
+	if (ts_data->rawdata) {
+		kfree(ts_data->rawdata);
+		ts_data->rawdata = NULL;
+	}
+
+	if (ts_data->panel_differ) {
+		kfree(ts_data->panel_differ);
+		ts_data->panel_differ = NULL;
+	}
+
+	if (ts_data->noise_rawdata) {
+		kfree(ts_data->noise_rawdata);
+		ts_data->noise_rawdata = NULL;
+	}
+
+	return TEST_RESULT_ABNORMAL;
+}
+
+int ft3419u_noise_autotest(struct seq_file *s, void *chip_data,
+			  struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info)
+{
+	int ret = 0;
+	int i = 0;
+	u8 fir = 0;
+	u8 reg06_val = 0;
+	u8 reg0d_val = 0;
+	u8 rawdata_addr = 0;
+	bool result = false;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int byte_num = 0;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int node_num = tx_num * rx_num;
+
+	TPD_INFO("\n============ Test Item: Noise Test\n");
+	FTS_TEST_FUNC_ENTER();
+	FTS_TEST_SAVE_INFO("\n============ Test Item: Noise Test\n");
+
+
+	if (!ts_data->fts_autotest_offset->fts_noise_data_P
+			|| !ts_data->fts_autotest_offset->fts_noise_data_N) {
+		TPD_INFO("fts_noise_data_P || fts_noise_data_N is NULL");
+		return 0;
+
+	} else {
+		TPD_INFO("fts_noise_data_P || fts_noise_data_N is effective \n");
+	}
+
+	if (!ts_data->node_valid || !ts_data->noise_rawdata) {
+		FTS_TEST_SAVE_ERR("noise data is null\n");
+		ret = -EINVAL;
+		goto test_err;
+	}
+
+	ret = enter_factory_mode(ts_data);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("failed to enter factory mode,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	ret = fts_test_read_reg(FACTORY_REG_TOUCH_THR, ®0d_val);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read reg0d fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	TPD_INFO("reg0d_val = [%d]\n", reg0d_val);
+
+	/* save origin value */
+	ret = fts_test_read_reg(FACTORY_REG_DATA_SELECT, ®06_val);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read reg06 fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	TPD_INFO("reg06_val = [%d]\n", reg06_val);
+
+	ret = fts_test_read_reg(FACTORY_REG_FIR, &fir);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read fir error,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	TPD_INFO("fir = [%d]\n", fir);
+
+	ret = fts_test_write_reg(FACTORY_REG_DATA_SELECT, 0x01);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("set reg06 fail,ret=%d\n", ret);
+		goto restore_reg;
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_FIR, 0x01);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("set fir fail,ret=%d\n", ret);
+		goto restore_reg;
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_FRAME_NUM, 20);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("set frame fail,ret=%d\n", ret);
+		goto restore_reg;
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_MAX_DIFF, 0x01);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("write 0x1B fail,ret=%d\n", ret);
+		goto restore_reg;
+	}
+
+	for (i = 0; i < 3; i++) {
+		/* lost 3 frames, in order to obtain stable data */
+		/* start scanning */
+		ret = start_scan();
+
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("scan fail\n");
+			continue;
+		}
+
+		/* read rawdata */
+		rawdata_addr = FACTORY_REG_RAWDATA_ADDR_MC_SC;
+		byte_num = node_num * 2;
+		ret = read_rawdata(FACTORY_REG_LINE_ADDR, 0xAA, rawdata_addr, byte_num,
+				   ts_data->noise_rawdata);
+
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("read rawdata fail\n");
+		}
+	}
+
+	if (ret < 0) {
+		result = false;
+		goto restore_reg;
+	}
+
+	ft3419u_output_data(ts_data->noise_rawdata, ts_data, focal_testdata, NODE_MATCH);
+
+	result = true;
+
+	if (ts_data->fts_autotest_offset->fts_noise_data_P
+			&& ts_data->fts_autotest_offset->fts_noise_data_N) {
+		for (i = 0; i < node_num; i++) {
+			if (ts_data->noise_rawdata[i] >
+					ts_data->fts_autotest_offset->fts_noise_data_P[i]) {
+				TPD_INFO("noise data ERR [%d]: [%d] > [%d] > [%d] \n", i,
+					 ts_data->fts_autotest_offset->fts_noise_data_P[i], ts_data->noise_rawdata[i],
+					 ts_data->fts_autotest_offset->fts_noise_data_N[i]);
+				FTS_TEST_SAVE_ERR("test fail,node(%4d,%4d)=%5d,range=(%5d,%5d)\n",
+						  i / rx_num + 1, i % rx_num + 1, ts_data->noise_rawdata[i],
+						  ts_data->fts_autotest_offset->fts_noise_data_N[i],
+						  ts_data->fts_autotest_offset->fts_noise_data_P[i]);
+				result = false;
+			}
+		}
+
+	} else {
+		TPD_INFO("fts_raw_data_P || fts_raw_data_N is null \n");
+		result = false;
+	}
+
+restore_reg:
+	/* set the origin value */
+	ret = fts_test_write_reg(FACTORY_REG_DATA_SELECT, reg06_val);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("restore normalize fail,ret=%d\n", ret);
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_FIR, fir);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("restore 0xFB fail,ret=%d\n", ret);
+	}
+
+test_err:
+	FTS_TEST_FUNC_EXIT();
+
+	if (result) {
+		return TEST_RESULT_NORMAL;
+
+	} else {
+		return TEST_RESULT_ABNORMAL;
+	}
+}
+
+int ft3419u_rawdata_autotest(struct seq_file *s, void *chip_data,
+                            struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info)
+{
+	int ret = 0;
+	int i = 0;
+	u8 fre = 0;
+	u8 reg06_val = 0;
+	u8 rawdata_addr = 0;
+	bool result = false;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int byte_num = 0;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int node_num = tx_num * rx_num;
+
+	FTS_TEST_FUNC_ENTER();
+	FTS_TEST_SAVE_INFO("\n============ Test Item: Rawdata Test\n");
+
+	if (!ts_data->fts_autotest_offset->fts_raw_data_P
+	    || !ts_data->fts_autotest_offset->fts_raw_data_N) {
+		TPD_INFO("fts_raw_data_P || fts_raw_data_N is NULL");
+		return 0;
+	}
+
+	if (!ts_data->rawdata || !ts_data->node_valid) {
+		FTS_TEST_SAVE_ERR("rawdata is null\n");
+		ret = -EINVAL;
+		goto test_err;
+	}
+
+	ret = enter_factory_mode(ts_data);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("failed to enter factory mode,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	/* save origin value */
+	ret = fts_test_read_reg(FACTORY_REG_DATA_SELECT, ®06_val);
+	if (ret < 0) {
+        FTS_TEST_SAVE_ERR("read 0x06 fail,ret=%d\n", ret);
+        goto test_err;
+	}
+
+	ret = fts_test_read_reg(FACTORY_REG_FRE_LIST, &fre);
+
+	if (ret) {
+		FTS_TEST_SAVE_ERR("read 0x0A fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	/* set frequecy high */
+	ret = fts_test_write_reg(FACTORY_REG_FRE_LIST, 0x81);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("set frequecy fail,ret=%d\n", ret);
+		goto restore_reg;
+	}
+
+	/* fir enable */
+	ret = fts_test_write_reg(FACTORY_REG_DATA_SELECT, 0);
+	if (ret < 0) {
+        FTS_TEST_SAVE_ERR("set rawdata fail,ret=%d\n", ret);
+        goto restore_reg;
+	}
+
+	/*********************GET RAWDATA*********************/
+	for (i = 0; i < 3; i++) {
+		/* lost 3 frames, in order to obtain stable data */
+		/* start scanning */
+		ret = start_scan();
+
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("scan fail\n");
+			continue;
+		}
+
+		/* read rawdata */
+		rawdata_addr = FACTORY_REG_RAWDATA_ADDR_MC_SC;
+		byte_num = node_num * 2;
+		ret = read_rawdata(FACTORY_REG_LINE_ADDR, 0xAA, rawdata_addr, byte_num,
+		                   ts_data->rawdata);
+
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("read rawdata fail\n");
+		}
+	}
+
+	if (ret < 0) {
+		result = false;
+		goto restore_reg;
+	}
+
+	ft3419u_output_data(ts_data->rawdata, ts_data, focal_testdata, NODE_MATCH);
+
+
+	/* compare */
+	result = true;
+
+	for (i = 0; i < node_num; i++) {
+		if (0 == ts_data->node_valid[i]) {
+			continue;
+		}
+
+		if ((ts_data->rawdata[i] < ts_data->fts_autotest_offset->fts_raw_data_N[i])
+		    || (ts_data->rawdata[i] > ts_data->fts_autotest_offset->fts_raw_data_P[i])) {
+			TPD_INFO("raw data ERR [%d]: [%d] > [%d] > [%d] \n", i,
+			         ts_data->fts_autotest_offset->fts_raw_data_P[i], ts_data->rawdata[i],
+			         ts_data->fts_autotest_offset->fts_raw_data_N[i]);
+			FTS_TEST_SAVE_ERR("test fail,node(%4d,%4d)=%5d,range=(%5d,%5d)\n",
+			                  i / rx_num + 1, i % rx_num + 1, ts_data->rawdata[i],
+			                  ts_data->fts_autotest_offset->fts_raw_data_N[i],
+			                  ts_data->fts_autotest_offset->fts_raw_data_P[i]);
+			result = false;
+		}
+	}
+
+restore_reg:
+	/* set the origin value */
+	ret = fts_test_write_reg(FACTORY_REG_DATA_SELECT, reg06_val);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("restore 0x06 fail,ret=%d\n", ret);
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_FRE_LIST, fre);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("restore 0x0A fail,ret=%d\n", ret);
+	}
+
+test_err:
+
+	if (result) {
+		FTS_TEST_SAVE_INFO("------ rawdata test PASS\n");
+		ret = TEST_RESULT_NORMAL;
+	} else {
+		FTS_TEST_SAVE_INFO("------ rawdata test NG\n");
+		ret = TEST_RESULT_ABNORMAL;
+	}
+
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+}
+
+
+int ft3419u_uniformity_autotest(struct seq_file *s, void *chip_data,
+                               struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info)
+{
+	int ret = 0;
+	int row = 0;
+	int col = 1;
+	int i = 0;
+	int deviation = 0;
+	int max = 0;
+	int *rl_tmp = NULL;
+	int offset = 0;
+	int offset2 = 0;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int node_num = tx_num * rx_num;
+	bool result = false;
+	bool result2 = false;
+
+	FTS_TEST_FUNC_ENTER();
+	FTS_TEST_SAVE_INFO("\n============ Test Item: Rawdata Unfiormity Test\n");
+
+	if (!ts_data->fts_autotest_offset->fts_uniformity_data_P
+	    || !ts_data->fts_autotest_offset->fts_uniformity_data_N) {
+		TPD_INFO("fts_uniformity_data_P || fts_uniformity_data_N is NULL");
+		return 0;
+	}
+
+	if (!ts_data->rawdata || !ts_data->rawdata_linearity || !ts_data->node_valid) {
+		FTS_TEST_SAVE_ERR("rawdata/rawdata_linearity is null\n");
+		ret = -EINVAL;
+		goto test_err;
+	}
+
+	result = true;
+	/*    FTS_TEST_SAVE_INFO("Check Tx Linearity\n");*/
+	ts_data->rl_cnt = 0;
+	rl_tmp = ts_data->rawdata_linearity + ts_data->rl_cnt;
+
+	for (row = 0; row < tx_num; row++) {
+		for (col = 0; col < rx_num - 1; col++) {
+			offset = row * rx_num + col;
+			offset2 = row * rx_num + col + 1;
+			deviation = abs(ts_data->rawdata[offset] - ts_data->rawdata[offset2]);
+			max = max(ts_data->rawdata[offset], ts_data->rawdata[offset2]);
+			max = max ? max : 1;
+			rl_tmp[offset] = 100 * deviation / max;
+		}
+	}
+
+	ft3419u_output_data(rl_tmp, ts_data, focal_testdata, NODE_MATCH);
+
+	/* compare */
+	for (i = 0; i < node_num; i++) {
+		if (0 == ts_data->node_valid[i]) {
+			continue;
+		}
+
+		if ((rl_tmp[i] < ts_data->fts_autotest_offset->fts_uniformity_data_N[i])
+		    || (rl_tmp[i] > ts_data->fts_autotest_offset->fts_uniformity_data_P[i])) {
+			TPD_INFO("uniformity data ERR [%d]: [%d] > [%d] > [%d] \n", i,
+			         ts_data->fts_autotest_offset->fts_uniformity_data_P[i], rl_tmp[i],
+			         ts_data->fts_autotest_offset->fts_uniformity_data_N[i]);
+			FTS_TEST_SAVE_ERR("test fail,node(%4d,%4d)=%5d,range=(%5d,%5d)\n",
+			                  i / rx_num + 1, i % rx_num + 1, rl_tmp[i],
+			                  ts_data->fts_autotest_offset->fts_uniformity_data_N[i],
+			                  ts_data->fts_autotest_offset->fts_uniformity_data_P[i]);
+			result = false;
+		}
+	}
+
+	ts_data->rl_cnt += node_num;
+
+	result2 = true;
+	/*    FTS_TEST_SAVE_INFO("Check Rx Linearity\n");*/
+	rl_tmp = ts_data->rawdata_linearity + ts_data->rl_cnt;
+
+	for (row = 0; row < tx_num - 1; row++) {
+		for (col = 0; col < rx_num; col++) {
+			offset = row * rx_num + col;
+			offset2 = (row + 1) * rx_num + col;
+			deviation = abs(ts_data->rawdata[offset] - ts_data->rawdata[offset2]);
+			max = max(ts_data->rawdata[offset], ts_data->rawdata[offset2]);
+			max = max ? max : 1;
+			rl_tmp[offset] = 100 * deviation / max;
+		}
+	}
+
+	ft3419u_output_data(rl_tmp, ts_data, focal_testdata, NODE_MATCH);
+
+
+	/* compare */
+	for (i = 0; i < node_num; i++) {
+		if (0 == ts_data->node_valid[i]) {
+			continue;
+		}
+
+		if ((rl_tmp[i] < ts_data->fts_autotest_offset->fts_uniformity_data_N[i])
+		    || (rl_tmp[i] > ts_data->fts_autotest_offset->fts_uniformity_data_P[i])) {
+			TPD_INFO("uniformity data ERR [%d]: [%d] > [%d] > [%d] \n", i,
+			         ts_data->fts_autotest_offset->fts_uniformity_data_P[i], rl_tmp[i],
+			         ts_data->fts_autotest_offset->fts_uniformity_data_N[i]);
+			FTS_TEST_SAVE_ERR("test fail,node(%4d,%4d)=%5d,range=(%5d,%5d)\n",
+			                  i / rx_num + 1, i % rx_num + 1, rl_tmp[i],
+			                  ts_data->fts_autotest_offset->fts_uniformity_data_N[i],
+			                  ts_data->fts_autotest_offset->fts_uniformity_data_P[i]);
+			result2 = false;
+		}
+	}
+
+	ts_data->rl_cnt += node_num;
+
+test_err:
+	if (result && result2) {
+		FTS_TEST_SAVE_INFO("------Rawdata Uniformity Test PASS\n");
+		ret = TEST_RESULT_NORMAL;
+
+	} else {
+		FTS_TEST_SAVE_ERR("------Rawdata Uniformity Test NG\n");
+		ret = TEST_RESULT_ABNORMAL;
+	}
+
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+}
+
+
+
+int ft3419u_scap_cb_autotest(struct seq_file *s, void *chip_data,
+                            struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info)
+{
+	int ret = 0;
+	bool tmp_result = false;
+	bool tmp2_result = false;
+	u8 wc_sel = 0;
+	u8 sc_mode = 0;
+	bool fw_wp_check = false;
+	bool tx_check = false;
+	bool rx_check = false;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int *scb_tmp = NULL;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int channel_num = tx_num + rx_num;
+	int byte_num = channel_num * 2;
+
+	FTS_TEST_FUNC_ENTER();
+	FTS_TEST_SAVE_INFO("\n============ Test Item: Scap CB Test\n");
+
+	if (!ts_data->fts_autotest_offset->fts_scap_cb_data_P
+	    || !ts_data->fts_autotest_offset->fts_scap_cb_data_N
+	    || !ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_N
+	    || !ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_P) {
+		TPD_INFO("fts_scap_cb_data_P || fts_scap_cb_data_N || waterproof_N || waterproof_P  is NULL");
+		return 0;
+	}
+
+	if (!ts_data->scap_cb || !ts_data->node_valid_sc) {
+		FTS_TEST_SAVE_ERR("scap_cb is null\n");
+		ret = -EINVAL;
+		goto test_err;
+	}
+
+	ret = enter_factory_mode(ts_data);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("enter factory mode fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	/* get waterproof channel select */
+	ret = fts_test_read_reg(FACTORY_REG_WC_SEL, &wc_sel);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read water_channel_sel fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	ret = fts_test_read_reg(FACTORY_REG_MC_SC_MODE, &sc_mode);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read sc_mode fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	/* water proof on check */
+	ts_data->scb_cnt = 0;
+	fw_wp_check = get_fw_wp(wc_sel, WATER_PROOF_ON);
+
+	if (fw_wp_check) {
+		scb_tmp = ts_data->scap_cb + ts_data->scb_cnt;
+		/* 1:waterproof 0:non-waterproof */
+		ret = fts_test_write_reg(FACTORY_REG_MC_SC_MODE, WATER_PROOF_ON);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("set mc_sc mode fail\n");
+			goto restore_reg;
+		}
+
+		ret = get_cb_ft3419u(scb_tmp, byte_num, false);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("read sc_cb fail,ret=%d\n", ret);
+			goto restore_reg;
+		}
+
+		/* compare */
+		tx_check = get_fw_wp(wc_sel, WATER_PROOF_ON_TX);
+		rx_check = get_fw_wp(wc_sel, WATER_PROOF_ON_RX);
+
+		ft3419u_output_data(scb_tmp, ts_data, focal_testdata, CHEN_MATCH);
+
+		tmp_result = compare_mc_sc(ts_data, tx_check, rx_check, scb_tmp,
+		                           ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_N,
+		                           ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_P);
+
+		ts_data->scb_cnt += channel_num;
+
+	} else {
+		tmp_result = true;
+	}
+
+	/* water proof off check */
+	fw_wp_check = get_fw_wp(wc_sel, WATER_PROOF_OFF);
+
+	if (fw_wp_check) {
+		scb_tmp = ts_data->scap_cb + ts_data->scb_cnt;
+		/* 1:waterproof 0:non-waterproof */
+		ret = fts_test_write_reg(FACTORY_REG_MC_SC_MODE, WATER_PROOF_OFF);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("set mc_sc mode fail\n");
+			goto restore_reg;
+		}
+
+		ret = get_cb_ft3419u(scb_tmp, byte_num, false);
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("read sc_cb fail,ret=%d\n", ret);
+			goto restore_reg;
+		}
+
+		/* compare */
+		tx_check = get_fw_wp(wc_sel, WATER_PROOF_OFF_TX);
+		rx_check = get_fw_wp(wc_sel, WATER_PROOF_OFF_RX);
+
+		ft3419u_output_data(scb_tmp, ts_data, focal_testdata, CHEN_MATCH);
+
+		tmp2_result = compare_mc_sc(ts_data, tx_check, rx_check, scb_tmp,
+		                            ts_data->fts_autotest_offset->fts_scap_cb_data_N,
+		                            ts_data->fts_autotest_offset->fts_scap_cb_data_P);
+
+		ts_data->scb_cnt += channel_num;
+
+	} else {
+		tmp2_result = true;
+	}
+
+restore_reg:
+	ret = fts_test_write_reg(FACTORY_REG_MC_SC_MODE, sc_mode);
+
+	if (ret) {
+		FTS_TEST_SAVE_ERR("write sc mode fail,ret=%d\n", ret);
+	}
+
+test_err:
+	if (tmp_result && tmp2_result) {
+		FTS_TEST_SAVE_INFO("------Scap CB (normal && waterproof) Test PASS\n");
+		ret = TEST_RESULT_NORMAL;
+
+	} else {
+		if (tmp_result) {
+			FTS_TEST_SAVE_ERR("------Scap CB Test (waterproof) NG\n");
+		}
+
+		if (tmp2_result) {
+			FTS_TEST_SAVE_ERR("------Scap CB Test (normal) NG\n");
+		}
+
+		ret = TEST_RESULT_ABNORMAL;
+	}
+
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+}
+
+
+int ft3419u_scap_rawdata_autotest(struct seq_file *s, void *chip_data,
+                                 struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info)
+{
+	int ret = 0;
+	bool tmp_result = false;
+	bool tmp2_result = false;
+	u8 wc_sel = 0;
+	bool fw_wp_check = false;
+	bool tx_check = false;
+	bool rx_check = false;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int *srawdata_tmp = NULL;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int channel_num = tx_num + rx_num;
+	int byte_num = channel_num * 2;
+
+	FTS_TEST_FUNC_ENTER();
+	FTS_TEST_SAVE_INFO("\n============ Test Item: Scap Rawdata Test\n");
+
+	if (!ts_data->fts_autotest_offset->fts_scap_raw_data_P
+	    || !ts_data->fts_autotest_offset->fts_scap_raw_data_N
+	    || !ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_N
+	    || !ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_P) {
+		TPD_INFO("fts_scap_raw_data_P || fts_scap_raw_data_N || raw_waterproof_data_N || raw_waterproof_data_P is NULL");
+		return 0;
+	}
+
+	if (!ts_data->scap_rawdata || !ts_data->node_valid_sc) {
+		FTS_TEST_SAVE_ERR("scap_rawdata is null\n");
+		ret = -EINVAL;
+		goto test_err;
+	}
+
+	ret = enter_factory_mode(ts_data);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("enter factory mode fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	/* get waterproof channel select */
+	ret = fts_test_read_reg(FACTORY_REG_WC_SEL, &wc_sel);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read water_channel_sel fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	/* scan rawdata 2 times */
+	ret = start_scan();
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("scan scap rawdata fail\n");
+		goto test_err;
+	}
+
+	ret = start_scan();
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("scan scap rawdata fail\n");
+		goto test_err;
+	}
+
+	/* water proof on check */
+	ts_data->srawdata_cnt = 0;
+	fw_wp_check = get_fw_wp(wc_sel, WATER_PROOF_ON);
+
+	if (fw_wp_check) {
+		srawdata_tmp = ts_data->scap_rawdata + ts_data->srawdata_cnt;
+		ret = get_rawdata_mc_sc(WATER_PROOF_ON, byte_num, srawdata_tmp);
+
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("get scap(WP_ON) rawdata fail\n");
+			goto test_err;
+		}
+
+		/* compare */
+		tx_check = get_fw_wp(wc_sel, WATER_PROOF_ON_TX);
+		rx_check = get_fw_wp(wc_sel, WATER_PROOF_ON_RX);
+
+		ft3419u_output_data(srawdata_tmp, ts_data, focal_testdata, CHEN_MATCH);
+
+		tmp_result = compare_mc_sc(ts_data, tx_check, rx_check, srawdata_tmp,
+		                           ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_N,
+		                           ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_P);
+		ts_data->srawdata_cnt += channel_num;
+
+	} else {
+		tmp_result = true;
+	}
+
+	/* water proof off check */
+	fw_wp_check = get_fw_wp(wc_sel, WATER_PROOF_OFF);
+
+	if (fw_wp_check) {
+		srawdata_tmp = ts_data->scap_rawdata + ts_data->srawdata_cnt;
+		ret = get_rawdata_mc_sc(WATER_PROOF_OFF, byte_num, srawdata_tmp);
+
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("get scap(WP_OFF) rawdata fail\n");
+			goto test_err;
+		}
+
+		/* compare */
+		tx_check = get_fw_wp(wc_sel, WATER_PROOF_OFF_TX);
+		rx_check = get_fw_wp(wc_sel, WATER_PROOF_OFF_RX);
+
+		ft3419u_output_data(srawdata_tmp, ts_data, focal_testdata, CHEN_MATCH);
+
+		tmp2_result = compare_mc_sc(ts_data, tx_check, rx_check, srawdata_tmp,
+		                            ts_data->fts_autotest_offset->fts_scap_raw_data_N,
+		                            ts_data->fts_autotest_offset->fts_scap_raw_data_P);
+		ts_data->srawdata_cnt += channel_num;
+
+	} else {
+		tmp2_result = true;
+	}
+
+test_err:
+	if (tmp_result && tmp2_result) {
+		FTS_TEST_SAVE_INFO("------SCAP Rawdata Test PASS\n");
+		ret = TEST_RESULT_NORMAL;
+
+	} else {
+		if (tmp_result) {
+			FTS_TEST_SAVE_INFO("------SCAP Rawdata(WATER_PROOF_ON) Test NG\n");
+		}
+
+		if (tmp2_result) {
+			FTS_TEST_SAVE_INFO("------SCAP Rawdata(NORMAL) Test NG\n");
+		}
+
+		ret = TEST_RESULT_ABNORMAL;
+	}
+
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+}
+
+int ft3419u_short_test(struct seq_file *s, void *chip_data,
+                      struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info)
+{
+	int ret = 0;
+	u8 short_delay = 0;
+	int *adc = NULL;
+	int *ca_short_resistance = NULL;
+	int offset = 0;
+	bool weak_short_result = false;
+	int ch_num;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	FTS_TEST_FUNC_ENTER();
+	FTS_TEST_SAVE_INFO("\n============ Test Item: Short Test\n");
+	ret = enter_factory_mode(ts_data);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("enter factory mode fail,ret=%d\n", ret);
+		goto test_err;
+	}
+	ch_num = ts_data->hw_res->tx_num + ts_data->hw_res->rx_num;
+
+	adc = (int *)kzalloc((ch_num + 3) * sizeof(int), GFP_KERNEL);
+	if (NULL == adc) {
+        FTS_TEST_SAVE_ERR("adc_data buffer malloc fail\n");
+        ret = -ENOMEM;
+        goto test_err;
+	}
+
+	ca_short_resistance = (int *)kzalloc(ch_num * sizeof(int), GFP_KERNEL);
+	if (NULL == ca_short_resistance) {
+        FTS_TEST_SAVE_ERR("short_resistance buffer malloc fail\n");
+        ret = -ENOMEM;
+        goto test_err;
+	}
+
+	ret = fts_test_read_reg(FACTROY_REG_SHORT_DELAY, &short_delay);
+	if (ret < 0) {
+        FTS_TEST_SAVE_ERR("read 5A fails\n");
+        goto test_err;
+	}
+
+	ret = short_get_adc_data_mc(TEST_RETVAL_00, 1 * 2, &offset, \
+                                FACTROY_REG_SHORT_OFFSET);
+	if (ret < 0) {
+        FTS_TEST_SAVE_ERR("failed to get weak short data,ret=%d\n", ret);
+        goto restore_reg;
+	}
+
+	offset -= 1024;
+
+	/* get short resistance and exceptional channel */
+	ret = short_test_channel_to_all(ts_data, ca_short_resistance, adc, offset, &weak_short_result);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("short test of channel to all fails\n");
+		goto test_err;
+	}
+
+	if (!weak_short_result) {
+        /*weak short fail, get short values*/
+        ret = short_test_channel_to_gnd(ts_data, ca_short_resistance, \
+                                        adc, offset);
+        if (ret < 0) {
+			FTS_TEST_SAVE_ERR("short test of channel to gnd fails\n");
+			goto restore_reg;
+        }
+
+        ret = short_test_channel_to_channel(ts_data, ca_short_resistance, \
+											adc, offset);
+        if (ret < 0) {
+			FTS_TEST_SAVE_ERR("short test of channel to channel fails\n");
+			goto restore_reg;
+        }
+	}
+
+restore_reg:
+	ret = fts_test_write_reg(FACTROY_REG_SHORT_DELAY, short_delay);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("restore 5A fails");
+	}
+
+test_err:
+	kfree(adc);
+	kfree(ca_short_resistance);
+
+	if (weak_short_result) {
+		FTS_TEST_SAVE_INFO("------Short test PASS\n");
+		ret = TEST_RESULT_NORMAL;
+
+	} else {
+		FTS_TEST_SAVE_ERR("------Short Test NG\n");
+		ret = TEST_RESULT_ABNORMAL;
+	}
+
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+}
+
+int ft3419u_panel_differ_test(struct seq_file *s, void *chip_data,
+                             struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info)
+{
+	int ret = 0;
+	int i = 0;
+	u8 fre = 0;
+	u8 reg06_val = 0;
+	u8 normalize = 0;
+	u8 fir = 0;
+	u8 rawdata_addr = 0;
+	bool result = false;
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+	int byte_num = 0;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int node_num = tx_num * rx_num;
+
+	FTS_TEST_FUNC_ENTER();
+	FTS_TEST_SAVE_INFO("\n============ Test Item: Panel Differ Test\n");
+
+	if (!ts_data->fts_autotest_offset->fts_panel_differ_data_P
+	    || !ts_data->fts_autotest_offset->fts_panel_differ_data_N) {
+		TPD_INFO("fts_panel_differ_data_P || fts_panel_differ_data_N is NULL");
+		return 0;
+	}
+
+	if (!ts_data->panel_differ || !ts_data->node_valid) {
+		FTS_TEST_SAVE_ERR("rawdata is null\n");
+		ret = -EINVAL;
+		goto test_err;
+	}
+
+	ret = enter_factory_mode(ts_data);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("failed to enter factory mode,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	/* save origin value */
+	ret = fts_test_read_reg(FACTORY_REG_FRE_LIST, &fre);
+	if (ret) {
+		FTS_TEST_SAVE_ERR("read 0x0A fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	ret = fts_test_read_reg(FACTORY_REG_FIR, &fir);
+	if (ret) {
+		FTS_TEST_SAVE_ERR("read 0xFB fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	ret = fts_test_read_reg(FACTORY_REG_DATA_SELECT, ®06_val);
+	if (ret) {
+		FTS_TEST_SAVE_ERR("read reg06 fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	ret = fts_test_read_reg(FACTORY_REG_NORMALIZE, &normalize);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read normalize fail,ret=%d\n", ret);
+		goto test_err;
+	}
+
+	/* set frequecy high */
+	ret = fts_test_write_reg(FACTORY_REG_FRE_LIST, 0x81);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("set frequecy fail,ret=%d\n", ret);
+		goto restore_reg;
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_NORMALIZE, 0x00);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("set 0x16 fail,ret=%d\n", ret);
+		goto restore_reg;
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_FIR, 0x00);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("set 0xFB fail,ret=%d\n", ret);
+		goto restore_reg;
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_DATA_SELECT, 0x00);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("set raw type fail,ret=%d\n", ret);
+		goto restore_reg;
+	}
+
+	/* get rawdata */
+	for (i = 0; i < 3; i++) {
+		/* lost 3 frames, in order to obtain stable data */
+		/* start scanning */
+		ret = start_scan();
+
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("scan fail\n");
+			continue;
+		}
+
+		/* read rawdata */
+		rawdata_addr = FACTORY_REG_RAWDATA_ADDR_MC_SC;
+		byte_num = node_num * 2;
+		ret = read_rawdata(FACTORY_REG_LINE_ADDR, 0xAA, rawdata_addr, byte_num,
+		                   ts_data->panel_differ);
+
+		if (ret < 0) {
+			FTS_TEST_SAVE_ERR("read rawdata fail\n");
+		}
+	}
+
+	for (i = 0; i < node_num; i++) {
+		ts_data->panel_differ[i] = ts_data->panel_differ[i] / 10;
+	}
+
+	ft3419u_output_data(ts_data->panel_differ, ts_data, focal_testdata, NODE_MATCH);
+
+
+	/* compare */
+	result = true;
+
+	for (i = 0; i < node_num; i++) {
+		if (0 == ts_data->node_valid[i]) {
+			continue;
+		}
+
+		if ((ts_data->panel_differ[i] < ts_data->fts_autotest_offset->fts_panel_differ_data_N[i])
+		    || (ts_data->panel_differ[i] > ts_data->fts_autotest_offset->fts_panel_differ_data_P[i])) {
+			TPD_INFO("raw data ERR [%d]: [%d] > [%d] > [%d] \n", i,
+			         ts_data->fts_autotest_offset->fts_panel_differ_data_P[i], ts_data->panel_differ[i],
+			         ts_data->fts_autotest_offset->fts_panel_differ_data_N[i]);
+			FTS_TEST_SAVE_ERR("test fail,node(%4d,%4d)=%5d,range=(%5d,%5d)\n",
+			                  i / rx_num + 1, i % rx_num + 1, ts_data->panel_differ[i],
+			                  ts_data->fts_autotest_offset->fts_panel_differ_data_N[i],
+			                  ts_data->fts_autotest_offset->fts_panel_differ_data_P[i]);
+			result = false;
+		}
+	}
+
+restore_reg:
+	/* set the origin value */
+	ret = fts_test_write_reg(FACTORY_REG_FRE_LIST, fre);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("restore 0x0A fail,ret=%d\n", ret);
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_FIR, fir);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("restore 0xFB fail,ret=%d\n", ret);
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_DATA_SELECT, reg06_val);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("restore 0x06 fail,ret=%d\n", ret);
+	}
+
+	ret = fts_test_write_reg(FACTORY_REG_NORMALIZE, normalize);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("restore normalize fail,ret=%d\n", ret);
+	}
+
+test_err:
+
+	if (result) {
+		FTS_TEST_SAVE_INFO("------Panel differ test PASS\n");
+		ret = TEST_RESULT_NORMAL;
+	} else {
+		FTS_TEST_SAVE_INFO("------Panel differ test NG\n");
+		ret = TEST_RESULT_ABNORMAL;
+	}
+
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+}
+
+
+int ft3419u_auto_endoperation(struct seq_file *s, void *chip_data,
+                             struct auto_testdata *focal_testdata, struct test_item_info *p_test_item_info)
+{
+	struct chip_data_ft3419u *ts_data = (struct chip_data_ft3419u *)chip_data;
+
+	TPD_INFO("%s +\n", __func__);
+
+	if (ts_data->fts_autotest_offset) {
+		kfree(ts_data->fts_autotest_offset);
+		ts_data->fts_autotest_offset = NULL;
+	}
+
+	if (ts_data->node_valid) {
+		kfree(ts_data->node_valid);
+		ts_data->node_valid = NULL;
+	}
+
+	if (ts_data->node_valid_sc) {
+		kfree(ts_data->node_valid_sc);
+		ts_data->node_valid_sc = NULL;
+	}
+
+	if (ts_data->rawdata_linearity) {
+		kfree(ts_data->rawdata_linearity);
+		ts_data->rawdata_linearity = NULL;
+	}
+
+	if (ts_data->scap_rawdata) {
+		kfree(ts_data->scap_rawdata);
+		ts_data->scap_rawdata = NULL;
+	}
+
+	if (ts_data->scap_cb) {
+		kfree(ts_data->scap_cb);
+		ts_data->scap_cb = NULL;
+	}
+
+	if (ts_data->rawdata) {
+		kfree(ts_data->rawdata);
+		ts_data->rawdata = NULL;
+	}
+
+	if (ts_data->panel_differ) {
+		kfree(ts_data->panel_differ);
+		ts_data->panel_differ = NULL;
+	}
+
+	if (ts_data->noise_rawdata) {
+		kfree(ts_data->noise_rawdata);
+		ts_data->noise_rawdata = NULL;
+	}
+
+	enter_work_mode();
+
+	TPD_INFO("%s -\n", __func__);
+	return 0;
+}
+
+#ifdef FTS_KIT
+static int fts_get_threshold(struct chip_data_ft3419u *ts_data, struct auto_testdata *p_focal_testdata)
+{
+	int i = 0;
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int node_num = tx_num * rx_num;
+	int channel_num = tx_num + rx_num;
+	const struct firmware *limit_fw = NULL;
+	int offset = 32;
+
+	limit_fw = (const struct firmware *) p_focal_testdata->fw;
+
+	if (!limit_fw || !limit_fw->data || !limit_fw->size) {
+		TPD_INFO("limit_fw is null");
+		return -ENOMEM;
+	}
+
+	ts_data->fts_autotest_offset = kzalloc(sizeof(struct fts_autotest_offset), GFP_KERNEL);
+	if (!ts_data->fts_autotest_offset) {
+		TPD_INFO("fts_autotest_offset is null");
+		return -ENOMEM;
+	}
+
+	ts_data->fts_autotest_offset->fts_noise_data_P = (int32_t *)(limit_fw->data + offset);
+	offset += node_num * sizeof(int32_t);
+	ts_data->fts_autotest_offset->fts_noise_data_N  = (int32_t *)(limit_fw->data + offset);
+	offset += node_num * sizeof(int32_t);
+
+	ts_data->fts_autotest_offset->fts_raw_data_P = (int32_t *)(limit_fw->data + offset);
+	offset += node_num * sizeof(int32_t);
+	ts_data->fts_autotest_offset->fts_raw_data_N  = (int32_t *)(limit_fw->data + offset);
+	offset += node_num * sizeof(int32_t);
+
+	ts_data->fts_autotest_offset->fts_uniformity_data_P = (int32_t *)(limit_fw->data + offset);
+	offset += node_num * sizeof(int32_t);
+	ts_data->fts_autotest_offset->fts_uniformity_data_N  = (int32_t *)(limit_fw->data + offset);
+	offset += node_num * sizeof(int32_t);
+
+	ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_P = (int32_t *)(limit_fw->data + offset);
+	offset += channel_num * sizeof(int32_t);
+	ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_N  = (int32_t *)(limit_fw->data + offset);
+	offset += channel_num * sizeof(int32_t);
+
+	ts_data->fts_autotest_offset->fts_scap_cb_data_P = (int32_t *)(limit_fw->data + offset);
+	offset += channel_num * sizeof(int32_t);
+	ts_data->fts_autotest_offset->fts_scap_cb_data_N  = (int32_t *)(limit_fw->data + offset);
+	offset += channel_num * sizeof(int32_t);
+
+	ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_P = (int32_t *)(limit_fw->data + offset);
+	offset += channel_num * sizeof(int32_t);
+	ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_N  = (int32_t *)(limit_fw->data + offset);
+	offset += channel_num * sizeof(int32_t);
+
+	ts_data->fts_autotest_offset->fts_scap_raw_data_P = (int32_t *)(limit_fw->data + offset);
+	offset += channel_num * sizeof(int32_t);
+	ts_data->fts_autotest_offset->fts_scap_raw_data_N  = (int32_t *)(limit_fw->data + offset);
+	offset += channel_num * sizeof(int32_t);
+
+	ts_data->fts_autotest_offset->fts_panel_differ_data_P = (int32_t *)(limit_fw->data + offset);
+	offset += node_num * sizeof(int32_t);
+	ts_data->fts_autotest_offset->fts_panel_differ_data_N  = (int32_t *)(limit_fw->data + offset);
+	offset += node_num * sizeof(int32_t);
+
+	for (i = 0; i < node_num; i++) {
+		ts_data->fts_autotest_offset->fts_noise_data_P[i] = 300;
+		ts_data->fts_autotest_offset->fts_noise_data_N[i] = 0;
+
+		ts_data->fts_autotest_offset->fts_raw_data_P[i] = 40000;
+		ts_data->fts_autotest_offset->fts_raw_data_N[i] = 0;
+
+		ts_data->fts_autotest_offset->fts_panel_differ_data_P[i] = 40000;
+		ts_data->fts_autotest_offset->fts_panel_differ_data_N[i] = 0;
+
+		ts_data->fts_autotest_offset->fts_uniformity_data_P[i] = 100;
+		ts_data->fts_autotest_offset->fts_uniformity_data_N[i] = 0;
+	}
+
+	for (i = 0; i < channel_num; i++) {
+		ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_P[i] = 500;
+		ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_N[i] = -500;
+		ts_data->fts_autotest_offset->fts_scap_cb_data_P[i] = 500;
+		ts_data->fts_autotest_offset->fts_scap_cb_data_N[i] = -500;
+
+		ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_P[i] = 1000;
+		ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_N[i] = -1000;
+		ts_data->fts_autotest_offset->fts_scap_raw_data_P[i] = 1000;
+		ts_data->fts_autotest_offset->fts_scap_raw_data_N[i] = -1000;
+	}
+
+	return 0;
+}
+#else
+static int fts_get_threshold_from_img(struct chip_data_ft3419u *ts_data, struct auto_testdata *p_focal_testdata)
+{
+	int ret = 0;
+	int i = 0;
+	int item_cnt = 0;
+	/*uint8_t * p_print = NULL;*/
+	uint32_t *p_item_offset = NULL;
+	struct auto_test_header *ph = NULL;
+	struct auto_test_item_header *item_head = NULL;
+	const struct firmware *limit_fw = NULL;
+/*	u8 fwver = 0xFF;*/
+
+/*	ret = fts_read_reg(FTS_REG_FW_VER, &fwver);*/
+	ret = touch_i2c_read_byte(ts_data->client, FTS_REG_FW_VER);
+
+	if (ret >= 0x20) {
+		ts_data->use_panelfactory_limit = false;
+
+	} else {
+		ts_data->use_panelfactory_limit = true;
+	}
+
+	TPD_INFO("%s, use_panelfactory_limit = %d \n", __func__,
+	         ts_data->use_panelfactory_limit);
+
+	ts_data->fts_autotest_offset = kzalloc(sizeof(struct fts_autotest_offset),
+	                                       GFP_KERNEL);
+
+	limit_fw = (const struct firmware *) p_focal_testdata->fw;
+	ph = (struct auto_test_header *)(limit_fw->data);
+
+	p_item_offset = (uint32_t *)(limit_fw->data + 16);
+
+	for (i = 0; i < 8 * sizeof(ph->test_item); i++) {
+		if ((ph->test_item >> i) & 0x01) {
+			item_cnt++;
+		}
+	}
+
+	TPD_INFO("%s: total test item = %d \n", __func__, item_cnt);
+
+	TPD_INFO("%s: populating fts_test_offset \n", __func__);
+
+	for (i = 0; i < item_cnt; i++) {
+		TPD_INFO("%s: i[%d] \n", __func__, i);
+		item_head = (struct auto_test_item_header *)(limit_fw->data + p_item_offset[i]);
+
+		if (item_head->item_limit_type == LIMIT_TYPE_NO_DATA) {
+			TPD_INFO("[%d] incorrect item type: LIMIT_TYPE_NO_DATA\n", item_head->item_bit);
+
+		} else if (item_head->item_limit_type == LIMIT_TYPE_TOP_FLOOR_DATA) {
+			if (false == ts_data->use_panelfactory_limit) {
+				TPD_INFO("test item bit [%d] \n", item_head->item_bit);
+
+				if (item_head->item_bit == TYPE_NOISE_DATA) {
+					ts_data->fts_autotest_offset->fts_noise_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_noise_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+					TPD_INFO("fts_noise_data_P = %p, fts_noise_data_N = %p \n",
+					         ts_data->fts_autotest_offset->fts_noise_data_P,
+					         ts_data->fts_autotest_offset->fts_noise_data_N);
+
+				} else if (item_head->item_bit == TYPE_RAW_DATA) {
+					ts_data->fts_autotest_offset->fts_raw_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_raw_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+					TPD_INFO("fts_raw_data_P = %p, fts_raw_data_N = %p \n",
+					         ts_data->fts_autotest_offset->fts_raw_data_P,
+					         ts_data->fts_autotest_offset->fts_raw_data_N);
+
+				} else if (item_head->item_bit == TYPE_UNIFORMITY_DATA) {
+					ts_data->fts_autotest_offset->fts_uniformity_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_uniformity_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+					TPD_INFO("fts_uniformity_data_P = %p, fts_uniformity_data_N = %p \n",
+					         ts_data->fts_autotest_offset->fts_uniformity_data_P,
+					         ts_data->fts_autotest_offset->fts_uniformity_data_N);
+				}
+
+			} else if (true == ts_data->use_panelfactory_limit) {
+				TPD_INFO("test item bit [%d] \n", item_head->item_bit);
+
+				if (item_head->item_bit == TYPE_FACTORY_NOISE_DATA) {
+					ts_data->fts_autotest_offset->fts_noise_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_noise_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+					TPD_INFO("fts_noise_data_P = %p, fts_noise_data_N = %p \n",
+					         ts_data->fts_autotest_offset->fts_noise_data_P,
+					         ts_data->fts_autotest_offset->fts_noise_data_P);
+
+				} else if (item_head->item_bit == TYPE_FACTORY_RAW_DATA) {
+					ts_data->fts_autotest_offset->fts_raw_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_raw_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+					TPD_INFO("fts_raw_data_P = %p, fts_raw_data_P = %p \n",
+					         ts_data->fts_autotest_offset->fts_raw_data_P,
+					         ts_data->fts_autotest_offset->fts_raw_data_N);
+
+				} else if (item_head->item_bit == TYPE_FACTORY_UNIFORMITY_DATA) {
+					ts_data->fts_autotest_offset->fts_uniformity_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_uniformity_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+					TPD_INFO("fts_uniformity_data_P = %p, fts_uniformity_data_P = %p \n",
+					         ts_data->fts_autotest_offset->fts_uniformity_data_P,
+					         ts_data->fts_autotest_offset->fts_uniformity_data_N);
+				}
+			}
+
+		} else if (item_head->item_limit_type == LIMIT_TYPE_TOP_FLOOR_RX_TX_DATA) {
+			if (false == ts_data->use_panelfactory_limit) {
+				TPD_INFO("test item bit [%d] \n", item_head->item_bit);
+
+				if (item_head->item_bit == TYPE_SCAP_CB_DATA) {
+					ts_data->fts_autotest_offset->fts_scap_cb_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_scap_cb_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+					TPD_INFO("fts_scap_cb_data_P = %p, fts_scap_cb_data_P = %p \n",
+					         ts_data->fts_autotest_offset->fts_scap_cb_data_P,
+					         ts_data->fts_autotest_offset->fts_scap_cb_data_N);
+
+				} else if (item_head->item_bit == TYPE_SCAP_RAW_DATA) {
+					ts_data->fts_autotest_offset->fts_scap_raw_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_scap_raw_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+					TPD_INFO("fts_scap_raw_data_P = %p, fts_scap_raw_data_N = %p \n",
+					         ts_data->fts_autotest_offset->fts_scap_raw_data_P,
+					         ts_data->fts_autotest_offset->fts_scap_raw_data_N);
+
+				} else if (item_head->item_bit == TYPE_SCAP_CB_WATERPROOF_DATA) {
+					ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+					TPD_INFO("fts_scap_cb_data_waterproof_P = %p, fts_scap_cb_data_waterproof_N = %p \n",
+					         ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_P,
+					         ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_N);
+
+				} else if (item_head->item_bit == TYPE_SCAP_RAW_WATERPROOF_DATA) {
+					ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+					TPD_INFO("fts_scap_raw_waterproof_data_P = %p, fts_scap_raw_waterproof_data_N = %p \n",
+					         ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_P,
+					         ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_N);
+				}
+
+			} else if (true == ts_data->use_panelfactory_limit) {
+				TPD_INFO("test item bit [%d] \n", item_head->item_bit);
+
+				if (item_head->item_bit == TYPE_FACTORY_SCAP_CB_DATA) {
+					ts_data->fts_autotest_offset->fts_scap_cb_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_scap_cb_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+
+				} else if (item_head->item_bit == TYPE_FACTORY_SCAP_RAW_DATA) {
+					ts_data->fts_autotest_offset->fts_scap_raw_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_scap_raw_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+
+				} else if (item_head->item_bit == TYPE_FACTORY_SCAP_CB_WATERPROOF_DATA) {
+					ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+
+				} else if (item_head->item_bit == TYPE_FACTORY_SCAP_RAW_WATERPROOF_DATA) {
+					ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_P = (int32_t *)(
+					            limit_fw->data + item_head->top_limit_offset);
+					ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_N = (int32_t *)(
+					            limit_fw->data + item_head->floor_limit_offset);
+				}
+			}
+
+		} else {
+			TPD_INFO("[%d] unknown item type \n", item_head->item_bit);
+		}
+	}
+
+	ret = 0;
+	return ret;
+}
+#endif
+
+static void fts_print_threshold(struct chip_data_ft3419u *ts_data)
+{
+	int tx_num = ts_data->hw_res->tx_num;
+	int rx_num = ts_data->hw_res->rx_num;
+	int node_num = tx_num * rx_num;
+	int channel_num = tx_num + rx_num;
+
+	TPD_INFO("noise threshold max/min:");
+	print_buffer(ts_data->fts_autotest_offset->fts_noise_data_P, node_num, rx_num);
+	print_buffer(ts_data->fts_autotest_offset->fts_noise_data_N, node_num, rx_num);
+
+	TPD_INFO("rawdata threshold max/min:");
+	print_buffer(ts_data->fts_autotest_offset->fts_raw_data_P, node_num, rx_num);
+	print_buffer(ts_data->fts_autotest_offset->fts_raw_data_N, node_num, rx_num);
+
+	TPD_INFO("uniformity threshold max/min:");
+	print_buffer(ts_data->fts_autotest_offset->fts_uniformity_data_P, node_num,
+	             rx_num);
+	print_buffer(ts_data->fts_autotest_offset->fts_uniformity_data_N, node_num,
+	             rx_num);
+
+	TPD_INFO("scap cb normal threshold max/min:");
+	print_buffer(ts_data->fts_autotest_offset->fts_scap_cb_data_P, channel_num,
+	             channel_num);
+	print_buffer(ts_data->fts_autotest_offset->fts_scap_cb_data_N, channel_num,
+	             channel_num);
+
+	TPD_INFO("scap cb waterproof threshold max/min:");
+	print_buffer(ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_P,
+	             channel_num, channel_num);
+	print_buffer(ts_data->fts_autotest_offset->fts_scap_cb_data_waterproof_N,
+	             channel_num, channel_num);
+
+	TPD_INFO("scap rawdata threshold max/min:");
+	print_buffer(ts_data->fts_autotest_offset->fts_scap_raw_data_P, channel_num,
+	             channel_num);
+	print_buffer(ts_data->fts_autotest_offset->fts_scap_raw_data_N, channel_num,
+	             channel_num);
+
+	TPD_INFO("scap rawdata waterproof threshold max/min:");
+	print_buffer(ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_P,
+	             channel_num, channel_num);
+	print_buffer(ts_data->fts_autotest_offset->fts_scap_raw_waterproof_data_N,
+	             channel_num, channel_num);
+}
+
+int fts_test_entry(struct chip_data_ft3419u *ts_data,
+                   struct auto_testdata *focal_testdata)
+{
+	int ret = 0;
+	int i = 0;
+	int node_num = ts_data->hw_res->tx_num * ts_data->hw_res->rx_num;
+	int channel_num = ts_data->hw_res->tx_num + ts_data->hw_res->rx_num;
+
+	FTS_TEST_FUNC_ENTER();
+	FTS_TEST_SAVE_ERR("FW_VER:0x%02x, tx_num:%d, rx_num:%d\n", ts_data->fwver,
+	                  ts_data->hw_res->tx_num, ts_data->hw_res->rx_num);
+
+	/*set node valid*/
+	for (i = 0; i < node_num; i++) {
+		ts_data->node_valid[i] = 1;
+	}
+
+	for (i = 0; i < channel_num; i++) {
+		ts_data->node_valid_sc[i] = 1;
+	}
+
+#ifdef FTS_KIT
+	ret = fts_get_threshold(ts_data, focal_testdata);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("get threshold fail,ret=%d\n", ret);
+		return 0xFF;
+	}
+#else
+	ret = fts_get_threshold_from_img(ts_data, focal_testdata);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("get threshold from img fail,ret=%d\n", ret);
+		return 0xFF;
+	}
+#endif
+
+	fts_print_threshold(ts_data);
+
+	ret = enter_factory_mode(ts_data);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("failed to enter factory mode,ret=%d\n", ret);
+		ret = 0xFF;
+		goto test_err;
+	}
+
+	ret = fts_test_read_reg(0x14, &ts_data->fre_num);
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("read fre_num fails");
+		goto test_err;
+	}
+	TPD_INFO("fre_num:%d", ts_data->fre_num);
+
+	ret = get_channel_num(ts_data);
+
+	if (ret < 0) {
+		FTS_TEST_SAVE_ERR("check channel num fail,ret=%d\n", ret);
+		ret = 0xFF;
+		goto test_err;
+	}
+
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+
+test_err:
+	enter_work_mode();
+	FTS_TEST_FUNC_EXIT();
+	return ret;
+}
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3683g/ft3683g_core.h b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3683g/ft3683g_core.h
index 1f63cb18..332066e2 100755
--- a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3683g/ft3683g_core.h
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3683g/ft3683g_core.h
@@ -42,11 +42,13 @@
 #define FTS_REG_FOD_EN                          0xCF
 #define FTS_REG_FOD_INFO                        0xE1
 #define FTS_REG_FOD_INFO_LEN                    9
+#define FTS_REG_FOD_ERROR_INFO                  0xE0
+#define FTS_REG_FOD_ERROR_INFO_LEN              14
 #define FTS_REG_AOD_INFO                        0xD3
 #define FTS_REG_AOD_INFO_LEN                    6
-#define FTS_REG_DIFFER_VERSION                	0xCD
-#define FTS_DIFFER_VERSION_V1                	0
-#define FTS_DIFFER_VERSION_V2                	1
+#define FTS_REG_DIFFER_VERSION                  0xCD
+#define FTS_DIFFER_VERSION_V1                   0
+#define FTS_DIFFER_VERSION_V2                   1
 
 #define FTS_REG_INT_CNT                         0x8F
 #define FTS_REG_FLOW_WORK_CNT                   0x91
@@ -71,7 +73,9 @@
 #define FTS_FW_INFO                             0x96
 #define FTS_REG_TEMPERATURE                     0x97
 #define FTS_REG_PALM_TO_SLEEP_STATUS            0x9B
-#define FTS_REG_FREQUENCE_WATER_MODE			0xBF
+#define FTS_REG_INJECT_WDT_RESET                0xB6
+#define FTS_REG_FREQUENCE_WATER_MODE            0xBF
+#define FTS_REG_SET_FP_ERROR_REPORT             0xBF /* bit7 */
 
 #define FTS_REG_GESTURE_OUTPUT_ADDRESS          0xD3
 #define FTS_REG_MODULE_ID                       0xE3
@@ -82,6 +86,7 @@
 #define FTS_REG_HEALTH_2                        0xFE
 #define FTS_REG_GLOVE_MODE_SWITCH               0xC0
 #define FTS_REG_GLOVE_MODE_STATE                0x01
+#define FTS_REG_EDGE_LIMIT_SWITCH               0xCE
 
 #define FTS_120HZ_REPORT_RATE                   0x0C
 #define FTS_180HZ_REPORT_RATE                   0x12
@@ -225,6 +230,7 @@
 #define FTS_720HZ_GAME_MODE                     0x03
 #define INTELLIGENT_GAME_MODE                   11
 #define EXTREME_GAME_MODE                       12
+
 enum _FTS_RST_REASON {
 	FTS_RST_REASON_UNKNOWN  = 0,
 	FTS_RST_REASON_FWUPDATE = 0x01,
@@ -233,6 +239,14 @@ enum _FTS_RST_REASON {
 	FTS_RST_REASON_PWR      = 0x08,
 };
 
+enum _FTS_FP_ERROR_TYPE {
+	FTS_FINGERPRINT_DOWN_BEFORE_FP_ENABLE = 0,
+	FTS_FINGERPRINT_X_Y_NOT_MATCH = 0x02,
+	FTS_ANOTHER_FINGER_ON_NON_FP_ZONE = 0x04,
+	FTS_FINGERPRINT_AREA_NOT_MATCH = 0x10,
+	FTS_FINGERPRINT_OUT_MOVE_IN = 0x40,
+};
+
 enum _FTS_TOUCH_ETYPE {
 	TOUCH_DEFAULT = 0x00,
 	TOUCH_PROTOCOL_v2 = 0x02,
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3683g/ft3683g_driver.c b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3683g/ft3683g_driver.c
index b35e0914..536cb2e7 100755
--- a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3683g/ft3683g_driver.c
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Focal/ft3683g/ft3683g_driver.c
@@ -106,6 +106,7 @@ struct chip_data_ft3683g *g_fts_data = NULL;
 } while (0)
 
 enum GESTURE_ID {
+	GESTURE_FINGER_PRINT_ERROR = 0x16,
 	GESTURE_RIGHT2LEFT_SWIP = 0x20,
 	GESTURE_LEFT2RIGHT_SWIP = 0x21,
 	GESTURE_DOWN2UP_SWIP = 0x22,
@@ -2822,10 +2823,6 @@ static int fts_ftm_process(void *chip_data)
 		return ret;
 	}
 
-
-
-
-
 	return 0;
 }
 
@@ -2859,6 +2856,61 @@ static void fts_read_fod_info(struct chip_data_ft3683g *ts_data)
 	ts_data->fod_info.fp_y = (val[6] << 8) + val[7];
 }
 
+static void fts_read_fod_error_info(struct chip_data_ft3683g *ts_data)
+{
+	int ret = 0;
+	u8 cmd = FTS_REG_FOD_ERROR_INFO;
+	u8 val[FTS_REG_FOD_ERROR_INFO_LEN] = { 0 };
+
+	ret = fts_read(&cmd, 1, val, FTS_REG_FOD_ERROR_INFO_LEN);
+	if (ret < 0) {
+		TPD_INFO("%s:read FOD error info fail", __func__);
+		return;
+	}
+
+	TPD_INFO("TP_FP_ERROR_REPORT:fingerprint error type:[%*ph]\n", FTS_REG_FOD_ERROR_INFO_LEN, val);
+	switch (val[FTS_REG_FOD_ERROR_INFO_LEN - 1]) {
+	case FTS_FINGERPRINT_AREA_NOT_MATCH:
+		if (ts_data->monitor_data && ts_data->monitor_data->health_monitor_support) {
+			tp_healthinfo_report(ts_data->monitor_data, HEALTH_REPORT, "fingerprint_area_not_match_count");
+		}
+		TPD_INFO("TP_FP_ERROR_REPORT:area size: 0x%x\n", val[12]);
+		TPD_INFO("TP_FP_ERROR_REPORT:FINGERPRINT_AREA_NOT_MATCH\n");
+		break;
+	case FTS_ANOTHER_FINGER_ON_NON_FP_ZONE:
+		if (ts_data->monitor_data && ts_data->monitor_data->health_monitor_support) {
+			tp_healthinfo_report(ts_data->monitor_data, HEALTH_REPORT, "another_finger_on_non-fingerprint_zone_count");
+		}
+		TPD_INFO("TP_FP_ERROR_REPORT:x:0x%x,y:0x%x\n", (val[4] << 8) + val[5], (val[6] << 8) + val[7]);
+		TPD_INFO("TP_FP_ERROR_REPORT:ANOTHER_FINGER_ON_NON_FP_ZONE\n");
+		break;
+	case FTS_FINGERPRINT_DOWN_BEFORE_FP_ENABLE:
+		if (ts_data->monitor_data && ts_data->monitor_data->health_monitor_support) {
+			tp_healthinfo_report(ts_data->monitor_data, HEALTH_REPORT, "fingerprint_down_before_fp_enable_count");
+		}
+		TPD_INFO("TP_FP_ERROR_REPORT:down time: %*ph\n", 4, val);
+		TPD_INFO("TP_FP_ERROR_REPORT:FINGERPRINT_DOWN_BEFORE_FP_ENABLE\n");
+		break;
+	case FTS_FINGERPRINT_X_Y_NOT_MATCH:
+		if (ts_data->monitor_data && ts_data->monitor_data->health_monitor_support) {
+			tp_healthinfo_report(ts_data->monitor_data, HEALTH_REPORT, "fingerprint_x_y_not_match_count");
+		}
+		TPD_INFO("TP_FP_ERROR_REPORT:FINGERPRINT_X_Y_NOT_MATCH\n");
+		break;
+	case FTS_FINGERPRINT_OUT_MOVE_IN:
+		if (ts_data->monitor_data && ts_data->monitor_data->health_monitor_support) {
+			tp_healthinfo_report(ts_data->monitor_data, HEALTH_REPORT, "fingerprint_out_move_in_count");
+		}
+		TPD_INFO("TP_FP_ERROR_REPORT:FINGERPRINT_OUT_MOVE_IN\n");
+		break;
+	default:
+		TPD_INFO("TP_FP_ERROR_REPORT:unknown fingerprint error type: 0x%x\n", val[FTS_REG_FOD_ERROR_INFO_LEN - 1]);
+		break;
+	}
+
+	return;
+}
+
 static void fts_read_aod_info(struct chip_data_ft3683g *ts_data)
 {
 	int ret = 0;
@@ -3636,6 +3688,10 @@ static int fts_get_gesture_info(void *chip_data, struct gesture_info *gesture)
 		}
 
 		break;
+	case GESTURE_FINGER_PRINT_ERROR:
+		fts_read_fod_error_info(ts_data);
+		gesture->gesture_type = UNKOWN_GESTURE;
+		break;
 
 	case GESTURE_SINGLE_TAP:
 		gesture->gesture_type = SINGLE_TAP;
@@ -3801,6 +3857,39 @@ static int fts_send_temperature(void *chip_data, int temp, bool normal_mode)
 	return 0;
 }
 
+static void fts_set_fp_error_report(void *chip_data, bool enable)
+{
+	int retval = 0;
+	u8 regval = 0;
+
+	TPD_INFO("%s: %s set fp error report.\n", __func__, enable ? "Enter" : "Exit");
+
+	retval = fts_read_reg(FTS_REG_SET_FP_ERROR_REPORT, ®val);
+	if(retval < 0) {
+		TPD_INFO("Failed to get water mode config\n");
+		return;
+	}
+
+	if(enable) {
+		regval = regval | 0x80;
+	} else {
+		regval = regval & 0x7f;
+	}
+
+	retval = fts_write_reg(FTS_REG_SET_FP_ERROR_REPORT, regval);
+	if(retval < 0) {
+		TPD_INFO("Failed to set fp error report\n");
+		return;
+	}
+
+	retval = fts_read_reg(FTS_REG_SET_FP_ERROR_REPORT, ®val);
+	if(retval < 0) {
+		TPD_INFO("Failed to get fp error report\n");
+		return;
+	}
+	TPD_INFO("%s: now reg_val=0x%x", __func__, regval);
+}
+
 static void fts_force_water_mode(void *chip_data, bool enable)
 {
 	int retval = 0;
@@ -3834,6 +3923,39 @@ static void fts_force_water_mode(void *chip_data, bool enable)
 	TPD_INFO("%s: now reg_val=0x%x", __func__, regval);
 }
 
+static void fts_inject_wdt_reset(void *chip_data, int value)
+{
+	int retval = 0;
+	u8 regval = 0;
+
+	TPD_INFO("%s: %s inject watchdog reset.\n", __func__, value ? "Enter" : "Exit");
+
+	retval = fts_read_reg(FTS_REG_INJECT_WDT_RESET, ®val);
+	if(retval < 0) {
+		TPD_INFO("Failed to get watchdog reset config\n");
+		return;
+	}
+
+	if (value) {
+		regval = regval | 0x03;
+	} else {
+		regval = regval & 0xfc;
+	}
+
+	retval = fts_write_reg(FTS_REG_INJECT_WDT_RESET, regval);
+	if(retval < 0) {
+		TPD_INFO("Failed to write inject watchdog reset\n");
+		return;
+	}
+
+	retval = fts_read_reg(FTS_REG_INJECT_WDT_RESET, ®val);
+	if(retval < 0) {
+		TPD_INFO("Failed to read inject watchdog reset\n");
+		return;
+	}
+	TPD_INFO("%s: now reg_val=0x%x", __func__, regval);
+}
+
 static void fts_freq_hop_trigger(void *chip_data)
 {
 	int retval = 0;
@@ -3863,7 +3985,6 @@ static void fts_freq_hop_trigger(void *chip_data)
 	TPD_INFO("%s: now reg_val=0x%x", __func__, regval);
 }
 
-
 static int fts_refresh_switch(void *chip_data, int fps)
 {
 	TPD_INFO("lcd fps =%d", fps);
@@ -3871,7 +3992,6 @@ static int fts_refresh_switch(void *chip_data, int fps)
 			     (fps == 60 ? FTS_120HZ_REPORT_RATE : FTS_180HZ_REPORT_RATE));
 }
 
-
 static int fts_sensitive_lv_set(void *chip_data, int level)
 {
 	int ret = 0;
@@ -4169,6 +4289,32 @@ static void fts_rate_white_list_ctrl(void *chip_data, int value)
 	}
 }
 
+static void fts_edge_limit_switch_write(void *chip_data, int value)
+{
+	struct chip_data_ft3683g *ts_data = (struct chip_data_ft3683g *)chip_data;
+	int ret = 0;
+
+	TPD_INFO("fts_edge_limit_switch_write to %d", value);
+	if (ts_data == NULL) {
+		return;
+	}
+
+	if (ts_data->ts->is_suspended) {
+		return;
+	}
+
+	if((value < 0) || value > 1) {
+		TPD_INFO("%s: fts_edge_limit_switch_write value error\n", __func__);
+		return;
+	}
+
+	ret = fts_write_reg(FTS_REG_EDGE_LIMIT_SWITCH, value);
+	if (ret < 0) {
+		TPD_INFO("write FTS_REG_EDGE_LIMIT_SWITCH fail");
+		return;
+	}
+}
+
 static int fts_diaphragm_touch_lv_set(void *chip_data, int value)
 {
 	int ret = 0;
@@ -4317,12 +4463,15 @@ static struct oplus_touchpanel_operations fts_ops = {
 	.send_temperature           = fts_send_temperature,
 	.freq_hop_trigger           = fts_freq_hop_trigger,
 	.force_water_mode           = fts_force_water_mode,
+	.set_fp_error_report        = fts_set_fp_error_report,
 	.set_high_frame_rate        = fts_set_high_frame_rate,
 	.rate_white_list_ctrl       = fts_rate_white_list_ctrl,
-	.diaphragm_touch_lv_set         = fts_diaphragm_touch_lv_set,
-	.get_water_mode            = fts_get_water_mode,
-	.get_glove_mode            = fts_get_glove_mode,
-	.aiunit_game_info          = fts_aiunit_game_info,
+	.edge_limit_switch_write    = fts_edge_limit_switch_write,
+	.diaphragm_touch_lv_set     = fts_diaphragm_touch_lv_set,
+	.get_water_mode             = fts_get_water_mode,
+	.get_glove_mode             = fts_get_glove_mode,
+	.aiunit_game_info           = fts_aiunit_game_info,
+	.inject_wdt_reset           = fts_inject_wdt_reset,
 };
 
 static struct focal_auto_test_operations ft3683g_test_ops = {
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.c b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.c
index a441f0c3..3d74b45a 100755
--- a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.c
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.c
@@ -41,7 +41,7 @@ static int syna_long_large_zone_handle_func(void *chip_data,
 static int syna_short_large_zone_handle_func(void *chip_data,
 		struct grip_zone_area *grip_zone,
 		bool enable);
-
+static int syna_tcm_reset(void *chip_data);
 static int syna_set_fw_grip_area(void *chip_data,
 				 struct grip_zone_area *grip_zone,
 				 bool enable);
@@ -512,6 +512,7 @@ static int syna_parse_report(struct syna_tcm_data *tcm_info)
 				return -1;
 			}
 			object_data[obj].status = data;
+			touch_data->glove_status = data;
 			offset += bits;
 			break;
 
@@ -1302,7 +1303,16 @@ static void syna_tcm_dispatch_report(struct syna_tcm_data *tcm_info)
 				syna_set_trigger_reason(tcm_info, IRQ_PALM);
 				tcm_info->palm_to_sleep_state = PALM_TO_DEFAULT;
 			}
-
+			if (touch_data->glove_status == GLOVE_FLAG && touch_data->glove_flag == 1) {
+				TPD_INFO("syna_tcm_dispatch_report:glove_mode = 1\n");
+				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_GLOVE, &touch_data->glove_flag);
+				touch_data->glove_flag = 0;
+			}
+			if (touch_data->glove_status == FINGER_FLAG && touch_data->glove_flag == 0) {
+				TPD_INFO("syna_tcm_dispatch_report:glove_mode = 0\n");
+				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_GLOVE, &touch_data->glove_flag);
+				touch_data->glove_flag = 1;
+			}
 			if (touch_data->lpwg_gesture == TOUCH_HOLD_UP
 			    || touch_data->lpwg_gesture == TOUCH_HOLD_DOWN) {
 				syna_set_trigger_reason(tcm_info, IRQ_FINGERPRINT);
@@ -2537,6 +2547,8 @@ static int syna_tcm_get_dynamic_config(struct syna_tcm_data *tcm_info,
 
 	if (retval < 0 || resp_length < 2) {
 		retval = -EINVAL;
+		syna_tcm_reset(tcm_info); /*ic state err, need to reset the IC*/
+		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "ic state err rest");
 		TP_INFO(tcm_info->tp_index, "Failed to read dynamic config\n");
 		report = tp_kzalloc(30, GFP_KERNEL);
 		if (report) {
@@ -3291,8 +3303,6 @@ static int syna_tcm_set_game_mode(struct syna_tcm_data *tcm_info, int enable)
 	struct touchpanel_data *ts = spi_get_drvdata(tcm_info->client);
 	/*unsigned short noise_length = 0;*/
 
-	syna_tcm_set_dynamic_config(tcm_info, SYNA_CMD_GAME_AIUINIT_EN, enable);
-	msleep(1);
 	tcm_info->game_mode = !!enable;
 	retval = syna_tcm_get_dynamic_config(tcm_info, DC_ERROR_PRIORITY, ®val);
 	if (retval < 0) {
@@ -8157,7 +8167,9 @@ static void syna_aiunit_game_info(void *chip_data)
 		return;
 	}
 	if (tcm_info->ts->aiunit_game_enable) {
-		ret = syna_tcm_set_dynamic_config(tcm_info, SYNA_CMD_GAME_AIUINIT_EN, 1);
+		ret = syna_tcm_get_dynamic_config(tcm_info, SYNA_CMD_GAME_AIUINIT_EN, ®val);
+		msleep(3);
+		ret = syna_tcm_set_dynamic_config(tcm_info, SYNA_CMD_GAME_AIUINIT_EN, regval|0x01);
 		msleep(3);
 		ret = syna_tcm_get_dynamic_config(tcm_info, SYNA_CMD_GAME_AIUINIT_EN, ®val);
 		if (regval == 1) {
@@ -8166,8 +8178,6 @@ static void syna_aiunit_game_info(void *chip_data)
 			TPD_INFO("%s: aiunit game info enter fail.\n", __func__);
 		}
 	} else {
-		ret = syna_tcm_set_dynamic_config(tcm_info, SYNA_CMD_GAME_AIUINIT_EN, 0);
-		msleep(3);
 		ret = syna_tcm_get_dynamic_config(tcm_info, SYNA_CMD_GAME_AIUINIT_EN, ®val);
 		if (regval == 0) {
 			TPD_INFO("%s: aiunit game info exit suc.\n", __func__);
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.h b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.h
index 0afe33ab..448dea84 100755
--- a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.h
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/Synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.h
@@ -141,6 +141,8 @@
 
 /*S3910 addr high bit is palm flag, 60*/
 #define PALM_FLAG       6
+#define FINGER_FLAG     1
+#define GLOVE_FLAG      2
 
 #define GESTURE_MODE_SWITCH_RETRY_TIMES     5
 #define MAX_HEALTH_REPORT_LEN 50
@@ -514,6 +516,8 @@ struct touch_data {
 	unsigned int nsm_state;
 	unsigned int num_of_active_objects;
 	unsigned int num_of_cpu_cycles;
+	unsigned int glove_flag;
+	unsigned int glove_status;
 };
 
 struct touch_hcd {
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/oplus_local_modules.bzl b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/oplus_local_modules.bzl
index b999fa03..a1010556 100755
--- a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/oplus_local_modules.bzl
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/oplus_local_modules.bzl
@@ -255,6 +255,22 @@ def define_oplus_local_modules():
 #        local_defines = ["CONFIG_REMOVE_OPLUS_FUNCTION"],
     )
 
+    define_oplus_ddk_module(
+        name = "oplus_bsp_tp_ft3419u",
+        srcs = native.glob([
+            "**/*.h",
+            "Focal/ft3419u/ft3419u_driver.c",
+            "Focal/ft3419u/ft3419u_test.c",
+        ]),
+        ko_deps = [
+            "//vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2:oplus_bsp_tp_custom",
+            "//vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2:oplus_bsp_tp_common",
+            "//vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2:oplus_bsp_tp_focal_common",
+        ],
+        includes = ["."],
+#        local_defines = ["CONFIG_REMOVE_OPLUS_FUNCTION"],
+    )
+
     define_oplus_ddk_module(
         name = "oplus_bsp_tp_ft8057p",
         srcs = native.glob([
@@ -410,6 +426,7 @@ def define_oplus_local_modules():
             "oplus_bsp_tp_ft3681",
             "oplus_bsp_tp_ft3658u_spi",
             "oplus_bsp_tp_ft3518",
+            "oplus_bsp_tp_ft3419u",
             "oplus_bsp_tp_ft8057p",
             "oplus_bsp_tp_goodix_comnon",
             "oplus_bsp_tp_gt9966",
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_common.h b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_common.h
index d8923056..baf7a399 100755
--- a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_common.h
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_common.h
@@ -1015,7 +1015,8 @@ struct touchpanel_data {
 	bool game_switch_support;                           /*indicate game switch support or not*/
 	bool face_detect_support;                           /*touch porximity function*/
 	bool fingerprint_underscreen_support;               /*fingerprint underscreen support*/
-	bool fingerprint_not_report_in_suspend;
+	bool fingerprint_not_report_in_suspend;             /*fingerprint not report in suspending*/
+	bool fingerprint_error_report_support;              /*fingerprint error report support*/
 	bool sec_long_low_trigger;                          /*samsung s6d7ate ic int feature*/
 	bool suspend_gesture_cfg;
 	bool auto_test_force_pass_support;                  /*auto test force pass in early project*/
@@ -1211,6 +1212,7 @@ struct touchpanel_data {
 	int noise_level;                                    /*for game mode control*/
 	int high_frame_value;
 	int limit_enable;                                   /*control state of limit enable */
+	int edge_limit_switch_write_value;                  /*control limit_switch enable */
 	int tp_ic_touch_num;                                 /*tp ic get touch num */
 	int last_tp_ic_touch_num;                            /*last tp ic get touch num */
 	int pen_mode_tp_state;
@@ -1436,6 +1438,8 @@ struct oplus_touchpanel_operations {
 
 	void (*freq_hop_trigger)(void *chip_data); /*trigger frequency-hopping*/
 	void (*force_water_mode)(void *chip_data, bool enable); /*force enter water mode*/
+	void (*set_fp_error_report)(void *chip_data, bool enable); /*set fp error report*/
+	void (*inject_wdt_reset)(void *chip_data, int value); /*inject watchdog reset*/
 	void (*get_water_mode)(void *chip_data); /*force enter water mode*/
 	void (*get_glove_mode)(void *chip_data, int *enable, int *count); /*force enter glove mode*/
 	void (*set_noise_modetest)(void *chip_data, bool enable);
@@ -1447,6 +1451,7 @@ struct oplus_touchpanel_operations {
 				   struct kernel_grip_info *grip_info);          /*enable kernel grip in fw*/
 	bool (*tp_irq_throw_away)(void *chip_data);
 	void (*rate_white_list_ctrl)(void *chip_data, int value);
+	void (*edge_limit_switch_write)(void *chip_data, int value);
 	int (*smooth_lv_set)(void *chip_data, int level);
 	int (*sensitive_lv_set)(void *chip_data, int level);
 	int (*diaphragm_touch_lv_set)(void *chip_data, int level);
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_common_driver.c b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_common_driver.c
index 65e93f8e..fc70bdea 100755
--- a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_common_driver.c
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_common_driver.c
@@ -2263,6 +2263,11 @@ static void init_panel_config(struct device *dev, struct touchpanel_data *ts)
 	ts->disable_suspend_irq_handler = of_property_read_bool(chip_np, "disable_suspend_irq_handler_support");
 	ts->tp_data_record_support = of_property_read_bool(chip_np, "tp_data_record_support");
 
+	/* glove_mode_v2_support */
+	if (!ts->glove_mode_v2_support) {
+		ts->glove_mode_v2_support = of_property_read_bool(chip_np, "glove_mode_v2_support");
+	}
+
 	/* interrupt mode*/
 	ts->int_mode = BANNABLE;
 	rc = of_property_read_u32(chip_np, "touchpanel,int-mode", &val);
@@ -2351,6 +2356,8 @@ static int init_parse_dts(struct device *dev, struct touchpanel_data *ts)
 					      "fingerprint_underscreen_support");
 	ts->fingerprint_not_report_in_suspend = of_property_read_bool(np,
 					      "fingerprint_not_report_in_suspend");
+	ts->fingerprint_error_report_support = of_property_read_bool(np,
+					      "fingerprint_error_report_support");
 	ts->suspend_gesture_cfg   = of_property_read_bool(np, "suspend_gesture_cfg");
 	ts->auto_test_force_pass_support = of_property_read_bool(np,
 					   "auto_test_force_pass_support");
@@ -3596,14 +3603,14 @@ static void tp_delta_read_triggered_by_key_handle(struct work_struct *work)
 	struct touchpanel_data *ts = container_of(work, struct touchpanel_data,
 				key_trigger_work);
 
+	if (!ts)
+		return;
+
 	TP_INFO(ts->tp_index, "%s:tp_debug= %d\n", __func__, tp_debug);
 
 	if (tp_debug != 2)
 		return;
 
-	if (!ts)
-		return;
-
 	touchpanel_trusted_touch_completion(ts);
 	debug_info_ops = (struct debug_info_proc_operations *)ts->debug_info_ops;
 
diff --git a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_proc.c b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_proc.c
index b00ce4e2..ef5ceed8 100755
--- a/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_proc.c
+++ b/vendor/oplus/kernel/touchpanel/oplus_touchscreen_v2/touchpanel_proc.c
@@ -90,7 +90,22 @@ static int tp_irq_check(struct touchpanel_data *ts)
 	return 1;
 }
 
+static void tp_set_fp_error_report(struct touchpanel_data *ts, unsigned int debug_level)
+{
+	if (!ts) {
+		TPD_INFO("%s: ts is NULL\n", __func__);
+		return;
+	}
 
+	if (!ts->ts_ops || !ts->ts_ops->set_fp_error_report) {
+		TS_TP_INFO("%s: ts->ts_ops or ts->ts_ops->set_fp_error_report is NULL\n", __func__);
+		return;
+	}
+
+	TP_INFO(ts->tp_index, "%s: set_fp_error_report value=%d\n", __func__, debug_level);
+
+	ts->ts_ops->set_fp_error_report(ts->chip_data, (debug_level > LEVEL_BASIC) ? 1 : 0);
+}
 
 /*******Part3:Function node Function  Area********************/
 /*oplus_optimized_time - For optimized time*/
@@ -614,21 +629,15 @@ static ssize_t proc_debug_level_read(struct file *file, char __user *buffer,
 static ssize_t proc_debug_level_write(struct file *file,
 				      const char __user *buffer, size_t count, loff_t *ppos)
 {
-#ifdef CONFIG_OPLUS_TP_APK
 	struct touchpanel_data *ts = PDE_DATA(file_inode(file));
-#endif /* end of CONFIG_OPLUS_TP_APK*/
-
 	int tmp = 0;
 	char buf[4] = {0};
 
-#ifdef CONFIG_OPLUS_TP_APK
-
 	if (!ts) {
+		TPD_INFO("%s: ts is NULL\n", __func__);
 		return count;
 	}
 
-#endif /* end of CONFIG_OPLUS_TP_APK*/
-
 	tp_copy_from_user(buf, sizeof(buf), buffer, count, 2);
 
 	if (kstrtoint(buf, 10, &tmp)) {
@@ -638,12 +647,18 @@ static ssize_t proc_debug_level_write(struct file *file,
 
 	tp_debug = tmp;
 	touch_misc_state_change(PDE_DATA(file_inode(file)), IOC_STATE_DEBUG_LEVEL, tp_debug);
+
+	mutex_lock(&ts->mutex);
+	if (ts->fingerprint_error_report_support) {
+		tp_set_fp_error_report(ts, tp_debug);
+	}
+	mutex_unlock(&ts->mutex);
+
 #ifdef CONFIG_OPLUS_TP_APK
 
 	if (ts && ts->apk_op && ts->apk_op->apk_debug_set) {
 		if (tp_debug == 0) {
 			ts->apk_op->apk_debug_set(ts->chip_data, false);
-
 		} else {
 			ts->apk_op->apk_debug_set(ts->chip_data, true);
 		}
@@ -2171,6 +2186,72 @@ static ssize_t proc_dir_control_write(struct file *file,
 
 DECLARE_PROC_OPS(touch_dir_proc_fops, simple_open, proc_dir_control_read, proc_dir_control_write, NULL);
 
+static ssize_t proc_edge_limit_switch_read(struct file *file, char __user *user_buf,
+				     size_t count, loff_t *ppos)
+{
+	int ret = 0;
+	char page[PAGESIZE] = {0};
+	struct touchpanel_data *ts = PDE_DATA(file_inode(file));
+
+	if (!ts) {
+		snprintf(page, PAGESIZE - 1, "%d\n", -1); /* no support */
+	} else {
+		snprintf(page, PAGESIZE - 1, "%d\n", ts->edge_limit_switch_write_value); /* support */
+	}
+
+	ret = simple_read_from_buffer(user_buf, count, ppos, page, strlen(page));
+	return ret;
+}
+
+static ssize_t proc_edge_limit_switch_write(struct file *file,
+				      const char __user *buffer, size_t count, loff_t *ppos)
+{
+	int value = 0;
+	char buf[4] = {0};
+	struct touchpanel_data *ts = PDE_DATA(file_inode(file));
+
+	if (count > 4) {
+		TPD_INFO("%s:count > 4\n", __func__);
+		return -EINVAL;
+	}
+
+	if (!ts || !(ts->ts_ops)) {
+		TPD_INFO("%s: ts is NULL\n", __func__);
+		return -EINVAL;
+	}
+
+	touchpanel_trusted_touch_completion(ts);
+	if (!ts->ts_ops->edge_limit_switch_write) {
+		TS_TP_INFO("%s:not support ts_ops->edge_limit_switch_write callback\n", __func__);
+		return count;
+	}
+
+	tp_copy_from_user(buf, sizeof(buf), buffer, count, 4);
+
+	if (kstrtoint(buf, 4, &value)) {
+		TP_INFO(ts->tp_index, "%s: kstrtoint error\n", __func__);
+		return -EINVAL;
+	}
+
+	mutex_lock(&ts->mutex);
+
+	ts->edge_limit_switch_write_value = value;
+
+	TS_TP_INFO("%s: write value=%d\n", __func__, value);
+
+	if (!ts->is_suspended) {
+		ts->ts_ops->edge_limit_switch_write(ts->chip_data, value);
+	} else {
+		TS_TP_INFO("%s: TP is_suspended.\n", __func__);
+	}
+
+	mutex_unlock(&ts->mutex);
+
+	return count;
+}
+
+DECLARE_PROC_OPS(touch_edge_limit_switch_fops, simple_open, proc_edge_limit_switch_read, proc_edge_limit_switch_write, NULL);
+
 static ssize_t proc_rate_white_list_write(struct file *file,
 		const char __user *buffer, size_t count, loff_t *ppos)
 {
@@ -4257,6 +4338,61 @@ static int abs_doze_open(struct inode *inode, struct file *file)
 
 DECLARE_PROC_OPS(tp_abs_doze_proc_fops, abs_doze_open, seq_read, NULL, single_release);
 
+/*proc/touchpanel/debug_info/wdt_reset*/
+static ssize_t tp_inject_wdt_reset_write_func(struct file *file,
+				    const char __user *buffer, size_t count, loff_t *ppos)
+{
+	int value = 0;
+	char buf[5] = {0};
+	struct touchpanel_data *ts = PDE_DATA(file_inode(file));
+
+	if (!ts) {
+		TPD_INFO("%s: ts is NULL\n", __func__);
+		return count;
+	}
+
+	if (!ts->ts_ops || !ts->ts_ops->inject_wdt_reset) {
+		TS_TP_INFO("%s: ts->ts_ops or ts->ts_ops->inject_wdt_reset is NULL\n", __func__);
+		return count;
+	}
+
+	if (ts->is_suspended) {
+		TS_TP_INFO("%s: is_suspended, exit\n", __func__);
+		return count;
+	}
+
+	tp_copy_from_user(buf, sizeof(buf), buffer, count, 4);
+
+	if (kstrtoint(buf, 10, &value)) {
+		TP_INFO(ts->tp_index, "%s: kstrtoint error\n", __func__);
+		return count;
+	}
+
+	TP_INFO(ts->tp_index, "%s: inject watchdog reset value=%d\n", __func__, value);
+
+	if (value) {
+		ts->ts_ops->inject_wdt_reset(ts->chip_data, value);
+	}
+
+	return count;
+}
+
+static int tp_inject_wdt_reset_read_func(struct seq_file *s, void *v)
+{
+	struct touchpanel_data *ts = s->private;
+
+	if (!ts) {
+		return 0;
+	}
+	return 0;
+}
+
+static int inject_wdt_reset_open(struct inode *inode, struct file *file)
+{
+	return single_open(file, tp_inject_wdt_reset_read_func, PDE_DATA(inode));
+}
+
+DECLARE_PROC_OPS(tp_inject_wdt_reset_proc_fops, inject_wdt_reset_open, seq_read, tp_inject_wdt_reset_write_func, single_release);
 
 /*proc/touchpanel/debug_info/snr*/
 static ssize_t proc_snr_write(struct file *file, const char __user *buf, size_t count, loff_t *lo)
@@ -4944,32 +5080,8 @@ static int init_debug_info_proc(struct touchpanel_data *ts)
 		{"main_register", 0666, NULL, &tp_main_register_proc_fops, ts, false, true},/* show main_register interface*/
 		{"reserve", 0666, NULL, &tp_reserve_proc_fops, ts, false, true},/* show reserve interface*/
 		{"abs_doze", 0666, NULL, &tp_abs_doze_proc_fops, ts, false, true},/* show abs_doze interface*/
-		{
-			"snr", 0666, NULL, &proc_snr_ops, ts, false,
-			ts->snr_read_support
-		},/* show abs_doze interface*/
-#ifndef CONFIG_REMOVE_OPLUS_FUNCTION
-		{
-			"health_monitor", 0666, NULL, &tp_health_monitor_proc_fops, ts, false,
-			ts->health_monitor_support
-		},
-#if IS_ENABLED(CONFIG_TOUCHPANEL_FAULT_INJECT_ENABLE)
-		{
-			"health_simulate_trigger", 0666, NULL, &proc_health_simulate_trigger_ops, ts, false,
-			ts->health_monitor_support
-		},
-#endif
-#endif
-		{
-			"freq_hop_simulate_support", 0666, NULL, &proc_freq_hop_fops, ts, false,
-			ts->freq_hop_simulate_support
-		},
-		{
-			"force_water_mode", 0666, NULL, &proc_force_water_mode_fops, ts, false,
-			ts->ts_ops->force_water_mode
-		},
-		{"hardware_control", 0666, NULL, &proc_hardware_control_fops, ts, false, true},
-		{"report_rate_test", 0666, NULL, &proc_report_rate_test_fops, ts, false, true},
+		{"wdt_reset", 0666, NULL, &tp_inject_wdt_reset_proc_fops, ts, false, true},/* inject watchdog reset*/
+		{"snr", 0666, NULL, &proc_snr_ops, ts, false, ts->snr_read_support},/* show snr interface*/
 	};
 
 	TP_INFO(ts->tp_index, "%s entry\n", __func__);
@@ -4978,8 +5090,8 @@ static int init_debug_info_proc(struct touchpanel_data *ts)
 	prEntry_debug_info = proc_mkdir("debug_info", ts->prEntry_tp);
 
 	if (prEntry_debug_info == NULL) {
-		ret = -ENOMEM;
 		TP_INFO(ts->tp_index, "%s: Couldn't create debug_info proc entry\n", __func__);
+		return -ENOMEM;
 	}
 
 	ts->prEntry_debug_tp = prEntry_debug_info;
@@ -5004,6 +5116,68 @@ static int init_debug_info_proc(struct touchpanel_data *ts)
 
 	return ret;
 }
+static int init_debug_info_proc_part2(struct touchpanel_data *ts, struct proc_dir_entry *prEntry_debug_tp)
+{
+	int ret = 0;
+	int i = 0;
+
+	tp_proc_node proc_debug_node_part2[] = {
+#ifndef CONFIG_REMOVE_OPLUS_FUNCTION
+		{
+			"health_monitor", 0666, NULL, &tp_health_monitor_proc_fops, ts, false,
+			ts->health_monitor_support
+		},
+#if IS_ENABLED(CONFIG_TOUCHPANEL_FAULT_INJECT_ENABLE)
+		{
+			"health_simulate_trigger", 0666, NULL, &proc_health_simulate_trigger_ops, ts, false,
+			ts->health_monitor_support
+		},
+#endif
+#endif
+		{
+			"freq_hop_simulate_support", 0666, NULL, &proc_freq_hop_fops, ts, false,
+			ts->freq_hop_simulate_support
+		},
+		{
+			"force_water_mode", 0666, NULL, &proc_force_water_mode_fops, ts, false,
+			ts->ts_ops->force_water_mode
+		},
+		{
+			"hardware_control", 0666, NULL, &proc_hardware_control_fops, ts, false,
+			true
+		},
+		{
+			"report_rate_test", 0666, NULL, &proc_report_rate_test_fops, ts, false,
+			true
+		},
+	};
+
+	if (prEntry_debug_tp == NULL) {
+		TP_INFO(ts->tp_index, "%s: Couldn't create debug_info proc entry\n", __func__);
+		return -ENOMEM;
+	}
+
+	for (i = 0; i < ARRAY_SIZE(proc_debug_node_part2); i++) {
+		if (proc_debug_node_part2[i].is_support) {
+			proc_debug_node_part2[i].node = proc_create_data(proc_debug_node_part2[i].name,
+						  proc_debug_node_part2[i].mode,
+						  prEntry_debug_tp, proc_debug_node_part2[i].fops, proc_debug_node_part2[i].data);
+
+			if (proc_debug_node_part2[i].node == NULL) {
+				proc_debug_node_part2[i].is_created = false;
+				TP_INFO(ts->tp_index, "%s: Couldn't create proc/debug_info/%s\n", __func__,
+					proc_debug_node_part2[i].name);
+				ret = -ENODEV;
+
+			} else {
+				proc_debug_node_part2[i].is_created = true;
+			}
+		}
+	}
+
+	return ret;
+}
+
 
 /**
  * init_touchpanel_proc - Using for create proc interface
@@ -5114,11 +5288,26 @@ int init_touchpanel_proc_part3(struct touchpanel_data *ts, struct proc_dir_entry
 			"pencil_control", 0666, NULL, &proc_pencil_control_fops, ts, false,
 			ts->pen_support
 		},
-		{"pencil_opp", 0666, NULL, &proc_pencil_opp_fops, ts, false, ts->pen_support},
-		{"gesture_support", 0666, NULL, &tp_gesture_support_fops, ts, false, true},
-		{"palm_to_sleep", 0666, NULL, &tp_palm_to_sleep_fops, ts, false, ts->palm_to_sleep_support},
-		{"palm_to_sleep_support", 0666, NULL, &tp_palm_to_sleep_support_fops, ts, false, ts->palm_to_sleep_support},
-		{"waterproof", 0666, NULL, &tp_waterproof_fops, ts, false, ts->waterproof_support},
+		{
+			"pencil_opp", 0666, NULL, &proc_pencil_opp_fops, ts, false,
+			ts->pen_support
+		},
+		{
+			"gesture_support", 0666, NULL, &tp_gesture_support_fops, ts, false,
+			true
+		},
+		{
+			"palm_to_sleep", 0666, NULL, &tp_palm_to_sleep_fops, ts, false,
+			ts->palm_to_sleep_support
+		},
+		{
+			"palm_to_sleep_support", 0666, NULL, &tp_palm_to_sleep_support_fops, ts, false,
+			ts->palm_to_sleep_support
+		},
+		{
+			"waterproof", 0666, NULL, &tp_waterproof_fops, ts, false,
+			ts->waterproof_support
+		},
 		{
 			"glove_mode_enable", 0666, NULL, &proc_glove_mode, ts, false,
 			ts->glove_mode_v2_support
@@ -5134,10 +5323,16 @@ int init_touchpanel_proc_part3(struct touchpanel_data *ts, struct proc_dir_entry
 			"leather_cover_enable", 0666, NULL, &leather_cover_enable, ts, false,
 			ts->leather_cover_mode_support
 		},
-		{"fp_grip_enable", 0666, NULL, &fp_grip_support_ops, ts, false, ts->fp_grip_support},
+		{
+			"fp_grip_enable", 0666, NULL, &fp_grip_support_ops, ts, false,
+			ts->fp_grip_support
+		},
+		{
+			"fw_edge_limit_switch", 0666, NULL, &touch_edge_limit_switch_fops, ts, false,
+			ts->fw_edge_limit_support
+		},
 	};
 
-
 	for (i = 0; i < ARRAY_SIZE(tp_proc_node_part3); i++) {
 		if (tp_proc_node_part3[i].is_support) {
 			tp_proc_node_part3[i].node = proc_create_data(tp_proc_node_part3[i].name,
@@ -5292,6 +5487,7 @@ int init_touchpanel_proc(struct touchpanel_data *ts)
 
 	/*create debug_info node*/
 	init_debug_info_proc(ts);
+	init_debug_info_proc_part2(ts, ts->prEntry_debug_tp);
 
 	/*create kernel grip proc file*/
 	if (ts->kernel_grip_support) {
diff --git a/vendor/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.c b/vendor/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.c
index 265d6a41..c7ff60ae 100755
--- a/vendor/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.c
+++ b/vendor/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.c
@@ -1210,10 +1210,12 @@ static bool monitor_irq_bus_ready(struct syna_tcm *tcm)
 		moni->irq_need_dev_resume_all_count++;
 		moni->irq_bus_not_ready_count++;
 		TP_INFO(tcm->tp_index, "The device not resume %d ms!", tcm->irq_need_dev_resume_time);
+		/*
 		if (tcm->suspend_task && tcm->supspend_task_error_cnt < MAX_SUSPEND_TASK_DUMP_COUNT) {
 			tcm->supspend_task_error_cnt++;
 			sched_show_task(tcm->suspend_task);
 		}
+		*/
 		if (tcm->exception_upload_support) {
 			tp_exception_report(&tcm->exception_data, EXCEP_BUS_READY, "device not resume", sizeof("device not resume"));
 		}
@@ -2398,7 +2400,11 @@ static int syna_dev_early_suspend(struct device *dev)
 		return -EINVAL;
 	};
 
-	tcm->touch_and_hold = 1;
+	if (tcm->syna_screenon_fingerprint_mode) {
+		tcm->touch_and_hold = 1 << FINGERPIRNT_SCREEN_OFF_ENABLE_BIT | 1 << FINGERPIRNT_SCREEN_ON_ENABLE_BIT;
+	} else {
+		tcm->touch_and_hold = 1;
+	}
 	syna_dev_update_lpwg_status(tcm);
 	syna_dev_set_fingerprint_enable(tcm, tcm->touch_and_hold);
 
@@ -3236,6 +3242,9 @@ static int init_chip_dts(struct device *dev, void *chip_data)
 	tcm->snr_read_support = of_property_read_bool(np, "snr_read_support");
 	TP_INFO(tcm->tp_index, "stats_upload_support = %d \n", tcm->snr_read_support);
 
+	tcm->syna_screenon_fingerprint_mode = of_property_read_bool(np, "syna_screenon_fingerprint_mode");
+	TP_INFO(tcm->tp_index, "syna_screenon_fingerprint_mode = %d \n", tcm->syna_screenon_fingerprint_mode);
+
 	/* S3910_PANEL7 */
 	init_panel_config(dev, tcm);
 
diff --git a/vendor/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.h b/vendor/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.h
index ec7d2529..53913ef5 100755
--- a/vendor/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.h
+++ b/vendor/oplus/kernel/touchpanel/synaptics_hbp/syna_tcm2.h
@@ -391,6 +391,11 @@ enum daemon_states {
 	STATE_TERMINATE,
 };
 
+enum FingerprintEnableBit {
+    FINGERPIRNT_SCREEN_OFF_ENABLE_BIT = 0,
+    FINGERPIRNT_SCREEN_ON_ENABLE_BIT,
+};
+
 #if defined(ENABLE_HELPER)
 /**
  * @brief: Tasks for helper
@@ -772,6 +777,7 @@ struct syna_tcm {
 	struct exception_data    exception_data;            /*exception_data monitor data*/
 
 	bool fingerprint_not_report_in_suspend;
+	bool syna_screenon_fingerprint_mode;
 	/* fifo to pass the data to userspace */
 	unsigned int fifo_remaining_frame;
 	struct list_head frame_fifo_queue;
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/Kconfig b/vendor/oplus/kernel/tp/hbp/hbp/Kconfig
index 22ea8427..c2b5aace 100644
--- a/vendor/oplus/kernel/tp/hbp/hbp/Kconfig
+++ b/vendor/oplus/kernel/tp/hbp/hbp/Kconfig
@@ -6,3 +6,4 @@ config TOUCHSCREEN_HBP_CORE
       If unsure, say N.
 
 source "drivers/input/touchscreen/tp_hbp/chips/focal/ft3683g/Kconfig"
+source "drivers/input/touchscreen/tp_hbp/chips/synaptics/s3910/Kconfig"
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/Makefile b/vendor/oplus/kernel/tp/hbp/hbp/chips/Makefile
index c8149f1f..35258abe 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/Makefile
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/Makefile
@@ -1,3 +1,2 @@
-#obj-y += Syna_tcm_S3910/
 obj-y += synaptics/
 obj-y += focal/
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Makefile b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Makefile
index b83a1803..2bc8a9e7 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Makefile
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Makefile
@@ -1 +1 @@
-#obj-y += synaptics_tcm2/
+obj-y += s3910/
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/Kconfig b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/Kconfig
deleted file mode 100755
index bd77ac38..00000000
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/Kconfig
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Synaptics TCM touchscreen driver configuration
-#
-config TOUCHPANEL_SYNAPTICS_TCM_S3910
-    tristate "TP Synaptics_tcm_S3910 enable or not"
-	default m
-    help
-      Say Y here if you have a Synaptics TCM touchscreen connected
-      to your system.
-
-      If unsure, say N.
-
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/Makefile b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/Makefile
deleted file mode 100755
index 2282d8ba..00000000
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# Makefile for the Synaptics TCM touchscreen driver.
-#
-
-# Each configuration option enables a list of files.
-
-oplus_bsp_tp_tcm_S3910-y += synaptics_tcm_S3910.o
-oplus_bsp_tp_tcm_S3910-y += synaptics_tcm_device_S3910.o
-
-#obj-$(CONFIG_TOUCHPANEL_SYNAPTICS_TCM_S3910) += oplus_bsp_tp_tcm_S3910.o
-
-obj-m += oplus_bsp_tp_tcm_S3910.o
\ No newline at end of file
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.c b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.c
deleted file mode 100755
index 0ca92546..00000000
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.c
+++ /dev/null
@@ -1,7538 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2018-2020 Oplus. All rights reserved.
- */
-
-#include 
-#include 
-#include 
-#include "../../utils/debug.h"
-#include "synaptics_tcm_S3910.h"
-
-#ifdef CONFIG_TOUCHPANEL_MTK_PLATFORM
-#include 
-#endif
-
-
-static int syna_ver_bottom_large_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable);
-static int syna_hor90_corner_large_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable);
-static int syna_hor270_corner_large_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable);
-static int syna_long_dead_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable);
-static int syna_short_dead_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable);
-static int syna_long_condtion_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable);
-static int syna_short_condtion_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable);
-static int syna_long_large_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable);
-static int syna_short_large_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable);
-
-static int syna_set_fw_grip_area(void *chip_data,
-				 struct grip_zone_area *grip_zone,
-				 bool enable);
-static void syna_set_grip_touch_direction(void *chip_data, uint8_t dir);
-static int syna_set_no_handle_area(void *chip_data,
-				   struct kernel_grip_info *grip_info);
-static int syna_set_large_thd(void *chip_data, int large_thd);
-static int syna_set_large_corner_frame_limit(void *chip_data, int frame);
-static int syna_set_disable_level(void *chip_data, uint8_t level);
-
-static struct fw_grip_operations syna_fw_grip_op = {
-	.set_fw_grip_area             = syna_set_fw_grip_area,
-	.set_touch_direction          = syna_set_grip_touch_direction,
-	.set_no_handle_area           = syna_set_no_handle_area,
-	.set_large_ver_thd            = syna_set_large_thd,
-	.set_large_corner_frame_limit = syna_set_large_corner_frame_limit,
-	.set_disable_level            = syna_set_disable_level,
-};
-
-static struct syna_support_grip_zone syna_grip[] = {
-	{"ver_left_bottom_large", syna_ver_bottom_large_handle_func},
-	/*{"ver_right_bottom_large", ver_bottom_large_handle_func},*/
-	{"hor90_left_corner_large", syna_hor90_corner_large_handle_func},
-	/*{"hor90_right_corner_large", hor_corner_large_handle_func},*/
-	{"hor270_left_corner_large", syna_hor270_corner_large_handle_func},
-	/*{"hor270_right_corner_large", hor_corner_large_handle_func},*/
-	{"ver_left_dead", syna_long_dead_zone_handle_func},
-	/*{"ver_right_dead", long_size_dead_zone_handle_func},*/
-	{"hor_left_dead", syna_short_dead_zone_handle_func},
-	/*{"hor_right_dead", short_size_dead_zone_handle_func},*/
-	{"ver_left_condtion", syna_long_condtion_zone_handle_func},
-	/*{"ver_right_condtion", long_size_condtion_zone_handle_func},*/
-	{"hor_left_condtion", syna_short_condtion_zone_handle_func},
-	/*{"hor_right_condtion", short_size_condtion_zone_handle_func},*/
-	{"ver_left_large", syna_long_large_zone_handle_func},
-	/*{"ver_right_large", long_size_large_zone_handle_func},*/
-	{"hor_left_large", syna_short_large_zone_handle_func},
-	/*{"hor_right_large", short_size_large_zone_handle_func},*/
-	{},
-};
-
-#ifdef CONFIG_TOUCHPANEL_MTK_PLATFORM
-const struct mtk_chip_config st_spi_ctrdata = {
-	.sample_sel = 0,
-	.cs_setuptime = 5000,
-	.cs_holdtime = 3000,
-	.cs_idletime = 0,
-	.tick_delay = 0,
-};
-#endif
-static unsigned char *buf;
-static unsigned int buf_size;
-static struct spi_transfer *xfer;
-
-static struct syna_tcm_data *g_tcm_info[TP_SUPPORT_MAX] = {NULL};
-
-extern struct device_hcd *syna_remote_device_S3010_init(
-	struct syna_tcm_data *tcm_info);
-extern int syna_remote_device_S3910_destory(struct syna_tcm_data *tcm_info);
-static void syna_main_register(struct seq_file *s, void *chip_data);
-
-static int syna_tcm_write_message(struct syna_tcm_data *tcm_info,
-				  unsigned char command, unsigned char *payload,
-				  unsigned int length, unsigned char **resp_buf,
-				  unsigned int *resp_buf_size, unsigned int *resp_length,
-				  unsigned int polling_delay_ms);
-static void syna_tcm_test_report(struct syna_tcm_data *tcm_info);
-static int syna_tcm_helper(struct syna_tcm_data *tcm_info);
-static int syna_tcm_enable_report(struct syna_tcm_data *tcm_info,
-				  enum report_type report_type, bool enable);
-static void syna_tcm_fw_update_in_bl(void *chip_data);
-static int syna_tcm_spi_alloc_mem(struct syna_tcm_data *tcm_hcd,
-				  unsigned int count, unsigned int size)
-{
-	static unsigned int xfer_count;
-
-	if (count > xfer_count) {
-		kfree(xfer);
-		xfer = kcalloc(count, sizeof(*xfer), GFP_KERNEL);
-		if (!xfer) {
-			hbp_info("Failed to allocate memory for xfer\n");
-			xfer_count = 0;
-			return -ENOMEM;
-		}
-		xfer_count = count;
-	} else {
-		memset(xfer, 0, count * sizeof(*xfer));
-	}
-
-	if (size > buf_size) {
-		if (buf_size) {
-			kfree(buf);
-		}
-		buf = kmalloc(size, GFP_KERNEL);
-		if (!buf) {
-			hbp_info("Failed to allocate memory for buf\n");
-			buf_size = 0;
-			return -ENOMEM;
-		}
-		buf_size = size;
-	}
-
-	return 0;
-}
-/**
- * syna_tcm_read - read data from TP IC
- *
- * @tcm_hcd: IC Information
- * @data: Store read data
- * @length: read data lenght
- * Write data to TP IC through SPI
- */
-static inline int syna_tcm_read(struct syna_tcm_data *tcm_hcd,
-					unsigned char *data, unsigned int length)
-{
-	int retval;
-	unsigned int idx;
-	struct spi_message msg;
-	struct spi_device *spi = tcm_hcd->client;
-	spi_message_init(&msg);
-
-
-	if (tcm_hcd->byte_delay_us == 0) {
-		retval = syna_tcm_spi_alloc_mem(tcm_hcd, 1, length);
-	} else {
-		retval = syna_tcm_spi_alloc_mem(tcm_hcd, length, 1);
-	}
-	if (retval < 0) {
-		hbp_info("Failed to allocate memory\n");
-		goto exit;
-	}
-
-	if (tcm_hcd->byte_delay_us == 0) {
-		memset(buf, 0xff, length);
-		xfer[0].len = length;
-		xfer[0].tx_buf = buf;
-		xfer[0].rx_buf = data;
-		if (tcm_hcd->block_delay_us) {
-			xfer[0].delay_usecs = tcm_hcd->block_delay_us;
-		}
-		spi_message_add_tail(&xfer[0], &msg);
-	} else {
-		buf[0] = 0xff;
-		for (idx = 0; idx < length; idx++) {
-			xfer[idx].len = 1;
-			xfer[idx].tx_buf = buf;
-			xfer[idx].rx_buf = &data[idx];
-
-			xfer[idx].delay_usecs = tcm_hcd->byte_delay_us;
-			if (tcm_hcd->block_delay_us && (idx == length - 1)) {
-				xfer[idx].delay_usecs = tcm_hcd->block_delay_us;
-			}
-			spi_message_add_tail(&xfer[idx], &msg);
-		}
-	}
-	retval = spi_sync(spi, &msg);
-	if (retval == 0) {
-		retval = length;
-	} else {
-		hbp_info("Failed to complete SPI transfer, error = %d\n", retval);
-	}
-exit:
-	return retval;
-}
-
-/**
- * syna_tcm_write - write data to TP IC
- *
- * @tcm_hcd: IC Information
- * @data: Store write data
- * @length: write data lenght
- * Write data to TP IC through SPI
- */
-static inline int syna_tcm_write(struct syna_tcm_data *tcm_hcd,
-	unsigned char *data, unsigned int length)
-{
-	int retval;
-	unsigned int idx;
-	struct spi_message msg;
-	struct spi_device *spi = tcm_hcd->client;
-	spi_message_init(&msg);
-
-	if (tcm_hcd->byte_delay_us == 0) {
-		retval = syna_tcm_spi_alloc_mem(tcm_hcd, 1, 0);
-	} else {
-		retval = syna_tcm_spi_alloc_mem(tcm_hcd, length, 0);
-	}
-	if (retval < 0) {
-		hbp_info("Failed to allocate memory\n");
-		goto exit;
-	}
-
-
-	if (tcm_hcd->byte_delay_us == 0) {
-		xfer[0].len = length;
-		xfer[0].tx_buf = data;
-		if (tcm_hcd->block_delay_us) {
-			xfer[0].delay_usecs = tcm_hcd->block_delay_us;
-		}
-		spi_message_add_tail(&xfer[0], &msg);
-	} else {
-		for (idx = 0; idx < length; idx++) {
-			xfer[idx].len = 1;
-			xfer[idx].tx_buf = &data[idx];
-
-			xfer[idx].delay_usecs = tcm_hcd->byte_delay_us;
-			if (tcm_hcd->block_delay_us && (idx == length - 1)) {
-					  xfer[idx].delay_usecs = tcm_hcd->block_delay_us;
-			}
-			spi_message_add_tail(&xfer[idx], &msg);
-		}
-	}
-	retval = spi_sync(spi, &msg);
-	if (retval == 0) {
-		retval = length;
-	} else {
-		hbp_info("Failed to complete SPI transfer, error = %d\n", retval);
-	}
-exit:
-	return retval;
-}
-/**
- * syna_get_report_data - Retrieve data from touch report
- *
- * @tcm_info: handle of tcm module
- * @offset: start bit of retrieved data
- * @bits: total bits of retrieved data
- * @data: pointer of data, at most 4 byte
- * Retrieve data from the touch report based on the bit offset and bit length
- * information from the touch report configuration.
- */
-static int syna_get_report_data(struct syna_tcm_data *tcm_info,
-				unsigned int offset,
-				unsigned int bits, unsigned int *data)
-{
-	unsigned char mask = 0;
-	unsigned char byte_data = 0;
-	unsigned int output_data = 0;
-	unsigned int bit_offset = offset % 8;
-	unsigned int byte_offset = offset / 8;
-	unsigned int data_bits = 0;
-	unsigned int available_bits = 0;
-	unsigned int remaining_bits = bits;
-	unsigned char *touch_report = tcm_info->report.buffer.buf;
-	int retval = 0;
-
-	if (bits == 0 || bits > 32) {
-		TPD_DEBUG("larger than 32 bits:%d\n", bits);
-		retval = tp_memcpy((unsigned char *)data, bits / 8, &touch_report[byte_offset],
-				   bits / 8, bits / 8);
-
-		if (retval < 0) {
-			hbp_info("Failed to copy report data\n");
-			return retval;
-		}
-
-		return 0;
-	}
-
-	if (offset + bits > tcm_info->report.buffer.data_length * 8) {
-		TPD_DEBUG("offset and bits beyond total read length\n");
-		*data = 0;
-		return 0;
-	}
-
-	while (remaining_bits) {
-		byte_data = touch_report[byte_offset];
-		byte_data >>= bit_offset;
-
-		available_bits = 8 - bit_offset;
-		data_bits = MIN(available_bits, remaining_bits);
-		mask = 0xff >> (8 - data_bits);
-
-		byte_data &= mask;
-
-		output_data |= byte_data << (bits - remaining_bits);
-
-		bit_offset = 0;
-		byte_offset += 1;
-		remaining_bits -= data_bits;
-	}
-
-	*data = output_data;
-
-	return 0;
-}
-
-/**
- * touch_parse_report() - Parse touch report
- *
- * Traverse through the touch report configuration and parse the touch report
- * generated by the device accordingly to retrieve the touch data.
- */
-static int syna_parse_report(struct syna_tcm_data *tcm_info)
-{
-	int i = 0;
-	int retval = 0;
-	bool active_only = false, num_of_active_objects = false;
-	unsigned char code;
-	unsigned int size = 0, idx = 0, obj = 0;
-	unsigned int next = 0, data = 0, bits = 0, offset = 0, objects = 0;
-	unsigned char  grip_data[4];
-	unsigned int active_objects = 0;
-	unsigned int report_size = 0, config_size = 0;
-	unsigned char *config_data = NULL;
-	struct touch_hcd *touch_hcd = NULL;
-	struct touch_data *touch_data = NULL;
-	struct object_data *object_data = NULL;
-	static unsigned int end_of_foreach = 0;
-
-	touch_hcd = tcm_info->touch_hcd;
-	touch_data = &touch_hcd->touch_data;
-	object_data = touch_hcd->touch_data.object_data;
-	config_data = tcm_info->config.buf;
-	config_size = tcm_info->config.data_length;
-	report_size = tcm_info->report.buffer.data_length;
-	size = sizeof(*object_data) * touch_hcd->max_objects;
-	memset(touch_hcd->touch_data.object_data, 0x00, size);
-
-	while (idx < config_size) {
-		code = config_data[idx++];
-
-		switch (code) {
-		case TOUCH_END:
-			goto exit;
-
-		case TOUCH_FOREACH_ACTIVE_OBJECT:
-			obj = 0;
-			next = idx;
-			active_only = true;
-			break;
-
-		case TOUCH_FOREACH_OBJECT:
-			obj = 0;
-			next = idx;
-			active_only = false;
-			break;
-
-		case TOUCH_FOREACH_END:
-			end_of_foreach = idx;
-
-			if (active_only) {
-				if (num_of_active_objects) {
-					objects++;
-
-					if (objects < active_objects) {
-						idx = next;
-					}
-
-				} else if (offset < report_size * 8) {
-					idx = next;
-				}
-
-			} else {
-				obj++;
-
-				if (obj < touch_hcd->max_objects) {
-					idx = next;
-				}
-			}
-
-			break;
-
-		case TOUCH_PAD_TO_NEXT_BYTE:
-			offset = ceil_div(offset, 8) * 8;
-			break;
-
-		case TOUCH_TIMESTAMP:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_timestamp");
-				hbp_info("Failed to get timestamp\n");
-				return retval;
-			}
-
-			touch_data->timestamp = data;
-			offset += bits;
-			break;
-
-		case TOUCH_OBJECT_N_INDEX:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &obj);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_index");
-				hbp_info("Failed to get object index\n");
-				return retval;
-			}
-
-			if (obj >= touch_hcd->max_objects) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_objnum");
-				hbp_info("Object index error 0x%0X\n", obj);
-				return -1;
-			}
-
-			offset += bits;
-			break;
-
-		case TOUCH_OBJECT_N_CLASSIFICATION:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_classific");
-				hbp_info("Failed to get object classification\n");
-				return retval;
-			}
-			if (obj >= touch_hcd->max_objects) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_objnum");
-				hbp_info("obj> max_obj!! obj[%d]Report Data[%d]:", obj, report_size);
-				if (tp_debug != 0) {
-					for (i = 0; i < report_size; i++) {
-						hbp_info("syna data:[0x%2x]", tcm_info->report.buffer.buf[i]);
-					}
-				}
-				return -1;
-			}
-			object_data[obj].status = data;
-			offset += bits;
-			break;
-
-		case TOUCH_OBJECT_N_X_POSITION:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_xpos");
-				hbp_info("Failed to get object x position\n");
-				return retval;
-			}
-
-			object_data[obj].x_pos = data;
-			offset += bits;
-			break;
-
-		case TOUCH_OBJECT_N_Y_POSITION:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_ypos");
-				hbp_info("Failed to get object y position\n");
-				return retval;
-			}
-
-			object_data[obj].y_pos = data;
-			offset += bits;
-			break;
-
-		case TOUCH_OBJECT_N_Z:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_zpos");
-				hbp_info("Failed to get object z\n");
-				return retval;
-			}
-
-			object_data[obj].z = data;
-			offset += bits;
-			break;
-
-		case TOUCH_OBJECT_N_X_WIDTH:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_xwid");
-				hbp_info("Failed to get object x width\n");
-				return retval;
-			}
-
-			object_data[obj].x_width = data;
-			offset += bits;
-			break;
-
-		case TOUCH_OBJECT_N_Y_WIDTH:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_ywid");
-				hbp_info("Failed to get object y width\n");
-				return retval;
-			}
-
-			object_data[obj].y_width = data;
-			offset += bits;
-			break;
-		case  TOUCH_REPORT_CUSTOMER_GRIP_INFO:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, (unsigned int *)(&grip_data[0]));
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_gripinfo");
-				hbp_info("Failed to get Grip info\n");
-				return retval;
-			}
-			object_data[obj].eywidth  = grip_data[0];
-			object_data[obj].exwidth  = grip_data[1];
-			object_data[obj].yeratio  = grip_data[2];
-			object_data[obj].xeratio  = grip_data[3];
-			offset += bits;
-			break;
-		case TOUCH_OBJECT_N_TX_POSITION_TIXELS:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_txpos");
-				hbp_info("Failed to get object tx position\n");
-				return retval;
-			}
-
-			object_data[obj].tx_pos = data;
-			offset += bits;
-			break;
-
-		case TOUCH_OBJECT_N_RX_POSITION_TIXELS:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_rxpos");
-				hbp_info("Failed to get object rx position\n");
-				return retval;
-			}
-
-			object_data[obj].rx_pos = data;
-			offset += bits;
-			break;
-
-		case TOUCH_0D_BUTTONS_STATE:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_btnstate");
-				hbp_info("Failed to get 0D buttons state\n");
-				return retval;
-			}
-
-			touch_data->buttons_state = data;
-			offset += bits;
-			break;
-
-		case TOUCH_GESTURE_DOUBLE_TAP:
-		case TOUCH_REPORT_GESTURE_SWIPE:
-		case TOUCH_REPORT_GESTURE_CIRCLE:
-		case TOUCH_REPORT_GESTURE_UNICODE:
-		case TOUCH_REPORT_GESTURE_VEE:
-		case TOUCH_REPORT_GESTURE_TRIANGLE:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_gesturetype");
-				hbp_info("Failed to get gesture double tap\n");
-				return retval;
-			}
-
-			touch_data->lpwg_gesture = data;
-			offset += bits;
-			break;
-
-		case TOUCH_REPORT_GESTURE_INFO:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits,
-						      (unsigned int *)(&touch_data->extra_gesture_info[0]));
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_gestureinfo");
-				hbp_info("Failed to get gesture double tap\n");
-				return retval;
-			}
-
-			offset += bits;
-			break;
-
-		case TOUCH_REPORT_GESTURE_COORDINATE:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits,
-						      (unsigned int *)(&touch_data->data_point[0]));
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_gesturepoint");
-				hbp_info("Failed to get gesture double tap\n");
-				return retval;
-			}
-
-			offset += bits;
-			break;
-
-		case TOUCH_FRAME_RATE:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_framerate");
-				hbp_info("Failed to get frame rate\n");
-				return retval;
-			}
-
-			touch_data->frame_rate = data;
-			offset += bits;
-			break;
-
-		case TOUCH_POWER_IM:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_powerim");
-				hbp_info("Failed to get power IM\n");
-				return retval;
-			}
-
-			touch_data->power_im = data;
-			offset += bits;
-			break;
-
-		case TOUCH_CID_IM:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_cidim");
-				hbp_info("Failed to get CID IM\n");
-				return retval;
-			}
-
-			touch_data->cid_im = data;
-			offset += bits;
-			break;
-
-		case TOUCH_RAIL_IM:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_railim");
-				hbp_info("Failed to get rail IM\n");
-				return retval;
-			}
-
-			touch_data->rail_im = data;
-			offset += bits;
-			break;
-
-		case TOUCH_CID_VARIANCE_IM:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_varianeceim");
-				hbp_info("Failed to get CID variance IM\n");
-				return retval;
-			}
-
-			touch_data->cid_variance_im = data;
-			offset += bits;
-			break;
-
-		case TOUCH_NSM_FREQUENCY:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_nsmfreq");
-				hbp_info("Failed to get NSM frequency\n");
-				return retval;
-			}
-
-			touch_data->nsm_frequency = data;
-			offset += bits;
-			break;
-
-		case TOUCH_NSM_STATE:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_nsmstate");
-				hbp_info("Failed to get NSM state\n");
-				return retval;
-			}
-
-			touch_data->nsm_state = data;
-			offset += bits;
-			break;
-
-		case TOUCH_NUM_OF_ACTIVE_OBJECTS:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_activeobj");
-				hbp_info("Failed to get number of active objects\n");
-				return retval;
-			}
-
-			active_objects = data;
-			num_of_active_objects = true;
-			touch_data->num_of_active_objects = data;
-			offset += bits;
-
-			if (touch_data->num_of_active_objects == 0) {
-				idx = end_of_foreach;
-			}
-
-			break;
-
-		case TOUCH_NUM_OF_CPU_CYCLES_USED_SINCE_LAST_FRAME:
-			bits = config_data[idx++];
-			retval = syna_get_report_data(tcm_info, offset, bits, &data);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "parse_report_err_cpucycleuse");
-				hbp_info("Failed to get number of CPU cycles used since last frame\n");
-				return retval;
-			}
-
-			touch_data->num_of_cpu_cycles = data;
-			offset += bits;
-			break;
-
-		case TOUCH_TUNING_GAUSSIAN_WIDTHS:
-			bits = config_data[idx++];
-			offset += bits;
-			break;
-
-		case TOUCH_TUNING_SMALL_OBJECT_PARAMS:
-			bits = config_data[idx++];
-			offset += bits;
-			break;
-
-		case TOUCH_TUNING_0D_BUTTONS_VARIANCE:
-			bits = config_data[idx++];
-			offset += bits;
-			break;
-		}
-	}
-
-exit:
-	return 0;
-}
-
-static int syna_get_input_params(struct syna_tcm_data *tcm_info)
-{
-	int retval;
-
-	LOCK_BUFFER(tcm_info->config);
-
-	retval = syna_tcm_write_message(tcm_info, CMD_GET_TOUCH_REPORT_CONFIG,
-					NULL, 0, &tcm_info->config.buf, &tcm_info->config.buf_size,
-					&tcm_info->config.data_length, 0);
-
-	if (retval < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "get_input_para_err_cmd");
-		hbp_info("Failed to write command %s\n", STR(CMD_GET_TOUCH_REPORT_CONFIG));
-		UNLOCK_BUFFER(tcm_info->config);
-		return retval;
-	}
-
-	UNLOCK_BUFFER(tcm_info->config);
-
-	return 0;
-}
-
-static int syna_set_default_report_config(struct syna_tcm_data *tcm_info)
-{
-	int retval = 0;
-	int length = 0;
-
-	LOCK_BUFFER(tcm_info->config);
-
-	length = tcm_info->default_config.buf_size;
-
-	if (tcm_info->default_config.buf) {
-		retval = syna_tcm_alloc_mem(&tcm_info->config, length);
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "set_report_cfg_err_default_alloc");
-			hbp_info("Failed to alloc mem\n");
-			goto exit;
-		}
-
-		memcpy(tcm_info->config.buf, tcm_info->default_config.buf, length);
-		tcm_info->config.buf_size = tcm_info->default_config.buf_size;
-		tcm_info->config.data_length = tcm_info->default_config.data_length;
-	}
-
-exit:
-	UNLOCK_BUFFER(tcm_info->config);
-
-	return retval;
-}
-
-static int syna_get_default_report_config(struct syna_tcm_data *tcm_info)
-{
-	int retval = 0;
-	unsigned int length;
-
-	length = le2_to_uint(tcm_info->app_info.max_touch_report_config_size);
-
-	LOCK_BUFFER(tcm_info->default_config);
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_GET_TOUCH_REPORT_CONFIG,
-					NULL,
-					0,
-					&tcm_info->default_config.buf,
-					&tcm_info->default_config.buf_size,
-					&tcm_info->default_config.data_length,
-					0);
-
-	if (retval < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "get_report_cfg_err_default_cmd");
-		hbp_info("Failed to write command %s\n", STR(CMD_GET_TOUCH_REPORT_CONFIG));
-		goto exit;
-	}
-
-exit:
-	UNLOCK_BUFFER(tcm_info->default_config);
-	return retval;
-}
-
-static int syna_set_normal_report_config(struct syna_tcm_data *tcm_info)
-{
-	int retval;
-	unsigned int idx = 0;
-	unsigned int length;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-
-	TPD_DEBUG("%s:set normal report\n", __func__);
-	length = le2_to_uint(tcm_info->app_info.max_touch_report_config_size);
-
-	if (length < TOUCH_REPORT_CONFIG_SIZE) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "set_report_cfg_err_normal_len");
-		hbp_info("Invalid maximum touch report config size\n");
-		return -EINVAL;
-	}
-
-	LOCK_BUFFER(touch_hcd->out);
-
-	retval = syna_tcm_alloc_mem(&touch_hcd->out, length);
-
-	if (retval < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "set_report_cfg_err_normal_alloc");
-		hbp_info("Failed to allocate memory for touch_hcd->out.buf\n");
-		UNLOCK_BUFFER(touch_hcd->out);
-		return retval;
-	}
-
-	touch_hcd->out.buf[idx++] = TOUCH_GESTURE_DOUBLE_TAP;
-	touch_hcd->out.buf[idx++] = 8;
-
-	if (0 == tcm_info->normal_config_version) {
-		touch_hcd->out.buf[idx++] = TOUCH_REPORT_GESTURE_INFO;
-		touch_hcd->out.buf[idx++] = 48;
-	}
-	touch_hcd->out.buf[idx++] = TOUCH_FOREACH_ACTIVE_OBJECT;
-	touch_hcd->out.buf[idx++] = TOUCH_OBJECT_N_INDEX;
-	touch_hcd->out.buf[idx++] = 4;
-	touch_hcd->out.buf[idx++] = TOUCH_OBJECT_N_CLASSIFICATION;
-	touch_hcd->out.buf[idx++] = 4;
-	touch_hcd->out.buf[idx++] = TOUCH_OBJECT_N_X_POSITION;
-	touch_hcd->out.buf[idx++] = 16;
-	touch_hcd->out.buf[idx++] = TOUCH_OBJECT_N_Y_POSITION;
-	touch_hcd->out.buf[idx++] = 16;
-	touch_hcd->out.buf[idx++] = TOUCH_OBJECT_N_X_WIDTH;
-	touch_hcd->out.buf[idx++] = 12;
-	touch_hcd->out.buf[idx++] = TOUCH_OBJECT_N_Y_WIDTH;
-	touch_hcd->out.buf[idx++] = 12;
-	touch_hcd->out.buf[idx++] = TOUCH_REPORT_CUSTOMER_GRIP_INFO;
-	touch_hcd->out.buf[idx++] = 32;
-	touch_hcd->out.buf[idx++] = TOUCH_FOREACH_END;
-	touch_hcd->out.buf[idx++] = TOUCH_END;
-
-	LOCK_BUFFER(touch_hcd->resp);
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_SET_TOUCH_REPORT_CONFIG,
-					touch_hcd->out.buf,
-					length,
-					&touch_hcd->resp.buf,
-					&touch_hcd->resp.buf_size,
-					&touch_hcd->resp.data_length,
-					0);
-
-	if (retval < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "set_report_cfg_err_normal_cmd");
-		hbp_info("Failed to write command %s\n", STR(CMD_SET_TOUCH_REPORT_CONFIG));
-		UNLOCK_BUFFER(touch_hcd->resp);
-		UNLOCK_BUFFER(touch_hcd->out);
-		return retval;
-	}
-
-	UNLOCK_BUFFER(touch_hcd->resp);
-	UNLOCK_BUFFER(touch_hcd->out);
-
-	return retval;
-}
-
-static int syna_set_gesture_report_config(struct syna_tcm_data *tcm_info)
-{
-	int retval;
-	unsigned int idx = 0;
-	unsigned int length;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-
-	TPD_DEBUG("%s: set gesture report\n", __func__);
-	length = le2_to_uint(tcm_info->app_info.max_touch_report_config_size);
-
-	if (length < TOUCH_REPORT_CONFIG_SIZE) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "set_report_cfg_err_gesture_len");
-		hbp_info("Invalid maximum touch report config size\n");
-		return -EINVAL;
-	}
-
-	LOCK_BUFFER(touch_hcd->out);
-
-	retval = syna_tcm_alloc_mem(&touch_hcd->out, length);
-
-	if (retval < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "set_report_cfg_err_gesture_alloc");
-		hbp_info("Failed to allocate memory for touch_hcd->out.buf\n");
-		UNLOCK_BUFFER(touch_hcd->out);
-		return retval;
-	}
-
-	touch_hcd->out.buf[idx++] = TOUCH_GESTURE_DOUBLE_TAP;
-	touch_hcd->out.buf[idx++] = 8;
-	/* touch_hcd->out.buf[idx++] = TOUCH_REPORT_GESTURE_CIRCLE;*/
-	/* touch_hcd->out.buf[idx++] = 1;*/
-	/* touch_hcd->out.buf[idx++] = TOUCH_REPORT_GESTURE_SWIPE;*/
-	/* touch_hcd->out.buf[idx++] = 1;*/
-	/* touch_hcd->out.buf[idx++] = TOUCH_REPORT_GESTURE_UNICODE;*/
-	/* touch_hcd->out.buf[idx++] = 1;*/
-	/* touch_hcd->out.buf[idx++] = TOUCH_REPORT_GESTURE_VEE;*/
-	/* touch_hcd->out.buf[idx++] = 1;*/
-	/* touch_hcd->out.buf[idx++] = TOUCH_REPORT_GESTURE_TRIANGLE;*/
-	/* touch_hcd->out.buf[idx++] = 1;*/
-	/* touch_hcd->out.buf[idx++] = TOUCH_PAD_TO_NEXT_BYTE;*/
-	touch_hcd->out.buf[idx++] = TOUCH_REPORT_GESTURE_INFO;
-	touch_hcd->out.buf[idx++] = 48;
-	touch_hcd->out.buf[idx++] = TOUCH_REPORT_GESTURE_COORDINATE;
-	touch_hcd->out.buf[idx++] = 192;
-	touch_hcd->out.buf[idx++] = TOUCH_FOREACH_ACTIVE_OBJECT;
-	touch_hcd->out.buf[idx++] = TOUCH_OBJECT_N_INDEX;
-	touch_hcd->out.buf[idx++] = 4;
-	touch_hcd->out.buf[idx++] = TOUCH_OBJECT_N_CLASSIFICATION;
-	touch_hcd->out.buf[idx++] = 4;
-	touch_hcd->out.buf[idx++] = TOUCH_OBJECT_N_X_POSITION;
-	touch_hcd->out.buf[idx++] = 16;
-	touch_hcd->out.buf[idx++] = TOUCH_OBJECT_N_Y_POSITION;
-	touch_hcd->out.buf[idx++] = 16;
-	touch_hcd->out.buf[idx++] = TOUCH_FOREACH_END;
-	touch_hcd->out.buf[idx++] = TOUCH_END;
-
-	LOCK_BUFFER(touch_hcd->resp);
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_SET_TOUCH_REPORT_CONFIG,
-					touch_hcd->out.buf,
-					length,
-					&touch_hcd->resp.buf,
-					&touch_hcd->resp.buf_size,
-					&touch_hcd->resp.data_length,
-					0);
-
-	if (retval < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "set_report_cfg_err_gesture_cmd");
-		hbp_info("Failed to write command %s\n", STR(CMD_SET_TOUCH_REPORT_CONFIG));
-		UNLOCK_BUFFER(touch_hcd->resp);
-		UNLOCK_BUFFER(touch_hcd->out);
-		return retval;
-	}
-
-	UNLOCK_BUFFER(touch_hcd->resp);
-	UNLOCK_BUFFER(touch_hcd->out);
-
-	return 0;
-}
-
-int syna_set_input_reporting(struct syna_tcm_data *tcm_info, bool suspend)
-{
-	int retval = 0;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-
-	TPD_DEBUG("%s: mode 0x%x, state %d\n", __func__, tcm_info->id_info.mode,
-		  suspend);
-
-	if (tcm_info->id_info.mode != MODE_APPLICATION
-	    || tcm_info->app_status != APP_STATUS_OK) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "set_input_report_notappfw");
-		hbp_info("Application firmware not running\n");
-		return 0;
-	}
-
-	touch_hcd->report_touch = false;
-
-	mutex_lock(&touch_hcd->report_mutex);
-
-	if (!suspend) {
-		retval = syna_set_normal_report_config(tcm_info);
-
-		if (retval < 0) {
-			hbp_info("Failed to set report config\n");
-			goto default_config;
-		}
-
-	} else {
-		retval = syna_set_gesture_report_config(tcm_info);
-
-		if (retval < 0) {
-			hbp_info("Failed to set report config\n");
-			goto default_config;
-		}
-	}
-
-	retval = syna_get_input_params(tcm_info);
-
-	if (retval < 0) {
-		hbp_info("Failed to get input parameters\n");
-	}
-
-	goto exit;
-
-default_config:
-	/*if failed to set report config, use default report config */
-	retval = syna_set_default_report_config(tcm_info);
-
-	if (retval < 0) {
-		hbp_info("Failed to set default report config");
-	}
-
-exit:
-	mutex_unlock(&touch_hcd->report_mutex);
-
-	touch_hcd->report_touch = retval < 0 ? false : true;
-
-	return retval;
-}
-
-static void syna_set_trigger_reason(struct syna_tcm_data *tcm_info,
-				    irq_reason trigger_reason)
-{
-	SET_BIT(tcm_info->trigger_reason, trigger_reason);
-}
-
-static void syna_tcm_resize_chunk_size(struct syna_tcm_data *tcm_info)
-{
-	unsigned int max_write_size;
-
-	max_write_size = le2_to_uint(tcm_info->id_info.max_write_size);
-	tcm_info->wr_chunk_size = MIN(max_write_size, WR_CHUNK_SIZE);
-
-	if (tcm_info->wr_chunk_size == 0) {
-		tcm_info->wr_chunk_size = max_write_size;
-	}
-}
-
-static int syna_async_work_callback(struct syna_tcm_data *tcm_info)
-{
-	if (!tcm_info) {
-		return 0;
-	}
-
-	hbp_info("%s: async work enter\n", __func__);
-	if (tcm_info->first_sync_flag) {
-		tcm_info->first_sync_flag = false;
-		return 0;
-	}
-	/*reinit_completion(&tcm_info->resume_complete);*/
-	if (tcm_info->suspend_state == TP_RESUME_COMPLETE) {
-		hbp_info("%s: *tcm_info->suspend_state %d \n", __func__, tcm_info->suspend_state);
-		complete(&tcm_info->resume_complete);
-		return 0;
-	}
-
-	if (tcm_info->in_test_process) {
-		hbp_info("%s: In test process, do not switch mode\n", __func__);
-		return 0;
-	}
-	hbp_info("%s: async work exit\n", __func__);
-
-	queue_work(tcm_info->async_workqueue, &tcm_info->async_work);
-	return 0;
-}
-
-/**
- * syna_tcm_dispatch_report() - dispatch report received from device
- *
- * @tcm_info: handle of core module
- *
- * The report generated by the device is forwarded to the synchronous inbox of
- * each registered application module for further processing. In addition, the
- * report notifier thread is woken up for asynchronous notification of the
- * report occurrence.
- */
-static void syna_tcm_dispatch_report(struct syna_tcm_data *tcm_info)
-{
-	int ret = 0;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-	struct touch_data *touch_data = &touch_hcd->touch_data;
-
-	LOCK_BUFFER(tcm_info->in);
-	LOCK_BUFFER(tcm_info->report.buffer);
-
-#ifdef EXTERNAL_DEBUG_LOGGING
-		if (tcm_info->report_to_queue[tcm_info->report_code]) {
-			device_update_report_queue(tcm_info, tcm_info->report_code,
-				&tcm_info->in);
-		}
-#endif
-	tcm_info->report.buffer.buf = &tcm_info->in.buf[MESSAGE_HEADER_SIZE];
-	tcm_info->report.buffer.buf_size = tcm_info->in.buf_size - MESSAGE_HEADER_SIZE;
-	tcm_info->report.buffer.data_length = tcm_info->payload_length;
-	tcm_info->report.id = tcm_info->report_code;
-
-	if (tcm_info->report.id == REPORT_TOUCH) {
-		if (*tcm_info->loading_fw) {
-		    hbp_info("%s: disable touch when TP loading_fw !\n", __func__);
-		    goto exit;
-		}
-		ret = syna_parse_report(tcm_info);
-
-		if (ret < 0) {
-			hbp_info("Failed to parse report\n");
-			goto exit;
-		}
-
-		if (*tcm_info->in_suspend) {
-			syna_set_trigger_reason(tcm_info, IRQ_GESTURE);
-
-		} else {
-			syna_set_trigger_reason(tcm_info, IRQ_TOUCH);
-
-			if (touch_data->lpwg_gesture == TOUCH_HOLD_UP
-			    || touch_data->lpwg_gesture == TOUCH_HOLD_DOWN) {
-				syna_set_trigger_reason(tcm_info, IRQ_FINGERPRINT);
-			}
-		}
-
-	} else if (tcm_info->report.id == REPORT_IDENTIFY) {
-		if (tcm_info->id_info.mode == MODE_APPLICATION) {
-			syna_async_work_callback(tcm_info);
-			syna_set_trigger_reason(tcm_info, IRQ_IGNORE);
-		}
-	} else if (tcm_info->report.id == REPORT_TOUCH_HOLD) {
-		syna_set_trigger_reason(tcm_info, IRQ_FINGERPRINT);
-
-	} else if (tcm_info->report.id == REPORT_LOG) {
-		syna_set_trigger_reason(tcm_info, IRQ_FW_HEALTH);
-
-	} else {
-		syna_tcm_test_report(tcm_info);
-	}
-
-exit:
-	UNLOCK_BUFFER(tcm_info->report.buffer);
-	UNLOCK_BUFFER(tcm_info->in);
-	return;
-}
-
-
-/**
- * syna_tcm_dispatch_response() - dispatch response received from device
- *
- * @tcm_info: handle of core module
- *
- * The response to a command is forwarded to the sender of the command.
- */
-static void syna_tcm_dispatch_response(struct syna_tcm_data *tcm_info)
-{
-	int retval = 0;
-
-	if (atomic_read(&tcm_info->command_status) != CMD_BUSY) {
-		tcm_info->trigger_reason = 0;
-		return;
-	}
-
-	LOCK_BUFFER(tcm_info->resp);
-
-	if (tcm_info->payload_length == 0) {
-		UNLOCK_BUFFER(tcm_info->resp);
-		atomic_set(&tcm_info->command_status, CMD_IDLE);
-		goto exit;
-	}
-
-	retval = syna_tcm_alloc_mem(&tcm_info->resp, tcm_info->payload_length);
-
-	if (retval < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "dispatch_resp_err_alloc");
-		hbp_info("Failed to allocate memory for tcm_info->resp.buf\n");
-		UNLOCK_BUFFER(tcm_info->resp);
-		atomic_set(&tcm_info->command_status, CMD_ERROR);
-		goto exit;
-	}
-
-	LOCK_BUFFER(tcm_info->in);
-
-	retval = tp_memcpy(tcm_info->resp.buf, tcm_info->resp.buf_size,
-			   &tcm_info->in.buf[MESSAGE_HEADER_SIZE],
-			   tcm_info->in.buf_size - MESSAGE_HEADER_SIZE, tcm_info->payload_length);
-
-	if (retval < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "dispatch_resp_err_cppld");
-		hbp_info("Failed to copy payload\n");
-		UNLOCK_BUFFER(tcm_info->in);
-		UNLOCK_BUFFER(tcm_info->resp);
-		atomic_set(&tcm_info->command_status, CMD_ERROR);
-		goto exit;
-	}
-
-	tcm_info->resp.data_length = tcm_info->payload_length;
-
-	UNLOCK_BUFFER(tcm_info->in);
-	UNLOCK_BUFFER(tcm_info->resp);
-
-	atomic_set(&tcm_info->command_status, CMD_IDLE);
-
-exit:
-	complete(&tcm_info->response_complete);
-	tcm_info->trigger_reason = 0;
-
-	return;
-}
-
-/**
- * syna_tcm_dispatch_message() - dispatch message received from device
- *
- * @tcm_info: handle of core module
- *
- * The information received in the message read in from the device is dispatched
- * to the appropriate destination based on whether the information represents a
- * report or a response to a command.
- */
-static void syna_tcm_dispatch_message(struct syna_tcm_data *tcm_info)
-{
-	int retval;
-	unsigned int payload_length;
-
-	if (tcm_info->report_code == REPORT_IDENTIFY) {
-		payload_length = tcm_info->payload_length;
-
-		LOCK_BUFFER(tcm_info->in);
-
-		retval = tp_memcpy((unsigned char *)&tcm_info->id_info,
-				   sizeof(tcm_info->id_info),
-				   &tcm_info->in.buf[MESSAGE_HEADER_SIZE],
-				   tcm_info->in.buf_size - MESSAGE_HEADER_SIZE,
-				   MIN(sizeof(tcm_info->id_info), payload_length));
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "dispatch_msg_err_cpidinfo");
-			hbp_info("Failed to copy identification info\n");
-			UNLOCK_BUFFER(tcm_info->in);
-			return;
-		}
-
-		UNLOCK_BUFFER(tcm_info->in);
-
-		syna_tcm_resize_chunk_size(tcm_info);
-		hbp_info("Received identify report (firmware mode = 0x%02x)\n",
-			 tcm_info->id_info.mode);
-		if (0x0b == tcm_info->id_info.mode) {
-			tcm_info->firmware_mode_count++;
-			if (!tcm_info->upload_flag && tcm_info->firmware_mode_count >= FIRMWARE_MODE_BL_MAX) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "firmware mode = 0x0b");
-				tcm_info->upload_flag = 1;
-			}
-		}
-		if (atomic_read(&tcm_info->command_status) == CMD_BUSY) {
-			switch (tcm_info->command) {
-			case CMD_RESET:
-			case CMD_RUN_BOOTLOADER_FIRMWARE:
-			case CMD_RUN_APPLICATION_FIRMWARE:
-				atomic_set(&tcm_info->command_status, CMD_IDLE);
-				complete(&tcm_info->response_complete);
-				break;
-
-			default:
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "dispatch_msg_err_rst");
-				hbp_info("Device has been reset\n");
-				atomic_set(&tcm_info->command_status, CMD_ERROR);
-				complete(&tcm_info->response_complete);
-				break;
-			}
-		}
-
-		if (tcm_info->id_info.mode == MODE_HOST_DOWNLOAD) {
-			return;
-		}
-
-		syna_tcm_helper(tcm_info);
-	}
-
-	if (tcm_info->report_code >= REPORT_IDENTIFY) {
-		syna_tcm_dispatch_report(tcm_info);
-
-	} else {
-		syna_tcm_dispatch_response(tcm_info);
-	}
-
-	return;
-}
-
-/**
- * syna_tcm_continued_read() - retrieve entire payload from device
- *
- * @tcm_info: handle of core module
- *
- * Read transactions are carried out until the entire payload is retrieved from
- * the device and stored in the handle of the core module.
- */
-static int syna_tcm_continued_read(struct syna_tcm_data *tcm_info)
-{
-	int retval = 0;
-	unsigned char marker = 0, code = 0;
-	unsigned int idx = 0, offset = 0, chunks = 0;
-	unsigned int chunk_space = 0, xfer_length = 0, total_length = 0,
-		     remaining_length = 0;
-
-	total_length = MESSAGE_HEADER_SIZE + tcm_info->payload_length + 1;
-	remaining_length = total_length - tcm_info->read_length;
-
-	LOCK_BUFFER(tcm_info->in);
-
-	retval = syna_tcm_realloc_mem(&tcm_info->in, total_length);
-
-	if (retval < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "continued_read_err_alloc");
-		hbp_info("Failed to reallocate memory for tcm_info->in.buf\n");
-		UNLOCK_BUFFER(tcm_info->in);
-		return retval;
-	}
-
-	/* available chunk space for payload = total chunk size minus header
-	 * marker byte and header code byte */
-	if (tcm_info->rd_chunk_size == 0) {
-		chunk_space = remaining_length;
-
-	} else {
-		chunk_space = tcm_info->rd_chunk_size - 2;
-	}
-
-	chunks = ceil_div(remaining_length, chunk_space);
-
-	chunks = chunks == 0 ? 1 : chunks;
-
-	offset = tcm_info->read_length;
-
-	LOCK_BUFFER(tcm_info->temp);
-
-	for (idx = 0; idx < chunks; idx++) {
-		if (remaining_length > chunk_space) {
-			xfer_length = chunk_space;
-
-		} else {
-			xfer_length = remaining_length;
-		}
-
-		if (xfer_length == 1) {
-			tcm_info->in.buf[offset] = MESSAGE_PADDING;
-			offset += xfer_length;
-			remaining_length -= xfer_length;
-			continue;
-		}
-
-		retval = syna_tcm_alloc_mem(&tcm_info->temp, xfer_length + 2);
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "continued_read_err_alloc");
-			hbp_info("Failed to allocate memory for tcm_info->temp.buf\n");
-			UNLOCK_BUFFER(tcm_info->temp);
-			UNLOCK_BUFFER(tcm_info->in);
-			return retval;
-		}
-
-		retval = syna_tcm_read(tcm_info, tcm_info->temp.buf,
-						  xfer_length + 2);
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "continued_read_err_i2crd");
-			hbp_info("Failed to read from device\n");
-			UNLOCK_BUFFER(tcm_info->temp);
-			UNLOCK_BUFFER(tcm_info->in);
-			return retval;
-		}
-
-		marker = tcm_info->temp.buf[0];
-		code = tcm_info->temp.buf[1];
-
-		if (marker != MESSAGE_MARKER) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "continued_read_err_marker");
-			hbp_info("Incorrect header marker (0x%02x)\n", marker);
-			UNLOCK_BUFFER(tcm_info->temp);
-			UNLOCK_BUFFER(tcm_info->in);
-			return -EIO;
-		}
-
-		if (code != STATUS_CONTINUED_READ) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "continued_read_err_status");
-			hbp_info("Incorrect header code (0x%02x)\n", code);
-			UNLOCK_BUFFER(tcm_info->temp);
-			UNLOCK_BUFFER(tcm_info->in);
-			return -EIO;
-		}
-
-		retval = tp_memcpy(&tcm_info->in.buf[offset], total_length - offset,
-				   &tcm_info->temp.buf[2], xfer_length, xfer_length);
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "continued_read_err_cppld");
-			hbp_info("Failed to copy payload\n");
-			UNLOCK_BUFFER(tcm_info->temp);
-			UNLOCK_BUFFER(tcm_info->in);
-			return retval;
-		}
-
-		offset += xfer_length;
-
-		remaining_length -= xfer_length;
-	}
-
-	UNLOCK_BUFFER(tcm_info->temp);
-	UNLOCK_BUFFER(tcm_info->in);
-
-	return 0;
-}
-
-/**
- * syna_tcm_raw_read() - retrieve specific number of data bytes from device
- *
- * @tcm_info: handle of core module
- * @in_buf: buffer for storing data retrieved from device
- * @length: number of bytes to retrieve from device
- *
- * Read transactions are carried out until the specific number of data bytes are
- * retrieved from the device and stored in in_buf.
- */
-static int syna_tcm_raw_read(struct syna_tcm_data *tcm_info,
-			     unsigned char *in_buf, unsigned int length)
-{
-	int retval = 0;
-	unsigned char code = 0;
-	unsigned int idx = 0, offset = 0;
-	unsigned int chunks = 0, chunk_space = 0;
-	unsigned int xfer_length = 0, remaining_length = 0;
-
-	if (length < 2) {
-		hbp_info("Invalid length information\n");
-		return -EINVAL;
-	}
-
-	/* minus header marker byte and header code byte */
-	remaining_length = length - 2;
-
-	/* available chunk space for data = total chunk size minus header marker
-	 * byte and header code byte */
-	if (tcm_info->rd_chunk_size == 0) {
-		chunk_space = remaining_length;
-
-	} else {
-		chunk_space = tcm_info->rd_chunk_size - 2;
-	}
-
-	chunks = ceil_div(remaining_length, chunk_space);
-
-	chunks = chunks == 0 ? 1 : chunks;
-
-	offset = 0;
-
-	LOCK_BUFFER(tcm_info->temp);
-
-	for (idx = 0; idx < chunks; idx++) {
-		if (remaining_length > chunk_space) {
-			xfer_length = chunk_space;
-
-		} else {
-			xfer_length = remaining_length;
-		}
-
-		if (xfer_length == 1) {
-			in_buf[offset] = MESSAGE_PADDING;
-			offset += xfer_length;
-			remaining_length -= xfer_length;
-			continue;
-		}
-
-		retval = syna_tcm_alloc_mem(&tcm_info->temp, xfer_length + 2);
-
-		if (retval < 0) {
-			hbp_info("Failed to allocate memory for tcm_info->temp.buf\n");
-			UNLOCK_BUFFER(tcm_info->temp);
-			return retval;
-		}
-
-		retval = syna_tcm_read(tcm_info, tcm_info->temp.buf, xfer_length + 2);
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "raw_read_err_i2crd");
-			hbp_info("Failed to read from device\n");
-			UNLOCK_BUFFER(tcm_info->temp);
-			return retval;
-		}
-
-		code = tcm_info->temp.buf[1];
-
-		if (idx == 0) {
-			retval = tp_memcpy(&in_buf[0], length, &tcm_info->temp.buf[0], xfer_length + 2,
-					   xfer_length + 2);
-
-		} else {
-			if (code != STATUS_CONTINUED_READ) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "raw_read_err_status");
-				hbp_info("Incorrect header code (0x%02x)\n", code);
-				UNLOCK_BUFFER(tcm_info->temp);
-				return -EIO;
-			}
-
-			retval = tp_memcpy(&in_buf[offset],
-					   length - offset, &tcm_info->temp.buf[2],
-					   xfer_length, xfer_length);
-		}
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "raw_read_err_cpxfer");
-			hbp_info("Failed to copy data\n");
-			UNLOCK_BUFFER(tcm_info->temp);
-			return retval;
-		}
-
-		if (idx == 0) {
-			offset += (xfer_length + 2);
-
-		} else {
-			offset += xfer_length;
-		}
-
-		remaining_length -= xfer_length;
-	}
-
-	UNLOCK_BUFFER(tcm_info->temp);
-
-	return 0;
-}
-
-/**
- * syna_tcm_raw_write() - write command/data to device without receiving
- * response
- *
- * @tcm_info: handle of core module
- * @command: command to send to device
- * @data: data to send to device
- * @length: length of data in bytes
- *
- * A command and its data, if any, are sent to the device.
- */
-static int syna_tcm_raw_write(struct syna_tcm_data *tcm_info,
-			      unsigned char command,
-			      unsigned char *data, unsigned int length)
-{
-	int retval = 0;
-	char *report = NULL;
-	unsigned int idx = 0, chunks = 0, chunk_space = 0;
-	unsigned int xfer_length = 0, remaining_length = length;
-
-	/* available chunk space for data = total chunk size minus command byte */
-	if (tcm_info->wr_chunk_size == 0) {
-		chunk_space = remaining_length;
-
-	} else {
-		chunk_space = tcm_info->wr_chunk_size - 1;
-	}
-
-	chunks = ceil_div(remaining_length, chunk_space);
-
-	chunks = chunks == 0 ? 1 : chunks;
-
-	LOCK_BUFFER(tcm_info->out);
-
-	for (idx = 0; idx < chunks; idx++) {
-		if (remaining_length > chunk_space) {
-			xfer_length = chunk_space;
-
-		} else {
-			xfer_length = remaining_length;
-		}
-
-		retval = syna_tcm_alloc_mem(&tcm_info->out, xfer_length + 1);
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "raw_write_err_alloc");
-			hbp_info("Failed to allocate memory for tcm_info->out.buf\n");
-			UNLOCK_BUFFER(tcm_info->out);
-			return retval;
-		}
-
-		if (idx == 0) {
-			tcm_info->out.buf[0] = command;
-
-		} else {
-			tcm_info->out.buf[0] = CMD_CONTINUE_WRITE;
-		}
-
-		if (xfer_length) {
-			retval = tp_memcpy(&tcm_info->out.buf[1],
-					   xfer_length,
-					   &data[idx * chunk_space],
-					   remaining_length,
-					   xfer_length);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "raw_write_err_cpxfer");
-				hbp_info("Failed to copy data\n");
-				UNLOCK_BUFFER(tcm_info->out);
-				return retval;
-			}
-		}
-
-		retval = syna_tcm_write(tcm_info, tcm_info->out.buf, xfer_length + 1);
-
-		if (retval < 0) {
-			report = tp_kzalloc(30, GFP_KERNEL);
-			if (report) {
-				snprintf(report, 30, "raw_write_err_%2x", command);
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, report);
-				tp_kfree((void **)&report);
-			}
-			hbp_info("Failed to write to device\n");
-			UNLOCK_BUFFER(tcm_info->out);
-			return retval;
-		}
-
-		remaining_length -= xfer_length;
-	}
-
-	UNLOCK_BUFFER(tcm_info->out);
-
-	return 0;
-}
-
-/*add this for debug. remove before pvt*/
-/*
-static void syna_tcm_debug_message(char *buf, int len)
-{
-    int i = 0;
-    char buffer[161] = {0};
-
-    for (i = 0; i < len; i++) {
-        if (i > 32)
-            break;
-
-        sprintf(&buffer[5 * i], "0x%02x ", buf[i]);
-    }
-
-    if (len > 0)
-        hbp_info("payload data: %s\n", buffer);
-}
-*/
-
-/**
- * syna_tcm_read_message() - read message from device
- *
- * @tcm_info: handle of core module
- * @in_buf: buffer for storing data in raw read mode
- * @length: length of data in bytes in raw read mode
- *
- * If in_buf is not NULL, raw read mode is used and syna_tcm_raw_read() is
- * called. Otherwise, a message including its entire payload is retrieved from
- * the device and dispatched to the appropriate destination.
- */
-static int syna_tcm_read_message(struct syna_tcm_data *tcm_info,
-				 unsigned char *in_buf, unsigned int length)
-{
-	int retval = 0;
-	unsigned int total_length = 0;
-	struct syna_tcm_message_header *header = NULL;
-
-	TPD_DEBUG("%s\n", __func__);
-	mutex_lock(&tcm_info->rw_mutex);
-
-	if (in_buf != NULL) {
-		retval = syna_tcm_raw_read(tcm_info, in_buf, length);
-		goto exit;
-	}
-
-	LOCK_BUFFER(tcm_info->in);
-
-	retval = syna_tcm_read(tcm_info, tcm_info->in.buf,
-					 tcm_info->read_length);
-
-	if (retval < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "read_msg_err_i2crd");
-		hbp_info("Failed to read from device\n");
-		UNLOCK_BUFFER(tcm_info->in);
-		goto exit;
-	}
-
-	header = (struct syna_tcm_message_header *)tcm_info->in.buf;
-
-	if (header->marker != MESSAGE_MARKER) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "read_msg_err_marker");
-		hbp_info("wrong header marker:0x%02x\n", header->marker);
-		UNLOCK_BUFFER(tcm_info->in);
-		retval = -ENXIO;
-		goto exit;
-	}
-
-	tcm_info->report_code = header->code;
-	tcm_info->payload_length = le2_to_uint(header->length);
-	TPD_DEBUG("Header code = 0x%02x Payload len = %d\n", tcm_info->report_code,
-		  tcm_info->payload_length);
-
-	if (tcm_info->report_code <= STATUS_ERROR
-	    || tcm_info->report_code == STATUS_INVALID) {
-		switch (tcm_info->report_code) {
-		case STATUS_OK:
-			break;
-
-		case STATUS_CONTINUED_READ:
-
-		/*hbp_info("Out-of-sync continued read\n");*/
-		case STATUS_IDLE:
-		case STATUS_BUSY:
-			tcm_info->payload_length = 0;
-			UNLOCK_BUFFER(tcm_info->in);
-			retval = 0;
-			goto exit;
-
-		default:
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "read_msg_err_header");
-			hbp_info("Incorrect header code (0x%02x)\n", tcm_info->report_code);
-
-			if (tcm_info->report_code != STATUS_ERROR) {
-				UNLOCK_BUFFER(tcm_info->in);
-				retval = -EIO;
-				goto exit;
-			}
-		}
-	}
-
-	total_length = MESSAGE_HEADER_SIZE + tcm_info->payload_length + 1;
-
-#ifdef PREDICTIVE_READING
-
-	if (total_length <= tcm_info->read_length) {
-		goto check_padding;
-
-	} else if (total_length - 1 == tcm_info->read_length) {
-		tcm_info->in.buf[total_length - 1] = MESSAGE_PADDING;
-		goto check_padding;
-	}
-
-#else
-
-	if (tcm_info->payload_length == 0) {
-		tcm_info->in.buf[total_length - 1] = MESSAGE_PADDING;
-		goto check_padding;
-	}
-
-#endif
-
-	UNLOCK_BUFFER(tcm_info->in);
-
-	retval = syna_tcm_continued_read(tcm_info);
-
-	if (retval < 0) {
-		hbp_info("Failed to do continued read\n");
-		goto exit;
-	}
-
-	LOCK_BUFFER(tcm_info->in);
-
-	tcm_info->in.buf[0] = MESSAGE_MARKER;
-
-	tcm_info->in.buf[1] = tcm_info->report_code;
-
-	tcm_info->in.buf[2] = (unsigned char)tcm_info->payload_length;
-
-	tcm_info->in.buf[3] = (unsigned char)(tcm_info->payload_length >> 8);
-
-check_padding:
-	if (tcm_info->in.buf[total_length - 1] != MESSAGE_PADDING) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "read_msg_err_padding");
-		hbp_info("Incorrect message padding byte (0x%02x)\n",
-			 tcm_info->in.buf[total_length - 1]);
-		UNLOCK_BUFFER(tcm_info->in);
-		retval = -EIO;
-		goto exit;
-	}
-
-	UNLOCK_BUFFER(tcm_info->in);
-
-#ifdef PREDICTIVE_READING
-	total_length = MAX(total_length, MIN_READ_LENGTH);
-	tcm_info->read_length = MIN(total_length, tcm_info->rd_chunk_size);
-
-	if (tcm_info->rd_chunk_size == 0) {
-		tcm_info->read_length = total_length;
-	}
-
-#endif
-
-	/*add for debug, remove before pvt*/
-	/*if (LEVEL_BASIC != tp_debug) {*/
-	/*    syna_tcm_debug_message(&tcm_info->in.buf[4], tcm_info->payload_length);*/
-	/*}*/
-
-	syna_tcm_dispatch_message(tcm_info);
-
-	retval = 0;
-
-exit:
-
-	if ((retval < 0) && (atomic_read(&tcm_info->command_status) == CMD_BUSY)) {
-		atomic_set(&tcm_info->command_status, CMD_ERROR);
-		complete(&tcm_info->response_complete);
-	}
-
-	mutex_unlock(&tcm_info->rw_mutex);
-
-	return retval;
-}
-
-/**
- * syna_tcm_write_message() - write message to device and receive response
- *
- * @tcm_info: handle of core module
- * @command: command to send to device
- * @payload: payload of command
- * @length: length of payload in bytes
- * @resp_buf: buffer for storing command response
- * @resp_buf_size: size of response buffer in bytes
- * @resp_length: length of command response in bytes
- * @polling_delay_ms: delay time after sending command before resuming polling
- *
- * If resp_buf is NULL, raw write mode is used and syna_tcm_raw_write() is
- * called. Otherwise, a command and its payload, if any, are sent to the device
- * and the response to the command generated by the device is read in.
- */
-static int syna_tcm_write_message(struct syna_tcm_data *tcm_info,
-				  unsigned char command, unsigned char *payload,
-				  unsigned int length, unsigned char **resp_buf,
-				  unsigned int *resp_buf_size, unsigned int *resp_length,
-				  unsigned int timeout)
-{
-	int retval = 0;
-	char *report = NULL;
-	unsigned int idx = 0, chunks = 0, chunk_space = 0;
-	unsigned int xfer_length = 0, remaining_length = 0;
-	unsigned int command_status = 0;
-	unsigned int timeout_ms = 0;
-
-	mutex_lock(&tcm_info->command_mutex);
-	mutex_lock(&tcm_info->rw_mutex);
-
-	if (resp_buf == NULL) {
-		retval = syna_tcm_raw_write(tcm_info, command, payload, length);
-		mutex_unlock(&tcm_info->rw_mutex);
-		goto exit;
-	}
-
-	atomic_set(&tcm_info->command_status, CMD_BUSY);
-	reinit_completion(&tcm_info->response_complete);
-	tcm_info->command = command;
-
-	LOCK_BUFFER(tcm_info->resp);
-
-	tcm_info->resp.buf = *resp_buf;
-	tcm_info->resp.buf_size = *resp_buf_size;
-	tcm_info->resp.data_length = 0;
-
-	UNLOCK_BUFFER(tcm_info->resp);
-
-	/* adding two length bytes as part of payload */
-	remaining_length = length + 2;
-
-	/* available chunk space for payload = total chunk size minus command
-	 * byte */
-	if (tcm_info->wr_chunk_size == 0) {
-		chunk_space = remaining_length;
-
-	} else {
-		chunk_space = tcm_info->wr_chunk_size - 1;
-	}
-
-	chunks = ceil_div(remaining_length, chunk_space);
-
-	chunks = chunks == 0 ? 1 : chunks;
-
-	TPD_DEBUG("%s:Command = 0x%02x\n", __func__, command);
-
-	LOCK_BUFFER(tcm_info->out);
-
-	for (idx = 0; idx < chunks; idx++) {
-		if (remaining_length > chunk_space) {
-			xfer_length = chunk_space;
-
-		} else {
-			xfer_length = remaining_length;
-		}
-
-		retval = syna_tcm_alloc_mem(&tcm_info->out, xfer_length + 1);
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "write_msg_err_alloc");
-			hbp_info("Failed to allocate memory for tcm_info->out.buf\n");
-			UNLOCK_BUFFER(tcm_info->out);
-			mutex_unlock(&tcm_info->rw_mutex);
-			goto exit;
-		}
-
-		if (idx == 0) {
-			tcm_info->out.buf[0] = command;
-			tcm_info->out.buf[1] = (unsigned char)length;
-			tcm_info->out.buf[2] = (unsigned char)(length >> 8);
-
-			if (xfer_length > 2) {
-				retval = tp_memcpy(&tcm_info->out.buf[3],
-						   xfer_length - 2,
-						   payload,
-						   remaining_length - 2,
-						   xfer_length - 2);
-
-				if (retval < 0) {
-					tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "write_msg_err_cpxfer");
-					hbp_info("Failed to copy payload\n");
-					UNLOCK_BUFFER(tcm_info->out);
-					mutex_unlock(&tcm_info->rw_mutex);
-					goto exit;
-				}
-			}
-
-		} else {
-			tcm_info->out.buf[0] = CMD_CONTINUE_WRITE;
-
-			retval = tp_memcpy(&tcm_info->out.buf[1],
-					   xfer_length,
-					   &payload[idx * chunk_space - 2],
-					   remaining_length,
-					   xfer_length);
-
-			if (retval < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "write_msg_err_cpxfer");
-				hbp_info("Failed to copy payload\n");
-				UNLOCK_BUFFER(tcm_info->out);
-				mutex_unlock(&tcm_info->rw_mutex);
-				goto exit;
-			}
-		}
-
-		retval = syna_tcm_write(tcm_info, tcm_info->out.buf, xfer_length + 1);
-
-		if (retval < 0) {
-			report = tp_kzalloc(30, GFP_KERNEL);
-			if (report) {
-				snprintf(report, 30, "write_msg_err_wr%2x", command);
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, report);
-				tp_kfree((void **)&report);
-			}
-			hbp_info("Failed to write to device\n");
-			UNLOCK_BUFFER(tcm_info->out);
-			mutex_unlock(&tcm_info->rw_mutex);
-			goto exit;
-		}
-
-		remaining_length -= xfer_length;
-	}
-
-	UNLOCK_BUFFER(tcm_info->out);
-
-	mutex_unlock(&tcm_info->rw_mutex);
-
-	if (timeout == 0) {
-		timeout_ms = RESPONSE_TIMEOUT_MS_DEFAULT;
-
-	} else {
-		timeout_ms = timeout;
-	}
-
-	retval = wait_for_completion_timeout(&tcm_info->response_complete,
-					     msecs_to_jiffies(timeout_ms));
-
-	if (retval == 0) {
-		hbp_info("Timed out waiting for response (command 0x%02x)\n",
-			 tcm_info->command);
-		report = tp_kzalloc(30, GFP_KERNEL);
-		if (report) {
-			snprintf(report, 30, "write_msg_err_wait%2x", tcm_info->command);
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, report);
-			tp_kfree((void **)&report);
-		}
-		retval = -EIO;
-
-	} else {
-		command_status = atomic_read(&tcm_info->command_status);
-
-		if (command_status != CMD_IDLE ||
-		    tcm_info->report_code == STATUS_ERROR) {
-			hbp_info("Failed to get valid response\n");
-			report = tp_kzalloc(30, GFP_KERNEL);
-			if (report) {
-				snprintf(report, 30, "write_msg_err_resp%2x", tcm_info->command);
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, report);
-				tp_kfree((void **)&report);
-			}
-			retval = -EIO;
-			goto exit;
-		}
-
-		retval = 0;
-	}
-
-exit:
-
-	if (command_status == CMD_IDLE) {
-		LOCK_BUFFER(tcm_info->resp);
-
-		if (tcm_info->report_code == STATUS_ERROR) {
-			if (tcm_info->resp.data_length) {
-				hbp_info("Error code = 0x%02x\n",
-					 tcm_info->resp.buf[0]);
-			}
-		}
-
-		if (resp_buf != NULL) {
-			*resp_buf = tcm_info->resp.buf;
-			*resp_buf_size = tcm_info->resp.buf_size;
-			*resp_length = tcm_info->resp.data_length;
-		}
-
-		UNLOCK_BUFFER(tcm_info->resp);
-	}
-
-	tcm_info->command = CMD_NONE;
-	atomic_set(&tcm_info->command_status, CMD_IDLE);
-	mutex_unlock(&tcm_info->command_mutex);
-
-	return retval;
-}
-
-static int syna_tcm_get_app_info(struct syna_tcm_data *tcm_info)
-{
-	int retval = 0;
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0, resp_length = 0;
-	unsigned int timeout = APP_STATUS_POLL_TIMEOUT_MS;
-
-get_app_info:
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_GET_APPLICATION_INFO,
-					NULL,
-					0,
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					0);
-
-	if (retval < 0) {
-		hbp_info("Failed to write command %s\n", STR(CMD_GET_APPLICATION_INFO));
-		goto exit;
-	}
-
-	retval = tp_memcpy((unsigned char *)&tcm_info->app_info,
-			   sizeof(tcm_info->app_info),
-			   resp_buf,
-			   resp_buf_size,
-			   MIN(sizeof(tcm_info->app_info), resp_length));
-
-	if (retval < 0) {
-		hbp_info("Failed to copy application info\n");
-		goto exit;
-	}
-
-	tcm_info->app_status = le2_to_uint(tcm_info->app_info.status);
-
-	if (tcm_info->app_status == APP_STATUS_BOOTING
-	    || tcm_info->app_status == APP_STATUS_UPDATING) {
-		if (timeout > 0) {
-			msleep(APP_STATUS_POLL_MS);
-			timeout -= APP_STATUS_POLL_MS;
-			goto get_app_info;
-		}
-	}
-
-	retval = 0;
-
-exit:
-	tp_kfree((void **)&resp_buf);
-
-	return retval;
-}
-
-static int syna_tcm_get_boot_info(struct syna_tcm_data *tcm_info)
-{
-	int retval = 0;
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0, resp_length = 0;
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_GET_BOOT_INFO,
-					NULL,
-					0,
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					0);
-
-	if (retval < 0) {
-		hbp_info("Failed to write command %s\n", STR(CMD_GET_BOOT_INFO));
-		goto exit;
-	}
-
-	retval = tp_memcpy((unsigned char *)&tcm_info->boot_info,
-			   sizeof(tcm_info->boot_info),
-			   resp_buf,
-			   resp_buf_size,
-			   MIN(sizeof(tcm_info->boot_info), resp_length));
-
-	if (retval < 0) {
-		hbp_info("Failed to copy boot info\n");
-		goto exit;
-	}
-
-	retval = 0;
-
-exit:
-	tp_kfree((void **)&resp_buf);
-
-	return retval;
-}
-
-static int syna_tcm_identify(struct syna_tcm_data *tcm_info, bool id)
-{
-	int retval;
-	unsigned char *resp_buf;
-	unsigned int resp_buf_size;
-	unsigned int resp_length;
-
-	resp_buf = NULL;
-	resp_buf_size = 0;
-
-	mutex_lock(&tcm_info->identify_mutex);
-
-	if (!id) {
-		goto get_info;
-	}
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_IDENTIFY,
-					NULL,
-					0,
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					0);
-
-	if (retval < 0) {
-		hbp_info("Failed to write command %s\n", STR(CMD_IDENTIFY));
-		goto exit;
-	}
-
-	retval = tp_memcpy((unsigned char *)&tcm_info->id_info,
-			   sizeof(tcm_info->id_info),
-			   resp_buf,
-			   resp_buf_size,
-			   MIN(sizeof(tcm_info->id_info), resp_length));
-
-	if (retval < 0) {
-		hbp_info("Failed to copy identification info\n");
-		goto exit;
-	}
-
-	syna_tcm_resize_chunk_size(tcm_info);
-
-get_info:
-
-	if (tcm_info->id_info.mode == MODE_APPLICATION) {
-		retval = syna_tcm_get_app_info(tcm_info);
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "identify_err_appinfo");
-			hbp_info("Failed to get application info\n");
-			goto exit;
-		}
-
-	} else {
-		retval = syna_tcm_get_boot_info(tcm_info);
-
-		if (retval < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "identify_err_bootinfo");
-			hbp_info("Failed to get boot info\n");
-			goto exit;
-		}
-	}
-
-	retval = 0;
-
-exit:
-	mutex_unlock(&tcm_info->identify_mutex);
-
-	tp_kfree((void **)&resp_buf);
-
-	return retval;
-}
-
-static int syna_tcm_run_application_firmware(struct syna_tcm_data *tcm_info)
-{
-	int retval = 0;
-	bool retry = true;
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0, resp_length = 0;
-
-retry:
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_RUN_APPLICATION_FIRMWARE,
-					NULL,
-					0,
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					0);
-
-	if (retval < 0) {
-		hbp_info("Failed to write command %s\n", STR(CMD_RUN_APPLICATION_FIRMWARE));
-		goto exit;
-	}
-
-	retval = syna_tcm_identify(tcm_info, false);
-
-	if (retval < 0) {
-		hbp_info("Failed to do identification\n");
-		goto exit;
-	}
-
-	if (tcm_info->id_info.mode != MODE_APPLICATION) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "app_fw_err_mode");
-		hbp_info("Failed to run application firmware (boot status = 0x%02x)\n",
-			 tcm_info->boot_info.status);
-
-		if (retry) {
-			retry = false;
-			goto retry;
-		}
-
-		retval = -EINVAL;
-		goto exit;
-
-	} else if (tcm_info->app_status != APP_STATUS_OK) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "app_fw_err_status");
-		hbp_info("Application status = 0x%02x\n", tcm_info->app_status);
-	}
-
-	retval = 0;
-
-exit:
-	tp_kfree((void **)&resp_buf);
-
-	return retval;
-}
-
-
-static int syna_tcm_run_bootloader_firmware(struct syna_tcm_data *tcm_info)
-{
-	int retval = 0;
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0, resp_length = 0;
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_RUN_BOOTLOADER_FIRMWARE,
-					NULL,
-					0,
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					0);
-
-	if (retval < 0) {
-		hbp_info("Failed to write command %s\n", STR(CMD_RUN_BOOTLOADER_FIRMWARE));
-		goto exit;
-	}
-
-	retval = syna_tcm_identify(tcm_info, false);
-
-	if (retval < 0) {
-		hbp_info("Failed to do identification\n");
-		goto exit;
-	}
-
-	if (tcm_info->id_info.mode == MODE_APPLICATION) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "bl_fw_err_mode");
-		hbp_info("Failed to enter bootloader mode\n");
-		retval = -EINVAL;
-		goto exit;
-	}
-
-	retval = 0;
-
-exit:
-	tp_kfree((void **)&resp_buf);
-
-	return retval;
-}
-
-
-static int syna_tcm_switch_mode(struct syna_tcm_data *tcm_info,
-				enum firmware_mode mode)
-{
-	int retval = 0;
-
-	mutex_lock(&tcm_info->reset_mutex);
-
-	switch (mode) {
-	case FW_MODE_BOOTLOADER:
-		retval = syna_tcm_run_bootloader_firmware(tcm_info);
-
-		if (retval < 0) {
-			hbp_info("Failed to switch to bootloader mode\n");
-			goto exit;
-		}
-
-		break;
-
-	case FW_MODE_APPLICATION:
-		retval = syna_tcm_run_application_firmware(tcm_info);
-
-		if (retval < 0) {
-			hbp_info("Failed to switch to application mode\n");
-			goto exit;
-		}
-
-		break;
-
-	default:
-		hbp_info("Invalid firmware mode\n");
-		retval = -EINVAL;
-		goto exit;
-	}
-
-exit:
-	mutex_unlock(&tcm_info->reset_mutex);
-
-	return retval;
-}
-
-static int syna_tcm_get_dynamic_config(struct syna_tcm_data *tcm_info,
-				       enum dynamic_config_id id, unsigned short *value)
-{
-	int retval = 0;
-	char *report = NULL;
-	unsigned char out_buf = (unsigned char)id;
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0, resp_length = 0;
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_GET_DYNAMIC_CONFIG,
-					&out_buf,
-					sizeof(out_buf),
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					RESPONSE_TIMEOUT_MS_SHORT);
-
-	if (retval < 0 || resp_length < 2) {
-		retval = -EINVAL;
-		hbp_info("Failed to read dynamic config\n");
-		report = tp_kzalloc(30, GFP_KERNEL);
-		if (report) {
-			snprintf(report, 30, "get_dc_err_%2x", (unsigned int)id);
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, report);
-			tp_kfree((void **)&report);
-		}
-		goto exit;
-	}
-
-	*value = (unsigned short)le2_to_uint(resp_buf);
-exit:
-	tp_kfree((void **)&resp_buf);
-	return retval;
-}
-
-static int syna_tcm_set_dynamic_config(struct syna_tcm_data *tcm_info,
-				       enum dynamic_config_id id, unsigned short value)
-{
-	int retval = 0;
-	char *report = NULL;
-	unsigned char out_buf[3] = {0};
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0, resp_length = 0;
-
-	TPD_DEBUG("%s:config 0x%x, value %d\n", __func__, id, value);
-
-	out_buf[0] = (unsigned char)id;
-	out_buf[1] = (unsigned char)value;
-	out_buf[2] = (unsigned char)(value >> 8);
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_SET_DYNAMIC_CONFIG,
-					out_buf,
-					sizeof(out_buf),
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					RESPONSE_TIMEOUT_MS_SHORT);
-
-	if (retval < 0) {
-		hbp_info("Failed to write command %s\n", STR(CMD_SET_DYNAMIC_CONFIG));
-		report = tp_kzalloc(30, GFP_KERNEL);
-		if (report) {
-			snprintf(report, 30, "set_dc_err_%2x", (unsigned int)id);
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, report);
-			tp_kfree((void **)&report);
-		}
-		goto exit;
-	}
-
-exit:
-	tp_kfree((void **)&resp_buf);
-
-	return retval;
-}
-
-static int syna_tcm_sleep(struct syna_tcm_data *tcm_info, bool en)
-{
-	int retval = 0;
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0, resp_length = 0;
-	unsigned char command = en ? CMD_ENTER_DEEP_SLEEP : CMD_EXIT_DEEP_SLEEP;
-
-	hbp_info("%s: %s .\n", __func__, en ? "enter" : "exit");
-
-	retval = syna_tcm_write_message(tcm_info,
-					command,
-					NULL,
-					0,
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					0);
-
-	if (retval < 0) {
-		hbp_info("Failed to write command %s\n",
-			 en ? STR(CMD_ENTER_DEEP_SLEEP) : STR(CMD_EXIT_DEEP_SLEEP));
-		goto exit;
-	}
-
-exit:
-	tp_kfree((void **)&resp_buf);
-
-	return retval;
-}
-
-static int syna_report_refresh_switch(void *chip_data, int fps)
-{
-	int retval = 0;
-	unsigned short send_value = 1;
-	int i = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	TPD_DEBUG("%s: refresh_switch: %d HZ!\n", __func__, fps);
-	if (tcm_info == NULL) {
-		return -1;
-	}
-	tcm_info->display_refresh_rate = fps;
-
-	if (!*tcm_info->in_suspend && !tcm_info->game_mode) {
-		for (i = 0; i < tcm_info->fps_report_rate_num; i = i + 2) {
-			if (fps == tcm_info->fps_report_rate_array[i]) {
-				send_value = tcm_info->fps_report_rate_array[i + 1];
-			}
-		}
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_SET_REPORT_FRE, send_value);
-		if (retval < 0) {
-			hbp_info("Failed to set dynamic report frequence config\n");
-		}
-		hbp_info("%s: refresh_switch: %d HZ %s!\n", __func__, fps, retval < 0 ? "failed" : "success");
-	}
-	return retval;
-}
-
-static void syna_rate_white_list_ctrl(void *chip_data, int value)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned short send_value = 1;
-	int retval = 0;
-
-	if (tcm_info == NULL) {
-		return;
-	}
-
-	if (*tcm_info->in_suspend || tcm_info->game_mode) {
-		return;
-	}
-	switch (value) {
-	case 0: /* 60Hz */
-		send_value = 1;
-		break;
-	case 1: /* 120Hz */
-		send_value = 2;
-		break;
-	case 2: /* 90Hz */
-		send_value = 3;
-		break;
-	default:
-		return;
-	}
-
-	retval = syna_tcm_set_dynamic_config(tcm_info,
-					     DC_SET_REPORT_FRE,
-					     send_value);
-	if (retval < 0) {
-		hbp_info("Failed to set dynamic report frequence config\n");
-	}
-	hbp_info("%s: DC_SET_REPORT_FRE: %d  %s!\n",
-		 __func__, send_value, retval < 0 ? "failed" : "success");
-}
-
-static int synaptics_resetgpio_set(struct hw_resource *hw_res, bool on)
-{
-	if (gpio_is_valid(hw_res->reset_gpio)) {
-		TPD_DEBUG("Set the reset_gpio \n");
-		gpio_direction_output(hw_res->reset_gpio, on);
-	}
-
-	return 0;
-}
-
-static int syna_tcm_reset(void *chip_data)
-{
-	int retval = 0;
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0;
-	unsigned int resp_length = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	syna_tcm_fw_update_in_bl(chip_data);
-
-	mutex_lock(&tcm_info->reset_mutex);
-
-	synaptics_resetgpio_set(tcm_info->hw_res, false);
-	msleep(POWEWRUP_TO_RESET_TIME);
-	synaptics_resetgpio_set(tcm_info->hw_res, true);
-	msleep(RESET_TO_NORMAL_TIME);
-
-	retval = syna_tcm_identify(tcm_info, false);
-
-	if (retval < 0) {
-		hbp_info("Failed to do identification\n");
-		goto exit;
-	}
-
-	if (tcm_info->id_info.mode == MODE_APPLICATION) {
-		goto dispatch_reset;
-	}
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_RUN_APPLICATION_FIRMWARE,
-					NULL,
-					0,
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					0);
-
-	if (retval < 0) {
-		hbp_info("Failed to write command %s\n", STR(CMD_RUN_APPLICATION_FIRMWARE));
-	}
-
-	retval = syna_tcm_identify(tcm_info, false);
-
-	if (retval < 0) {
-		hbp_info("Failed to do identification\n");
-		goto exit;
-	}
-
-dispatch_reset:
-	hbp_info("Firmware mode = 0x%02x, boot status 0x%02x, app status 0x%02x\n",
-		 tcm_info->id_info.mode,
-		 tcm_info->boot_info.status,
-		 tcm_info->app_status);
-
-exit:
-	mutex_unlock(&tcm_info->reset_mutex);
-
-	tp_kfree((void **)&resp_buf);
-
-	return retval;
-}
-
-static int syna_get_chip_info(void *chip_data)
-{
-	int ret = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	hbp_info("%s: Enter\n", __func__);
-
-	ret = syna_tcm_reset(tcm_info);  /* reset to get bootloader info or boot info*/
-
-	if (ret < 0) {
-		hbp_info("failed to reset device\n");
-	}
-
-	ret = syna_get_default_report_config(tcm_info);
-
-	if (ret < 0) {
-		hbp_info("failed to get default report config\n");
-	}
-
-	return 0;
-}
-
-static int syna_get_vendor(void *chip_data, struct panel_info *panel_data)
-{
-	char manu_temp[MAX_DEVICE_MANU_LENGTH] = SYNAPTICS_PREFIX;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	tcm_info->iHex_name = panel_data->extra;
-
-	strlcat(manu_temp, panel_data->manufacture_info.manufacture,
-		MAX_DEVICE_MANU_LENGTH);
-	strncpy(panel_data->manufacture_info.manufacture, manu_temp,
-		MAX_DEVICE_MANU_LENGTH);
-	hbp_info("chip_info->tp_type = %d, panel_data->fw_name = %s\n",
-		 panel_data->tp_type, panel_data->fw_name);
-	return 0;
-}
-
-static u32 syna_trigger_reason(void *chip_data, int gesture_enable,
-			       int is_suspended)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	tcm_info->trigger_reason = 0;
-	syna_tcm_read_message(tcm_info, NULL, 0);
-
-	return tcm_info->trigger_reason;
-}
-
-static int syna_get_touch_points(void *chip_data, struct point_info *points,
-				 int max_num)
-{
-	unsigned int idx = 0, status = 0, i = 0;
-	struct object_data *object_data = NULL;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-	struct touchpanel_snr *snr = tcm_info->snr;
-
-	if (points == NULL) {
-		return tcm_info->obj_attention;
-	}
-
-	if (tcm_info->snr_read_support) {
-		for (i = 0; i < max_num; i++) {
-			snr[i].point_status = 0;
-		}
-	}
-	object_data = touch_hcd->touch_data.object_data;
-
-	for (idx = 0; idx < touch_hcd->max_objects; idx++) {
-		status = object_data[idx].status;
-
-		if (status != LIFT) {
-			tcm_info->obj_attention |= (0x1 << idx);
-
-		} else {
-			if ((~tcm_info->obj_attention) & ((0x1) << idx)) {
-				continue;
-
-			} else {
-				tcm_info->obj_attention &= (~(0x1 << idx));
-			}
-		}
-
-		points[idx].x = object_data[idx].x_pos;
-		points[idx].y = object_data[idx].y_pos;
-		points[idx].touch_major = max(object_data[idx].x_width, object_data[idx].y_width);
-		points[idx].width_major = min(object_data[idx].x_width, object_data[idx].y_width);
-		points[idx].tx_press = object_data[idx].exwidth;
-		points[idx].rx_press = object_data[idx].eywidth;
-		points[idx].tx_er = object_data[idx].xeratio;
-		points[idx].rx_er = object_data[idx].yeratio;
-		points[idx].status = 1;
-		if (tcm_info->snr_read_support) {
-			if (snr[idx].doing && points[idx].x && points[idx].y) {
-				snr[idx].point_status = 1;
-				snr[idx].x = points[idx].x;
-				snr[idx].y = points[idx].y;
-				snr[idx].channel_x = snr[idx].x * tcm_info->hw_res->tx_num / tcm_info->chip_resolution_info->max_x;
-				snr[idx].channel_y = snr[idx].y * tcm_info->hw_res->rx_num / tcm_info->chip_resolution_info->max_y;
-				TPD_DEBUG("snr: [%d %d, %d] {%d %d} obj 0x%x status %d\n", snr[idx].x, snr[idx].y, idx,
-						snr[idx].channel_x, snr[idx].channel_y, tcm_info->obj_attention, status);
-			}
-		}
-	}
-
-	return tcm_info->obj_attention;
-}
-
-static int syna_get_touch_points_auto(void *chip_data,
-				      struct point_info *points,
-				      int max_num,
-				      struct resolution_info *resolution_info)
-{
-	unsigned int idx = 0, status = 0, i = 0;
-	struct object_data *object_data = NULL;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-	struct touchpanel_snr *snr = tcm_info->snr;
-
-	int max_x_inchip = 0;
-	int max_y_inchip = 0;
-	int max_x = 0;
-	int max_y = 0;
-
-	if (points == NULL) {
-		return tcm_info->obj_attention;
-	}
-
-	if (tcm_info->snr_read_support) {
-		for (i = 0; i < max_num; i++) {
-			snr[i].point_status = 0;
-		}
-	}
-	object_data = touch_hcd->touch_data.object_data;
-
-	max_x_inchip = le2_to_uint(tcm_info->app_info.max_x) + 1;
-	max_y_inchip = le2_to_uint(tcm_info->app_info.max_y) + 1;
-	max_x = resolution_info->max_x;
-	max_y = resolution_info->max_y;
-
-
-	for (idx = 0; idx < touch_hcd->max_objects; idx++) {
-		status = object_data[idx].status;
-		if (status != LIFT) {
-			tcm_info->obj_attention |= (0x1 << idx);
-		} else {
-			if ((~tcm_info->obj_attention) & ((0x1) << idx)) {
-				continue;
-			} else {
-				tcm_info->obj_attention &= (~(0x1 << idx));
-			}
-		}
-
-		if (max_x_inchip == max_x) {
-			points[idx].x = object_data[idx].x_pos;
-		} else {
-			points[idx].x = (object_data[idx].x_pos * max_x) / max_x_inchip;
-		}
-		if (max_y_inchip == max_y) {
-			points[idx].y = object_data[idx].y_pos;
-		} else {
-			points[idx].y = (object_data[idx].y_pos * max_y) / max_y_inchip;
-		}
-		points[idx].touch_major = max(object_data[idx].x_width, object_data[idx].y_width);
-		points[idx].width_major = min(object_data[idx].x_width, object_data[idx].y_width);
-		points[idx].tx_press = object_data[idx].exwidth;
-		points[idx].rx_press = object_data[idx].eywidth;
-		points[idx].tx_er = object_data[idx].xeratio;
-		points[idx].rx_er = object_data[idx].yeratio;
-		points[idx].status = 1;
-		if (tcm_info->snr_read_support) {
-			if (snr[idx].doing && points[idx].x && points[idx].y) {
-				snr[idx].point_status = 1;
-				snr[idx].x = points[idx].x;
-				snr[idx].y = points[idx].y;
-				snr[idx].channel_x = snr[idx].x * tcm_info->hw_res->tx_num / tcm_info->chip_resolution_info->max_x;
-				snr[idx].channel_y = snr[idx].y * tcm_info->hw_res->rx_num / tcm_info->chip_resolution_info->max_y;
-				TPD_DEBUG("snr: [%d %d, %d] {%d %d} obj 0x%x status %d\n", snr[idx].x, snr[idx].y, idx,
-						snr[idx].channel_x, snr[idx].channel_y, tcm_info->obj_attention, status);
-			}
-		}
-	}
-
-	return tcm_info->obj_attention;
-}
-
-static int syna_get_touch_points_help(void *chip_data,
-				      struct point_info *points,
-				      int max_num,
-				      struct resolution_info *resolution_info)
-{
-	unsigned int idx = 0, status = 0;
-	struct object_data *object_data = NULL;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-	unsigned int obj_attention = 0x00;
-	int max_x_inchip = 0;
-	int max_y_inchip = 0;
-	int max_x = 0;
-	int max_y = 0;
-
-	if (points == NULL) {
-		return obj_attention;
-	}
-	object_data = touch_hcd->touch_data.object_data;
-
-	max_x_inchip = le2_to_uint(tcm_info->app_info.max_x) + 1;
-	max_y_inchip = le2_to_uint(tcm_info->app_info.max_y) + 1;
-	max_x = resolution_info->max_x;
-	max_y = resolution_info->max_y;
-
-
-	for (idx = 0; idx < touch_hcd->max_objects; idx++) {
-		status = object_data[idx].status;
-		if (status == LIFT) {
-			points[idx].status = 0;
-			continue;
-		}
-		obj_attention |= (0x1 << idx);
-
-		if (max_x_inchip == max_x) {
-			points[idx].x = object_data[idx].x_pos;
-		} else {
-			points[idx].x = (object_data[idx].x_pos * max_x) / max_x_inchip;
-		}
-		if (max_y_inchip == max_y) {
-			points[idx].y = object_data[idx].y_pos;
-		} else {
-			points[idx].y = (object_data[idx].y_pos * max_y) / max_y_inchip;
-		}
-		points[idx].touch_major = max(object_data[idx].x_width, object_data[idx].y_width);
-		points[idx].width_major = min(object_data[idx].x_width, object_data[idx].y_width);
-		points[idx].tx_press = object_data[idx].exwidth;
-		points[idx].rx_press = object_data[idx].eywidth;
-		points[idx].tx_er = object_data[idx].xeratio;
-		points[idx].rx_er = object_data[idx].yeratio;
-		points[idx].status = 1;
-	}
-
-	return obj_attention;
-}
-
-static int syna_tcm_set_gesture_mode(struct syna_tcm_data *tcm_info, int enable)
-{
-	int retval = 0;
-	int state = tcm_info->gesture_state;
-	int config = 0xFFFF;
-
-	/*this command may take too much time, if needed can add flag to skip this */
-	hbp_info("%s: enable(%d), mask 0x%0X\n state 0x%x", __func__, enable, tcm_info->gesture_mask, state);
-
-	if (tcm_info->black_gesture_indep) {
-		if (enable) {
-			SET_GESTURE_BIT(state, DOU_TAP, config, 0)
-			SET_GESTURE_BIT(state, UP_VEE, config, 2)
-			SET_GESTURE_BIT(state, DOWN_VEE, config, 1)
-			SET_GESTURE_BIT(state, LEFT_VEE, config, 3)
-			SET_GESTURE_BIT(state, RIGHT_VEE, config, 4)
-			SET_GESTURE_BIT(state, CIRCLE_GESTURE, config, 5)
-			SET_GESTURE_BIT(state, DOU_SWIP, config, 6)
-			SET_GESTURE_BIT(state, LEFT2RIGHT_SWIP, config, 7)
-			SET_GESTURE_BIT(state, RIGHT2LEFT_SWIP, config, 8)
-			SET_GESTURE_BIT(state, UP2DOWN_SWIP, config, 9)
-			SET_GESTURE_BIT(state, DOWN2UP_SWIP, config, 10)
-			SET_GESTURE_BIT(state, M_GESTRUE, config, 11)
-			SET_GESTURE_BIT(state, W_GESTURE, config, 12)
-			SET_GESTURE_BIT(state, SINGLE_TAP, config, 13)
-			SET_GESTURE_BIT(state, HEART, config, 14)
-		} else {
-			config = 0x0;
-		}
-	}
-	hbp_info("%s: gesture config:%x\n", __func__, config);
-
-	if (enable) {
-		retval = syna_tcm_sleep(tcm_info, false);
-
-		if (retval < 0) {
-			hbp_info("%s: Failed to exit sleep mode\n", __func__);
-			return retval;
-		}
-
-		retval = syna_set_input_reporting(tcm_info, true);
-
-		if (retval < 0) {
-			hbp_info("%s: Failed to set input reporting\n", __func__);
-			return retval;
-		}
-
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_IN_WAKEUP_GESTURE_MODE, true);
-
-		if (retval < 0) {
-			hbp_info("%s: Failed to set dynamic gesture config\n", __func__);
-			return retval;
-		}
-
-		retval = syna_tcm_set_dynamic_config(tcm_info,
-						     DC_GESTURE_MASK,
-						     config);
-
-		if (retval < 0) {
-			hbp_info("%s: Failed to set dynamic gesture mask config\n", __func__);
-			return retval;
-		}
-
-		if (tp_debug != LEVEL_DEBUG) {
-			retval = syna_tcm_enable_report(tcm_info, REPORT_LOG, false);
-
-			if (retval < 0) {
-				hbp_info("Failed to set disable log report\n");
-				return retval;
-			}
-		}
-	}
-
-	return retval;
-}
-
-static void syna_tcm_enable_gesture_mask(void *chip_data, uint32_t enable)
-{
-	int retval = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	/*this command may take too much time, if needed can add flag to skip this */
-	hbp_info("%s: enable(%d), mask 0x%0X\n", __func__, enable, tcm_info->gesture_mask);
-
-	if (enable) {
-		retval = syna_tcm_set_dynamic_config(tcm_info,
-						     DC_GESTURE_MASK,
-						     tcm_info->gesture_mask);
-
-		if (retval < 0) {
-			hbp_info("%s: Failed to set dynamic gesture mask config\n", __func__);
-		}
-
-	} else {
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_GESTURE_MASK, 0x0000);
-
-		if (retval < 0) {
-			hbp_info("%s: Failed to set dynamic gesture mask config\n", __func__);
-		}
-	}
-}
-
-static int syna_tcm_set_game_mode(struct syna_tcm_data *tcm_info, int enable)
-{
-	int retval = 0;
-	unsigned short regval = 0;
-	uint16_t report_rate = 0;
-	struct touchpanel_data *ts = spi_get_drvdata(tcm_info->client);
-	/*unsigned short noise_length = 0;*/
-
-	tcm_info->game_mode = !!enable;
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_ERROR_PRIORITY, ®val);
-	if (retval < 0) {
-		hbp_info("Failed to get DC_ERROR_PRIORITY val\n");
-		return retval;
-	}
-	hbp_info("%s: enable[%d], now reg status[0x%x]\n", __func__, tcm_info->game_mode, regval);
-
-	if (enable) {
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_ERROR_PRIORITY, regval|0x01);
-
-		if (retval < 0) {
-			hbp_info("Failed to set dynamic error priority config\n");
-			return retval;
-		}
-
-		/*noise_length = 0x0A;
-
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_NOISE_LENGTH, noise_length);
-
-		if (retval < 0) {
-			hbp_info("Failed to set dynamic noise length config\n");
-			return retval;
-		}*/
-
-
-		if (tcm_info->switch_game_rate_support) {/*tcm_info->game_rate_switch_support*/
-	    	switch (ts->noise_level) {
-	    	case 180:
-		    report_rate = 3;
-		    break;
-	    	case 300:
-		    report_rate = 1;
-		    break;
-	    	case 600:
-		    report_rate = 9;
-		    break;
-	    	default:
-		    report_rate = tcm_info->game_rate;
-		    break;
-	    	}
-	    	hbp_info("%s:set report_rate:%d", __func__, report_rate);
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_SET_REPORT_FRE, report_rate);
-		if (retval < 0) {
-		    hbp_info("Failed to set dynamic report frequence config\n");
-		    return retval;
-		}
-	} else {
-	    retval = syna_tcm_set_dynamic_config(tcm_info, DC_SET_REPORT_FRE, tcm_info->game_rate);
-	    if (retval < 0) {
-		hbp_info("Failed to set dynamic report frequence config\n");
-                return retval;
-	    }
-	}
-	} else {
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_ERROR_PRIORITY, regval&0xF0);
-
-		if (retval < 0) {
-			hbp_info("Failed to set dynamic error priority config\n");
-			return retval;
-		}
-
-		/*retval = syna_tcm_set_dynamic_config(tcm_info, DC_NOISE_LENGTH,
-						     tcm_info->default_noise_length);
-
-		if (retval < 0) {
-			hbp_info("Failed to set dynamic noise length config\n");
-			return retval;
-		}*/
-
-		syna_report_refresh_switch(tcm_info, tcm_info->display_refresh_rate);
-
-		if (retval < 0) {
-			hbp_info("Failed to set dynamic report frequence config\n");
-			return retval;
-		}
-	}
-
-	return retval;
-}
-
-static int syna_tcm_set_high_frame_rate(void *chip_data, int level, int time)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned short regval = 0;
-	int retval = 0;
-	int temp_time = 0;
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_ERROR_PRIORITY, ®val);
-	if (retval < 0) {
-		hbp_info("Failed to get high frame config\n");
-		return 0;
-	}
-
-	if (level > 0) {
-		temp_time = time;
-		if (0 == temp_time) {
-			temp_time = 12;
-		} else if (temp_time > 0) {
-			temp_time = temp_time / 5;
-		}
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_ERROR_PRIORITY, regval|0x02|(temp_time << 8));
-		if (retval < 0) {
-			hbp_info("Failed to enable high frame config\n");
-			goto OUT;
-		}
-	} else {
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_ERROR_PRIORITY, regval&0xfffd);
-		if (retval < 0) {
-			hbp_info("Failed to disable high frame config\n");
-			goto OUT;
-		}
-	}
-
-	hbp_info("synaptics %s high frame success lv to %d, time to %d",
-		level > 0 ? "enable" : "disable", level, time);
-
-OUT:
-	return 0;
-}
-
-
-static int syna_tcm_normal_mode(struct syna_tcm_data *tcm_info)
-{
-	int retval;
-
-	hbp_info("%s : enter\n", __func__);
-	retval = syna_set_input_reporting(tcm_info, false);
-
-	if (retval < 0) {
-		hbp_info("Failed to set input reporting\n");
-		return retval;
-	}
-
-	retval = syna_tcm_set_dynamic_config(tcm_info, DC_IN_WAKEUP_GESTURE_MODE,
-					     false);
-
-	if (retval < 0) {
-		hbp_info("Failed to set dynamic gesture config\n");
-		return retval;
-	}
-
-	syna_report_refresh_switch(tcm_info, tcm_info->display_refresh_rate);
-
-	retval = syna_tcm_enable_report(tcm_info, REPORT_LOG, true);
-
-	if (retval < 0) {
-		hbp_info("Failed to set enable log report\n");
-		return retval;
-	}
-
-	return retval;
-}
-
-static int syna_corner_limit_handle(struct syna_tcm_data *tcm_info, int enable)
-{
-	int ret = -1;
-
-	if (LANDSCAPE_SCREEN_90 == enable) {
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL,
-						  0x01);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_SEL, 0x0F);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ABS_DARK_SEL\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_X, 0x0A);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ABS_DARK_X\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_Y, 0x0A);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ABS_DARK_Y\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_DARK_ZONE_ENABLE, 0x03);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_DARK_ZONE_ENABLE\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_DARK_ZONE_X, 0xFF);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_DARK_ZONE_X\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_DARK_ZONE_Y, 0x44);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_DARK_ZONE_Y\n", __func__);
-			return ret;
-		}
-
-	} else if (LANDSCAPE_SCREEN_270 == enable) {
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL,
-						  0x01);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_SEL, 0x0F);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ABS_DARK_SEL\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_X, 0x0A);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ABS_DARK_X\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_Y, 0x0A);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ABS_DARK_Y\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_DARK_ZONE_ENABLE, 0x0C);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_DARK_ZONE_ENABLE\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_DARK_ZONE_X, 0xFF);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_DARK_ZONE_X\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_DARK_ZONE_Y, 0x44);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_DARK_ZONE_Y\n", __func__);
-			return ret;
-		}
-
-	} else if (VERTICAL_SCREEN == enable) {
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL,
-						  0x00);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_SEL, 0x03);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ABS_DARK_SEL\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_X, 0x0A);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_ABS_DARK_X\n", __func__);
-			return ret;
-		}
-
-		/*ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_U, 0x32);*/
-		/*if (ret < 0) {*/
-		/*    hbp_info("%s:failed to set DC_GRIP_ABS_DARK_U\n", __func__);*/
-		/*    return ret;*/
-		/*}*/
-		/*ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_V, 0x64);*/
-		/*if (ret < 0) {*/
-		/*    hbp_info("%s:failed to set DC_GRIP_ABS_DARK_V\n", __func__);*/
-		/*    return ret;*/
-		/*}*/
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_DARK_ZONE_ENABLE, 0x05);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_DARK_ZONE_ENABLE\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_DARK_ZONE_X, 0x24);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_DARK_ZONE_X\n", __func__);
-			return ret;
-		}
-
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_DARK_ZONE_Y, 0xF5);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set DC_GRIP_DARK_ZONE_Y\n", __func__);
-			return ret;
-		}
-	}
-
-	return ret;
-}
-
-static int syna_enable_edge_limit(struct syna_tcm_data *tcm_info, int enable)
-{
-	int ret = 0;
-	hbp_info("%s: enter\n", __func__);
-
-	ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ENABLED, 0x01);
-
-	if (ret < 0) {
-		hbp_info("%s:failed to enable grip suppression\n", __func__);
-		return ret;
-	}
-
-	ret = syna_corner_limit_handle(tcm_info, enable);
-
-	if (ret < 0) {
-		hbp_info("%s:failed to set grip suppression para\n", __func__);
-		return ret;
-	}
-
-	return ret;
-}
-
-static int syna_mode_switch(void *chip_data, work_mode mode, int flag)
-{
-	int ret = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	switch (mode) {
-	case MODE_NORMAL:
-		if (!*tcm_info->in_suspend) {
-			ret = syna_tcm_normal_mode(tcm_info);
-
-			if (ret < 0) {
-				tcm_info->error_state_count++;
-				hbp_info("normal mode switch failed\n");
-				if (tcm_info->error_state_count >= ERROR_STATE_MAX) {
-					syna_tcm_reset(tcm_info); /*ic state err, need to reset the IC*/
-					tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "ic state err rest");
-				}
-			}
-			tcm_info->error_state_count = 0;
-		}
-
-		break;
-
-	case MODE_GESTURE:
-		if (*tcm_info->in_suspend) {
-			ret = syna_tcm_set_gesture_mode(tcm_info, flag);
-
-			if (ret < 0) {
-				hbp_info("%s:Failed to set gesture mode\n", __func__);
-			}
-		}
-
-		break;
-
-	case MODE_SLEEP:
-		ret = syna_tcm_sleep(tcm_info, flag);
-
-		if (ret < 0) {
-			hbp_info("%s: failed to switch to sleep", __func__);
-		}
-
-		break;
-
-	case MODE_CHARGE:
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_CHARGER_CONNECTED, flag ? 1 : 0);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set charger mode\n", __func__);
-		}
-
-		break;
-
-	case MODE_EDGE:
-		ret = syna_enable_edge_limit(tcm_info, flag);
-		if (ret < 0) {
-			hbp_info("%s: failed to enable edg limit.\n", __func__);
-		}
-
-		break;
-
-	case MODE_GAME:
-		ret = syna_tcm_set_game_mode(tcm_info, flag);
-
-		if (ret < 0) {
-			hbp_info("%s:failed to set game mode\n", __func__);
-		}
-
-		break;
-
-	default:
-		break;
-	}
-
-	return 0;
-}
-
-static int syna_ftm_process(void *chip_data)
-{
-	hbp_info("%s: go into sleep\n", __func__);
-	syna_get_chip_info(chip_data);
-	syna_mode_switch(chip_data, MODE_SLEEP, true);
-	return 0;
-}
-
-static int syna_tcm_reinit_device(void *chip_data)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	complete_all(&tcm_info->response_complete);
-	complete_all(&tcm_info->report_complete);
-
-	return 0;
-}
-
-static int syna_power_control(void *chip_data, bool enable)
-{
-	int ret = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	TPD_DEBUG("%s: %d\n", __func__, enable);
-
-	if (true == enable) {
-		ret = tp_powercontrol_avdd(tcm_info->hw_res, true);
-
-		if (ret) {
-			return -1;
-		}
-
-		ret = tp_powercontrol_vddi(tcm_info->hw_res, true);
-
-		if (ret) {
-			return -1;
-		}
-
-		synaptics_resetgpio_set(tcm_info->hw_res, false);
-		msleep(POWEWRUP_TO_RESET_TIME);
-		synaptics_resetgpio_set(tcm_info->hw_res, true);
-		msleep(RESET_TO_NORMAL_TIME);
-
-	} else {
-		synaptics_resetgpio_set(tcm_info->hw_res, false);
-
-		disable_irq(tcm_info->ts->irq);
-
-		ret = tp_powercontrol_vddi(tcm_info->hw_res, false);
-
-		if (ret) {
-			return -1;
-		}
-
-		ret = tp_powercontrol_avdd(tcm_info->hw_res, false);
-
-		if (ret) {
-			return -1;
-		}
-	}
-
-	return ret;
-}
-
-static fw_check_state syna_fw_check(void *chip_data,
-				    struct resolution_info *resolution_info,
-				    struct panel_info *panel_data)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	u16 config = 0;
-	int retval = 0;
-	int ver_len = 0;
-	char dev_version[MAX_DEVICE_VERSION_LENGTH] = {0};
-
-	hbp_info("fw id %d, custom config id 0x%s\n", panel_data->tp_fw,
-		 tcm_info->app_info.customer_config_id);
-
-	if (strlen(tcm_info->app_info.customer_config_id) == 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "fw_check_err_cfgid");
-		return FW_ABNORMAL;
-	}
-
-	sscanf(tcm_info->app_info.customer_config_id, "%x", &panel_data->tp_fw);
-
-	if (panel_data->tp_fw == 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "fw_check_err_tpfw");
-		return FW_ABNORMAL;
-	}
-
-
-	if (panel_data->manufacture_info.version) {
-		if (panel_data->vid_len == 0) {
-			sprintf(panel_data->manufacture_info.version, "0x%s", tcm_info->app_info.customer_config_id);
-		} else {
-			ver_len = panel_data->vid_len;
-			if (ver_len > MAX_DEVICE_VERSION_LENGTH - 4) {
-				ver_len = MAX_DEVICE_VERSION_LENGTH - 4;
-			}
-			snprintf(dev_version, MAX_DEVICE_VERSION_LENGTH  - ver_len,
-				 "%s", (char *)tcm_info->app_info.customer_config_id);
-			strlcpy(&panel_data->manufacture_info.version[ver_len],
-				dev_version, MAX_DEVICE_VERSION_LENGTH - ver_len);
-		}
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_NOISE_LENGTH, &config);
-
-	if (retval < 0) {
-		hbp_info("Failed to get default noise length\n");
-		return FW_ABNORMAL;
-	}
-
-	tcm_info->default_noise_length = config;
-
-	return FW_NORMAL;
-}
-
-static int syna_tcm_helper(struct syna_tcm_data *tcm_info)
-{
-	if (tcm_info->id_info.mode != MODE_APPLICATION
-	    && !mutex_is_locked(&tcm_info->reset_mutex)) {
-		hbp_info("%s: use helper\n", __func__);
-		queue_work(tcm_info->helper_workqueue, &tcm_info->helper_work);
-	}
-
-	return 0;
-}
-
-static void syna_tcm_helper_work(struct work_struct *work)
-{
-	int retval = 0;
-	struct syna_tcm_data *tcm_info = container_of(work, struct syna_tcm_data,
-					 helper_work);
-
-	mutex_lock(&tcm_info->reset_mutex);
-	retval = syna_tcm_run_application_firmware(tcm_info);
-
-	if (retval < 0) {
-		hbp_info("Failed to switch to app mode\n");
-	}
-
-	mutex_unlock(&tcm_info->reset_mutex);
-}
-
-static int syna_tcm_async_work(void *chip_data)
-{
-	int retval = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	if (!tcm_info || tcm_info->id_info.mode != MODE_APPLICATION) {
-		return 0;
-	}
-
-	if (tcm_info->boot_flag) {
-		tcm_info->boot_flag = false;
-		return 0;
-	}
-
-	retval = syna_tcm_identify(tcm_info, false);
-	if (retval < 0) {
-		hbp_info("Failed to do identification\n");
-		return retval;
-	}
-	tp_fw_auto_reset_handle(tcm_info->ts);
-	/*syna_set_trigger_reason(tcm_info, IRQ_IGNORE);
-	 syna_set_trigger_reason(tcm_info, IRQ_FW_AUTO_RESET);*/
-	hbp_info("%s  exit\n", __func__);
-	return 0;
-}
-
-static int syna_tcm_enable_report(struct syna_tcm_data *tcm_info,
-				  enum report_type report_type, bool enable)
-{
-	int retval;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char out[2] = {0};
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0;
-	unsigned int resp_length = 0;
-
-	test_hcd->report_index = 0;
-	test_hcd->report_type = report_type;
-
-	out[0] = test_hcd->report_type;
-
-	retval = syna_tcm_write_message(tcm_info,
-					enable ? CMD_ENABLE_REPORT : CMD_DISABLE_REPORT,
-					out,
-					1,
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					0);
-
-	if (retval < 0) {
-		hbp_info("Failed to write message %s\n",
-			 enable ? STR(CMD_ENABLE_REPORT) : STR(CMD_DISABLE_REPORT));
-	}
-
-	return retval;
-}
-
-static void syna_tcm_enable_fingerprint(void *chip_data, uint32_t enable)
-{
-	int retval = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	hbp_info("%s: enable(%d)\n", __func__, enable);
-
-	if (enable) {
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_TOUCH_HOLD,
-						     *tcm_info->in_suspend ? 0x01 : 0x02);
-
-		if (retval < 0) {
-			hbp_info("Failed to set dynamic touch and hold config\n");
-			return;
-		}
-
-		/*retval = syna_tcm_enable_report(tcm_info, REPORT_TOUCH_HOLD,
-						*tcm_info->in_suspend ? false : true);
-
-		if (retval < 0) {
-			hbp_info("Failed to set enable touch and hold report\n");
-			return;
-		}*/
-
-	} else {
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_TOUCH_HOLD, 0x00);
-
-		if (retval < 0) {
-			hbp_info("Failed to set dynamic touch and hold config\n");
-			return;
-		}
-
-		/*retval = syna_tcm_enable_report(tcm_info, REPORT_TOUCH_HOLD, false);
-
-		if (retval < 0) {
-			hbp_info("Failed to set disable touch and hold report\n");
-			return;
-		}*/
-	}
-
-	return;
-}
-
-static void syna_tcm_fingerprint_info(void *chip_data,
-				      struct fp_underscreen_info *fp_tpinfo)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-	struct touch_data *touch_data = &touch_hcd->touch_data;
-	u8 *fp_buf = touch_data->extra_gesture_info;
-
-	if (!fp_tpinfo) {
-		return;
-	}
-
-	if (tcm_info->report.buffer.data_length < 8
-	    && touch_data->lpwg_gesture == TOUCH_HOLD_DOWN) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "fp_info_err_buflen");
-		hbp_info("%s: invalid fingerprint buf length\n", __func__);
-		return;
-	}
-
-	if (touch_data->lpwg_gesture == TOUCH_HOLD_DOWN) {
-		fp_tpinfo->touch_state = FINGERPRINT_DOWN_DETECT;
-		fp_tpinfo->x = fp_buf[0] | fp_buf[1] << 8;
-		fp_tpinfo->y = fp_buf[2] | fp_buf[3] << 8;
-		fp_tpinfo->area_rate = fp_buf[4] | fp_buf[5] << 8;
-
-	} else if (touch_data->lpwg_gesture == TOUCH_HOLD_UP) {
-		fp_tpinfo->touch_state = FINGERPRINT_UP_DETECT;
-	}
-
-	return;
-}
-
-static void syna_tcm_fingerprint_info_auto(void *chip_data,
-		struct fp_underscreen_info *fp_tpinfo,
-		struct resolution_info *resolution_info)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-	struct touch_data *touch_data = &touch_hcd->touch_data;
-	u8 *fp_buf = touch_data->extra_gesture_info;
-
-	int max_x_inchip = 0;
-	int max_y_inchip = 0;
-	int max_x = 0;
-	int max_y = 0;
-
-	if (!fp_tpinfo) {
-		return;
-	}
-
-	if (tcm_info->report.buffer.data_length < 8
-	    && touch_data->lpwg_gesture == TOUCH_HOLD_DOWN) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "fp_info_auto_err_buflen");
-		hbp_info("%s: invalid fingerprint buf length\n", __func__);
-		return;
-	}
-
-	if (touch_data->lpwg_gesture != TOUCH_HOLD_DOWN
-	    && touch_data->lpwg_gesture != TOUCH_HOLD_UP) {
-		return;
-	}
-
-	max_x_inchip = le2_to_uint(tcm_info->app_info.max_x) + 1;
-	max_y_inchip = le2_to_uint(tcm_info->app_info.max_y) + 1;
-	max_x = resolution_info->LCD_WIDTH;
-	max_y = resolution_info->LCD_HEIGHT;
-
-	if (touch_data->lpwg_gesture == TOUCH_HOLD_DOWN) {
-		fp_tpinfo->touch_state = FINGERPRINT_DOWN_DETECT;
-		fp_tpinfo->x = fp_buf[0] | fp_buf[1] << 8;
-		fp_tpinfo->y = fp_buf[2] | fp_buf[3] << 8;
-		fp_tpinfo->area_rate = fp_buf[4] | fp_buf[5] << 8;
-	} else if (touch_data->lpwg_gesture == TOUCH_HOLD_UP) {
-		fp_tpinfo->touch_state = FINGERPRINT_UP_DETECT;
-		fp_tpinfo->x = fp_buf[0] | fp_buf[1] << 8;
-		fp_tpinfo->y = fp_buf[2] | fp_buf[3] << 8;
-		fp_tpinfo->area_rate = fp_buf[4] | fp_buf[5] << 8;
-	}
-
-	if (max_x_inchip != max_x) {
-		fp_tpinfo->x = (fp_tpinfo->x * max_x) / max_x_inchip;
-	}
-
-	if (max_y_inchip != max_y) {
-		fp_tpinfo->y = (fp_tpinfo->y * max_y) / max_y_inchip;
-	}
-
-	return;
-}
-
-static void syna_tcm_get_health_info(void *chip_data,
-				     struct monitor_data *mon_data)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct health_info *health_info = (struct health_info *)
-					  tcm_info->report.buffer.buf;
-	int data_length = tcm_info->report.buffer.data_length;
-	struct health_info *health_local = &tcm_info->health_info;
-	int i = 0;
-	int retval = 0;
-
-	if (data_length < 20) {
-		hbp_info("%s: invalid health debug buf length\n", __func__);
-		return;
-	}
-
-	if (health_info->grip_count != 0
-	    && health_local->grip_count != health_info->grip_count) {
-		tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_GRIP);
-	}
-
-	if (health_info->baseline_err != 0
-	    && health_local->baseline_err != health_info->baseline_err) {
-		switch (health_info->baseline_err) {
-		case BASE_NEGATIVE_FINGER:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, "base_negative_finger");
-			break;
-
-		case BASE_MUTUAL_SELF_CAP:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, "base_mutual_self_cap");
-			break;
-
-		case BASE_ENERGY_RATIO:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, "base_energy_ratio");
-			break;
-
-		case BASE_RXABS_BASELINE:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, "base_rxabs_baseline");
-			break;
-
-		case BASE_TXABS_BASELINE:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, "base_txabs_baseline");
-			break;
-
-		default:
-			break;
-		}
-	}
-
-	if (health_info->noise_state >= 2
-	    && health_local->noise_state != health_info->noise_state) {
-		tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_NOISE);
-	}
-
-	if (health_info->shield_mode != 0
-	    && health_local->shield_mode != health_info->shield_mode) {
-		switch (health_info->shield_mode) {
-		case SHIELD_PALM:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_SHIELD_PALM);
-			break;
-
-		case SHIELD_GRIP:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_SHIELD_EDGE);
-			break;
-
-		case SHIELD_METAL:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_SHIELD_METAL);
-			break;
-
-		case SHIELD_MOISTURE:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_SHIELD_WATER);
-			break;
-
-		case SHIELD_ESD:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_SHIELD_ESD);
-			break;
-
-		default:
-			break;
-		}
-	}
-
-	if (health_info->reset_reason != 0) {
-		switch (health_info->reset_reason) {
-		case RST_HARD:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_RST_HARD);
-			break;
-
-		case RST_INST:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_RST_INST);
-			break;
-
-		case RST_PARITY:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_RST_PARITY);
-			break;
-
-		case RST_WD:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_RST_WD);
-			break;
-
-		case RST_OTHER:
-			tp_healthinfo_report(mon_data, HEALTH_REPORT, HEALTH_REPORT_RST_OTHER);
-			break;
-		}
-	}
-
-	retval = tp_memcpy(health_local, sizeof(struct health_info), health_info,
-		  sizeof(struct health_info), sizeof(struct health_info));
-	if (retval < 0) {
-		hbp_info("Failed to copy health_info\n");
-	}
-
-	if (tp_debug != 0) {
-		for (i = 0; i < data_length; i++) {
-			hbp_info("[0x%x], ", tcm_info->report.buffer.buf[i]);
-		}
-	}
-}
-
-static int syna_tcm_erase_flash(struct syna_tcm_data *tcm_info,
-				unsigned int page_start, unsigned int page_count)
-{
-	int ret = 0;
-	unsigned char out_buf[4] = {0};
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0;
-	unsigned int resp_length = 0;
-	unsigned int cmd_length = 0;
-
-	hbp_info("start page %d, page count %d\n", page_start, page_count);
-
-	if (page_start > 0xff || page_count > 0xff) {
-		cmd_length = 4;
-		out_buf[0] = (unsigned char)(page_start & 0xff);
-		out_buf[1] = (unsigned char)((page_start >> 8) & 0xff);
-		out_buf[2] = (unsigned char)(page_count & 0xff);
-		out_buf[3] = (unsigned char)((page_count >> 8) & 0xff);
-
-	} else {
-		cmd_length = 2;
-		out_buf[0] = (unsigned char)page_start;
-		out_buf[1] = (unsigned char)page_count;
-	}
-
-	ret = syna_tcm_write_message(tcm_info,  CMD_ERASE_FLASH, out_buf, cmd_length,
-				     &resp_buf, &resp_buf_size, &resp_length, ERASE_FLASH_DELAY_MS);
-
-	if (ret < 0) {
-		hbp_info("Failed to write command %s\n", STR(CMD_ERASE_FLASH));
-	}
-
-	tp_kfree((void **)&resp_buf);
-	return ret;
-}
-
-static int syna_tcm_write_flash(struct syna_tcm_data *tcm_info,
-				struct reflash_hcd *reflash_hcd,
-				unsigned int address, const unsigned char *data, unsigned int datalen)
-{
-	int retval;
-	unsigned int w_len, xfer_len, remaining_len;
-	unsigned int flash_addr, block_addr;
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0, resp_length = 0, offset = 0;
-	struct syna_tcm_buffer out;
-
-	memset(&out, 0, sizeof(out));
-	INIT_BUFFER(out, false);
-
-	w_len = tcm_info->wr_chunk_size - 5;
-	w_len = w_len - (w_len % reflash_hcd->write_block_size);
-	w_len = MIN(w_len, reflash_hcd->max_write_payload_size);
-
-	remaining_len = datalen;
-
-	while (remaining_len) {
-		if (remaining_len > w_len) {
-			xfer_len = w_len;
-
-		} else {
-			xfer_len = remaining_len;
-		}
-
-		retval = syna_tcm_alloc_mem(&out, xfer_len + 2);
-
-		if (retval < 0) {
-			hbp_info("Failed to alloc memory\n");
-			break;
-		}
-
-		flash_addr = address + offset;
-		block_addr = flash_addr / reflash_hcd->write_block_size;
-		out.buf[0] = (unsigned char)block_addr;
-		out.buf[1] = (unsigned char)(block_addr >> 8);
-
-		retval = tp_memcpy(&out.buf[2],
-				   xfer_len,
-				   (void *)&data[offset],
-				   datalen - offset,
-				   xfer_len);
-
-		if (retval < 0) {
-			hbp_info("Failed to copy write data\n");
-			break;
-		}
-
-		retval = syna_tcm_write_message(tcm_info, CMD_WRITE_FLASH,
-						out.buf,
-						xfer_len + 2,
-						&resp_buf,
-						&resp_buf_size,
-						&resp_length,
-						WRITE_FLASH_DELAY_MS);
-
-		if (retval < 0) {
-			hbp_info("Failed to write message %s, Addr 0x%08x, Len 0x%d\n",
-				 STR(CMD_WRITE_FLASH), flash_addr, xfer_len);
-			break;
-		}
-
-		offset += xfer_len;
-		remaining_len -= xfer_len;
-	}
-
-	RELEASE_BUFFER(out);
-	tp_kfree((void **)&resp_buf);
-	return 0;
-}
-
-static fw_update_state syna_tcm_fw_update(void *chip_data,
-		const struct firmware *fw, bool force)
-{
-	int ret = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct image_info image_info;
-	unsigned int image_fw_id, device_fw_id;
-	unsigned char *device_config_id = NULL;
-	unsigned char *image_config_id = NULL;
-	struct app_config_header *header = NULL;
-	int temp = 0, page_start = 0, page_count = 0;
-	unsigned int size = 0, flash_addr = 0, device_addr = 0, device_size = 0;
-	const unsigned char *data;
-	struct reflash_hcd reflash_hcd;
-
-	memset(&image_info, 0, sizeof(struct image_info));
-	if (tcm_info->fwupdate_bootloader) {
-		if (fw) {
-			if (tcm_info->g_fw_buf && fw->size < FW_BUF_SIZE) {
-				tcm_info->g_fw_len = fw->size;
-				memcpy(tcm_info->g_fw_buf, fw->data, fw->size);
-				tcm_info->g_fw_sta = true;
-			} else {
-				hbp_info("fw->size:%d is less than %d\n", fw->size, FW_BUF_SIZE);
-				return FW_UPDATE_FATAL;
-			}
-		}
-		if (tcm_info->g_fw_sta) {
-			ret = synaptics_parse_header_v2(&image_info, tcm_info->g_fw_buf);
-			if (ret < 0) {
-				tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "synaptics_parse_header_v2 fail");
-				hbp_info("Failed to parse fw image\n");
-				return FW_UPDATE_FATAL;
-			}
-		} else {
-			if (!fw) {
-				hbp_info("fw is null\n");
-				return FW_UPDATE_FATAL;
-			} else {
-				ret = synaptics_parse_header_v2(&image_info, fw->data);
-				if (ret < 0) {
-					tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "synaptics_parse_header_v2 fail");
-					hbp_info("Failed to parse fw image\n");
-					return FW_UPDATE_FATAL;
-				}
-			}
-		}
-	} else {
-		ret = synaptics_parse_header_v2(&image_info, fw->data);
-		if (ret < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "synaptics_parse_header_v2 fail");
-			hbp_info("Failed to parse fw image\n");
-			return FW_UPDATE_FATAL;
-		}
-	}
-	header = (struct app_config_header *)image_info.app_config.data;
-
-	image_fw_id = le4_to_uint(header->build_id);
-	device_fw_id = le4_to_uint(tcm_info->id_info.build_id);
-	hbp_info("image build id %d, device build id %d\n", image_fw_id, device_fw_id);
-
-	image_config_id = header->customer_config_id;
-	device_config_id = tcm_info->app_info.customer_config_id;
-	hbp_info("image config id 0x%s, device config id 0x%s\n", image_config_id,
-		 device_config_id);
-
-	if (!force) {
-		if ((image_fw_id == device_fw_id)
-		    && (strncmp(image_config_id, device_config_id, 16) == 0)) {
-			hbp_info("same firmware/config id, no need to update\n");
-			return FW_NO_NEED_UPDATE;
-		}
-	}
-
-	ret = syna_tcm_identify(tcm_info, true);
-
-	if (ret < 0) {
-		return FW_UPDATE_ERROR;
-	}
-
-	if (tcm_info->id_info.mode == MODE_APPLICATION) {
-		ret = syna_tcm_switch_mode(tcm_info, FW_MODE_BOOTLOADER);
-
-		if (ret < 0) {
-			tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "syna_tcm_switch_mode fail");
-			hbp_info("Failed to switch to bootloader mode\n");
-			return FW_UPDATE_ERROR;
-		}
-	}
-
-	temp = tcm_info->boot_info.write_block_size_words;
-	reflash_hcd.write_block_size = temp * 2;
-
-	temp = le2_to_uint(tcm_info->boot_info.erase_page_size_words);
-	reflash_hcd.page_size = temp * 2;
-
-	temp = le2_to_uint(tcm_info->boot_info.max_write_payload_size);
-	reflash_hcd.max_write_payload_size = temp;
-
-	hbp_info("Write block size %d, page size %d, payload_size %d\n",
-		 reflash_hcd.write_block_size,
-		 reflash_hcd.page_size,
-		 reflash_hcd.max_write_payload_size);
-
-	if (reflash_hcd.write_block_size > (tcm_info->wr_chunk_size - 5)) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "write block size is exceed");
-		hbp_info("write block size is exceed\n");
-		return FW_UPDATE_ERROR;
-	}
-
-	if (image_info.app_firmware.size == 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "no application firmware in image");
-		hbp_info("no application firmware in image\n\n");
-		return FW_UPDATE_ERROR;
-	}
-
-	/* erase application firmware */
-	page_start = image_info.app_firmware.flash_addr / reflash_hcd.page_size;
-	page_count = ceil_div(image_info.app_firmware.size, reflash_hcd.page_size);
-	ret = syna_tcm_erase_flash(tcm_info, page_start, page_count);
-
-	if (ret < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "Failed to erase firmware");
-		hbp_info("Failed to erase firmware\n");
-		return FW_UPDATE_ERROR;
-	}
-
-	/* write application firmware */
-	data = image_info.app_firmware.data;
-	size = image_info.app_firmware.size;
-	flash_addr = image_info.app_firmware.flash_addr;
-
-	ret = syna_tcm_write_flash(tcm_info, &reflash_hcd, flash_addr, data, size);
-
-	if (ret < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "Failed to write flash");
-		hbp_info("Failed to write flash \n");
-		return FW_UPDATE_ERROR;
-	}
-
-	/* update app config start */
-	data = image_info.app_config.data;
-	size = image_info.app_config.size;
-	flash_addr = image_info.app_config.flash_addr;
-
-	temp = le2_to_uint(tcm_info->app_info.app_config_start_write_block);
-	device_addr = temp * reflash_hcd.write_block_size;
-	device_size = le2_to_uint(tcm_info->app_info.app_config_size);
-
-	hbp_info("Config Device addr/size 0x%x/%d, flash addr/size 0x%x/%d\n",
-		 device_addr, device_size, flash_addr, size);
-
-	page_start = image_info.app_config.flash_addr / reflash_hcd.page_size;
-	page_count = ceil_div(image_info.app_config.size, reflash_hcd.page_size);
-
-	ret = syna_tcm_erase_flash(tcm_info, page_start, page_count);
-
-	if (ret < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "Failed to erase config");
-		hbp_info("Failed to erase config\n");
-		return FW_UPDATE_ERROR;
-	}
-
-	ret = syna_tcm_write_flash(tcm_info, &reflash_hcd, flash_addr, data, size);
-
-	if (ret < 0) {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "Failed to write config");
-		hbp_info("Failed to write config \n");
-		return FW_UPDATE_ERROR;
-	}
-
-	hbp_info("end of config update\n");
-	/* update app config end */
-
-	return FW_UPDATE_SUCCESS;
-}
-
-static void syna_tcm_fw_update_in_bl(void *chip_data)
-{
-	int ret = -1;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-
-	if (!tcm_info) {
-		hbp_info("%s: tcm_info is null\n", __func__);
-		return;
-	}
-
-	if (!tcm_info->fwupdate_bootloader) {
-		hbp_info("%s not support.\n", __func__);
-		return;
-	}
-
-	if (*tcm_info->loading_fw) {
-		hbp_info("%s not support when TP loading fw.\n", __func__);
-		return;
-	}
-
-	if (tcm_info->probe_done && tcm_info->firmware_mode_count % FWUPDATE_BL_MAX == 0 && tcm_info->firmware_mode_count) {
-		tcm_info->firmware_mode_count = 0;
-		ret = syna_tcm_fw_update(tcm_info, NULL, 0);
-		if (ret > 0) {
-			hbp_info("g_fw_buf update failed!\n");
-		}
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_FW_UPDATE, "syna_tcm_fw_update_new");
-	}
-	return;
-}
-
-static int syna_get_gesture_info(void *chip_data, struct gesture_info *gesture)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-	struct touch_data *touch_data = &touch_hcd->touch_data;
-
-	gesture->clockwise = 2;
-
-	switch (touch_data->lpwg_gesture) {
-	case DTAP_DETECT:
-		gesture->gesture_type = DOU_TAP;
-		break;
-
-	case CIRCLE_DETECT:
-		gesture->gesture_type = CIRCLE_GESTURE;
-
-		if (touch_data->extra_gesture_info[2] == 0x10) {
-			gesture->clockwise = 1;
-
-		} else if (touch_data->extra_gesture_info[2] == 0x20) {
-			gesture->clockwise = 0;
-		}
-
-		break;
-
-	case SWIPE_DETECT:
-		if (touch_data->extra_gesture_info[4] == 0x41) { /*x+*/
-			gesture->gesture_type = LEFT2RIGHT_SWIP;
-
-		} else if (touch_data->extra_gesture_info[4] == 0x42) { /*x-*/
-			gesture->gesture_type = RIGHT2LEFT_SWIP;
-
-		} else if (touch_data->extra_gesture_info[4] == 0x44) { /*y+*/
-			gesture->gesture_type = UP2DOWN_SWIP;
-
-		} else if (touch_data->extra_gesture_info[4] == 0x48) { /*y-*/
-			gesture->gesture_type = DOWN2UP_SWIP;
-
-		} else if (touch_data->extra_gesture_info[4] == 0x81) { /*2x-*/
-			gesture->gesture_type = DOU_SWIP;
-
-		} else if (touch_data->extra_gesture_info[4] == 0x82) { /*2x+*/
-			gesture->gesture_type = DOU_SWIP;
-
-		} else if (touch_data->extra_gesture_info[4] == 0x84) { /*2y+*/
-			gesture->gesture_type = DOU_SWIP;
-
-		} else if (touch_data->extra_gesture_info[4] == 0x88) { /*2y-*/
-			gesture->gesture_type = DOU_SWIP;
-		}
-
-		break;
-
-	case M_UNICODE:
-		gesture->gesture_type = M_GESTRUE;
-		break;
-
-	case W_UNICODE:
-		gesture->gesture_type = W_GESTURE;
-		break;
-
-	case VEE_DETECT:
-		if (touch_data->extra_gesture_info[2] == 0x02) { /*up*/
-			gesture->gesture_type = UP_VEE;
-
-		} else if (touch_data->extra_gesture_info[2] == 0x01) { /*down*/
-			gesture->gesture_type = DOWN_VEE;
-
-		} else if (touch_data->extra_gesture_info[2] == 0x08) { /*left*/
-			gesture->gesture_type = LEFT_VEE;
-
-		} else if (touch_data->extra_gesture_info[2] == 0x04) { /*right*/
-			gesture->gesture_type = RIGHT_VEE;
-		}
-
-		break;
-
-	case TOUCH_HOLD_DOWN:
-		gesture->gesture_type = FINGER_PRINTDOWN;
-		break;
-
-	case TOUCH_HOLD_UP:
-		gesture->gesture_type = FRINGER_PRINTUP;
-		break;
-
-	case HEART_DETECT:
-		gesture->gesture_type = HEART;
-
-		if (touch_data->extra_gesture_info[2] == 0x10) {
-			gesture->clockwise = 1;
-
-		} else if (touch_data->extra_gesture_info[2] == 0x20) {
-			gesture->clockwise = 0;
-		}
-		break;
-
-	case STAP_DETECT:
-		gesture->gesture_type = SINGLE_TAP;
-		break;
-
-	case S_UNICODE:
-		gesture->gesture_type = S_GESTURE;
-		break;
-
-	case TRIANGLE_DETECT:
-	default:
-		TPD_DEBUG("not support\n");
-		break;
-	}
-
-	if (gesture->gesture_type != UNKOWN_GESTURE) {
-		gesture->Point_start.x = (touch_data->data_point[0] | (touch_data->data_point[1]
-					  << 8));
-		gesture->Point_start.y = (touch_data->data_point[2] | (touch_data->data_point[3]
-					  << 8));
-		gesture->Point_end.x    = (touch_data->data_point[4] |
-					   (touch_data->data_point[5] << 8));
-		gesture->Point_end.y    = (touch_data->data_point[6] |
-					   (touch_data->data_point[7] << 8));
-		gesture->Point_1st.x    = (touch_data->data_point[8] |
-					   (touch_data->data_point[9] << 8));
-		gesture->Point_1st.y    = (touch_data->data_point[10] |
-					   (touch_data->data_point[11] << 8));
-		gesture->Point_2nd.x    = (touch_data->data_point[12] |
-					   (touch_data->data_point[13] << 8));
-		gesture->Point_2nd.y    = (touch_data->data_point[14] |
-					   (touch_data->data_point[15] << 8));
-		gesture->Point_3rd.x    = (touch_data->data_point[16] |
-					   (touch_data->data_point[17] << 8));
-		gesture->Point_3rd.y    = (touch_data->data_point[18] |
-					   (touch_data->data_point[19] << 8));
-		gesture->Point_4th.x    = (touch_data->data_point[20] |
-					   (touch_data->data_point[21] << 8));
-		gesture->Point_4th.y    = (touch_data->data_point[22] |
-					   (touch_data->data_point[23] << 8));
-	}
-
-	if (gesture->gesture_type == SINGLE_TAP || gesture->gesture_type == DOU_TAP) {
-		gesture->Point_start.x = (touch_data->extra_gesture_info[0] | (touch_data->extra_gesture_info[1] << 8));
-		gesture->Point_start.y = (touch_data->extra_gesture_info[2] | (touch_data->extra_gesture_info[3] << 8));
-	}
-
-	hbp_info("lpwg:0x%x, type:%d, clockwise: %d, points: (%d, %d)(%d, %d)(%d, %d)(%d, %d)(%d, %d)(%d, %d)\n",
-		 touch_data->lpwg_gesture, gesture->gesture_type, gesture->clockwise, \
-		 gesture->Point_start.x, gesture->Point_start.y, \
-		 gesture->Point_end.x, gesture->Point_end.y, \
-		 gesture->Point_1st.x, gesture->Point_1st.y, \
-		 gesture->Point_2nd.x, gesture->Point_2nd.y, \
-		 gesture->Point_3rd.x, gesture->Point_3rd.y, \
-		 gesture->Point_4th.x, gesture->Point_4th.y);
-
-	return 0;
-}
-
-static int syna_get_gesture_info_auto(void *chip_data,
-				      struct gesture_info *gesture,
-				      struct resolution_info *resolution_info)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	int max_x_inchip = 0;
-	int max_y_inchip = 0;
-	int max_x = 0;
-	int max_y = 0;
-
-	max_x_inchip = le2_to_uint(tcm_info->app_info.max_x) + 1;
-	max_y_inchip = le2_to_uint(tcm_info->app_info.max_y) + 1;
-	max_x = resolution_info->max_x;
-	max_y = resolution_info->max_y;
-
-
-	syna_get_gesture_info(chip_data, gesture);
-
-	if (max_x_inchip == max_x && max_y_inchip == max_y) {
-		return 0;
-	}
-
-	if (gesture->gesture_type == UNKOWN_GESTURE) {
-		return 0;
-	}
-
-	if (max_x_inchip != max_x) {
-		gesture->Point_start.x = (gesture->Point_start.x * max_x) / max_x_inchip;
-		gesture->Point_end.x    = (gesture->Point_end.x * max_x) / max_x_inchip;
-		gesture->Point_1st.x    = (gesture->Point_1st.x * max_x) / max_x_inchip;
-		gesture->Point_2nd.x    = (gesture->Point_2nd.x * max_x) / max_x_inchip;
-		gesture->Point_3rd.x    = (gesture->Point_3rd.x * max_x) / max_x_inchip;
-		gesture->Point_4th.x    = (gesture->Point_4th.x * max_x) / max_x_inchip;
-	}
-
-	if (max_y_inchip != max_y) {
-		gesture->Point_start.y = (gesture->Point_start.y * max_y) / max_y_inchip;
-		gesture->Point_end.y    = (gesture->Point_end.y * max_y) / max_y_inchip;
-		gesture->Point_1st.y    = (gesture->Point_1st.y * max_y) / max_y_inchip;
-		gesture->Point_2nd.y    = (gesture->Point_2nd.y * max_y) / max_y_inchip;
-		gesture->Point_3rd.y    = (gesture->Point_3rd.y * max_y) / max_y_inchip;
-		gesture->Point_4th.y    = (gesture->Point_4th.y * max_y) / max_y_inchip;
-	}
-
-	hbp_info("changed points: (%d, %d)(%d, %d)(%d, %d)(%d, %d)(%d, %d)(%d, %d)\n",
-		 gesture->Point_start.x, gesture->Point_start.y, \
-		 gesture->Point_end.x, gesture->Point_end.y, \
-		 gesture->Point_1st.x, gesture->Point_1st.y, \
-		 gesture->Point_2nd.x, gesture->Point_2nd.y, \
-		 gesture->Point_3rd.x, gesture->Point_3rd.y, \
-		 gesture->Point_4th.x, gesture->Point_4th.y);
-
-	return 0;
-}
-
-
-static void store_to_file(void *fp, size_t max_count,
-			  size_t *pos, char *format, ...)
-{
-	va_list args;
-	char buf[64] = {0};
-
-	va_start(args, format);
-	vsnprintf(buf, 64, format, args);
-	va_end(args);
-
-	if (!IS_ERR_OR_NULL(fp)) {
-		tp_test_write(fp, max_count, buf, strlen(buf), pos);
-	}
-}
-
-static int testing_run_prod_test_item(struct syna_tcm_data *tcm_info,
-				      enum test_item_bit test_code)
-{
-	int retval = 0;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-
-	if (tcm_info->id_info.mode != MODE_APPLICATION
-	    || tcm_info->app_status != APP_STATUS_OK) {
-		hbp_info("Application firmware not running\n");
-		return -ENODEV;
-	}
-
-	LOCK_BUFFER(test_hcd->test_out);
-
-	retval = syna_tcm_alloc_mem(&test_hcd->test_out, 1);
-
-	if (retval < 0) {
-		hbp_info("Failed to allocate memory for test_hcd->test_out.buf\n");
-		UNLOCK_BUFFER(test_hcd->test_out);
-		return retval;
-	}
-
-	test_hcd->test_out.buf[0] = test_code;
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_PRODUCTION_TEST,
-					test_hcd->test_out.buf,
-					1,
-					&test_hcd->test_resp.buf,
-					&test_hcd->test_resp.buf_size,
-					&test_hcd->test_resp.data_length,
-					RESPONSE_TIMEOUT_MS_LONG);
-
-	if (retval < 0) {
-		hbp_info("Failed to write command %s\n", STR(CMD_PRODUCTION_TEST));
-		UNLOCK_BUFFER(test_hcd->test_resp);
-		UNLOCK_BUFFER(test_hcd->test_out);
-		return retval;
-	}
-
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	UNLOCK_BUFFER(test_hcd->test_out);
-
-	return 0;
-}
-
-static int syna_trx_short_test(struct seq_file *s, void *chip_data,
-			       struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	uint8_t u_data8 = 0;
-	int i = 0, j = 0, ret = 0;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned int checked_bits = 0, total_bits = 0;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	total_bits = syna_testdata->tx_num + syna_testdata->rx_num;
-
-	hbp_info("%s start.\n", __func__);
-	ret = testing_run_prod_test_item(tcm_info, TYPE_TRX_SHORT);
-
-	if (ret < 0) {
-		hbp_info("run trx short test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run trx short test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "trx_short:\n");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		u_data8 = buf[i];
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "0x%02x, ", u_data8);
-
-		for (j = 0; j < 8; j++) {
-			if (1 == (u_data8 & (1 << j))) {
-				hbp_info("trx short test failed at %d bits.\n", checked_bits + 1);
-
-				if (!error_count) {
-					seq_printf(s, "trx short test failed at %d bits.\n", checked_bits + 1);
-				}
-
-				error_count++;
-			}
-
-			checked_bits++;
-
-			if (checked_bits >= total_bits) {
-				goto full_out;
-			}
-		}
-
-		i += 1;
-	}
-
-full_out:
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static int syna_trx_open_test(struct seq_file *s, void *chip_data,
-			      struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	uint8_t u_data8 = 0;
-	int i = 0, j = 0, ret = 0;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned int checked_bits = 0, total_bits = 0;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	total_bits = syna_testdata->tx_num + syna_testdata->rx_num;
-
-	hbp_info("%s start.\n", __func__);
-	ret = testing_run_prod_test_item(tcm_info, TYPE_TRX_OPEN);
-
-	if (ret < 0) {
-		hbp_info("run trx open test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run trx open test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "tx_tx_open:\n");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		u_data8 = buf[i];
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "0x%02x, ", u_data8);
-
-		for (j = 0; j < 8; j++) {
-			if (0 == (u_data8 & (1 << j))) {
-				hbp_info("trx open test failed at %d bits.\n", checked_bits + 1);
-
-				if (!error_count) {
-					seq_printf(s, "trx open test failed at %d bits.\n", checked_bits + 1);
-				}
-
-				error_count++;
-			}
-
-			checked_bits++;
-
-			if (checked_bits >= total_bits) {
-				goto full_out;
-			}
-		}
-
-		i += 1;
-	}
-
-full_out:
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static int syna_trx_gndshort_test(struct seq_file *s, void *chip_data,
-				  struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	uint8_t u_data8 = 0;
-	int i = 0, j = 0, ret = 0;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned int checked_bits = 0, total_bits = 0;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	total_bits = syna_testdata->tx_num + syna_testdata->rx_num;
-
-	hbp_info("%s start.\n", __func__);
-	ret = testing_run_prod_test_item(tcm_info, TYPE_TRXGND_SHORT);
-
-	if (ret < 0) {
-		hbp_info("run trx gndshort test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run trx gndshort test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "tx_tx_gndshort:\n");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		u_data8 = buf[i];
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "0x%02x, ", u_data8);
-
-		for (j = 0; j < 8; j++) {
-			if (0 == (u_data8 & (1 << j))) {
-				hbp_info("trx gndshort test failed at %d bits.\n", checked_bits + 1);
-
-				if (!error_count) {
-					seq_printf(s, "trx gndshort test failed at %d bits.\n", checked_bits + 1);
-				}
-
-				error_count++;
-			}
-
-			checked_bits++;
-
-			if (checked_bits >= total_bits) {
-				goto full_out;
-			}
-		}
-
-		i += 1;
-	}
-
-full_out:
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp,  syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static int syna_full_rawcap_test(struct seq_file *s, void *chip_data,
-				 struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	uint16_t u_data16 = 0;
-	int i = 0, ret = 0, index = 0, byte_cnt = 2;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct auto_test_item_header *item_header = NULL;
-	int32_t *p_mutual_p = NULL, *p_mutual_n = NULL;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	item_header = (struct auto_test_item_header *)(syna_testdata->fw->data + p_test_item_info->item_offset);
-	if (item_header->item_limit_type == LIMIT_TYPE_TX_RX_DATA) {
-		p_mutual_p = (int32_t *)(syna_testdata->fw->data + item_header->top_limit_offset);
-		p_mutual_n = (int32_t *)(syna_testdata->fw->data + item_header->floor_limit_offset);
-
-	} else {
-		hbp_info("full rawcap test limit type(%2x) is wrong.\n",
-			 item_header->item_limit_type);
-
-		if (!error_count) {
-			seq_printf(s, "full rawcap test limit type(%2x) is wrong.\n",
-				   item_header->item_limit_type);
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	hbp_info("%s start.\n", __func__);
-	ret = testing_run_prod_test_item(tcm_info, TYPE_FULLRAW_CAP);
-
-	if (ret < 0) {
-		hbp_info("run full rawcap test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run full rawcap test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp,  syna_testdata->length,
-		      syna_testdata->pos, "full_rawcap:");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		index = i / byte_cnt;
-		u_data16 = (buf[i] | (buf[i + 1] << 8));
-
-		if (0 == index % (syna_testdata->rx_num))
-			store_to_file(syna_testdata->fp, syna_testdata->length,
-				      syna_testdata->pos, "\n");
-
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "%04d, ", u_data16);
-
-		if ((u_data16 < p_mutual_n[index]) || (u_data16 > p_mutual_p[index])) {
-			hbp_info("full rawcap test failed at node[%d]=%d [%d %d].\n", index, u_data16,
-				 p_mutual_n[index], p_mutual_p[index]);
-
-			if (!error_count) {
-				seq_printf(s, "full rawcap test failed at node[%d]=%d [%d %d].\n", index,
-					   u_data16, p_mutual_n[index], p_mutual_p[index]);
-			}
-
-			error_count++;
-		}
-
-		i += byte_cnt;
-	}
-
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static int syna_delta_noise_test(struct seq_file *s, void *chip_data,
-				 struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	int16_t data16 = 0;
-	int i = 0, ret = 0, index = 0, byte_cnt = 2;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct auto_test_item_header *item_header = NULL;
-	int32_t *p_mutual_p = NULL, *p_mutual_n = NULL;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	item_header = (struct auto_test_item_header *)(syna_testdata->fw->data +
-			p_test_item_info->item_offset);
-	if (item_header->item_limit_type == LIMIT_TYPE_TX_RX_DATA) {
-		p_mutual_p = (int32_t *)(syna_testdata->fw->data + item_header->top_limit_offset);
-		p_mutual_n = (int32_t *)(syna_testdata->fw->data + item_header->floor_limit_offset);
-
-	} else {
-		hbp_info("delta noise test limit type(%2x) is wrong.\n",
-			 item_header->item_limit_type);
-
-		if (!error_count) {
-			seq_printf(s, "delta noise test limit type(%2x) is wrong.\n",
-				   item_header->item_limit_type);
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	hbp_info("%s start.\n", __func__);
-	ret = testing_run_prod_test_item(tcm_info, TYPE_DELTA_NOISE);
-
-	if (ret < 0) {
-		hbp_info("run delta noise rawcap test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run delta noise test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "delta_noise:");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		index = i / byte_cnt;
-		data16 = (buf[i] | (buf[i + 1] << 8));
-
-		if (0 == index % (syna_testdata->rx_num))
-			store_to_file(syna_testdata->fp, syna_testdata->length,
-				      syna_testdata->pos, "\n");
-
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "%04d, ", data16);
-
-		if ((data16 < p_mutual_n[index]) || (data16 > p_mutual_p[index])) {
-			hbp_info("delta noise test failed at node[%d]=%d [%d %d].\n", index, data16,
-				 p_mutual_n[index], p_mutual_p[index]);
-
-			if (!error_count) {
-				seq_printf(s, "delta noise test failed at node[%d]=%d [%d %d].\n", index,
-					   data16, p_mutual_n[index], p_mutual_p[index]);
-			}
-
-			error_count++;
-		}
-
-		i += byte_cnt;
-	}
-
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static int syna_hybrid_rawcap_test(struct seq_file *s, void *chip_data,
-				   struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	int32_t data32 = 0;
-	int i = 0, ret = 0, index = 0, byte_cnt = 4;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct auto_test_item_header *item_header = NULL;
-	int32_t *p_hybridcap_p = NULL, *p_hybridcap_n = NULL;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	item_header = (struct auto_test_item_header *)(syna_testdata->fw->data + p_test_item_info->item_offset);
-	if (item_header->item_limit_type == LIMIT_TYPE_SLEF_TX_RX_DATA) {
-		p_hybridcap_p = (int32_t *)(syna_testdata->fw->data + item_header->top_limit_offset);
-		p_hybridcap_n = (int32_t *)(syna_testdata->fw->data + item_header->floor_limit_offset);
-	} else {
-		hbp_info("hybrid_rawcap test limit type(%2x) is wrong.\n",
-			 item_header->item_limit_type);
-
-		if (!error_count) {
-			seq_printf(s, "hybrid_rawcap test limit type(%2x) is wrong.\n",
-				   item_header->item_limit_type);
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	hbp_info("%s start.\n", __func__);
-	ret = testing_run_prod_test_item(tcm_info, TYPE_HYBRIDRAW_CAP);
-
-	if (ret < 0) {
-		hbp_info("run hybrid rawcap test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run hybrid rawcap test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "hybrid_rawcap:\n");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		index = i / byte_cnt;
-		data32 = (buf[i] | (buf[i + 1] << 8) | (buf[i + 2] << 16) | (buf[i + 3] << 24));
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "%08d, ", data32);
-
-		if ((data32 < p_hybridcap_n[index]) || (data32 > p_hybridcap_p[index])) {
-			hbp_info("hybrid rawcap test failed at node[%d]=%d [%d %d].\n", index, data32,
-				 p_hybridcap_n[index], p_hybridcap_p[index]);
-
-			if (!error_count) {
-				seq_printf(s, "hybrid rawcap test failed at node[%d]=%d [%d %d].\n", index,
-					   data32, p_hybridcap_n[index], p_hybridcap_p[index]);
-			}
-
-			error_count++;
-		}
-
-		i += byte_cnt;
-	}
-
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static int syna_rawcap_test(struct seq_file *s, void *chip_data,
-			    struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	int16_t data16 = 0;
-	int i = 0, ret = 0, index = 0, byte_cnt = 2;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct auto_test_item_header *item_header = NULL;
-	int32_t *p_mutual_p = NULL, *p_mutual_n = NULL;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	item_header = (struct auto_test_item_header *)(syna_testdata->fw->data + p_test_item_info->item_offset);
-	if (item_header->item_limit_type == LIMIT_TYPE_TX_RX_DATA) {
-		p_mutual_p = (int32_t *)(syna_testdata->fw->data + item_header->top_limit_offset);
-		p_mutual_n = (int32_t *)(syna_testdata->fw->data + item_header->floor_limit_offset);
-
-	} else {
-		hbp_info("raw cap test limit type(%2x) is wrong.\n",
-			 item_header->item_limit_type);
-
-		if (!error_count) {
-			seq_printf(s, "raw cap test limit type(%2x) is wrong.\n",
-				   item_header->item_limit_type);
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	hbp_info("%s start.\n", __func__);
-	ret = testing_run_prod_test_item(tcm_info, TYPE_RAW_CAP);
-
-	if (ret < 0) {
-		hbp_info("run raw cap test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run raw cap test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "raw_cap:");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		index = i / byte_cnt;
-		data16 = (buf[i] | (buf[i + 1] << 8));
-
-		if (0 == index % (syna_testdata->rx_num))
-			store_to_file(syna_testdata->fp, syna_testdata->length,
-				      syna_testdata->pos, "\n");
-
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "%04d, ", data16);
-
-		if ((data16 < p_mutual_n[index]) || (data16 > p_mutual_p[index])) {
-			hbp_info("rawcap test failed at node[%d]=%d [%d %d].\n", index, data16,
-				 p_mutual_n[index], p_mutual_p[index]);
-
-			if (!error_count) {
-				seq_printf(s, "rawcap test failed at node[%d]=%d [%d %d].\n", index, data16,
-					   p_mutual_n[index], p_mutual_p[index]);
-			}
-
-			error_count++;
-		}
-
-		i += byte_cnt;
-	}
-
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static int syna_trex_shortcustom_test(struct seq_file *s, void *chip_data,
-				      struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	uint16_t u_data16 = 0;
-	int i = 0, ret = 0, index = 0, byte_cnt = 2;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct auto_test_item_header *item_header = NULL;
-	int32_t *p_tx_p = NULL, *p_tx_n = NULL;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	item_header = (struct auto_test_item_header *)(syna_testdata->fw->data + p_test_item_info->item_offset);
-	if (item_header->item_limit_type == LIMIT_TYPE_SLEF_TX_RX_DATA) {
-		p_tx_p = (int32_t *)(syna_testdata->fw->data + item_header->top_limit_offset);
-		p_tx_n = (int32_t *)(syna_testdata->fw->data + item_header->floor_limit_offset);
-
-	} else {
-		hbp_info("trex short custom test limit type(%2x) is wrong.\n",
-			 item_header->item_limit_type);
-
-		if (!error_count) {
-			seq_printf(s, "trex short custom test limit type(%2x) is wrong.\n",
-				   item_header->item_limit_type);
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	hbp_info("%s start.\n", __func__);
-	ret = testing_run_prod_test_item(tcm_info, TYPE_TREXSHORT_CUSTOM);
-
-	if (ret < 0) {
-		hbp_info("run trex short custom test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run trex short custom test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "trex_shorcustom:\n");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		index = i / byte_cnt;
-		u_data16 = (buf[i] | (buf[i + 1] << 8));
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "%04d, ", u_data16);
-
-		if ((u_data16 < p_tx_n[index]) || (u_data16 > p_tx_p[index])) {
-			hbp_info("trex_shorcustom test failed at node[%d]=%d [%d %d].\n", index,
-				 u_data16, p_tx_n[index], p_tx_p[index]);
-
-			if (!error_count) {
-				seq_printf(s, "trex_shorcustom test failed at node[%d]=%d [%d %d].\n", index,
-					   u_data16, p_tx_n[index], p_tx_p[index]);
-			}
-
-			error_count++;
-		}
-
-		i += byte_cnt;
-	}
-
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static int syna_hybrid_diffcbc_test(struct seq_file *s, void *chip_data,
-				    struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	uint16_t u_data16 = 0;
-	int i = 0, ret = 0, index = 0, byte_cnt = 2;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct auto_test_item_header *item_header = NULL;
-	int32_t *p_selfdata_p = NULL, *p_selfdata_n = NULL;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	item_header = (struct auto_test_item_header *)(syna_testdata->fw->data +
-			p_test_item_info->item_offset);
-	if (item_header->item_limit_type == LIMIT_TYPE_SLEF_TX_RX_DATA) {
-		p_selfdata_p = (int32_t *)(syna_testdata->fw->data +
-					   item_header->top_limit_offset);
-		p_selfdata_n = (int32_t *)(syna_testdata->fw->data +
-					   item_header->floor_limit_offset);
-
-	} else {
-		hbp_info("hybrid diffcbc test limit type(%2x) is wrong.\n",
-			 item_header->item_limit_type);
-
-		if (!error_count) {
-			seq_printf(s, "hybrid diffcbc test limit type(%2x) is wrong.\n",
-				   item_header->item_limit_type);
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	hbp_info("%s start.\n", __func__);
-	ret = testing_run_prod_test_item(tcm_info, TYPE_HYBRIDABS_DIFF_CBC);
-
-	if (ret < 0) {
-		hbp_info("run hybrid diffcbc test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run hybrid diffcbc test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "hybrid_diffwithcbc:\n");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		index = i / byte_cnt;
-		u_data16 = (buf[i] | (buf[i + 1] << 8));
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "%04d, ", u_data16);
-
-		if ((u_data16 < p_selfdata_n[index]) || (u_data16 > p_selfdata_p[index])) {
-			hbp_info("hybrid diffcbc test failed at node[%d]=%d [%d %d].\n", index,
-				 u_data16, p_selfdata_n[index], p_selfdata_p[index]);
-
-			if (!error_count) {
-				seq_printf(s, "hybrid diffcbc test failed at node[%d]=%d [%d %d].\n", index,
-					   u_data16, p_selfdata_n[index], p_selfdata_p[index]);
-			}
-
-			error_count++;
-		}
-
-		i += byte_cnt;
-	}
-
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static int syna_hybrid_absnoise_test(struct seq_file *s, void *chip_data,
-				     struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	int16_t data16 = 0;
-	int i = 0, ret = 0, index = 0, byte_cnt = 2;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct auto_test_item_header *item_header = NULL;
-	int32_t *p_selfdata_p = NULL, *p_selfdata_n = NULL;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	item_header = (struct auto_test_item_header *)(syna_testdata->fw->data +
-			p_test_item_info->item_offset);
-	if (item_header->item_limit_type == LIMIT_TYPE_SLEF_TX_RX_DATA) {
-		p_selfdata_p = (int32_t *)(syna_testdata->fw->data +
-					   item_header->top_limit_offset);
-		p_selfdata_n = (int32_t *)(syna_testdata->fw->data +
-					   item_header->floor_limit_offset);
-
-	} else {
-		hbp_info("hybrid abs noise test limit type(%2x) is wrong.\n",
-			 item_header->item_limit_type);
-
-		if (!error_count) {
-			seq_printf(s, "hybrid abs noise test limit type(%2x) is wrong.\n",
-				   item_header->item_limit_type);
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	hbp_info("%s start.\n", __func__);
-
-	syna_tcm_reset(tcm_info); /* before the test, need to reset the IC*/
-
-	ret = testing_run_prod_test_item(tcm_info, TYPE_HYBRIDABS_NOSIE);
-
-	if (ret < 0) {
-		hbp_info("run hybrid abs noise test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run hybrid abs noise test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "hybrid_absnoise:\n");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		index = i / byte_cnt;
-		data16 = (buf[i] | (buf[i + 1] << 8));
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "%04d, ", data16);
-
-		if ((data16 < p_selfdata_n[index]) || (data16 > p_selfdata_p[index])) {
-			hbp_info("hybrid abs noise test failed at node[%d]=%d [%d %d].\n", index,
-				 data16, p_selfdata_n[index], p_selfdata_p[index]);
-
-			if (!error_count) {
-				seq_printf(s, "hybrid abs noise test failed at node[%d]=%d [%d %d].\n", index,
-					   data16, p_selfdata_n[index], p_selfdata_p[index]);
-			}
-
-			error_count++;
-		}
-
-		i += byte_cnt;
-	}
-
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static int syna_hybrid_rawcap_test_ad(struct seq_file *s, void *chip_data,
-				   struct auto_testdata *syna_testdata, struct test_item_info *p_test_item_info)
-{
-	int32_t data32 = 0;
-	int i = 0, ret = 0, index = 0, byte_cnt = 2;
-	int error_count = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct auto_test_item_header *item_header = NULL;
-	int32_t *p_hybridcap_p = NULL, *p_hybridcap_n = NULL;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char *buf = NULL;
-
-	item_header = (struct auto_test_item_header *)(syna_testdata->fw->data + p_test_item_info->item_offset);
-	if (item_header->item_limit_type == LIMIT_TYPE_SLEF_TX_RX_DATA) {
-		p_hybridcap_p = (int32_t *)(syna_testdata->fw->data + item_header->top_limit_offset);
-		p_hybridcap_n = (int32_t *)(syna_testdata->fw->data + item_header->floor_limit_offset);
-	} else {
-		hbp_info("hybrid_rawcap test limit type(%2x) is wrong.\n",
-			 item_header->item_limit_type);
-
-		if (!error_count) {
-			seq_printf(s, "hybrid_rawcap test limit type(%2x) is wrong.\n",
-				   item_header->item_limit_type);
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	hbp_info("%s start.\n", __func__);
-	ret = testing_run_prod_test_item(tcm_info, TYPE_HYBRIDRAW_CAP_WITH_AD + 24);
-
-	if (ret < 0) {
-		hbp_info("run hybrid rawcap test failed.\n");
-
-		if (!error_count) {
-			seq_printf(s, "run hybrid rawcap test failed.\n");
-		}
-
-		error_count++;
-		return error_count;
-	}
-
-	LOCK_BUFFER(test_hcd->test_resp);
-	buf = test_hcd->test_resp.buf;
-	hbp_info("%s read data size:%d\n", __func__, test_hcd->test_resp.data_length);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "hybrid_rawcap:\n");
-
-	for (i = 0; i < test_hcd->test_resp.data_length;) {
-		index = i / byte_cnt;
-		data32 = (buf[i] | (buf[i + 1] << 8));
-		store_to_file(syna_testdata->fp, syna_testdata->length,
-			      syna_testdata->pos, "%08d, ", data32);
-
-		if ((data32 < p_hybridcap_n[index]) || (data32 > p_hybridcap_p[index])) {
-			hbp_info("hybrid rawcap test failed at node[%d]=%d [%d %d].\n", index, data32,
-				 p_hybridcap_n[index], p_hybridcap_p[index]);
-
-			if (!error_count) {
-				seq_printf(s, "hybrid rawcap test failed at node[%d]=%d [%d %d].\n", index,
-					   data32, p_hybridcap_n[index], p_hybridcap_p[index]);
-			}
-
-			error_count++;
-		}
-
-		i += byte_cnt;
-	}
-
-	UNLOCK_BUFFER(test_hcd->test_resp);
-	store_to_file(syna_testdata->fp, syna_testdata->length,
-		      syna_testdata->pos, "\n");
-
-	return error_count;
-}
-
-static struct syna_auto_test_operations syna_tcm_test_ops = {
-	.test1       =  syna_trx_short_test,
-	.test2       =  syna_trx_open_test,
-	.test3       =  syna_trx_gndshort_test,
-	.test4       =  syna_full_rawcap_test,
-	.test5       =  syna_delta_noise_test,
-	.test6       =  syna_hybrid_rawcap_test,
-	.test7       =  syna_rawcap_test,
-	.test8       =  syna_trex_shortcustom_test,
-	.test9       =  syna_hybrid_diffcbc_test,
-	.test10      =  syna_hybrid_absnoise_test,
-	.test11       =  syna_hybrid_rawcap_test_ad,
-	/*.syna_auto_test_enable_irq    =  synaptics_test_enable_interrupt,*/
-	/*.syna_auto_test_preoperation  =  synaptics_auto_test_preoperation,*/
-	/*.syna_auto_test_endoperation  =  synaptics_auto_test_endoperation,*/
-};
-
-static struct engineer_test_operations syna_tcm_engineer_test_ops = {
-	.auto_test                  = synaptics_auto_test,
-};
-
-static int syna_tcm_collect_reports(struct syna_tcm_data *tcm_info,
-				    enum report_type report_type, unsigned int num_of_reports)
-{
-	int retval;
-	bool completed = false;
-	unsigned int timeout;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	unsigned char out[2] = {0};
-	unsigned char *resp_buf = NULL;
-	unsigned int resp_buf_size = 0;
-	unsigned int resp_length = 0;
-
-	test_hcd->report_index = 0;
-	test_hcd->report_type = report_type;
-	test_hcd->num_of_reports = num_of_reports;
-
-	reinit_completion(&tcm_info->report_complete);
-
-	out[0] = test_hcd->report_type;
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_ENABLE_REPORT,
-					out,
-					1,
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					0);
-
-	if (retval < 0) {
-		hbp_info("Failed to write message %s\n", STR(CMD_ENABLE_REPORT));
-		completed = false;
-		goto exit;
-	}
-
-	timeout = REPORT_TIMEOUT_MS * num_of_reports;
-
-	retval = wait_for_completion_timeout(&tcm_info->report_complete,
-					     msecs_to_jiffies(timeout));
-
-	if (retval == 0) {
-		hbp_info("Timed out waiting for report collection\n");
-
-	} else {
-		completed = true;
-	}
-
-	out[0] = test_hcd->report_type;
-
-	retval = syna_tcm_write_message(tcm_info,
-					CMD_DISABLE_REPORT,
-					out,
-					1,
-					&resp_buf,
-					&resp_buf_size,
-					&resp_length,
-					0);
-
-	if (retval < 0) {
-		hbp_info("Failed to write message %s\n", STR(CMD_DISABLE_REPORT));
-	}
-
-	if (!completed) {
-		retval = -EIO;
-	}
-
-exit:
-
-	return retval;
-}
-
-static void syna_tcm_test_report(struct syna_tcm_data *tcm_info)
-{
-	int retval;
-	unsigned int offset, report_size;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-
-	if (tcm_info->report.id != test_hcd->report_type) {
-		hbp_info("Not request report type\n");
-		return;
-	}
-
-	report_size = tcm_info->report.buffer.data_length;
-	LOCK_BUFFER(test_hcd->report);
-
-	if (test_hcd->report_index == 0) {
-		retval = syna_tcm_alloc_mem(&test_hcd->report,
-					    report_size * test_hcd->num_of_reports);
-
-		if (retval < 0) {
-			hbp_info("Failed to allocate memory\n");
-			UNLOCK_BUFFER(test_hcd->report);
-			return;
-		}
-	}
-
-	if (test_hcd->report_index < test_hcd->num_of_reports) {
-		offset = report_size * test_hcd->report_index;
-		retval = tp_memcpy(test_hcd->report.buf + offset,
-				   test_hcd->report.buf_size - offset,
-				   tcm_info->report.buffer.buf,
-				   tcm_info->report.buffer.buf_size,
-				   tcm_info->report.buffer.data_length);
-
-		if (retval < 0) {
-			hbp_info("Failed to copy report data\n");
-
-			UNLOCK_BUFFER(test_hcd->report);
-			return;
-		}
-
-		test_hcd->report_index++;
-		test_hcd->report.data_length += report_size;
-	}
-
-	UNLOCK_BUFFER(test_hcd->report);
-
-	if (test_hcd->report_index == test_hcd->num_of_reports) {
-		complete(&tcm_info->report_complete);
-	}
-
-	return;
-}
-
-static void syna_tcm_format_print(struct seq_file *s,
-				  struct syna_tcm_data *tcm_info, char *buffer)
-{
-	unsigned int row, col;
-	unsigned int rows, cols;
-	unsigned int cnt = 0;
-	short *pdata_16;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-
-	rows = le2_to_uint(tcm_info->app_info.num_of_image_rows);
-	cols = le2_to_uint(tcm_info->app_info.num_of_image_cols);
-
-	hbp_info("report size:%d\n", test_hcd->report.data_length);
-
-	if (buffer == NULL) {
-		pdata_16 = (short *)&test_hcd->report.buf[0];
-
-	} else {
-		pdata_16 = (short *)buffer;
-	}
-
-	for (row = 0; row < rows; row++) {
-		seq_printf(s, "[%02d] ", row);
-
-		for (col = 0; col < cols; col++) {
-			seq_printf(s, "%5d ", *pdata_16);
-			pdata_16++;
-		}
-
-		seq_printf(s, "\n");
-	}
-
-	if (test_hcd->report.data_length == rows * cols * 2 + (rows + cols) * 2) {
-		for (cnt = 0; cnt < rows + cols; cnt++) {
-			seq_printf(s, "%5d ", *pdata_16);
-			pdata_16++;
-		}
-	}
-
-	seq_printf(s, "\n");
-
-	return;
-}
-
-static void syna_tcm_format_print_snr(struct seq_file *s, struct syna_tcm_data *tcm_info, int index)
-{
-	unsigned int rows, cols;
-	unsigned int i = 0;
-	short *pdata_16;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-	struct touch_hcd *touch_hcd = tcm_info->touch_hcd;
-	struct touchpanel_snr *snr = tcm_info->snr;
-	int rx_num = tcm_info->hw_res->rx_num;
-
-	rows = le2_to_uint(tcm_info->app_info.num_of_image_rows);
-	cols = le2_to_uint(tcm_info->app_info.num_of_image_cols);
-
-	pdata_16 = (short *)&test_hcd->report.buf[0];
-
-	for (i = 0; i < touch_hcd->max_objects; i++) {
-		if (snr[i].point_status) {
-			if (index) {
-				snr[i].max = *(pdata_16 + snr[i].channel_x * rx_num + snr[i].channel_y) > snr[i].max ?
-						*(pdata_16 + snr[i].channel_x * rx_num + snr[i].channel_y) : snr[i].max;
-				snr[i].min = *(pdata_16 + snr[i].channel_x * rx_num + snr[i].channel_y) < snr[i].min ?
-						*(pdata_16 + snr[i].channel_x * rx_num + snr[i].channel_y) : snr[i].min;
-			} else {
-				snr[i].max = *(pdata_16 + snr[i].channel_x * rx_num + snr[i].channel_y);
-				snr[i].min = *(pdata_16 + snr[i].channel_x * rx_num + snr[i].channel_y);
-			}
-			snr[i].sum += *(pdata_16 + snr[i].channel_x * rx_num + snr[i].channel_y);
-
-			TPD_DETAIL("snr-cover [%d %d] %d.. %d += %d\n", snr[i].channel_x, snr[i].channel_y, *(pdata_16 + snr[i].channel_x * rx_num + snr[i].channel_y),
-					snr[i].sum, *(pdata_16 + snr[i].channel_x * rx_num + snr[i].channel_y));
-		}
-	}
-	return;
-}
-
-static void syna_tcm_format_unsigned_print(struct seq_file *s,
-		struct syna_tcm_data *tcm_info, char *buffer)
-{
-	unsigned int row, col;
-	unsigned int rows, cols;
-	unsigned int cnt = 0;
-	unsigned short *pdata_16;
-	struct syna_tcm_test *test_hcd = tcm_info->test_hcd;
-
-	rows = le2_to_uint(tcm_info->app_info.num_of_image_rows);
-	cols = le2_to_uint(tcm_info->app_info.num_of_image_cols);
-
-	hbp_info("report size:%d\n", test_hcd->report.data_length);
-
-	if (buffer == NULL) {
-		pdata_16 = (unsigned short *)&test_hcd->report.buf[0];
-
-	} else {
-		pdata_16 = (unsigned short *)buffer;
-	}
-
-	for (row = 0; row < rows; row++) {
-		seq_printf(s, "[%02d] ", row);
-
-		for (col = 0; col < cols; col++) {
-			seq_printf(s, "%5d ", *pdata_16);
-			pdata_16++;
-		}
-
-		seq_printf(s, "\n");
-	}
-
-	if (test_hcd->report.data_length == rows * cols * 2 + (rows + cols) * 2) {
-		for (cnt = 0; cnt < rows + cols; cnt++) {
-			seq_printf(s, "%5d ", *pdata_16);
-			pdata_16++;
-		}
-	}
-
-	seq_printf(s, "\n");
-
-	return;
-}
-static void syna_main_register(struct seq_file *s, void *chip_data)
-{
-	int retval = 0;
-	unsigned short config = 0;
-	unsigned int temp = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	retval = syna_tcm_get_dynamic_config(tcm_info,
-					     DC_IN_WAKEUP_GESTURE_MODE,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("gesture mode : ERROR\n");
-		seq_printf(s, "gesture mode : ERROR\n");
-
-	} else {
-		hbp_info("gesture mode : %d\n", config);
-		seq_printf(s, "gesture mode : %d\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_ERROR_PRIORITY,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("error priority(1:finger,0:error): ERROR\n");
-		seq_printf(s, "error priority(1:finger,0:error): ERROR\n");
-
-	} else {
-		hbp_info("error priority(1:finger,0:error): 0x%0X\n", config);
-		seq_printf(s, "error priority(1:finger,0:error): 0x%0X\n",
-			   config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_NOISE_LENGTH,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("noise length : ERROR\n");
-		seq_printf(s, "noise length : ERROR\n");
-
-	} else {
-		hbp_info("noise length : %d\n", config);
-		seq_printf(s, "noise length : %d\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_SET_REPORT_FRE,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("report rate(1:120HZ,2:240HZ,3:180HZ): ERROR\n");
-		seq_printf(s, "report rate(1:120HZ,2:240HZ,3:180HZ): ERROR\n");
-
-	} else {
-		hbp_info("report rate(1:120HZ,2:240HZ,3:180HZ): %d\n", config);
-		seq_printf(s, "report rate(1:120HZ,2:240HZ,3:180HZ): %d\n",
-			   config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_CHARGER_CONNECTED,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("charger mode : ERROR\n");
-		seq_printf(s, "charger mode : ERROR\n");
-
-	} else {
-		hbp_info("charger mode : %d\n", config);
-		seq_printf(s, "charger mode : %d\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_TOUCH_HOLD, &config);
-
-	if (retval < 0) {
-		hbp_info("fingerprint mode : ERROR\n");
-		seq_printf(s, "fingerprint mode : ERROR\n");
-
-	} else {
-		hbp_info("fingerprint mode : %d\n", config);
-		seq_printf(s, "fingerprint mode : %d\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_ENABLED,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("grip enable : ERROR\n");
-		seq_printf(s, "grip enable : ERROR\n");
-
-	} else {
-		hbp_info("grip enable : 0x%0X\n", config);
-		seq_printf(s, "grip enable : 0x%0X\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info,
-					     DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("grip direction(1:ver 0:hor): ERROR\n");
-		seq_printf(s, "grip direction(1:ver 0:hor): ERROR\n");
-
-	} else {
-		hbp_info("grip direction(1:ver 0:hor): 0x%0X\n", config);
-		seq_printf(s, "grip direction(0:ver 1:hor): 0x%0X\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_DARK_ZONE_ENABLE,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("dark zone enable : ERROR\n");
-		seq_printf(s, "dark zone enable : ERROR\n");
-
-	} else {
-		hbp_info("dark zone enable : 0x%0X\n", config);
-		seq_printf(s, "dark zone enable : 0x%0X\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_DARK_ZONE_X,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("dark zone x : ERROR\n");
-		seq_printf(s, "dark zone x : ERROR\n");
-
-	} else {
-		hbp_info("dark zone x : 0x%0X\n", config);
-		seq_printf(s, "dark zone x : 0x%0X\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_DARK_ZONE_Y,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("dark zone y : ERROR\n");
-		seq_printf(s, "dark zone y : ERROR\n");
-
-	} else {
-		hbp_info("dark zone y : 0x%0X\n", config);
-		seq_printf(s, "dark zone y : 0x%0X\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_SEL,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("abs dark sel : ERROR\n");
-		seq_printf(s, "abs dark sel : ERROR\n");
-
-	} else {
-		hbp_info("abs dark sel : 0x%0X\n", config);
-		seq_printf(s, "abs dark sel : 0x%0X\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_X,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("abs dark zone x : ERROR\n");
-		seq_printf(s, "abs dark zone x : ERROR\n");
-
-	} else {
-		hbp_info("abs dark zone x : %d\n", config);
-		seq_printf(s, "abs dark zone x : %d\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_Y,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("abs dark zone y : ERROR\n");
-		seq_printf(s, "abs dark zone y : ERROR\n");
-
-	} else {
-		hbp_info("abs dark zone y : %d\n", config);
-		seq_printf(s, "abs dark zone y : %d\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_U,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("abs dark zone U : ERROR\n");
-		seq_printf(s, "abs dark zone U : ERROR\n");
-
-	} else {
-		hbp_info("abs dark zone U : %d\n", config);
-		seq_printf(s, "abs dark zone U : %d\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_ABS_DARK_V,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("abs dark zone V : ERROR\n");
-		seq_printf(s, "abs dark zone V : ERROR\n");
-
-	} else {
-		hbp_info("abs dark zone V : %d\n", config);
-		seq_printf(s, "abs dark zone V : %d\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_CONDTION_ZONE,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("condtion zone : ERROR\n");
-		seq_printf(s, "condtion zone : ERROR\n");
-
-	} else {
-		hbp_info("condtion zone : %d\n", config);
-		seq_printf(s, "condtion zone : 0x%0X\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_SPECIAL_ZONE_X,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("special zone x : ERROR\n");
-		seq_printf(s, "special zone x : ERROR\n");
-
-	} else {
-		hbp_info("special zone x : %d\n", config);
-		seq_printf(s, "special zone x : %d\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_SPECIAL_ZONE_Y,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("special zone y : ERROR\n");
-		seq_printf(s, "special zone y : ERROR\n");
-
-	} else {
-		hbp_info("special zone y : %d\n", config);
-		seq_printf(s, "special zone y : %d\n", config);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_GRIP_SPECIAL_ZONE_L,
-					     &config);
-
-	if (retval < 0) {
-		hbp_info("special zone len : ERROR\n");
-		seq_printf(s, "special zone len : ERROR\n");
-
-	} else {
-		hbp_info("special zone len : %d\n", config);
-		seq_printf(s, "special zone len : %d\n", config);
-	}
-
-	hbp_info("Buid ID:%d, Custom ID:0x%s\n",
-		 le4_to_uint(tcm_info->id_info.build_id),
-		 tcm_info->app_info.customer_config_id);
-
-	seq_printf(s, "Buid ID:%d, Custom ID:0x%s\n",
-		   le4_to_uint(tcm_info->id_info.build_id),
-		   tcm_info->app_info.customer_config_id);
-
-	hbp_info("APP info : version:%d\n",
-		 le2_to_uint(tcm_info->app_info.version));
-
-	hbp_info("APP info : status:%d\n",
-		 le2_to_uint(tcm_info->app_info.status));
-
-	hbp_info("APP info : max_touch_report_config_size:%d\n",
-		 le2_to_uint(tcm_info->app_info.max_touch_report_config_size));
-	hbp_info("APP info : max_touch_report_payload_size:%d\n",
-		 le2_to_uint(tcm_info->app_info.max_touch_report_payload_size));
-
-	hbp_info("APP info : customer_config_id:%d\n",
-		 le2_to_uint(tcm_info->app_info.customer_config_id));
-	hbp_info("APP info : max_x:%d\n",
-		 le2_to_uint(tcm_info->app_info.max_x));
-
-	hbp_info("APP info : max_y:%d\n",
-		 le2_to_uint(tcm_info->app_info.max_y));
-
-	hbp_info("APP info : num_of_image_rows:%d\n",
-		 le2_to_uint(tcm_info->app_info.num_of_image_rows));
-
-	hbp_info("APP info : num_of_image_cols:%d\n",
-		 le2_to_uint(tcm_info->app_info.num_of_image_cols));
-
-	seq_printf(s, "APP info : version:%d\n",
-		   le2_to_uint(tcm_info->app_info.version));
-
-	seq_printf(s, "APP info : status:%d\n",
-		   le2_to_uint(tcm_info->app_info.status));
-
-	temp = le2_to_uint(tcm_info->app_info.max_touch_report_config_size);
-	seq_printf(s, "APP info : max_touch_report_config_size:%d\n",
-		   temp);
-
-	temp = le2_to_uint(tcm_info->app_info.max_touch_report_payload_size);
-	seq_printf(s, "APP info : max_touch_report_payload_size:%d\n",
-		   temp);
-
-	seq_printf(s, "APP info : customer_config_id:%d\n",
-		   le2_to_uint(tcm_info->app_info.customer_config_id));
-
-	seq_printf(s, "APP info : max_x:%d\n",
-		   le2_to_uint(tcm_info->app_info.max_x));
-
-	seq_printf(s, "APP info : max_y:%d\n",
-		   le2_to_uint(tcm_info->app_info.max_y));
-
-	seq_printf(s, "APP info : num_of_image_rows:%d\n",
-		   le2_to_uint(tcm_info->app_info.num_of_image_rows));
-
-	seq_printf(s, "APP info : num_of_image_cols:%d\n",
-		   le2_to_uint(tcm_info->app_info.num_of_image_cols));
-
-	if (tcm_info->default_config.data_length > 0) {
-		seq_printf(s, "default_config:%*ph\n", tcm_info->default_config.data_length, tcm_info->default_config.buf);
-		hbp_info("default_config:%*ph\n", tcm_info->default_config.data_length, tcm_info->default_config.buf);
-	}
-
-	if (tcm_info->config.data_length > 0) {
-		seq_printf(s, "config:%*ph\n", tcm_info->config.data_length, tcm_info->config.buf);
-		hbp_info("config:%*ph\n", tcm_info->config.data_length, tcm_info->config.buf);
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_LOW_TEMP_ENABLE, &config);
-	if (retval < 0) {
-		hbp_info("Failed to get temperature config\n");
-	}
-	seq_printf(s, "DC_LOW_TEMP_ENABLE:%d\n", config);
-	hbp_info("DC_LOW_TEMP_ENABLE:%d\n", config);
-	return;
-}
-
-static void syna_delta_read(struct seq_file *s, void *chip_data)
-{
-	int retval;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	retval = syna_tcm_set_dynamic_config(tcm_info, DC_NO_DOZE, 1);
-
-	if (retval < 0) {
-		hbp_info("Failed to exit doze\n");
-	}
-
-	msleep(20); /* delay 20ms*/
-
-	retval = syna_tcm_collect_reports(tcm_info, REPORT_DELTA, 1);
-
-	if (retval < 0) {
-		seq_printf(s, "Failed to read delta data\n");
-		return;
-	}
-
-	syna_tcm_format_print(s, tcm_info, NULL);
-
-	/*set normal doze*/
-	retval = syna_tcm_set_dynamic_config(tcm_info, DC_NO_DOZE, 0);
-
-	if (retval < 0) {
-		hbp_info("Failed to switch to normal\n");
-	}
-
-	return;
-}
-
-static void syna_baseline_read(struct seq_file *s, void *chip_data)
-{
-	int retval;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	retval = syna_tcm_set_dynamic_config(tcm_info, DC_NO_DOZE, 1);
-
-	if (retval < 0) {
-		hbp_info("Failed to exit doze\n");
-	}
-
-	msleep(20); /* delay 20ms*/
-
-	retval = syna_tcm_collect_reports(tcm_info, REPORT_RAW, 1);
-
-	if (retval < 0) {
-		seq_printf(s, "Failed to read baseline data\n");
-		return;
-	}
-
-	syna_tcm_format_unsigned_print(s, tcm_info, NULL);
-
-	/*set normal doze*/
-	retval = syna_tcm_set_dynamic_config(tcm_info, DC_NO_DOZE, 0);
-
-	if (retval < 0) {
-		hbp_info("Failed to switch to normal\n");
-	}
-
-	return;
-}
-
-/*static struct synaptics_proc_operations syna_proc_ops = {*/
-/*.auto_test     = syna_auto_test,*/
-/*};*/
-
-static  void syna_reserve_read(struct seq_file *s, void *chip_data)
-{
-	int retval;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	retval = syna_tcm_set_dynamic_config(tcm_info, DC_NO_DOZE, 1);
-
-	if (retval < 0) {
-		hbp_info("Failed to exit doze\n");
-	}
-
-	msleep(20); /* delay 20ms*/
-
-	retval = syna_tcm_collect_reports(tcm_info, REPORT_DEBUG, 1);
-
-	if (retval < 0) {
-		seq_printf(s, "Failed to read delta data\n");
-		return;
-	}
-
-	syna_tcm_format_unsigned_print(s, tcm_info, NULL);
-
-	/*set normal doze*/
-	retval = syna_tcm_set_dynamic_config(tcm_info, DC_NO_DOZE, 0);
-
-	if (retval < 0) {
-		hbp_info("Failed to switch to normal\n");
-	}
-
-	return;
-}
-
-static void syna_delta_snr_read(struct seq_file *s, void *chip_data, uint32_t count)
-{
-	int retval;
-	int i = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	struct touchpanel_snr *snr = tcm_info->snr;
-
-	if (!tcm_info->snr_read_support) {
-		seq_printf(s, "snr read not support! \n");
-		return;
-	}
-	if (!snr[0].doing) {
-		seq_printf(s, "snr doing zero! \n");
-		return;
-	}
-
-	for (i = 0; i < count; i++) {
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_NO_DOZE, 1);
-		if (retval < 0) {
-			hbp_info("Failed to exit doze\n");
-		}
-
-		msleep(20); /* delay 20ms */
-
-		retval = syna_tcm_collect_reports(tcm_info, REPORT_DELTA, 1);
-		if (retval < 0) {
-			seq_printf(s, "Failed to read delta data\n");
-			return;
-		}
-
-		syna_tcm_format_print_snr(s, tcm_info, i);
-
-		/*set normal doze*/
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_NO_DOZE, 0);
-		if (retval < 0) {
-			hbp_info("Failed to switch to normal\n");
-		}
-	}
-	for (i = 0; i < 10; i++) {
-		if (snr[i].point_status) {
-			snr[i].noise = snr[i].max - snr[i].min;
-			seq_printf(s, "%d|%d|", snr[i].channel_x, snr[i].channel_y);
-			seq_printf(s, "%d|", snr[i].max);
-			seq_printf(s, "%d|", snr[i].min);
-			seq_printf(s, "%d|", snr[i].sum / count);
-			seq_printf(s, "%d\n", snr[i].noise);
-			SNR_RESET(snr[i]);
-			TPD_DETAIL("snr-cover [%d %d] %d %d %d\n", snr[i].channel_x, snr[i].channel_y, snr[i].max, snr[i].min, snr[i].sum);
-		}
-	}
-	return;
-}
-
-static struct debug_info_proc_operations syna_debug_proc_ops = {
-	.delta_read    = syna_delta_read,
-	.baseline_read = syna_baseline_read,
-    .baseline_blackscreen_read = syna_baseline_read,
-	.main_register_read = syna_main_register,
-	.reserve_read  = syna_reserve_read,
-	.delta_snr_read = syna_delta_snr_read,
-};
-
-static void syna_start_aging_test(void *chip_data)
-{
-	int ret = -1;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	hbp_info("%s: start aging test \n", __func__);
-	ret = syna_tcm_set_dynamic_config(tcm_info, DC_NO_DOZE, 1);
-	if (ret < 0) {
-		hbp_info("%s: start aging test failed!\n", __func__);
-	}
-}
-
-static void syna_finish_aging_test(void *chip_data)
-{
-	int ret = -1;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	hbp_info("%s: finish aging test \n", __func__);
-	ret = syna_tcm_set_dynamic_config(tcm_info, DC_NO_DOZE, 0);
-	if (ret < 0) {
-		hbp_info("%s: finish aging test failed!\n", __func__);
-	}
-}
-
-static struct aging_test_proc_operations aging_test_proc_ops = {
-	.start_aging_test = syna_start_aging_test,
-	.finish_aging_test = syna_finish_aging_test,
-};
-
-
-static int syna_device_report_touch(struct syna_tcm_data *tcm_info)
-{
-	int ret = syna_parse_report(tcm_info);
-
-	if (ret < 0) {
-		hbp_info("Failed to parse report\n");
-		return -EINVAL;
-	}
-
-	syna_set_trigger_reason(tcm_info, IRQ_TOUCH);
-	return 0;
-}
-
-static int syna_resume_prepare(void *chip_data)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	reinit_completion(&tcm_info->resume_complete);
-	return 0;
-}
-
-static int syna_specific_resume_operate(void *chip_data, struct specific_resume_data *p)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	int timed_out = 0;
-
-	tcm_info->suspend_state = p->suspend_state;
-	tcm_info->in_test_process = p->in_test_process;
-	hbp_info("enter state : %d,in_test_process:%d\n", __func__, p->suspend_state, p->in_test_process);
-
-	timed_out = wait_for_completion_timeout(&tcm_info->resume_complete, 0.5 * HZ); /* wait resume over for 0.5s */
-
-	if ((0 == timed_out) || (tcm_info->resume_complete.done)) {
-		hbp_info("resume state, timed_out:%d, done:%d\n", timed_out, tcm_info->resume_complete.done);
-	}
-	return 0;
-}
-
-static void syna_set_touch_direction(void *chip_data, uint8_t dir)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	tcm_info->touch_direction = dir;
-}
-
-static uint8_t syna_get_touch_direction(void *chip_data)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	return tcm_info->touch_direction;
-}
-
-static void syna_freq_hop_trigger(void *chip_data)
-{
-	int retval = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	hbp_info("%s : send cmd to tigger frequency hopping here!!!\n", __func__);
-
-	switch (tcm_info->freq_point) {
-	case 0:
-		hbp_info("%s : Hop to frequency : %d\n", __func__, tcm_info->freq_point);
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_FREQUENCE_HOPPING, tcm_info->freq_point);
-		if (retval < 0) {
-			hbp_info("Failed to hop frequency\n");
-		}
-		tcm_info->freq_point = 1;
-		break;
-
-	case 1:
-		hbp_info("%s : Hop to frequency : %d\n", __func__, tcm_info->freq_point);
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_FREQUENCE_HOPPING, tcm_info->freq_point);
-		if (retval < 0) {
-			hbp_info("Failed to hop frequency\n");
-		}
-		tcm_info->freq_point = 2;
-		break;
-
-	case 2:
-		hbp_info("%s : Hop to frequency : %d\n", __func__, tcm_info->freq_point);
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_FREQUENCE_HOPPING, tcm_info->freq_point);
-		if (retval < 0) {
-			hbp_info("Failed to hop frequency\n");
-		}
-		tcm_info->freq_point = 3;
-		break;
-	case 3:
-		hbp_info("%s : Hop to frequency : %d\n", __func__, tcm_info->freq_point);
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_FREQUENCE_HOPPING, tcm_info->freq_point);
-		if (retval < 0) {
-			hbp_info("Failed to hop frequency\n");
-		}
-		tcm_info->freq_point = 4;
-		break;
-
-	case 4:
-		hbp_info("%s : Hop to frequency : %d\n", __func__, tcm_info->freq_point);
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_FREQUENCE_HOPPING,
-						     tcm_info->freq_point);
-
-		if (retval < 0) {
-			hbp_info("Failed to hop frequency\n");
-		}
-
-		tcm_info->freq_point = 5;
-		break;
-
-	case 5:
-		hbp_info("%s : Hop to frequency : %d\n", __func__, tcm_info->freq_point);
-		retval = syna_tcm_set_dynamic_config(tcm_info, DC_FREQUENCE_HOPPING,
-						     tcm_info->freq_point);
-
-		if (retval < 0) {
-			hbp_info("Failed to hop frequency\n");
-		}
-
-		tcm_info->freq_point = 0;
-		break;
-
-	default:
-		break;
-	}
-}
-
-static int syna_tcm_smooth_lv_set(void *chip_data, int level)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned short regval = 0;
-	int retval = 0;
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_ERROR_PRIORITY, ®val);
-	if (retval < 0) {
-		hbp_info("Failed to get smooth config\n");
-		tcm_info->error_state_count++;
-		return 0;
-	}
-	tcm_info->error_state_count = 0;
-
-	retval = syna_tcm_set_dynamic_config(tcm_info, DC_ERROR_PRIORITY, (level << 4) | (regval & 0x01));
-	if (retval < 0) {
-		hbp_info("Failed to set smooth config\n");
-		return 0;
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_ERROR_PRIORITY, ®val);
-	if (retval < 0) {
-		hbp_info("Failed to get smooth config\n");
-		return 0;
-	}
-	hbp_info("OK synaptics smooth lv to %d, now reg_val:0x%x", level, regval);
-	return 0;
-}
-
-static int syna_tcm_sensitive_lv_set(void *chip_data, int level)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned short regval = 0;
-	int retval = 0;
-
-	retval = syna_tcm_set_dynamic_config(tcm_info, DC_NOISE_LENGTH, level);
-	if (retval < 0) {
-		hbp_info("Failed to set sensitive config\n");
-		tcm_info->error_state_count++;
-		return 0;
-	}
-	tcm_info->error_state_count = 0;
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_NOISE_LENGTH, ®val);
-	if (retval < 0) {
-		hbp_info("Failed to get sensitive config\n");
-		return 0;
-	}
-	hbp_info("OK synaptics sensitive lv to %d, now reg_val:%d", level, regval);
-
-	return 0;
-}
-
-/*********** Start of kernel grip callbacks*************************/
-
-static void syna_set_grip_area_disable(void *chip_data)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	CLR_BIT(tcm_info->dc_cfg.g_dark_zone_enable, 0x00FF);
-	tcm_info->dc_cfg.g_abs_dark_sel = 0;
-}
-
-static int syna_send_grip_to_chip(void *chip_data)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	int ret = -1;
-	unsigned short len = 0;
-
-	if (!tcm_info || *tcm_info->in_suspend) {
-		hbp_info("%s: set grip in TP suspend !\n", __func__);
-		return 0;
-	}
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL,
-					  tcm_info->dc_cfg.g_roate_hori_level);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL\n", __func__);
-		return ret;
-	}
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_ABS_DARK_X,
-					  tcm_info->dc_cfg.g_abs_dark_x);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_ABS_DARK_X\n", __func__);
-		return ret;
-	}
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_ABS_DARK_Y,
-					  tcm_info->dc_cfg.g_abs_dark_y);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_ABS_DARK_Y\n", __func__);
-		return ret;
-	}
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_ABS_DARK_U,
-					  tcm_info->dc_cfg.g_abs_dark_u);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_ABS_DARK_U\n", __func__);
-		return ret;
-	}
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_ABS_DARK_V,
-					  tcm_info->dc_cfg.g_abs_dark_v);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_ABS_DARK_V\n", __func__);
-		return ret;
-	}
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_CONDTION_ZONE,
-					  tcm_info->dc_cfg.g_condtion_zone);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_CONDTION_ZONE\n", __func__);
-		return ret;
-	}
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_DARK_ZONE_X,
-					  tcm_info->dc_cfg.g_dark_zone_x);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_DARK_ZONE_X\n", __func__);
-		return ret;
-	}
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_DARK_ZONE_Y,
-					  tcm_info->dc_cfg.g_dark_zone_y);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_DARK_ZONE_Y\n", __func__);
-		return ret;
-	}
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_ABS_DARK_SEL,
-					  tcm_info->dc_cfg.g_abs_dark_sel);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_ABS_DARK_SEL\n", __func__);
-		return ret;
-	}
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_DARK_ZONE_ENABLE,
-					  tcm_info->dc_cfg.g_dark_zone_enable);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_DARK_ZONE_ENABLE\n", __func__);
-		return ret;
-	}
-
-	len = tcm_info->dc_cfg.g_special_zone_l;
-	if (tcm_info->touch_direction != VERTICAL_SCREEN) {
-		len = 0;
-	}
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_SPECIAL_ZONE_L,
-					  len);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_SPECIAL_ZONE_L\n", __func__);
-		return ret;
-	}
-
-	return ret;
-}
-
-static int syna_ver_bottom_large_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned short value = 0;
-
-	if (!tcm_info || !grip_zone || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	if (tcm_info->touch_direction != VERTICAL_SCREEN) {
-		return 0;
-	}
-
-	hbp_info("%s:x width %d, y width %d.\n", __func__, grip_zone->x_width, grip_zone->y_width);
-
-	if ((grip_zone->grip_side >> TYPE_LONG_CORNER_SIDE) & 0x01) {
-		value = grip_zone->x_width / 30;
-		if (value > 0x0F) {
-			value = 0x0F;
-		}
-		value = value + (value << 4);
-		tcm_info->dc_cfg.g_dark_zone_x = value;
-
-		value = grip_zone->y_width / 30;
-		if (value > 0x0F) {
-			value = 0x0F;
-		}
-		value = value + (value << 4);
-		tcm_info->dc_cfg.g_dark_zone_y = value;
-
-	} else {
-		return 0;
-	}
-
-	if (enable) {
-		SET_BIT(tcm_info->dc_cfg.g_dark_zone_enable, 0x05);
-	} else {
-		CLR_BIT(tcm_info->dc_cfg.g_dark_zone_enable, 0x05);
-	}
-
-	return 0;
-}
-
-static int syna_hor90_corner_large_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned short value = 0;
-
-	if (!tcm_info || !grip_zone || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	if (tcm_info->touch_direction != LANDSCAPE_SCREEN_90) {
-		return 0;
-	}
-
-	hbp_info("%s:x width %d, y width %d.\n", __func__, grip_zone->x_width, grip_zone->y_width);
-
-	if ((grip_zone->grip_side >> TYPE_SHORT_CORNER_SIDE) & 0x01) {
-		value = grip_zone->x_width / 30;
-		if (value > 0x0F) {
-			value = 0x0F;
-		}
-		value = value + (value << 4);
-		tcm_info->dc_cfg.g_dark_zone_x = value;
-
-		value = grip_zone->y_width / 30;
-		if (value > 0x0F) {
-			value = 0x0F;
-		}
-		value = value + (value << 4);
-		tcm_info->dc_cfg.g_dark_zone_y = value;
-
-	} else {
-		return 0;
-	}
-
-	if (enable) {
-		SET_BIT(tcm_info->dc_cfg.g_dark_zone_enable, 0x03);
-	} else {
-		CLR_BIT(tcm_info->dc_cfg.g_dark_zone_enable, 0x03);
-	}
-
-	return 0;
-}
-
-static int syna_hor270_corner_large_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned short value = 0;
-
-	if (!tcm_info || !grip_zone || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	if (tcm_info->touch_direction != LANDSCAPE_SCREEN_270) {
-		return 0;
-	}
-
-	hbp_info("%s:x width %d, y width %d.\n", __func__, grip_zone->x_width, grip_zone->y_width);
-
-	if ((grip_zone->grip_side >> TYPE_SHORT_CORNER_SIDE) & 0x01) {
-		value = grip_zone->x_width / 30;
-		if (value > 0x0F) {
-			value = 0x0F;
-		}
-		value = value + (value << 4);
-		tcm_info->dc_cfg.g_dark_zone_x = value;
-
-		value = grip_zone->y_width / 30;
-
-		if (value > 0x0F) {
-			value = 0x0F;
-		}
-		value = value + (value << 4);
-		tcm_info->dc_cfg.g_dark_zone_y = value;
-
-	} else {
-		return 0;
-	}
-
-	if (enable) {
-		SET_BIT(tcm_info->dc_cfg.g_dark_zone_enable, 0x0C);
-	} else {
-		CLR_BIT(tcm_info->dc_cfg.g_dark_zone_enable, 0x0C);
-	}
-
-	return 0;
-}
-
-static int syna_long_dead_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	u16 dead_bit;
-
-	if (!tcm_info || !grip_zone || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	if (tcm_info->touch_direction != VERTICAL_SCREEN) {
-		return 0;
-	}
-
-	hbp_info("%s:x width %d, y width %d.\n", __func__, grip_zone->x_width, grip_zone->y_width);
-
-	if ((grip_zone->grip_side >> TYPE_LONG_SIDE) & 0x01) {
-		tcm_info->dc_cfg.g_abs_dark_x = grip_zone->x_width & 0x7F;
-	} else {
-		return 0;
-	}
-
-
-	if (grip_zone->x_width & 0x80) {
-		dead_bit = 0x303;
-	} else {
-		dead_bit = 0x03;
-	}
-
-	if (enable) {
-		SET_BIT(tcm_info->dc_cfg.g_abs_dark_sel, dead_bit);
-	} else {
-		CLR_BIT(tcm_info->dc_cfg.g_abs_dark_sel, dead_bit);
-	}
-	return 0;
-}
-
-static int syna_short_dead_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	u16 dead_bit;
-
-	if (!tcm_info || !grip_zone || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	if (tcm_info->touch_direction == VERTICAL_SCREEN) {
-		return 0;
-	}
-
-	hbp_info("%s:x width %d, y width %d.\n", __func__, grip_zone->x_width, grip_zone->y_width);
-
-	if ((grip_zone->grip_side >> TYPE_SHORT_SIDE) & 0x01) {
-		tcm_info->dc_cfg.g_abs_dark_x = (grip_zone->y_width >> 8) & 0x7F;
-		tcm_info->dc_cfg.g_abs_dark_y = grip_zone->y_width & 0x7F;
-	} else {
-		return 0;
-	}
-	dead_bit = 0x0F;
-
-	if (grip_zone->y_width & 0x8000) {
-		dead_bit |= 0x300;
-	}
-	if (grip_zone->y_width & 0x80) {
-		dead_bit |= 0xC00;
-	}
-
-	if (enable) {
-		SET_BIT(tcm_info->dc_cfg.g_abs_dark_sel, dead_bit);
-	} else {
-		CLR_BIT(tcm_info->dc_cfg.g_abs_dark_sel, dead_bit);
-	}
-	return 0;
-}
-
-static int syna_long_condtion_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	if (!tcm_info || !grip_zone || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	if (tcm_info->touch_direction != VERTICAL_SCREEN) {
-		return 0;
-	}
-
-	hbp_info("%s:x width %d, y width %d.\n", __func__,
-		 grip_zone->x_width, grip_zone->y_width);
-
-	if ((grip_zone->grip_side >> TYPE_LONG_SIDE) & 0x01) {
-		tcm_info->dc_cfg.g_condtion_zone = grip_zone->x_width;
-	} else {
-		return 0;
-	}
-
-	if (!enable) {
-		tcm_info->dc_cfg.g_condtion_zone = 1;
-	}
-
-	return 0;
-}
-
-static int syna_short_condtion_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	if (!tcm_info || !grip_zone || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	if (tcm_info->touch_direction == VERTICAL_SCREEN) {
-		return 0;
-	}
-
-	hbp_info("%s:x width %d, y width %d.\n", __func__,
-		 grip_zone->x_width, grip_zone->y_width);
-
-	if ((grip_zone->grip_side >> TYPE_SHORT_SIDE) & 0x01) {
-		tcm_info->dc_cfg.g_condtion_zone = grip_zone->y_width;
-	} else {
-		return 0;
-	}
-
-	if (!enable) {
-		tcm_info->dc_cfg.g_condtion_zone = 1;
-	}
-
-	return 0;
-}
-
-static int syna_long_large_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	u16 area;
-	u16 dead_bit;
-
-	if (!tcm_info || !grip_zone || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	if (tcm_info->touch_direction != VERTICAL_SCREEN) {
-		return 0;
-	}
-
-	hbp_info("%s:x width %d, y width %d.\n", __func__,
-		 grip_zone->x_width, grip_zone->y_width);
-
-	if ((grip_zone->grip_side >> TYPE_LONG_SIDE) & 0x01) {
-		area = 4 * (grip_zone->x_width & 0x7F);
-		tcm_info->dc_cfg.g_abs_dark_u = area;
-		area = (grip_zone->x_width & 0x7F00) >> 6;
-		tcm_info->dc_cfg.g_abs_dark_v = area;
-	} else {
-		return 0;
-	}
-
-	dead_bit = 0x30;
-	if (grip_zone->x_width &0x8000) {
-		dead_bit = 0x3030;
-	}
-	if (enable) {
-		SET_BIT(tcm_info->dc_cfg.g_abs_dark_sel, dead_bit);
-	} else {
-		CLR_BIT(tcm_info->dc_cfg.g_abs_dark_sel, dead_bit);
-	}
-
-	return 0;
-}
-
-static int syna_short_large_zone_handle_func(void *chip_data,
-		struct grip_zone_area *grip_zone,
-		bool enable)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	u16 area;
-	u16 dead_bit;
-
-	if (!tcm_info || !grip_zone || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	if (tcm_info->touch_direction == VERTICAL_SCREEN) {
-		return 0;
-	}
-
-	hbp_info("%s:x width %d, y width %d.\n", __func__,
-		 grip_zone->x_width, grip_zone->y_width);
-
-	if ((grip_zone->grip_side >> TYPE_SHORT_SIDE) & 0x01) {
-		area = 4 * (grip_zone->y_width & 0x7F);
-		tcm_info->dc_cfg.g_abs_dark_u = area;
-		area = (grip_zone->y_width & 0x7F00) >> 6;
-		tcm_info->dc_cfg.g_abs_dark_v = area;
-	} else {
-		return 0;
-	}
-
-	if (tcm_info->touch_direction == LANDSCAPE_SCREEN_90) {
-		dead_bit = 0x50;
-		if (grip_zone->y_width &0x8000) {
-			dead_bit = 0x5050;
-		}
-
-	} else {
-		dead_bit = 0xA0;
-		if (grip_zone->y_width &0x8000) {
-			dead_bit = 0xA0A0;
-		}
-	}
-
-	if (enable) {
-		SET_BIT(tcm_info->dc_cfg.g_abs_dark_sel, dead_bit);
-	} else {
-		CLR_BIT(tcm_info->dc_cfg.g_abs_dark_sel, dead_bit);
-	}
-
-	return 0;
-}
-
-static int syna_set_fw_grip_area(void *chip_data,
-				 struct grip_zone_area *grip_zone,
-				 bool enable)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	int ret = 0;
-	int i = 0;
-
-	if (!tcm_info || !grip_zone || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	for (i = 0 ; i < ARRAY_SIZE(syna_grip); i ++) {
-		if (0 != strncmp(grip_zone->name, syna_grip[i].name,
-				 GRIP_TAG_SIZE)) {
-			continue;
-		}
-
-		if (syna_grip[i].handle_func) {
-			syna_grip[i].handle_func(chip_data, grip_zone, enable);
-		}
-		break;
-	}
-
-	if (i == ARRAY_SIZE(syna_grip)) {
-		TPD_DETAIL("%s: %s is not support in fw.\n", __func__,
-			   grip_zone->name);
-		return 0;
-	} else {
-		ret = syna_send_grip_to_chip(chip_data);
-		hbp_info("%s: %s %s in fw : [%d, %d] [%d %d] %d %d %d.\n",
-			 __func__,
-			 grip_zone->name, enable ? "modify" : "remove",
-			 grip_zone->start_x, grip_zone->start_y,
-			 grip_zone->x_width, grip_zone->y_width,
-			 grip_zone->exit_thd, grip_zone->support_dir,
-			 grip_zone->grip_side);
-	}
-
-	return ret;
-}
-
-static int syna_set_no_handle_area(void *chip_data,
-				   struct kernel_grip_info *grip_info)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	int ret = 0;
-	uint16_t lcd_x = 1;
-	uint16_t len = 0;
-
-	if (!tcm_info || !grip_info || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	hbp_info("%s:area %d, y1 %d, y2 %d.\n", __func__,
-		 grip_info->no_handle_y1, grip_info->no_handle_y1,
-		 grip_info->no_handle_y2);
-
-	if (grip_info->no_handle_y2 < grip_info->no_handle_y1) {
-		len = 0;
-	} else {
-		len = grip_info->no_handle_y2 - grip_info->no_handle_y1;
-	}
-	tcm_info->dc_cfg.g_special_zone_l = len;
-
-	if (tcm_info->chip_resolution_info
-	    && tcm_info->chip_resolution_info->LCD_WIDTH > 1) {
-		lcd_x = tcm_info->chip_resolution_info->LCD_WIDTH - 1;
-	}
-
-	if (grip_info->no_handle_dir < 2) {
-		tcm_info->dc_cfg.g_special_zone_y = grip_info->no_handle_y1;
-		if (!grip_info->no_handle_dir) {
-			tcm_info->dc_cfg.g_special_zone_x = lcd_x;
-		} else {
-			tcm_info->dc_cfg.g_special_zone_x = 0;
-		}
-	}
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_SPECIAL_ZONE_X,
-					  tcm_info->dc_cfg.g_special_zone_x);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_SPECIAL_ZONE_X\n", __func__);
-		return ret;
-	}
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_SPECIAL_ZONE_Y,
-					  tcm_info->dc_cfg.g_special_zone_y);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_SPECIAL_ZONE_Y\n", __func__);
-		return ret;
-	}
-
-	if (tcm_info->touch_direction != VERTICAL_SCREEN) {
-		len = 0;
-	}
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_SPECIAL_ZONE_L,
-					  len);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_SPECIAL_ZONE_L\n", __func__);
-		return ret;
-	}
-
-
-	TPD_DETAIL("%s: No handle area is %s change in fw : [%d, %d, %d].\n",
-		   __func__, ret < 0 ? "failed" : "success",
-		   grip_info->no_handle_dir, grip_info->no_handle_y1,
-		   grip_info->no_handle_y2);
-
-	return ret;
-}
-
-static int syna_set_large_thd(void *chip_data, int large_thd)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	int ret = 0;
-	unsigned short value;
-
-	if (!tcm_info || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	hbp_info("%s:large_thd %d.\n", __func__, large_thd);
-
-	value = large_thd & 0xF0;
-	CLR_BIT(tcm_info->dc_cfg.g_grip_enabled, 0xF0);
-	SET_BIT(tcm_info->dc_cfg.g_grip_enabled, value);
-
-	value = (large_thd & 0x0F) << 8;
-	CLR_BIT(tcm_info->dc_cfg.g_dark_zone_enable, 0xF00);
-	SET_BIT(tcm_info->dc_cfg.g_dark_zone_enable, value);
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_ENABLED,
-					  tcm_info->dc_cfg.g_grip_enabled);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_ENABLED\n", __func__);
-		return ret;
-	}
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_DARK_ZONE_ENABLE,
-					  tcm_info->dc_cfg.g_dark_zone_enable);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_DARK_ZONE_ENABLE\n", __func__);
-		return ret;
-	}
-
-	return ret;
-}
-
-static int syna_set_large_corner_frame_limit(void *chip_data, int frame)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	int ret = 0;
-	unsigned short value = 0;
-
-	if (!tcm_info || *tcm_info->in_suspend) {
-		return -1;
-	}
-
-	if (frame > 255) {
-		frame = 255;
-	}
-
-	value = (frame << 8) & 0xFF00;
-
-	CLR_BIT(tcm_info->dc_cfg.g_roate_hori_level, 0xFF00);
-	SET_BIT(tcm_info->dc_cfg.g_roate_hori_level, value);
-
-	ret = syna_tcm_set_dynamic_config(tcm_info,
-					  DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL,
-					  tcm_info->dc_cfg.g_roate_hori_level);
-	if (ret < 0) {
-		hbp_info("%s:failed to set DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL\n",
-			 __func__);
-		return ret;
-	}
-
-	return ret;
-}
-
-
-static void syna_set_grip_touch_direction(void *chip_data, uint8_t dir)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	if (!tcm_info) {
-		return;
-	}
-
-	tcm_info->touch_direction = dir;
-
-	hbp_info("%s:touch_direction %d.\n", __func__,
-		 tcm_info->touch_direction);
-
-	if (tcm_info->touch_direction) {
-		SET_BIT(tcm_info->dc_cfg.g_roate_hori_level, 0x01);
-	} else {
-		CLR_BIT(tcm_info->dc_cfg.g_roate_hori_level, 0x01);
-	}
-}
-
-static int syna_set_disable_level(void *chip_data, uint8_t level)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	int ret = -1;
-	unsigned short temp;
-
-	if (!tcm_info) {
-		return -1;
-	}
-
-	if (*tcm_info->in_suspend) {
-		hbp_info("%s: set touch_direction in TP suspend !\n", __func__);
-		return 0;
-	}
-
-	hbp_info("%s:disable level %d.\n", __func__, level);
-
-	if (!(level & (1 << GRIP_DISABLE_LARGE))) {
-		SET_BIT(tcm_info->dc_cfg.g_grip_enabled, 0x01);
-		temp = tcm_info->dc_cfg.g_grip_enabled;
-		ret = syna_tcm_set_dynamic_config(tcm_info,
-						  DC_GRIP_ENABLED,
-						  temp);
-		if (ret < 0) {
-			hbp_info("%s:failed to enable grip suppression\n",
-				 __func__);
-			return ret;
-		}
-	} else {
-		CLR_BIT(tcm_info->dc_cfg.g_grip_enabled, 0x01);
-		ret = syna_tcm_set_dynamic_config(tcm_info, DC_GRIP_ENABLED, 0);
-		if (ret < 0) {
-			hbp_info("%s:failed to disable grip suppression\n",
-				 __func__);
-			return ret;
-		}
-	}
-
-
-	return ret;
-}
-/*********** end of kernel grip callbacks*************************/
-
-static void syna_enable_kernel_grip(void *chip_data,
-				    struct kernel_grip_info *grip_info)
-{
-	struct list_head *pos = NULL;
-	struct grip_zone_area *grip_zone = NULL;
-	int i = 0;
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	if (!tcm_info || !grip_info || !grip_info->grip_handle_in_fw) {
-		return;
-	}
-	tcm_info->chip_grip_en = true;
-
-	syna_set_grip_touch_direction(chip_data, grip_info->touch_dir);
-
-	syna_set_grip_area_disable(chip_data);
-
-	list_for_each(pos, &grip_info->large_zone_list) {
-		grip_zone = (struct grip_zone_area *)pos;
-		for (i = 0 ; i < ARRAY_SIZE(syna_grip); i ++) {
-			if (0 != strncmp(grip_zone->name, syna_grip[i].name,
-					 GRIP_TAG_SIZE)) {
-				continue;
-			}
-
-			if (syna_grip[i].handle_func) {
-				syna_grip[i].handle_func(chip_data, grip_zone,
-							 true);
-			}
-		}
-	}
-
-	list_for_each(pos, &grip_info->dead_zone_list) {
-		grip_zone = (struct grip_zone_area *)pos;
-		for (i = 0 ; i < ARRAY_SIZE(syna_grip); i ++) {
-			if (0 != strncmp(grip_zone->name, syna_grip[i].name,
-					 GRIP_TAG_SIZE)) {
-				continue;
-			}
-
-			if (syna_grip[i].handle_func) {
-				syna_grip[i].handle_func(chip_data, grip_zone,
-							 true);
-			}
-		}
-	}
-
-	list_for_each(pos, &grip_info->condition_zone_list) {
-		grip_zone = (struct grip_zone_area *)pos;
-		for (i = 0 ; i < ARRAY_SIZE(syna_grip); i ++) {
-			if (0 != strncmp(grip_zone->name, syna_grip[i].name,
-					 GRIP_TAG_SIZE)) {
-				continue;
-			}
-
-			if (syna_grip[i].handle_func) {
-				syna_grip[i].handle_func(chip_data, grip_zone,
-							 true);
-			}
-		}
-	}
-
-
-	syna_set_no_handle_area(chip_data, grip_info);
-	syna_set_large_corner_frame_limit(chip_data,
-					  grip_info->large_corner_frame_limit);
-	if (tcm_info->touch_direction == VERTICAL_SCREEN) {
-		syna_set_large_thd(chip_data, grip_info->large_ver_thd);
-	} else {
-		syna_set_large_thd(chip_data, grip_info->large_hor_thd);
-	}
-	syna_send_grip_to_chip(chip_data);
-	syna_set_disable_level(chip_data, grip_info->grip_disable_level);
-}
-
-static int syna_tcm_send_temperature(void *chip_data, int temp, bool status)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	unsigned short regval = 0;
-	int retval = 0;
-	unsigned short temp_mode = 0;
-
-	/*enable low tempreratue*/
-	if (temp <= tcm_info->syna_tempepratue[0]) {
-		temp_mode = 1;
-		tcm_info->syna_low_temp_enable++;
-		tcm_info->syna_low_temp_disable = 0;
-	/*disable low tempreratue*/
-	} else if (temp > tcm_info->syna_tempepratue[1]) {
-		temp_mode = 0;
-		tcm_info->syna_low_temp_enable = 0;
-		tcm_info->syna_low_temp_disable++;
-	} else {
-		if (tcm_info->syna_low_temp_enable > 0) {
-			temp_mode = 1;
-			tcm_info->syna_low_temp_enable++;
-			tcm_info->syna_low_temp_disable = 0;
-		} else {
-			temp_mode = 0;
-			tcm_info->syna_low_temp_enable = 0;
-			tcm_info->syna_low_temp_disable++;
-		}
-	}
-
-	if (tcm_info->syna_low_temp_enable > 1 || tcm_info->syna_low_temp_disable > 1) {
-		TPD_DEBUG("enable or disable low temp mode is more than one time\n");
-		return 0;
-	}
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_LOW_TEMP_ENABLE, ®val);
-	if (retval < 0) {
-		hbp_info("Failed to get temperature config\n");
-		return 0;
-	}
-
-	if (1 == temp_mode)  {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "syna_low_temp_enable");
-	} else {
-		tp_healthinfo_report(tcm_info->monitor_data, HEALTH_REPORT, "syna_low_temp_disable");
-	}
-
-	if (1 == temp_mode)  {
-		temp_mode = regval | 0x02;
-	} else {
-		temp_mode = regval & 0xfd;
-	}
-	retval = syna_tcm_set_dynamic_config(tcm_info, DC_LOW_TEMP_ENABLE, temp_mode);
-	if (retval < 0) {
-		hbp_info("Failed to set temperature config\n");
-		return 0;
-	}
-
-	retval = syna_tcm_get_dynamic_config(tcm_info, DC_LOW_TEMP_ENABLE, ®val);
-	if (retval < 0) {
-		hbp_info("Failed to get temperature config\n");
-		return 0;
-	}
-	hbp_info("OK synaptics temperature to %d, now reg_val:%d", temp_mode, regval);
-
-	return retval;
-}
-
-static void syna_set_gesture_state(void *chip_data, int state)
-{
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-
-	hbp_info("%s:state:%d!\n", __func__, state);
-	tcm_info->gesture_state = state;
-}
-
-static struct oplus_touchpanel_operations syna_tcm_ops = {
-	.ftm_process			= syna_ftm_process,
-	.get_vendor			= syna_get_vendor,
-	.get_chip_info			= syna_get_chip_info,
-	.get_touch_points		= syna_get_touch_points,
-	.get_gesture_info		= syna_get_gesture_info,
-	.power_control			= syna_power_control,
-	.reset				= syna_tcm_reset,
-	.trigger_reason			= syna_trigger_reason,
-	.mode_switch			= syna_mode_switch,
-	.fw_check			= syna_fw_check,
-	.fw_update			= syna_tcm_fw_update,
-	.reinit_device			= syna_tcm_reinit_device,
-	.enable_fingerprint		= syna_tcm_enable_fingerprint,
-	.screenon_fingerprint_info	= syna_tcm_fingerprint_info,
-	.health_report			= syna_tcm_get_health_info,
-	.set_touch_direction		= syna_set_touch_direction,
-	.get_touch_direction		= syna_get_touch_direction,
-	.freq_hop_trigger		= syna_freq_hop_trigger,
-	.enable_gesture_mask		= syna_tcm_enable_gesture_mask,
-	.speed_up_resume_prepare	= syna_resume_prepare,
-	.specific_resume_operate	= syna_specific_resume_operate,
-	.smooth_lv_set			= syna_tcm_smooth_lv_set,
-	.sensitive_lv_set		= syna_tcm_sensitive_lv_set,
-	.get_touch_points_auto		= syna_get_touch_points_auto,
-	.get_gesture_info_auto		= syna_get_gesture_info_auto,
-	.screenon_fingerprint_info_auto	= syna_tcm_fingerprint_info_auto,
-	.tp_refresh_switch		= syna_report_refresh_switch,
-	.rate_white_list_ctrl		= syna_rate_white_list_ctrl,
-	.enable_kernel_grip		= syna_enable_kernel_grip,
-	.set_gesture_state         	= syna_set_gesture_state,
-	.get_touch_points_help		= syna_get_touch_points_help,
-	.set_high_frame_rate            = syna_tcm_set_high_frame_rate,
-	.send_temperature		= syna_tcm_send_temperature,
-};
-
-static void syna_async_work_lock(struct work_struct *work)
-{
-	struct syna_tcm_data *tcm_info = container_of(work, struct syna_tcm_data,
-					 async_work);
-
-	syna_tcm_async_work(tcm_info);
-}
-
-static void init_chip_dts(struct device *dev, void *chip_data)
-{
-	int rc;
-	int ret = 0;
-	struct device_node *np;
-	struct device_node *chip_np;
-	int i = 0;
-	int temp_array[FPS_REPORT_NUM];
-	struct syna_tcm_data *tcm_info = (struct syna_tcm_data *)chip_data;
-	np = dev->of_node;
-
-	tcm_info->snr_read_support = of_property_read_bool(np, "snr_read_support");
-
-	chip_np = of_get_child_by_name(np, "S3910");
-
-	if (!chip_np) {
-		tcm_info->display_refresh_rate = 60;
-		tcm_info->game_rate = 1;
-		tcm_info->default_gesture_mask = 0xFFFF;
-		tcm_info->gesture_mask = tcm_info->default_gesture_mask;
-		/*default :0:125hz 1:240hz 2:360HZ is for 21641*/
-		tcm_info->fps_report_rate_num = 6;
-		tcm_info->fps_report_rate_array[0] = 60;
-		tcm_info->fps_report_rate_array[1] = 0;
-		tcm_info->fps_report_rate_array[2] = 90;
-		tcm_info->fps_report_rate_array[3] = 1;
-		tcm_info->fps_report_rate_array[4] = 120;
-		tcm_info->fps_report_rate_array[5] = 2;
-		tcm_info->syna_tempepratue[0] = 5;
-		tcm_info->syna_tempepratue[1] = 15;
-		tcm_info->syna_low_temp_enable = 0;
-		tcm_info->syna_low_temp_disable = 1;
-		tcm_info->fwupdate_bootloader = 0;
-		tcm_info->normal_config_version = 0;
-		return;
-	}
-
-	rc = of_property_read_u32(chip_np, "report_rate_default", &tcm_info->display_refresh_rate);
-	if (rc < 0) {
-		tcm_info->display_refresh_rate = 60;
-	}
-	hbp_info("default rate %d\n", tcm_info->display_refresh_rate);
-
-	rc = of_property_read_u32(chip_np, "report_rate_game_value", &ret);
-	if (rc < 0) {
-		ret = 1;
-	}
-	hbp_info("default game value %d\n", ret);
-	tcm_info->game_rate = ret;
-	tcm_info->switch_game_rate_support = of_property_read_bool(chip_np, "switch_report_rate");
-	rc = of_property_read_u32(chip_np, "default_gesture_mask", &ret);
-	if (rc < 0) {
-		ret = 0xFFFF;
-	}
-	hbp_info("default gesture mask value %d\n", ret);
-	tcm_info->default_gesture_mask = (uint16_t)(ret & 0xFFFF);
-	tcm_info->gesture_mask = tcm_info->default_gesture_mask;
-	rc = of_property_count_u32_elems(chip_np, "fps_report_rate");
-	tcm_info->fps_report_rate_num = rc;
-
-	if (tcm_info->fps_report_rate_num > 0 && tcm_info->fps_report_rate_num <= FPS_REPORT_NUM
-		&& !(tcm_info->fps_report_rate_num % 2)) {
-		rc = of_property_read_u32_array(chip_np, "fps_report_rate", temp_array, tcm_info->fps_report_rate_num);
-		if (rc) {
-			hbp_info("fps_report_rate not specified %d\n", rc);
-		} else {
-			for (i = 0; i < tcm_info->fps_report_rate_num; i++) {
-				tcm_info->fps_report_rate_array[i] = temp_array[i];
-				hbp_info("fps_report_rate is: %d\n", tcm_info->fps_report_rate_array[i]);
-			}
-		}
-	} else {
-	    /*default :0:125hz 1:240hz 2:360HZ is for 21641*/
-	    tcm_info->fps_report_rate_num = 6;
-		tcm_info->fps_report_rate_array[0] = 60;
-		tcm_info->fps_report_rate_array[1] = 0;
-		tcm_info->fps_report_rate_array[2] = 90;
-		tcm_info->fps_report_rate_array[3] = 1;
-		tcm_info->fps_report_rate_array[4] = 120;
-		tcm_info->fps_report_rate_array[5] = 2;
-		hbp_info("fps_report_rate is not dubole %d\n", tcm_info->fps_report_rate_num);
-	}
-	rc = of_property_read_u32(chip_np, "fwupdate_bootloader", &tcm_info->fwupdate_bootloader);
-	if (rc < 0) {
-		tcm_info->fwupdate_bootloader = 0;
-		hbp_info("fwupdate_bootloader %d\n", tcm_info->fwupdate_bootloader);
-	}
-	tcm_info->syna_tempepratue[0] = 5;
-	tcm_info->syna_tempepratue[1] = 15;
-	tcm_info->syna_low_temp_enable = 0;
-	tcm_info->syna_low_temp_disable = 1;
-	rc = of_property_read_u32(chip_np, "normal_config_version", &tcm_info->normal_config_version);
-	if (rc < 0) {
-		tcm_info->normal_config_version = 0;
-		hbp_info("normal_config_version %d\n", tcm_info->normal_config_version);
-	}
-}
-
-static int syna_tcm_probe(struct platform_device *pdev)
-{
-	int retval = 0;
-	struct syna_tcm_data *tcm_info = NULL;
-	struct device_hcd *device_hcd = NULL;
-	u64 time_counter = 0;
-
-	hbp_info("enter\n");
-
-	/*1. alloc mem for tcm_data*/
-	tcm_info = kzalloc(sizeof(*tcm_info), GFP_KERNEL);
-
-	if (!tcm_info) {
-		hbp_info("no more memory\n");
-		return -ENOMEM;
-	}
-
-	/*4. init member of tcm_info*/
-	tcm_info->ubl_addr = 0x2c;
-	tcm_info->rd_chunk_size = RD_CHUNK_SIZE;
-	tcm_info->wr_chunk_size = WR_CHUNK_SIZE;
-	tcm_info->read_length = MIN_READ_LENGTH;
-	/*tcm_info->display_refresh_rate = 90;*/
-	tcm_info->game_mode = false;
-	tcm_info->boot_flag = true;
-	tcm_info->first_sync_flag = true;
-
-	atomic_set(&tcm_info->command_status, CMD_IDLE);
-	mutex_init(&tcm_info->reset_mutex);
-	mutex_init(&tcm_info->rw_mutex);
-	mutex_init(&tcm_info->command_mutex);
-	mutex_init(&tcm_info->identify_mutex);
-	init_completion(&tcm_info->response_complete);
-	init_completion(&tcm_info->report_complete);
-
-	init_completion(&tcm_info->resume_complete);
-	tcm_info->async_workqueue = create_singlethread_workqueue("syna_async");
-
-	if (!tcm_info->async_workqueue) {
-		retval = -ENOMEM;
-		goto err_async_workqueue;
-	}
-
-	INIT_WORK(&tcm_info->async_work, syna_async_work_lock);
-
-	INIT_BUFFER(tcm_info->in, false);
-	INIT_BUFFER(tcm_info->out, false);
-	INIT_BUFFER(tcm_info->resp, true);
-	INIT_BUFFER(tcm_info->temp, false);
-	INIT_BUFFER(tcm_info->config, false);
-	INIT_BUFFER(tcm_info->default_config, false);
-	INIT_BUFFER(tcm_info->report.buffer, true);
-
-#ifdef EXTERNAL_DEBUG_LOGGING
-	mutex_init(&tcm_info->fifo_mutex);
-	INIT_BUFFER(tcm_info->external_buf, false);
-	INIT_LIST_HEAD(&tcm_info->frame_fifo_queue);
-	init_waitqueue_head(&tcm_info->wait_frame);
-#endif
-
-	/*5. alloc mem for reading in buffer*/
-	LOCK_BUFFER(tcm_info->in);
-	retval = syna_tcm_alloc_mem(&tcm_info->in, MAX_READ_LENGTH);
-	hbp_info("%s read_length:%d\n", __func__, tcm_info->read_length);
-
-	if (retval < 0) {
-		hbp_info("Failed to allocate memory for tcm_info->in.buf\n");
-		UNLOCK_BUFFER(tcm_info->in);
-		goto err_malloc_inbuffer;
-	}
-
-	UNLOCK_BUFFER(tcm_info->in);
-
-	/*6. create workqueue and init helper work*/
-	tcm_info->helper_workqueue = create_singlethread_workqueue("syna_tcm_helper");
-	if (!tcm_info->helper_workqueue) {
-		retval = -ENOMEM;
-		goto err_helper_workqueue;
-	}
-
-	INIT_WORK(&tcm_info->helper_work, syna_tcm_helper_work);
-
-	/*7. alloc mem for touch_hcd and init it's member*/
-	tcm_info->touch_hcd = (struct touch_hcd *)tp_devm_kzalloc(ts->dev,
-			      sizeof(struct touch_hcd), GFP_KERNEL);
-
-	if (!tcm_info->touch_hcd) {
-		retval = -ENOMEM;
-		goto err_malloc_touchhcd;
-	}
-
-	INIT_BUFFER(tcm_info->touch_hcd->out, false);
-	INIT_BUFFER(tcm_info->touch_hcd->resp, false);
-	mutex_init(&tcm_info->touch_hcd->report_mutex);
-
-	tcm_info->touch_hcd->max_objects = 10;
-	tcm_info->touch_hcd->touch_data.object_data =
-		(struct object_data *)tp_devm_kzalloc(ts->dev,
-				sizeof(struct object_data) * tcm_info->touch_hcd->max_objects, GFP_KERNEL);
-
-	if (!tcm_info->touch_hcd->touch_data.object_data) {
-		retval = -ENOMEM;
-		goto err_malloc_object_data;
-	}
-
-	/*8. alloc mem for test_hcd and it's member*/
-	tcm_info->test_hcd = (struct syna_tcm_test *)tp_devm_kzalloc(ts->dev,
-			     sizeof(struct syna_tcm_test), GFP_KERNEL);
-
-	if (!tcm_info->test_hcd) {
-		retval = -ENOMEM;
-		goto err_malloc_test;
-	}
-
-	INIT_BUFFER(tcm_info->test_hcd->report, false);
-	INIT_BUFFER(tcm_info->test_hcd->test_resp, false);
-	INIT_BUFFER(tcm_info->test_hcd->test_out, false);
-
-	/*9. register common part of touchpanel driver*/
-	retval = register_common_touch_device(ts);
-
-	if (retval < 0 && (retval != -EFTM)) {
-		hbp_info("Failed to init device information\n");
-		goto err_malloc_register;
-	}
-
-	tcm_info->monitor_data = &ts->monitor_data;
-	init_chip_dts(ts->dev, tcm_info);
-	tcm_info->black_gesture_indep = ts->black_gesture_indep_support;
-
-	tcm_info->chip_resolution_info = &ts->resolution_info;
-
-	/*11. create synaptics common file*/
-	synaptics_create_proc(ts, tcm_info->syna_ops);
-
-	/*12. create remote device file and init it's callback*/
-	device_hcd = syna_remote_device_S3010_init(tcm_info);
-
-	if (device_hcd) {
-		device_hcd->irq = tcm_info->client->irq;
-		device_hcd->read_message = syna_tcm_read_message;
-		device_hcd->write_message = syna_tcm_write_message;
-		device_hcd->reset = syna_tcm_reset;
-		device_hcd->report_touch = syna_device_report_touch;
-		device_hcd->tp_index = ts->tp_index;
-	}
-
-	if (tcm_info->fwupdate_bootloader) {
-		tcm_info->g_fw_buf = vmalloc(FW_BUF_SIZE);
-		if (tcm_info->g_fw_buf == NULL) {
-			hbp_info("fw buf vmalloc error\n");
-			goto err_malloc_register;
-		}
-		tcm_info->g_fw_sta = false;
-		tcm_info->probe_done = 1;
-	}
-
-	return 0;
-
-err_malloc_register:
-err_malloc_test:
-err_malloc_object_data:
-err_malloc_touchhcd:
-	cancel_work_sync(&tcm_info->helper_work);
-	flush_workqueue(tcm_info->helper_workqueue);
-	destroy_workqueue(tcm_info->helper_workqueue);
-
-err_helper_workqueue:
-	RELEASE_BUFFER(tcm_info->in);
-
-err_malloc_inbuffer:
-	cancel_work_sync(&tcm_info->async_work);
-	flush_workqueue(tcm_info->async_workqueue);
-	destroy_workqueue(tcm_info->async_workqueue);
-
-err_async_workqueue:
-	spi_set_drvdata(spi, NULL);
-	common_touch_data_free(ts);
-	ts = NULL;
-
-ts_alloc_failed:
-	if (tcm_info) {
-		kfree(tcm_info);
-		tcm_info = NULL;
-	}
-	return retval;
-}
-
-static void syna_tcm_tp_shutdown(struct platform_device *pdev)
-{
-	hbp_info("is called\n");
-}
-
-static int syna_tcm_remove(struct platform_device *pdev)
-{
-	struct syna_tcm_data *tcm_info = platform_get_drvdata(pdev);
-
-	if (!tcm_info)
-		return 0;
-
-	RELEASE_BUFFER(tcm_info->report.buffer);
-	RELEASE_BUFFER(tcm_info->config);
-	RELEASE_BUFFER(tcm_info->temp);
-	RELEASE_BUFFER(tcm_info->resp);
-	RELEASE_BUFFER(tcm_info->out);
-	RELEASE_BUFFER(tcm_info->in);
-
-	if (tcm_info->fwupdate_bootloader && tcm_info->g_fw_buf) {
-		vfree(tcm_info->g_fw_buf);
-	}
-
-	kfree(tcm_info);
-
-	return 0;
-}
-
-static int syna_platform_suspend(struct device *dev)
-{
-	hbp_info("is called\n");
-	return 0;
-}
-
-static int syna_platform_resume(struct device *dev)
-{
-	hbp_info("is called\n");
-	return 0;
-}
-
-static const struct dev_pm_ops syna_pm_ops = {
-	.suspend = syna_platform_suspend,
-	.resume = syna_platform_resume,
-};
-
-static struct of_device_id syna_match_table[] = {
-	{ .compatible = "synaptics-s3910"},
-	{}
-};
-
-static struct spi_driver syna_platform_driver = {
-	.probe      = syna_tcm_probe,
-	.remove     = syna_tcm_remove,
-	.shutdown   = syna_tcm_tp_shutdown,
-	.driver = {
-		.name = TPD_DEVICE,
-		.owner = THIS_MODULE,
-		.of_match_table =  syna_match_table,
-		.pm = &syna_pm_ops,
-	},
-};
-
-module_platform_driver(syna_platform_driver);
-
-MODULE_DESCRIPTION("Touchscreen Synaptics tcm oncell Driver");
-MODULE_LICENSE("GPL");
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.h b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.h
deleted file mode 100755
index 05e4c5a7..00000000
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/synaptics_tcm_S3910.h
+++ /dev/null
@@ -1,720 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Copyright (C) 2018-2020 Oplus. All rights reserved.
- */
-
-#ifndef _SYNAPTICS_TCM_CORE_H_
-#define _SYNAPTICS_TCM_CORE_H_
-
-#include 
-#include 
-#include 
-#include 
-
-#include "../../hbp_core.h"
-#include "../../hbp_report.h"
-
-#ifdef TPD_DEVICE
-#undef TPD_DEVICE
-#define TPD_DEVICE "synaptics-s3910"
-#else
-#define TPD_DEVICE "synaptics-s3910"
-#endif
-
-#define SYNAPTICS_TCM_ID_PRODUCT (1 << 0)
-#define SYNAPTICS_TCM_ID_VERSION 0x0007
-
-#ifdef CONFIG_TOUCHPANEL_MTK_PLATFORM /*mtk has to limit the amount of data*/
-#define RD_CHUNK_SIZE  256     /* read length limit in bytes, 0 = unlimited */
-#define WR_CHUNK_SIZE 2048   /* write length limit in bytes, 0 = unlimited */
-#else
-#define RD_CHUNK_SIZE 0 /* read length limit in bytes, 0 = unlimited */
-#define WR_CHUNK_SIZE 0 /* write length limit in bytes, 0 = unlimited */
-#endif
-
-#define MESSAGE_HEADER_SIZE     4
-#define MESSAGE_MARKER          0xA5
-#define MESSAGE_PADDING         0x5A
-
-
-/* The external frame data logging */
-#define EXTERNAL_DEBUG_LOGGING
-#ifdef EXTERNAL_DEBUG_LOGGING
-#define REPORT_TYPES		(256)
-#define EDL_ENABLE			(1)
-#define EDL_DISABLE			(0)
-#endif
-
-#define REPORT_TIMEOUT_MS       1000
-#define POWEWRUP_TO_RESET_TIME  10
-#define RESET_TO_NORMAL_TIME    80
-
-#define PREDICTIVE_READING
-#define MIN_READ_LENGTH 9
-#define RESPONSE_TIMEOUT_MS_SHORT 300
-#define RESPONSE_TIMEOUT_MS_DEFAULT 1000
-#define RESPONSE_TIMEOUT_MS_LONG 3000
-
-#define ERASE_FLASH_DELAY_MS 5000
-#define WRITE_FLASH_DELAY_MS 3000
-
-#define APP_STATUS_POLL_TIMEOUT_MS 1000
-#define APP_STATUS_POLL_MS 100
-
-#define MAX_READ_LENGTH 64*1024
-
-#define INIT_BUFFER(buffer, is_clone) \
-	mutex_init(&buffer.buf_mutex); \
-	buffer.clone = is_clone
-
-#define LOCK_BUFFER(buffer) \
-	mutex_lock(&buffer.buf_mutex)
-
-#define UNLOCK_BUFFER(buffer) \
-	mutex_unlock(&buffer.buf_mutex)
-
-#define RELEASE_BUFFER(buffer) \
-	do { \
-        if (buffer.clone == false) { \
-			kfree(buffer.buf); \
-			buffer.buf_size = 0; \
-			buffer.data_length = 0; \
-		} \
-	} while (0)
-
-#define MAX(a, b) \
-	({__typeof__(a) _a = (a); \
-	__typeof__(b) _b = (b); \
-	_a > _b ? _a : _b; })
-
-#define MIN(a, b) \
-	({__typeof__(a) _a = (a); \
-	__typeof__(b) _b = (b); \
-	_a < _b ? _a : _b; })
-
-#define STR(x) #x
-
-#define CONCAT(a, b) a##b
-
-#define TOUCH_REPORT_CONFIG_SIZE 128
-
-#define DTAP_DETECT     0x01
-#define SWIPE_DETECT    0x02
-#define TRIANGLE_DETECT 0x03
-#define CIRCLE_DETECT   0x04
-#define VEE_DETECT      0x05
-#define HEART_DETECT    0x07
-#define UNICODE_DETECT  0x08
-#define STAP_DETECT     0x10
-#define M_UNICODE       0x6d
-#define S_UNICODE       0x73
-#define W_UNICODE       0x77
-
-#define TOUCH_HOLD_DOWN 0x80
-#define TOUCH_HOLD_UP   0x81
-
-enum test_item_bit {
-	TYPE_TRX_SHORT          = 1,
-	TYPE_TRX_OPEN           = 2,
-	TYPE_TRXGND_SHORT       = 3,
-	TYPE_FULLRAW_CAP        = 5,
-	TYPE_DELTA_NOISE        = 10,
-	TYPE_HYBRIDRAW_CAP      = 18,
-	TYPE_RAW_CAP            = 22,
-	TYPE_TREXSHORT_CUSTOM   = 25,
-	TYPE_HYBRIDABS_DIFF_CBC = 26,
-	TYPE_HYBRIDABS_NOSIE    = 29,
-	TYPE_HYBRIDRAW_CAP_WITH_AD  = 47,
-};
-
-enum touch_status {
-	LIFT = 0,
-	FINGER = 1,
-	GLOVED_FINGER = 2,
-	NOP = -1,
-};
-
-enum touch_report_code {
-	TOUCH_END = 0,
-	TOUCH_FOREACH_ACTIVE_OBJECT,
-	TOUCH_FOREACH_OBJECT,
-	TOUCH_FOREACH_END,
-	TOUCH_PAD_TO_NEXT_BYTE,
-	TOUCH_TIMESTAMP,
-	TOUCH_OBJECT_N_INDEX,
-	TOUCH_OBJECT_N_CLASSIFICATION,
-	TOUCH_OBJECT_N_X_POSITION,
-	TOUCH_OBJECT_N_Y_POSITION,
-	TOUCH_OBJECT_N_Z,
-	TOUCH_OBJECT_N_X_WIDTH,
-	TOUCH_OBJECT_N_Y_WIDTH,
-	TOUCH_OBJECT_N_TX_POSITION_TIXELS,
-	TOUCH_OBJECT_N_RX_POSITION_TIXELS,
-	TOUCH_0D_BUTTONS_STATE,
-	TOUCH_GESTURE_DOUBLE_TAP,
-	TOUCH_FRAME_RATE,
-	TOUCH_POWER_IM,
-	TOUCH_CID_IM,
-	TOUCH_RAIL_IM,
-	TOUCH_CID_VARIANCE_IM,
-	TOUCH_NSM_FREQUENCY,
-	TOUCH_NSM_STATE,
-	TOUCH_NUM_OF_ACTIVE_OBJECTS,
-	TOUCH_NUM_OF_CPU_CYCLES_USED_SINCE_LAST_FRAME,
-	TOUCH_TUNING_GAUSSIAN_WIDTHS                    = 0x80,
-	TOUCH_TUNING_SMALL_OBJECT_PARAMS,
-	TOUCH_TUNING_0D_BUTTONS_VARIANCE,
-	TOUCH_REPORT_GESTURE_SWIPE                      = 193,
-	TOUCH_REPORT_GESTURE_CIRCLE                     = 194,
-	TOUCH_REPORT_GESTURE_UNICODE                    = 195,
-	TOUCH_REPORT_GESTURE_VEE                        = 196,
-	TOUCH_REPORT_GESTURE_TRIANGLE                   = 197,
-	TOUCH_REPORT_GESTURE_INFO                       = 198,
-	TOUCH_REPORT_GESTURE_COORDINATE                 = 199,
-	TOUCH_REPORT_CUSTOMER_GRIP_INFO                 = 203,
-};
-
-enum module_type {
-	TCM_TOUCH           = 0,
-	TCM_DEVICE          = 1,
-	TCM_TESTING         = 2,
-	TCM_REFLASH         = 3,
-	TCM_RECOVERY        = 4,
-	TCM_ZEROFLASH       = 5,
-	TCM_DIAGNOSTICS     = 6,
-	TCM_LAST,
-};
-
-enum boot_mode {
-	MODE_APPLICATION        = 0x01,
-	MODE_HOST_DOWNLOAD      = 0x02,
-	MODE_BOOTLOADER         = 0x0b,
-	MODE_TDDI_BOOTLOADER    = 0x0c,
-};
-
-enum boot_status {
-	BOOT_STATUS_OK                      = 0x00,
-	BOOT_STATUS_BOOTING                 = 0x01,
-	BOOT_STATUS_APP_BAD_DISPLAY_CRC     = 0xfc,
-	BOOT_STATUS_BAD_DISPLAY_CONFIG      = 0xfd,
-	BOOT_STATUS_BAD_APP_FIRMWARE        = 0xfe,
-	BOOT_STATUS_WARM_BOOT               = 0xff,
-};
-
-enum app_status {
-	APP_STATUS_OK               = 0x00,
-	APP_STATUS_BOOTING          = 0x01,
-	APP_STATUS_UPDATING         = 0x02,
-	APP_STATUS_BAD_APP_CONFIG   = 0xff,
-};
-
-enum firmware_mode {
-	FW_MODE_BOOTLOADER  = 0,
-	FW_MODE_APPLICATION = 1,
-};
-
-enum dynamic_config_id {
-	DC_UNKNOWN = 0x00,
-	DC_NO_DOZE,
-	DC_DISABLE_NOISE_MITIGATION,
-	DC_INHIBIT_FREQUENCY_SHIFT,
-	DC_REQUESTED_FREQUENCY,
-	DC_DISABLE_HSYNC,
-	DC_REZERO_ON_EXIT_DEEP_SLEEP,
-	DC_CHARGER_CONNECTED,
-	DC_NO_BASELINE_RELAXATION,
-	DC_IN_WAKEUP_GESTURE_MODE,
-	DC_STIMULUS_FINGERS,
-	DC_GRIP_SUPPRESSION_ENABLED,
-	DC_ENABLE_THICK_GLOVE,
-	DC_ENABLE_GLOVE,
-	DC_PS_STATUS = 0xC1,
-	DC_DISABLE_ESD = 0xC2,
-	DC_FREQUENCE_HOPPING = 0xD2,
-	DC_TOUCH_HOLD = 0xD4,
-	DC_ERROR_PRIORITY = 0xD5,
-	DC_NOISE_LENGTH = 0xD6,
-	DC_GRIP_CONDTION_ZONE = 0xD8,
-	DC_GRIP_SPECIAL_ZONE_X = 0xD9,
-	DC_GRIP_SPECIAL_ZONE_Y = 0xDA,
-	DC_GRIP_SPECIAL_ZONE_L = 0xDB,
-	DC_GRIP_ROATE_TO_HORIZONTAL_LEVEL = 0xDC,
-	DC_DARK_ZONE_ENABLE = 0xDD,
-	DC_GRIP_ENABLED = 0xDE,
-	DC_GRIP_DARK_ZONE_X = 0xDF,
-	DC_GRIP_DARK_ZONE_Y = 0xE0,
-	DC_GRIP_ABS_DARK_X = 0xE1,
-	DC_GRIP_ABS_DARK_Y = 0xE2,
-	DC_GRIP_ABS_DARK_U = 0xE3,
-	DC_GRIP_ABS_DARK_V = 0xE4,
-	DC_GRIP_ABS_DARK_SEL = 0xE5,
-	DC_SET_REPORT_FRE = 0xE6,
-	DC_GESTURE_MASK = 0xFE,
-	DC_LOW_TEMP_ENABLE = 0xFD,
-};
-
-enum command {
-	CMD_NONE                            = 0x00,
-	CMD_CONTINUE_WRITE                  = 0x01,
-	CMD_IDENTIFY                        = 0x02,
-	CMD_RESET                           = 0x04,
-	CMD_ENABLE_REPORT                   = 0x05,
-	CMD_DISABLE_REPORT                  = 0x06,
-	CMD_GET_BOOT_INFO                   = 0x10,
-	CMD_ERASE_FLASH                     = 0x11,
-	CMD_WRITE_FLASH                     = 0x12,
-	CMD_READ_FLASH                      = 0x13,
-	CMD_RUN_APPLICATION_FIRMWARE        = 0x14,
-	CMD_SPI_MASTER_WRITE_THEN_READ      = 0x15,
-	CMD_REBOOT_TO_ROM_BOOTLOADER        = 0x16,
-	CMD_RUN_BOOTLOADER_FIRMWARE         = 0x1f,
-	CMD_GET_APPLICATION_INFO            = 0x20,
-	CMD_GET_STATIC_CONFIG               = 0x21,
-	CMD_SET_STATIC_CONFIG               = 0x22,
-	CMD_GET_DYNAMIC_CONFIG              = 0x23,
-	CMD_SET_DYNAMIC_CONFIG              = 0x24,
-	CMD_GET_TOUCH_REPORT_CONFIG         = 0x25,
-	CMD_SET_TOUCH_REPORT_CONFIG         = 0x26,
-	CMD_REZERO                          = 0x27,
-	CMD_COMMIT_CONFIG                   = 0x28,
-	CMD_DESCRIBE_DYNAMIC_CONFIG         = 0x29,
-	CMD_PRODUCTION_TEST                 = 0x2a,
-	CMD_SET_CONFIG_ID                   = 0x2b,
-	CMD_ENTER_DEEP_SLEEP                = 0x2c,
-	CMD_EXIT_DEEP_SLEEP                 = 0x2d,
-	CMD_GET_TOUCH_INFO                  = 0x2e,
-	CMD_GET_DATA_LOCATION               = 0x2f,
-	CMD_DOWNLOAD_CONFIG                 = 0xc0,
-	CMD_GET_NSM_INFO                    = 0xc3,
-	CMD_EXIT_ESD                        = 0xc4,
-};
-
-enum status_code {
-	STATUS_IDLE                     = 0x00,
-	STATUS_OK                       = 0x01,
-	STATUS_BUSY                     = 0x02,
-	STATUS_CONTINUED_READ           = 0x03,
-	STATUS_RECEIVE_BUFFER_OVERFLOW  = 0x0c,
-	STATUS_PREVIOUS_COMMAND_PENDING = 0x0d,
-	STATUS_NOT_IMPLEMENTED          = 0x0e,
-	STATUS_ERROR                    = 0x0f,
-	STATUS_INVALID                  = 0xff,
-};
-
-enum report_type {
-	REPORT_IDENTIFY     = 0x10,
-	REPORT_TOUCH        = 0x11,
-	REPORT_DELTA        = 0x12,
-	REPORT_RAW          = 0x13,
-	REPORT_DEBUG        = 0x14,
-	REPORT_LOG          = 0x9f,
-	REPORT_TOUCH_HOLD   = 0xa0,
-};
-
-enum command_status {
-	CMD_IDLE    = 0,
-	CMD_BUSY    = 1,
-	CMD_ERROR   = -1,
-};
-
-enum flash_area {
-	BOOTLOADER = 0,
-	BOOT_CONFIG,
-	APP_FIRMWARE,
-	APP_CONFIG,
-	DISP_CONFIG,
-	CUSTOM_OTP,
-	CUSTOM_LCM,
-	CUSTOM_OEM,
-	PPDT,
-};
-
-enum flash_data {
-	LCM_DATA = 1,
-	OEM_DATA,
-	PPDT_DATA,
-};
-
-struct syna_tcm_buffer {
-	bool clone;
-	unsigned char *buf;
-	unsigned int buf_size;
-	unsigned int data_length;
-	struct mutex buf_mutex;
-};
-
-struct syna_tcm_report {
-	unsigned char id;
-	struct syna_tcm_buffer buffer;
-};
-
-struct syna_tcm_identification {
-	unsigned char version;
-	unsigned char mode;
-	unsigned char part_number[16];
-	unsigned char build_id[4];
-	unsigned char max_write_size[2];
-};
-
-struct syna_tcm_boot_info {
-	unsigned char version;
-	unsigned char status;
-	unsigned char asic_id[2];
-	unsigned char write_block_size_words;
-	unsigned char erase_page_size_words[2];
-	unsigned char max_write_payload_size[2];
-	unsigned char last_reset_reason;
-	unsigned char pc_at_time_of_last_reset[2];
-	unsigned char boot_config_start_block[2];
-	unsigned char boot_config_size_blocks[2];
-	unsigned char display_config_start_block[4];
-	unsigned char display_config_length_blocks[2];
-	unsigned char backup_display_config_start_block[4];
-	unsigned char backup_display_config_length_blocks[2];
-	unsigned char custom_otp_start_block[2];
-	unsigned char custom_otp_length_blocks[2];
-};
-
-struct syna_tcm_app_info {
-	unsigned char version[2];
-	unsigned char status[2];
-	unsigned char static_config_size[2];
-	unsigned char dynamic_config_size[2];
-	unsigned char app_config_start_write_block[2];
-	unsigned char app_config_size[2];
-	unsigned char max_touch_report_config_size[2];
-	unsigned char max_touch_report_payload_size[2];
-	unsigned char customer_config_id[16];
-	unsigned char max_x[2];
-	unsigned char max_y[2];
-	unsigned char max_objects[2];
-	unsigned char num_of_buttons[2];
-	unsigned char num_of_image_rows[2];
-	unsigned char num_of_image_cols[2];
-	unsigned char has_hybrid_data[2];
-};
-
-struct syna_tcm_touch_info {
-	unsigned char image_2d_scale_factor[4];
-	unsigned char image_0d_scale_factor[4];
-	unsigned char hybrid_x_scale_factor[4];
-	unsigned char hybrid_y_scale_factor[4];
-};
-
-struct syna_tcm_message_header {
-	unsigned char marker;
-	unsigned char code;
-	unsigned char length[2];
-};
-
-struct input_params {
-	unsigned int max_x;
-	unsigned int max_y;
-	unsigned int max_objects;
-};
-
-
-struct object_data {
-	unsigned char status;
-	unsigned int x_pos;
-	unsigned int y_pos;
-	unsigned int x_width;
-	unsigned int y_width;
-	unsigned int z;
-	unsigned int tx_pos;
-	unsigned int rx_pos;
-	unsigned int exwidth;
-	unsigned int eywidth;
-	unsigned int xeratio;
-	unsigned int yeratio;
-};
-
-struct touch_data {
-	struct object_data *object_data;
-	unsigned char data_point[24]; /*6 points*/
-	unsigned char extra_gesture_info[6];
-	unsigned int timestamp;
-	unsigned int buttons_state;
-	unsigned int gesture_double_tap;
-	unsigned int lpwg_gesture;
-	unsigned int frame_rate;
-	unsigned int power_im;
-	unsigned int cid_im;
-	unsigned int rail_im;
-	unsigned int cid_variance_im;
-	unsigned int nsm_frequency;
-	unsigned int nsm_state;
-	unsigned int num_of_active_objects;
-	unsigned int num_of_cpu_cycles;
-};
-
-struct touch_hcd {
-	bool report_touch;
-	unsigned int max_objects;
-	struct mutex report_mutex;
-	struct touch_data touch_data;
-	struct syna_tcm_buffer out;
-	struct syna_tcm_buffer resp;
-};
-
-struct reflash_hcd {
-	bool disp_cfg_update;
-	unsigned int image_size;
-	unsigned int page_size;
-	unsigned int write_block_size;
-	unsigned int max_write_payload_size;
-};
-
-struct syna_tcm_test {
-	unsigned int num_of_reports;
-	unsigned char report_type;
-	unsigned int report_index;
-	struct syna_tcm_buffer report;
-	struct syna_tcm_buffer test_resp;
-	struct syna_tcm_buffer test_out;
-};
-
-struct syna_dc_in_driver {
-	uint16_t g_condtion_zone;
-	uint16_t g_special_zone_x;
-	uint16_t g_special_zone_y;
-	uint16_t g_special_zone_l;
-	uint16_t g_roate_hori_level;
-	uint16_t g_dark_zone_enable;
-	uint16_t g_grip_enabled;
-	uint16_t g_dark_zone_x;
-	uint16_t g_dark_zone_y;
-	uint16_t g_abs_dark_x;
-	uint16_t g_abs_dark_y;
-	uint16_t g_abs_dark_u;
-	uint16_t g_abs_dark_v;
-	uint16_t g_abs_dark_sel;
-};
-
-#define FIRMWARE_MODE_BL_MAX 2
-#define FPS_REPORT_NUM 6
-#define ERROR_STATE_MAX 3
-#define FWUPDATE_BL_MAX 3
-#define FW_BUF_SIZE             (256 * 1024)
-
-struct syna_tcm_data {
-	struct hw_resource *hw_res;
-	struct touch_hcd *touch_hcd;
-	struct synaptics_proc_operations *syna_ops;
-	struct health_info health_info;
-
-	/*for syna async work*/
-	struct completion resume_complete;
-	/*completion for control fw update*/
-	suspend_resume_state suspend_state;
-	bool in_test_process;
-	bool first_sync_flag;
-	bool boot_flag;
-	struct work_struct     async_work;
-	struct workqueue_struct *async_workqueue;
-
-	struct workqueue_struct *helper_workqueue;
-	struct work_struct helper_work;
-
-	struct completion      response_complete;
-	struct completion      report_complete;
-
-#ifdef EXTERNAL_DEBUG_LOGGING
-	struct list_head frame_fifo_queue;
-	wait_queue_head_t wait_frame;
-	unsigned int fifo_remaining_frame;
-	unsigned char report_to_queue[REPORT_TYPES];
-	struct mutex fifo_mutex;
-	struct syna_tcm_buffer external_buf;
-#endif
-
-	atomic_t command_status;
-	char *ihex_name;
-	int *in_suspend;
-	u16 default_noise_length;
-	uint8_t touch_direction;
-	int display_refresh_rate;
-	bool game_mode;
-
-	unsigned short ubl_addr;
-	u32 trigger_reason;
-	unsigned char command;
-	unsigned char report_code;
-	unsigned int read_length;
-	unsigned int payload_length;
-	unsigned int rd_chunk_size;
-	unsigned int wr_chunk_size;
-	unsigned int app_status;
-
-	struct mutex reset_mutex;
-	struct mutex rw_mutex;
-	struct mutex command_mutex;
-	struct mutex identify_mutex;
-
-	struct syna_tcm_buffer in;
-	struct syna_tcm_buffer out;
-	struct syna_tcm_buffer resp;
-	struct syna_tcm_buffer temp;
-	struct syna_tcm_buffer config;
-	struct syna_tcm_buffer default_config;
-	struct syna_tcm_report report;
-	struct syna_tcm_app_info app_info;
-	struct syna_tcm_boot_info boot_info;
-	struct syna_tcm_touch_info touch_info;
-	struct syna_tcm_identification id_info;
-
-	int tp_index;
-	struct monitor_data    *monitor_data;                /*health monitor data*/
-	uint8_t *raw_data; /*auto test data*/
-	uint32_t raw_data_size; /*auto test data*/
-	uint8_t  *data_buf;
-	uint32_t data_buf_size;
-	uint16_t game_rate;
-	struct resolution_info *chip_resolution_info;
-	struct syna_dc_in_driver dc_cfg;
-	bool chip_grip_en;
-	uint16_t default_gesture_mask;
-	uint16_t gesture_mask;
-	int freq_point;
-	unsigned int obj_attention;
-	bool *loading_fw;
-	unsigned int firmware_mode_count;
-	unsigned int upload_flag;
-	unsigned int error_state_count;
-	u8 *g_fw_buf;
-	size_t g_fw_len;
-	bool g_fw_sta;
-	int	probe_done;
-	bool *fw_update_app_support;
-	int fwupdate_bootloader;
-	bool switch_game_rate_support;
-	unsigned int fps_report_rate_num;
-	u32 fps_report_rate_array[FPS_REPORT_NUM];
-	/*temperatue data*/
-	u32 syna_tempepratue[2];
-	unsigned int syna_low_temp_enable;
-	unsigned int syna_low_temp_disable;
-	bool snr_read_support;
-	struct touchpanel_snr *snr;
-	/*normal config for oplus grip*/
-	int normal_config_version;
-	int gesture_state;
-	bool black_gesture_indep;
-	int block_delay_us;
-	int byte_delay_us;
-};
-
-struct device_hcd {
-	dev_t dev_num;
-	bool raw_mode;
-	bool concurrent;
-	unsigned int ref_count;
-	int irq;
-	int flag;
-	struct cdev char_dev;
-	struct class *class;
-	struct device *device;
-	struct mutex extif_mutex;
-	struct syna_tcm_buffer out;
-	struct syna_tcm_buffer resp;
-	struct syna_tcm_buffer report;
-	struct syna_tcm_data *tcm_info;
-	int (*reset)(void *chip_data);
-	int (*write_message)(struct syna_tcm_data *tcm_info,
-			     unsigned char command, unsigned char *payload,
-			     unsigned int length, unsigned char **resp_buf,
-			     unsigned int *resp_buf_size, unsigned int *resp_length,
-			     unsigned int polling_delay_ms);
-	int (*read_message)(struct syna_tcm_data *tcm_info, unsigned char *in_buf,
-			    unsigned int length);
-	int (*report_touch)(struct syna_tcm_data *tcm_info);
-	int tp_index;
-	int rmidev_major_num;
-};
-
-#ifdef EXTERNAL_DEBUG_LOGGING
-struct syna_tcm_ioctl_data {
-	unsigned int data_length;
-	unsigned int buf_size;
-	unsigned char __user *buf;
-};
-void device_update_report_queue(struct syna_tcm_data *tcm_info,
-		unsigned char code, struct syna_tcm_buffer *pevent_data);
-#endif
-
-static inline int syna_tcm_realloc_mem(struct syna_tcm_buffer *buffer,
-				       unsigned int size)
-{
-	int retval;
-	unsigned char *temp;
-
-	if (size > buffer->buf_size) {
-		temp = buffer->buf;
-
-		buffer->buf = tp_kzalloc(size, GFP_KERNEL);
-
-		if (!(buffer->buf)) {
-			TPD_INFO("%s: Failed to allocate memory\n", __func__);
-			buffer->buf = temp;
-			return -ENOMEM;
-		}
-
-		retval = tp_memcpy(buffer->buf, size, temp, buffer->buf_size, buffer->buf_size);
-
-		if (retval < 0) {
-			TPD_INFO("%s: Failed to copy data\n", __func__);
-			tp_kfree((void **)&temp);
-			buffer->buf_size = size;
-			return retval;
-		}
-
-		tp_kfree((void **)&temp);
-		buffer->buf_size = size;
-	}
-
-	return 0;
-}
-
-static inline int syna_tcm_alloc_mem(struct syna_tcm_buffer *buffer,
-				     unsigned int size)
-{
-	if (size > buffer->buf_size) {
-		tp_kfree((void **)&buffer->buf);
-		buffer->buf = tp_kzalloc(size, GFP_KERNEL);
-
-		if (!(buffer->buf)) {
-			TPD_INFO("%s: Failed to allocate memory, size %d\n", __func__, size);
-			buffer->buf_size = 0;
-			buffer->data_length = 0;
-			return -ENOMEM;
-		}
-
-		buffer->buf_size = size;
-	}
-
-	memset(buffer->buf, 0, buffer->buf_size);
-	buffer->data_length = 0;
-
-	return 0;
-}
-
-
-static inline unsigned int ceil_div(unsigned int dividend, unsigned divisor)
-{
-	return (dividend + divisor - 1) / divisor;
-}
-
-/*int syna_tcm_rmi_read(struct syna_tcm_data *tcm_info,
-		      unsigned short addr, unsigned char *data, unsigned int length);
-
-int syna_tcm_rmi_write(struct syna_tcm_data *tcm_info,
-		       unsigned short addr, unsigned char *data, unsigned int length);
-*/
-extern void tp_fw_auto_reset_handle(struct touchpanel_data *ts);
-
-struct syna_support_grip_zone {
-	char name[GRIP_TAG_SIZE];
-	int (*handle_func)(void *chip_data, struct grip_zone_area *grip_zone, bool enable);
-};
-
-#endif  /*_SYNAPTICS_TCM_CORE_H_*/
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/synaptics_tcm_device_S3910.c b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/synaptics_tcm_device_S3910.c
deleted file mode 100755
index f45aa0f7..00000000
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/Syna_tcm_S3910/synaptics_tcm_device_S3910.c
+++ /dev/null
@@ -1,1123 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) 2018-2020 Oplus. All rights reserved.
- */
-
-#include 
-#include 
-#include 
-#include 
-#include "synaptics_tcm_S3910.h"
-
-#define CHAR_DEVICE_NAME "tcm"
-#define PLATFORM_DRIVER_NAME "synaptics_tcm"
-#define CONCURRENT true
-
-#define DEVICE_IOC_MAGIC 's'
-#define DEVICE_IOC_RESET _IO(DEVICE_IOC_MAGIC, 0) /* 0x00007300 */
-#define DEVICE_IOC_IRQ _IOW(DEVICE_IOC_MAGIC, 1, int) /* 0x40047301 */
-#define DEVICE_IOC_RAW _IOW(DEVICE_IOC_MAGIC, 2, int) /* 0x40047302 */
-#define DEVICE_IOC_CONCURRENT _IOW(DEVICE_IOC_MAGIC, 3, int) /* 0x40047303 */
-
-#ifdef EXTERNAL_DEBUG_LOGGING
-#define STD_GET_FRAME_ID		(0x15)
-#define STD_SEND_MESSAGE_ID		(0x16)
-#define STD_SET_REPORTS_ID		(0x17)
-#define STD_CLEAN_OUT_FRAMES_ID (0x19)
-
-#define DEVICE_IOC_GET_FRAME _IOR(DEVICE_IOC_MAGIC, STD_GET_FRAME_ID, struct syna_tcm_ioctl_data *) /* 0x80087315 */
-#define DEVICE_IOC_SEND_MESSAGE _IOW(DEVICE_IOC_MAGIC, STD_SEND_MESSAGE_ID, struct syna_tcm_ioctl_data *) /* 0x40087316 */
-#define DEVICE_IOC_SET_REPORTS _IOW(DEVICE_IOC_MAGIC, STD_SET_REPORTS_ID, struct syna_tcm_ioctl_data *) /* 0x40087317 */
-#define DEVICE_IOC_CLEAN_OUT_FRAMES _IOW(DEVICE_IOC_MAGIC, STD_CLEAN_OUT_FRAMES_ID, struct syna_tcm_ioctl_data *) /* 0x40087319 */
-
-#define FIFO_QUEUE_MAX_FRAMES	(240)
-
-struct fifo_queue {
-	struct list_head next;
-	unsigned char *fifo_data;
-	unsigned int data_length;
-};
-#endif
-
-static struct device_hcd *g_device_hcd[TP_SUPPORT_MAX] = {NULL};
-
-static void device_capture_touch_report(struct device_hcd *device_hcd,
-					unsigned int count)
-{
-	int retval;
-	unsigned char id;
-	unsigned int idx;
-	unsigned int size;
-	unsigned char *data;
-	struct syna_tcm_data *tcm_info = device_hcd->tcm_info;
-	static bool report;
-	static unsigned int offset;
-	static unsigned int remaining_size;
-
-	if (count < 2) {
-		return;
-	}
-
-	data = &device_hcd->resp.buf[0];
-
-	if (data[0] != MESSAGE_MARKER) {
-		return;
-	}
-
-	id = data[1];
-	size = 0;
-
-	LOCK_BUFFER(device_hcd->report);
-
-	switch (id) {
-	case REPORT_TOUCH:
-		if (count >= 4) {
-			remaining_size = le2_to_uint(&data[2]);
-
-		} else {
-			report = false;
-			goto exit;
-		}
-
-		retval = syna_tcm_alloc_mem(&device_hcd->report, remaining_size);
-
-		if (retval < 0) {
-			pr_err("Failed to allocate memory for device_hcd->report.buf\n");
-			report = false;
-			goto exit;
-		}
-
-		idx = 4;
-		size = count - idx;
-		offset = 0;
-		report = true;
-		break;
-
-	case STATUS_CONTINUED_READ:
-		if (report == false) {
-			goto exit;
-		}
-
-		if (count >= 2) {
-			idx = 2;
-			size = count - idx;
-		}
-
-		break;
-
-	default:
-		goto exit;
-	}
-
-	if (size) {
-		size = MIN(size, remaining_size);
-		retval = tp_memcpy(&device_hcd->report.buf[offset],
-				   device_hcd->report.buf_size - offset,
-				   &data[idx],
-				   count - idx,
-				   size);
-
-		if (retval < 0) {
-			pr_err("Failed to copy touch report data\n");
-			report = false;
-			goto exit;
-
-		} else {
-			offset += size;
-			remaining_size -= size;
-			device_hcd->report.data_length += size;
-		}
-	}
-
-	if (remaining_size) {
-		goto exit;
-	}
-
-	LOCK_BUFFER(tcm_info->report.buffer);
-
-	tcm_info->report.buffer.buf = device_hcd->report.buf;
-	tcm_info->report.buffer.buf_size = device_hcd->report.buf_size;
-	tcm_info->report.buffer.data_length = device_hcd->report.data_length;
-
-	device_hcd->report_touch(tcm_info);
-
-	UNLOCK_BUFFER(tcm_info->report.buffer);
-
-	report = false;
-
-exit:
-	UNLOCK_BUFFER(device_hcd->report);
-
-	return;
-}
-
-static int device_capture_touch_report_config(struct device_hcd *device_hcd,
-		unsigned int count)
-{
-	int retval;
-	unsigned int size;
-	unsigned char *data;
-	struct syna_tcm_data *tcm_info = device_hcd->tcm_info;
-
-	if (device_hcd->raw_mode) {
-		if (count < 3) {
-			pr_err("Invalid write data\n");
-			return -EINVAL;
-		}
-
-		size = le2_to_uint(&device_hcd->out.buf[1]);
-
-		if (count - 3 < size) {
-			pr_err("Incomplete write data\n");
-			return -EINVAL;
-		}
-
-		if (!size) {
-			return 0;
-		}
-
-		data = &device_hcd->out.buf[3];
-
-	} else {
-		size = count - 1;
-
-		if (!size) {
-			return 0;
-		}
-
-		data = &device_hcd->out.buf[1];
-	}
-
-	LOCK_BUFFER(tcm_info->config);
-
-	retval = syna_tcm_alloc_mem(&tcm_info->config, size);
-
-	if (retval < 0) {
-		pr_err("Failed to allocate memory for tcm_info->config.buf\n");
-		UNLOCK_BUFFER(tcm_info->config);
-		return retval;
-	}
-
-	retval = tp_memcpy(tcm_info->config.buf,
-			   tcm_info->config.buf_size,
-			   data,
-			   size,
-			   size);
-
-	if (retval < 0) {
-		pr_err("Failed to copy touch report config data\n");
-		UNLOCK_BUFFER(tcm_info->config);
-		return retval;
-	}
-
-	tcm_info->config.data_length = size;
-
-	UNLOCK_BUFFER(tcm_info->config);
-
-	return 0;
-}
-
-#ifdef EXTERNAL_DEBUG_LOGGING
-static int device_ioctl_get_frame(struct device_hcd *tcm_hcd,
-		const unsigned char *ubuf_ptr, unsigned int buf_size,
-		unsigned int *frame_size)
-{
-	int retval = 0;
-	int timeout = 0;
-	unsigned char timeout_data[4] = {0};
-	struct fifo_queue *pfifo_data = NULL;
-	struct syna_tcm_data *tcm_info = tcm_hcd->tcm_info;
-
-	if (buf_size < sizeof(timeout_data)) {
-		retval = -EINVAL;
-		goto exit;
-	}
-	retval = copy_from_user(timeout_data, ubuf_ptr, sizeof(timeout_data));
-	if (retval) {
-		retval = -EBADE;
-		goto exit;
-	}
-
-	/* get the waiting duration */
-	timeout = le4_to_uint(&timeout_data[0]);
-	if (list_empty(&tcm_info->frame_fifo_queue)) {
-		retval = wait_event_interruptible_timeout(tcm_info->wait_frame,
-				(tcm_info->fifo_remaining_frame > 0),
-				msecs_to_jiffies(timeout));
-		if (retval == 0) {
-			retval = -ETIMEDOUT;
-			*frame_size = 0;
-			goto exit;
-		}
-	}
-
-	/* confirm the queue status */
-	if (list_empty(&tcm_info->frame_fifo_queue)) {
-		pr_err("Is queue empty? The remaining frame = %d\n",
-			tcm_info->fifo_remaining_frame);
-		retval = -ENODATA;
-		goto exit;
-	}
-
-	mutex_lock(&tcm_info->fifo_mutex);
-
-	pfifo_data = list_first_entry(&tcm_info->frame_fifo_queue,
-			struct fifo_queue, next);
-
-	if (pfifo_data == NULL) {
-		pr_err("pfifo_data is NULL error\n");
-		mutex_unlock(&tcm_info->fifo_mutex);
-		retval = -ENODATA;
-		goto exit;
-	}
-
-	pr_info("Pop data from the queue, data length = %d\n",
-		pfifo_data->data_length);
-
-	if (buf_size >= pfifo_data->data_length) {
-		retval = copy_to_user((void *)ubuf_ptr,
-				pfifo_data->fifo_data,
-				pfifo_data->data_length);
-		if (retval) {
-			pr_info("Fail to copy data to user space, size:%d\n", retval);
-			retval = -EBADE;
-		}
-
-		*frame_size = pfifo_data->data_length;
-
-	} else {
-		pr_err("No enough space for data copy, buf_size:%d data:%d\n",
-			buf_size, pfifo_data->data_length);
-
-		mutex_unlock(&tcm_info->fifo_mutex);
-		retval = -EOVERFLOW;
-		goto exit;
-	}
-
-	pr_info("From FIFO: (0x%02x, 0x%02x, 0x%02x, 0x%02x)\n",
-		pfifo_data->fifo_data[0], pfifo_data->fifo_data[1],
-		pfifo_data->fifo_data[2], pfifo_data->fifo_data[3]);
-
-	if (retval >= 0)
-		retval = pfifo_data->data_length;
-
-	list_del(&pfifo_data->next);
-	kfree(pfifo_data->fifo_data);
-	kfree(pfifo_data);
-	if (tcm_info->fifo_remaining_frame != 0)
-		tcm_info->fifo_remaining_frame--;
-
-	mutex_unlock(&tcm_info->fifo_mutex);
-
-exit:
-	return retval;
-}
-
-static void device_clean_queue(struct device_hcd *tcm_hcd)
-{
-	struct fifo_queue *pfifo_data = NULL;
-
-	struct syna_tcm_data *tcm_info = tcm_hcd->tcm_info;
-
-	mutex_lock(&tcm_info->fifo_mutex);
-
-	while (!list_empty(&tcm_info->frame_fifo_queue)) {
-		pfifo_data = list_first_entry(&tcm_info->frame_fifo_queue,
-				struct fifo_queue, next);
-		if (pfifo_data == NULL) {
-			pr_err("pfifo_data is NULL error\n");
-			mutex_unlock(&tcm_info->fifo_mutex);
-			return;
-		}
-
-		list_del(&pfifo_data->next);
-		kfree(pfifo_data->fifo_data);
-		kfree(pfifo_data);
-		if (tcm_info->fifo_remaining_frame != 0)
-			tcm_info->fifo_remaining_frame--;
-	}
-
-	pr_info("Queue cleaned, frame: %d\n", tcm_info->fifo_remaining_frame);
-
-	mutex_unlock(&tcm_info->fifo_mutex);
-}
-
-static int device_insert_fifo(struct syna_tcm_data *tcm_info,
-		unsigned char *buf_ptr, unsigned int length)
-{
-	int retval = 0;
-	struct fifo_queue *pfifo_data = NULL;
-	struct fifo_queue *pfifo_data_temp = NULL;
-	static int pre_remaining_frames = -1;
-
-	mutex_lock(&tcm_info->fifo_mutex);
-
-	/* check queue buffer limit */
-	if (tcm_info->fifo_remaining_frame >= FIFO_QUEUE_MAX_FRAMES) {
-		if (tcm_info->fifo_remaining_frame != pre_remaining_frames)
-			pr_info("Reached %d and drop FIFO first frame\n",
-				tcm_info->fifo_remaining_frame);
-
-		pfifo_data_temp = list_first_entry(&tcm_info->frame_fifo_queue,
-						struct fifo_queue, next);
-
-		list_del(&pfifo_data_temp->next);
-		kfree(pfifo_data_temp->fifo_data);
-		kfree(pfifo_data_temp);
-		pre_remaining_frames = tcm_info->fifo_remaining_frame;
-		tcm_info->fifo_remaining_frame--;
-	} else if (pre_remaining_frames >= FIFO_QUEUE_MAX_FRAMES) {
-		pr_info("Reached limit, dropped oldest frame, remaining:%d\n",
-			tcm_info->fifo_remaining_frame);
-		pre_remaining_frames = tcm_info->fifo_remaining_frame;
-	} else {
-		pr_info("Queued frames:%d\n",
-			tcm_info->fifo_remaining_frame);
-	}
-
-	pfifo_data = kmalloc(sizeof(*pfifo_data), GFP_KERNEL);
-	if (!(pfifo_data)) {
-		pr_err("Allocation size = %zu\n", (sizeof(*pfifo_data)));
-		retval = -ENOMEM;
-		goto exit;
-	}
-
-	pfifo_data->fifo_data = kmalloc(length, GFP_KERNEL);
-	if (!(pfifo_data->fifo_data)) {
-		pr_err("Failed to allocate memory, size = %d\n", length);
-		kfree(pfifo_data);
-		retval = -ENOMEM;
-		goto exit;
-	}
-
-	pfifo_data->data_length = length;
-
-	memcpy((void *)pfifo_data->fifo_data, (void *)buf_ptr, length);
-	/* append the data to the tail for FIFO queueing */
-	list_add_tail(&pfifo_data->next, &tcm_info->frame_fifo_queue);
-	tcm_info->fifo_remaining_frame++;
-	retval = 0;
-exit:
-	mutex_unlock(&tcm_info->fifo_mutex);
-	return retval;
-}
-
-void device_update_report_queue(struct syna_tcm_data *tcm_info,
-		unsigned char code, struct syna_tcm_buffer *pevent_data)
-{
-	int retval;
-	unsigned char *frame_buffer = NULL;
-	unsigned int frame_length = 0;
-
-	if ((pevent_data == NULL) ||
-		(pevent_data->buf == NULL)) {
-		pr_err("Returned, invalid event data pointer\n");
-		return;
-	}
-	if ((pevent_data->data_length == 0) &&
-		(tcm_info->payload_length == 0)) {
-		pr_err("Returned, invalid event data length = 0\n");
-		return;
-	}
-	pr_info("Report ID = 0x%x\n", (int)code);
-	frame_length = (tcm_info->payload_length + 3);
-	frame_buffer = &pevent_data->buf[1];
-	pr_info("The overall queuing data length = %d\n", frame_length);
-
-	retval = device_insert_fifo(tcm_info, frame_buffer, frame_length);
-	if (retval < 0) {
-		pr_err("Fail to insert data to fifo\n");
-		goto exit;
-	}
-	pr_info("Pushed to fifo: (0x%02x, 0x%02x, 0x%02x, 0x%02x)\n",
-		frame_buffer[0], frame_buffer[1],
-		frame_buffer[2], frame_buffer[3]);
-	wake_up_interruptible(&(tcm_info->wait_frame));
-
-exit:
-	return;
-}
-
-static int device_ioctl_set_reports(struct device_hcd *tcm_hcd,
-		const unsigned char *ubuf_ptr, unsigned int buf_size,
-		unsigned int report_size)
-{
-	int retval = 0;
-	unsigned char data[REPORT_TYPES] = {0};
-	unsigned int reports = 0;
-	unsigned int report_set = 0;
-
-	struct syna_tcm_data *tcm_info = tcm_hcd->tcm_info;
-
-	if (buf_size < sizeof(data)) {
-		pr_err("Invalid sync data size, buf_size:%d, expected:%d\n",
-			buf_size, (unsigned int)sizeof(data));
-		return -EINVAL;
-	}
-
-	if (report_size == 0) {
-		pr_err("Invalid written size\n");
-		return -EINVAL;
-	}
-
-	retval = copy_from_user(data, ubuf_ptr, report_size);
-	if (retval) {
-		pr_err("Fail to copy data from user space, size:%d\n", retval);
-		retval = -EBADE;
-		goto exit;
-	}
-
-	memcpy((void *)tcm_info->report_to_queue, (void *)data, REPORT_TYPES);
-	for (reports = 0 ; reports < REPORT_TYPES ; reports++) {
-		if (tcm_info->report_to_queue[reports] == EDL_ENABLE) {
-			report_set++;
-			pr_info("Set report 0x%02x for queue\n", reports);
-		}
-	}
-	pr_info("Forward %d types of reports to the Queue.\n", report_set);
-	retval = report_set;
-
-exit:
-	return retval;
-}
-
-static int device_ioctl_config_report(struct device_hcd *tcm_hcd,
-		const unsigned char *ubuf_ptr, unsigned int buf_size,
-		unsigned int *msg_size)
-{
-	int retval = 0;
-	unsigned int payload_length = 0;
-	unsigned char *data = NULL;
-	unsigned char cmd = 0;
-	struct syna_tcm_data *tcm_info = tcm_hcd->tcm_info;
-
-	if (buf_size < 2) {
-		pr_err("Invalid sync data size, buf_size:%d\n", buf_size);
-		return -EINVAL;
-	}
-
-	if (*msg_size == 0 || *msg_size < 3) {
-		pr_err("Invalid message length, msg size: %d\n", *msg_size);
-		return -EINVAL;
-	}
-	pr_info("Message size:%d\n", *msg_size);
-	data = kmalloc(*msg_size, GFP_KERNEL);
-	if (!data) {
-		pr_err("Failed to allocate memory, size = %d\n", *msg_size);
-		return -ENOMEM;
-	}
-
-	LOCK_BUFFER(tcm_hcd->out);
-
-	retval = copy_from_user(data, ubuf_ptr, *msg_size);
-	if (retval) {
-		pr_err("Fail to copy data from user space, size:%d\n", retval);
-		retval = -EBADE;
-		UNLOCK_BUFFER(tcm_hcd->out);
-		kfree(data);
-		return retval;
-	}
-	pr_info("data[0]:%d data[1]:%d data[2]:%d\n",
-			data[0], data[1], data[2]);
-
-	cmd = data[0];
-	payload_length = le2_to_uint(&data[1]);
-	if (payload_length > 0 && ((buf_size - 3) >= payload_length)) {
-		retval = syna_tcm_alloc_mem(&tcm_hcd->out, payload_length);
-		if (retval < 0) {
-			pr_err("Failed to allocate memory for testing_hcd->out.buf\n");
-			UNLOCK_BUFFER(tcm_hcd->out);
-			kfree(data);
-			return retval;
-		}
-
-		memcpy((void *)tcm_hcd->out.buf, (void *)&data[3], payload_length);
-	} else {
-		pr_err("Invaild payload length: %d, buf_size: %d\n",
-					payload_length, buf_size);
-	}
-	if (data)
-		kfree(data);
-
-	pr_info("CMD:%02x, payload_length:%d\n", cmd, payload_length);
-	if (payload_length > 0) {
-		pr_info("Payload[0]:%02x\n", tcm_hcd->out.buf[0]);
-	}
-
-	LOCK_BUFFER(tcm_hcd->resp);
-
-	retval = tcm_hcd->write_message(tcm_info,
-			cmd,
-			tcm_hcd->out.buf,
-			payload_length,
-			&tcm_hcd->resp.buf,
-			&tcm_hcd->resp.buf_size,
-			&tcm_hcd->resp.data_length,
-			0);
-	if (retval < 0) {
-		pr_err("Failed to write command %s\n",
-				STR(cmd));
-		UNLOCK_BUFFER(tcm_hcd->resp);
-		UNLOCK_BUFFER(tcm_hcd->out);
-		return retval;
-	}
-
-	UNLOCK_BUFFER(tcm_hcd->resp);
-	UNLOCK_BUFFER(tcm_hcd->out);
-	return retval;
-}
-
-static int device_ioctl_dispatch(struct device_hcd *tcm_hcd,
-		unsigned int code, const unsigned char *ubuf_ptr,
-		unsigned int ubuf_size, unsigned int *data_size)
-{
-	int retval = 0;
-	switch (code) {
-	case STD_GET_FRAME_ID:
-		pr_info("STD_GET_FRAME_ID called\n");
-		retval = device_ioctl_get_frame(tcm_hcd,
-				ubuf_ptr, ubuf_size, data_size);
-		break;
-	case STD_SEND_MESSAGE_ID:
-		pr_info("STD_SEND_MESSAGE_ID called\n");
-		retval = device_ioctl_config_report(tcm_hcd,
-				ubuf_ptr, ubuf_size, data_size);
-		break;
-	case STD_SET_REPORTS_ID:
-		pr_info("STD_SET_REPORTS_ID called\n");
-		retval = device_ioctl_set_reports(tcm_hcd,
-				ubuf_ptr, ubuf_size, *data_size);
-		break;
-	case STD_CLEAN_OUT_FRAMES_ID:
-		pr_info("STD_CLEAN_OUT_FRAMES_ID called\n");
-		device_clean_queue(tcm_hcd);
-		retval = 0;
-		break;
-	default:
-		pr_err("Unknown IOCTL operation: 0x%x\n", code);
-		return -EINVAL;
-	}
-
-	return retval;
-}
-#endif
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)
-static long device_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
-#else
-#ifdef HAVE_UNLOCKED_IOCTL
-static long device_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
-#else
-static int device_ioctl(struct inode *inp, struct file *filp, unsigned int cmd,
-			unsigned long arg)
-#endif
-#endif
-{
-	int retval = 0;
-	struct device_hcd *device_hcd  = NULL;
-	struct syna_tcm_data *tcm_info = NULL;
-
-#ifdef EXTERNAL_DEBUG_LOGGING
-	struct syna_tcm_ioctl_data ioc_data;
-	unsigned char *ptr = NULL;
-#endif
-
-	device_hcd = filp->private_data;
-	tcm_info = device_hcd->tcm_info;
-	mutex_lock(&device_hcd->extif_mutex);
-
-	switch (cmd) {
-	case DEVICE_IOC_RESET:
-		retval = device_hcd->reset(tcm_info);
-		break;
-
-	case DEVICE_IOC_IRQ:
-		if (arg == 0) {
-			if (device_hcd->flag == 1) {
-				disable_irq(device_hcd->irq);
-				device_hcd->flag = 0;
-			}
-
-		} else if (arg == 1) {
-			if (device_hcd->flag == 0) {
-				enable_irq(device_hcd->irq);
-				device_hcd->flag = 1;
-			}
-		}
-
-		break;
-
-	case DEVICE_IOC_RAW:
-		if (arg == 0) {
-			device_hcd->raw_mode = false;
-
-		} else if (arg == 1) {
-			device_hcd->raw_mode = true;
-		}
-
-		break;
-
-	case DEVICE_IOC_CONCURRENT:
-		if (arg == 0) {
-			device_hcd->concurrent = false;
-
-		} else if (arg == 1) {
-			device_hcd->concurrent = true;
-		}
-
-		break;
-#ifdef EXTERNAL_DEBUG_LOGGING
-	case DEVICE_IOC_GET_FRAME:
-	case DEVICE_IOC_SEND_MESSAGE:
-	case DEVICE_IOC_SET_REPORTS:
-	case DEVICE_IOC_CLEAN_OUT_FRAMES:
-		retval = copy_from_user(&ioc_data,
-				(void __user *) arg,
-				sizeof(struct syna_tcm_ioctl_data));
-		if (retval) {
-			pr_err("Fail to copy ioctl_data from user space, size:%d\n", retval);
-			retval = -EBADE;
-			goto exit;
-		}
-
-		ptr = ioc_data.buf;
-
-		retval = device_ioctl_dispatch(device_hcd,
-				(unsigned int)_IOC_NR(cmd),
-				(const unsigned char *)ptr,
-				ioc_data.buf_size,
-				&ioc_data.data_length);
-		if (retval < 0) {
-			if (retval != -ETIMEDOUT) {
-				pr_err("Fail to do ioctl dispatch, retval:%d\n", retval);
-			}
-			goto exit;
-		}
-
-		retval = copy_to_user((void __user *) arg,
-				&ioc_data,
-				sizeof(struct syna_tcm_ioctl_data));
-		if (retval) {
-			pr_err("Fail to update ioctl_data to user space, size:%d\n", retval);
-			retval = -EBADE;
-			goto exit;
-		}
-		break;
-#endif
-
-	default:
-		retval = -ENOTTY;
-		break;
-	}
-#ifdef EXTERNAL_DEBUG_LOGGING
-	exit:
-#endif
-	mutex_unlock(&device_hcd->extif_mutex);
-
-	return retval;
-}
-
-static loff_t device_llseek(struct file *filp, loff_t off, int whence)
-{
-	return -EINVAL;
-}
-
-static ssize_t device_read(struct file *filp, char __user *buf,
-			   size_t count, loff_t *f_pos)
-{
-	int retval;
-	struct device_hcd *device_hcd  = NULL;
-	struct syna_tcm_data *tcm_info = NULL;
-
-	if (count == 0) {
-		return 0;
-	}
-
-	device_hcd = filp->private_data;
-	tcm_info = device_hcd->tcm_info;
-
-	mutex_lock(&device_hcd->extif_mutex);
-
-	LOCK_BUFFER(device_hcd->resp);
-
-	if (device_hcd->raw_mode) {
-		retval = syna_tcm_alloc_mem(&device_hcd->resp, count);
-
-		if (retval < 0) {
-			pr_err("Failed to allocate memory for device_hcd->resp.buf\n");
-			UNLOCK_BUFFER(device_hcd->resp);
-			goto exit;
-		}
-
-		retval = device_hcd->read_message(tcm_info,
-						  device_hcd->resp.buf,
-						  count);
-
-		if (retval < 0) {
-			pr_err("Failed to read message\n");
-			UNLOCK_BUFFER(device_hcd->resp);
-			goto exit;
-		}
-
-	} else {
-		if (count != device_hcd->resp.data_length) {
-			pr_err("Invalid length information\n");
-			UNLOCK_BUFFER(device_hcd->resp);
-			retval = -EINVAL;
-			goto exit;
-		}
-	}
-
-	if (copy_to_user(buf, device_hcd->resp.buf, count)) {
-		pr_err("Failed to copy data to user space\n");
-		UNLOCK_BUFFER(device_hcd->resp);
-		retval = -EINVAL;
-		goto exit;
-	}
-
-	if (!device_hcd->concurrent) {
-		goto skip_concurrent;
-	}
-
-	if (device_hcd->report_touch == NULL) {
-		pr_err("Unable to report touch\n");
-		device_hcd->concurrent = false;
-		goto skip_concurrent;
-	}
-
-	if (device_hcd->raw_mode) {
-		device_capture_touch_report(device_hcd, count);
-	}
-
-skip_concurrent:
-	UNLOCK_BUFFER(device_hcd->resp);
-
-	retval = count;
-
-exit:
-	mutex_unlock(&device_hcd->extif_mutex);
-
-	return retval;
-}
-
-static ssize_t device_write(struct file *filp, const char __user *buf,
-			    size_t count, loff_t *f_pos)
-{
-	int retval;
-	struct device_hcd *device_hcd  = NULL;
-	struct syna_tcm_data *tcm_info = NULL;
-
-	if (count == 0) {
-		return 0;
-	}
-
-	device_hcd = filp->private_data;
-	tcm_info = device_hcd->tcm_info;
-
-	mutex_lock(&device_hcd->extif_mutex);
-
-	LOCK_BUFFER(device_hcd->out);
-
-	retval = syna_tcm_alloc_mem(&device_hcd->out, count == 1 ? count + 1 : count);
-
-	if (retval < 0) {
-		pr_err("Failed to allocate memory for device_hcd->out.buf\n");
-		UNLOCK_BUFFER(device_hcd->out);
-		goto exit;
-	}
-
-	if (copy_from_user(device_hcd->out.buf, buf, count)) {
-		pr_err("Failed to copy data from user space\n");
-		UNLOCK_BUFFER(device_hcd->out);
-		retval = -EINVAL;
-		goto exit;
-	}
-
-	LOCK_BUFFER(device_hcd->resp);
-
-	pr_info("%s: cmd 0x%x\n", __func__, device_hcd->out.buf[0]);
-
-	if (device_hcd->raw_mode) {
-		retval = device_hcd->write_message(tcm_info,
-						   device_hcd->out.buf[0],
-						   &device_hcd->out.buf[1],
-						   count == 1 ? count : count - 1,
-						   NULL,
-						   NULL,
-						   NULL,
-						   0);
-
-	} else {
-		mutex_lock(&tcm_info->reset_mutex);
-		retval = device_hcd->write_message(tcm_info,
-						   device_hcd->out.buf[0],
-						   &device_hcd->out.buf[1],
-						   count == 1 ? count : count - 1,
-						   &device_hcd->resp.buf,
-						   &device_hcd->resp.buf_size,
-						   &device_hcd->resp.data_length,
-						   0);
-		mutex_unlock(&tcm_info->reset_mutex);
-	}
-
-	if (device_hcd->out.buf[0] == CMD_ERASE_FLASH) {
-		msleep(500);
-	}
-
-	if (retval < 0) {
-		pr_err("Failed to write command 0x%02x\n",
-		       device_hcd->out.buf[0]);
-		UNLOCK_BUFFER(device_hcd->resp);
-		UNLOCK_BUFFER(device_hcd->out);
-		goto exit;
-	}
-
-	if (count && device_hcd->out.buf[0] == CMD_SET_TOUCH_REPORT_CONFIG) {
-		retval = device_capture_touch_report_config(device_hcd, count);
-
-		if (retval < 0) {
-			pr_err("Failed to capture touch report config\n");
-		}
-	}
-
-	UNLOCK_BUFFER(device_hcd->out);
-
-	if (device_hcd->raw_mode) {
-		retval = count;
-
-	} else {
-		retval = device_hcd->resp.data_length;
-	}
-
-	UNLOCK_BUFFER(device_hcd->resp);
-
-exit:
-	mutex_unlock(&device_hcd->extif_mutex);
-
-	return retval;
-}
-
-static int device_open(struct inode *inode, struct file *filp)
-{
-	int retval;
-	struct device_hcd *device_hcd =
-		container_of(inode->i_cdev, struct device_hcd, char_dev);
-
-	filp->private_data = device_hcd;
-
-	mutex_lock(&device_hcd->extif_mutex);
-
-	if (device_hcd->ref_count < 1) {
-		device_hcd->ref_count++;
-		retval = 0;
-
-	} else {
-		retval = -EACCES;
-	}
-
-	device_hcd->flag = 1;
-
-	mutex_unlock(&device_hcd->extif_mutex);
-
-	return retval;
-}
-
-static int device_release(struct inode *inode, struct file *filp)
-{
-	struct device_hcd *device_hcd =
-		container_of(inode->i_cdev, struct device_hcd, char_dev);
-
-	mutex_lock(&device_hcd->extif_mutex);
-
-	if (device_hcd->ref_count) {
-		device_hcd->ref_count--;
-	}
-
-	mutex_unlock(&device_hcd->extif_mutex);
-
-	return 0;
-}
-
-static char *device_devnode(struct device *dev, umode_t *mode)
-{
-	if (!mode) {
-		return NULL;
-	}
-
-	*mode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
-
-	return kasprintf(GFP_KERNEL, "%s/%s", PLATFORM_DRIVER_NAME,
-			 dev_name(dev));
-}
-
-static int device_create_class(struct device_hcd *device_hcd)
-{
-	if (device_hcd->class != NULL) {
-		return 0;
-	}
-
-	device_hcd->class = class_create(THIS_MODULE, PLATFORM_DRIVER_NAME);
-
-	if (IS_ERR(device_hcd->class)) {
-		pr_err("Failed to create class\n");
-		return -ENODEV;
-	}
-
-	device_hcd->class->devnode = device_devnode;
-
-	return 0;
-}
-
-static const struct file_operations device_fops = {
-	.owner = THIS_MODULE,
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)
-	.unlocked_ioctl = device_ioctl,
-#else
-#ifdef HAVE_UNLOCKED_IOCTL
-	.unlocked_ioctl = device_ioctl,
-#ifdef HAVE_COMPAT_IOCTL
-	.compat_ioctl = device_ioctl,
-#endif
-#else
-	.ioctl = device_ioctl,
-#endif
-#endif
-	.llseek = device_llseek,
-	.read = device_read,
-	.write = device_write,
-	.open = device_open,
-	.release = device_release,
-};
-
-static int device_init(struct syna_tcm_data *tcm_info)
-{
-	int retval;
-	dev_t dev_num;
-	struct device_hcd *device_hcd = NULL;
-
-	device_hcd = kzalloc(sizeof(*device_hcd), GFP_KERNEL);
-
-	if (!device_hcd) {
-		pr_err("Failed to allocate memory for device_hcd\n");
-		return -ENOMEM;
-	}
-	device_hcd->rmidev_major_num = 0;
-
-	mutex_init(&device_hcd->extif_mutex);
-	device_hcd->tp_index = tcm_info->tp_index;
-
-	device_hcd->tcm_info = tcm_info;
-	device_hcd->concurrent = CONCURRENT;
-
-	INIT_BUFFER(device_hcd->out, false);
-	INIT_BUFFER(device_hcd->resp, false);
-	INIT_BUFFER(device_hcd->report, false);
-
-	if (device_hcd->rmidev_major_num) {
-		dev_num = MKDEV(device_hcd->rmidev_major_num, 0);
-		retval = register_chrdev_region(dev_num, 1,
-						PLATFORM_DRIVER_NAME);
-
-		if (retval < 0) {
-			pr_err("Failed to register char device\n");
-			goto err_register_chrdev_region;
-		}
-
-	} else {
-		retval = alloc_chrdev_region(&dev_num, 0, 1,
-					     PLATFORM_DRIVER_NAME);
-
-		if (retval < 0) {
-			pr_err("Failed to allocate char device\n");
-			goto err_alloc_chrdev_region;
-		}
-
-		device_hcd->rmidev_major_num = MAJOR(dev_num);
-	}
-
-	device_hcd->dev_num = dev_num;
-
-	cdev_init(&device_hcd->char_dev, &device_fops);
-
-	retval = cdev_add(&device_hcd->char_dev, dev_num, 1);
-
-	if (retval < 0) {
-		pr_err("Failed to add char device\n");
-		goto err_add_chardev;
-	}
-
-	retval = device_create_class(device_hcd);
-
-	if (retval < 0) {
-		pr_err("Failed to create class\n");
-		goto err_create_class;
-	}
-
-	device_hcd->device = device_create(device_hcd->class, NULL,
-					   device_hcd->dev_num, NULL, CHAR_DEVICE_NAME"%d",
-					   MINOR(device_hcd->dev_num));
-
-	if (IS_ERR(device_hcd->device)) {
-		pr_err("Failed to create device\n");
-		retval = -ENODEV;
-		goto err_create_device;
-	}
-
-	g_device_hcd[device_hcd->tp_index] = device_hcd;
-	return 0;
-
-err_create_device:
-	class_destroy(device_hcd->class);
-
-err_create_class:
-	cdev_del(&device_hcd->char_dev);
-
-err_add_chardev:
-	unregister_chrdev_region(dev_num, 1);
-
-err_alloc_chrdev_region:
-err_register_chrdev_region:
-	RELEASE_BUFFER(device_hcd->report);
-	RELEASE_BUFFER(device_hcd->resp);
-	RELEASE_BUFFER(device_hcd->out);
-
-	kfree(g_device_hcd[device_hcd->tp_index]);
-	g_device_hcd[device_hcd->tp_index] = NULL;
-
-	return retval;
-}
-
-struct device_hcd *syna_remote_device_S3010_init(struct syna_tcm_data *tcm_info)
-{
-	device_init(tcm_info);
-
-	return g_device_hcd[tcm_info->tp_index];
-}
-
-int syna_remote_device_S3910_destory(struct syna_tcm_data *tcm_info)
-{
-	struct device_hcd *device_hcd = NULL;
-	device_hcd = g_device_hcd[tcm_info->tp_index];
-
-	if (!device_hcd) {
-		return 0;
-	}
-
-	device_destroy(device_hcd->class, device_hcd->dev_num);
-
-	class_destroy(device_hcd->class);
-
-	cdev_del(&device_hcd->char_dev);
-
-	unregister_chrdev_region(device_hcd->dev_num, 1);
-
-	RELEASE_BUFFER(device_hcd->report);
-	RELEASE_BUFFER(device_hcd->resp);
-	RELEASE_BUFFER(device_hcd->out);
-
-	kfree(device_hcd);
-	g_device_hcd[tcm_info->tp_index] = NULL;
-
-	return 0;
-}
-
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/Kconfig b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/Kconfig
new file mode 100755
index 00000000..a146323c
--- /dev/null
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/Kconfig
@@ -0,0 +1,11 @@
+#
+# Synaptics Touchscreen driver configuration
+#
+
+config TOUCHSCREEN_HBP_SYNA_S3910
+    tristate "Synaptics Hbp Touchscreen"
+    default n
+    help
+      Say Y here if you have Synaptics hbp touch panel.
+
+      If unsure, say N.
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/Makefile b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/Makefile
new file mode 100755
index 00000000..dc1598b9
--- /dev/null
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/Makefile
@@ -0,0 +1,16 @@
+#
+# Makefile for the Synaptics TCM touchscreen driver.
+#
+
+# Each configuration option enables a list of files.
+
+oplus_bsp_tp_hbp_syna_s3910-y := syna_tcm2.o
+oplus_bsp_tp_hbp_syna_s3910-y += syna_tcm2_sysfs.o
+oplus_bsp_tp_hbp_syna_s3910-y += tcm/synaptics_touchcom_core_v1.o
+oplus_bsp_tp_hbp_syna_s3910-y += tcm/synaptics_touchcom_core_v2.o
+oplus_bsp_tp_hbp_syna_s3910-y += tcm/synaptics_touchcom_func_base.o
+oplus_bsp_tp_hbp_syna_s3910-y += tcm/synaptics_touchcom_func_touch.o
+oplus_bsp_tp_hbp_syna_s3910-y += tcm/synaptics_touchcom_func_reflash.o
+oplus_bsp_tp_hbp_syna_s3910-y += tcm/synaptics_touchcom_func_romboot.o
+
+obj-$(CONFIG_TOUCHSCREEN_HBP_SYNA_S3910) += oplus_bsp_tp_hbp_syna_s3910.o
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/syna_tcm2.c b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2.c
similarity index 86%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/syna_tcm2.c
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2.c
index 5f2339af..75d13210 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/syna_tcm2.c
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2.c
@@ -20,8 +20,15 @@ static int syna_dev_read(void *priv, char *data, int32_t len)
 static int syna_spi_sync(void *priv, char *tx, char *rx, int32_t len)
 {
 	struct syna_tcm *tcm_hcd = (struct syna_tcm *)priv;
+	int ret = 0;
 
-	return tcm_hcd->bus_ops->spi_sync(tcm_hcd->bus_ops, tx, rx, len);
+	LOGD("%s:%*ph\n", "WR", len, tx);
+
+	ret = tcm_hcd->bus_ops->spi_sync(tcm_hcd->bus_ops, tx, rx, len);
+
+	LOGD("%s:%*ph\n", "RD", len, rx);
+
+	return ret;
 }
 
 static int syna_get_frame(void *priv, u8 *raw, u32 rawsize)
@@ -33,12 +40,12 @@ static int syna_get_frame(void *priv, u8 *raw, u32 rawsize)
 	unsigned int total_size = 0;
 
 	if (!raw) {
-		LOGE("raw is NULL\n");
+		hbp_err("raw is NULL\n");
 		return -1;
 	}
 
 	if (!tcm_hcd->probe_done) {
-		LOGE("probe not done\n");
+		hbp_err("probe not done\n");
 		return -1;
 	}
 
@@ -49,7 +56,7 @@ static int syna_get_frame(void *priv, u8 *raw, u32 rawsize)
 	// 		&tcm_hcd->status_report_code,
 	// 		&tcm_hcd->event_data);
 	// if (retval < 0) {
-	// 	LOGE("Fail to get event data\n");
+	// 	hbp_err("Fail to get event data\n");
 	// 	return -1;
 	// }
 /*
@@ -76,7 +83,7 @@ static int syna_get_frame(void *priv, u8 *raw, u32 rawsize)
 				tcm_hcd->tcm_dev->external_buf.data_length,
 				tcm_hcd->tcm_dev->external_buf.data_length);
 		if (retval < 0) {
-			LOGE("Fail to copy data to buffer, size: %d\n",
+			hbp_err("Fail to copy data to buffer, size: %d\n",
 				tcm_hcd->tcm_dev->external_buf.data_length);
 			return -1;
 		}
@@ -104,7 +111,7 @@ static int syna_get_frame(void *priv, u8 *raw, u32 rawsize)
 				tcm->event_data.data_length,
 				&tcm->tp_data);
 		if (retval < 0) {
-			LOGE("Fail to parse touch report\n");
+			hbp_err("Fail to parse touch report\n");
 			goto exit;
 		}
 		syna_dev_report_input_events(tcm);
@@ -119,7 +126,12 @@ static int syna_get_irq_reason(void *priv, enum irq_reason *reason)
 	int retval = 0;
 
 	if (!tcm_hcd->probe_done) {
-		LOGE("probe not done\n");
+		hbp_err("probe not done\n");
+		return -1;
+	}
+
+	if (tcm_hcd->char_dev_irq_disabled) {
+		hbp_err("char dev irq is disabled\n");
 		return -1;
 	}
 
@@ -130,12 +142,22 @@ static int syna_get_irq_reason(void *priv, enum irq_reason *reason)
 			&tcm_hcd->status_report_code,
 			&tcm_hcd->event_data);
 	if (retval < 0) {
-		LOGE("Fail to get event data\n");
+		hbp_err("Fail to get event data\n");
 		return -1;
 	}
 
-	if (tcm_hcd->status_report_code < REPORT_IDENTIFY)
+	if (tcm_hcd->status_report_code == REPORT_IDENTIFY) {
+		hbp_info("Received REPORT_IDENTIFY, device has been reset.\n");
+		*reason = IRQ_REASON_RESET_IDENTIFY;
+	} else if (tcm_hcd->status_report_code == REPORT_TOUCH) {
+		hbp_info("Received LBP touch report, please check mode correct or not.\n");
+		*reason = IRQ_REASON_LBP_POINTS_REPORT;
+	} else if (tcm_hcd->status_report_code < REPORT_IDENTIFY
+			|| tcm_hcd->status_report_code == REPORT_DELTA
+			|| tcm_hcd->status_report_code == REPORT_RAW
+			|| tcm_hcd->status_report_code == REPORT_DEBUG) {
 		*reason = IRQ_REASON_RESPONSE;
+	}
 
 	return 0;
 }
@@ -147,7 +169,12 @@ static int syna_get_gesture(void *priv, struct gesture_info *gesture)
 	int retval = 0;
 
 	if (!tcm_hcd->probe_done) {
-		LOGE("probe not done\n");
+		hbp_err("probe not done\n");
+		return -1;
+	}
+
+	if (tcm_hcd->char_dev_irq_disabled) {
+		hbp_err("char dev irq is disabled\n");
 		return -1;
 	}
 
@@ -157,7 +184,7 @@ static int syna_get_gesture(void *priv, struct gesture_info *gesture)
 	// 		&tcm_hcd->status_report_code,
 	// 		&tcm_hcd->event_data);
 	// if (retval < 0) {
-	// 	LOGE("Fail to get event data\n");
+	// 	hbp_err("Fail to get event data\n");
 	// 	return -1;
 	// }
 
@@ -338,7 +365,12 @@ static int syna_get_touch_points(void *priv, struct point_info *points)
 	struct tcm_objects_data_blob *object_data;
 
 	if (!tcm_hcd->probe_done) {
-		LOGE("probe not done\n");
+		hbp_err("probe not done\n");
+		return -1;
+	}
+
+	if (tcm_hcd->char_dev_irq_disabled) {
+		hbp_err("char dev irq is disabled\n");
 		return -1;
 	}
 
@@ -348,7 +380,7 @@ static int syna_get_touch_points(void *priv, struct point_info *points)
 	// 		&tcm_hcd->status_report_code,
 	// 		&tcm_hcd->event_data);
 	// if (retval < 0) {
-	// 	LOGE("Fail to get event data\n");
+	// 	hbp_err("Fail to get event data\n");
 	// 	return -1;
 	// }
 	//if (tcm_hcd->status_report_code == REPORT_TOUCH) {
@@ -366,8 +398,8 @@ static int syna_get_touch_points(void *priv, struct point_info *points)
 		case FINGER:
 		case GLOVED_OBJECT:
 			points[idx].status = 1;
-			points[idx].x = object_data[idx].x_pos;
-			points[idx].y = object_data[idx].y_pos;
+			points[idx].x = object_data[idx].x_pos * INPUT_RESOLUTION_NUM / 10;
+			points[idx].y = object_data[idx].y_pos * INPUT_RESOLUTION_NUM / 10;
 			points[idx].touch_major = object_data[idx].x_width;
 			points[idx].width_major = object_data[idx].y_width;
 			obj_attention = obj_attention | (1 << idx);
@@ -390,10 +422,10 @@ int syna_enable_hbp_mode(void *priv, bool en)
 	// retval = syna_tcm_enable_report(tcm->tcm_dev,
 	// 		 REPORT_TOUCH, false);
 	// if (retval < 0) {
-	//      LOGE("Fail to disalbe HBP Active Frame report\n");
+	//      hbp_err("Fail to disalbe HBP Active Frame report\n");
 	//      goto exit;
 	// }
-hbp_info("%s start, en=%u\n", __func__, en);
+	hbp_info("%s start, en=%u\n", __func__, en);
 	/* disable LBP mode: 2-LBP(default),1-HBP */
 	if (!en) {
 		retval = syna_tcm_set_dynamic_config(tcm->tcm_dev,
@@ -401,21 +433,21 @@ hbp_info("%s start, en=%u\n", __func__, en);
 				en ? 0x01 : 0x02,
 				RESP_IN_ATTN);
 		if (retval < 0) {
-			LOGE("Fail to disable LBP mode via DC command\n");
+			hbp_err("Fail to disable LBP mode via DC command\n");
 			goto exit;
 		}
 
 		/* enable log report to detect fw enter/exit force doze mode */
 		retval = syna_tcm_enable_report(tcm->tcm_dev, REPORT_LOG, true);
 		if (retval < 0) {
-			LOGE("Failed to enable log report\n");
+			hbp_err("Failed to enable log report\n");
 			goto exit;
 		}
 		hbp_info("Enable log report\n");
 	}
 	//tcm->hbp_enabled = true;
 
-hbp_info("%s end\n", __func__);
+	hbp_info("%s end\n", __func__);
 exit:
 	return retval;
 }
@@ -449,7 +481,7 @@ static int syna_dev_probe(struct platform_device *pdev)
 
 	ret = syna_tcm_allocate_device(&tcm_dev, RESP_IN_POLLING);
 	if ((ret < 0) || (!tcm_dev)) {
-		LOGE("Fail to allocate TouchCom device handle\n");
+		hbp_err("Fail to allocate TouchCom device handle\n");
 		kfree(tcm_hcd);
 		return -ENOMEM;
 	}
@@ -474,6 +506,13 @@ static int syna_dev_probe(struct platform_device *pdev)
 	syna_tcm_buf_init(&tcm_hcd->event_data);
 	//fhp_chip_debug_init(fts);
 
+	/* create the device file and register to char device classes */
+	ret = syna_cdev_create_sysfs(tcm_hcd, pdev);
+	if (ret < 0) {
+		hbp_err("Fail to create the device sysfs\n");
+		goto err_exit;
+	}
+
 	syna_tcm_detect_device(tcm_hcd->tcm_dev);
 
 	tcm_hcd->probe_done = true;
@@ -486,6 +525,7 @@ err_exit:
 
 static int syna_dev_remove(struct platform_device *pdev)
 {
+	//syna_cdev_remove_sysfs(struct syna_tcm *ptcm);
 	return 0;
 }
 
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2.h b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2.h
new file mode 100755
index 00000000..3e0a055c
--- /dev/null
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2.h
@@ -0,0 +1,51 @@
+#include 
+#include 
+#include 
+#include 
+#include "../../../hbp_core.h"
+#include "../../../hbp_spi.h"
+#include "../../../utils/debug.h"
+#include "tcm/synaptics_touchcom_core_dev.h"
+#include "tcm/synaptics_touchcom_func_base.h"
+#include "tcm/synaptics_touchcom_func_touch.h"
+#include "syna_tcm2_runtime.h"
+
+#define REPORT_TYPES (256)
+#define EFP_ENABLE   (1)
+#define EFP_DISABLE  (0)
+
+struct syna_tcm {
+    struct tcm_dev *tcm_dev;
+    struct platform_device *pdev;
+    //struct hbp_bus_io *bus_io;
+    struct bus_operations *bus_ops;
+    unsigned char status_report_code;
+
+    /* Generic touched data generated by tcm core lib */
+    struct tcm_touch_data_blob tp_data;
+    /* g_extif_mutex is used to protect the access from the userspace application */
+    syna_pal_mutex_t extif_mutex;
+    struct mutex mutex;
+
+    /* Buffer stored the irq event data */
+    struct tcm_buffer event_data;
+    /* cdev and sysfs nodes creation */
+    struct cdev char_dev;
+    dev_t char_dev_num;
+    int char_dev_ref_count;
+    struct class *device_class;
+    struct device *device;
+    struct kobject *sysfs_dir;
+    /* IOCTL-related variables */
+    pid_t proc_pid;
+    struct task_struct *proc_task;
+
+    /* flags */
+    bool probe_done;
+    bool is_attn_redirecting;
+    bool char_dev_irq_disabled;
+};
+
+int syna_cdev_create_sysfs(struct syna_tcm *ptcm, struct platform_device *pdev);
+
+void syna_cdev_remove_sysfs(struct syna_tcm *ptcm);
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/syna_tcm2_runtime.h b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2_runtime.h
similarity index 100%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/syna_tcm2_runtime.h
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2_runtime.h
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2_sysfs.c b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2_sysfs.c
new file mode 100755
index 00000000..331bacb4
--- /dev/null
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/syna_tcm2_sysfs.c
@@ -0,0 +1,1876 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Synaptics TouchCom touchscreen driver
+ *
+ * Copyright (C) 2017-2020 Synaptics Incorporated. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * INFORMATION CONTAINED IN THIS DOCUMENT IS PROVIDED "AS-IS," AND SYNAPTICS
+ * EXPRESSLY DISCLAIMS ALL EXPRESS AND IMPLIED WARRANTIES, INCLUDING ANY
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
+ * AND ANY WARRANTIES OF NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS.
+ * IN NO EVENT SHALL SYNAPTICS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OF THE INFORMATION CONTAINED IN THIS DOCUMENT, HOWEVER CAUSED
+ * AND BASED ON ANY THEORY OF LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * NEGLIGENCE OR OTHER TORTIOUS ACTION, AND EVEN IF SYNAPTICS WAS ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE. IF A TRIBUNAL OF COMPETENT JURISDICTION DOES
+ * NOT PERMIT THE DISCLAIMER OF DIRECT DAMAGES OR ANY OTHER DAMAGES, SYNAPTICS'
+ * TOTAL CUMULATIVE LIABILITY TO ANY PARTY SHALL NOT EXCEED ONE HUNDRED U.S.
+ * DOLLARS.
+ */
+
+/**
+ * @file syna_tcm2_sysfs.c
+ *
+ * This file implements cdev and ioctl interface in the reference driver.
+ */
+
+#include 
+
+#include "syna_tcm2.h"
+#include "tcm/synaptics_touchcom_core_dev.h"
+#include "tcm/synaptics_touchcom_func_base.h"
+#include "tcm/synaptics_touchcom_func_touch.h"
+#if (KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE) || \
+	defined(HAVE_UNLOCKED_IOCTL)
+#define USE_UNLOCKED_IOCTL
+#endif
+
+#if defined(CONFIG_COMPAT) && defined(HAVE_COMPAT_IOCTL)
+#define USE_COMPAT_IOCTL
+#endif
+
+#if (KERNEL_VERSION(5, 4, 0) <= LINUX_VERSION_CODE)
+#define REPLACE_KTIME
+#endif
+
+#define IF_ARG_NULL_OUT(arg) \
+		do{ \
+			if (IS_ERR_OR_NULL(arg)) { \
+				hbp_err("%s:arg is NULL\n", __func__); \
+				return -EINVAL; \
+			} \
+		}while(0) \
+
+#define ENABLE_PID_TASK
+
+#define SIG_ATTN (46)
+
+/* structure for IOCTLs
+ */
+struct syna_ioctl_data {
+	unsigned int data_length;
+	unsigned int buf_size;
+	unsigned char __user *buf;
+};
+
+#ifdef USE_COMPAT_IOCTL
+struct syna_tcm_ioctl_data_compat {
+	unsigned int data_length;
+	unsigned int buf_size;
+	compat_uptr_t __user *buf;
+};
+#endif
+
+typedef struct hbp_driver_info_s {
+	int system_power_state;
+	int short_frame_waiting;
+} hbp_driver_info_t;
+
+#define CHAR_DEVICE_NAME "tcm"
+//#define CHAR_DEVICE_NAME "tcm_hbp"
+#define PLATFORM_DRIVER_NAME "synaptics_tcm_hbp"
+#define CHAR_DEVICE_MODE (0x0600)
+
+/* defines the IOCTLs supported
+ */
+#define IOCTL_MAGIC 's'
+
+/* Previous IOCTLs in early driver */
+#define OLD_RESET_ID		(0x00)
+#define OLD_SET_IRQ_MODE_ID	(0x01)
+#define OLD_SET_RAW_MODE_ID	(0x02)
+#define OLD_CONCURRENT_ID	(0x03)
+
+#define IOCTL_OLD_RESET \
+	_IO(IOCTL_MAGIC, OLD_RESET_ID)
+#define IOCTL_OLD_SET_IRQ_MODE \
+	_IOW(IOCTL_MAGIC, OLD_SET_IRQ_MODE_ID, int)
+#define IOCTL_OLD_SET_RAW_MODE \
+	_IOW(IOCTL_MAGIC, OLD_SET_RAW_MODE_ID, int)
+#define IOCTL_OLD_CONCURRENT \
+	_IOW(IOCTL_MAGIC, OLD_CONCURRENT_ID, int)
+
+/* Standard IOCTLs in TCM2 driver */
+#define STD_IOCTL_BEGIN		    (0x10)
+#define STD_SET_PID_ID		    (0x11)
+#define STD_ENABLE_IRQ_ID	    (0x12)
+#define STD_RAW_READ_ID		    (0x13)
+#define STD_RAW_WRITE_ID	    (0x14)
+#define STD_GET_FRAME_ID	    (0x15)
+#define STD_SEND_MESSAGE_ID     (0x16)
+#define STD_SET_REPORTS_ID      (0x17)
+#define STD_CHECK_FRAMES_ID     (0x18)
+#define STD_CLEAN_OUT_FRAMES_ID (0x19)
+#define STD_SET_APPLICATION_INFO_ID (0x1A)
+#define STD_DO_HW_RESET_ID      (0x1B)
+
+#define STD_DRIVER_CONFIG_ID	(0x21)
+#define STD_DRIVER_GET_CONFIG_ID	(0x22)
+
+#define CUS_INSERT_REQ_REPORT_DATA_ID (0xC0)
+#define CUS_GET_POWER_STATUS_ID       (0xC1)  /* only used for TCM/TSM */
+#define CUS_GET_DRIVER_STATUS_ID      (0xC2)  /* only used for tsDaemon */
+#define CUS_SET_DRIVER_STATUS_ID      (0xC3)  /* only used for tsDaemon */
+
+#define IOCTL_STD_IOCTL_BEGIN \
+	_IOR(IOCTL_MAGIC, STD_IOCTL_BEGIN)
+#define IOCTL_STD_SET_PID \
+	_IOW(IOCTL_MAGIC, STD_SET_PID_ID, struct syna_ioctl_data *)
+#define IOCTL_STD_ENABLE_IRQ \
+	_IOW(IOCTL_MAGIC, STD_ENABLE_IRQ_ID, struct syna_ioctl_data *)
+#define IOCTL_STD_RAW_READ \
+	_IOR(IOCTL_MAGIC, STD_RAW_READ_ID, struct syna_ioctl_data *)
+#define IOCTL_STD_RAW_WRITE \
+	_IOW(IOCTL_MAGIC, STD_RAW_WRITE_ID, struct syna_ioctl_data *)
+#define IOCTL_STD_GET_FRAME \
+	_IOWR(IOCTL_MAGIC, STD_GET_FRAME_ID, struct syna_ioctl_data *)
+#define IOCTL_STD_SEND_MESSAGE \
+	_IOWR(IOCTL_MAGIC, STD_SEND_MESSAGE_ID, struct syna_ioctl_data *)
+#define IOCTL_STD_SET_REPORT_TYPES \
+	_IOW(IOCTL_MAGIC, STD_SET_REPORTS_ID, struct syna_ioctl_data *)
+#define IOCTL_STD_CHECK_FRAMES \
+	_IOWR(IOCTL_MAGIC, STD_CHECK_FRAMES_ID, struct syna_ioctl_data *)
+#define IOCTL_STD_CLEAN_OUT_FRAMES \
+	_IOWR(IOCTL_MAGIC, STD_CLEAN_OUT_FRAMES_ID, struct syna_ioctl_data *)
+#define IOCTL_STD_SET_APPLICATION_INFO \
+	_IOWR(IOCTL_MAGIC, STD_SET_APPLICATION_INFO_ID, struct syna_ioctl_data *)
+#define IOCTL_STD_DO_HW_RESET \
+	_IOWR(IOCTL_MAGIC, STD_DO_HW_RESET_ID, struct syna_ioctl_data *)
+
+#define IOCTL_DRIVER_CONFIG \
+	_IOW(IOCTL_MAGIC, STD_DRIVER_CONFIG_ID, struct syna_ioctl_data *)
+#define IOCTL_DRIVER_GET_CONFIG \
+	_IOR(IOCTL_MAGIC, STD_DRIVER_GET_CONFIG_ID, struct syna_ioctl_data *)
+
+#define IOCTL_CUS_INSERT_REQ_REPORT_DATA \
+	_IOWR(IOCTL_MAGIC, CUS_INSERT_REQ_REPORT_DATA_ID, struct syna_ioctl_data *)
+#define IOCTL_CUS_GET_POWER_STATUS \
+	_IOWR(IOCTL_MAGIC, CUS_GET_POWER_STATUS_ID, struct syna_ioctl_data *)
+#define IOCTL_CUS_GET_DRIVER_STATUS \
+	_IOWR(IOCTL_MAGIC, CUS_GET_DRIVER_STATUS_ID, struct syna_ioctl_data *)
+#define IOCTL_CUS_SET_DRIVER_STATUS \
+	_IOWR(IOCTL_MAGIC, CUS_SET_DRIVER_STATUS_ID, struct syna_ioctl_data *)
+
+/* g_sysfs_dir represents the root directory of sysfs nodes being created
+ */
+static struct kobject *g_sysfs_dir;
+
+/* g_cdev_buf is a temporary buffer storing the data from userspace
+ */
+static struct tcm_buffer g_cdev_cbuf;
+
+/* The g_sysfs_io_polling_interval is used to set the polling interval
+ * for syna_tcm_send_command from syna_cdev_ioctl_send_message.
+ * It will set to the mode SYSFS_FULL_INTERRUPT for using the full
+ * interrupt mode. The way to update this variable is through the
+ * syna_cdev_ioctl_enable_irq.
+ */
+unsigned int g_sysfs_io_polling_interval;
+
+/* The g_sysfs_extra_bytes_read allows caller to ask extra bytes
+ * to read. Thus, driver may need to append the requested bytes.
+ */
+static int g_sysfs_extra_bytes_read;
+
+static int g_sysfs_has_remove = 0;
+
+/* a buffer to record the streaming report
+ * considering touch report and another reports may be co-enabled
+ * at the same time, give a little buffer here (3 sec x 300 fps)
+ */
+#define FIFO_QUEUE_MAX_FRAMES		(1200)
+#define SEND_MESSAGE_HEADER_LENGTH	(3)
+
+/* Indicate the interrupt status especially for sysfs using */
+#define SYSFS_DISABLED_INTERRUPT		(0)
+#define SYSFS_ENABLED_INTERRUPT			(1)
+
+#define MINIMUM_WAITING_TIME			(10)
+
+#define SYNA_RETRY_CNT 60
+/* Define a data structure that contains a list_head */
+struct fifo_queue {
+	struct list_head next;
+	unsigned char *fifo_data;
+	unsigned int data_length;
+#ifdef REPLACE_KTIME
+	struct timespec64 timestamp;
+#else
+	struct timeval timestamp;
+#endif
+};
+
+/* Define a data structure for driver parameters configurations
+ *
+ *      [Integer]  [   Field   ]  [ Description         ]
+ *      -------------------------------------------------
+ *         1       Drv Connection  bit-0 ~ 23 reserved
+ *                                 bit-24~ 31 current touchcomm version being connected
+ *         2       reserved
+ *         3       reserved
+ *         4       Bus Data Chunk  bus config, max chunk size for data transfer
+ *         5       reserved
+ *         6       reserved
+ *         7       reserved
+ *         8       reserved
+ *         9       Drv Features    bit-0: '1' to enable predict reading
+ *                                 bit-1 ~ 7  reserved
+ *                                 bit-8 ~15  to set up the number of bytes for extra reads
+ *                                 bit-16~31  reserved
+ */
+struct drv_param {
+	union {
+		struct {
+			/* reserve fields */
+			unsigned char reserved_0[3];
+			unsigned char connection_touchcomm_version;
+			/* bus config */
+			unsigned int reserved_2__3[2];
+			unsigned int bus_chunk_size;
+			/* reserve fields */
+			unsigned int reserved_5__8[4];
+			/* features */
+			unsigned char feature_predict_reads:1;
+			unsigned char feature_reserve_b1__7:7;
+			unsigned char feature_extra_reads:8;
+			unsigned char feature_reserve_b16__23:8;
+			unsigned char feature_reserve_b24__31:8;
+		} __packed;
+		unsigned int parameters[9];
+	};
+};
+
+
+/**
+ * declaration of sysfs attributes
+ */
+static struct attribute *attrs[] = {
+	NULL,
+};
+
+static struct attribute_group attr_group = {
+	.attrs = attrs,
+};
+
+/**
+ * syna_sysfs_create_dir()
+ *
+ * Create a directory and register it with sysfs.
+ * Then, create all defined sysfs files.
+ *
+ * @param
+ *    [ in] tcm:  the driver handle
+ *    [ in] pdev: an instance of platform device
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+int syna_sysfs_create_dir(struct syna_tcm *tcm,
+		struct platform_device *pdev)
+{
+	int retval = 0;
+
+	g_sysfs_dir = kobject_create_and_add("sysfs",
+			&pdev->dev.kobj);
+	if (!g_sysfs_dir) {
+		hbp_err("Fail to create sysfs directory\n");
+		return -ENOTDIR;
+	}
+
+	tcm->sysfs_dir = g_sysfs_dir;
+
+	retval = sysfs_create_group(g_sysfs_dir, &attr_group);
+	if (retval < 0) {
+		hbp_err("Fail to create sysfs group\n");
+
+		kobject_put(tcm->sysfs_dir);
+		return retval;
+	}
+
+	return 0;
+}
+/**
+ * syna_sysfs_remove_dir()
+ *
+ * Remove the allocate sysfs directory
+ *
+ * @param
+ *    [ in] tcm: the driver handle
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+void syna_sysfs_remove_dir(struct syna_tcm *tcm)
+{
+	if (!tcm) {
+		hbp_err("Invalid tcm device handle\n");
+		return;
+	}
+
+	if (tcm->sysfs_dir) {
+		sysfs_remove_group(tcm->sysfs_dir, &attr_group);
+
+		kobject_put(tcm->sysfs_dir);
+	}
+
+}
+/**
+ * syna_cdev_ioctl_do_hw_reset()
+ *
+ * Perform the hardware reset with the selected reset method. The reset
+ * option depends on the hardware design. The user has to add the
+ * corresponding implementation in this function for the userspace
+ * application.
+ *
+ * The reset options:
+ *    [ Not support]: 0
+ *    [   Reset Pin]: 1
+ *    [ Power cycle]: 2
+ *    [    ........]:
+ *
+ * @param
+ *    [ in] tcm:           the driver handle
+ *    [ in] ubuf_ptr:      points to a memory space from userspace
+ *    [ in] buf_size:      size of given space
+ *    [ in] data_size:     input data size
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+/*
+static int syna_cdev_ioctl_do_hw_reset(struct syna_tcm *tcm,
+		const unsigned char *ubuf_ptr, unsigned int buf_size,
+		unsigned int data_size)
+{
+	int retval = 0;
+	unsigned int param = 0;
+	unsigned char data[4] = {0};
+
+	if (!tcm->is_connected) {
+		hbp_err("Not connected\n");
+		return _EINVAL;
+	}
+
+	if (buf_size < sizeof(data) || data_size < sizeof(data)) {
+		hbp_err("Invalid sync data size, buf_size: %u\n", buf_size);
+		retval = -EINVAL;
+		goto exit;
+	}
+
+	retval = copy_from_user(data, ubuf_ptr, sizeof(data));
+	if (retval) {
+		hbp_err("Fail to copy data from user space, size:%d\n", retval);
+		retval = -EBADE;
+		goto exit;
+	}
+
+	// get the reset option param
+	param = syna_pal_le4_to_uint(&data[0]);
+	hbp_info("HW reset option: %u\n", param);
+
+	if (param == 1) {
+		if (!tcm->hw_if->ops_hw_reset) {
+			hbp_err("No hardware reset support\n");
+			retval = -ENODEV;
+			goto exit;
+		}
+
+		tcm->hw_if->ops_hw_reset(tcm->hw_if);
+
+		// to enable the interrupt for processing the identify report
+		// after the hardware reset.
+		//
+		if (!tcm->hw_if->bdata_attn.irq_enabled) {
+			tcm->hw_if->ops_enable_irq(tcm->hw_if, true);
+			// disable it and back to original status
+			syna_pal_sleep_ms(100);
+			//tcm->hw_if->ops_enable_irq(tcm->hw_if, false);
+			LOGW("HW reset: IRQ is forced to enable\n");
+		} else {
+			hbp_err("HW reset: IRQ already enabled\n");
+		}
+	} else {
+		LOGW("Unsupported HW reset option(%u) selected\n", param);
+		retval = -EINVAL;
+		goto exit;
+	}
+
+	// check the fw setup in case the settings is changed
+	retval = tcm->dev_set_up_app_fw(tcm);
+	if (retval < 0) {
+		hbp_err("HW reset: failed to set up the app fw\n");
+		retval = -ENODATA;
+		goto exit;
+	}
+
+exit:
+	return retval;
+}
+*/
+/**
+ * syna_cdev_ioctl_application_info()
+ *
+ * To keep the userspace application information, the user shall apply
+ * the corresponding defined format on userspace. Otherwise, data will
+ * be void type.
+ *
+ * @param
+ *    [ in] tcm:       the driver handle
+ *    [ in] ubuf_ptr:  points to a memory space from userspace
+ *    [ in] buf_size:  size of given space
+ *    [ in] data_size: size of actual data
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+/*
+static int syna_cdev_ioctl_application_info(struct syna_tcm *tcm,
+		const unsigned char *ubuf_ptr, unsigned int buf_size,
+		unsigned int data_size)
+{
+	int retval = 0;
+	void *data = NULL;
+
+	if ((buf_size < 1) || (buf_size < data_size)) {
+		hbp_err("Invalid input buffer size, buf_size:%u, data_size:%u\n",
+			buf_size, data_size);
+		return -EINVAL;
+	}
+
+	// free the allocated memory
+	if (tcm->userspace_app_info != NULL)
+		syna_pal_mem_free(tcm->userspace_app_info);
+
+	tcm->userspace_app_info = syna_pal_mem_alloc(1, data_size);
+	if (!(tcm->userspace_app_info)) {
+		hbp_err("Failed to allocate user app info memory, size = %u\n",
+			data_size);
+		retval = -ENOMEM;
+		goto exit;
+	}
+
+	syna_pal_mem_set(tcm->userspace_app_info, 0, data_size);
+	data = tcm->userspace_app_info;
+
+	retval = copy_from_user(data, ubuf_ptr, data_size);
+	if (retval) {
+		hbp_err("Fail to copy data from user space, size:%d\n", retval);
+		retval = -EBADE;
+		goto exit;
+	}
+
+	//
+	// The user shall cast the retrieved data to the format defined
+	// on userspace for the application.
+	//
+
+exit:
+	return retval;
+}
+*/
+
+/**
+ * syna_cdev_ioctl_send_message()
+ *
+ * Send the command/message from userspace.
+ *
+ * For updating the g_sysfs_io_polling_interval, it need to be configured
+ * by syna_cdev_ioctl_enable_irq from userspace.
+ *
+ * @param
+ *    [ in] tcm:           the driver handle
+ *    [ in/out] ubuf_ptr:  points to a memory space from userspace
+ *    [ in] buf_size:      size of given space
+ *    [ in/out] msg_size:  size of message
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static int syna_cdev_ioctl_send_message(struct syna_tcm *tcm,
+		const unsigned char *ubuf_ptr, unsigned int buf_size,
+		unsigned int *msg_size)
+{
+	int retval = 0;
+	unsigned char *data = NULL;
+	unsigned char resp_code = 0;
+	unsigned int payload_length = 0;
+	unsigned int delay_ms_resp = RESP_IN_POLLING;
+	struct tcm_buffer resp_data_buf;
+
+	if (buf_size < SEND_MESSAGE_HEADER_LENGTH) {
+		hbp_err("Invalid sync data size, buf_size:%d\n", buf_size);
+		return -EINVAL;
+	}
+
+	if (*msg_size == 0) {
+		hbp_err("Invalid message length, msg size: 0\n");
+		return -EINVAL;
+	}
+
+	mutex_lock(&tcm->mutex);
+
+	/* init a buffer for the response data */
+	syna_tcm_buf_init(&resp_data_buf);
+
+	syna_tcm_buf_lock(&g_cdev_cbuf);
+
+	retval = syna_tcm_buf_alloc(&g_cdev_cbuf, buf_size);
+	if (retval < 0) {
+		hbp_err("Fail to allocate memory for g_cdev_cbuf, size: %d\n",
+			buf_size);
+		goto exit;
+	}
+
+	data = g_cdev_cbuf.buf;
+
+	retval = copy_from_user(data, ubuf_ptr, *msg_size);
+	if (retval) {
+		hbp_err("Fail to copy data from user space, size:%d\n", *msg_size);
+		retval = -EBADE;
+		goto exit;
+	}
+
+	payload_length = syna_pal_le2_to_uint(&data[1]);
+	hbp_info("Command = 0x%02x, payload length = %d data:%*ph\n",
+		data[0], payload_length, payload_length, &data[3]);
+
+	if (g_sysfs_io_polling_interval == RESP_IN_ATTN)
+		delay_ms_resp = RESP_IN_ATTN;
+	else
+		delay_ms_resp = g_sysfs_io_polling_interval;
+
+	retval = syna_tcm_send_command(tcm->tcm_dev,
+			data[0],
+			&data[3],
+			payload_length,
+			&resp_code,
+			&resp_data_buf,
+			delay_ms_resp);
+	if (retval < 0) {
+		hbp_err("Fail to run command 0x%02x with payload len %d\n",
+			data[0], payload_length);
+		/* even if resp_code returned is not success
+		 * this ioctl shall return the packet to caller
+		 */
+	}
+
+	syna_pal_mem_set(data, 0, buf_size);
+	/* status code */
+	data[0] = resp_code;
+	/* the length for response data */
+	data[1] = (unsigned char)(resp_data_buf.data_length & 0xff);
+	data[2] = (unsigned char)((resp_data_buf.data_length >> 8) & 0xff);
+
+	hbp_info("resp data: 0x%02x 0x%02x 0x%02x\n",
+		data[0], data[1], data[2]);
+
+	/* response data */
+	if (resp_data_buf.data_length > 0) {
+		retval = syna_pal_mem_cpy(&g_cdev_cbuf.buf[3],
+			(g_cdev_cbuf.buf_size - SEND_MESSAGE_HEADER_LENGTH),
+			resp_data_buf.buf,
+			resp_data_buf.buf_size,
+			resp_data_buf.data_length);
+		if (retval < 0) {
+			hbp_err("Fail to copy resp data\n");
+			goto exit;
+		}
+	}
+
+	if (buf_size < resp_data_buf.data_length) {
+		hbp_err("No enough space for data copy, buf_size:%d data:%d\n",
+			buf_size, resp_data_buf.data_length);
+		retval = -EOVERFLOW;
+		goto exit;
+	}
+
+	retval = copy_to_user((void *)ubuf_ptr,
+			data, resp_data_buf.data_length + 3);
+	if (retval) {
+		hbp_err("Fail to copy data to user space\n");
+		retval = -EBADE;
+		goto exit;
+	}
+
+	*msg_size = resp_data_buf.data_length + 3;
+	retval = *msg_size;
+
+exit:
+	syna_tcm_buf_unlock(&g_cdev_cbuf);
+	mutex_unlock(&tcm->mutex);
+
+	syna_tcm_buf_release(&resp_data_buf);
+
+	return retval;
+}
+
+/**
+ * syna_cdev_ioctl_enable_irq()
+ *
+ * Enable or disable the irq via IOCTL.
+ *
+ * Expect to get 4 bytes unsigned int parameter from userspace:
+ *    0:         disable the irq.
+ *    1:         enable the irq and set g_sysfs_io_polling_interval
+ *               to RESP_IN_ATTN
+ *    otherwise: enable the irq and also assign the polling interval
+ *               to a specific time, which will be used when calling
+ *               syna_cdev_ioctl_send_message.
+ *               the min. polling time is RESP_IN_POLLING
+ *
+ * @param
+ *    [ in] tcm:       the driver handle
+ *    [ in] ubuf_ptr:  points to a memory space from userspace
+ *    [ in] buf_size:  size of given space
+ *    [ in] data_size: size of actual data
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+/*
+static int syna_cdev_ioctl_enable_irq(struct syna_tcm *tcm,
+		const unsigned char *ubuf_ptr, unsigned int buf_size,
+		unsigned int data_size)
+{
+	int retval = 0;
+	unsigned int data;
+
+	if (!tcm->is_connected) {
+		hbp_err("Not connected\n");
+		return -ENXIO;
+	}
+
+	if ((buf_size < sizeof(data)) || (buf_size > PAGE_SIZE)
+                || (data_size < sizeof(data)) || (data_size > PAGE_SIZE)) {
+		hbp_err("Invalid sync data size, buf_size:%d, data_size:%d\n",
+		    buf_size, data_size);
+		return -EINVAL;
+	}
+
+	if (!tcm->hw_if->ops_enable_irq) {
+		LOGW("Not support irq control\n");
+		return -EFAULT;
+	}
+
+	retval = copy_from_user(&data, ubuf_ptr, sizeof(data));
+	if (retval) {
+		hbp_err("Fail to copy data from user space, size:%d\n", retval);
+		return -EBADE;
+	}
+
+	switch (data) {
+	case SYSFS_DISABLED_INTERRUPT:
+		retval = tcm->hw_if->ops_enable_irq(tcm->hw_if, false);
+		if (retval < 0) {
+			hbp_err("Fail to disable interrupt\n");
+			return retval;
+		}
+
+		g_sysfs_io_polling_interval =
+			tcm->tcm_dev->msg_data.default_resp_reading;
+
+		hbp_err("IRQ is disabled by userspace application\n");
+
+		break;
+	case SYSFS_ENABLED_INTERRUPT:
+		retval = tcm->hw_if->ops_enable_irq(tcm->hw_if, true);
+		if (retval < 0) {
+			hbp_err("Fail to enable interrupt\n");
+			return retval;
+		}
+
+		g_sysfs_io_polling_interval = RESP_IN_ATTN;
+
+		hbp_err("IRQ is enabled by userspace application\n");
+
+		break;
+	default:
+		// recover the interrupt and also assign the polling interval
+		retval = tcm->hw_if->ops_enable_irq(tcm->hw_if, true);
+		if (retval < 0) {
+			hbp_err("Fail to enable interrupt\n");
+			return retval;
+		}
+
+		g_sysfs_io_polling_interval = data;
+		if (g_sysfs_io_polling_interval < RESP_IN_POLLING)
+			g_sysfs_io_polling_interval = RESP_IN_POLLING;
+
+		hbp_err("IRQ is enabled by userspace application\n");
+		hbp_err("Polling interval is set to %d ms\n",
+			g_sysfs_io_polling_interval);
+
+		break;
+	}
+
+	return 0;
+}
+*/
+/**
+ * syna_cdev_ioctl_store_pid()
+ *
+ * Save PID through IOCTL interface
+ *
+ * @param
+ *    [ in] tcm:       the driver handle
+ *    [ in] ubuf_ptr:  points to a memory space from userspace
+ *    [ in] buf_size:  size of given space
+ *    [ in] data_size: size of actual data
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static int syna_cdev_ioctl_store_pid(struct syna_tcm *tcm,
+		const unsigned char *ubuf_ptr, unsigned int buf_size,
+		unsigned int data_size)
+{
+	int retval = 0;
+	unsigned char *data = NULL;
+
+	if (buf_size < 4 || buf_size > PAGE_SIZE) {
+		hbp_err("Invalid sync data size, buf_size:%d\n", buf_size);
+		return -EINVAL;
+	}
+
+	if (data_size < 4 || data_size > PAGE_SIZE) {
+		hbp_err("Invalid data_size\n");
+		return -EINVAL;
+	}
+
+	syna_tcm_buf_lock(&g_cdev_cbuf);
+
+	retval = syna_tcm_buf_alloc(&g_cdev_cbuf, buf_size);
+	if (retval < 0) {
+		hbp_err("Fail to allocate memory for g_cdev_buf, size: %d\n",
+			buf_size);
+		goto exit;
+	}
+
+	data = g_cdev_cbuf.buf;
+
+	retval = copy_from_user(data, ubuf_ptr, data_size);
+	if (retval) {
+		hbp_err("Fail to copy data from user space, size:%d\n", retval);
+		retval = -EBADE;
+		goto exit;
+	}
+
+	tcm->proc_pid = syna_pal_le4_to_uint(&data[0]);
+
+	hbp_info("PID: %d\n", (unsigned int)tcm->proc_pid);
+#ifdef ENABLE_PID_TASK
+	if (tcm->proc_pid) {
+		tcm->proc_task = pid_task(
+				find_vpid(tcm->proc_pid),
+				PIDTYPE_PID);
+		if (!tcm->proc_task) {
+			hbp_err("Fail to locate task, pid: %d\n",
+				(unsigned int)tcm->proc_pid);
+			retval = -ESRCH;
+			goto exit;
+		}
+	}
+#endif
+exit:
+	syna_tcm_buf_unlock(&g_cdev_cbuf);
+
+	return retval;
+}
+/**
+ * syna_cdev_ioctl_raw_read()
+ *
+ * Read the data from device directly without routing to command wrapper
+ * interface.
+ *
+ * @param
+ *    [ in] tcm:         the driver handle
+ *    [in/out] ubuf_ptr: ubuf_ptr: points to a memory space from userspace
+ *    [ in] buf_size:    size of given space
+ *    [ in] rd_size:     reading size
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static int syna_cdev_ioctl_raw_read(struct syna_tcm *tcm,
+		const unsigned char *ubuf_ptr, unsigned int buf_size,
+		unsigned int rd_size)
+{
+	int retval = 0;
+	unsigned char *data = NULL;
+
+	if (rd_size > buf_size) {
+		hbp_err("Invalid sync data size, buf_size:%d, rd_size:%d\n",
+			buf_size, rd_size);
+		return -EINVAL;
+	}
+
+	if (rd_size == 0) {
+		hbp_err("The read length is 0\n");
+		return 0;
+	}
+
+	syna_pal_mutex_lock(&tcm->tcm_dev->msg_data.rw_mutex);
+
+	syna_tcm_buf_lock(&g_cdev_cbuf);
+
+	retval = syna_tcm_buf_alloc(&g_cdev_cbuf, rd_size);
+	if (retval < 0) {
+		hbp_err("Fail to allocate memory for g_cdev_cbuf, size: %d\n",
+			rd_size);
+		goto exit;
+	}
+
+	data = g_cdev_cbuf.buf;
+
+	retval = syna_tcm_read(tcm->tcm_dev,
+			data,
+			rd_size);
+	if (retval < 0) {
+		hbp_err("Fail to read raw data, size: %d\n", rd_size);
+		goto exit;
+	}
+
+	if (copy_to_user((void *)ubuf_ptr, data, rd_size)) {
+		hbp_err("Fail to copy data to user space\n");
+		retval = -EBADE;
+		goto exit;
+	}
+
+	retval = rd_size;
+
+exit:
+	syna_tcm_buf_unlock(&g_cdev_cbuf);
+
+	syna_pal_mutex_unlock(&tcm->tcm_dev->msg_data.rw_mutex);
+
+	return retval;
+}
+/**
+ * syna_cdev_ioctl_raw_write()
+ *
+ * Write the given data to device directly without routing to command wrapper
+ * interface.
+ *
+ * @param
+ *    [ in] tcm:      the driver handle
+ *    [ in] ubuf_ptr: points to a memory space from userspace
+ *    [ in] buf_size: size of given space
+ *    [ in] wr_size:  size to write
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static int syna_cdev_ioctl_raw_write(struct syna_tcm *tcm,
+		const unsigned char *ubuf_ptr, unsigned int buf_size,
+		unsigned int wr_size)
+{
+	int retval = 0;
+	unsigned char *data = NULL;
+
+	if (wr_size > buf_size) {
+		hbp_err("Invalid sync data size, buf_size:%d, wr_size:%d\n",
+			buf_size, wr_size);
+		return -EINVAL;
+	}
+
+	if (wr_size == 0) {
+		hbp_err("Invalid written size\n");
+		return -EINVAL;
+	}
+
+	syna_pal_mutex_lock(&tcm->tcm_dev->msg_data.rw_mutex);
+
+	syna_tcm_buf_lock(&g_cdev_cbuf);
+
+	retval = syna_tcm_buf_alloc(&g_cdev_cbuf, wr_size);
+	if (retval < 0) {
+		hbp_err("Fail to allocate memory for g_cdev_cbuf, size: %d\n",
+			wr_size);
+		goto exit;
+	}
+
+	data = g_cdev_cbuf.buf;
+
+	retval = copy_from_user(data, ubuf_ptr, wr_size);
+	if (retval) {
+		hbp_err("Fail to copy data from user space, size:%d\n", retval);
+		retval = -EBADE;
+		goto exit;
+	}
+
+	hbp_info("Write command: 0x%02x, length: 0x%02x, 0x%02x (size:%u)\n",
+		data[0], data[1], data[2], wr_size);
+
+	retval = syna_tcm_write(tcm->tcm_dev,
+			data,
+			wr_size);
+	if (retval < 0) {
+		hbp_err("Fail to write raw data, size: %u\n", wr_size);
+		goto exit;
+	}
+
+	retval = wr_size;
+
+exit:
+	syna_tcm_buf_unlock(&g_cdev_cbuf);
+
+	syna_pal_mutex_unlock(&tcm->tcm_dev->msg_data.rw_mutex);
+
+	return retval;
+}
+/**
+ * syna_cdev_ioctl_get_config_params()
+ *
+ * Return current configuration settings to user-space
+ * The returned buffer array should be same as struct drv_param
+ *
+ * @param
+ *    [ in] tcm:      the driver handle
+ *    [ in] ubuf_ptr: points to a memory space from userspace
+ *    [ in] buf_size: size of given space
+ *    [ in] size:     size of array
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static int syna_cdev_ioctl_get_config_params(struct syna_tcm *tcm,
+		const unsigned char *ubuf_ptr, unsigned int buf_size,
+		unsigned int size)
+{
+	int retval = 0;
+	struct drv_param *param;
+
+	if (size < sizeof(struct drv_param)) {
+		hbp_err("Invalid data input, size: %u (expected: %lu)\n",
+			size, sizeof(struct drv_param));
+		return -EINVAL;
+	}
+
+	syna_tcm_buf_lock(&g_cdev_cbuf);
+
+	retval = syna_tcm_buf_alloc(&g_cdev_cbuf, sizeof(struct drv_param));
+	if (retval < 0) {
+		hbp_err("Fail to allocate memory for g_cdev_cbuf, size: %lu\n",
+			sizeof(struct drv_param));
+		goto exit;
+	}
+
+	syna_pal_mem_set(&g_cdev_cbuf.buf[0], 0x00, sizeof(struct drv_param));
+
+	param = (struct drv_param *)&g_cdev_cbuf.buf[0];
+
+	param->parameters[0] |= (tcm->tcm_dev->id_info.version) << 24;
+
+	param->parameters[3] = MIN(RD_CHUNK_SIZE, WR_CHUNK_SIZE);
+
+	param->parameters[8] = (unsigned int)((tcm->tcm_dev->msg_data.predict_reads & 0x01) |
+						(g_sysfs_extra_bytes_read & 0xff) << 8);
+
+	/* copy the info to user-space */
+	retval = copy_to_user((void *)ubuf_ptr,
+		(unsigned char *)param,
+		sizeof(struct drv_param));
+	if (retval) {
+		hbp_err("Fail to copy data to user space\n");
+		retval = -EBADE;
+		goto exit;
+	}
+
+	retval = sizeof(struct drv_param);
+
+exit:
+	syna_tcm_buf_unlock(&g_cdev_cbuf);
+
+	return retval;
+}
+/**
+ * syna_cdev_ioctl_config()
+ *
+ * Set up and connect to touch controller.
+ * The given buffer array should be same as struct drv_param
+ *
+ * @param
+ *    [ in] tcm:      the driver handle
+ *    [ in] ubuf_ptr: points to a memory space from userspace
+ *    [ in] buf_size: size of given space
+ *    [ in] in_size:  input data size
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static int syna_cdev_ioctl_config(struct syna_tcm *tcm,
+		const unsigned char *ubuf_ptr, unsigned int buf_size,
+		unsigned int in_size)
+{
+	int retval = 0;
+	struct drv_param *param;
+	bool enable = false;
+	int extra_bytes = 0;
+
+	if (in_size < sizeof(struct drv_param)) {
+		hbp_err("Invalid data input, size: %u (expected: %lu)\n",
+			in_size, sizeof(struct drv_param));
+		return -EINVAL;
+	}
+
+	syna_tcm_buf_lock(&g_cdev_cbuf);
+
+	retval = syna_tcm_buf_alloc(&g_cdev_cbuf, sizeof(struct drv_param));
+	if (retval < 0) {
+		hbp_err("Fail to allocate memory for g_cdev_cbuf, size: %lu\n",
+			sizeof(struct drv_param));
+		goto exit;
+	}
+
+	retval = copy_from_user(&g_cdev_cbuf.buf[0], ubuf_ptr, sizeof(struct drv_param));
+	if (retval) {
+		hbp_err("Fail to copy data from user space, size:%d\n", retval);
+		retval = -EBADE;
+		goto exit;
+	}
+
+	param = (struct drv_param *)&g_cdev_cbuf.buf[0];
+
+	/* update the config based on given data */
+	if (tcm->tcm_dev) {
+		/* config the read/write chunk, if user provided */
+		if (param->bus_chunk_size > 0) {
+			if (tcm->tcm_dev->max_rd_size != param->bus_chunk_size)
+				tcm->tcm_dev->max_rd_size = param->bus_chunk_size;
+			if (tcm->tcm_dev->max_wr_size != param->bus_chunk_size)
+				tcm->tcm_dev->max_wr_size = param->bus_chunk_size;
+		}
+		/* config the feature of predict reading */
+		enable = (param->feature_predict_reads == 1);
+		if (tcm->tcm_dev->msg_data.predict_reads != enable) {
+			hbp_err("request to %s predict reading\n", (enable) ? "enable":"disable");
+			syna_tcm_enable_predict_reading(tcm->tcm_dev, enable);
+		}
+		/* config the feature of extra bytes reading */
+		extra_bytes = param->feature_extra_reads;
+		if (g_sysfs_extra_bytes_read != extra_bytes) {
+			g_sysfs_extra_bytes_read = extra_bytes;
+			hbp_err("request to read in %d extra bytes\n", extra_bytes);
+		}
+	}
+
+exit:
+	syna_tcm_buf_unlock(&g_cdev_cbuf);
+
+	return retval;
+}
+/**
+ * syna_cdev_ioctl_dispatch()
+ *
+ * Dispatch the IOCTLs operation based on the given code
+ *
+ * @param
+ *    [ in] tcm:       the driver handle
+ *    [ in] code:      code for the target operation
+ *    [ in] ubuf_ptr:  points to a memory space from userspace
+ *    [ in] ubuf_size: size of given space
+ *    [ in] wr_size:   written data size
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static int syna_cdev_ioctl_dispatch(struct syna_tcm *tcm,
+		unsigned int code, const unsigned char *ubuf_ptr,
+		unsigned int ubuf_size, unsigned int *data_size)
+{
+	int retval = 0;
+
+	switch (code) {
+	case STD_SET_PID_ID:
+		hbp_info("STD_SET_PID_ID\n");
+		retval = syna_cdev_ioctl_store_pid(tcm,
+				ubuf_ptr, ubuf_size, *data_size);
+		break;
+	case STD_ENABLE_IRQ_ID:
+		/*retval = syna_cdev_ioctl_enable_irq(tcm,
+				ubuf_ptr, ubuf_size, *data_size);*/
+		hbp_err("STD_ENABLE_IRQ_ID not support\n");
+		break;
+	case STD_RAW_WRITE_ID:
+		hbp_info("STD_RAW_WRITE_ID\n");
+		retval = syna_cdev_ioctl_raw_write(tcm,
+				ubuf_ptr, ubuf_size, *data_size);
+		break;
+	case STD_RAW_READ_ID:
+		hbp_info("STD_RAW_READ_ID\n");
+		retval = syna_cdev_ioctl_raw_read(tcm,
+				ubuf_ptr, ubuf_size, *data_size);
+		break;
+	case STD_GET_FRAME_ID:
+		/*retval = syna_cdev_ioctl_get_frame(tcm,
+				ubuf_ptr, ubuf_size, data_size);*/
+		hbp_err("STD_GET_FRAME_ID not support\n");
+		break;
+	case STD_SEND_MESSAGE_ID:
+		hbp_info("STD_SEND_MESSAGE_ID\n");
+		retval = syna_cdev_ioctl_send_message(tcm,
+				ubuf_ptr, ubuf_size, data_size);
+		break;
+	case STD_SET_REPORTS_ID:
+		/*retval = syna_cdev_ioctl_set_reports(tcm,
+				ubuf_ptr, ubuf_size, *data_size);*/
+		hbp_err("STD_SET_REPORTS_ID not support\n");
+		break;
+	case STD_CHECK_FRAMES_ID:
+		/*retval = syna_cdev_ioctl_check_frame(tcm,
+				ubuf_ptr, ubuf_size, *data_size);*/
+		hbp_err("STD_CHECK_FRAMES_ID not support\n");
+		break;
+	case STD_CLEAN_OUT_FRAMES_ID:
+		/*hbp_info("STD_CLEAN_OUT_FRAMES_ID called\n");
+		syna_cdev_clean_queue(tcm);
+		retval = 0;*/
+		hbp_err("STD_CLEAN_OUT_FRAMES_ID not support\n");
+		break;
+	case STD_SET_APPLICATION_INFO_ID:
+		/*retval = syna_cdev_ioctl_application_info(tcm,
+				ubuf_ptr, ubuf_size, *data_size);*/
+		hbp_err("STD_SET_APPLICATION_INFO_ID not support\n");
+		break;
+	case STD_DO_HW_RESET_ID:
+		/*retval = syna_cdev_ioctl_do_hw_reset(tcm,
+				ubuf_ptr, ubuf_size, *data_size);*/
+		hbp_err("STD_DO_HW_RESET_ID not support\n");
+		break;
+	case STD_DRIVER_CONFIG_ID:
+		hbp_info("STD_DRIVER_CONFIG_ID\n");
+		retval = syna_cdev_ioctl_config(tcm,
+				ubuf_ptr, ubuf_size, *data_size);
+		break;
+	case STD_DRIVER_GET_CONFIG_ID:
+		hbp_info("STD_DRIVER_GET_CONFIG_ID\n");
+		retval = syna_cdev_ioctl_get_config_params(tcm,
+				ubuf_ptr, ubuf_size, *data_size);
+		break;
+	case CUS_INSERT_REQ_REPORT_DATA_ID:
+		hbp_err("Not support this ioctl code: 0x%x\n", code);
+		break;
+	case CUS_GET_POWER_STATUS_ID:
+		/*retval = syna_cdev_ioctl_get_power_status(tcm,
+				ubuf_ptr, ubuf_size, data_size);*/
+		hbp_err("CUS_GET_POWER_STATUS_ID not support\n");
+		break;
+	case CUS_GET_DRIVER_STATUS_ID:
+		/*retval = syna_cdev_ioctl_get_driver_status(tcm,
+				ubuf_ptr, ubuf_size, data_size);*/
+		hbp_err("CUS_GET_DRIVER_STATUS_ID not support\n");
+		break;
+	case CUS_SET_DRIVER_STATUS_ID:
+		/*retval = syna_cdev_ioctl_set_driver_status(tcm,
+				ubuf_ptr, ubuf_size, *data_size);*/
+		hbp_err("CUS_SET_DRIVER_STATUS_ID not support\n");
+		break;
+	default:
+		hbp_err("Unknown ioctl code: 0x%x\n", code);
+		return -EINVAL;
+	}
+
+	return retval;
+}
+/**
+ * syna_cdev_ioctl_old_dispatch()
+ *
+ * Dispatch the old IOCTLs operation based on the given code
+ *
+ * @param
+ *    [ in] tcm:      the driver handle
+ *    [ in] code:     code for the target operation
+ *    [ in] arg:      argument passed from user-space
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static int syna_cdev_ioctl_old_dispatch(struct syna_tcm *tcm,
+		unsigned int code, unsigned long arg)
+{
+	int retval = 0;
+
+	switch (code) {
+	case OLD_RESET_ID:
+		hbp_info("OLD_RESET_ID\n");
+		retval = syna_tcm_reset(tcm->tcm_dev);
+		if (retval < 0) {
+			hbp_err("Fail to do reset\n");
+			break;
+		}
+
+		/*retval = tcm->dev_set_up_app_fw(tcm);
+		if (retval < 0) {
+			hbp_err("Fail to set up app fw\n");
+			break;
+		}*/
+		syna_tcm_get_app_info(tcm->tcm_dev, &tcm->tcm_dev->app_info);
+
+		break;
+	case OLD_SET_IRQ_MODE_ID:
+		/*
+		if (!tcm->hw_if->ops_enable_irq) {
+			retval = -EFAULT;
+			break;
+		}
+
+		if (arg == 0)
+			retval = tcm->hw_if->ops_enable_irq(tcm->hw_if,
+					false);
+		else if (arg == 1)
+			retval = tcm->hw_if->ops_enable_irq(tcm->hw_if,
+					true);
+		*/
+		if (arg == 0)
+			tcm->char_dev_irq_disabled = true;
+		else if (arg == 1)
+			tcm->char_dev_irq_disabled = false;
+		hbp_info("OLD_SET_IRQ_MODE_ID, char_dev_irq_disabled = %u\n", tcm->char_dev_irq_disabled);
+		break;
+	case OLD_SET_RAW_MODE_ID:
+		hbp_info("OLD_SET_RAW_MODE_ID, arg=%lu\n", arg);
+		if (arg == 0)
+			tcm->is_attn_redirecting = false;
+		else if (arg == 1)
+			tcm->is_attn_redirecting = true;
+
+		break;
+	case OLD_CONCURRENT_ID:
+		hbp_info("OLD_CONCURRENT_ID\n");
+		retval = 0;
+		break;
+
+	default:
+		hbp_err("Unknown ioctl code: 0x%x\n", code);
+		retval = -EINVAL;
+		break;
+	}
+
+	return retval;
+}
+
+/**
+ * syna_cdev_ioctls()
+ *
+ * Used to implements the IOCTL operations
+ *
+ * @param
+ *    [ in] filp: represents the file descriptor
+ *    [ in] cmd:  command code sent from userspace
+ *    [ in] arg:  arguments sent from userspace
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+#ifdef USE_UNLOCKED_IOCTL
+static long syna_cdev_ioctls(struct file *filp, unsigned int cmd,
+		unsigned long arg)
+#else
+static int syna_cdev_ioctls(struct inode *inp, struct file *filp,
+		unsigned int cmd, unsigned long arg)
+#endif
+{
+	int retval = 0;
+	struct device *p_dev;
+	struct kobject *p_kobj;
+	struct syna_tcm *tcm;
+	struct syna_ioctl_data ioc_data;
+	unsigned char *ptr = NULL;
+
+	if (g_sysfs_has_remove == 1) {
+		hbp_err("%s:driver is remove!!\n", __func__);
+		return -EINVAL;
+	}
+
+	IF_ARG_NULL_OUT(g_sysfs_dir);
+	p_kobj = g_sysfs_dir->parent;
+	IF_ARG_NULL_OUT(p_kobj);
+	p_dev = container_of(p_kobj, struct device, kobj);
+	IF_ARG_NULL_OUT(p_dev);
+	tcm = dev_get_drvdata(p_dev);
+	IF_ARG_NULL_OUT(tcm);
+
+	hbp_info("syna_cdev_ioctls Enter, IOC_ID:0x%02X\n", (unsigned int)_IOC_NR(cmd));
+
+	syna_pal_mutex_lock(&tcm->extif_mutex);
+
+	retval = 0;
+
+	hbp_info("IOC_ID:0x%02X received\n", (unsigned int)_IOC_NR(cmd));
+
+	/* handle the old IOCTLs */
+	if ((_IOC_NR(cmd)) < STD_IOCTL_BEGIN) {
+		retval = syna_cdev_ioctl_old_dispatch(tcm,
+			(unsigned int)_IOC_NR(cmd), arg);
+
+		goto exit;
+	} else if ((_IOC_NR(cmd)) == STD_IOCTL_BEGIN) {
+		retval = 1;
+		goto exit;
+	}
+
+	// if (_IOC_NR(cmd) == STD_CHECK_FRAMES_ID)
+	// 	tcm->waiting_frame = 1;
+
+	retval = copy_from_user(&ioc_data,
+			(void __user *) arg,
+			sizeof(struct syna_ioctl_data));
+	if (retval) {
+		hbp_err("Fail to copy ioctl_data from user space, size:%d\n",
+			retval);
+		retval = -EBADE;
+		goto exit;
+	}
+
+	ptr = ioc_data.buf;
+
+	retval = syna_cdev_ioctl_dispatch(tcm,
+			(unsigned int)_IOC_NR(cmd),
+			(const unsigned char *)ptr,
+			ioc_data.buf_size,
+			&ioc_data.data_length);
+	if (retval < 0)
+		goto exit;
+
+	retval = copy_to_user((void __user *) arg,
+			&ioc_data,
+			sizeof(struct syna_ioctl_data));
+	if (retval) {
+		hbp_err("Fail to update ioctl_data to user space, size:%d\n",
+			retval);
+		retval = -EBADE;
+		goto exit;
+	}
+
+exit:
+	syna_pal_mutex_unlock(&tcm->extif_mutex);
+	// tcm->waiting_frame = 0;
+	hbp_info("syna_cdev_ioctls Exit, retval=%d\n", retval);
+
+	return retval;
+}
+
+#ifdef USE_COMPAT_IOCTL
+/**
+ * syna_cdev_compat_ioctls()
+ *
+ * Used to implements the IOCTL compatible operations
+ *
+ * @param
+ *    [ in] filp: represents the file descriptor
+ *    [ in] cmd: command code sent from userspace
+ *    [ in] arg: arguments sent from userspace
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static long syna_cdev_compat_ioctls(struct file *filp,
+		unsigned int cmd, unsigned long arg)
+{
+	int retval = 0;
+	struct device *p_dev;
+	struct kobject *p_kobj;
+	struct syna_tcm *tcm;
+	struct syna_tcm_ioctl_data_compat ioc_data;
+	unsigned char *ptr = NULL;
+
+	p_kobj = g_sysfs_dir->parent;
+	p_dev = container_of(p_kobj, struct device, kobj);
+	tcm = dev_get_drvdata(p_dev);
+
+	syna_pal_mutex_lock(&tcm->extif_mutex);
+
+	retval = 0;
+
+	/* handle the old IOCTLs */
+	if ((_IOC_NR(cmd)) < STD_IOCTL_BEGIN) {
+		retval = syna_cdev_ioctl_old_dispatch(tcm,
+			(unsigned int)_IOC_NR(cmd), arg);
+
+		goto exit;
+	} else if ((_IOC_NR(cmd)) == STD_IOCTL_BEGIN) {
+		retval = 1;
+		goto exit;
+	}
+
+	retval = copy_from_user(&ioc_data,
+		(struct syna_tcm_ioctl_data_compat __user *) compat_ptr(arg),
+		sizeof(struct syna_tcm_ioctl_data_compat));
+	if (retval) {
+		hbp_err("Fail to copy ioctl_data from user space, size:%d\n",
+			retval);
+		retval = -EBADE;
+		goto exit;
+	}
+
+	ptr = compat_ptr((unsigned long)ioc_data.buf);
+
+	retval = syna_cdev_ioctl_dispatch(tcm,
+			(unsigned int)_IOC_NR(cmd),
+			(const unsigned char *)ptr,
+			ioc_data.buf_size,
+			&ioc_data.data_length);
+	if (retval < 0)
+		goto exit;
+
+	retval = copy_to_user(compat_ptr(arg),
+			&ioc_data,
+			sizeof(struct syna_tcm_ioctl_data_compat));
+	if (retval) {
+		hbp_err("Fail to update ioctl_data to user space, size:%d\n",
+			retval);
+		retval = -EBADE;
+		goto exit;
+	}
+
+exit:
+	syna_pal_mutex_unlock(&tcm->extif_mutex);
+
+	return retval;
+}
+#endif
+
+/**
+ * syna_cdev_llseek()
+ *
+ * Used to change the current position in a file.
+ *
+ * @param
+ *    [ in] filp:   represents the file descriptor
+ *    [ in] off:    the file position
+ *    [ in] whence: flag for seeking
+ *
+ * @return
+ *    not support
+ */
+static loff_t syna_cdev_llseek(struct file *filp,
+		loff_t off, int whence)
+{
+	return -EFAULT;
+}
+/**
+ * syna_cdev_read()
+ *
+ * Used to read data through the device file.
+ * Function will use raw write approach.
+ *
+ * @param
+ *    [ in] filp:  represents the file descriptor
+ *    [out] buf:   given buffer from userspace
+ *    [ in] count: size of buffer
+ *    [ in] f_pos: the file position
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static ssize_t syna_cdev_read(struct file *filp,
+		char __user *buf, size_t count, loff_t *f_pos)
+{
+	int retval = 0;
+	struct device *p_dev;
+	struct kobject *p_kobj;
+	struct syna_tcm *tcm;
+
+	if (g_sysfs_has_remove == 1) {
+		hbp_err("%s:driver is remove!!\n", __func__);
+		return -EINVAL;
+	}
+	hbp_debug("syna_cdev_read beign\n");
+	IF_ARG_NULL_OUT(g_sysfs_dir);
+	p_kobj = g_sysfs_dir->parent;
+	IF_ARG_NULL_OUT(p_kobj);
+	p_dev = container_of(p_kobj, struct device, kobj);
+	IF_ARG_NULL_OUT(p_dev);
+	tcm = dev_get_drvdata(p_dev);
+	IF_ARG_NULL_OUT(tcm);
+
+	if (count == 0)
+		return 0;
+
+	syna_pal_mutex_lock(&tcm->extif_mutex);
+
+	retval = syna_cdev_ioctl_raw_read(tcm,
+			(const unsigned char *)buf, count, count);
+	if (retval != count) {
+		hbp_err("Invalid read operation, request:%d, return:%d\n",
+			(unsigned int)count, retval);
+	}
+
+	syna_pal_mutex_unlock(&tcm->extif_mutex);
+	hbp_debug("syna_cdev_read end\n");
+
+	return retval;
+}
+/**
+ * syna_cdev_write()
+ *
+ * Used to send data to device through the device file.
+ * Function will use raw write approach.
+ *
+ * @param
+ *    [ in] filp:  represents the file descriptor
+ *    [ in] buf:   given buffer from userspace
+ *    [ in] count: size of buffer
+ *    [ in] f_pos: the file position
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static ssize_t syna_cdev_write(struct file *filp,
+		const char __user *buf, size_t count, loff_t *f_pos)
+{
+	int retval = 0;
+	struct device *p_dev;
+	struct kobject *p_kobj;
+	struct syna_tcm *tcm;
+
+	if (g_sysfs_has_remove == 1) {
+		hbp_err("%s:driver is remove!!\n", __func__);
+		return -EINVAL;
+	}
+
+	hbp_debug("syna_cdev_write beign\n");
+	p_kobj = g_sysfs_dir->parent;
+	IF_ARG_NULL_OUT(p_kobj);
+	p_dev = container_of(p_kobj, struct device, kobj);
+	IF_ARG_NULL_OUT(p_dev);
+	tcm = dev_get_drvdata(p_dev);
+	IF_ARG_NULL_OUT(tcm);
+
+	if (count == 0)
+		return 0;
+
+	syna_pal_mutex_lock(&tcm->extif_mutex);
+	retval = syna_cdev_ioctl_raw_write(tcm,
+			(const unsigned char *)buf, count, count);
+	if (retval != count) {
+		hbp_err("Invalid write operation, request:%d, return:%d\n",
+			(unsigned int)count, retval);
+	}
+
+	syna_pal_mutex_unlock(&tcm->extif_mutex);
+	hbp_debug("syna_cdev_write end\n");
+
+	return retval;
+}
+/**
+ * syna_cdev_open()
+ *
+ * Invoked when the device file is being open, which should be
+ * always the first operation performed on the device file
+ *
+ * @param
+ *    [ in] inp:  represents a file in rootfs
+ *    [ in] filp: represents the file descriptor
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static int syna_cdev_open(struct inode *inp, struct file *filp)
+{
+	struct device *p_dev;
+	struct kobject *p_kobj;
+	struct syna_tcm *tcm;
+
+	if (g_sysfs_has_remove == 1) {
+		hbp_err("%s:driver is remove!!\n", __func__);
+		return -EINVAL;
+	}
+	p_kobj = g_sysfs_dir->parent;
+	IF_ARG_NULL_OUT(p_kobj);
+	p_dev = container_of(p_kobj, struct device, kobj);
+	IF_ARG_NULL_OUT(p_dev);
+	tcm = dev_get_drvdata(p_dev);
+	IF_ARG_NULL_OUT(tcm);
+
+	syna_pal_mutex_lock(&tcm->extif_mutex);
+
+	if (tcm->char_dev_ref_count != 0) {
+		LOGN("cdev already open, %d\n",
+			tcm->char_dev_ref_count);
+		syna_pal_mutex_unlock(&tcm->extif_mutex);
+		return -EBUSY;
+	}
+
+	tcm->char_dev_ref_count++;
+
+	g_sysfs_io_polling_interval = 0;
+
+	g_sysfs_extra_bytes_read = 0;
+
+	syna_pal_mutex_unlock(&tcm->extif_mutex);
+
+	hbp_info("cdev open\n");
+
+	return 0;
+}
+/**
+ * syna_cdev_release()
+ *
+ * Invoked when the device file is being released
+ *
+ * @param
+ *    [ in] inp:  represents a file in rootfs
+ *    [ in] filp: represents the file descriptor
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+static int syna_cdev_release(struct inode *inp, struct file *filp)
+{
+	struct device *p_dev;
+	struct kobject *p_kobj;
+	struct syna_tcm *tcm;
+
+	if (g_sysfs_has_remove == 1) {
+		hbp_err("%s:driver is remove!!\n", __func__);
+		return -EINVAL;
+	}
+
+	IF_ARG_NULL_OUT(g_sysfs_dir);
+
+	p_kobj = g_sysfs_dir->parent;
+	IF_ARG_NULL_OUT(p_kobj);
+	p_dev = container_of(p_kobj, struct device, kobj);
+	IF_ARG_NULL_OUT(p_dev);
+	tcm = dev_get_drvdata(p_dev);
+	IF_ARG_NULL_OUT(tcm);
+
+	mutex_lock(&tcm->mutex);
+	syna_pal_mutex_lock(&tcm->extif_mutex);
+
+	if (tcm->char_dev_ref_count <= 0) {
+		LOGN("cdev already closed, %d\n",
+			tcm->char_dev_ref_count);
+		syna_pal_mutex_unlock(&tcm->extif_mutex);
+		mutex_unlock(&tcm->mutex);
+		return 0;
+	}
+
+	tcm->char_dev_ref_count--;
+
+	tcm->is_attn_redirecting = false;
+	syna_pal_mutex_unlock(&tcm->extif_mutex);
+	mutex_unlock(&tcm->mutex);
+
+	g_sysfs_io_polling_interval = 0;
+
+	g_sysfs_extra_bytes_read = 0;
+
+	hbp_info("cdev close\n");
+	return 0;
+}
+
+/**
+ * Declare the operations of TouchCom device file
+ */
+static const struct file_operations device_fops = {
+	.owner = THIS_MODULE,
+#ifdef USE_UNLOCKED_IOCTL
+	.unlocked_ioctl = syna_cdev_ioctls,
+#ifdef USE_COMPAT_IOCTL
+	.compat_ioctl = syna_cdev_compat_ioctls,
+#endif
+#else
+	.ioctl = syna_cdev_ioctls,
+#endif
+	.llseek = syna_cdev_llseek,
+	.read = syna_cdev_read,
+	.write = syna_cdev_write,
+	.open = syna_cdev_open,
+	.release = syna_cdev_release,
+};
+/**
+ * syna_cdev_devnode()
+ *
+ * Provide the declaration of devtmpfs
+ *
+ * @param
+ *    [ in] dev:  an instance of device
+ *    [ in] mode: mode of created node
+ *
+ * @return
+ *    the string of devtmpfs
+ */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0))
+static char *syna_cdev_devnode(const struct device *dev, umode_t *mode)
+#else
+static char *syna_cdev_devnode(struct device *dev, umode_t *mode)
+#endif
+{
+	if (!mode)
+		return NULL;
+
+	/* S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH */
+	*mode = CHAR_DEVICE_MODE;
+
+	return kasprintf(GFP_KERNEL, "%s", dev_name(dev));
+}
+/**
+ * syna_cdev_create_sysfs()
+ *
+ * Create a device node and register it with sysfs.
+ *
+ * @param
+ *    [ in] tcm: the driver handle
+ *    [ in] pdev: an instance of platform device
+ *
+ * @return
+ *    on success, 0; otherwise, negative value on error.
+ */
+int syna_cdev_create_sysfs(struct syna_tcm *tcm,
+		struct platform_device *pdev)
+{
+	int retval = 0;
+	struct class *device_class = NULL;
+	struct device *device = NULL;
+	static int cdev_major_num;
+
+	tcm->device_class = NULL;
+	tcm->device = NULL;
+
+	tcm->is_attn_redirecting = false;
+
+	syna_pal_mutex_alloc(&tcm->mutex);
+	syna_pal_mutex_alloc(&tcm->extif_mutex);
+	syna_tcm_buf_init(&g_cdev_cbuf);
+
+	if (cdev_major_num) {
+		tcm->char_dev_num = MKDEV(cdev_major_num, 0);
+		retval = register_chrdev_region(tcm->char_dev_num, 1,
+				PLATFORM_DRIVER_NAME);
+		if (retval < 0) {
+			hbp_err("Fail to register char device\n");
+			goto err_register_chrdev_region;
+		}
+	} else {
+		retval = alloc_chrdev_region(&tcm->char_dev_num, 0, 1,
+				PLATFORM_DRIVER_NAME);
+		if (retval < 0) {
+			hbp_err("Fail to allocate char device\n");
+			goto err_alloc_chrdev_region;
+		}
+
+		cdev_major_num = MAJOR(tcm->char_dev_num);
+	}
+
+	cdev_init(&tcm->char_dev, &device_fops);
+	tcm->char_dev.owner = THIS_MODULE;
+
+	retval = cdev_add(&tcm->char_dev, tcm->char_dev_num, 1);
+	if (retval < 0) {
+		hbp_err("Fail to add cdev_add\n");
+		goto err_add_chardev;
+	}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0)
+	device_class = class_create(THIS_MODULE, PLATFORM_DRIVER_NAME);
+#else
+	device_class = class_create(PLATFORM_DRIVER_NAME);
+#endif
+	if (IS_ERR(device_class)) {
+		hbp_err("Fail to create device class\n");
+		retval = PTR_ERR(device_class);
+		goto err_create_class;
+	}
+
+	device_class->devnode = syna_cdev_devnode;
+
+	device = device_create(device_class, NULL,
+			tcm->char_dev_num, NULL,
+			CHAR_DEVICE_NAME"%d", MINOR(tcm->char_dev_num));
+	if (IS_ERR(tcm->device)) {
+		hbp_err("Fail to create character device\n");
+		retval = -ENOENT;
+		goto err_create_device;
+	}
+
+	tcm->device_class = device_class;
+
+	tcm->device = device;
+
+	tcm->char_dev_ref_count = 0;
+	tcm->proc_pid = 0;
+
+	g_sysfs_extra_bytes_read = 0;
+
+	retval = syna_sysfs_create_dir(tcm, pdev);
+	if (retval < 0) {
+		hbp_err("Fail to create sysfs dir\n");
+		retval = -ENOTDIR;
+		goto err_create_dir;
+	}
+
+	g_sysfs_has_remove = 0;
+	return 0;
+
+err_create_dir:
+	device_destroy(device_class, tcm->char_dev_num);
+err_create_device:
+	class_destroy(device_class);
+err_create_class:
+	cdev_del(&tcm->char_dev);
+err_add_chardev:
+	unregister_chrdev_region(tcm->char_dev_num, 1);
+err_alloc_chrdev_region:
+err_register_chrdev_region:
+	return retval;
+}
+/**
+ * syna_cdev_remove_sysfs()
+ *
+ * Remove the allocate cdev device node and release the resource
+ *
+ * @param
+ *    [ in] tcm: the driver handle
+ *
+ * @return
+ *    none.
+ */
+void syna_cdev_remove_sysfs(struct syna_tcm *tcm)
+{
+	if (!tcm) {
+		hbp_err("Invalid tcm driver handle\n");
+		return;
+	}
+	syna_sysfs_remove_dir(tcm);
+
+	tcm->char_dev_ref_count = 0;
+	tcm->proc_pid = 0;
+
+	if (tcm->device) {
+		device_destroy(tcm->device_class, tcm->char_dev_num);
+		class_destroy(tcm->device_class);
+		cdev_del(&tcm->char_dev);
+		unregister_chrdev_region(tcm->char_dev_num, 1);
+	}
+
+	syna_tcm_buf_release(&g_cdev_cbuf);
+
+	syna_pal_mutex_free(&tcm->extif_mutex);
+
+	tcm->device_class = NULL;
+
+	tcm->device = NULL;
+	g_sysfs_has_remove = 1;
+}
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_dev.h b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_core_dev.h
similarity index 98%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_dev.h
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_core_dev.h
index 35cdebad..e218cb74 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_dev.h
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_core_dev.h
@@ -38,6 +38,7 @@
  */
 
 #include "../syna_tcm2_runtime.h"
+#include "../../../../utils/debug.h"
 
 #ifndef _SYNAPTICS_TOUCHCOM_CORE_DEV_H_
 #define _SYNAPTICS_TOUCHCOM_CORE_DEV_H_
@@ -959,7 +960,7 @@ static inline int syna_tcm_buf_alloc(struct tcm_buffer *pbuf,
 		unsigned int size)
 {
 	if (!pbuf) {
-		LOGE("Invalid buffer structure\n");
+		hbp_err("Invalid buffer structure\n");
 		return -1;
 	}
 
@@ -969,7 +970,7 @@ static inline int syna_tcm_buf_alloc(struct tcm_buffer *pbuf,
 
 		pbuf->buf = syna_pal_mem_alloc(size, sizeof(unsigned char));
 		if (!(pbuf->buf)) {
-			LOGE("Fail to allocate memory (size = %d)\n",
+			hbp_err("Fail to allocate memory (size = %d)\n",
 				(int)(size*sizeof(unsigned char)));
 			pbuf->buf_size = 0;
 			pbuf->data_length = 0;
@@ -1006,7 +1007,7 @@ static inline int syna_tcm_buf_realloc(struct tcm_buffer *pbuf,
 	unsigned int temp_size = 0;
 
 	if (!pbuf) {
-		LOGE("Invalid buffer structure\n");
+		hbp_err("Invalid buffer structure\n");
 		return -1;
 	}
 
@@ -1016,7 +1017,7 @@ static inline int syna_tcm_buf_realloc(struct tcm_buffer *pbuf,
 
 		pbuf->buf = syna_pal_mem_alloc(size, sizeof(unsigned char));
 		if (!(pbuf->buf)) {
-			LOGE("Fail to allocate memory (size = %d)\n",
+			hbp_err("Fail to allocate memory (size = %d)\n",
 				(int)(size * sizeof(unsigned char)));
 			syna_pal_mem_free((void *)temp_src);
 			pbuf->buf_size = 0;
@@ -1029,7 +1030,7 @@ static inline int syna_tcm_buf_realloc(struct tcm_buffer *pbuf,
 				temp_size,
 				temp_size);
 		if (retval < 0) {
-			LOGE("Fail to copy data\n");
+			hbp_err("Fail to copy data\n");
 			syna_pal_mem_free((void *)temp_src);
 			syna_pal_mem_free((void *)pbuf->buf);
 			pbuf->buf_size = 0;
@@ -1075,7 +1076,7 @@ static inline void syna_tcm_buf_init(struct tcm_buffer *pbuf)
 static inline void syna_tcm_buf_lock(struct tcm_buffer *pbuf)
 {
 	if (pbuf->ref_cnt != 0)
-		LOGE("Buffer access out-of balance, %d\n", pbuf->ref_cnt);
+		hbp_err("Buffer access out-of balance, %d\n", pbuf->ref_cnt);
 
 	syna_pal_mutex_lock(&pbuf->buf_mutex);
 	pbuf->ref_cnt++;
@@ -1094,7 +1095,7 @@ static inline void syna_tcm_buf_lock(struct tcm_buffer *pbuf)
 static inline void syna_tcm_buf_unlock(struct tcm_buffer *pbuf)
 {
 	if (pbuf->ref_cnt != 1)
-		LOGE("Buffer access out-of balance, %d\n", pbuf->ref_cnt);
+		hbp_err("Buffer access out-of balance, %d\n", pbuf->ref_cnt);
 
 	pbuf->ref_cnt--;
 	syna_pal_mutex_unlock(&pbuf->buf_mutex);
@@ -1113,7 +1114,7 @@ static inline void syna_tcm_buf_unlock(struct tcm_buffer *pbuf)
 static inline void syna_tcm_buf_release(struct tcm_buffer *pbuf)
 {
 	if (pbuf->ref_cnt != 0)
-		LOGE("Buffer access hold, %d\n", pbuf->ref_cnt);
+		hbp_err("Buffer access hold, %d\n", pbuf->ref_cnt);
 
 	syna_pal_mutex_free(&pbuf->buf_mutex);
 	syna_pal_mem_free((void *)pbuf->buf);
@@ -1162,7 +1163,7 @@ static inline int syna_tcm_buf_copy(struct tcm_buffer *dest,
 	if (dest->buf_size < src->data_length) {
 		retval = syna_tcm_buf_alloc(dest, src->data_length + 1);
 		if (retval < 0) {
-			LOGE("Fail to reallocate the given buffer, size: %d\n",
+			hbp_err("Fail to reallocate the given buffer, size: %d\n",
 				src->data_length + 1);
 			return retval;
 		}
@@ -1175,7 +1176,7 @@ static inline int syna_tcm_buf_copy(struct tcm_buffer *dest,
 			src->buf_size,
 			src->data_length);
 	if (retval < 0) {
-		LOGE("Fail to copy data to caller, size: %d\n",
+		hbp_err("Fail to copy data to caller, size: %d\n",
 			src->data_length);
 		return retval;
 	}
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_v1.c b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_core_v1.c
similarity index 91%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_v1.c
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_core_v1.c
index c2f69f1d..bf3477dc 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_v1.c
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_core_v1.c
@@ -76,7 +76,7 @@ static void syna_tcm_v1_update_crc(struct tcm_dev *tcm_dev)
 	int offset;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return;
 	}
 
@@ -133,7 +133,7 @@ static int syna_tcm_v1_set_max_rw_size(struct tcm_dev *tcm_dev)
 	struct tcm_identification_info *id_info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -142,7 +142,7 @@ static int syna_tcm_v1_set_max_rw_size(struct tcm_dev *tcm_dev)
 	wr_size = syna_pal_le2_to_uint(id_info->max_write_size);
 
 	if (wr_size == 0) {
-		LOGE("Invalid max write size from identify report\n");
+		hbp_err("Invalid max write size from identify report\n");
 		return 0;
 	}
 
@@ -184,12 +184,12 @@ static int syna_tcm_v1_parse_idinfo(struct tcm_dev *tcm_dev,
 	struct tcm_identification_info *id_info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if ((!data) || (data_len == 0)) {
-		LOGE("Invalid given data buffer\n");
+		hbp_err("Invalid given data buffer\n");
 		return _EINVAL;
 	}
 
@@ -201,7 +201,7 @@ static int syna_tcm_v1_parse_idinfo(struct tcm_dev *tcm_dev,
 			size,
 			MIN(sizeof(*id_info), data_len));
 	if (retval < 0) {
-		LOGE("Fail to copy identification info\n");
+		hbp_err("Fail to copy identification info\n");
 		return retval;
 	}
 
@@ -210,7 +210,7 @@ static int syna_tcm_v1_parse_idinfo(struct tcm_dev *tcm_dev,
 	if (tcm_dev->packrat_number != build_id)
 		tcm_dev->packrat_number = build_id;
 
-	LOGI("TCM Fw mode: 0x%02x\n", id_info->mode);
+	hbp_info("TCM Fw mode: 0x%02x\n", id_info->mode);
 
 	tcm_dev->dev_mode = id_info->mode;
 
@@ -239,7 +239,7 @@ static void syna_tcm_v1_dispatch_report(struct tcm_dev *tcm_dev)
 	syna_pal_completion_t *cmd_completion = NULL;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return;
 	}
 
@@ -260,7 +260,7 @@ static void syna_tcm_v1_dispatch_report(struct tcm_dev *tcm_dev)
 	retval = syna_tcm_buf_alloc(&tcm_dev->report_buf,
 			tcm_msg->payload_length);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for internal buf.report\n");
+		hbp_err("Fail to allocate memory for internal buf.report\n");
 		syna_tcm_buf_unlock(&tcm_dev->report_buf);
 		goto exit;
 	}
@@ -273,7 +273,7 @@ static void syna_tcm_v1_dispatch_report(struct tcm_dev *tcm_dev)
 			tcm_msg->in.buf_size - MESSAGE_HEADER_SIZE,
 			tcm_msg->payload_length);
 	if (retval < 0) {
-		LOGE("Fail to copy payload to buf_report\n");
+		hbp_err("Fail to copy payload to buf_report\n");
 		syna_tcm_buf_unlock(&tcm_msg->in);
 		syna_tcm_buf_unlock(&tcm_dev->report_buf);
 		goto exit;
@@ -295,7 +295,7 @@ static void syna_tcm_v1_dispatch_report(struct tcm_dev *tcm_dev)
 				tcm_msg->in.buf_size - MESSAGE_HEADER_SIZE,
 				tcm_msg->payload_length);
 		if (retval < 0) {
-			LOGE("Fail to identify device\n");
+			hbp_err("Fail to identify device\n");
 			syna_tcm_buf_unlock(&tcm_msg->in);
 			return;
 		}
@@ -331,7 +331,7 @@ static void syna_tcm_v1_dispatch_report(struct tcm_dev *tcm_dev)
 				syna_pal_completion_complete(cmd_completion);
 				goto exit;
 			default:
-				LOGI("Unexpected 0x%02X report received\n",
+				hbp_info("Unexpected 0x%02X report received\n",
 					REPORT_IDENTIFY);
 				ATOMIC_SET(tcm_msg->command_status,
 					CMD_STATE_ERROR);
@@ -374,9 +374,9 @@ static void syna_tcm_v1_dispatch_response(struct tcm_dev *tcm_dev)
 	struct tcm_message_data_blob *tcm_msg = NULL;
 	syna_pal_completion_t *cmd_completion = NULL;
 
-LOGI("%s start\n", __func__);
+	LOGD("%s start\n", __func__);
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return;
 	}
 
@@ -386,12 +386,12 @@ LOGI("%s start\n", __func__);
 	tcm_msg->response_code = tcm_msg->status_report_code;
 
 	if (ATOMIC_GET(tcm_msg->command_status) != CMD_STATE_BUSY) {
-		LOGI("Command status is not busy\n");
+		hbp_info("Command status is not busy\n");
 		return;
 	}
 
 	if (tcm_msg->payload_length == 0) {
-		LOGI("%s payload_length == 0\n", __func__);
+		hbp_info("%s payload_length == 0\n", __func__);
 		tcm_dev->resp_buf.data_length = tcm_msg->payload_length;
 		ATOMIC_SET(tcm_msg->command_status, CMD_STATE_IDLE);
 		goto exit;
@@ -403,7 +403,7 @@ LOGI("%s start\n", __func__);
 	retval = syna_tcm_buf_alloc(&tcm_dev->resp_buf,
 			tcm_msg->payload_length);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for internal buf.resp\n");
+		hbp_err("Fail to allocate memory for internal buf.resp\n");
 		syna_tcm_buf_unlock(&tcm_dev->resp_buf);
 		goto exit;
 	}
@@ -416,7 +416,7 @@ LOGI("%s start\n", __func__);
 			tcm_msg->in.buf_size - MESSAGE_HEADER_SIZE,
 			tcm_msg->payload_length);
 	if (retval < 0) {
-		LOGE("Fail to copy payload to internal resp_buf\n");
+		hbp_err("Fail to copy payload to internal resp_buf\n");
 		syna_tcm_buf_unlock(&tcm_msg->in);
 		syna_tcm_buf_unlock(&tcm_dev->resp_buf);
 		goto exit;
@@ -430,7 +430,7 @@ LOGI("%s start\n", __func__);
 	ATOMIC_SET(tcm_msg->command_status, CMD_STATE_IDLE);
 
 exit:
-LOGI("%s end\n", __func__);
+	LOGD("%s end\n", __func__);
 	syna_pal_completion_complete(cmd_completion);
 }
 
@@ -459,12 +459,12 @@ static int syna_tcm_v1_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 	int retry;
 	LOGD("%s start\n", __func__);
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_ERR_OR_NULL(buf)) {
-		LOGE("Invalid pointer buf\n");
+		hbp_err("Invalid pointer buf\n");
 		return _EINVAL;
 	}
 
@@ -472,7 +472,7 @@ static int syna_tcm_v1_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 		return 0;
 
 	if (rd_length > buf_size) {
-		LOGE("Invalid read length, len: %d, buf_size: %d\n",
+		hbp_err("Invalid read length, len: %d, buf_size: %d\n",
 			rd_length, buf_size);
 		return _EINVAL;
 	}
@@ -480,7 +480,7 @@ static int syna_tcm_v1_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 	max_rd_size = tcm_dev->max_rd_size;
 
 	if ((max_rd_size != 0) && (rd_length > max_rd_size)) {
-		LOGE("Invalid read length, len: %d, max_rd_size: %d\n",
+		hbp_err("Invalid read length, len: %d, max_rd_size: %d\n",
 			rd_length, max_rd_size);
 		return _EINVAL;
 	}
@@ -494,7 +494,7 @@ static int syna_tcm_v1_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 				rd_length
 				);
 		if (retval < 0) {
-			LOGE("Fail to read %d bytes to device\n", rd_length);
+			hbp_err("Fail to read %d bytes to device\n", rd_length);
 			goto exit;
 		}
 
@@ -502,7 +502,7 @@ static int syna_tcm_v1_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 		if (buf[0] == TCM_V1_MESSAGE_MARKER)
 			break;
 
-		LOGE("Incorrect header marker, 0x%02x (retry:%d)\n",
+		hbp_err("Incorrect header marker, 0x%02x (retry:%d)\n",
 			buf[0], retry);
 
 		retval = _EIO;
@@ -540,7 +540,7 @@ static int syna_tcm_v1_write(struct tcm_dev *tcm_dev, unsigned char command,
 	unsigned char crc16[TCM_MSG_CRC_LENGTH] = { 0 };
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -559,7 +559,7 @@ static int syna_tcm_v1_write(struct tcm_dev *tcm_dev, unsigned char command,
 
 	retval = syna_tcm_buf_alloc(&tcm_msg->out, buf_size);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for internal buf.out\n");
+		hbp_err("Fail to allocate memory for internal buf.out\n");
 		goto exit;
 	}
 
@@ -581,7 +581,7 @@ static int syna_tcm_v1_write(struct tcm_dev *tcm_dev, unsigned char command,
 					payload_len
 					);
 			if (retval < 0) {
-				LOGE("Fail to copy payload\n");
+				hbp_err("Fail to copy payload\n");
 				goto exit;
 			}
 		}
@@ -600,7 +600,7 @@ static int syna_tcm_v1_write(struct tcm_dev *tcm_dev, unsigned char command,
 				payload_len
 				);
 		if (retval < 0) {
-			LOGE("Fail to copy continued write\n");
+			hbp_err("Fail to copy continued write\n");
 			goto exit;
 		}
 	}
@@ -614,7 +614,7 @@ static int syna_tcm_v1_write(struct tcm_dev *tcm_dev, unsigned char command,
 				sizeof(crc16)
 				);
 		if (retval < 0) {
-			LOGE("Fail to append crc16\n");
+			hbp_err("Fail to append crc16\n");
 			goto exit;
 		}
 
@@ -627,7 +627,7 @@ static int syna_tcm_v1_write(struct tcm_dev *tcm_dev, unsigned char command,
 			size
 			);
 	if (retval < 0) {
-		LOGE("Fail to write %d bytes to device\n", size);
+		hbp_err("Fail to write %d bytes to device\n", size);
 		goto exit;
 	}
 
@@ -666,7 +666,7 @@ static int syna_tcm_v1_continued_read(struct tcm_dev *tcm_dev,
 	bool last = false;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -676,7 +676,7 @@ static int syna_tcm_v1_continued_read(struct tcm_dev *tcm_dev,
 		return 0;
 
 	if ((length & 0xffff) == 0xffff) {
-		LOGE("Invalid length to read\n");
+		hbp_err("Invalid length to read\n");
 		return _EINVAL;
 	}
 
@@ -706,7 +706,7 @@ static int syna_tcm_v1_continued_read(struct tcm_dev *tcm_dev,
 	retval = syna_tcm_buf_realloc(&tcm_msg->in,
 			total_length + 1);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for internal buf_in\n");
+		hbp_err("Fail to allocate memory for internal buf_in\n");
 		syna_tcm_buf_unlock(&tcm_msg->in);
 		return retval;
 	}
@@ -745,7 +745,7 @@ static int syna_tcm_v1_continued_read(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_buf_alloc(&tcm_msg->temp,
 				xfer_length + 2);
 		if (retval < 0) {
-			LOGE("Fail to allocate memory for internal buf.temp\n");
+			hbp_err("Fail to allocate memory for internal buf.temp\n");
 			goto exit;
 		}
 		/* retrieve data from the bus
@@ -757,7 +757,7 @@ static int syna_tcm_v1_continued_read(struct tcm_dev *tcm_dev,
 				tcm_msg->temp.buf_size,
 				(tcm_msg->has_crc) && last);
 		if (retval < 0) {
-			LOGE("Fail to read %d bytes from device\n",
+			hbp_err("Fail to read %d bytes from device\n",
 				xfer_length + 2);
 			goto exit;
 		}
@@ -768,7 +768,7 @@ static int syna_tcm_v1_continued_read(struct tcm_dev *tcm_dev,
 		code = tcm_msg->temp.buf[1];
 
 		if (code != STATUS_CONTINUED_READ) {
-			LOGE("Incorrect status code 0x%02x at %d out of %d\n",
+			hbp_err("Incorrect status code 0x%02x at %d out of %d\n",
 					code, idx, chunks);
 			retval = _EIO;
 			goto exit;
@@ -781,7 +781,7 @@ static int syna_tcm_v1_continued_read(struct tcm_dev *tcm_dev,
 				tcm_msg->temp.buf_size - 2,
 				xfer_length);
 		if (retval < 0) {
-			LOGE("Fail to copy payload\n");
+			hbp_err("Fail to copy payload\n");
 			goto exit;
 		}
 
@@ -823,7 +823,7 @@ static int syna_tcm_v1_read_message(struct tcm_dev *tcm_dev,
 	unsigned int tmp_len;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -866,7 +866,7 @@ static int syna_tcm_v1_read_message(struct tcm_dev *tcm_dev,
 	if (len > tcm_msg->in.buf_size) {
 		retval = syna_tcm_buf_alloc(&tcm_msg->in, len);
 		if (retval < 0) {
-			LOGE("Fail to allocate memory for buf_in\n");
+			hbp_err("Fail to allocate memory for buf_in\n");
 			syna_tcm_buf_unlock(&tcm_msg->in);
 
 			tcm_msg->status_report_code = STATUS_INVALID;
@@ -882,7 +882,7 @@ static int syna_tcm_v1_read_message(struct tcm_dev *tcm_dev,
 			tcm_msg->in.buf_size,
 			false);
 	if (retval < 0) {
-		LOGE("Fail to read message header from device\n");
+		hbp_err("Fail to read message header from device\n");
 		syna_tcm_buf_unlock(&tcm_msg->in);
 
 		tcm_msg->status_report_code = STATUS_INVALID;
@@ -929,7 +929,7 @@ static int syna_tcm_v1_read_message(struct tcm_dev *tcm_dev,
 	/* retrieve the remaining data, if any */
 	retval = syna_tcm_v1_continued_read(tcm_dev, len);
 	if (retval < 0) {
-		LOGE("Fail to do continued read\n");
+		hbp_err("Fail to do continued read\n");
 		goto exit;
 	}
 
@@ -953,7 +953,7 @@ do_dispatch:
 		retval = syna_tcm_buf_alloc(&tcm_dev->external_buf,
 				tcm_msg->payload_length);
 		if (retval < 0) {
-			LOGE("Fail to allocate memory, external_buf invalid\n");
+			hbp_err("Fail to allocate memory, external_buf invalid\n");
 		} else {
 			retval = syna_pal_mem_cpy(&tcm_dev->external_buf.buf[0],
 				tcm_msg->payload_length,
@@ -961,11 +961,11 @@ do_dispatch:
 				tcm_msg->in.buf_size - MESSAGE_HEADER_SIZE,
 				tcm_msg->payload_length);
 			if (retval < 0)
-				LOGE("Fail to copy data to external buffer\n");
+				hbp_err("Fail to copy data to external buffer\n");
 		}
 	}
 	tcm_dev->external_buf.data_length = tcm_msg->payload_length;
-	//LOGI("tcm_dev->external_buf:%*ph\n", tcm_msg->payload_length, tcm_dev->external_buf.buf);
+	//hbp_info("tcm_dev->external_buf:%*ph\n", tcm_msg->payload_length, tcm_dev->external_buf.buf);
 	syna_tcm_buf_unlock(&tcm_dev->external_buf);
 
 	if ((tcm_msg->status_report_code <= STATUS_ERROR) ||
@@ -974,14 +974,14 @@ do_dispatch:
 		case STATUS_OK:
 			break;
 		case STATUS_CONTINUED_READ:
-			LOGE("Out-of-sync continued read\n");
+			hbp_err("Out-of-sync continued read\n");
 			retval = _EIO;
 			goto exit;
 		case STATUS_IDLE:
 			retval = 0;
 			goto exit;
 		default:
-			LOGE("Incorrect Status code, 0x%02x\n",
+			hbp_err("Incorrect Status code, 0x%02x\n",
 				tcm_msg->status_report_code);
 			break;
 		}
@@ -1068,7 +1068,7 @@ static int syna_tcm_v1_write_message(struct tcm_dev *tcm_dev,
 	unsigned short crc16 = 0xFFFF;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1107,7 +1107,7 @@ static int syna_tcm_v1_write_message(struct tcm_dev *tcm_dev,
 
 	remaining_length = payload_len;
 
-	LOGI("Command: 0x%02x, payload len: %d\n", command, payload_len);
+	hbp_info("Command: 0x%02x, payload len: %d\n", command, payload_len);
 
 	/* calculate the crc if supported */
 	if (tcm_msg->has_crc) {
@@ -1119,7 +1119,7 @@ static int syna_tcm_v1_write_message(struct tcm_dev *tcm_dev,
 		if (payload_len > 0)
 			crc16 = syna_tcm_crc16(payload, payload_len, crc16);
 
-		LOGI("CRC to write: 0x%04X\n", crc16);
+		hbp_info("CRC to write: 0x%04X\n", crc16);
 	}
 
 	/* available space for payload = total size - command byte */
@@ -1163,7 +1163,7 @@ static int syna_tcm_v1_write_message(struct tcm_dev *tcm_dev,
 		}
 
 		if (retval < 0) {
-			LOGE("Fail to write %d bytes to device\n",
+			hbp_err("Fail to write %d bytes to device\n",
 				xfer_length);
 			syna_pal_mutex_unlock(rw_mutex);
 			goto exit;
@@ -1189,12 +1189,12 @@ static int syna_tcm_v1_write_message(struct tcm_dev *tcm_dev,
 	if (!in_polling) {
 		// zhongwenjie: don't need to wait for response
 		//polling_ms = CMD_RESPONSE_TIMEOUT_MS;
-		LOGI("not wait response not in polling\n");
+		hbp_info("not wait response not in polling\n");
 		ATOMIC_SET(tcm_msg->command_status, CMD_STATE_IDLE);
 		goto check_response;
 	} else {
 		polling_ms = delay_ms_resp;
-		LOGI("polling_ms=%u\n", polling_ms);
+		hbp_info("polling_ms=%u\n", polling_ms);
 	}
 
 	do {
@@ -1232,13 +1232,13 @@ LOGD("5\n");
 check_response:
 	if (ATOMIC_GET(tcm_msg->command_status) != CMD_STATE_IDLE) {
 		if (timeout >= CMD_RESPONSE_TIMEOUT_MS) {
-			LOGE("Timed out wait for response of command 0x%02x\n",
+			hbp_err("Timed out wait for response of command 0x%02x\n",
 				command/*, gpio_get_value(tcm_dev->hw_if->bdata_attn.irq_gpio),
 				(tcm_dev->hw_if->bdata_attn.irq_enabled) ? "Enabled" : "Disabled"*/);
 			retval = _ETIMEDOUT;
 			goto exit;
 		} else {
-			LOGE("Fail to get valid response of command 0x%02x\n",
+			hbp_err("Fail to get valid response of command 0x%02x\n",
 				command);
 			retval = _EIO;
 			goto exit;
@@ -1246,7 +1246,7 @@ check_response:
 	}
 
 	/* copy response code to the caller */
-	LOGI("Received code 0x%02x\n",
+	hbp_info("Received code 0x%02x\n",
 		tcm_msg->status_report_code);
 
 	//zhongwenjie, add for response code
@@ -1257,7 +1257,7 @@ check_response:
 		*resp_code = tcm_msg->status_report_code;
 
 	if (tcm_msg->response_code != STATUS_OK) {
-		LOGE("Received code 0x%02x (command 0x%02x)\n",
+		hbp_err("Received code 0x%02x (command 0x%02x)\n",
 			tcm_msg->status_report_code, tcm_msg->command);
 		retval = _EIO;
 	} else {
@@ -1293,7 +1293,7 @@ exit:
 void syna_tcm_v1_set_ops(struct tcm_dev *tcm_dev)
 {
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return;
 	}
 
@@ -1331,12 +1331,12 @@ int syna_tcm_v1_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 	unsigned short default_rc = 0x5a;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if ((!data) || (size != MESSAGE_HEADER_SIZE)) {
-		LOGE("Invalid parameters\n");
+		hbp_err("Invalid parameters\n");
 		return _EINVAL;
 	}
 
@@ -1344,9 +1344,9 @@ int syna_tcm_v1_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 
 	header = (struct tcm_v1_message_header *)data;
 
-	LOGI("check header->marker(0x%x)\n", header->marker);
+	hbp_info("check header->marker(0x%x)\n", header->marker);
 	if (header->marker != TCM_V1_MESSAGE_MARKER) {
-		LOGE("Invalid header->marker\n");
+		hbp_err("Invalid header->marker\n");
 		return _ENODEV;
 	}
 
@@ -1367,7 +1367,7 @@ int syna_tcm_v1_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 		retval = syna_tcm_v1_continued_read(tcm_dev,
 				payload_length);
 		if (retval < 0) {
-			LOGE("Fail to read in identify info packet\n");
+			hbp_err("Fail to read in identify info packet\n");
 			return retval;
 		}
 	} else {
@@ -1387,7 +1387,7 @@ int syna_tcm_v1_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 					&resp_code,
 					RESET_DELAY_MS);
 			if (retval < 0) {
-				LOGE("Fail to identify at startup\n");
+				hbp_err("Fail to identify at startup\n");
 				return retval;
 			}
 		}
@@ -1405,7 +1405,7 @@ int syna_tcm_v1_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 				tcm_msg->in.buf_size - MESSAGE_HEADER_SIZE,
 				payload_length);
 		if (retval < 0) {
-			LOGE("Fail to parse identify report at startup\n");
+			hbp_err("Fail to parse identify report at startup\n");
 			syna_tcm_buf_unlock(&tcm_msg->in);
 			return retval;
 		}
@@ -1416,7 +1416,7 @@ int syna_tcm_v1_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 	/* set up the max. reading length at startup */
 	retval = syna_tcm_v1_set_max_rw_size(tcm_dev);
 	if (retval < 0) {
-		LOGE("Fail to setup the max length to read/write\n");
+		hbp_err("Fail to setup the max length to read/write\n");
 		return retval;
 	}
 
@@ -1429,9 +1429,9 @@ int syna_tcm_v1_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 	if (tcm_dev->msg_data.rc_byte == default_rc)
 		tcm_msg->has_extra_rc = false;
 
-	LOGI("Message appending: crc:(%s)\n",
+	hbp_info("Message appending: crc:(%s)\n",
 			(tcm_msg->has_crc) ? "yes" : "no");
-	LOGI("Message appending: extra rc:(%s)\n",
+	hbp_info("Message appending: extra rc:(%s)\n",
 			(tcm_msg->has_extra_rc) ? "yes" : "no");
 
 	/* set up read/write operations */
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_v2.c b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_core_v2.c
similarity index 91%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_v2.c
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_core_v2.c
index 0ea6f046..a933d983 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_v2.c
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_core_v2.c
@@ -88,7 +88,7 @@ static int syna_tcm_v2_set_max_rw_size(struct tcm_dev *tcm_dev)
 	unsigned char data[2] = { 0 };
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -98,12 +98,12 @@ static int syna_tcm_v2_set_max_rw_size(struct tcm_dev *tcm_dev)
 	wr_size = syna_pal_le2_to_uint(id_info->max_write_size);
 
 	if (wr_size == 0) {
-		LOGE("Invalid max write size from identify report\n");
+		hbp_err("Invalid max write size from identify report\n");
 		return 0;
 	}
 
 	if (rd_size == 0) {
-		LOGE("Invalid max read size from identify report\n");
+		hbp_err("Invalid max read size from identify report\n");
 		return 0;
 	}
 
@@ -135,7 +135,7 @@ static int syna_tcm_v2_set_max_rw_size(struct tcm_dev *tcm_dev)
 				data,
 				sizeof(data));
 		if (retval < 0) {
-			LOGE("Fail to set max read size\n");
+			hbp_err("Fail to set max read size\n");
 			return retval;
 		}
 
@@ -168,12 +168,12 @@ static int syna_tcm_v2_parse_idinfo(struct tcm_dev *tcm_dev,
 	struct tcm_identification_info *id_info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if ((!data) || (data_len == 0)) {
-		LOGE("Invalid given data buffer\n");
+		hbp_err("Invalid given data buffer\n");
 		return _EINVAL;
 	}
 
@@ -185,7 +185,7 @@ static int syna_tcm_v2_parse_idinfo(struct tcm_dev *tcm_dev,
 			size,
 			MIN(sizeof(*id_info), data_len));
 	if (retval < 0) {
-		LOGE("Fail to copy identification info\n");
+		hbp_err("Fail to copy identification info\n");
 		return retval;
 	}
 
@@ -194,7 +194,7 @@ static int syna_tcm_v2_parse_idinfo(struct tcm_dev *tcm_dev,
 	if (tcm_dev->packrat_number != build_id)
 		tcm_dev->packrat_number = build_id;
 
-	LOGI("TCM Fw mode: 0x%02x\n", id_info->mode);
+	hbp_info("TCM Fw mode: 0x%02x\n", id_info->mode);
 
 	tcm_dev->dev_mode = id_info->mode;
 
@@ -223,7 +223,7 @@ static void syna_tcm_v2_dispatch_report(struct tcm_dev *tcm_dev)
 	syna_pal_completion_t *cmd_completion = NULL;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return;
 	}
 
@@ -244,7 +244,7 @@ static void syna_tcm_v2_dispatch_report(struct tcm_dev *tcm_dev)
 	retval = syna_tcm_buf_alloc(&tcm_dev->report_buf,
 			tcm_msg->payload_length);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for internal buf.report\n");
+		hbp_err("Fail to allocate memory for internal buf.report\n");
 		syna_tcm_buf_unlock(&tcm_dev->report_buf);
 		goto exit;
 	}
@@ -257,7 +257,7 @@ static void syna_tcm_v2_dispatch_report(struct tcm_dev *tcm_dev)
 			tcm_msg->in.buf_size - MESSAGE_HEADER_SIZE,
 			tcm_msg->payload_length);
 	if (retval < 0) {
-		LOGE("Fail to copy payload to buf_report\n");
+		hbp_err("Fail to copy payload to buf_report\n");
 		syna_tcm_buf_unlock(&tcm_msg->in);
 		syna_tcm_buf_unlock(&tcm_dev->report_buf);
 		goto exit;
@@ -279,7 +279,7 @@ static void syna_tcm_v2_dispatch_report(struct tcm_dev *tcm_dev)
 				tcm_msg->in.buf_size - MESSAGE_HEADER_SIZE,
 				tcm_msg->payload_length);
 		if (retval < 0) {
-			LOGE("Fail to identify device\n");
+			hbp_err("Fail to identify device\n");
 			syna_tcm_buf_unlock(&tcm_msg->in);
 			return;
 		}
@@ -289,7 +289,7 @@ static void syna_tcm_v2_dispatch_report(struct tcm_dev *tcm_dev)
 		/* do setup in case of differences in read/write size */
 		retval = syna_tcm_v2_set_max_rw_size(tcm_dev);
 		if (retval < 0) {
-			LOGE("Fail to setup the max length to read/write\n");
+			hbp_err("Fail to setup the max length to read/write\n");
 			return;
 		}
 		if (0x0b == tcm_dev->dev_mode) {
@@ -321,7 +321,7 @@ static void syna_tcm_v2_dispatch_report(struct tcm_dev *tcm_dev)
 				syna_pal_completion_complete(cmd_completion);
 				goto exit;
 			default:
-				LOGI("Unexpected 0x%02X report received\n",
+				hbp_info("Unexpected 0x%02X report received\n",
 					REPORT_IDENTIFY);
 				ATOMIC_SET(tcm_msg->command_status,
 					CMD_STATE_ERROR);
@@ -365,7 +365,7 @@ static void syna_tcm_v2_dispatch_response(struct tcm_dev *tcm_dev)
 	syna_pal_completion_t *cmd_completion = NULL;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return;
 	}
 
@@ -388,7 +388,7 @@ static void syna_tcm_v2_dispatch_response(struct tcm_dev *tcm_dev)
 	retval = syna_tcm_buf_alloc(&tcm_dev->resp_buf,
 			resp_data_length + 1);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for internal buf.resp\n");
+		hbp_err("Fail to allocate memory for internal buf.resp\n");
 		syna_tcm_buf_unlock(&tcm_dev->resp_buf);
 		ATOMIC_SET(tcm_msg->command_status, CMD_STATE_ERROR);
 		goto exit;
@@ -402,7 +402,7 @@ static void syna_tcm_v2_dispatch_response(struct tcm_dev *tcm_dev)
 			tcm_msg->in.buf_size - MESSAGE_HEADER_SIZE,
 			resp_data_length);
 	if (retval < 0) {
-		LOGE("Fail to copy payload to internal resp_buf\n");
+		hbp_err("Fail to copy payload to internal resp_buf\n");
 		syna_tcm_buf_unlock(&tcm_msg->in);
 		syna_tcm_buf_unlock(&tcm_dev->resp_buf);
 		ATOMIC_SET(tcm_msg->command_status, CMD_STATE_ERROR);
@@ -448,7 +448,7 @@ static int syna_tcm_v2_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 	struct tcm_message_data_blob *tcm_msg = NULL;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -463,7 +463,7 @@ static int syna_tcm_v2_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 	xfer_len += sizeof(struct tcm_v2_message_header);
 
 	if ((max_rd_size != 0) && (xfer_len > max_rd_size)) {
-		LOGE("Invalid xfer length, len: %d, max_rd_size: %d\n",
+		hbp_err("Invalid xfer length, len: %d, max_rd_size: %d\n",
 			xfer_len, max_rd_size);
 		tcm_msg->status_report_code = STATUS_INVALID;
 		return _EINVAL;
@@ -474,7 +474,7 @@ static int syna_tcm_v2_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 	/* allocate the internal temp buffer */
 	retval = syna_tcm_buf_alloc(&tcm_msg->temp, xfer_len);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for internal buf.temp\n");
+		hbp_err("Fail to allocate memory for internal buf.temp\n");
 		goto exit;
 	}
 	/* read data from the bus */
@@ -482,7 +482,7 @@ static int syna_tcm_v2_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 			tcm_msg->temp.buf,
 			xfer_len);
 	if (retval < 0) {
-		LOGE("Fail to read from device\n");
+		hbp_err("Fail to read from device\n");
 		goto exit;
 	}
 
@@ -491,7 +491,7 @@ static int syna_tcm_v2_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 	/* check header crc always */
 	crc6 = syna_tcm_crc6(header->data, BITS_IN_MESSAGE_HEADER);
 	if (crc6 != 0) {
-		LOGE("Invalid header crc: 0x%02x\n", (header->byte3 & 0x3f));
+		hbp_err("Invalid header crc: 0x%02x\n", (header->byte3 & 0x3f));
 
 		tcm_msg->status_report_code = STATUS_PACKET_CORRUPTED;
 		goto exit;
@@ -502,7 +502,7 @@ static int syna_tcm_v2_read(struct tcm_dev *tcm_dev, unsigned int rd_length,
 	if (rd_length > 0) {
 		crc16 = syna_tcm_crc16(&tcm_msg->temp.buf[0], xfer_len, 0xFFFF);
 		if (crc16 != 0) {
-			LOGE("Invalid payload crc: %02x %02x\n",
+			hbp_err("Invalid payload crc: %02x %02x\n",
 				tcm_msg->temp.buf[xfer_len - 2],
 				tcm_msg->temp.buf[xfer_len - 1]);
 
@@ -563,7 +563,7 @@ static int syna_tcm_v2_write(struct tcm_dev *tcm_dev, unsigned char command,
 	struct tcm_message_data_blob *tcm_msg = NULL;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -579,7 +579,7 @@ static int syna_tcm_v2_write(struct tcm_dev *tcm_dev, unsigned char command,
 	xfer_len += sizeof(struct tcm_v2_message_header);
 
 	if ((max_wr_size != 0) && (xfer_len > max_wr_size)) {
-		LOGE("Invalid xfer length, len: %d, max_wr_size: %d\n",
+		hbp_err("Invalid xfer length, len: %d, max_wr_size: %d\n",
 			xfer_len, max_wr_size);
 		tcm_msg->status_report_code = STATUS_INVALID;
 		return _EINVAL;
@@ -590,7 +590,7 @@ static int syna_tcm_v2_write(struct tcm_dev *tcm_dev, unsigned char command,
 	/* allocate the internal out buffer */
 	retval = syna_tcm_buf_alloc(&tcm_msg->out, xfer_len);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for internal buf.out\n");
+		hbp_err("Fail to allocate memory for internal buf.out\n");
 		goto exit;
 	}
 
@@ -620,7 +620,7 @@ static int syna_tcm_v2_write(struct tcm_dev *tcm_dev, unsigned char command,
 				payload_len,
 				payload_len);
 		if (retval < 0) {
-			LOGE("Fail to copy payload data\n");
+			hbp_err("Fail to copy payload data\n");
 			goto exit;
 		}
 
@@ -635,7 +635,7 @@ static int syna_tcm_v2_write(struct tcm_dev *tcm_dev, unsigned char command,
 			tcm_msg->out.buf,
 			xfer_len);
 	if (retval < 0) {
-		LOGE("Fail to write to device\n");
+		hbp_err("Fail to write to device\n");
 		goto exit;
 	}
 
@@ -678,7 +678,7 @@ static int syna_tcm_v2_continued_read(struct tcm_dev *tcm_dev,
 	struct tcm_v2_message_header *header;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -697,7 +697,7 @@ static int syna_tcm_v2_continued_read(struct tcm_dev *tcm_dev,
 	retval = syna_tcm_buf_realloc(&tcm_msg->in,
 			total_length + 1);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for internal buf_in\n");
+		hbp_err("Fail to allocate memory for internal buf_in\n");
 		goto exit;
 	}
 
@@ -727,7 +727,7 @@ retry:
 				0,
 				false);
 		if (retval < 0) {
-			LOGE("Fail to send CMD_TCM2_ACK in continued read\n");
+			hbp_err("Fail to send CMD_TCM2_ACK in continued read\n");
 			goto exit;
 		}
 
@@ -742,7 +742,7 @@ retry:
 				&tmp_buf,
 				&tmp_buf_size);
 		if (retval < 0) {
-			LOGE("Fail to read %d bytes from device\n",
+			hbp_err("Fail to read %d bytes from device\n",
 					xfer_length);
 			goto exit;
 		}
@@ -752,7 +752,7 @@ retry:
 		 */
 		if (tcm_msg->status_report_code == STATUS_PACKET_CORRUPTED) {
 			if (retry_cnt > COMMAND_RETRY_TIMES) {
-				LOGE("Continued read packet corrupted\n");
+				hbp_err("Continued read packet corrupted\n");
 				goto exit;
 			}
 
@@ -776,7 +776,7 @@ retry:
 				tmp_buf_size - MESSAGE_HEADER_SIZE,
 				xfer_length);
 		if (retval < 0) {
-			LOGE("Fail to copy payload to internal buf_in\n");
+			hbp_err("Fail to copy payload to internal buf_in\n");
 			syna_tcm_buf_unlock(&tcm_msg->temp);
 			goto exit;
 		}
@@ -822,7 +822,7 @@ static int syna_tcm_v2_get_response(struct tcm_dev *tcm_dev)
 	struct tcm_message_data_blob *tcm_msg = NULL;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -834,7 +834,7 @@ static int syna_tcm_v2_get_response(struct tcm_dev *tcm_dev)
 			&tmp_buf,
 			&tmp_buf_size);
 	if (retval < 0) {
-		LOGE("Fail to read message header from device\n");
+		hbp_err("Fail to read message header from device\n");
 		return retval;
 	}
 
@@ -849,7 +849,7 @@ static int syna_tcm_v2_get_response(struct tcm_dev *tcm_dev)
 	retval = syna_tcm_buf_alloc(&tcm_msg->in,
 			MESSAGE_HEADER_SIZE + tcm_msg->payload_length);
 	if (retval < 0) {
-		LOGE("Fail to reallocate memory for internal buf.in\n");
+		hbp_err("Fail to reallocate memory for internal buf.in\n");
 		syna_tcm_buf_unlock(&tcm_msg->in);
 		return retval;
 	}
@@ -860,7 +860,7 @@ static int syna_tcm_v2_get_response(struct tcm_dev *tcm_dev)
 			tmp_buf_size,
 			MESSAGE_HEADER_SIZE);
 	if (retval < 0) {
-		LOGE("Fail to copy data to internal buf_in\n");
+		hbp_err("Fail to copy data to internal buf_in\n");
 		syna_tcm_buf_unlock(&tcm_msg->in);
 		return retval;
 	}
@@ -873,7 +873,7 @@ static int syna_tcm_v2_get_response(struct tcm_dev *tcm_dev)
 		retval = syna_tcm_v2_continued_read(tcm_dev,
 				tcm_msg->payload_length);
 		if (retval < 0) {
-			LOGE("Fail to read in payload data, size: %d)\n",
+			hbp_err("Fail to read in payload data, size: %d)\n",
 				tcm_msg->payload_length);
 			return retval;
 		}
@@ -918,7 +918,7 @@ static inline int syna_tcm_v2_send_cmd(struct tcm_dev *tcm_dev,
 			length,
 			resend);
 	if (retval < 0)
-		LOGE("Fail to write Command 0x%02x to device\n", command);
+		hbp_err("Fail to write Command 0x%02x to device\n", command);
 
 	return retval;
 }
@@ -958,7 +958,7 @@ static int syna_tcm_v2_execute_cmd_request(struct tcm_dev *tcm_dev,
 	struct tcm_message_data_blob *tcm_msg = NULL;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1009,7 +1009,7 @@ retry:
 		/* get the response to the command immediately */
 		retval = syna_tcm_v2_get_response(tcm_dev);
 		if (retval < 0) {
-			LOGE("Fail to get the response to command 0x%02x\n",
+			hbp_err("Fail to get the response to command 0x%02x\n",
 				command);
 			goto exit;
 		}
@@ -1033,21 +1033,21 @@ retry:
 			retry_cnt += 1;
 			break;
 		default:
-			LOGE("Incorrect status code 0x%02x of command 0x%02x\n",
+			hbp_err("Incorrect status code 0x%02x of command 0x%02x\n",
 				tcm_msg->status_report_code, command);
 			goto exit;
 		}
 
 		if (retry_cnt > 0) {
 			if (command == CMD_RESET) {
-				LOGE("Command CMD_RESET corrupted, exit\n");
+				hbp_err("Command CMD_RESET corrupted, exit\n");
 				/* assume ACK and wait for interrupt assertion
 				 * once the response of reset is corrupted
 				 */
 				tcm_msg->response_code = STATUS_ACK;
 				goto exit;
 			} else if (retry_cnt > COMMAND_RETRY_TIMES) {
-				LOGE("Command 0x%02x corrupted\n", command);
+				hbp_err("Command 0x%02x corrupted\n", command);
 				goto exit;
 			}
 
@@ -1092,7 +1092,7 @@ static int syna_tcm_v2_read_message(struct tcm_dev *tcm_dev,
 	syna_pal_completion_t *cmd_completion = NULL;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1113,7 +1113,7 @@ static int syna_tcm_v2_read_message(struct tcm_dev *tcm_dev,
 			NULL,
 			0);
 	if (retval < 0) {
-		LOGE("Fail to send command CMD_TCM2_GET_REPORT\n");
+		hbp_err("Fail to send command CMD_TCM2_GET_REPORT\n");
 
 		if (ATOMIC_GET(tcm_msg->command_status) == CMD_STATE_BUSY) {
 			ATOMIC_SET(tcm_msg->command_status, CMD_STATE_ERROR);
@@ -1128,7 +1128,7 @@ static int syna_tcm_v2_read_message(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_buf_alloc(&tcm_dev->external_buf,
 				tcm_msg->payload_length);
 		if (retval < 0) {
-			LOGE("Fail to allocate memory, external_buf invalid\n");
+			hbp_err("Fail to allocate memory, external_buf invalid\n");
 			syna_tcm_buf_unlock(&tcm_dev->external_buf);
 			goto exit;
 		} else {
@@ -1138,7 +1138,7 @@ static int syna_tcm_v2_read_message(struct tcm_dev *tcm_dev,
 				tcm_msg->in.buf_size - MESSAGE_HEADER_SIZE,
 				tcm_msg->payload_length);
 			if (retval < 0) {
-				LOGE("Fail to copy data to external buffer\n");
+				hbp_err("Fail to copy data to external buffer\n");
 				syna_tcm_buf_unlock(&tcm_dev->external_buf);
 				goto exit;
 			}
@@ -1202,7 +1202,7 @@ static int syna_tcm_v2_write_message(struct tcm_dev *tcm_dev,
 	bool in_polling = false;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1230,7 +1230,7 @@ static int syna_tcm_v2_write_message(struct tcm_dev *tcm_dev,
 	// if (has_irq_ctrl && in_polling && tcm_dev->hw_if->ops_enable_irq)
 	// 	tcm_dev->hw_if->ops_enable_irq(tcm_dev->hw_if, false);
 
-	LOGI("write command: 0x%02x, payload size: %d\n",
+	hbp_info("write command: 0x%02x, payload size: %d\n",
 		command, payload_length);
 
 	syna_pal_mutex_lock(cmd_mutex);
@@ -1250,7 +1250,7 @@ static int syna_tcm_v2_write_message(struct tcm_dev *tcm_dev,
 			payload,
 			payload_length);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x to device\n", command);
+		hbp_err("Fail to send command 0x%02x to device\n", command);
 		goto exit;
 	}
 
@@ -1306,12 +1306,12 @@ static int syna_tcm_v2_write_message(struct tcm_dev *tcm_dev,
 check_response:
 	if (ATOMIC_GET(tcm_msg->command_status) != CMD_STATE_IDLE) {
 		if (timeout >= CMD_RESPONSE_TIMEOUT_MS) {
-			LOGE("Timed out wait for response of command 0x%02x\n",
+			hbp_err("Timed out wait for response of command 0x%02x\n",
 				command);
 			retval = _ETIMEDOUT;
 			goto exit;
 		} else {
-			LOGE("Fail to get valid response of command 0x%02x\n",
+			hbp_err("Fail to get valid response of command 0x%02x\n",
 				command);
 			retval = _EIO;
 			goto exit;
@@ -1325,7 +1325,7 @@ check_response:
 		*resp_code = tcm_msg->status_report_code;
 
 	if (tcm_msg->response_code != STATUS_OK) {
-		LOGE("Error code 0x%02x of command 0x%02x\n",
+		hbp_err("Error code 0x%02x of command 0x%02x\n",
 			tcm_msg->response_code, tcm_msg->command);
 		retval = _EIO;
 	} else {
@@ -1359,7 +1359,7 @@ exit:
 void syna_tcm_v2_set_ops(struct tcm_dev *tcm_dev)
 {
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return;
 	}
 
@@ -1392,19 +1392,19 @@ int syna_tcm_v2_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 	struct tcm_message_data_blob *tcm_msg = NULL;
 	unsigned char resp_code = 0;
 
-	LOGI("%s is called.\n", __func__);
+	hbp_info("%s is called.\n", __func__);
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if ((!data) || (size < MESSAGE_HEADER_SIZE)) {
-		LOGE("Invalid parameters\n");
+		hbp_err("Invalid parameters\n");
 		return _EINVAL;
 	}
 
 	if (syna_tcm_crc6(data, BITS_IN_MESSAGE_HEADER) != 0) {
-		LOGE("Invalid crc6\n");
+		hbp_err("Invalid crc6\n");
 		return _ENODEV;
 	}
 	tcm_msg = &tcm_dev->msg_data;
@@ -1428,7 +1428,7 @@ int syna_tcm_v2_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 					&resp_code,
 					RESET_DELAY_MS);
 			if (retval < 0) {
-				LOGE("Fail to identify at startup\n");
+				hbp_err("Fail to identify at startup\n");
 				return retval;
 			}
 		}
@@ -1443,7 +1443,7 @@ int syna_tcm_v2_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 				tcm_msg->in.buf_size,
 				tcm_msg->payload_length);
 		if (retval < 0) {
-			LOGE("Fail to parse identify report at startup\n");
+			hbp_err("Fail to parse identify report at startup\n");
 			syna_tcm_buf_unlock(&tcm_msg->in);
 			return retval;
 		}
@@ -1454,7 +1454,7 @@ int syna_tcm_v2_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 	/* set up the max. reading length at startup */
 	retval = syna_tcm_v2_set_max_rw_size(tcm_dev);
 	if (retval < 0) {
-		LOGE("Fail to setup the max length to read/write\n");
+		hbp_err("Fail to setup the max length to read/write\n");
 		return retval;
 	}
 
@@ -1465,9 +1465,9 @@ int syna_tcm_v2_detect(struct tcm_dev *tcm_dev, unsigned char *data,
 	tcm_dev->msg_data.has_extra_rc = false;
 	tcm_dev->msg_data.rc_byte = 0x00;
 
-	LOGI("Message appending: crc:(%s)\n",
+	hbp_info("Message appending: crc:(%s)\n",
 			(tcm_msg->has_crc) ? "yes" : "no");
-	LOGI("Message appending: extra rc:(%s)\n",
+	hbp_info("Message appending: extra rc:(%s)\n",
 			(tcm_msg->has_extra_rc) ? "yes" : "no");
 
 	/* set up read/write operations */
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_base.c b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_base.c
similarity index 87%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_base.c
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_base.c
index 9a9fb4f6..0d3835fa 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_base.c
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_base.c
@@ -95,7 +95,7 @@ static unsigned int buf_size;
 // 		goto exit;
 // 	}
 
-// 	//LOGI("%s:%*ph\n", (wr_rd == SYNA_SPI_TRANSFER_READ) ? "RD" : "WR", length, data);
+// 	//hbp_info("%s:%*ph\n", (wr_rd == SYNA_SPI_TRANSFER_READ) ? "RD" : "WR", length, data);
 
 // 	offset = 0;
 // 	cnt = snprintf(print_buf + offset, SYNA_SPI_PRINT_BUF_SIZE - offset, "%s ",
@@ -104,7 +104,7 @@ static unsigned int buf_size;
 // 	for (i = 0; i < length; i++) {
 // 		left = SYNA_SPI_PRINT_BUF_SIZE - offset;
 // 		if (left <= SYNA_SPI_PRINT_BUF_LEFT_SIZE) {
-// 			//LOGI("There is unprinted data\n");
+// 			//hbp_info("There is unprinted data\n");
 // 			break;
 // 		}
 // 		cnt = snprintf(print_buf + offset, SYNA_SPI_PRINT_BUF_SIZE - offset, "%02x ", data[i]);
@@ -112,7 +112,7 @@ static unsigned int buf_size;
 // 	}
 // 	cnt = snprintf(print_buf + offset, SYNA_SPI_PRINT_BUF_SIZE - offset, "\n");
 // 	offset += cnt;
-// 	LOGI("%s", print_buf);
+// 	hbp_info("%s", print_buf);
 
 // exit:
 // 	last_code = code;
@@ -138,7 +138,7 @@ static int syna_spi_alloc_mem(unsigned int count, unsigned int size)
 		syna_pal_mem_free((void *)xfer);
 		xfer = syna_pal_mem_alloc(count, sizeof(*xfer));
 		if (!xfer) {
-			LOGE("Fail to allocate memory for xfer\n");
+			hbp_err("Fail to allocate memory for xfer\n");
 			xfer_count = 0;
 			return -ENOMEM;
 		}
@@ -159,13 +159,13 @@ static int syna_spi_alloc_mem(unsigned int count, unsigned int size)
 
 		rx_buf = syna_pal_mem_alloc(size, sizeof(unsigned char));
 		if (!rx_buf) {
-			LOGE("Fail to allocate memory for rx_buf\n");
+			hbp_err("Fail to allocate memory for rx_buf\n");
 			buf_size = 0;
 			return -ENOMEM;
 		}
 		tx_buf = syna_pal_mem_alloc(size, sizeof(unsigned char));
 		if (!tx_buf) {
-			LOGE("Fail to allocate memory for tx_buf\n");
+			hbp_err("Fail to allocate memory for tx_buf\n");
 			buf_size = 0;
 			return -ENOMEM;
 		}
@@ -201,22 +201,22 @@ int syna_tcm_read(struct tcm_dev *tcm_dev,
 	//struct syna_hw_bus_data *bus = &hw_if->bdata_io;
 
 	// if (!spi) {
-	// 	LOGE("Invalid bus io device\n");
+	// 	hbp_err("Invalid bus io device\n");
 	// 	return -ENXIO;
 	// }
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm_dev\n");
+		hbp_err("Invalid tcm_dev\n");
 		return -ENXIO;
 	}
 
 	if (!tcm_dev->bus_ops) {
-		LOGE("Invalid tcm_dev->bus_ops\n");
+		hbp_err("Invalid tcm_dev->bus_ops\n");
 		return -ENXIO;
 	}
 
 	if (!tcm_dev->bus_ops->spi_sync) {
-		LOGE("Invalid tcm_dev->bus_ops->spi_sync\n");
+		hbp_err("Invalid tcm_dev->bus_ops->spi_sync\n");
 		return -ENXIO;
 	}
 
@@ -227,7 +227,7 @@ int syna_tcm_read(struct tcm_dev *tcm_dev,
 
 	retval = syna_spi_alloc_mem(1, rd_len);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory\n");
+		hbp_err("Fail to allocate memory\n");
 		goto exit;
 	}
 /*
@@ -260,16 +260,17 @@ int syna_tcm_read(struct tcm_dev *tcm_dev,
 */
 	retval = tcm_dev->bus_ops->spi_sync(tcm_dev->bus_ops, tx_buf, rx_buf, rd_len);
 	if (retval != 0) {
-		LOGE("Failed to complete SPI transfer, error = %d\n", retval);
+		hbp_err("Failed to complete SPI transfer, error = %d\n", retval);
 		goto exit;
 	}
 	retval = syna_pal_mem_cpy(rd_data, rd_len, rx_buf, rd_len, rd_len);
 	if (retval < 0) {
-		LOGE("Fail to copy rx_buf to rd_data\n");
+		hbp_err("Fail to copy rx_buf to rd_data\n");
 		goto exit;
 	}
 
 	// syna_print_xfer_data(rd_data, rd_len, SYNA_SPI_TRANSFER_READ);
+	LOGD("%s:%*ph\n", "RD", rd_len, rd_data);
 
 	retval = rd_len;
 
@@ -304,7 +305,7 @@ int syna_tcm_write(struct tcm_dev *tcm_dev,
 	//struct syna_hw_bus_data *bus = &hw_if->bdata_io;
 
 	// if (!spi) {
-	// 	LOGE("Invalid bus io device\n");
+	// 	hbp_err("Invalid bus io device\n");
 	// 	return -ENXIO;
 	// }
 
@@ -315,13 +316,13 @@ int syna_tcm_write(struct tcm_dev *tcm_dev,
 	retval = syna_spi_alloc_mem(1, wr_len);
 
 	if (retval < 0) {
-		LOGE("Failed to allocate memory\n");
+		hbp_err("Failed to allocate memory\n");
 		goto exit;
 	}
 
 	retval = syna_pal_mem_cpy(tx_buf, wr_len, wr_data, wr_len, wr_len);
 	if (retval < 0) {
-		LOGE("Fail to copy wr_data to tx_buf\n");
+		hbp_err("Fail to copy wr_data to tx_buf\n");
 		goto exit;
 	}
 /*
@@ -348,11 +349,12 @@ int syna_tcm_write(struct tcm_dev *tcm_dev,
 */
 	retval = tcm_dev->bus_ops->spi_sync(tcm_dev->bus_ops, tx_buf, rx_buf, wr_len);
 	if (retval != 0) {
-		LOGE("Fail to complete SPI transfer, error = %d\n", retval);
+		hbp_err("Fail to complete SPI transfer, error = %d\n", retval);
 		goto exit;
 	}
 
 	// syna_print_xfer_data(wr_data, wr_len, SYNA_SPI_TRANSFER_WRITE);
+	LOGD("%s:%*ph\n", "WR", wr_len, wr_data);
 
 	retval = wr_len;
 
@@ -382,14 +384,14 @@ void syna_tcm_change_resp_read(struct tcm_dev *tcm_dev, unsigned int request)
 	if (request == RESP_IN_ATTN) {
 		tcm_dev->msg_data.default_resp_reading = RESP_IN_ATTN;
 
-		LOGI("Change default resp reading method by attn\n");
+		hbp_info("Change default resp reading method by attn\n");
 	} else {
 		if (request < RESP_IN_POLLING)
 			request = RESP_IN_POLLING;
 
 		tcm_dev->msg_data.default_resp_reading = request;
 
-		LOGI("Change default resp reading method by polling (%dms)\n",
+		hbp_info("Change default resp reading method by polling (%dms)\n",
 			tcm_dev->msg_data.default_resp_reading);
 	}
 }
@@ -418,19 +420,19 @@ static int syna_tcm_init_message_wrap(struct tcm_message_data_blob *tcm_msg,
 
 	/* allocate the completion event for command processing */
 	if (syna_pal_completion_alloc(&tcm_msg->cmd_completion) < 0) {
-		LOGE("Fail to allocate cmd completion event\n");
+		hbp_err("Fail to allocate cmd completion event\n");
 		return _EINVAL;
 	}
 
 	/* allocate the cmd_mutex for command protection */
 	if (syna_pal_mutex_alloc(&tcm_msg->cmd_mutex) < 0) {
-		LOGE("Fail to allocate cmd_mutex\n");
+		hbp_err("Fail to allocate cmd_mutex\n");
 		return _EINVAL;
 	}
 
 	/* allocate the rw_mutex for rw protection */
 	if (syna_pal_mutex_alloc(&tcm_msg->rw_mutex) < 0) {
-		LOGE("Fail to allocate rw_mutex\n");
+		hbp_err("Fail to allocate rw_mutex\n");
 		return _EINVAL;
 	}
 
@@ -447,7 +449,7 @@ static int syna_tcm_init_message_wrap(struct tcm_message_data_blob *tcm_msg,
 	syna_tcm_buf_lock(&tcm_msg->in);
 
 	if (syna_tcm_buf_alloc(&tcm_msg->in, MESSAGE_HEADER_SIZE) < 0) {
-		LOGE("Fail to allocate memory for buf.in (size = %d)\n",
+		hbp_err("Fail to allocate memory for buf.in (size = %d)\n",
 			MESSAGE_HEADER_SIZE);
 		tcm_msg->in.buf_size = 0;
 		tcm_msg->in.data_length = 0;
@@ -460,7 +462,7 @@ static int syna_tcm_init_message_wrap(struct tcm_message_data_blob *tcm_msg,
 
 	tcm_msg->default_resp_reading = resp_reading;
 
-	LOGI("Resp. reading method (default): %s\n",
+	hbp_info("Resp. reading method (default): %s\n",
 		(resp_reading == RESP_IN_ATTN) ? "attn" : "polling");
 
 	/* initialize the features of message handling */
@@ -534,7 +536,7 @@ int syna_tcm_allocate_device(struct tcm_dev **ptcm_dev_ptr, unsigned int resp_re
 			1,
 			sizeof(struct tcm_dev));
 	if (!tcm_dev) {
-		LOGE("Fail to create tcm device handle\n");
+		hbp_err("Fail to create tcm device handle\n");
 		return _ENOMEM;
 	}
 
@@ -566,18 +568,18 @@ int syna_tcm_allocate_device(struct tcm_dev **ptcm_dev_ptr, unsigned int resp_re
 	retval = syna_tcm_init_message_wrap(&tcm_dev->msg_data,
 			resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to initialize command interface\n");
+		hbp_err("Fail to initialize command interface\n");
 		goto err_init_message_wrap;
 	}
 
 	/* return the created device handle */
 	*ptcm_dev_ptr = tcm_dev;
 
-	LOGI("TouchComm core module created, ver.: %d.%02d\n",
+	hbp_info("TouchComm core module created, ver.: %d.%02d\n",
 		(unsigned char)(SYNA_TCM_CORE_LIB_VERSION >> 8),
 		(unsigned char)SYNA_TCM_CORE_LIB_VERSION & 0xff);
 
-	LOGI("Capability: wr_chunk(%d), rd_chunk(%d)\n",
+	hbp_info("Capability: wr_chunk(%d), rd_chunk(%d)\n",
 		tcm_dev->max_wr_size, tcm_dev->max_rd_size);
 
 	return 0;
@@ -610,7 +612,7 @@ err_init_message_wrap:
 void syna_tcm_remove_device(struct tcm_dev *tcm_dev)
 {
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return;
 	}
 
@@ -626,7 +628,7 @@ void syna_tcm_remove_device(struct tcm_dev *tcm_dev)
 	/* release the device handle */
 	syna_pal_mem_free((void *)tcm_dev);
 
-	LOGI("tcm device handle removed\n");
+	hbp_info("tcm device handle removed\n");
 }
 
 /**
@@ -647,9 +649,9 @@ static int syna_tcm_detect_protocol(struct tcm_dev *tcm_dev,
 {
 	int retval;
 
-	LOGI("%s is called.\n", __func__);
+	hbp_info("%s is called.\n", __func__);
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -678,7 +680,7 @@ int syna_tcm_detect_device(struct tcm_dev *tcm_dev)
 	unsigned char data[4] = { 0 };
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -688,57 +690,57 @@ int syna_tcm_detect_device(struct tcm_dev *tcm_dev)
 	data[0] = 0x07;
 	retval = syna_tcm_write(tcm_dev, &data[0], 1);
 	if (retval < 0) {
-		LOGE("Fail to write magic to bus\n");
+		hbp_err("Fail to write magic to bus\n");
 		return _EIO;
 	}
 
 	retval = syna_tcm_read(tcm_dev,
 			data, (unsigned int)sizeof(data));
 	if (retval < 0) {
-		LOGE("Fail to retrieve 4-byte data from bus\n");
+		hbp_err("Fail to retrieve 4-byte data from bus\n");
 		return _EIO;
 	}
 
-	LOGI("bare data: %02x %02x %02x %02x\n",
+	hbp_info("bare data: %02x %02x %02x %02x\n",
 			data[0], data[1], data[2], data[3]);
 
 	/* distinguish which tcm version running on the device */
 	retval = syna_tcm_detect_protocol(tcm_dev,
 			data, (unsigned int)sizeof(data));
 	if (retval < 0) {
-		LOGE("Fail to detect TouchCom device, %02x %02x %02x %02x\n",
+		hbp_err("Fail to detect TouchCom device, %02x %02x %02x %02x\n",
 			data[0], data[1], data[2], data[3]);
 		return retval;
 	}
 
 	if ((!tcm_dev->write_message) || (!tcm_dev->read_message)) {
-		LOGE("Invalid TouchCom rw operations\n");
+		hbp_err("Invalid TouchCom rw operations\n");
 		return _ENODEV;
 	}
 
-	LOGI("tcm_dev->dev_mode = 0x%x\n", tcm_dev->dev_mode);
+	hbp_info("tcm_dev->dev_mode = 0x%x\n", tcm_dev->dev_mode);
 
 	/* check the running mode */
 	switch (tcm_dev->dev_mode) {
 	case MODE_APPLICATION_FIRMWARE:
-		LOGI("Device in Application FW, build id: %d, %s\n",
+		hbp_info("Device in Application FW, build id: %d, %s\n",
 			tcm_dev->packrat_number,
 			tcm_dev->id_info.part_number);
 		syna_tcm_get_app_info(tcm_dev, &tcm_dev->app_info);
 		retval = syna_tcm_preserve_touch_report_config(tcm_dev);
 		if (retval < 0) {
-			LOGE("Fail to preserve touch report config\n");
+			hbp_err("Fail to preserve touch report config\n");
 		}
 		break;
 	case MODE_BOOTLOADER:
 	case MODE_TDDI_BOOTLOADER:
-		LOGI("Device in Bootloader\n");
+		hbp_info("Device in Bootloader\n");
 		break;
 	case MODE_ROMBOOTLOADER:
-		LOGI("Device in ROMBoot uBL\n");
+		hbp_info("Device in ROMBoot uBL\n");
 		break;
 	case MODE_MULTICHIP_TDDI_BOOTLOADER:
-		LOGI("Device in multi-chip TDDI Bootloader\n");
+		hbp_info("Device in multi-chip TDDI Bootloader\n");
 		break;
 	default:
 		LOGW("Found TouchCom device, but unsupported mode: 0x%02x\n",
@@ -772,12 +774,12 @@ int syna_tcm_get_event_data(struct tcm_dev *tcm_dev,
 	int retval = 0;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!code) {
-		LOGE("Invalid parameter\n");
+		hbp_err("Invalid parameter\n");
 		return _EINVAL;
 	}
 
@@ -786,7 +788,7 @@ int syna_tcm_get_event_data(struct tcm_dev *tcm_dev,
 	retval = tcm_dev->read_message(tcm_dev,
 			code);
 	if (retval < 0) {
-		LOGE("Fail to read messages\n");
+		hbp_err("Fail to read messages\n");
 		return retval;
 	}
 
@@ -806,7 +808,7 @@ int syna_tcm_get_event_data(struct tcm_dev *tcm_dev,
 
 		retval = syna_tcm_buf_copy(data, &tcm_dev->report_buf);
 		if (retval < 0) {
-			LOGE("Fail to copy data, report type: %x\n", *code);
+			hbp_err("Fail to copy data, report type: %x\n", *code);
 			syna_tcm_buf_unlock(&tcm_dev->report_buf);
 			goto exit;
 		}
@@ -823,7 +825,7 @@ int syna_tcm_get_event_data(struct tcm_dev *tcm_dev,
 
 		retval = syna_tcm_buf_copy(data, &tcm_dev->resp_buf);
 		if (retval < 0) {
-			LOGE("Fail to copy data, status code: %x\n", *code);
+			hbp_err("Fail to copy data, status code: %x\n", *code);
 			syna_tcm_buf_unlock(&tcm_dev->resp_buf);
 			goto exit;
 		}
@@ -856,7 +858,7 @@ int syna_tcm_identify(struct tcm_dev *tcm_dev,
 	unsigned char resp_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -867,7 +869,7 @@ int syna_tcm_identify(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n", CMD_IDENTIFY);
+		hbp_err("Fail to send command 0x%02x\n", CMD_IDENTIFY);
 		goto exit;
 	}
 
@@ -881,12 +883,12 @@ int syna_tcm_identify(struct tcm_dev *tcm_dev,
 			tcm_dev->resp_buf.buf_size,
 			MIN(sizeof(*id_info), tcm_dev->resp_buf.data_length));
 	if (retval < 0) {
-		LOGE("Fail to copy identify info to caller\n");
+		hbp_err("Fail to copy identify info to caller\n");
 		goto exit;
 	}
 
 show_info:
-	LOGI("TCM Fw mode: 0x%02x, TCM ver.: %d\n",
+	hbp_info("TCM Fw mode: 0x%02x, TCM ver.: %d\n",
 		tcm_dev->id_info.mode, tcm_dev->id_info.version);
 
 	tcm_dev->dev_mode = tcm_dev->id_info.mode;
@@ -920,7 +922,7 @@ int syna_tcm_reset(struct tcm_dev *tcm_dev)
 	unsigned int resp_handling = 0;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -934,7 +936,7 @@ int syna_tcm_reset(struct tcm_dev *tcm_dev)
 	if (resp_handling != RESP_IN_ATTN) {
 		if (board_setting > resp_handling) {
 			resp_handling = board_setting;
-			LOGI("Use board settings %dms to poll resp of reset\n",
+			hbp_info("Use board settings %dms to poll resp of reset\n",
 				resp_handling);
 		}
 	}
@@ -946,7 +948,7 @@ int syna_tcm_reset(struct tcm_dev *tcm_dev)
 			&resp_code,
 			resp_handling);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n", CMD_RESET);
+		hbp_err("Fail to send command 0x%02x\n", CMD_RESET);
 		goto exit;
 	}
 
@@ -955,7 +957,7 @@ int syna_tcm_reset(struct tcm_dev *tcm_dev)
 	 */
 	tcm_dev->dev_mode = tcm_dev->id_info.mode;
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGI("Device mode 0x%02X running after reset\n",
+		hbp_info("Device mode 0x%02X running after reset\n",
 			tcm_dev->dev_mode);
 	}
 
@@ -985,12 +987,12 @@ int syna_tcm_enable_report(struct tcm_dev *tcm_dev,
 	unsigned char command;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in application fw mode, mode: %x\n",
+		hbp_err("Device is not in application fw mode, mode: %x\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1004,16 +1006,16 @@ int syna_tcm_enable_report(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x to %s 0x%02x report\n",
+		hbp_err("Fail to send command 0x%02x to %s 0x%02x report\n",
 			command, (en)?"enable":"disable", report_code);
 		goto exit;
 	}
 
 	if (resp_code != STATUS_OK) {
-		LOGE("Fail to %s 0x%02x report, resp_code:%x\n",
+		hbp_err("Fail to %s 0x%02x report, resp_code:%x\n",
 			(en) ? "enable" : "disable", report_code, resp_code);
 	} else {
-		LOGD("Report 0x%x %s\n", report_code,
+		hbp_info("Report 0x%x %s\n", report_code,
 			(en) ? "enabled" : "disabled");
 	}
 
@@ -1043,7 +1045,7 @@ static int syna_tcm_run_rom_bootloader_fw(struct tcm_dev *tcm_dev,
 	unsigned char resp_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1054,19 +1056,19 @@ static int syna_tcm_run_rom_bootloader_fw(struct tcm_dev *tcm_dev,
 			&resp_code,
 			fw_switch_delay);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_REBOOT_TO_ROM_BOOTLOADER);
 		goto exit;
 	}
 
 	if (!IS_ROM_BOOTLOADER_MODE(tcm_dev->dev_mode)) {
-		LOGE("Fail to enter rom bootloader, mode: %x\n",
+		hbp_err("Fail to enter rom bootloader, mode: %x\n",
 			tcm_dev->dev_mode);
 		retval = _ENODEV;
 		goto exit;
 	}
 
-	LOGI("ROM Bootloader (mode 0x%x) activated\n",
+	hbp_info("ROM Bootloader (mode 0x%x) activated\n",
 		tcm_dev->dev_mode);
 
 	retval = 0;
@@ -1097,7 +1099,7 @@ static int syna_tcm_run_bootloader_fw(struct tcm_dev *tcm_dev,
 	unsigned char resp_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1108,19 +1110,19 @@ static int syna_tcm_run_bootloader_fw(struct tcm_dev *tcm_dev,
 			&resp_code,
 			fw_switch_delay);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_RUN_BOOTLOADER_FIRMWARE);
 		goto exit;
 	}
 
 	if (!IS_BOOTLOADER_MODE(tcm_dev->dev_mode)) {
-		LOGE("Fail to enter bootloader, mode: %x\n",
+		hbp_err("Fail to enter bootloader, mode: %x\n",
 			tcm_dev->dev_mode);
 		retval = _ENODEV;
 		goto exit;
 	}
 
-	LOGI("Bootloader Firmware (mode 0x%x) activated\n",
+	hbp_info("Bootloader Firmware (mode 0x%x) activated\n",
 		tcm_dev->dev_mode);
 
 	retval = 0;
@@ -1151,7 +1153,7 @@ static int syna_tcm_run_application_fw(struct tcm_dev *tcm_dev,
 	unsigned char resp_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1162,7 +1164,7 @@ static int syna_tcm_run_application_fw(struct tcm_dev *tcm_dev,
 			&resp_code,
 			fw_switch_delay);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_RUN_APPLICATION_FIRMWARE);
 		goto exit;
 	}
@@ -1174,7 +1176,7 @@ static int syna_tcm_run_application_fw(struct tcm_dev *tcm_dev,
 		goto exit;
 	}
 
-	LOGI("Application Firmware (mode 0x%x) activated\n",
+	hbp_info("Application Firmware (mode 0x%x) activated\n",
 		tcm_dev->dev_mode);
 
 	retval = 0;
@@ -1203,7 +1205,7 @@ int syna_tcm_switch_fw_mode(struct tcm_dev *tcm_dev,
 	int retval = 0;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1212,7 +1214,7 @@ int syna_tcm_switch_fw_mode(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_run_application_fw(tcm_dev,
 				fw_switch_delay);
 		if (retval < 0) {
-			LOGE("Fail to switch to application mode\n");
+			hbp_err("Fail to switch to application mode\n");
 			goto exit;
 		}
 		break;
@@ -1223,7 +1225,7 @@ int syna_tcm_switch_fw_mode(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_run_bootloader_fw(tcm_dev,
 				fw_switch_delay);
 		if (retval < 0) {
-			LOGE("Fail to switch to bootloader mode\n");
+			hbp_err("Fail to switch to bootloader mode\n");
 			goto exit;
 		}
 		break;
@@ -1231,12 +1233,12 @@ int syna_tcm_switch_fw_mode(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_run_rom_bootloader_fw(tcm_dev,
 				fw_switch_delay);
 		if (retval < 0) {
-			LOGE("Fail to switch to rom bootloader mode\n");
+			hbp_err("Fail to switch to rom bootloader mode\n");
 			goto exit;
 		}
 		break;
 	default:
-		LOGE("Invalid firmware mode requested\n");
+		hbp_err("Invalid firmware mode requested\n");
 		retval = _EINVAL;
 		goto exit;
 	}
@@ -1269,7 +1271,7 @@ int syna_tcm_get_boot_info(struct tcm_dev *tcm_dev,
 	unsigned int copy_size;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1280,7 +1282,7 @@ int syna_tcm_get_boot_info(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_GET_BOOT_INFO);
 		goto exit;
 	}
@@ -1295,7 +1297,7 @@ int syna_tcm_get_boot_info(struct tcm_dev *tcm_dev,
 			tcm_dev->resp_buf.buf_size,
 			copy_size);
 	if (retval < 0) {
-		LOGE("Fail to copy boot info\n");
+		hbp_err("Fail to copy boot info\n");
 		goto exit;
 	}
 
@@ -1309,7 +1311,7 @@ int syna_tcm_get_boot_info(struct tcm_dev *tcm_dev,
 			tcm_dev->resp_buf.buf_size,
 			copy_size);
 	if (retval < 0) {
-		LOGE("Fail to copy boot info to caller\n");
+		hbp_err("Fail to copy boot info to caller\n");
 		goto exit;
 	}
 
@@ -1341,25 +1343,23 @@ int syna_tcm_get_app_info(struct tcm_dev *tcm_dev,
 	struct tcm_application_info *info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in application fw mode, mode: %x\n",
+		hbp_err("Device is not in application fw mode, mode: %x\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
-LOGI("%s 1\n", __func__);
 	retval = tcm_dev->write_message(tcm_dev,
 			CMD_GET_APPLICATION_INFO,
 			NULL,
 			0,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
-LOGI("%s 2\n", __func__);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_GET_APPLICATION_INFO);
 		goto exit;
 	}
@@ -1367,7 +1367,6 @@ LOGI("%s 2\n", __func__);
 	resp_data_len = tcm_dev->resp_buf.data_length;
 	copy_size = MIN(sizeof(tcm_dev->app_info), resp_data_len);
 
-LOGI("%s 3\n", __func__);
 	info = &tcm_dev->app_info;
 
 	/* save the app_info */
@@ -1376,9 +1375,8 @@ LOGI("%s 3\n", __func__);
 			tcm_dev->resp_buf.buf,
 			tcm_dev->resp_buf.buf_size,
 			copy_size);
-LOGI("%s 4\n", __func__);
 	if (retval < 0) {
-		LOGE("Fail to copy application info\n");
+		hbp_err("Fail to copy application info\n");
 		goto exit;
 	}
 
@@ -1392,26 +1390,23 @@ LOGI("%s 4\n", __func__);
 			tcm_dev->resp_buf.buf_size,
 			copy_size);
 	if (retval < 0) {
-		LOGE("Fail to copy application info to caller\n");
+		hbp_err("Fail to copy application info to caller\n");
 		goto exit;
 	}
-LOGI("%s 5\n", __func__);
 
 show_info:
 	app_status = syna_pal_le2_to_uint(tcm_dev->app_info.status);
 
-LOGI("%s 6\n", __func__);
 	if (app_status == APP_STATUS_BAD_APP_CONFIG) {
-		LOGE("Bad application firmware, status: 0x%x\n", app_status);
+		hbp_err("Bad application firmware, status: 0x%x\n", app_status);
 		retval = _ENODEV;
 		goto exit;
 	} else if (app_status != APP_STATUS_OK) {
-		LOGE("Incorrect application status, 0x%x\n", app_status);
+		hbp_err("Incorrect application status, 0x%x\n", app_status);
 		retval = _ENODEV;
 		goto exit;
 	}
 
-LOGI("%s 7\n", __func__);
 	tcm_dev->max_objects = syna_pal_le2_to_uint(info->max_objects);
 	tcm_dev->max_x = syna_pal_le2_to_uint(info->max_x);
 	tcm_dev->max_y = syna_pal_le2_to_uint(info->max_y);
@@ -1424,14 +1419,13 @@ LOGI("%s 7\n", __func__);
 			MAX_SIZE_CONFIG_ID,
 			MAX_SIZE_CONFIG_ID);
 
-LOGI("%s 8\n", __func__);
 	if (!tcm_dev->max_objects) {
-		LOGE("Invalid max_objects: %d\n", tcm_dev->max_objects);
+		hbp_err("Invalid max_objects: %d\n", tcm_dev->max_objects);
 		tcm_dev->max_objects = MAX_NUM_OBJECTS;
 	}
-	LOGI("App info version: %d, status: %d\n",
+	hbp_info("App info version: %d, status: %d\n",
 		syna_pal_le2_to_uint(info->version), app_status);
-	LOGI("App info: max_objs: %d, max_x:%d, max_y: %d, img: %dx%d\n",
+	hbp_info("App info: max_objs: %d, max_x:%d, max_y: %d, img: %dx%d\n",
 		tcm_dev->max_objects, tcm_dev->max_x, tcm_dev->max_y,
 		tcm_dev->rows, tcm_dev->cols);
 
@@ -1464,12 +1458,12 @@ int syna_tcm_get_static_config(struct tcm_dev *tcm_dev,
 	struct tcm_application_info *app_info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in application fw mode, mode: %x\n",
+		hbp_err("Device is not in application fw mode, mode: %x\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1479,7 +1473,7 @@ int syna_tcm_get_static_config(struct tcm_dev *tcm_dev,
 	size = syna_pal_le2_to_uint(app_info->static_config_size);
 
 	if (size > buf_size) {
-		LOGE("Invalid buffer input, given size: %d (actual: %d)\n",
+		hbp_err("Invalid buffer input, given size: %d (actual: %d)\n",
 			buf_size, size);
 		return _EINVAL;
 	}
@@ -1491,7 +1485,7 @@ int syna_tcm_get_static_config(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_GET_STATIC_CONFIG);
 		goto exit;
 	}
@@ -1506,7 +1500,7 @@ int syna_tcm_get_static_config(struct tcm_dev *tcm_dev,
 			tcm_dev->resp_buf.buf_size,
 			tcm_dev->resp_buf.data_length);
 	if (retval < 0) {
-		LOGE("Fail to copy static config data to caller\n");
+		hbp_err("Fail to copy static config data to caller\n");
 		goto exit;
 	}
 
@@ -1540,12 +1534,12 @@ int syna_tcm_set_static_config(struct tcm_dev *tcm_dev,
 	struct tcm_application_info *app_info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in application fw mode, mode: %x\n",
+		hbp_err("Device is not in application fw mode, mode: %x\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1555,7 +1549,7 @@ int syna_tcm_set_static_config(struct tcm_dev *tcm_dev,
 	size = syna_pal_le2_to_uint(app_info->static_config_size);
 
 	if (size != config_data_size) {
-		LOGE("Invalid static config size, given: %d (actual: %d)\n",
+		hbp_err("Invalid static config size, given: %d (actual: %d)\n",
 			config_data_size, size);
 		return _EINVAL;
 	}
@@ -1567,7 +1561,7 @@ int syna_tcm_set_static_config(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_SET_STATIC_CONFIG);
 		goto exit;
 	}
@@ -1602,12 +1596,12 @@ int syna_tcm_get_dynamic_config(struct tcm_dev *tcm_dev,
 	unsigned char resp_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in application fw mode, mode: %x\n",
+		hbp_err("Device is not in application fw mode, mode: %x\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1621,21 +1615,21 @@ int syna_tcm_get_dynamic_config(struct tcm_dev *tcm_dev,
 			&resp_code,
 			delay_ms_resp);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x to get dynamic field 0x%x\n",
+		hbp_err("Fail to send command 0x%02x to get dynamic field 0x%x\n",
 			CMD_GET_DYNAMIC_CONFIG, (unsigned char)id);
 		goto exit;
 	}
 
 	/* return dynamic config data */
 	if (tcm_dev->resp_buf.data_length < 2) {
-		LOGE("Invalid resp data size, %d\n",
+		hbp_err("Invalid resp data size, %d\n",
 			tcm_dev->resp_buf.data_length);
 		goto exit;
 	}
 
 	*value = (unsigned short)syna_pal_le2_to_uint(tcm_dev->resp_buf.buf);
 
-	LOGD("Get %d from dynamic field 0x%x\n", *value, id);
+	hbp_info("Get %d from dynamic field 0x%x\n", *value, id);
 
 	retval = 0;
 
@@ -1668,17 +1662,17 @@ int syna_tcm_set_dynamic_config(struct tcm_dev *tcm_dev,
 	unsigned char resp_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in application fw mode, mode: %x\n",
+		hbp_err("Device is not in application fw mode, mode: %x\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
 
-	LOGI("Set %d to dynamic field 0x%x\n", value, id);
+	hbp_info("Set %d to dynamic field 0x%x\n", value, id);
 
 	out[0] = (unsigned char)id;
 	out[1] = (unsigned char)value;
@@ -1691,7 +1685,7 @@ int syna_tcm_set_dynamic_config(struct tcm_dev *tcm_dev,
 			&resp_code,
 			delay_ms_resp);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x to set %d to field 0x%x\n",
+		hbp_err("Fail to send command 0x%02x to set %d to field 0x%x\n",
 			CMD_SET_DYNAMIC_CONFIG, value, (unsigned char)id);
 		goto exit;
 	}
@@ -1720,12 +1714,12 @@ int syna_tcm_rezero(struct tcm_dev *tcm_dev)
 	unsigned char resp_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in application fw mode, mode: %x\n",
+		hbp_err("Device is not in application fw mode, mode: %x\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1737,7 +1731,7 @@ int syna_tcm_rezero(struct tcm_dev *tcm_dev)
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_REZERO);
 		goto exit;
 	}
@@ -1769,12 +1763,12 @@ int syna_tcm_set_config_id(struct tcm_dev *tcm_dev,
 	unsigned int config_id_len = 0;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in application fw mode, mode: %x\n",
+		hbp_err("Device is not in application fw mode, mode: %x\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1782,7 +1776,7 @@ int syna_tcm_set_config_id(struct tcm_dev *tcm_dev,
 	config_id_len = sizeof(tcm_dev->app_info.customer_config_id);
 
 	if (size != config_id_len) {
-		LOGE("Invalid config id input, given size: %d (%d)\n",
+		hbp_err("Invalid config id input, given size: %d (%d)\n",
 			size, config_id_len);
 		return _EINVAL;
 	}
@@ -1794,7 +1788,7 @@ int syna_tcm_set_config_id(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_SET_CONFIG_ID);
 		goto exit;
 	}
@@ -1824,7 +1818,7 @@ int syna_tcm_sleep(struct tcm_dev *tcm_dev, bool en)
 	unsigned char command;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1837,7 +1831,7 @@ int syna_tcm_sleep(struct tcm_dev *tcm_dev, bool en)
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%x\n", command);
+		hbp_err("Fail to send command 0x%x\n", command);
 		goto exit;
 	}
 
@@ -1866,12 +1860,12 @@ int syna_tcm_get_features(struct tcm_dev *tcm_dev,
 	unsigned char resp_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in application fw mode, mode: %x\n",
+		hbp_err("Device is not in application fw mode, mode: %x\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1883,7 +1877,7 @@ int syna_tcm_get_features(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_GET_FEATURES);
 		goto exit;
 	}
@@ -1898,7 +1892,7 @@ int syna_tcm_get_features(struct tcm_dev *tcm_dev,
 		tcm_dev->resp_buf.buf_size,
 		MIN(sizeof(*info), tcm_dev->resp_buf.data_length));
 	if (retval < 0) {
-		LOGE("Fail to copy features_info to caller\n");
+		hbp_err("Fail to copy features_info to caller\n");
 		goto exit;
 	}
 
@@ -1930,12 +1924,12 @@ int syna_tcm_run_production_test(struct tcm_dev *tcm_dev,
 	unsigned char test_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in application fw mode, mode: %x\n",
+		hbp_err("Device is not in application fw mode, mode: %x\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1949,7 +1943,7 @@ int syna_tcm_run_production_test(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_PRODUCTION_TEST);
 		goto exit;
 	}
@@ -1960,7 +1954,7 @@ int syna_tcm_run_production_test(struct tcm_dev *tcm_dev,
 	/* copy testing data to caller */
 	retval = syna_tcm_buf_copy(tdata, &tcm_dev->resp_buf);
 	if (retval < 0) {
-		LOGE("Fail to copy testing data\n");
+		hbp_err("Fail to copy testing data\n");
 		goto exit;
 	}
 exit:
@@ -1992,12 +1986,12 @@ int syna_tcm_send_command(struct tcm_dev *tcm_dev,
 	int retval = 0;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!code) {
-		LOGE("Invalid parameter\n");
+		hbp_err("Invalid parameter\n");
 		return _EINVAL;
 	}
 
@@ -2008,9 +2002,9 @@ int syna_tcm_send_command(struct tcm_dev *tcm_dev,
 			code,
 			delay_ms_resp);
 	if (retval < 0)
-		LOGE("Fail to run command 0x%02x\n", command);
+		hbp_err("Fail to run command 0x%02x\n", command);
 
-	LOGD("Status code returned: 0x%02x\n", *code);
+	hbp_info("Status code returned: 0x%02x\n", *code);
 
 	/* exit if no buffer provided */
 	if (!resp)
@@ -2024,7 +2018,7 @@ int syna_tcm_send_command(struct tcm_dev *tcm_dev,
 		syna_tcm_buf_lock(&tcm_dev->report_buf);
 
 		if (syna_tcm_buf_copy(resp, &tcm_dev->report_buf) < 0) {
-			LOGE("Fail to copy data, report type: %x\n",
+			hbp_err("Fail to copy data, report type: %x\n",
 				*code);
 			syna_tcm_buf_unlock(&tcm_dev->report_buf);
 			retval = _ENOMEM;
@@ -2042,7 +2036,7 @@ int syna_tcm_send_command(struct tcm_dev *tcm_dev,
 		syna_tcm_buf_lock(&tcm_dev->resp_buf);
 
 		if (syna_tcm_buf_copy(resp, &tcm_dev->resp_buf) < 0) {
-			LOGE("Fail to copy resp data, status code: %x\n",
+			hbp_err("Fail to copy resp data, status code: %x\n",
 				*code);
 			syna_tcm_buf_unlock(&tcm_dev->resp_buf);
 			retval = _ENOMEM;
@@ -2072,14 +2066,14 @@ exit:
 int syna_tcm_enable_predict_reading(struct tcm_dev *tcm_dev, bool en)
 {
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	tcm_dev->msg_data.predict_reads = en;
 	tcm_dev->msg_data.predict_length = 0;
 
-	LOGI("Predicted reading is %s\n",
+	hbp_info("Predicted reading is %s\n",
 		(en) ? "enabled":"disabled");
 
 	return 0;
@@ -2099,7 +2093,7 @@ int syna_tcm_enable_predict_reading(struct tcm_dev *tcm_dev, bool en)
 unsigned short syna_tcm_get_message_crc(struct tcm_dev *tcm_dev)
 {
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -2120,7 +2114,7 @@ unsigned short syna_tcm_get_message_crc(struct tcm_dev *tcm_dev)
 unsigned char syna_tcm_get_extra_rc_byte(struct tcm_dev *tcm_dev)
 {
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -2144,14 +2138,14 @@ int syna_tcm_set_reset_occurrence_callback(struct tcm_dev *tcm_dev,
 		tcm_reset_occurrence_callback_t p_cb, void *p_cbdata)
 {
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	tcm_dev->cb_reset_occurrence = p_cb;
 	tcm_dev->cbdata_reset = p_cbdata;
 
-	LOGI("enabled\n");
+	hbp_info("enabled\n");
 
 	return 0;
 }
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_base.h b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_base.h
similarity index 100%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_base.h
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_base.h
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_base_flash.h b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_base_flash.h
similarity index 93%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_base_flash.h
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_base_flash.h
index 87d0a4ee..b0463fa9 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_base_flash.h
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_base_flash.h
@@ -229,17 +229,17 @@ static int syna_tcm_save_flash_block_data(struct image_info *image_info,
 		unsigned int offset, unsigned int size, unsigned int checksum)
 {
 	if (!image_info) {
-		LOGE("Invalid image_info\n");
+		hbp_err("Invalid image_info\n");
 		return _EINVAL;
 	}
 
 	if (area >= AREA_MAX) {
-		LOGE("Invalid flash area\n");
+		hbp_err("Invalid flash area\n");
 		return _EINVAL;
 	}
 
 	if (checksum != CRC32((const char *)content, size)) {
-		LOGE("%s checksum error, in image: 0x%x (0x%x)\n",
+		hbp_err("%s checksum error, in image: 0x%x (0x%x)\n",
 			AREA_ID_STR(area), checksum,
 			CRC32((const char *)content, size));
 		return _EINVAL;
@@ -250,7 +250,7 @@ static int syna_tcm_save_flash_block_data(struct image_info *image_info,
 	image_info->data[area].id = (unsigned char)area;
 	image_info->data[area].available = true;
 
-	LOGI("%s area - address:0x%08x (%d), size:%d\n",
+	hbp_info("%s area - address:0x%08x (%d), size:%d\n",
 		AREA_ID_STR(area), offset, offset, size);
 
 	return 0;
@@ -318,12 +318,12 @@ static inline int syna_tcm_parse_fw_image(const unsigned char *image,
 	enum flash_area target_area;
 
 	if (!image) {
-		LOGE("No image data\n");
+		hbp_err("No image data\n");
 		return _EINVAL;
 	}
 
 	if (!image_info) {
-		LOGE("Invalid image_info blob\n");
+		hbp_err("Invalid image_info blob\n");
 		return _EINVAL;
 	}
 
@@ -333,7 +333,7 @@ static inline int syna_tcm_parse_fw_image(const unsigned char *image,
 
 	magic_value = syna_pal_le4_to_uint(header->magic_value);
 	if (magic_value != IMAGE_FILE_MAGIC_VALUE) {
-		LOGE("Invalid image file magic value\n");
+		hbp_err("Invalid image file magic value\n");
 		return _EINVAL;
 	}
 
@@ -403,12 +403,12 @@ static inline int syna_tcm_parse_ihex_line(char *line, unsigned int *count,
 	unsigned int pos;
 
 	if (!line) {
-		LOGE("No string line\n");
+		hbp_err("No string line\n");
 		return _EINVAL;
 	}
 
 	if ((!buf) || (buf_size == 0)) {
-		LOGE("Invalid temporary data buffer\n");
+		hbp_err("Invalid temporary data buffer\n");
 		return _EINVAL;
 	}
 
@@ -420,7 +420,7 @@ static inline int syna_tcm_parse_ihex_line(char *line, unsigned int *count,
 			line + OFFSET_TYPE, SIZE_TYPE);
 
 	if (*count > buf_size) {
-		LOGE("Data size mismatched, required:%d, given:%d\n",
+		hbp_err("Data size mismatched, required:%d, given:%d\n",
 			*count, buf_size);
 		return _EINVAL;
 	}
@@ -465,23 +465,23 @@ static inline int syna_tcm_parse_fw_ihex(const char *ihex, int ihex_size,
 	unsigned int block_idx = 0;
 
 	if (!ihex) {
-		LOGE("No ihex data\n");
+		hbp_err("No ihex data\n");
 		return _EINVAL;
 	}
 
 	if (!ihex_info) {
-		LOGE("Invalid ihex_info blob\n");
+		hbp_err("Invalid ihex_info blob\n");
 		return _EINVAL;
 	}
 
 	if ((!ihex_info->bin) || (ihex_info->bin_size == 0)) {
-		LOGE("Invalid ihex_info->data\n");
+		hbp_err("Invalid ihex_info->data\n");
 		return _EINVAL;
 	}
 
 	tmp = syna_pal_mem_alloc(len_per_line + 1, sizeof(char));
 	if (!tmp) {
-		LOGE("Fail to allocate temporary buffer\n");
+		hbp_err("Fail to allocate temporary buffer\n");
 		return _ENOMEM;
 	}
 
@@ -496,7 +496,7 @@ static inline int syna_tcm_parse_fw_ihex(const char *ihex, int ihex_size,
 	for (record = 0; record < ihex_info->records; record++) {
 		pos = record * len_per_line;
 		if ((char)ihex[pos] != ':') {
-			LOGE("Invalid string maker at pos %d, marker:%c\n",
+			hbp_err("Invalid string maker at pos %d, marker:%c\n",
 				pos, (char)ihex[pos]);
 			goto exit;
 		}
@@ -504,21 +504,21 @@ static inline int syna_tcm_parse_fw_ihex(const char *ihex, int ihex_size,
 		retval = syna_pal_mem_cpy(tmp, len_per_line,
 				&ihex[pos], ihex_size - pos, len_per_line);
 		if (retval < 0) {
-			LOGE("Fail to copy a line at pos %d\n", pos);
+			hbp_err("Fail to copy a line at pos %d\n", pos);
 			goto exit;
 		}
 
 		retval = syna_tcm_parse_ihex_line(tmp, &count, &addr, &type,
 				data, sizeof(data));
 		if (retval < 0) {
-			LOGE("Fail to parse line at pos %d\n", pos);
+			hbp_err("Fail to parse line at pos %d\n", pos);
 			goto exit;
 		}
 
 		if ((((prev_addr + 2) & 0xFFFF) != addr) && (type == 0x00)) {
 			block_idx = (record == 0) ? 0 : block_idx + 1;
 			if (block_idx >= IHEX_MAX_BLOCKS) {
-				LOGE("Invalid block index\n");
+				hbp_err("Invalid block index\n");
 				goto exit;
 			}
 
@@ -535,14 +535,14 @@ static inline int syna_tcm_parse_fw_ihex(const char *ihex, int ihex_size,
 			addr += offset;
 
 			if (addr >= ihex_info->bin_size) {
-				LOGE("No enough size for data0 addr:0x%x(%d)\n",
+				hbp_err("No enough size for data0 addr:0x%x(%d)\n",
 					addr, addr);
 				goto exit;
 			}
 			ihex_info->bin[addr++] = data[0];
 
 			if (addr >= ihex_info->bin_size) {
-				LOGE("No enough size for data1 addr:0x%x(%d)\n",
+				hbp_err("No enough size for data1 addr:0x%x(%d)\n",
 					addr, addr);
 				goto exit;
 			}
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_reflash.c b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_reflash.c
similarity index 88%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_reflash.c
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_reflash.c
index 93d707fb..9c37ebbe 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_reflash.c
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_reflash.c
@@ -76,38 +76,38 @@ static int syna_tcm_set_up_flash_access(struct tcm_dev *tcm_dev,
 	unsigned int wr_chunk;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash data blob\n");
+		hbp_err("Invalid reflash data blob\n");
 		return _EINVAL;
 	}
 
-	LOGI("Set up flash access\n");
+	hbp_info("Set up flash access\n");
 
 	retval = syna_tcm_identify(tcm_dev, &id_info);
 	if (retval < 0) {
-		LOGE("Fail to do identification\n");
+		hbp_err("Fail to do identification\n");
 		return retval;
 	}
 
 	/* switch to bootloader mode */
 	if (IS_APP_FW_MODE(id_info.mode)) {
-		LOGI("Prepare to enter bootloader mode\n");
+		hbp_info("Prepare to enter bootloader mode\n");
 
 		retval = syna_tcm_switch_fw_mode(tcm_dev,
 				MODE_BOOTLOADER,
 				FW_MODE_SWITCH_DELAY_MS);
 		if (retval < 0) {
-			LOGE("Fail to enter bootloader mode\n");
+			hbp_err("Fail to enter bootloader mode\n");
 			return retval;
 		}
 	}
 
 	if (!IS_BOOTLOADER_MODE(tcm_dev->dev_mode)) {
-		LOGE("Fail to enter bootloader mode (current: 0x%x)\n",
+		hbp_err("Fail to enter bootloader mode (current: 0x%x)\n",
 			tcm_dev->dev_mode);
 		return retval;
 	}
@@ -117,7 +117,7 @@ static int syna_tcm_set_up_flash_access(struct tcm_dev *tcm_dev,
 	/* get boot info to set up the flash access */
 	retval = syna_tcm_get_boot_info(tcm_dev, boot_info);
 	if (retval < 0) {
-		LOGE("Fail to get boot info at mode 0x%x\n",
+		hbp_err("Fail to get boot info at mode 0x%x\n",
 			id_info.mode);
 		return retval;
 	}
@@ -127,35 +127,35 @@ static int syna_tcm_set_up_flash_access(struct tcm_dev *tcm_dev,
 	temp = boot_info->write_block_size_words;
 	reflash_data->write_block_size = temp * 2;
 
-	LOGI("Write block size: %d (words size: %d)\n",
+	hbp_info("Write block size: %d (words size: %d)\n",
 		reflash_data->write_block_size, temp);
 
 	temp = syna_pal_le2_to_uint(boot_info->erase_page_size_words);
 	reflash_data->page_size = temp * 2;
 
-	LOGI("Erase page size: %d (words size: %d)\n",
+	hbp_info("Erase page size: %d (words size: %d)\n",
 		reflash_data->page_size, temp);
 
 	temp = syna_pal_le2_to_uint(boot_info->max_write_payload_size);
 	reflash_data->max_write_payload_size = temp;
 
-	LOGI("Max write flash data size: %d\n",
+	hbp_info("Max write flash data size: %d\n",
 		reflash_data->max_write_payload_size);
 
 	if (reflash_data->write_block_size > (wr_chunk - 9)) {
-		LOGE("Write block size, %d, greater than chunk space, %d\n",
+		hbp_err("Write block size, %d, greater than chunk space, %d\n",
 			reflash_data->write_block_size, (wr_chunk - 9));
 		return _EINVAL;
 	}
 
 	if (reflash_data->write_block_size == 0) {
-		LOGE("Invalid write block size %d\n",
+		hbp_err("Invalid write block size %d\n",
 			reflash_data->write_block_size);
 		return _EINVAL;
 	}
 
 	if (reflash_data->page_size == 0) {
-		LOGE("Invalid erase page size %d\n",
+		hbp_err("Invalid erase page size %d\n",
 			reflash_data->page_size);
 		return _EINVAL;
 	}
@@ -193,19 +193,19 @@ int syna_tcm_compare_image_id_info(struct tcm_dev *tcm_dev,
 	result = UPDATE_NONE;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash_data\n");
+		hbp_err("Invalid reflash_data\n");
 		return _EINVAL;
 	}
 
 	app_config = &reflash_data->image_info.data[AREA_APP_CONFIG];
 
 	if (app_config->size < sizeof(struct app_config_header)) {
-		LOGE("Invalid application config in image file\n");
+		hbp_err("Invalid application config in image file\n");
 		return _EINVAL;
 	}
 
@@ -278,17 +278,17 @@ static int syna_tcm_check_flash_boot_config(struct block_data *boot_config,
 	unsigned int device_addr;
 
 	if (!boot_config) {
-		LOGE("Invalid boot_config block data\n");
+		hbp_err("Invalid boot_config block data\n");
 		return _EINVAL;
 	}
 
 	if (!boot_info) {
-		LOGE("Invalid boot_info\n");
+		hbp_err("Invalid boot_info\n");
 		return _EINVAL;
 	}
 
 	if (boot_config->size < BOOT_CONFIG_SIZE) {
-		LOGE("No valid BOOT_CONFIG size, %d, in image file\n",
+		hbp_err("No valid BOOT_CONFIG size, %d, in image file\n",
 			boot_config->size);
 		return _EINVAL;
 	}
@@ -331,12 +331,12 @@ static int syna_tcm_check_flash_app_config(struct block_data *app_config,
 	unsigned int device_size;
 
 	if (!app_config) {
-		LOGE("Invalid app_config block data\n");
+		hbp_err("Invalid app_config block data\n");
 		return _EINVAL;
 	}
 
 	if (!app_info) {
-		LOGE("Invalid app_info\n");
+		hbp_err("Invalid app_info\n");
 		return _EINVAL;
 	}
 
@@ -398,12 +398,12 @@ static int syna_tcm_check_flash_disp_config(struct block_data *disp_config,
 	unsigned int device_size;
 
 	if (!disp_config) {
-		LOGE("Invalid disp_config block data\n");
+		hbp_err("Invalid disp_config block data\n");
 		return _EINVAL;
 	}
 
 	if (!boot_info) {
-		LOGE("Invalid boot_info\n");
+		hbp_err("Invalid boot_info\n");
 		return _EINVAL;
 	}
 
@@ -455,7 +455,7 @@ static int syna_tcm_check_flash_disp_config(struct block_data *disp_config,
 static int syna_tcm_check_flash_app_code(struct block_data *app_code)
 {
 	if (!app_code) {
-		LOGE("Invalid app_code block data\n");
+		hbp_err("Invalid app_code block data\n");
 		return _EINVAL;
 	}
 
@@ -483,7 +483,7 @@ static int syna_tcm_check_flash_app_code(struct block_data *app_code)
 static int syna_tcm_check_flash_openshort(struct block_data *open_short)
 {
 	if (!open_short) {
-		LOGE("Invalid open_short block data\n");
+		hbp_err("Invalid open_short block data\n");
 		return _EINVAL;
 	}
 
@@ -512,7 +512,7 @@ static int syna_tcm_check_flash_openshort(struct block_data *open_short)
 static int syna_tcm_check_flash_app_prod_test(struct block_data *prod_test)
 {
 	if (!prod_test) {
-		LOGE("Invalid app_prod_test block data\n");
+		hbp_err("Invalid app_prod_test block data\n");
 		return _EINVAL;
 	}
 
@@ -541,7 +541,7 @@ static int syna_tcm_check_flash_app_prod_test(struct block_data *prod_test)
 static int syna_tcm_check_flash_ppdt(struct block_data *ppdt)
 {
 	if (!ppdt) {
-		LOGE("Invalid ppdt block data\n");
+		hbp_err("Invalid ppdt block data\n");
 		return _EINVAL;
 	}
 
@@ -579,17 +579,17 @@ static int syna_tcm_check_flash_block(struct tcm_dev *tcm_dev,
 	struct tcm_boot_info *boot_info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return DO_NONE;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash data blob\n");
+		hbp_err("Invalid reflash data blob\n");
 		return DO_NONE;
 	}
 
 	if (!block) {
-		LOGE("Invalid block data\n");
+		hbp_err("Invalid block data\n");
 		return DO_NONE;
 	}
 
@@ -652,7 +652,7 @@ static int syna_tcm_get_flash_data_location(struct tcm_dev *tcm_dev,
 	unsigned char payload;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -673,7 +673,7 @@ static int syna_tcm_get_flash_data_location(struct tcm_dev *tcm_dev,
 		payload = FLASH_OPEN_SHORT_TUNING_DATA;
 		break;
 	default:
-		LOGE("Invalid flash area %d\n", area);
+		hbp_err("Invalid flash area %d\n", area);
 		return _EINVAL;
 	}
 
@@ -684,13 +684,13 @@ static int syna_tcm_get_flash_data_location(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_GET_DATA_LOCATION);
 		goto exit;
 	}
 
 	if (tcm_dev->resp_buf.data_length != 4) {
-		LOGE("Invalid data length %d\n",
+		hbp_err("Invalid data length %d\n",
 			tcm_dev->resp_buf.data_length);
 		retval = _EINVAL;
 		goto exit;
@@ -728,12 +728,12 @@ static int syna_tcm_reflash_send_command(struct tcm_dev *tcm_dev,
 	unsigned char resp_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!IS_BOOTLOADER_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device is not in BL mode, 0x%x\n", tcm_dev->dev_mode);
+		hbp_err("Device is not in BL mode, 0x%x\n", tcm_dev->dev_mode);
 		retval = _EINVAL;
 	}
 
@@ -744,7 +744,7 @@ static int syna_tcm_reflash_send_command(struct tcm_dev *tcm_dev,
 			&resp_code,
 			delay_ms_resp);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n", command);
+		hbp_err("Fail to send command 0x%02x\n", command);
 		goto exit;
 	}
 
@@ -784,17 +784,17 @@ static int syna_tcm_read_flash(struct tcm_dev *tcm_dev,
 	unsigned int delay_ms = 0;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!rd_data) {
-		LOGE("Invalid rd_data buffer\n");
+		hbp_err("Invalid rd_data buffer\n");
 		return _EINVAL;
 	}
 
 	if (address == 0 || rd_len == 0) {
-		LOGE("Invalid flash address and length\n");
+		hbp_err("Invalid flash address and length\n");
 		retval = _EINVAL;
 		goto exit;
 	}
@@ -830,13 +830,13 @@ static int syna_tcm_read_flash(struct tcm_dev *tcm_dev,
 			sizeof(out),
 			delay_ms);
 	if (retval < 0) {
-		LOGE("Fail to read flash data from addr 0x%x, size %d\n",
+		hbp_err("Fail to read flash data from addr 0x%x, size %d\n",
 			address, rd_len);
 		goto exit;
 	}
 
 	if (tcm_dev->resp_buf.data_length != rd_len) {
-		LOGE("Fail to read requested length %d, rd_len %d\n",
+		hbp_err("Fail to read requested length %d, rd_len %d\n",
 			tcm_dev->resp_buf.data_length, rd_len);
 		retval = _EIO;
 		goto exit;
@@ -848,7 +848,7 @@ static int syna_tcm_read_flash(struct tcm_dev *tcm_dev,
 			tcm_dev->resp_buf.buf_size,
 			rd_len);
 	if (retval < 0) {
-		LOGE("Fail to copy read data, size %d\n", rd_len);
+		hbp_err("Fail to copy read data, size %d\n", rd_len);
 		goto exit;
 	}
 
@@ -881,24 +881,24 @@ static int syna_tcm_read_flash_boot_config(struct tcm_dev *tcm_dev,
 	struct tcm_boot_info *boot_info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash data blob\n");
+		hbp_err("Invalid reflash data blob\n");
 		return _EINVAL;
 	}
 
 	if (!rd_data) {
-		LOGE("Invalid read data buffer\n");
+		hbp_err("Invalid read data buffer\n");
 		return _EINVAL;
 	}
 
 	boot_info = &tcm_dev->boot_info;
 
 	if (IS_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("BOOT_CONFIG not available in app fw mode %d\n",
+		hbp_err("BOOT_CONFIG not available in app fw mode %d\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -908,7 +908,7 @@ static int syna_tcm_read_flash_boot_config(struct tcm_dev *tcm_dev,
 	length = BOOT_CONFIG_SIZE * BOOT_CONFIG_SLOTS;
 
 	if (addr == 0 || length == 0) {
-		LOGE("BOOT_CONFIG data area unavailable\n");
+		hbp_err("BOOT_CONFIG data area unavailable\n");
 		retval = _EINVAL;
 		goto exit;
 	}
@@ -917,14 +917,14 @@ static int syna_tcm_read_flash_boot_config(struct tcm_dev *tcm_dev,
 
 	retval = syna_tcm_buf_alloc(rd_data, length);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for rd_data buffer\n");
+		hbp_err("Fail to allocate memory for rd_data buffer\n");
 		goto exit;
 	}
 
 	retval = syna_tcm_read_flash(tcm_dev, addr, rd_data->buf,
 			length, rd_delay_us);
 	if (retval < 0) {
-		LOGE("Fail to read BOOT_CONFIG area (addr: 0x%x, length: %d)\n",
+		hbp_err("Fail to read BOOT_CONFIG area (addr: 0x%x, length: %d)\n",
 			addr, length);
 		goto exit;
 	}
@@ -960,24 +960,24 @@ static int syna_tcm_read_flash_app_config(struct tcm_dev *tcm_dev,
 	struct tcm_application_info *app_info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash data blob\n");
+		hbp_err("Invalid reflash data blob\n");
 		return _EINVAL;
 	}
 
 	if (!rd_data) {
-		LOGE("Invalid read data buffer\n");
+		hbp_err("Invalid read data buffer\n");
 		return _EINVAL;
 	}
 
 	app_info = &tcm_dev->app_info;
 
 	if (IS_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("APP_CONFIG not available in app fw mode %d\n",
+		hbp_err("APP_CONFIG not available in app fw mode %d\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -987,7 +987,7 @@ static int syna_tcm_read_flash_app_config(struct tcm_dev *tcm_dev,
 	length = VALUE(app_info->app_config_size);
 
 	if (addr == 0 || length == 0) {
-		LOGE("APP_CONFIG data area unavailable\n");
+		hbp_err("APP_CONFIG data area unavailable\n");
 		retval = _EINVAL;
 		goto exit;
 	}
@@ -996,14 +996,14 @@ static int syna_tcm_read_flash_app_config(struct tcm_dev *tcm_dev,
 
 	retval = syna_tcm_buf_alloc(rd_data, length);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for rd_data buffer\n");
+		hbp_err("Fail to allocate memory for rd_data buffer\n");
 		goto exit;
 	}
 
 	retval = syna_tcm_read_flash(tcm_dev, addr, rd_data->buf,
 			length, rd_delay_us);
 	if (retval < 0) {
-		LOGE("Fail to read APP_CONFIG area (addr: 0x%x, length: %d)\n",
+		hbp_err("Fail to read APP_CONFIG area (addr: 0x%x, length: %d)\n",
 			addr, length);
 		goto exit;
 	}
@@ -1039,24 +1039,24 @@ static int syna_tcm_read_flash_disp_config(struct tcm_dev *tcm_dev,
 	struct tcm_boot_info *boot_info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash data blob\n");
+		hbp_err("Invalid reflash data blob\n");
 		return _EINVAL;
 	}
 
 	if (!rd_data) {
-		LOGE("Invalid read data buffer\n");
+		hbp_err("Invalid read data buffer\n");
 		return _EINVAL;
 	}
 
 	boot_info = &tcm_dev->boot_info;
 
 	if (IS_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("DISP_CONFIG not available in app fw mode %d\n",
+		hbp_err("DISP_CONFIG not available in app fw mode %d\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1067,7 +1067,7 @@ static int syna_tcm_read_flash_disp_config(struct tcm_dev *tcm_dev,
 	length = temp * reflash_data->write_block_size;
 
 	if (addr == 0 || length == 0) {
-		LOGE("DISP_CONFIG data area unavailable\n");
+		hbp_err("DISP_CONFIG data area unavailable\n");
 		retval = _EINVAL;
 		goto exit;
 	}
@@ -1076,14 +1076,14 @@ static int syna_tcm_read_flash_disp_config(struct tcm_dev *tcm_dev,
 
 	retval = syna_tcm_buf_alloc(rd_data, length);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for rd_data buffer\n");
+		hbp_err("Fail to allocate memory for rd_data buffer\n");
 		goto exit;
 	}
 
 	retval = syna_tcm_read_flash(tcm_dev, addr, rd_data->buf,
 			length, rd_delay_us);
 	if (retval < 0) {
-		LOGE("Fail to read DISP_CONFIG area (addr: 0x%x, length: %d)\n",
+		hbp_err("Fail to read DISP_CONFIG area (addr: 0x%x, length: %d)\n",
 			addr, length);
 		goto exit;
 	}
@@ -1119,24 +1119,24 @@ static int syna_tcm_read_flash_custom_otp(struct tcm_dev *tcm_dev,
 	struct tcm_boot_info *boot_info;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash data blob\n");
+		hbp_err("Invalid reflash data blob\n");
 		return _EINVAL;
 	}
 
 	if (!rd_data) {
-		LOGE("Invalid read data buffer\n");
+		hbp_err("Invalid read data buffer\n");
 		return _EINVAL;
 	}
 
 	boot_info = &tcm_dev->boot_info;
 
 	if (IS_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("CUSTOM_OTP not available in app fw mode %d\n",
+		hbp_err("CUSTOM_OTP not available in app fw mode %d\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1147,7 +1147,7 @@ static int syna_tcm_read_flash_custom_otp(struct tcm_dev *tcm_dev,
 	length = temp * reflash_data->write_block_size;
 
 	if (addr == 0 || length == 0) {
-		LOGE("CUSTOM_OTP data area unavailable\n");
+		hbp_err("CUSTOM_OTP data area unavailable\n");
 		retval = _EINVAL;
 		goto exit;
 	}
@@ -1156,14 +1156,14 @@ static int syna_tcm_read_flash_custom_otp(struct tcm_dev *tcm_dev,
 
 	retval = syna_tcm_buf_alloc(rd_data, length);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for rd_data buffer\n");
+		hbp_err("Fail to allocate memory for rd_data buffer\n");
 		goto exit;
 	}
 
 	retval = syna_tcm_read_flash(tcm_dev, addr, rd_data->buf,
 			length, rd_delay_us);
 	if (retval < 0) {
-		LOGE("Fail to read CUSTOM_OTP area (addr: 0x%x, length: %d)\n",
+		hbp_err("Fail to read CUSTOM_OTP area (addr: 0x%x, length: %d)\n",
 			addr, length);
 		goto exit;
 	}
@@ -1200,22 +1200,22 @@ static int syna_tcm_read_flash_custom_data(struct tcm_dev *tcm_dev,
 	unsigned int length = 0;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash data blob\n");
+		hbp_err("Invalid reflash data blob\n");
 		return _EINVAL;
 	}
 
 	if (!rd_data) {
-		LOGE("Invalid read data buffer\n");
+		hbp_err("Invalid read data buffer\n");
 		return _EINVAL;
 	}
 
 	if (IS_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Custom data not available in app fw mode %d\n",
+		hbp_err("Custom data not available in app fw mode %d\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -1224,7 +1224,7 @@ static int syna_tcm_read_flash_custom_data(struct tcm_dev *tcm_dev,
 	length = size * reflash_data->write_block_size;
 
 	if (addr == 0 || length == 0) {
-		LOGE("Custom data area unavailable\n");
+		hbp_err("Custom data area unavailable\n");
 		retval = _EINVAL;
 		goto exit;
 	}
@@ -1233,14 +1233,14 @@ static int syna_tcm_read_flash_custom_data(struct tcm_dev *tcm_dev,
 
 	retval = syna_tcm_buf_alloc(rd_data, length);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for rd_data buffer\n");
+		hbp_err("Fail to allocate memory for rd_data buffer\n");
 		goto exit;
 	}
 
 	retval = syna_tcm_read_flash(tcm_dev, addr, rd_data->buf,
 			length, rd_delay_us);
 	if (retval < 0) {
-		LOGE("Fail to read custom data (addr: 0x%x, length: %d)\n",
+		hbp_err("Fail to read custom data (addr: 0x%x, length: %d)\n",
 			addr, length);
 		goto exit;
 	}
@@ -1276,12 +1276,12 @@ int syna_tcm_read_flash_area(struct tcm_dev *tcm_dev,
 	struct tcm_reflash_data_blob reflash_data;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!rd_data) {
-		LOGE("Invalid data buffer\n");
+		hbp_err("Invalid data buffer\n");
 		return _EINVAL;
 	}
 
@@ -1294,7 +1294,7 @@ int syna_tcm_read_flash_area(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_get_flash_data_location(tcm_dev,
 				area, &addr, &length);
 		if (retval < 0) {
-			LOGE("Fail to get data location of 0x%x\n", area);
+			hbp_err("Fail to get data location of 0x%x\n", area);
 			return retval;
 		}
 		break;
@@ -1305,7 +1305,7 @@ int syna_tcm_read_flash_area(struct tcm_dev *tcm_dev,
 	retval = syna_tcm_set_up_flash_access(tcm_dev,
 			&reflash_data);
 	if (retval < 0) {
-		LOGE("Fail to set up flash access\n");
+		hbp_err("Fail to set up flash access\n");
 		return retval;
 	}
 
@@ -1316,7 +1316,7 @@ int syna_tcm_read_flash_area(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_read_flash_boot_config(tcm_dev,
 				&reflash_data, rd_data, rd_delay_us);
 		if (retval < 0) {
-			LOGE("Fail to get boot config data\n");
+			hbp_err("Fail to get boot config data\n");
 			goto exit;
 		}
 		break;
@@ -1324,7 +1324,7 @@ int syna_tcm_read_flash_area(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_read_flash_app_config(tcm_dev,
 				&reflash_data, rd_data, rd_delay_us);
 		if (retval < 0) {
-			LOGE("Fail to get app config data\n");
+			hbp_err("Fail to get app config data\n");
 			goto exit;
 		}
 		break;
@@ -1332,7 +1332,7 @@ int syna_tcm_read_flash_area(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_read_flash_disp_config(tcm_dev,
 				&reflash_data, rd_data, rd_delay_us);
 		if (retval < 0) {
-			LOGE("Fail to get disp config data\n");
+			hbp_err("Fail to get disp config data\n");
 			goto exit;
 		}
 		break;
@@ -1340,7 +1340,7 @@ int syna_tcm_read_flash_area(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_read_flash_custom_otp(tcm_dev,
 				&reflash_data, rd_data, rd_delay_us);
 		if (retval < 0) {
-			LOGE("Fail to get custom otp data\n");
+			hbp_err("Fail to get custom otp data\n");
 			goto exit;
 		}
 		break;
@@ -1354,12 +1354,12 @@ int syna_tcm_read_flash_area(struct tcm_dev *tcm_dev,
 				rd_delay_us);
 		break;
 	default:
-		LOGE("Invalid data area\n");
+		hbp_err("Invalid data area\n");
 		retval = _EINVAL;
 		goto exit;
 	}
 
-	LOGI("%s read\n", AREA_ID_STR(area));
+	hbp_info("%s read\n", AREA_ID_STR(area));
 
 	retval = 0;
 
@@ -1368,7 +1368,7 @@ exit:
 			MODE_APPLICATION_FIRMWARE,
 			FW_MODE_SWITCH_DELAY_MS);
 	if (retval < 0)
-		LOGE("Fail to go back to application firmware\n");
+		hbp_err("Fail to go back to application firmware\n");
 
 	syna_tcm_buf_release(&reflash_data.out);
 
@@ -1413,7 +1413,7 @@ static int syna_tcm_write_flash(struct tcm_dev *tcm_dev,
 	unsigned int delay_ms;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1438,7 +1438,7 @@ static int syna_tcm_write_flash(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_buf_alloc(&reflash_data->out,
 				xfer_length + 2);
 		if (retval < 0) {
-			LOGE("Fail to allocate memory for buf.out\n");
+			hbp_err("Fail to allocate memory for buf.out\n");
 			syna_tcm_buf_unlock(&reflash_data->out);
 			return retval;
 		}
@@ -1454,7 +1454,7 @@ static int syna_tcm_write_flash(struct tcm_dev *tcm_dev,
 				wr_len - offset,
 				xfer_length);
 		if (retval < 0) {
-			LOGE("Fail to copy write data ,size: %d\n",
+			hbp_err("Fail to copy write data ,size: %d\n",
 				xfer_length);
 			syna_tcm_buf_unlock(&reflash_data->out);
 			return retval;
@@ -1478,7 +1478,7 @@ static int syna_tcm_write_flash(struct tcm_dev *tcm_dev,
 				xfer_length + 2,
 				delay_ms);
 		if (retval < 0) {
-			LOGE("Fail to write data to flash addr 0x%x, size %d\n",
+			hbp_err("Fail to write data to flash addr 0x%x, size %d\n",
 				flash_address, xfer_length + 2);
 			syna_tcm_buf_unlock(&reflash_data->out);
 			return retval;
@@ -1520,17 +1520,17 @@ static int syna_tcm_write_flash_block(struct tcm_dev *tcm_dev,
 	const unsigned char *data;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash data blob\n");
+		hbp_err("Invalid reflash data blob\n");
 		return _EINVAL;
 	}
 
 	if (!block) {
-		LOGE("Invalid block data\n");
+		hbp_err("Invalid block data\n");
 		return _EINVAL;
 	}
 
@@ -1542,14 +1542,14 @@ static int syna_tcm_write_flash_block(struct tcm_dev *tcm_dev,
 		AREA_ID_STR(block->id), flash_addr, size);
 
 	if (size == 0) {
-		LOGI("No need to update, size = %d\n", size);
+		hbp_info("No need to update, size = %d\n", size);
 		goto exit;
 	}
 
 	retval = syna_tcm_write_flash(tcm_dev, reflash_data,
 			flash_addr, data, size, wr_delay_us);
 	if (retval < 0) {
-		LOGE("Fail to write %s to flash (addr: 0x%x, size: %d)\n",
+		hbp_err("Fail to write %s to flash (addr: 0x%x, size: %d)\n",
 			AREA_ID_STR(block->id), flash_addr, size);
 		return retval;
 	}
@@ -1618,7 +1618,7 @@ static int syna_tcm_erase_flash(struct tcm_dev *tcm_dev,
 			size_erase_cmd,
 			erase_delay_ms);
 	if (retval < 0) {
-		LOGE("Fail to erase data at flash page 0x%x, count %d\n",
+		hbp_err("Fail to erase data at flash page 0x%x, count %d\n",
 			page_start, page_count);
 		return retval;
 	}
@@ -1651,17 +1651,17 @@ static int syna_tcm_erase_flash_block(struct tcm_dev *tcm_dev,
 	unsigned int flash_addr;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash data blob\n");
+		hbp_err("Invalid reflash data blob\n");
 		return _EINVAL;
 	}
 
 	if (!block) {
-		LOGE("Invalid block data\n");
+		hbp_err("Invalid block data\n");
 		return _EINVAL;
 	}
 
@@ -1676,14 +1676,14 @@ static int syna_tcm_erase_flash_block(struct tcm_dev *tcm_dev,
 		AREA_ID_STR(block->id), flash_addr, size);
 
 	if (size == 0) {
-		LOGI("No need to erase, size = %d\n", size);
+		hbp_info("No need to erase, size = %d\n", size);
 		goto exit;
 	}
 
 	retval = syna_tcm_erase_flash(tcm_dev, reflash_data,
 			flash_addr, size, delay_ms);
 	if (retval < 0) {
-		LOGE("Fail to erase %s data (addr: 0x%x, size: %d)\n",
+		hbp_err("Fail to erase %s data (addr: 0x%x, size: %d)\n",
 			AREA_ID_STR(block->id), flash_addr, size);
 		return retval;
 	}
@@ -1720,17 +1720,17 @@ static int syna_tcm_update_flash_block(struct tcm_dev *tcm_dev,
 	unsigned int wr_blk_delay_ms = delay_ms & 0xFFFF;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash data blob\n");
+		hbp_err("Invalid reflash data blob\n");
 		return _EINVAL;
 	}
 
 	if (!block) {
-		LOGE("Invalid block data\n");
+		hbp_err("Invalid block data\n");
 		return _EINVAL;
 	}
 
@@ -1739,7 +1739,7 @@ static int syna_tcm_update_flash_block(struct tcm_dev *tcm_dev,
 			reflash_data,
 			block);
 	if (retval < 0) {
-		LOGE("Invalid %s area\n", AREA_ID_STR(block->id));
+		hbp_err("Invalid %s area\n", AREA_ID_STR(block->id));
 		return retval;
 	}
 
@@ -1753,7 +1753,7 @@ static int syna_tcm_update_flash_block(struct tcm_dev *tcm_dev,
 			block,
 			erase_delay_ms);
 	if (retval < 0) {
-		LOGE("Fail to erase %s area\n", AREA_ID_STR(block->id));
+		hbp_err("Fail to erase %s area\n", AREA_ID_STR(block->id));
 		return retval;
 	}
 
@@ -1764,7 +1764,7 @@ static int syna_tcm_update_flash_block(struct tcm_dev *tcm_dev,
 			block,
 			wr_blk_delay_ms);
 	if (retval < 0) {
-		LOGE("Fail to write %s area\n", AREA_ID_STR(block->id));
+		hbp_err("Fail to write %s area\n", AREA_ID_STR(block->id));
 		return retval;
 	}
 
@@ -1800,19 +1800,19 @@ static int syna_tcm_do_reflash_tddi(struct tcm_dev *tcm_dev,
 	struct block_data *block;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash_data blob\n");
+		hbp_err("Invalid reflash_data blob\n");
 		return _EINVAL;
 	}
 
 	image_info = &reflash_data->image_info;
 
 	if (tcm_dev->dev_mode != MODE_TDDI_BOOTLOADER) {
-		LOGE("Incorrect bootloader mode, 0x%02x, expected: 0x%02x\n",
+		hbp_err("Incorrect bootloader mode, 0x%02x, expected: 0x%02x\n",
 			tcm_dev->dev_mode, MODE_TDDI_BOOTLOADER);
 		return _EINVAL;
 	}
@@ -1841,7 +1841,7 @@ static int syna_tcm_do_reflash_tddi(struct tcm_dev *tcm_dev,
 				block,
 				erase_delay_ms);
 		if (retval < 0) {
-			LOGE("Fail to erase %s area\n", AREA_ID_STR(block->id));
+			hbp_err("Fail to erase %s area\n", AREA_ID_STR(block->id));
 			goto exit;
 		}
 	}
@@ -1867,7 +1867,7 @@ static int syna_tcm_do_reflash_tddi(struct tcm_dev *tcm_dev,
 			block,
 			wr_blk_delay_ms);
 		if (retval < 0) {
-			LOGE("Fail to update %s area\n",
+			hbp_err("Fail to update %s area\n",
 				AREA_ID_STR(block->id));
 			goto exit;
 		}
@@ -1904,17 +1904,17 @@ static int syna_tcm_do_reflash_generic(struct tcm_dev *tcm_dev,
 	struct block_data *block;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!reflash_data) {
-		LOGE("Invalid reflash_data blob\n");
+		hbp_err("Invalid reflash_data blob\n");
 		return _EINVAL;
 	}
 
 	if (tcm_dev->dev_mode != MODE_BOOTLOADER) {
-		LOGE("Incorrect bootloader mode, 0x%02x, expected: 0x%02x\n",
+		hbp_err("Incorrect bootloader mode, 0x%02x, expected: 0x%02x\n",
 			tcm_dev->dev_mode, MODE_BOOTLOADER);
 		return _EINVAL;
 	}
@@ -1928,7 +1928,7 @@ static int syna_tcm_do_reflash_generic(struct tcm_dev *tcm_dev,
 				block,
 				wait_delay_ms);
 		if (retval < 0) {
-			LOGE("Fail to update application firmware\n");
+			hbp_err("Fail to update application firmware\n");
 			goto exit;
 		}
 
@@ -1939,7 +1939,7 @@ static int syna_tcm_do_reflash_generic(struct tcm_dev *tcm_dev,
 				block,
 				wait_delay_ms);
 		if (retval < 0) {
-			LOGE("Fail to update application config\n");
+			hbp_err("Fail to update application config\n");
 			goto exit;
 		}
 		break;
@@ -1951,7 +1951,7 @@ static int syna_tcm_do_reflash_generic(struct tcm_dev *tcm_dev,
 				block,
 				wait_delay_ms);
 		if (retval < 0) {
-			LOGE("Fail to update application config\n");
+			hbp_err("Fail to update application config\n");
 			goto exit;
 		}
 		break;
@@ -1993,12 +1993,12 @@ int syna_tcm_do_fw_update(struct tcm_dev *tcm_dev,
 	int app_status;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if ((!image) || (image_size == 0)) {
-		LOGE("Invalid image data\n");
+		hbp_err("Invalid image data\n");
 		return _EINVAL;
 	}
 
@@ -2013,7 +2013,7 @@ int syna_tcm_do_fw_update(struct tcm_dev *tcm_dev,
 
 	retval = syna_tcm_parse_fw_image(image, &reflash_data.image_info);
 	if (retval < 0) {
-		LOGE("Fail to parse firmware image\n");
+		hbp_err("Fail to parse firmware image\n");
 		return retval;
 	}
 
@@ -2050,7 +2050,7 @@ reflash:
 	/* set up flash access, and enter the bootloader mode */
 	retval = syna_tcm_set_up_flash_access(tcm_dev, &reflash_data);
 	if (retval < 0) {
-		LOGE("Fail to set up flash access\n");
+		hbp_err("Fail to set up flash access\n");
 		goto exit;
 	}
 
@@ -2066,13 +2066,13 @@ reflash:
 			type,
 			wait_delay_ms);
 	} else {
-		LOGE("Incorrect bootloader mode, 0x%02x\n",
+		hbp_err("Incorrect bootloader mode, 0x%02x\n",
 			tcm_dev->dev_mode);
 		goto reset;
 	}
 
 	if (retval < 0) {
-		LOGE("Fail to do firmware update\n");
+		hbp_err("Fail to do firmware update\n");
 		goto reset;
 	}
 
@@ -2082,7 +2082,7 @@ reflash:
 reset:
 	retval = syna_tcm_reset(tcm_dev);
 	if (retval < 0) {
-		LOGE("Fail to do reset\n");
+		hbp_err("Fail to do reset\n");
 		goto exit;
 	}
 
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_reflash.h b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_reflash.h
similarity index 100%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_reflash.h
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_reflash.h
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_romboot.c b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_romboot.c
similarity index 89%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_romboot.c
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_romboot.c
index 7959598a..c03a3d8e 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_romboot.c
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_romboot.c
@@ -84,12 +84,12 @@ static int syna_tcm_romboot_send_command(struct tcm_dev *tcm_dev,
 	unsigned char resp_code;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (out_size < sizeof(struct flash_param)) {
-		LOGE("Invalid size of out data, %d, min. size:%d\n",
+		hbp_err("Invalid size of out data, %d, min. size:%d\n",
 			out_size, (int)sizeof(struct flash_param));
 		return _EINVAL;
 	}
@@ -101,7 +101,7 @@ static int syna_tcm_romboot_send_command(struct tcm_dev *tcm_dev,
 			&resp_code,
 			delay_ms_resp);
 	if (retval < 0) {
-		LOGE("Fail to send romboot flash command 0x%02x\n",
+		hbp_err("Fail to send romboot flash command 0x%02x\n",
 			CMD_SPI_MASTER_WRITE_THEN_READ_EXTENDED);
 		goto exit;
 	}
@@ -119,7 +119,7 @@ static int syna_tcm_romboot_send_command(struct tcm_dev *tcm_dev,
 			tcm_dev->resp_buf.buf_size,
 			tcm_dev->resp_buf.data_length);
 	if (retval < 0) {
-		LOGE("Fail to copy resp data to caller\n");
+		hbp_err("Fail to copy resp data to caller\n");
 		goto exit;
 	}
 
@@ -157,7 +157,7 @@ static int syna_tcm_romboot_multichip_send_command(struct tcm_dev *tcm_dev,
 	unsigned int offset = (int)sizeof(struct flash_param);
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -177,7 +177,7 @@ static int syna_tcm_romboot_multichip_send_command(struct tcm_dev *tcm_dev,
 
 	payld_buf = syna_pal_mem_alloc(payld_size, sizeof(unsigned char));
 	if (!payld_buf) {
-		LOGE("Fail to allocate buffer to store flash command\n");
+		hbp_err("Fail to allocate buffer to store flash command\n");
 		return _ENOMEM;
 	}
 
@@ -192,7 +192,7 @@ static int syna_tcm_romboot_multichip_send_command(struct tcm_dev *tcm_dev,
 					out_size,
 					out_size);
 			if (retval < 0) {
-				LOGE("Fail to copy payload to payld_buf\n");
+				hbp_err("Fail to copy payload to payld_buf\n");
 				goto exit;
 			}
 		}
@@ -207,7 +207,7 @@ static int syna_tcm_romboot_multichip_send_command(struct tcm_dev *tcm_dev,
 	retval = syna_pal_mem_cpy(payld_buf, payld_size,
 			&flash_param, sizeof(flash_param), sizeof(flash_param));
 	if (retval < 0) {
-		LOGE("Fail to copy flash_param header to payld_buf\n");
+		hbp_err("Fail to copy flash_param header to payld_buf\n");
 		goto exit;
 	}
 
@@ -218,7 +218,7 @@ static int syna_tcm_romboot_multichip_send_command(struct tcm_dev *tcm_dev,
 			in_size,
 			delay_ms);
 	if (retval < 0) {
-		LOGE("Fail to write command 0x%x\n", flash_param.command);
+		hbp_err("Fail to write command 0x%x\n", flash_param.command);
 		goto exit;
 	}
 
@@ -251,12 +251,12 @@ static int syna_tcm_romboot_multichip_get_resp(struct tcm_dev *tcm_dev,
 	unsigned int xfer_len;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (resp && (resp_size < length)) {
-		LOGE("Invalid buffer size, len:%d, size:%d\n",
+		hbp_err("Invalid buffer size, len:%d, size:%d\n",
 			length, resp_size);
 		return _EINVAL;
 	}
@@ -265,7 +265,7 @@ static int syna_tcm_romboot_multichip_get_resp(struct tcm_dev *tcm_dev,
 
 	tmp_buf = syna_pal_mem_alloc(xfer_len, sizeof(unsigned char));
 	if (!tmp_buf) {
-		LOGE("Fail to allocate tmp_buf\n");
+		hbp_err("Fail to allocate tmp_buf\n");
 		return _ENOMEM;
 	}
 
@@ -273,7 +273,7 @@ static int syna_tcm_romboot_multichip_get_resp(struct tcm_dev *tcm_dev,
 			CMD_NONE, NULL, 0,
 			tmp_buf, xfer_len, delay_ms);
 	if (retval < 0) {
-		LOGE("Fail to get resp, size: %d\n", xfer_len);
+		hbp_err("Fail to get resp, size: %d\n", xfer_len);
 		goto exit;
 	}
 
@@ -281,7 +281,7 @@ static int syna_tcm_romboot_multichip_get_resp(struct tcm_dev *tcm_dev,
 		retval = syna_pal_mem_cpy(resp, resp_size,
 				&tmp_buf[1], xfer_len - 1, length);
 		if (retval < 0) {
-			LOGE("Fail to copy resp data\n");
+			hbp_err("Fail to copy resp data\n");
 			goto exit;
 		}
 	}
@@ -315,7 +315,7 @@ static int syna_tcm_romboot_multichip_get_status(struct tcm_dev *tcm_dev,
 	int MAX_TIMEOUT = 1000;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -326,7 +326,7 @@ static int syna_tcm_romboot_multichip_get_status(struct tcm_dev *tcm_dev,
 				CMD_NONE, NULL, 0,
 				resp, 3, delay_ms);
 		if (retval < 0) {
-			LOGE("Fail to poll the resp\n");
+			hbp_err("Fail to poll the resp\n");
 			goto exit;
 		}
 
@@ -341,7 +341,7 @@ static int syna_tcm_romboot_multichip_get_status(struct tcm_dev *tcm_dev,
 			*resp_length = syna_pal_le2_to_uint(&resp[1]);
 			goto exit;
 		} else {
-			LOGE("Invalid resp, %02x %02x %02x\n",
+			hbp_err("Invalid resp, %02x %02x %02x\n",
 				resp[0], resp[1], resp[2]);
 			retval = _EIO;
 			goto exit;
@@ -350,7 +350,7 @@ static int syna_tcm_romboot_multichip_get_status(struct tcm_dev *tcm_dev,
 	} while (timeout < MAX_TIMEOUT);
 
 	if (timeout >= 500) {
-		LOGE("Timeout to get the status\n");
+		hbp_err("Timeout to get the status\n");
 		retval = _EIO;
 	}
 exit:
@@ -390,7 +390,7 @@ static int syna_tcm_romboot_multichip_write_flash(struct tcm_dev *tcm_dev,
 	unsigned int delay_ms;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -415,7 +415,7 @@ static int syna_tcm_romboot_multichip_write_flash(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_buf_alloc(&romboot_data->out,
 			xfer_length + 2);
 		if (retval < 0) {
-			LOGE("Fail to allocate memory for buf.out\n");
+			hbp_err("Fail to allocate memory for buf.out\n");
 			goto exit;
 		}
 
@@ -431,7 +431,7 @@ static int syna_tcm_romboot_multichip_write_flash(struct tcm_dev *tcm_dev,
 				wr_len - offset,
 				xfer_length);
 		if (retval < 0) {
-			LOGE("Fail to copy write data ,size: %d\n",
+			hbp_err("Fail to copy write data ,size: %d\n",
 				xfer_length);
 			goto exit;
 		}
@@ -452,7 +452,7 @@ static int syna_tcm_romboot_multichip_write_flash(struct tcm_dev *tcm_dev,
 				0,
 				delay_ms);
 		if (retval < 0) {
-			LOGE("Fail to write data to flash addr 0x%x, size %d\n",
+			hbp_err("Fail to write data to flash addr 0x%x, size %d\n",
 				flash_address, xfer_length + 2);
 			goto exit;
 		}
@@ -460,7 +460,7 @@ static int syna_tcm_romboot_multichip_write_flash(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_romboot_multichip_get_status(tcm_dev,
 			&resp_code, &resp_length, ROMBOOT_DELAY_MS);
 		if (retval < 0) {
-			LOGE("Fail to get the response of command 0x%x\n",
+			hbp_err("Fail to get the response of command 0x%x\n",
 				CMD_WRITE_FLASH);
 			goto exit;
 		}
@@ -468,7 +468,7 @@ static int syna_tcm_romboot_multichip_write_flash(struct tcm_dev *tcm_dev,
 		LOGD("status:%02x, data_length:%d\n", resp_code, resp_length);
 
 		if (resp_code != STATUS_OK) {
-			LOGE("Invalid response of command %x\n",
+			hbp_err("Invalid response of command %x\n",
 				CMD_WRITE_FLASH);
 			retval = _EIO;
 			goto exit;
@@ -477,7 +477,7 @@ static int syna_tcm_romboot_multichip_write_flash(struct tcm_dev *tcm_dev,
 		retval = syna_tcm_romboot_multichip_get_resp(tcm_dev,
 				resp_length, NULL, 0, ROMBOOT_DELAY_MS);
 		if (retval < 0) {
-			LOGE("Fail to get the boot info packet\n");
+			hbp_err("Fail to get the boot info packet\n");
 			goto exit;
 		}
 
@@ -549,7 +549,7 @@ static int syna_tcm_romboot_multichip_erase_flash(struct tcm_dev *tcm_dev,
 			0,
 			erase_delay_ms);
 	if (retval < 0) {
-		LOGE("Fail to erase data at 0x%x (page:0x%x, count:%d)\n",
+		hbp_err("Fail to erase data at 0x%x (page:0x%x, count:%d)\n",
 			address, page_start, page_count);
 		return retval;
 	}
@@ -557,7 +557,7 @@ static int syna_tcm_romboot_multichip_erase_flash(struct tcm_dev *tcm_dev,
 	retval = syna_tcm_romboot_multichip_get_status(tcm_dev,
 			&resp_code, &resp_length, ROMBOOT_DELAY_MS);
 	if (retval < 0) {
-		LOGE("Fail to get the response of command 0x%x\n",
+		hbp_err("Fail to get the response of command 0x%x\n",
 			CMD_ERASE_FLASH);
 		return retval;
 	}
@@ -565,7 +565,7 @@ static int syna_tcm_romboot_multichip_erase_flash(struct tcm_dev *tcm_dev,
 	LOGD("status:%02x, data_length:%d\n", resp_code, resp_length);
 
 	if (resp_code != STATUS_OK) {
-		LOGE("Invalid response of command %x\n", CMD_WRITE_FLASH);
+		hbp_err("Invalid response of command %x\n", CMD_WRITE_FLASH);
 		retval = _EIO;
 		return retval;
 	}
@@ -595,21 +595,21 @@ static int syna_tcm_romboot_multichip_get_boot_info(struct tcm_dev *tcm_dev,
 	unsigned int copy_size;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	retval = syna_tcm_romboot_multichip_send_command(tcm_dev,
 		CMD_GET_BOOT_INFO, NULL, 0, NULL, 0, ROMBOOT_DELAY_MS);
 	if (retval < 0) {
-		LOGE("Fail to run command 0x%x\n", CMD_GET_BOOT_INFO);
+		hbp_err("Fail to run command 0x%x\n", CMD_GET_BOOT_INFO);
 		goto exit;
 	}
 
 	retval = syna_tcm_romboot_multichip_get_status(tcm_dev,
 		&resp_code, &resp_data_len, ROMBOOT_DELAY_MS);
 	if (retval < 0) {
-		LOGE("Fail to get the response of command 0x%x\n",
+		hbp_err("Fail to get the response of command 0x%x\n",
 			CMD_GET_BOOT_INFO);
 		return retval;
 	}
@@ -617,7 +617,7 @@ static int syna_tcm_romboot_multichip_get_boot_info(struct tcm_dev *tcm_dev,
 	LOGD("status:%02x, data_length:%d\n", resp_code, resp_data_len);
 
 	if (resp_code != STATUS_OK) {
-		LOGE("Invalid response of command %x\n", CMD_GET_BOOT_INFO);
+		hbp_err("Invalid response of command %x\n", CMD_GET_BOOT_INFO);
 		retval = _EIO;
 		return retval;
 	}
@@ -631,7 +631,7 @@ static int syna_tcm_romboot_multichip_get_boot_info(struct tcm_dev *tcm_dev,
 		copy_size, (unsigned char *)boot_info,
 		sizeof(struct tcm_boot_info), ROMBOOT_DELAY_MS);
 	if (retval < 0) {
-		LOGE("Fail to get the boot info packet\n");
+		hbp_err("Fail to get the boot info packet\n");
 		return retval;
 	}
 
@@ -660,27 +660,27 @@ static int syna_tcm_romboot_preparation(struct tcm_dev *tcm_dev,
 	unsigned int wr_chunk;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!romboot_data) {
-		LOGE("Invalid romboot data blob\n");
+		hbp_err("Invalid romboot data blob\n");
 		return _EINVAL;
 	}
 
-	LOGI("Set up preparation, multi-chip: %s\n",
+	hbp_info("Set up preparation, multi-chip: %s\n",
 		(is_multichip)?"yes":"no");
 
 	retval = syna_tcm_identify(tcm_dev, NULL);
 	if (retval < 0) {
-		LOGE("Fail to do identification\n");
+		hbp_err("Fail to do identification\n");
 		return retval;
 	}
 
 	/* switch to bootloader mode */
 	if (IS_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGI("Prepare to enter bootloader mode\n");
+		hbp_info("Prepare to enter bootloader mode\n");
 		if (is_multichip)
 			retval = syna_tcm_switch_fw_mode(tcm_dev,
 				MODE_MULTICHIP_TDDI_BOOTLOADER,
@@ -691,25 +691,25 @@ static int syna_tcm_romboot_preparation(struct tcm_dev *tcm_dev,
 				FW_MODE_SWITCH_DELAY_MS);
 
 		if (retval < 0) {
-			LOGE("Fail to enter bootloader mode\n");
+			hbp_err("Fail to enter bootloader mode\n");
 			return retval;
 		}
 	}
 	/* switch to rom boot mode */
 	if (!IS_ROM_BOOTLOADER_MODE(tcm_dev->dev_mode)) {
-		LOGI("Prepare to enter rom boot mode\n");
+		hbp_info("Prepare to enter rom boot mode\n");
 
 		retval = syna_tcm_switch_fw_mode(tcm_dev,
 				MODE_ROMBOOTLOADER,
 				FW_MODE_SWITCH_DELAY_MS);
 		if (retval < 0) {
-			LOGE("Fail to enter rom boot mode\n");
+			hbp_err("Fail to enter rom boot mode\n");
 			return retval;
 		}
 	}
 
 	if (!IS_ROM_BOOTLOADER_MODE(tcm_dev->dev_mode)) {
-		LOGE("Device not in romboot mode\n");
+		hbp_err("Device not in romboot mode\n");
 		return _EINVAL;
 	}
 
@@ -721,7 +721,7 @@ static int syna_tcm_romboot_preparation(struct tcm_dev *tcm_dev,
 	retval = syna_tcm_romboot_multichip_get_boot_info(tcm_dev,
 			boot_info);
 	if (retval < 0) {
-		LOGE("Fail to get boot info\n");
+		hbp_err("Fail to get boot info\n");
 		return retval;
 	}
 
@@ -730,35 +730,35 @@ static int syna_tcm_romboot_preparation(struct tcm_dev *tcm_dev,
 	temp = boot_info->write_block_size_words;
 	romboot_data->write_block_size = temp * 2;
 
-	LOGI("Write block size: %d (words size: %d)\n",
+	hbp_info("Write block size: %d (words size: %d)\n",
 		romboot_data->write_block_size, temp);
 
 	temp = syna_pal_le2_to_uint(boot_info->erase_page_size_words);
 	romboot_data->page_size = temp * 2;
 
-	LOGI("Erase page size: %d (words size: %d)\n",
+	hbp_info("Erase page size: %d (words size: %d)\n",
 		romboot_data->page_size, temp);
 
 	temp = syna_pal_le2_to_uint(boot_info->max_write_payload_size);
 	romboot_data->max_write_payload_size = temp;
 
-	LOGI("Max write flash data size: %d\n",
+	hbp_info("Max write flash data size: %d\n",
 		romboot_data->max_write_payload_size);
 
 	if (romboot_data->write_block_size > (wr_chunk - 9)) {
-		LOGE("Write block size, %d, greater than chunk space, %d\n",
+		hbp_err("Write block size, %d, greater than chunk space, %d\n",
 			romboot_data->write_block_size, (wr_chunk - 9));
 		return _EINVAL;
 	}
 
 	if (romboot_data->write_block_size == 0) {
-		LOGE("Invalid write block size %d\n",
+		hbp_err("Invalid write block size %d\n",
 			romboot_data->write_block_size);
 		return _EINVAL;
 	}
 
 	if (romboot_data->page_size == 0) {
-		LOGE("Invalid erase page size %d\n",
+		hbp_err("Invalid erase page size %d\n",
 			romboot_data->page_size);
 		return _EINVAL;
 	}
@@ -794,7 +794,7 @@ static int syna_tcm_romboot_jedec_send_command(struct tcm_dev *tcm_dev,
 	struct flash_param flash_param;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -819,14 +819,14 @@ static int syna_tcm_romboot_jedec_send_command(struct tcm_dev *tcm_dev,
 
 	payld_buf = syna_pal_mem_alloc(payld_size, sizeof(unsigned char));
 	if (!payld_buf) {
-		LOGE("Fail to allocate buffer to store flash command\n");
+		hbp_err("Fail to allocate buffer to store flash command\n");
 		return _ENOMEM;
 	}
 
 	retval = syna_pal_mem_cpy(payld_buf, payld_size,
 			&flash_param, sizeof(flash_param), sizeof(flash_param));
 	if (retval < 0) {
-		LOGE("Fail to copy flash_param header to payld_buf\n");
+		hbp_err("Fail to copy flash_param header to payld_buf\n");
 		goto exit;
 	}
 
@@ -835,7 +835,7 @@ static int syna_tcm_romboot_jedec_send_command(struct tcm_dev *tcm_dev,
 				payld_size - sizeof(flash_param),
 				out, out_size, out_size);
 		if (retval < 0) {
-			LOGE("Fail to copy data to payld_buf\n");
+			hbp_err("Fail to copy data to payld_buf\n");
 			goto exit;
 		}
 	}
@@ -847,7 +847,7 @@ static int syna_tcm_romboot_jedec_send_command(struct tcm_dev *tcm_dev,
 			in_size,
 			delay_ms);
 	if (retval < 0) {
-		LOGE("Fail to write flash command 0x%x\n", flash_command);
+		hbp_err("Fail to write flash command 0x%x\n", flash_command);
 		goto exit;
 	}
 
@@ -878,7 +878,7 @@ static int syna_tcm_romboot_jedec_get_status(struct tcm_dev *tcm_dev,
 	int STATUS_CHECK_RETRY = 50;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -891,7 +891,7 @@ static int syna_tcm_romboot_jedec_get_status(struct tcm_dev *tcm_dev,
 				sizeof(status),
 				delay_ms);
 		if (retval < 0) {
-			LOGE("Failed to write JEDEC_READ_STATUS\n");
+			hbp_err("Failed to write JEDEC_READ_STATUS\n");
 			return retval;
 		}
 
@@ -928,7 +928,7 @@ static int syna_tcm_romboot_jedec_erase_flash(struct tcm_dev *tcm_dev,
 	int retval;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -940,7 +940,7 @@ static int syna_tcm_romboot_jedec_erase_flash(struct tcm_dev *tcm_dev,
 			0,
 			delay_ms);
 	if (retval < 0) {
-		LOGE("Failed to write JEDEC_WRITE_ENABLE\n");
+		hbp_err("Failed to write JEDEC_WRITE_ENABLE\n");
 		return retval;
 	}
 
@@ -952,13 +952,13 @@ static int syna_tcm_romboot_jedec_erase_flash(struct tcm_dev *tcm_dev,
 			0,
 			delay_ms);
 	if (retval < 0) {
-		LOGE("Failed to write JEDEC_WRITE_ENABLE\n");
+		hbp_err("Failed to write JEDEC_WRITE_ENABLE\n");
 		return retval;
 	}
 
 	retval = syna_tcm_romboot_jedec_get_status(tcm_dev, delay_ms);
 	if (retval < 0)
-		LOGE("Fail to get correct status, retval = %d\n", retval);
+		hbp_err("Fail to get correct status, retval = %d\n", retval);
 
 	return retval;
 }
@@ -991,12 +991,12 @@ static int syna_tcm_romboot_jedec_write_flash(struct tcm_dev *tcm_dev,
 	unsigned int xfer_length;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if ((!data) || (data_size == 0)) {
-		LOGE("Invalid image data, no data available\n");
+		hbp_err("Invalid image data, no data available\n");
 		return _EINVAL;
 	}
 
@@ -1020,7 +1020,7 @@ static int syna_tcm_romboot_jedec_write_flash(struct tcm_dev *tcm_dev,
 				0,
 				delay_ms);
 		if (retval < 0) {
-			LOGE("Failed to write JEDEC_WRITE_ENABLE\n");
+			hbp_err("Failed to write JEDEC_WRITE_ENABLE\n");
 			goto exit;
 		}
 
@@ -1034,7 +1034,7 @@ static int syna_tcm_romboot_jedec_write_flash(struct tcm_dev *tcm_dev,
 				data_size - offset,
 				xfer_length);
 		if (retval < 0) {
-			LOGE("Fail to copy data to write, size: %d\n",
+			hbp_err("Fail to copy data to write, size: %d\n",
 				xfer_length);
 			goto exit;
 		}
@@ -1047,16 +1047,16 @@ static int syna_tcm_romboot_jedec_write_flash(struct tcm_dev *tcm_dev,
 				0,
 				delay_ms);
 		if (retval < 0) {
-			LOGE("Failed to write data to addr 0x%x (offset: %x)\n",
+			hbp_err("Failed to write data to addr 0x%x (offset: %x)\n",
 				address + offset, offset);
-			LOGE("Remaining data %d\n",
+			hbp_err("Remaining data %d\n",
 				remaining_length);
 			goto exit;
 		}
 
 		retval = syna_tcm_romboot_jedec_get_status(tcm_dev, delay_ms);
 		if (retval < 0) {
-			LOGE("Fail to get correct status, retval = %d\n",
+			hbp_err("Fail to get correct status, retval = %d\n",
 				retval);
 			goto exit;
 		}
@@ -1180,12 +1180,12 @@ int syna_tcm_romboot_do_ihex_update(struct tcm_dev *tcm_dev,
 	int idx;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if ((!ihex) || (ihex_size == 0)) {
-		LOGE("Invalid ihex data\n");
+		hbp_err("Invalid ihex data\n");
 		return _EINVAL;
 	}
 
@@ -1195,7 +1195,7 @@ int syna_tcm_romboot_do_ihex_update(struct tcm_dev *tcm_dev,
 	romboot_data = syna_pal_mem_alloc(1,
 			sizeof(struct tcm_romboot_data_blob));
 	if (!romboot_data) {
-		LOGE("Fail to allocate romboot data blob\n");
+		hbp_err("Fail to allocate romboot data blob\n");
 
 		return _ENOMEM;
 	}
@@ -1210,7 +1210,7 @@ int syna_tcm_romboot_do_ihex_update(struct tcm_dev *tcm_dev,
 	ihex_info->bin = syna_pal_mem_alloc(flash_size,
 			sizeof(unsigned char));
 	if (!ihex_info->bin) {
-		LOGE("Fail to allocate buffer for ihex data\n");
+		hbp_err("Fail to allocate buffer for ihex data\n");
 		syna_pal_mem_free((void *)romboot_data);
 
 		return _ENOMEM;
@@ -1226,14 +1226,14 @@ int syna_tcm_romboot_do_ihex_update(struct tcm_dev *tcm_dev,
 	retval = syna_tcm_parse_fw_ihex((const char *)ihex,
 			ihex_size, ihex_info, len_per_line);
 	if (retval < 0) {
-		LOGE("Fail to parse firmware ihex file\n");
+		hbp_err("Fail to parse firmware ihex file\n");
 		goto exit;
 	}
 
 	if (!is_multichip) {
 		header = (unsigned short *)ihex_info->bin;
 		if (*header != BINARY_FILE_MAGIC_VALUE) {
-			LOGE("Incorrect image header 0x%04X\n", *header);
+			hbp_err("Incorrect image header 0x%04X\n", *header);
 			goto exit;
 		}
 	}
@@ -1243,7 +1243,7 @@ int syna_tcm_romboot_do_ihex_update(struct tcm_dev *tcm_dev,
 			romboot_data,
 			is_multichip);
 	if (retval < 0) {
-		LOGE("Fail to do preparation\n");
+		hbp_err("Fail to do preparation\n");
 		goto reset;
 	}
 
@@ -1280,7 +1280,7 @@ int syna_tcm_romboot_do_ihex_update(struct tcm_dev *tcm_dev,
 		}
 	}
 	if (retval < 0) {
-		LOGE("Fail to erase flash\n");
+		hbp_err("Fail to erase flash\n");
 		goto reset;
 	}
 
@@ -1306,12 +1306,12 @@ int syna_tcm_romboot_do_ihex_update(struct tcm_dev *tcm_dev,
 				wr_delay_ms,
 				is_multichip);
 		if (retval < 0) {
-			LOGE("Fail to write data to addr 0x%x, size:%d\n",
+			hbp_err("Fail to write data to addr 0x%x, size:%d\n",
 				block->flash_addr, block->size);
 			goto reset;
 		}
 
-		LOGI("Data written, size:%d\n", block->size);
+		hbp_info("Data written, size:%d\n", block->size);
 	}
 
 	LOGN("End of ihex update\n");
@@ -1321,7 +1321,7 @@ int syna_tcm_romboot_do_ihex_update(struct tcm_dev *tcm_dev,
 reset:
 	retval = syna_tcm_reset(tcm_dev);
 	if (retval < 0) {
-		LOGE("Fail to do reset\n");
+		hbp_err("Fail to do reset\n");
 		goto exit;
 	}
 
@@ -1375,12 +1375,12 @@ int syna_tcm_romboot_do_multichip_reflash(struct tcm_dev *tcm_dev,
 	bool reflash_required = false;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if ((!image) || (image_size == 0)) {
-		LOGE("Invalid image data\n");
+		hbp_err("Invalid image data\n");
 		return _EINVAL;
 	}
 
@@ -1389,7 +1389,7 @@ int syna_tcm_romboot_do_multichip_reflash(struct tcm_dev *tcm_dev,
 	romboot_data = syna_pal_mem_alloc(1,
 			sizeof(struct tcm_romboot_data_blob));
 	if (!romboot_data) {
-		LOGE("Fail to allocate romboot data blob\n");
+		hbp_err("Fail to allocate romboot data blob\n");
 
 		return _ENOMEM;
 	}
@@ -1405,14 +1405,14 @@ int syna_tcm_romboot_do_multichip_reflash(struct tcm_dev *tcm_dev,
 
 	retval = syna_tcm_parse_fw_image(image, &romboot_data->image_info);
 	if (retval < 0) {
-		LOGE("Fail to parse firmware image\n");
+		hbp_err("Fail to parse firmware image\n");
 		retval = _EINVAL;
 		goto exit;
 	}
 
 	block = &romboot_data->image_info.data[AREA_APP_CONFIG];
 	if (block->size < sizeof(struct app_config_header)) {
-		LOGE("Invalid application config in image file\n");
+		hbp_err("Invalid application config in image file\n");
 		retval = _EINVAL;
 		goto exit;
 	}
@@ -1458,12 +1458,12 @@ int syna_tcm_romboot_do_multichip_reflash(struct tcm_dev *tcm_dev,
 	/* set up flash access, and enter the bootloader mode */
 	retval = syna_tcm_romboot_preparation(tcm_dev, romboot_data, true);
 	if (retval < 0) {
-		LOGE("Fail to do preparation\n");
+		hbp_err("Fail to do preparation\n");
 		goto reset;
 	}
 
 	if (!IS_ROM_BOOTLOADER_MODE(tcm_dev->dev_mode)) {
-		LOGE("Incorrect device mode 0x%02x, expected:0x%02x\n",
+		hbp_err("Incorrect device mode 0x%02x, expected:0x%02x\n",
 			tcm_dev->dev_mode, MODE_ROMBOOTLOADER);
 		retval = _EINVAL;
 		goto reset;
@@ -1505,7 +1505,7 @@ int syna_tcm_romboot_do_multichip_reflash(struct tcm_dev *tcm_dev,
 				erase_delay_ms,
 				true);
 		if (retval < 0) {
-			LOGE("Fail to erase %s area\n", AREA_ID_STR(block->id));
+			hbp_err("Fail to erase %s area\n", AREA_ID_STR(block->id));
 			goto reset;
 		}
 
@@ -1547,7 +1547,7 @@ int syna_tcm_romboot_do_multichip_reflash(struct tcm_dev *tcm_dev,
 				true);
 
 		if (retval < 0) {
-			LOGE("Fail to update %s partition, size: %d\n",
+			hbp_err("Fail to update %s partition, size: %d\n",
 				AREA_ID_STR(block->id), block->size);
 			goto reset;
 		}
@@ -1561,7 +1561,7 @@ int syna_tcm_romboot_do_multichip_reflash(struct tcm_dev *tcm_dev,
 reset:
 	retval = syna_tcm_reset(tcm_dev);
 	if (retval < 0) {
-		LOGE("Fail to do reset\n");
+		hbp_err("Fail to do reset\n");
 		goto exit;
 	}
 
@@ -1597,7 +1597,7 @@ int syna_tcm_get_romboot_info(struct tcm_dev *tcm_dev,
 	unsigned int copy_size = 0;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
@@ -1608,7 +1608,7 @@ int syna_tcm_get_romboot_info(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to send command 0x%02x\n",
+		hbp_err("Fail to send command 0x%02x\n",
 			CMD_GET_ROMBOOT_INFO);
 		goto exit;
 	}
@@ -1626,7 +1626,7 @@ int syna_tcm_get_romboot_info(struct tcm_dev *tcm_dev,
 			tcm_dev->resp_buf.buf_size,
 		copy_size);
 	if (retval < 0) {
-		LOGE("Fail to copy romboot info to caller\n");
+		hbp_err("Fail to copy romboot info to caller\n");
 		goto exit;
 	}
 
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_romboot.h b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_romboot.h
similarity index 100%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_romboot.h
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_romboot.h
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_touch.c b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_touch.c
similarity index 89%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_touch.c
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_touch.c
index cfa1ed55..8e575fe3 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_touch.c
+++ b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_touch.c
@@ -70,12 +70,12 @@ int syna_tcm_get_touch_data(const unsigned char *report,
 	unsigned int remaining_bits;
 
 	if (bits == 0 || bits > 32) {
-		LOGE("Invalid number of bits %d\n", bits);
+		hbp_err("Invalid number of bits %d\n", bits);
 		return _EINVAL;
 	}
 
 	if (!report) {
-		LOGE("Invalid report data\n");
+		hbp_err("Invalid report data\n");
 		return _EINVAL;
 	}
 
@@ -141,7 +141,7 @@ static int syna_tcm_get_gesture_data(const unsigned char *report,
 	unsigned int data_end;
 
 	if (!report) {
-		LOGE("Invalid report data\n");
+		hbp_err("Invalid report data\n");
 		return _EINVAL;
 	}
 
@@ -157,7 +157,7 @@ static int syna_tcm_get_gesture_data(const unsigned char *report,
 		retval = syna_tcm_get_touch_data(report, report_size,
 				offset, 16, &data);
 		if (retval < 0) {
-			LOGE("Fail to get object index\n");
+			hbp_err("Fail to get object index\n");
 			return retval;
 		}
 		gesture_data->data[idx++] = (unsigned char)(data & 0xff);
@@ -219,7 +219,7 @@ static int syna_tcm_get_report_data(const unsigned char *touch_report,
 				   bits / 8, bits / 8);
 
 		if (retval < 0) {
-			LOGE("Failed to copy report data\n");
+			hbp_err("Failed to copy report data\n");
 			return retval;
 		}
 
@@ -281,7 +281,7 @@ static int syna_tcm_get_custome_grip_info(const unsigned char *report,
 	unsigned int data_end;
 
 	if (!report) {
-		LOGE("Invalid report data\n");
+		hbp_err("Invalid report data\n");
 		return _EINVAL;
 	}
 
@@ -297,7 +297,7 @@ static int syna_tcm_get_custome_grip_info(const unsigned char *report,
 		retval = syna_tcm_get_touch_data(report, report_size,
 				offset, 16, &data);
 		if (retval < 0) {
-			LOGE("Fail to get object index\n");
+			hbp_err("Fail to get object index\n");
 			return retval;
 		}
 		grip_info->data[idx++] = (unsigned char)(data & 0xff);
@@ -355,34 +355,34 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 	// struct syna_tcm *tcm = container_of(touch_data, struct syna_tcm, tp_data);
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (!report) {
-		LOGE("Invalid report data\n");
+		hbp_err("Invalid report data\n");
 		return _EINVAL;
 	}
 
 	if (report_size <= 0) {
-		LOGE("Invalid report data length\n");
+		hbp_err("Invalid report data length\n");
 		return _EINVAL;
 	}
 
 	if (!touch_data) {
-		LOGE("Invalid touch data structure\n");
+		hbp_err("Invalid touch data structure\n");
 		return _EINVAL;
 	}
 
 	if (tcm_dev->max_objects == 0) {
-		LOGE("Invalid max_objects supported\n");
+		hbp_err("Invalid max_objects supported\n");
 		return _EINVAL;
 	}
 
 	object_data = touch_data->object_data;
 
 	if (!object_data) {
-		LOGE("Invalid object_data\n");
+		hbp_err("Invalid object_data\n");
 		return _EINVAL;
 	}
 
@@ -390,7 +390,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 	config_size = tcm_dev->touch_config.data_length;
 
 	if ((!config_data) || (config_size == 0)) {
-		LOGE("Invalid config_data\n");
+		hbp_err("Invalid config_data\n");
 		return _EINVAL;
 	}
 
@@ -407,7 +407,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 	obj = 0;
 	next = 0;
 
-	LOGI("syna_parse_report:%*ph\n", report_size, report);
+	hbp_info("syna_parse_report:%*ph\n", report_size, report);
 
 	while (idx < config_size) {
 		code = config_data[idx++];
@@ -450,7 +450,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get time-stamp\n");
+				hbp_err("Fail to get time-stamp\n");
 				return retval;
 			}
 			touch_data->timestamp = data;
@@ -461,7 +461,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get object index\n");
+				hbp_err("Fail to get object index\n");
 				return retval;
 			}
 			obj = data;
@@ -473,7 +473,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get object classification\n");
+				hbp_err("Fail to get object classification\n");
 				return retval;
 			}
 			object_data[obj].status = (unsigned char)data;
@@ -484,7 +484,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get object x position\n");
+				hbp_err("Fail to get object x position\n");
 				return retval;
 			}
 			object_data[obj].x_pos = data;
@@ -495,7 +495,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get object y position\n");
+				hbp_err("Fail to get object y position\n");
 				return retval;
 			}
 			object_data[obj].y_pos = data;
@@ -506,7 +506,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get object z\n");
+				hbp_err("Fail to get object z\n");
 				return retval;
 			}
 			object_data[obj].z = data;
@@ -517,7 +517,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get object x width\n");
+				hbp_err("Fail to get object x width\n");
 				return retval;
 			}
 			object_data[obj].x_width = data;
@@ -528,7 +528,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get object y width\n");
+				hbp_err("Fail to get object y width\n");
 				return retval;
 			}
 			object_data[obj].y_width = data;
@@ -539,7 +539,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get object tx position\n");
+				hbp_err("Fail to get object tx position\n");
 				return retval;
 			}
 			object_data[obj].tx_pos = data;
@@ -550,7 +550,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get object rx position\n");
+				hbp_err("Fail to get object rx position\n");
 				return retval;
 			}
 			object_data[obj].rx_pos = data;
@@ -561,7 +561,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get number of active objects\n");
+				hbp_err("Fail to get number of active objects\n");
 				return retval;
 			}
 			active_objects = data;
@@ -580,7 +580,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get 0D buttons state\n");
+				hbp_err("Fail to get 0D buttons state\n");
 				return retval;
 			}
 			touch_data->buttons_state = data;
@@ -599,24 +599,24 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 				touch_data->gesture_id = data;
 				offset += bits;
 				if (touch_data->gesture_id) {
-					LOGI("Gesture ID=%d\n", touch_data->gesture_id/*, tcm->pwr_state, tcm->sub_pwr_state*/);
+					hbp_info("Gesture ID=%d\n", touch_data->gesture_id/*, tcm->pwr_state, tcm->sub_pwr_state*/);
 					// if ((tcm->pwr_state == PWR_ON && tcm->sub_pwr_state == SUB_PWR_RESUME_DONE) &&
 					// 	(touch_data->gesture_id >= DTAP_DETECT && touch_data->gesture_id <= W_UNICODE)) {
 					// 	if (tcm->health_monitor_support) {
 					// 		tp_healthinfo_report(&tcm->monitor_data, HEALTH_REPORT, "report_gesture_event_in_resume_cnt");
 					// 	}
-					// 	LOGE("unexpected gesture id report in resume state\n");
+					// 	hbp_err("unexpected gesture id report in resume state\n");
 					// }//remove by zhongwenjie tmp
 				}
 				if (touch_data->gesture_id == 3) {
-					LOGE("debug syna data: \n");
+					hbp_err("debug syna data: \n");
 					if (report_size > 0) {
-						LOGE("report buf:%*ph\n", report_size, report);
+						hbp_err("report buf:%*ph\n", report_size, report);
 					}
 				}
 			}
 			if (retval < 0) {
-				LOGE("Fail to get gesture id\n");
+				hbp_err("Fail to get gesture id\n");
 				return retval;
 			}
 			break;
@@ -637,7 +637,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 				offset += bits;
 			}
 			if (retval < 0) {
-				LOGE("Fail to get gesture data\n");
+				hbp_err("Fail to get gesture data\n");
 				return retval;
 			}
 			break;
@@ -647,7 +647,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 						      (unsigned int *)(&touch_data->extra_gesture_info[0]));
 
 			if (retval < 0) {
-				LOGE("Failed to get gesture double tap\n");
+				hbp_err("Failed to get gesture double tap\n");
 				return retval;
 			}
 
@@ -660,7 +660,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 						      (unsigned int *)(&touch_data->data_point[0]));
 
 			if (retval < 0) {
-				LOGE("Failed to get gesture double tap\n");
+				hbp_err("Failed to get gesture double tap\n");
 				return retval;
 			}
 
@@ -671,7 +671,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get frame rate\n");
+				hbp_err("Fail to get frame rate\n");
 				return retval;
 			}
 			touch_data->frame_rate = data;
@@ -682,7 +682,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get force measurement data\n");
+				hbp_err("Fail to get force measurement data\n");
 				return retval;
 			}
 			touch_data->force_data = data;
@@ -693,7 +693,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get data for fingerprint area\n");
+				hbp_err("Fail to get data for fingerprint area\n");
 				return retval;
 			}
 			touch_data->fingerprint_area_meet = data;
@@ -704,7 +704,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get power IM\n");
+				hbp_err("Fail to get power IM\n");
 				return retval;
 			}
 			touch_data->power_im = data;
@@ -715,7 +715,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get CID IM\n");
+				hbp_err("Fail to get CID IM\n");
 				return retval;
 			}
 			touch_data->cid_im = data;
@@ -726,7 +726,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get rail IM\n");
+				hbp_err("Fail to get rail IM\n");
 				return retval;
 			}
 			touch_data->rail_im = data;
@@ -737,7 +737,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get CID variance IM\n");
+				hbp_err("Fail to get CID variance IM\n");
 				return retval;
 			}
 			touch_data->cid_variance_im = data;
@@ -748,7 +748,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get NSM frequency\n");
+				hbp_err("Fail to get NSM frequency\n");
 				return retval;
 			}
 			touch_data->nsm_frequency = data;
@@ -759,7 +759,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get NSM state\n");
+				hbp_err("Fail to get NSM state\n");
 				return retval;
 			}
 			touch_data->nsm_state = data;
@@ -770,7 +770,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get cpu cycles info\n");
+				hbp_err("Fail to get cpu cycles info\n");
 				return retval;
 			}
 			touch_data->num_of_cpu_cycles = data;
@@ -781,7 +781,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to detect face\n");
+				hbp_err("Fail to detect face\n");
 				return retval;
 			}
 			touch_data->fd_data = data;
@@ -792,7 +792,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			retval = syna_tcm_get_touch_data(report, report_size,
 					offset, bits, &data);
 			if (retval < 0) {
-				LOGE("Fail to get sensing mode\n");
+				hbp_err("Fail to get sensing mode\n");
 				return retval;
 			}
 			touch_data->sensing_mode = data;
@@ -807,7 +807,7 @@ int syna_tcm_parse_touch_report(struct tcm_dev *tcm_dev,
 			offset += bits;
 
 			if (retval < 0) {
-				LOGE("Fail to get custom gesture info\n");
+				hbp_err("Fail to get custom gesture info\n");
 				return retval;
 			}
 			break;
@@ -860,17 +860,17 @@ int syna_tcm_set_touch_report_config(struct tcm_dev *tcm_dev,
 	unsigned char *data;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if ((!config) || (config_size == 0)) {
-		LOGE("Invalid given config data\n");
+		hbp_err("Invalid given config data\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Not in application fw mode, mode: %d\n",
+		hbp_err("Not in application fw mode, mode: %d\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -879,13 +879,13 @@ int syna_tcm_set_touch_report_config(struct tcm_dev *tcm_dev,
 	size = syna_pal_le2_to_uint(app_info->max_touch_report_config_size);
 
 	if (config_size > size) {
-		LOGE("Invalid config size: %d (max: %d)\n", config_size, size);
+		hbp_err("Invalid config size: %d (max: %d)\n", config_size, size);
 		return _EINVAL;
 	}
 
 	data = syna_pal_mem_alloc(size, sizeof(unsigned char));
 	if (!data) {
-		LOGE("Fail to allocate memory for touch config setting\n");
+		hbp_err("Fail to allocate memory for touch config setting\n");
 		return _ENOMEM;
 	}
 
@@ -895,7 +895,7 @@ int syna_tcm_set_touch_report_config(struct tcm_dev *tcm_dev,
 			config_size,
 			config_size);
 	if (retval < 0) {
-		LOGE("Fail to copy custom touch config\n");
+		hbp_err("Fail to copy custom touch config\n");
 		goto exit;
 	}
 
@@ -906,11 +906,11 @@ int syna_tcm_set_touch_report_config(struct tcm_dev *tcm_dev,
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to write command CMD_SET_TOUCH_REPORT_CONFIG\n");
+		hbp_err("Fail to write command CMD_SET_TOUCH_REPORT_CONFIG\n");
 		goto exit;
 	}
 
-	LOGI("Set touch config done\n");
+	hbp_info("Set touch config done\n");
 
 exit:
 	if (data)
@@ -943,12 +943,12 @@ int syna_tcm_preserve_touch_report_config(struct tcm_dev *tcm_dev)
 	unsigned int size = 0;
 
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	if (IS_NOT_APP_FW_MODE(tcm_dev->dev_mode)) {
-		LOGE("Not in application fw mode, mode: %d\n",
+		hbp_err("Not in application fw mode, mode: %d\n",
 			tcm_dev->dev_mode);
 		return _EINVAL;
 	}
@@ -960,7 +960,7 @@ int syna_tcm_preserve_touch_report_config(struct tcm_dev *tcm_dev)
 			&resp_code,
 			tcm_dev->msg_data.default_resp_reading);
 	if (retval < 0) {
-		LOGE("Fail to write command CMD_GET_TOUCH_REPORT_CONFIG\n");
+		hbp_err("Fail to write command CMD_GET_TOUCH_REPORT_CONFIG\n");
 		goto exit;
 	}
 
@@ -970,7 +970,7 @@ int syna_tcm_preserve_touch_report_config(struct tcm_dev *tcm_dev)
 	retval = syna_tcm_buf_alloc(&tcm_dev->touch_config,
 			size);
 	if (retval < 0) {
-		LOGE("Fail to allocate memory for internal touch_config\n");
+		hbp_err("Fail to allocate memory for internal touch_config\n");
 		syna_tcm_buf_unlock(&tcm_dev->resp_buf);
 		goto exit;
 	}
@@ -983,7 +983,7 @@ int syna_tcm_preserve_touch_report_config(struct tcm_dev *tcm_dev)
 			tcm_dev->resp_buf.buf_size,
 			size);
 	if (retval < 0) {
-		LOGE("Fail to clone touch config\n");
+		hbp_err("Fail to clone touch config\n");
 		syna_tcm_buf_unlock(&tcm_dev->touch_config);
 		syna_tcm_buf_unlock(&tcm_dev->resp_buf);
 		goto exit;
@@ -1018,14 +1018,14 @@ int syna_tcm_set_custom_touch_entity_callback(struct tcm_dev *tcm_dev,
 		tcm_custom_touch_entity_callback_t p_cb, void *p_cbdata)
 {
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	tcm_dev->cb_custom_touch_entity = p_cb;
 	tcm_dev->cbdata_touch_entity = p_cbdata;
 
-	LOGI("enabled\n");
+	hbp_info("enabled\n");
 
 	return 0;
 }
@@ -1050,14 +1050,14 @@ int syna_tcm_set_custom_gesture_callback(struct tcm_dev *tcm_dev,
 		tcm_custom_gesture_callback_t p_cb, void *p_cbdata)
 {
 	if (!tcm_dev) {
-		LOGE("Invalid tcm device handle\n");
+		hbp_err("Invalid tcm device handle\n");
 		return _EINVAL;
 	}
 
 	tcm_dev->cb_custom_gesture = p_cb;
 	tcm_dev->cbdata_gesture = p_cbdata;
 
-	LOGI("enabled\n");
+	hbp_info("enabled\n");
 
 	return 0;
 }
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_touch.h b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_touch.h
similarity index 100%
rename from vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_touch.h
rename to vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/s3910/tcm/synaptics_touchcom_func_touch.h
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/Makefile b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/Makefile
deleted file mode 100755
index c729b84e..00000000
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# Makefile for the Synaptics TCM touchscreen driver.
-#
-
-# Each configuration option enables a list of files.
-
-obj-m += syna_tcm2.o
-
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/syna_tcm2.h b/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/syna_tcm2.h
deleted file mode 100755
index f24980e9..00000000
--- a/vendor/oplus/kernel/tp/hbp/hbp/chips/synaptics/synaptics_tcm2/syna_tcm2.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#include 
-#include 
-#include 
-#include 
-#include "../../../hbp_core.h"
-#include "../../../hbp_spi.h"
-#include "../../../utils/debug.h"
-#include "tcm/synaptics_touchcom_core_dev.h"
-#include "tcm/synaptics_touchcom_func_base.h"
-#include "tcm/synaptics_touchcom_func_touch.h"
-#include "syna_tcm2_runtime.h"
-
-struct syna_tcm {
-    struct platform_device *pdev;
-    //struct hbp_bus_io *bus_io;
-    struct bus_operations *bus_ops;
-    struct tcm_dev *tcm_dev;
-    /* Buffer stored the irq event data */
-    struct tcm_buffer event_data;
-    /* Generic touched data generated by tcm core lib */
-    struct tcm_touch_data_blob tp_data;
-    unsigned char status_report_code;
-    bool probe_done;
-};
\ No newline at end of file
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/hbp_device.c b/vendor/oplus/kernel/tp/hbp/hbp/hbp_device.c
index f72a7211..6f68463e 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/hbp_device.c
+++ b/vendor/oplus/kernel/tp/hbp/hbp/hbp_device.c
@@ -662,7 +662,8 @@ static irqreturn_t hbp_irq_threaded_fn(int irq, void *dev_id)
 		if (reason == IRQ_REASON_RESET_WDT
 				|| reason == IRQ_REASON_RESET_PWR
 				|| reason == IRQ_REASON_RESET_FWUPDATE
-				|| reason == IRQ_REASON_RESPONSE) {
+				|| reason == IRQ_REASON_RESPONSE
+				|| reason == IRQ_REASON_RESET_IDENTIFY) {
 			goto report_frame;
 		}
 	}
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/hbp_frame.h b/vendor/oplus/kernel/tp/hbp/hbp/hbp_frame.h
index 89260680..cd29a117 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/hbp_frame.h
+++ b/vendor/oplus/kernel/tp/hbp/hbp/hbp_frame.h
@@ -25,8 +25,10 @@ enum irq_reason {
 	IRQ_REASON_RESET_WDT,
 	IRQ_REASON_RESET_EXTERNAL,
 	IRQ_REASON_RESET_PWR,
+	IRQ_REASON_RESET_IDENTIFY,
 	IRQ_REASON_GESTURE_DIFF,
 	IRQ_REASON_RESPONSE = 0xB0,
+	IRQ_REASON_LBP_POINTS_REPORT,
 };
 
 union touch_time {
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/hbp_notify.c b/vendor/oplus/kernel/tp/hbp/hbp/hbp_notify.c
index 755d5f2a..ce29d1fe 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/hbp_notify.c
+++ b/vendor/oplus/kernel/tp/hbp/hbp/hbp_notify.c
@@ -41,7 +41,8 @@ static void qcom_panel_event_callback(enum panel_event_notifier_tag tag,
 		}
 	}
 
-	if (notify->notif_type == DRM_PANEL_EVENT_BLANK) {
+	if (notify->notif_type == DRM_PANEL_EVENT_BLANK
+			|| notify->notif_type ==  DRM_PANEL_EVENT_BLANK_LP) {
 		if (notify->notif_data.early_trigger) {
 			event = HBP_PANEL_EVENT_EARLY_SUSPEND;
 		} else {
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/oplus_local_modules.bzl b/vendor/oplus/kernel/tp/hbp/hbp/oplus_local_modules.bzl
index 9457b719..5572a68a 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/oplus_local_modules.bzl
+++ b/vendor/oplus/kernel/tp/hbp/hbp/oplus_local_modules.bzl
@@ -52,16 +52,17 @@ def define_oplus_local_modules():
     )
 
     define_oplus_ddk_module(
-        name = "oplus_synaptics_tcm2",
+        name = "oplus_bsp_tp_hbp_syna_s3910",
         srcs = native.glob([
             "**/*.h",
-            "chips/synaptics/synaptics_tcm2/syna_tcm2.c",
-            "chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_v1.c",
-            "chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_core_v2.c",
-            "chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_base.c",
-            "chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_touch.c",
-            "chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_reflash.c",
-            "chips/synaptics/synaptics_tcm2/tcm/synaptics_touchcom_func_romboot.c",
+            "chips/synaptics/s3910/syna_tcm2.c",
+            "chips/synaptics/s3910/syna_tcm2_sysfs.c",
+            "chips/synaptics/s3910/tcm/synaptics_touchcom_core_v1.c",
+            "chips/synaptics/s3910/tcm/synaptics_touchcom_core_v2.c",
+            "chips/synaptics/s3910/tcm/synaptics_touchcom_func_base.c",
+            "chips/synaptics/s3910/tcm/synaptics_touchcom_func_touch.c",
+            "chips/synaptics/s3910/tcm/synaptics_touchcom_func_reflash.c",
+            "chips/synaptics/s3910/tcm/synaptics_touchcom_func_romboot.c",
         ]),
         includes = ["."],
         ko_deps = [
@@ -90,6 +91,6 @@ def define_oplus_local_modules():
         module_list = [
             "oplus_hbp_core",
             "oplus_ft3683g",
-            "oplus_synaptics_tcm2"
+            "oplus_bsp_tp_hbp_syna_s3910"
         ],
     )
diff --git a/vendor/oplus/kernel/tp/hbp/hbp/utils/debug.h b/vendor/oplus/kernel/tp/hbp/hbp/utils/debug.h
index 9d87a9bc..9fcbe07f 100755
--- a/vendor/oplus/kernel/tp/hbp/hbp/utils/debug.h
+++ b/vendor/oplus/kernel/tp/hbp/hbp/utils/debug.h
@@ -28,13 +28,16 @@ enum {
 	LOG_LEVEL_MAX
 };
 
-#define __hbp_printk(ftm, LEVEL, ...) \
-		printk("[T%d][touch-krn]["#LEVEL"][%s]" ftm, current->pid, __FUNCTION__,##__VA_ARGS__)
+#define __hbp_print_info(ftm, LEVEL, ...) \
+		pr_info("[T%d][touch-krn]["#LEVEL"][%s]" ftm, current->pid, __FUNCTION__,##__VA_ARGS__)
+
+#define __hbp_print_err(ftm, LEVEL, ...) \
+		pr_err("[T%d][touch-krn]["#LEVEL"][%s]" ftm, current->pid, __FUNCTION__,##__VA_ARGS__)
 
 #define hbp_err(ftm, ...) \
 	do { \
 		if (debug_level >= LOG_LEVEL_ERR) { \
-			__hbp_printk(ftm, ERROR, ##__VA_ARGS__); \
+			__hbp_print_err(ftm, ERROR, ##__VA_ARGS__); \
 		}\
 	} while(0)
 
@@ -42,7 +45,7 @@ enum {
 #if 0
 #define hbp_fatal(ftm, ...) \
 	do { \
-		__hbp_printk(ftm, FATAL, ##__VA_ARGS__); \
+		__hbp_print_err(ftm, FATAL, ##__VA_ARGS__); \
 		WARN_ON(1); \
 	} while(0)
 
@@ -53,21 +56,21 @@ enum {
 #define hbp_info(ftm, ...) \
 	do { \
 		if (debug_level >= LOG_LEVEL_INFO) { \
-			__hbp_printk(ftm, INFO, ##__VA_ARGS__); \
+			__hbp_print_info(ftm, INFO, ##__VA_ARGS__); \
 		} \
 	} while(0)
 
 #define hbp_warn(ftm, ...) \
 	do { \
 		if (debug_level >= LOG_LEVEL_WARN) { \
-			__hbp_printk(ftm, WARN, ##__VA_ARGS__); \
+			__hbp_print_info(ftm, WARN, ##__VA_ARGS__); \
 		} \
 	} while(0)
 
 #define hbp_debug(ftm, ...) \
 	do { \
 		if (debug_level >= LOG_LEVEL_DEBUG) { \
-			__hbp_printk(ftm, DEBUG, ##__VA_ARGS__); \
+			__hbp_print_info(ftm, DEBUG, ##__VA_ARGS__); \
 		} \
 	} while(0)
 
diff --git a/vendor/oplus/kernel/vibrator/aw8697_haptic/haptic_hv.c b/vendor/oplus/kernel/vibrator/aw8697_haptic/haptic_hv.c
index aea8a14e..4b55d03c 100755
--- a/vendor/oplus/kernel/vibrator/aw8697_haptic/haptic_hv.c
+++ b/vendor/oplus/kernel/vibrator/aw8697_haptic/haptic_hv.c
@@ -900,14 +900,14 @@ static char aw_rtp_name_162Hz[][AW_RTP_NAME_MAX] = {
 	{"aw8697_reserved_344.bin"},
 	{"aw8697_reserved_345.bin"},
 	{"aw8697_reserved_346.bin"},
-	{"aw8697_reserved_347.bin"},
-	{"aw8697_reserved_348.bin"},
-	{"aw8697_reserved_349.bin"},
-	{"aw8697_reserved_350.bin"},
-	{"aw8697_reserved_351.bin"},
-	{"aw8697_reserved_352.bin"},
-	{"aw8697_reserved_353.bin"},
-	{"aw8697_reserved_354.bin"},
+	{"aw8697_chat_alert_347_162Hz.bin"},
+	{"aw8697_chat_in_348_162Hz.bin"},
+	{"aw8697_chat_out_349_162Hz.bin"},
+	{"aw8697_email_receive_350_162Hz.bin"},
+	{"aw8697_email_send_351_162Hz.bin"},
+	{"aw8697_city_lights_352_162Hz.bin"},
+	{"aw8697_firefly_353_162Hz.bin"},
+	{"aw8697_now_or_never_354_162Hz.bin"},
 	{"aw8697_reserved_355.bin"},
 	{"aw8697_reserved_356.bin"},
 	{"aw8697_reserved_357.bin"},
@@ -1350,14 +1350,14 @@ static char aw_rtp_name_166Hz[][AW_RTP_NAME_MAX] = {
 	{"aw8697_reserved_344.bin"},
 	{"aw8697_reserved_345.bin"},
 	{"aw8697_reserved_346.bin"},
-	{"aw8697_reserved_347.bin"},
-	{"aw8697_reserved_348.bin"},
-	{"aw8697_reserved_349.bin"},
-	{"aw8697_reserved_350.bin"},
-	{"aw8697_reserved_351.bin"},
-	{"aw8697_reserved_352.bin"},
-	{"aw8697_reserved_353.bin"},
-	{"aw8697_reserved_354.bin"},
+	{"aw8697_chat_alert_347_166Hz.bin"},
+	{"aw8697_chat_in_348_166Hz.bin"},
+	{"aw8697_chat_out_349_166Hz.bin"},
+	{"aw8697_email_receive_350_166Hz.bin"},
+	{"aw8697_email_send_351_166Hz.bin"},
+	{"aw8697_city_lights_352_166Hz.bin"},
+	{"aw8697_firefly_353_166Hz.bin"},
+	{"aw8697_now_or_never_354_166Hz.bin"},
 	{"aw8697_reserved_355.bin"},
 	{"aw8697_reserved_356.bin"},
 	{"aw8697_reserved_357.bin"},
@@ -1798,14 +1798,14 @@ static char aw_rtp_name_174Hz[][AW_RTP_NAME_MAX] = {
 	{"aw8697_reserved_344.bin"},
 	{"aw8697_reserved_345.bin"},
 	{"aw8697_reserved_346.bin"},
-	{"aw8697_reserved_347.bin"},
-	{"aw8697_reserved_348.bin"},
-	{"aw8697_reserved_349.bin"},
-	{"aw8697_reserved_350.bin"},
-	{"aw8697_reserved_351.bin"},
-	{"aw8697_reserved_352.bin"},
-	{"aw8697_reserved_353.bin"},
-	{"aw8697_reserved_354.bin"},
+	{"aw8697_chat_alert_347_174Hz.bin"},
+	{"aw8697_chat_in_348_174Hz.bin"},
+	{"aw8697_chat_out_349_174Hz.bin"},
+	{"aw8697_email_receive_350_174Hz.bin"},
+	{"aw8697_email_send_351_174Hz.bin"},
+	{"aw8697_city_lights_352_174Hz.bin"},
+	{"aw8697_firefly_353_174Hz.bin"},
+	{"aw8697_now_or_never_354_174Hz.bin"},
 	{"aw8697_reserved_355.bin"},
 	{"aw8697_reserved_356.bin"},
 	{"aw8697_reserved_357.bin"},
@@ -2248,14 +2248,14 @@ static char aw_rtp_name_178Hz[][AW_RTP_NAME_MAX] = {
 	{"aw8697_reserved_344.bin"},
 	{"aw8697_reserved_345.bin"},
 	{"aw8697_reserved_346.bin"},
-	{"aw8697_reserved_347.bin"},
-	{"aw8697_reserved_348.bin"},
-	{"aw8697_reserved_349.bin"},
-	{"aw8697_reserved_350.bin"},
-	{"aw8697_reserved_351.bin"},
-	{"aw8697_reserved_352.bin"},
-	{"aw8697_reserved_353.bin"},
-	{"aw8697_reserved_354.bin"},
+	{"aw8697_chat_alert_347_178Hz.bin"},
+	{"aw8697_chat_in_348_178Hz.bin"},
+	{"aw8697_chat_out_349_178Hz.bin"},
+	{"aw8697_email_receive_350_178Hz.bin"},
+	{"aw8697_email_send_351_178Hz.bin"},
+	{"aw8697_city_lights_352_178Hz.bin"},
+	{"aw8697_firefly_353_178Hz.bin"},
+	{"aw8697_now_or_never_354_178Hz.bin"},
 	{"aw8697_reserved_355.bin"},
 	{"aw8697_reserved_356.bin"},
 	{"aw8697_reserved_357.bin"},
@@ -2699,14 +2699,14 @@ static char aw_rtp_name[][AW_RTP_NAME_MAX] = {
 	{"aw8697_reserved_344.bin"},
 	{"aw8697_reserved_345.bin"},
 	{"aw8697_reserved_346.bin"},
-	{"aw8697_reserved_347.bin"},
-	{"aw8697_reserved_348.bin"},
-	{"aw8697_reserved_349.bin"},
-	{"aw8697_reserved_350.bin"},
-	{"aw8697_reserved_351.bin"},
-	{"aw8697_reserved_352.bin"},
-	{"aw8697_reserved_353.bin"},
-	{"aw8697_reserved_354.bin"},
+	{"aw8697_chat_alert_347.bin"},
+	{"aw8697_chat_in_348.bin"},
+	{"aw8697_chat_out_349.bin"},
+	{"aw8697_email_receive_350.bin"},
+	{"aw8697_email_send_351.bin"},
+	{"aw8697_city_lights_352.bin"},
+	{"aw8697_firefly_353.bin"},
+	{"aw8697_now_or_never_354.bin"},
 	{"aw8697_reserved_355.bin"},
 	{"aw8697_reserved_356.bin"},
 	{"aw8697_reserved_357.bin"},
@@ -6273,6 +6273,8 @@ static ssize_t rtp_store(struct device *dev, struct device_attribute *attr,
 		|| (val >=  OS12_NEW_RING_START && val <= OS12_NEW_RING_END)
 		|| (val >=  OPLUS_RING_START && val < OPLUS_RING_END)
 		|| (val >=  OS14_NEW_RING_START && val <= OS14_NEW_RING_END)
+		|| (val >=  OS15_ALARM_RING_START && val <= OS15_ALARM_RING_END)
+		|| (val >=  OS15_OPERATOR_RING_START && val <= OS15_OPERATOR_RING_END)
 		|| val == RINGTONES_SIMPLE_INDEX
 		|| val == RINGTONES_PURE_INDEX
 		|| val == AUDIO_READY_STATUS)) {
diff --git a/vendor/oplus/kernel/vibrator/aw8697_haptic/haptic_hv.h b/vendor/oplus/kernel/vibrator/aw8697_haptic/haptic_hv.h
index a4a5f4e6..818b6847 100755
--- a/vendor/oplus/kernel/vibrator/aw8697_haptic/haptic_hv.h
+++ b/vendor/oplus/kernel/vibrator/aw8697_haptic/haptic_hv.h
@@ -226,6 +226,11 @@ struct mmap_buf_format {
 
 #define OS14_NEW_RING_START			(371)
 #define OS14_NEW_RING_END			(410)
+#define OS15_ALARM_RING_START			(322)
+#define OS15_ALARM_RING_END			(333)
+#define OS15_OPERATOR_RING_START		(347)
+#define OS15_OPERATOR_RING_END			(354)
+
 
 #define AW_WAVEFORM_INDEX_CS_PRESS		(16)
 #define AW_WAVEFORM_INDEX_TRANSIENT		(8)
diff --git a/vendor/oplus/kernel/vibrator/si_haptic/haptic.c b/vendor/oplus/kernel/vibrator/si_haptic/haptic.c
index cb842c2c..d4b34e8d 100755
--- a/vendor/oplus/kernel/vibrator/si_haptic/haptic.c
+++ b/vendor/oplus/kernel/vibrator/si_haptic/haptic.c
@@ -1525,6 +1525,8 @@ static ssize_t rtp_store(struct device *dev,
 		|| (val >=  OS12_NEW_RING_START && val <= OS12_NEW_RING_END)
 		|| (val >=  OPLUS_RING_START && val < OPLUS_RING_END)
 		|| (val >=  OS14_NEW_RING_START && val <= OS14_NEW_RING_END)
+		|| (val >=  OS15_ALARM_RING_START && val <= OS15_ALARM_RING_END)
+		|| (val >=  OS15_OPERATOR_RING_START && val <= OS15_OPERATOR_RING_END)
 		|| (val >=  ALCLOUDSCAPE_START && val <= ALCLOUDSCAPE_END)
 		|| (val >=  RINGTONE_NOTIF_ALARM_START && val <= RINGTONE_NOTIF_ALARM_END)
 		|| val == RINGTONES_SIMPLE_INDEX
@@ -3872,10 +3874,10 @@ static const char* get_rtp_name(uint32_t id, uint32_t f0) {
 		hp_err("%s: f0 is %d, not found suffix.\n", __func__, f0);
 		return NULL;
 	}
-    if (id >= 0 && id < NUM_WAVEFORMS)
-        wave_name = rtp_wave_map[id];
-    else
-        hp_err("%s: id is %d, out of range.\n", __func__, id);
+	if (id > 0 && id < NUM_WAVEFORMS)
+		wave_name = rtp_wave_map[id];
+	else
+		hp_err("%s: id is %d, out of range.\n", __func__, id);
 	if (!wave_name) {
 		hp_err("%s: id is %d, not found wave name.\n", __func__, id);
 		return NULL;
diff --git a/vendor/oplus/kernel/vibrator/si_haptic/haptic.h b/vendor/oplus/kernel/vibrator/si_haptic/haptic.h
index 235650c7..059a685c 100755
--- a/vendor/oplus/kernel/vibrator/si_haptic/haptic.h
+++ b/vendor/oplus/kernel/vibrator/si_haptic/haptic.h
@@ -121,6 +121,10 @@ typedef struct led_classdev cdev_t;
 #define F0_VAL_MAX_1419                     2150
 #define OS14_NEW_RING_START                 (371)
 #define OS14_NEW_RING_END                   (410)
+#define OS15_ALARM_RING_START               (322)
+#define OS15_ALARM_RING_END                 (333)
+#define OS15_OPERATOR_RING_START            (347)
+#define OS15_OPERATOR_RING_END              (354)
 #define ALCLOUDSCAPE_START                  (94)
 #define ALCLOUDSCAPE_END                    (99)
 #define RINGTONE_NOTIF_ALARM_START          (201)
diff --git a/vendor/oplus/kernel/vibrator/si_haptic/haptic_wave.h b/vendor/oplus/kernel/vibrator/si_haptic/haptic_wave.h
index 6fecfa51..d4481081 100755
--- a/vendor/oplus/kernel/vibrator/si_haptic/haptic_wave.h
+++ b/vendor/oplus/kernel/vibrator/si_haptic/haptic_wave.h
@@ -432,14 +432,14 @@ enum {
 	WAVE_RESERVED_344,
 	WAVE_RESERVED_345,
 	WAVE_RESERVED_346,
-	WAVE_RESERVED_347,
-	WAVE_RESERVED_348,
-	WAVE_RESERVED_349,
-	WAVE_RESERVED_350,
-	WAVE_RESERVED_351,
-	WAVE_RESERVED_352,
-	WAVE_RESERVED_353,
-	WAVE_RESERVED_354,
+	AW8697_CHAT_ALERT_347,
+	AW8697_CHAT_IN_348,
+	AW8697_CHAT_OUT_349,
+	AW8697_EMAIL_RECEIVE_350,
+	AW8697_EMAIL_SEND_351,
+	AW8697_CITY_LIGHTS_352,
+	AW8697_FIREFLY_353,
+	AW8697_NOW_OR_NEVER_354,
 	WAVE_RESERVED_355,
 	WAVE_RESERVED_356,
 	WAVE_RESERVED_357,
@@ -818,14 +818,14 @@ static const char* rtp_wave_map[] = {
 	[WAVE_RESERVED_344] = "RESERVED_344",
 	[WAVE_RESERVED_345] = "RESERVED_345",
 	[WAVE_RESERVED_346] = "RESERVED_346",
-	[WAVE_RESERVED_347] = "RESERVED_347",
-	[WAVE_RESERVED_348] = "RESERVED_348",
-	[WAVE_RESERVED_349] = "RESERVED_349",
-	[WAVE_RESERVED_350] = "RESERVED_350",
-	[WAVE_RESERVED_351] = "RESERVED_351",
-	[WAVE_RESERVED_352] = "RESERVED_352",
-	[WAVE_RESERVED_353] = "RESERVED_353",
-	[WAVE_RESERVED_354] = "RESERVED_354",
+	[AW8697_CHAT_ALERT_347] = "aw8697_chat_alert_347",
+	[AW8697_CHAT_IN_348] = "aw8697_chat_in_348",
+	[AW8697_CHAT_OUT_349] = "aw8697_chat_out_349",
+	[AW8697_EMAIL_RECEIVE_350] = "aw8697_email_receive_350",
+	[AW8697_EMAIL_SEND_351] = "aw8697_email_send_351",
+	[AW8697_CITY_LIGHTS_352] = "aw8697_city_lights_352",
+	[AW8697_FIREFLY_353] = "aw8697_firefly_353",
+	[AW8697_NOW_OR_NEVER_354] = "aw8697_now_or_never_354",
 	[WAVE_RESERVED_355] = "RESERVED_355",
 	[WAVE_RESERVED_356] = "RESERVED_356",
 	[WAVE_RESERVED_357] = "RESERVED_357",
diff --git a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_apollo_brightness.c b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_apollo_brightness.c
index b31a8a5c..55e6d896 100755
--- a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_apollo_brightness.c
+++ b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_apollo_brightness.c
@@ -33,6 +33,7 @@
 extern void apollo_set_brightness_for_show(unsigned int level);
 extern u16 mtk_get_gpr(struct mtk_ddp_comp *comp, struct cmdq_pkt *handle);
 extern int oplus_display_panel_set_pwm_bl(struct drm_crtc *crtc, struct cmdq_pkt *cmdq_handle, unsigned int level, bool is_sync);
+extern unsigned int oplus_display_brightness;
 
 static void oplus_bl_cmdq_cb(struct cmdq_cb_data data)
 {
@@ -526,12 +527,22 @@ EXPORT_SYMBOL(oplus_sync_panel_brightness);
 void oplus_sync_panel_brightness_video(struct drm_crtc *crtc, struct cmdq_pkt *cmdq_handle)
 {
 	struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc);
+	static int aod_brightness = 0;
+	uint64_t hbm_enable = 0;
+	static bool last_aod_layer_status = false;
+	bool new_aod_layer_status = false;
+	struct mtk_crtc_state *states = to_mtk_crtc_state(crtc->state);
 
 	if (!crtc) {
 		DDPPR_ERR("sync_panel_brightness - find crtc fail\n");
 		return;
 	}
 
+	if(!states) {
+		DDPPR_ERR("state in null\n");
+		return;
+	}
+
 	if (!mtk_crtc->oplus_apollo_br) {
 		mtk_crtc->oplus_apollo_br = kzalloc(sizeof(struct oplus_apollo_brightness),
 			GFP_KERNEL);
@@ -549,8 +560,22 @@ void oplus_sync_panel_brightness_video(struct drm_crtc *crtc, struct cmdq_pkt *c
 	}
 #endif /* OPLUS_FEATURE_DISPLAY_ONSCREENFINGERPRINT */
 
+	hbm_enable = states->prop_val[CRTC_PROP_HBM_ENABLE];
+	new_aod_layer_status = hbm_enable & OPLUS_OFP_PROPERTY_AOD_LAYER;
 	if (!mtk_crtc->oplus_apollo_br->oplus_backlight_updated) {
-		return;
+		DDPINFO("%s: aod layer  property %llu\n", __func__, hbm_enable);
+		if(last_aod_layer_status && !new_aod_layer_status && oplus_display_brightness > 1) {
+			mtk_drm_setbacklight_without_lock_video(crtc, aod_brightness, 0, 0x1 << SET_BACKLIGHT_LEVEL, cmdq_handle);
+			last_aod_layer_status = new_aod_layer_status;
+			DDPMSG("%s: oplus_sync_panel_brightness_video send aod_brightness = %d\n", __func__, aod_brightness);
+			return;
+		} else {
+			return;
+		}
+	}
+	last_aod_layer_status = new_aod_layer_status;
+	if (mtk_crtc->oplus_apollo_br->oplus_pending_backlight > 1) {
+		aod_brightness = mtk_crtc->oplus_apollo_br->oplus_pending_backlight;
 	}
 
 	OPLUS_DSI_TRACE_BEGIN("sync_panel_brightness_video level(%d) sync(%d)", mtk_crtc->oplus_apollo_br->oplus_pending_backlight,
diff --git a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_interface.c b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_interface.c
index 9ea03d14..954d2393 100755
--- a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_interface.c
+++ b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_interface.c
@@ -126,6 +126,22 @@ bool oplus_dsi_display_get_dp_support(void)
 	return value;
 }
 
+int oplus_dsi_panel_support_144hz(void *node_dev, void *lcm_ctx)
+{
+	int ret = 0;
+	struct dsi_panel_lcm *ctx = lcm_ctx;
+	struct device_node *node = node_dev;
+
+	if (!ctx || !node) {
+		OPLUS_DSI_ERR("invalid lcm_ctx or node\n");
+		return -EINVAL;
+	}
+
+	ctx->oplus_panel_support_144hz = of_property_read_bool(node, "oplus,panel-support-144hz");
+	OPLUS_DSI_INFO("oplus_panel_support_144hz = %s \n", ctx->oplus_panel_support_144hz ? "true" : "false");
+	return ret;
+}
+
 int oplus_panel_config_parse(struct device_node *node, void *ctx)
 {
 	int ret = 0;
@@ -139,7 +155,11 @@ int oplus_panel_config_parse(struct device_node *node, void *ctx)
 		OPLUS_DSI_ERR("skip probe due to oplus_dsi_panel_parse_cmd_params error\n");
 		return ret;
 	}
-
+	ret = oplus_dsi_panel_support_144hz(node, ctx);
+	if (ret < 0) {
+		OPLUS_DSI_ERR("oplus_dsi_panel_support_144hz failed\n");
+		return ret;
+	}
 	return 0;
 }
 
diff --git a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_onscreenfingerprint.c b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_onscreenfingerprint.c
index 005023cc..f2a6073e 100755
--- a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_onscreenfingerprint.c
+++ b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_onscreenfingerprint.c
@@ -153,6 +153,7 @@ bool oplus_ofp_video_mode_30hz_aod_accelerate_is_enabled(void)
                 return (bool)(OPLUS_OFP_GET_VIDEO_MODE_30HZ_AOD_CONFIG(p_oplus_ofp_params->fp_type));
         }
 }
+EXPORT_SYMBOL(oplus_ofp_video_mode_30hz_aod_accelerate_is_enabled);
 
 /* get fp_type value from panel dtsi */
 int oplus_ofp_init(void *node)
@@ -189,6 +190,9 @@ int oplus_ofp_init(void *node)
 	p_oplus_ofp_params->fp_local_hbm_calibration = of_property_read_bool(devnode, "oplus,ofp-fp-local-hbm-calibration");
 	OFP_INFO("fp_local_hbm_calibration:%d\n", p_oplus_ofp_params->fp_local_hbm_calibration);
 
+	p_oplus_ofp_params->no_need_a_mirror_to_the_end = of_property_read_bool(devnode, "oplus,ofp-no-need-a-mirror-to-the-end");
+	OFP_INFO("no_need_a_mirror_to_the_end:%d\n", p_oplus_ofp_params->no_need_a_mirror_to_the_end);
+
 	/* indicates whether video mode 30hz aod accelerate solution is set or not */
 	p_oplus_ofp_params->video_mode_30hz_aod_accelerate = of_property_read_bool(devnode, "oplus,ofp-video-mode-30hz-aod-accelerate");
 	OFP_INFO("video_mode_30hz_aod_accelerate:%d\n", p_oplus_ofp_params->video_mode_30hz_aod_accelerate);
@@ -414,6 +418,11 @@ bool oplus_ofp_a_mirror_to_the_end_aod_mode_is_enabled(void)
 		return false;
 	}
 
+	if(p_oplus_ofp_params->no_need_a_mirror_to_the_end) {
+		OFP_INFO("No need a-mirror-to-the-end\n");
+		return false;
+	}
+
 	if (!oplus_ofp_is_supported()) {
 		OFP_DEBUG("ofp is not support, a mirror to the end aod mode is also not supported\n");
 		return false;
@@ -562,6 +571,7 @@ int oplus_ofp_get_hbm_state(void)
 
 	return p_oplus_ofp_params->hbm_state;
 }
+EXPORT_SYMBOL(oplus_ofp_get_hbm_state);
 
 int oplus_ofp_set_hbm_state(bool hbm_state)
 {
@@ -2531,8 +2541,8 @@ int oplus_ofp_video_mode_aod_handle(void *drm_crtc, void *mtk_panel_ext, void *d
 	} else if (oplus_ofp_get_aod_state() && (refresh_rate != 30)) {
 		if (ext && ext->funcs && ext->funcs->oplus_doze_disable) {
 			OFP_INFO("debug for oplus_doze_disable\n");
-			oplus_ofp_aod_off_status_handle(mtk_crtc);
 			ext->funcs->oplus_doze_disable(drm_panel, mtk_dsi, dcs_write_gce, NULL);
+			oplus_ofp_set_aod_state(false);
 		}
 	}
 	last_refresh_rate = refresh_rate;
@@ -2556,7 +2566,6 @@ void oplus_ofp_aod_off_set_work_handler(struct work_struct *work_item)
 	if(oplus_ofp_video_mode_30hz_aod_accelerate_is_enabled()) {
 		oplus_ofp_aod_unlocking_update();
 		ret = mtk_ddic_vdo_aod_ctrl(0, true);
-		oplus_ofp_set_aod_state(false);
 		p_oplus_ofp_params->aod_off_cmd_timestamp = ktime_get();
 		OFP_DEBUG("aod_off_cmd_timestamp:%lld\n", ktime_to_ms(p_oplus_ofp_params->aod_off_cmd_timestamp));
 	} else
@@ -2711,6 +2720,11 @@ int oplus_ofp_aod_off_backlight_recovery(void *drm_crtc, void *mtk_crtc_state)
 
 	OFP_DEBUG("start\n");
 
+	if(oplus_ofp_video_mode_30hz_aod_accelerate_is_enabled()) {
+		OFP_DEBUG("video panel not recovery backlight\n");
+		return rc;
+	}
+
 	if (!crtc || !state || !p_oplus_ofp_params) {
 		OFP_ERR("Invalid input params\n");
 		return -EINVAL;
diff --git a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_onscreenfingerprint.h b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_onscreenfingerprint.h
index 71a119f4..5f2c78f5 100755
--- a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_onscreenfingerprint.h
+++ b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_display_onscreenfingerprint.h
@@ -115,6 +115,7 @@ struct oplus_ofp_params {
 	struct workqueue_struct *aod_off_set_wq;		/* send aod off cmd workqueue */
 	struct work_struct aod_off_set_work;			/* use to send aod off cmd to speed up aod unlocking */
 	bool fp_local_hbm_calibration;					/* use global hbm when fingerprint calibration */
+	bool no_need_a_mirror_to_the_end;					/* whether panel need a mirror to the end or not */
 	bool video_mode_30hz_aod_accelerate;			/* use video mode 30hz aod accelerate solution */
 };
 
diff --git a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_config.c b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_config.c
index eee4efa8..cbd352ad 100755
--- a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_config.c
+++ b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_config.c
@@ -53,6 +53,7 @@ unsigned int m_db;
 EXPORT_SYMBOL(m_db);
 unsigned int m_dc;
 EXPORT_SYMBOL(m_dc);
+extern int get_project(void);
 
 int oplus_dsi_panel_parse_vdo_param(struct device_node *node, void *ctx_dev);
 
@@ -230,6 +231,10 @@ int oplus_dsi_panel_parse_timing_param(void *timing_dev, void *ctx_dev, int type
 		cell_index = 3;
 	} else if ((type == 0) && (vrefresh == 30)) {
 		cell_index = 4;
+		if (24069 == get_project() || 24297 == get_project()) {
+			cell_index = 3;
+			OPLUS_DSI_ERR("for whithout 144hz index %d\n", cell_index);
+                }
 	}
 	node = of_parse_phandle(timing, "oplus,dsc-params-entries", 0);
 	if (node) {
diff --git a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_config.h b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_config.h
index 5f1b42a5..dcccceed 100755
--- a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_config.h
+++ b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_config.h
@@ -110,6 +110,7 @@ struct dsi_panel_lcm {
 	struct oplus_panel_regs_check_config crc_config;
 	bool is_vidle_on;
 	struct vdo_aod_params *vdo_aod_config;
+	bool oplus_panel_support_144hz;
 };
 
 
diff --git a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_parser.c b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_parser.c
index af00b687..08e5d813 100755
--- a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_parser.c
+++ b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_display_parser.c
@@ -207,6 +207,9 @@ int oplus_dsi_panel_parser_base(struct device_node *node, void *ext_param_dev, v
 	rc = utils->get_int(node, "oplus,vdo-per-frame-lp-enable", &ext_param->vdo_per_frame_lp_enable);
 	rc = utils->get_int(node, "oplus,change_fps_by_vfp_send_cmd", &ext_param->change_fps_by_vfp_send_cmd);
 	rc = utils->get_int(node, "oplus,change_fps_by_vfp_send_cmd_need_delay", &ext_param->change_fps_by_vfp_send_cmd_need_delay);
+	rc = utils->get_int(node, "oplus,esd-check-repeatedly-cnt", &ext_param->esd_check_repeatedly_cnt);
+	rc = utils->get_int(node, "oplus,oplus-esd-sleep-ms", &ext_param->oplus_esd_sleep_ms);
+	rc = utils->get_bool(node, "oplus,oplus-esd-sleep-status", &ext_param->oplus_esd_sleep_status);
 
 	return rc;
 }
diff --git a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_panel_cmd.c b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_panel_cmd.c
index 424114b8..33763422 100755
--- a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_panel_cmd.c
+++ b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_dsi_panel_cmd.c
@@ -222,19 +222,8 @@ struct mtk_ddic_dsi_cmd send_cmd_to_ddic = {};
 unsigned char ddic_para_list[MAX_TX_CMD_NUM_PACK][OPLUS_SEND_CMD_MAX] = {0};
 
 extern atomic_t oplus_pcp_handle_lock;
-extern int get_project(void);
 extern void oplus_pcp_handle(bool cmd_is_pcp,  void *handle);
 
-bool project_is_emira(void)
-{
-	int porject = get_project();
-	if (24813 == porject) {
-		return true;
-	}
-
-	return false;
-}
-
 bool oplus_dsi_panel_is_pcp(enum dsi_cmd_id cmd_set_id)
 {
 	unsigned int i;
@@ -731,12 +720,10 @@ inline int oplus_dsi_panel_get_cell_index(int mode_id)
 		index_value = 120;
 		break;
 	case FHD_OPLUS120:
+		index_value = 122;
+		break;
 	case FHD_SDC144:
-		if (project_is_emira()) {
-			index_value = 144;
-		} else {
-			index_value = 122;
-		}
+		index_value = 144;
 		break;
 	case FHD_SDC30:
 		index_value = 30;
diff --git a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_panel/oplus_display_dsi_primary.c b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_panel/oplus_display_dsi_primary.c
index a06c5f9e..2d2f3a73 100755
--- a/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_panel/oplus_display_dsi_primary.c
+++ b/vendor/oplus/kernel_device_modules-6.6/drivers/gpu/drm/oplus/oplus_panel/oplus_display_dsi_primary.c
@@ -167,8 +167,7 @@ static int get_mode_enum(struct drm_display_mode *m)
 	} else if (m_vrefresh == 120 && m->hskew == OPLUS_ADFR) {
 		ret = FHD_OPLUS120;
 	} else if (m_vrefresh == 144 && m->hskew == STANDARD_ADFR) {
-		/* Without adfr, returning 4 will cause a frame rate mismatch */
-		ret = FHD_SDC144 - 1;
+		ret = FHD_SDC144;
 	} else if (m_vrefresh == 30 && m->hskew == STANDARD_ADFR) {
 		ret = FHD_SDC30;
 	}
@@ -1055,7 +1054,7 @@ static int oplus_ofp_set_lhbm_pressed_icon(struct drm_panel *panel, void *dsi_dr
 	} else {
 		cmd_set_id = DSI_CMD_LHBM_PRESSED_ICON_OFF;
 	}
-	if ((mtk_dsi->mode_flags & MIPI_DSI_MODE_VIDEO) && !lhbm_pressed_icon_on) {
+	if ((mtk_dsi->mode_flags & MIPI_DSI_MODE_VIDEO) && !lhbm_pressed_icon_on && !handle) {
 		oplus_dsi_panel_send_cmd(dsi_drv, cmd_set_id, handle, DSI_CMD_FUNC_GCE2);
 	} else
 		oplus_dsi_panel_send_cmd(dsi_drv, cmd_set_id, handle, DSI_CMD_FUNC_DEFAULT);
@@ -1166,6 +1165,14 @@ static int panel_doze_enable(struct drm_panel *panel, void *dsi, dcs_write_gce_p
 		return -EINVAL;
 	}
 
+	if(oplus_ofp_video_mode_30hz_aod_accelerate_is_enabled() && oplus_ofp_get_hbm_state()) {
+		if (handle)
+			oplus_dsi_panel_send_cmd(dsi, DSI_CMD_LHBM_PRESSED_ICON_OFF, handle, DSI_CMD_FUNC_DEFAULT);
+		else
+			oplus_dsi_panel_send_cmd(dsi, DSI_CMD_LHBM_PRESSED_ICON_OFF, handle, DSI_CMD_FUNC_GCE2);
+		OFP_INFO("should off hbm in aod\n");
+	}
+
 	OFP_INFO("crtc_active:%d, doze_active:%llu\n", crtc->state->active, mtk_state->prop_val[CRTC_PROP_DOZE_ACTIVE]);
 	if (handle)
 		oplus_dsi_panel_send_cmd(dsi, DSI_CMD_SET_LP1, handle, DSI_CMD_FUNC_DEFAULT);
@@ -1217,10 +1224,26 @@ static int panel_set_ultra_low_power_aod(struct drm_panel *panel, void *dsi,
 	return 0;
 }
 
+static struct vdo_aod_params vdo_aod_to_120hz = {
+	.porch_change_flag = 0x03,
+	.dst_hfp = 60,
+	.dst_vfp = 84,
+	.vdo_aod_cmd_table[0]={1, {0x38}},
+	.vdo_aod_cmd_table[1]={3, {0x51, 0x00, 0x00}},
+};
+
+static struct vdo_aod_params vdo_aod_to_60hz = {
+	.porch_change_flag = 0x03,
+	.dst_hfp = 60,
+	.dst_vfp = 2996,
+	.vdo_aod_cmd_table[0]={1, {0x38}},
+	.vdo_aod_cmd_table[1]={3, {0x51, 0x00, 0x00}},
+};
 static int mtk_get_vdo_aod_param(int aod_en, struct drm_display_mode *m,
 					struct drm_panel *panel, struct vdo_aod_params **vdo_aod_param)
 {
 	struct dsi_panel_lcm *ctx = panel_to_lcm(panel);
+	static int mode_id_before_aod = 0;
 	unsigned int mode_id = 0;
 	int refreash;
 
@@ -1228,17 +1251,28 @@ static int mtk_get_vdo_aod_param(int aod_en, struct drm_display_mode *m,
 	refreash =  drm_mode_vrefresh(m);
 
 	OFP_INFO("%s:++, mode_id %d, ref %d\n", __func__, mode_id, refreash);
-	if(aod_en)
+	if(aod_en) {
 		*vdo_aod_param = &ctx->vdo_aod_config[0];
-	else {
-		if(mode_id == 0)
-			*vdo_aod_param = &ctx->vdo_aod_config[3];
-		else if (mode_id == 1)
+		mode_id_before_aod = mode_id;
+	} else {
+		if(mode_id_before_aod == FHD_SDC60) {
+			if(oplus_ofp_get_aod_unlocking()) {
+				*vdo_aod_param = &vdo_aod_to_60hz;
+			} else {
+				*vdo_aod_param = &ctx->vdo_aod_config[3];
+			}
+		}
+		else if (mode_id_before_aod == FHD_SDC90)
 			*vdo_aod_param = &ctx->vdo_aod_config[2];
-		else
-			*vdo_aod_param = &ctx->vdo_aod_config[1];
+		else {
+			if(oplus_ofp_get_aod_unlocking()) {
+				*vdo_aod_param = &vdo_aod_to_120hz;
+			} else {
+				*vdo_aod_param = &ctx->vdo_aod_config[1];
+			}
+		}
 	}
-	OFP_INFO("%s:aod_en %d\n", __func__, aod_en);
+	OFP_INFO("%s:aod_en %d, unlocking =%d\n", __func__, aod_en, oplus_ofp_get_aod_unlocking());
 	return 0;
 }
 #endif /* OPLUS_FEATURE_DISPLAY_ONSCREENFINGERPRINT */
@@ -1314,7 +1348,7 @@ struct drm_display_mode *get_mode_by_id(struct drm_connector *connector,
 	struct mtk_dsi *dsi = container_of(connector, struct mtk_dsi, conn);
 	struct dsi_panel_lcm *ctx = panel_to_lcm(dsi->panel);
 
-	if (project_is_emira()) {
+	if (project_is_emira() || ctx->oplus_panel_support_144hz) {
 		/* not to do */
 	} else {
 		mode = (mode % ctx->mode_num);
@@ -1351,7 +1385,10 @@ static int mtk_panel_ext_param_get(struct drm_panel *panel,
 	} else if (m_vrefresh == 144 && m->hskew == STANDARD_ADFR) {
 		*ext_param = &(ctx->ext_params_all[3]);
 	} else if (m_vrefresh == 30 && m->hskew == STANDARD_ADFR) {
-		*ext_param = &(ctx->ext_params_all[4]);
+		if (oplus_ofp_video_mode_30hz_aod_accelerate_is_enabled())
+			*ext_param = &(ctx->ext_params_all[3]);
+		else
+			*ext_param = &(ctx->ext_params_all[4]);
 	} else {
 		*ext_param = &(ctx->ext_params_all[0]);
 	}
@@ -1398,7 +1435,10 @@ static int mtk_panel_ext_param_set(struct drm_panel *panel,
 	} else if (m_vrefresh == 144 && m->hskew == STANDARD_ADFR) {
 		ext->params = &(ctx->ext_params_all[3]);
 	} else if (m_vrefresh == 30 && m->hskew == STANDARD_ADFR) {
-		ext->params = &(ctx->ext_params_all[4]);
+		if (oplus_ofp_video_mode_30hz_aod_accelerate_is_enabled())
+			ext->params = &(ctx->ext_params_all[3]);
+		else
+			ext->params = &(ctx->ext_params_all[4]);
 	} else {
 		ext->params = &(ctx->ext_params_all[0]);
 	}
diff --git a/vendor/oplus/sensor/kernel/qcom/sensor/Kconfig b/vendor/oplus/sensor/kernel/qcom/sensor/Kconfig
index 472f4a11..43d1de95 100755
--- a/vendor/oplus/sensor/kernel/qcom/sensor/Kconfig
+++ b/vendor/oplus/sensor/kernel/qcom/sensor/Kconfig
@@ -32,3 +32,9 @@ config OPLUS_FEATURE_SENSOR_FEEDBACK
 	help
 	 Say 'y' or 'm' to support saving sensor minidump
 	 Say 'n' to not support saving sensor minidump
+
+config OPLUS_SENSOR_USE_SCREENSHOT_INFO
+        tristate "CONFIG_OPLUS_SENSOR_USE_SCREENSHOT_INFO"
+        help
+         Say 'y' or 'm' to support screenshot_info
+         Say 'n' to not support screenshot_info